Архиве

Algoritmi

Algoritmi

Da bi se neki problem rešio, potrebno je da se jasno definiše postupak za njegovo rešavanje. Tako je i kod pisanja programa bitno da se navede postupak pisanja programa.

Algoritam je opis za rešavanje nekog problema. Algoritam je konačan i precizno definisan proces, niz dobro definisanih pravila, kojom se ulazne vrednosti transformišu u izlazne ili se opisuje izvršavanje nekog postupka. Algoritam se definiše kao skup operacija koje treba izvršiti i redosled njihovog izvršavanja.

Osnovni elementi algoritma

Evo jednostavnog algoritma za spremanje čaja:

  1. Ako u čajniku nema vode, napunite čajnik vodom
  2. Stavite čajnik na šporet i uključite odgovarajuću ringlu
  3. Ako šolja za čaj nije prazna, ispraznite je
  4. Stavite kesicu čaja u šolju
  5. Ako voda u čajniku nije provrela, idite na korak 5, ako jeste, idite na korak 6
  6. Isključite ringlu
  7. Sipajte vodu iz čajnika u šolju za čaj;

Algoritam sadrži tri elementa:

  1. Sekvencu – niz operacija
  2. Odlučivanje (selekcija)
  3. Ponavljanje (iteracija, ciklus, petlja)

Sekvenca znači da se svaki korak sekvence mora rešavati u unapred datom redosledu – jedan za drugim. Ako bi se promenio redosled, došlo bi do pogrešnih rezultata.

Kod donošenja odluke, može postojati samo tačno ili netačno. Rezultat se bazira na nekoj tvrdnji koja može da ima vrednost tačno ili netačno.

If danas je sunčan dan, then oblačim kratke rukave (if tvrdnja then proces)

Ponavljanje procesa dok god tvrdnja ne postane tačna.
Ponavljanje ima dva oblika: whiledo ciklus ili dowhile ciklus

while
čajnik nije pun
do
sipaj vodu u čajnik

Dijagram toka – grafički zapis algoritma

Jedan od načina prikazivanja algoritma je grafički prikaz pomoću dijagrama toka. Ovakav prikaz algoritma koristi niz grafičkih simbola povezanih nizom strelica kojima se pokazuje sekvenca u kojoj će koraci opisani grafičkim simbolima biti izvršavani.

Grafički simboli koji se najčešće koriste za prikaz algoritma su sledeći:

pravoug

ulaz-izlaz

dijamant

strelica

krug

oval

Evo kako bi izgledao primer jednostavnog algoritma za izračunavanje zbira dva uneta broja:

zbiralgor

Primer za vežbu:

  1. Potrebno je sastaviti algoritamsku šemu prema algoritmu za određivanje puta koji prođe automobil, ako se kreće brzinom υ = 50km/h za vreme t = 3.5h
  2. Napisati algoritam za izračunavanje obima kruga.

Algoritamske strukture

Složenost nekog algoritma zavisi od zadatka za koji je on konstruisan.  Prema složenosti, algoritmi se dele na proste i složene.
Prosti se dalje dele na:

  • Proste linijske strukture (sekvence)
  • Razgranate linijske strukture (grananje)
  • Ciklične algoritamske strukture (petlje, ciklusu)

1. Proste linijske strukture

Prethodni primer je prosta linijska struktura, gde su se algoritamski koraci izvršavali jedan za drugim u zadatom redosledu.

2. Razgranate algoritamske strukture

Korišćenjem razgranatih struktura (uslovne naredbe) možemo postaviti uslov i u slučaju da je taj uslov ispunjen izvršiće se jedan deo algoritma, a u slučaju da nije, izvršiće se drugi deo algoritma.
Kod razgranatih algoritamskih struktura mora postojati barem jedan uslovni korak koji omogućava grananje algoritma.

Primer: Napisati algoritam koji prikazuje veći od dva uneta broja.

veci_broj

U Python-u se grananje realizuje na sledeći način:

if uslov:

naredba1

else:

naredba 2

Odnosno, ako je uslov onda…inače….

Na primer kod prikazivanja većeg od dva uneta broja:

….
if a>b:
print(„a je veće“)
else:
print(„b je veće“)

Za specifičan tip problema. može se koristiti i višestruko grananje.

3. Ciklične algoritamske strukture

Kod ciklične algoritamske strukture se pojedini koraci ponavljaju više puta.  Ciklične naredbe se sastoje od brojača i skupa naredbi. Recimo, ako treba deset puta da se ispiše neka poruka. Svako ponavljanje ciklusa naziva se iteracija. Koraci unutar ciklusa su uvek isti, ali se vrednosti sa kojima se radi menjaju.

Ciklus sa preduslovom (while)

Kod ciklusa sa preduslovom, može se desiti da na samom početku uslov nije zadovoljen. Dakle, ako uslov nije zadovoljen na samom početku , iskače iz petlje. Ako jeste, ponavlja iteraciju sve dok je uslov zadovoljen.

ciklusne

Ciklus sa postuslovom (do while)

Kod ciklusa sa postuslovom, ciklus mora da se izvrši jednom da bi uopšte došlo do provere uslova i odluke da li će se ciklus ponavljati.

postciklus

Ukoliko znamo koliko će se ciklus ponavljati, onda koristimo brojačke cikluse.

Na primer, ako hoćemo da izračunamo zbir prvih deset brojeva, potrebno je uneti jedan broj, dodati ga na prethodno određeni zbir i ponavljati deset puta postupak.

zbir10

Promenljiva je i je brojač, koji broji od početne vrednosti i = 1 do poslednje i = 10. i++ znači da se brojač uvećava svaki put kad prođe kroz ciklus za 1.

 

 

Izvor: www.wikipedia.org; Osnove programiranja, Milan Popović

Faze u programiranju

OSNOVNE FAZE

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. Projektovanje programa
    Definisanje niza operacija kojima se rešava konkretan problem.
  2. Pisanje programa
    U ovoj fazi se u nekom programskom jeziku opisuju podaci i postupak rešavanja problema.
  3. Testiranje  programa
    Testiranjem programa treba proveriti da li program rešava postavljeni zadatak. To je vrlo važna faza u kojoj treba otkloniti eventualno skrivene greške.
  4. Održavanje programa
    Ponekad treba izvršiti neke promene u programu usled 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.

Uvod u programiranje

OSNOVNI POJMOVI

Računar rešava samo ono što mu je zadato i na način na koji mu je zadato. Programom zadajemo računaru način na koji izvršava poslove, pa moramo precizno da opišemo sve korake (instrukcije) koje on izvršava zadatim redosledom.

Skup instrukcija napisan za rešavanje nekog problema naziva se PROGRAM.

Pisanje instrukcija pomoću nekog programskog jezika naziva se PROGRAMIRANJE.

PROGRAMSKI JEZIK je skup pravila kojim se računaru predstavljaju instrukcije i opisuju podaci.

Zato je potrebno prvo dobro projektovati program, odrediti kojim redosledom će instrukcije izvršavati i kakva struktura podataka je potrebna.

Podatak je registrovana činjenica, oznaka ili zapažanje nastala u toku nekog procesa. Podatke sakupljamo i registrujemo da bismo ih mogli čuvati i po potrebi koristili. Podaci mogu biti u obliku brojeva, teksta, slike, zvuka.
(primer: Petar Petrović, 180, 92, 39°, Beograd… )
Podaci postaju informacije u momentu njihovog korišćenja.

Informacija je skup poruka (podataka) koje za objekat (čovek, računar) koji ih prima određenu upotrebnu vrednost i značenje.
Informacija je skup obrađenih podataka koji predstavljaju neko obaveštenje.
(primer: Petar Petrović, visine 180, težine 92kg, rođen u Beogradu, dolazi kod lekara zbog povišene temperature 39°C)

Obrada podataka je proces pretvaranja podataka u informacije.

obradapodataka

Generacije programskih jezika

Prvi računarski jezici nastali su još u prvoj polovini 20. veka.

pjezici

Programske jezike možemo podeliti po stepenu zavisnosti programskih jezika i računara:

  • Mašinski jezik
  • Asemblerski jezik
  • Jezici višeg nivoa

Mašinski jezik je programski jezik koji razume mašina (kompjuter), odnosno jezik nula i jedinica (binarni kod).

Npr. 10010000111111000101100010

Asemblerski jezici bazirani su na mašinskom kodu, ali su prilagođeni čoveku. Asemblerski jezici koriste jednostavne instrukcije koristeći simbole koje se mogu direktno prevesti na mašinski jezik. Koriste se slovna imena za naredbe koja se lakše pamte.

Jezike višeg nivoa odlikuje nezavisnost u odnosu na hardver. Njihova sintaksa je pisana na engleskom jeziku i prvi jezici ove generacije su Cobol, Fortran..

Objektno orijentisani jezici poput Jave, C++, C#… Objekti su strukture podataka koje mogu sadržati vrednosti u vidu forme atributa i kod u formi metoda i procedura.

Kompajleri

Programi pisani u nekom jeziku višeg nivoa moraju se prevesti na jezik koji razume računara (mašinski jezik). Prevođenje sa jezika višeg nivoa na mašinski jezik obavljaju kompajleri.

Prevođenje sa mašinski orijentisanih jezika na mašinski obavljaju asembleri. Da bi se program na mašinskom jeziku izvršio mora biti povezan (linkovan) i smešten u memoriju.To obavljaju linkeri.

Pojam sintakse i semantike

Programski jezici takođe imaju svoju sintaksu i semantiku.

Sintaksa određuje šta su ispravne konstrukcije u tom jeziku, a semaktika im pridružuje značenje. Sintaksa je skup pravila na osnovu kojih se pišu konstrukcije jezika.

Semantika označava smisao (značenje) koji ima u programu neka pravilna konstrukcija programskog jezika.

Recimo, rečenica „Danas sam vozijo bicikl“ je sintaksno netačna. Dok rečenica „Kada pada kiša, zemlja je skroz suva.“ je sintaksno ispravna, ali semantički nije.