PROGRAM Komunikat; {procedura}

 

 USES

Crt;

 

 PROCEDURE Wypisz_Komunikat; {Definicja prcedury – bez parametrow}

BEGIN

Writeln('To jest procedura, ktora wypisuje komunikat na ekranie');

Writeln('To jest komunikat');

END; {Koniec procedury}

 

BEGIN {main}

ClrScr;

Writeln('Przed wywolaniem procedury');

Wypisz_Komunikat; {wywolanie procedury}

Writeln('Po wywolaniu procedury');

 REPEAT UNTIL KeyPressed;

END.{main}

 

 

PROGRAM Przekazywanie_parametrow_przez_wartosc; {Procedura}

 

 USES

Crt;

 

 PROCEDURE Wypisz_liczbe(liczba : INTEGER);

BEGIN

Writeln('Wartosc parametru wynosi ', liczba);

END;

 

 BEGIN

ClrScr;

Wypisz_liczbe(10);

Wypisz_liczbe(100);

 

 REPEAT UNTIL KeyPressed;

END.

 

PROGRAM Obliczanie_silni; {Funkcja}

 

 USES Crt;

 VAR

liczba, i, n : INTEGER;

 

 FUNCTION Silnia(liczba : INTEGER) : LONGINT;

BEGIN

IF liczba > 1 THEN

Silnia:=liczba*Silnia(liczba-1)

ELSE

Silnia:=1;

END; {Silnia}

 

 BEGIN {main}

ClrScr;

Writeln('Obliczanie silni z danej liczby calkowitej');

Writeln('Podaj liczbe');

Readln(n);

FOR i:=0 TO n DO

Writeln(' ', i , ' != ', Silnia(i));

 

 REPEAT UNTIL KeyPressed;

END. {main}

 

 

 

program CzytanieHasla; {Funkcja, typ łaćuchowy, ReadKey}

 

 uses Crt;

 

 type

string10 = string[10]; {Deklaracja typu łancuch o dług 10}

 

 function Haslo:string10; {Funkcja}

 

 var

i : integer; { licznik znakow }

c : char;

s : string; { bufor na haslo }

 

 begin {funkcji Haslo}

s:=''; { zaczynamy od pustego lancucha }

writeln('Podaj haslo:');

for i:=1 to 10 do { czytaj kolejne znaki }

begin

c:=ReadKey; { czytaj znak }

if c = #13 then Break { Enter - koniec }

else s:=s+c { dodaj do hasla }

end;

Haslo:=s

end; {funkcji Haslo}

 

 Begin {main}

writeln(Haslo);

readln

End.

 

PROGRAM Przekazywanie_procedurom_tablic;

 

 USES Crt;

 

 CONST rozmiar = 10;

 

 TYPE macierz = ARRAY[1..rozmiar, 1..rozmiar] OF INTEGER;

 

 VAR tablica : macierz;

 

 PROCEDURE Zapelnij_tablice(VAR tablica : macierz; rozmiar : INTEGER);

VAR

i,j :INTEGER;

 

 BEGIN

Randomize;

FOR i:=1 TO rozmiar DO

BEGIN

FOR j:=1 TO rozmiar DO

BEGIN

IF i =j THEN tablica[i,j]:=Random(10) {Wpisywanie liczb pseudolosowych}

{od 1 do 9 na przekatnej tablicy}

ELSE tablica[i,j]:=0;

END; {j}

END; {i}

END;

 

 PROCEDURE Wydruk_tablicy(VAR tablica : macierz; rozmiar : INTEGER);

VAR

i,j :INTEGER;

 

 BEGIN

Writeln('Wydruk zawartosci tablicy');

Writeln;

FOR i:= 1 TO rozmiar DO

BEGIN

FOR j:= 1 TO rozmiar DO

BEGIN

Write(tablica[i, j], ' ');

END;

Writeln;

END;

END;

 

 PROCEDURE Suma_na_przekatnej(VAR tablica : macierz; rozmiar : INTEGER);

 

 VAR

i, suma : INTEGER;

 

 BEGIN

suma:=0;

FOR i:=1 TO rozmiar DO

BEGIN

suma:=suma + tablica[i,i]; {-- Sumowanie elementow na przekatnej --}

END;

Writeln;

Writeln('Suma elementow na przekatnej = ',suma);

END;

 

 

 BEGIN {main}

ClrScr;

Zapelnij_tablice(tablica,rozmiar);

Wydruk_tablicy(tablica,rozmiar);

Suma_na_przekatnej(tablica,rozmiar);

 

 REPEAT UNTIL KeyPressed;

END. {main}

 

 

 

 

 

PROGRAM KULA; { naglowek programu}

{ poczatek BLOKu DEKLARACJI}

 

 CONST PI=3.14;

VAR r : real; {promien - typu rzeczywistego}

v : real; {objetosc - typu rzeczywistego}

i: integer;

 

 PROCEDURE dane (VAR x: real);

 

 begin

write('Promien=');

readln(x);

end; {dane}

 

 PROCEDURE obliczenia ( x: real; VAR y: real);

 

 { x,y - zmienne lokalne

x-promien - przekazywany przea wartosc

z programu glownego

y-objetosc - przekazywany przez zmienna-

na zewnatrz procedury do programu glown }

 

 var x3: real; { r*r*r - promien do potegi 3 - zmienna lokalna}

 

 Begin {pocz bloku operacji procedury obliczenia}

x3:=x*x*x;

y:=4.0/3.0*pi*x3;

End;

 

 PROCEDURE wyniki(promien,objetosc: real);

 

 Begin

writeln;

writeln('OBJETOSC KULI o promieniu ',promien:7:3,' wynosi ',objetosc:10:3);

writeln;

writeln('...Nacisnij ENTER...');

readln;

End; {wyniki}

 

 { Koniec bloku deklaracji}

 

 { Blok operacji - zacznie sie}

 

 BEGIN { Kula – program główny}

dane(r);

obliczenia(r,v); { r wchodzi do procedury, a wychodzi z niej v}

wyniki(r,v);

END. { Kula}

 {Koniec bloku operacji}

 

 

 

PROGRAM KULA1; { naglowek programu}

 

 { poczatek BLOKu DEKLARACJI}

 

 USES DOS,CRT;

 

 CONST ESC=#27; {stala}

 

 {Zmienne globalne}

 

 VAR r : real; {promien - typu rzeczywistego}

v : real; {objetosc - typu rzeczywistego}

i: integer; { zmienna typu calkowitego}

z: char; {zmienna typu znak}

 

 PROCEDURE dane (VAR x: real);

 

 begin

textcolor(red);

writeln('Obliczenie NR ',i);

writeln;

textcolor(yellow);

write('Promien=');

readln(x);

end; {dane}

 

 PROCEDURE obliczenia ( x: real; VAR y: real);

{ x,y - zmienne lokalne

x-promien - przekazywany przea wartosc

z programu glownego

y-objetosc - przekazywany przez zmienna-

na zewnatrz procedury do programu glown }

var x3: real; { r*r*r - promien do potegi 3 - zmienna lokalna}

 

 Begin {pocz bloku operacji procedury obliczenia}

x3:=x*x*x;

y:=4.0/3.0*pi*x3;

End;

 

 PROCEDURE wyniki(promien,objetosc: real);

Begin

writeln;

textcolor(green);

writeln('PI=',pi);

writeln;

textcolor(blue);

write('OBJETOSC KULI o promieniu ');

textcolor(magenta);

writeln(promien:7:3);

textcolor(green);

write(' wynosi ');

textcolor(lightcyan);

writeln(objetosc:10:3);

textcolor(white);

writeln;

writeln;

write('BY zakonczyc obliczenia nacisnij');

highvideo;

textcolor(yellow+blink);

writeln(' ESC...');

textcolor(white);

z:=Readkey;

normvideo;

writeln;

End; {wyniki}

 

 { Koniec bloku deklaracji}

 

 { Blok operacji - zacznie sie}

 BEGIN { Kula }

clrscr;

textmode(c40);

i:=0;

repeat

i:=i+1;

dane(r);

obliczenia(r,v); { r wchodzi do procedury, a wychodzi z niej v}

wyniki(r,v);

until (z=ESC);

END. { Kula}

{Koniec bloku operacji}