Practical C Programming, 3rd Edition by Steve Oualline

How C Works

A C-t a programozó és a nyers számítógép közötti hídként tervezték. A lényege, hogy a programozó úgy szervezhessen meg egy programot, hogy azt könnyen megérthesse. A fordítóprogram ezután lefordítja a nyelvet olyasmire, amit a gép használni tud.

A számítógépes programok két fő részből állnak: adatokból és utasításokból. A számítógép erre a két részre kevés vagy semmilyen szervezést nem kényszerít rá. Végül is a számítógépeket úgy tervezték, hogy a lehető legáltalánosabbak legyenek. A programozónak kell a számítógépre ráerőltetnie a szervezését, nem pedig fordítva.

A számítógépben az adatokat bájtok sorozataként tárolják. A C ezeket a bájtokat hasznos adatokká szervezi. Az adatdeklarációkat a programozó arra használja, hogy leírja azokat az információkat, amelyekkel dolgozik. Például:

int total; /* Total number accounts */

a C-nek azt mondja, hogy a számítógép memóriájának egy részét egy total nevű egész szám tárolására akarjuk használni. A fordítóra bízzuk, hogy a memória mely konkrét bájtjait használja; ez a döntés egy apró könyvelési részlet, amivel nem akarunk foglalkozni.

A total változónk egy egyszerű változó. Csak egy egész számot tud tárolni, és csak egy összeget írhat le. Egész számok sorozata a következőképpen szervezhető tömbbe:

int balance; /* Balance (in cents) for all 100 accounts */

Azzal a részlettel, hogy ezt a szervezést a számítógép memóriájára kényszerítsük, ismét a C foglalkozik. Végül vannak összetettebb adattípusok is. Például egy téglalapnak lehet szélessége, magassága, színe és kitöltési mintája. A C lehetővé teszi, hogy ezt a négy elemet egy struktúrának nevezett csoportba rendezzük.

struct rectangle { int width; /* Width of rectangle in pixels */ int height; /* Height of rectangle in pixels */ color_type color; /* Color of the rectangle */ fill_type fill; /* Fill pattern */};

A lényeg az, hogy a struktúrák lehetővé teszik a programozó számára, hogy az adatokat az igényeinek megfelelően rendezhesse, függetlenül attól, hogy az adatok mennyire egyszerűek vagy összetettek. Ennek az adatleírásnak a lefordítása olyasmire, amit a számítógép használni tud, a fordító feladata, nem a programozóé.

Az adatok azonban csak egy része a programnak. Szükségünk van utasításokra is. Ami a számítógépet illeti, semmit sem tud az utasítások elrendezéséről. Tudja, hogy mit csinál az aktuális utasítással, és hogy honnan jön a következő, de semmi többet.

A C egy magas szintű nyelv. Olyan magas szintű utasításokat írhatunk vele, mint:

area = (base * height) / 2.0; /* Compute area of triangle */

A fordító ezt az utasítást rejtélyes, alacsony szintű gépi utasítások sorozatává fordítja le. Az ilyen utasítást hozzárendelési utasításnak nevezzük. Egy aritmetikai kifejezés értékének kiszámítására és tárolására szolgál.

Vezérlő utasításokat is használhatunk a feldolgozás sorrendjének vezérlésére. Az olyan utasítások, mint az if és a switch utasítások lehetővé teszik a számítógép számára, hogy egyszerű döntéseket hozzon. Az utasításokat újra és újra megismételhetjük a cikluskezelő utasítások, például a while és a for használatával.

Az utasítások csoportjai függvényekké csomagolhatók. Így csak egyszer kell megírnunk egy általános célú függvényt egy téglalap rajzolásához, és aztán újra felhasználhatjuk, amikor egy új téglalapot akarunk rajzolni.

A C a program számára szabványos függvények gazdag készletét biztosítja, amelyek olyan általános funkciókat hajtanak végre, mint a keresés, rendezés, bevitel és kimenet.

Összefüggő függvények csoportosíthatók egyetlen forrásfájlban. Sok forrásfájl fordítható le és kapcsolható össze, hogy egy programot alkosson.

A C nyelv egyik fő célja, hogy az utasításokat újrafelhasználható komponensekké szervezze. Végül is sokkal gyorsabban írhatunk programokat, ha a kód nagy részét “kölcsönvehetjük” valahonnan máshonnan. Az újrafelhasználható függvények csoportjai könyvtárakká kombinálhatók. Ily módon, amikor például egy rendezési rutinra van szükségünk, a könyvtárból kiragadhatjuk a szabványos qsort függvényt, és belekapcsolhatjuk a programunkba.

Az adatdeklarációk, struktúrák és vezérlő utasítások, valamint a C nyelv egyéb elemei nem a számítógépet szolgálják. A számítógép nem tud különbséget tenni egymillió véletlenszerű bájt és egy valódi program között. A C nyelv minden elemét úgy tervezték, hogy a programozó számára lehetővé tegye, hogy elképzeléseit világosan kifejezhesse és rendszerezze, mégpedig a személyre szabott módon, nem pedig a számítógépre szabottan.

A szervezés a jó programok írásának kulcsa. Ebben a könyvben például tudja, hogy a tartalomjegyzék elöl van, az index pedig hátul. Azért használjuk ezt a szerkezetet, mert a könyveket így szervezik. A rendszerezés megkönnyíti a könyv használatát.

A C nyelv lehetővé teszi, hogy egyszerű, de hatékony szintaxis segítségével megszervezze programjait. Ez a könyv túlmutat a C szintaxison, és olyan stílusszabályokat tanít meg, amelyek segítségével rendkívül olvasható és megbízható programokat készíthet. A nagy teljesítményű szintaxis és a jó programozási stílus kombinálásával olyan nagy teljesítményű programokat hozhatsz létre, amelyek bonyolult és csodálatos műveleteket végeznek, ugyanakkor úgy vannak megszervezve, hogy könnyen érthetőek legyenek, amikor eljön a változtatás ideje.

Leave a Reply