2. Rešavanje problema pomoću računara
Rešavanje problema pomoću računara
(Analiza problema, etape rešavanja zadatka, koraci razvoja programa)
Da bismo rešili neki problem korišćenjem računara neophodno je kreirati program u nekom programskom jeziku. Taj proces je kompleksan i u njemu možemo izdvojiti sledeće faze:
1. Postavka problema
Problem koji se rešava treba precizno i potpuno opisati na prirodnom jeziku. To radi korisnik kome je namenjen program u saradnji sa programerima. Jasno se određuje cilj, analiziraju se postojeće informacije i vrši se izbor neophodnih početnih informacija, opisuju se svi podaci. (Statistički, 60 do 90% grešaka u složenim programskim projektima potiče od nepotpune i pogrešne formulacije zahteva.)
2. Analiza problema
U ovoj fazi definišu se ulazni i izlazni podaci, ograničenja njihovih vrednosti i precizno definišu veze između podataka. Rezultat ove faze je formalan opis problema, i najčešće izrada matematičkog modela koji se može realizovati na računaru.
3. Izbor ili Razrada algoritma
U ovoj fazi se definiše način na koji se od početnih – ulaznih podataka dolazi do traženih - izlaznih. Algoritam podrazumeva konačan uređen niz precizno formulisanih pravila kojima se rešava jedan ili čitava klasa problema. Većina problema može da se reši na više načina, zato treba sve načine proanalizirati i izabrati optimalan. U ovoj etapi, posle analize svih varijanti i izbora optimalne, algoritam se izražava na nekom od jezika za zapis algoritma ili u vidu blok šeme. Kreiranjem algoritma program je sveden u oblik pogodan za rešavanje na računaru.
4. Projektovanje opšte strukture programa
U ovoj fazi vrši se izbor programskog jezika koji je najpogodniji za kodiranje. Razmatra se ceo problem i deli se u logičke celine, svaka celina se dalje deli u zavisnosti od njene složenosti. Precizno se definiše način čuvanja informacija tj. definiše se struktura podataka.
5. Kodiranje
U ovoj fazi opisuju se, u nekom programskom jeziku, podaci i postupak za rešavanje problema, koji su definisani u prethodnim fazama. Program zapisan u nekom programskom jeziku često se zove kod, zato se ova faza i naziva kodiranje. Ako smo u prethodnim fazama precizno razradili algoritam, strukturu programa i strukturu podataka, ova faza je relativno jednostavna za izvođenje. Vreme potrebno za kodiranje i verovatnoća pojave grešaka zavise od preciznosti algoritma, strukture podataka i strukture programa.
6. Faza prevođenja, izvršavanja i testiranja programa
Podsetimo se da na računaru može da se izvršava samo program koji je napisan pomoću binarnih cifara (mašinskom jeziku). Zato je potrebno program napisan na programskom jeziku višeg nivoa prevesti na mašinski jezik. Prevođenje se vrši pomoću posebnih programa kompajlera odnosno interpretera. Da bi se program izvršavao potrebno je formirati izvršnu verziju, to se postiže pomoću specifičnih programskih alata koji se razlikuju od jezika do jezika (povezivač, bilder,...). Često su faza prevođenja i faza pravljenja izvršnog fajla objedinjene. Testiranjem programa treba proveriti da li program rešava postavljeni zadatak. Testiranje se radi na osnovu unapred pripremljenih kontrolnih parametara za koje je poznato rešenje problema. Testiranje mora da obuhvati sve moguće grane programa uključujući i situaciju kada nema rešenja problema. Program radi ispravno kada se rešenja poklapaju sa očekivanim. U toku izrade programa moraju se obuhvatiti i specijalne situacije kao i “zaštitu od gluposti” (fool tolerance), koja podrazumeva sposobnost programa da reaguje na nestručna obraćanja korisnika. To je vrlo važna faza u kojoj treba otkriti eventualno skrivene greške. Za otkrivanje grešaka koristimo testove sa kojima treba da obuhvatimo sve moguće situacije, svakako i one kad postavljeni problem nema rešenja. Po potrebi se vraćamo na prethodne faze.
7. Izrada dokumentacije
U dokumentaciji programa opisuje se šta program radi, daju se uputstva kako se koristi, detaljnije se opisuje algoritam kada su u pitanju složeniji problemi i slično. Dokumentaciju nikako ne treba započinjati kada je program već napisan već je pisati tokom izrade programa, ali je svakako treba dopuniti na kraju kada je program završen.
8. Održavanje programa
Tokom korišćenja programa mogu se uočiti neke greške, koje svakako treba otkloniti. Ponekad treba izvršiti neke promene u programu zbog novih okolnosti. Ako je program čitko napisan i ako ima dobru dokumentaciju onda je ova faza jednostavna, kako za same autore programa, tako i za druge programere, u suprotnom mnogim programerima je lakše da napišu novi program nego da prepravljaju već postojeći. U ovoj fazi dolazi i do proširivanja programa u pravcu dodavanja novih funkcionalnosti
Kada se razvija veliki projekat sve prethodno navedene faze su jednako važne. Osposobljavanje programera za uspešno rešavanje velikih projekata je dugotrajan proces. U edukaciji polazimo od jednostavnih primera ka složenijim. U ovom procesu problemi koje rešavamo su jednostavni pa su sve faze osim faze razrade algoritma jednostavne.
Različiti stručnjaci imaju različite poglede na to koliko je faza u posstupku rešavanja problema pomoću računara. Gore navedenih 8 koraka su jedan od načina na koji se može postupak rešavanja problema pomoću računara podeliti u faze.
Drugi način na koji je veliki broj stručnjaka podelio u faze rešavanje problema pomoću računara je u nastavku:
Programiranje je složen proces koji se odvija u više faza koje možemo sistematizovati na sledeći način:
· Analiza programskog zadatka, tj. definicija problema i određivanje konačnog cilja
· Razrada algoritma, tj. rešavanje zadatka
· Kodiranje programa i prevođenje na mašinski jezik
· Testiranje programa i otklanjanje grešaka
· Izrada konačne dokumentacije
· Upotreba i održavanje programa
Granice između ovih faza nisu krute i nisu jasno definisane, a kvalitet programiranja zavisi od realizacije ovih faza
Ne postoje precizna pravila za dobro programiranje, već ona više liče na preporuke i uputstva zasnovane pre svega na iskustvu.
Prvo pravilo koje bi početnici trebali da poštuju glasi: Ne krši pravila dok ih dobro ne upoznaš! Dok ne napišete veliki broj dobrih programa, neophodno je pridržavati se pravila i koristiti odgovarajuću literaturu odnosno tuđa iskustva.
Drugo pravilo glasi: Probleme treba rešavati pre svega postupno i po određenim metodama. To znači da ne treba skraćivati niti preskakati pojedine faze u rešavanju programa. Nepoštovanje ovog pravila obično dovodi do učestalih grešaka u programu, nepouzdanosti programa, do programa čija je struktura zamršena i teško razumljiva pa je i održavanje takvog programa teško.