Struktura informacija 1
Raniji naziv predmeta: Programiranje
Obaveštenja
[9. X 2022, 20:27] Od školske 2022/2023. godine se pretpostavlja da svi studenti koji ponovo slušaju neki od informatičkih predmeta zadržavaju ranije ostvarene predispitne obaveze (PO) i ne treba da se javljaju predmetnom nastavniku da bi to potvrdili. Samo studenti koji ne žele da zadrže neke ili sve PO, već im je namera da ponove određeni test ili seminarski rad, moraju da se jave na adresu misko at fil_bg_ac_rs do 17. X 2022. godine i precizno naznače šta od PO ponavljaju.
Stara obaveštenja
Osnovne informacije
Nastavni plan i program
- Nastavni program u školskoj 2022/2023. godini
- Nastavni program u školskoj 2021/2022. godini i ranije
Literatura:
- Krstev, Cvetana. Materijali za predmet Struktura informacija 1
- Miloš A. Kovačević. Osnove programiranja u Pajtonu. Akademska misao. Beograd, 2017.
Na sajtu autora na Građevinskom fakultetu Univerziteta u Beogradu dostupno je 2. nedovršeno PDF izdanje sa NumPy-em, a papirno izdanje knjige može se pozajmiti u UBSM-u.
U obzir dolaze odlomci iz prvih 10 poglavlja knjige, posebno poglavlja 1–5 i poglavlje 7. - Miodrag Živković i Vesna Marinković. Algoritmi i strukture podataka : materijal sa predavanja. Matematički fakultet. Beograd (prve tri glave: Uvod, Strukture podataka, Sortiranje, str. 5–79).
- Eric Freeman. Um caruje: Naučite Programiranje. Mikro knjiga, 2018. Može se pozajmiti u UBSM-u.
- Korisni sajtovi:
- Python Package Index (indeks paketa i modula za Python)
- Python Module Index (dokumentacija modula za Python). Posebno:
- Built-in Types (ugrađeni tipovi: int, float, str, list, tuple, range, set, dict)
- Built-in Functions (ugrađene funkcije: abs(), divmod(), filter(), format(), input(), len(), map(), max(), min(), open(), print(), range(), round(), sorted(), sum(), zip())
- re (regularni izrazi)
- locale (lokalizacija)
- math (matematika)
- os (operativni sistem) i os.path (adresiranje)
- random (pseudoslučajni brojevi)
- statistics (statistika)
- sys (sistem)
- https://pythontutor.com/, vizuelizacija izvršavanja programa.
Predispitne obaveze
- Raspored testova i rezultati testova
- Test 1 (20 poena)
- Termin: subota 19. XI 2022. godine, Sala 11 u 11.30.
- Gradivo za studente koji predmet slušaju u školskoj 2022/2023. godini i kasnije:
- Gradivo za studente koji su predmet slušali u školskoj 2021/2022. godini i ranije:
- Kodiranje brojeva za potrebe računanja: prirodni binarni kod dekadnih cifara (8421), 2421, višak 3. Osobine ovih kodova. Kodiranje celih brojeva: celi brojevi u binarnom sistemu.
- Nepotpuni komplement, potpuni komplement – računanje.
- Predstavljanje realnih brojeva u pokretnom i u nepokretnom zarezu. IEEE binary32 format.
- BCD. Računanje sa brojevima u BCD zapisu (8421 kod i kod višak 3).
- Test 2 (20 poena)
- Termin: subota 17. XII 2022. godine, Sala 11 u 13.00.
- Gradivo:
- Analiza rada programa na jeziku Python koji koristi:
- osnovne ugrađene tipove int, float i str. Posebno obratiti pažnju na metode klase str i formatirane (f-)niske;
- ugrađene funkcije za ulaz i izlaz (input() i print()); posebno obratiti pažnju na konverziju tipova (niska u broj i obrnuto pomoću funkcija
int()
,float()
,str()
), kao i na podešavanje režima ispisivanja (parametrisep
iend
); - kontrolne strukture (naredbe
if
,for
,while
ibreak
); - liste i opsege, tj. objekte tipa list, range; posebno obratiti pažnju na kreiranje i dopunjavanje liste (
list.append()
irange()
), pristup pojedinačnim elementima (indeksiranje), izdvajanje podlista sa istim ili obrnutim redosledom elemenata (seckanje ili slicing) i konverziju niske u listu (str.split()) i obratno (str.join());
- Analiza rada programa na jeziku Python koji koristi:
Ispit
- Pismeni ispit (min. 20 poena, maks. 50 poena)
- Gradivo:
- Rekurzivni algoritmi i njihove iterativne verzije (Euklidov algoritam za određivanje najvećeg zajedničkog delioca dva broja, izračunavanje elemenata Fibonačijevog niza, izračunavanje stepena koristeći samo množenje, izračunavanje faktorijela)
- Algoritmi pretraživanja uređenih kolekcija (nizovi, liste): sekvencijalna i binarna pretraga. Nije potrebno naučiti implementaciju u Python-u, već postupak algoritma; takođe, zapisani postupak treba primeniti na konkretni, zadati primer niza.
- Algoritmi sortiranja uređenih kolekcija (nizovi, liste):
- sortiranje umetanjem (insertion sort),
- mehurasto sortiranje (bubble sort),
- sortiranje izborom najmanjeg ili najvećeg elementa (selection sort),
- sortiranje učešljavanjem (merge sort).
- U zavisnosti od godine slušanja predmeta:
- (stari program, pre školske 2022/2023): Predstavljanje celih brojeva u notaciji nepotpunog i potpunog komplementa; sabiranje celih brojeva u notaciji potpunog komplementa; binarno kodirani ceo broj (BCD); predstavljanje realnog broja u notaciji pokretnog zareza sa normalizovanom mantisom.
- (novi program, školska 2022/2023 i kasnije): Implementacija zadatog algoritma u programskom jeziku Python koristeći osnovne tipove (
int
,bool
,float
,str
,range
,list
), kontrolno-upravljačke strukture (if
,for
,while
) i potprogrami, odnosno funkcije (def
).
- Gradivo: