Turbo Pascal Web Page

programowanie w języku Turbo Pascal ( kurs instrukcje w pascalu )

Turbo Pascal | Forum Turbo Pascal | Kurs Turbo Pascal | Programy w Turbo Pascalu (Kody źródłowe)

Masz pytanie ? Zadaj je na naszym Forum Turbo Pascal. Rejestracja w 5 sekund ;-)

Google
 

Kurs Turbo Pascala dla początkujących

#5 Instrukcje

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 ?