Professional Documents
Culture Documents
Šta su funkcije?
Da biste implementirali funkciju, koristite ključnu reč function, naziv funkcije, listu
parametara (ako postoje), i tip podatka koji funkcija vraća. Tijelo funkcije sadrži logiku
operacije, a rezultat se označava pomoću rečenice Result.
begin
Result := a + b;
end;
U ovom primjeru, funkcija Saberi prima dva cijela broja i vraća njihov zbir.
begin
end;
begin
end;
U ovom primjeru, procedura Pozdravi ispisuje pozdravnu poruku, ali ne vraća nikakav
rezultat.
Primjeri Zadataka:
pascalCopy code
procedure Pozdravi(ime: String); begin Writeln('Dobar dan, ', ime, '!'); end;
Korišćenje procedure:
pascalCopy code
begin Pozdravi('Ana'); // Ispisuje: Dobar dan, Ana! end;
Ovi primjeri ilustruju osnovne koncepte funkcija i procedura u Pascalu, ističući
njihovu ulogu, implementaciju i korisnost.
Šta je rekurzija?
Rekurzija je koncept u programiranju gdje funkcija može da poziva samu sebe. Ova
tehnika se često koristi za rješavanje problema koji se mogu podijeliti na manje slične
podprobleme. U Pascalu, rekurzivne funkcije su dio moćnog alata koji omogućava
elegantno rješavanje određenih problema.
Rekurzivna funkcija se definiše slično kao i obična funkcija, ali sadrži poziv same sebe
unutar svog tijela. Važno je postaviti uslov zaustavljanja kako biste izbjegli
beskonačnu rekurziju.
begin
if n <= 1 then
Result := 1
else
end;
Fibonačijev niz:
Fibonačijev niz je niz brojeva gde svaki broj predstavlja zbir prethodna dva. U ovom
primeru, funkcija Fibonaci rekurzivno izračunava n-ti član Fibonačijevog niza.
var
rezultatFib: Integer;
begin
rezultatFib := Fibonaci(5);
// RezultatFib će biti 5 jer je peti član Fibonačijevog niza 5
end; var rezultatFib: Integer; begin rezultatFib := Fibonaci(5); // RezultatFib će biti 5 jer je peti član
Fibonačijevog niza 5 end;
Rekurzija može biti moćan alat u rešavanju određenih problema, ali je važno koristiti
je pažljivo kako biste izbegli beskonačne petlje i postavili odgovarajuće uslove
zaustavljanja.
var
inputChars: string;
begin
writeln('Permutation Generator');
writeln('---------------------');
writeln('---------------------');
writeln('Permutations:');
GeneratePermutations(inputChars, 1, Length(inputChars));
end.
Zadaci
1. Faktorijel
Napiši program koji računa faktorijel nekog broja! (6!=1*2*3*4*5*6=720)
2. Obrnuta Poezija
Mali Albert je jako talentovano dijete za poeziju, to je primijetio i njegov učitelj. Kako je Albert
postajao sve bolji i bolji u recitovanju, dobri učitelj je htio da mu zada izazovnije tekstove za
recitovanje, no učitelj je nažalost polu-disleksičan. Pomozi Albertovom učitelju tako što češ napraviti
program koji datu rečenicu pretvori u „obrnutu poeziju“ tako što ćeš samo riječi pojedinačno napisati
unatraške dok će raspored riječi ostati nepromijenjen! (npr. Crna svinja anrC ajnivs)
3. Euklidov Algoritam
Napiši program koji računa NZD(najveći zajednički sadržilac) dva broja! (najveci broj koji dijeli neka
dva broja npr. NZD(16,20)=4)
4. Nemušti jezik
Profesorica istorije je prije bila jako uspješna u vođenju časa, no zadesila se u saobraćajnoj nesreći u
kojoj je preživjela, ali joj se poremetio govorni centar u mozgu. Naime, ona je savršeno svjesna svega
ali kada izgovara rečenice permutuje mnoga slova tako da učenici ništa ne mogu razumjeti. Zbog toga
joj prijeti otkaz. Međutim, ona ima sreće što ima tako brižne učenike, koji ju jako cijene i poštuju, i
koji su odlučili da naprave mašinu koja će prevoditi istoričarkine nebuloze kako ona ne bi dobila
otkaz. Pomozi dobrim učenicima da pomognu svojoj profesorici da ne izubi posao tako što ćeš
napraviti program koji provjeraca da li su dva unesena stringa ambigrami ili nisu (npr. Ja sam Matej
Mj tej aasma)
Rjesenja
1. Faktorijel
program RecursiveFactorialCalculator;
if n = 0 then
CalculateFactorial := 1
else
var
num: Integer;
begin
writeln('Recursive Factorial Calculator');
writeln('--------------------------------');
2. Obrnuta Poezija
program ObrnutaPoezija;
procedure NapraviObrnutuPoeziju;
var
unos, obrnutaRecenica, trenRijec: string;
i: integer;
begin
writeln('Generator Obrnute Poezije');
writeln('------------------------');
obrnutaRecenica := '';
trenRijec := '';
for i := 1 to Length(unos) do
begin
if unos[i] = ' ' then
begin
obrnutaRecenica := obrnutaRecenica + RijecNaopacke(trenRijec) + ' ';
trenRijec := '';
end
else
trenRijec := trenRijec + unos[i];
end;
begin
NapraviObrnutuPoeziju;
readln;
end.
3. Euklidov Algoritam
program EuklidovAlgoritam;
a := a mod b;
a := a + b;
b := a - b;
a := a - b;
end;
EuclidsGCD := a;
end;
var
num1, num2: Integer;
begin
writeln('Euklidov Algoritam (NZD Kalkulator)');
writeln('-----------------------------------');
writeln('The GCD of ', num1, ' and ', num2, ' is: ', EuklidNZD(num1, num2));
readln;
end.
4. Nemušti jezik
program SimpleAnagramChecker;
for i := 1 to Length(str1) - 1 do
for j := 1 to Length(str1) - i do
if str1[j - 1] > str1[j] then
begin
temp := str1[j - 1];
str1[j - 1] := str1[j];
str1[j] := temp;
end;
for i := 1 to Length(str2) - 1 do
for j := 1 to Length(str2) - i do
if str2[j - 1] > str2[j] then
begin
temp := str2[j - 1];
str2[j - 1] := str2[j];
str2[j] := temp;
end;
var
str1, str2: string;
begin
writeln('Simple Anagram Checker');
writeln('----------------------');