Programowanie
C++
Turbo Pascal
Delphi
Ver. 1.0 Beta, Nie masz kompilatora? Teraz mo¿esz pisaæ skrypty ONLINE! Wersja podstawowa -nie zawiera wszystkich poleceñ Pascala. S³u¿y do nauki podstaw
Pisanie w³asnych procedur i funkcji w pascaluProcedura i funkcja to kilka instrukcji po³±czonych w grupê, instrukcji -które robi± okre¶lon± rzecz. Np. wypisuj± co¶ na ekranie, zmieniaj± kolor, rysuj± tabelki. Procedura mo¿e wykorzystywaæ inne napisane przez Ciebie procedury i funkcje. Mo¿e zastanowisz siê po co wogóle pisaæ procedurê czy funkcjê. Przecie¿ mo¿na napisaæ program jednym ci±giem. Faktycznie dla bardzo ma³ych zadañ jest to nawet praktyczne. Sprawa utrudnia siê gdy chcesz stworzyæ rozbudowan± grê lub nawet niewielki program. Przy du¿ych ilo¶ciach kodu, w którym wszystko jest w ka¿dym miejscu nie jest ³atwo zapamiêtaæ pozycji ka¿dej najdrobniejszej instrukcji. Dodatkowo, gdy chcesz ¿eby program w kilku miejscach robi³ to samo musisz kopiowaæ kod i go wklejaæ. Potem gdy bêdziesz chcia³ zrobiæ jak±¶ poprawkê, bêdziesz musia³ znale¼æ ka¿de miejsce z b³êdem i je udoskonaliæ. Procedury rozwi±zuj± ten problem. Jedna procedura mo¿e wykonywaæ jedn± konkretn± czynno¶æ. Ma³e procedurki mog± byæ wywo³ywane przez wiêksze i w rzeczywisto¶ci czêsto dobre gry sk³adaj± tylko z trzech procedur: inicjacji, startu gry i finalizacji czyli czyszenia pamiêci. Procedury pozwalaj± wiêc zachowaæ porz±dek Istnieje mo¿liwo¶æ wyj¶cia z procedury, bez wykonania pe³nego kodu. S³u¿y do tego Instrukcja Exit; Wykorzystuje siê j± w przypadku, gdy który¶ z parametrów podanych do procedury nie spe³nia za³o¿eñ programisty. Gdy wywo³asz Exit, wykonywanie kodu wznowi siê zaraz przed zakoñczeniem kodu procedury -w miejscu end; tej instrukcji. Czym ró¿ni siê funkcja od procedury Procedura wykonuje czynno¶æ i siê zakañcza. Funkcja po wykonaniu siê zwraca jaki¶ wynik operacji, dziêki czemu mo¿na j± traktowaæ prawie jak zmienn±. Jednak nie zawsze t± warto¶æ zwrócon± musisz wykorzystaæ. Mo¿esz po prostu wykonaæ funkcjê w taki sposób jak uruchamia³by¶ procedurê. przyk³ady procedura: Czysc_Ekran; WriteLn('tekst'); funkcja: x:= PozycjaMyszyX; y:= PozycjaMyszyY lub size := FileSize(...) Schemat budowy procedury Na pocz±tku programu mo¿na zdefiniowaæ nag³ówek, je¶li ta procedura ma byæ widoczna w ca³ym pliku (koniecznie gdy piszesz modu³ i bêdziesz jej u¿ywa³ poza modu³em). Liczba parametrów procedury mo¿e byæ dowolna. Ka¿dy z parametrów ma okre¶lony typ.
Nazwa jak± nadamy parametrowi (np. parametr1) nie ma ¿adnego znaczenia na zewn±trz tej procedury. U¿yjemy jej tylko w kodzie wewnêtrznym. Gdy bêdziemy pó¼niej odwo³ywali do tej procedury, bêdziemy mogli jako parametr u¿ywaæ ró¿nych nazw zmiennych. program nazwa; uses Crt; {modu³y} var {deklaracja zmiennych} zmienna : Byte; {nag³ówek procedury} procedure NazwaProcedury(parametr1:typ; parametr2:typ2); {Inne procedury} {...} {cia³o procedury} procedure NazwaProcedury(parametr1:typ; parametr2:typ2); begin {pocz±tek procedury} {tu mo¿e byæ kod wykonywalny} end; {koniec} begin {g³ówna czê¶æ programu} {wywo³anie tej procedury} NazwaProcedury(parametr1, parametr2); end. Inne przyk³ady procedur: Czekanie na wci¶niêcie klawisza Enter procedure CzekajNaEnter; begin WriteLn('Prosze wcisnac ENTER'); ReadLn; end; begin WriteLn('Witaj w programie'); CzekajNaEnter; end. wynik dzia³ania programu: Witaj w programie Prosze wcisnac ENTER w tym wypadku procedura CzekajNaEnter; bêdzie wy¶wietla³a komunikat i oczekiwa³a na wci¶niêcie klawisza. Schemat budowy funkcji Na pocz±tku programu mo¿na zdefiniowaæ nag³ówek, je¶li ta funkcja ma byæ widoczna w innych plikach (koniecznie gdy piszesz modu³) lub wywo³ujesz j± gdzie¶ na pocz±tku kodu a jej tre¶æ jest za wywo³aniem (tak samo jak w przypadku procedury) Wewn±trz kodu funkcji powinno znale¼æ siê przypisanie jej jakiej¶ warto¶ci zwrotnej {nag³ówek} function NazwaFunkcji(parametr1:typ; parametr2:typ2): typ 3; {funkcja musi zwrocic jakas wartosc, wiec posiada swoj typ} {...} {cia³o funkcji} function NazwaFunkcji(parametr1:typ; parametr2:typ2): typ 3; begin {pocz±tek funkcji} {tu mo¿e byæ tre¶æ} NazwaFunkcji:=wartosc; end; {koniec} begin a:=NazwaFunkcji(zmienna1, zmienna2); {dopuszczalne równie¿} NazwaFunkcji(zmienna1, zmienna2); end. Mno¿enie dwóch liczb function Pomnoz(a, b : integer) : Longint; begin Pomnoz := a*b; end; begin WriteLn('wynik 2*5 to ', Pomnoz(2, 5)); end. wynik dzia³ania programu: wynik 2*5 to 10 Obliczanie silni za pomoc± rekurencji W rozdziale dotycz±cym pêtli zosta³a opisana metoda rekurencji (wywo³ania w procedurze lub funkcji samej siebie). Poni¿ej pokazano jak poradziæ sobie z obliczeniem silni za pomoc± rekurencji. program obliczanie_silni; function silnia(l : LongInt) : Longint; begin if l <= 1 then silnia:= 1 else silnia := silnia(l - 1) * l; {wywo³anie samej siebie} end; begin WriteLn(silnia(5)); {wynik: 120} end. |
Programy ON-LINE!