Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

Величина: px
Почињати приказ од странице:

Download "Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7"

Транскрипт

1 Programiranje 2 1. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/75

2 Dobar dan, dobro došli Prog2 2019, 1. predavanje p. 2/75

3 Sadržaj predavanja (početak) Uvod u kolegij: Tko sam, što sam i kako do mene. Pravila lijepog ponašanja. Računarski kolegiji na preddiplomskom studiju. Cilj kolegija Programiranje 2. Pregled sadržaja kolegija. Ostale važne informacije o kolegiju. Posebno: Pravila igre ili način polaganja ispita. Literatura. Korisni linkovi službena web stranica kolegija. Prog2 2019, 1. predavanje p. 3/75

4 Sadržaj predavanja (nastavak) Funkcije (ponavljanje): Načini prijenosa argumenata: po vrijednosti, po adresi. Prijenos argumenata po vrijednosti u C-u. Prijenos adresa varijabilni argumenti. Rekurzivne funkcije. Fibonaccijevi brojevi NE TAKO i kako treba. QuickSort algoritam. Prog2 2019, 1. predavanje p. 4/75

5 Informacije vježbe Promjena u rasporedu za vježbe, od sljedećeg tjedna (13. 3.): Grupa PDM1 (M P) asist. Ciganović srijeda, 10 12, u (A101). Prog2 2019, 1. predavanje p. 5/75

6 Informacije najava odrade U petak, 5. 4., nema predavanja u redovitom terminu. Održava se Dan i noć na PMF u, pa nema nastave. Računajte na to da ćemo to 5. predavanje morati odraditi u nekom terminu. Prijedlog je da to napravimo što prije za 10 dana, u: ponedjeljak, , od sati u (003). Potvrdim još sljedeći tjedan (kad se raspored ustabili). Prog2 2019, 1. predavanje p. 6/75

7 Informacije web stranica Moja web stranica za Programiranje 2 je ili, skraćeno, Tamo su: kompletna predavanja iz prošlih godina, a stizat će i nova (kako nastaju), zip arhiva svih primjera i programa s predavanja, (zajedno s exe verzijama, Intel C). Kopija je na adresi Prog2 2019, 1. predavanje p. 7/75

8 Informacije kolokviji Programiranje 2 je u kolokvijskom razredu C3. Službeni termini svih kolokvija su: Prvi kolokvij: petak, , u 15 sati. Drugi kolokvij: petak, , u 15 sati. Popravni kolokvij: utorak, , u 15 sati. Uputa: izbjegnite popravni obavite to ranije! Prog2 2019, 1. predavanje p. 8/75

9 Informacije demonstratori Prog2 ima istih 6 demonstratora kao i Prog1. To su: Al Depope Božidar Grgur Drmić Daniela Ivanković Sanjin Jurić Fot Ena Škopelja Patrik Vasung Najavite se demosima koji dan ranije, na pr. om. Njihove termine i adrese nadete na službenoj web-stranici kolegija (čim dogovore termine). Postavite miša na ime, u prozoru kliknite na . Prog2 2019, 1. predavanje p. 9/75

10 Informacije ritam nastave Tek toliko da ste svjesni: do 1. kolokvija imamo standardnih 7 tjedana nastave, a ne samo 6 ili punih 8. Ovaj semestar, takoder, imamo samo 13 tjedana nastave, umjesto nekadašnjih 14. Zato predavanja idu istim ritmom kao ranijih godina. Preskačemo ponavljanje gradiva iz Prog1 visi na webu kao nulto predavanje. Stvarno, Programiranje 2 ima ukupno 12 tjedana nastave, zato jer jedan obično propadne zbog raznih blagdana. Ako ne propadne zadnji tjedan služi kao rezerva :-) Prog2 2019, 1. predavanje p. 10/75

11 Uvod u kolegij Prog2 2019, 1. predavanje p. 11/75

12 Sadržaj Uvod u kolegij: Tko sam, što sam i kako do mene. Pravila lijepog ponašanja. Računarski kolegiji na preddiplomskom studiju. Cilj kolegija Programiranje 2. Pregled sadržaja kolegija. Ostale važne informacije o kolegiju. Posebno: Pravila igre ili način polaganja ispita. Literatura. Korisni linkovi službena web stranica kolegija. Prog2 2019, 1. predavanje p. 12/75

13 Na samom početku Moja malenkost (u punom sjaju ): Službeni osobni podaci: izv. prof. dr. sc. Saša Singer ured (soba, kabinet): 227, drugi kat, e mail: singer@math.hr web stranica: odn. Konzultacije: službeno: petak, sati, ili po dogovoru. Prog2 2019, 1. predavanje p. 13/75

14 Osnovna pravila lijepog ponašanja Imam nekoliko lijepih zamolbi u rubrici kultura. Prva i osnovna je razumna tišina, tj. da pričanjem ne ometate izvodenje nastave. Zatim, ne kasnite na predavanje. Održavajte razuman red u predavaonici. Mobilne telefone, molim, utišajte. Prog2 2019, 1. predavanje p. 14/75

15 Ukratko o kolegijima iz računarstva Programiranje 2 skraćeno = Prog2, je drugi od (barem) 4 računarska kolegija na preddiplomskom studiju Matematika: Programiranje 1 (Prog1), prije toga Uvod u računarstvo, Programiranje 2 (Prog2), prije toga Programiranje (C), Strukture podataka i algoritmi (SPA), Računarski praktikum I (RP1). Napomena: Raniji kolegiji su preduvjet za kasnije (navedenim redom, od 1. do 4. semestra). Prog2 je drugi osnovni kolegij iz računarstva. Ne šalite se... Tko ima problema s Prog2, vrlo će teško preživjeti ostatak. Prog2 2019, 1. predavanje p. 15/75

16 Cilj kolegija Programiranje 2 Ovaj kolegij, kao nastavak na Prog1 i preduvjet za SPA, ima 2 osnovna cilja: savladavanje osnovnih tehnika programiranja, tj. realizacija osnovnih algoritama, učenje konkretnog programskog jezika C, koji je sredstvo za realizaciju tih algoritama. Prog2 2019, 1. predavanje p. 16/75

17 Cilj kolegija Programiranje 2 (nastavak) Očekivana znanja i vještine koje Vi trebate steći: razumijevanje koncepata i praktični rad s funkcijama, pokazivačima, složenim strukturama podataka (polja, strukture, vezane liste), datotekama, razumijevanje sintakse i semantike naredbi programskog jezika C, sposobnost pisanja osnovnih algoritama u programskom jeziku C. Prog2 2019, 1. predavanje p. 17/75

18 Pregled sadržaja kolegija Teme posložene kao elementi programskog jezika C: Funkcije (ponavljanje) i rekurzivne funkcije. Struktura programa. Dvodimenzionalna i višedimenzionalna polja. Pokazivači. Pokazivači i polja. Pokazivači i funkcije. Strukture. Dinamičke strukture podataka. Vezane liste. Datoteke. Pretprocesorske naredbe. Standardna C biblioteka. Prog2 2019, 1. predavanje p. 18/75

19 Kako položiti Programiranje 2? Ocjena se formira na temelju zbroja bodova iz 2 dijela: 1. kolokvij ima (najmanje) 40 bodova, 2. kolokvij ima (najmanje) 60 bodova, Nije greška zaista se može osvojiti preko 100 bodova. Za prolaz je potrebno: zaraditi ukupno barem 45 bodova iz kolokvija (prvi i drugi zajedno, ili popravni), s tim da na barem jednom zadatku (na nekom kolokviju) treba zaraditi najmanje 80% mogućih bodova. Za razliku od Prog1, na Prog2 svi zadaci su programski. Prog2 2019, 1. predavanje p. 19/75

20 Polaganje ispita popravni (Ne koristiti!) Popravni kolokvij je zadnji vlak za spas i obuhvaća gradivo cijelog kolegija (uključivo i Prog1). Uvjeti za prolaz su isti kao i prije! Na popravni možete samo ako ste: zaradili barem 30 bodova na redovitim kolokvijima, s tim da na barem jednom zadatku (na nekom kolokviju) imate najmanje 50% mogućih bodova. Okruglo, ti preduvjeti su oko 2/3 prolaza redovitim putem. Izgleda vrlo oštro, ali iskustvo i statistika kažu da s manje od toga nemate nikakve šanse za prolaz. Prog2 2019, 1. predavanje p. 20/75

21 Polaganje ispita tablica ocjena Na kraju, evo kako se tako zaradeni bodovi pretvaraju u tzv. prvu ponudenu ocjenu (može, ali ne mora biti konačna.) Tablica bodovi ocjene: Bodovi Ocjena i više 5 To vrijedi za zbroj bodova onih koji se zbrajaju. Prog2 2019, 1. predavanje p. 21/75

22 Polaganje ispita (nastavak) U načelu, usmenog ispita ( završne provjere znanja ) NEMA, tj. završna provjera znanja = upis ocjene. Mogući izuzeci su: po želji ako položite, a niste zadovoljni ocjenom, po kazni nastavnik vas IMA PRAVO pozvati na usmeni ispit (na pr., zbog prepisivanja na kolokviju). Napomena: usmeni je praktični (za računalom). Tako zaradena konačna ocjena može biti i manja od one prvo ponudene, uključivo i pad kolegija. Pravila polaganja ispita su na službenoj web stranici kolegija. Ovdje ide priča da nema šale. Prog2 2019, 1. predavanje p. 22/75

23 Kako položiti ispit najvažnije + upozorenje! Nema šale programiranje se uči prvenstveno samostalnim pisanjem programa na računalu. Nema zamjene za to iskustvo! Ne može ga netko steći za vas, umjesto vas. Upozorenje: C nije jednostavan jezik i nije izmišljen za učenje programiranja. Svakako, isprobajte programe s predavanja i vježbi. Sve je dostupno na webu službenom i/ili mojem v. malo dalje. Prog2 2019, 1. predavanje p. 23/75

24 Literatura za Prog2 Osnovna literatura su, naravno, predavanja i vježbe, s popratnim materijalima (na pr. programi na webu). Dodatna literatura ukratko (više riječi je bilo na Prog1): Brian W. Kernighan i Dennis M. Ritchie, The C Programming Language (second edition), Prentice Hall, Upper Saddle River, New Jersey, B. S. Gottfried, Theory and Problems of Programming with C (second edition), Schaum s outline series, McGraw-Hill, New York, (Uputa: tražite najnovije izdanje.) Prog2 2019, 1. predavanje p. 24/75

25 Programska podrška za C Za praktično programiranje u C-u, možete koristiti Code::Blocks (umjesto DevC++), MS Visual Studio,..., na Windowsima, Code::Blocks, cc, gcc na Unix/Linux platformi. Ponavljam: isprobajte programe s predavanja i vježbi. Osim toga, (is)koristite demonstratore. Prog2 2019, 1. predavanje p. 25/75

26 Korisni linkovi Službena web stranica kolegija je: Tamo su: predavanja prof. Nogo i link na moja predavanja (moja predavanja su na mom webu, da ne bude kaos ), vježbe, službeni podsjetnik ( šalabahter ), sve bitne obavijesti, svašta drugo pogledajte! Prog2 2019, 1. predavanje p. 26/75

27 Korisni linkovi (nastavak) Isplati se relativno često svratiti, jer se sve važne stvari prvo pojave na webu. Na primjer, rezultati kolokvija! Ako mislite da bi na službenom webu trebalo biti još nešto, slobodno predložite! Ideja je da tamo bude sve što vam može pomoći. Molba: Ako nešto ne radi, odmah javite nastavnicima ili asistentima. Najbolje, meni (na singer), a ja ću proslijediti dalje. Prog2 2019, 1. predavanje p. 27/75

28 Korisni linkovi forum Na kraju, postoji i društveno mjesto na webu Matematičkog odsjeka tzv. forum: Tamo ima i podforum za Programiranje 1 i 2 na kojem se svašta nade. Stvarno, web i forum još uvijek (na daljinu) održava Vedran Šego još uvijek vrlo živ kao vsego, dugogodišnji asistent iz Prog i autor skripte za vježbe, a pred nekoliko godina je bio i nastavnik (i natjerao me da podosta sredim ova predavanja). Veliko HVALA! Prog2 2019, 1. predavanje p. 28/75

29 Molba za predavanja i sve moje materijale Lijepo molim, ako uočite neku grešku i sl., bez ustručavanja, javite mi (najlakše mailom) bit će popravljena :-) Nakon silnih godina, ja čitam ono što hoću, a ne ono što zaista piše. Isto vrijedi i za sve programe na mom webu! Naravno, ako nešto nije jasno, izgleda čudno,... pitajte me ne grizem! (bar ne prije kolokvija i ispita). Prog2 2019, 1. predavanje p. 29/75

30 Ima li pitanja? Slušam... Prog2 2019, 1. predavanje p. 30/75

31 Funkcije Prog2 2019, 1. predavanje p. 31/75

32 Sadržaj Funkcije (ponavljanje): Načini prijenosa argumenata: po vrijednosti, po adresi. Prijenos argumenata po vrijednosti u C-u. Prijenos adresa varijabilni argumenti. Rekurzivne funkcije. Fibonaccijevi brojevi NE TAKO i kako treba. QuickSort algoritam. Prog2 2019, 1. predavanje p. 32/75

33 Definicija funkcije ponavljanje Funkcija je programska cjelina koja uzima neke ulazne podatke, izvršava odredeni niz naredbi, i vraća rezultat svog izvršavanja na mjesto poziva. Definicija funkcije ima oblik: tip_podatka ime_funkcije(tip_1 arg_1,..., tip_n arg_n) { tijelo funkcije } Prog2 2019, 1. predavanje p. 33/75

34 Načini prijenosa argumenata Formalni i stvarni argumenti (ili parametri): Argumenti deklarirani u definiciji funkcije nazivaju se formalni argumenti. Izrazi koji se pri pozivu funkcije nalaze na mjestima formalnih argumenata nazivaju se stvarni argumenti. Veza izmedu formalnih i stvarnih argumenata uspostavlja se prijenosom argumenata, prilikom poziva funkcije. Sasvim općenito, postoje dva načina prijenosa (ili predavanja) argumenata, prilikom poziva funkcije: prijenos vrijednosti argumenata engl. call by value, prijenos adresa argumenata engl. call by reference. Prog2 2019, 1. predavanje p. 34/75

35 Prijenos argumenata po vrijednosti Kod prijenosa vrijednosti argumenata, funkcija prima kopije vrijednosti stvarnih argumenata, što znači da funkcija ne može izmijeniti stvarne argumente. Stvarni argumenti mogu biti izrazi. Prilikom poziva funkcije, prvo se izračuna vrijednost tog izraza, a zatim se ta vrijednost prenosi u funkciju, i kopira u odgovarajući formalni argument. Prog2 2019, 1. predavanje p. 35/75

36 Prijenos argumenata po adresi Kod prijenosa adresa argumenata, funkcija prima adrese stvarnih argumenata, što znači da funkcija može izmijeniti stvarne argumente, tj. sadržaje na tim adresama. Stvarni argumenti, u principu, ne mogu biti izrazi, već samo varijable, odnosno, objekti koji imaju adresu. Prog2 2019, 1. predavanje p. 36/75

37 Prijenos argumenata u C-u U C-u postoji samo prijenos argumenata po vrijednosti. Svaki formalni argument ujedno je i lokalna varijabla u toj funkciji. Stvarni argumenti u pozivu funkcije su izrazi (izračunaj vrijednost, kopiraj ju u formalni argument). Ako funkcijom želimo promijeniti vrijednost nekog podatka (tzv. varijabilni argument ), pripadni argument treba biti pokazivač na taj podatak, tj. njegova adresa! Tada se adresa prenosi po vrijednosti kopira u funkciju (promjena te kopije ne mijenja stvarnu adresu), ali smijemo promijeniti sadržaj na toj adresi, koristeći operator dereferenciranja *. Prog2 2019, 1. predavanje p. 37/75

38 Prijenos vrijednosti argumenata Primjer. Prijenos vrijednosti argumenata (kvad_1.c). #include <stdio.h> void kvadrat(int x, int y) { y = x*x; printf("unutar funkcije: x = %d, y = %d.\n", x, y); return; } Kvadrat od x sprema se u lokalnoj varijabli y, pa nema traga izvan funkcije kvadrat. Prog2 2019, 1. predavanje p. 38/75

39 Prijenos vrijednosti argumenata (nastavak) int main(void) { int x = 3, y = 5; } printf("prije poziva: x = %d, y = %d.\n", x, y); kvadrat(x, y); printf("nakon poziva: x = %d, y = %d.\n", x, y); return 0; Rezultat izvršavanja programa je: Prije poziva: x = 3, y = 5. Unutar funkcije: x = 3, y = 9. Nakon poziva: x = 3, y = 5. Prog2 2019, 1. predavanje p. 39/75

40 Prijenos adresa argumenata Primjer. Prijenos adresa argumenata (kvad_2.c). #include <stdio.h> void kvadrat(int *x, int *y) { *y = *x**x; /* = (*x) * (*x). */ printf("unutar funkcije: x = %d, y = %d.\n", *x, *y); return; } Kvadriramo sadržaj od x i spremamo ga u sadržaj od y, pa ostaje trag izvan funkcije kvadrat mijenja se *y. Prog2 2019, 1. predavanje p. 40/75

41 Prijenos adresa argumenata (nastavak) int main(void) { int x = 3, y = 5; } printf("prije poziva: x = %d, y = %d.\n", x, y); kvadrat(&x, &y); printf("nakon poziva: x = %d, y = %d.\n", x, y); return 0; Rezultat izvršavanja programa je: Prije poziva: x = 3, y = 5. Unutar funkcije: x = 3, y = 9. Nakon poziva: x = 3, y = 9. Prog2 2019, 1. predavanje p. 41/75

42 Napomene uz primjer U prvom primjeru void kvadrat(int x, int y) x i y su lokalne varijable tipa int. U drugom primjeru void kvadrat(int *x, int *y) x i y su lokalne varijable tipa int *, tj. pokazivači na int. Nije lijepo da se razne stvari isto zovu! Recimo, px i py bi bilo bolje u drugom primjeru. Prava realizacija bi bila void kvadrat(int x, int *py) jer x ne mijenjamo! Prog2 2019, 1. predavanje p. 42/75

43 Korektni prijenos argumenata Primjer. Korektni prijenos argumenata y je varijabilni argument, pa prenosimo adresu py (kvad_3.c). #include <stdio.h> void kvadrat(int x, int *py) { *py = x*x; printf("unutar funkcije: x = %d, y = %d.\n", x, *py); return; } Kvadrat od x spremamo u sadržaj od py, pa ostaje trag izvan funkcije kvadrat mijenja se *py. Prog2 2019, 1. predavanje p. 43/75

44 Korektni prijenos argumenata (nastavak) int main(void) { int x = 3, y = 5; } printf("prije poziva: x = %d, y = %d.\n", x, y); kvadrat(x, &y); printf("nakon poziva: x = %d, y = %d.\n", x, y); return 0; Rezultat izvršavanja programa je: Prije poziva: x = 3, y = 5. Unutar funkcije: x = 3, y = 9. Nakon poziva: x = 3, y = 9. Prog2 2019, 1. predavanje p. 44/75

45 Korektni prijenos argumenata (nastavak) Potpuni pregled stanja stvari dobivamo ispisom adresa, vrijednosti i sadržaja na adresama (kvad_p3.c): U glavnom programu (funkcija main): adresa od x (&x) = 0130C000 adresa od y (&y) = 0130C004 Prije poziva funkcije: vrijednost od x (x) = 3 vrijednost od y (y) = 5 Unutar funkcije kvadrat: adresa od x (&x) = 0019FDE8 adresa od py (&py) = 0019FDF0 vrijednost od x (x) = 3 vrijednost od py (py) = 0130C004 sadrzaj od py (*py) = 9 Prog2 2019, 1. predavanje p. 45/75

46 Korektni prijenos argumenata (nastavak) Nakon poziva funkcije: vrijednost od x (x) = 3 vrijednost od y (y) = 9 Komentar. Prethodni primjeri služe samo za ilustraciju. Naravno, jedina razumna realizacija funkcije za kvadrat je funkcija koja prima jedan argument i vraća kvadrat tog argumenta. int kvadrat(int x) { return x*x; } Prog2 2019, 1. predavanje p. 46/75

47 Rekurzivne funkcije Prog2 2019, 1. predavanje p. 47/75

48 Rekurzivne funkcije Programski jezik C dozvoljava tzv. rekurzivne funkcije, tj. da funkcija poziva samu sebe. U pravilu, rekurzivni algoritmi su kraći, ali izvodenje, u načelu, traje dulje. Katkad puno dulje, ako puno puta računamo istu stvar. Zato oprez! Napomena. Svaki rekurzivni algoritam mora imati nerekurzivni dio, koji omogućava prekidanje rekurzije. Najčešće je to neki if u inicijalizaciji rekurzije. Prog2 2019, 1. predavanje p. 48/75

49 Fibonaccijevi brojevi Prog2 2019, 1. predavanje p. 49/75

50 Fibonaccijevi brojevi Primjer. Osim faktorijela, drugi standardni primjer rekurzivne funkcije su Fibonaccijevi brojevi, definirani rekurzijom F n = F n 1 +F n 2, n 2, uz F 0 = 0, F 1 = 1. Po definiciji, možemo napisati rekurzivnu funkciju: long int fib(int n) { if (n == 0) return 0; if (n == 1) return 1; return fib(n - 1) + fib(n - 2); } Može i long unsigned. Ali, nemojte to raditi. Zabranjujem! Prog2 2019, 1. predavanje p. 50/75

51 Fibonaccijevi brojevi (nastavak) Ovdje je broj rekurzivnih poziva ogroman i veći od samog broja F n. Ne vjerujete? Dodajmo funkciji globalni brojač poziva broj_poziva (fib_r.c). long int fib(int n) { ++broj_poziva; /* Globalni brojac poziva. */ if (n == 0) return 0; if (n == 1) return 1; return fib(n - 1) + fib(n - 2); } Za n = 20 rezultat je F 20 = 6765, a za računanje treba poziv funkcije! Prog2 2019, 1. predavanje p. 51/75

52 Fibonaccijevi brojevi petljom Zadatak. Dokažite da je broj rekurzivnih poziva funkcije fib za računanje F n, uz n 2, jednak (F 1 + +F n )+F n 1. Uputa: fib(k) se poziva F n+1 k puta, za k = 1,...,n, a fib(0) se poziva F n 1 puta! Ovo, kao i faktorijele, ide puno brže običnom petljom: novi član je zbroj prethodna dva, uz pomak članova. Za realizaciju tog algoritma trebamo prozor od samo 3 susjedna člana niza: fn = novi član, fp = prošli član, fpp = pretprošli član. Prog2 2019, 1. predavanje p. 52/75

53 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 1 ): 0 1 fp fn fn Što se stvarno zbiva s prozorom: fp = F 0, fn = F fn = fp + fpp fp fn Prog2 2019, 1. predavanje p. 53/75

54 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 1 ): 0 1 fp fn fn Što se stvarno zbiva s prozorom: fpp = F fn fpp = fp = + fpfpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

55 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 1 ): 0 1 fp fn fn Što se stvarno zbiva s prozorom: fp = F fn fp = fp = fn + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

56 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 2 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fn = F 0 +F 1 = F fn = fp + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

57 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 2 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fpp = F fn fpp = fp = + fpfpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

58 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 2 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fp = F fn fp = fp = fn + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

59 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 3 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fn = F 1 +F 2 = F fn = fp + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

60 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 3 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fpp = F fn fpp = fp = + fpfpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

61 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 3 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fp = F fn fp = fp = fn + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

62 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 4 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fn = F 2 +F 3 = F fn = fp + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

63 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 4 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fpp = F fn fpp = fp = + fpfpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

64 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 4 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fp = F fn fp = fp = fn + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

65 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 5 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fn = F 3 +F 4 = F fn = fp + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

66 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 5 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fpp = F fn fpp = fp = + fpfpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

67 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 5 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fp = F fn fp = fp = fn + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

68 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 6 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fn = F 4 +F 5 = F fn = fp + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

69 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 6 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fpp = F fn fpp = fp = + fpfpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

70 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 6 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fp = F fn fp = fp = fn + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

71 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 7 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fn = F 5 +F 6 = F fn = fp + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

72 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 7 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fpp = F fn fpp = fp = + fpfpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

73 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 7 ): fpp fp fn fn Što se stvarno zbiva s prozorom: fp = F fn fp = fp = fn + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

74 Fibonaccijevi brojevi Primjer. Napišite iterativni algoritam koji računa Fibonaccijeve brojeve, počevši od F 0 = 0, F 1 = 1. Prozor širine 3 susjeda putuje nizom (zadnji je F 8 ): fpp fp fn Što se stvarno zbiva s prozorom: fn = F 6 +F 7 = F fn = fp + fpp fpp fp fn Prog2 2019, 1. predavanje p. 53/75

75 Fibonaccijevi brojevi petljom (nastavak) Iterativna (nerekurzivna) verzija funkcije za Fibonaccijeve brojeve (fib_a.c). long int fibonacci(int n) { long int f_n, f_p, f_pp; /* Namjerno NE inic.*/ int i; if (n == 0) return 0; /* F[0] */ if (n == 1) return 1; /* F[1] */ /* Sad inicijaliziramo prva dva. Inicijalizacija odgovara stanju za n = 1 (a ne 2). */ Prog2 2019, 1. predavanje p. 54/75

76 Fibonaccijevi brojevi petljom (nastavak) f_p = 0; /* Prosli F[0] */ f_n = 1; /* Ovaj F[1] */ for (i = 2; i <= n; ++i) { f_pp = f_p; /* F[i - 2] */ f_p = f_n; /* F[i - 1] */ f_n = f_p + f_pp; /* F[i] */ } } return f_n; Prog2 2019, 1. predavanje p. 55/75

77 Fibonaccijevi brojevi (kraj) Ima još puno brži algoritam za računanje F n, složenost mu je O(logn), a ne O(n), ali se ne isplati za male n. Naime, najveći prikazivi Fibonaccijev broj na 32 bita u tipu int (i u tipu long int) je F 46 = , a u tipu unsigned (može i long) je F 47 = Dakle, korektne rezultate dobivamo samo za n 46 (ili 47), a tad je dovoljno brz i obični aditivni algoritam. Usput, najveći prikazivi Fibonaccijev broj na 64 bita u tipu long int je F 92 = , u long unsigned je F 93 = Prog2 2019, 1. predavanje p. 56/75

78 QuickSort algoritam Prog2 2019, 1. predavanje p. 57/75

79 QuickSort uvod i skica algoritma QuickSort se temelji na principu podijeli, pa vladaj. Uzmemo jedan element x k iz niza (tzv. ključni element) i dovedemo ga na njegovo pravo mjesto u nizu. Lijevo od njega ostavimo elemente koji su manji ili jednaki njemu (u bilo kojem poretku). Desno od njega ostavimo elemente koji su veći od njega (u bilo kojem poretku). Skica ideje: x k }{{} x k }{{} > x k Prog2 2019, 1. predavanje p. 58/75

80 QuickSort uvod i skica algoritma (nastavak) Skica ideje: x k }{{} x k }{{} > x k Podijeli, pa vladaj = sortiraj lijevi i desni podniz (bez x k ). Ako smo dobro izabrali, tj. ako je pravo mjesto x k blizu sredine niza, onda ćemo morati sortirati (rekurzivno) dva manja niza, približno polovične duljine. U najgorem slučaju, ako smo izabrali krivi x k dode na rub, morat ćemo sortirati jedan niz duljine n 1. Prog2 2019, 1. predavanje p. 59/75

81 QuickSort razrada algoritma U danom trenutku, rekurzivna funkcija za QuickSort treba sortirati nesredeni dio niza izmedu lijevog indeksa l i desnog indeksa d. Ta dva indeksa (i polje) su argumenti funkcije. Posla ima ako i samo ako taj dio niza ima barem 2 elementa, tj. ako je l < d. Za tzv. ključni element, najčešće se uzima k = l, tj. prvi element x l treba dovesti na njegovo pravo mjesto u tom komadu niza. Razlog: element x l služi kao branik na lijevom rubu niza. Prog2 2019, 1. predavanje p. 60/75

82 QuickSort razrada algoritma (nastavak) Dogovor: lijevo u nizu (ispred njegove prave pozicije) stavljamo elemente koji su manji ili jednaki x l, desno u nizu (iza njegove prave pozicije) stavljamo elemente koji su strogo veći od x l. Tada će pravo mjesto elementa x l biti zadnje u lijevom dijelu. x l? l l+1 } {{ }} d (k = l) x l {{ > x l } Prog2 2019, 1. predavanje p. 61/75

83 QuickSort razrada algoritma (nastavak) Kako se traži pravo mjesto elementa x l? Dvostranim pretraživanjem po ostatku niza. Sa svake strane (lijeve i desne) tražimo prvi sljedeći element koji ne spada na tu stranu niza. Ako nademo takav par zamijenimo im mjesta! x l l l+1 i j d x i > x l x j x l i j }{{} (i j) }{{} x l > x l Prog2 2019, 1. predavanje p. 62/75

84 QuickSort razrada algoritma (nastavak) Kraj dvostrane pretrage kad smo gotovi? Indeksi i i j moraju se preklopiti stići u obratni poredak j < i. Pravo mjesto elementa x l je na indeksu j, pa napravimo zamjenu (ako treba). x l l l+1 d i j }{{}}{{} x l > x l Prog2 2019, 1. predavanje p. 63/75

85 QuickSort razrada algoritma (nastavak) Algoritam za dvostrano pretraživanje: if (l < d) { i = l + 1; j = d; /* Prolaz mora i za i == j */ while (i <= j) { while (i <= d && x[i] <= x[l]) ++i; while (x[j] > x[l]) --j; if (i < j) swap(&x[i], &x[j]); } Uočiti: S desne strane (po j) ne treba provjera j > l, jer x l služi kao branik sigurno prekida petlju za j = l. Prog2 2019, 1. predavanje p. 64/75

86 QuickSort razrada algoritma (nastavak) Iza toga treba još: dovesti element x l na njegovo pravo mjesto indeks tog mjesta je j, rekurzivno sortirati lijevi i desni podniz, bez x j. if (l < j) swap(&x[j], &x[l]); quick_sort(x, l, j - 1); quick_sort(x, j + 1, d); } // Kraj if (l < d) Prog2 2019, 1. predavanje p. 65/75

87 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 d = 6 j = 6 i = 1 i = 7 Sortiramo cijeli niz [x 0,x 1,x 2,x 3,x 4,x 5,x 6 ]. Prog2 2019, 1. predavanje p. 66/75

88 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 d = 6 i = 1 j = 6 i = 1 i = 7 Prvi element 42 je ključni element. Početak dvostrane pretrage. Krećemo s lijeve strane. 12 je na dobroj strani ( 42) idemo dalje. Prog2 2019, 1. predavanje p. 66/75

89 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 d = 6 i = 2 j = 6 i = 1 i = 7 55 je na krivoj strani (> 42) stop s lijeve strane. Krećemo s desne strane. 67 je na dobroj strani (> 42) idemo dalje. Prog2 2019, 1. predavanje p. 66/75

90 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 d = 6 i = 2 j = 5j = 6 i = 1 i = 7 44 je na dobroj strani (> 42) idemo dalje. Prog2 2019, 1. predavanje p. 66/75

91 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 d = 6 i = 2 j = 4 j = 6 i = 1 i = 7 18 je na krivoj strani ( 42) stop s desne strane. i < j = zamjena para elemenata na krivim stranama. Prog2 2019, 1. predavanje p. 66/75

92 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 i = 3 d = 6 j = 4 j = 6 i = 1 i = 7 Nastavak dvostrane pretrage s lijeve strane. 94 je na krivoj strani (> 42) stop s lijeve strane. Prog2 2019, 1. predavanje p. 66/75

93 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 i = 3 d = 6 j = 3 j = 6 i = 1 i = 7 Nastavak dvostrane pretrage s desne strane. 94 je na dobroj strani (> 42) idemo dalje. Prog2 2019, 1. predavanje p. 66/75

94 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 i = 3 d = 6 j = 2 j = 6 i = 1 i = 7 18 je na krivoj strani ( 42) stop s desne strane. j < i = nema zamjene, kraj dvostrane pretrage. Prog2 2019, 1. predavanje p. 66/75

95 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1j = 2 d = 6 j = 6 i = 1 i = 7 l < j = zamjena x l i x j. Prog2 2019, 1. predavanje p. 66/75

96 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1j = 2 d = 6 Pravo mjesto za 42 je x 2. j = 6 i = 1 i = 7 Preostaje još rekurzivno sortirati dva manja podniza: lijevi [x 0,x 1 ] i desni [x 3,x 4,x 5,x 6 ]. Prog2 2019, 1. predavanje p. 66/75

97 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i d = 1 l = 3 d = 6 l = 0 j = 6 i i j = 1 i = 7 Sortiramo [x 0,x 1 ]. 18 je ključni element. Početak dvostrane pretrage. Krećemo s lijeve strane. 12 je na dobroj strani ( 18) idemo dalje. Prog2 2019, 1. predavanje p. 66/75

98 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i d = 1 l = 3 d = 6 l = 0 i = 2 j = 6 i j = 1 i = 7 i > d stop s lijeve strane. Krećemo s desne strane. 12 je na krivoj strani ( 18) stop s desne strane. j < i = nema zamjene, kraj dvostrane pretrage. Prog2 2019, 1. predavanje p. 66/75

99 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i d = 1 l = 3 d = 6 l = 0 j = 6 i j = 1 i = 7 l < j = zamjena x l i x j. Pravo mjesto za 18 je x 1. Lijevi podniz je [x 0 ], a desni je prazan oba rekurzivna poziva se odmah vrate, jer nema posla. Gotovi s [x 0,x 1 ]. Prog2 2019, 1. predavanje p. 66/75

100 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 l = 3 i = 4 d = 6 j = 6 i = 1 i = 7 Sortiramo [x 3,x 4,x 5,x 6 ]. 94 je ključni element. Početak dvostrane pretrage. Krećemo s lijeve strane. 55 je na dobroj strani ( 94) idemo dalje. Prog2 2019, 1. predavanje p. 66/75

101 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 l = 3 d = 6 j = 6 i = 1 i = 5 i = 7 44 je na dobroj strani ( 94) idemo dalje. Prog2 2019, 1. predavanje p. 66/75

102 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 l = 3 d = 6 j = 6 i = 1 i = 6i = 7 67 je na dobroj strani ( 94) idemo dalje. Prog2 2019, 1. predavanje p. 66/75

103 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 l = 3 d = 6 j = 6 i = 1 i = 7 i > d stop s lijeve strane. Krećemo s desne strane. 67 je na krivoj strani ( 94) stop s desne strane. j < i = nema zamjene, kraj dvostrane pretrage. Prog2 2019, 1. predavanje p. 66/75

104 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 l = 3 d = 6 j = 6 i = 1 i = 7 l < j = zamjena x l i x j. Pravo mjesto za 94 je x 6. Lijevi podniz je [x 3,x 4,x 5 ], a desni je prazan. Prog2 2019, 1. predavanje p. 66/75

105 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 l = 3 d = 5d = 6 j = 5j = 6 i = 1 i = 4 i = 7 Sortiramo [x 3,x 4,x 5 ]. 67 je ključni element. Početak dvostrane pretrage. Krećemo s lijeve strane. 55 je na dobroj strani ( 67) idemo dalje. Prog2 2019, 1. predavanje p. 66/75

106 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 l = 3 d = 5d = 6 j = 5j = 6 i = 1 i = 5 i = 7 44 je na dobroj strani ( 67) idemo dalje. Prog2 2019, 1. predavanje p. 66/75

107 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 l = 3 d = 5d = 6 j = 5j = 6 i = 1 i = 6i = 7 i > d stop s lijeve strane. Krećemo s desne strane. 44 je na krivoj strani ( 67) stop s desne strane. j < i = nema zamjene, kraj dvostrane pretrage. Prog2 2019, 1. predavanje p. 66/75

108 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 l = 3 d = 5d = 6 j = 5j = 6 i = 1 i = 7 l < j = zamjena x l i x j. Pravo mjesto za 67 je x 5. Lijevi podniz je [x 3,x 4 ], a desni je prazan. Prog2 2019, 1. predavanje p. 66/75

109 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 d = 4 d = 6 l = 3 j = 6 i = 4 i = 1 j i = 7 Sortiramo [x 3,x 4 ]. 44 je ključni element. Slijeva: 55 je na krivoj strani (> 44) stop s lijeve strane. Zdesna: 55 je na dobroj strani (> 44) idemo dalje. Prog2 2019, 1. predavanje p. 66/75

110 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 d = 4 d = 6 l = 3 j = 6 i = 1 j = 3 i = 4 i = 7 44 je na krivoj strani ( 44) stop s desne strane (branik). j < i = nema zamjene, kraj dvostrane pretrage. l = j = nema zamjene x l i x j. Pravo mjesto za 44 je x 3. Lijevi podniz je prazan, a desni je [x 4 ] nema posla, gotovo. Prog2 2019, 1. predavanje p. 66/75

111 QuickSort primjer Primjer. Quicksort algoritmom sortirajte zadano polje l = 0i = 1 d = 6 j = 6 i = 1 i = 7 Prog2 2019, 1. predavanje p. 66/75

112 QuickSort složenost Za složenost vrijedi: prosječna složenost je O(nlog 2 n), za slučajne dobro razbacane nizove, složenost u najgorem slučaju je O(n 2 ), za već sortirani i naopako sortirani niz. Autor QuickSort-a je C. A. R. Hoare, godine. U nastavku je dan cijeli program (qsort_1.c). Prog2 2019, 1. predavanje p. 67/75

113 QuickSort funkcija swap #include <stdio.h> /* Sortiranje QuickSort algoritmom. Prvi element x[l] je kljucni element i dovodimo ga na pravo mjesto u polju. */ void swap(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; return; } Prog2 2019, 1. predavanje p. 68/75

114 QuickSort funkcija quick_sort void quick_sort(int x[], int l, int d) { int i, j; if (l < d) { i = l + 1; j = d; /* Prolaz mora i za i == j */ while (i <= j) { while (i <= d && x[i] <= x[l]) ++i; while (x[j] > x[l]) --j; if (i < j) swap(&x[i], &x[j]); } Prog2 2019, 1. predavanje p. 69/75

115 QuickSort funkcija quick_sort (nastavak) } if (l < j) swap(&x[j], &x[l]); quick_sort(x, l, j - 1); quick_sort(x, j + 1, d); } return; Prog2 2019, 1. predavanje p. 70/75

116 QuickSort glavni program int main(void) { int i, n; int x[] = {42, 12, 55, 94, 18, 44, 67}; n = 7; quick_sort(x, 0, n - 1); } printf("\n Sortirano polje x:\n"); for (i = 0; i < n; ++i) { printf(" x[%d] = %d\n", i, x[i]); } return 0; Prog2 2019, 1. predavanje p. 71/75

117 QuickSort poboljšanja Poboljšanja našeg jednostavnog algoritma: Za n = 2,3 sort izravno, provjerom zamjena. Ako je duljina polja n > 3, onda za ključni element uzmi srednjeg od neka 3 elementa (ubrzanje oko 30%). Kontrola dubine rekurzije: Odmah obradi kraće od preostala dva polja, a dulje polje ide na tzv. programski stog (engl. stack). Ima još raznih trikova, pa se nemojte čuditi da je tako ispeglani QuickSort iz neke programske biblioteke puno brži od našeg algoritma! Prog2 2019, 1. predavanje p. 72/75

118 Sortiranje i pretraživanje u standardnoj biblioteci U standardnoj C biblioteci datoteka zaglavlja <stdlib.h>, postoje i sljedeće dvije funkcije: qsort QuickSort algoritam za općenito sortiranje niza podataka, bsearch Binarno traženje zadanog podatka u sortiranom nizu. U ovim funkcijama moramo sami zadati funkciju za usporedivanje podataka u nizu. O njima će biti više riječi na zadnjem predavanju, kad naučimo još neke potrebne stvari o pokazivačima. Na primjer, kako se jedna funkcija šalje drugoj funkciji kao argument. Prog2 2019, 1. predavanje p. 73/75

119 Funkcije qsort i bsearch Prototip funkcije qsort za sortiranje niza: void qsort(void *base, size_t n, size_t size, int (*comp) (const void *, const void *)); Prototip funkcije bsearch za binarno traženje zadanog podatka u sortiranom nizu: void *bsearch(const void *key, const void *base, size_t n, size_t size, int (*comp) (const void *, const void *)); Vraća pokazivač na nadeni podatak (ako ga ima), ili NULL. Zadnji argument u obje funkcije je pokazivač na funkciju za usporedivanje članova niza. Prog2 2019, 1. predavanje p. 74/75

120 Usporedba algoritama sortiranja (Intel C) Vrijeme (u s) za sortiranje polja s n = 10 5 (10 6 ) elemenata: Algoritam Slučajno Uzlazno Silazno min_ min_ max_ max_ bubble_ bubble_ ins_ ins_1a qs_p2_ qs_std Prog2 2019, 1. predavanje p. 75/75

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Programiranje 2 doc.dr.sc. Goranka Nogo PMF Matematički odsjek, Zagreb Kontakt ured: 228, drugi kat e-mail: nogo@math.hr konzultacije: četvrtak, 12:00-14:00 petak, 11:00-12:00 neki drugi termin, uz prethodni

Више

Programiranje 1 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 1. predavanje p. 1/4

Programiranje 1 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 1. predavanje p. 1/4 Programiranje 1 1. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 1. predavanje p. 1/49 Dobar dan, dobro došli Prog1 2016, 1. predavanje

Више

Programiranje 1 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2015, 1. predavanje p.1/49

Programiranje 1 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2015, 1. predavanje p.1/49 Programiranje 1 1. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2015, 1. predavanje p.1/49 Dobar dan, dobro došli Prog1 2015, 1. predavanje p.2/49

Више

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4 Programiranje 2 0. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/48 Sadržaj predavanja Ponavljanje onog dijela C-a koji

Више

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1 Programiranje 1 10. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1/95 Sadržaj predavanja Funkcije: Definicija funkcije.

Више

2015_k2_z12.dvi

2015_k2_z12.dvi OBLIKOVANJE I ANALIZA ALGORITAMA 2. kolokvij 27. 1. 2016. Skice rješenja prva dva zadatka 1. (20) Zadano je n poslova. Svaki posao je zadan kao vremenski interval realnih brojeva, P i = [p i,k i ],zai

Више

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6 Programiranje 1 9. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/60 Sadržaj predavanja Osnovni algoritmi na cijelim brojevima:

Више

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni šalabahter. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni podsjetnik. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr Oblikovanje i analiza algoritama 5. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. predavanje p. 1/68 Sadržaj predavanja Nehomogene rekurzije

Више

Oblikovanje i analiza algoritama 4. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. pr

Oblikovanje i analiza algoritama 4. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. pr Oblikovanje i analiza algoritama 4. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. predavanje p. 1/69 Sadržaj predavanja Složenost u praksi

Више

Računarski praktikum I - Vježbe 01 - Uvod

Računarski praktikum I - Vježbe 01 - Uvod Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 01 - Uvod v2018/2019. Sastavio: Zvonimir Bujanović Gradivo i način polaganja Gradivo: osnove jezika

Више

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost 1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar. 1.. Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred. 1.7. Bodovna vrijednost (ECTS) 7 1.3. Suradnici 1.8. Način izvođenja nastave

Више

Programiranje 1

Programiranje 1 Sveučilište u Rijeci ODJEL ZA INFORMATIKU Ulica Radmile Matejčić 2, Rijeka Akademska 2018./2019. godina PROGRAMIRANJE 1 Studij: Preddiplomski studij informatike (jednopredmetni) Godina i semestar: 1. godina,

Више

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p 1 Rezultati i uvidi u kolokvije: Rezultati u petak 3.5. navečer na webu a uvidi u ponedjeljak 6.5. u 16 sati. Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje te službeni podsjetnik.

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić funkcije delovi programa koji izvršavaju neki zadatak, celinu; dele na ugrađene, korisničke i main funkciju ugrađene funkcije printf,scanf... da bi se one izvršile potrebno

Више

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 07 - Podstrukture, const, reference v2018/2019. Sastavio: Zvonimir Bujanović Podstrukture Član

Више

Računarski praktikum I - Vježbe 09 - this, static

Računarski praktikum I - Vježbe 09 - this, static Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 09 - this, static v2018/2019. Sastavio: Zvonimir Bujanović Pokazivač this Kako funkcija članica

Више

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar 2016 1 Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova strategija rekurzivno razbija problem na 2 ili više potproblema

Више

Objektno orjentirano programiranje 2P

Objektno orjentirano programiranje 2P Sveučilište u Rijeci ODJEL ZA INFORMATIKU Akademska 2016./2017. godina OBJEKTNO ORIJENTIRANO PROGRAMIRANJE Studij: Preddiplomski studij informatike (dvopredmetni) Godina i semestar: 2. godina, 3. semestar

Више

070-ALIP2-udzbenik.indb

070-ALIP2-udzbenik.indb 0. U uvodnom ćemo poglavlju ponoviti osnove programskog jezika C s kojima smo se susreli u. razredu. U kratkom pregledu navedeni su operatori (aritmetički, relacijski i logički), neke od funkcija iz biblioteka

Више

Diskretna matematika Sveučilište u Rijeci ODJEL ZA INFORMATIKU Radmile Matejčić 2, Rijeka Akademska 2017./2018.godina DISKRETNA MATEMATIKA Studij: Pre

Diskretna matematika Sveučilište u Rijeci ODJEL ZA INFORMATIKU Radmile Matejčić 2, Rijeka Akademska 2017./2018.godina DISKRETNA MATEMATIKA Studij: Pre Sveučilište u Rijeci ODJEL ZA INFORMATIKU Radmile Matejčić 2, Rijeka Akademska 2017./2018.godina DISKRETNA MATEMATIKA Studij: Preddiplomski studij informatike (jednopredmetni) Godina i semestar: 2. godina,

Више

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1 Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1 Sadržaj 1 Pokazivači - ponavljanje 3 2 Pokazivači - veza sa nizovima 5 2 1 Pokazivači - ponavljanje 1.

Више

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Računarski praktikum I - Vježbe 03 - Implementacija strukture string Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 03 - Implementacija strukture string v2018/2019. Sastavio: Zvonimir Bujanović Stringovi u C-u String

Више

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode] Programski jezik C organizacija izvornog programa Prevođenje Pisanje programa izvorni program Prevođenje programa izvršni program Izvršavanje programa rezultat Faze prevođenja Pretprocesiranje Kompilacija

Више

Računarski praktikum I - Vježbe 11 - Funktori

Računarski praktikum I - Vježbe 11 - Funktori Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 11 - Funktori v2018/2019. Sastavio: Zvonimir Bujanović Funkcijski objekti (funktori) Objekt klase

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Datoteke nastavak Funkcija fgets Funkcija koja učitava podatke iz datoteke, liniju po liniju, je char *fgets(char *str, int n, FILE *fp); gdje su str pokazivač na dio memorije (string) u koji će ulazna

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Pokazivači Pointeri Definicija pokazivača Pokazivač na tip je varijabla koja sadrži adresu varijable tipa tip. Definicija pokazivača: mem_klasa tip * p_var; Primjer: static int * pi; double *px; char*

Више

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije korake. Uz dobro razrađen algoritam neku radnju ćemo

Више

Osnove fizike 1

Osnove fizike 1 Sveučilište u Rijeci ODJEL ZA INFORMATIKU Ulica Radmile Matejčić 2, Rijeka Akademska 2018./2019. godina OSNOVE FIZIKE 1 Studij: Preddiplomski studij informatike Godina i semestar: 1. godina; 1. semestar

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić do sada su korišćene "gotove" funkcije iz standardnih biblioteka (cin, cout...) one su pozivane iz main funkcije koja je glavna funkcija u programu jer izvršavanje programa

Више

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Baze podataka Tema: Osnovna SELECT naredba Vježbu pripremili:

Више

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode] Сложеност алгоритама (Програмирање 2, глава 3, глава 4-4.3) Проблем: класа задатака истог типа Велики број различитих (коректних) алгоритама Величина (димензија) проблема нпр. количина података које треба

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Ulaz i izlaz podataka Ulaz i izlaz podataka Nakon odslušanog bit ćete u stanju: navesti sintaksu naredbi za unos/ispis znakova znakovnih nizova cijelih brojeva realnih brojeva jednostruke i dvostruke preciznosti

Више

I

I DETALJNI IZVEDBENI NASTAVNI PLAN PREDMETA Naziv predmeta Studijski program Godina 2 Status predmeta Web stranica predmeta Mogućnost izvođenja nastave na engleskom jeziku Bodovna vrijednost i način izvođenja

Више

Državna matura iz informatike

Državna matura iz informatike DRŽAVNA MATURA IZ INFORMATIKE U ŠK. GOD. 2013./14. 2016./17. SADRŽAJ Osnovne informacije o ispitu iz informatike Područja ispitivanja Pragovi prolaznosti u 2014./15. Primjeri zadataka po područjima ispitivanja

Више

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijski program: Informacioni inženjering Informacioni inženjering 1 Rekurzivne funkcije Binarna stabla Informacioni

Више

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode] Osnove programiranja Funkcije - Metode Prenos parametara Po vrednosti Po referenci Po izlazu Sadržaj Opseg važenja promenljive u drugim strukturama Rekurzije Prenos parametara Metoda može vratiti isključivo

Више

Pojačavači

Pojačavači Programiranje u fizici Prirodno-matematički fakultet u Nišu Departman za fiziku dr Dejan S. Aleksić Programiranje u fizici dr Dejan S. Aleksić, vanredni profesor Kabinet 307 (treći sprat), lab. za elektroniku

Више

I

I DETALJNI IZVEDBENI NASTAVNI PLAN PREDMETA Naziv predmeta Studijski program Godina 2 Status predmeta Web stranica predmeta Mogućnost izvođenja nastave na engleskom jeziku Bodovna vrijednost i način izvođenja

Више

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić projektni zadatak projektovanje programa (algoritmi) pisanje programskog koda, izvorni kod,

Више

Microsoft Word - Izvedbeni plan - Kvantitativne metode istrazivanja final 2

Microsoft Word - Izvedbeni plan - Kvantitativne metode istrazivanja final 2 Naziv studija Preddiplomski studij sociologije Naziv kolegija Kvantitativne metode istraživanja Status kolegija Obvezni Godina Druga Semestar Zimski ECTS bodovi 5 Nastavnik Izv. prof. dr. sc. Zvjezdan

Више

Slide 1

Slide 1 OSNOVNI POJMOVI Naredba je uputa računalu za obavljanje određene radnje. Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Pisanje programa zovemo programiranje. Programski jezik

Више

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p Programiranje IEEE prikaz brojeva sažetak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog 208, IEEE prikaz brojeva sažetak p. /4 Sadržaj predavanja IEEE standard

Више

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj Programiranje 1 5. predavanje dodatak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanje dodatak p. 1/60 Sadržaj predavanja dodatka Primjeri

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Niz (array) Nizovi Niz je lista elemenata istog tipa sa zajedničkim imenom. Redosled elemenata u nizovnoj strukturi je bitan. Konkretnom elementu niza pristupa se preko zajedničkog imena niza i konkretne

Више

I

I DETALJNI IZVEDBENI NASTAVNI PLAN PREDMETA Naziv predmeta Studijski program Godina 3 Status predmeta Web stranica predmeta/mudri Mogućnost izvođenja nastave na engleskom jeziku Bodovna vrijednost i način

Више

NAZIV PREDMETA UNUTARNJETRGOVINSKO POSLOVANJE I Kod Godina studija 2. Nositelj/i predmeta dr.sc. Ivana Plazibat, prof. Bodovna vrijednost 6 ECTS v.š.

NAZIV PREDMETA UNUTARNJETRGOVINSKO POSLOVANJE I Kod Godina studija 2. Nositelj/i predmeta dr.sc. Ivana Plazibat, prof. Bodovna vrijednost 6 ECTS v.š. NAZIV PREDMETA UNUTARNJETRGOVINSKO POSLOVANJE I Kod Godina studija 2. Nositelj/i predmeta dr.sc. Ivana Plazibat, prof. Bodovna vrijednost 6 ECTS v.š. (ECTS) Suradnici nema Način izvođenja nastave P S V

Више

8 2 upiti_izvjesca.indd

8 2 upiti_izvjesca.indd 1 2. Baze podataka Upiti i izvješća baze podataka Na početku cjeline o bazama podataka napravili ste plošnu bazu podataka o natjecanjima učenika. Sada ćete izraditi relacijsku bazu u Accessu o učenicima

Више

NAZIV PREDMETA OBLIKOVANJE WEB STRANICA Kod SIT132 Godina studija 3. Bodovna vrijednost Nositelj/i predmeta Haidi Božiković, predavač 6 (ECTS) Suradni

NAZIV PREDMETA OBLIKOVANJE WEB STRANICA Kod SIT132 Godina studija 3. Bodovna vrijednost Nositelj/i predmeta Haidi Božiković, predavač 6 (ECTS) Suradni NAZIV PREDMETA OBLIKOVANJE WEB STRANICA Kod SIT132 Godina studija 3. Bodovna vrijednost Nositelj/i predmeta Haidi Božiković, predavač 6 (ECTS) Suradnici Status predmeta Ciljevi predmeta Uvjeti za upis

Више

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Microsoft PowerPoint - Datoteke [Compatibility Mode] Датотеке стандардни улаз / излаз Датотека је именовани низ знакова (бајтова) У програмском језику C датотека је везана за улаз и излаз података функције стандардне библиотеке Најједностaвније

Више

(Microsoft Word - S1-MTS-Primjena ra\350unala u poslovnoj praksi -Breslauer N)

(Microsoft Word - S1-MTS-Primjena ra\350unala u poslovnoj praksi -Breslauer N) 1. OPĆE INFORMACIJE 1.1. Naziv kolegija Primjena računala u poslovnoj praksi 1.6. Semestar 1 1.. Nositelj kolegija Nenad Breslauer, v. pred. 1.7. Bodovna vrijednost (ECTS) 5 1.3. Suradnici 1.8. Način izvođenja

Више

DWA2

DWA2 Sveučilište u Rijeci ODJEL ZA INFORMATIKU Radmile Matejčić 2, Rijeka Akademska 2018./2019. godina Studij: Preddiplomski jednopredmetni studij informatike Godina i semestar: 3. godina, 6 semestar Web stranica

Више

I

I DETALJNI IZVEDBENI NASTAVNI PLAN PREDMETA Naziv predmeta Studijski program Godina 3 Status predmeta Web stranica predmeta/mudri Mogućnost izvođenja nastave na engleskom jeziku Bodovna vrijednost i način

Више

NAZIV PREDMETA UNUTARNJETRGOVINSKO POSLOVANJE II Kod Godina studija 2. Nositelj/i predmeta dr.sc. Ivana Plazibat, prof. Bodovna vrijednost 6 ECTS v.š.

NAZIV PREDMETA UNUTARNJETRGOVINSKO POSLOVANJE II Kod Godina studija 2. Nositelj/i predmeta dr.sc. Ivana Plazibat, prof. Bodovna vrijednost 6 ECTS v.š. NAZIV PREDMETA UNUTARNJETRGOVINSKO POSLOVANJE II Kod Godina studija 2. Nositelj/i predmeta dr.sc. Ivana Plazibat, prof. Bodovna vrijednost 6 ECTS v.š. (ECTS) Suradnici nema Način izvođenja nastave P S

Више

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode] Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 03 Zvonimir Bujanović Slaven Kožić Vinko Petričević Mrežno programiranje: SocketAPI Programiramo u aplikacijskom sloju, za ostale se brinu

Више

Fizika Detaljni izvedbeni plan Prediplomski studij: Biotehnologija i istraživanje lijekova, I godina ECTS bodovi: 6 Nastavno opterećenje/sati: 40 sati

Fizika Detaljni izvedbeni plan Prediplomski studij: Biotehnologija i istraživanje lijekova, I godina ECTS bodovi: 6 Nastavno opterećenje/sati: 40 sati Fizika Detaljni izvedbeni plan Prediplomski studij: Biotehnologija i istraživanje lijekova, I godina ECTS bodovi: 6 Nastavno opterećenje/sati: 40 sati (30P+10V) Praktikum: 20 sati (S) Voditelj predmeta:

Више

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Strani jezik 2 - engleski 1.6. Semestar Nositelj kolegija Marija Miščančuk Bodovna vrijednost (E

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Strani jezik 2 - engleski 1.6. Semestar Nositelj kolegija Marija Miščančuk Bodovna vrijednost (E 1. OPĆE INFORMACIJE 1.1. Naziv kolegija Strani jezik 2 - engleski 1.6. Semestar 2 1.2. Nositelj kolegija Marija Miščančuk 3 1.7. Bodovna vrijednost (ECTS) Martina Sobočan 1.3. Suradnici - 1.8. Način izvođenja

Више

QS3-KOVIU-DI-R1-GM Detaljni izvedbeni plan kolegija 1. OPĆE INFORMACIJE 1.1. Naziv kolegija Gospodarska matematika Semestar I Nosi

QS3-KOVIU-DI-R1-GM Detaljni izvedbeni plan kolegija 1. OPĆE INFORMACIJE 1.1. Naziv kolegija Gospodarska matematika Semestar I Nosi 1. OPĆE INFORMACIJE 1.1. Naziv kolegija Gospodarska matematika 1 1.6. Semestar I. 1.2. Nositelj kolegija v. pred. Bojan Radišić, mag.educ.math. et inf., pred. Marijana Špoljarić, mag.educ.math. et inf.

Више

Programiranje 1 3. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/1

Programiranje 1 3. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/1 Programiranje 1 3. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/132 Sadržaj predavanja Osnovni tipovi podataka u računalu

Више

Naziv studija Dvopredmetni diplomski sveučilišni studij filozofije Naziv kolegija Moderna logika Status kolegija Obvezni Godina Prva Semestar Prvi /zi

Naziv studija Dvopredmetni diplomski sveučilišni studij filozofije Naziv kolegija Moderna logika Status kolegija Obvezni Godina Prva Semestar Prvi /zi Naziv studija Dvopredmetni diplomski sveučilišni studij filozofije Naziv kolegija Moderna Status kolegija Obvezni Godina Prva Semestar Prvi /zimski ECTS bodovi 3 Nastavnik Doc.dr.sc. Marko Vučetić e-mail

Више

Objektno orijentirano modeliranje

Objektno orijentirano modeliranje Sveučilište u Rijeci ODJEL ZA INFORMATIKU Akademska 2018./2019. godina OBJEKTNO ORIJENTIRANO MODELIRANJE Studij: Preddiplomski studij informatike (JP) Preddiplomski dvopredmetni studij informatike (DP)

Више

Računalne mreže

Računalne mreže Sveučilište u Rijeci ODJEL ZA INFORMATIKU Radmile Matejčić 2, Rijeka Akademska 2015/2016. godina MATEMATIKA 1 Studij: Godina i semestar: Web stranica predmeta: ECTS bodovi: 5 Nastavno opterećenje: 2 +

Више

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime Test ispravio: () () Ukupan broj bodova:. veljače 04. od 3:00 do 4:00 Ime i prezime Razred Škola Županija Mentor Sadržaj Upute za natjecatelje... Zadaci... Upute za natjecatelje Vrijeme pisanja: 60 minuta

Више

Programski jezik C

Programski jezik C Pojam funkcije Deklaracija i definicija funcije Poziv funkcije Memorijske klase promjenljivih Primjeri. Za kompajliranje koda koristen DEV-C++ 4.9.9.2 Compiler!!!! Moze is koristiti I bilo koji drugi standardni

Више

Microsoft PowerPoint - C-4-1

Microsoft PowerPoint - C-4-1 Pregled iskaza u C-u Izraz; Iskaz dodele, serijski komponovani iskaz; blok Uslovni iskazi i izrazi; složeno grananje Iterativni iskazi Iskaz dodele Promena vrednosti a = Ψ; Izračunava vrednost izraza Ψ,

Више

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Microsoft PowerPoint - Bitovi [Compatibility Mode] Оператори над битовима (Јаничић, Марић: Програмирање 2, тачка 5.6) Оператори за рад са појединачним битовима Само на целобројне аргументе: ~ битовска негација & битовска конјункција (и) битовска (инклузивна)

Више

Sveučilište u Rijeci

Sveučilište u Rijeci Sveučilište u Rijeci Građevinski fakultet Naziv studija: PREDDIPLOMSKI STRUČNI STUDIJ Semestar 3. ak. god.: 2018./19. IZVEDBENI NASTAVNI PLAN ZA PREDMET: Osnove betonskih i zidanih konstrukcija Broj ECTS:

Више

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Tehnološki softwer 1.6. Semestar Nositelj kolegija mr. sc. Vladimir Križaić, dig., prof Bodovna v

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Tehnološki softwer 1.6. Semestar Nositelj kolegija mr. sc. Vladimir Križaić, dig., prof Bodovna v . OPĆE INFORMACIJE.. Naziv kolegija Tehnološki softwer.6. Semestar 5.. Nositelj kolegija mr. sc. Vladimir Križaić, dig., prof..7. Bodovna vrijednost (ECTS) 4.3. Suradnici Mario Božinović, dig.8. Način

Више

Uvod u takmičarsko programiranje

Uvod u takmičarsko programiranje 8. čas Uvod u programiranje - naredbe ciklusa Uvežbavamo naredbe ciklusa, naredbe ponavljanja (loop) https://studio.code.org/s/course2/stage/6/puzzle/3 "Talk is cheap. Show me the code." - Linus Torvalds

Више

(Microsoft Word - S1 -OR- Osnove ra\350unarstva)

(Microsoft Word - S1 -OR- Osnove ra\350unarstva) 1. OPĆE INFORMACIJE 1.1. Naziv kolegija Osnove računarstva 1.6. Semestar 1 1.. Nositelj kolegija Nenad Breslauer, v.pred. 1.7. Bodovna vrijednost (ECTS) 5 1.3. Suradnici 1.8. Način izvođenja nastave (broj

Више

UNIVERZITET CRNE GORE MEDICINSKI FAKULTET MEDICINSKA BIOHEMIJA INFORMATOR ZA STUDENTE MEDICINE Medicinska biohemija i hemija 2017/18 I UVOD Cilj izuča

UNIVERZITET CRNE GORE MEDICINSKI FAKULTET MEDICINSKA BIOHEMIJA INFORMATOR ZA STUDENTE MEDICINE Medicinska biohemija i hemija 2017/18 I UVOD Cilj izuča UNIVERZITET CRNE GORE MEDICINSKI FAKULTET MEDICINSKA BIOHEMIJA INFORMATOR ZA STUDENTE MEDICINE Medicinska biohemija i hemija 2017/18 I UVOD Cilj izučavanja Medicinske biohemije je da studenti upoznaju

Више

Maksimalni protok kroz mrežu - Ford-Fulkerson, Edmonds-Karp

Maksimalni protok kroz mrežu - Ford-Fulkerson, Edmonds-Karp Maksimalni protok kroz mrežu - Ford-Fulkerson, Edmonds-Karp PMF-MO Seminar iz kolegija Oblikovanje i analiza algoritama 22.1.2019. mrežu - Ford-Fulkerson, Edmonds-Karp 22.1.2019. 1 / 35 Uvod - definicije

Више

Microsoft Word - 2.FRANCUSKI A1 MOR

Microsoft Word - 2.FRANCUSKI A1 MOR DETALJNI IZVEDBENI NASTAVNI PLAN PREDMETA OPĆE INFORMACIJE Naziv predmeta Drugi strani jezik A1 - francuski Studijski program Preddiplomski sveučilišni studij Menadžment održivog razvoja Smjer - Godina

Више

OSNOVE MENADŽMENTA

OSNOVE MENADŽMENTA FAKULTET ZA KULTURU I MEDIJE I FAKULTET ZA POSLOVNE STUDIJE 2018/2019. PREDMET: OSNOVI MENADŽMENTA IG. NAČIN POLAGANJA ISPITA PREKO KOLOKVIJUMA PREDMETNI PROFESOR: DOC. DR SNEŽANA BERIĆ EMAIL: SBERIC@MEGATREND.EDU.RS

Више

Informacijski sustav organizacije

Informacijski sustav organizacije Sveučilište u Rijeci ODJEL ZA INFORMATIKU R. Matejčić 2, Rijeka Akademska 2018./2019. godina INFORMACIJSKI SUSTAV ORGANIZACIJE Studij: Diplomski studij informatike (PI, IKS izborni kolegij) Godina i semestar:

Више

I

I DETALJNI IZVEDBENI NASTAVNI PLAN PREDMETA Naziv predmeta Studijski program Godina Status predmeta Web stranica predmeta/mudri Mogućnost izvođenja nastave na engleskom jeziku Bodovna vrijednost i način

Више

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet organizacije i informatike I

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet organizacije i informatike I Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet organizacije i informatike Informacijsko i programsko inženjerstvo Ured za upravljanje

Више

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7 Programiranje 2 7. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/75 Sadržaj predavanja Tipovi i složene deklaracije:

Више

ALIP1_udzb_2019.indb

ALIP1_udzb_2019.indb Razmislimo Kako u memoriji računala prikazujemo tekst, brojeve, slike? Gdje se spremaju svi ti podatci? Kako uopće izgleda memorija računala i koji ju elektronički sklopovi čine? Kako biste znali odgovoriti

Више

Primjena hipermedije u obrazovanju 1

Primjena hipermedije u obrazovanju 1 Sveučilište u Rijeci ODJEL ZA INFORMATIKU Ulica Radmile Matejčić 2, Rijeka Akademska 2018./2019. godina PRIMJENA HIPERMEDIJE U OBRAZOVANJU 1 Studij: Diplomski studij informatike - jednopredmetni Diplomski

Више

Naziv studija Integrirani prediplomski i diplomski učiteljski studij Naziv kolegija Odabrana poglavlja iz kognitivne psihologije Status kolegija Redov

Naziv studija Integrirani prediplomski i diplomski učiteljski studij Naziv kolegija Odabrana poglavlja iz kognitivne psihologije Status kolegija Redov Naziv studija Integrirani prediplomski i diplomski učiteljski studij Naziv kolegija Odabrana poglavlja iz kognitivne psihologije Status kolegija Redoviti Godina III. Semestar VI. ECTS bodovi 4 Nastavnik

Више

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet organizacije i informatike O

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet organizacije i informatike O Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet organizacije i informatike Organizacija poslovnih sustava Ured za upravljanje kvalitetom

Више

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Hrvatski studiji Psihologija Ured za

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Hrvatski studiji Psihologija Ured za Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Hrvatski studiji Psihologija Ured za upravljanje kvalitetom Sveučilište u Zagrebu Zagreb,

Више

Microsoft Word - 6. RAZRED INFORMATIKA.doc

Microsoft Word - 6. RAZRED INFORMATIKA.doc Kriteriji ocjenjivanja i vrednovanja INFORMATIKA - 6. razred Nastavne cjeline: 1. Život na mreži 2. Pletemo mreže, prenosimo, štitimo, pohranjujemo i organiziramo podatke 3. Računalno razmišljanje i programiranje

Више

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Hrvatski studiji Kroatologija Ured za

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Hrvatski studiji Kroatologija Ured za Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Hrvatski studiji Kroatologija Ured za upravljanje kvalitetom Sveučilište u Zagrebu Zagreb,

Више

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Grafički fakultet Grafička tehnnologi

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Grafički fakultet Grafička tehnnologi Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Grafički fakultet Grafička tehnnologija Ured za upravljanje kvalitetom Sveučilište u Zagrebu

Више

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet kemijskog inženjerstva i teh

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet kemijskog inženjerstva i teh Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet kemijskog inženjerstva i tehnologije Primijenjena kemija Ured za upravljanje kvalitetom

Више

Na temelju članka 81. Zakona o znanstvenoj djelatnosti i visokom obrazovanju te članka 19. i članka 44. stavak 5. točke 4. Statuta Visoke poslovne ško

Na temelju članka 81. Zakona o znanstvenoj djelatnosti i visokom obrazovanju te članka 19. i članka 44. stavak 5. točke 4. Statuta Visoke poslovne ško Na temelju članka 81. Zakona o znanstvenoj djelatnosti i visokom obrazovanju te članka 19. i članka 44. stavak 5. točke 4. Statuta Visoke poslovne škole PAR, Upravno vijeće Visoke poslovne škole PAR na

Више

МОДЕЛ КОНТРОЛНЕ ВЕЖБЕ Информатика и рачунарство за шести разред разред Наставна тема: Редни број часа: 8. РАЧУНАРСТВО Циљ часа: Теститарање постигнућа

МОДЕЛ КОНТРОЛНЕ ВЕЖБЕ Информатика и рачунарство за шести разред разред Наставна тема: Редни број часа: 8. РАЧУНАРСТВО Циљ часа: Теститарање постигнућа МОДЕЛ КОНТРОЛНЕ ВЕЖБЕ Наставна тема: Редни број часа: 8. РАЧУНАРСТВО Циљ часа: Теститарање постигнућа ученика из области: Линијска структура алгоритма, петља for, гранање, петља while, угњежђене петље.

Више

RAČUNOVODSTVO

RAČUNOVODSTVO Kolegij RAČUNOVODSTVO Akademska godina 2018./2019. Uvodno predavanje Sveučilišni studij 1 Nositelj kolegija: doc.dr.sc. Blaženka Hadrović Zekić Asistent: Dina Liović, mag.oec. Demonstrator: Matija Grgurić

Више

Numerička matematika 11. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 11. p

Numerička matematika 11. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 11. p Numerička matematika 11. predavanje dodatak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 11. predavanje dodatak p. 1/46 Sadržaj predavanja dodatka

Више

РАСПОРЕД ИСПИТА У ИСПИТНОМ РОКУ ЈАНУАР 1 ШКОЛСКЕ 2016/2017. ГОДИНЕ (последња измена ) Прва година: ПРВА ГОДИНА - сви сем информатике Име пр

РАСПОРЕД ИСПИТА У ИСПИТНОМ РОКУ ЈАНУАР 1 ШКОЛСКЕ 2016/2017. ГОДИНЕ (последња измена ) Прва година: ПРВА ГОДИНА - сви сем информатике Име пр РАСПОРЕД ИСПИТА У ИСПИТНОМ РОКУ ЈАНУАР 1 ШКОЛСКЕ 2016/2017. ГОДИНЕ (последња измена 23.01.2017.) Прва година: ПРВА ГОДИНА - сви сем информатике Име предмета Датум и термин одржавања писменог дела испита

Више

Blue Bubbles Template

Blue Bubbles Template Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje Zavod za konstruiranje - Katedra za elemente strojeva i konstrukcija Elementi konstrukcija IIA, B i C Nositelji kolegija: izv. prof. dr. sc. Krešimir

Више

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL završni ispit 6. srpnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1.

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL završni ispit 6. srpnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1. MJERA I INTEGRAL završni ispit 6. srpnja 208. (Knjige bilježnice dodatni papiri i kalkulatori nisu dozvoljeni!). (8 bodova) Kao na predavanjima za d N sa P d : a b ] a d b d ] : a i b i R a i b i za i

Више

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan realan broj od 0 i 1. Na standardni izlaz ispisati

Више

PowerPoint Presentation

PowerPoint Presentation Digitalno gospodarstvo diplomski studij smjera Management, 2. semestar izborni kolegij, 45h, 5 ECTS Nositelj: Prof.dr.sc. Marijana Zekić-Sušac Kontakt: marijana@efos.hr, Termini osobnih konzultacija objavljeni

Више

Microsoft Word - 12ms121

Microsoft Word - 12ms121 Zadatak (Goran, gimnazija) Odredi skup rješenja jednadžbe = Rješenje α = α c osα, a < b < c a + < b + < c +. na segmentu [ ], 6. / = = = supstitucija t = + k, k Z = t = = t t = + k, k Z t = + k. t = +

Више