110 likes | 390 Views
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)
E N D
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 C Reikianaudoti #include <math.h>
ProcedūrosaprašymasPascal • 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 • procedureRaso (x1, x2: real; k,l:integer; c1, c2: char); • Parametrai-kintamieji • procedureRaso (var x1, x2: real; k,l:integer) • Parametrai masyvai • Galima perduoti parametrai-reikšmė ar parametrai-kintamieji var <vardų sąrašas> : array [(rėžio vardas>..<rėžio vardas>:<diskrečiojo tipo vardas>] of <tipo vardas>; • Pvz: varrn: array [m..n:integer] of real; kn: array [ma..na : integer] of spalva; • Panaudojimas type masyvas = array [1..10 ] ofinteger; var mazas: masyvas; didelis : array [-100..100] ofinteger; procedure Tvarka (var m:array[x..y : integer] ofinteger); • Kvietimas Tvarka (mazas); Tvarka (didelis);
Kreipinys į procedūrą • <vardas>(<argumentai>); • <argumentai> - faktiniai parametrai • Pvz: • Procedūros aprašymas procedureMax_min (a,b: real; {parametrai-reikšmės} varmax, min: real); {parametrai-kintamieji} begin ifa < b then begin max:= a; min := b; end else begin max:= b; min := a; end end; • Kreipinys į procedūrą vara,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 functionSudeti(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> intmain() { intx; for(x=1; x<=10; x++) { printf("%d ", square(x)); } printf("\n"); return0; } intsquare (int y) { returny*y; }
Galiojimo sritys pascal • Kintamasis galioja bloke, kuriame apibrėžtas • Pascal • Procedūros funkcijos, kuriose yra kitos procedūros ar funkcijos • Pvz.: program vardai; vara,b,c,d: integer; procedurer(a: integer; var e:integer); varb: 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('Programapries 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; intmain() { voidskaic(void); intkiekis; printf("main: a=%d\n", a); for(kiekis=1; kiekis<=3; kiekis++) { printf("Iteracija %d\n", kiekis); a--; skaic(); } printf("\n"); return0; } voidskaic (void) { intfa=1; staticint sta=1; printf("funkcija: fa=%d ir sta=%da=%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