1 / 68

Bevezetés a programozásba INF-501 A C programnyelv

Bevezetés a programozásba INF-501 A C programnyelv. Informatikai Intézet Kógelmann Gábor. Bevezetés a programozásba. A C programnyelv története B-nyelv, Ken Tompson, 1970. AT&T Bell Laboratories, UNIX operációs rendszer, DEC PDP-7 gép.

ramla
Download Presentation

Bevezetés a programozásba INF-501 A C programnyelv

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bevezetés a programozásba INF-501 A C programnyelv Informatikai Intézet Kógelmann Gábor

  2. Bevezetés a programozásba • A C programnyelv története • B-nyelv, Ken Tompson, 1970. • AT&T Bell Laboratories, UNIX operációs rendszer, • DEC PDP-7 gép. • B-nyelv  C-nyelv, Dennis Ritchie, 1971. (PDP-11) • Brian Kernighan – Dennis Ritchie • The C Programming Language (K&R, 1978.) • ANSI-C szabvány, 1989. • Jellemzői: • Általános célú programnyelv; • Hordozható (portabilis); • Gépközeli (processzor-közeli); • Elsősorban rendszerprogramok írására. Informatikai Intézet - INF-501 Kógelmann Gábor

  3. Bevezetés a programozásba • Az újabb fejlesztések már csak C++ nyelven. • Bjarne Stroustrup, AT&T • Ismertebb C (C++) fordítóprogram gyártók: • Microsoft (6.0) • Watcom (Code Warrior) • Borland • Turbo C 2.0 (TC) • Turbo C++ • Borland C++ 3.1 (BC, Ezt fogjuk használni!) • Borland C++ 5.82 (Ez a legutolsó, 2007.) • Integrated Development Environment (IDE) • General Public License (GNU-licensz) alatti ingyenes fordítóprogramok és fejlesztőkörnyezetek: • DEV-C++ • CodeBlocks, stb. Informatikai Intézet - INF-501 Kógelmann Gábor

  4. Bevezetés a programozásba • 2. A programnyelv alapelemei • 2.1 A C nyelv jelkészlete • A program írására használhatók (IR-23.o.). • A szöveg-konstansokban használhatók (ASCII). • 2.2 Az azonosítóképzés szabályai • Kötött hossz; • Az első karakter betű (angol ABC!), vagy _ jel; • A további pozíciókon lehetnek számok is; • A kis és NAGYBETŰ különböző !! • Elnevezés konvenciók; • Az ANSI C kulcsszavai (IR-25.o.); • Az egyes implementációk kötött kulcsszavai. Informatikai Intézet - INF-501 Kógelmann Gábor

  5. Bevezetés a programozásba • 2.3 A programok írásmódja, a C programok szerkezete • Egy vagy több forrásfájl .c (.cpp) kiterjesztéssel. • Általában fejléc (header) fájlok is .h kiterjesztéssel. • A legegyszerűbb C program: • int main(void) • { • } • Kevésbé „szabványosan” : ( int main(){} ) • A main() függvénynév kötelező. • Az utasításokat, függvényhívásokat ; zárja. • Egy „bonyolultabb” program: • #include <stdio.h> • int main(void) • { • printf("Az első programom."); • return 0; /* Vissza az op.rendszerhez */ • } Informatikai Intézet - INF-501 Kógelmann Gábor

  6. Bevezetés a programozásba • Megjegyzés a programban: • /* Megjegyzés */ • // Megjegyzés • A függvényen belüli sorrend: • deklarációk • definíciók • végrehajtható utasítások • Futtatható program előállítása (DOS, Windows): • fordítás: forrás program  object modul • .c  .obj • szerkesztés: object modul  futtatható program • .obj, .lib  .exe, .com, .dll • Támogatott a moduláris programozás • Borland – IDE (.prj fájl) Informatikai Intézet - INF-501 Kógelmann Gábor

  7. Bevezetés a programozásba • 3. Változók, konstansok, szimbólikus konstansok • 3.1 Adattípusok a C nyelvben • Egyszerű (skalár) típusok • egész jellegű (integer) • lebegőpontos (real) • sorszámozott (enumerated) • mutató (pointer) • Összetett típusok • tömb (array) • struktúra (structure) • unió (union) • Típuselőírást jelentő kulcsszavak • char, int, float, double, union, struct, enum, • void Informatikai Intézet - INF-501 Kógelmann Gábor

  8. Bevezetés a programozásba • Típusmódosító kulcsszavak • short - int • long - int, double • signed - char, int • unsigned - char, int • near - ( * pointer, csak DOS esetén) • far - ( * pointer, csak DOS esetén) • Típusminősítő kulcsszavak • volatile • const • Az adattárolást szabályozó kulcsszavak • auto, static, extern • A változók deklárálásakor, illetve definiálásakor a kulcsszavak kombinációja adható meg. Informatikai Intézet - INF-501 Kógelmann Gábor

  9. Bevezetés a programozásba Az adattípusok jellemzői 16 bites környezetben (IR-45.o.) Informatikai Intézet - INF-501 Kógelmann Gábor

  10. Bevezetés a programozásba • 3.2 Konstansok, szimbólikus konstansok • Egész típusú konstansok: • Decimális • 2007, -1, 0 • Oktális (8-as számrendszerben) • 0 – 7, az első jegy mindig 0. • 04317, -0126, 010, 0 • Hexadecimális (16-os számrendszerben) • 0 – 9, a – f, A – F, az első jegy mindig 0X, vagy 0x. • 0x6AB, 0x6aB, -0X1, 0x00 • Előjel nélküli (unsigned) • A konstans érték után U, vagy u. • 126u, 010U, 0x1AU Informatikai Intézet - INF-501 Kógelmann Gábor

  11. Bevezetés a programozásba • Hosszú típus (long) • A konstans érték után L, vagy l. • 126L, 010l, 0x1AL • Az U, L együtt is használható • 126lu, 010uL, 0x1ALU • Karakteres konstansok: • Egyszeres idézőjelben (apostrophe, aposztróf). • A második karakterkészletből. • 'a', 'x', 'É' • Escape (‘eszkép’) szekvenciák • Az első karakter \ (backslash), utána maximum további három. Az aktuális ASCII kódrendszer minden karaktere ezzel a módszerrel megadható. Informatikai Intézet - INF-501 Kógelmann Gábor

  12. Bevezetés a programozásba A legfontosabb escape szekvenciák (IR-28.o.) Informatikai Intézet - INF-501 Kógelmann Gábor

  13. Bevezetés a programozásba • Sztring (literál) konstansok: • Dupla aposztrófok között! • "Ez egy sztring konstans" • A sztring végét a memóriában egy '\0' jelzi. • Az üres sztring csak a záró nullát tartalmazza. • Lebegőpontos konstansok: • Egész rész és tizedes törtrész. • Tizedespont (kötelező). • Hatványkitevő jele (e, E). • Hatványkitevő értéke, előjellel. • Egyes részek elhagyhatók. • Tárolásuk dupla pontosságú formában. • .1, -2. , 187.27, 1872.7e-1 Informatikai Intézet - INF-501 Kógelmann Gábor

  14. Bevezetés a programozásba • Egyszeres pontosságú lebegőpontos konstansok • A konstans érték után F, vagy f. • 3.1415F • Nagy pontosságú lebegőpontos konstansok • A konstans érték után L, vagy l. • 3.1415L • Szimbólikus konstansok: • #define konstans-név helyettesítő szöveg • Szokás csupa nagybetűvel elnevezni. • #define ALSO 0 • #define FELSO 255 • #define PI 3.141592 • #define HA if Informatikai Intézet - INF-501 Kógelmann Gábor

  15. Bevezetés a programozásba • A const típusminősítő: • const int a = 30; // Kezdeti érték • a = 20; // Hibás utasítás • 3.3 Skalárok és tömbök definiálása, deklarálása • Az értéket tároló objektumokat névvel látjuk el, ezek a nyelv változói. • Minden változót definiálni, vagy deklarálni kell. • Csak a blokk elején, a végrehajtható utasítások előtt lehet elhelyezni. • A skalár definíció szintaktikája: • <tárolási osztály> <módosító(k)> <minősítő(k)> típus változónév < =kezdőérték > <,...>; • tárolási osztály: auto, static, extern, register • ... : a változónévtől ismételhető Informatikai Intézet - INF-501 Kógelmann Gábor

  16. Bevezetés a programozásba • Példák skalár definícióra: • char a; // Karakteres • static double B = 12.3; // Lebegőpontos • long int c, d = 3, e, f = 15; // Hosszú egész • Definiálás; helyfoglalás a memóriában. • Deklarálás; nincs helyfoglalás, másik modulban (forrásprogramban) már definiálva (extern). • A tömb definíció szintaktikája: • <tárolási osztály> <módosító(k)> <minősítő(k)> típus változónév[elemszám_1]<[elemszám_2][...]> • < = {érték1, érték2, ...}> <,...>; • tárolási osztály: auto, static, extern, register • ... : a változónévtől ismételhető Informatikai Intézet - INF-501 Kógelmann Gábor

  17. Bevezetés a programozásba • Az indexhatárok: • 0  elemszám_1-1 , 0  elemszám_2-1 • Példák tömb definícióra: • int vektor[5]; // Vektor • char matrix[3][10]; // Mátrix (sor, oszlop) • float tomb[2][5][6]; // Három dimenziós tömb • A fordítóprogram nem ellenőrzi az indexhatárt! • Egy objektum mérete lekérdezhető (sizeof operátor): • int a, b, c, d, vekt[3]; • a = sizeof vekt[0]; // a  2 (2 bájt) • b = sizeof vekt; // b  6 (3 x 2 bájt) • // c  3 (6 / 2) • c = sizeof vekt / sizeof vekt[2]; • d = sizeof(float); // d  4 Informatikai Intézet - INF-501 Kógelmann Gábor

  18. Bevezetés a programozásba • Példák kezdeti értékadásra (inicializálás): • Skalár • int a = 5; float b = 3.45; • Vektor • Karakteres, numerikus • char szo[6] = { 's', 'z', 'ó' }; • int x[3] = { 1, 2, 3 }; • float y[] = { 1.3, 120., 49.5}; • Az elemszám megadás ilyenkor elmaradhat. • Sztring • char szoveg[] = "Ez egy szöveg."; • Az elemszám 14+1=15a sztring konstanst záró nulla miatt. • A sztringek kezelésére könyvtári függvények vannak. Informatikai Intézet - INF-501 Kógelmann Gábor

  19. Bevezetés a programozásba • Néhány sztring kezelő függvény: • char forras[] ="alma + "; • char cel[20]; • int hossz; • strcpy(cel, forras); // Másolás • strcat(cel, "körte"); // Konkatenálás hossz = strlen(cel); // hossz  12 • Mátrix • Karakteres, numerikus • char x[2][3] = {'a','b','c','d','e','f'}; • int y[3][2] = { 6, 5, 4, 3, 2, 1 }; • Sztring • char sztring[][6] = { "körte", • "alma" }; • Csak a sorok száma hiányozhat! Informatikai Intézet - INF-501 Kógelmann Gábor

  20. Bevezetés a programozásba • 4. A C nyelv utasításai • Az ANSI C szabvány hat csoportot definiál: • Kifejezés és üres utasítás ( ; ) • Összetett utasítás ( { } ) • Szelekciós utasítások ( if, else, switch ) • Cimkézett utasítások ( case, default, címke ) • Iterációs utasítások ( for, while, do ) • Vezérlésátadó utasítások ( break, continue, goto, return ) • 4.1 Utasítások és blokkok • Egy kifejezés utasítás lesz, ha pontosvesszővel zárjuk. • x = y + 2; • i++; • v = z = fv(x, y) + 4; Informatikai Intézet - INF-501 Kógelmann Gábor

  21. Bevezetés a programozásba • Az üres utasítás • ; • do, for, while és if esetén szükség lehet rá. • Összetetett utasítás (blokk) • { } • Mindenhol használható, ahol egy utasítás is állhat. • { • lokális definíció, deklaráció • utasítások • } • 4.2 A szelekciós (döntési) utasítások • A programban bizonyos utasítás(ok) végrehajtását egy • kifejezés értékétől tesszük függővé. Informatikai Intézet - INF-501 Kógelmann Gábor

  22. Bevezetés a programozásba • Azif utasítás szintaktikája: • if(kifejezés) • utasítás • Példa (IF1.C): • Az Esc billentyű vizsgálata. • #include <stdio.h> • #include <conio.h> • #define ESC 27 • int main(void) • { • char ch; • printf("Kérek egy karaktert: "); • ch = getch(); • if(ch == ESC) • printf("\aAz Esc billentyű volt."); • } Informatikai Intézet - INF-501 Kógelmann Gábor

  23. Bevezetés a programozásba • A kifejezés igaz, ha értéke nem nulla. • Ebben az esetben végrehajtja az utasítást, vagy utasítás blokkot. • Azif-elseszerkezet szintaktikája: • if(kifejezés) • utasítás_1 • else • utasítás_2 • A kifejezés hamis, ha értéke nulla. • Ez esetben az else utáni utasítást, vagy utasítás blokkot hajtja végre. • Az utasítás helyén legalább egy üres utasításnak • ( ; ) kell állnia! Informatikai Intézet - INF-501 Kógelmann Gábor

  24. Bevezetés a programozásba • Példa (IF2.C): • Páros-páratlan számok. • #include <stdio.h> • int main(void) • { • int n; • printf("Kérek egy egész számot: "); • scanf("%d", &n); • if(n % 2 == 0) • printf("\nA szám páros."); • else • printf("\nA szám páratlan."); • } • Az n % 2 maradékos osztás végez. Informatikai Intézet - INF-501 Kógelmann Gábor

  25. Bevezetés a programozásba • Azifutasítások egymásba is ágyazhatók: • if(kifejezés_1) • if(kifejezés_2) • utasítás_1 • else • utasítás_2 • Az elképzelésünk és a valóság néha nem egyezik… • A helyes működés elérésére több lehetőség is kínálkozik. Ezt akartuk Ez lett Informatikai Intézet - INF-501 Kógelmann Gábor

  26. Bevezetés a programozásba • A lehetséges megoldások: • a.) if(kifejezés_1) • if(kifejezés_2) • utasítás_1 • else ; • else • utasítás_2 • b.) if(kifejezés_1) • { • if(kifejezés_2) • utasítás_1 • } • else • utasítás_2 Üres utasítás Utasítás blokk Informatikai Intézet - INF-501 Kógelmann Gábor

  27. Bevezetés a programozásba • Azif-elseszerkezet helyett használható a feltételes operátor: ? : • kifejezés_1 ? Kifejezés_2 : kifejezés_3; • [ ha igaz ] [ ha hamis ] • x = a < b ? a : b; • Azelse ifszerkezet szintaktikája: • if(kifejezés_1) • utasítás_1 • else if(kifejezés_2) • utasítás_2 • else if(kifejezés_3) • utasítás_3 • < else • utasítás_4 > • Az igaz kifejezés_n utasítását végrehajtja. Elhagyható Informatikai Intézet - INF-501 Kógelmann Gábor

  28. Bevezetés a programozásba • Példa (IFCALC.C): • Négyműveletes, egyszerű számológép. • #include <stdio.h> • #include <stdlib.h> • int main(void) • { • double a, b, e; • char op; • printf("Kérem az elvégzendő műveletet: "); • scanf("%lf %c %lf", &a, &op, &b); • if(op == '+') • e = a + b; • else if(op == '-') • e = a - b; Informatikai Intézet - INF-501 Kógelmann Gábor

  29. Bevezetés a programozásba else if(op == '*') e = a * b; else if(op == '/') e = a / b; else { printf("Hibás művelet!\n"); exit(-1); // Kilépés a programból } printf("%.2lf %c %.2lf = %.3lf\n", a, op, b, e); } Példa a művelet beírására: 32.1 + 142.56 <Enter> 32/142<Enter> Ha osztónak nullát adunk meg, program megszakítás okoz! (Divide by 0) Informatikai Intézet - INF-501 Kógelmann Gábor

  30. Bevezetés a programozásba • Aswitchutasítás szintaktikája: • switch(kifejezés) • { • case konstans kifejezés_1: • utasítás_1 • case konstans kifejezés_2: • utasítás_2 • < default: • utasítás_3 > • } • A kifejezés kiértékelése során kapott értéket hasonlítja a konstans kifejezés_n értékhez, ahol igaz, belép. • Az utasítás végrehajtás megszakítható: break, return • A kifejezésekcsak egész jellegűek lehetnek. • A konstans értékeknek egyedinek kell lenniük. Elhagyható Informatikai Intézet - INF-501 Kógelmann Gábor

  31. Bevezetés a programozásba • Példa (SWCALC.C): • Négyműveletes számológép switch-el megoldva. (részlet) • . . . . • switch(op) • { • case '+': • e = a + b; • break; • case '-': • e = a - b; • break; • case '*': • e = a * b; • break; • case '/': • e = a / b; • break; Informatikai Intézet - INF-501 Kógelmann Gábor

  32. Bevezetés a programozásba • default: • printf("Hibás művelet!\n"); • return -1; • } // a switch lezárása • . . . . • Példa (SWITCH1.C): • Igen-Nem válasz vizsgálata. • #include <stdio.h> • int main(void) • { • char valasz; • printf("A válasz [I/N]? "); • valasz = getchar(); Informatikai Intézet - INF-501 Kógelmann Gábor

  33. Bevezetés a programozásba • switch(valasz) • { • case 'i': case 'I': • printf("A válasz IGEN.\n"); • break; • case 'n': • case 'N': • printf("A válasz NEM.\n"); • break; • default: • printf("Hibás válasz!\n"); • } • } • Példa (SWITCH2.C): • 0-7 faktoriális kiszámítása. (0! = 1) Informatikai Intézet - INF-501 Kógelmann Gábor

  34. Bevezetés a programozásba • #include <stdio.h> • int main(void) • { • int num, fakt = 1; • printf("Kérek egy egész számot (0-7): "); • scanf("%d", &num); • switch(num) • { • default: • printf("Hibás szám: %d\n", num); • break; • case 7: fakt = fakt * 7; • . . . • case 2: fakt = fakt * 2; • case 1: • case 0: • printf("%d! = %d\n", num, fakt); • } • } Informatikai Intézet - INF-501 Kógelmann Gábor

  35. Bevezetés a programozásba • Példa: • Egyjegyű int (0-9) konvertálása char típusra. (részlet) • a.) switch-case(bonyolult) • int a; • char b; • switch(a) • { • case 0: b = '0'; break; • . . . . • case 9: b = '9'; break; • } • b.) Gondolkodva valahogy így … • b = a + 48; vagy b = a + 0x30; Informatikai Intézet - INF-501 Kógelmann Gábor

  36. Bevezetés a programozásba • 4.3 Ciklusszervező (iterációs) utasítások • A programban bizonyos utasításainak ismételt • végrehajtása, egy feltétel teljesüléséig. • Awhileutasítás szintaktikája (előltesztelő): • while(kifejezés) • utasítás • Példa: • Az első 100 pozitív szám összege (részlet). • int i = 1; • int osszeg = 0; • while(i <= 100) • { • osszeg = osszeg + i; • i = i + 1; • } Informatikai Intézet - INF-501 Kógelmann Gábor

  37. Bevezetés a programozásba • Végtelen ciklus: • while(1) Kilépés: break -el • { • . . . • } • Veszélyek: • while(a == b) while(a = b) Hiba! • { { • . . . . . . • } } • while(a == b + c) helyett while(b + c == a) • float x = 1.0; • while(x != x + 1) Elvileg végtelen ciklus! • x = x * 2.0; • printf("A ciklus vége x = %e\n", x); • Kilépés: x = 1.84e19 -nél (BC) Informatikai Intézet - INF-501 Kógelmann Gábor

  38. Bevezetés a programozásba • Aforutasítás szintaktikája (előltesztelő): • for(kifejezés_1; kifejezés_2; kifejezés_3) • utasítás • A kifejezés_1 mindig végrehajtódik. • A ciklusmag csak akkor, és addig hajtódik végre, ha a kifejezés_2 igaz (nem nulla). • A kifejezés_3 a ciklusmag után kerül sorra. • Bármelyik kifejezés elmaradhat, csak a pontosvesszőket kötelező megadni. • Végtelen ciklus: • for(;;) Kilépés: break -el • { • . . . • } Informatikai Intézet - INF-501 Kógelmann Gábor

  39. Bevezetés a programozásba • Tipikusan így használjuk: • for(i=0; i<n; i++) • { • . . . • } • Ez is egy lehetséges formátum: • for(i=0; i<n;) • { • . . . • i = i + 1; • } • Példa: • Az első 100 pozitív szám összege (részlet). • Több megoldást is láthatnak, melyek teljesen egyenértéküek. Informatikai Intézet - INF-501 Kógelmann Gábor

  40. Bevezetés a programozásba • a.) osszeg = 0; • for(i=1; i<=100; i++) • osszeg = osszeg + i; • b.) for(osszeg=0, i=1; i<=100; i++) • osszeg = osszeg + i; • c.) for(osszeg=0, i=1; i<=100; • osszeg = osszeg + i, i++); • d.) for(osszeg=0, i=1; i<=100; • osszeg = osszeg + i++); • e.) for(osszeg=0, i=1; i<101; osszeg += i++); Vessző Pontosvessző Informatikai Intézet - INF-501 Kógelmann Gábor

  41. Bevezetés a programozásba • Ado-whileutasítás szintaktikája (hátultesztelő): • do • utasítás • while(kifejezés); • Végtelen ciklus: • do Kilépés: break -el • . . . • while(1); • Példa: • Az első 100 pozitív szám összege (részlet). • osszeg = 0; i = 100; • do { • osszeg = osszeg + i; • i--; • } while(i>0); Informatikai Intézet - INF-501 Kógelmann Gábor

  42. Bevezetés a programozásba • 4.4 A vezérlésátadó utasítások • Abreak és a returnutasítás szintaktikája: • break; // Kilép a ciklusból • return; // Visszatér a hívó függvényhez • Példa: • Ha i eléri a harmincat, kilép a ciklusból. • for(i=0 ;; i++) • { • if(i == 30) • break; // vagy, return; • . . . • } • // break; esetén itt folytatódik a program. • // return; esetén ide már nem jut el ... • A break gyakori használata nem célszerű! Informatikai Intézet - INF-501 Kógelmann Gábor

  43. Bevezetés a programozásba • Acontinue utasítás szintaktikája: • continue; // Az iteráció folytatása • Példa: • A hárommal osztható számok kihagyása az összegzésből. • for(osszeg=0, i=1; i<101; i++) • { • if((i % 3) == 0) • continue; • osszeg += i; • } • A ciklusfej kiértékelésével folytatódik a program. • A continue gyakori használata nem javasolt! Informatikai Intézet - INF-501 Kógelmann Gábor

  44. Bevezetés a programozásba • Agoto utasítás szintaktikája: • goto cimke; // Vezérlés átadás a cimkére • . . . • cimke: • A strukturált programozás alapelvei szerint tilos • használni! • Csökkenti a program olvashatóságát. • Ennek ellenére a gyakorlatban előfordulhat olyan eset, amikor használatával egyszerűbbé válik a program. • A cimkének a függvényen belül kell lennie. Informatikai Intézet - INF-501 Kógelmann Gábor

  45. Bevezetés a programozásba • Példa: • Két egymásba ágyazott ciklusból kell kilépni, egy feltétel teljesülése esetén. • for(. . .) • for(. . .) • { • . . . • if(hiba) • { • printf("Hiba van a programban!\n"); • goto hibaVolt; • } • } • hibaVolt: Informatikai Intézet - INF-501 Kógelmann Gábor

  46. Bevezetés a programozásba Az előző feladat, most goto nélkül megoldva. hibaJel = 0; for(. . .) { for(. . .) { . . . if(hiba) { printf("Hiba van a programban!\n"); hibaJel = 1; break; } } if(hibaJel == 1) // vagy, if(hibaJel) break; } Informatikai Intézet - INF-501 Kógelmann Gábor

  47. Bevezetés a programozásba • 5. Függvények a C nyelvben • Bizonyos részfeladatok, illetve gyakran ismétlődő utasítások végrehajtására a programban függvényeket készítünk. • 5.1 Függvények definíciója, deklarációja, prototípusa • A saját függvényeket mindig definiálni kell, és csak egyszer fordulhat elő a forrásprogramban. • Ha a függvény definíció megelőzi a függvény hívás helyét, akkor egyben deklarációnak, illetve prototípusnak is minősül. • Ezért szokás a main függvényt a forrásprogram végére helyezni. • Az include fájlok tartalmazzák a könyvtári függvények prototípusát is. Informatikai Intézet - INF-501 Kógelmann Gábor

  48. Bevezetés a programozásba • A függvény definíció szintaktikája: • <típus> függvénynév(<paraméterlista>) • { // A függvény törzse • <lokális definíciók, deklarációk> • utasítás(ok) • <return <kifejezés>;> • } • Atípushelyén a változóknál megismert típuselőírások lehetnek. • Ebben az esetben a return kifejezés; utasítás kötelező, és a kifejezés értékének a visszatérési típusra konvertálható típusúnak kell lennie. • Amennyiben a típus void, azaz nincs visszatérési értéke a függvénynek, akkor csak üres return; lehet, vagy el is maradhat. Informatikai Intézet - INF-501 Kógelmann Gábor

  49. Bevezetés a programozásba • A függvény deklaráció szintaktikája: • <típus> függvénynév( ); • A fordítóprogramnak szolgáltat információt a helyes függvény alak ellenőrzésére. • A függvény prototípus szintaktikája: • <típus> függvénynév(<paraméterlista>); • Az ANSI C vezette be. • A fordítóprogramnak szolgáltat információt a helyes függvény alak ellenőrzésére. • Itt a paraméterlistát is meg kell adni, ha a függvény tartalmaz paramétert. • A deklarációt, vagy a prototípust a definíció, illetve a hívás előtt kell elhelyezni a forrásprogramban. Pontosvessző Informatikai Intézet - INF-501 Kógelmann Gábor

  50. Bevezetés a programozásba • 5.2 Az argumentum, a paraméter és a visszatérési érték • A függvény meghívásakor argumentumokat adunk át, a meghívott függvénynek. (Amennyiben szükséges.) • Az argumentumok és paraméterek típusának, sorrendjének, darabszámának meg kell egyeznie. • Lehetőség van kevesebb argumentummal is meghívni a függvényt, ekkor azonban a prototípusban az elhagyható paramétereket három ponttal jelölni kell. • A listában a paramétereket vesszővel kell elválasztani. • Példa: • A könyvtári printf() függvény. • int printf(const char *format, ...); • A visszatérő érték a kiírt bájtok száma. • A skalár argumentum átmásolódik a paraméterbe. • Tömb esetén a tömb kezdőcíme kerül a paraméterbe. Informatikai Intézet - INF-501 Kógelmann Gábor

More Related