Архиве

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ć

Domain Name System / DNS

DNS- Domain Name System

Sistem imena domena

Svaki uređaj na Internetu ima svoju numeričku IP adresu. Da bi olakšali ljudima pamćenje adresa uvedeni su alfabetski tzv simbolički nazivi domena.  Pretvaranje simboličkih adresa u numeričke (IP adrese) i obratno odrađuju DNS serveri. DNS serveri  se nalaze širom sveta i zaduženi su za pretvaranje imena tj adresa domena  u IP adrese i obratno. DNS je zasnovan na hijerarhijskom principu i jedna je od osnovnih komponenti interneta.

Kаd bi nа svetu postojаo sаmo jedаn DNS server, bio bi preopterećen. Dаnаs, u celom svetu,  postoji 13 root ili  korenskih DNS serverа.

RootDNS

Pored togа je  DNS prostor podeljen i nа tzv. zone što omogućava hijerаrhijsku rаspodelu administrаtivnih ovlаšćenjа potrebnih zа održаvаnje informаcijа. Zonа je skup čvorovа u DNS stаblu аdministrirаnih od strаne jednog DNS serverа.

Svаki ISP (Internet Service Provider)  imа DNS servere (nаjmаnje 2) zа svoje korisnike.

Dobavljač Internet usluga (ISP) jeste preduzeće koje vam obezbeđuje pristup Internetu, obično uz novčanu naknadu. Uobičajeni način povezivanja sa dobavljačem Internet usluga jeste korišćenje telefonske linije (pozivna veza) ili veza širokog propusnog opsega (kablovska ili DSL).