Uvod u programiranje matematika VIII predavanje Vesna Velikovi

  • Slides: 10
Download presentation
Uvod u programiranje - matematika – VIII predavanje Vesna Veličković vesna@pmf. ni. ac. rs

Uvod u programiranje - matematika – VIII predavanje Vesna Veličković vesna@pmf. ni. ac. rs

Potprogrami Potprogram opisuje neki postupak i daje mu ime. Potprogrami u Pascalu su •

Potprogrami Potprogram opisuje neki postupak i daje mu ime. Potprogrami u Pascalu su • procedure, • funkcije. Potprogrami služe da se jedan deo programa izdvoji u zasebnu celinu koja se zatim može jednom ili više puta koristiti. Upotreba potprograma olakšava pisanje programa i mnogo povećava njegovu čitljivost.

Ne-rekurzivna definicija n ! = n * (n-1) *. . . * 2 *

Ne-rekurzivna definicija n ! = n * (n-1) *. . . * 2 * 1 0! = 1 function faktorijel_N (n: Long. Int) : Long. Int; var i : integer; P : Long. Int; begin P : = 1; for i: =2 to n do P : = P * i; faktorijel_N : = P; end;

Rekurzivna definicija 0! = 1 n ! = n * (n-1) ! function faktorijel_R

Rekurzivna definicija 0! = 1 n ! = n * (n-1) ! function faktorijel_R (n: Long. Int) : Long. Int; begin if n = 0 then faktorijel_R : = 1 else faktorijel_R : = n * faktorijel_R (n-1) end;

Stepen a 0 = 1 an = a * an-1 a-n = 1 /

Stepen a 0 = 1 an = a * an-1 a-n = 1 / an , n > 0 function stepen (a: real; n: integer) : real; begin if n = 0 then stepen : = 1 else if n > 0 then stepen : = a * stepen (a, n-1) else stepen : = 1 / stepen (a, -n) end;

Optimizacija a 2 n = (a 2)n function stepen (a: real; n: integer) :

Optimizacija a 2 n = (a 2)n function stepen (a: real; n: integer) : real; begin if n = 0 then stepen : = 1 else if n < 0 then stepen : = 1 / stepen (a, -n) else if n mod 2 = 0 then stepen : = stepen (sqr(a), n div 2) else stepen : = a * stepen (a, n-1) end;

VAŽNO • Rekurzivni potprogram mora da ima bar jednu nerekurzivnu granu i ona se,

VAŽNO • Rekurzivni potprogram mora da ima bar jednu nerekurzivnu granu i ona se, za svaku dopustivu vrednost paramtra, mora nekad pozvati. • Prednost rekurzije je što se lako piše i lako razume. • Nedostatak rekurzije je što se sporo izvršava i što troši dosta memorijskog prostora.

 • Napisati potprogram koji štampa cifre prirodnog broja n od cifre najmanje težine

• Napisati potprogram koji štampa cifre prirodnog broja n od cifre najmanje težine do cifre najveće težine. procedure stampaj (n: integer); var cifra : 0. . 9; begin if n div 10 = 0 {jednocifren broj} then writeln (n) else begin cifra : = n mod 10; writeln (cifra: 3) ; stampaj (n div 10) ; end;

 • Napisati potprogram koji štampa cifre prirodnog broja n od cifre najveće težine

• Napisati potprogram koji štampa cifre prirodnog broja n od cifre najveće težine do cifre najmanje težine. procedure stampaj (n: integer); var cifra : 0. . 9; begin if n div 10 = 0 {jednocifren broj} then writeln (n) else begin cifra : = n mod 10; stampaj (n div 10); writeln (cifra: 3); end;

Hanojske kule procedure prebaci (n: integer; pocetna, pomocna, krajnja : 1. . 3); begin

Hanojske kule procedure prebaci (n: integer; pocetna, pomocna, krajnja : 1. . 3); begin if n <> 0 then begin prebaci (n-1, pocetna, krajnja, pomocna); writeln (pocetna, '->', krajnja); prebaci (n-1, pomocna, pocetna, krajnja); end;