7. Uvod u Programiranje

Embed Size (px)

DESCRIPTION

up

Citation preview

Uvod u programiranje - matematika -

Uvod u programiranje- matematika VII predavanjeVesna [email protected]

PotprogramiPotprogram opisuje neki postupak i daje mu ime. Potprogrami u Pascalu suprocedure,funkcije.Potprogrami slue da se jedan deo programa izdvoji u zasebnu celinu koja se zatim moe jednom ili vie puta koristiti.Upotreba potprograma olakava pisanje programa i mnogo poveava njegovu itljivost.Ulazne i izlazne veliinePotprogrami sa ostatkom programa komuniciraju preko ulaznih i izlaznih veliina.

Funkcije imaju tano jednu izlaznu veliinu.

Procedure imaju proizvoljan broj izlaznih veliina (nula ili vie).Izlaz iz funkcijeFunkcija opisuje postupak izraunavanja jedne vrednosti.Ime funkcije oznaava izlaznu vrednost.

function suma (x,y,z:real) : real;begin suma := end;Struktura programa u PascaluDeklaracija programaDeklaracija labelaDefinicija konstantiDefinicija tipovaDeklaracija promenljivihDeklaracja potprogramabegin end .blokDeklaracija potprogramaDeklaracija procedureprocedure [ ] ; ;Deklaracija funkcijefunction [ ] : ; ;Lista parametara( { ; } )Parametar[ var ] { , } :

Parametri i argumentiPotprogrami mogu imati parametre koji mogu bitiulazniizlazniulazno / izlazni.Pri pozivu potprograma se svakom parametru dodeli odgovarajui argument. Argumenti slue za komunikaciju potprograma sa blokom iz koga su pozvani.

Parametri i argumentiParametarArgumentsintaksaulazniparametar po vrednostiizraznema varizlazni iliulazno/izlazniparametar promenljivapromenljivaima varOblast vaenja promenljivePromenljiva postoji unutar bloka u kome je deklarisana.

Dozvoljeno je proizvoljno ugnjedavanje potprograma (potprogram unutar potrograma).

Uvek vai unutranja deklaracija.Lokalne promenljivePromenljiva je lokalna u bloku u kome je deklarisana.Na poetku izvravanja bloka u kome je deklarisana, lokalna promenljiva je nedefinisana, tj. nema dodeljenu vrednost. Upotreba nedefinisane promenljive prouzrokuje graku.Parametar po vrednosti predstavlja jednu lokalnu promenljivu. Razlikuje se od ostalih lokalnih promenljivih po tome to na poetku izvravanja potprograma ima poetnu vrednost koja je jednaka vrednosti odgovarajueg argumenta.Globalne promenljivePromenljiva je globalna za sve potprograme koji su deklarisani unutar bloka u kome je deklarisana ta promenljiva.Parametar promenljiva se u proceduri ponaa kao globalna promenljiva. On predstavlja upravo onu promenljivu koja mu u pozivu procedure odgovara kao argument.program primer;var i:integer; x:real; function prva (n:integer) : boolean; var k:integer; i,a:real; begin // Postoje i,n,k:integer; i,a,x:real; // i:real je lokalna promenljiva. Globalna promenljiva i:integer nije dostupna end; procedure druga (m:integer); var n:integer; procedure treca (x:char); var b:boolean; begin // postoje i,m,n:integer; x:char; b:boolean; // Globalna promenljiva x:real nije dostupna. end; begin // postoje i,m,n:integer; x:real; // n:integer je lokalna za proceduru druga, a globalna za proceduru treca end;begin // postoje i:integer; x:real;end.Poziv potprogramaProcedura se poziva kao samostalna naredba tako to se navede njeno ime i lista argumenata.Funkcija se poziva u okviru nekog izraza tako to se navede njeno ime i lista argumenata.Lista argumenata treba da odgovara po broju, tipu i redosledu listi parametara iz deklaracije odgovarajueg potprograma.program ProstBroj;var n : integer;

function prost (n:integer) : boolean; var koren : real; k : integer; begin koren := trunc(sqrt(n)); k := 2; while (k koren then prost := true else prost := false end;

begin write ('n = '); read (n); if prost (n) then writeln ('Broj je prost') else writeln ('Broj nije prost')end.Odtampati sve proste brojeve u opseg u od m do n kod kojih je suma kvadrata cifara deljiva sa datim brojem k.prost brojsuma kvadrataizdvajanje cifaradeljivost sa k.program zadatak;var m, n, k,i : integer;.....// potprogramibeginwrite(m=); read (m);write(n=); read (n);write(k=); read (k);for i := m to n doif uslov (i)then wtireln (i)end.function uslov (broj : integer) : boolean;begin if Prost (k) and UslovZaCifre (k)then uslov := trueelse uslov := falseend;

alternativa:uslov := Prost (k) and UslovZaCifre (k)function prost (n:integer) : boolean; var koren : integer; k : integer; begin koren := trunc(sqrt(n)); k := 2; while (k koren then prost := true else prost := false end;function UslovZaCifre (broj, k : integer) : boolean;var S : integer;beginS := Suma (broj);

if S mod k =0then UslovZaCifre := trueelse UslovZaCifre := falseend;function Suma (broj : integer) : integer;var S : integer;beginS := 0;repeat cifra := broj mod 10; broj := broj div 10; S := S + sqr(cifra)until broj = 0;

Suma := Send;NapomenaU Pascal-u vai pravilo da sve to se upotrebi mora predhodno biti definisano.O tome treba voditi rauna kod pisanja potprograma.