Funkcje i procedury
Funkcje:
FUNCTION nazwa(par_formalne):typ_wyniku;
część opisowa (deklaracje zmiennych lokalnych)
BEGIN
część wykonawcza (musi zawierać instrukcję nazwa:=wartość;)
END;
wywołanie w programie ma postać: nazwa(par_aktualne)
Przykłady:
1.Wykorzystanie funkcji bez parametrów:
program powitanie;
{$APPTYPE CONSOLE}
uses
SysUtils;
function Napis:String;
begin
Napis:='Witaj';
end;
begin
Writeln(Napis); //wywołanie funkcji
readln;
end.
2.Wykorzystanie funkcji z parametrem
program Kwadrat;
{$APPTYPE CONSOLE}
uses
SysUtils;
function Polekwadratu(a:integer):integer;
begin
Polekwadratu:=a*a;
end;
var
a:integer;
begin
Writeln('Podaj bok kwadratu:');
Readln(a);
Writeln('Pole kwadratu o boku=',a,'wynosi',Polekwadratu(a)); //wywołanie funkcji z
//podanym przez nas bokiem a
readln;
end.
lub w programie tylko:
Writeln('Pole kwadratu o boku 5 wynosi',Polekwadratu(5)); //wywołanie funkcji z konkretna
//wartością boku = 5
Procedury:
PROCEDURE nazwa(parametry);
część opisowa
BEGIN
część wykonawcza
END;
gdzie parametry mogą mieć postać:
a,b:integer;c:real - wówczas w wywołaniu podajemy konkretne wartości: nazwa(2,3,4);
lub
var a,b:integer - wówczas w wywołaniu korzystamy ze zmiennych :var x,y:integer;
nazwa(x,y);
wywołanie procedury jest instrukcją:nazwa(lista_par_aktualne)
Przykłady:
1.Wywołanie procedury bez parametru
program Powitanie;
{$APPTYPE CONSOLE}
uses
SysUtils;
procedure Napis;
begin
writeln('Witaj');
end;
begin
Napis; //wywołanie procedury w programie
readln;
end.
2.Wywołanie procedury z parametrem
program dodawanie;
{$APPTYPE CONSOLE}
uses
SysUtils;
procedure Dodaj(x,y:integer);
begin
writeln('suma wynosi:',x+y);
end;
begin
Dodaj(5,10); //wywołanie procedury z wartościami 5 i 10
readln;
end.
Funkcje i procedury.
1.Napisz procedurę wyświetlającą twoje imię i nazwisko.
2.Napisz procedurę obliczającą kwadrat podanej liczby.
3.Napisz procedurę obliczającą pole trójkąta o podanej podstawie i wysokości oraz procedurę obliczającą obwód trójkąta o podanych bokach. Wyświetl wyniki w programie.
4.Napisz procedurę obliczającą pole i objętość sześcianu o podanym boku. Wywołaj funkcję w programie tylko w przypadku gdy wprowadzony bok jest liczbą dodatnia. W przeciwnym wypadku użyj zmienionej procedury z zadnia1 (powinna wyświetlić: ”Wprowadzona wartość jest liczba ujemną lub równą 0”).
5.a)Dokończ procedurę wczytującą do tablicy dane oraz wywołaj ją w programie:
program Tablica;
{$APPTYPE CONSOLE}
uses
SysUtils;
type tablica=array[1..50]of integer;
var
w:integer; //zmienne globalne używane zarówno w procedurach jak i w programie
t:tablica;
procedure czytaj(w:integer;var t:tablica);
var
i:integer; //zmienna lokalna - widoczna tylko dla funkcji
begin
……
gdzie w jest wielkością tablicy - ilością elementów- a w wywołaniu podajemy konkretną wartość, t - tablicą należącą do klasy tablic zdefiniowanych na początku programu - w wywołaniu podajemy nazwę zmiennej.
b)Napisz procedurę wyświetlającą tablicę .
Funkcje i procedury.
1.Napisz procedurę wyświetlającą twoje imię i nazwisko.
2.Napisz procedurę obliczającą kwadrat podanej liczby.
3.Napisz procedurę obliczającą pole trójkąta o podanej podstawie i wysokości oraz procedurę obliczającą obwód trójkąta o podanych bokach. Wyświetl wyniki w programie.
4.Napisz procedurę obliczającą pole i objętość sześcianu o podanym boku. Wywołaj funkcję w programie tylko w przypadku gdy wprowadzony bok jest liczbą dodatnia. W przeciwnym wypadku użyj zmienionej procedury z zadnia1 (powinna wyświetlić: ”Wprowadzona wartość jest liczba ujemną lub równą 0”).
5.a)Dokończ procedurę wczytującą do tablicy dane oraz wywołaj ją w programie:
program Tablica;
{$APPTYPE CONSOLE}
uses
SysUtils;
type tablica=array[1..50]of integer;
var
w:integer; //zmienne globalne używane zarówno w procedurach jak i w programie
t:tablica;
procedure czytaj(w:integer;var t:tablica);
var
i:integer; //zmienna lokalna - widoczna tylko dla funkcji
begin
……
gdzie w jest wielkością tablicy - ilością elementów- a w wywołaniu podajemy konkretną wartość, t - tablicą należącą do klasy tablic zdefiniowanych na początku programu - w wywołaniu podajemy nazwę zmiennej.
b)Napisz procedurę wyświetlającą tablicę .
Funkcje i procedury.
1.Napisz procedurę wyświetlającą twoje imię i nazwisko.
2.Napisz procedurę obliczającą kwadrat podanej liczby.
3.Napisz procedurę obliczającą pole trójkąta o podanej podstawie i wysokości oraz procedurę obliczającą obwód trójkąta o podanych bokach. Wyświetl wyniki w programie.
4.Napisz procedurę obliczającą pole i objętość sześcianu o podanym boku. Wywołaj funkcję w programie tylko w przypadku gdy wprowadzony bok jest liczbą dodatnia. W przeciwnym wypadku użyj zmienionej procedury z zadnia1 (powinna wyświetlić: ”Wprowadzona wartość jest liczba ujemną lub równą 0”).
5.a)Dokończ procedurę wczytującą do tablicy dane oraz wywołaj ją w programie:
program Tablica;
{$APPTYPE CONSOLE}
uses
SysUtils;
type tablica=array[1..50]of integer;
var
w:integer; //zmienne globalne używane zarówno w procedurach jak i w programie
t:tablica;
procedure czytaj(w:integer;var t:tablica);
var
i:integer; //zmienna lokalna - widoczna tylko dla funkcji
begin
……
gdzie w jest wielkością tablicy - ilością elementów- a w wywołaniu podajemy konkretną wartość, t - tablicą należącą do klasy tablic zdefiniowanych na początku programu - w wywołaniu podajemy nazwę zmiennej.
b)Napisz procedurę wyświetlającą tablicę
1. program Zad1;
{$APPTYPE CONSOLE}
uses
SysUtils;
procedure Imie;
begin
writeln('Kasia');
end;
begin
Imie;
readln;
end.
2. program Kwadrat;
{$APPTYPE CONSOLE}
uses
SysUtils;
function potega(a:integer):integer;
begin
potega:=a*a;
end;
var
a:integer;
begin
writeln('podaj liczbe:');
readln(a);
writeln(a,'podniesione do kwadratu wynosi:',potega(a));
readln;
end.
3. program trojkat;
{$APPTYPE CONSOLE}
uses
SysUtils;
function pole(a,h:integer):real;
begin
pole:=1/2*a*h;
end;
function obwod(a,b,c:integer):integer;
begin
obwod:=a+b+c;
end;
var
a,b,c,h:integer;
begin
writeln('podaj bok a:');
readln(a);
writeln('podaj bok b:');
readln(b);
writeln('podaj bok c:');
readln(c);
writeln('podaj wysokosc h:');
readln(h);
writeln('obwod trojkata o bokach',a,',',b,',',c,'wynosi:',obwod(a,b,c));
writeln('pole trojkata o boku',a,'i wysokosci',h,'wynosi:',pole(a,h):0:0);
readln;
end.
5a) program Tablica;
{$APPTYPE CONSOLE}
uses
SysUtils;
type mac=array[1..5]of integer;
var b:mac;
procedure pole(a:integer;var b:mac);
var
i:integer;
begin
for i:=1 to a do
begin
write('[',i,']');
read(b[i]);
end;
end;
procedure druk(a:integer;var b:mac);
var
i:integer;
begin
for i:=1 to a do
begin
writeln('[',i,']=',b[i]);
end;
end;
var
m:integer;
begin
write('il w:');
read (m);
pole(m,b);
readln;
writeln('Wyglad tablicy:');
druk(m,b);
readln;
end.