funkcijos_proceduros20141002lr
Download
Report
Transcript funkcijos_proceduros20141002lr
FUNKCIJOS IR PROCEDŪROS
Liutauras Ričkus
5 paskaita
PAPROGRAMĖS
Programa suskaldyta dalimis
Savarankiškos
Įvedimo duomenys
Rezultatai
Funkcijos
Procedūros
Pakartotinis panaudojimas
Informacijos keitimasis
Parametrais (kintamųjų reikšmės ir vardai)
Funkcijų vardai (rezultatų reikšmė)
Globaliais vardais (konstantų, tipų, kintamųjų, funkcijų ir
procedūrų vardai.)
STANDARTINĖS MATEMATINĖS FUNKCIJOS
PASCAL
Funkcija
Tikslas
Pavyzdžiai
sqrt(x)
Kvadratinė šaknis iš x
sqrt(900.0) yra 30.0
exp(x)
𝑒𝑥
exp(1.0) yras 2.718282
ln(x)
ln x , x turi būti teigiamas.
ln(2.718282) yra 1.0
sqr(x)
Kelia kvadratu, rezultato
reikšmė sutampa su x tipu.
sqr(5) yra 25
abs(x)
Absoliuti reikšmė, rezultato abs(-10) yra 10
reikšmė sutampa su x tipu.
trunc(x)
Atmetama trupmeninė
realiosios x reikšmės
dalis, neapvalinant.
Rezultato tipas – sveikasis.
trunc(1.2) yra 1
trunc(-1.2) yra -1
trunc(5.8) yra 5
trunc(-5.8) yra -5
round(x)
Apvalina x reikšmę iki
sveikojo skaičiaus.
round(4.1) yra 4
STANDARTINĖS MATEMATINĖS FUNKCIJOS C
Reikia naudoti #include <math.h>
Funkcija
Tikslas
Pavyzdžiai
sqrt(x)
Kvadratinė šaknis iš x
sqrt(900.0) yra 30.0
exp(x)
𝑒𝑥
exp(1.0) yras 2.718282
log(x)
ln x.
log(2.718282) yra 1.0
log10(x)
lg x
log10(1.0) yra 0.0
log10(10.0) yra 1.0
abs(m),
fabs(x)
Absoliuti reikšmė
abs(-10) yra 10
ceil(x)
Apvalina iki artimiausio nemažesnio
sveikojo skaičiaus
ceil(9.2) yra 10.0
ceil(-9.8) yra –9.0
floor(x)
Apvalina iki artimiausio nedidesnio
sveikojo skaičiaus
floor(9.2) yra 9.0
floor(-9.8) yra –10.0
pow(x,y)
𝑥𝑦
pow(2,7) yra 128.0
pow(9,0.5) yra 3.0
sin(x), cos(x),
tan(x)
Trigonometrinės funkcijos, x –
radianuose
sin(0.0) yra 0.0
Cos(0.0) yra 1.0
Tan (0.0) yra 0.0
PROCEDŪROS APRAŠYMAS PASCAL
Aprašymas
procedure <vardas> (<parametrų sąrašas>);
label ...;
const ...;
type ...;
var ;
procedure ...;
function ;
begin
<sakiniai>
end;
<vardas> - Keli_zodziai arba KeliZodziai
<parametrų sąrašas>
procedure Skaito (x1, x2: real; k,l:integer; c1, c2: char);
PROCEDŪRŲ PARAMETRŲ TIPAI
Parametrai-reikšmės
Parametrai-kintamieji
procedure Raso (x1, x2: real; k,l:integer; c1, c2: char);
procedure Raso (var x1, x2: real; k,l:integer)
Parametrai masyvai
Galima perduoti parametrai-reikšmė ar parametraikintamieji
var <vardų sąrašas> : array [(rėžio vardas>..<rėžio
vardas>:<diskrečiojo tipo vardas>] of <tipo vardas>;
var
Pvz:
rn : array [m..n:integer] of real;
kn : array [ma..na : integer] of spalva;
Panaudojimas
type masyvas = array [1..10 ] of integer;
var
mazas : masyvas;
didelis : array [-100..100] of integer;
procedure Tvarka (var m:array[x..y : integer] of integer);
Kvietimas
Tvarka (mazas);
Tvarka (didelis);
KREIPINYS Į PROCEDŪRĄ
<vardas>(<argumentai>);
<argumentai> - faktiniai parametrai
Pvz:
Procedūros aprašymas
procedure Max_min (a,b: real; {parametrai-reikšmės}
var max, min: real); {parametrai-kintamieji}
begin
if a < b then
begin
max := a;
min := b;
end
else
begin
max := b;
min := a;
end
end;
Kreipinys į procedūrą
var a,b,didz,maz: real;
I,j,k,l: integer;
begin
a:=10; b:=20; i:=15; j:=25;
Max_min(a,b, didz, maz);
Max_min(i,j,k,l); {klaida!!!}
End.
FUNKCIJOS PASKALYJE
Aprašymas
function <vardas> (<parametrų sąrašas>):<grąžinamos reikšmės tipas>
label ...;
Const ...;
type ...;
var ;
procedure ...;
function ;
begin
<sakiniai>;
<vardas>:=...;
end;
Gražinama reikšmė priskiriama funkcijos vardui
Pvz.:
Funkcijos aprašymas
function Sudeti(a,b:integer):integer;
begin
Sudeti := a + b
end;
Funkcijos kvietimas
suma := Sudeti(5,10)+Sudeti(k,l)
FUNKCIJOS C KALBOJE
Funkcijos negali būti funkcijose
Pagrindinė funkcija yra main()
<grąžinamos reikšmės tipas> <funkcijos vardas> (<parametrų
tipai>) { <sakiniai>};
Jei nieko negražina void
Pvz:
#include <stdio.h>
int main()
{
int x;
for (x=1; x<=10; x++) {
printf("%d ", square(x));
}
printf("\n");
return 0;
}
int square (int y)
{
return y*y;
}
GALIOJIMO SRITYS PASCAL
Kintamasis galioja bloke, kuriame apibrėžtas
Pascal
Procedūros funkcijos, kuriose yra kitos procedūros ar funkcijos
Pvz.:
program vardai;
var a,b,c,d: integer;
procedure r(a: integer; var e:integer);
var b: integer;
begin
b:=3;
c:=4;
writeln('Procedura. a=',a,' b=', b,' c=',c,' d=',d, ' e=', e);
e:=6;
end;
begin
a:=22;
b:=33;
c:=44;
d:=55;
writeln('Programa pries proc. a=',a,' b=', b,' c=',c, ' d=',d );
r(b,d);
writeln('Programa po proc. a=',a,' b=', b,' c=',c,' d=', d );
end.
Rezultatas
Programa pries proc. a=22 b=33 c=44 d=55
Procedura. a=33 b=3 c=4 d=55 e=55
Programa po proc. a=22 b=33 c=4 d=6
VIETINIAI IR IŠORINIAI KINTAMIEJI.
STATINIAI KINTAMIEJI
Vietiniai(local) kintamieji galioja bloke
Išoriniai arba globalieji kintamieji aprašomi viršuje
Galioja visą programos veikimą
extern – galima naudoti globalų arba bibliotekos kintamajį
Statiniai kintamieji
Pvz.:
#include <stdio.h>
int a=5;
int main()
{
void skaic(void);
int kiekis;
printf("main: a=%d\n", a);
for (kiekis=1; kiekis<=3; kiekis++)
{
printf("Iteracija %d\n", kiekis);
a--;
skaic();
}
printf("\n");
return 0;
}
void skaic (void)
{
int fa=1;
static int sta=1;
printf("funkcija: fa=%d ir sta=%d a=%d\n", fa++, sta++, a++);
}
Rezultatas
main: a=5
Iteracija 1
fa=1 ir sta=1 a=4
Iteracija 2
fa=1 ir sta=2 a=4
Iteracija 3
fa=1 ir sta=3 a=4