Umíte pascalsky - 6.lekce ...

Umíte pascalsky?
6.lekce
Vytisknout  

Základní příkazy - 3.část
     Dnes dokončíme základní příkazy cyklem while a repeat.

Cyklus While

Pokud neznáme explicitně, kolikrát se má příkaz opakovat, ale známe podmínku pro opakované provedení příkazu, pak je tu příkaz while. Má tvar:

while podmínka do
     příkaz

podmínka za klíčovým slovem while je výraz typu boolean
příkaz je jediný příkaz - tělo cyklu. Pokud chceme v těle cyklu více příkazů, musíme použít složeného příkazu (begin ... end)

Realizace: Vyhodnotí se podmínka. Má-li hodnotu true, provede se příkaz a opět se vyhodnotí podmínka. Tento proces se opakuje znovu. Příkaz se neprovede - tedy cyklus while skončí - když podmínka má hodnotu false. Pokud je tedy podmínka splněna, příkaz se opět provádí, v cyklu setrváváme.
Pozor na nekonečný cylus! Musí tedy nastat situace, kdy podmínka splněna nebude,potom se cyklus ukončí.
Cyklus while je tedy cyklus s podmínkou setrvání v cyklu na začátku cyklu.

Příklad: Následující cyklus:

kolik:=1;
while kolik <= 5 do
   begin
      write(kolik);
      kolik:=kolik+1;
   end;

vytiskne     12345

Příklady:

Příklad1:
Sestavte program pro výpočet zadané přirozené mocniny zadaného přirozeného čísla pomocí cyklu while.
Např. 3 5 = 243
Jedničku opakovaně násobíme trojkou, dokud to neprovedem 5 krát.

Myšlenka (hrubý algoritmus):
Načteme základ a exponent. Jedničku opakovaně násobíme základem, dokud je počet násobení menší než exponent.

Program může vypadat takto:

program Umocni;
  var mocnina, zaklad, exponent, nasob: integer; {Deklarace proměnných}
  begin
    writeln('Zadejte zaklad a exponent'); {Napíše výzvu k zadání}
    readln(zaklad,exponent);    {Načte základ a exponent}
    mocnina := 1; {inicializuje proměnnou mocnina}
    nasob := 0; {nasob uchovává počet násobení}
    while nasob < exponent do {násob je menší než exponent?}
        begin  
            mocnina:=mocnina * zaklad; {mocninu vynásobí základem}
            nasob:=nasob + 1; {zvětší počet násobení o 1}
        end;  
    writeln('Mocnina je ',mocnina); {vytiskne výslednou mocninu}
  end.


Cyklus Repeat

Pokud neznáme explicitně, kolikrát se má příkaz opakovat, ale známe podmínku, kdy se má opakované provádění příkazu ukončit, pak použijeme cyklus Repeat. Má tvar:

repeat
    příkaz1;
    ...
    příkazn;
until  podmínka

repeat,until klíčová slova
příkaz1,...,příkazn opakované příkazy - tělo cyklu
podmínka je výraz typu boolean

Realizace: Postupn2 se provedou všechny příkazy příkaz1,...,příkazn v uvedeném pořadí. Potom se vyhodnotí podmínka. Má-li hodnotu false, opět se provedou příkazy těla cyklu - proces se opakuje. Má-li podmínka hodotu true, příkazy se již neprovedou - cyklus se ukončí.
Je-li podmínka splněna, cyklus repeat končí.

Pozor na nekonečný cylus! Musí tedy nastat situace, kdy podmínka bude splněna, potom se cyklus ukončí.
Cyklus repeat je tedy cyklus s podmínkou ukončení v cyklu na konci cyklu.

Příklad: Následující cyklus:

kolik:=0;
repeat
      kolik:=kolik+1;
      write(kolik);
until kolik=5;

vytiskne     12345

Příklady:

Příklad2:
Sestavte program pro výpočet zadané přirozené mocniny zadaného přirozeného čísla pomocí cyklu repeat.
Např. 3 5 = 243
Jedničku opakovaně násobíme trojkou, skonči až to bude 5 krát.

Myšlenka (hrubý algoritmus):
Načteme základ a exponent. Jedničku opakovaně násobíme základem a skončíme, až bude počet násobení roven exponentu.

Program může vypadat takto:

program Mocni;
  var mocnina, zaklad, exponent, nasob: integer; {Deklarace proměnných}
  begin
    writeln('Zadejte zaklad a exponent'); {Napíše výzvu k zadání}
    readln(zaklad,exponent);    {Načte základ a exponent}
    mocnina := 1; {inicializuje proměnnou mocnina}
    nasob := 0; {nasob uchovává počet násobení}
    repeat  
            mocnina:=mocnina * zaklad; {mocninu vynásobí základem}
            nasob:=nasob + 1; {zvětší počet násobení o 1}
    until nasob=exponent; {počet násobení roven exponentu}
    writeln('Mocnina je ',mocnina); {vytiskne výslednou mocninu}
  end.



Domácí úkol:

    1) Sestavte program pro nalezení největšího čísla ze zadaného počtu celých čísel pomocí cyklu while.
    2) Sestavte program pro nalezení nejmenšího čísla ze zadaného počtu celých čísel pomocí cyklu repeat.

On-line účast na řešení úkolu

Řešit úkol Prohlídka hodnocení úkolu Dotazy,připomínky

Pomocí volby Řešit můžete (po přihlášení) odeslat vaše řešení domácího úkolu (každý úkol smíte řešit jen jednou). Volbou Hodnocení si přečtete hodnocení a komentář od vyučujícího. Dotaz nebo připomínku můžete opakovaně zasílat pomocí tlačítka Dotazy, Komunikace (na levém okraji) zobrazuje příklad možné komunikace s vyučujícím.