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

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Vezérlő utasítások.
Programozás I. Szelekciók: egy- és kétágú szelekció
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Algoritmusok.
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
LEgyméretű tömbök, vektorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./0. lVektorok definiálása lVektorok definiálása kezdőértékekkel.
Kifejezések, operandusok, operátorok
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
LRendezés minimális elem kiválasztással Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 19./0. lAz algoritmus működése lRávezető feladat.
A C nyelv utasításai. Kifejezés+ ; Utasítás printf("Hello")printf("Hello"); a=b+ca=b+c; fuggveny(a,b)fuggveny(a,b); Blokkok: több utasítás egymás után,
3. előadás (2005. március 1.) Utasítások, tömbök
Programozás alapjai.
C A C nyelv utasításai.
Mutatók, tömbök, függvények
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
Borland C/C++ mintapéldák
Borland C/C++ mintapéldák függvényekre. 1. példa Írjunk olyan függvényt amely egy számot kiirat.
Programozás I. Horváth Ernő.
Java programozási nyelv 2. rész – Vezérlő szerkezetek
LDinamikus tömbök, kétdimenziós tömbök Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 21./0. lVektorok létrehozása futásidőben, dinamikusan.
PHP Webprogramozás alapjai
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Programozás I. Ciklusok
Programozás I. Egymásba ágyazott szelekciók, többágú szelekció
Vizuális és web programozás II.
További vektor, mátrix algoritmusok
Vezérlési szerkezetek: elágazások, ciklusok
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás C# -ban Elágazások.
C nyelv utasításai.
Megszámlálás, kiválasztás alapalgoritmusok
Ciklusok: 2. Előltesztelő ciklus
ismétlődő (azonos vagy hasonló) tevékenységek megvalósítására szolgál
Ciklusok (iterációk).
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
Készítette: Csíki Gyula
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Algoritmus szerkezetek
Java programozási nyelv Vezérlési szerkezetek
Objektum orientált programozás
Objektum orientált programozás
Programozás I. Típus algoritmusok
Egyágú elágazás Szintaxis: if (feltétel)
Operátorok Vezérlési szerkezetek Gyakorlás
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
© Tóth Ákos, Óbudai Egyetem, 2010
C++2. Ciklusok elöltesztelő (for, while) A ciklusmag feldolgozása előtt történik a vizsgálat  lehet, hogy egyszer sem fut le. A soronkövetkező iteráció.
Struktúrák a C nyelvben 1 Akkor használjuk, ha az egy egyedre jellemző különböző típusú adatokat együtt akarjuk tárolni. Lényegében típusdeklaráció. A.
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Algoritmus Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században élt perzsa tudós nevének pontatlan.
Programozási alapismeretek
Gépészeti informatika (BMEGEMIBXGI)
Algoritmizálás.
Programozás C# -ban Elágazások.
Bevezetés a programozásba Algoritmikus gondolkodás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
ITERÁCIÓ.
A struct, az union és az enum típus
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Típusok, változók, konstansok
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.