Professional Documents
Culture Documents
Uvod U Programiranje: 1. Predavanje
Uvod U Programiranje: 1. Predavanje
UVOD U PROGRAMIRANJE
1. Predavanje
Dragana Čulina
Što je računalo?
• Moderno računalo je univerzalni digitalni stroj sa
uskladištenim programom. Izgrađen na elektroničkoj
tehnologiji računa i donosi odluke milijardu puta brže od
čovjeka.
• Sklopovlje (hardware)
– tipkovnica (keyboard)
– zaslon
– disk
– memorija
– jedinica za obradu
– …
• Programska podrška (software)
• Cijena hardware-a pada a software-a raste
UVOD U PROGRAMIRANJE 2
Organizacija računala
• Podjela u logičke cjeline
– Centralna jedinica za obradu (CPU – Central
processing unit)
– Memorijska jedinica
– Sekundarna memorijska jedinica
– Ulazna jedinica
– Izlazna jedinica
UVOD U PROGRAMIRANJE 3
Centralna jedinica za obradu
• CPU
• interpretira i izvodi naredbe programa
• U PC sistemima – integrirani sklop, mikroprocesor
• Sastoji se od tri funkcionalna dijela:
– aritmetičko-logičke jedinice
– upravljačke jedinice
– unutarnjih registara (spremnika) - tu se privremeno
pohranjuju i obrađuju naredbe i podaci
UVOD U PROGRAMIRANJE 4
Aritmetičko-logička jedinica
• Izvodi sve aritmetičke i logičke operacije unutar
CPU-a.
• Aritmetičke operacije
– dodavanje
– oduzimanje
– množenje
– dijeljenje
• Logičke operacije
– jednakost
– manje od
– veće od
UVOD U PROGRAMIRANJE 5
Aritmetičko-logička jedinica
• Izvodi sve aritmetičke i logičke operacije unutar
CPU-a.
• Aritmetičke operacije
– dodavanje
– oduzimanje
– množenje
– dijeljenje
• Logičke operacije
– jednakost
– manje od
– veće od
UVOD U PROGRAMIRANJE 6
Upravljačka jedinica
• Usmjeruje i koordinira aktivnosti sistema
• Interpretira naredbe programa i proizvodi
električne signale u drugim dijelovima
sistema.
• Komunicira s ostalim dijelovima CPU-a preko
sabirnica.
UVOD U PROGRAMIRANJE 7
Memorijska jedinica
• “Skladišni” dio računala za pohranu informacija
koje obrađuje CPU.
• Informacije
– programske naredbe
– podaci
• Informacijama se pristupa preko adresa
• Brzi pristup, relativno mali kapacitet
• Naziva se primarnom ili radnom memorijom
• Primarna memorija
– read-write memory (RW)
• RAM (random-access memory)
– read-only memory
• ROM
UVOD U PROGRAMIRANJE 8
RAM - Random access memory
• Upisno-ispisna memorija za pohranu
informacija i podataka.
• Informacije se privremeno pohranjuju u RAM
nakon čega mogu biti dohvaćene.
• Nove informacije mogu biti snimljene na isto
mjesto (adresu).
• Nepostojana memorija (volatile memory)
– čuva informacije dok je prisutan električni napon
• Virtualna memorija
Naziv kolegija 9
Bitovi i bajtovi
• Računala rade s binarnim vrijednostima
• Binarna vrijednost – skup bitova: bit 0 ili 1
– 1001 je 4-bitna vrijednost
– 11100010 je 8-bitna vrijednost
• Bajt (byte) – skup od 8 bitova
– 100 bajtova = 100x8 = 800 bitova
• Prefiksi binarnih vrijednosti
– kilo (K) - 1024
– mega (M) - K2 = 1024x1024
– giga (G) - K3 = 1024x1024x1024
UVOD U PROGRAMIRANJE 10
(… nastavak)
• 64 MB = 64x1024x1024 = 67.108.864 bajtova
Pojam Značenje
bit 0 ili 1
bajt 8 bitova
kilobajt (KB) 1024 bajta
megabajt (MB) 1 048 576 bajtova
gigabajt (GB) 1 073 741 824 bajtova
UVOD U PROGRAMIRANJE 11
(… nastavak)
• Svaki bajt je se locira preko adrese
– 64 MB RAM-a
Memorijska Memorijski
adresa sadržaj
67.108.863 10010011
67.108.862 10110001
… …
… …
… …
1 00010001
0 10110101
UVOD U PROGRAMIRANJE 12
ROM - Read-only memory
• Sistemska memorija
• Pohranjuje sistemske programe i podatke
• BIOS – sistemska podrška u PC (personal
computer) sistemima
• Iz ROM-a se može čitati ali ne u njega
zapisivati
• Neizbrisiva memorija (nonvolatile memory)
– drži informacije i bez prisutnosti električnog
napona
UVOD U PROGRAMIRANJE 13
Sekundarna memorijska jedinica
UVOD U PROGRAMIRANJE 14
Ulazna i izlazna jedinica
• Ulazna jedinica - prihvatna sekcija računala.
• Informacije dostavlja drugim jedinicama računala
radi obrade.
– tipkovnica
– miš
– skener
– disketa
– modem, mrežna kartica
• Izlazna jedinica – otpremna sekcija računala.
• Informacije obrađene u računalu dostavlja
izlaznim uređajima.
– zaslon, printer
– zvučnici
– modem
UVOD U PROGRAMIRANJE 15
Što je računalni program?
• Skup naredbi koje određuju računalu način rješenje
problema.
• Skup naredbi se naziva izvornim kodom (source code).
• Računalni program se piše u programskom jeziku
• Dvije široke grupe programa:
– sistemski
– aplikativni
• Sistemski omogućuju ispravno funkcioniranje računala.
– operativni sustav (OS) – “ljepenka” koja povezuje
sklopovlje s programskom podrškom.
UVOD U PROGRAMIRANJE 16
(… nastavak)
• OS – skup programa koji upravljaju bitnim
sistemskim resursima:
– upravljanje memorijom
– upravljanje datotekama
– I/O upravljanje
– motrenje aktivnosti sistema
– zaštita sistema
– …
• DOS, Unix – tekstualno orijentirani
• Windows, Macintosh OS – izlažu GUI (graphical
user interface)
UVOD U PROGRAMIRANJE 17
(… nastavak)
• Aplikativni programi:
– upakirane aplikacije
• Microsoft Word
• Norton Antivirus
• AutoCAD
• …
– prilagođene aplikacije
• prema zahtijevima korisnika
• skuplje od upakiranih aplikacija
• fleksibilnije
UVOD U PROGRAMIRANJE 18
(… nastavak)
• Sve aplikacije su nastale korištenjem nekog od
programskih jezika.
• Stotine programskih jezika danas u upotrebi.
• Samo nekoliko u širokoj upotrebi.
• Računalni jezici:
– strojni jezici (machine language)
– asemblerski jezici (assembly languages)
– jezici visoke razine (high-level languages)
UVOD U PROGRAMIRANJE 19
Strojni jezik
• Prirodni jezik računala
definiran sklopovskim
dizajnom.
• jezik niske razine
• jedini direktno razumljiv 01001100
računalu 11101001
10101010
• CPU je dizajniran za 10001110
interpretiranje skupa 00001111
binarnih naredbi. primjer binarnog koda
UVOD U PROGRAMIRANJE 20
Asemblerski jezik
• korak iznad strojnog jezika
• jezik niske razine
• umjesto 0 i 1 koriste se
mnemonici
– za zbrajanje ADD
– za pomicanje MOV
• za programera jednostavniji
za pisanje
• nerazumljivi za CPU
• assember – program za
prevođenje
primjer asemblerskog koda
UVOD U PROGRAMIRANJE 21
Jezici visoke razine
• naredbe slične engleskom
jeziku
• matematičko označavanje
• sporiji od strojnih jezika
• zahtijevaju interpretera ili
prevodioca (compiler)
• nisu CPU zavisni
primjer koda jezika visoke razine
UVOD U PROGRAMIRANJE 22
Pristup rješavanju problema
• Analiza problema
o što detaljnije opisati postavljeni zahtjev
o moramo točno znati što treba rješavati
• Specifikacija problema
o na koje pojedinosti treba paziti?
o što su ulazni a što izlazni podatci i kojeg su oblika?
o kako će izgledati korisničko sučelje?
o postoje li neki posebni slučajevi
UVOD U PROGRAMIRANJE 23
nastavak…..
• Pisanje programa
o dobro poznavanje programskog jezika
o ispravljanje svih sintaktičkih pogrešaka
o dokumentiranje
• Provjeravanje i ispitivanje programa
o rješavali li program problem ispravno?
o odabiri ulaznih podataka za koje znamo izlazne vrijednosti
o u ispitne podatke uključiti granične vrijednosti
• Održavanje programa (za ozbiljnije programe)
o ispravljanje naknadno uočenih pogrešaka
o ugrađivanje nadopuna
UVOD U PROGRAMIRANJE 24
Algoritmi
• Važan pojam u računarstvu
• Arapski matematičar Muhammad Ibn Musa
Al-Khwarizmi (IX stoljeće)
o Algoritam je uređeni skup jednoznačnih
(nedvosmislenih), mehanički izvedivih koraka:
o izvođenje konačnog broja koraka algoritma određenim
redoslijedom (svaki korak opisuje se instrukcijom)
o Algoritam je upotrebljiv ako u konačnom vremenu za bilo koja
početna/ulazna stanje podataka daje završna/izlazna stanja
o Mora postojati izvršitelj algoritma (čovjek, životinja, stroj)
UVOD U PROGRAMIRANJE 25
nastavak….
• Svojstva algoritma:
o ispravnost (korektnost) – radi ispravno za sve
dopuštene ulaze
o Trajanje – broj osnovnih operacija od kojih se
sastoji algoritam
UVOD U PROGRAMIRANJE 26
Osnovni programski pristupi
• Imperativni pristup
o program se sastoji od niza naredbi koje nam kažu
šta treba uraditi da bismo riješili problem
(primjer: postupak zbrajanja u decimalnom
sustavu)
• Deklarativni pristup
o program je opis problema iz kojeg računalo
generira rješenje
(primjer: aritmetički izraz je opis broja iz kojeg
računalo izračuna taj broj)
UVOD U PROGRAMIRANJE 27
Imperativni pristup
• To je dominirajući pristup (Python, Java, C, …)
• On se povijesno razvijao izgradnjom sve
moćnijih alata apstrakcije
o Proceduralna apstrakcija (cijeli dijelovi koda se
tretiraju kao cjeline)
o Podatkovna apstrakcija (složeni podaci se tretiraju
kao cjeline)
o Objektna apstrakcija (složeni podaci zajedno s
operacijama nad njima se tretiraju kao cjeline –
objekti)
UVOD U PROGRAMIRANJE 28
Deklarativni pristup
• Nije danas dominirajući pristup ali je za neke
probleme efikasniji od imperativnog
o Funkcijski pristup (Haskell, ML, Scheme, … )
(opiše se funkcija koja rješava problem, slično kao
što se aritmetičkim izrazom opiše broj)
o Logički pristup ( Prolog, Datalog, … )
(opiše se problem skupom tvrdnji i računalo iz tog
opisa izvede rješenje problema)
primjer: traženi nepoznati broj opišemo
jednadžbom i onda riješimo jednadžbu
UVOD U PROGRAMIRANJE 29
Kombiniranje programskih
pristupa
• Svaki pristup ima svoje prednosti i mane i zato
je najbolje znati ih kombinirati.
• Suvremeni programski jezici omogućuju više
programskih pristupa mada je za dani jezik
jedan pristup dominirajući.
UVOD U PROGRAMIRANJE 30
Programski jezik Python
• Interpretirani viši programski jezik opće namjene
• Dosljedan objektno orijentiran jezik, ali podržava i
ostale stilove programiranja
• Nizozemski programer Guido van Rossum 1991.
godine
• 2000. g. verzija 2.0, zadnja podverzija 2010. 2.7
• 2008 Python 3.0 sa značajnim promjenama u
sintaksi jezika.
UVOD U PROGRAMIRANJE 31
Prednosti
• Jasnoća i sažetost izvornog koda
• Jednako dobar za učenje programiranja i
pisanje profesionalnih programa
• Open source software sa jakom podrškom
• Opsežne standardne biblioteke i tisuće
nezavisnih biblioteka
• Široko područje primjene
• Pri vrhu traženosti u informatičkom biznisu
UVOD U PROGRAMIRANJE 32
Savjeti na kraju 1. predavanja
Slobodno griješite pri pisanju programa – na greškama se
uči
Zasluženo se odmorite
UVOD U PROGRAMIRANJE 33