1-dars: C tili tanishuv, Hello World
Dars haqida
Davomiyligi: 90 daqiqa Maqsad: Talaba C tilining tarixini bilishi, compiler o'rnatishi, birinchi Hello World dasturini yozishi va kompilatsiya qilishi kerak.
1. C tili nima va nima uchun?
C — 1972-yilda Dennis Ritchie tomonidan Bell Labs'da yaratilgan dasturlash tili. Asosiy maqsad — UNIX operatsion tizimi uchun edi.
C tili tarixi
- 1972 — yaratildi
- 1978 — "The C Programming Language" kitobi (K&R)
- 1989 — ANSI C standarti
- 1999 — C99
- 2011 — C11
- 2017 — C17
- 2024 — C23
50+ yil — hali ham eng kuchli tillardan biri.
2. C qayerda ishlatiladi?
3. C va boshqa tillar
| Til | C bilan munosabati |
|---|---|
| C++ | C'ning OOP versiyasi |
| Objective-C | Apple eski tili |
| Java | C sintaksisi |
| JavaScript | C sintaksisi |
| C# | Microsoft, C++'ga o'xshash |
| Go | Google, C'ga o'xshash |
| Rust | C'ning zamonaviy alternativi |
| Python | Interpreteri C'da yozilgan |
C ni o'rgansangiz — qolgan tillarni tezroq tushunasiz.
4. C vs Scratch
Scratch'da:
when 🟢 clicked
say [Salom dunyo!] for 2 secsC'da:
#include <stdio.h>
int main(void) {
printf("Salom dunyo!\n");
return 0;
}Bir xil natija, lekin C'da tekst kod.
5. C tili xususiyatlari
Compiled vs Interpreted
C — compiled: kod mashina kodiga aylantiriladi. Python, JavaScript — interpreted: kod chiziqma-chiziq o'qiladi.
C dasturi kompilyatsiya kerak.
Statically Typed
int yosh = 25; // tur (int) belgilangan
yosh = "Akmal"; // XATO! int o'rniga matnPython'da:
yosh = 25 # tur avtomatik
yosh = "Akmal" # OK — tur o'zgaradiC qat'iy, Python erkin.
6. C compiler o'rnatish
macOS
Avtomatik bor. Tekshiring:
$ clang --version
Apple clang version 15.0.0Agar yo'q bo'lsa:
$ xcode-select --installLinux (Ubuntu)
$ sudo apt update
$ sudo apt install gcc
$ gcc --versionWindows
3 ta variant:
Variant 1: MinGW
mingw-w64.org'dan yuklab oling- O'rnating
- PATH'ga qo'shing
gcc --version
Variant 2: WSL (tavsiya)
- PowerShell:
wsl --install - Ubuntu o'rnatiladi
- Ubuntu terminal'da:
sudo apt install gcc
Variant 3: Visual Studio
- Full IDE, lekin og'ir
Tavsiya
WSL — eng yaxshi tanlov Windows uchun. Linux terminali — Foundation kursi uchun ideal.
7. VS Code va C/C++ extension
- VS Code'ni oching
- Extensions (chap, chiziqlar bilan kvadrat)
- C/C++ qidiring (Microsoft tomonidan)
- Install
Endi VS Code'da .c fayllarni chiroyli syntax highlighting bilan ko'rasiz.
8. Birinchi C dasturi: Hello World
hello.c faylini yarating:
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}Tushuntirish
#include <stdio.h>Header fayl qo'shish. stdio.h — Standard Input/Output. printf shu yerda.
int main(void) {main funksiyasi — har C dasturning kirish nuqtasi. int — bu funksiya butun raqam qaytaradi. void — parameter yo'q.
printf("Hello, World!\n");printf — matn chiqaruvchi. \n — yangi qator (newline).
return 0;Return 0 — dastur muvaffaqiyatli tugadi. Boshqa raqam — xato.
}Yopish qavsi — funksiya tugadi.
9. Kompilyatsiya va ishga tushirish
$ gcc hello.c -o hello
$ ./hello
Hello, World!Tushuntirish
gcc hello.c— C compilerhello.cfaylini kompilyatsiya qiladi-o hello— natija faylnihellodeb ataydi./hello— yaratilgan dasturni ishga tushirish
Windows'da
Windows'da: gcc hello.c -o hello.exe va ./hello.exe yoki .\hello.exe.
WSL'da Linux uslubi.
Compiler turlari
| Compiler | Tizim |
|---|---|
| gcc | GNU Compiler, Linux/Windows |
| clang | macOS standart |
| MSVC | Microsoft Visual Studio |
| tcc | Tiny C Compiler |
Hammasi C'ni kompilyatsiya qiladi.
10. C dastur tuzilmasi
// Preprocessor directive
#include <stdio.h>
// Funksiya
int main(void) {
// Statement (gap)
printf("Salom\n");
// Statement
int yosh = 25;
// Return
return 0;
}Asosiy qoidalar
- Har statement
;bilan tugaydi - Funksiya
{}ichida - Qavslar ochilgan = yopilgan
- C — case sensitive:
main≠Main - Indentatsiya — 4 bo'shliq yoki tab (qoida yo'q, lekin standart)
11. Comment — izohlar
// Bitta qatorli izoh
/* Bir nechta
qatorli
izoh */Compiler izohlarni e'tiborga olmaydi — faqat odamlar uchun.
Yaxshi izoh
- WHY yozing — nima uchun, sababini
- WHAT o'zi kodda ko'rinadi
Yomon:
i = i + 1; // i ni 1 ga oshirishYaxshi:
i = i + 1; // ball oshadi har raund'da12. printf — chiqarish
printf("Salom dunyo!\n");
printf("Mening yoshim: 25\n");
printf("Yashayman Toshkentda\n");Maxsus belgilar (escape characters)
| Belgi | Ma'no |
|---|---|
\n | Yangi qator |
\t | Tab |
\\ | Backslash |
\" | Quotation mark |
\' | Apostrof |
\0 | Null character |
Misol:
printf("Birinchi qator\nIkkinchi qator\n");
printf("Tab\tbilan\tajratilgan\n");
printf("Quotation: \"Salom\"\n");13. Bir nechta printf
#include <stdio.h>
int main(void) {
printf("Salom!\n");
printf("Mening ismim Akmal\n");
printf("Men 22 yoshdaman\n");
printf("Toshkentdaman\n");
return 0;
}Natija:
Salom!
Mening ismim Akmal
Men 22 yoshdaman
Toshkentdaman14. C va terminal birga
Terminal'da:
$ mkdir c-asoslari
$ cd c-asoslari
$ touch hello.c
$ nano hello.c
# (kod yozing, Ctrl+O saqlash, Ctrl+X chiqish)
$ gcc hello.c -o hello
$ ./hello
Hello, World!VS Code'da:
c-asoslaripapkani ochinghello.cyarating- Kod yozing va
Ctrl+Ssaqlang - Terminal'ni oching (
Ctrl +`) gcc hello.c -o hello && ./hello
15. Xatolar (errors) bilan tanishuv
Syntax error
#include <stdio.h>
int main(void) {
printf("Salom\n") // ← ; unutilgan
return 0;
}Kompilyatsiya:
hello.c:4:25: error: expected ';' after expression
printf("Salom\n")
^
;C xato joyini aniq ko'rsatadi. 4:25 — 4-qator, 25-belgi.
Boshqa keng tarqalgan xatolar
expected ';'— vergulli unutganexpected '}'— qavs yopilmaganundeclared identifier— o'zgaruvchi e'lon qilinmaganimplicit declaration— funksiya e'lon qilinmaganlinker error— header yo'q
Darsdagi topshiriqlar
Topshiriq 1 — Setup
C compiler o'rnatilganini tekshiring:
bash$ gcc --version # yoki $ clang --versionVS Code'da C/C++ extension o'rnating
Test fayl yarating:
bash$ mkdir ~/c-darslari $ cd ~/c-darslari $ touch hello.c
Daftarga screenshot.
Topshiriq 2 — Hello World
hello.c:
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}Kompilyatsiya va ishga tushirish:
$ gcc hello.c -o hello
$ ./helloNatijani Drive'ga screenshot bilan saqlang.
Topshiriq 3 — Shaxsiy tanishuv
tanishuv.c yarating va o'zingiz haqida 5+ jumla yozing:
#include <stdio.h>
int main(void) {
printf("Salom! Mening ismim Akmal Karimov.\n");
printf("Men 22 yoshdaman.\n");
printf("Toshkentda yashayman.\n");
printf("Foundation 4-oy talabasiman.\n");
printf("C tilini o'rganmoqdaman.\n");
return 0;
}O'z ma'lumotlaringizni qo'ying.
Kompilyatsiya va ishga tushirish. Natijani screenshot.
Topshiriq 4 — Escape characters
belgilar.c:
#include <stdio.h>
int main(void) {
printf("Birinchi qator\nIkkinchi qator\n");
printf("Tab\tajratilgan\tmatn\n");
printf("Quotation: \"Salom dunyo!\"\n");
printf("Apostrof: it\'s working\n");
printf("Backslash: C:\\Users\\Akmal\n");
return 0;
}Natija qanday ko'rinadi? Daftarga yozing.
Topshiriq 5 — ASCII art
ascii-art.c — kichik ASCII art rasm chizing:
#include <stdio.h>
int main(void) {
printf(" * \n");
printf(" *** \n");
printf(" ***** \n");
printf(" ******* \n");
printf("*********\n");
printf(" * \n");
return 0;
}(Yulduzcha)
O'zingiz boshqa rasm chizing — uy, mushuk, daraxt, ism.
Drive'ga: 5-ascii-art.c va screenshot.
Topshiriq 6 — Xato'larni topish
Quyidagi kod 4 ta xatoga ega. Toping va tuzating:
#include <stdio.h>
int main(void) {
printf("Birinchi qator\n")
printf(Ikkinchi qator\n);
print("Uchinchi qator\n");
printf("To'rtinchi qator\n");
return 0
}Tuzatilgan versiyani Drive'ga: 6-xatolarni-tuzating.c
Topshiriq 7 — Kompilyatsiya jarayoni
GCC bilan tajriba:
$ gcc hello.c -o hello # standart
$ gcc -Wall hello.c -o hello # warnings'lar ko'rsatish
$ gcc -Wall -Wextra hello.c -o hello # ko'proq warnings
$ gcc -O2 hello.c -o hello # optimization
$ gcc -g hello.c -o hello # debug uchunHar birini ishlatib ko'ring. Farqi bormi?
Daftarga yozing.
Topshiriq 8 — GitHub'ga yuklang
Hamma 4-oy darslari uchun yangi repo: c-darslari
$ cd ~/c-darslari
$ git init
$ touch README.md
$ echo "# C tili darslari" > README.md
$ echo "Foundation 4-oy" >> README.md
$ git add .
$ git commit -m "feat: initial commit"GitHub'da yangi repo (Public) → connect:
$ git remote add origin https://github.com/USERNAME/c-darslari.git
$ git branch -M main
$ git push -u origin mainHamma .c fayllarni qo'shing.
Asosiy tushunchalar (lug'at)
| Termin | Qisqacha izoh |
|---|---|
| C | Past darajadagi dasturlash tili |
| Compiler | Kodni mashina kodiga aylantiruvchi |
| gcc / clang | Mashhur C kompilatorlari |
#include | Preprocessor direktivi |
| stdio.h | Standard I/O header |
main() | Dasturning kirish nuqtasi |
printf | Matn chiqarish funksiyasi |
return 0 | Muvaffaqiyatli tugash |
| Statement | Gap (; bilan tugaydi) |
| Comment | Izoh (// yoki /* */) |
| Escape character | \n, \t va h.k. |
| Syntax error | Sintaksis xatosi |
| Executable | Bajariladigan fayl |
-o | Output fayl nomi |
| Case sensitive | Katta-kichik harf farqlanadi |