Mit jelent az, hogy pascalban. Téma: Loop REPEAT utófeltétellel. Önállóan megoldandó problémák

Téma: Hurok REPEAT utófeltétellel.

Már tudja, hogyan kell ciklust szervezni miközben operátor. Emlékezzünk vissza, hogy amikor ez az utasítás végrehajtódik, a számítógép kiszámítja a feltétel értékét. Ha a feltétel igaz, akkor a while utasítás végrehajtási része mindaddig végrehajtásra kerül, amíg ez a feltétel hamisra nem értékelődik. Ha a feltétel értéke a legelején False, akkor a while utasítás végrehajtási része egyáltalán nem kerül végrehajtásra.

A számítógépek használatában használható egyik fontos funkció éppen az, hogy képes megismételni a parancssorok végrehajtását nagy sebességés nagyfokú megbízhatósággal. Ebből a célból pontosan iteratív vezérlési struktúrákat határoznak meg a programozási nyelvekben. Ezeknek a struktúráknak az a célja, hogy lehetővé tegyék egy kifejezésnek egy utasítássorozat megismétlését, ezeket a struktúrákat huroknak, huroknak vagy huroknak nevezik.

Iteratív vezérlési struktúrák

A mindennapi életben vannak olyan helyzetek, amelyeket sokszor egy többszörösen ismétlődő lépéssorozat követésével oldanak meg, pl.

  • Az a folyamat, amelyet addig eszünk, amíg be nem fejezzük az ételt.
  • Az érmék behelyezésének folyamata a szükséges összeg kifizetéséig.
  • A telefonhívásra végrehajtott műveletek a kapcsolat létrejöttéig.
Mint látható, ezek olyan algoritmusok, amelyeket naponta hajtanak végre, de megvan az a sajátosságuk, hogy egyes lépései többször megismételhetők, amíg a célt el nem érik.

Néha a problémák megoldása során szükségessé válik a ciklus törzsének legalább egyszeri végrehajtása, majd megvizsgálja, hogy meg kell-e ismételni. Ezt a feladatot egy másik típusú ismétlési ciklus hajtja végre.

ismétlés ismétlés
operátorok operátorok
-ig <условие>; amíg a feltétel nem igaz

Az ismétlési ciklus felépítésében van egy kis eltérés a whilehoz képest: a végrehajtáshoz in hurok ismétlése Több utasítás esetén ezeket az utasításokat ne helyezze a kezdő ... vége operátor zárójelébe. A fenntartott szavak ismétlődnek és amíg zárójelként működnek.

Az ilyen típusú algoritmusok iteratív vagy iteratív algoritmusok néven ismertek. A parancsblokk minden esetben végrehajtásra kerül, és a kiértékelt feltétel igaz lesz. Hangsúlyozzuk, hogy a három parancs bármelyike ​​ugyanazt a feladatot hajtja végre, azaz egy lépéssorozat többszöri végrehajtását.

A további megértés érdekében az ábrázolást egy tevékenységi diagramon mutatjuk be. Érdemes megjegyezni, hogy ebben az utasításban a feltétel a ciklus elején kerül kiértékelésre, tehát ha a feltétel első kiértékelése hamis, akkor a ciklus nem hajtódik végre. Ebben az ismétlődő struktúrában egy parancsblokk mindig legalább egyszer végrehajtásra kerül, mert a feltétel a végén kerül kiértékelésre. Az egyetlen különbség az áramkör vezérlése. Az egyik utasítás kiválasztása a másikkal szemben személyes döntés.

Az ismétlés ... amíg a konstrukció a while ciklushoz hasonlóan működik. A különbség az, hogy a while ciklus a műveletek végrehajtása előtt ellenőrzi a feltételt, míg az ismétlési ciklus a műveletek végrehajtása után. ez garantálja a műveletek legalább egy végrehajtását, mielőtt a ciklus véget ér.

Például,

a) ismételje meg
olvas(Szám);
Összeg:= Összeg+Szám;
amíg Szám=-1

Nagyon fontos szempont A feltételes ciklusoknál azt kell szem előtt tartani, hogy egy parancsblokkon belül legalább egyet kell fontolóra venni, amely valamilyen módon módosítja - valamikor - a logikai kifejezés eredményét. A magyarázat egyszerűen abból adódik, hogy ha ez az utasítás nem létezik, amikor belép a ciklusba, akkor soha nem ér véget, mert egy végtelen ciklusba kerül. Az eddig látott iteratív folyamatok egy feltétellel zárulnak. Sok esetben az iterációkat bizonyos számú alkalommal hajtják végre, sok szerző számláló ciklusnak nevezi őket, mert előre ismert, hogy az iteratív folyamat hányszor kerül végrehajtásra.

b) ismételje meg
i:= i+1;
writeln(Sqr(i))
amíg Szám=-1

Feladat . Határozza meg, hogy a beírt szám prímszám-e.

A probléma megoldásának algoritmusa a következő lesz. A mod művelettel ellenőrizzük az összes egész számot 2-től a megadott számig. Ellenőrizzük, hogy a következő ellenőrzött szám osztója-e a számunknak (ami azt jelenti, hogy a beírt szám és az ellenőrzött szám osztásának maradéka nulla). Ha ilyen osztót találunk, az azt jelenti, hogy a ciklus valami i-edik lépésnél az ütemezés előtt befejezi a munkáját. Ha az osztó nem található, akkor a ciklus minden számot leellenőrzött, és az i ciklusváltozó értéke egyenlő lesz a végső értékkel, azaz. Szám. Ezért a ciklus rögzítése után a rendszer elemzi az i változó értékét, és megjelenik egy megfelelő üzenet.

Az ilyen típusú iterációban mindig szükség van egy olyan változóra, amely nyomon követi, hogy a folyamat hányszor ismétlődik, ezért ezeket vezérlőváltozós ciklusoknak is nevezik. Az utasítások szemantikája a következő. Csak egyszer kerül végrehajtásra a ciklus elején, jellemzően változók inicializálására és deklarálására, mivel a korábban említettek szerint csak egyszer kerül végrehajtásra. Minden iterációnál kiértékelődik, és a visszaadott értéktől függően meghatározza, hogy a ciklus fut-e tovább vagy sem. Mindig minden ciklusban végrehajtódik, amikor a kérdéses ciklushoz kapcsolódó összes utasítás végrehajtása befejeződött. Hasonlóképpen, ha egynél több utasítást szeretne végrehajtani, akkor azokat vesszővel kell elválasztani. Általában tartalmazhat némi frissítést a vezérlőváltozókhoz. . Vegye figyelembe, hogy a pontosvessző használatához minden kifejezést alkotó kifejezéshez a fordítónak szemantikai típushibát kell megjelenítenie.

Jegyzet . Emlékezzünk vissza, hogy a prímszám olyan szám, amelynek nincs 1-en és önmagán kívül más osztója.

A ciklus nem folytatódhat a végtelenségig, mivel bármely szám mindig osztható önmagával.

A ciklusok felépítésénél nagyon óvatosnak kell lenni: ügyeljen arra, hogy ne legyen hiba sem a ciklusba lépés fázisában, sem a ciklus befejezésének fázisában.

A fentiek jobb megértése érdekében a következő esettanulmányt mutatjuk be, amelyben az egyes ismétlődő struktúrákkal fogunk dolgozni. Kérjük, vegye figyelembe, hogy az 1., 2. és 3. lépés megismétlődik, és a 4. lépés pontosan az 1. lépéshez való visszatérésre szolgál, ezt az ismétlést általában iterációnak nevezik, vegye figyelembe, hogy ez nem végtelen, ez az első lépés, amely kimondja, hogy a következő lépéseket kell elvégezni. végrehajtani, ha nem felelnek meg a számok egyenlőségének feltételének. Ez a feltétel egy logikai kifejezés.

Futtassa az algoritmust egy értékpárra. . Egy szám számjegyeinek számának meghatározásához először osszuk el a számot 10-zel, ha az osztási arány 0, akkor vegyünk 1-et válaszként, de ha ezt a tényezőt elosztjuk 10-zel, ez a folyamat megismétlődik, míg az új tényező eltér a. A módszer megvalósításához a következőket kell figyelembe venni.

Gyakorlat . Válasszon ki két olyan problémát, amelyeket előfeltétel hurokkal oldott meg, és oldja meg őket egy utófeltétel hurok segítségével.

Feladatok a önálló döntés:

  1. Írjon programot az N!-M meghatározására! N! = 1*2*3*4*.........*n
  2. Kérjen felhasználónevet, és írja be a "Hello, Vasya!" 10 alkalommal. (ha Vasya a felhasználónév)
  3. A programnak ki kell számítania két szám szorzatát, és rá kell kérdeznie, hogy leállítja-e a programot vagy sem, ha nem, akkor folytassa az adatok kérését, a szorzat kiszámítását és kinyomtatását.
  4. Nyomtassa ki mindazon háromjegyű természetes számokat, amelyek számjegyeinek összege megegyezik a megadott N számmal. (Ne használjon div és mod műveleteket.)
  5. Írj egy programot, ami mindent kiír prímszámok, nem haladja meg ezt a számot.
  6. A város lakossága évente 3%-kal növekszik. 1983-ban a város lakossága 65 000 volt. Írjon programot, amely megjeleníti a város előre jelzett népességét 1999-ig.
  7. Keresse meg az összes természetes számot 1 és 1000 között, amelyek 3 többszörösei.
  8. Készítsen programot egy adott összeget meg nem haladó összegű áruvásárlás megtervezésére az üzletben.
  9. Írjon jelszókérő programot, amíg a jelszót helyesen be nem írja. A programnak tartalmaznia kell egy számlálót a helytelen jelszóbevitelhez.
  10. Az első N páratlan szám szorzata egyenlő p-vel. Hány tényezőt vesznek figyelembe?
  11. A Fibonacci-számokat (fn) a következő képletekkel határozzuk meg: f0=f1=1; fn=fn-1+fn-2, ahol n=2,3,...
    Hozzon létre egy programot:
    a) f - a 40. Fibonacci-szám definíciói;
    b) f keresése - az első m-nél nagyobb Fibonacci-szám (m>1);
    c) S számítások - az összes Fibonacci-szám összege, amelyek nem haladják meg az 1000-et.
  12. Önállóan találjon ki és oldjon meg egy utófeltételes ciklus használatával járó problémát.

A ciklikus szerkezetű algoritmus olyan algoritmus, amelyben a program ugyanazt a szakaszát sokszor megismétlik. A számítási folyamat ilyen ismétlődő szakaszait ciklusoknak nevezzük. Egy ciklusszerkezeti program egy vagy több hurkot tartalmaz. Vannak determinisztikus ciklusok előre meghatározott ismétlésszámmal és iteratív ciklusok, amelyekben az ismétlések száma előre nem ismert. A ciklusban változó változót hurokparaméternek nevezzük.

Ez a módszer így fog kinézni. Ne feledje, hogy egy szám faktoriálisa 1-ből a megadott számmal való szorzás eredménye. A módszer így fog kinézni. A mindennapi életben sok esetben nem elegendő egy utasításcsoportot többször megismételni, hanem ezeket az ismétléseket egyszerre többször is meg kell hajtani. Az ilyen típusú problémák összetett hurkokat vagy beágyazott ciklusokat tartalmazó algoritmusokat eredményeznek. A beágyazott vagy összetett hurkok csak olyan hurkok, amelyek egy utasításblokkon belül más ciklusokat hajtanak végre.

Egy vagy több hurok összeállításának ez a módja néhány tárolási struktúrával kombinálva nagyon hasznos néhány keresési és rendezési algoritmus megoldásához, amelyekről a tanfolyam későbbi részében lesz szó. Jellemzően egy adott algoritmus megoldására írt hurkok egy vezérlőváltozón lévő hurkok, ami nem jelenti azt, hogy ezt nem lehet megtenni feltételes ciklusokkal vagy a kettő kombinációjával, amelyek ezekben az esetekben ritkábban fordulnak elő.

A ciklus megszervezéséhez a következő lépéseket kell végrehajtania:
1) állítsa be a ciklusparaméter kezdeti értékét a ciklus előtt;
2) módosítsa a paramétert a ciklus minden új ismétlése előtt;
3) ellenőrizze a ciklusismétlés feltételét;
4) kezelni a ciklust, azaz. menjen az elejére, ha nem fejeződött be, vagy lépjen ki belőle, ha befejezte.

Quesada; Programozás Pascal segítségével, People and Education, szerzői csapat. . Viszonylag terjedelmes könyvet - tankönyvet mutatunk be népszerű nyelv Pascal programozása. A címet tankönyvnek szánjuk kezdő programozóknak. A bevezetőben ismerteti az alapelveket és funkciókat, és fokozatosan halad a bonyolultabb eljárások és algoritmusok felé.

Téma: Loop REPEAT utófeltétellel

Ez a könyv egy nemrégiben megjelent algoritmizálási tankönyven alapul – valójában gyakorlati rész. A könyv célja nem egy konkrét programozási nyelv megtanítása az olvasónak, hanem az, hogy mélyrehatóan megismertesse a programozás szabályaival, hogy a jövőben gyorsan elsajátíthassa az összes többi programozási nyelvet. Az információs technológia fejlődése olyan gyorsan halad előre, hogy nem az elavult enciklopédikus ismereteket kell megtanítani, mielőtt a tanulók gyakorlásra kerülnének, hanem az, hogy megtanítsuk a tanulókat egyfajta gondolkodásra.

A Pascalban háromféle hurok létezik:

1) hurok egy paraméterrel vagy típusú hurokkal számára,

2) előfeltételes hurok vagy hurokszerű míg,

3) utófeltételes vagy hurokhoz hasonló hurok ismételje meg ... amíg.

A for ciklusban az ismétlések száma előre ismert, in while és ismétlés ... ciklusig, a ciklus ismétlődéseinek száma előre ismeretlen, a ciklus ismétlési feltétele ellenőrzött: a while ciklusban - mielőtt a ciklus ismétlődik. hurok, ismétlésben ... ciklusig - utána érettségi.
A for és while típusok ciklusaiban az ismétlődő rész (ciklustörzs) egy utasításból áll, ha egy ciklusban több utasítást kell végrehajtani, akkor azok a begin ... end operátori zárójelek közé kerülnek, így összetett utasítást alkotnak. Az ismétlődő ... amíg ciklusban a ciklus törzse a fenntartott nyelvi szavak (lexémák) ismétlődései közé kerül, és a ciklus nevében nincs szükség operátori zárójelekre, a törzset hagyományosan három ponttal jelöljük.
A for ciklus használatával kényelmesen találhat összegeket, szorzatokat, kereshet maximális és minimális értékeket stb. Egy bizonyos változó, például S összegének megtalálásakor a 0 értéket adjuk hozzá, majd a ciklusban ehhez a változóhoz adjuk hozzá az adott sorozat megfelelő tagját. A szorzat megtalálásakor a változóhoz 1 értéket rendelünk, majd a ciklusban ezt a változót megszorozzuk közös tagja sorozatok.

Önállóan megoldandó problémák

Szoftver és életciklusa: Először is ismeri a termék általános életciklusát, majd az általános ciklus vonatkozik az életciklusra szoftver. A fejezet végén olyan iskolai feladatok, projektek létrehozásának alapelvei, amelyek eredménye életciklus szoftver.

Programozási nyelvek és programozási módszerek. Amit a programozás megkezdése előtt tudnia kell. Először ismerkedjen meg a program legdurvább felépítésével. Ezután vegye figyelembe, hogy mi jelenhet meg a programban, és hol jelenhet meg. A nyelv szintaxisa egyszerűen és csak mélyrehatóan van elmagyarázva, így elkezdheti. A részleteket a következő fejezetekben ismertetjük, ahol példákat is követnek. - Ezután egy rövid instrukció az adattípusokról - hányra lesz szüksége a közeljövőben.

Példa a for ciklusra

n Fibonacci szám kiszámítása:
F1=1; F2=1;…; Fn=Fn-1+Fn-2,
például F3=F2+F1=1 + 1 = 2; F4 = 2 + 1 = 3 stb.

program fib; (Fibonacci számok keresése)
var x, y, z, i, n: egész szám;
kezdődik
writeln('Írja be n'); olvas(n);
x:=1; y:=0;
i:=1-től n-ig
kezdődik
z:=x ; x:=x+y ; y:=z ;
write(" ", x);
vége;
readln;
vége.

Példa egy while ciklusra

Az y = a 3 /(a 2 +x2) függvény táblázatának összeállítása a [-1 szegmenshez tartozó x-re; 1] 0,1-es lépésekben. Mivel a for ciklus paraméternek egész számnak kell lennie, kényelmesebb a while ciklus használata, amelyben az x értéke minden lépésben megváltoztatható Dx = 0,1 értékkel.

program cycl_while;
crt-t használ; (a Crt modul felhívása a képernyő mód vezérléséhez)
var
a, x, y: valós ; i:integer;
kezdődik
clrscr ; (képernyőtörlési eljárás a Crt modulból)
writeln("Írja be a");
readln(a);
x:= -1.; writeln('x', 'y');
miközben csináld x<1.05 begin
y:= sqr(a)*a/ (a*a+x*x);
writeln(x:6:2, y:8:4);
x:=x+0,1
vége;
readln;
vége.

Állapot x<1.05 соответствует каждому значению х плюс половина шага.

Példa ismétlésre ... ciklusig

Határozzuk meg azt az n számot, amelyre az 1-től n-ig terjedő természetes számsor négyzetösszege nem haladja meg a billentyűzetről beírt K értéket! Azok.
S >= K, ahol S=

program sum_sq; (A természetes sorozat négyzeteinek összege)
crt-t használ;
var k, s, n: egész szám;
kezdődik
clrscr ;
writeln("Írja be a K-t");
readln(k);
s:=0; n:=1;
ismétlés
s:=s+n*n;
n: = n+1;
amíg s > k;
writeln("N= ", n: 3, " s= ", s: 5);
readln;
vége.

A ciklus addig ismétlődik, amíg a till kulcsszó után írt feltétel false (nem teljesül). Amint ez a feltétel teljesül, a hurok kilép. A ciklus vége után az eredmény kinyomtatásra kerül (a writeln utasítás). Ne feledje, hogy egy előfeltételes ciklus (mint például a while) nem hajtható végre még egyszer, egy ciklus, amelynek utófeltétele ismétlődik ...-ig, legalább egyszer végrehajtódik. Ha egy ciklus ismétlődéseinek száma előre nem ismert, akkor előfeltételes vagy utófeltételes hurkokat használnak. Ha egy ciklus megismétlődésének száma előre ismert, általában for ciklust használnak. De bármely for ciklus helyettesíthető elő- vagy utófeltételes ciklussal.