1 / 33

Ciklusok (iterációk)

Ciklusok (iterációk). 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.

aimee
Download Presentation

Ciklusok (iterációk)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. F Igaz Hamis U While F Do U; Vagy While F Do Begin U1; U2; End; Folyamatábrája: Pascal kódja: 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 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. 2.feladat: Írjuk ki az 1 és 100 közé eső összes 3- mal osztható számokat.

  8. Feladatok: • Írassuk ki n természetes, páratlan számok összegét: S= 1+ 3+ 5+ … +11+ 13+ ... • Írjatok egy programot, amely kiszámolja, hogy valamennyi megtakarított pénz, hány hónap múlva éri el a bankban a 100000 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.

  9. 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

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

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

  12. Az első 4 páros szám: 2,4,6,8 Ezek összege: s=20. 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.1.lépés: s=0+2=2 2.lépés: s=2+

  13. 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.

  14. 2. FOR- számláló/ növekményesciklus 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.

  15. ciklusváltozó:= kezdőérték Folyamatábrája: igaz ciklusváltozó<= végérték hamis U ciklusváltozó növelése Pascal kódja: FORciklusváltozó:= kezdőértékTOvégértékDO U;

  16. 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 FORciklusváltozó:= kezdőértékvégértékDO DOWNTO

  17. É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.

  18. Jelentősége: Például ha kiakarunk számítani egy összeget: S=1+3+5+7+…. +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 begin utasítás; i:=i+1; end; 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;

  19. 1.feladat: Most 2008- 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.

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

  21. Menükészítés

  22. 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 1 2 3 ……… 1 2 3 … n b) n n-1 n-2 … 3 2 1 ………………… 3 2 1 2 1 1

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

  24. 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=1- 2+3-4+ … +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!

More Related