You are on page 1of 44

Osnove programiranja

- Python -
Profesor: Prof. dr Vladislav Miškovic
Asistent: MSc Miloš Mravik

Beograd, 2019.
Današnje teme:
• Uvod u predmet Osnove programiranja

• Način prevođenja programskog koda

• Programski jezik Python

• Razvojno okruženje IDLE

• Promenljive i tipovi podataka

• Matematičke funkcije / Aritmetičke operacije

• …
Uvod u predmet Osnove programiranja
• Cilj predmeta je upoznavanje sa osnovnim principima i
metodologijama programiranja računara uz primenu
programskog jezika Python.

• Sadržaj predmeta je podeljen u tri celine:


- Kratak uvod u princip rada računara i izvršavanje
programa
- Metodologija programiranja i primeri dobre prakse
- Osnove programskog jezika Python
• Nakon pohađanja predmeta i uspešnog polaganja ispita,
studenti će posedovati osnovna teorijska znanja o
programiranju računara i praktične veštine za pisanje
programa na programskom jeziku Python.
Programski jezici
• Programski jezik je formalan jezik za pisanje naredbi u obliku
koda koji računar može da tumači i izvršava ili koji može da
se prevede u mašinski kôd koji se izvršava na određenoj
arhitekturi.

• Programski jezici se dele na jezike niskog i visokog nivoa.


Programski jezici niskog nivoa
• Programski jezici niskog nivoa su po svojoj strukturi i
instrukcijama veoma bliski konačnom mašinskom kodu u koji
se prevode. Nastali su u najranijem periodu razvoja
programskih jezika i učenje ovih jezika je bilo teško, jer je
zahtevalo da programer odlično poznaje arhitekturu
konkretnog računara za koji piše kôd.
Programski jezici visokog nivoa
• Programski jezici visokog nivoa su nastali iz potrebe da se
uvede veći nivo apstrakcije podataka i operacija nad
podacima i da se omogući pisanje jednog programskog koda
za sve arhitekture.
Prevođenje programskog koda
• Programski kôd ne može direktno da se izvrši na računaru,
već mora da se prevede i mašinski kôd za konkretnu
arhitekturu računara na kojem će se program izvršavati ili u
bajtni kôd za određenu virtualnu mašinu koja je zadužena da
u trenutku izvršavanja interpretira ili prevodi bajtni kôd u
mašinski kôd za konkretnu arhitekturu računara nad kojom se
ona izvršava.

• Mašinski jezik predstavlja niz nula i jedinica.

• U zavisnosti od arhitekture računara mašinske instrukcije


mogu biti jednoadresne, dvoadresne, toradresne i
bezadresne.
Programski jezik Python
• Spada u programske jezike visokog nivoa, to je interpretirani
programski jezik.

• Kod interpretiranih programskih jezika, kod se ne prevodi u


mašinski kod kako bi se izvršavao, već posebni programi
(interpreteri) u hodu tumače naredbe pisane ovim
programskim jezicima i procesoru zadaju odgovarajuće
instrukcije koje se onda izvršavaju.

• Prednost interpretiranih programskih jezika se ogleda u tome


što nema potrebe za prevođenjem izvornog koda u mašinski
kôd za konkretnu arhitekturu računara, već se isti izvorni kod
može izvršavati na bilo kojem računaru i na bilo kojem
operativnom sistemu koji je podržan od strane programa
interpretera.
Programski jezik Python
• Na taj način isti program možemo da izvršimo na Windows
operativnom sistemu, na bilo kojoj GNU/Linux distribuciji, na
računarima koji su izgrađeni na bazi Intel procesora, ARM
procesora, Motorolinih procesora, itd.

• Jedino je važno da na operativnom sistemu koji se izvršava


na računaru može da se pokrene program interpreter, tj. da
postoji verzija interpretera za tu arhitekturu računara i
operativni sistem.
Programski jezik Python
• Prednosti interpretiranih programskih jezika:
- Mogućnost rada sa promenljivama bez unapred
deklarisanja tipa podataka
- Nema prevođenja programa svaki put kada se promeni
izvorni kod
- Manji kod programa
- Dinamički proširivo područje globalno dostupnih
promenljivih sposobnost programa da analizira sam sebe tj. Svoj
source code
Programski jezik Python
• Neke od mana interpretiranih programskih jezika:
- Izvršavanje interpretiranjem je znatno sporije od
izvršavanja mašinskog koda
- Teže je zaštititi kod jer se ne prevodi u binarni oblik
- Mogućnost rada sa promenljivama bez deklarisanja
ostavlja mogućnost za greške
- Postoji rizik od napada vršenjem dinamičkog umetanja
izvornog koda u program
Programski jezik Python
• Python je programski jezik opšte namene koji je dizajniran sa
ciljem da bude vrlo čitljiv i da ljudima bude lakše da čitaju,
pišu, tumače i prepravljaju programe pisane ovim jezikom.
• Python programski jezik ima podršku za veliki broj
savremenih programskih paradigmi, kao što su objektno
orijentisano programiranje i programiranje funkcionalnog i
imperativnog stila.
• Od kada je nastao, Python je više puta redizajniran i menjan
je način njegovog rada, interpretiranja koda, ali i pisanja koda.
Programski jezik Python
• Neke jezičke konstrukcije koje su postojale, npr. u verziji 2.x,
u verziji 3.x ne mogu da se koriste i nisu sintaksno ispravne.

• Zbog ovoga postoji velika količina programskog koda i veliki


broj programa koji ne mogu da se izvršavaju na novoj verziji
Python programskog jezika i moraju da se preprave kako bi
radili.
• Postoje specijalizovani programi koji prevode izvorni kod iz
starijih verzija u novije koji mogu da pomognu da se ovaj
proces automatizuje kada za time postoji potreba.
Razvojno okruženje IDLE
• Integrisano razvojno okruženje ili IDE ( Integrated
Development Environment ) koje objedinjuje editor teksta i
konzolu u kojoj se izvršava Python program.

• IDLE je spakovano u instalaciju Python 3.7.4 (poslednja


verzija) paketa koji možete da preuzmete sa linka
https://www.python.org/downloads/
Razvojno okruženje IDLE
Razvojno okruženje IDLE
Razvojno okruženje IDLE
Razvojno okruženje IDLE
Razvojno okruženje IDLE
• Kada pokrenete IDLE, otvoriće se prozor koji izgleda kao na
slici:
Razvojno okruženje IDLE
• Da napravite Python program, iz menija File izaberite New
File
Razvojno okruženje IDLE

• Prikaz jednostavnog ispisa u konzolu


Razvojno okruženje IDLE

• Da bi se program pokrenuo, mora se sačuvati


Razvojno okruženje IDLE
• Pritiskom na dugme f5 ili biranjem opcije iz menija Run -->
Run module, pokreće se program.
Promenljive i tipovi podataka
• Programi rade sa podacima koji se u računaru čuvaju u
radnoj memoriji.

• Prema tome, da bi programi mogli da rade sa podacima u


memoriji, programski jezici koriste koncept promenljive kojima
omogućavaju programerima da rade sa podacima u memoriji.

• Ako želimo u Python jeziku da definišemo promenljivu,


potrebno je da odredimo jedinstveno ime za nju i da joj
operatorom dodele vrednosti dodelimo željenu vrednost.
Promenljive i tipovi podataka
• Vrednosti koje upisujemo u promenljive mogu biti različitih
tipova, npr. ceo broj, realan broj, tekst, niz različitih vrednosti,
složeni objekat itd.

• Kako u Python jeziku ne treba unapred da odredimo tip


podatka promenljive kojoj dodeljujemo vrednost, to znači da
promenljivoj možemo naknadno dodeliti novu vrednost koja je
potpuno drugog tipa podatka:

- godinaUpisa = 2019
- godinaUpisa = "Dve hiljade devetnaesta godina"
- godinaUpisa = 3.1415
Promenljive i tipovi podataka
• Bez obzira na to što nije potrebno izričito navesti tip podatka
promenljive prilikom njenog definisanja u toku izvršavanja
programa, tipovi podataka zapravo postoje u Python
programskom jeziku i to su:

- Boolean vrednosti (logičke vrednosti): true /false


- Numerički tipovi podataka:
- Int (celobrojna vrednost) 124
- float (realne vrednosti) 4.32
- Fraction (vrednost zapisana kao razlomak):
fraction(21,343)
- Kompleksne vrednosti -4 + 6j
- Stringovi (niz karaktera): “Python”
- Binarni podaci (bajt ili niz bajtova ) npr za čuvanje slike
- Liste podataka, N torke podataka, Setovi podataka i
rečnici
- None, znači “ništa” i koristi se na poseban način u
Python
Aritmetičke operacije
OPERACIJA PRIMER REZULTAT

SABIRANJE 7+2 9

ODUZIMANJE 7-2 5

MNOŽENJE 7*2 14

DELJENJE 7/2 3.5

DELJENJE (FLOORED
7//2 3
QUOTEINT)

OSTATAK PRI DELJENJU 7%2 1

EKSPONENT 7**2 49
Aritmetičke operacije nad brojevima
• Uzmimo da je vrednost promenljive x = -16.5

• Uzmimo da je vrednost promenljive y = 4

• Uzmimo da je vrednost promenljive z = 4-6j

OPERACIJA PRIMER REZULTAT

NEGACIJA -x 16.5
APSOLUTNA
abs(x) 16.5
VREDNOST
IZDVAJANJE CELOG
int(x) -16
BROJA
KONVERZIJA CELOG
float(y) 4.0
U REALAN
KONJUGACIJA
z.conjugate() 4+6j
KOMPLEKSNOG
Matematičke funkcije
• Proste aritmetičke operacije često nisu dovoljne za rešavanje
određenih problema iz realnog sveta.

• Za Python jezik postoji veliki broj biblioteka, a među njima su


mnoge namenjene za matematiku.

• Jedna od najčešće korišćenih je biblioteka math.

• Postoje i funkcije koje su sastavni deo Python jezika, tj. nije


potrebno da se učita math modul (biblioteka) da bi se te
funkcije koristile.
Matematičke funkcije
• Logičke operacije su operacije nad logičkim podacima, tj. nad
True i False (tačno i netačno). Pri čemu je 1 ekvivalentno sa
true, a 0 ekvivalentno sa false.

• Rezultat logičke operacije može da bude ili True ili False i


ništa drugo.

• Logičke operacije se dele u:

- Operacije nad dve logičke vrednosti


- Operacije nad jednom logičkom vrednošću (unarne)
Matematičke funkcije
FUNKCIJA PRIMER REZULTAT
ZAOKRUŽIVANJE round(13.9657) 14
BROJA round(13.9657, 2) 13.97
SINUS math.sin(math.pi/2) 1.0
COSINUS math.cos(0.0) 1.0
ODSECANJE
math.trunc(15.87) 15
DECIMALA
GORNJA
math.ceil(13.2) 14
GRANICA BROJA
DONJA GRANICA
math.floor(13.2) 13
BROJA
APSOLUTNA
math.abs(-98) 98
VREDNOST
PRIRODNI
math.log(2016) 7,60887062…
ALGORITAM
KVADRATNI
math.sqrt(144) 12.0
KOREN
Matematičke funkcije
• Matematičke konstante se često koriste u proračunima i
njihove vrednosti su dobro poznate.

• U modulu math su predefinisane konstante:

- math.pi - 3.141592653589793
- math.e - 2.718281828459045
Aritmetičke operacije nad brojevima
• Logično i (and)

A B REZULTAT

TRUE TRUE TRUE

TRUE FALSE FALSE

FALSE TRUE FALSE

FALSE FALSE FALSE


Aritmetičke operacije nad brojevima
• Logično ili (or)

A B REZULTAT

TRUE TRUE TRUE

TRUE FALSE TRUE

FALSE TRUE TRUE

FALSE FALSE FALSE


Aritmetičke operacije nad brojevima
• Logično ili (^)

A B REZULTAT

TRUE TRUE FALSE

TRUE FALSE TRUE

FALSE TRUE TRUE

FALSE FALSE FALSE


Aritmetičke operacije nad brojevima
• Negacija (not) negacija je unarni operator

A REZULTAT

TRUE FALSE

FALSE TRUE
Stringovi
• String je poseban tip podatka koji se koristi za skladištenje
teksta.

• U Python programskom jeziku, vrednost stringa (tekst) mora


da se uokviri navodnicima.

• Mogu da se koriste dvostruki navodnici ili jednostruki


navodnici (apostrofi) za obeležavanje početka i kraja
vrednosti stringa. Oba pristupa su ravnopravna.
Stringovi: primeri
• poruka = “Ovo je predmet Osnove programiranja Python”

• imeUstanove = ‘UNIVERZITET SINGIDUNUM’

• navodnikUTekstu = ‘Ustanova “Univerzitet Singidunum”’


Izlaz programa
• Pod izlazom programa se smatra podrazumevani interfejs ka
korisniku programa kroz koji se njemu dostavljaju odgovori
programa ili instrukcije.

• Kod konzolnih aplikacija, koje se izvršavaju u tekstualnom


modu u konzoli operativnog sistema, izlaz je sama konzola i
tekst na njoj ispisuje sâm program.

• Ispis na konzolu se u Pythonu vrši funkcijom print:

KOMANDA IZLAZ
print(„Dobar dan“) Dobar dan
print(math.pi) 3.14159265358…
Ulaz programa
• Pod ulazom programa se smatra podrazumevani interfejs od
korisnika programa kroz koji on programu dostavlja komande
ili podatke za dalji rad.

• Kod konzolnih aplikacija, koje se izvršavaju u tekstualnom


modu u konzoli operativnog sistema, izlaz je sama konzola i
podatke korisnik mora da otkuca na tastaturi i pošalje
pritiskom na taster Enter Return).
Komentari
• Komentari su kratke poruke u izvornom kodu programa koje
programeri ostavljaju kako bi olakšali tumačenje koda i kako
bi pomogli sebi i drugim programerima koji naslede njihov kôd
da se lakše snađu i bolje razumeju šta se u konkretnom delu
programa dešava.

• Za razliku od nekih drugih programskih jezika, Python


implementira način da se pišu komentari i poseduje samo
jednu jezičku konstrukciju za to.

• Kada programer želi da napiše komentar, koristi simbol #.

• Sve iza simbola #, pa do kraja reda je komentar.


Komentari
• Python interpreter u potpunosti ignoriše tekst koji je obeležen
kao komentar.

• Pod komentarom može da se nađe ceo jedan red ili deo reda
od # do kraja reda.

• Komentar ne može da se prekine pre kraja reda, već će uvek,


nakon što je započet, trajati do kraja reda.

• Primeri koda sa komentarima:

# Ovo je komentar koji zauzima ceo jedan red


broj = 15 # Stavili smo 15 u promenljivu broj
print(broj) # Sada štampamo vrednost 15 iz broj
# broj = 23 # Dodela broja 23 promenljivoj broj
print(broj) # Opet štampamo 15, a ne 23! Zašto?
Video materijali sa vežbi

• http://tiny.cc/MilanTairPython
Hvala na pažnji!
Pitanja?

You might also like