Informatički praktikum 3 / Programiranje
Obaveštenja
Vanredni praktikumi (Word, HTML, VBA, SQL) u martu 2020.
godine
U petak 27. III 2020. godine u učionici 4a u 13.15 održaće se
vanredni praktikumi iz predmeta:
- Informatički praktikum 1 (Word),
- Digitalni tekst 2 (HTML),
- Informatički praktikum 3 (VBA) i
- Baze podataka [i bibliotečki informacioni sistemi] (SQL).
Praktikume mogu da polažu samo studenti koji su odslušali
kompletnu nastavu iz odgovarajućeg predmeta i ispunili svoje
predispitne obaveze (na primer, urađen seminarski
rad iz Digitalnog teksta 2). Studenti koji u letnjem semestru školske
2019/2020. godine prvi put prate Digitalni tekst 2 ne mogu da polažu praktikum
iz tog predmeta u ovom terminu (HTML).
vežbe
Za studente koji obnavljaju predmet u zimskom semestru školske 2016/17.
godine, bilo da im je on obavezan ili izborni,
treba da se jave u prve tri nedelje nastave bilo profesoru bilo asistentu, u
vreme konsultacija i da se popunom obrasca izjasne
koje predispitne obaveze od prethodne godine zadržavaju (pohađanje
nastave, testovi, seminarski). Posle isteka ove
tri nedelje, svi studenti koji se nisu javili profesorima, sve predispitne
poene stiču kao da slušaju predmet prvi put.
- Microsoft Office i programiranje (VBA)
- Makroi i VBE - osnovni pojmovi (projekti, moduli, potprogrami).
Kreiranje makroa
- Makroi i sigurnost
- Primer 1: konverzija novčanog izraza iz dinara u evre prema zadatom kursu (celi brojevi)
- Primer 2: konverzija novčanog izraza iz dinara u evre prema zadatom kursu (realni brojevi)
- Vrste potprograma (procedure i funkcije). Korisnički definisane procedure i funkcije (Sub, Function, As, argumenti, vrednost funkcije)
- Struktura (pot)programa (deklaracije podataka, ulaz, obrada i izlaz)
- Tipovi podataka i deklaracija promenljivih (Dim, As, Integer, Double, String).
Osnovne operacije sa celobrojnim (+, -, *, \, Mod), realnim (+, -, *, /) i tekstuelnim (&) tipovima podataka. Razlika između celobrojnog i realnog deljenja.
- Naredbe (naredba dodele Let)
- Ugrađene funkcije (InputBox, MsgBox, Format). Dokumentacija (Help)
- Razlike u korišćenju procedura i funkcija
(pisanje zagrada oko argumenata)
- Uputstvo za I domaći zadatak:
Na osnovu Primera 1 i 2 napisati procedure kursDomaci i kursDomaciR koje
vrše konverziju zadatog novčanog izraza u evrima u odgovarajući
iznos u dinarima prema zadatom kursu (u prvoj proceduri svi podaci su celobrojnog tipa (Integer),
a u drugoj realnog (Double).
- Samostalan rad: rešenje I domaćeg zadatka
- Razgranata struktura
- Uputstvo za II domaći zadatak:
- Na osnovu Primera 3 napisati proceduru testMaksimum2
koja od korisnika traži da unese 3 proizvoljna broja sa tastature, posle
čega procedura ispisuje najveći među njima.
- Na osnovu Primera 4 napisati proceduru operacijeRealne
koja ilustruje rad sa dozvoljenim realnim operacijama.
- Na osnovu Primera 5, koristeći funkciju BrDanaUMesecu,
napisati proceduru sledeciDatum koja
traži od korisnika da unese dan, mesec i godinu (kao brojeve), a onda na osnovu toga
ispisuje poruku koji je sledeći datum po redu. Ideja:
Na osnovu unetog meseca i funkcije BrDanaUMesecu može se odrediti koliko taj mesec ima dana.
Ako uneti dan nije poslednji dan u mesecu, sledeći dan je za 1 veći od unetog, a mesec i godina
su isti (npr. 19.02.2010. => 20.02.2010.).
Ako je uneti dan poslednji dan u mesecu, sledeći dan ima redni broj 1. Tada razlikujemo dva slučaja:
a)Ako uneti mesec nije poslednji mesec u godini (12), mesec novog datuma je za 1 veći od unetog, a godina
je ista (npr. 31.03.2010. => 1.04.2010.)
b)Ako je uneti mesec poslednji mesec u godini (12), sledeći mesec je prvi u narednoj godini, te su
sledeći dan i mesec jednaki 1, a nova godina je za 1 veća od unete godine (npr. 31.12.2010. => 1.1.2011.)
- Samostalan rad: rešenje II domaćeg zadatka (sledeciDatum)
- napisati proceduru koja traži od korisnika da unese dan, mesec i godinu (kao brojeve),
a onda na osnovu toga ispisuje datum u formatu
mesec/dan/godina (npr. "Uneti datum je 10/28/2010")
- Modifikovati prethodnu proceduru dodavanjem If naredbe koja na osnovu unetog datuma
određuje sledeći datum i ispisuje ga.
- Ciklusi (petlje)
- For…Next petlja (brojačka petlja)
- Primer 6: napisati celobrojnu funkciju stepen(x,n) koja za date cele brojeve x i n računa xn,
a potom proceduru testStepen koja za unosi sa tastature x i n i ispisuje vrednost stepena xn
- Otkrivanje i uklanjanje grešaka (eng. Debugging)
- Uputstvo za III domaći zadatak:
- izmeniti proceduru za ispisivanje sledećeg datuma, tako da se mesec i dan uvek ispisuju
kao dvocifreni brojevi (tj. umesto 1/7/2010 ispisuje se 01/07/2010)
- Na osnovu Primera 6, napisati funkciju zbirPrvihN koja
ima jedan celobrojni argument n (kao ulaz) i celobrojnu vrednost (kao izlaz) koja predstavlja
zbir prvih n prirodnih brojeva. Napisati proceduru
testZbirPrvihN koja od korisnika traži da unese prirodan broj m, a zatim, koristeći
funkciju zbirPrvihN, računa i ispisuje zbir prvih m prirodnih brojeva.
- Samostalan rad: rešenje III domaćeg zadatka (testZbirPrvihN)
- Konstante u VBA:
- Ugrađene: vbTab, vbNewLine
- Korisnički definisane (Const)
- Primer 7: konverzija kursa (korisnik bira
smer konverzije: dinari u evre ili evri u dinare)
- Niz kao tip podataka
- Primer 8: Napisati proceduru koja ilustruje
rad sa nizovima:
- deklaracija i zadavanje dimenzije niza (Dim, Redim)
- zadavanje donje granice indeksa (Option Base)
- unos elemenata niza sa tastature (jedan po jedan)
- ispis svih elemenata niza odjednom (razdvojenih razmakom)
- povećanje svih elemenata niza za 1
- ispis svih elemenata niza odjednom (razdvojenih razmakom) u obrnutom redosledu od onog u kom su uneti
- Prenos argumenata po referenci (ByRef) i po vrednosti (ByVal)
- Uputstvo za IV domaći zadatak:
- Napisati proceduru testTablica
koja od korisnika traži da unese pozitivan ceo broj n sa tastature
(5 < n < 10), posle
čega procedura proverava da li je unet prirodan broj iz traženog opsega.
Ako nije, program se završava.
Ako korisnik unese prirodan broj iz opsega (5,10), procedura ispisuje tablicu
četvrtih stepena prvih n prirodnih brojeva (u jednom redu
se ispisuje jedan prirodan broj i njegov četvrti stepen). Iskoristiti funkciju stepen
iz Primera 6 i For-petlju.
Npr, za n = 6, tablica treba da izgleda ovako:
1 | 1 |
2 | 16 |
3 | 81 |
4 | 256 |
5 | 625 |
6 | 1296 |
- Koristeći ideju sličnu onoj u Primeru 3
(funkcija maks3), napisati funkcije najmanjiUNizu(niz, brojElemenataNiza)
i najveciUNizu(niz, brojElemenataNiza) čije su vrednosti najmanji, odnosno
najveći element celobrojnog niza. Testirati ove funkcije u proceduri testNiz
iz Primera 8, tako da ova procedura, pored onog što
već radi, ispisuje i najmanji i najveći element niza.
- Samostalan rad: rešenje IV domaćeg zadatka (najmanjiUNizu i najveciUNizu)
- While…Wend petlja
- Primer 9: odrediti prosečnu (srednju)
vrednost unetih brojeva sa tastature (unos se završava nulom i nula ne ulazi u prosek)
- Do…Loop While i
Do…Until petlja
- Primer 10: odrediti prosečnu (srednju)
vrednost unetih brojeva sa tastature (unos se završava nulom i nula ne ulazi u prosek)
- Konverzija tipova
- Kontrola ulaza
- Primer 11: Napisati program koji od korisnika
zahteva da unese ceo broj i proverava da li je korisnik zaista uneo ceo broj, posle
čega ispisuje odgovarajuću poruku.
- Uputstvo za V domaći zadatak:
- Napisati proceduru testDupliranje: korisnik unosi sa tastature cele brojeve,
dok ne unese nulu. Svaki uneti broj ispisati u posebnom redu zajedno sa njegovom dvostrukom
vrednošću (nula i njen dvostruki broj se ne ispisuju). Sve brojeve ispisati odjednom.
- Napisati proceduru testOcene koja od korisnika
očekuje da unosi jednu po jednu ocenu iz opsega [1,5], a potom u jednoj poruci ispisuje
ukupni broj istovetnih ocena (jedinica,dvojki, …). Unos se završava kada korisnik unese nulu.
- Napisati proceduru testTablica2
koja od korisnika traži da unese pozitivan ceo broj n sa tastature
(5 < n < 10), posle
čega procedura proverava da li je unet prirodan broj iz traženog opsega.
Ako nije, od korisnika se traži da unese broj ponovo i to se ponavlja sve dok korisnik
ne unese ono što se očekuje ili dok ne odustane (korisnik odustaje kada
pritisne OK ili Cancel a da nije ništa uneo).
Ako korisnik unese prirodan broj iz opsega (5,10), procedura ispisuje tablicu
četvrtih stepena prvih n prirodnih brojeva (u jednom redu
se ispisuje jedan prirodan broj i njegov četvrti stepen). Iskoristiti funkciju stepen
iz Primera 6 i For-petlju.
Npr, za n = 6, tablica treba da izgleda ovako:
1 | 1 |
2 | 16 |
3 | 81 |
4 | 256 |
5 | 625 |
6 | 1296 |
- Samostalan rad: rešenje V domaćeg zadatka (testTablica2)
- Niske
- Funkcije za rad sa niskama
- Primer 12: Korisnik se prijavljuje za e-mail
adresu. Domeni koji su mu na raspolaganju su: yahoo.com, hotmail.com,
gmail.com. Korisnik treba da unese željenu adresu, posle čega
procedura proverava da li je nadimak dužine između 4 i 8 karaktera,
da li je sastavljen isključivo od malih slova i da li je domen jedan od onih
dozvoljenih.
- Sortiranje niza
- Primer 12a: glavna procedura koja od korisnika zahteva da
unese broj elemenata niza i da odluči da li će sam korisnik da unosi jedan po jedan element
niza ili će dopustiti računaru da sam generiše elemente niza kao pseudoslučajne brojeve.
Potom procedura ispisuje niz, a onda od korisnika traži da izabere algoritam po kom će niz
biti sortiran. Na kraju se ispisuje sortiran niz.
- Primer 12b: "selection sort" ili sortiranje izborom ili metoda uzastopnih minimuma
- Primer 12c: "insertion sort" ili sortiranje umetanjem
- Primer 12d: "bubble sort" (najveći elementi kao mehurići 'isplivaju' na kraju niza)
- Pretraga niza
- Linearna (sekvencijalna) pretraga, videti Primer 12
- Primer 12e: binarna pretraga (primenjuje se samo na sortiran niz!).
- Uputstvo za VI domaći zadatak:
- Napisati proceduru palindrom koja od korisnika traži da unese nisku, a onda
ispisuje da li je ta niska palindrom ili ne. Palindrom je niska koja se isto čita i
sleva i zdesna (npr. ABBA, potop, anavolimilovana). Koristiti funkciju StrReverse
- Zamislite da VBA nema funkciju StrReverse. Napisati funkciju obrniNisku
koja se ponaša kao funkcija StrReverse, ali koja od funkcija za rad sa niskama koristi
samo funkciju Mid i operator dopisivanja &
- Napisati proceduru koja rešava problem iz Primera 12,
ali koja umesto funkcije InStr koristi funkciju Split.
- Programske paradigme
- Objektni model (Word). Osnovni objekti u Word-u, njihova svojstva i metodi:
- Primer 14: Generisanje pozivnica za zabavu na osnovu imena zvanica
- Primer 14a: Rad sa klasama Paragraphs, Words, Paragraph i Range
(brisanje aktivnog dokumenta, generisanje teksta i pasusa)
- Primer 15a: Klasni modul (definicija klase) Vreme
- Primer 15b: Klasni modul (definicija klase) Titl
- Primer 15c: Testiranje rada sa objektima klasa Vreme i
Titl: ilustracija tačka-notacije
- Primer 15d: Testiranje rada sa objektima klasa Paragraphs,
Words, Paragraph i Range na Word-dokumentu čiji je sadržaj deo
titla
- Primer 15e: Izmena Word-dokumenta čiji je sadržaj deo
titla primenom klasa Titl, Vreme, Paragraphs,
Words, Paragraph i Range.
- Forme/formular (UserForm).
Modalni i nemodalni dijalozi (vbModal i vbModeless)
- Kontrole.
- Komandna dugmad (CommandButton).
Obrada događaja (event handling).
Događaj CommandButton_Click. Događaj UserForm_Initialize.
- Tekstuelna polja (TextBox)
- Oznake (Label)
- Padajući meni (ComboBox). Događaj ComboBox_Change
- Formular koji na osnovu zadatog rednog broja pasusa aktivnog dokumenta
ispisuje broj karaktera, reci i recenica tog pasusa
- Primer 21 (frmPrimer21 i poziv forme):
koristi kontrole Label, TextBox, CommandButton i događaj CommandButton_Click
(korisnik unosi redni broj pasusa i aktiviranjem dugmeta dobija informacije o pasusu)
- Primer 22(frmPrimer22 i poziv forme):
koristi kontrole Label, ComboBox, CommandButton i događaj CommandButton_Click
(korisnik iz menija bira redni broj pasusa i aktiviranjem dugmeta dobija informacije o pasusu)
- Primer 23 (frmPrimer23 i poziv forme):
koristi kontrole Label, ComboBox i događaj ComboBox_Change
(korisnik iz menija bira redni broj pasusa i to automatski prikazuje informacije o pasusu)
- Primer ispitnog zadatka:
- Uputstvo za VIII domaći zadatak:
- Pogledati samostalno zadatke vezane za ComboBox
- Forme (formulari)
- Radio dugmad (OptionButton)
- Okvir (Frame)
- Primer 24: konverzija valute (dinar/evro)
- Polja za potvrdu (CheckBox)
- Primer 25: Etiketiranje aktivnog dokumenta strukturnim xml etiketama:
- Uputstvo za IX domaći zadatak:
- Dopuniti procedure dodajPEtikete i dodajSegEtikete tako da
korisnik može da etiketira i pasuse i rečenice.