PROCEDURY I PARAMETRY PROCEDUR
Z punktu
widzenia użytkownika praca z programami odbywa się według schematu:
DANE
- informacje dostarczane przez użytkownika
PROGRAM - przetwarzanie informacji
WYNIKI
- rezultaty działania programu
Programisty zadaniem jest: opracować komunikację pomiędzy użytkownikiem a programem, w jaki sposób ma dostarczać dane i w jakiej formie będzie otrzymywał wyniki, sformułować metodę, zgodnie z którą program będzie działał (schematycznie podany sposób rozwiązania problemu nosi nazwę algorytm), opisać algorytm w konkretnym języku programowania oraz sprawdzić poprawność działania programu
Procedury
Zlecając komuś wykonanie jakiejś pracy, pewne fragmenty naszej instrukcji możemy wydzielić, po to, żeby nasze polecenie miało czytelniejszą strukturę i żeby wydzielić z niego mniejsze jednostki, które wykonywane są np. wiele razy. Na przykład trzeba narysować na ekranie 100 kwadratów. Takie powtarzające się fragmenty opisujemy w procedurach. Procedury deklarujemy (definiujemy) przed częścią główną programu. W Pascalu najpierw musi być coś zdefiniowane, a dopiero potem można się tym posługiwać.
Za pośrednictwem parametrów przekazujemy do procedury informacje (liczby, teksty i inne), na których będziemy wykonywać działania. Za pomocą parametrów można modyfikować działanie procedury, wykonując ją z innym zestawem danych . Procedura może być bez parametrów, ale wtedy wykonuje działania tylko na określonych wcześniej wartościach.
procedura bez parametrów - kwadrat o boku 100 o leżący w konkretnym miejscu na ekranie
procedure kwadrat; begin line(100,100,200,100); line(200,100,200,200); line(200,200,100,200); line(100,200,100,100); end; procedura z parametrami - kwadrat o dowolnych wymiarach i położeniu
procedure kwadrat(x,y,bok:integer);
begin
line(x,y,x+bok,y);
line(x+bok,y,x+bok,y+w);
line(x+bok,y+bok,x,y+bok);
line(x,y+bok,x,y);
end;
W pierwszym przypadku można narysować tylko jeden kwadrat w określonym miejscu ekranu. Jeśli zdefiniujemy parametry można rysować dowolne kwadraty w każdym miejscu ekranu.
Aby
tak zdefiniowany kwadrat został narysowany należy wywołać nazwę procedury w
części głównej programu na przykład:
BEGIN
...
kwadrat(100,100,50);
...
END.
Można wcześniej zadeklarować zmienne, w których będziemy przechowywać określone parametry i z ich pomocą rysować kwadraty:
BEGIN
...
x:=100;
y:=100;
bok:=50;
kwadrat(x,y,bok);
...
END.
GRAF05.PAS - LITERKI
program grafika05;
uses graph;
var
d,m:integer;
x,y,w,s,k:integer;
procedure inicjaly;
begin
SetColor(k);
MoveTo(x,y);
LineRel(0,w);
LineRel(s,0);
MoveRel(s div 2,-w);
LineRel(0,w);
LineRel(s,0);
LineRel(0,-w);
MoveRel(-s div 2,w div 2);
LineRel(0,w div 2);
end;
begin
d:=detect;
initgraph(d,m,'');
{inicjujemy zmienne}
x:=50;
y:=100;
w:=100;
s:=40;
k:=10;
Inicjaly;
Readln;
x:=200;
w:=200;
k:=11;
Inicjaly;
Readln;
x:=350;
w:=100;
s:=80;
k:=12;
Inicjaly;
Readln;
CloseGraph;
end.
GRAF06.PAS - LITERKI
program grafika06;
uses graph,turtle;
var d,m:integer;
procedure inicjaly(x,y,w,s,k:integer);
begin
SetColor(k);
MoveTo(x,y);
LineRel(0,w);
LineRel(s,0);
MoveRel(s div 2,-w);
LineRel(0,w);
LineRel(s,0);
LineRel(0,-w);
MoveRel(-s div 2,w div 2);
LineRel(0,w div 2);
end;
begin
d:=detect;
initgraph(d,m,'');
Inicjaly(50,100,100,40,10);
Readln;
Inicjaly(200,100,200,40,11);
Readln;
Inicjaly(350,100,100,80,12);
Readln;
CloseGraph;
end.
GRAF07.PAS - LITERKI program grafika07; uses graph,turtle; var d,m:integer; procedure LiteraL(x,y,w,s,k:integer); begin SetColor(k); MoveTo(x,y); LineRel(0,w); LineRel(s,0); end; procedure LiteraW(x,y,w,s,k:integer); begin SetColor(k); MoveTo(x,y); LineRel(0,w); LineRel(s,0); LineRel(0,-w); MoveRel(-s div 2,w div 2); LineRel(0,w div 2); end; var x,y,w,s,o,k:integer; begin d:=detect; initgraph(d,m,''); {inicjujemy zmienne} x:=50; y:=100; w:=100; s:=40; 0:=20; k:=10; LiteraL(x,y,w,s,k);LiteraW(x+s+o,y,w,s,k); Readln; x:=200; w:=200; s:=20; k:=k+1; LiteraL(x,y,w,s,k; x:=x+s+o LiteraW(x,y,w,s,k);
Readln; x:=350; w:=100; s:=80; o:=40; k:=k+1; LiteraL(x,y,w,s,k); x:=x+s+o; LiteraW(x,y,w,s,k); Readln;
CloseGraph; end.
Ćwiczenie
Zdefiniuj procedury, parametrami: x,y,wys,szer,kolor, które będą rysowały
następujące litery:
a) używając instrukcji bezwzględnych
MOVETO i LINETO
b) używając instrukcji względnych
MOVEREL i LINEREL
c) używając instrukcji LINE
Użyj te procedury w programie głównym tak, aby została narysowana całość