- Sintakses, datu tipu pārvaldības un plūsmas kontroles pamatprincipi.
- Uzlabota atmiņas pārvaldība, izmantojot rādītājus un struktūras.
- Profesionālu projektu organizēšana, izmantojot galvenes failus un priekšapstrādātāju.
Ja jūs iedziļināties programmēšanas pasaulē, jūs droši vien esat saskāries ar faktu, ka C valoda ir kā daudzu mūsdienu valodu tēvs . Tā nav tikai akadēmisks rīks kursa nokārtošanai; tā ir dzinējspēks, kas darbina lielu daļu mūsdienu tehnoloģiju, sākot no Linux kodola līdz sistēmām, kurās darbojas jūsu Android tālrunis. Tā ir zema līmeņa valoda, kas nozīmē, ka tā nedod jums neko bez maksas un piespiež jūs saprast, kā domā mašīna , dodot jums pilnīgu kontroli pār aparatūru.
Sākumā C valodas apguve var šķist sarežģīta, jo īpaši tāpēc, ka tai trūkst automātiskās palīdzības, ko var atrast Python vai Java. Nav atkritumu savācēja, kas satīrītu atmiņā atstāto jucekli; jūs esat gan arhitekts, gan aizbildnis . Tomēr tieši šī sarežģītība padara to tik jaudīgu un efektīvu, padarot to par iecienītāko izvēli mikrokontrolleru, piemēram, Arduino, vai augstas veiktspējas serveru programmēšanai, kur katrs baits ir svarīgs.
Pirmie soļi un izpildes cikls

Lai sāktu rakstīt kodu, mums jāsaprot, ka C ir kompilēta valoda . Atšķirībā no interpretētajām valodām, rakstītais kods iziet cauri tulkošanas procesam, izmantojot kompilatoru (piemēram, GCC), kas ģenerē izpildāmu bināro failu. Tas ļauj programmai darboties neticami ātri.
Jebkuras lietojumprogrammas ieejas punkts ir funkcija main() . Šeit notiek burvība. Lai kaut ko parādītu ekrānā, mēs izmantojam bibliotēku stdio.h , kas nodrošina funkciju printf() . Pamatprogrammai ir jāiekļauj šī galvene, jādefinē funkcija main un jāizsauc izvades instrukcija, vienmēr aizverot cirtainās figūriekavas un lietojot semikolu, kas ir vieta, kur lielākā daļa iesācēju mēdz pieļaut kļūdas.
Mainīgo apstrāde un datu tipogrāfija
C ir statiski tipizēta valoda , kas nozīmē, ka pirms katra mainīgā izmantošanas datoram ir jānorāda precīzi, kāda veida dati tajā tiks saglabāti. Tipu nevar mainīt uzreiz. Visizplatītākie tipi ir int veseliem skaitļiem, float un double decimāldaļām, un char atsevišķām rakstzīmēm.
- Veseli skaitļi: Atkarībā no arhitektūras mums ir īss, int y garšJa zināt, ka vērtība nekad nebūs negatīva, varat lietot vārdu neparakstīts paplašināt pozitīvo skaitļu diapazonu.
- Peldošais komats: Lai strādātu ar daļskaitļiem, mēs izmantojam peldēt (vienkārša precizitāte) vai dubultosies (dubulta precizitāte), pēdējais ir standarts precīzākiem aprēķiniem.
- Rakstzīmes: Veids tvertne Tas saglabā vienu rakstzīmi, pamatojoties uz ASCII tabulu, un parasti aizņem vienu baitu.
Kritisks jēdziens ir pārpilde . Ja mēģināsiet ievadīt skaitli, kas ir lielāks par tipa atļauto, vērtība atgriezīsies diapazona sākumā, kas var izraisīt kļūdas, kuras ir ļoti grūti atrast, ja neesat uzmanīgs.
Konstantes un operatori

Ja ir vērtība, kurai nevajadzētu mainīties, piemēram, skaitlis PI, ideāla pieeja ir izmantot `const` vai `#define` direktīvu . Lai gan `const` izveido tikai lasāmu mainīgo, `#define` ir pirmsprocesora instrukcija, kas aizstāj tekstu pirms kompilācijas.
Operāciju ziņā C piedāvā pilnu arsenālu. Mums ir aritmētika pamata klases, tās, kas ir salīdzinājums (piemēram, == vai !=) un loģiski (&&, ||, !). Ir arī salikti piešķiršanas operatori, piemēram, +=, kas ievērojami vienkāršo rakstīšanu. Ļoti noderīgs triks ir trīskāršais operatorskas ļauj jums uzrakstīt if/else paziņojumu vienā rindā, izmantojot sintaksi condicion ? verdadero : falso.
Plūsmas kontrole: lēmumi un atkārtojumi
Lai programma būtu inteliģenta, tai jāspēj pieņemt lēmumus. `if` un ` else if` priekšraksti ir pamata rīki sazarojuma izpildei. Ja jums ir jāsalīdzina viens mainīgais ar daudzām dažādām vērtībām, ` switch` priekšraksts ir daudz skaidrāks un organizētāks, ja vien atceraties katra gadījuma beigās ievietot ` break` , lai izvairītos no kaskādes.
Lai atkārtotu uzdevumus, C valodā ir trīs galvenās iespējas:
- Par: Ideāli, ja precīzi zināt, cik reižu vēlaties, lai cikls darbotos.
- Kamēr: Lieliski piemērots kaut kā atkārtošanai, ja vien ir izpildīts nosacījums, lai gan jāuzmanās, lai neradītu bezgalīgu ciklu.
- Darāms, kamēr: Atšķirībā no iepriekšējā, šis garantē, ka kods tiks palaists vismaz vienu reizi pirms stāvokļa pārbaudes.
Aranžējumi, ķēdes un rādītāju pasaule

Masīvs būtībā ir viena tipa elementu kolekcija, kas blakus tiek glabāta atmiņā. C valodā masīvi ir statiski , tāpēc to lielums ir jādefinē jau no paša sākuma. Virknes nav vietējais datu tips; tās ir rakstzīmju masīvi, kuriem jābeidzas ar nulles rakstzīmi (\\0).
Te nu mēs nonākam pie daļas, kas daudziem cilvēkiem liek nodrebēt: rādītāji . Rādītājs neuzglabā parastu vērtību, bet gan atmiņas adresi, kurā šī vērtība atrodas. Mēs izmantojam operatoru &, lai iegūtu adresi, un zvaigznīti * , lai piekļūtu šīs adreses saturam (atsauces noņemšana). Rādītāju apgūšana ir būtiska, jo tie ļauj mums nodot datus funkcijām, izmantojot atsauci, izvairoties no lielu atmiņas bloku kopēšanas un optimizējot veiktspēju.
Modularizācija: funkcijas, struktūras un faili
Lai kods nekļūtu par nelasāmu sadrumstalotu formu, mēs sadalām loģiku funkcijās . Tās var saņemt parametrus un atgriezt vērtības. Ir svarīgi funkciju deklarēt pirms tās lietošanas, lai kompilators nejustos apjukumā atgriešanas veidu dēļ.
Kad mums ir jāgrupē dažādu tipu dati, mēs izmantojam struktūras . Struktūra ļauj mums izveidot savu objektu, piemēram, “Person” (personu) ar vecumu (int) un vārdu (string). Ja vēlamies piešķirt šīm struktūrām vai uzskaitījumiem (uzskaitītiem tipiem) vienkāršāku nosaukumu, mēs izmantojam atslēgvārdu typedef.
Lieliem projektiem visu nevar glabāt vienā failā. Mēs izveidojam galvenes failus (.h) , kuros ievietojam funkciju prototipus un definīcijas, savukārt faktiskā ieviešana ir .c failos . Tas padara kodu atkārtoti izmantojamu un daudz vieglāk uzturējamu.
Priekšapstrādātājs un konfigurācija

Pirms kompilatora ieslēgšanas priekšapstrādātājs visu sakārto. Tas apstrādā visas rindas, kas sākas ar # . Papildus iekļaušanai un definēšanai mēs varam izmantot priekšapstrādes nosacījumus, piemēram, #ifdef, lai iekļautu vai izslēgtu koda fragmentus atkarībā no tā, vai atrodamies atkļūdošanas režīmā vai strādājam pie galīgās versijas.
Ir arī makro , kas ir kā ātrās funkcijas, kuras priekšapstrādātājs paplašina pirms kompilēšanas. Lai gan tās ir jaudīgas, tās jālieto piesardzīgi, un argumenti jāiekļauj iekavās, lai izvairītos no matemātiskām prioritātes kļūdām.
Visa šī struktūra, sākot ar manuālu atmiņas pārvaldību ar rādītājiem un datu tipu stingrību līdz priekšapstrādātāja elastībai, padara C par neaizstājamu rīku ikvienam, kurš vēlas padziļināti izprast datorzinātnes. Apgūstot tās sintaksi, plūsmas kontroli un modulāro organizāciju, iegūst spēju izveidot ārkārtīgi efektīvu un optimizētu programmatūru, kas var darboties praktiski uz jebkuras esošas aparatūras.