1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék
2 A C rövid története 1. Dennis M. Ritchie AT&T Bell Laboratories 1972 rendszerprogramozási célok alacsony szintű szolgáltatások elérése magasszintű nyelvből 1973 Ken Thompson & Dennis M. Ritchie UNIX források C-ben portabilitás
3 A C szabványosítása : ANSI - American National Standards Institute ANSI C
4 A legprimitívebb C program main() { }
5 Egy „bonyolultabb” program #include main() { printf("C programozás= fun"); }
6 Négyzet progi 1. #include double negyzet (double alap) { double s; s = alap * alap; return s; } /* ez egy megjegyzéssor */
7 Négyzet progi 2. main() { double x,y; scanf("%lf",&x); y = negyzet(x); printf("\n %lf negyzete: %lf", x, y); }
8 C programok általános szerkezete Runtime library header file hivatkozások Saját függvények függvény típus függvénynév argumentumok argumentum deklarációk változó deklarációk C utasítások
9 printf és scanf ki- és bemeneti függvények printf("formátumstring", par1, par2, par3... ) scanf("formátumlista", par1, par2, par3... ) formátumok : " % módosító betű " d integer f floating point c character s string
10 A fordítás menete Forrásprogram > a forrásban definiált kód generálása + szimbólumhivatkozási tábla objektumállomány + hivatkozások feloldása a könyvtárakkal > futtatható állomány C forrás > object file > futtatható file c.o.exe
11 Alapfogalmak : konstansok, típusok és változók konstansok elemi adattípusok int: 1 szó számábrázolású előjeles ( CPU-tól függően 16 v. 32 bit ) típusmódosító szavak: signed - unsigned long - short
12 int állandó példák int:82 oktális:027 hexadecimális:0xef long int:1L előjel nélküli int:1u
13 float és double egyszerű valós5.3 exponenciális alak5.8e+12 ANSI float3.5f ANSI double3.5e3L
14 char 1 byte alapértelmezés : előjeles : 128 érték előjel nélküli : karakter konstansok : kódtáblázat ASCII szimbólumkészlet ’a’, ’C’, ’\spec.karakter’
15 Speciális karakterek \b backspace (vissza törlés) \n újsor \t tabulátor \f form feed (lapdobás) \r return (kocsi vissza) \v függőleges tabulátor \a figyelmeztető jelzés a terminálnak
16 Névvel ellátott konstansok (konstans makrószimbólumok ) definíciójuk : #define név KONSTANS Pl.: #define ZERO 0 előredefiniált konstansok, pl. #include
17 Változók Egy négyes jellemzi (még bővül): azonosító típus ( memóriaméret ) aktuális érték:reference cím:location
18 Változódeklaráció típus név [,név] [=konstans]; az azonosító : kis – nagybetű érzékenység karakteres hossz első karakter: betű vagy aláhúzás második-tól betű vagy aláhúzás vagy szám nem lehet foglalt kulcsszó megfelelően választott, beszédes legyen
19 Változók használata Deklaráció Kezdeti érték beállítás..... Hivatkozás
20 Utasítások kifejezés; Értékadó utasítás: a = a + 5 ; jobboldalreference baloldallocation A változó location jellemzőjét a & operátor állítja elő
21 String konstansok "szöveg", amelyben nem lehet újsor karakter A hosszú stringeket folytatókarakterrel lehet átvinni a következő sorba : Pl.: printf("\nEz egy nagyon hosszú sor, amelyet \ nem lehet leírni egy sorban \n");
22 Megjegyzések /* megjegyzés nyitása */ zárása !!! Nem lehet megjegyzéseket egymásba ágyazni
23 Kifejezések Célja egy érték kiszámítása. Elemei: operandusok: állandók, változók vagy függvényhívások operátorok: műveletek
24 Kifejezés kiértékelése Kiértékelés : az a folyamat, amelynek során az operandusok és operátorok által reprezentált értékeket és az operandusok egy sorrendjét figyelembe véve a konkrét érték előáll. A kifejezés 'átlátszó', ha nem változtatja meg a program állapotterét: a változókat. DE: a fügvényhívások hatására ez bekövetkezhet: mellékhatás.
25 Kiértékelési sorrend Elsődleges és összetett kifejezések Az összetett kifejezésekben lévő többszörös operátorok kiértékelési sorrendje nem tetszőleges. 1.Maximális zárójelezés 2.Alapértelmezés szerinti elsőbbségszabály - precedencia