Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "3. előadás (2005. március 1.) Utasítások, tömbök"— Előadás másolata:

1 3. előadás (2005. március 1.) Utasítások, tömbök
utasítás: üres, összetett, feltételes utasítás, switch utasítás, ciklus utasítások, tömbök.

2 C utasítások kifejezés; Üres utasítás: ;
Összetett utasítás (blokk vagy utasítás csoport): { .... } Belsejében változók deklarálhatók. Utána nem írunk pontosvesszőt (üres utasítás).

3 Vezérlési szerkezetek
Elágazás 1: if (kifejezés) "igaz" utasítás else "hamis" utasítás Az else rész nem kötelező. A kifejezés csak int-re konvertálódó lehet.

4 Elágazás példa: Csellengő else: if (a==5) /* Hibalehetőség: a=5 */
if (...) if (...) if (...) if (...) if (...) { else else if (...) }

5 Elágazás: elseif if (kifejezés) "igaz" utasítás else if (kifejezés)

6 Több eset kezelése, switch utasítás:
Formája: switch (kifejezés) { case konst_kif1: utasítás1 case konst_kif2: utasítás2 ... case konst_kifn: utasításn default: utasítás } Kifejezés: int, char, long, short típusú

7 Switch-default példa char c; c=getchar(); switch (c) { case 'a':
case 'b': case 'c': printf("a vagy b vagy c"); return 1; default: return (0); }

8 Switch-break példa int i=5; switch (i%3) { case 0:
printf("\nhárommal osztható"); break; case 1: printf("\nmaradék 1"); case 2: printf("\nmaradék 2"); }

9 A while ciklus utasítás
while (kifejezés) utasítás Pl. char c; c='*'; while ((c!='n') && (c!='i')) c=getchar(); Előtesztelő ciklus utasítás, lehet, hogy a ciklusmag egyszer sem hajtódik végre.

10 A do ... while ciklus utasítás
do utasítás while (kifejezés); Pl. char c; do c=getchar(); while ((c!='n') && (c!='i')); Utótesztelő ciklus, a ciklusmag legalább egyszer végrehajtódik.

11 A for ciklus utasítás for ( inicializáló_kif; ellenőrző_kif; újrainic_kif ) utasítás Működése: 1. inicializáló_kif kiszámítása 2. ha az ellenőrző_kif hamis, akkor kilépés a for utasításból 3. utasítás (ciklusmag) végrehajtása 4. újrainic_kif kiszámítása 5. visszaugrás a 2. pontra

12 A for utasítással egyenértékű (ekvivalens) while utasítás
inicializáló_kif ; while (ellenőrző_kif ) { utasítás újrainic_kif ; }

13 for utasítás példák 1. for (i=0; i<N; a[i++]=0); for (c=1; c<=20; c++) printf("%d\n",c); for (c=100; c>0; c--) ... for (c=0; c<1000; c+=5) ... c=1; for (; c<1000; c++) ... for (c=1, printf("elkezdtem"); c<10; c++)... for (c=0; c<1000;) printf ("%d\n",c++);

14 for utasítás példák 2. for (c=0; c<1000 && a[c]!=0; c++) printf(" ", a[c]); for (c=0; c<1000 && a[c];) printf(" ", a[c++]); for (c=0; c<1000; a[c++]=5); for (i=0, j=999; i<1000; i++, j--) b[j] = a[i];

15 Végtelen ciklusok while (1) utasítás for (;;) utasítás
Pl. hálózati szerver vagy interaktív programokban Leállítás: Adott feltétel esetén: exit(visszatérési_érték) Megszakítással: Ctrl+C, Ctrl+Break, Ctrl+\

16 A break utasítás for (i=0 ; ; i++) { if (getchar() == 'n') break; } printf ("\naz%d-edik leütött kar. az\'n\'!", i); Ciklusban a break-et tartalmazó ciklus megszakítására használható.

17 A continue utasítás int szamlalo; for (szamlalo=0, i=0; i<N; i++); /*!!!*/ { if (a[i]<0) continue; szamlalo++;/*nemnegatív elemek sz.*/ } A continue a ciklus újrainicializáló részére adja a vezérlést.

18 goto utasítás, címkék Hagyományőrzési céllal és néhány elkerülhetetlen esetben a hatékonyság növelésére. Pl. for ( ... ) for ( ... ) { ... if ( ... ) goto errorc; } errorc: hibakezeles ();

19 Egymásbaágyazott ciklusok
for (i=0; i<N; i++) { for (j=0; j<M; j++) printf ("\n%d.sor %d.oszlop eleme %d", i,j,a[i][j]); } A belső ciklus befejeződése után folytatódik a külső. Fontos az utasítások megfelelő csoportosítása.

20 Tömbök Olyan összetett adattípus, amely azonos típusú elemekből áll és a memóriában folytonosan helyezkedik el. Tömb deklarációja típus név [elemszám1] {[elemszám2]…}; Az elemszám csak állandó kifejezés lehet. Hivatkozás egy elemre: név[indexkifejezés1]{[indexkifejezés2]…} Az index kifejezés tetszőleges egész típusú kifejezés. Az index alsó határa 0, 0 <= index <= elemszám-1. Az index érvényességét a fordítóprogram nem ellenőrzi!

21 A sizeof operátor használata
A CPU függetlenség miatt fontos a sizeof operátor használata, pl.: int a[10]; sizeof(a[0]) sizeof(int)= (CPU függő) sizeof(a) *sizeof(int)=40 (CPU függő) sizeof(a)/sizeof(a[0]) = (CPU független)

22 Tömb elhelyezkedése a memóriában
elem eltolás cím 0FFC a[0] a[1] 1*sizeof(int) 1004 a[2] 2*sizeof(int) 1008 a[3] 3*sizeof(int) 100C (CPU függő)

23 Tömb inicializálása 1. Egydimenziós: típus név [elemszám]=
{konst_1, konst_2, ... , konst_elemszám-1}; Pl. double koord[3]={0.3, 0.6, 0.8}; double koord[]={0.3, 0.6, 0.8, 1.1};

24 Tömb inicializálása 2. Kétdimenziós: vagy
int a[2][3]={{2, 3, 6}, {3, 6, 8}}; vagy int a[][3]={{2, 3, 6}, Az utolsó indexnek mindig ismertnek kell lennie, csak egy index lehet határozatlan (az első)!


Letölteni ppt "3. előadás (2005. március 1.) Utasítások, tömbök"

Hasonló előadás


Google Hirdetések