2-bo‘lim
Muhitni sozlash va birinchi dastur
Windows, Linux va macOS da kompilyator o'rnatish, Notepad++ va Sublime Text ni sozlash, birinchi dasturni yozib ishga tushirish.
Ushbu bo‘lim mundarijasi
C kodini ishga tushirish uchun ikki narsa kerak: matn muharriri va kompilyator.
Kompilyator nima qiladi? #
Kompilyator o'rnatish #
Windows #
Windows uchun eng qulay yo'l - MSYS2 orqali GCC o'rnatish.
1. https://www.msys2.org saytidan o'rnatuvchini yuklab oling
2. O'rnating (standart yo'l: C:\msys64)
3. "MSYS2 UCRT64" oynasini oching va quyidagini yozing:
pacman -S mingw-w64-ucrt-x86_64-gcc
So'ng GCC ni tizim yo'liga (PATH) qo'shing:
1. Windows qidiruvida "environment variables" deb yozing
2. "Edit the system environment variables" ni oching
3. "Environment Variables..." tugmasini bosing
4. "Path" ni tanlab "Edit" bosing
5. "New" bosib quyidagini qo'shing: C:\msys64\ucrt64\bin
6. OK bosing va yangi cmd oynasini oching
Agar MSYS2 murakkab tuyulsa, w64devkit ni ishlating - bitta zip fayl,
o'rnatish shart emas: github.com/skeeto/w64devkit. Uni papkaga chiqarib,
bin papkasini PATH ga qo'shing.
Linux #
# Ubuntu / Debian
sudo apt update
sudo apt install build-essential
# Fedora
sudo dnf install gcc
# Arch
sudo pacman -S base-devel
macOS #
xcode-select --install
Tekshirish #
gcc --version
gcc (GCC) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
Versiya raqami boshqacha bo'lishi mumkin - muhimi, xatolik chiqmasligi.
Bu xabar GCC o'rnatilmagan yoki PATH ga qo'shilmaganini bildiradi.
Tekshiring:
- Yangi terminal oynasini oching - eski oyna eski PATH ni saqlaydi.
C:\msys64\ucrt64\binpapkasidagcc.exebormi?- PATH ga to'g'ri papka qo'shilganmi (
binbilan tugashi kerak).
Matn muharririni sozlash #
Notepad++ #
notepad-plus-plus.orgdan yuklab oling.- Sozlamalar:
| Sozlama | Qiymat | Qayerda |
|---|---|---|
| Kodlash | UTF-8 (BOM siz) | Encoding menyusi |
| Til | C | Language -> C |
| Tab | 4 probel | Settings -> Preferences -> Language |
| Qator oxiri | Unix (LF) | Edit -> EOL Conversion |
- Kompilyatsiyani tugmaga bog'lash (NppExec plagini orqali):
Plugins -> Plugin Admin -> NppExec ni o'rnating
Plugins -> NppExec -> Execute... (F6)
npp_save
cd "$(CURRENT_DIRECTORY)"
gcc -std=c17 -Wall -Wextra -g "$(FILE_NAME)" -o "$(NAME_PART).exe"
"$(NAME_PART).exe"
Buni Save... tugmasi bilan «Kompilyatsiya» nomi ostida saqlang va
Plugins -> NppExec -> Advanced Options orqali klaviatura tugmasiga
bog'lang.
Sublime Text #
sublimetext.com dan yuklab oling, so'ng
Tools -> Build System -> New Build System... ni tanlang va quyidagini
saqlang (C_dastur.sublime-build nomi bilan):
{
"cmd": ["gcc", "-std=c17", "-Wall", "-Wextra", "-g", "$file", "-o", "${file_base_name}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c",
"variants": [
{
"name": "Ishga tushirish",
"shell": true,
"cmd": ["gcc -std=c17 -Wall -Wextra -g \"$file\" -o \"${file_base_name}\" && \"./${file_base_name}\""]
}
]
}
Endi Ctrl+B kodni kompilyatsiya qiladi, Ctrl+Shift+B esa kompilyatsiya
qilib ishga tushiradi.
| Bayroq | Ma'nosi |
|---|---|
-std=c17 | C17 standartidan foydalanish |
-Wall | Barcha odatiy ogohlantirishlarni ko'rsatish |
-Wextra | Qo'shimcha ogohlantirishlar |
-g | Nosozliklarni tuzatish ma'lumotini qo'shish |
-o nom | Natija faylining nomi |
-Wall -Wextra ni doim ishlating. Kompilyator ogohlantirishi -
bu kelajakdagi xatolik haqidagi bepul maslahat.
Birinchi dastur #
salom.c nomli fayl yarating:
#include <stdio.h>
int main(void) {
printf("Salom, dunyo!\n");
printf("Mening ismim Husanboy.\n");
return 0;
}
Kompilyatsiya qiling va ishga tushiring:
gcc -std=c17 -Wall -Wextra salom.c -o salom
./salom
Windows'da:
gcc -std=c17 -Wall -Wextra salom.c -o salom.exe
salom.exe
Salom, dunyo!
Mening ismim Husanboy.
Har bir qator nima qiladi? #
#include <stdio.h>- «standard input/output header».printffunksiyasi shu faylda e'lon qilingan. Usiz kompilyatorprintfni bilmaydi.int main(void)- dastur ishga tushganda birinchi bo'lib shu funksiya chaqiriladi.void- «hech qanday argument qabul qilmaydi» degani.printf(...)- ekranga matn chiqaradi.\nyangi qatorga o'tkazadi.return 0;- operatsion tizimga «dastur muvaffaqiyatli tugadi» deb xabar beradi. Nol bo'lmagan son xatolikni bildiradi.
\n ni unutmangprintf avtomatik yangi qatorga o'tmaydi. Bu Python'dagi print() dan
asosiy farq.
printf("Birinchi");
printf("Ikkinchi");
Natija: BirinchiIkkinchi - bir qatorda.
Kompilyator xatolarini o'qish #
Ataylab xato qilamiz - nuqtali vergulni tashlab yuboramiz:
#include <stdio.h>
int main(void) {
printf("Salom!\n")
return 0;
}
salom.c: In function 'main':
salom.c:4:24: error: expected ';' before 'return'
4 | printf("Salom!\n")
| ^
| ;
5 | return 0;
| ~~~~~~
salom.c : 4 : 24 : error : expected ';' before 'return'
↑ ↑ ↑ ↑ ↑
fayl qator ustun tur tavsif
Kompilyator hatto nimani qo'shish kerakligini ham ko'rsatib turibdi.
Muhim qoida: birinchi xatodan boshlang. Bitta unutilgan qavs o'nlab keyingi xatoni keltirib chiqaradi - birinchisini tuzatsangiz, qolganlari ham yo'qoladi.
Chiqish kodini tekshirish #
return 0; qaytargan qiymatni operatsion tizim ko'radi:
./salom
echo $?
Salom, dunyo!
Mening ismim Husanboy.
0
Windows'da: echo %ERRORLEVEL%.
Bu skriptlar uchun muhim: dastur muvaffaqiyatli tugadimi yoki yo'qmi - shu son orqali bilinadi.
Ish papkasini tashkil qilish #
C-darslik/
├── 01-salom/
│ ├── salom.c
│ └── salom.exe
├── 02-ozgaruvchilar/
│ └── ozgaruvchilar.c
└── 03-sikllar/
└── sikllar.c
.exe va .o fayllari kod emas - ular har safar qaytadan yaratiladi.
Git ishlatsangiz, .gitignore fayliga qo'shing:
*.exe
*.o
*.out
- Kompilyatorni o'rnating va
gcc --versionbilan tekshiring. - Notepad++ yoki Sublime Text ni sozlang.
salom.cfaylini yarating va ishga tushiring.- Matnni o'z ismingizga o'zgartiring.
- Yana ikkita
printfqo'shing. - Bitta
printfda\nni olib tashlang va natijani ko'ring. - Nuqtali vergulni ataylab o'chirib, xato xabarini o'qing.
return 0;nireturn 42;ga o'zgartiring va chiqish kodini tekshiring.-Wall -Wextrabayroqlarisiz va ular bilan kompilyatsiya qilib solishtiring.C-darslikpapkasini yaratib, tartibli ish boshlang.
Xulosa #
- C kodini ishga tushirish uchun kompilyator kerak - odatda GCC.
- Windows'da MSYS2 yoki w64devkit, Linux'da
build-essential, macOS'daxcode-select --install. - Kompilyatsiya to'rt bosqichdan iborat: preprotsessor, kompilyator, assembler, bog'lovchi.
#include <stdio.h>-printfuchun zarur.mainfunksiyasi - dasturning kirish nuqtasi.- Har bir buyruq nuqtali vergul bilan tugaydi.
printfavtomatik yangi qatorga o'tmaydi -\nkerak.-Wall -Wextrabayroqlarini doim ishlating.- Xatoni tuzatishda birinchisidan boshlang.
Keyingi bo'limda dastur tuzilishini va sintaksis qoidalarini batafsil ko'ramiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.