Professional Documents
Culture Documents
Osnovi Programiranja - Algoritmi PDF
Osnovi Programiranja - Algoritmi PDF
November 7, 2005
2
1
Uvod u programiranje
masinski zavisni
masinski jezik
asembler
masinski nezavisni
1. razumevanje problema
2. izgradnja modela
3. formiranje algoritma
6. testiranje programa
7. sastavljanje dokumentacije
opis problema koji se resava (npr. izracunavanje prosecne plate jedne firme u toku 12 meseci)
izgled ulaznihizlaznih podataka (ulaz je datoteka ciji svaki red je oblika: ime i prezime radnika
JMBG redni br meseca plata tog meseca, a izlaz je HTML dokument koji opisuje tabelu ciji
savki red sadrzii JMBG i prosek plate tog radnika i razliku u odnsu na prosek svih plata)
Poenta korektno napisane dokumentacije: da autor programa i nakon godinu dana i hiljade drugih
program moze da se snadje u sopstvenom programu, kao i da njegov kolega koji nije ucestvovao
u formiranju programa moze da vrsi dopune ili izmene programa bez obzira sto nije prvi autor
programa.
1.3.2 Prevoenje
Ako prevodilac nije signalizirao pojavu greske, onda se na izlazu iz ove faze dobija datoteka sa
prevedenim izvornim kodom, tj. objektni program.
Prevoenje moze da ima dve faze: prevod izvornog koda na asembler, a potom i asembliranje
takvog koda na masinski program.
1.3.4 Linker
Objektni program je ulaz u sistemski program linker. Linker povezuje objektni program i potrebne
objektne programe iz sistemske biblioteke u izvrsni program koji racunar i operativni sistem mogu
da izvrse.
6 Milena VujosevicJanicic
1.3.5 Loader
Izvrsni program prihvata loader i
smesta program u operativnu meoriju
rezervise resurse racunara
predaje izvrsni program operativnom sistemu koji na dalje preuzima kontrolu nad programom
1.3.7 Rezultat
Kraj razvojnog puta jednog programa jeste nakon faze testiranja izlaznih vrednosti koje program
daje kao rezultat svog izvrsenja.
1.5 Algoritmi
1.5.1 Algebarski algoritmi
Primer 1 Algoritam zdravo svete
Algoritam Ispis
ulaz: nema podataka na ulazu
izlaz: poruka Zdravo, svete!!!
{
output " Zdravo, svete!!!"
}
Primer 4 Algoritam za izracunavanje sume brojeva koja se unosi pre unosa nule
Algoritam Zbir
ulaz: brojevi sve dok se ne unese nula
izlaz: zbir brojeva
{
zbir=0; /*Inicijalizujemo zbir na nulu*/
input x; /*Unosimo prvi u nizu brojeva*/
while x!=0 /*Proveravani da li je broj
x razlicit od nule i ako jeste
onda ga dodajemo na zbir*/
{
zbir=zbir+x;
input x; /*unosimo novi ulazni broj*/
}
8 Milena VujosevicJanicic
Zadatak 2 Algoritam za n!
Algoritam n!
ulaz: prirodan broj n;
izlaz: faktorijel prirodnog broja n;
{
input n;
f=1;
while (n>1)
{
f=f*n;
n=n-1;
}
output f;
}
a x2 + b x + c
Algoritam kvadratna jednacina
ulaz: koeficijenti a, b,c
izlaz: resenje kvadratne jednacine
{
input a,b,c;
if (a=0)
if (b=0)
if (c=0)
output "C";
else output "prazan skup";
else x=-c/b
output x;
else d=b*b - 4ac
if (d>0)
{
x1=(-b+sqrt(d))/2a;
x2=(-b-sqrt(d))/2a;
output x1, x2;
}
else if (d=0)
{
x=-b/2a;
output x;
}
else
{
Re=-b/2a;
Im=sqrt(-d)/2a;
output Re+i*Im, Re-i*Im;
}
}
10 Milena VujosevicJanicic
output broj;
}
1.5.3 NZD
Zadatak 9 Naci najveci zajednicki delitelj za dva broja
Algoritam NZD1
ulaz prirodni brojevi a, b;
izlaz nzd(a,b);
{
input a,b;
nzd = 1;
br=2;
while (br<=a && br<=b)
{
if (a%br)==0 && (b%br)==0 nzd=br;
br=br+1;
}
output nzd;
}
Zadatak 10 Naci najveci zajednicki delitelj za dva broja
Algoritam NZD2
ulaz prirodni brojevi a, b;
izlaz nzd(a,b);
{
input a,b;
nzd = 1;
if (a<b) nzd=a;
else nzd=b;
indikator=1;
while (indikator)
{
if (a%nzd)==0 && (b%nzd)==0 indikator=0;
else nzd=nzd-1;
}
output nzd;
}
Zadatak 11 Euklidov algoritam 1
Algoritam NZD3
ulaz prirodni brojevi a, b;
izlaz nzd(a,b);
{
input a,b;
while (a!=b)
{
if (a>b) a=a-b;
else b=b-a;
}
output a;
}
12 Milena VujosevicJanicic
Algoritam NZD4
ulaz prirodni brojevi a, b;
izlaz nzd(a,b);
{
input a,b;
if (a<b) {
pom=a;
a=b;
b=pom;
}
while (b!=0)
{
pom = b;
b = a % b;
a = pom;
}
output a;
}
Sadrzaj
1 Uvod u programiranje 3
1.1 Istorija racunara i programskih jezika . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Postupak resavanja problema pomocu racunara . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Razumevanje problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 Izgradnja modela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.3 Formiranje algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.4 Provera ispravnosti algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.5 Realizacija algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.6 Sastavljanje dokumentacije . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Razvojni put jednog programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1 Editovanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.2 Prevoenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.3 Signalizacija greske 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.4 Linker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.5 Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.6 Signalizacija greske 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.7 Rezultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Kvalitet programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5.1 Algebarski algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5.2 Koren prirodnog broja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5.3 NZD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11