B I T M A N B I v: T M A N

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "B I T M A N B I v: T M A N"

Átírás

1 Műszaki informatika 3. Ea: CPA A C nyelvű Programozás Alapjai B I v: T M A N 1/155

2 2/155

3 Témakörök A C nyelv jellemzői A C nyelvű program szerkezete A C nyelv elemei Algoritmusok C nyelven Feladat ötletek Ellenőrző kérdések 3/155

4 A C nyelv története Dennis MacAlistair Ritchie és Brian Kernighan AT&T, Bell Laboratories, 1972 rendszerprogramozás, de magas szintű nyelven 1973: a UNIX átírása C-re 4/155

5 A C nyelv története 5/155

6 A C nyelv története 6/155

7 A C nyelv története Dennis MacAlistair Ritchie és Brian Kernighan AT&T, Bell Laboratories, 1972 rendszerprogramozás, de magas szintű nyelven 1973: a UNIX átírása C-re 1978: K&R C Kvázi szabvány Széleskörű használat után: 1983: szabvány előkészítése 1989: ANSI C (X ) A továbbiakban "C nyelv" alatt mindig "ANSI C" értendő 7/155

8 A C nyelv jellemzői Általános célú Viszonylag alacsony szintű Alapobjektumok: karakterek, számok, címek Nincsenek összetett objektumokat kezelő utasítások Általában kicsi és hatékony célprogram Törekvés a hordozhatóságra Számos implementáció Széleskörű használat Gazdag függvénykönyvtár választék Magas szintű programnyelvek C nyelv olvasható assembly Gépi nyelvek (assembly) 8/155

9 Témakörök A C nyelv jellemzői A C nyelvű program szerkezete A C nyelv elemei Algoritmusok C nyelven Feladat ötletek Ellenőrző kérdések 9/155

10 A C nyelvű program szerkezete Egy C program egy vagy több modulból áll. A modulok valamelyikének tartalmaznia kell egy main nevű függvényt. Ez lesz a program belépési pontja, vagyis ez kezd el végrehajtódni. Modul: 10/155 Minden modul külön file. A modulok önállóan lefordíthatók, úgynevezett tárgykóddá. A tárgykódú modulokat az összeszerkesztő (linker) állítja össze egy programmá. (A linker általában egyben van a fordítóval, és kapcsolókkal szabályozható, hogy csak tárgykódot készítsen, vagy végezze el az összeszerkesztést is, vagy csak összeszerkesztést készítsen.)

11 Ismétlés # include <stdio.h> void main ( ) { printf ( Helló Világ! \n ); } Szövegszerkesztő (editor) 11/155 Fordítóprogram Könyvtári modul 1CF7 B00C 37DA 4107 FAC4 660D 00F1 300BD 1FF0 35BB 337DD 239C 410F 396A C44D 006A 410F 396D 5CF3 B00A 3CDA 4107 FAC4 660D 00F1 300BD CCD4 BAF0 337DD 239C 33F5 0B6A Tárgykódú modul A tárgykódú modulokhoz hozzávesszük a könyvtári modulokat A linker összeszerkeszti Linker A végeredmény a futtatható (exe) program

12 A C nyelvű program szerkezete 2. Egy modulos program esetén is van dolga az összeszerkesztőnek, hiszen a modulunkban használt könyvtári függvények (a C nyelvhez adott előre megírt függvények, pl. printf()) egy vagy több tárgykódú modulban vannak elhelyezve. Egy modul tartalmazhat: 12/155 A fordítónak szóló utasításokat (pl. #include <stdio.h>) Deklarációkat, definíciókat (változó, típus, stb.) Függvényeket (pl. void main() { } ) Megjegyzéseket

13 A C nyelvű program szerkezete 3. A C program szokásos szerkezete: direktívák globális deklarációk és definíciók void main() { lokális deklarációk utasítások // Megjegyzés } A minimális (működő) C program: void main( ) 13/155 { }

14 Az első program # include <stdio.h> void main ( ) { printf ( Helló Világ! \n ); } Könyvtári modul hívás Sorvégjel Függvény Sortörés 14/155

15 A programkészítés menete # include <stdio.h> void main ( ) { printf ( Helló Világ! \n ); } Prg1.c Fordítóprogram 1FF0 35BB 337DD 239C 410F 396A C44D 006A stdio.h printf Prg1.obj Linker Szövegszerkesztő (editor) 15/ F 396D 5CF3 B00A 3CDA 4107 FAC4 660D stdio.h Prg1.exe

16 Standard könyvtári modulok Alapszabály: C programban csak deklarált azonosítók használhatók! A standard függvények deklarációját standard könyvtári modulok (header fájlok) tartalmazzák. Az #include un. direktíva a forrásszövegbe beszúrja a megadott fájlt: A standard input-output függvények és konstansok deklarációinak beillesztése: #include <stdio.h> Matematikai függvények deklarációi: #include <math.h> Saját függvények deklarációi #include "fuggvenyeim.h" 16/155

17 Témakörök A C nyelv jellemzői A C nyelvű program szerkezete A C nyelv elemei Algoritmusok C nyelven Feladat ötletek Ellenőrző kérdések 17/155

18 A C nyelv elemei Szintaktikai egységek Változók, elemi adattípusok Egyszerű ki- és beviteli utasítások Operátorok Elágazás utasítások Ciklus utasítások Függvények Tömbök Mutatók 18/155

19 Szintaktikai egységek Azonosítók Betűk, számjegyek és _ (aláhúzás) Nem kezdődhet számjeggyel Maximális hossza függ a C nyelv verziótól, de minimum 8 karakter Nem lehet a nyelv kulcsszava Kis-nagybetű érzékeny! Case sensitive! Kulcsszavak Fenntartott szavak, kisbetűsek. 19/155

20 Szintaktikai egységek 2. Operátorok Egy- két- és három operandusú. Széles választék (Később részletezem!) Egyéb elválasztók Utasításvég: ; (pontosvessző) Blokkhatárok: { } Megjegyzés /* Karaktersorozat */ Nem skatulyázhatók egymásba! // Karaktersorozat 20/155

21 A C nyelv elemei Szintaktikai egységek Változók, elemi adattípusok Egyszerű ki- és beviteli utasítások Operátorok Elágazás utasítások Ciklus utasítások Függvények Tömbök Mutatók 21/155

22 Változó A programokban az adatok változók formájában jelennek meg változókban tároljuk az adatokat. A változó névvel ellátott tároló hely a számítógép memóriájában. A változó értéke ezen tároló hely pillanatnyi értéke. A változó jellemzői: Neve azonosító kell legyen Típusa memóriaméret Értéke memóriatartalom Címe tárbeli kezdőcím 22/155

23 Specialitások A karakter típus teljesen egyenértékű az egésszel, csak megjelenítésükben különböznek. (Lehet például két karaktert osztani egymással.) Nincs külön logikai típus. Az egészeket használja logikai értékként. A 0 értéket hamisnak tekinti, az ettől eltérő egész értéket igaznak. A relációk eredménye pedig 0 ha hamis, és 1 ha igaz. Nincs szöveges típus. A szövegek tárolására karakter tömböket használ. 23/155

24 Egész (integrális) típusok Típusnév char short(int) int long(int) Hossz 1 bájt 1 bájt (legalább) 2 bájt (legalább) 4 bájt Egész konstansok: Decimális: 123, -35 Oktális: 045 (tehát nullával kezdődik) Hexadecimális: 0x4A (tehát 0x-el kezdődik) 24/155

25 Egész (integrális) típusok 2. Megjegyzések: A nyelv csak azt írja elő, hogy short <= int és int <= long Mindegyik elé alkalmazható a signed (előjeles) - a char kivételével ez az alapértelmezés unsigned (előjel nélküli) Pl. short a; Értelmezési tartomány: unsigned short a; Ért. tart: A char előjelessége gépfüggő! 25/155

26 Lebegőpontos típusok Típusnév Pontosság Hossz float kis pontosságú 4 bájt double dupla pontosságú 8 bájt long double nagy pontosságú 16 bájt Valós konstansok: Tizedespontos alak: 12.34, Tudományos alak: 26/ e5, 0.56E-2 (azaz , ) Alapértelmezés szerint duplapontosságú egy valós konstans, de elő lehet írni kispontosságot is a szám után tett f vagy F betűvel (45.6F).

27 Void A void egy speciális típus, ami két helyen használható: Mutatók típusaként megadva jelzi, hogy még nem ismert a típus. Függvények visszatérési értékének típusaként megadva jelzi, hogy nincs visszatérési érték. 27/155

28 Deklaráció (bevezetés, kihirdetés) A C nyelvben minden változót kötelező deklarálni! Szintaktikája: Változó: típus azonosító[,azonosító]; Pl. int a, b, c; unsigned int ertek=0; Tömb: típus azonosító[elemek száma]; Pl. int szamok[10]; Az indexelés 0-tól indul! 28/155 Deklarálás! Inicializálás!

29 Példa 1. Három szám összege # include <stdio.h> void main ( ) { } int a, b, c; int sum; a=1; b=2; c=3; sum =a+b+c; printf ("Összeg: a+b+c = %d\n", sum); Összeg: a+b+c = 6 stdio.h - könyvtári modul Benne: printf() függvény definíciója. Decimális egész formátum 29/155

30 Kiírás C nyelven (1.) Logikája: printf("helló VILÁG!"); "Szöveg konstans" Formátum printf("összeg: a+b+c = %d", sum); "Szöveg konstans" változó 30/155 elválasztó

31 Kiírás C nyelven (2.) Formátum printf("összeg: a+b+c = %d\n", sum); "Szöveg konstans" változó elválasztó Sortörés 31/155

32 Példa 2. Kör területe # include <stdio.h> void main ( ) { } float r, terulet; const float PI= ; r=2.2; terulet = r*r*pi; Tizedes tört formátum: 6 helyen, 2 tizedessel printf ("Az r = %6.2f sugarú kör területe:%10.2f\n", r, terulet); Az r = 2.20 sugarú kör területe: /155

33 Példa 3. int char # include <stdio.h> void main ( ) { } char kar= A ; char egesz=55; printf ( Karakterek: %c és %c\n,kar, egesz); printf ( Egészek: %d és %d\n,kar, egesz); Karakterek: A és 7 Egészek: 65 és 55 Karakter formátum 33/155

34 Példa 4. - Túlcsordulás Tárolás 1 bájton, # include <stdio.h> ért. tart: void main ( ) { unsigned char a, b, s; a=100; b=100; s = a+b; printf("a=%4d, b=%4d, s=%4d\n", a, b, s); a=200; b=200; s = a+b; printf("a=%4d, b=%4d, s=%4d\n", a, b, s); } a= 100, b= 100, c= 200 a= 200, b= 200, c= /155

35 Leolvasási sorrend Kitérő =? / = = 144

36 Elnevezett konstans deklarálása A C nyelvben nincs külön lehetőség elnevezett konstansok létrehozására. Lehet viszont használni egy olyan fordítónak szóló utasítást, amely hasonló szerepkört tölt be. #define VALAMI 45 Ennek hatására a fordító mindenhova, ahol a forrásprogramban ezután meglátja a VALAMI szót, behelyettesíti a 45-öt. 36/155

37 Típus deklaráció Új típusok létrehozására szolgál, szintaktikája: typedef típusleírás típusnév; Pl.: typedef int egesz; Létrejött egy egesz nevű új típus, ami teljesen azonos az int típussal. 37/155

38 A C nyelv elemei Szintaktikai egységek Változók, elemi adattípusok Egyszerű ki- és beviteli utasítások Operátorok Elágazás utasítások Ciklus utasítások Függvények Tömbök Mutatók 38/155

39 Egyszerű output printf( ) %[-] [n[.m]] [l] x formátum long v. double Balra igazít Helyek, tizedesek 39/155

40 Egyszerű output A formátum fajtái: c karakter d előjeles egész u előjelnélküli egész o oktális x hexadecimális f tizedes tört e exponenciális s sztring Csak előjel nélküli egészek esetén (unsigned) 40/155

41 Egyszerű output ESC karakterek: \n új sor \f lapdobás \r kocsi-vissza \t vízszintes tabulálás \v függőleges tabulálás \b backspace \ \ \\ \ \a alarm (cseng) \0 a 0 kódú karakter, ami nincs 41/155

42 Egyszerű input scanf ( ) A standard inputról végez formázott bevitelt Ugyanazok a formátum elírások, mint a printf-nél A scanf függvénynek a változó címét kell átadnunk, ahová tennie kell a beolvasott értéket a konverzió után a %d és a %f formátummal történ beolvasás esetén! 42/155

43 Példa 5. Egész, valós, szöveg beolvasás # include <stdio.h> void main ( ) { } int i; float x; char name [50]; scanf ("%d %f %s", &i, &x, name); printf("i=%d, x=%8.2f, name=%s\n", i, x, name); BitMan i=14, x= 3.50, name: BitMan 43/155

44 Példa 6. Kör sugara # include <stdio.h> void main ( ) { float r, terulet; const float PI= ; printf("kérem a kör sugarát: "); scanf ("%f", &r); terulet = r*r*pi; printf ("Az r= %6.2f sugarú kör területe:%10.2f \n", r, terulet); } Kérem a kör sugarát: 3.6 Az r= 3.60 sugarú kör területe: /155

45 Haladó input-output c = getchar(); putchar(c); gets(str); puts(str); Beolvas egy karaktert (c); Kiír egy karaktert Beolvas egy sztringet (str); Előtte deklaráció: char str[20]; Kiír egy sztringet 45/155

46 A C nyelv elemei Szintaktikai egységek Változók, elemi adattípusok Egyszerű ki- és beviteli utasítások Operátorok Elágazás utasítások Ciklus utasítások Függvények Tömbök Mutatók 46/155

47 A C nyelv operátorai Aritmetikai operátorok: 47/155 + összeadás - kivonás * szorzás / osztás % modulo = maradék ++ inkrementálás -- dekrementálás Pl. Int a=9, b=2, c, d; c= a/b; d=a%b; Csak egész jellegű változók esetén! a/b= 4 a%b= 1

48 ++, -- operátorok a = a+1 a++ vagy ++a a = a -1 a-- vagy -- a A műveleti sorrend miatt van különbség a kétféle írásmód között: Pl.1: Pl.2: a = 10; a = 10; b = ++a; b = a++; b b= = 11 lesz b b= =10 lesz a a= =11 lesz a a= =11 lesz 48/155

49 Relációs operátorok < kisebb <= kisebb v. egyenlő > nagyobb >= nagyobb v. egyenlő!= nem egyenlő == egyenlő 49/155

50 Logikai operátorok &&! AND OR NOT Alt Gr + W Pl.: # include <stdio.h> void main (){ int a=2, b=10, c; if (a<5 && b>5) c=3; else c=8; printf ("Eredmeny: %d \n", c); } Eredmény= 3 50/155

51 Specialitások a = 2, b = 10, c=a+b; x - = 10; x = x 10; a = b = c*2; # include <stdio.h> void main (){ int a=2, b=10, c=(a<b?a:b); printf ("Eredmény= %d \n", c); } void main(){ 9 / 4 = 2 float a,b; a=9.99; b=4.55; printf("%d / %d = %d\n", (int) a, (int) b, (int) a / (int) b); } 51/155 Eredmény= 2

52 Specialitások 2. A C nyelv az egészeket használja logikai értékként. A 0 értéket hamisnak tekinti, az ettől eltérő egész értéket igaznak. Pl.: a=1&&3; a=1 a=0&&3; a=0 a=0 3; a=1 a=!5; a=0 A relációk eredménye 0 ha hamis, és 1 ha igaz. Pl.: x=3>1; x=1 x=3<1; x=0 52/155

53 A C nyelv elemei Szintaktikai egységek Változók, elemi adattípusok Egyszerű ki- és beviteli utasítások Operátorok Elágazás utasítások Ciklus utasítások Függvények Tömbök Mutatók 53/155

54 Az elágazás utasítások A döntési pontokban végrehajtott utasítások: A döntés kimenetelétől függően a folyamat vagy az egyik, vagy a másik irányban folytatódik. A döntési pont egy feltételt (logikai kifejezés) tartalmaz, melynek igaz vagy hamis eredménye alapján ágaztatjuk el a folyamatot. Feltételes művelet: if utasítás Kétágú elágazás: if else szerkezet Többágú elágazás: switch case szerkezet 54/155

55 Az if utasítás Egyágú elágazás, a program feltételes elágaztatására szolgál. if (kifejezés) utasítás; vagy: if (kifejezés) { utasítások; } Pl.: Ha a kisebb mint b, felcseréljük a tartalmukat: if (a < b) { t = a; a = b; b = t; } 55/155

56 Az if else szerkezet if (kifejezés) { igaz ág utasításai; } else { hamis ág utasításai; } Pl.: if (a < b) { x = a; } else { x = b; } Ugyanez feltételes kifejezéssel: x = (a < b? a : b); 56/155

57 If példa #include <stdio.h> void main() { int a1, a2, a3; printf("kérem az első számot: "); scanf("%d", &a1); printf("kérem a második számot: "); scanf("%d", &a2); printf("kérem a harmadik számot: "); scanf("%d", &a3); 57/155

58 If példa (folyt) if (a1 > a2 && a1 > a3) } 58/155 else { } printf("a legnagyobb: %d\n", a1); if (a2 > a3) printf("a legnagyobb: %d\n", a2); else printf("a legnagyobb: %d\n", a3); Kérem az első számot: 8 Kérem az első számot: 13 Kérem az első számot: 5 A legnagyobb: 13

59 A switch case szerkezet # include <stdio.h> void main (){ char k; k = getchar( ); switch(k) { } 59/155 case 'A': printf("alma"); break; case 'B': printf("banán"); break; case 'C': printf("citrom"); break; default : printf ("Érvénytelen parancs!"); } Beolvas 1 karaktert Nem kötelező! Kilép az utasításból C Citrom

60 A C nyelv elemei Szintaktikai egységek Változók, elemi adattípusok Egyszerű ki- és beviteli utasítások Operátorok Elágazás utasítások Ciklus utasítások Függvények Tömbök Mutatók 60/155

61 Ciklusszervezés Egy vagy több művelet ismétlését nevezzük ciklusnak. Az ismétlődés addig tart, amíg ezt valamilyen feltétel teljesülése meg nem állítja. Három ciklusképző utasítás van a C-ben: while elöltesztelő for taxatív (számláló) do while hátultesztelő 61/155

62 while ciklus: while (kifejezés) { ciklusmag } Amíg (a kifejezés igaz) { végrehajtja a ciklusmag utasításait } 62/155

63 while példa 1. #include <stdio.h> void main ( ){ int a, sum; a=1, sum=0; while (a<=10) { sum=sum+a; a++; } printf ("Az összeg 1-től 10-ig: %d", sum); } Az összeg 1-től 10-ig: 55 63/155

64 while példa 2. #include <stdio.h> void main ( ) { int a, sum; a=10, sum=0; while (a) { sum=sum+a; a --; } Amíg A értéke nem nulla printf ("Az összeg 1-től 10-ig: %d", sum); } Az összeg 1-től 10-ig: 55 64/155

65 for ciklus: for (1.kifejezés; 2.kifejezés; 3.kifejezés) { ciklus törzs } int i, s; for (i=1, s=0; i<=10; i++) { s=s+i; } for (i=1, s=0; i<=10; s=s+i,i++){ } for (i=1, s=0; i<=10; s=s+i,i++); 65/155

66 for példa 1. #include <stdio.h> void main ( ){ int i, s; s = 0; for (i=1; i<=10; i++) { s=s+i; } printf ("Az összeg 1-től 10-ig: %d", s); } Az összeg 1-től 10-ig: 55 66/155

67 for példa 2. #include <stdio.h> void main ( ){ int i, s; for (i=1, s=0; i<=10; s=s+i,i++); printf ("Az összeg 1-töl 10-ig: %d", s); } Az összeg 1-től 10-ig: 55 67/155

68 for példa 3. #include <stdio.h> 68/155 void main() { int szam, j; long szorzat; printf( A program egy megadott szám faktoriálisát számolja ki.\n ); } printf( Kérek egy számot: ); scanf( %d, &szam); szorzat = 1; for (j=1; j<=szam; j++) szorzat *= j; printf( %d!=%ld\n, szam, szorzat);

69 do - while ciklus Mivel hátul tesztelő ciklus, egyszer mindenképpen lefut! do { ciklus törzs } while (kifejezés); 69/155

70 do while példa #include <stdio.h> void main ( ){ int tipp, szam, kesz; szam=57; kesz=1; do { printf("kérem a tippet: "); scanf ("%d", &tipp); } if (tipp < szam) printf ("A tipp kisebb a számtól!\n"); if (tipp == szam) {kesz=0; printf ("Eltaláltad!");} if (tipp > szam) printf ("A tipp nagyobb a számtól!\n"); } while (kesz); 70/155 Kérem a tippet: 49 A tipp kisebb a számtól! Kérem a tippet: 63 A tipp nagyobb a számtól! Kérem a tippet: 57 Eltaláltad!

71 do while példa v2. #include <stdio.h> #include <stdlib.h> #include <time.h> int main ( ){ Véletlen szám: között int tipp, szam, kesz=1; srand(time(null)); szam=rand(); szam=rand()/327; do { printf("kérem a tippet: "); scanf ("%d", &tipp); if (tipp < szam) printf ("A tipp kisebb a számtól!\n"); if (tipp == szam) {kesz=0; printf ("Eltaláltad!");} if (tipp > szam) printf ("A tipp nagyobb a számtól!\n"); } while (kesz); return 0; } 71/155

72 A C nyelv elemei Szintaktikai egységek Változók, elemi adattípusok Egyszerű ki- és beviteli utasítások Operátorok Elágazás utasítások Ciklus utasítások Függvények Tömbök Mutatók 72/155

73 Függvények Jellegzetességek a C nyelvben: A függvények és eljárások szintaktikája nem különbözik, azaz csak függvények léteznek, a void visszatérési érték típussal jelezzük, ha nem akarunk visszaadni értéket. Nem lehet definiálni függvényt egy másik függvény belsejében. Bármelyik függvény meghívhatja bármelyik függvényt, még saját magát is (rekurzív hívás), vagy akár a main függvényt is. A program belépési pontja a main függvény. Visszatérési érték és paraméter nem lehet tömb, struktúra, union, lehet viszont ezekre mutató mutató. 73/155

74 Függvények 2. Szintaktika: típus fgvnev(paraméterek) { utasítások; return visszatérő_érték; } Pl.: double dszhterulet(double x, double y) { return x*y/2; } 74/155

75 Függvények 3. Paraméterátadás: Csak értékszerinti paraméterátadás létezik, tehát paraméterek csak akkor tudnak eredményt visszaadni, ha mutatót használunk (referencia típus nincs). Szintaktikája: 75/155 típus név(típus param1, típus param2, ) Nem lehetséges az azonos típusú paraméterek összevonása, mint más nyelvekben: típus név(típus param1, param2) //hibás!! A paraméter nélküli függvények esetén is ki kell tenni a zárójeleket: típus név()

76 Függvények 4. A függvény meghívása: A void függvények csak önálló utasításként hívhatók meg. Az egyéb visszatérési értékű függvények meghívhatók önálló utasításként is, és kifejezés belsejében is. Szintaktikája: 76/155 fgvnev(kif1, kif2, ); Ahol kif1, kif2, stb. kifejezések az aktuális paraméterek. Mivel az aktuális paraméterek értékei adódnak át rendre a formális paramétereknek (param1=kif1, param2=kif2, ), ezért ezek típusa olyan kell legyen, hogy az értékátadás megtörténhessen (automatikus típuskonverziók!).

77 Függvények 5. (példa) # include <stdio.h> double dszhterulet(double x, double y) { return x*y/2; } void main (){ int a=3, b=5; double t; t= dszhterulet(a,b); } printf ("Terület = %6.2f\n", t); Terület = 7.50 Formális paraméterek Aktuális paraméterek 77/155

78 Függvények 6. (példa) Készítsen egy függvényt, amely kap egy egész számot és visszaadja a szám faktoriálisát. long fakt(int a) { long szorzat; int j; for (j=1; j<=a; j++) szorzat *= j; return szorzat; } 78/155

79 Függvények 7. (példa) Készítsen egy függvényt, amely három oldalhosszúságról megállapítja, alkothatnak-e háromszöget! int alkothate(double a, double b, double c) { if (a+b<=c a+c<=b b+c<=a) return 0; return 1; } 79/155

80 Függvények 8. (példa) Készítsen egy függvényt, amely kiír egy egész számot! Olyan függvény, amely nem ad vissza paramétert (eljárás), ezért visszatérő értéke: void. #include<stdio.h> void kiir(int a); int main() { kiir(10); } void kiir(int x) { printf( %d,x); } 80/155 //Deklarálás //A függvény hívása //Definiálás

81 Néhány hasznos függvény int abs(int x); long labs(long x); doube fabs(double x); double floor(double x); double ceil(double x); double pow(double x, double y); x y double sqrt(double x); x abszolút értéke Lefelé kerekít egészre Fölfelé kerekít egészre x négyzetgyöke Egy hasznos konstans: PI <math.h> M_PI 81/155

82 A C nyelv elemei Szintaktikai egységek Változók, elemi adattípusok Egyszerű ki- és beviteli utasítások Operátorok Elágazás utasítások Ciklus utasítások Függvények Tömbök Mutatók 82/155

83 Tömbök A tömb: Azonos tulajdonságú elemek halmaza. Statikus: meg kell adni az elemek számát. Tömbelemek típusa: Elemi (egyszerű) tíusok, Összetett, A felhasználó által deklarált. Tömb definiálása: int A [10]; 83/155 Típus Azonosító Elemszám A tömb indexe: 0-tól elemszám-1-ig megy A[0] A[9]

84 Tömbök 2. A tömb bármely elemére a tömb nevével, és az index megadásával hivatkozhatunk. Az index tetszőleges egész jellegű: (fixpontos) kifejezés! int tomb [10]; egydimenziós tömb: vektor. Kétdimenziós tömb: int tomb[10][20]; A kétdimenziós tömb a mátrix, az első méret a sorok (10), a második az oszlopok (20) száma. Több (n) dimenziós tömb általános definíciója: típus név [dim1] [dim2] [dimn]; 84/155

85 Tömbök 3. Mivel a változók definiálásakor helyfoglalás történik, a tömbindexek mindegyikének fordítási időben ismertnek kell lenni!!! Bármilyen tömb esetében az elemek folyamatosan helyezkednek el a memóriában. Kétdimenziós tömbök esetében az első sor elemei után következnek a második sor elemei, stb. int t [2] [3]; // Ennek a tömbnek 6 eleme van: 2*3 85/155 t [0] [0] t [0] [1] t [0] [2] t [1] [0] t [1] [1] t[1] [2] A fordító csak akkor ellenőrzi, hogy átléptük-e a maximális indexet, ha konstansként adtuk meg, futtatás közben nincs ellenőrzés!

86 Tömbök 4. Deklarálás: int tomb [10 ] = { 1,2,3,4,5,6,7,8,9,10 }; vagy: int tomb [ ] = { 1,2,3,4,5,6,7,8,9,10 }; int tomb [2] [5] = { 1,2,3,4,5,6,7,8,9,10 }; Itt a mátrix első sorában az elemek: A második sorában pedig: int tomb[ ] [4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} }; int tomb[ ] [4] = {1,2,3,4,5,6,7,8,9,10,11,12 }; 86/155

87 Tömb példa 1. #include <stdio.h> #define meret 5 main() { double tomb[meret]; double atlag = 0; int i; for (i=0; i<meret; i++) { printf("\n tomb[%d] = ", i); scanf("%lf", &tomb[i]); atlag += tomb[i]; } 87/155

88 Tömb példa 1. (folyt.) } atlag = atlag/meret; printf("\n Az átlag: %lf\n\n", atlag); for (i=0; i<meret; i++) printf("%d. elem \t %lf \t eltérés: %lf\n", i, tomb[i], atlag-tomb[i]); 88/155

89 Tömb példa 1. Futtatás tomb[0] = 12 tomb[1] = 25 tomb[2] = 65 tomb[3] = 43 tomb[4] = 32 Az átlag: elem eltérés: elem eltérés: elem eltérés: elem eltérés: elem eltérés: /155

90 Tömb példa 2. #include <stdio.h> N, és N elemű A[ ] tömb main() { beolvasása, elemek int A[20]; kiíratása int i, n; printf("\nelemek száma? (max 20!) = "); scanf("%d", &n); for (i=0; i<n; i++){ printf("\n Elem[%d] = ", i); scanf("%d", &A[i]); } for (i=0; i<n; i++) printf("%d. elem \t %d \t \n", i, A[i]); } 90/155

91 Karaktertömbök, sztringek Mivel szöveges adattípus nincs, ezért a szövegeket karakter tömbökben tárolhatjuk. Azt, hogy a tömb meddig van feltöltve azt egy végére berakott nulla kódú karakter jelzi ( \0 ). Azok a függvények, amelyek karaktertömbökön végeznek műveleteket, a záró karakterből tudják meddig tart a szöveg. char str0[4] = { 'a','b','c','d' }; 91/155 Ez nem sztring, csak egy karakteres tömb, mert nincs záró 0! printf( A szöveg: %s\n, str0); Ha a záró karaktert nem adjuk meg a printf függvény egészen addig írja ki a memória tartalmát, amíg egy záró karaktert nem talál.

92 Karaktertömbök, sztringek 2. Ha nem aposztrófokat, hanem idézőjeleket használunk, akkor a fordító megpróbál sztringet létrehozni, azaz a záró 0 értéket elhelyezni az utolsó karakter után: char str1[4] = "abcd"; nem tud, ezért ez nem sztring! char str2[5] = "abcd"; elfér a záró 0, ezért ez sztring! char str3[ ] = "abcd"; elfér a záró 0, ezért ez sztring! char * str4[ ] = "abcd"; Így is megadható a sztring! 92/155

93 Sztring példa #include <stdio.h> typedef char str[21]; main(){ } int i; 93/155 str A[10]; strcpy(a[0], "BitMan"); strcpy(a[1], "SuperMan"); strcpy(a[2], "BatMan"); for (i=0; i<3; i++) puts(a[i]); BitMan SuperMan BatMan str max. 20 karakter hosszú sztring típus A 10 elemű str típusú sztring tömb strcpy értékadás sztringnek puts sztring kiírása

94 Sztring példa 2. #include <stdio.h> typedef char nev[20]; main(){ int i=0, kesz=1, n; nev benev, A[10]; gets sztring beolvasása strlen sztring hossza do { printf("kérem a nevet: "); gets(benev); if (strlen(benev)) { strcpy(a[i], benev); i++; } else kesz=0; } while (kesz); n=i; for (i=0; i<n; i++) puts(a[i]); } Feladat: Nevek beolvasása üres Enter lenyomásáig. 94/155

95 Sztringkezelő függvények #include <stdio.h> main(){ int d; char str1[ ]="retek", str2[ ]="alma"; d= strcmp(str1, str2); printf ("Eredmény = %d \n", d); } strcmp ABC sorrend str1 < str2 d= -1 str1 = str2 d= 0 str1 > str2 d= 1 Eredmény = 1 95/155

96 Sztringkezelő függvények 2. #include <stdio.h> main(){ char str1[ ]="alma", str2[ ]="mag"; strcat(str1, str2); printf ("Eredmény = %s \n", str1); } strcat str2 hozzáfűzése str1-hez Eredmény = almamag 96/155

97 Sztringkezelő függvények 3. #include <stdio.h> main(){ int d=0; char *k, *m; char str1[ ]="almahej", str2[ ]="he"; k=&str1[0]; m= strstr(str1, str2); if (m==null) printf ("Eredmeny = NULL"); else { } } 97/155 d=m-k; printf ("Eredmeny = %d \n", d); Mutatók: következő fejezet! strstr str2 keresése str1-ben. m: a megtalált pozíció mutatója, vagy NULL Eredmény = 4

98 Sztringkezelés #include <stdio.h> void megfordit(char * s){ char * p=s; while(*p++); for(p-=2;p>s;p--,s++){char c=*p;*p=*s;*s=c;} } main(){ char s[ ]="almamag"; megfordit(s); puts(s); } 98/155 Feladat: Sztring tartalmának megfordítása. Mutatók: következő fejezet! gamamla

99 A C nyelv elemei Szintaktikai egységek Változók, elemi adattípusok Egyszerű ki- és beviteli utasítások Operátorok Elágazás utasítások Ciklus utasítások Függvények Tömbök Mutatók 99/155

100 Mutatók A mutató olyan változó, amely értéke egy memóriacím. Léteznek operátorok, amelyekkel a mutató által mutatott memóriaterületen levő adatot lehet elérni. A mutatónak ugyanolyan fontos adata a típusa, mint egy közönséges változónak. A mutató típusa a mutatott terület típusát jelenti. Mutató deklarációja: típus *változónév; Pl.: int *m; 100/155

101 Mutatók 2. Értékadás mutatónak: Egy meglévő területünk címét adjuk értékül a mutatónak: int a; //definiálunk egy változót (lefoglalódik neki egy memóriaterület, de értéke még nincs!) int *m; //definiálunk egy mutatót (lefoglalódik neki egy memóriaterület, értéke még nincs, azaz nem mutat sehova!) m=&a; //értéket adunk a mutatónak, értéke az a címe lesz ( & címképző operátor) 101/155

102 Mutatók 3. Hivatkozás a mutatott területre: A mutatott területre a mutató segítségével is tudunk hivatkozni. Erre szolgál az indirekciós operátor. Pl.: int a = 10; int *m; m=&a; printf( Az a változó értéke: %d, *m); *m=*m+1; printf( Az a változó értéke: %d, a); 102/155 Az a változó értéke: 10 Az a változó értéke: 11

103 Mutatók 4. Hivatkozás a mutatott területre: Nagyon veszélyes hibát eredményezhet, ha olyan mutató esetén használjuk az indirekciós operátort, amely még nem kapott értéket, azaz nem mutat sehová. A lenti két utasítással egy véletlenszerű memóriaterület tartalmát írtuk át. int *m; *m=34; 103/155

104 Mutatók 5. Mutató-matek: A mutatókhoz hozzá lehet adni egy egész számot, vagy ki lehet vonni egy egész számot belőle. Pl.: int a[10]; int *b; int c; b=&a[0]; c=*b; c=*(b+4); b=b+2; c=*b; b most az a[0]-ra mutat c változó a[0] értékét veszi fel c változó a[4] értékét veszi fel b most az a[2]-re mutat c változó a[2] értékét veszi fel 104/155

105 Témakörök A C nyelv jellemzői A C nyelvű program szerkezete A C nyelv elemei Algoritmusok C nyelven Feladat ötletek Ellenőrző kérdések 105/155

106 Algoritmusok C nyelven Összegzés Megszámlálás Kiválasztás Kiválasztásos rendezés 106/155

107 Összegzés Be kell olvasni N-darab számot, és meg kell határozni a beolvasott számsorozat összegét. Megoldás: Egy változó értékét beállítjuk 0-ra (kinullázzuk) Ciklus segítségével végigmegyünk a sorozat elemein, és a kinullázott változóhoz rendre hozzáadjuk a sorozat aktuális elemét. Az eredmény az eredetileg kinullázott változó aktuális értéke. 107/155

108 Összegzés #include <stdio.h> main() { int A[20]; int i, n; printf("\nelemek száma? (max 20!) = "); scanf("%d", &n); for (i=0; i<n; i++){ printf("\n Elem[%d] = ", i); scanf("%d", &A[i]); } int s=0; for (i=0; i<n; i++) s=s+a[i]; printf("\n Az elemek összege = %d", s); } 108/155

109 Algoritmusok C nyelven Összegzés Megszámlálás Kiválasztás Kiválasztásos rendezés 109/155

110 Megszámlálás Feladat: Adott egy tömb, határozzuk meg, hogy egy adott feltételnek hány elem felel meg. Megoldás: Kinullázok egy változót. Ciklus segítségével végigmegyek a tömb elemein. Megvizsgálom őket, és ha a tömbelem a feltételnek megfelel, a kinullázott változóhoz hozzáadok egyet. Az eredmény az eredetileg kinullázott változó aktuális értéke. Konkrét feladat: Határozzuk meg, hogy az N-elemű A tömb elemei közül hánynak az értéke kisebb mint 25. Az eredményt írassuk ki. 110/155

111 Megszámlálás #include <stdio.h> main() { int A[20]; int i, n; printf("\nelemek száma? (max 20!) = "); scanf("%d", &n); for (i=0; i<n; i++){ printf("\n Elem[%d] = ", i); scanf("%d", &A[i]); } int db=0; for (i=0; i<n; i++) if (A[i] < 25) db=db+1; printf("\n A megfelelő (< 25) elemek száma = %d", db); } 111/155

112 Algoritmusok C nyelven Összegzés Megszámlálás Kiválasztás Kiválasztásos rendezés 112/155

113 Kiválasztás (min, max keresés) Feladat: Adott egy tömb, határozzuk meg a legkisebb (legnagyobb) elemét. 113/155 Megoldás: Egy változóba (MIN) berakom a tömb első elemének az értékét. Ezután a 2. elemtől kezdve egy ciklussal végignézem a tömb elemeit, és ha a vizsgált elem kisebb a MINértékénél, akkor berakom az értékét a MIN-változóba. Így a MIN-értéke az addig megvizsgált elemek közül mindig a legkisebbet tartalmazza. Eredmény: a MIN változó értéke. Konkrét feladat: Adott egy N-elemű A-tömb. Határozzuk meg a legkisebb elemét.

114 Kiválasztás #include <stdio.h> main() { int A[20]; int i, n; printf("\nelemek száma? (max 20!) = "); scanf("%d", &n); for (i=0; i<n; i++){ printf("\n Elem[%d] = ", i); scanf("%d", &A[i]); } int min=a[0]; for (i=1; i<n; i++) if (A[i] < min) min=a[i]; printf("\n A megfelelő (legkisebb) elem = %d", min); } 114/155

115 Algoritmusok C nyelven Összegzés Megszámlálás Kiválasztás Kiválasztásos rendezés 115/155

116 Kiválasztásos rendezés Feladat: Adott egy tömb, rendezzük az elemeit növekvő (vagy csökkenő) sorrendbe. Módszer: Keressük ki a legkisebb elemet, és tegyük azt a tömb első helyére. Lépjünk egy hellyel odébb (második elem), és keressük ki a maradék elemek közül a legkisebbet. Tegyük ezt a második helyre. Lépjünk eggyel odébb, 116/155

117 Kiválasztásos rendezés #include <stdio.h> main() { int A[20]; int i, n, j, c; printf("\nelemek száma? (max 20!) = "); scanf("%d", &n); for (i=0; i<n; i++){ printf("\n Elem[%d] = ", i); scanf("%d", &A[i]); } for (i=0; i<n-1; i++) for (j=i+1; j<n; j++) if (A[j] < A[i]) {c = A[i]; A[i]= A[j]; A[j]= c;} for (i=0; i<n; i++) printf("%d. elem \t %d \t \n", i, A[i]); } 117/155

118 118/155 Gratulálok! Ön átvette a tananyagot!

119 Témakörök A C nyelv jellemzői A C nyelvű program szerkezete A C nyelv elemei Algoritmusok C nyelven Feladat ötletek Ellenőrző kérdések 119/155

120 Feladat ötletek Olvassa be N-értékét, és határozza meg 0 és N között a számok összegét. Olvassa be N és M-értékét, és határozza meg N és M között a számok összegét. Olvasson be N egész számot egy tömbbe, és határozza meg a páros számok darabszámát. Olvasson be N egész számot egy tömbbe, és határozza meg, hány szám esik 10 és 20 közé. Olvasson be N egész számot egy tömbbe, számítsa ki, és helyezze el a számok 20%-át egy másik tömbbe. 120/155

121 Feladat ötletek Olvasson be N egész számot egy tömbbe, és írja ki beolvasási sorrendben, és fordított sorrendben (visszafelé) is a számokat. Olvasson be N egész számot egy tömbbe, és olvasson be külön egy egész számot. Határozza meg, és írassa ki az egész számtól legkevésbé eltérő tömbelemet. Olvasson be két egyforma elemszámú egész tömbbe számokat, és írassa ki rendre az elempárok szorzatát. (1.elem*1.elem, ) 121/155

122 Feladat ötletek Olvasson be két egyforma elemszámú egész tömbbe számokat. Rendezze az első tömböt növekvő, a másodikat csökkenő sorrendbe, aztán írassa ki mindkét tömb elemeit. Pistike csigát gyűjt. Készítsen olyan programot, melyben beolvassa egy tömbbe az összegyűjtött csigák súlyát, meghatározza, és kiírja a csigák átlagsúlyát, valamint a legkönnyebb és legnehezebb csiga súlyát. 122/155

123 123/155

124 Feladatosz ötletosz Los denevérosz példosz: Beolvasszosz denevérosz névosz tömbosz. Beolvasszosz denevérosz repülosz dzsípíesszosz koordinátosz mászik tömbosz. Programosz alkotosz: 124/155 Számítosz távolszágosz függvényosz (denevérosz repülosz légvonalosz!) Kiírosz denevérosz névosz, repülosz távolszágosz. Kiírosz statisztikosz: Átlagosz távolszágosz, Minimálosz távolszágosz lusztaszágosz névosz, Maximálosz távolszágosz rekorderosz névosz, Endosz programosz. Lajosz Bélosz x,y 0,0 x,y

125 Műszaki informatika Ellenőrző kérdések 125/155

126 Ellenőrző kérdések Melyik szimbólumot használjuk a kommenthez? A: <!-- B: // C: # D:!! 2. Melyik kulcsszóval illesztjük be a könyvtári modulokat? A: #read <fájl> B: #get <fájl> C: #include <fájl> D: #pre <fájl> 126/155

127 Ellenőrző kérdések Melyik szimbólummal jelezzük a blokkhatárokat? A: [utasítások ] B: (utasítások ) C: <utasítások > D: {utasítások } 4. Melyik könyvtári modulban van a printf() függvény? A: stdlib.h B: stdio.h C: stdlib.c D: stdio.c 127/155

128 Ellenőrző kérdések Melyik a kakukktojás? A: > B: < C: >= D: = 6. Melyik szimbólummal kell mutatót deklarálni? A: & C: * D: $ 7. Hány bájton tárolódik a Pistike sztring? 8. Melyik ciklus utasítás nem használható a C nyelvben? A: For B: While C: Do while D: Repeat until 128/155

129 Ellenőrző kérdések Melyik nem C típus? A: float B: real C: int D: boolean 10. Melyik operátort használjuk összehasonlításra? A: := B: = C: equal D: == 11. Mennyi a!(1 &&!(0 1)) kifejezés értéke? 12. Hányszor fut le garantáltan a do while ciklus? A: 0 B: 1 C: Végtelenszer D: Feltételtől függ 129/155

130 Ellenőrző kérdések Mennyi lesz x-értéke a ciklusból kilépve? for(x=0; x<10; x++) { } x= 14. Melyik függvény hívás helyes? A: fgv; B: fgv x,y; C: fgv(); D: int fgv(); 15. Melyik a helyes tömb deklaráció? A: int tomb[10]; B: int tomb; C: int tomb{10}; D: int tomb(10); 16. Egy 15 elemű tömb esetén mennyi az utolsó elem indexe? 130/155

131 Ellenőrző kérdések Változó deklarációhoz melyik könyvtári modult 131/155 kell használni? A: stdio.h B: math.h C: stdlib.h D: Egyiket sem 18. Melyik kifejezés egyenértékű a!(a < b) kifejezéssel? A: a < b B: a = b C: a > b D: a>= b 19. Mennyi lesz az értéke az a változónak az alábbi programrészlet végrehajtása után? int a, b = 0; a=++b; a*=b++; a=

132 Ellenőrző kérdések A C nyelvű programban milyen szimbólumok jelzik az alábbiakat? A: Utasítások vége B: Blokkhatárok C: Megjegyzések D: Tömb elemszám E: Kiírási formátum F: ESC karakter 21. Melyik szimbólum képzi egy változó címét? A: & C: * D: $ 132/155

133 Ellenőrző kérdések Mennyi lesz az értéke az A és a B változónak A= B= 133/155 az alábbi programrészlet végrehajtása után? A=2; B=++A; 23. Melyik nem lehet változó azonosítója az alábbiak közül? A: Double D: szamok G: Pici%Maci B: #inc E: ertek H: 97_es_adatok C: ide-oda F: do I: Bony&Clide

134 Ellenőrző kérdések Az int *jack; utasítás A: deklarálja, hogy jack int típusú változó. B: deklarálja, hogy jack int típusú mutató. C: definiálja, hogy jack int típusú változó. D: definiálja, hogy jack int típusú mutató. 25. Melyik utasítást kell alkalmazni egy egész szám kiírására? A: printf ("Eredmény: %e\n", eredm); B: printf ("Eredmény: %d\n", eredm); C: printf ("Eredmény: %f\n", eredm); D: printf ("Eredmény: %c\n", eredm); 134/155

135 Ellenőrző kérdések Mennyi legyen az a változó értéke, hogy a ciklus 5-ször fusson le? a= ; while (a) { sum=sum+a; a --; } 27. Jelölje meg a szintaktikailag helyes utasításokat! A: for (i=1; i<=10; i++) { s=s+i; } B: for (i:=1, i<=10, i++) { s=s+i; } C: for (i=1, s=0; i<=10; s=s+i,i++); D: for (i=1; s=0; i<=10; s=s+i;i++){ } 135/155

136 Ellenőrző kérdések Tegye megfelelő sorrendbe a C program sorait! A: main() B: } C: direktívák D: { E: utasítások 29. A C nyelvben a short típus 256 féle egész értéket vehet fel. Milyen tartományban használható az a változó az alábbi deklarációk esetén: A: short a; B: unsigned short a; 136/155

137 Ellenőrző kérdések Kövesse az alábbi programrészlet működését, 137/155 írja le az egyes lépésekben a változók kiírt értékét! int x=0, y=1, z=x+y; while (z<=5) { if (x<5) {z=x+z; x++;} else {z=y+z; y++;} printf ("\nx= %d y= %d z=%d",x,y,z); } 1. kiírás: 2. kiírás: 3. kiírás: 4. kiírás: 5. kiírás: x y z

138 Ellenőrző kérdések Igaz vagy Hamis az állítás? A C nyelvben a CHAR típus lehet karakter és egész típus is. A számítógép közvetlenül a C nyelvű utasításokat hajtja végre. 138/155 A C nyelvben az and operátort &&-al jelöljük. A float, a double és a short lebegőpontos adattípusok a C nyelvben. A C programozási nyelv kis-nagybetű érzékeny. A %d dupla pontosságú lebegőpontos formátum. A while(12) printf("*"); utasítás végtelen ciklust eredményez. Az a= ++b--; utasítás nem hibás, de semmi értelme!

139 Ellenőrző kérdések Melyik függvény deklaráció helyes? A: int funct(); B: int funct(int x) {return x=x+1;} C: void funct(int) { printf( "Hello")}; D: void funct(x) { printf( "Hello"); }; 33. Mit ír ki az alábbi programrészlet? int x=1, y, z=(x=28, y=x+3); printf("%d", z); z= 34. Mennyi lesz b értéke? int a = 19, b = 13; 139/155 if (b = a) b = 9; b=

140 Ellenőrző kérdések Mit ír ki az alábbi programrészlet? int a = 0; if (a = 0) printf("0"); else printf("nem 0"); A: 0 B: nem Mit ír ki az alábbi programrészlet? printf("%d", 2<3); A: 2<3 B: 0 C: 1 D: Hibás utasítás! 37. Helyes-e az alábbi változódefiníció? int double=1; A: Igen B: Nem 38. Mennyi 14 % 3 értéke? 140/155

141 Ellenőrző kérdések Mit ír ki a következő program részlet? int x=0; switch(x) { case 1: printf("egy" ); case 0: printf("nulla" ); case 2: printf("kettő" ); } A: Egy B: Nulla C: Kettő D: NullaKettő 40. Mit ír ki az alábbi programrészlet? int a; printf("%d", a); A: 0 B: a C: Véletlen értéket 141/155

142 Ellenőrző kérdések Van különbség az a=b++; és az a=++b; 142/155 kifejezések között? A: Nincs B: Az a-ra nézve igen, a b-re nézve nem. C: A b-re nézve igen, az a-ra nézve nem. D: Igen, mindkét változóra nézve. 42. Mennyi lesz az értéke az i változónak az alábbi programrészlet végrehajtása után? i = 1; i *= 5; i += 3; i=

143 Ellenőrző kérdések Melyik kifejezés helyes a 143/155 ha i nem nulla feltétel megfogalmazására? A: if (i =!0) B: if (i == 0) C: if (i!= 0) D: if (i NOT= 0) 44. Helyes az if( a > 0 ) then b= 5; utasítás? A: Nem B: Igen 45. Mennyi lesz az értéke a b változónak az alábbi programrészlet végrehajtása után? a, b = 1; if (a = 1) b = 3; if (a = 2) b = 5; b=

144 Ellenőrző kérdések Mit ír ki az alábbi programrészlet? int a=2, b=6, c=2; if (a < b < c) printf("növekvő"); else printf("csökkenő"); A: Növekvő B: Csökkenő C: Hibaüzenetet, az (a < b < c) kifejezés hibás! 47. Mi az eredménye az alábbi programrészletnek? int a, b = 1; a=a b; a*=b++; A: a=6, b=2; B: a=8, b=3; C: a=10, b=3; D: Hibaüzenetet, az a=a b; utasítás hibás! 144/155

145 Ellenőrző kérdések Mi az eredménye az alábbi kódrészletnek? int a = 7, b = 5, c = 3; c += ++a - b++; printf("%d", c); c= 49. Mennyi lesz b értéke? int a = 19, b = 13; if (b == a) b = 9; b= 50. Mennyi lesz b értéke? int a = 19, b = 13; 145/155 if (b = a) b += a; b=

146 Ellenőrző kérdések Javítsa ki a hibákat az alábbi programban! #include <stdio.h> #DEFINE MAXELEM 10 int main(void) { int ertekek[maxelem]; int min; int i; 146/ Írja le, hogy mit csinál a kijavított program! for (i = 0; i < MAXELEM;) scanf("%d",&ertekek[i++]); min = ertekek(0); For (i=1; i<maxelem; i++) if ertekek[i] < min then min = ertekek[i]; printf('min értéke: %d\n', min); return 0 }

147 Ellenőrző kérdések Javítsa ki a hibákat az alábbi programban! 147/155 #include <stdio.h> main() { int max. int i; int ertekek[10]; for (i=0; i<10; i++) scanf('%d',ertekek+i); max = ertekek(0); for (i=l i<10; i++) if (ertekek[i] > max) max = ertekek[i]; } 54. Írja le, hogy mit csinál a kijavított program!

148 Ellenőrző kérdések Javítsa ki a hibákat az alábbi programban! } 148/155 #include <stdio.h> main () { int darab = 10; int ertekek(10); Double atlag; for (i = 0; i < 10;) ertekek[i++] = 3*i+1; atlag = 0; for (i=0; i<10; i++) atlag += ertekek[i]; atlag = atlag / darab; printf('átlag értéke: %d\n',atlag); 56. Írja le, hogy mit csinál a kijavított program!

149 Ellenőrző kérdések Mi lesz a t tömb tartalma az alábbi utasítások végrehajtása után? int j,k; int t[7]; for (j=0; j<7; j++) t[j] = j; k = 6; for (j=0; j < k; j++,k--) t[j] = t[k]; t= 58. Hányszor fut le az 57. kérdésben szereplő ciklusutasítás magja? A: háromszor B: négyszer C: ötször D: hatszor 149/155

150 Ellenőrző kérdések Írja át az alábbi ciklusutasítást a while utasítás használatával: 150/155 for ( j=0, k=6; j < k; ) t[j++] = t[k--]; 60. Mennyi lesz z értéke az alábbi programrészlet végrehajtása után? int z=1; int i; for (i = 1; i < 5; i++) z += i; z= 61. Helyes az állítás? A balérték csak értékadó operátor bal oldalán állhat. A: Igen B: Nem

151 Ellenőrző kérdések Az alábbi programrészletet a fordító hibátlannak találja, de hibásan fut. Mi a hiba? int i; double tomb[10]; for (i=0; i <= 10; ) tomb[i++] = 0; 63. Írja át az alábbi kifejezést if utasítás használatával: i = j < 0? j : j; 64. Írja át az alábbi ciklusutasítást a while utasítás használatával: for (j=0; j < 10; j++ ) t[j] = j; 151/155

152 Ellenőrző kérdések Mennyi lesz z értéke az alábbi programrészlet végrehajtása után? int z=1; int i; for (i = 1; i < 8; i += 2) z *= i; z= 66. Írja be a megadott kockákba az alábbi programrészlet hatására kiírt szöveget! int tomb[10]; int j = 3; tomb[j] = 7.3; printf ("\ntomb[%d]=%d\n",j,tomb[j]); 152/155

153 Ellenőrző kérdések Kövesse az alábbi programrészlet működését, 153/155 írja le az egyes lépésekben a változók kiírt értékét! int x=0, y=1, z=x+y; while (z<=5) { } if (z%2!=0) {z=y+z; y++;} else {z=x+z; x++;} printf ("\nx= %d y= %d z=%d",x,y,z); 1. kiírás: 2. kiírás: 3. kiírás: 4. kiírás: 5. kiírás: x y z

154 Felhasznált irodalom Knuth, D.E: A számítógép-programozás művészete 1-3, Műszaki Könyvkiadó, Budapest, Brian W. Kernighan Dennis M. Ritchie: A C programozási nyelv, Műszaki Könyvkiadó, 1988 Wirth, N: Algoritmusok + Adatstruktúrák = Programok, Műszaki Könyvkiadó, Budapest, 1982 Benkő László Benkő Tiborné Tóth Bertalan: Programozzunk C nyelven, Computerbooks, 2008 Elek Tibor: A C programozási nyelv, elektronikus jegyzet Ficsor Lajos: Bevezetés a C programozási nyelvbe, elektronikus jegyzet 154/155

155 VÉGE V É G E 155/155

B I T M A N B I v: T M A N

B I T M A N B I v: T M A N Műszaki informatika Tesztek+Megoldások B I v: T 2015.04.19 M A N 1/42 Tesztek + Megoldások Alapfogalmi kitérő kérdéssor IPA kérdéssor CPA kérdéssor 2/42 Ellenőrző kérdések 1. 1. Melyik Neumann elv következménye

Részletesebben

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Programozás alapjai 2.Gy: A C nyelv alapjai P R O Programozás alapjai 2.Gy: A C nyelv alapjai. P R O A L A G 1/32 B ITv: MAN 2018.10.02 Code::Blocks Indítsa el mindenki! 2/32 1 Code::Blocks Új projekt 2 3 4 5 3/32 Code::Blocks Forráskód Kód fordítása:

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

Adatbázis rendszerek Gy: Algoritmusok C-ben

Adatbázis rendszerek Gy: Algoritmusok C-ben Adatbázis rendszerek 1. 1. Gy: Algoritmusok C-ben 53/1 B ITv: MAN 2015.09.08 Alapalgoritmusok Összegzés Megszámlálás Kiválasztás Kiválasztásos rendezés Összefésülés Szétválogatás Gyorsrendezés 53/2 Összegzés

Részletesebben

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő

Részletesebben

Programozás alapjai 3.Gy: C elágazások, ciklusok P R O

Programozás alapjai 3.Gy: C elágazások, ciklusok P R O Programozás alapjai 3.Gy: C elágazások, ciklusok. P R O A L A G 1/39 B ITv: MAN 2018.10.08 Kövessük a kódot 1. 2. 3. 4. 5. 6. 7. 8. 9. void main() { int a, b, seged; printf("\nkerek ket egesz szamot: ");

Részletesebben

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás A tárgy órái Előadás hetente (St101) csüt. 8:15 Bécsi Tamás C elmélet Ajánlott irodalom Dennis Ritchie: A C programozási nyelv Gyakorlat hetente

Részletesebben

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3 Darvay Zsolt Típusok és nevek a forráskódban Állandók és változók Hatókörök és az előfeldolgozó Bevitel és kivitel Kifejezések Utasítások Mutatók Függvények Struktúrák és típusok Állománykezelés C programozás

Részletesebben

Programozás alapjai 8.Gy: Program struktúra

Programozás alapjai 8.Gy: Program struktúra Programozás alapjai 8.Gy: Program struktúra Elvarázsolt matekóra P R O A L A G 32/1 B ITv: MAN 2018.11.02 Programozás történelem Kezdetben egy program egyetlen kódsorozat volt (ún. monolitikus program)

Részletesebben

Programozás alapjai 9.Gy: Struktúra 2.

Programozás alapjai 9.Gy: Struktúra 2. Programozás alapjai 9.Gy: Struktúra 2. Ördögi részletek P R O A L A G 35/1 B ITv: MAN 2018.11.10 Euró árfolyam statisztika Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR).

Részletesebben

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,

Részletesebben

C programozás. 1 óra Bevezetés

C programozás. 1 óra Bevezetés C programozás 1 óra Bevezetés A C nyelv eredete, fő tulajdonságai 1. Bevezető C nyelv alapelemei többsége a BCPL (Basic Combined Programming Language {1963}) Martin Richards B nyelv Ken Thompson {1970}

Részletesebben

Vezérlési szerkezetek

Vezérlési szerkezetek Vezérlési szerkezetek Szelekciós ok: if, else, switch If Segítségével valamely ok végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if segítségével valamely tevékenység () végrehajtását

Részletesebben

10. gyakorlat Tömb, mint függvény argumentum

10. gyakorlat Tömb, mint függvény argumentum 10. gyakorlat Tömb, mint függvény argumentum 1. feladat: A 6. gyakorlat 1. feladatát oldja meg a strukturált programtervezési alapelv betartásával, azaz minden végrehajtandó funkciót külön függvényben

Részletesebben

Programozás II. 2. Dr. Iványi Péter

Programozás II. 2. Dr. Iványi Péter Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c

Részletesebben

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3) Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,

Részletesebben

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Programozás alapjai gyakorlat. 2. gyakorlat C alapok Programozás alapjai gyakorlat 2. gyakorlat C alapok 2016-2017 Bordé Sándor 2 Forráskód, fordító, futtatható állomány Először megírjuk a programunk kódját (forráskód) Egyszerű szövegszerkesztőben vagy fejlesztőkörnyezettel

Részletesebben

Programozás 1. Dr. Iványi Péter

Programozás 1. Dr. Iványi Péter Programozás 1. Dr. Iványi Péter 1 C nyelv B.W. Kernighan és D.M. Ritchie, 1978 The C Programming language 2 C nyelv Amerikai Szabványügy Hivatal (ANSI), 1983 X3J11 bizottság a C nyelv szabványosítására

Részletesebben

C programozási nyelv Pointerek, tömbök, pointer aritmetika

C programozási nyelv Pointerek, tömbök, pointer aritmetika C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek

Részletesebben

A C programozási nyelv

A C programozási nyelv A C programozási nyelv 1 Előszó Ez a jegyzet a Programozási alapfogalmak című jegyzettel együtt teljes értékű. A fogalmak definíciói és magyarázata nagyobbrészt abban a jegyzetben találhatók. 2 Bevezetés

Részletesebben

Programozás alapjai. 5. előadás

Programozás alapjai. 5. előadás 5. előadás Wagner György Általános Informatikai Tanszék Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk

Részletesebben

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 1. feladat: Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR). Írjon C programokat az alábbi kérdések

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével

Részletesebben

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok

Részletesebben

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből

Részletesebben

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb 1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb #include main() { int a, b; printf( "a=" ); scanf( "%d", &a ); printf( "b=" ); scanf( "%d", &b ); if( a< b ) { inttmp = a; a =

Részletesebben

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2019. augusztus 29. Feladat: írjuk ki az els 10 természetes szám négyzetét! #i n c l u d e i n t main ( v o i d ) { p r

Részletesebben

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

C programozás. 6 óra Függvények, függvényszerű makrók, globális és C programozás 6 óra Függvények, függvényszerű makrók, globális és lokális változók 1.Azonosítók A program bizonyos összetevőire névvel (azonosító) hivatkozunk Első karakter: _ vagy betű (csak ez lehet,

Részletesebben

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök Dr. Bécsi Tamás 4. Előadás A?: operátor Nézzük meg a következő kifejezést: if (a>b) z=a; else z=b; Ez felírható

Részletesebben

S z á m í t ó g é p e s a l a p i s m e r e t e k

S z á m í t ó g é p e s a l a p i s m e r e t e k S z á m í t ó g é p e s a l a p i s m e r e t e k 7. előadás Ami eddig volt Számítógépek architektúrája Alapvető alkotóelemek Hardver elemek Szoftver Gépi kódtól az operációs rendszerig Unix alapok Ami

Részletesebben

Mintavételes szabályozás mikrovezérlő segítségével

Mintavételes szabályozás mikrovezérlő segítségével Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés

Részletesebben

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása 1. feladat: Eldönteni egy számról, hogy pozitív, negatív vagy 0. Próbálja megoldani a feladatot switch szerkezettel is. Mikor használható

Részletesebben

INFORMATIKA javítókulcs 2016

INFORMATIKA javítókulcs 2016 INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.

Részletesebben

Programozás I gyakorlat. 10. Stringek, mutatók

Programozás I gyakorlat. 10. Stringek, mutatók Programozás I gyakorlat 10. Stringek, mutatók Karakter típus A char típusú változókat karakerként is kiírhatjuk: #include char c = 'A'; printf("%c\n", c); c = 80; printf("%c\n", c); printf("%c\n",

Részletesebben

Vezérlési szerkezetek. Szelekció Ciklusok

Vezérlési szerkezetek. Szelekció Ciklusok Vezérlési szerkezetek Szelekció Ciklusok Szelekciós vezérlés A program egy feltétel teljesülése alapján választja ki, hogy mely műveleteket hajtsa végre. Alakja: if ( feltétel ) { műveletek, ha feltétel

Részletesebben

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism) Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Python Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt

Részletesebben

3 A C programozási nyelv szintaktikai egységei

3 A C programozási nyelv szintaktikai egységei 3 A C programozási nyelv szintaktikai egységei 3.1 Azonosítók Betűk és számjegyek sorozata, betűvel vagy _ (aláhúzás) karakterrel kell kezdődnie. A nagy- és kisbetűk különbözőek. Az azonosítók tetszőleges

Részletesebben

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

Programozás I gyakorlat

Programozás I gyakorlat Programozás I. - 2. gyakorlat Változók, kiiratás, bekérés Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 24, 2007 1 tar@dcs.vein.hu

Részletesebben

Programozás I. gyakorlat

Programozás I. gyakorlat Programozás I. gyakorlat 2. gyakorlat Kifejezések, vezérlési szerkezetek, struktúrák Kifejezések Mit ír ki az alábbi program? #include int main() { int a = 20, b = 40; printf("%d\n", a > b);

Részletesebben

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv III. Pointerek és tömbök. A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,

Részletesebben

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3) Programozás alapjai C nyelv 5. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.17. -1- Tömbök Azonos típusú adatok tárolására. Index

Részletesebben

1. Egyszerű (primitív) típusok. 2. Referencia típusok

1. Egyszerű (primitív) típusok. 2. Referencia típusok II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget

Részletesebben

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

Programozás I. gyakorlat

Programozás I. gyakorlat Programozás I. gyakorlat 1. gyakorlat Alapok Eszközök Szövegszerkesztő: Szintaktikai kiemelés Egyszerre több fájl szerkesztése pl.: gedit, mcedit, joe, vi, Notepad++ stb. Fordító: Szöveges file-ban tárolt

Részletesebben

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv III. Pointerek és tömbök. A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,

Részletesebben

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Javascript Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása

Részletesebben

1. Alapok. Programozás II

1. Alapok. Programozás II 1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph

Részletesebben

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik

Részletesebben

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző

Részletesebben

Informatika terméktervezőknek

Informatika terméktervezőknek Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások

Részletesebben

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ;

/* Az iter függvény meghívása és a visszatérő érték átadása a gyok változóba */ gyok = iter( n, a, e ) ; 1. Írjunk programot, amely függvény alkalmazásával meghatározza n a értékét, (a az n-edik gyök alatt), az általunk megadott pontossággal, iterációval. Az iteráció képlete a következő: ahol : n-1 x uj =

Részletesebben

BASH script programozás II. Vezérlési szerkezetek

BASH script programozás II. Vezérlési szerkezetek 06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

Felvételi tematika INFORMATIKA

Felvételi tematika INFORMATIKA Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 3. gyakorlat Tömbök, programozási tételek Surányi Márton PPKE-ITK 2010.09.21. ZH! PlanG-ból papír alapú zárthelyit írunk el reláthatólag október 5-én! Tömbök Tömbök Eddig egy-egy

Részletesebben

8. gyakorlat Pointerek, dinamikus memóriakezelés

8. gyakorlat Pointerek, dinamikus memóriakezelés 8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.

Részletesebben

Karakter- és sztringkezelő függvények, matematikai függvények

Karakter- és sztringkezelő függvények, matematikai függvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.dudás László 30/0. Karakter- és sztringkezelő függvények, matematikai függvények Karakterkezelő könyvtári függvények Mintaprogram a karakterosztályozásra

Részletesebben

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi. 11. gyakorlat Sturktúrák használata I. Új típus új műveletekkel 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi. typedef struct datum { int ev; int ho; int nap;

Részletesebben

1. Jelölje meg az összes igaz állítást a következők közül!

1. Jelölje meg az összes igaz állítást a következők közül! 1. Jelölje meg az összes igaz állítást a következők közül! a) A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag. b) A do while ciklusban a ciklusmag után egy kilépési feltétel van.

Részletesebben

Algoritmizálás + kódolás C++ nyelven és Pascalban

Algoritmizálás + kódolás C++ nyelven és Pascalban Algoritmizálás + kódolás nyelven és ban Motiváció A Programozási alapismeretek tárgyban az algoritmizáláshoz struktogramot, a kódoláshoz nyelvet használunk, a Közismereti informatikában (a közoktatásban

Részletesebben

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r Programozás I. Széchenyi István Egyetem, Gy r 2014. november 16. Áttekintés kel kapcsolatos fogalmak deklaráció Több, kompatibilis változat is elképzelhet. Meg kell el znie a fv. hívását. Mindenképp rögzíti

Részletesebben

7/8. gyakorlat Karaktertömbök és sztringkezelés

7/8. gyakorlat Karaktertömbök és sztringkezelés 7/8. gyakorlat Karaktertömbök és sztringkezelés 1. feladat: Karaktertömb kezelése Egy beolvasott karaktert lineáris kereső eljárással keressen meg az angol ábécében (az ábécé betűit tárolja inicializált

Részletesebben

Programozás I gyakorlat

Programozás I gyakorlat Programozás I. - 2. gyakorlat Változók, típusok, bekérés Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer - És Számítástudományi Tanszék Utolsó frissítés: September 21, 2009 1 tar@dcs.vein.hu

Részletesebben

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke

Részletesebben

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása A programozás alapjai 1 A C nyelv típusai 4. előadás Híradástechnikai Tanszék C típusok -void - skalár: - aritmetikai: - egész: - eger - karakter - felsorolás - lebegőpontos - mutató - függvény - union

Részletesebben

Programozás C és C++ -ban

Programozás C és C++ -ban Programozás C és C++ -ban 2. További különbségek a C és C++ között 2.1 Igaz és hamis A C++ programozási nyelv a C-hez hasonlóan definiál néhány alap adattípust: char int float double Ugyanakkor egy új

Részletesebben

1. Alapok. #!/bin/bash

1. Alapok. #!/bin/bash 1. oldal 1.1. A programfájlok szerkezete 1. Alapok A bash programok tulajnképpen egyszerű szöveges fájlok, amelyeket bármely szövegszerkesztő programmal megírhatunk. Alapvetően ugyanazokat a at használhatjuk

Részletesebben

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék CPP0 / 1 Története A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

5. gyakorlat. Konstansok Tömbök Stringek

5. gyakorlat. Konstansok Tömbök Stringek 5. gyakorlat Konstansok Tömbök Stringek Konstansok A C nyelvben a konstansok preprocesszor makrókkal vannak megvalósítva. Konstansdefiniálás alakja: #define NÉV érték Az érték bármi lehet, később a fordítás

Részletesebben

5. Gyakorlat. struct diak {

5. Gyakorlat. struct diak { Rövid elméleti összefoglaló 5. Gyakorlat Felhasználó által definiált adattípusok: A typedef egy speciális tárolási osztály, mellyel érvényes típusokhoz szinonim nevet rendelhetünk. typedef létező_típus

Részletesebben

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó 7. gyakorlat Fájlkezelés IO haladó Függvények haladó Fájlkezelés A C-ben a fájlkezelés ún. fájlstream-eken keresztül történik, melyek puffereltek ha valamit a streamre küldünk, nem biztos, hogy rögtön

Részletesebben

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor. Függvény pointer Több feladat közül futási időben döntöm el, hogy melyiket hajtom végre. A függvényre mutató pointer a függvény kódjának a címére mutat, azon keresztül meghívhatom a függvényt. A pointernek

Részletesebben

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. szeptember 27. Háromszög szerkeszthet ségének ellen rzése ANSI C (C89) megvalósítás #i n c l u d e i n t main ( v

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 2. előadás Szintaktikai alapok Alapvető típusok, ismétlés C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char

Részletesebben

Occam 1. Készítette: Szabó Éva

Occam 1. Készítette: Szabó Éva Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti

Részletesebben

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozási nyelvek JAVA EA+GY 1. gyakolat Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program

Részletesebben

Programzás I. - 1. gyakorlat

Programzás I. - 1. gyakorlat Programzás I. - 1. gyakorlat Alapok Tar Péter 1 Pannon Egyetem Műszaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 15, 2007 1 tar@dcs.vein.hu Tar Péter (PE-MIK-DCS)

Részletesebben

Megoldott programozási feladatok standard C-ben

Megoldott programozási feladatok standard C-ben Megoldott programozási feladatok standard C-ben MÁRTON Gyöngyvér Sapientia Erdélyi Magyar Tudományegyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro Tartalomjegyzék

Részletesebben

BASH SCRIPT SHELL JEGYZETEK

BASH SCRIPT SHELL JEGYZETEK BASH SCRIPT SHELL JEGYZETEK 1 TARTALOM Paraméterek... 4 Változók... 4 Környezeti változók... 4 Szűrők... 4 grep... 4 sed... 5 cut... 5 head, tail... 5 Reguláris kifejezések... 6 *... 6 +... 6?... 6 {m,n}...

Részletesebben

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás 4.11. A C előfeldolgozó rendszer A fordítás első lépése a C esetében a különböző nyelvi kiterjesztések feldolgozása: másik állomány tartalmának

Részletesebben

Apple Swift kurzus 3. gyakorlat

Apple Swift kurzus 3. gyakorlat Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()

Részletesebben

C programozási nyelv

C programozási nyelv C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György

Részletesebben

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a C programozási nyelvbe Az Általános Informatikai Tanszék C nyelvi kódolási szabványa Oktatási segédletek a levelező műszaki informatikus hallgatók

Részletesebben

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >; Rövid elméleti összefoglaló 1. Gyakorlat A C++ nyelv hatékony, általános célú programozási nyelv, amely hagyományos fejlesztőeszközként és objektum-orientált programozási nyelvként egyaránt használható.

Részletesebben

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás Mérnöki programozás 7 Szerkesztette: dr. Vass Péter Tamás Függvények Függvény (function) egyedi azonosítónévvel ellátott számítási egység. A függvények formájában kidolgozott programkódok viszonylag egyszerűbb

Részletesebben

A C programozási nyelv II. Utasítások. A függvény.

A C programozási nyelv II. Utasítások. A függvény. A C programozási nyelv II. Utasítások. A függvény. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv II (Utasítások, fuggvények) CBEV2 / 1 Kifejezés utasítás Kifejezés utasítás, blokk

Részletesebben

AWK programozás, minták, vezérlési szerkezetek

AWK programozás, minták, vezérlési szerkezetek 10 AWK programozás, minták, vezérlési szerkezetek AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa

Részletesebben

Óbudai Egyetem. C programozási nyelv

Óbudai Egyetem. C programozási nyelv Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási nyelv II. Dr. Schuster György 2016. március 12. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C2016. programozási március 12. nyelv Utasításo

Részletesebben

Webprogramozás szakkör

Webprogramozás szakkör Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o Programozás

Részletesebben

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás 5.3. Mutatók,tömbök A mutató vagy pointer olyan változó, amely egy másik változó címét tartalmazza. A C nyelvű programokban gyakran használják a

Részletesebben

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok Számítógépes szimulációk 1. Bevezetés BME Fizika Intézet 2015. szeptember 9. Bevezetés A félév menete C-ismétlés, 1. rész Oktatók: Nagyfalusi Balázs: nagyfalusi@phy.bme.hu, F3 211. : tcsaba@eik.bme.hu,

Részletesebben

Struktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája:

Struktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája: Struktúrák (struct) A struktúra egy olyan összetett adatszerkezet, amely nemcsak azonos típusú elemeket rendelhet össze. A struktúra definíciójában leírjuk, hogy a struktúra hogyan épül fel. A struktúra

Részletesebben

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés A C programozási nyelv V. Struktúra Dinamikus memóriakezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 1 A struktúra deklarációja 1.

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök

Részletesebben

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK, Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás OE-NIK, 2013 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk

Részletesebben