Programozás alapja C yelv 3. gyakorlat Szeberéy Imre BME IIT <szeb@t.bme.hu> Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -- Előző óra összefoglalása Algortmus leírása Sztaxs leírása C yelv tulajdosága Hagyomáyos C fordító C yelv szerkezete, első C program Változó, típus fogalma Belső és külső ábrázolás forma Egész és valós típus belső ábrázolása Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -2- Karakter típus (char) Egészek (byte) fogható fel és általába em egatív. értékkészlet: karakterek tárolására alkalmas [ CHAR_MIN, CHAR_MAX ] <lmts.h>-ba defált kostasok: a, 9, \, \2, \x2, művelethalmaz: azoos az t műveletevel belső ábrázolás: adott gép kódkészlete többyre ASCII Karakter kostasok Aposztrofok ( ) közé zárt: yomtatható karakterek: A, Z specáls szekvecák: \, \t, \v, \b, \r, \f, \a \\, \?, \, \, max. 3 oktáls, vagy tetszőleges számú hexa számjegy: \ooo, \xhh (Kterjesztett karaktertípus: L A ) Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -3- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -4- Karaktersorozat Ncs karaktersorozat típus, de va kostas: Karaktersorozatot lezáró ulla Mdg va egy ajádék lezáró ulla a sorozat végé. Macskakörmök ( ) közé zárt: yomtatható karaktarek: Alama specáls szekvecák: \talma\ oktáls, vagy hexa számjegy: \23\23 (Kterjesztett karakterkészlet eseté: L Alma ) Hello \ Valahol a memórába: H e l l o \ \ Lezáró ulla Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -5- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -6-
Változók mérete (szeof operátor) szeof kfejezés, vagy szeof(típus) szeof(char) --> byte (8 bt) szeof(short) >= 2 byte (6 bt) szeof(log) >= 4 byte(32 bt) szeof(short) <= szeof(t) szeof(t) <= szeof(log) szeof(float) <= szeof(double) Az t mdg az adott archtektúra legoptmálsabb egésze. Kfejezés, utasítás Operátorok alkalmazásával kfejezések jöek létre. Pl: 5 + 6 vagy a = 2 Az utasítások legegyszerűbb fajtája a kfejezésutasítás: kfejezés ; Pl: 5 + 6 ; vagy a = 2; Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -7- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -8- Összetett utasítás Kapcsos zárójelekkel összefogott utasítássorozat. pl: a = 3; c = 5 * 2; Potosabba: összetett_utasítás: deklarácós_lsta. opc utasítás_lsta Változók deklarálása újból deklarácó: deklarácó_sp. kezdet_dekl_lsta opc ; deklarácó_sp.: típus_spec. deklarácó_sp. opc tárolás_osztály_sp. deklarácó_sp. opc típus_mősítő deklarácó_sp. opc regster usged t A2; usged t regster a2; log; Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -9- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -- Tárolás osztály, típusmősítők, Páros-páratla Típus specfkátor: vod, char, short, t, log, float, double, sged, usged, struktúra_v_uo_spec, felsorolás_spec, típus_év Tárolás osztály spec. auto, regster, statc, exter Típus mősítők cost, volatle vezérlés szerkezet páros a a páros? páratla Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -2-
Elágazás (f) f ( kfejezés ) utasítás else utasítás2 Példa: f (a < b ) x = a; else x = b; f (x > y) x = x - y; utasítás egy kjárat kfejezés utasítás2 Páros-páratla (2) #clude <stdo.h> ma() t A; scaf( %d, &a); f (a % 2 == ) prtf( páros\ ); else prtf( páratla\ ); Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -3- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -4- Első páratla szám Elöl vzsgáló cklus (whle) := pt:= calzálás elöl vzsgáló cklus < pt := + pt:= pt + 2 whle ( kfejezés ) utasítás Példa: whle ( <= ) prtf( %d\, ); = + ; egy kjárat kfejezés utasítás Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -5- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -6- Első páratla szám (2) Első Fboacc szám #clude <stdo.h> ma() t,, pt; scaf( %d, &); = ; pt = ; whle ( < ) prtf( %d\, pt); = + ; pt = pt + 2; := a:= b:= calzálás elöl vzsgáló cklus < a := + c:= a +b a:=b, b:=c Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -7- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -8-
vod ma() t a, b, c; t, ; Fboacc scaf("%d", &); a = b = ; = ;// még em írtuk k whle ( < ) prtf(" d", a); = + ; // + kírás törtét c = a + b; a = b; b = c; Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -9- Operátorok Artmetka operátorok (+ - * / %) Relácós operátorok ( < <= > >= ==!= ) Logka operátorok ( &&! ) Btekét operátorok (& ^ ~) Léptető operátorok ( >> << ) Értékadó operátorok ( = += *=...) Feltételes operátor (?:) Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -2- Artmetka operátorok Relácós operátorok + - * / % / - egészek között: egészrész (5 / 2 2) % - maradék képzés (5 % 2 ) < ksebb <= ksebb vagy egyelő > agyobb >= agyobb vagy egyelő == egyelő!= em egyelő Eredméyük v. hams v. gaz Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -2- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -22- Logka operátorok Ncs logka típus, de va logka operátor. Artmetka típus értékkészlete vagy Háttér koverzó = hams, a több gaz Logka művelet Logka operátorok (2) Logka vagy: Sorred!! kfejezés kfejezés2 Példák: a < 3 a > 5 c > 3 a > 5 ; f (a < 3 a > 5) c = 8 ; Logka és: kfejezés && kfejezés2 Logka tagadás: Sorred!!! kfejezés Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -23- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -24-
Btekét operátorok & btekét és 3 & 5 btekét vagy 3 5 7 ^ btekét kzáró vagy 3 ^ 5 6 ~ btekét egálás (egyes komplemes) ~3-4 & Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -25- ^ ~ Léptető operátorok << logka tolás balra pl: 5 << = 5 = 28 << = 28 = Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -26- Léptető operátorok(2) >> logka tolás jobbra (előjeletle) pl: 5 >> = 5 = 2 28 >> = 28 = 64 Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -27- Léptető operátorok(3) >> artmetka tolás jobbra (előjeles) (mplemetácó függő) pl: 5 >> = 5 = 2-28 >> = -28 = -64 Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -28- Értékadó operátorok Az értékadás s kfejezés többszörös értékadás. Pl: a = b = c = 2 Mde kétoperadusú operátor kombálható az értékadással. Rövdebb írásmód. Egyszerű optmalzálás lehetőség. pl: a += 3 a = a + 3 a *= c a = a * c x /= y x = x / y Balérték (lvalue) Olya érték (kfejezés), am értékadás bal oldalá szerepelhet. Az operátorok egy része balértéket géyel (pl. értékadó op.), de va olya operátor s, am balértéket állít elő. Legegyszerűbb balérték a változó eve. Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -29- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -3-
páratla Páros-páratla II. a a páratla? a > páros Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -3- hátul vzsgáló cklus Hátul vzsgáló cklus (do whle) do utasítás whle ( kfejezés ) ; Példa: do prtf( %d\, ); = + ; whle ( <= ); egy kjárat utasítás kfejezés Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -32- Páros-páratla II. (2) #clude <stdo.h> ma() Logka értékké kovertálódk t a; do scaf( %d, &a); f (a & ) prtf( Páratla\ ); else prtf( Páros\ ); whle ( a > ); Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -33- For cklus for ( kfejezés; kfejezés2; kfejezés3) utasítás Példák: for ( = ; <=; += ) prtf( %d\, ); for (;;) ; egy kjárat kfejezés2 utasítás Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -34- kfejezés kfejezés3 Páros-páratla III. Feladat: Olvassuk be fájl végég, vagy amíg szám következk az puto, maxmum egész számot és írjuk k, hogy páros v. páratla számot olvastuk! Vázlat: cv. előkészítés = whle <= AND tuduk_olvas kír; = + cv. övelés Páros-páratla III. (2) #clude <stdo.h> Sorred ma() fv.érték t, a; for (=; <= && scaf( %d,&a) == ; +=) f (a & ) prtf( Páratla\ ); else prtf( Páros\ ); Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -35- Programozás alapja I. (C yelv, gyakorlat) BME-IIT Sz.I. 25..3.. -36-