2018. október 24., szerda

2018.10.24. Elmélet: Ciklusok

Feladat: mindenki ossza meg velem a digifüzetét, aki még nem tette. Továbbá csinálj a Drive-odon egy Programozás házi mappát (ha eddig nem volt) és oszd meg velem azt is.

A gyakorlati számonkérés beadásának ellenőrzése.
Megbeszéljük, mi lesz a szünet után két hétig, amíg helyettesítés lesz.

Ma vesszük a ciklusos elméleti lecke elejét (számlálós ciklusokig). Pénteken megbeszéltük, hogy végig kell tudni.

Pénteken elmélet röpdolgozat.

----------------------------------------------------------------------------------------------------------

Ismétlődő utasítások – feltételes ciklusok

A feladatok megoldása során találkozhatunk olyan utasításokkal, melyeket ismételten, többször is végrehajtunk. SMS küldésénél például egymás után írjuk be a mobiltelefonba a karaktereket.
Ciklus (iteráció): egymás után többször végrehajtásra kerülő, ismétlődő utasításcsoport.

Ismétlődő utasítások:
ISMÉTLÉS AMÍG nincs vége az üzenetnek
            írd be a következő karaktert
ISMÉTLÉS VÉGE

Az algoritmusokban az ismétlés szó helyett általában a ciklus szót használjuk.
Ha előre nem fogalmaztuk meg az üzenetet, akkor nem tudjuk a karakterek számát. Az ismétlés egy feltétel bekövetkezésétől függ: egymás után írjuk be a karaktereket addig, amíg nincs vége az üzenetnek.

Ritkán szoktunk olyan üzenetet küldeni, amely egyetlen karakterből sem áll. Ezért az ismétlés feltételét megvizsgálhatjuk a tevékenység (az első betű beírása) után. Lehetséges, hogy a feltételt az utasítások végrehajtása előtt nem is tudjuk kiértékelni. (Kiértékelés: eldönteni a feltételről, hogy igaz, vagy sem).

A feltétel kiértékelésének helyétől függően a ciklus lehet:
a, elöltesztelő ciklus: a feltételt az utasítások végrehajtása előtt értékeljük ki;
b, hátultesztelő ciklus: a feltételt az utasítások végrehajtása után értékeljük ki;

Hátultesztelő ciklus:
CIKLUS
            írd be a következő karaktert
AMÍG nincs vége az üzenetnek
CIKLUS VÉGE

Vegyük észre, hogy ha eleve nem teljesül a feltétel, akkor az elöltesztelő ciklus egyszer sem kerül végrehajtásra. Ha a telefonhívásnál foglalt a vonal, akkor várunk egy kicsit, majd újra tárcsázunk. Nincs szükség a várakozásra, és az ismételt hívásra, amikor ismerősünk egyből felveszi a telefont.

A hátultesztelő ciklus utasításait viszont legalább egyszer végrehajtjuk. Egy magasugró versenyen a sportoló annyiszor ismételhet, ahányszor átugorja a lécet. Ha átugrotta, magasabbra emelik, és megint ugorhat. Amíg nem ugrott, nem tudjuk megmondani, hogy ismételhet-e. A magasugrás a hátultesztelő ciklus példája.

Hátultesztelő ciklust általában akkor alkalmazunk, ha a ciklus kezdetén még nem tudjuk ellenőrizni az ismétlés feltételét.

Ismétlési és kilépési feltételek

Az SMS küldésére vonatkozó példánkban egy feltétel tagadása szerepelt:
CIKLUS AMÍG nincs vége az üzenetnek
A feltétel tagadása megnehezíti az algoritmusok értelmezését. Célszerű bevezetnünk olyan ciklustípust, amelyben az ismétlés feltétele helyett a kilépés feltételét adjuk meg.
Ismétlési feltétel: teljesülése esetén ismétlődik a ciklus utasításainak végrehajtása.
Kilépési feltétel: teljesülése esetén kilépünk a ciklusból (abbahagyjuk az utasítások ismétlését).

Ciklus kilépési feltétellel:
CIKLUS MÍGNEM vége van az üzenetnek
            írd be a következő karaktert
CIKLUS VÉGE

A kilépési feltételre a MÍGNEM szóval utalhatunk. Addig jár a korsó a kútra, amíg el nem törik – tartja a közmondás. Kilépési feltétellel így fogalmazhatjuk meg: addig jár a korsó a kútra, mígnem eltörik.
A programozási nyelvekben az ismétlési feltételre általában a WHILE, a kilépési feltételre az UNTIL szó utal.

Vegyük észre, hogy a kilépési feltétel éppen tagadása az ismétlési feltételnek. Azt választjuk közülük, amelyikkel egyszerűbben írhatjuk le az algoritmust.
A feltételes ciklusok tehát lehetnek elöl-, illetve hátultesztelőek. A feltétel mindkét típusnál vonatkozhat az ismétlésre vagy a kilépésre.

Ismétlődő utasítások – számlálós ciklusok

Az SMS-küldésnél (hagyományos mobiltelefonon) bizonyos betűk beírásához a nekik megfelelő billentyűt többször le kell nyomni. Az S betűt például a 7-es billentyű négyszeri megnyomásával érjük el. Ekkor előre tudjuk az ismétlések számát.

A ciklusok típusai:
a, számlálós ciklus: előre tudjuk az ismétlések számát;
b, feltételes ciklus: az ismétlések száma egy feltétel teljesülésétől függ.

Számlálós ciklus:
CIKLUS 4-szer
            nyomd le a 7-es billentyűt
CIKLUS VÉGE

Ciklusváltozó alkalmazása:
CIKLUS számláló = 1-től 100-ig:
            ugord át a kötelet
CIKLUS VÉGE

Ha sokszor kell végrehajtanunk egy számlálós ciklust, akkor célszerű valamilyen módon nyilvántartanunk az ismétlések számát. Strigulákat húzhatunk papíron, vagy készíthetünk elektronikus számlálót is. Az algoritmusban jelezhetjük a számláló alkalmazását.

Az ugrókötelezésnél 100-szor kell átugornunk a kötelet. A számláló értéke 1-től kezdve minden egyes ismétlésnél eggyel megnő. Amikor túllépte a 100-at, akkor már nem kerül sor az ugrás megismétlésére. A számlálót ciklusváltozónak nevezzük. A számláló értékét felhasználhatjuk a ciklus utasításaiban.


A számlálónak a végértékkel való összehasonlítását elvégezhetjük a ciklusutasítások végrehajtása előtt, illetve után. A számlálós ciklusok általában előre veszik az összehasonlítást (elöltesztelő ciklus). Ha a kezdőérték eleve túllépi a végértéket, akkor a ciklusutasítások egyszer sem kerülnek végrehajtásra.

Nincsenek megjegyzések:

Megjegyzés küldése