Object Pascal/Procedury i funkcje: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Lethern (dyskusja | edycje)
Anulowanie wersji nr 128428 utworzonej przez 83.12.5.186 (dyskusja)
Nie podano opisu zmian
Linia 56:
for j:=1 to 8 do
begin
readln(x);rea
if x=0 then '''break'''
else w:=w*x
end;
writeln('iloczyn=',w);
end.
 
=====CONTINUE=====
Procedura powoduje natychmiastowe przejście do kolejnej [[iteracja|iteracji]] pętli, wewnątrz której jest wywołana.
 
'''Przykład:'''
var
w,x,i,j:integer;
begin
w:=1
for i:=1 to 3 do
Linia 77 ⟶ 64:
if x=0 then '''continue'''
else w:=w*x
end;
writeln('iloczyn=',w);
end.
 
====Procedury powodujące przerwanie wykonywanego programu====
=====EXIT=====
Procedura ''Exit'' wywołana wewnątrz procedury lub funkcji powoduje jej przerwanie i powrót do miejsca wywołania, a wywołana w części wykonawczej programu powoduje jego zakończenie.
 
=====HALT=====
Procedura ''Halt'', której wywołanie ma postać:
'''Halt''' (kod_wyjścia);
lub
'''Halt'''
co jest równoważne wywołaniu ''Halt(0'') (0 – zakończenie bez błędu, kod_wyjścia jest wyrażeniem typu integer) powoduje przerwanie programu i powrót do systemu.
 
=====RUNERROR=====
Procedura ''RunError'' lub ''RunError_(kod_błędu)'' powoduje przerwanie programu i wygenerowanie błędu jego wykonania o podanym kodzie (kod_błędu jest argumentem typu Byte, gdy brak tego argumentu, to przyjmuje się wartość 0).
 
==Funkcje==
Funkcja jest rodzajem procedury, która po wywołaniu zwraca obliczoną przez siebie wartość pod swoją nazwą.
 
===Deklaracja funkcji===
'''function''' nazwa [(lista-parametrów-formalnych)] : typ_wyniku;
{deklaracje lokalnych stałych, zmiennych i typów}
'''begin'''
{część operacyjna}
'''end;'''
 
Deklaracja funkcji powinna znajdować się przed częścią operacyjną programu, czyli przed głównym słowem ''begin'',a po deklaracji zmiennych, z których ona korzysta. Nie jest konieczne umieszczanie po deklaracji zmiennych, ale stosowanie się do tej zasady pozwala na zastosowanie porządku w zapisie programu.
 
Jeżeli chcemy aby funkcja była zadeklarowana za miejscem jej pierwszego wywołania, należy użyć słowa kluczowego ''forward'':
 
'''function''' nazwa [(lista-parametrów-formalnych)]:typ_wyniku; '''forward''';
 
Wewnątrz funkcji można deklarować zmienne lokalne tak samo jak to jest przy procedurach.
 
W części operacyjnej funkcji przynajmniej raz powinna wystąpić instrukcja przypisania postaci:
nazwa:=wyrażenie;
lub
RESULT:=wyrażenie;
 
====Przykład deklaracji====
 
'''function''' srednia: integer;
'''var'''
i:integer;
s:real;
'''begin'''
s:=0.0;
'''for''' i:=1 '''to''' ilosc '''do''' //ilosc - zmienna zewnętrzna
s:=s+dane[i];
srednia:=s/ilosc
'''end;'''
 
===Wywołanie funkcji===
Wywołanie funkcji ma miejsce w wyrażeniu po prawej stronie instrukcji przypisania lub w instrukcji wywołania procedury:
zmienna:=nazwa [(lista-parametrów-aktualnych)];
Linia 140 ⟶ 72:
 
==Pozostałe informacje==
===y;
===Procedury i funkcje działające na argumentach typu porządkowego===
*'''Dec(x)''', '''Dec(x,n)''' - bezpośrednio poprzedni, dekrementacja zmiennej x
*'''Inc(x)''', '''Inc(x,n)''' - bezpośrednio następny, inkrementacja zmiennej x,
*'''Odd(x)''' - badanie parzystości, przyjmuje wartość ''TRUE'', gdy x nieparzyste
*'''Pred(x)''' - poprzednik elementu x
*'''Succ(x)''' - następnik elementu x
 
===Przeciążanie procedur i funkcji===
Przeciążanie procedur i funkcji występuje wtedy, gdy:
*dwie procedury lub funkcje mogą mieć ten sam identyfikator
*musi być użyta dyrektywa języka ''overload''
*listy parametrów formalnych muszą się różnić ilością lub typem
 
====Przykłady:====
'''Program''' iloczyny;
'''var'''
a,b:real