admin
|
|
« : Styczeñ 30, 2012, 09:22:33 » |
|
Operacje na zmiennych lokalnych i globalnych Zmienna lokalna przes³ania w procedurze zmienne globalne!!!! Przyk³ad poni¿ej przedstawia zas³anianie zmiennej globalnej x ,zmienn± lokaln± x po wywo³aniu procedury pi³ka. Zmienna y jest zmienn± globaln± i nie ma odpowiednika w procedurze, dlatego nie jest niczym zas³aniana.
program proc_pilka; uses crt,dos; var x,y: byte;
procedure pilka; var x,a:byte; {zmienne lokalne} begin a:=1;x:=20; repeat x:=x+a; clrscr; if (x>65) or (x<2) then a:=-a; gotoxy(x,y);write('O'); gotoxy(60,1); write('x=',x);delay(100); until keypressed;
end; begin x:=255; y:=15; pilka; write(x); readkey;readkey; end.
|
|
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #1 : Styczeñ 30, 2012, 09:29:14 » |
|
Wprowadzanie warto¶ci do procedury. Pozwala na wprowadzenie do procedury warto¶ci zmiennej z innej czê¶ci programu.
Przyk³adem niech bêdzie procedura o nazwie kwadrat, rysuj±ca kwadrat z '*'. Przy nazwie procedury deklarowane s± zmienne które bêd± wprowadzane do procedury z programu g³ównego. Je¿eli procedura rysuje kwadrat , to zmienne wprowadzone z programu g³ównego bêd± wskazywa³y po³o¿enie tego kwadratu na ekranie. Procedury które posiadaj± zmienne wprowadzane z programu nosz± nazwê procedur parametrycznych.
program magiel; uses crt,dos; var x,y:byte; procedure kwadrat (a,b:byte);{deklaracja zmiennych wprowadzanych do procedury} var x,y:byte; begin for x:=1 to 5 do begin for y:=1 to 5 do begin gotoxy(a+x,b+y);write('*');end;end; end; procedure ruch; var x,y:byte; begin randomize; repeat x:=1+random(60); y:=1+random(15);kwadrat(x,y);delay(200);clrscr; until keypressed;
end;
begin clrscr; ruch;
end.
|
|
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #2 : Styczeñ 30, 2012, 09:43:38 » |
|
Przekazywanie parametrów przez nazwê lub warto¶æ. Parametr nie poprzedzony s³owem var jest przekazywany przez warto¶æ. Oznacza to,¿e procedura otrzymuje kopie warto¶ci parametru aktualnego, sporz±dzon± w chwili wywo³ania.
W przypadku poprzedzenia parametru formalnego s³owem var w chwili wywo³ania procedur otrzymuje nie jego kopie, a jego wska¼nik do orygina³u odpowiedniej zmiennej.
Przekazywanie parametrów przez nazwê umo¿liwia komunikacje dwustronn±, jednak je¿eli dany argument pe³ni wy³±cznie role danej wej¶ciowej , wystarczy przekazaæ przez warto¶æ.
Program a; uses crt; Var znak:char; i:integer; procedure czytaj(var c:char); begin write(‘wpisz pojedyñczy znak z klawiatury: ‘); readln (c); i:=ord(c); end; Begin repeat czytaj(znak); writeln(‘wprowadzono znak ‘,znak);writeln(‘o kodzie ‘,i) until znak=(‘0’); end.
|
|
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #3 : Luty 20, 2012, 09:24:19 » |
|
Program wy¶wietlaj±cy kwadracik z liter "A"
program fistaszek; uses crt,dos;
procedure kw; var x,y:byte; begin clrscr; for x:=1 to 5 do begin for y:=1 to 5 do begin gotoxy(1+x,10+y);write('A');end; end;readkey; end;
begin kw; end.
|
|
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #4 : Luty 20, 2012, 10:36:40 » |
|
Program obliczaj±cy zawarto¶æ alkoholu we krwi.
program ile_krwi; {specjalnie dla Patrycji} uses crt,dos; var masa, ilosc_nap, procentowy_udz: real; procedure face; begin clrscr; gotoxy(10,10);write('Podaj ile wypiles[l]: ');readln(ilosc_nap); gotoxy(10,12);write('Podaj ile procent alkoholu bylo w napoju:' );readln(procentowy_udz); gotoxy(10,14); write('Podaj swoj mase ciala: ');readln (masa); end; procedure licz; var a, b, c :real; begin a:=ilosc_nap*procentowy_udz/100; b:=0.08*masa; c:=a/(b+a)*100; gotoxy(10,16);write('zawartosc alkoholu we krwi= ',c:0:2,' promili alkoholu '); readkey;
end;
begin face; licz; end.
|
|
|
Zapisane
|
|
|
|
|