Turbo Pascal - Instrukcje
Instrukcja warunkowa
Instrukcję tą stosuje się wtedy, kiedy chcemy wykonać jakąś operację jeśli zostaje spełniony jakiś warunek. Język Turbo Pascal daje nam do dyspozycji dwa rodzaje instrukcji warunkowych:
Instrukcja IF
Składnia jej jest następująca:
IF warunek THEN instrukcja1;
lub
IF warunek THEN Instrukcja1 ELSE Instrukcja2;
Przy pierwszym zapisie komenda znajdująca się po słowie THEN zostanie wykonana tylko wtedy, gdy "warunek" jest spełniony, np.
X:=10;
Y:=5;
IF X>Y THEN Writeln('X jest większy od Y');
IF X<Y THEN Writeln('Y jest większy od X');
IF X=Y THEN Writeln('X jest równe Y');
Powyższy program wyświetla jeden z napisów znajdujących się po słowie THEN, w tym wypadku napis pierwszy, czyli "X jest większy od Y".
W drugim zapisie, "instrukcja1" zostanie wykonana tylko wtedy, gdy "warunek" jest spełniony, w przeciwnym wypadku zostanie wykonana "instrukcja2". Instrukcja1 nie może być zakończona średnikiem, np.:
X:=5;
Y:=10;
IF X>Y THEN Writeln('X jest większe od Y')
ELSE Writeln('Y jest większe niż X');
Jeśli chcemy wykonać więcej niż jedną instrukcję w przypadku gdy zostanie spełniony warunek lub nie, to możemy zastosować instrukcję strukturalną używając BEGIN i END. Gdy używamy instrukcji strukturalnej i słowa kluczowego ELSE, należy pamiętać, że zamknięcie tej instrukcji, czyli END stawiamy bez średnika.
np.:
X:=5;
Y:=10;
IF X>5 THEN
BEGIN
Writeln('X jest większe od Y');
...
END ELSE
BEGIN
Writeln('Y jest większe od X');
...
END;
Przy pisaniu warunków można używać następujących operatorów logicznych:
AND - "i"
OR - "lub"
NOT - "nie"
Kiedy warunek składa się z kilku podwarunków, to każdy taki podwarunek musi znajdować się w nawiasach np.:
IF (Imie='Jan') AND (Nazwisko="Kowalski') THEN ...
IF (Imie="Jan') OR (Imie='Piotr') THEN ...
Do określania warunków służą następujące operatory:
= "równe"
< "mniejsze"
> "większe"
<= "mniejsze bądź równe"
>= "większe bądź równe"
<>"różne"
Instrukcja CASE
Instrukcja ta posiada następującą składnię:
CASE wyrażenie OF
wartość1 : Instrukcja1;
wartość2 : Instrukcja2;
...
END;
lub
CASE wyrażenie OF
wartość1 : Intrsukcja1;
wartość2 : Instrukcja2;
...
ELSE Instrukcja3
End;
Działanie jej jest następujące: zostanie obliczone [wyrażenie] i jeśli jest ono równe [wartość1] zostanie wykonana [Instrukcja1], Jeśli wartość wyrażenia jest równe [wartość2], zostanie wykonana [instrukcja2] itd. Jeśli wynikiem wyrażenia nie jest żaden z podanych poniżej wartości zostanie wykonana instrukcja znajdująca się po opcjonalnym parametrze ELSE.
Instrukcja iteracyjna
Instrukcje iteracyjne służą do wielokrotnego wykonania pewnej grupy lub jednej instrukcji. W Turbo Pascal'u są następujące instrukcje iteracyjne:
Instrukcja FOR
Powoduje ona wykonanie jakiejś operacji określoną liczbę razy. Ma ona następującą składnię:
FOR licznik:=poczatek TO koniec DO Instrukcja;
lub
FOR licznik:=koniec DOWNTO poczatek DO Instrukcja;
Oczywiście zamiast jednej instrukcji można wpisać szereg poleceń między BEGIN i END;.
[Licznik] - jest to zmienna sterująca pracą. W zapisie pierwszym nadajemy jej początkową wartość [poczatek]. Następnie [Instrukcja] jest wykonywana tyle razy, aż [licznik] będzie równy [koniec]. Za każdą "pętlą" licznik zostaje zwiększony o jeden. Jeśli mamy zapis drugi to [licznik] ma początkową wartość [koniec], i [instrukcja] jest tak długo wykonywana, aż [licznik] będzie równy [poczatek]. Przy każdej pętli licznik jest zmniejszany o jeden. Przykładowy program wyświetlający 10 liczb może wyglądać tak:
VAR i:Integer; {licznik}
BEGIN
For i:=1 to 10 DO Writeln(i); {napisz liczbę i}
END.
Instrukcja REPEAT
Instrukcja ta ma następującą składnię:
REPEAT
Instrukcja;
...
Instrukcja;
UNTIL warunek;
Instrukcję między słowami REPEAT i UNTIL są tak długo wykonywane, aż wartość [warunek] zostanie spełniony. W warunku tym można używać instrukcji matematycznych. W module CRT znajduje się funkcja KEYPRESSED, która jest typu BOOLEAN i przyjmuje wartość TRUE, jeśli zostanie wciśnięty jakiś klawisz na klawiaturze. Jeśli mamy więc program, który ma działać tak długo, aż zostanie wciśnięty dowolny klawisz na klawiaturze napiszemy:
USES CRT;
BEGIN
Writeln('Coś tam');
REPEAT UNTIL KeyPressed;
END.
Instrukcja WHILE
Posiada ona następującą składnię:
WHILE wyrażenie DO instrukcja;
[Instrukcja] jest tak długo wykonywana, aż wartość wyrażenia jest prawdziwa. Ten sam program co powyżej, z użyciem tej instrukcji wyglądałby tak:
USES CRT;
BEGIN
Writeln('Coś tam');
WHILE NOT KeyPressed DO ;
END.
Jeśli klawisz nie został wciśnięty, to funkcja KEYPRESSED zwraca wartość FALSE. Powyższy program wyświetla napis i czeka, aż zostanie wciśnięty klawisz. Instrukcja WHILE jest spełniona, gdy KeyPressed ma wartość FALSE i jeśli jest spełniona to wykonuje instrukcję znajdującą się po słowie DO, czyli ";". Średnik oznacza instrukcję pustą, więc nie zostaje wykonane żadne polecenie. Kiedy wciśniemy jakiś klawisz, funkcja KeyPressed zwróci wartość TRUE, wartość wyrażenia NOT KeyPressed jest FALSE, więc zostaje zakończone wykonywanie tej instrukcji i wyłączenie programu.
Instrukcja wiążąca
Instrukcja wiążąca ma następującą składnię:
WITH nazwa DO instrukcja;
Zamiast [instrukcji] można wstawić również blok instrukcji. Pozwala ona na odwoływanie się do pól rekordu lub obiektu bez konieczności stosowania kwantyfikatora, np.:
Mamy następujący typ:
TYPE Dane = RECORD
Imie : String;
Nazwisko : String;
Wiek : Byte;
END;
VAR osoba : Dane;
Odwołujemy się do poszczególnych pól rekordu w następujący sposób:
WITH osoba DO
BEGIN
Imie:='Jan';
Nazwisko:='Kowalski';
Wiek:=13;
END;
Instrukcja kodu
Posiada następującą składnię:
INLINE (lista_elementów);
Wszystkie elementy[listy_elemtow] oddzielone są od siebie ukośnikami i mogą być:
stałymi określającymi wartości liczbowe
identyfikatorami zmiennych
identyfikatorami zmiennych ze stałą poprzedzoną + lub -
operatorami rozmiaru kody <i>
Przykładowe użycie tej procedury:
INLINE($EA/$F0/$FF/$00/$F0); {spowoduje zresetowanie się komputera}
Instrukcja asemblerowa
Składnia jej jest następująca:
ASM
Instrukcja;
...
Instrukcja;
END;