Uploaded by surladanilo2008

01 - Programiranje

advertisement
PROGRAMIRANJE
Izrada programa – od definisanja
problema do izvršnog koda
ETŠ "Nikola Tesla" Niš, Milena Krstić
PROGRAMIRANJE

Program je skup naredbi nanizanih strogo utvrđenim
redosledom, čijim se izvršenjem obavlja željeni posao.

Čovek koji piše program naziva se programer, a
postupak nastanka programa naziva se programiranje.
ETŠ "Nikola Tesla" Niš, Milena Krstić
Koraci programiranja:

PROGRAMIRANJE podrazumeva NIZ aktivnosti pomoću kojih
se pošavši od zadatog problema dolazi do željenog rezultata.
PRIMEDBA:


česta GREŠKA je poistovećivanje
aktivnosti programiranja i kodiranja
Kodiranje je samo jedan od koraka u
procesu programiranja koji
podrazumeva pevođenje rešenog
problema u zapis na nekom od
programskih jezika
ETŠ "Nikola Tesla" Niš, Milena Krstić
Koraci programiranja:




Zadavanje i analiza problema – koje ulazne podatke koristimo i koje
izlazne podatke trebamo dobiti (npr. učitati poluprečnik kruga i ispisati
opseg i površinu – ulazni podatak je r, a izlazni O i P )
Skiciranje rešenja - rastavljanje problema na jednostavne celine
(korake) (poluprečnik ne sme biti negativan, O=2r, P=r2, prikaži O i P)
Sastavljanje algoritma – rečima ili grafički opisati rešenje problema
Kodiranje – zapis u izabranom programskom jeziku (moramo znati
sintaksu i semantiku)
ETŠ "Nikola Tesla" Niš, Milena Krstić
Koraci programiranja:




Prevođenje – izvorni program prevodi se u mašinski jezik. Prevodilac
pronalazi “pravopisne” – SINTAKSNE greške koje ispravljamo dok ne
dobijemo ispravno napisan program.
Testiranje – pronalaženje logičkih – SEMANTIČKIH grešaka zbog
pogrešno napisanog algoritma.
Izrada dokumentacije – uz sam program koji mora biti pregledno
napisan prilaže se tehnička i korisnička dokumentacija
Održavanje programa
ETŠ "Nikola Tesla" Niš, Milena Krstić
ALGORITAM



Ime dolazi od arapskog matematičara Mohamed ibn Musa al
Horezmi (Muhamed sin Muse iz Horezma) koji je živeo u IX veku.
On je razradio i u knjizi opisao pravila za izvođenje aritmetičkih
operacija sa brojevima u dekadnom obliku.
Original je izgubljen, ali postoji prevod na latinski gde kod svakog
pravila piše Dixit Algorizmi (Algorizmi je govorio), od čega je
kasnije ostalo Algorithmus, Algoritam.

Do sredine XX veka naziv algoritam koriste samo matematičari

Sa pojavom računara taj pojam se širi i u druga područja
ETŠ "Nikola Tesla" Niš, Milena Krstić
ALGORITAM


Algoritam je opis radnji (skup koraka) koje treba izvršiti u
navedenom redosledu da bi se dobilo rešenje postavljenog
zadatka.
Mnoge radnje u svakodnevnom životu izvršavamo prema unapred
naučenom algoritmu (npr. slanje SMS poruke mobilnim telefonom):
1.
2.
3.
4.
5.
6.
Uključiti mobilni telefon
Pritisnuti taster za otvaranje menija
Na meniju izabrati slanje poruka
Napisati poruku
Upisati telefonski broj primaoca poruke
Pritisnuti taster za slanje poruke
ETŠ "Nikola Tesla" Niš, Milena Krstić
ALGORITAM



Algoritmi se mogu predstaviti rečima govornog (prirodnog) jezika
tzv. PSEUDOKÔD ili grafički – DIJAGRAM TOKA
Pseudokôd je tobožnji program (grč. pseudos ̶ laž) jer nije napisan
u programskom jeziku, već se sastoji od kratkih izraza na govornom
jeziku koji opisuju i ukratko objašnjavaju pojedine zadatke algoritma.
Grafički prikaz (dijagram toka, eng. flowchart) pregledno prikazuje
algoritam, omogućava analizu problema, lakšu proveru i traženje
boljih postupaka rešavanja zadatka.
ETŠ "Nikola Tesla" Niš, Milena Krstić
ALGORITAM
Prolaz kroz rasksnicu:
Pseudokod:
1.
2.
3.
4.
Dijagram toka:
Stati ispred semafora
Motriti na semafor
Ako je upaljeno zeleno svetlo
nastaviti vožnju
Ako nije upaljeno zeleno svetlo i
dalje stajati i motriti na semafor
Početak
Stajati u mestu i
motriti semafor
Zeleno
svetlo?
DA
Nastaviti vožnju
Kraj
ETŠ "Nikola Tesla" Niš, Milena Krstić
NE
KODIRANJE

Kodiranje je proces zapisivanja algoritamskih koraka na izabranom
programskom jeziku.

Kodiranjem se dobija izvorni kôd (engl. Source code) programa koji se
čuva na disku, u datoteci sa odgovarajućom ekstenzijom - za kôdove
pisane u C-u .c, na primer zadatak1.c

Procesor razume samo binarni zapis, a ne i izvorni kôd zapisan na nekom
od viših programskih jezika koji koriste komande uzete iz engleskog jezika.
long fakt(int n)
{
long i,s=1;
for(i=1;i<=n;i++)s*=i;
return s;
}
ETŠ "Nikola Tesla" Niš, Milena Krstić
PREVOĐENJE



Izvorni kod se pomoću posebnih
programa prevodi u nizove nula i
jedinica – izvršni kôd.
Prevodilac tokom prevođenja
proverava postojanje SINTAKSNIH
GREŠAKA u izvornom kôdu (engl.
compile-time errors).
Sintaksa jezika podrazumeva pravila
pisanja tj. gramatiku jezika, a sintaksne
greške su gramatičke greške
ETŠ "Nikola Tesla" Niš, Milena Krstić
PREVOĐENJE



Nakon toga programer će pokušati ispraviti sve navedene greške i
ponovo prevesti izvorni kôd – sve dok prevođenje koda ne bude bez
grešaka.
Prevođenjem izvornog dobija se datoteka objektnog kôda (engl.
object code), koja se lako može prepoznata po tome što obično ima
nastavak .o ili .obj (u našem primeru bi to bilo zadatak1.obj).
Po načinu prevođenja postoje dve vrste programskih prevodioca:


KOMPILATORI i
INTERPRETATORI
ETŠ "Nikola Tesla" Niš, Milena Krstić
PREVOĐENJE




Interpretator – naredbu po naredbu izvornog programa prevodi u
trenutku izvršenja programa. Pri svakom izvršenju programa
ponavlja se prevođenje što utiče na sporost (dBase, GWBASIC).
Kompilator – prevodi viši jezik u mašinski samo jednom. Kasnije
se pokreće samo prevedeni *.exe oblik programa (Turbo Pascal, C).
Za razliku od interpretatora, kod kompilatora su izvorni i prevedeni
program nezavisni - menjanje izvornog programa ne utiče na
izvršnu (prevedenu) verziju programa.
Kompajlirani programi mogu se izvršavati bez izvornog programa.
Time što se korisniku daje samo prevedena verzija programa (.exe
ili .com) zaštićen je trud programera od neovlaštenih prepravki ili
krađe delova programa.
ETŠ "Nikola Tesla" Niš, Milena Krstić
PREVOĐENJE
Kod prevođenja
kompilacijom
Proces prevođenja je vremenski nezavisan
od procesa izvršenja
Pri izvršenju programa, u radnoj memoriji se
nalazi samo izvršni (.exe) kod programa
Program se prevodi samo kada se napravi
neka izmena u izvornom kodu
Bolje karakteristike po pitanju brzine
izvršavanja
Bolje karakteristike po pitanju prenosivosti sa
jedne na drugu mašinu





ETŠ "Nikola Tesla" Niš, Milena Krstić
Kod prevođenju
interpretacijom





POVEZIVANJE




Nakon što su ispravljene sve greške uočene prilikom prevođenja i
kôd ispravno preveden, pristupa se povezivanju objektnih kôdova u
izvršni.
U većini slučajeva objektni kôd dobijen prevođenjem izvornog kôda
treba povezati sa postojećim bibliotekama (engl. libraries).
Biblioteke su datoteke u kojima se nalaze već prevedene gotove
funkcije ili podaci.
Korišćenjem biblioteka se izbegava ponovno pisanje vrlo često
korišćenih operacija (npr. biblioteka matematičkih funkcija poput
trigonometrijskih, eksponencijalnih i slično)
ETŠ "Nikola Tesla" Niš, Milena Krstić
POVEZIVANJE



Ukoliko povezivač tokom povezivanja uoči neku nepravilnost,
ispisaće poruku o greški i onemogućiti generisanje izvršnog koda
(engl. link-time errors).
Nakon što se isprave sve greške, kôd treba ponovno prevesti i
povezati.
Uspešnim povezivanjem dobija se izvršni kôd sa ekstenzijom .exe
(u našem primeru bi to bilo zadatak1.exe).
ETŠ "Nikola Tesla" Niš, Milena Krstić
TESTIRANJE

Međutim, takav izvršni kôd još uvek ne garantuje da će program raditi
ono što ste zamislili, tj. može se desiti da ima tzv. SEMANTIČKE
(smislene) greške:


Na primer, može se dogoditi da program radi pravilno za neke
vrednosti podataka, ali da se za druge ponaša nepredvidivo.
 Ovo su greške pri izvođenju (engl. run-time errors)
Ili, program funkcioniše, ne događaju se greške, ali se dobijaju
pogrešni (neočekivani) rezultati.
 U ovom slučaju radi se o logičkim greškama (logical
errors – bugs).
 Logičke greške je najteže pronaći.
ETŠ "Nikola Tesla" Niš, Milena Krstić
TESTIRANJE


Da bi program bio potpuno korektan, programer mora da istestira
program da bi uočio i ispravio te greške.
U slučaju otkrivanja greške ponavlja se ceo postupak u lancu:




ispravljanje izvornog koda
prevođenje
povezivanje
testiranje
ETŠ "Nikola Tesla" Niš, Milena Krstić
TESTIRANJE



Za ispravljanje grešaka pri izvođenju,
programeru na raspolaganju stoje programi za
otkrivanje grešaka (engl. debugger).
Radi se o programima koji omogućavaju
 prekid izvođenja izvršnog koda programa koji testiramo na
unapred zadatim naredbama,
 izvođenje programa naredbu po naredbu,
 ispis promena trenutnih vrednosti pojedinih promenljivih u
programu.
Debagovanje omogućava lagano lociranje i ispravljanje grešaka u
programu.
ETŠ "Nikola Tesla" Niš, Milena Krstić
ETŠ "Nikola Tesla" Niš, Milena Krstić
RAZVOJNO OKRUŽENJE



Izvorni kôd se može pisati u bilo kom programu za uređivanje teksta
(engl. text editor).
Većina današnjih prevodilaca i povezivača se isporučuje kao celina
zajedno s ugrađenim programom za upisivanje i ispravljanje
izvornog kôda.
Te programske celine poznatije su pod nazivom integrisano
razvojno okruženje (engl. integrated development environment IDE).
ETŠ "Nikola Tesla" Niš, Milena Krstić
Pitanja:















Šta je program?
Da li je programiranje isto što i pisanje programskog koda i ako nije, u čemu je
razlika?
Navedi korake u izradi programskog projekta.
Šta je algoritam? Kako se može predstaviti algoritam?
Kako se zove programski alat za unos programskog koda u računar? Kako se zove
datoteka u kojoj se pamti tako uneti kod?
Zašto se programi pisani na nekom od programskih jezika moraju prevoditi pre
izvršenja?
Objasni razliku između kompilatora i interpretatora.
Kako se zove kod dobijen prevođenjem programa?
Koja je funkcija linkera? Šta se dobija posle linkovanja?
Koja je funkcija punioca?
U kojoj fazi izrade programa se pronalaze sintaksne, a u kojoj semantičke greške?
Koje je greške nalakše otkloniti?
Objasni razliku između runtime grešaka i logičkih grešaka? Možeš li da smisliš
primer...???
Kako se zovu programski alati koji pomažu pronalaženje semantičkih grešaka?
Šta označava skraćenica IDE? Da li znaš neki primer za IDE.
ETŠ "Nikola Tesla" Niš, Milena Krstić
Download