Fájlok írása Pytonban!
Elkészült a Python nyelv Szövegfájlok írása tananyagunk! Jó tanulást, jó gyakorlást!

<info9>

Ciklusok - a do...while

A do ... while ciklus a while ciklushoz hasonlóan egy műveletek megismétlésére használt vezérlési szerkezet. Annyiban különbözik a sima while ciklustól, hogy míg a while a ciklusmag lefuttatása előtt ellenőrzi le hogy teljesült-e a feltétel, addig a do...while a ciklus belsejének futtatása után végzi el az ellenőrzést, azaz a ciklus belseje minimum egy alkalommal biztosan le fog futni akkor is, ha a feltétel egyébként az első futás előtt nem teljesülne. Ezt a vezérlési szerkezetet hátul tesztelő ciklusnak nevezzük.

Hátul tesztelő ciklussal általában ritkábban találkozunk, mint az elöl tesztelő, vagy a számlálásos ciklussal, azonban ha megértjük a működését, akkor bizonyos helyzetekben kényelmes lehet. Az alábbi példában például do... while segítségével kockadobásokat szimulálunk addig, ameddig egy 6-ost nem dobunk:

Random rnd = new Random(); int dobas; do { dobas = rnd.Next(1,7); Console.WriteLine(dobas); } while (dobas != 6) Console.WriteLine("Vége!"); [ { "steps": [0], "variables": [ {"name":"rnd","value":"Véletlen generátor"} ], "hint": "Létrehozunk egy új véletlenszám generátort."}, { "steps": [1], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":""} ], "hint": "Létrehozunk egy új változót dobas néven."}, { "steps": [2], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":""} ], "hint": "A ciklus első alkalommal mindenképp lefut."}, { "steps": [3], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":"5"} ], "hint": "A dobas változóba új véletlen számot generálunk 1 és 6 között."}, { "steps": [4], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":"5"} ], "hint": "A generált számot (5) kiírjuk a konzolra.", "console":"5"}, { "steps": [5], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":"5"} ], "hint": "Ellenőrizzük a feltételt. A dobas értéke nem 6, így a ciklus ismét lefut.", "console":"5"}, { "steps": [3], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":"3"} ], "hint": "A dobas változóba új véletlen számot generálunk 1 és 6 között.", "console":"5"}, { "steps": [4], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":"3"} ], "hint": "A generált számot (3) kiírjuk a konzolra.", "console":"5\n3"}, { "steps": [5], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":"3"} ], "hint": "Ellenőrizzük a feltételt. A dobas értéke nem 6, így a ciklus ismét lefut.", "console":"5\n3"}, { "steps": [3], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":"6"} ], "hint": "A dobas változóba új véletlen számot generálunk 1 és 6 között.", "console":"5\n3"}, { "steps": [4], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":"6"} ], "hint": "A generált számot (6) kiírjuk a konzolra.", "console":"5\n3\n6"}, { "steps": [5], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":"6"} ], "hint": "Ellenőrizzük a feltételt. A dobas értéke 6, így a ciklusnak vége.", "console":"5\n3\n6"}, { "steps": [6], "variables": [ {"name":"rnd","value":"Véletlen generátor"}, {"name":"dobas","value":"6"} ], "hint": "Kiírjuk a Vége! feliratot a konzolra.", "console":"5\n3\n6\nVége!"} ]

Mintakód

Fontos!
A valasz nevű változót azért hozzuk létre még a do...while előtt, mert ha a ciklus kapcsoszárójeleiben hoznánk létre, akkor azon kívül (pl. a feltételben) már nem lehetne elérni azt. Ha szeretnél egy változót a ciklus belsejében is, és a feltételben is használni, hozd létre még a ciklus előtt!

Készítsünk tippelgetős játékot. A játék megjelenít egy kérdést, majd bekér rá egy választ. Ha a válasz hibás, újra bekér egy választ, és ismétli mindezt addig, ameddig a helyes választ be nem írjuk.

Console.WriteLine("Fekete apró erdei gyümölcs. Mi az?");

string valasz;

do {
   Console.Write("Válaszod: ");
   valasz = Console.ReadLine();
} while( valasz != "ribizli");

Coonsole.WriteLine("Helyes!");

A feladat megoldásához azért használtuk a hátul tesztelő ciklust, mert legalább egy alkalommal biztosan be kell kérnem választ a felhasználótól, így előnyös egy olyan ciklus, aminek a tartalma legalább egyszer mindenképp lefut a feltétel ellenőrzése előtt.