You are on page 1of 13

Osnovi programiranja

Milena Vujo sevi c - Jani ci c 2005/2006 November 7, 2005

Uvod u programiranje
1.1 Istorija ra cunara i programskih jezika

Programski jezici ma sinski zavisni masinski jezik asembler ma sinski nezavisni proceduralni(C, pascal, fortran...) objektni(C++, JAVA...) logi cki(PROLOG) funkcionalni(LISP, Haskell, Miranda)

1.2

Postupak re savanja problema pomo cu ra cunara

Mo ze se podeliti na slede ce korake:1 1. razumevanje problema 2. izgradnja modela 3. formiranje algoritma 4. provera ispravnosti algoritma 5. realizacija (implementacija) algoritma (tj. pisanje programa) 6. testiranje programa 7. sastavljanje dokumentacije U zi smisao termina programiranje obuhvata samo korake 5 i 6.
1 Tekstovi o postupku re savanja problema pomo cu ra cunara, razvojnom putu programa i o kvalitetu programa preuzeti su sa sajta www.matf.bg.ac.yu/jelenagr

Milena Vujo sevi cJani ci c

1.2.1

Razumevanje problema

Uo citi terminologiju koja iskoriscena u formulaciji problema (npr. proveriti simetricnost crno-bele slike? uo citi termin simetri cnost matrice) uo citi sta je dato i sta je ulaz uo citi sta se trazi i sta treba da bude izlaz uo citi eventualna ograni cenja u formulaciji, a koja su vezana za dopu stene/nedopu stene metode i operacije (npr. re siti problem simetri cnosti bez upotrebe pomo cnih matrica ili re siti zadatak ne koriste ci stati cki niz)

1.2.2

Izgradnja modela

uo citi sli can problem za koji postoji resenje, odnosno poku sati na ci matemati cku strukturu koja odgovara re senju realnog problema npr. obracunavamo plate zaposlenih u 12 meseci i znamo da imamo 20 radnika => upotrebi cemo tabelu 20x12, odnosno matricu 20x12

1.2.3

Formiranje algoritma

Konstruisati ekasan algoritam, odnosno dati skup preciznih uputstava kako do ci do re senja zadatog problema Algoritmi se mogu opisivati: blok-shemom (dijagramom toka), prirodnim jezikom, pseudojezikom. OPIS ALGORITAMA PRIRODNIM JEZIKOM Opisati prirodnim jezikom detaljno, precizno i nedvosmisleno korake pri resavanju problema, vode ci ra cuna o redosledu operacija koji se izvr savaju. OPIS ALGORITAMA PSEUDO JEZIKOM Pseudo jezik je neformalna kombinacija prirodnog jezika i nekog programskoj jezika. Pri upotrebi pseudo jezika mora se voditi ra cuna da se jezi cke konstrukcije koriste uvek na isti na cin i da budu pra cene obja snjenjima (ako je potebno). OPISIVANJE ALGORITAMA BLOK SEMOM Za ovaj oblik opisa koriste se gra cki simboli ciji je opis propisan ISO standardom. Tekst koji opisuje obradu se zapisuje unutar gra ckih simbola. Tok rada algoritma se opisuju linijama koje povezuju gra cke simbole koji reprezenuju obradu.

1.2.4

Provera ispravnosti algoritma

Teorijski i prakti cno ovo je jedan od najslo zenijih koraka me u ovih 7. Sastoji se u analizi slu cajeva i analizi pona sanja algoritma. Naime, analizom problema mogu se ustanoviti razli citi slu cajevi (vrednosti ulaznih podataka) u kojima se algoritam razli cito pona sa.

1.2.5

Realizacija algoritma

Ovaj korak se cesto naziva i implementacija algoritma ili kodiranje algoritma. U stvari ovaj korak se odnosi na prevodjenje algoritma na neki programski jezik, odnosno u oblik koji je razumljiv za racunar.

1.3 Razvojni put jednog programa

1.2.6

Sastavljanje dokumentacije

Korektno napisana dokumentacija treba da sadrzi razna uputstva o samom programu: opis problema koji se resava (npr. izracunavanje prosecne plate jedne rme 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) blok-shemu (dijagram toka) algoritma opis procesa formiranja algoritma test primere i rezultate testianja detaljne opise formata u programu opis postupka prevodjenja programa i uputstvo za neke specicne situacije 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
1.3.1

Razvojni put jednog programa


Editovanje

Kodiranje algoritma: ovaj korak se odnosi na prevodjenje algoritma na neki programski jezik, odnosno u oblik koji je razumljiv za racunar i uno senje programskog koda posredstvom tekst editora (EDIT, Notepad, Wordpad, Word, joe, pico, emacs, gnotepad+,...) i njegovih komandi. Krajnji rezultat je datoteka sa izvornim oblikom koda koji se zove i source.

1.3.2

Prevo enje

Ako prevodilac nije signalizirao pojavu gre ske, onda se na izlazu iz ove faze dobija datoteka sa prevedenim izvornim kodom, tj. objektni program. Prevo enje mo ze da ima dve faze: prevod izvornog koda na asembler, a potom i asembliranje takvog koda na ma sinski program.

1.3.3

Signalizacija gre ske 1

Ako je prevodilac signalizirao pojavu gre ske, onda se mora izvr siti korekcija gre ske u tekst editoru. Te gre ske mogu nastati u zapisu programa i mogu biti u neskladu sa pravilima programskog jezika (npr. C, Pascal,...) i zbog njih program nije razumljiv racunaru, tj. zapis ne moze da se interpretira ili prevede na ma sinski jezik racunara. Ove gre ske otkriva kompilator ili interpretator. Npr. sintaksna C greska je i=i+1 a=a-2 ( tj. pri kucanju je zaboravljena ; za kraj naredbe)

1.3.4

Linker

Objektni program je ulaz u sistemski program linker. Linker povezuje objektni program i potrebne objektne programe iz sistemske biblioteke u izvr sni program koji racunar i operativni sistem mogu da izvr se.

Milena Vujo sevi cJani ci c

1.3.5

Loader

Izvr sni program prihvata loader i sme sta program u operativnu meoriju se resurse racunara rezervi predaje izvr sni program operativnom sistemu koji na dalje preuzima kontrolu nad programom

1.3.6

Signalizacija gre ske 2

Ako program tokom izvr savnja ne daje (ocekivane) rezultate, potrebno je otkloniti gre ske i ponovo program prevesti i povezati sa potrebnim programima iz sistemske biblioteke i smestiti izvr sivu verziju u operativnu memoriju i pokrenuti izvr savanje programa. Na primer, te gre ske mogu biti u skladu sa pravilima programskog jezika, ali su vezane za neispravan deo programa, tj. fragment programa koji opisuje razlicit postupak od nameravanog, te racunar izvrsava program, ali ne radi ono sto se zelelo. Takve greske mora da otkrije programer, jer ne moze kompajler da prepozna sta je programer zeleo, a nije isprogramirao. U te gre ske se ubrajaju: ske (greske nastale zbog primene pogresne logike u programiranju) Logicke gre Gre ske u kodiranju (greske koje nastaju pri unosenju programa u racunar, npr. zamena slova koja dovodi do promene imena promenljivih i slicno, npr, promenljivu K ste uvecali za 1, a nameravali ste da uvecate promenljivu K2).

1.3.7

Rezultat

Kraj razvojnog puta jednog programa jeste nakon faze testiranja izlaznih vrednosti koje program daje kao rezultat svog izvr senja.

1.4

Kvalitet programa

Kriterijum ocene kvaliteta programa Najva zniji kriterijum je korektnost rada pri obradi na racunaru. Ostali kriterijumi najce sce i nisu od koristi, ako nije ispunjen ovaj kriterijum. citljivost Bitno je da postoji visok stepen razumljivosti logike programa. jednostavnost Koristiti najjednostavnije programske strukture, ali tako da se ne umanji ekasnost programa. ekasnost Meri se vreme potrebno za izvr savanje programa i velicina potrebne memorije. modularnost Misli se na tehniku izrade programa pri kojoj se veci programi dele u vi se odvojenih programskih modula koji komuniciraju medu sobom. Time se povecava citljivost i jednostavnost i olak savaju buduce modikacije. univerzalnost Upotrebljavati sto op stiju logiku programa (npr.snabdevanje programa argumentima obezbediti iza datoteke (op sti ulaz), a ne unositi u program kao konstante,...)

1.5 Algoritmi

1.5
1.5.1

Algoritmi
Algebarski algoritmi

Primer 1 Algoritam zdravo svete Algoritam Ispis ulaz: nema podataka na ulazu izlaz: poruka Zdravo, svete!!! { output " Zdravo, svete!!!" } Primer 2 Algoritam za sabiranje dva broja Algoritam Sabiranje ulaz: x,y izlaz: zbir brojeva x,y /* algoritam je formiran tako da funkcionise za bilo koji realan broj sa ulaza. Zbog toga se u algoritmu koristi promenljiva - ime koje oznacava promenljivu vrednost.*/ { input x,y; zbir = x + y; output zbir; } Primer 3 Algoritam za maksimum, domaci maksimum tri broja Algoritam Maksimum ulaz: x, y; izlaz: veci od brojeva x i y { input x,y; if (x>y) max=x else max=y; output max; } 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 output zbir; } /*Na izlaz saljemo izracunati zbir*/

Milena Vujo sevi cJani ci c

Zadatak 1 Algoritam za maksimum brojeva koji se unose, zavrsetak unosa je nula Algoritam Maksimum ulaz: brojevi sve dok se ne unese nula izlaz: maksimum unetih brojeva { input x; max = x; while (x!=0) /*Proveravani da li je broj x razlicit od nule*/ { input x; /*unosimo novi ulazni broj*/ if (x>max) max=x; /*proveravamo da li je uneti broj veci od tekuceg maksimuma i ako jeste onda tekucem maksimumu dodeljujemo njegovu vrednost*/ } output max; /*Na izlaz saljemo izracunati maximum*/ } 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; } Zadatak 3 Algoritam za razmenu dva broja Algoritam razmena ulaz: dva broja izlaz: razmena dva broja { input x,y; pom=x; x=y; y=pom; output x,y; }

1.5 Algoritmi Zadatak 4 Celobrojni kolicnik i ostatak pri deljenju x = qy + r, 0 r < y, 0 q Algoritam kolicnik ulaz: prirodni brojevi x i y; izlaz: kolicnik i ostatak pri deljenju { input x,y; kolicnik=0; ostatak=x; while (ostatak>=y) { ostatak=ostatak-y; kolicnik=kolicnik+1; } output kolicnik, ostatak; } Zadatak 5 Algoritam koji resava kvadratnu jednacinu 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 Zadatak 6 Fibonacijevi brojevi Algoritam fibonaci ulaz n; izlaz n-ti fibonacijev broj; { input n; x0=0; x1=1; if n=0 rezultat=x0; else { while (n>1) { novi=x0+x1; x0=x1; x1=novi; n=n-1; } rezultat=x1; output rezultat; } }

Milena Vujo sevi cJani ci c

1.5.2

Koren prirodnog broja

Zadatak 7 Na ci ceo deo korena prirodnog broja Algoritam Koren1 ulaz prirodan broj n; izlaz ceo deo korena prirodnog broja; { input n; koren=1; while (koren*koren<=n) koren=koren+1; koren=koren-1; output koren; } Zadatak 8 Na ci ceo deo korena prirodnog broja Algoritam Koren2 ulaz prirodan broj n; izlaz ceo deo korena prirodnog broja; { input n; suma=0; broj=0; while (suma<=n) { suma=suma+broj+broj+1; broj=broj+1; } broj=broj-1;

1.5 Algoritmi output broj; }

11

1.5.3

NZD

Zadatak 9 Na ci najve ci zajedni cki 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 Na ci najve ci zajedni cki 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 Zadatak 12 Euklidov Algoritam 2 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; }

Milena Vujo sevi cJani ci c

Sadr zaj
1 Uvod u programiranje 1.1 Istorija ra cunara i programskih jezika . . . . . 1.2 Postupak re savanja problema pomo cu ra cunara 1.2.1 Razumevanje problema . . . . . . . . . 1.2.2 Izgradnja modela . . . . . . . . . . . . . 1.2.3 Formiranje algoritma . . . . . . . . . . . 1.2.4 Provera ispravnosti algoritma . . . . . . 1.2.5 Realizacija algoritma . . . . . . . . . . . 1.2.6 Sastavljanje dokumentacije . . . . . . . 1.3 Razvojni put jednog programa . . . . . . . . . 1.3.1 Editovanje . . . . . . . . . . . . . . . . . 1.3.2 Prevo enje . . . . . . . . . . . . . . . . 1.3.3 Signalizacija gre ske 1 . . . . . . . . . . . 1.3.4 Linker . . . . . . . . . . . . . . . . . . . 1.3.5 Loader . . . . . . . . . . . . . . . . . . . 1.3.6 Signalizacija gre ske 2 . . . . . . . . . . . 1.3.7 Rezultat . . . . . . . . . . . . . . . . . . 1.4 Kvalitet programa . . . . . . . . . . . . . . . . 1.5 Algoritmi . . . . . . . . . . . . . . . . . . . . . 1.5.1 Algebarski algoritmi . . . . . . . . . . . 1.5.2 Koren prirodnog broja . . . . . . . . . . 1.5.3 NZD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 7 7 10 11

You might also like