SKRIPT PROGRAMIRANJE

Ova stranica je posvećena kursu Skript-programiranje na studijskom programu Informatika. Cilj predmeta je sticanje opštih i specifičnih znanja o skript jezicima, komandnoj liniji i programskoj obradi tekstualnih datoteka. U okviru predmeta obrađuju se teorijski značaj skript jezika, kao i praktične primene. Posebno se obrađuju shell skript jezik Bash i programski jezik Python.

Osnovne informacije:

  • Predmet je obavezan.
  • Predmet se sluša na drugoj godini studijskog programa Informatika.
  • Nastava se održava tokom prolećnog semestra.
  • Predmet vredi 3 boda ESPB.
  • Nastava se odvija jednim časom predavanja i jednim dvočasom vežbi nedeljno.

Sadržaj predmeta:

  • Uvod u skript jezike
    • Karakteristike skript jezika
    • Domeni upotrebe skript jezika
    • Jezici opšte namene
    • Osnovne karakteristike najznačajnijih skript jezika
    • Regularni izrazi (praktični aspekti)
  • Skript jezici za rad u komandnoj liniji
    • Osnove jezika i okruženje za rad
    • Komande za baratanje fajlovima i fajl sistemom (cd, touch, rm, chown, chmod, ...)
    • Komande za obradu teksta (echo, grep, sed, cut, tr, ...)
    • Kompozicija komandi i preusmeravanje ulaza i izlaza (pipe, fg, bg, &&, &, >, ...)
    • Promenljive i interpolacija stringova
    • Kontrola toka izvršavanja
    • Pisanje i pokretanje skriptova
  • Programski jezik Python
    • Osnove jezika Python, interpreter
    • Kontrola toka izvršavanja
    • Funkcije, argumenti, pozicioni i imenovani argumenti
    • Liste i funkcije za baratanje listama
    • Rečnici i kolekcije podataka
    • Rad sa ulazom i izlazom
    • Datoteke i sistem datoteka
    • Rad sa uobičajenim tipovima tekstualnih datoteka (json, csv, tsv, xml)

Literatura:

  • „Learning the Bash shell”, C. Newham
  • „The Linux Command Line”, W. Shotts
  • „Learning Python”, M. Lutz

Predmetni nastavnik:

Asistenti:

  • Stefan Milenković
  • Robert Doža

Predispitne obaveze

Na kursu nema obaveznih ni nenadoknadivih predispitnih obaveza. Tokom semestra se zadaju domaći zadaci koji pokrivaju gradivo obrađeno na časovima vežbi i koji nose dodatne poene. Broj poena na domaćim zadacima će biti određen tokom semestra. Ovi poeni su dodatni i student može ostvariti svih 100 poena na završnom ispitu i bez njih. S druge strane, poeni ostvareni na domaćim zadacima se ne računaju u ukupan ostvareni rezultat prilikom određivanja ispunjenosti uslova za polaganje ispita. Računaju se tek kada student ostvari uslov za polaganje ispita i mogu služiti da eventualno povećaju ostvarenu ocenu.

Tekućoj tabeli sa ostvarenim rezultatima na domaćim zadacima, može se pristupiti preko narednog linka: link

Završni ispit

Ispit se sastoji od praktičnog i teorijskog dela. Na praktičnom delu ispita se proverava poznavanje gradiva obrađenog na časovima vežbi i podrazumeva izradu praktičnih zadataka na računaru. Na teorijskom delu ispita se proverava poznavanje gradiva obrađenog na predavanjima. Praktični deo ispita vredi 70 poena. Da bi student položio praktični deo ispita, na istom mora ostvariti barem 35 poena. Teorijski deo ispita vredi 30 poena. Da bi student položio teorijski deo ispita, na istom mora ostvariti barem 15 poena. Da bi student položio ceo ispit, mora položiti praktični i teorijski deo ispita, kao i ukupno ostvariti barem 51 poen.
Napomena: materijali trpe konstantne promene tokom semestra. Za sva pitanja, nedoumice i predloge, javiti se mejlom predmetnom nastavniku. Beleške sa predavanja

Predavanje 1 - Uvod u skript jezike

  • Pojam i uloga skript jezika
  • Razilka između skriptnih i kompajliranih jezika
  • Karakteristike skript jezika
  • Pregled domena primene: sistemska administracija, automatizacija, analiza podataka
  • Primer upotrebe nad učestalim tipovima tekstualnih datoteka: JSON, CSV, TSV, XML

Predavanje 2 - Jezici opšte namene i pregled skript jezika

  • Jezici opšte namene
  • Pregled najznačajnijih skript jezika (Bash, Python, PowerShell, JavaScript)
  • Osnovne karakteristike i uporedna analiza
  • Kriterijumi za izbor skript jezika

Predavanje 3 - Regularni izrazi

  • Osnovni koncepti regularnih izraza
  • Sintaksa i najčešći obrasci
  • Praktični aspekti primene regularnih izraza
  • Primena u komandnoj liniji i Python-u

Predavanje 4 - Skript jezici za rad u komandnoj liniji

  • Komandna linija i okruženje za rad
  • Uloga shell-a
  • Osnovni koncepti rada u terminalu
  • Pregled alata i tipičnih scenarija upotrebe

Predavanje 5 - Obrada podataka u komandnoj liniji

  • Rad sa fajlovima i fajl sistemom
  • Komande za obradu teksta
  • Kompozicija komandi
  • Preusmeravanje ulaza i izlaza

Predavanje 6 - Pisanje i izvršavanje shell skriptova

  • Promenljive i interpolacija stringova
  • Kontrola toka izvršavanja
  • Pisanje, pokretanje i testiranje skriptova
  • Osnove debagovanja

Predavanje 7 - Uvod u Python kao skript jezik

  • Python kao interpretirani jezik
  • Python interpreter i okruženje za rad
  • Osnovna sintaksa
  • Struktura Python programa

Predavanje 8 - Kontrola toka i funkcije u Python-u

  • Uslovne strukture i petlje
  • Funkcije
  • Pozicioni i imenovani argumenti
  • Dobra programska praksa

Predavanje 9 - Strukture podataka u Python-u

  • Liste i funkcije za rad sa listama
  • Rečnici i kolekcije podataka
  • Osnovni algoritmi nad strukturama podataka

Predavanje 10 - Rad sa ulazom, izlazom i datotekama u Python-u

  • Standardni ulaz i izlaz
  • Rad sa datotekama i sistemom datoteka
  • Rad sa uobičajenim tipovima tekstualnih datoteka
    • JSON
    • CSV/TSV
    • XML

Predavanja 11-13 - Primeri iz prakse

  • Primeri u realnim scenarijima
Materijali (kod pisan na času, beleške i dr.) se mogu pronaći na narednom GitHub repozitorijumu: link

Napomena: materijali trpe konstantne promene tokom semestra. Za sva pitanja, nedoumice i predloge, javiti se predmetnim asistentima.

Dvočas 1

  • Uvod u praktični deo kursa
  • Rad u komandnoj liniji
  • Fajl sistem, putanje, fajlovi i direktorijumi
  • Priručnik man, komanda help
  • Rad sa fajl sistemom (komande pwd, ls, cd, touch, rm, mkdir, rmdir, pushd, popd, find)
  • Prava pristupa (komanda chmod)

Dvočas 2

  • Pisanje Beš skriptova
  • Ekspanzije
  • Argumenti komandne linije
  • Kontrola toka - grananje, „for each” petlja

Dvočas 3

  • Kontrola toka (nastavak)
    • grananje (case)
    • petlje (for, while, until)
  • Funkcije
  • Globovanje

Dvočas 4

  • Izlazni status komandi
  • Kombinovanje komandi logičkim operatorima
  • Ulazni i izlazni tokovi komandi
  • Redirekcija u Bešu

Dvočas 5

  • Regularni izrazi
  • Alat grep

[Grupe 2i2v] Nadoknada vežbi

Nadoknada vežbi za grupu 2i2v (petak, kod Stefana Milenkovića) će se održati u petak, 22. maja u terminu 12.15-14.00 u učionici 704. Redovan čas će se održati nakon toga.

15.5.2026.

[Grupe 2i1a, 2i1b, 2i1v] Otkazane vežbe u petak i u subotu

U petak, 15. maja, i u subotu, 16. maja, neće biti održane vežbe predviđene za grupu 2i1v i grupe 2i1a i 2i1b, redom. Termin nadoknade biće naknadno objavljen.

11.5.2026.

Rezultati prvog domaćeg zadatka

Rezultati prvog domaćeg zadatka se mogu pogledati na preko sledećeg linka: link.
Za sve nedoumice, pisati mejlom svom (na Hipatiji dodeljenom) asistentu. Rezultati domaćeg zadatka su izraženi procentualno, dok, tokom semestra, ne bude određeno koliko domaći zadaci vrede dodatnih poena (ukupno, kao i svaki pojedinačno).

6.5.2026.

[Grupa 2i2v] Nadoknada vežbi

Nadoknada izgubljenog časa vežbi za grupu 2i2v (koja se drži petkom kod Stefana Milenkovića) će biti održana u petak, 24. aprila u terminu 12.15-14.00 u učionici 704. Redovan čas će se održati nakon toga.

17.4.2026.

[Grupe 2i1a, 2i1b, 2i1v] Radna subota

Po dogovoru sa časa, u subotu, 18. aprila 2026. će biti održan dvočas vežbi na kome će biti obrađeno gradivo predviđeno za četvrtu nedelju semestra. Dvočas će biti održan u zgradi na Studentskom trgu, u sali 718, od 14č do 16č.

16.4.2026.

Prvi domaći zadatak

Prvi domaći zadatak se može naći na linku.

Domaći se predaje slanjem mejla odgovarajućem predmetnom nastavniku do 26.4.2026. u 23.59. Naslov mejla treba da bude [SP] Domaci 1, a rešenje treba da bude skripta zapakovana u arhivu pod nazivom sp_domaci_1.zip koju treba priložiti u mejlu.

16.4.2026.

Stranica kursa u izradi

Stranica kursa je i dalje u izradi. Informacije koje se tiču načina polaganja ispita biće blagovremeno postavljene.

26.3.2026.

Početak semestra

Svim studentima želimo uspešan početak prolećnog semestra!

25.3.2026.

Matematički fakultet, Univerzitet u Beogradu
školska 2025/26. godina