Instrukcje iteracyjne

Łatwo można zauważyć, że poprzednie programy wykonują wielokrotnie te same czynności. INSTRUKCJE ITERACYJNE służą do ograniczenia cykli programowych, tj. wielokrotnego wykonywania pewnych sekwencji instrukcji.

W języku Turbo Pascal występują trzy instrukcje iteracyjne.

Instrukcję iteracyjną "dla" FOR stosuje się w programie w przypadku, gdy liczba powtórzeń jest znana w danym miejscu programu. Instrukcja for może mieć jedną z dwóch postaci:

gdy wartość początkowa się zwiększa

FOR wartość := wartość_pocz TOwartość_końcowa DO instrukcja

gdy wartość początkowa się zmniejsza

FOR wartość := wartość_pocz DOWNTO wartość_końcowa DO instrukcja

następny program Program z zastosowaniem pętli FOR "dla" wyświetlający całą tabliczkę mnożenia z jednym pustym wierszem po każdym słupku.

Program Pet_For;

    uses Crt;

    var mnoznik:byte;

    mnozna:byte;

Begin

    ClrScr;

    For mnoznik:=1 to 10 do

    begin

      For mnozna:=1 to 10 do

      WriteLn(mnozna,'*',mnoznik,'=',mnozna*mnoznik);

      WriteLn;

      readkey;

    end;

End.

powrót do głównego menu

instrukcja While - "dopóki" Program z zastosowaniem instrukcji iteracyjnej FOR oczekujący 10 razy na naciśnięcie klawisza a następnie za każdym razem wyświetlający komunikat o treści n-tym razem wcisnąłeś klawisz "a" o kodzie ASCII 65.

Program Pentla_for_ASCII;

    uses Crt;

    var a:byte;

    Klawisz:Char;

Begin

    ClrScr;

    For a:=1 to 10 do

      begin

      Klawisz:=readkey;

      WriteLn(a,'-razem wcisnąłeś'',klawisz,''o kodzie ASCII=' ,ORD(klawisz));

    end;

    Readkey;

End.

powrót do głównego menu

następny program

Kolejną instrukcją iteracyjną jest instrukcja "dopóki" WHILE . Instrukcja ta służy do sprawdzenia warunku iteracji na początku i ma postać:

WHILE wyrażenie DO instrukcja

Wyrażenie jest najczęściej wyrażeniem porównania, powinno w wyniku dawać wartość logiczną TRUE lub FALSE, a instrukcja po słowie DO może być dowolną instrukcją prostą lub strukturalną. Instrukcja ta wykonywana jest tak długo dopóki wartością wyrażenia jest TRUE.

Program wyświetlający jeden słupek tabliczki mnożenia z zastosowaniem instrukcji iteracyjnej WHILE - "dopóki".

Program Pet_While;

    uses Crt;

    var mnoznik:byte;

    const mnozna:byte=5;

Begin

ClrScr;

mnoznik:=1;

While mnoznik<=10 do

    begin

    WriteLn(mnozna,'*',mnoznik,'=',mnozna*mnoznik);

    Inc(mnoznik);

end;

ReadLn;

readkey;

End.

powrót do głównego menu

instrukcja iteracyjna Repeat - powtarzaj

Program z zastosowaniem pętli WHILE wyświetlający całą tabliczkę mnożenia z jednym pustym wierszem po każdym słupku.

Program Pet_While; uses Crt;

    var mnoznik:byte;

    const mnozna:byte=5;

Begin

    ClrScr;

    mnoznik:=1;

    While mnoznik <=10 do

    begin

      mnozna:=1;

      While mnozna<=10 do

      begin

        WriteLn(mnozna,'*',mnoznik,'=',mnozna*mnoznik);

        Inc(mnozna);

        end;

        WriteLn;

        Inc(mnoznik);

        ReadKey;

      end;

      ReadLn;

    End.

 

instrukcje wyboru

powrót do głównego menu

REPEAT

instrukcja

instrukcja

UNTIL - warunek logiczny

Program z zastosowaniem pętli REPEAT "powtarzaj", wyświetlający jeden słupek tabliczki mnożenia

Program Pet_Repeat

    uses Crt;

    var mnoznik:byte;

Begin

    ClrScr;

    mnoznik:=1;

    Repeat

      WriteLn(mnozna,'*',mnoznik,'=',mnozna*mnoznik);

      mnoznik:=mnoznik+1;

    Until mnoznik>10;

    ReadLn;

    readkey;

End.

powrót do głównego menu

następny program Instrukcja warunkowa i wyboru

W Turbo Pascalu istnieją dwie instrukcje warunkowe:

  • instrukcja "jeśli" IF - mająca dwie możliwe postacie,
  • instrukcja wyboru CASE.

Instrukcja IF "jeśli" uzależnia wykonanie innych instrukcji od spełnienia określonego warunku. Ogólna postać tej instrukcji jest następująca:

    IF wyrażenie THEN instrukcja

lub

    IF wyrażenia THEN instrukcja

      ELSE w przeciwnym wypadku instrukcja

    Warunkiem wyrażenia jest wartość logiczna TRUE lub FALSE.

W programowaniu często mamy do czynienia z sytuacją, gdy wykonanie różnych poleceń jest uzależnione od wartości zmiennej. Możemy wtedy zastosować instrukcję wyboru, której postać jest następująca:

    CASE wyrażenie OF

      sekwencja instrukcji wyboru

    END

lub

    CASE wyrażenie OF

      sekwencja instrukcji wyboru

    ELSE w przeciwnym wypadku instrukcji

END

powrót do głównego menu

Program gra, testujący znajomość tabliczki mnożenia. Program wykonuje 5-cio krotne losowanie mnożnej i mnożnika i oczekuje na wprowadzenie wyniku. Gdy wynik jest niepoprawny, program informuje o błędzie i powtórnie wyświetla to samo działanie. W przypadku poprawnej odpowiedzi program podaje czas w sekundach z dokładnością do 0,01 s i wyświetla następne pytanie. Po zakończeniu testu program wyświetla średni czas odpowiedzi.

Program Test_mnozenia;

    uses Crt, Dos;

    var godz1, godz2,min1,min2,sek1,sek2,ssek1,ssek2:word;

    var licz1,licz2,wynik,n,t,a1,a2,a3,a4,a5:integer;

    var g1,g2,m1,m2,s1,s2,ss1,ss2,suma:integer;

    Tabczas:Array[1..5] of byte;

    var w1,w2,w:word;

Begin

    ClrScr;

    TextColor(14);

    Suma:=0;

    WriteLn(' JEST TO PROGRAM SPRAWDZAJĄCY');

    WriteLn(' TWÓJ REFLEKS W TABLICZCE MNOŻENIA');

    Randomize;

    For n:=1 to 5 do

      begin

      licz1:=Random(10)+1;

      licz2:=Random(10)+1;

      Repeat

        GetTime(godz1,min1,sek1,ssek1

        TextColor(10);

        WriteLn;

        Write(licz1,'*',licz2,'=');

        ReadLn(wynik);

        IF licz1*licz2=wynik THEN

          begin

            TextColor(2);

            WriteLn('BARDZO DOBRZE');

            GetTime(godz2,min2,sek2,ssek2);

          end

        ELSE

      begin

        TextColor(124);

        WriteLn('ŹLE! SPRÓBUJ JESZCZE RAZ');

      end;

      Until licz1*licz2=wynik;

      g1:=godz1*3600*100; g2:=godz2*3600*100;

      m1:=min1*60*100; m2:=min2*60*100;

      s1:=sek1*100; s2:=sek2*100;

      ss1:=ssek1*1; ss2:=ssek2*1;

      w1:=g1+m1+s1+ss1; w2:=g2+m2+s2+ss2;

      w:=w2-w1;

      WriteLn('Czas namysłu wynosił ',w/100:6:2);

      suma:=suma+w;

    end;

    TextColor(14);

    WriteLn;

    WriteLn('ŚREDNIA WYNOSI = ',suma/5/199:6:2);

    ReadLn;

    ReadKey;

End.

powrót do głównego menu