Birinchi dastur — Hello World
Nima uchun "Hello World"?
1978-yilda Kernighan va Ritchie C tilini o'rgatuvchi kitob yozishdi. Birinchi misol uchun oddiy narsa kerak edi — ekranga biror narsa chiqarsin. Ular "Hello, World!" deb yozishdi. Shundan beri bu an'anaga aylandi.
Bugun siz ham o'sha an'anani davom ettirasiz. Lekin biz faqat kodni ko'chirmaymiz — har bir belgi nima uchun kerakligini tushunib yozamiz.
Kod — to'liq ko'rinish
Avval to'liq kodni ko'ring. Keyin birma-bir tahlil qilamiz:
#include <stdio.h>
int main() {
printf("Salom, Dunyo!\n");
return 0;
}
Natija:
Salom, Dunyo!
Atigi 6 qator. Lekin har bir qatorda muhim ma'no bor. Birma-bir tushunamiz.
1-qator — #include <stdio.h>
Bu nima?
#include — "shu faylni mening kodimga qo'sh" degani.
stdio.h — Standard Input/Output headerining qisqartmasi.
Ya'ni: standart kirish/chiqish kutubxonasi.
Nima uchun kerak?
Siz printf funksiyasini ishlatmoqchisiz. Lekin printf
C tilining o'zida yo'q — u alohida kutubxonada.
stdio.h ni ulasangiz — printf, scanf va boshqa
kirish/chiqish funksiyalari ishlay boshlaydi.
Aniq taqqoslash
Tasavvur qiling: siz oshpaz sifatida ishlayapsiz. Pishirish uchun asboblar kerak — pichoq, qozon, qoshiq. Bu asboblar oshxonada bor, lekin siz uni chaqirishingiz kerak.
#include <stdio.h> // oshxona asboblarini chaqirdim
// endi printf ishlatishim mumkin
< > va " " farqi
#include <stdio.h> // tizim kutubxonasi — GCC o'zi topadi
#include "mening.h" // sizning o'z faylingiz — papkadan qidiradi
Hozircha faqat < > ishlatamiz.
💡 Eslatma:
.h— "header file" degani. Bu fayllar funksiyalarning faqat ta'rifini saqlaydi, kodni emas. Haqiqiy kod alohida.cfaylda.
2-qator — Bo'sh qator
Bu qator hech narsa qilmaydi. Lekin muhim — kod o'qilishi uchun. Professional dasturchilar doim bo'limlar orasiga bo'sh qator qo'yadi. Kompyuter ko'rmaydi, inson ko'radi.
3-qator — int main() {
Bu nima?
Bu dasturning bosh eshigi. Har qanday C dasturi
main funksiyadan boshlanadi. Siz 1000 ta funksiya
yozishingiz mumkin — lekin kompyuter har doim
main dan boshlaydi.
Har bir so'zni tahlil qilaylik
int — bu funksiya integer (butun son) qaytaradi.
main ishlashini tugatganda return 0 deydi —
o'sha 0 shu int.
main — bu nom maxsus. O'zingiz xohlagan nom
qo'ya olmaysiz. Bu C tili bilan "kelishuv" —
dastur shu nomdan boshlanadi.
() — qavslar parametrlar uchun. Hozircha bo'sh.
Keyinchalik argc, argv o'rganamiz.
{ — funksiya tanasi boshlanadi. Hamma ish
shu figurali qavs ichida bo'ladi.
💡 Qoida: Har bir
{ning juft}i bo'lishi kerak. Ochilgan qavs yopilmasa — kompilyator xato beradi.
4-qator — printf("Salom, Dunyo!\n");
Bu qator eng ko'p ish qiladi.
printf nima?
print + f = print formatted — formatlangan chiqarish.
Bu stdio.h dan kelgan funksiya. Ekranga matn chiqaradi.
" " ichidagi matn
Qo'shtirnoq ichidagi hamma narsa string (satr) deyiladi. Siz nima yozsangiz — o'sha ekranga chiqadi.
printf("Salom!"); // → Salom!
printf("1 + 1 = 2"); // → 1 + 1 = 2
printf("Foundation"); // → Foundation
\n — bu nima?
\n — newline (yangi qator) belgisi. Ko'rinmaydi,
lekin ishlaydi. Kursor keyingi qatorga o'tadi.
printf("Birinchi\n");
printf("Ikkinchi\n");
Natija:
Birinchi
Ikkinchi
\n bo'lmasa nima bo'ladi?
printf("Birinchi");
printf("Ikkinchi");
Natija:
BirinchiIkkinchi
Hamma narsa bir qatorda yopishib chiqadi!
Boshqa escape belgilar
| Belgi | Nomi | Nima qiladi |
|---|---|---|
\n |
newline | Yangi qator |
\t |
tab | Gorizontal bo'sh joy (tab) |
\\ |
backslash | \ belgisini chiqaradi |
\" |
quote | " belgisini chiqaradi |
printf("Ism:\tAli\n");
printf("Yoshingiz:\t20\n");
Natija:
Ism: Ali
Yoshingiz: 20
; — nuqta-vergul
Har bir operator (buyruq) nuqta-vergul bilan tugaydi. Bu C tilidagi qoida. Unutsangiz — kompilyator xato beradi.
printf("Salom\n") // ← XATO! ; yo'q
printf("Salom\n"); // ← TO'G'RI
⚠️ Eng ko'p uchraydigan xato: nuqta-vergulni unutish. Agar kod kompilyatsiya bo'lmasa — avval
;ni tekshiring.
5-qator — return 0;
Bu nima?
main funksiyasi tugaganda operatsion tizimga
xabar yuboradi. 0 degani — "hamma narsa yaxshi,
xato yo'q".
Qaytish qiymatlari
| Qiymat | Ma'nosi |
|---|---|
0 |
Muvaffaqiyatli tugadi |
1 |
Xato bilan tugadi |
-1 |
Boshqacha xato |
Hozircha doim return 0 yozamiz.
Hammasi birgalikda
#include <stdio.h> // stdio kutubxonasini ul
int main() { // dastur shu yerdan boshlanadi
printf("Salom!\n"); // ekranga chiqar, keyingi qatorga o't
return 0; // OS ga: "yaxshi tugadi"
} // main funksiyasi tugadi
Kompilyatsiya qadamlari — ichida nima bo'ladi?
Siz gcc hello.c -o hello deb yozsangiz —
aslida 4 ta bosqich bo'ladi:
| Bosqich | Kirish | Chiqish | Nima bo'ladi |
|---|---|---|---|
| Preprocessing | hello.c |
hello.i |
#include o'rniga fayl tarkibi qo'yiladi |
| Compilation | hello.i |
hello.s |
C kodi Assembly ga aylanadi |
| Assembly | hello.s |
hello.o |
Assembly machine code ga aylanadi |
| Linking | hello.o + lib |
hello |
Kutubxona bilan birlashadi |
💡 Bularni hozir yod olmang. Shunchaki tushuning: oddiy
gccbuyrug'i aslida 4 ta ishni qiladi.
Keng tarqalgan xatolar
Xato 1 — stdio.h unutilgan
int main() {
printf("Salom\n"); // XATO!
return 0;
}
Xato xabar:
warning: implicit declaration of function 'printf'
Yechim: #include <stdio.h> qo'shing.
Xato 2 — Nuqta-vergul yo'q
int main() {
printf("Salom\n") // XATO! ; yo'q
return 0;
}
Xato xabar:
error: expected ';' before 'return'
Xato 3 — Qavs yopilmagan
int main() {
printf("Salom\n");
return 0;
// XATO! } yo'q
Xato xabar:
error: expected '}' at end of input
✅ Maslahat: Xato xabarini o'qing. GCC aniq aytadi — qaysi qatorda, qanday xato. Ko'pchilik xato xabarni o'qimay qidiradi — bu vaqt yo'qotish.
Tajriba qiling
#include <stdio.h>
int main() {
printf("Mening ismim Ali\n");
printf("Men dasturchi bo'laman\n");
printf("C tilini o'rganayapman\n");
return 0;
}
Natija:
Mening ismim Ali
Men dasturchi bo'laman
C tilini o'rganayapman
Ismingizni yozib ko'ring. Xohlagan matnni chiqaring. Bu bosqichda eng muhim narsa — qo'rqmasdan sinash.
Mashqlar
✏️ Mashq 1 — O'zingizni tanishtiring
Ekranga quyidagilarni chiqaring:
Ism: [sizning ismingiz] Yosh: [yoshingiz] Maqsad: C dasturchi bo'lish
\tdan foydalaning — chiroyli ko'rinsin.
✏️ Mashq 2 — Sinab ko'ring
\nni o'chirib nima bo'lishini ko'ring. Keyin ikkita\nqo'ying — qanday ko'rinadi? Kuzatganingizni tushunishga harakat qiling.
Xulosa
| Element | Nima qiladi |
|---|---|
#include <stdio.h> |
printf ni ishlatish uchun kutubxona ulaydi |
int main() |
Dastur boshlanish nuqtasi |
printf("...") |
Ekranga matn chiqaradi |
\n |
Yangi qatorga o'tadi |
return 0 |
OS ga "yaxshi tugadi" deydi |
; |
Har bir buyruq shu bilan tugaydi |
{ } |
Funksiya tanasini belgilaydi |
Keyingi dars
Ekranga matn chiqarishni o'rgandik. Endi o'zgaruvchilar — xotirada ma'lumot saqlash.
4-dars: O'zgaruvchilar va ma'lumot turlari