Masz pytanie ? Zadaj je na naszym Forum Turbo Pascal. Rejestracja w 5 sekund ;-)
Czynności wykonywane na danych są opisywane za pomocą instrukcji. Instrukcjie języka Turbo Pascal dzielą się na instrukcje proste, tj. takie, które nie zawierają jako składowych innych instrukcji, oraz instrukcje strukturalne, zbudowane na podstawie pewnego schematu strukturalizacji kilku instrukcji.
Oto pełen podział instrukcji:
Co nazywamy instrukcją prostą wytłumaczyłem po krótce już na wstępie. Teraz przypomne tylko na jakie składowe dzielimy te instrukcje. Więc do instrukcji prostych zaliczamy:
Instrukcja przypisania służy do przypisania zmiennej nowej wartości. Ogólna jej postać jest następująca:
Odwołanie_do_zmiennej:=wyrażenie;
lub
Nazwa_funkcji:=wyrażenie;
Dla każdego przypisania wartość wyrażenia musi być zgodna w sensie przypisania z typem zmiennej.
Przykłady:
a:=1; tekst:="Kurs Pascala"; x:=x+1; warunek:=a=b;
Instrukcja skoku jest jedyną instrukcją, której stosowanie nie jest zalecane. Jej stosowanie zmniejsza przejrzystość programu, utrudnia jego optymalizację...(można by pisać i pisać...). Instrukcja ta może być zawsze zastąpiona instrukcjami:
GOTO etykieta;
Powoduje to przekazanie sterowania do instrukcji programu poprzedzonej podaną etykietą.
Przykład:
PROGRAM Etykiety; LABEL et; ...BEGIN ...GOTO et; ...x := a+2; ...END.
Zapisanie instrukcji pustej nie wymaga użycia żadnego symbolu języka i nie powoduje ona wykonania żadnych czynności. Instrukcję tą stosuje się w tych kontekstach, w których jest wymagane użycie instrukcji, ale chce się uniknąć wykonania jakiejkolwiek czynności, lub w celu ułatwienia opracowania programu.
Instrukcja wywołania procedury jak sama nazwa wskazuje służy do wywoływania w programie procedur. Ogólna postać wywołania jest następująca:
Nazwa_Procedury;
lub
Nazwa_Procedury(lista_parametrów);
Przykład:
Jeśli w części opisowej programu zadeklarujemy następującą procedurę:
PROCEDURE(X,Y:Byte;Tekst:String[10]); BEGIN... END;
To aby tą procedurę wywołać to w części wykonawczej programu piszemy:
PROCEDURE(10,10,"Kurs Pascala");
Do dołączania w programie lub module paskalowym krótkich podprogramów lub instrukcji napisanych w kodzie maszynowym (zgroza!) służy dyrektywa i instrukcja inline. Jej postać jest następująca:
INLINE (lista_elementów_inline);
Nie będę się więcej rozpisywać na ten temat gdyż instrukcja ta bez znajomości Assemblera jest bezużyteczna - w końcu to kurs dla początkujących, a oni raczej Assemblera nie znają.
Przykład:
INLINE ($CD/$12/$89/$46/$04);
Co nazywamy instrukcją strukturalną wytłumaczyłem po krótce już na wstępie. Teraz przypomne tylko na jakie składowe dzielimy te instrukcje. Więc do instrukcji strukturalnych zaliczamy:
Instrukcja złożona jest ciągiem instrukcji poprzedzonym słowem kluczowym begin i zakończonym słowem kluczowym end. Instrukcje wchodzące w skład instrukcji złożonej wykonywane są sekwencyjnie. Struktura tej instrukcji jest następująca:
BEGIN Instrukcja_1; Instrukcja_2; ... Instrukcja_n END
Przykład:
BEGIN a:=1; b:=a+4; c:=a-b; GOTO Franek; END
Instrukcje warunkowe uzależniają wykonywanie innych instrukcji od spełnienia określonego warunku. W Pascalu istnieją dwie instrukcje warunkowe:
Instrukcja "jeśli" uzależnia wykonywanie innej lub innych instrukcji od spełnienia lub niespełnienia podanego warunku. Ogólna jej postać jest następująca:
IF wyrażenie THEN instrukcja
lub
IF wyrażenie THEN instrukcja ELSE instrukcja
Przy czym wartością wyrażenia powinna być wartość logiczna True lub False. Instrukcja występująca po słowie kluczowym then lub else może być dowolną instrukcją prostą lub strukturalną. Jeśli wartością wyspecyfikowanego wyrażenia jest True, to zostanie wykonana instrukcja podana po słowie then. W przeciwnym przypadku wykonana będzie następna instrukcja po instrukcji "jeśli" (gdy brak else) lub instrukcja podana po słowie else.
Przykład:
IF X=Y THEN A:=0 ELSE A:=1;
W programowaniu często mamy do czynienia z sytuacją, gdy wykonanie różnych operacji jest uzależnione od wartości pewnej zmiennej. Pomocna może się tu okazać instrukcja wyboru, której ogólna postać jest następująca:
CASE wyrażenie OF sekwencja_instrukcji_wyboruEND
lub
CASE wyrażenie OF sekwencja_instrukcji_wyboru ELSE instrukcjaEND
gdzie wartość wyrażenia musi być typu porządkowego. Sekwencja instrukcji wyboru składa się z instrukcji, przy czym każda z nich poprzedzona jest jedną lub kilkoma stałymi, zwanymi stałymi wyboru, które od instrukcji oddzielone są dwukropkiem. Poszczególne stałe wyboru oddzielamy przecinkami.
Przykład:
CASE znak OF '+' : BEGIN d:=d+1; z:=z-1; END; '-' : BEGIN d:=d-1; z:=z+1; END; END;
Instrukcje iteracyjne służą do organizowania cykli programowych, tj. wielokrotnego wykonywania pewnych sekwencji instrukcji. W Pascalu istnieją trzy rodzaje instrukcji iteracyjnych:
Instrukcje "dla" tzw. pętlę stosuje się zwykle w celu wykonania pewnej grupy instrukcji w przypadku, gdy liczba powtórzeń jest znana w danym miejscu programu. Instrukcja ta może mieć jedną z dwu następujących postaci:
FOR zmienna:=wyrażenie_1 TO wyrażenie_2 DO intrukcja
lub
FOR zmienna:=wyrażenie_1 DOWNTO wyrażenie_2 DO intrukcja
Zmienna, zwana zmienną sterującą, musi być identyfikatorem typu porządkowego i powinna być lokalna w bloku zawierającą daną instrukcję "dla". Wartość wyrażenia 1 i wyrażenia 2 powinna być zgodna w sensie przypisania z typem zmiennej sterującej. Instrukcja występująca po słowie kluczowym DO może być dowolną instrukcją prostą lub strukturalną.
Przykłady:
FOR i:=1 TO 10 DO x:=x+i;
Instrukcja wykonywana 10-krotnie powoduje zwiększenie zmiennej X o aktualną wartość zmiennej I.
FOR j:=10 DOWNTO 1 DO x:=x+j;
Instrukcja wykonywana 10-krotnie (od "tyłu") powoduje zwiększenie zmiennej X o aktualną wartość zmiennej J.
Instrukcja "dopóki" służy do opisywania interacji ze sprawdzeniem warunku na początku i ma postać:
WHILE wyrażenie DO intrukcja
Wyrażenie, które najczęściej jest wyrażeniem porównania, powinno w wyniku dawać wartość logiczną (True lub False), a instrukcja występująca po słowie do może być dowolną instrukcją prostę lub strukturalną. Instrukcja ta wykonywana jest tak długo jak długo wartością wyrażenia jest True.
Przykład:
k:=1;
WHILE k<10 DO BEGIN
x:=x*x;
k:=INC(k) {INC(k) działa jak k:=k+1;};
END;
Instrukcja "powtarzaj" służy do opisywania interacji ze sprawdzeniem warunku na końcu i ma postać:
REPEAT Instrukcja_1 Instrukcja_2 ... Instrukcja_n UNTIL wyrażenie
Wyrażenie powinno dawać w wyniku wartość logiczną, a każda z instrukcji może być dowolną instrukcją prostą lub strukturalną. Instrukcje wewnętrzne są wykonywane conajmniej jeden raz, a zakończenie przetwarzania instrukcji "powtarzaj" następuje, gdy wartością wyrażenia występującego po słowie kluczowym until jest True.
Przykład:
i:=1;
REPEAT
Writeln('Linia ',i);
i:=i+1;
UNTIL i=10;
Do odwołania się do poszczegolnych pol rekordu lub obiektu służą desygnatory pól, składające się z indentyfikatora odpowiedniego pola i nazwy zmiennej rekordowej lub obiektowej. Zastosowanie instrukcji wiążącej pozwala na wygodniejsze odwołanie się do wspomnianych pól, a także zwiększa czytelność programu. Jej postać jest następująca:
WITH lista_zmiennych DO instrukcja
przy czym lista zmiennych zawira oddzoelone przecinkami identyfikatory zmiennych rekordowych lub obiektowych, a instrukcja po słowie kluczowym do może być dowolną instrukcją prostą lub strukturalną. Umieszczenie zmiennej rekordowej lub obiektowej po słowie kluczowym with pozwala wewnątrz instrukcji wiążącej na odwołanie się do pól tej zmiennej za pomocą samych identyfikatorów pól. Identyfikatory te traktowane są w instrukcji wewnętrznej jako zmienne.
Przykład, załóżmy następującą deklarację:
VAR comp: RECORD re,im: Real; END;
Przypisanie do tego rekordu w instrukcji wiążącej jest następujące:
WITH comp DO BEGIN re:=1; im:=1; END;
Jest to równoważne z takim przypisaniem w instrukcji złożonej:
BEGIN comp.re:=1; comp.im:=1; END;
Instrukcje asemblera wewnętrznego w tekście źródłowym języka Turbo Pascal są zapisywane jako instrukcja asemblerowa, która ma postać:
ASM instrukcja_asemblera_1 instrukcja_asemblera_2 ... instrukcja_asemblera_n END;
Nie będę się więcej rozpisywać na ten temat gdyż instrukcja ta bez znajomości Assemblera jest bezużyteczna - w końcu to kurs dla początkujących, a oni raczej Assemblera nie znają. (Ups ! Chyba to już pisałem...)
Spis treści, następny wątek : Jak pisać moduły ?