Algoritmi I Programiranje

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 30

ALGORITMI I

PROGRAMIRANJE
RAUNALA
4 sata

SADRAJ PREDAVANJA
ALGORITMI
2,5 sati
Operativni ciljevi
Upoznati se s algoritmima, njihovom formom,
radom, svrhovitou, te uoiti vezu izmeu
algoritama i programiranja
PROGRAMIRANJE I
PROGRAMSKI JEZICI
1,5 sati
Operativni ciljevi
Upoznati se s programiranjem, vezom strojprogram, programskim jezicima, generacijama,
evolucijom programskih jezika, te
trendovima u razvitku programskih jezika

Algoritmi i programiranje raunala

ALGORITMI

POSLOVNI INFORMACIJSKI SUSTAVI


POSLOVNI
INFORMACIJSKI
SUSTAV

ki
fo rmacijs
Ure dsk i in
su stav
po drk u
Su stav za u
nj
odlu i va
ki
rm acijs
ki in fo
U pr avlja
su stav

Lifeware (ljudski potencijal)


Software (programski podsustav)
Hardware (str ojni podsustav))
Marketing-inf
Marketing
informacijs
orma cijski
ki sustav
sus ta v
Proizvodni informa cijski sustav
Raunovodstve ni inform acijsk i sustav

Financijs ki informacijski sustav

...

Algoritmi i programiranje raunala

POJAM ALGORITAM
Za pojam zasluan arapski matematiar iz IX.
stoljea: Muhamed ibn Musa Al Horezmi
(u prijevodu: Muhamed sin Muse iz Horezma)
Napisao knjigu u kojoj je razradio postupke i
pravila za provoenje aritmetikih operacija s
brojevima zapisanim u dekadskom obliku.

PRIMJER RAUNSKOG ALGORITMA


U runoj (manualnoj) obradi podataka, skup
postupaka koje treba uiniti da bi se rijeio
zadatak
npr. Algoritam je i nauen postupak mnoena
u osnovnoj koli
23* 32
69
46

736

Algoritmi i programiranje raunala

TKO TO PROCESUIRA?!*
Algoritam

Program

* proces od lat.
processus napredak, rastanje

ELEKTRONIKA OBRADA PODATAKA


Obrada podataka koja se preteito obavlja na
elektronikom raunalu, prema unaprijed
zadanom programu (nizu instrukcija (naredbi)) i
nad podacima koji su upisani i nalaze se u
centralnoj memoriji.
EVOLUTIVNI NIZ
Manualna obrada
Mehanika obrada
Elektromehanika obrada
Elektronika obrada
PREDMET OBRADE
Podaci (sve to se moe digitalizirati: brojevi,
alfanumeriki znakovi, slike, video, tonski zapisi)

Algoritmi i programiranje raunala

FAZE NASTANKA PROGRAMA


Algoritmi - faza u procesu izrade programa za
elektroniku obradu podataka
Definiranje problema
Razumijevanje problema
Izrada algoritma (iskusni programeri u glavi)
Prevoenje algoritma u programski jezik
Strojno prevoenje (interpretacija) i testiranje
programa
Korekcija i prilagodba programa
Izrada popratne dokumentacije i uputa za rad

ODNOS ALGORITMA I PROGRAMA


S obzirom da su algoritmi priprema za izradu
programa, kreiraju se u duhu programskog jezika
za koji su priprema.
Prilikom kreiranja algoritama treba teiti da
instruktivni odnos
algoritam : program bude 1:1
10 S=0
20 INPUT X
30 IF X=-99999 THEN GOTO 60
40 S=S+X
50 GO TO 20
60 PRINT S
70 END

Algoritmi i programiranje raunala

ALGORITMI - KARAKTERISTIKE
Algoritam je:
Recept u kuharici,
Upute za uporabu,
Proces spajanja gena,
Itd.
to su bitne karakteristike algoritma?
Orijentiranost k cilju (rezultatu),
Konanost (upotrebljivost),
Ponovljivost uz iste ulazne uvijete,
Razumljivost procesnoj jedinici,
Instruktivnost (formira se u obliku naredbi)

NAELNA STRUKTURA ALGORITMA


Opi algoritmi (zbrajanje unesenih brojeva):

Specijalizirani algoritmi (raunanje broja e):

Algoritmi i programiranje raunala

OD ALGORITMA DO IZVRNOG KODA

PROCES NASTAJANJA ALGORITMA


Definiranje problema
Razumijevanje problema
Analiza (rastavljanje na sastavne dijelove)
problema i pronalaenje postupka kojim
problem rijeiti na stroju razumljiv nain
(primjer s kutijom ibica)
Pisanje algoritma
Testiranje algoritma (Traeni nivo znanja je
testiranje (procesuiranje) algoritma i
prepoznavanje svrhovitosti algoritma)
Ispravljanje algoritma (Greke sintakse; formalne
i logike)
Kreiranje dokumentacije

Algoritmi i programiranje raunala

ALGORITMI
3. Generacije
programskih jezika
(Basic)

STRUKTURA ALGORITAMA
Algoritam grade(algoritmi koje emo izuavati su
algoritmi za obradu numerikih podataka)
Predmeti i sredstva obrade (objekti - podaci):
Varijable
Konstante
Matematiki i logiki operatori
Algoritamske strukture
Pravila sintakse
gr. syntaxis sastavljam, sreujem; gram.
Skladnja, u ovom sluaju algoritma/programa

Algoritmi i programiranje raunala

VRSTE PODATAKA (OBJEKATA)


Kompjuterom se obrauje sve to se moe
digitalizirati konvertirati u broj (u binarni
brojevni sustav 0 i 1)
Izdvajamo:
Numerike podatke (brojevi)
0, 111.001, 10E23,
Alfanumerike podatke (brojevi i slova)
Pero, 0, 111.001, OSIJEK,
Ostali tipovi: logiki,
datumski, memo,

VARIJABLE
franc. varijable, mat. promjenjiva veliina,
promjenljiva vrijednost
Oznaavaju se simbolima kao i u matematici
(postoje za pojedine programske jezike pravila
oznaavanja, tzv. pravila notacije)
Primjeri varijabli:
X, y, z, broj, ime, god, nIznos,

Algoritmi i programiranje raunala

KONSTANTE
lat. constans mat. stalan, nepromjenljiva veliina

Oznaavaju se simbolima kao i u matematici


(postoje za pojedine programske jezike pravila
oznaavanja, tzv. pravila notacije)
Konstante tijekom izvoenja algoritma ne
mijenjaju poetno pridruenu vrijednost
(najpoznatije su e=2,718, Pi=3,141)
Primjeri konstanti:

Pi, e, p, g, nGravit,

OPERATORI
mat. znak (predznak) kojim se obiljeava nain
izvoenja operacije
Oznaavaju se matematikim simbolima:
=, +, -, *, /, ^, (, ), <, >
Koriste se u aritmetikim i logikim operacijama
Operacije se izvode od lijeva na desno pritom
potujui pravila:
Komutacije
Asocijacije
Stupnjevanja

Algoritmi i programiranje raunala

10

PARADOKS ZNAKA JEDNAKOSTI


U aritmetikim operacijama znai pridruivanja
(u nekim programskim jezicima se oznaava s :=)
I=I+1

U logikim operacijama znai vaganje

Ako je i=10 onda

ALGORITAMSKE STRUKTURE
Slijedna (linearne ili sekvencijalne)
Poetak i kraj
Definiranje varijabli i konstanti
Ulaz
Izlaz
Aritmetike i logike operacije
Struktura bezuvjetnog skoka
Struktura grananja (sadri logike operacije), a
kombinira se sa:
Slijednom strukturom
Strukturom bezuvjetnog skoka
Struktura iteracije (ponavljanja ili petlje)

Algoritmi i programiranje raunala

11

SLIJEDNA STRUKTURA
PSEUDO JEZIK

BLOK DIJAGRAM

Poetak
Definiranje varijabli i konstanti
1. X=0, Y=0, S=0
Ulaz
2. Uitaj x
3. Uitaj y
Aritmetika operacija
4. S=X+Y
Izlaz
5. Ispii S
Kraj
6. Kraj
Kod pisanja algoritma u pseudo jeziku (kodu)
linije se obino oznaavaju rednim brojevima

PROCES IZVOENJA ALGORITMA

Algoritmi i programiranje raunala

12

TESTIRANJE ALGORITMA
Izvodi se kao i u matematici uvrtavanjem
vrijednosti u algoritam
Algoritam se testira sekvencialno praenjem
svakog reda (instrukcije) algoritma od poetka do
kraja, uz zapisivanje vrijednosti koje varijable
usput poprimaju, da bi se u konanici saznala
konana vrijednost izlaznih varijabli

TESTIRANJE ALGORITMA
Greke u algoritmu (Bug-ovi: eng. bug stjenica,
kukac, buba u glavi, kvar, zaraza):
Sintaksne greke (gr. syntaxis sastavljam,
sreujem; gram. Skladnja)
Formalne greke su pravopisne greke i
tipfeler
npr. 10. Iskii S
isp. 10. Ispii S
23. A-A+1
isp. 23. A=A+1
Logike greke najee nastaju zbog:
Nerazumijevanja problema
Nepoznavanja logike rada stroja
Niskog programerskog iskustva
Greke se ispravljaju tzv. debugiranjem

Algoritmi i programiranje raunala

13

LOGIKE GREKE - slijedna struktura


Nedefinirane varijable:
npr. 1. Uitaj A
isp. 1. S=0, A=0
2. S=S+1
2. Uitaj S
Koliki je S?
3. S=S+1
Dijeljenje s nulom:
npr. 1. A=0, S=0
2. Uitaj B
3. S=B/A
Koliki je S?
Kako sprijeiti unos nulu kao djelitelja?

BEZUVJETNI SKOK
Struktura bezuvjetnog skoka omoguava
naruavanje linearnosti
PSEUDO JEZIK
BLOK DIJAGRAM
x. Idi na y
Gdje su x i y brojevi linija algoritma bez obzira
na smjer (gore/dolje)
Koristi se za testiranje algoritma (preskae dio
algoritma)
Izaziva greku bezuvjetnog ponavljanja (tzv.
beskonana petlja ili iteracija)
Kombinira se s strukturom grananja radi
naruavanja linearnosti / uspostavljanja
ponavljanja (dijela) algoritma

Algoritmi i programiranje raunala

14

BEZUVJETNI SKOK- testiranje algoritma


Omoguava preskakanje dijela algoritma

1. X=100, S=0
2. Idi na 5
3. Uitaj Y
4. S=X/Y
5. Ispii S
6. Kraj

BEZUVJETNI SKOK- beskonana itracija


esta greka zbog koje je bezuvjetni skok na
loem glasu

1. X=100, S=0
2. Uitaj Y
3. S=X/Y
4. Idi na 3
5. Ispii S
6. Kraj

Algoritmi i programiranje raunala

15

GRANANJE
Struktura grananja koristi se za naruavanje
linearnosti
PSEUDO JEZIK
x. Ako je ### onda $$$ [u protivnom $$$]
BLOK DIJAGRAM

Gdje su
x
broj linije algoritma
### logika operacija
$$$ slijedna operacija i/ili operacija bezuvjetnog
skoka (tzv. uvjetni skok)

GRNANJE
LOGIKE OPERACIJE (###)

Usporeivanje:
varijable s varijablom (x s y, z s k, i sl.)
varijable s brojem (x s 0, y s -9999, i sl.)
Logiki operatori:
=
jednako
>
vee od
<
manje od
>= vee ili jednako
<= manje ili jednako
<> razliito od

Algoritmi i programiranje raunala

16

GRANANJE
u kombinaciji sa strukturom bezuvjetnog skoka
(sprijeavanje unosa nule kao djelitelja)
1. X=100, S=0, Y=0
2. Uitaj Y
3. Ako je Y=0 Idi na 6
4. S=X/Y
5. Ispii S
6. Kraj

GRANANJE
u kombinaciji sa slijednom strukturom
(sprijeavanje unosa nule kao djelitelja?!)
1. X=100, S=0, Y=0
2. Uitaj Y
3. Ako je Y=0 onda Y=1
4. S=X/Y
5. Ispii S
6. Kraj

Algoritmi i programiranje raunala

17

GRANANJE
u kombinaciji sa strukturom bezuvjetnog skoka
(ponavljanje - sprijeavanje unosa nule kao
djelitelja)
1. X=100, S=0, Y=0
2. Uitaj Y
3. Ako je Y=0 onda idi na 2
4. S=X/Y
5. Ispii S
6. Kraj

GRNANJE LOGIKA GREKA


Skok na nepostojeu adresu (kod pseudo koda)
1. X=100, S=0, Y=0
2. Uitaj Y
3. Ako je Y=0 onda idi na 7
4. S=X/Y
5. Ispii S
6. Kraj
Nastaje zbog auriranja redova algoritma bez
auriranja instrukcija koje sadre
skok (savjet: numerirati svaki red
s korakom 10 npr. 100, 110, 120.)

Algoritmi i programiranje raunala

18

ITERACIJA (PONAVLJANJE)
Evoluirala iz kombinacije slijedne strukture i
strukture uvjetnog skoka
Vie vrsta iteracija - bavit emo se samo
iteracijama s unaprijed definiranim konanim
brojem koraka

x. Za I=1 do K

z. Poveaj I

ITERACIJA (PONAVLJANJE)
Omoguava uitavanje konanog broja brojeva, te
rauna kumulativ
1. S=0, X=0, I=0
2. Za I=1 do 4
3. Uitaj X
4. S=S+X
5. Poveaj I
6. Ispii S
7. Kraj

Algoritmi i programiranje raunala

19

ITERACIJA (PONAVLJANJE)
Izraun Faktorijela (X!)

1. F=1, X=0, I=0


2. Uitaj X
3. Za I=1 do X
4. F=F*I
5. Poveaj I
6. Ispii F
7. Kraj

PITANJA!

Algoritmi i programiranje raunala

20

PROGRAMIRANJE

TEMELJNI POJMOVI
PROGRAMIRANJE
postupak kreiranja programa
PROGRAM
skup instrukcija (uputa) raunalu kako da radi
PROGRAMSKI JEZK
skup pravila* (sintaksa) za pisanje programa
STROJNI JEZIK
instrukcije ugraene u procesor temeljem koji
procesor manipulira s podacima
* Zapisan algoritam prema tim pravilima i pohranjen u
raunalu u obliku teksta posebnim programima mogue je
prevesti u stroju razumljiv kod (strojni jezik)

Algoritmi i programiranje raunala

21

RAZINE PROGRAMSKIH JEZIKA


Nii programski jezici
Zahtijevaju dobro poznavanje strukture raunala,
procesorske instrukcije i procese u raunalu
poznavanje logike rada stroja
Primjer: Asembler simboliki jezik

Vii programski jezici


Nastali objedinjivanjem vie asemblerskih instrukcija u
jednu, stoga blii nainu razmiljanja ovjeka, te se
programer moe usredotoiti na problem. to je
programski jezik na viem nivou to je manje potrebno
znati o principima rad raunala (vidi generacije)
Primjer: Basic, Pascal, Fortran,.

PRIMJER ASEMBLERSKOG PROGRAMA


Prikazani kod programa napisan je u programskom
jeziku..
LD

A,2

U registar A upii broj 2

LD

B,3

U registar B upii broj 3

ADD A,B

U registar A upii vrijednost


registra A uveanog za
registar B

10 bodova

Algoritmi i programiranje raunala

22

GENERACIJE PROGRAMSKIH JEZIKA


I. generacija
Strojni kod
II. generacija
Asembleri (jedna instrukcija strojnog koda =
jedna asembler instrukcija)
III. generacija
Nastala objedinjavanjem vie asemblerskih
instrukcija u jednu (Basic, Fortran, Cobol,
Pascal, PL1, C, )
IV. generacija
Ne proceduralni jezici (upitni jezici, generatori
izvjea, generatori aplikacija)
V. generacija
Prirodni govorni jezik

NAMJENA PROGRAMSKIH JEZIKA


Nekada: Matematiki
Primjer: Fortran (Formula+Translator)
Poslovni
Primjer: Cobol
Konceptualni
Primjer: C
Orijentirani na baze podataka
Primjer: SQL
Univerzalni
Primjer: PL1

..

Danas: Svi programski jezici tee univerzalnosti


(i sa stajalita namjene i sa stajalita
platforme)

Algoritmi i programiranje raunala

23

ORIJENTACIJA PROGRAMSKIH JEZIKA


Jezici orijentirani ka sistemskom* programiranju
Zahtijeva dobro poznavanje grae stroja i
procesa koji se u stroju odvijaju
Jezici orijentirani ka korisnikom programiranju
Zahtijeva dobro poznavanje sustava obrade
podataka za koji se pie program
Kombinirani jezici

* Programiranje za potrebe operacijskog sustava


(programa koji omoguava elementarnu komunikaciju
izmeu stroja i ovjeka)

TIPOVI PROGRAMIRANJA
Jednostavno programiranje
Strukturirano programiranje (uvoenje reda u
jednostavno programiranje)
Modularno programiranje (moduli po naelu crne kutije)
Objektno programiranje (objektu se mijenjaju
svojstva)
Makro programiranje (integracija izvodljivih
programa procesa)
Markup programiranje (HTML)

..

Algoritmi i programiranje raunala

24

TIPOVI PROGRAMIRANJA
Izrada Algoritma:

(Definiranje problema, Razumijevanje


problema, Pisanje algoritma, Testiranje
algoritma, Ispravljanje algoritma,
Kreiranje dokumentacije)

Prevoenje Algoritma u programski jezik


Zapisivanje programa u raunalu
Prevoenje programa u strojni jezik
Testiranje programa

Iterativni proces

Ispravljanje greaka (BUG-ovi)


Izrada dokumentacije (opisa programa i upute za rad)

Kvalitetna priprema (izrada algoritma)


klju dobrog programiranja

BUG-ovi
Zapisala Grace Murray Hopper
Harvard University
Raunalo Mark II
Aiken Relay Calculator
(a primitive computer).

Algoritmi i programiranje raunala

25

PRIA O BUG-u

ALGORITAM2PROGRAMSKI JEZIK
Algoritam

Basic

UITAJ

INPUT

ISPII

PRINT

KRAJ

END

IDI NA

GOTO

AKO JE
ONDA
U PROTIVNOM

IF
THEN
ELSE

ZA

FOR

DO

POVEAJ

Algoritmi i programiranje raunala

Struktura
Slijedna

TO

Bezuvjetni skok
Uvjet (grananje)
Iteracija

NEXT

26

PROGRAMSKI JEZIK2STROJNI JEZIK


Program napisan u programskom jeziku (tekst)
Interpreter
(simultano prevoenje)
Compiler
Program na strojnom jeziku (u binarnom obliku
zapisane instrukcije koje razumije procesor)
Prevedeni oblik pohranjuje se i
Dok se instrukcije
uva u binarnom obliku
prevode one se i
(datoteci)
i po potrebi na zahtjev
izvravaju (program
korisnika pokree i izvrava
radi), tako da rezultat
(datoteke tipa EXE i COM)
interpretiranja nije
binarna datoteka
Naelno:
Interpretiranjem se bre pokree program, ali on
sporije radi!

IZVORNI (NEPREVEDENI) PROGRAMI


Tekstovi koji se pohranjuju u datoteke na
ureajima vanjske memorije (diskove, diskete,)
Obino su te datoteke oznaene posebnim
nastavcima koji aludiraju na programski
jezik u kojem je program napisan

Primjer naziva datoteke:


ime.nastavak

(nastavak 3 slova)

BAS-Basic, PAS-Pascal, FOR-Fortran

Algoritmi i programiranje raunala

27

PROGRAMI PREVODITELJI
Binarni program (kao datoteka smjeten na ureaju
vanjske memorije) koji nakon startanja simultano ita
datoteku u kojoj je smjeten izvorni program, prevodi
instrukciju po instrukciju u procesoru razumljiv niz
instrukcija strojnog koda,
(ako je interpreter)

a procesor te instrukcije
izvrava i tako izvodi program

(ako je compiler)

a rezultat prevoenja smjeta


kao datoteku (binarnu) na
ureaj vanjske memorije.
Ovakva datoteka izvodljivi je
program.

Ureaji u raunalu nosioci programa:


ROM ipovi
primaju jednostavne programe u strojnom jeziku i
omoguavaju osnovne ivotne funkcije stroja
Vanjska memorija
uva programe u izvornom (programskom) jeziku u
tekstualnom obliku i programe u prevedenom strojnom (binarnom) obliku kao datoteke
RAM
preuzima programe na zahtjev procesora (zahtjev
nastaje temeljem izvoenja nekog drugog programa,
npr. programa operacijskog sustava) sa vanjske
memorije i instrukcije u strojnom obliku predaje
procesoru koji ih izvrava

Algoritmi i programiranje raunala

28

to e se od programiranja nadalje raditi:


SISTEMSKI SOFTVARE (programi)
BIOS, operacijski sustavi, pomoni
sistemski programi, programi prevodioci,

KORISNIKI SOFTVARE (programi)


Poslovni uredski programi, programi za
upravljanje s bazama podataka, programi za
pomo u odluivanju,

Za sve to se u stroju deava


ili ne deava odgovorni su
PROGRAMI!

Algoritmi i programiranje raunala

29

PITANJA!

Algoritmi i programiranje raunala

30

You might also like