| Naziv predmeta | Uvod u programiranje | 
| Detalji | Kod VSITE121 Skr. UPROG ECTS 8 Godina 2 Semester Zimski semestar Vrsta obvezatni Razina HKO 6 Preddiplomski studij E-Learning  0%   | 
| Aktivnosti | IT zg - Ljet 25/26 ECTS Jedinice Sati Svega P 1.5 15 3 45
  A 0 0 0 0
  L 2 14 3 60
  S 0 0 0 0
  KA 0 0 0 0
  KP 0 2 1 0
  PR 0 0 0 0
  IP 0 0 0 0
  IU 0 1 2 0
  SU 4.5 1 135 135
   | 
| Nastavnici | Nositelji:  Dragana Čulina, pred. Asistenti:  Filip Dania, str. sur. | 
| Preduvjeti | Nema | 
| Sadržaj | Računalni programi i programski jezici. Bitovi i bajtovi. Brojevni sustavi. Programske paradigme i programski jezik Python. Programsko okruženje za pisanje i izvođenje programa na računalu u programskom jeziku Python. Osnovni tipovi podataka. Aritmetički operatori i izrazi. Varijable, objekti i naredba pridruživanja. Identifikatori i smjernice imenovanja. Unos i ispis podataka. Relacijski i logički operatori i izrazi. Naredbe grananja i naredbe ponavljanja. Korištenje predefiniranih funkcija. Definiranje vlastitih funkcija u Pythonu. Stvaranje vlastitih modula. Dokumentiranje, testiranje i debagiranje. Složeni tipovi podataka. Niz znakova (string). Liste u Pythonu. Objektno orijentirano Programiranje. Oblikovanje klasa u jeziku Python. Python i umjetna inteligencija. 
 | 
| Ciljevi učenja | Opći: Stjecanje znanja o funkcioniranju, razvoju i održavanju programske podrške. Usvajanje osnovnih principa programiranja zajedničkih većini programskih jezika. 
Posebni: Korištenje Python editora IDLE. Tipovi podataka. Izrazi. Varijable i naredbe pridruživanja. Naredbe grananja i naredbe ponavljanja. Definiranje funkcija. Moduli. Važnost dokumentiranja, testiranja i debagiranja. Znakovni nizovi. Liste. Definiranje klasa i instanciranje objekata. Upoznavanje sa osnovnim pojmovima  umjetne inteligencije. 
 | 
| Ishodi učenja | 1. Objasniti i primijeniti osnovne principe kao i pristupe u izradi programskih rješenja. 2. Koristiti Python editor IDLE. 3. Savladati rad sa osnovnim elementima programa. 4. Koristiti operatore i izraze. 5. Primijeniti naredbe grananja i ponavljanja u programskim jezicima. 6. Izrađivati programske aplikacije koje se sastoje od više funkcija. 7. Kreirati vlastite liste. 8. Pravilno baratati sa znakovima i nizovima znakova unutar programa. 9. Primijeniti osnovne principe objektnog programiranja te izrađivati jednostavije objektno orijentirana programska rješenja. 
 | 
| Sposobnosti | Kolegij pruža temeljna znanja s područja programiranja kao osnovu jezgre računarstva, osposobljava polaznike za programiranje u programskom jeziku Python. 
 | 
| Preporučena literatura | 1. Dragana Čulina: Uvod u programiranje, interna skripta, VSITE, Zagreb, 2020. 
2. Irv Kalb: Learn to Program with Python 3: A Step-by-Step Guide to Programming, 2nd ed., Apress, 2018 
 | 
| Dodatna literatura | Magnus Lie Hetland: Beginning Python: From Novice to Professional, 3rd ed., Apress, 2018. 
 | 
| predavanja (P) | - Računala i računalni programi. Sklopovlje. Binarni i decimalni sustavi. Izvorni kod, interpreter, kompajler. Algoritmi. Koraci izgradnje programa. Osnovni programski pristupi. Proceduralni, funkcionalni i logički usmjereni jezici. Objektno usmjereni jezici. Programski jezik Python. Izbor programskog okruženja. Interaktivni i uređivački dio sučelja IDLE.
 - Pisanje i izvršavanje programa. Sintaksa programskog jezika Python. Otkrivanje grešaka. Aritmetički izrazi. Objekti i tipovi. Tipovi int, float i string. Varijable i naredbe pridruživanja. Model smještanja podataka u spremnik. Višestruko pridruživanje. Tip podatka n-torka. Zamjena vrijednosti varijabli. Funkcija divmod().
 - Komentari u programu. Dokumentacijski string. Upis i ispis podataka (funkcije input i print). Formatirani ispis. Booleov tip podatka (bool), relacijski i logički operatori. Naredbe grananja if, i if…else. Uvlačenje bloka naredbi. Dijagram toka.
 - Naredba grananja if..elif..else. Naredbe ponavljanja.  Naredba for. Naredba while.
 - Naredbe break i continue. Ugniježđene petlje. Napredniji programski primjeri.
 - Funkcije u Pythonu. Built-in funkcije i definirane funkcije. Dokumentacijski string i naredba help. Definiranje vlastitih funkcija. Parametri i argumenti. Lokalne i globalne varijable. Naredba return. Funkcije koje ne vraćaju vrijednost. Vrijednost None. Funkcija main.
 - Rješavanje problema pomoću funkcija. Dizajniranje funkcija. Testiranje funkcija. Poziv funkcije. Praćenje izvršenja poziva u memorijskom modelu. 
Ponavljanje i priprema za prvi kolokvij.
 - Prvi kolokvij.
Moduli. Naredbe import i from … import. Modul math.
 - Modul sys i dodavanje u syspath puta do određene mape.  Kako da naš program postane modul. Varijabla _name_  i njena vrijednost.
Dokumentiranje, testiranje i debagiranje.
 - Složeni tipovi podataka. Znakovni nizovi (string). Operatori za rad sa znakovnim nizovima (+, *, in, not in). Ugrađene funkcije za rad sa znakovnim nizovima (len). Dohvat pojedinačnih znakova pomoću indeksa i pomoću petlje.  Izdvajanje (isijecanje) dijela znakovnog niza. Ugrađene metode (upper, lower, find, replace).
 - Liste. Kreiranje liste. Indeksi.  Unos i ispis vrijednosti elemenata liste pomoću for petlje. Funkcija list i objekt range.
Liste i znakovni nizovi. Nepromjenljivi i promjenljivi tip podataka. Operatori za liste. Ugrađene funkcije za liste (len, min, max, sum).
 - Ugrađene metode za liste (pop, sort, reverse). Pretvorba stringa u listu i liste stringova u jedan string.
Objektno orijentirano programiranje. Klase i objekti.
 - Članovi klase: atributi i metode. Glavni potpornji OOP-a: enkapsulacija, polimorfizam, nasljeđivanje. Oblikovanje klasa u jeziku Python. Konstruktor (metoda _init_). Parametar self.
 - Osnovni pojmovi umjetne inteligencije i strojnog učenja, te povijesni razvoj. Primjena Pythona u umjetnoj inteligenciji.
Ponavljanje i priprema za drugi kolokvij .
 - Drugi kolokvij.
 
  | 
| laboratorijske vježbe (L) | - Upoznavanje programskog okruženja IDLE. Interaktivni dio sučelja. Uređivački dio sučelja. Ključne riječi. Spremanje i pokretanje programa. Varijable, objekti i tipovi podataka. Naredba pridruživanja. Operatori i izrazi. Aritmetički operatori.
 - Upis i ispis podataka (funkcije input i print). Formatirani ispis. Cjelobrojno dijeljenje i mod operator. Prioritet operatora. 
Zamjena vrijednosti varijabli. Korištenje komentara.
 - Relacijski operatori. Logički operatori not, and i or. Booleove vrijednosti True i False. Kombiniranje jednostavnih uvjeta u složene. 
Naredbe grananja  if, if…else i if..elif..else. Uvlačenje blokova naredbi.
 - Programska petlja for. Mijenjanje vrijednost brojača. Funkcija range() sa jednim, dva i tri parametra.  Korištenje vrijednosti varijable brojača unutar petlje.
 - Uvjetno ponavljanje bloka naredbi - while petlja. Usporedba petlji for i while. Beskonačne petlje.
 - Ponavljanje naredbi grananja i naredbi ponavljanja.
 - Poštivanje preporuka za stil programiranja u Pythonu: uvlačenje bloka naredbi, duljina retka, prazni redovi. 
Definiranje vlastitih funkcija. Ključna riječ def, imenovanje funkcije, parametri, naredba return. Dokumentacijski string.
Funkcija sa i bez parametara, funkcija koja vraća vrijednost, funkcija koja ne vraća vrijednost. Funkcija main().
 - Funkcije – ponavljanje kroz složenije zadatke.
 - Pokretanje programa naredbom Run=>Run Module (F5) i uvoženje programa naredbom import ili from import. Modul math. Modul sys i dodavanje u syspath puta do određene mape. 
 - Znakovni nizovi (string). Operatori +, *, in, not in. Ugrađena funkcija len(). Dohvat pojedinačnih znakova u uzlaznom i silaznom redoslijedu. Postupak isijecanja grupe znakova iz početnog znakovnog niza. Ugrađene metode (upper, lower, find, replace).
 - Zadavanje liste nabrajanjem elemenata. For petlja i funkcije range(). Pojedinačni ispis svih članova liste uz pomoć for petlje. Ispis isječka liste. Stvaranje liste pomoću funkcije list.
 - Mijenjanje vrijednosti pojedinih elemenata liste. Pridruživanje listi još jednog imena. Kopiranje liste. Operatori +, *,  in i  not in. Ugrađene funkcije za liste (len, min, max, sum). Ugrađene metode za liste (pop, sort, reverse).
 - Oblikovanje klasa u jeziku Python.  Imenovanje klase, atributi klase, definicija metoda. Kreiranje objekta klase. Pristup atributima i metodama.
 - Ponavljanje znakovnih nizova i listi.
Primjer nadziranog učenja: Klasificiranje vrsta irisa.
 
  | 
| kolokvij - teorija (KP) | - Cjeline U1-U8. Kolokvij se polaže pismeno. Prolaz na kolokviju: 50% minimalno, uvjetni prolaz je 40% (u ukupnom zbroju mora biti 50% oba kolokvija). U slučaju jednog nepoloženog kolokvija moguće su dvije nadoknade (ispravci) kolokvija na redovnim ispitnim rokovima (zimski rokovi za studente zimskog semestra, ljetni rokovi za studente ljetnog semestra).
 - Cjeline U9-U14. Kolokvij se polaže pismeno. Prolaz na kolokviju: 50% minimalno, uvjetni prolaz je 40% (u ukupnom zbroju mora biti 50% oba kolokvija). U slučaju jednog nepoloženog kolokvija moguće su dvije nadoknade (ispravci) kolokvija na redovnim ispitnim rokovima (zimski rokovi za studente zimskog semestra, ljetni rokovi za studente ljetnog semestra).
 - Nije definirano
 
  | 
| ispit - teorija (IU) | - Ukupna ocjena oba kolokvija minimalno 50%. Konačnu ocjenu sačinjava kolokvij teorije (ili rezultat ispita) 80%, izlazni testovi laboratorijskih vježbi 13% te izlazni testovi predavanja 7%. U slučaju nepoloženog jednog kolokvija, student ima mogućnost popravka (ponavljanja) kolokvija dva puta. Ako u ta dva dodatna pokušaja ne uspije položiti kolokvij, ispada iz bolonjskog sustava kolokvija te polaže klasičan ispit cijelog gradiva.
Studenti koji nisu u sustavu kolokvija polažu kompletno gradivo kolegija odjednom.
Raspon ocjena: 0-50% nedovoljan 50-62,5% dovoljan 62,5-75% dobar 75-87,5% vrlodobar 87,5-100% izvrstan (odličan). 
 
  | 
| samostalno učenje (SU) | - testovi i kolokviji, konzultacije, samostalni rad u laboratoriju i samostalno učenje
 
  |