su niz preciznih uputa koje nas korak po korak vode do rjeenja nekog problema . To su zapravo toliko precizne upute da za njihovo izvravanje nije potrebna inteligencija. Drugim rijeima, upute moraju biti jednostavne i precizne tako da ih moe izvravati i stroj.
PSEUDOKOK-ALGORITAM ZAPISAN RIJEIMA Algoritmi kojima smo se bavili u prolim lekcijama mogu se zapisati na vie naina, a dva najeda su pseudokod i dijagram toka. Pseudokod je algoritam zapisan rijeima. Pseudo nam dolazi od grkog la, lani, nadri, nazovi, tobonji... Kod je skup dogovorenih znakova kojima moemo oblikovati neku poruku, komunicirati. U programiranju se pod kodom razumijeva izvorni program napisan u nekom programskom jeziku. Prema tome, na pseudokod bi bio program "lanjak". Zato pseudo? Jer upute ne piemo u nekom od programskih jezika ved dogovorenim rijeima i znakovima iz govornog jezika. Dakle, ako hodemo pisati algoritme rijeima moramo se prije dogovoriti koje demo rijei koristiti. Logian slijed radnji u nekom programu je ulaz podataka, obrada i izlaz podataka. Prema tome demo i odabrati prikladne rijei koje demo opisati u tablici: poetak upii ili ulaz ili unesi ili uitaj ispii ili izlaz kraj svaki algoritam ima samo jedan poetak ovo bi bile prikladne rijei za unos podataka preko tipkovnice, mia, bar-kod itaa ili neke druge ulazne jedinice ispis podataka na zaslonu monitora, pisau... broj instrukcija u algoritmu mora biti konaan, svaki algoritam mora imati kraj i to samo jedan kraj
U tablici nema rijei za obradu podataka jer za to obino koristimo izraze koji nisu nita drugo doli prepisane n pr. matematike formule. Idemo probati napisati pseudokod za na "dva i dva" iz prethodne lekcije. No, vie nedemo koristiti depno raunalo nego demo algoritam napisati kao da piemo program, odnosno upute pravom raunalu: poetak upii 2 Ovdje demo malo zastati. Ako bismo napisali upii 2 tada bi na algoritam bio samo za zbrajanje 2 i 2 i cijeli svoj ivot bi radio samo to. Raunalni se programi piu to opdenitije, pa demo i mi pokuati napisati algoritam za zbrajanje bilo koja dva broja. Kako ne moemo predvidjeti koja de dva broja netko poeljeti zbrojiti, morati demo umjesto brojeva koristiti VARIJABLE. U matematici je varijabla neka promjenjiva veliina, a u naem programu to de biti mjesto u radnoj memoriji koje je rezervirano za broj koji zbrajamo (ne bi bilo loe ovdje se malo podsjetiti von Neumannovog modela
raunala). U naem primjeru de nam trebati tri takova mjesta. Neka to budu varijable a i b za brojeve koje zbrajamo i c za rezultat. Pokuajmo sada ponovno napisati pseudokod: ALGORITAM ZBRAJANJA 2 BROJA poetak upii a, b c=a+b ispii c kraj U tredem redu naeg pseudokoda izraz za zbrajanje varijabli a i b napisali smo malo naopako od onoga kako bismo dva broja zbrojili na papiru. Isto tako taj tredi red ne bismo proitali kao u matematici c je jednako a + b. Sjetimo se da radimo s mjestima rezerviranim u radnoj memoriji. Tako sadraj mjesta u memoriji za rezultat c postaje jednak zbroju sadraja mjesta u kojima su spremljeni brojevi a i b. Zato to i itamo c postaje a + b.
Za vjebu: Po uzoru na pseudokod za zbrajanje dva broja probajte napisati algoritme za jednostavne probleme kao to su izraun povrine pravokutnika, pravokutnog trokuta, opseg i povrinu kruga, brzinu ako su poznati put i vrijeme, silu ako su poznati masa i akceleracija... VARIJABLE I OPERATORI Pri razmatranju pseudokoda pokuali smo objasniti to su varijable. Prisjetimo se da se podaci i instrukcije (program) nalaze u radnoj memoriji raunala (RAM). Procesor izvrava instrukcije programa jednu po jednu. Na osnovu instrukcija uzima podatke iz memorije, obrauje ih, te rezultate obrade vrada nazad u memoriju na za to predviena mjesta i odatle ih alje na neku od izlaznih jedinica - monitor, pisa, zvunike... Za programiranje je bitno shvatiti postupanje s varijablama. Ovisno od programskog jezika u kojem demo pisati programe, podatke koji de biti smjeteni u pojedine varijable treba vie ili manje detaljno opisati. Rekli smo ved da se pojedini podaci smjetaju u rezervirana mjesta u memoriji. Ti dijelovi memorije imaju svoju adresu i mi im u postupku programiranja dajemo imena. Radi racionalnog koritenja memorije varijable treba definirati, tj. redi raunalu koji tip podataka de biti smjeten u kojoj varijabli. To mogu biti cjelobrojne vrijednosti, realni brojevi, logike vrijednosti, jedan znak ili niz znakova... Mi demo se uglavnom baviti problemima s nekim brojanim vrijednostima. Za razliite operacije nad podacima koristimo razliite operatore. Operatori koje demo koristiti malo su drugaiji od onih na koje smo navikli dok "pjeice" radimo
U gornjoj tablici su dani operatori za osnovne raunske operacije. U nekim programskim jezicima operatori za operacije nad realnim i nad cijelim brojevima nisu isti. Tako n pr. se za dijeljenje cijelih brojeva moe koristiti operator div koji kao rezultati daje opet cijeli broj. Pogledajmo tablicu s komentarima: 11.9394 / 2.2 = 5.427 11 / 2 = 5.5 realan broj de biti i rezultat dijeljenja dva cijela broja ako upotrijebimo operator dijeljenja za realne brojeve, zato rezultat piemo s jednim decimalnim mjestom ako nije drugaije odreeno ako upotrijebimo operator dijeljenja cijelih brojeva rezultat de biti cijeli broj ak i onda kada djeljenik nije djeljiv s djeliteljem
dijeljenje dva broja operatorom za realne brojeve daje rezultat realan broj
10 / 2 = 5.0
10 div 2 = 5 11 div 2 = 5
Kod dijeljenja cijelih brojeva pojavljuje se jo jedan koristan operator. To je mod. Rezultat dijeljenja cijelih brojeva s operatorom mod daje ostatak cjelobrojnog dijeljenja. Pogledajmo primjere: 11 mod 2 = 1 10 mod 3 = 1 8 mod 3 = 2 8 mod 2 = 0 11 podijeljeno s 2 je 5 i 1 je ostatak 10 podijeljeno s 3 je 3 i 1 je ostatak 8 podijeljeno s 3 je 2 i 2 je ostatak 8 podijeljeno s 2 je 4 i 0 je ostatak
utvrditi da li je neki broj djeljiv s nekim drugim brojem. Ako je, ostatak takovog dijeljenja mora biti 0. Ili npr. da li je neki broj smjeten u odreenoj varijabli u memoriji paran ili neparan. Paran broj dijeljen s 2 daje ostatak 0, odnosno neparan broj dijeljen s dva daje 1 ostatak. Pokuajte dodi do rezultata slijededih izraza: A = 5; B = 7; C = A MOD 3 + B A = 3; B = 2; R = A DIV B A = 7; B = 4; X = 2 * B / A C = _______ R = _______ X = _______
Isto tako ponekad de trebati usporediti neke veliine. Zato koristimo relacijske operatore: Operator > < = >= <= <> ili # DIJAGRAM TOKA
Rekli smo ve da se algoritmi najee zapisuju kao pseudokod i dijagram toka. Dijagram toka je grafiki prikaz algoritma. Takav nain zapisivanja ima nekoliko prednosti pred pseudokodom. Zapisivanje se vri meunarodno dogovorenim simbolima i ne ovisi o govornom jeziku onoga koji sastavlja algoritam. Grafiki prikaz je jednostavan, pregledan, lako se pronalaze greke. Nadalje, problem se moe jednostavno analizirati, usporediti s nekim drugim problemom, skratiti vrijeme pronalaenja rjeenja. Evo osnovnih simbola dijagrama toka: poetak
Opis vede manje jednako vede ili jednako manje ili jednako razliito
ulaz podataka
deklaracija varijabli i konstanti; postavljanje na poetnu vrijednost; obrada podataka izlaz podataka
kraj spojna toka, radi lakeg praenja toka podataka obino se u spojnu toku upisuju brojevi koji su veze izmeu razliitih dijelova algoritma Simboli za ulaz i izlaz podataka su istog oblika. Kod jednostavnih algoritama ulaz i izlaz su odmah uoljivi. Meutim, kod vrlo sloenih algori tama dobro je u paralelogram koji simbolizira ulaz pri dnu povui vodoravnu crtu i ispod nje napisati rije ulaz. Isto to je dobro uiniti i za izlaz podataka. Simboli dijagrama toka se povezuju strelicama koje pokazuju tok podataka. Evo ponovno naeg "dva i dva".
Nakon poetka prvo e netko morati preko tipkovnice upisati dva broja koja eli zbrojiti. Zamislimo 3 i 5. Ta dva broja smjetaju se u radnoj memoriji kao varijable a i b. Drugim rijeima broj 3 ui u dijelu memorije koji smo nazvali a, broj 5 se raskomotio u dijelu memorije koji smo nazvali b. Sadraj varijable c postaje zbroj sadraja varijabli a i b. Odnosno u dio memorije koji smo nazvali c smjeta se zbroj brojeva 3 i 5, dakle 8.
Krajnji cilj obrade je dobiti rezultat. Ispisujemo sadraj varijable c. Na zaslonu monitora ili na pisau, ovisno kako jednoga dana budemo to definirali u programu, pojaviti e se broj 8.
Kraj.