3-hafta · Foundation

C tili asoslari

Scratchda bloklar bilan o'rgangan g'oyalarni endi haqiqiy matn-kodga ko'chiramiz. C, tezkor va aniq til bo'lib, deyarli barcha zamonaviy tillarning poydevorida turadi. Bu darsda birinchi dasturdan boshlab, o'zgaruvchilar, shartlar, sikllar va funksiyalargacha bosqichma-bosqich yuramiz, har birini IDE uslubidagi jonli kod izlagichda ko'rib.

Bu darsda nimani o'rganasiz

Birinchi C dasturingizni yozasiz va uning har bir qismini tushunasiz
Kodning kompilyatsiya orqali dasturga aylanishini ko'rasiz
int, char, float, double turlarini va xotira o'lchamini bilasiz
printf bilan formatlangan natija chiqarasiz
if/else va sikllar bilan mantiq qurasiz
Funksiya yozib, kodni qayta ishlatasiz

3.1 C tili nima?

C, 1972-yilda yaratilgan dasturlash tili bo'lib, hozirgacha eng ko'p ishlatiladigan va eng ta'sirli tillardan biri. Operatsion tizimlar (Windows, Linux yadrosi), brauzerlar va hatto boshqa dasturlash tillari ham ko'pincha C asosida qurilgan.

Scratchda biz bloklarni ulardik. C tilida esa kod, ya'ni maxsus qoidalar bo'yicha yozilgan matn yozamiz. Avvaliga bu qiyinroq tuyuladi, lekin buning evaziga til juda tezkor va kompyuterga juda yaqin ishlaydi.

Nega aynan C dan boshlaymiz?

  • U sodda va aniq: faqat kerakli narsani o'zingiz yozasiz, hech narsa yashirin bo'lmaydi
  • Xotira va kompyuter qanday ishlashini chuqur tushunishga o'rgatadi
  • Undagi g'oyalar (turlar, sikllar, funksiyalar) Python, JavaScript, Java va boshqalarda ham bor

Eng muhimi: C ni tushunsangiz, boshqa tillar siz uchun ancha oson bo'ladi. Shuning uchun u haqiqiy poydevor.

Scratchda xato qilish qiyin edi, chunki bloklar faqat mosini ulardi. C da esa kichik bir nuqta-vergulni unutsangiz ham xato chiqadi. Bu yomon emas, balki tartib-intizomga o'rgatadi, va aynan shu malaka sizni kuchli dasturchi qiladi.

3.2 Birinchi dastur

Har bir dasturchining birinchi dasturi odatda ekranga «Salom» yozadi. Mana C tilidagi to'liq dastur, atigi olti qator:

Dastur anatomiyasi qismni bosing
salom.c
Yuqoridagi tugmalardan birini bosing, har bir qism nima qilishini ko'rasiz.

Demak har qanday C dasturi main funksiyasidan boshlanadi: kompyuter dasturni ishga tushirganda aynan shu yerdan o'qiy boshlaydi. printf esa ekranga matn chiqaradi.

Har bir buyruq oxirida nuqta-vergul (;) turishi shart. Bu C ga «ushbu buyruq tugadi» deganini bildiradi, xuddi gap oxiridagi nuqtaga o'xshab.

3.3 Kompilyatsiya

Kompyuter biz yozgan C kodini to'g'ridan-to'g'ri tushunmaydi. U faqat 0 va 1 lardan iborat mashina kodini biladi. Shuning uchun kodimizni kompilyator (C uchun odatda gcc) yordamida mashina kodiga o'giramiz. Quyida shu jarayonni qadamlab ishga tushiring:

Kompilyatsiya quvuri ishga tushiring
terminal
$
«Ishga tushir» tugmasini bosing: kod qanday qilib dasturga aylanishini ko'rasiz.

Demak yo'l doim bir xil: kod yozkompilyatsiya qil (gcc) → dasturni ishlat. Agar kodda xato bo'lsa, kompilyator dasturni yaratmaydi, balki xato qaysi qatorda ekanini aytadi.

3.4 O'zgaruvchilar va turlar

Dastur ma'lumotni biror joyda saqlashi kerak. Buning uchun o'zgaruvchi (variable) ishlatamiz, ya'ni xotiradagi nomli quti. Scratchdagi «o'zgaruvchi»ning aynan o'zi, faqat bu yerda har bir o'zgaruvchining turi (type) ham bo'ladi.

Tur deganda o'zgaruvchi qanaqa ma'lumot saqlashini bildiradi: butun son, kasr son yoki bitta harf. C ga turni oldindan aytib qo'yamiz, shunda u qancha xotira ajratishni biladi.

turlar.c
1int yosh = 19; // butun son
2float bo'y = 1.78; // kasr son
3char daraja = 'A'; // bitta harf
4double pi = 3.14159; // aniq kasr son

Har bir tur xotirada turlicha joy egallaydi. Kartani bosib, batafsil ko'ring:

Ma'lumot turlari kartani bosing
Yuqoridagi to'rt turdan birini bosing.

3.5 printf va kiritish

printf ekranga matn chiqaradi. Lekin u faqat oddiy matn emas, o'zgaruvchilar qiymatini ham chiqara oladi. Buning uchun maxsus belgilar, format spetsifikatorlari ishlatiladi:

  • %d butun son (int) uchun
  • %f kasr son (float, double) uchun
  • %c bitta harf (char) uchun
  • \n yangi qatorga o'tish uchun

Pastda turni tanlang va qiymat kiriting, printf qanday chiqarishini ko'ring:

printf maydoni qiymatni o'zgartiring
main.c
1printf("Natija: %d\n", 42);
terminal
Foydalanuvchidan ma'lumot olish uchun scanf ishlatiladi, masalan scanf("%d", &yosh);. U klaviaturadan kiritilgan sonni yosh o'zgaruvchisiga yozadi.

3.6 Operatorlar

Operator deganda qiymatlar ustida amal bajaradigan belgi tushuniladi. C da uch asosiy guruh bor:

  • Arifmetik: + qo'shish, - ayirish, * ko'paytirish, / bo'lish, % qoldiq
  • Taqqoslash: == teng, != teng emas, > katta, < kichik
  • Mantiqiy: && va, || yoki, ! emas

Muhim nozik nuqta: C da butun sonlar bo'linganda natija ham butun bo'ladi. Masalan 7 / 2 natijasi 3 (kasr qism tashlanadi), 7 % 2 esa 1 (qoldiq). Pastda sinab ko'ring:

Operator kalkulyatori sonlarni o'zgartiring
terminal

3.7 Shartlar: if / else

Scratchdagi «agar ... bo'lsa» bloki C da if deb yoziladi. Dastur shartni tekshiradi: agar shart to'g'ri (rost) bo'lsa, bitta yo'ldan, aks holda else orqali boshqa yo'ldan boradi.

if / else izlagich yoshni o'zgartiring
yosh =
tekshir.c
terminal
Ko'p variant bo'lsa, if ... else if ... else zanjiri yoki switch ishlatiladi. Diqqat: tenglikni tekshirishda bitta emas, ikkita teng belgi (==) qo'yiladi. Bitta = bu qiymat berish, ikkita == bu taqqoslash.

3.8 Sikllar: for / while

Bir ishni ko'p marta takrorlash uchun sikl ishlatamiz, xuddi Scratchdagi «takrorla» kabi. C da eng ko'p ishlatiladigani for sikli. U uch qismdan iborat: boshlang'ich qiymat, davom etish sharti va har qadamdagi o'zgarish.

Quyidagi dastur 1 dan 5 gacha sonlarni qo'shib boradi. Uni qadamlab yuriting va o'zgaruvchilar bilan natija qanday o'zgarishini debugger kabi kuzating:

Kod izlagich (debugger) qadamlab yuriting
yigindi.c
terminal

Natija: 1, 3, 6, 10, 15. while sikli ham xuddi shunday ishlaydi, lekin shart oldindan beriladi va tana shart to'g'ri bo'lguncha takrorlanadi.

Bashorat qiling

Bu sikl terminalga nima chiqaradi?

main.c
1for (int i = 0; i < 3; i++)
2 printf("*");
* * * (probel bilan)
***
0 1 2

3.9 Funksiyalar

Scratchda «o'z blokingiz»ni yasagandik. C da bu funksiya deyiladi: bir bo'lak kodga nom berib, uni istalgan joyda chaqirib ishlatamiz. Funksiya ma'lumot qabul qilishi (parametr) va natija qaytarishi (return) mumkin.

kvadrat.c
1int kvadrat(int n) { // n parametr
2 return n * n; // natijani qaytaradi
3}

Endi kvadrat(4) deb chaqirsak, u 16 qaytaradi. Pastda son tanlang va funksiya chaqiruvini kuzating:

Funksiya chaqiruvi sonni tanlang
kvadrat( )
«Chaqir» tugmasini bosing.

3.10 Chuqurroq advanced

Asoslarni egalladingiz. Endi C ning yana uchta muhim tushunchasi bilan qisqacha tanishamiz. Bularni keyingi haftalarda chuqur o'rganamiz, hozir esa umumiy tasavvur olamiz.

Massivlar

Massiv deganda bir nechta bir xil turdagi qiymatni bitta nom ostida saqlash tushuniladi. Har bir element o'z raqami (indeks) bilan olinadi, va indeks 0 dan boshlanadi.

massiv.c
1int ballar[3] = {90, 85, 70};
2printf("%d\n", ballar[0]); // 90

Satrlar (string)

Satr deganda harflar ketma-ketligi tushuniladi. C da satr aslida char larning massivi. So'z, ism yoki gap shu tarzda saqlanadi.

satr.c
1char ism[] = "Ali";
2printf("Salom, %s!\n", ism); // Salom, Ali!

Pointerlar (ko'rsatkich)

Pointer deganda biror o'zgaruvchining xotiradagi manzilini saqlovchi o'zgaruvchi tushuniladi. Ya'ni u qiymatning o'zini emas, balki «u qayerda turibdi» degan ma'lumotni saqlaydi. Bu C ning eng kuchli, ayni paytda eng nozik tushunchasi, va biz uni 6-haftada to'liq o'rganamiz.

Massiv, satr va pointer, bularning hammasi xotira bilan ishlash haqida. C ni shu sababli «kompyuterga eng yaqin til» deyishadi: u sizga xotirani to'g'ridan-to'g'ri boshqarish imkonini beradi.

Atamalar lug'ati

intbutun son saqlovchi tur (masalan 5, -20, 100).
printfekranga matn va qiymat chiqaruvchi funksiya.
maindastur ishga tushganda birinchi bo'lib bajariladigan funksiya.
gccC kodini mashina kodiga o'giruvchi kompilyator.
forma'lum marta takrorlovchi sikl.
returnfunksiyadan natija qaytaradi.

3.11 Bilim testi

16 ta savol. Haftani yakunlash uchun kamida 11 tasiga to'g'ri javob bering.

Tabriklaymiz! 3-hafta yakunlandi

Endi siz haqiqiy C kodi yoza olasiz: o'zgaruvchilar, turlar, printf, operatorlar, shartlar, sikllar va funksiyalar bilan tanishdingiz. Bu, har qanday katta dasturning asosiy g'ishtlari.

Keyingi hafta: Massivlar va satrlar (ko'p qiymatni saqlash, indeks, satrlar va null terminator).

Keyingi modulga o'tish