usmeni Flashcards
Što je algoritam? Primjer.
Algoritam je opis postupka koji, nakon konačnog broja radnji, daje suvisli rezultat.
Algoritam je i dio posla u procesu koji od uočenog problema dovodi do rezultata.
Slijed posla:
FIZIKALNA STVARNOST -> MATEMATICKI MODEL -> ALGORITAM -> STRUKT. PODATAKA ->
RACUNALNI PROGRAM
Svojstva:
1. Točnost
2. Konačnost
3. Učinkovitost
Primjer: Bubble Sort, Quick Sort, Algoritam komplementiranja binarnog broja,…
Koja je razlika između algoritma i programa?
Algoritam je niz uputa koje pomažu pri rješavanju problema i ne sadrži programske naredbe,
dok je program realizacija / implementacija algoritma u nekom programskom jeziku.
Znakovni tip podataka. Kako se prikazuje u memoriji, a kako na ekranu?
Znakovni tip podataka (char) se u memoriji prikazuje kao niz bitova.
Kombinacija od 8 bitova sadrži 256 znakova.
Za prikaz na ekranu niz bitova iz memorije se dekodira prema 7 bitnom ASCII (0-127) kodu,
za dijakritičke znakove koristi se code page.
Na 8 bitova se prikazuje prošireni ASCII s kodnom stranicom pojedinih država.
UNICODE je 16-bitni znakovni tip.
Cjelobrojni tip podataka. Vrste i raspon vrijednosti.
Cjelobrojni tip podataka (int) dijelimo po broju bita kojim ih prikazujemo u memoriji (8, 16,
32 ,64) i s obzirom na predznak (s predznakom i bez predznaka).
Rasponi:
1. slika
https://drive.google.com/drive/folders/1TfhzcY68ZFxln6kgz1bQ7-2HcqBiebDe
Pozicioni brojni sustav
Definirano: Baza B i znamenke di s vrijednostima [0,B-1]. Broj N zapisan u dek ima vrijednost:
N = SUMA(1 do n-1)(di*B(na i))
Negativni brojevi prikazuju se preko dualnog komplementa.
Cjelobrojni tip podataka. Kako se prikazuje u memoriji?
Prikazuje se nizom od: 8 (short int), 16 (int), 32 (long int) ili 64 (long long int) bitova.
Ako je broj s predznakom, predznak zauzima prvi bit.
Opisati dvostruki (binarni) komplement.
Dvostruki (binarni) komplement je broj kojemu je promijenjen predznak.
Komplementiranje se vrši invertiranjem svih bitova u broju i aritmetičkim dodavanjem bita
„1“
- slika: https://drive.google.com/drive/folders/1TfhzcY68ZFxln6kgz1bQ7-2HcqBiebDe
Realni tip podataka. Kako se prikazuje u memoriji?
Realni tip podataka se u memoriji prikazuje nizom od 32, 64 ili 80 bita.
Zapis se sastoji od predznaka, karakteristike (eksponenta) i mantise.
P(1) + K(7) + M(24) - 32-bitni broj
Realni tip podataka. Greške pomičnog zareza, zbog čega? Primjer.
Do greške pomičnog zareza dolazi ukoliko broj nije prikaziv, odnosno nije ga moguće
pohraniti u određeni broj bita (32,64, 80) pa se ga je potrebno zaokružiti.
Na primjer: Računanje vrijednosti broja π Ludolfovom metodom.
Primjer: zbrajanje velikih i malih brojeva
AKo je razlika brojeva dovoljno velika, zbrajanje će uvijek dati rezultat jednak većem broju, zbog zaokruživanja.
Množenje velikih i malih brojeva funkcionira bez problema.
Nizovi (jednodimenzionalna polja) kao struktura podataka. Svojstva?
Niz je linearna struktura koja se sastoji od 2 ili više podataka istog tipa.
Zahtjeva neprekinuti niz memorije.
Prvi element niza ima indeks „0“ , a zadnji „n-1“ (n-veličina niza).
Podaci unutar niza mogu biti bilo kojeg tipa, uključujući i još jedan niz.
Alociraju se statički i dinamički. Moguć izravan pristup svakom elementu.
Konačan broj el. N. Direktan pristup svakome (O(1)), el. slijede jedan iza drugoga.
Algoritam SEKVENCIJALNO PRETRAŽIVANJE niza. Složenost?
Sekvencijalno pretraživanje je najsporiji način pretraživanja.
Niz se pretražuje element po element.
Složenost O(n) - linearna.
Predani niz ne mora biti prethodno sortiran.
- slika: https://drive.google.com/drive/folders/1TfhzcY68ZFxln6kgz1bQ7-2HcqBiebDe
Algoritam BINARNO PRETRAŽIVANJE niza. Složenost?
Binarno se pretraživati može samo već prethodno sortirani niz.
Pretraživanje se vrši dijeljenjem niza na pola. Ukoliko je traženi broj veći od broja u sredini,
zanemaruju se svi brojevi manji od srednjeg (obrnuto ukoliko je traženi broj manji) i
„novonastali“ niz se ponovno dijeli na pola sve dok se ne pronađe traženi broj.
Složenost je O(log n).
- slika: https://drive.google.com/drive/folders/1TfhzcY68ZFxln6kgz1bQ7-2HcqBiebDe
Usporedba algoritama sekvencijalnog i binarnog pretraživanja niza.
Algoritam binarnog pretraživanja je efikasniji jer ima manju složenost, ali niz koji se
pretražuje mora biti prethodno sortiran što nije slučaj za sekvencijalno pretraživanje
Algoritam SELEKT-SORT. Složenost?
Algoritam selekt-sort pretražuje cijeli niz tražeći najmanji element i zatim ga prebacuje na
prvo mjesto u nizu.
Nakon toga ponovno pretražuje cijeli niz i traži drugi najmanji broj i prebacuje ga na drugo
mjesto i tako sve dok niz nije sortiran.
Složenost O(n2).
- slika: https://drive.google.com/drive/folders/1TfhzcY68ZFxln6kgz1bQ7-2HcqBiebDe
Matrice (dvodimenzionalna polja) kao struktura podataka. Svojstva?
Matrice su linearne strukture podataka raspoređenih po stupcima i redcima.
Pravokutna shema podataka; svi el. istog tipa; direktan pristup svakom.
To su zapravo polja čiji elementi su druga polja.
Indeksi mjesta se zapisuju u obliku [n][m], gdje je n- indeks retka, a m-indeks stupca.
Indeksi kao i kod niza kreću od 0.
Primjer algoritma s matricom. Složenost?
Algoritam množenja matrica. Složenost O(mnk). m-broj redaka prve matrice, n- broj stupaca
prve matrice i broj redaka druge, k-broj stupaca druge matrice.
Problem magičnog kvadrata – O(m^2) – formiranje kvadratnu matricu m x m (m je neparan)
takva da su sume svih redaka, stupaca, dijagonala jednake
- slika: https://drive.google.com/drive/folders/1TfhzcY68ZFxln6kgz1bQ7-2HcqBiebDe
Algoritam MNOŽENJE KVADRATNIH MATRICA. Složenost?
Množenje matrica se vrši tako da se elementi prvog retka prve matrice množe sa elementima
prvog stupca druge matrice. Rezultati množenja se zbroje i dobije se element u prvom retku,
prvom stupcu. Za element u prvom retku, drugom stupcu treba množiti elemente prvog
retka sa elementima drugog stupca itd.. Složenost algoritma je O(mnk) jer sve matrice imaju jednak broj redaka i stupaca.(n and n)
- slika: https://drive.google.com/drive/folders/1TfhzcY68ZFxln6kgz1bQ7-2HcqBiebDe
Statičko i dinamičko alociranje memorije. Objasniti na primjeru niza.
Niz se može alocirati statički i dinamički. Pri statičkom alociranju maksimalna veličina niza
mora biti poznata kako bi se pronašlo prikladno mjesto u memoriji.
Niz se sprema na stog (Stack).
Mjesto u memoriji će ostati zauzeto sve dok ne izađe iz dosega.
Pri dinamičkoj alokaciji nije potrebno znati maksimalnu veličinu niza. Za razliku od statičke
alokacije, niz se sprema u hrpu (Heap). Dinamička alokacija također nudi mogućnost
oslobađanja memorije tokom izvođenja programa.
Dinamički se alocira naredbama malloc i new.
Memorijska adresa kao tip podataka.
Memorijska adresa je pokazivač koji može imati vrijednost od prve adrese (0) do najveće
vrijednosti zadnje lokacije u memoriji.
To je nenegativni cijeli broj bez predznaka zapisan u heksadekadskom sustavu.
Pokazivačima pridjeljujemo memorijsku adresu varijable.
Povezani popis kao struktura podataka.
Povezani popis je linearna dinamička struktura podataka
Elementi popisa se stavljaju u slobodan dio memorije i međusobno su povezani pokazivačima
koji pokazuju na adresu sljedećeg elementa.
Sastoji se od 2 osnovna dijela, podatkovnog i pokazivačkog.
Točkicom ili ‘->’ se pristupa elementima odnosno pojedinim članovima čvora.
Varijabla ‘prvi’, ‘root’ predstavlja početak povezane liste te prvi=NULL znači da je povezana
lista prazna.
Algoritam KREIRANJE POVEZANOG POPISA
Prilikom kreiranja povezanog popisa potrebno je definirati strukturu koja sadrži vrijednost
elementa i pokazivač na sljedeći element. Možemo dodavati svaki novi podatak na kraj
popisa, a možemo novog dodavati i na početak povezanog popisa.
- slika: https://drive.google.com/drive/folders/1TfhzcY68ZFxln6kgz1bQ7-2HcqBiebDe
Algoritam OBILAZAK POVEZANOG POPISA.
Za primjer ovog algoritma potrebno je ispisati sve elemente povezanog popisa. Za ovaj
algoritam koristi se pomoćni pokazivač trenutni koji pokazuje na adresu trenutnog elementa.
Na početku algoritma trenutni se postavlja na prvi član povezanog popisa. Nakon toga se
ispisuje vrijednost elementa povezanog popisa koji se nalazi na lokaciji na koju pokazuje
trenutni. Trenutnom se zatim pridružuje memorijska adresa sljedećeg elementa. Taj proces
se ponavlja sve dok trenutni nije jednak NULL, odnosno nema sljedećeg elementa.
- slika: https://drive.google.com/drive/folders/1TfhzcY68ZFxln6kgz1bQ7-2HcqBiebDe
Usporedba niza i povezanog popisa. Prednosti i mane.
Niz se može alocirati statički i dinamički, dok se povezani popis može alocirati samo
dinamički. Prednosti povezanog popisa su: trenutno dodavanje i brisanje elemenata u
povezani popis i mogućnost potpunog iskorištenja memorije. Pristup elementima popisa nije
trenutan kao kod niza, već se mora pristupati element po element. To je jedina mana
povezanog popisa u usporedbi s nizom.
- slika: https://drive.google.com/drive/folders/1TfhzcY68ZFxln6kgz1bQ7-2HcqBiebDe
Algoritam INSERT SORT. Složenost?
Algoritmom insert sort se već pri dodavanju elemenata sortirani popis. Koristimo pokazivače
na osnovni element N, P i T.
N – koristimo za novi osnovni element koji kreiramo na dinamički način;
P – koristimo kao adresu prethodnog zapisa kada pretražujemo povezani popis;
T – koristimo kao trenutačnu adresu prilikom istog pretraživanja. Složenost O(n2).
- slika: https://drive.google.com/drive/folders/1TfhzcY68ZFxln6kgz1bQ7-2HcqBiebDe
Stog. Definicija, princip rada.
Stog je linearna struktura kojoj je princip rada LIFO (Last in first out).
Određen je s četiri funkcije: POP, PUSH(x), IS_EMPTY i CLEAR. Sve su atomske O(1)