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

Ciklusok (iterációk).

Hasonló előadás


Az előadások a következő témára: "Ciklusok (iterációk)."— Előadás másolata:

1 Ciklusok (iterációk)

2 A program egyik legfontosabb tulajdonsága, hogy ismétléseket képes végrehajtani.
A ciklus (iteráció) ismétlést jelent, ilyenkor egy vagy több utasítás újra és újra végrehajtódik. Nem érdemes számítógépre vinni olyan problémát amely egy számolást csak egyszer végez el. Gyakoribbak azok a feladatok, amelyben egy számolási eredményt sokszor kell produkálni különböző induló értékek mellett. Vannak olyan esetek amikor az iterációk számát előre eltudjuk dönteni, de van azonban amikor a futási körülményektől függ. Pl. – ha a hét minden napjára akarunk végezni valamilyen számolást, akkor a program írásakor tudjuk, hogy az iterációk, ismétlések száma 7 lesz. - ha megadott számok között keresünk egy adott tulajdonságú számot, akkor nem tudjuk előre megadni az ismétlések számát. A számokat sorban ellenőrizzük, hogy rendelkezik- e az adott tulajdonsággal és ha igen akkor a keresést nem folytatjuk tovább. A program tehát az adatbekérést addig hajtja végre ismételten, ameddig a program használója nem hajlandó valamilyen, a program számára elfogadható adatot beütni. Ilyenkor az ismétlések számát képtelenség megjósolni. Lehet hogy elsőre beüti a használható értéket, de lehet, hogy még másnap se lép ki a ciklusból.

3 A ciklusból való kilépésnek feltétele van!
Itt az a feltétel, hogy a beütött érték elfogadható legyen. Előfordulhat, hogy a ciklusnak belépési feltétel van: csak akkor akarjuk végrehajtani a ciklus magját (utasítások sorozatát), ha bizonyos feltételek teljesülnek. Pl. csak akkor sípoljon a gép, ha lenyomom a Space billentyűt. A pascal programozási nyelv, három mechanizmust kínál az iterációk megvalósítására. Ezek a következők: WHILE- előtesztelős ciklus (feltételes) REPEAT- hátul tesztelős ciklus (feltételes) FOR- számláló ciklus (növekményes)

4 1. WHILE- előtesztelős ciklus
A program még a ciklusba való belépés előtt megvizsgál egy feltételt (ez a belépési feltétel) és ha ez teljesül, akkor a ciklusmag végrehajtódik, egyébként nem. A ciklusmag ismételten végrehajtódik, míg a belépési feltétel teljesül. Ha már nem teljesül, akkor a vezérlés a ciklus utáni utasításra kerül. WHILE … DO jelentése: amíg … csináld Amíg a feltétel igaz, hajtsd végre az utasítást!

5 While F Do U; Begin U1; U2; End; Folyamatábrája: Pascal kódja:
Vagy Begin U1; U2; End; F U Hamis Igaz ciklusfeltétel ciklusmag A while ciklusnak képesnek kell lennie arra, hogy a végrehajtás feltételét megváltoztassa. Ha a ciklusfeltétel sosem változik meg, akkor a ciklusból való kilépés reménytelen, ezt nevezzük végtelen ciklusnak.

6 A ciklusfeltétel megváltoztatása a ciklusmag dolga.
A végtelen ciklus programozási hiba, ebben az estben a program lemerevedik, ilyenkor le kell ütni a Ctrl-Break vagy Ctrl-C billentyűkombinációt, mely megszakítja a program futását. Adjuk meg tehát a lehetőséget, hogy a ciklusfeltétel hamis is lehessen. A ciklusfeltétel megváltoztatása a ciklusmag dolga. A while ciklus tipikusan olyan problémák megoldására javasolt, melyben az induló feltételek határozzák meg a ciklusmag végrehajtásának szükségességét. 1.feladat: olvassunk be számokat addig, míg egy nullát nem ütnek be. A nulla lezárja a sorozatot. Írjuk ki a beütött számok darabszámát és összegét.

7

8 2. feladat:. Írjuk ki az 1 és 100 közé eső összes 3- mal
2.feladat: Írjuk ki az 1 és 100 közé eső összes 3- mal osztható számokat.

9 Feladatok: Írassuk ki n természetes, páratlan számok összegét:
Írjatok egy programot, amely kiszámolja, hogy valamennyi megtakarított pénz, hány hónap múlva éri el a bankban a Ft- ot, ha havi 2%-os kamattal számol. Számoljátok ki az n. szám faktoriálisát. Pl.: 5!=1*2*3*4*5 =120 Mozgassunk a képernyőn egy karaktert, 4 billentyű segítségével. Beolvasunk egy sorozat egész számot. Írassátok ki a sorozatban kapott legnagyobb értéket.

10 2. REPEAT- hátul tesztelő ciklus
Ebben az esetben a ciklus magja egyszer mindenképpen végrehajtódik, majd a ciklus végén történik egy feltételvizsgálat, ami eldönti, hogy kiléphetünk- e a ciklusból vagy sem. Ha nem léphetünk k, akkor újból végrehajtódik. Itt a feltétel kilépési feltétel, vagyis abba lehet hagyni a ciklust. REPEAT … UNTIL; jelentése: Ismételd … Amíg

11 Repeat U Until F; Repeat Begin U1; U2; End; Until F;
Folyamatábrája: Pascal kód: Repeat U Until F; Vagy Repeat Begin U1; U2; End; Until F; F U Hamis Igaz

12 1. feladat: Kérjünk be egy számot
1.feladat: Kérjünk be egy számot! A számot csak akkor fogadjuk el, ha az 1 és 31 közé esik.

13 2.feladat: Számítsuk ki az első n természetes páros szám összegét.
Az első 4 páros szám: 2,4,6,8 Ezek összege: s=20. Az első 4 páros szám: 2, 4, 6.1.lépés: s=0+2=2 2.lépés: s=2+

14 Feladatok: Olvassuk be egy háromszög oldalainak hosszuságát. A beolvasást addig ismételjük, míg nem teljesül a következő két feltétel: - az adatok tényleg lehetnek egy háromszög oldalai - a háromszög területe 20 és 30 közé esik Adjunk üzenetet, ha valamelyik feltétel nem teljesül. Adjátok meg az első n páros szám szorzatát.

15 2. FOR- számláló/ növekményes ciklus
Számláló, vagy növekményes ciklus esetén a ciklusmagot egy előre meghatározott szám- szor hajtunk végre. A ciklusváltozót (ciklust kísérő változó), valamint az értékhatárokat (kezdőérték és végérték) a programozó adja meg. Pl. n Byte típusú változó 1 és 10 közötti érétkeire, a végrehajtások száma 10. tehát a kezdőérték 1 és a végérték 10, az ismétlések száma tehát a ciklusváltozó 10. A FOR egy előtesztelős ciklus, ahol előre lehet tudni, hogy a ciklusmag hányszor kerül végrehajtásra. A kezdő és végértékeknek értékadása szerint kompatibilisnek kell lennie a ciklusváltozóval.

16 FOR ciklusváltozó:= kezdőérték TO végérték DO
Folyamatábrája: ciklusváltozó:= kezdőérték igaz ciklusváltozó<= végérték hamis U ciklusváltozó növelése Pascal kódja: FOR ciklusváltozó:= kezdőérték TO végérték DO U;

17 A FOR ciklus magját mindaddig kell végrehajtani, ameddig a ciklusváltozó értéke egy megadott határon belül van. A ciklusba való belépéskor a ciklusváltozó kezdőértéket kap, amely minden cikluslépésben egyesével növekszik (a DO alkalmazás esetén) illetve csökken (a DOWNTO alkalmazás esetén). A ciklusmag mindaddig hajtódik végre, amíg a ciklusváltozó el nem éri a végértéket. TO FOR ciklusváltozó:= kezdőérték végérték DO DOWNTO

18 Észrevételek: A Do után nem szokás ; tenni
Az értékadó utasításban := kell tenni, nemcsak = Ha a ciklusmag több utasításból áll, akkor ahhoz hogy mindegyik utasítást végre hajtsa Begin és ENd közé kell raknunk őket. A ciklusváltozó bármely felsorolt típus lehet, azaz: byte, ShortInt, Integer, Word, LongInt, valamint lehet karakter, logikai, felsorolt, stb. ezek mind sorszámozott típusúak, ez azért is fontos, mert csak az ilyen típusúakat tudja léptetni a program, a valósat például nem. A kezdő és végértékeknek természetesen a ciklusváltozó típusához kell igazodniuk.

19 Kedvező lenne ha bármilyen ilyen típusú utasítást:
Jelentősége: Például ha kiakarunk számítani egy összeget: S= …. +2*n-1, akkor ezt eddigi ismereteink alapján így írnánk meg: s:=0; i:=1; while i<=n do begin s:=s+2*i-1; i:=i+1; end; Kedvező lenne ha bármilyen ilyen típusú utasítást: i:=kezdőérték; while i<= végérték do utasítás; könnyebben lehetne megírni, ugyanis gyakran használják. Ezt csakis a növekményes ciklussal lehetne megvalósítani: s:=0; for i:=1 to n do s:=s+2*n-1;

20 1. feladat: Most 2008- at írunk
1.feladat: Most at írunk. Írjuk ki, hogy az elkövetkező években 2022-ig, melyik évben mennyi lesz József fizetése, ha az évenként10%- kal növekszik. József fizetése pillanatnyilag 80ezer Ft.

21

22 2. feladat: Rajzoljunk ki a képernyőre egy 40 széles és 10 magas
2.feladat: Rajzoljunk ki a képernyőre egy 40 széles és 10 magas csillagokból álló téglalapot.

23 Menükészítés

24

25

26 Feladatok: 1. Készítsétek el a következő számpiramist, ahol az n szám értékét a billentyűzetről adtok meg, bekéri a program: a) 1 1 2 ……… … n b) n n-1 n-2 … ………………… 1

27 c) Páratlan számok piramisa: d) Páros számok piramisa:
……… …………… …… (2*n-1) …… 2*n e) 1 1 2 3 …………………………………………………. 1 ………………………………………………… (2*n – 1)

28 2. Számítsátok ki a következő sorozatok értékeit:
a) P=(1- 1/2*2)*(1- 1/3*3)* … *(1- 1/n*n) b) S=1+1*2+1*2*3+ … + 1*2*3*…*n c) E=1- 1*2+1*2*3- … +1*2*3*…*n d) F= … +n 3. Határozd meg egy szám adott kitevőjű hatványra emelésének értékét. 4. Határozd meg egy szám osztóit, írasd is ki őket!

29

30

31

32

33


Letölteni ppt "Ciklusok (iterációk)."

Hasonló előadás


Google Hirdetések