Programozás alapjai Csernoch Mária
Feladat megoldása számítógéppel Feladat elemzése Mi adott a feladatban? Bemenő adatok Mit kell kiszámolni, meghatározni? Eredmények Melyik az a számítógép szintjén megfogalmazott műveletsor, amelyet ha végrehajt, lépésről, lépésre elvezet a bemenő adatoktól a megoldáshoz? Ennek a meghatározása a feladat megoldása. Algoritmus
Feladat megoldása számítógéppel Kódolás (szövegszerkesztő) Algoritmus átírása C nyelvre Eredmény: Forráskód .c Fordítás (compiler) előfordítás (preprocessor) + belső fordítás (compiler) Eredmény: Tárgykód .obj Összeszerkesztés (linkage editor, linker) modulok (fordítási egységek) összeszerkesztése a futtatható állomány előállítása a lefordított kódrészletekből Eredmény: Futtatható kód .exe
Forráskód előállítása Szintakszis (nyelv szintakszisa) azoknak a szabályoknak az összessége, amelyek a nyelven írható összes lehetséges, formailag helyes programot (jelsorozatot) definiálják Szemantika (nyelv szemantikája) a nyelv programjainak jelentését leíró szabályok összessége
Ajánlott irodalom Benkő Tiborné, Benkő László, Tóth Bertalan: Programozzunk C nyelven Kátai Zoltán: C-nyelv és programozás Tóth Bertalan: Programozzunk C++ nyelven Juhász István, Kósa Márk, Pánovics János: C példatár Programming languages – C http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf
C alapelemei A fordító program a nyelv tokenjeit (szövegszó) dolgozza fel. token: két elhatárolójel közé eső jelsorozat A nyelv jelkészlete betűk számok különleges karakterek
Tokens identifier, azonosító keyword, kulcsszó constant, konstans string-literal, string-konstans punctuator, operátor és írásjel
Konstansok Egész konstansok decimális (10-es számrendszerbeli, nem 0-val kezdődő egész számok) 0, …, 9 oktális (8-as számrendszerbeli egész konstansok, első jegy 0) 0, …, 7 hexadecimális (16-os számrendszerbeli egész konstansok, 0x, 0X előtaggal) 0, …, 9, a/A, b/B, c/C, d/D, e/E, f/F
Konstansok Karakter konstansok egyszeres idézőjelek közé zárt egy vagy több karaktert tartalmazó karaktersorozatok pl. ‘a’, ‘@’, ’01’, ‘ab’ escape szekvenciák nem megjeleníthető karakterekre hivatkozás a nekik megfelelő karakter (1 byte) kerül tárolásra ‘\n’ LF új sor ‘\t ‘ HT vízszintes tabulátor ‘\b’ BS visszalépés ‘\\’ \ backslash ‘\”’ ” idézőjel ‘\?’ ? kérdőjel
Konstansok Lebegőpontos konstansok valós számok (előjeles, decimális) pl. 32.45, 0.003, 67E-2, 15e-1, -3.12458
Sztring literálok (konstansok) Kettős idézőjelek közé zárt karaktersorozat pl. ”Ezt szeretném kiíratni.” zárókarakter ”\0”
Kulcsszavak auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
Megjegyzések /* …*/ // (sor végéig)
A C nyelv azonosítói alkalmazás szabályok változók, függvények, új adattípusok, makrók szabályok első karakter betű vagy _ második karaktertől kezdve betűk, számok, _ case sensitive
Változócím Az & operátor segítségével hivatkozhatunk egy változó címére pl. &nev egy nev nevű változó címe
Változótípusok A változó típusa határozza meg méretét, a memóriában elfoglalt helyét milyen értéktartományból tárolhat értékeket
A változó értéke a benne tárolt érték program futása alatt változhat
A változó definiálása helyfoglalás a memóriában defináláskor meg kell adni változó nevét, típusát definiáláskor adható érték definiáláskor nem adunk értéket tartalma bizonytalan, „memóriaszemét”
Kifejezések operátorok operandusok Az operátor azt írja elő, hogy milyen műveleteket kell elvégezni a megfelelő operandusokon. A műveletek végrehajtásának sorrendjét az operátorok prioritása (elsőbbsége, precedenciája) adja meg.
Sorrend azonos prioritás esetén Precedenciatáblázat Operátorok Sorrend azonos prioritás esetén ( ) [ ] → . balról jobbra ! ~ ++ −− − (típus) * & sizeof jobbról balra * / % + − << >> < <= > >= == != & ^ | && || ?: = += −= /= %= <<= >>= &= |= ^= ,
Üres C program main(){ }
Kiíratás képernyőre main(){ printf("Elso"); } #include <stdio.h>
Formatált kiíratás Formázókarakter Kimenet Példa c character a d vagy i signed decimal integer 392 e vagy E scientific notation using e/E character 3.9265e+2 3.9265E+2 f decimal floating point 392.65 g vagy G use the shorter of %e or %f o signed octal 610 x vagy X unsigned hexadecimal int 7fa, 7FA s string of characters sample p pointer address B800:0000 u unsigned decimal integer 7235