Professional Documents
Culture Documents
PMA Tjedan1
PMA Tjedan1
1. Predavanje
Uvod u kolegij, Metode i Algoritmi, Apstrakcije,
Ponavljanje Python proceduralnih mogućnosti
Dušan Mišljenčević
Podsjetnici
• Predavanja i auditorne
➢ predavanja 3 sata, prema rasporedu
➢ auditorne 1 sat, prema rasporedu
• Laboratorijske vježbe
➢ 1 x 3 sata tjedno, prema rasporedu
➢ Obavijest na SCAD-u o priznavanju vježbi
• Ukupno 15 termina
• 2 kolokvija
➢ kolokvirajte! Uvjetni prolaz 40%, sumarni prosjek >=50%
➢ na prva dva roka možete ispraviti neki od kolokvija!
• Springer:
• Uvod u kolegij
• Programske metode i algoritmi
• Programske apstrakcije
• Usporedbe programskih jezika
• Python – ponavljanje proceduralnih
mogućnosti
Algoritam je
• slijed (sekvenca) jednostavnih koraka/operacija koje želimo
napraviti
• kontrola toka procesa koji specificira kako je svaki korak izvršen
• uvjet kada se algoritam zaustavlja
• konceptualna ideja tj. program je konkretna primjena algoritma
• 1+2+3 = algoritam
• lista za kupovinu je primjer algoritma
• Kada je algoritam kvalitetan?
➢ Kada je algoritam točan?
➢ Kada je algoritam najbolji mogući?
Primjer algoritma
• C
➢ Number of jobs: 8,000; Average annular salary: $97,000
➢ C u upotrebi od 1972
➢ Odlična podloga za učenje ostalih jezika
➢ Nije prikladan za websites ili mobilne aplikacije
• C#
➢ Number of jobs: 18,000; Average annular salary: $97,000
➢ Originalno razvijen od Microsofta za rad na .NET framework
➢ Baziran na C i C++.
➢ Brz i siguran
• C++
➢ Number of jobs: 9,000; Average annular salary: $97,000
➢ Vrlo moćan, brz, siguran, efikasan, lower-level.
➢ Izvrstan kao baza za učenje ostalih jezika
• Java
➢ Number of jobs: 29,000; Average annular salary: $104,000
➢ Jedan od najpopularnijih
➢ Za različite okoline write once, run anywhere
• Python
➢ Number of jobs: 19,000; Average annular salary: $120,000
➢ Python je jedan od najčešćih beginner-friendly programa
➢ Jednostavan za učenje
➢ Nije prikladan za mobilne aplikacije
• Perl
➢ High-level scripting language razvijen 1987
➢ Originalno namijenjen za text processing and manipulation
➢ Perl često nudi multiple solutions to a single problem
• HTML
➢ HyperText Markup Language je markup language a ne klasični programski jezik
➢ Koristi se za kreiranje sadržaja svih web stranica
• CSS
➢ Cascading Style Sheets jezik za kreiranje izgleda web stranice (paragrafi, zaglavlja, slike)
➢ CSS je samo jezik za stil, nije “pravi” programski jezik
• JavaScript
➢ Number of jobs: 24,000; Average annular salary: $118,000
➢ Programski jezik za web aplikacije, vrlo popularan
➢ Frameworks and Libraries – Angular, jQuery, React
• PHP
➢ Number of jobs: 7,000; Average annular salary: $81,000
➢ Script jezik za web aplikacije na server strani, danas je pomalo zastario
➢ Razvijen od strane Rasmus Lerdorf kao toolset
• Ruby
➢ Višenamjenski „High-Level” jezik, razvijen 1995
➢ Pogodan za brz razvoj web aplikacija
• Objective-C
➢ Primarno jezik za Apple, Mac OS X i iOS, razvijen 1980
➢ Danas ga uvelike zamjenjuje Swift
• Swift
➢ Number of jobs: 1,800; Average annular salary: $93,000
➢ Glavni jezik za razvoj Mac OS X i iOS
• SQL
➢ Structured Query Language – jezik vezan uz relacijske baze podataka (RDBMS)
• Go
➢ Number of jobs: 1,700; Average annular salary: $93,000
➢ Još se naziva i Golang, razvijen od strane Googla za razvoj aplikacija s puno podataka
➢ Nije popularan izvan Silicon Valley
• R
➢ Number of jobs: 1,500; Average annular salary: $93,000
➢ Koristi se za statističke analize i za Machine Learning aplikacije
• Razvojna okruženja
➢ PyCharm
➢ IDLE
➢ Jupyter notebook
• Kako koristimo razvojna okruženja?
➢ Jupyter notebook
➢ .ipynb datoteke su dostupne na SCAD-u
➢ Importirate ih u okruženje u koje želite (Colaboratory,
Anaconda Jupyter notebook, client instalacija)
➢ PyCharm: laboratorijske i auditorne vježbe
➢ IDLE: samo za početne primjere
• Jupyter notebook
➢ .ipynb ekstenzija datoteke
➢ Pomak od console-based pristupa prema interaktivnom razvoju
➢ Podrška za razvoj, dokumentiranje, izvršavanje koda,
komunikaciju rezultata
➢ Kombinacija dviju komponenti:
➢ web aplikacije (interaktivni preglednik) i
➢ Notebook dokumenta (input i output izračuna, tekst, izračuni, slike,
multi-medijski sadržaj)
• Jupyter notebook
➢ Colaboratory
➢ Anaconda
➢ Client instalacija
• a+b →zbroj
• a-b →razlika
• a*b →produkt
• a/b →dijeljenje
• a//b →cjelobrojno dijeljenje
• a%b →modulo(ostatak dijeljenja)
• a**b →potencija
>>>i = 3
>>>z
if i==j:
print("unijeli ste jednake decimalne brojeve")
elif i<j:
print("i je manji broj od j")
if j != 0:
print("količnik i/j iznosi: ", i/j)
else:
print("j je manji decimalni broj")
print("kraj programa")
Funkcija input()
• Konverzija
Programske petlje
while petlja
for petlja
• upravljačkoIme
➢ Privremena varijabla koja prima elemente kroz koje petlja
prolazi (u svakom prolazu po jednu vrijednost)
• pobrojiviObjekt
➢ Konačan raspon vrijednosti kroz koje petlja treba proći
• Treba imati na umu
➢ U Pythonu, for petlja nije kao u C tj. for (int i=0; i<n; i++) više
kao foreach u nekim jezicima
➢ U Pythonu, for petlja implementira collection-based iteracije
➢ Idealna za probleme u kojima znamo broj ponavljanja unaprijed
➢ for i in range(1,8):
print(i**3, end=‘ ’)
➢ Rješenje: 1, 8, 27, 64, 125, 216, 343
➢ s = „VsiTe”
for i in s:
print(i)
➢ Rješenje: V, s, i, T, e
Funkcije (1/2)
• Što su funkcije?
• Čemu služe?
• Kako se definiraju?
• Kako se pozivaju i koriste?
• Kako se definiraju i koriste argumenti funkcije?
• Kako se rezultat funkcije vraća pozivajućem kôdu?
• Metode su objektno orijentirane funkcije
Funkcije (2/2)
Funkcije - definicija
def ispisVremena():
import time
vrijeme = time.localtime()
sati = vrijeme.tm_hour
minute = vrijeme.tm_min
sekunde = vrijeme.tm_sec
print(„Sada je {0} sati {1} minuta {2} sekundi”.format(sati, minute,
sekunde))
print(ispisVremena)
<function ispis vremena at 0x057BBC90>
print(ispisVremena())
Sada je 9 sati 5 minuta 30 sekundi
type(ispisVremena)
function
print(_brojac)
print(brojim())
print(_brojac)
0,1,1,1
• Instalirajte
➢ Python (ako do sada niste)
➢ PyCharm
• Proći kroz primjere s predavanja i auditornih vježbi
➢ Google Colab za Jupyter notebook datoteku sa SCAD-a
• Pripremiti se za laboratorijsku vježbu sljedeći tjedan
• Riješiti zadatke za domaću zadaću. Rješenja su u
nastavku predavanja.
Izlazni test
Izlazni test
• while primjer
➢ Zadatak: pogoditi slučajno generiran cijeli broj u rasponu
od 1 do 25
• for primjer
➢ Zadatak: ispisati kvadrat brojeva od 1 do 20, za svaki šesti
a potom padajućim slijedom kvadrate brojeve od 8 do 1.
• Alternativni stavci petlji
➢ Zadatak: Neka BlackJack ima tri polja s brojkama 5,6,7,8 i
neka je dobitna kombinacija 777. Broj pokušaja je 5. Ako
nije ostvaren dobitak potrebno je ispisati „Nije ostvaren
dobitak”. Ako je ostvarena kombinacija 777 potrebno je
ispisati „Osvojen je JackPot!”.
• while primjer
➢ Zadatak: pogoditi slučajno generiran cijeli broj u rasponu od 1 do 25
import random
donjaGranica = 1
gornjaGranica = 25
print(‘Pogodi broj između {0} i {1}’.format(donjaGranica, gornjaGranica))
random.seed()
brojPogodjen = False
brojPogadjanja = 0
ciljaniBroj = random.randint(donjaGranica, gornjaGranica)
• while primjer
➢ Zadatak: pogoditi slučajno generiran cijeli broj u
rasponu od 1 do 25
➢ Pitanja za razmišljanje
➢ Što bi se dogodili da na kraju nismo stavili brojPogodjen = True
➢ Što bi se dogodilo da smo u tijelu stavili brojPogadjanja -= 1
➢ Kako bismo riješili zadatak da umjesto while not ne
koristimo not?
➢ Koja bi taktika bila najbolja za pogađanje ‘zamišljenog’ (u
biti generiranog) broja?
• for primjer
➢ Zadatak: ispisati kvadrat brojeva od 1 do 20, za svaki šesti a potom padajućim slijedom
kvadrate brojeve od 8 do 1.
for i in range(1,20,6)
print(‘{0}^2 je {1}’.format(i,str(i**2))
1^2 je 1
7^2 je 49
13^2 je 169
19^2 je 361
for i in range(8,0,-1)
print(‘{0}^2 je {1}’.format(i,str(i**2))
8^2 je 64
7^2 je 49
6^2 je 36
5^2 je 25
4^2 je 16
3^2 j3 9
2^2 je 4
1^2 je 1
Hvala na pozornosti!