I. Wstęp
Witaj. Część czwarta kursu traktować będzie o procedurach i funkcjach. Rzecz ta może wydawać się na początku trudna, jednak bardzo ułatwia programowanie i wprowadza porządek do kodu źródłowego naszych aplikacji.
II. Procedury
Jeżeli w naszym programie chcemy wykonać jakąś rzecz kilka, kilkanaście, kilkadziesiąt, a może i nawet kilkaset razy, aby nie pisać tyle razy tego samego kodu, tworzymy procedurę zawierającą te instrukcje i wywołujemy ją kiedy chcemy i ile razy chcemy. Procedury deklarujemy przed głównym kodem programu (widać to w przykładzie poniżej).
Przykładowa procedura, bez parametrów wygląda następująco:
Jeżeli procedura nie ma parametrów, nawiasy przy jej nazwie można pominąć.
Wywołanie procedury wygląda następująco:
lub
Przykładowy program wyświetlający tekst na konsoli. Posiada on kod rysujący w pętli linię długą na szerokość konsoli (80 znaków). Kod rysujący został umieszczony w procedurze, przez co w głównym programie pisząc nazwę procedury możemy wywoływać ją wielokrotnie, nie pisząc tyle razy tego samego kodu.
III. Procedury z parametrami
Procedury mogą również przyjmować parametry, są to dane, które podajemy procedurze, a ona wykonuje na nich odpowiednie operacje.
Spójrz na poniższy przykład programu zawierającego procedurę z parametrami. Rysuje on podobnie do powyższego programu poziomą linię w konsoli, jednak przy wywołaniu procedury możemy podać jej rodzaj oraz długość linii. Dostępne rodzaje linii: 0 - domyślna linia ciągła, 1 - linia łamana (przy długości 40 pojedyncza, przy 80 podwójna), 2 - linia kropkowana.
IV. Funkcje
Funkcje są podobne do procedur, różnią się jednak tym, że prócz przyjmowanych wartości (argumentów) zwracają nam one jakiś wynik.
Deklaracja funkcji wygląda następująco:
Po słowie kluczowym function podajemy nazwę funkcji, dalej w nawiasie podajemy argumenty jakie przyjmuje funkcja z ich typem po dwukropku. Poszczególne argumenty oddzielamy średnikiem. Po nawiasie podajemy po dwukropku typ zwracanego wyniku. Niżej możemy dać słowo kluczowe var lub const i zadeklarować zmienne lokalne (dostępne tylko wewnątrz tej funkcji). Dalej pomiędzy znajdują się instrukcje jakie funkcja ma wykonać. Wynik zwracany przez funkcję ustanawiamy poprzez przypisanie danej wartości do nazwy funkcji przy użyciu operatora przypisania.
Oto przykładowy program z zadeklarowanymi funkcjami:
Powyższy program oblicza sumę, różnicę dwóch liczb oraz podnosi do potęgi stopnia drugiego podane liczby.
V. Zakończenie
To już koniec tej części kursu. Dla przećwiczenia do wcześniej podanego programu obliczającego sumę, różnicę i kwadrat, możesz dopisać iloczyn, iloraz, resztę z dzielenia (operator mod) i inne operacje matematyczne (funkcje matematyczne powinny być opisane gdzieś w kategorii Pascal), oczywiście wszystko zaprogramowane powinno być przy użyciu funkcji i procedur. To z pewnością pomoże Ci lepiej zrozumieć i zapamiętać jak tworzy się procedury i funkcje.
Jak tylko będziesz gotów zapraszam do kolejnej części.
Witaj. Część czwarta kursu traktować będzie o procedurach i funkcjach. Rzecz ta może wydawać się na początku trudna, jednak bardzo ułatwia programowanie i wprowadza porządek do kodu źródłowego naszych aplikacji.
II. Procedury
Jeżeli w naszym programie chcemy wykonać jakąś rzecz kilka, kilkanaście, kilkadziesiąt, a może i nawet kilkaset razy, aby nie pisać tyle razy tego samego kodu, tworzymy procedurę zawierającą te instrukcje i wywołujemy ją kiedy chcemy i ile razy chcemy. Procedury deklarujemy przed głównym kodem programu (widać to w przykładzie poniżej).
Przykładowa procedura, bez parametrów wygląda następująco:
Kod:
procedure nazwa_procedury();
var //zmienne, jeżeli nie używamy zmiennych, słowo kluczowe var pomijamy
zmienna1 : String;
begin
//tutaj instrukcje, które będą wykonane po wywołaniu procedury
end;
Jeżeli procedura nie ma parametrów, nawiasy przy jej nazwie można pominąć.
Wywołanie procedury wygląda następująco:
Kod:
nazwa_procedury();
lub
Kod:
nazwa_procedury;
Przykładowy program wyświetlający tekst na konsoli. Posiada on kod rysujący w pętli linię długą na szerokość konsoli (80 znaków). Kod rysujący został umieszczony w procedurze, przez co w głównym programie pisząc nazwę procedury możemy wywoływać ją wielokrotnie, nie pisząc tyle razy tego samego kodu.
Kod:
program Procedury;
uses CRT;
//procedura rysująca poziomą linię na szerokość konsoli
procedure LiniaPozioma();
var
I : Integer;
begin
for I := 1 to 80 do Write('_');
WriteLn();
end;
//program główny
begin
ClrScr();
LiniaPozioma();
WriteLn(' Witaj drogi użytkowniku! ');
LiniaPozioma();
WriteLn(' Oto przykład programu z procedurą, rysującą linię poziomą, ');
WriteLn(' długą na szerokość konsoli (80 znaków). ');
LiniaPozioma();
WriteLn(' Kod rysujący tą linię umieszczony jest w osobnej procedurze, ');
WriteLn(' Dzięki czemu nie musimy cały czas przepisywać tego samego kodu, ');
WriteLn(' Zajmującego się rysowaniem tej linii . ');
LiniaPozioma();
ReadLn();
end.
III. Procedury z parametrami
Procedury mogą również przyjmować parametry, są to dane, które podajemy procedurze, a ona wykonuje na nich odpowiednie operacje.
Spójrz na poniższy przykład programu zawierającego procedurę z parametrami. Rysuje on podobnie do powyższego programu poziomą linię w konsoli, jednak przy wywołaniu procedury możemy podać jej rodzaj oraz długość linii. Dostępne rodzaje linii: 0 - domyślna linia ciągła, 1 - linia łamana (przy długości 40 pojedyncza, przy 80 podwójna), 2 - linia kropkowana.
Kod:
program Procedury2;
uses CRT;
//procedura rysująca poziomą linię na szerokość konsoli
procedure LiniaPozioma(LineType: Integer; Length: Integer);
var
I : Integer;
begin
case LineType of
0 : for I := 1 to Length do Write('_');
1 : for I := 1 to Length do Write('\/');
2 : for I := 1 to Length do Write('.');
end;
WriteLn();
end;
//program główny
begin
ClrScr();
LiniaPozioma(1,80);
WriteLn(' Witaj drogi użytkowniku! ');
LiniaPozioma(2,80);
WriteLn(' Oto przykład programu z procedurą, rysującą linię poziomą, ');
WriteLn(' długą na szerokość konsoli (80 znaków). ');
LiniaPozioma(2,80);
WriteLn(' Kod rysujący tą linię umieszczony jest w osobnej procedurze, ');
WriteLn(' Dzięki czemu nie musimy cały czas przepisywać tego samego kodu, ');
WriteLn(' Zajmującego się rysowaniem tej linii . ');
LiniaPozioma(1,80);
ReadLn();
end.
IV. Funkcje
Funkcje są podobne do procedur, różnią się jednak tym, że prócz przyjmowanych wartości (argumentów) zwracają nam one jakiś wynik.
Deklaracja funkcji wygląda następująco:
Kod:
function nazwa_funkcji(argument1, argument2: Integer; argument3: String):Integer;
var
zmienna1 : Integer;
begin
//instrukcje
nazwa_funkcji := argument1 + argument2 + argument3; //zwracany wynik
end;
Po słowie kluczowym function podajemy nazwę funkcji, dalej w nawiasie podajemy argumenty jakie przyjmuje funkcja z ich typem po dwukropku. Poszczególne argumenty oddzielamy średnikiem. Po nawiasie podajemy po dwukropku typ zwracanego wyniku. Niżej możemy dać słowo kluczowe var lub const i zadeklarować zmienne lokalne (dostępne tylko wewnątrz tej funkcji). Dalej pomiędzy znajdują się instrukcje jakie funkcja ma wykonać. Wynik zwracany przez funkcję ustanawiamy poprzez przypisanie danej wartości do nazwy funkcji przy użyciu operatora przypisania.
Oto przykładowy program z zadeklarowanymi funkcjami:
Kod:
program Funkcje;
uses CRT;
function Suma(a, b: Integer):Integer;
begin
Suma := a + b;
end;
function Roznica(a, b: Integer):Integer;
begin
Roznica := a - b;
end;
function Kwadrat(a: Integer):Int64;
begin
Kwadrat := a*a;
end;
//program główny
var
liczba1, liczba2 : Integer;
begin
ClrScr();
WriteLn('Oto program sumujący, odejmujacy i podajacy kwadrat dwoch liczb.');
WriteLn('Podaj pierwszą liczbę:');
ReadLn(Liczba1);
WriteLn('Podaj drugą liczbę:');
ReadLn(Liczba2);
WriteLn('Wyniki:');
WriteLn('[] Suma tych liczb wynosi: ',Suma(Liczba1, Liczba2));
WriteLn('[] Różnica tych liczb wynosi: ', Roznica(Liczba1, Liczba2));
WriteLn('[] Kwadrat pierwszej liczby: ',Kwadrat(Liczba1));
WriteLn('[] Kwadrat drugiej: ',Kwadrat(Liczba2));
ReadLn();
end.
Powyższy program oblicza sumę, różnicę dwóch liczb oraz podnosi do potęgi stopnia drugiego podane liczby.
V. Zakończenie
To już koniec tej części kursu. Dla przećwiczenia do wcześniej podanego programu obliczającego sumę, różnicę i kwadrat, możesz dopisać iloczyn, iloraz, resztę z dzielenia (operator mod) i inne operacje matematyczne (funkcje matematyczne powinny być opisane gdzieś w kategorii Pascal), oczywiście wszystko zaprogramowane powinno być przy użyciu funkcji i procedur. To z pewnością pomoże Ci lepiej zrozumieć i zapamiętać jak tworzy się procedury i funkcje.
Jak tylko będziesz gotów zapraszam do kolejnej części.