Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások

Slides:



Advertisements
Hasonló előadás
3. előadás (2005. március 1.) Utasítások, tömbök
Advertisements

Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások
A felhasználói interfész A felhasználói interfész az a felület, amellyel a szoftver az ember felé „fordul”; amellyel a felhasználó nap mint nap találkozik.
Perifériák Készítette: Friss István Dávid. A perifériák csoportosítása Bemeneti (Input) eszközök Kimeneti (Output) eszközök Be-és kimeneti (I/O) eszközök.
FOL függvényjelekkel Zsebibaba anyja A 2 harmadik hatványa a oszlopában az első blokk Ezek is nevek, de nem in- konstansok Azért, mert összetettek Predikátum:
Az új közbeszerzési törvény megalkotásának körülményei, várható jövőbeli változások május 26. Dr. Kovács László Miniszterelnökség Közbeszerzési Szabályozási.
KÖZHASZNÚSÁG MEGTARTÁSA, - MEGSZERZÉSE Molnár Elvira Bács-Kiskun Megyei Civil Információs Centrum 2014.
Bevezetés a C# nyelvbe Az alapok összefoglalása Farkas Csaba.
Szabadtéri rendezvények. A TvMI vonatkozik: OTSZ szerinti szabadtéri rendezvényekre szabadtéri rendezvény: az 1000 főt vagy az 5000 m 2 területet meghaladó,
 Alap tudnivalók Alap tudnivalók  Az If és a While folyamatábrák Az If és a While folyamatábrák  Probléma Probléma  A while ciklus (általános alak,
A szaktanácsadás szolgáltatási terület dokumentációja Némethné Józsa Ágnes Intézményfejlesztési referens.
Forrás: Reiter István C_Sharp programozás lépésről lépésre (frissített tartalommal )
as vonal József körút/Népszínház utca - Fiumei út/Magdolna utca 1. a.)A végállomás csonkavágányára szabad csak beállni és várakozni a tabulátorkezelői.
BEST-INVEST Független Biztosításközvetítő Kft.. Összes biztosítási díjbevétel 2004 (600 Mrd Ft)
Gazdasági jog IV. Előadás Egyes társasági formák Közkeresleti társaság, betéti társaság.
A szakiskolák aktuális problémái
Fájlkezelés.
Tájékoztató a munkahelyteremtő pályázati programról
Operációs rendszerek.
Térkép készítése adataiból
2. előadás Viszonyszámok
Logo Országos Számítástechnikai Tanulmányi Verseny
Összeállította: Horváth Józsefné
Programstruktúrák.
A FELÜGYELŐBIZOTTSÁG BESZÁMOLÓJA A VSZT
Script nyelvek előadás
Microsoft Excel BAHAMAS tanfolyam
Scilab programozás alapjai
Egyszerű kapcsolatok tervezése
376/2014 EU RENDELET BEVEZETÉSÉNEK

A C++ programozási nyelv
PHP - függvények.
A kollektív szerződés Dr. Fodor T. Gábor Ügyvéd
CSOPORT - A minőségellenőrök egy megfelelő csoportja
Lexikális elemző: lex (flex)
Logikai programozás 2..
Tartalékolás 1.
Nyelvek típusossága.
Adatbázis-kezelés (PL/SQL)
INFOÉRA 2006 Véletlenszámok
2. Bevezetés A programozásba
Adatbevitel, értékadás, típuskonverzió
Szerkezetek Dinamikája
Script nyelvek előadás
Közigazgatási alapvizsga a Probono rendszerben
Algoritmusok és Adatszerkezetek I.
Rendszerfejlesztés gyakorlat
Teljes visszalépéses elemzés
Tájékoztató az Önkormányzati ASP Projektről
Készítette: Sinkovics Ferenc
Informatikai gyakorlatok 11. évfolyam
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
A villamos installáció problémái a tűzvédelem szempontjából
A Microsoft SharePoint testreszabása Online webhely
Bináris kereső fák Definíció: A bináris kereső fa egy bináris fa,
A Lineáris Keresés Buktatói
Karakter- és sztringkezelő függvények, matematikai függvények
További rendező és kereső algoritmusok
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Matematika 11.évf. 1-2.alkalom
Válassza ki a Blaha Lujza tér végállomásra vonatkozó helyes állítást!
Matematika II. 5. előadás Geodézia szakmérnöki szak 2015/2016. tanév
Mintaillesztés Knuth-Morris-Pratt (KMP) algoritmus
Bináris fájlok kezelése
Áramlástan mérés beszámoló előadás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Algoritmusok.
Hagyományos megjelenítés
Pipeline példák (Normál, 2019).
Előadás másolata:

Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./0. Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások Kifejezés utasítás Üres utasítás Összetett, vagy blokk-utasítás Elágazásszervező utasítások Az if utasítás Az if else szerkezet A switch többirányú elágaztató utasítás A goto utasítás Ciklusszervező utasítások A while ciklusszervező utasítás A for ciklusutasítás A do while ciklus Cikluslefutás módosítása: break, continue utasítások

program = adatszerkezetek + algoritmusok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./1. C nyelvi utasítások A C nyelvben is a program = adatszerkezetek + algoritmusok képlet igaz, ahol az algoritmusokat utasítások sorozatával adjuk meg. Kifejezés utasítás Bármelyik kifejezésből utasítás lesz, ha pontosvesszőt teszünk utána. Pl.: valt1 = a +25 ; /* értékadó utasítás */ Üres utasítás: csak pontosvesszőt tartalmaz. Formailag utasítást igénylő helyre írjuk, ha ott egyébként nem kell semmit végrehajtani. Gyakran előfordul a while, do, for utasításokban. Pl.: do ; while ( !kbhit() ); /* billentyűnyomásig vár */

Összetett, vagy blokk-utasítás { Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./2. C nyelvi utasítások . . Összetett, vagy blokk-utasítás { <deklarációk és definíciók> <utasítások> } Mind a deklarációk, definíciók, mind az utasítások elmaradhatnak. Összetett utasítás alkalmazandó olyan helyen, ahol formailag csak egy utasítás állhat, de több utasítást akarunk elvégeztetni. Láthatóság: Az összetett utasításban deklarált ill. definiált objektumok csak a blokkon belül láthatók, hivatkozhatók.

Elágazásszervező utasítások: if, if else, switch, goto Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./3. C nyelvi utasítások . . Elágazásszervező utasítások: if, if else, switch, goto Az if utasítás alkalmas egy feltételtől függően egy programrész végrehajtására, vagy átugrására. Alakja: if ( <kifejezés> ) <utasítás> Ha a <kifejezés> igaz (értéke nem nulla), akkor végrehajtódik az <utasítás>, egyébként az <utasítás> utáni programrészen folytatódik a program futása.

Elágazásszervező utasítások Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./4. Elágazásszervező utasítások Az if else szerkezet kétirányú elágazást tesz lehetővé. Alakja: if ( <kifejezés> ) <utasítás1> else <utasítás2> Ha a <kifejezés> igaz (nem nulla) akkor az <utasítás1>, egyébként az <utasítás2> hajtódik végre, majd a programfutás az <utasítás2> utáni programrészen folytatódik.

Elágazásszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./5. Elágazásszervező utasítások . . Példa az if else szerkezet alkalmazására /* Háromszög */ #include <stdio.h> #include <conio.h> main() { unsigned int a,b,c; clrscr(); printf("Háromszögtípus meghatározása\n\n"); printf("Adja meg az oldalakat nem növekvö sorrendben ! \n"); printf("A= "); scanf("%u",&a); printf("B= "); scanf("%u",&b); printf("C= "); scanf("%u",&c);

Elágazásszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./6. Elágazásszervező utasítások . . Példa az if else szerkezet alkalmazására .. if (a < b+c) if (b*b + c*c == a*a) if (b==c) printf("egyenlőszárú derékszögű "); else printf("derékszögű "); else if (a==c && c==b) printf("egyenlő oldalú (szabályos) "); else if (a==b || b==c) printf("egyenlőszárú "); else printf("általános "); else printf("nem alkotnak háromszöget "); printf("\n"); getch(); } /* Megj: egyenlő szárú derékszögű csak valós oldalhosszal teljesül.*/

Elágazásszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./7. Elágazásszervező utasítások . . A switch többirányú elágaztató utasítás Többirányú elágaztatás egymásbatokozott if else szerkezetekkel is szervezhető, amint az előző példa mutatta. Azonban olyan esetekben, amikor egy egész jellegű kifejezés értékétől függően kell más-más programrészt végrehajtani, a switch utasítás áttekinthetőbb szerkezetet eredményez. Az utasítás alakja: switch ( <egész jellegű kifejezés> ) { case <konstans_kifejezés1> : <utasítások> case <konstans_kifejezés2> : <utasítások> ... default : <utasítások> }

Elágazásszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./8. Elágazásszervező utasítások . . A switch többirányú elágaztató utasítás működése Amennyiben található az utasítás blokkjában a case után álló <konstans_ kifejezés>-ek között az <egész jellegű kifejezés> értékével azonos érték, akkor a program végrehajtása az azt követő utasításokon folytatódik. Ha nincs ilyen értékű case címke, akkor a programfutás a default címke utáni utasításokkal folytatódik. Amennyiben nincs default címke, akkor a programfutás ilyen esetben a blokk utáni utasítással folytatódik. A default címke állhat középen, vagy elöl is. Azonos case címkék nem adhatók meg. A switch utasítás általában az if else szerkezettől gyorsabb futást eredményez.

Elágazásszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./9. Elágazásszervező utasítások . . Példa switch utasítással #include <stdio.h> main() { int i ; printf("Hány szót írjak ki? (max.3)=" ); scanf("%d", &i ); switch ( i ) case 3: printf(" \nAlma"); case 2: printf(" \nKörte"); case 1: printf(" \nBarack"); }

Elágazásszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./10. Elágazásszervező utasítások . . Break utasítás a switch utasításban Sokszor hátrányos az, hogy nem csak a kifejezés értékének megfelelő case címkéhez tartozó utasítások hajtódnak végre, hanem a blokk végéig elhelyezkedő összes többi is. Ezt elkerülhetjük a break utasítás alkalmazásával, amely a switch utasítás blokkját követő utasításra ugrat. Erre ad példát a következő program: #include <stdio.h> #include <conio.h> main() { char bill ; printf("Nyomjon meg egy billentyüt:" ); do ; while ( !kbhit() ); /* megnyomásra vár */ bill = getch(); /* beveszi a karaktert */

Elágazásszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./11. Elágazásszervező utasítások . . Break utasítás a switch utasításban .. switch ( bill ) { default : printf("\nA karakter: %c", bill ); break; case 0: bill = getch(); switch (bill) case 72: printf("\nFel "); break; case 75: printf("\nBalra "); break; case 77: printf("\nJobbra "); break; case 80: printf("\nLe "); break; default: printf("\nNem kurzormozgató funkcióbillentyü "); }

Elágazásszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./12. Elágazásszervező utasítások . . A goto utasítás alkalmazása struktúrált programokban ritkán fordul elő. Használata csak akkor célszerű, ha nélküle bonyolultabb programszerkezet adódna, pl. egymásba tokozott ciklusokból való kiugrás a ciklusok lefutása előtt. Alkalmazásához címkét kell elhelyezni a program azon pontján, ahová ugrani szeretnénk. A címkével ellátott utasítássor alakja: <azonosító> : <utasítás> és a goto <azonosító>; utasítással ugrathatunk feltétel nélkül az utasítássorra, amelynek a goto-val azonos függvényben kell lennie.

Ciklusszervező utasítások Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./13. Ciklusszervező utasítások A ciklusszervező utasítások szolgálnak ugyanazon utasítások általában eltérő adatokkal történő többszöri végrehajtására. A C nyelvben két elöltesztelős (while és for) és egy hátultesz-telős (do while) ciklusszervező utasítás használható, melyek futása még további feltétel nélküli vezérlésátadó utasításokkal (goto, break, continue) módosítható. Ezen utóbbi lehetőségek használata nem eredményez struktúrált programot. A while ciklusszervező utasítás: while ( <kifejezés> ) <utasítás> Minden egyes ciklusban előbb kiértékelésre kerül a <kifejezés> és csak akkor hajtódik végre a ciklus magját jelentő <utasítás>, ha a <kifejezés> igaz (nem nulla értékű). Ha a <kifejezés> hamis (értéke nulla), akkor a program futása a while utasítás utáni utasítással folytatódik.

Ciklusszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./14. Ciklusszervező utasítások . . A while használata akkor célszerű, ha a ciklusmag előre ismeretlen számban - lehet, hogy egyszer sem - hajtódhat végre. Pl.: #include <conio.h> /* getch miatt */ #include <stdio.h> /* printf, scanf miatt */ main() { float adat, szumma = 0; while ( printf("\nVan adat? (I/N):") , getch() == 'I' ) printf("\nAdat="); scanf("%f", &adat ); szumma += adat ; } printf("\nAz összeg= %f", szumma);

Ciklusszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./15. Ciklusszervező utasítások . . A for ciklusutasítás legelőnyösebben akkor használható, ha a végrehajtandó ciklusok száma előre ismert. A C nyelv for ciklusa sokféle alakot ölthet. Ez szerkezetéből is látható: for ( <kezdőért_kif>;<feltétel_kif>;<léptető_kif>) <utasítás> Bármelyik kifejezés elmaradhat. Ha a <feltétel_ kif> hiányzik, igaz értéket helyettesít a program. Működése: legelőször egyszer kiértékelődik a <kezdőért_kif>, majd ciklusban kiértékelődik a <feltétel_kif>, végrehajtódik az <utasítás> és kiértékelődik a <léptető_kif>, mindaddig, amig a <feltétel_kif> igaz (értéke nem nulla). Ha a <feltétel_kif> nem igaz, a program futása a for ciklus utasítását követő program-utasításon folytatódik.

Ciklusszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./16. Ciklusszervező utasítások . . Példa for ciklusutasításra #include <stdio.h> main() { unsigned int szumma, k ; for ( szumma = 0, k = 1 ; k <= 100 ; k++) szumma += k; printf("Számok összege százig= %u", szumma); } 1+2+3+4+5+6+7+8+9+10+11+12+ .. +92+93+94+95+96+97+98+99+100

Ciklusszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./17. Ciklusszervező utasítások . . A do while ciklus előnyös alkalmazási területe az előre nem ismert számban, de legalább egyszer végrehajtódó ciklustörzsű ciklusok. Alakja: do <utasítás> while ( <kifejezés> ) ; A ciklusban először végrehajtódik az <utasítás>, majd kiértékelődik a <kifejezés>. Ha a <kifejezés> igaz (nem nulla), akkor az előbbiek ismétlődnek. Ha a <kifejezés> nem igaz (értéke nulla), a programvégrehajtás a do while utasítás utáni utasításon folytatódik.

Ciklusszervező utasítások . . Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./18. Ciklusszervező utasítások . . Példa do while ciklusra #include <stdio.h> #include <stdlib.h> /* randomize, random miatt */ main() { int szam, tipp, n = 0; randomize(); szam = random(10); szam++; printf("\nGondoltam egy számot 1-10 között \n"); do printf("\nA tippje= "); scanf("%d",&tipp); n++; } while ( tipp != szam ); printf("\n%d lépésben kitalálta!", n);

Cikluslefutás módosítása: break, continue utasítások Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 16./19. Cikluslefutás módosítása: break, continue utasítások A struktúrált programok írása során egyedül a break utasítást alkalmazhatjuk a switch utasításban. Egyes esetekben az egyszerűbb programszerkezet eléréséért feláldozhatjuk a struktúrált szerkezetet a break, ill. a continue alkalmazásával. A break utasítás feltételnélküli vezérlésátadást (kiugrást) valósít meg a break-et tartalmazó legbelső while, for vagy do while utasítás ciklusmagjából a ciklusutasítást követő programutasí­ tásra, ilymódon lehetővé téve a ciklus elhagyását annak teljes lefutása nélkül. A ciklusmagban elhelyezkedő continue utasítás a ciklusmag teljes végrehajtása helyett átugorja a ciklusmag continue utáni részét, majd folytatja a ciklusutasítás végrehajtását.