Algoritmi i strukture podataka: Osnovni pojmovi

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

Koji od navedenih algoritama primenjuje princip 'podeli pa vladaj'?

  • Rekurzivni algoritam (correct)
  • Linearno programiranje
  • Dinamičko programiranje
  • Genetički algoritam

Koja od sledećih osobina nije neophodna za algoritam?

  • Elementarnost
  • Diskretnost
  • Efikasnost (correct)
  • Determinisanost

Šta je rezultat sledeće operacije u programiranju: x = 5 == 3?

  • x će imati vrednost 3
  • x će imati vrednost true
  • x će imati vrednost false (correct)
  • x će imati vrednost 5

Koji od navedenih operatora se koristi za dodelu vrednosti promenljivoj?

<p>= (D)</p>
Signup and view all the answers

Šta je osnovna razlika između strukture i unije u programiranju?

<p>Struktura alocira memorijski prostor za svaki član, dok unija deli isti memorijski prostor za sve članove. (A)</p>
Signup and view all the answers

Koja je razlika između fopen() sa režimom "w+" i "r+"?

<p><code>&quot;w+&quot;</code> otvara datoteku za čitanje i pisanje i briše sadržaj ako postoji, dok <code>&quot;r+&quot;</code> otvara datoteku za čitanje i pisanje, ali datoteka mora postojati. (C)</p>
Signup and view all the answers

Koji od navedenih algoritama nije primer pretraživačkog algoritma?

<p>Genetički algoritam (A)</p>
Signup and view all the answers

Šta predstavlja povratna vrednost funkcije strcmp(string1, string2) ako su stringovi jednaki?

<p>Nula (A)</p>
Signup and view all the answers

U kom redosledu se odvijaju faze sinteze koda?

<p>Leksička, sintaksna, semantička analiza (D)</p>
Signup and view all the answers

Koja od sledećih struktura podataka primenjuje princip LIFO (Last In, First Out)?

<p>Stek (B)</p>
Signup and view all the answers

Šta je osnovna svrha debugger-a u procesu razvoja softvera?

<p>Pronalaženje i ispravljanje grešaka (bugova) (C)</p>
Signup and view all the answers

Koja je razlika između vremenske i prostorne složenosti algoritma?

<p>Vremenska složenost se odnosi na vreme potrebno za izvršavanje algoritma, a prostorna na količinu memorije koju algoritam koristi. (A)</p>
Signup and view all the answers

Šta je rezultat sledećeg koda ako je x = 5: x--?

<p>x će imati vrednost 4 (C)</p>
Signup and view all the answers

Koja je uloga 'linkera' u procesu kompajliranja programa?

<p>Spaja različite objektne datoteke u izvršni program (C)</p>
Signup and view all the answers

Kako se deklariše niz karaktera ime koji sadrži string "Ana" u programskom jeziku C?

<p>B i C (D)</p>
Signup and view all the answers

Koja je razlika između testiranja tipa 'crna kutija' (black box) i 'bela kutija' (white box)?

<p>Testiranje 'crna kutija' testira funkcionalnost bez uvida u kod, dok 'bela kutija' testira na osnovu strukture koda. (C)</p>
Signup and view all the answers

Šta predstavlja kubna složenost algoritma, O(n³)?

<p>Algoritam sadrži tri ugnježdene petlje (B)</p>
Signup and view all the answers

Koji od navedenih tipova podataka se koristi za čuvanje adrese neke promenljive u memoriji?

<p>pokazivač (C)</p>
Signup and view all the answers

Koju svrhu ima typedef u programiranju?

<p>Daje novo ime postojećem tipu podataka (B)</p>
Signup and view all the answers

Šta je osnovna razlika između analize i složenosti algoritma?

<p>Analiza opisuje ponašanje algoritma, složenost meri vreme i memoriju. (B)</p>
Signup and view all the answers

Flashcards

Struktura podataka i algoritam

Organizuju podatke i rešavaju problem istovremeno.

Algoritam

Niz koraka sa osobinama kao što su determinisanost i diskretnost.

Pseudo jezik

Mešavina govornog i programskog jezika za prikaz algoritma.

Rekurzivni algoritam

Algoritam koji ponovo poziva sebe da reši manji deo problema.

Signup and view all the flashcards

Mašinski i izvorni jezik

Binarni kod razumljiv računaru nasuprot kodu čitljivom ljudima.

Signup and view all the flashcards

Paralelni i distribuirani algoritmi

Algoritmi: paralelni koriste više procesora, a distribuirani više računara.

Signup and view all the flashcards

Strukturne naredbe

Osnovne konstrukcije za kontrolu toka programa: sekvenca, selekcija, petlja.

Signup and view all the flashcards

Operatori u programiranju

Simboli koji izvršavaju operacije ili poređenja.

Signup and view all the flashcards

Identifikatori vs ključne reči

Imena koja programeri daju promenljivama i funkcijama nasuprot rezervisanih reči jezika.

Signup and view all the flashcards

Aritmetički operatori

Izvode osnovne računske operacije.

Signup and view all the flashcards

Debugger

Program za otkrivanje grešaka u kodu.

Signup and view all the flashcards

Linker i Loader

Linker spaja delove koda, a loader ga učitava u memoriju.

Signup and view all the flashcards

Logički operatori

Operatori koji koriste logiku za donošenje odluka.

Signup and view all the flashcards

Operator dekrementiranja

Smanjuje vrednost promenljive za jedan.

Signup and view all the flashcards

Operator dodele

Dodeljuje vrednost promenljivoj.

Signup and view all the flashcards

Relacijski operatori

Porede vrednosti i vraćaju istinu ili laž.

Signup and view all the flashcards

Ciklus

Petlja ponavlja blok koda više puta.

Signup and view all the flashcards

Sekvenca

Izvršava naredbe jednu za drugom, redosledom.

Signup and view all the flashcards

Selekcija

Bira put izvršavanja na osnovu uslova.

Signup and view all the flashcards

Podeli pa vladaj

Deli problem na manje i rešava ih odvojeno.

Signup and view all the flashcards

Study Notes

Osnovni pojmovi

  • Struktura podataka i algoritam zajedno organizuju podatke i rešavaju problem.
  • Algoritam je niz koraka sa osobinama: determinisanost, diskretnost, rezultativnost, elementarnost, masovnost.
  • Pseudo jezik je mešavina prirodnog i programskog jezika za pisanje algoritma.
  • Postoje rekurzivni, paralelni i distribuirani algoritmi. Rekurzivni algoritam poziva sam sebe za manji problem. Paralelni koriste više procesora, a distribuirani više računara.
  • Mašinski jezik je binarni, dok je izvorni jezik čitljiv ljudima.

Programske naredbe i operatori

  • Strukturne naredbe obuhvataju sekvencu, selekciju i petlju.
  • Operatori računaju ili porede vrednosti (npr. +, &&, ==).
  • Elementarne naredbe su osnovne radnje, a strukturne upravljaju tokom izvršavanja.
  • Identifikatori su imena koja dodeljuje korisnik, dok su ključne reči rezervisane.
  • Aritmetički operatori izvode matematičke operacije (npr. +).
  • Debugger se koristi za pronalaženje grešaka u kodu.
  • Linker spaja kod, a loader ga učitava u memoriju.
  • Logički operatori donose odluke (npr. &&).
  • Operator dekrementiranja smanjuje vrednost za 1 (npr. x--).
  • Operator dodele postavlja vrednost promenljive (npr. x = 5).
  • Relacijski operatori služe za poređenje (npr. >, ==).

Kontrola toka

  • Ciklus ponavlja deo koda (primeri: for, while).
  • Sekvenca izvršava naredbe redom.
  • Selekcija bira put izvršavanja (vrste: if, switch).

Algoritamske tehnike

  • "Podeli pa vladaj" deli problem na manje potprobleme.
  • Dinamičko programiranje pamti prethodna rešenja da bi izbeglo ponovno računanje.
  • Linearno programiranje koristi se za optimizaciju uz zadate uslove.
  • Postoje različiti algoritmi za pretraživanje podataka.
  • Genetički algoritmi koriste principe evolucije.
  • Heuristički algoritmi daju brza, ali približna rešenja.
  • Pohlepni algoritmi biraju lokalno najbolje rešenje u svakom koraku.
  • Slučajni algoritmi koriste slučajne vrednosti u svom radu.
  • Numeracija u slučajnim algoritmima prati nasumične korake.

Testiranje i Složenost

  • Strukturno testiranje proverava kod, a funkcionalno testiranje proverava funkcionalnost.
  • Verifikacija proverava da li je sve urađeno, a validacija proverava da li radi ispravno.
  • Storage complexity se odnosi na memoriju, a time complexity na vreme izvršavanja.
  • Time complexity predstavlja vreme, a processing complexity broj koraka.

Programski jezici i faze razvoja

  • Proceduralni jezik (npr. C) se razlikuje od objektno-orijentisanog jezika (npr. C++).
  • "=" je operator dodele, a "==" je operator poređenja.
  • Realne konstante imaju decimalni zapis, dok celobrojne nemaju.
  • Faze sinteze koda su leksička, sintaksna i semantička analiza.
  • Postoje izvorni, međujezik i mašinski jezici.
  • Memoizacija pamti rešenja da bi ubrzala rad programa.
  • Četvrta i peta faza rešavanja problema su kodiranje i testiranje.
  • Prve tri faze rešavanja problema su definisanje problema, dizajn algoritma i izbor programskog jezika.
  • Metod srednjeg vremena izračunava prosečno vreme izvršavanja.
  • Analiza algoritma proučava njegovo ponašanje, a složenost algoritma meri vreme i memoriju.
  • Aproksimacija je procena rešenja za teške probleme.
  • Kubna složenost O(n³) podrazumeva tri ugnježdene petlje.
  • Kvadratna složenost O(n²) podrazumeva dve ugnježdene petlje.
  • Leksička analiza se bavi tokenima, a sintaksna analizira pravila jezika.
  • Linearna složenost O(n) tipična je za sekvencijalnu pretragu.
  • Implementacija algoritma podrazumeva pisanje koda.
  • Prevođenje programa transformiše kod u mašinski jezik.
  • Semantička analiza se bavi značenjem koda, a sintaksna strukturom.
  • Vremenska složenost meri trajanje izvršavanja, a prostorna složenost potrebnu memoriju.

Elementi programiranja

  • Konstante su vrednosti koje se ne menjaju i mogu biti numeričke, karakterne ili simboličke.
  • Separatori razdvajaju elemente koda, na primer zarez.
  • Analiza koda uključuje lekseme, sintaksu i semantiku.
  • Prototip funkcije je njena deklaracija sa tipovima argumenata i povratnom vrednošću.

Strukture podataka

  • Binarno stablo je struktura gde svaki čvor ima najviše dva potomka.
  • Cirkularni niz ima poslednji element povezan sa prvim.
  • Dvodimenzionalna polja predstavljaju tabele sa redovima i kolonama.
  • Graf se sastoji od čvorova i veza između njih.
  • String je niz karaktera koji se završava sa '\0'.
  • Kompletno stablo ima svaki čvor sa istim brojem potomaka.
  • Nizovi su kolekcije elemenata istog tipa, indeksirani i smešteni uzastopno u memoriji.
  • Pokazivači čuvaju memorijske adrese; koriste se operatori * i &.
  • Prioritetni red vraća element sa najvećim prioritetom kao prvi.
  • Puno stablo ima sve puteve od korena do listova iste dužine.
  • Rekurzivne funkcije pozivaju same sebe.
  • List je čvor bez potomaka, a dubina stabla je dužina najdužeg puta do lista.
  • Red se može implementirati pomoću niza ili liste.
  • Element se dodaje u listu na početak ako je prazna, inače na kraj.
  • Dek (dvostrani red) omogućava dodavanje i brisanje elemenata na oba kraja.
  • Stek funkcioniše po principu LIFO (poslednji ulazi, prvi izlazi).

Razlike između struktura

  • Dek omogućava operacije na oba kraja, dok red omogućava dodavanje na jednom i uklanjanje na drugom.
  • Niz ima fiksnu veličinu, dok je lista dinamična.
  • Stek funkcioniše po principu LIFO, a dek omogućava operacije na oba kraja.
  • Stek je LIFO, dok je red FIFO (prvi ulazi, prvi izlazi).

Deklaracije i operacije

  • Deklaracija niza karaktera: char ime[] = "Ana";
  • Deklaracija strukture: struct Osoba { int godina; char ime[50]; };
  • Deklaracija unije: union Broj { int i; float f; };
  • Kopiranje nizova se vrši pomoću petlje (npr. for petlje).
  • Kreiranje korisničkog tipa: typedef int INTEGER;
  • Struktura alocira poseban prostor za svaki član, a unija deli isti prostor za sve članove.
  • Rad sa datotekama uključuje otvaranje, čitanje, pisanje i zatvaranje.
  • Enumeracije predstavljaju imenovane celobrojne konstante.
  • Pretraga grafova se može vršiti pomoću DFS (Depth-First Search) i BFS (Breadth-First Search).
  • Operacije nad dekom: push, pop, front, back.
  • Operacije nad redom: dodavanje na kraj, uklanjanje sa početka.
  • Operacije nad stekom: push i pop.
  • Režimi rada sa datotekama: r (čitanje), w (pisanje), a (dodavanje) itd.
  • #define se koristi za definisanje simboličkih konstanti.
  • & operator vraća adresu promenljive.
  • fopen() funkcija otvara datoteku.
  • Funkcija (potprogram) je višekratni deo koda.
  • main() funkcija je početna tačka programa.
  • for-each petlja prolazi kroz sve elemente kolekcije.
  • typedef kreira novo ime za postojeći tip.
  • Indirekcija (operator *) pristupa vrednosti na adresi.
  • r+ režim omogućava čitanje i pisanje, ali datoteka mora postojati.
  • Simboličke konstante su imena koja zamenjuju brojeve.
  • w+ režim omogućava čitanje i pisanje, ali briše sadržaj datoteke ako postoji.
  • EOL označava kraj reda, a EOF kraj datoteke.
  • Append dodaje sadržaj na kraj datoteke, dok Write prepisuje postojeći sadržaj.
  • strcat() spaja dva stringa.
  • strchr() pronalazi prvo pojavljivanje karaktera u stringu.
  • strcmp() upoređuje dva stringa.
  • strstr() traži podstring u stringu.
  • puts() ispisuje string, a gets() učitava string.
  • FIFO (First-In, First-Out) princip koristi red.
  • LIFO (Last-In, First-Out) princip koristi stek.
  • Pokazivač pokazuje poziciju u datoteci.
  • Liste i pokazivači se koriste za povezivanje čvorova.
  • Ime niza je pokazivač na prvi element niza.
  • Obilazak binarnog stabla može biti levo-desno, vrh-dno ili dno-vrh.
  • Definicija funkcije sadrži telo funkcije sa kodom.
  • Deklaracija funkcije je njen prototip.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team
Use Quizgecko on...
Browser
Browser