Cilj učenja Programiranja je razvoj algoritamskog pristupa rešavanju problema kod učenika, ovladavanje tehnikama programiranja i sticanja znanja o savremenim programskim jezicima.
Razred | Prvi |
Nedeljni fond časova | 3 + 2 časa |
Godišnji fond časova | 111 + 74 časa |
ISHODI
Po završetku razreda učenik će biti u stanju da: |
TEMA i
ključni pojmovi sadržaja programa |
– opiše algoritmom situacije iz realnog života (govornim jezikom, pseudokodom, dijagramom);
– prepozna i u opisu algoritma upotrebi osnovne elemente kontrole toka algoritma (sekvencijalno izvršavanje naredbi, grananje, ponavljanje); |
POJAM I PRIMERI ALGORITMA
Pojam i primeri algoritama. Načini opisa algoritama. Specijalizovana okruženja za učenje programiranja (npr. blokovsko programiranje). |
– precizno opiše algoritam u nekom specijalizovanom okruženju za učenje programiranja;
– u datom programu prepozna osnovne elemente jezika (promenljive, izraze, naredbe); – predvidi rezultat izvršavanja datog programa; – dopunjavanjem teksta programa dovrši započeti jednostavan program; – pokrene razvojno okruženje, kreira projekat, pokrene izgradnju i kompilaciju; – pokrene program, sačuva ga, prebaci na drugi računar; – koristi debager u cilju izvršavanja programa korak po korak i pronalaženja i otklanjanja grešaka; – napiše program koji na osnovu učitanih podataka i datih formula izračunava tražene rezultate; – izvede relevantne matematičke formule i primeni ih u programu; – razlikuje celobrojnu i realnu aritmetiku i primeni odgovarajuće operatore u programima; – naredbom grananja i uslovnim izrazom ispita jednostavan uslov koji se dobija primenom relacijskih operatora; – naredbom grananja i uslovnim izrazom ispita složen uslov koji se dobija primenom logičkih operatora; – ugnežđenim naredbama grananja ispita složene logičke uslove; – razume i primeni promenu vrednosti promenljive tokom izvršavanja programa; – implementira jednostavne iterativne algoritme nad malim serijama elemenata, ponavljanjem naredbi; – korišćenjem petlje učita/ispiše/generiše seriju podataka; – odredi osnovne statistike serije podataka (zbir elemenata, minimum, maksimum i slično); – izdvoji elemente serije podataka koji zadovoljavaju neko dato svojstvo; – primenom date funkcije preslika svaki element serije podataka; – proveri da li serija sadrži element sa nekim datim svojstvom; – proveri da li svi elementi serije imaju neko svojstvo i da li postoji element koji ima neko dato svojstvo; – primenom ugnežđenih petlji nabroji elemente višedimenzionalnih serija podataka; – navede raspon vrednosti i operacije podržanih brojevnih i karakterskih tipova podataka; – u programu upotrebi brojevni tip podataka koji je najpogodniji za rešavanje datog problema; – u programu obrađuje tekstualne podatke (niske) primenom bibliotečkih operatora i funkcija; – upotrebi jednodimenzioni niz za smeštanje serija podataka; – prepozna da li je za rešavanje zadatka potrebno smestiti sve podatke istovremeno u niz; – upotrebi bibliotečke kolekcije koje dopuštaju dinamičku alokaciju za smeštanje nizova čija se veličina menja tokom izvršavanja programa; – upotrebni niz ili asocijativni niz za smeštanje vrednosti kojima se pristupa na osnovu ključa; – primeni algoritme za obradu serija podataka na elemente smeštene u niz, smeštajući rezultat u novi niz ili menjajući sadržaj polaznog niza; – izvrši analizu i obradu elemenata niza primenom odabranih bibliotečkih funkcija; – definiše funkcije koje primaju i vraćaju nizove – upotrebi višedimenzionalni niz (najčešće matricu) za skladištenje podataka; – analizira elemente matrice (njene vrste, kolone, dijagonale, rubne trouglove, pravougaone oblasti, rešetke…); – promeni elemente višedimenzionalnog niza tj. Matrice; – definiše funkcije koje primaju i vraćaju višedimenzionalne nizove tj. matrice; – definiše tip podataka pogodan za rešavanje datog zadatka i upotrebljava ga u rešenju; – po potrebi upotrebi kolekcije (nizove, matrice) podataka korisnički definisanog tipa; – učitava podatke iz tekstualne datoteke; – upisuje podatke u tekstualnu datoteku; – učitava podatke zadate u obliku argumenata komandne linije programa; – sarađuje sa ostalim članovima grupe u svim fazama projektnog zadatka; – kreira, uređuje i strukturira sadržaje tokom rada na projektu; – kreira računarske programe koji doprinose rešavanju projektnog zadatka; – vrednuje svoju ulogu u grupi pri izradi projektnog zadatka i aktivnosti za koje je bio zadužen. |
OSNOVNI KONCEPTI PROGRAMSKIH JEZIKA I OKRUŽENjA ZA RAZVOJ PROGRAMA
– Osnovni elementi sintakse i semantike programskih jezika (izrazi, tipovi, naredbe, potprogrami). – Interfejs programa (KLI, GKI). – Integrisana okruženja za razvoj programa. – Izgradnja programa. – Debagovanje. |
OSNOVNI ALGORITMI LINIJSKE I RAZGRANATE STRUKTURE
– Implementacija aritmetičkih formula. – Celobrojna aritmetika. – Grananje, relacijski i logički izrazi. – Složeno (ugnežđeno) grananje. |
|
OSNOVNI ALGORITMI CIKLIČKE STRUKTURE
– Linearna obrada serija podataka: učitavanje, ispis, statistike (broj elemenata, zbir, proizvod, minimum, maksimum), filtriranje, preslikavanje, pretraga… – Ugnežđene petlje. |
|
DETALjNI PREGLED OSNOVNIH TIPOVA PODATAKA
– Brojevni tipovi (skup vrednosti, konstante, operatori, bibliotečke funkcije). – Konverzije tipova (implicitna, eksplicitna). – Karakterski tip (konstante, operatori, bibliotečke funkcije). – Niske (konstante, operatori, bibliotečke funkcije). |
|
NIZOVI, NISKE I OSNOVNI ALGORITMI ZA RAD SA NjIMA
– Jednodimenzioni nizovi (alokacija memorije, indeksni pristup elementima, prenos između potprograma). – Niske (nizovi karaktera). – Popunjavanje i analiza sadržaja nizova (statistike). – Transformacije nizova (umetanje i izbacivanje elemenata, filtriranje, preslikavanje, sortiranje). – Pristup elementima na osnovu ključa (asocijativni nizovi). – Nizovi kao reprezentacija matematičkih objekata (polinoma, velikih brojeva, vektora…). |
|
VIŠEDIMENZIONALNI NIZOVI, MATRICE I ALGORITMI ZA RAD SA NjIMA
– Višedimenzionalni nizovi i matrice (alokacija, indeksni pristup elementima). – Prenos višedimenizonalnih nizova između potprograma. – Analiza sadržaja višedimenzionalnih nizova. – Transformacija višedimenzionalnih nizova. – Odnos višedimenzionih nizova i funkcija. |
|
KORISNIČKI DEFINISANI TIPOVI
– Nabrojivi tipovi, intervalni, skupovni tipovi. – Strukturni tipovi, unijski tipovi. – Nizovi i matrice struktura. |
|
ULAZ I IZLAZ PROGRAMA
– Pristup datotekama iz programa. – Argumenti komandne linije. |
|
PROJEKTNI ZADATAK
– Faze projektnog zadatka od izrade plana do predstavljanja rešenja. – Izrada projektnog zadatka u korelaciji sa drugim predmetima. – Vrednovanje rezultata projektnog zadatka. |
Razred | Drugi |
Nedeljni fond časova | 2+3 časa |
Godišnji fond časova | 185 (74 časa teorije + 111 časova vežbi) |
ISHODI
Po završetku razreda učenik će biti u stanju da: |
TEMA i
ključni pojmovi sadržaja programa |
– konstruiše relevantne test-primere koji pokrivaju različite slučajeve i testiranjem ispituje ispravnost programa;
– postupkom debagovanja locira i ispravlja greške koje se ispoljavaju nad ulaznim podacima za koje program ne daje ispravan rezultat; – u svom redovnom radu upotrebljava sisteme za automatsko testiranje (na primer, onlajn sisteme za učenje programiranja); – prepozna specifikaciju (preduslove, postuslove) na osnovu postavke zadatka; – meri vreme izvršavanja programa za različite vrednosti ulaznih parametara; – razlikuje osnovne klase složenosti, poput logaritamske, linearne i kvadratne – ume da jednostavnim iterativnim programima odredi vremensku i memorijsku složenost; – grubo procenjuje vreme i memoriju koji su programu potrebni da bi obradio ulaz date dimenzije; – grubo procenjuje dimenziju ulaza koju program može da obradi u zadatom vremenskom i memorijskom ograničenju; – opiše ulaz za koji je programu potrebno najviše vremena, odnosno memorije da ga obradi; – primeni sortiranje niza kao oblik pretprocesiranja koji omogućava efikasniju obradu; – primeni razne tehnike izbegavanja nepotrebnih izračunavanja u cilju efikasnijeg rešavanja problema; – primeni razne oblike algoritma binarne pretrage u cilju efikasnijeg rešavanja problema; – koristi bibliotečke implementacije struktura podataka u cilju jednostavne i efikasne implementacije programa; – odabira strukture podataka pogodne za efikasnije i/ili jednostavnije rešavanje datog problema; – u integrisanom okruženju pregleda stek poziva i sadržaj pojedinačnih okvira steka; – objasni mehanizam izračunavanja rekurzivnih funkcija primenom rekurentnih veza, prikazom drveta rekurzivnih poziva, i prikazom sadržaja programskog steka; – rekurzivno izrazi osnovne iterativne agloritme; – definiše rekurzivne funkcije koje vrše jednostavna izračunavanja nad prirodnim brojevima; |
ANALIZA KOREKTNOSTI ALGORITAMA
Značaj osiguranja korektnosti softvera Automatsko testiranje programa Osnovni pojmovi formalne analize korektnosti (specifikacija, preduslov, postuslov, invarijanta petlje) |
ANALIZA SLOŽENOSTI ALGORITAMA
Vremenska i memorijska složenost algoritma (analiza najgoreg slučaja) Asimptotska analiza i O-notacija kao pojmovi Procena potrebnih resursa (vremena, memorije) za izvršavanje programa |
|
ELEMENTARNE TEHNIKE KONSTRUKCIJE EFIKASNIH ALGORITAMA
Sortiranje i primene sortiranja Binarno pretraživanje i njegove primene Zamena iterativnih izračunavanja matematičkim formulama Princip inkrementalnosti Odsecanje Tehnika dva pokazivača Prefiksne sume |
|
UPOTREBA STRUKTURA PODATAKA
Upotreba tipa samo na osnovu poznavanja interfejsa Proširivi niz Stek Red, red sa dva kraja Asocijativni niz/mapa/rečnik Skup Red sa prioritetom (uz pretpostavku da postoji gotova implementacija) |
|
OSNOVE REKURZIJE
Rekurzija Primeri jednostavnih rekurzivnih funkcija Realizacija rekurzije |
|
OPŠTE TEHNIKE KONSTRUKCIJE ALGORITAMA
Gruba sila, iscrpno nabrajanje i iscrpna pretraga Pretraga sa povratkom (bektreking) Dinamičko programiranje Tehnika podeli-pa-vladaj (tačnije, ovde: smanji pa vladaj) |
|
PROJEKTNI ZADATAK
Faze projektnog zadatka od izrade plana do predstavljanja rešenja. Izrada projektnog zadatka u korelaciji sa drugim predmetima. Vrednovanje rezultata projektnog zadatka. |
|
– definiše rekurzivne funkcije koje vrše jednostavne obrade nizova;
– proceni veličinu steka potrebnu za izvršavanje date rekurzivne funkcije i veličinu ulaza koja ne dovodi do prekoračenja steka; – definiše rekurzivne funkcije koje vrše sistematično nabrajanje odabranih klasa kombinatornih objekata i primeni ih za rešavanje problema; – definiše rekurzivne funkcije koje obilaze matrice u dubinu; – primeni nerekurzivan obilazak prostora pretrage u dubinu i u širinu i primeni pretragu u širinu radi nalaženja najkraćeg puta do ciljnog stanja; – primeni tehniku pretrage sa povratkom (bektrekinga); – proceni vremensku složenost rekurzivnih funkcija; – primenjuje tehniku podeli-pa-vladaj na rekurzivno rešavanje problema i procenjuju složenost tako dobijenih rešenja – prepoznaje problem preklapanja rekurzivnih poziva i rešava jednostavne primere tehnikom dinamičkog programiranja – opisuje prednosti i mane rekurzivnih funkcija – sarađuje sa ostalim članovima grupe u svim fazama projektnog zadatka; – kreira, uređuje i strukturira sadržaje tokom rada na projektu; – kreira računarske programe koji doprinose rešavanju projektnog zadatka; – vrednuje svoju ulogu u grupi pri izradi projektnog zadatka i aktivnosti za koje je bio/la zadužen/a. |
III razred
(3 časa nedeljno, 111 časova godišnje)
- Grafovi i algoritmi za rad sa grafovima
– Pojam i reprezentacija grafova.
– Obilazak grafa (u dubinu i u širinu).
– Topološko sortiranje.
– Najkraći putevi u grafu (Dajkstrin i Flojd-Varšalov algoritam).
– Minimalno razapinjuće drvo.
- Algoritmi teksta
– Pronalaženje podniske (grubom silom, Knut-Moris-Pratovim ili Bojer-Murovim algoritmom).
– Regularni izrazi i primena.
– Kontekstno-slobodne gramatike i primena. Rekurzivni spust.
- Geometrijski algoritmi
– Površina konveksnog i prostog mnogougla.
– Provera pripadnosti tačke konveksnom mnogouglu.
– Konveksni omotač skupa tačaka.
- Algoritmi teorije brojeva
– Proširen Euklidov algoritam i primene.
– Testovi primalnosti.
– Rastavljanje broja na proste činioce i primene.
- Algoritmi nad bitovima
- Pregled odabranih struktura podataka i algoritama