Strukturált C-Strukturált Egyéb elemek
Strukturált C-Strukturált Egyéb elemek
Adminisztrációs feladatok Strukturált programok A C programnyelv elemei
Aki még nem tette meg... BME címtáras azonosító lekérése, jelszó beállítása
A programozás alapjai I.
Szükség van rá a laborgépek használatához https://login.bme.hu/admin
Moodle bejelentkezés és kipróbálás A tárggyal kapcsolatos adatokat (jelenlét, pontok) itt találhatók Felhasználónév a neptun kód
Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán
El®ször az elfelejtett jelszó linket használjuk https://moodle.hit.bme.hu Próbáljuk ki a feladatleadást a laborkurzus Próbafeladat feladatán
Regisztráció további szolgáltatásokra (opcionális)
2015. szeptember 14.
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
https://accadmin.hszk.bme.hu
2015. szeptember 14.
1 / 47
Strukturált C-Strukturált Egyéb elemek
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
2 / 47
Bevezetés Deníció Elemek Tétel Struktogram
Tartalom
Strukturált programozás Bevezetés Deníció Strukturált programok elemei Strukturált programozás tétele A struktogram 2 Strukturált programozás C-ben
Szekvencia Választás Elöltesztel® ciklus Alkalmazás
1
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
3
1. fejezet Strukturált programozás
Egyéb strukturált elemek Elöltesztel® másként Hátultesztel® ciklus Egész értéken alapuló választás
Strukturált C alapok
2015. szeptember 14.
3 / 47
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
4 / 47
Strukturált C-Strukturált Egyéb elemek
Bevezetés Deníció Elemek Tétel Struktogram
Algoritmusok
Bevezetés Deníció Elemek Tétel Struktogram
Algoritmusok
Ismétlés gyakorlatról: Keressük az f (x ) monoton növekv® függvény zérushelyét n és p között pontossággal. 1
f(x)
2 3 4 5
n
Strukturált C-Strukturált Egyéb elemek
k
6
p x
7 8 9 10
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
p - n < eps ? HA IGAZ , UGORJ 10 - re k ← (n+p) / 2 f ( k ) < 0? HA IGAZ , UGORJ 8 - ra p ← k; UGORJ 1 - re n ← k; UGORJ 1 - re A z é rushely : n
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
Ismétlés gyakorlatról: Keressük az f (x ) monoton növekv® függvény zérushelyét n és p között pontossággal.
2015. szeptember 14.
f(x)
n
p x
5 / 47
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált vs strukturálatlan AM Í G p - n > eps , ISM É TELD k ← (n+p) / 2 HA f ( k ) > 0 p ← k; EGY É BK É NT n ← k; A z é rushely : n
k
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
AM Í G p - n > eps , ISM É TELD k ← (n+p) / 2 HA f ( k ) > 0 p ← k; EGY É BK É NT n ← k; A z é rushely : n
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
6 / 47
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált vs strukturálatlan 1 2 3 4 5 6 7 8 9 10
Hardverszint
p - n < eps ? HA IGAZ , UGORJ 10 - re k ← (n+p) / 2 f ( k ) < 0? HA IGAZ , UGORJ 8 - ra p ← k; UGORJ 1 - re n ← k; UGORJ 1 - re A z é rushely : n
Sok egyszer¶ utasítás
Egyszer¶ vezérlés (UGORJ; Processzor csak ezt érti
Magas szint¶ nyelvek Kevés komplex utasítás
Bonyolultabb vezérlés (AMÍG...ISMÉTELD...;
HA...AKKOR...EGYÉBKÉNT...)
Strukturálatlan program
Strukturált program könnyen
spagettikód
karbantartható
egyszer¶ vezérlés
komplex vezérlés
hardverszint
HA IGAZ, UGORJ)
Strukturálatlan szerkezet
Strukturált szerkezet Processzor nem érti
A fordítóprogram a magas szint¶ strukturált programból hardverszint¶, de az eredetivel ekvivalens programot állít el®
magas szint¶
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
7 / 47
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
8 / 47
Strukturált C-Strukturált Egyéb elemek
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált programok elemei
Strukturált C-Strukturált Egyéb elemek
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált programok elemei
Minden strukturált program az alábbi egyszer¶ sémát követi:
Elemi tevékenység
START
ami nem szorul további kifejtésre
Tevékenység
Tevékenység
STOP
A program struktúráját Tevékenység bels® szerkezete határozza meg. Tevékenység lehet
Elemi tev.
Elemi tev .
Az üres tevékenység (Ne csinálj semmit) is elemi tevékenység
Elemi tevékenység Szekvencia Ciklus Választás
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
9 / 47
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált programok elemei
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
10 / 47
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált programok elemei A szekvencia minden eleme maga is tevékenység, így természetesen kifejthet® szekvenciaként
Szekvencia Két tevékenység egymás utáni végrehajtása adott sorrendben
1. Tev. 1. Tev.
1. Tev. Tevékenység 2. Tev.
2a. Tev.
1. Tev . 2. Tev .
2. Tev. 2b. Tev.
A kifejtést folytatva a szekvencia gyakorlatilag tetsz®leges hosszú (véges) tevékenységsorozatot jelenthet c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
11 / 47
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
12 / 47
Strukturált C-Strukturált Egyéb elemek
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált programok elemei
Strukturált C-Strukturált Egyéb elemek
Strukturált programok elemei
Igazságértéken alapuló választás
Gyakran az egyik ág üres
Két tevékenység alternatív végrehajtása egy feltétel igazságértékének megfelel®en
I I Tevékenység
Feltétel
H
Tev.
Tev.
ha igaz
ha hamis
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
HA Felt é tel Tev . ha igaz EGY É BK É NT Tev . ha hamis
2015. szeptember 14.
13 / 47
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált programok elemei
H
I Ciklusmag
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Tev. ha igaz
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
H
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
HA Felt é tel Tev . ha igaz
2015. szeptember 14.
14 / 47
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált programozás tétele
Tevékenység ismétlése mindaddig, míg egy feltétel teljesül
Tevékenység
Tevékenység
Feltétel
Strukturált programok elemei
Elöltesztel® ciklus
Feltétel
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált C alapok
AM Í G Felt . , ISM É TELD Ciklusmag
Elemi tevékenység, szekvencia, választás és ciklus alkalmazásával MINDEN algoritmus megfogalmazható.
2015. szeptember 14.
15 / 47
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
16 / 47
Strukturált C-Strukturált Egyéb elemek
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált programozás tétele bizonyítás START 0 Tev. 1
Tev. 2 1 Felt. 1 2 I
I
H
Felt. 2 3
H
STOP
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
á llapot ← 0 AM Í G á llapot nem HA á llapot = 0 Tev . 1 Tev . 2 á llapot ← 1 HA á llapot = 1 HA Felt . 1 á llapot ← EGY É BK É NT á llapot ← HA á llapot = 2 HA Felt . 2 Tev . 2 á llapot ← EGY É BK É NT á llapot ← Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
Strukturált C-Strukturált Egyéb elemek
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált programozás tétele bizonyítás Most, hogy tudjuk, hogy mindig lehet, gondolkodhatunk egyszer¶bb strukturált megfelel®n is:
START
3 , ISM É TELD
0 Tev. 1
Tev . Tev . AM Í G HA
Tev. 2 1
0
I
Felt. 1
2
2 I
1
Mi a továbbiakban eleve strukturált szerkezetben fogalmazzuk meg algoritmusainkat
H
Felt. 2 3
1 2 ( Felt . 1 VAGY Felt . 2.) , ISM . Felt . 1 Tev . 1 Tev . 2
H
STOP
3 2015. szeptember 14.
17 / 47
Bevezetés Deníció Elemek Tétel Struktogram
A struktogram
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
18 / 47
Bevezetés Deníció Elemek Tétel Struktogram
A struktogram A program egy téglalap Tevékenység
A folyamatábra
további téglalapokra bontható az alábbi szerkezeti elemekkel
a strukturáltalan programok leírási eszköze azonnal kódolható bel®le strukturálatlan program (HA IGAZ, UGORJ)
Szekvencia
Elöltesztel® ciklus
a strukturált elemek (f®leg a ciklusok) sokszor nehezen
Tev. 1
ismerhet®ek fel benne
A struktogram
Feltétel Ciklusmag
Tev. 2
a strukturált programok ábrázolási eszköze csak strukturált program írható le vele
Választás
könnyen kódolható bel®le strukturált program
A
Feltétel
Tev. ha igaz Tev. ha hamis
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
19 / 47
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
20 / 47
Strukturált C-Strukturált Egyéb elemek
Bevezetés Deníció Elemek Tétel Struktogram
Strukturált C-Strukturált Egyéb elemek
Szekv. Vál. Elölteszt. Alkalm.
A struktogram Gyökhelykeresés folyamatábrával, struktogrammal és strukturált pszeudokóddal
2. fejezet
START p
p
−n >
k
H
I
p
←
k
n
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
←
←k
n
←k
AM Í G p - n > eps , ISM É TELD k ← (n+p) / 2 HA f ( k ) > 0 p ← k; EGY É BK É NT n ← k;
H
>0
p
STOP
Strukturált programozás C-ben
>0
A
← n+2 p
f (k )
← n+2 p
f (k )
I k
−n >
k
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
21 / 47
Szekv. Vál. Elölteszt. Alkalm.
3 4 5 6 7 8 9
22 / 47
Szekv. Vál. Elölteszt. Alkalm.
Írjunk programot, mely a bekért egész számról eldönti, hogy az kicsi (< 10) vagy nagy (≥ 10)!
/* football . c -- szurkol ó program */ # include < stdio .h > int main () { printf ( " Sz ó d á s ü veget " ); /* nincs ú jsor */ printf ( " a b í r ó nak ,\ n " ); /* itt van */ printf ( " hajr á , Fradi !" ); return 0; }
Strukturált C alapok
2015. szeptember 14.
1
KI: infó BE:
2 3
x
4
x < 10
A KI: kicsi
KI: nagy
Legyen x eg é sz KI : inf ó BE : x HA x < 10 KI : kicsi EGY É BK É NT KI : nagy
Szódásüveget a bírónak, hajrá, Fradi!
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
2015. szeptember 14.
Választás C-ben az if utasítás
Szekvencia megfogalmazása egymás után kiadott utasításokkal 2
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
Szekvencia C-ben
1
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
23 / 47
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
5 6 7 8 9 10 11 12
# include < stdio .h > int main () { int x ; printf ( " Adjon meg egy sz á mot : " ); scanf ( " % d " , & x ); if ( x < 10) /* felt é tel */ printf ( " kicsi " ); /* igaz á g */ else printf ( " nagy " ); /* hamis á g */ return 0; }
Adjon meg egy számot: kicsi Strukturált C alapok
5
2015. szeptember 14.
24 / 47
Strukturált C-Strukturált Egyéb elemek
Szekv. Vál. Elölteszt. Alkalm.
Strukturált C-Strukturált Egyéb elemek
Választás az if utasítás
Elöltesztel® ciklus C-ben a while utasítás Írjuk ki 1-t®l 10-ig az egész számok négyzeteit!
Az if utasítás szintaxisa if (
) [ else ]opt 1 2 3 4 1 2 3
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
25 / 47
4 5
Szekv. Vál. Elölteszt. Alkalm.
3
n
·n
←n+1
4 5 6 7 9 10 11 12
# include < stdio .h > int main () { int n ; n = 1; /* inicializ á l á s */ while ( n <= 10) /* felt é tel */ { printf ( " % d " , n * n ); /* Ki í r á s */ n = n +1; /* n ö vel és */ } return 0; }
1 4 9 16 25 36 49 64 81 100
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
26 / 47
Szekv. Vál. Elölteszt. Alkalm.
Komplex alkalmazás
Szekvenciával, ciklussal és választással minden megfogalmazható! Most már mindent tudunk, megírhatjuk a gyökhelykeresés programját C-ben!
while ( n <= 10 ) { printf ( " % d " , n * n ); n = n +1; }
Új elem: a valós számok tárolására alkalmas double típus (kés®bb részletezzük) 1
C-ben utasítás mindig helyettesíthet® blokkal.
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
≤ 10
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
while ()
3
n
2
8
A while utasítás szintaxisa
2
1
Legyen n eg é sz n ← 1 AM Í G n <= 10 KI : n * n n ← n +1
Elöltesztel® ciklus a while utasítás
1
←1
n
if ( a < 0) /* abszol ú t é rt é k k é pz é se */ a = -a ; /* nincs hamis ág */
Strukturált C alapok
n
KI:
if ( x < 10 ) /* felt é tel */ printf ( " kicsi " ); /* igaz á g */ else printf ( " nagy " ); /* hamis á g */
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Szekv. Vál. Elölteszt. Alkalm.
Strukturált C alapok
2015. szeptember 14.
2 3
27 / 47
double a ; a = 2.0; printf ( " % f " , a );
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
/* a val ó s sz á m */ /* é rt é kad á s */ /* ki í r á s */
Strukturált C alapok
2015. szeptember 14.
28 / 47
Strukturált C-Strukturált Egyéb elemek
Szekv. Vál. Elölteszt. Alkalm.
Strukturált C-Strukturált Egyéb elemek
Elöltesztel® Hátultesztel® Választás
Zérushely keresése Keressük az f
(x ) = x 2 − 2
1
függvény gyökhelyét n = 0 és p = 2 között = 0,001 pontossággal!
2 3 4 5 6 7
p
n
←0
p
←2
k p
9 10 11
−n > k
A
8
2
12
← n+2 p
13
−2>0
←k KI:
n
←k
14
# include < stdio .h > int main () { double n = 0.0 , p = 2.0; while (p - n > 0.001) { double k = ( n + p )/2.0; if ( k *k -2.0 > 0.0) p = k; else n = k; } printf ( " A gy ö khely : % f " , n );
15 16 17
}
3. fejezet Egyéb strukturált elemek
return 0;
n
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
29 / 47
Elöltesztel® Hátultesztel® Választás
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C-Strukturált Egyéb elemek
30 / 47
Elöltesztel® Hátultesztel® Választás
Írjuk ki 1-t®l 10-ig az egész számok négyzeteit! Az n ← 1 Inicializálás n ≤ 10 Amíg Feltétel IGAZ
Láttuk, hogy az eddig deniált strukturált elemek mindenre elegend®ek Pusztán kényelmi okból új elemeket vezetünk be, melyek természetesen visszavezethet®ek a korábbiakra
KI: n
n
·n
←n+1
Legyen n eg é sz n ← 1 AM Í G n <= 10 KI : n * n n ← n +1
Strukturált C alapok
2015. szeptember 14.
Elöltesztel® ciklus C-ben a for utasítás
Strukturált programok elemei
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
31 / 47
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Tevékenység Léptetés
struktúra annyira gyakori a programozásban, hogy külön utasítással egyszer¶sítjük alkalmazását.
Strukturált C alapok
2015. szeptember 14.
32 / 47
Strukturált C-Strukturált Egyéb elemek
Elöltesztel® Hátultesztel® Választás
Strukturált C-Strukturált Egyéb elemek
Elöltesztel® ciklus C-ben a for utasítás
Elöltesztel® Hátultesztel® Választás
Elöltesztel® ciklus a for utasítás
Írjuk ki 1-t®l 10-ig az egész számok négyzeteit! n
←1
n
≤ 10 KI:
n
n
A for utasítás szintaxisa
Legyen n eg é sz n =1 - t ®l , AM Í G n <=10 , egyes é vel KI : n * n ·n
←n+1
1 2 3 4 5 6 7 8
for (; ; )
# include < stdio .h > int main () { int n ; for ( n = 1; n <= 10; n = n +1) printf ( " % d " , n * n ); return 0; }
1 2
for (n = 1 ; n <= 10 ; n = n +1 ) printf ( " % d " , n * n );
Utótevékenység az utasítás végrehajtása után történik meg. n: 11
1 4 9 16 25 36 49 64 81 100
1 4 9 16 25 36 49 64 81 100 c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
33 / 47
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Elöltesztel® Hátultesztel® Választás
Strukturált C-Strukturált Egyéb elemek
Szorzótábla
10 oszlopba írunk (col
Kiírjuk
= 1, 2, 3, ...10)
row*col
1 2
értékét
3
Majd új sort kell kezdenünk
3 4 5 6 7 8
34 / 47
Elöltesztel® Hátultesztel® Választás
Ne sajnáljunk blokkba zárni akár egyetlen utasítást is, ha ez követhet®bbé teszi a kódot!
Minden oszlopban
2
2015. szeptember 14.
Szorzótábla
Írjuk ki a 10 · 10-es szorzótáblát! 10 sort kell kiírnunk (row = 1, 2, 3, ...10) Minden sorban
1
Strukturált C alapok
4
int row ; for ( row = 1; row <= 10; row = row +1) { int col ; /* blokk elej é n deklar á ci ó */ for ( col = 1; col <= 10; col = col +1) printf ( " %4 d " , row * col ); /* ki í r á s 4 sz é lesen */ printf ( " \ n " ); /* m ár nincs benne a col for - ban */ }
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
5 6 7 8 9 10
35 / 47
int row ; for ( row = 1; row <= 10; row = row +1) { int col ; /* blokk elej é n deklar á ci ó */ for ( col = 1; col <= 10; col = col +1) { printf ( " %4 d " , row * col ); /* ki í r á s 4 sz é lesen */ } printf ( " \ n " ); }
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
36 / 47
Strukturált C-Strukturált Egyéb elemek
Elöltesztel® Hátultesztel® Választás
Strukturált C-Strukturált Egyéb elemek
Strukturált programok elemei
Elöltesztel® Hátultesztel® Választás
Strukturált programok elemei
Hátultesztel® ciklus
Visszavezethet® szekvenciára és elöltesztel® ciklusra
Tevékenység ismétlése mindaddig, míg egy feltétel teljesül ISM É TELD Ciklusmag AM Í G Felt é tel
Ciklusmag Tevékenység
Feltétel
Ciklusmag
Ciklusmag
Feltétel
H
H
I
I
Ciklusmag
I
Feltétel
H
Ciklusmag
Feltétel
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
37 / 47
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Elöltesztel® Hátultesztel® Választás
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
Hátultesztel® ciklus a do utasítás
2015. szeptember 14.
38 / 47
Elöltesztel® Hátultesztel® Választás
Hátultesztel® ciklus a do utasítás
Olvassunk be pozitív egész számokat! Akkor hagyjuk abba, ha az összeg meghaladta a 10-et! 1
sum
0
←
KI: A következ® szám: BE: sum
←
n
sum+n
sum <= 10
sum ← 0 ISM É TELD KI : Inf ó BE : n sum ← sum + n AM Í G sum ≤ 10 c Farkas B., Fiala P., Vitéz A., Zsóka Z.
2 3 4 5 6 7 8 9 10 11 12 13
# include < stdio .h > int main () { int sum = 0 , n ; do { printf ( " A k ö vetkez ® sz á m : " ); scanf ( " % d " , & n ); sum = sum + n ; } while ( sum <= 10); return 0; }
Strukturált C alapok
2015. szeptember 14.
39 / 47
A do utasítás szintaxisa do while (); 1 2 3 4 5 6 7
do {
printf ( " A k ö vetkez ® sz á m : " ); scanf ( " % d " , & n ); sum = sum + n ;
} while ( sum <= 10 );
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
40 / 47
Strukturált C-Strukturált Egyéb elemek
Elöltesztel® Hátultesztel® Választás
Strukturált C-Strukturált Egyéb elemek
Strukturált programok elemei
Strukturált programok elemei
Egész értéken alapuló választás
Megvalósítható egymásba ágyazott választásokkal
Tevékenységek alternatív végrehajtása egy egész kifejezés értéke alapján
I
kif.= 1
Tev. ha 1
I
H
kif.= 2
kif. vizsg. Tev. ha 2 1
2
3
?
Tev. ha 1
Tev. ha 2
Tev. ha 3
Tev.ha más
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Elöltesztel® Hátultesztel® Választás
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
2015. szeptember 14.
41 / 47
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Elöltesztel® Hátultesztel® Választás
H
kif.= 3
Tev. ha 3
Tev.ha más
Strukturált C alapok
2015. szeptember 14.
Strukturált C-Strukturált Egyéb elemek
Egész értéken alapuló választás a switch utasítás
I
H
42 / 47
Elöltesztel® Hátultesztel® Választás
Egész értéken alapuló választás a switch utasítás Rendeljünk szöveges értékelést számmal kifejezett jegyekhez!
Rendeljünk szöveges értékelést számmal kifejezett jegyekhez!
1 2 3
KI: infó n
5
=?
7
BE: n
A
1 KI:
2
A
KI:
A
3 KI:
elégtelen elégséges közepes
4
A
6
4
A
5
A
8
más
KI:
KI:
KI:
jó
jeles
baj van
9 10 11 12 13 14 15 16
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
43 / 47
# include < stdio .h > int main () { int n; printf ( " Adja meg a jegyet : " ); scanf ( " % d " , & n ); switch ( n ) { case 1: printf ( " el é gtelen " ); break ; case 2: printf ( " el é gs é ges " ); break ; case 3: printf ( " k ö zepes " ); break ; case 4: printf ( " j ó " ); break ; case 5: printf ( " jeles " ); break ; default : printf ( " baj van " ); } return 0; }
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
44 / 47
Strukturált C-Strukturált Egyéb elemek
Elöltesztel® Hátultesztel® Választás
Strukturált C-Strukturált Egyéb elemek
Egész értéken alapuló választás a switch utasítás
Egész értéken alapuló választás a switch utasítás
A switch utasítás szintaxisa
A break utasítások nem részei a szintaxisnak. Ha lehagyjuk ®ket, a switch akkor is értelmes, de nem a korábban specikált eredményt adja:
switch(<egész kifejezés>) { case : [case : ...]opt [default: <default utasítás> ]opt } 1 2 3 4 5 6 7 8 9
1 2 3 4
switch ( n ) { case 1 : printf ( " el é gtelen " ); break ; case 2 : printf ( " el é gs é ges " ); break ; case 3: printf ( " k ö zepes " ); break ; case 4: printf ( " j ó " ); break ; case 5: printf ( " jeles " ); break ; default : printf ( " baj van " ); }
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
Strukturált C-Strukturált Egyéb elemek
5 6 7 8 9
2015. szeptember 14.
45 / 47
Elöltesztel® Hátultesztel® Választás
A konstans kifejezések csak belépési pontok, ahonnan minden utasítást végrehajtunk az els® break-ig vagy a blokk végéig: 2 3 4 5 6 7 8 9
switch ( n ) { case 1: printf ( " megbukott " ); break ; case 2 : case 3: case 4: case 5: printf ( " á tment " ); break ; default : printf ( " baj van " ); }
Adja meg a jegyet: átment
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
2
Strukturált C alapok
switch ( n ) { case 1: printf ( " el é gtelen " ); case 2: printf ( " el é gs é ges " ); case 3: printf ( " k ö zepes " ); case 4: printf ( " j ó " ); case 5: printf ( " jeles " ); default : printf ( " baj van " ); }
Adja meg a jegyet: 2 elégségesközepesjójelesbaj van
Egész értéken alapuló választás a switch utasítás
1
Elöltesztel® Hátultesztel® Választás
2015. szeptember 14.
47 / 47
c Farkas B., Fiala P., Vitéz A., Zsóka Z.
Strukturált C alapok
2015. szeptember 14.
46 / 47