Ciklusok (iterációk).

Slides:



Advertisements
Hasonló előadás
Vezérlő utasítások.
Advertisements

Elemi algoritmusok Páll Boglárka.
Programozási feladatok
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.
Gyakorló feladatsor eljárásokra Készítette: Rummel Szabolcs Elérhetősé:
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Ismétlés: Döntések a feltétel egy logikai kifejezés if feltétel then
3. előadás (2005. március 1.) Utasítások, tömbök
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Programozás alapjai.
Sztringek.
C A C nyelv utasításai.
Egydimenziós tömbök. Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév:
Egy feladat megoldásának gondolatmenete. Feladat: Generáljuk véletlen számokat 1 és 6 között, amíg legalább 10 darab egyes és 10 darab hatos nem lesz.
Készítette: Pető László
Programozás módszertan
Algoritmizálás Göncziné Kapros Katalin humaninformatika.ektf.hu.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Programozás I. Ciklusok
ISZAM III.évf. részére Bunkóczi László
Programozás C# -ban Elágazások.
Programozás C# - ban Feladatsorok.
C nyelv utasításai.
Ismétlő struktúrák.
A Pascal programozási nyelv alapjai
Ismétlés A pascal program szerkezete: program programnev; Programfej
Kifejezések. Algoritmus számol; Adott összeg; összeg:=0; Minden i:=1-től 5-ig végezd el Ha 2 | i akkor összeg:=összeg+2*i Ha vége Minden vége Algoritmus.
Ciklusok: 3. Hátultesztelő ciklus
Ciklusok: 1. Számlálós ciklus
Ciklusok: 2. Előltesztelő ciklus
Félévi típus feladatok
Feladatok: Algoritmusok Pszeudokódban
A Pascal programozási nyelv alapjai
Átalakítás előltesztelő ciklusból hátultesztelő ciklusba és fordítva.
Algoritmusok.
ismétlődő (azonos vagy hasonló) tevékenységek megvalósítására szolgál
Tömbök és programozási tételek
Programozási nyelvek, Pascal
Szintaktikai, szemantikai szabályok
Összetett adattípusok
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Nevezetes algoritmusok
Algoritmusok.
Csempe Programozás érettségi mintafeladat
Elnevezések, ciklusok, feltételvizsgálat
Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás. Adott egy N elemű közösen használt tároló, N  1. Adott a folyamatoknak.
Programozás I. Típus algoritmusok
Feladatok (értékadás)
Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 7. előadás.
Programozás, programtervezé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.
Mintapélda Készítsünk programot, amely beolvas egy egész számot, és eldönti arról, hogy prímszám-e. Készítsünk programot, amely beolvas egy egész számot,
Összeállította: Sashalmi Tibor
Excel programozás (makró)
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ó.
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 Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Programozás alapjai Készítette: Csiszár Nóra Anita
Programozási alapok.
Nevezetes algoritmusok
Excel programozás (makró)
Programozás C# -ban Elágazások.
Bevezetés a programozásba Algoritmikus gondolkodás
Változók.
ITERÁCIÓ.
Informatikai gyakorlatok 11. évfolyam
Informatikai gyakorlatok 11. évfolyam
Informatikai gyakorlatok 11. évfolyam
Előadás másolata:

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

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)

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!

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.

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.

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.

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

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

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

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.

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+

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.

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.

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;

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

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

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=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 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;

1. feladat: Most 2008- at írunk 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.

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.

Menükészítés

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

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)

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!