Algoritmi PDF

You might also like

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

SADRAJ: ALGORITMI

2,5 sati

ALGORITMI I PROGRAMIRANJE RA!UNALA


4 sata
Mr.sc. Branimir Duki", dipl oec.

OPERATIVNI CILJEVI UPOZNATI SE S ALGORITMIMA, NJIHOVOM FORMOM, RADOM , SVRHOVITO#U, TE UO!ITI VEZU IZME$U ALGORITAMA I PROGRAMIRANJA

PROGRAMIRANJE I PROGRAMSKI JEZICI


OPERATIVNI CILJEVI

%,5 sati

UPOZNATI SE S PROGRAMIRANJEM, VEZOM STROJ-PROGRAM, PROGRAMSKIM JEZICIMA, GENERACIJAMA, EVOLUCIJOM PROGRAMSKIH JEZIKA, TE TRENDOVIMA U RAZVITKU PROGRAMSKIH JEZIKA

UPITNIK
Pojam algoritam je nastao od imena i prezimena &ovjeka kojega smatraju najzaslunijim za izgradnju informati&kog highwaya u USA. Taj &ovjek je

ALGORITMI

DA

NE

to je to zapravo algoritam?
Za pojam zasluan arapski matemati&ar iz IX. stolje"a:
U ru&noj (manualnoj) obradi podataka, skup postupaka koje treba u&initi da bi se rijeio zadatak npr. Algoritam je i nau&en postupak mnoena u osnovnoj koli

Muhamed ibn Musa Al Horezmi (u prijevodu: Muhamed sin Muse iz Horezma)


Napisao knjigu u kojoj je razradio postupke i pravila za provo'enje aritmeti&kih operacija s brojevima zapisanim u dekadskom obliku.

23* 32 69 46 736
+

IZAZOV PLUS
to je algoritam u ru&noj obradi to je u (polu)automatskoj i elektroni&koj obradi?

Tko to procesuira*

Algoritam

Program

to je program?
%0 bodova
* proces od lat. processus napredak, rastanje

Algoritam je i: Recept u kuharici Upute za uporabu Proces spajanja gena

to su bitne karakteristike algoritma?


Orijentiranost k cilju (rezultatu) Kona&nost (upotrebljivost) Ponovljivost uz iste ulazne uvijete Razumljivost procesnoj jedinici Instruktivnost (formira se u obliku naredbi)

. . .

Na&elna struktura algoritma:*


Op"i algoritmi (zbrajanje unesenih brojeva):
Definiranje Ulaz Obrada Izlaz

Predmet naeg izu&avanja je:

ELEKTRONI!KA OBRADA PODATAKA


Karakteristike:
Obavlja se pomo"u elektroni&kog ra&unala Predmet obrade su podaci (sve to se moe digitalizirati: brojevi, alfanumeri&ki znakovi, slike, video zapisi, tonski zapisi)

Specijalizirani algoritmi (ra&unanje broja e):


Definiranje Obrada Izlaz

* Manipulacije nad objektima

Algoritmi - predmet naeg interesa su faza u procesu izrade programa za elektroni&ku obradu podataka Faze nastanka programa:
%. Definiranje problema 2. Razumijevanje problema 3. Izrada algoritma (iskusni programeri u glavi) 4. Prevo'enje algoritma u programski jezik 5. Strojno prevo'enje (interpretacija) i testiranje programa 6. Korekcija i prilagodba programa 7. Izrada popratne dokumentacije i uputa za rad

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 %:%

Algoritam se zapisuje u:
%. Obliku pseudo (meta) jezika (govornog jezika koji oponaa programski jezik) i/ili 2. Grafi&kom obliku, tzv. Blok dijagram ili dijagram tijeka programa

Proces nastajanja algoritma


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

os dn O

ai m rit go al

a m ra og pr

Prevo'enje

Program se zapisuje u:
Programskom jeziku

Program se izvodi u:
Strojnom jeziku

ALGORITMI 3. Generacije programskih jezika (Basic)

Algoritam grade:*
Predmeti i sredstva obrade (objekti - podaci): Varijable Konstante Matemati&ki i logi&ki operatori Algoritamske strukture

PRAVILA SINTAKSE **
* Algoritmi koje "emo izu&avati su algoritmi za obradu numeri&kih podataka ** gr&. syntaxis sastavljam, sre'ujem; gram. Skladnja

Vrste podataka (objekata) Kompjuterom se obra'uje sve to se moe digitalizirati konvertirati u broj (u binarni brojevni sustav 0 i %) Izdvajamo: Numeri&ke podatke (brojevi) 0, %%%.00%, %0E23, Alfanumeri&ke podatke (brojevi i slova) Pero, 0, %%%.00%, OSIJEK, Ostali tipovi: logi&ki, datumski, memo,

Varijable* Ozna&avaju se simbolima kao i u matematici (postoje za pojedine programske jezike pravila ozna&avanja, tzv. pravila notacije) Primjeri varijabli: X, y, z, broj, ime, god, nIznos,

franc. varijable, mat. promjenjiva veli&ina, promjenljiva vrijednost

Konstante* Ozna&avaju se simbolima kao i u matematici (postoje za pojedine programske jezike pravila ozna&avanja, tzv. pravila notacije) Konstante tijekom izvo'enja algoritma ne mijenjaju po&etno pridruenu vrijednost (najpoznatije su e=2,7%8, Pi=3,%4%) Primjeri konstanti: Pi, e, p, g, nGravit,
lat. constans mat. stalan, nepromjenljiva veli&ina

Operatori* Ozna&avaju se matemati&kim simbolima =, +, -, *, /, ^, (, ), <, > Koriste se u aritmeti&kim i logi&kim operacijama Operacije se izvode od lijeva na desno pritom potuju"i pravila: Komutacije Asocijacije Stupnjevanja
mat. znak (predznak) kojim se obiljeava na&in izvo'enja operacije

IZAZOV PLUS
Kolika je vrijednost varijabli x, y, s i pi nakon sljede"ih operacija: x=4, y=2, s=2, pi=3,%4 s=4+x/y+%, x=x+e

Paradoks znaka jednakosti: U aritmeti&kim operacijama zna&i pridruivanja (u nekim programskim jezicima se ozna&ava s :=)

I=I+%
U logi&kim operacijama zna&i vaganje %0 bodova

to je 7,%4; 2; 7; 3,%4

Ako je i=%0

Algoritamske strukture:
Slijedna (linearne ili sekvencijalne) Po&etak i kraj Definiranje varijabli i konstanti Ulaz Izlaz Aritmeti&ke i logi&ke operacije Struktura bezuvjetnog skoka Struktura grananja (sadri logi&ke operacije) kombinira se sa: Slijednom strukturom Strukturom bezuvjetnog skoka Struktura iteracije (ponavljanja ili petlje)

Slijedna struktura (moj prvi algoritam)


Po&etak Definiranje varijabli i konstanti START
X=0, Y=0, S=0

PSEUDO JEZIK

BLOK DIJAGRAM

%. X=0, Y=0, S=0 Ulaz 2. U&itaj x 3. U&itaj y Aritmeti&ka operacija 4. S=X+Y Izlaz Kraj 5. Ispii S 6. Kraj

X Y S=X+Y S

Pozor!

STOP Kod pisanja algoritma u pseudo jeziku (kodu) linije se obi&no ozna&avaju rednim brojevima

Testiranje algoritma Izvodi se kao i u matematici uvrtavanjem vrijednosti u algoritam Algoritam se testira sekvencialno pra"enjem svakog reda (instrukcije) algoritma od po&etka do kraja, uz zapisivanje vrijednosti koje varijable usput poprimaju, da bi se u kona&nici saznala kona&na vrijednost izlaznih varijabli

IZAZOV PLUS
Kolika je vrijednost varijable s nakon izvo'enja algoritma, ako za x u&itamo 2, a za y u&itamo 5:
%. X=0, Y=0, S=0 2. U&itaj X 3. U&itaj Y 4. S=S+Y 5. Ispii S

to je 7

%0 bodova

Greke u algoritmu sintaksne* greke (Bug**-ovi) Formalne su pravopisne greke i tipfeler greke
npr. %0. Iskii S 23. A-A+% isp. isp. %0. Ispii S 23. A=A+%

Logi&ke greke u slijednoj algoritamskoj strukturi Nedefinirane varijable:


npr. %. U&itaj A 2. S=S+% Koliki je S? isp. %. S=0, A=0 2. U&itaj S 3. S=S+%

Logi&ke greke naj&e"e nastaju zbog:


Nerazumijevanja problema Nepoznavanja logike rada stroja Niskog programerskog iskustva npr.

Dijeljenje s nulom:
%. A=0, S=0 2. U&itaj B 3. S=B/A Koliki je S?

Greke se ispravljaju testiranjem (tzv. debugiranjem)


* gr&. syntaxis sastavljam, sre'ujem; gram. Skladnja ** eng. bug stjenica, kukac, buba u glavi, kvar, zaraza

Kako sprije&iti unos nulu kao djelitelja?

Struktura bezuvjetnog skoka (naruavanje linearnosti) PSEUDO JEZIK


x. Idi na y Gdje su x i y brojevi linija algoritma bez obzira na smjer

Struktura bezuvjetnog skoka u testiranju algoritma


Omogu"ava preskakanje dijela algoritma &esto se koristi ali se rijetko crta START

BLOK DIJAGRAM

PSEUDO JEZIK

BLOK DIJAGRAM

Struktura bezuvjetnog skoka Koristi se za testiranje algoritma (preska&e dio algoritma) Izaziva greku bezuvjetnog ponavljanja (tzv. Beskona&na petlja ili iteracija) Kombinira se s strukturom grananja radi naruavanja linearnosti / uspostavljanja ponavljanja (dijela) algoritma

%. X=%00, S=0 2. Idi na 5 3. U&itaj Y 4. S=X/Y 5. Ispii S 6. Kraj

X=%00, S=0

Y S=X/Y S STOP

Struktura bezuvjetnog uzrokuje beskona!nu iteraciju


!esta greka zbog koje je bezuvjetni skok na loem glasu %. X=%00, S=0 2. U&itaj Y 3. S=X/Y 4. Idi na 3 5. Ispii S 6. Kraj START
X=%00, S=0

IZAZOV PLUS
Kolika je vrijednost varijable s nakon izvo'enja algoritma, ako za x u&itamo 2, a za y u&itamo 3:
%. X=0, Y=0, S=0 2. U&itaj X 3. U&itaj Y 4. Idi na to&ku 6 5. S=S+Y 6. Ispii S

Struktura grananja (naruavanje linearnosti) PSEUDO JEZIK BLOK DIJAGRAM


### NE $$$ x. Ako je ### onda $$$ [u protivnom $$$] [ moe a ne mora]

PSEUDO JEZIK

BLOK DIJAGRAM

Y S=X/Y S STOP

to je 0

%0 bodova

Struktura grananja (naruavanje linearnosti) LOGI!KE OPERACIJE (###)


Upore'ivanje: varijable s varijablom (x s y, z s k, i sl.) varijable s brojem (x s 0, y s -9999, i sl.) Logi&ki operatori: = > < >= <= <> jednako ve"e od manje od ve"e ili jednako manje ili jednako razli&ito od

DA

$$$

$$$ NE

###

DA $$$

Gdje su x ### $$$

broj linije algoritma logi&ka operacija slijedna operacija i/ili operacija bezuvjetnog skoka (tzv. uvjetni skok)

Struktura grananja - naruavanje linearnosti) u kombinaciji sa strukturom bezuvjetnog skoka PSEUDO JEZIK
%. X=%00, S=0 2. U&itaj Y 3. Ako je Y=0 Idi na 6 4. S=X/Y 5. Ispii S 6. Kraj START
X=%00, S=0

Struktura grananja - naruavanje linearnosti) u kombinaciji sa slijednom strukturom PSEUDO JEZIK BLOK DIJAGRAM
%. X=%00, S=0 2. U&itaj Y 4. S=X/Y 5. Ispii S 6. Kraj START
X=%00, S=0

BLOK DIJAGRAM

Y Y=0 NE S=X/Y S DA

Y Y=0 NE S=X/Y S DA Y=%

3. Ako je Y=0 onda Y=%

Ovako sprije&iti unos nulu kao djelitelja!

STOP

Ovako sprije&iti unos nulu kao djelitelja!?????

STOP

Struktura grananja uspostavljanje ponavljanja) u kombinaciji sa strukturom bezuvjetnog skoka PSEUDO JEZIK
%. X=%00, S=0 2. U&itaj Y 3. Ako je Y=0 onda idi na 2 4. S=X/Y 5. Ispii S 6. Kraj START
X=%00, S=0

Logi!ka greka u algoritamskoj strukturi grananja Skok na nepostoje"u adresu (kod pseudo koda) BLOK DIJAGRAM
%. X=%00, S=0 2. U&itaj Y 3. Ako je Y=0 onda idi na 7 4. S=X/Y 5. Ispii S 6. Kraj

Y Y=0 NE S=X/Y S DA

Ovako sprije&iti unos nulu kao djelitelja!!!!!

STOP

Nastaje zbog auriranja redova algoritma bez auriranja instrukcija koje sadre skok (savjet: numerirati svaki red s korakom %0 npr. %00, %%0, %20.)

IZAZOV PLUS
Ako se drugom instrukcijom u&ita broj -5, nakon izvo'enja algoritma "e ispisati?
START Y NE Pozitivan broj STOP Y>=0 DA Negativan broj

Struktura iteracije (uspostava ponavljanja)


Evoluirala iz kombinacije slijedne strukture i strukture uvjetnog skoka
I=0

x. Za I=% do K

BLOK DIJAGRAM

PSEUDO JEZIK

I=%,K

BLOK DIJAGRAM

I=I+%

z. Pove"aj I

I<=K NE

DA

to je Pozitivan broj

Vie vrsta iteracija %0 bodova


bavit "emo se samo iteracijama s unaprijed definiranim kona&nim brojem koraka

Struktura iteracije uspostavljanje ponavljanja


Omogu"ava u&itavanje kona&nog broja brojeva, te ra&una kumulativ START %. X=0, S=0, I=0 2. Za I=% do 4 3. U&itaj X 4. S=S+X 5. Pove"aj I 6. Ispii S 7. Kraj
X=0, S=0, I=0 I=%,4

Struktura iteracije uspostavljanje ponavljanja


Izra&un Faktorijela (X!) %. X=0, F=%, I=0 START
X=0, F=%, I=0

IZAZOV PLUS
to "e ispisati algoritam ako iterativno u&itamo brojeve: 2,3,2
%. X=0, Y=0, S=0 2. Za I=% do 3 3. U&itaj X 4. S=S+X 5. Ispii S 6. Pove"aj I 7. Kraj

to je 2,5,7

PROGRAMIRANJE - postupak kreiranja programa PROGRAM skup instrukcija (uputa) ra!unalu kako da radi skup pravila* (sintaksa) za pisanje programa

PSEUDO JEZIK

BLOK DIJAGRAM

PSEUDO JEZIK

BLOK DIJAGRAM

3. U&itaj X 2. Za I=% do X 4. F=F*I 5. Pove"aj I 6. Ispii F 7. Kraj

X
I=%,X

X S=S+X
I

F=F*I
I

S STOP

F STOP

PROGRAMIRANJE

%0 bodova

Klasifikacija programskih jezika: prema razini Nii programski jezici


Zahtijevaju dobro poznavanje strukture ra&unala, procesorske instrukcije i procese u ra&unalu poznavanje logike rada stroja Primjer: Asembler simboli&ki jezik

PROGRAMSKI JEZK STROJNI JEZIK

instrukcije ugra"ene u procesor temeljem koji procesor manipulira s podacima

Vii programski jezici


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

* Zapisan algoritam prema tim pravilima i pohranjen u ra!unalu u obliku teksta posebnim programima mogu#e je prevesti u stroju razumljiv kod (strojni jezik)

IZAZOV PLUS
Prikazani kod programa napisan je u programskom jeziku.. LD LD A,2 B,3 U registar A upii broj 2 U registar B upii broj 3 U registar A upii vrijednost registra A uve"anog za registar B %0 bodova

Klasifikacija programskih jezika: prema generacijama 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, PL%, C, ) IV. generacija Ne proceduralni jezici (upitni jezici, generatori izvje"a, generatori aplikacija) V. generacija Prirodni govorni jezik

ADD A,B

to je Asembler?

Klasifikacija programskih jezika: prema namjeni Matemati&ki Primjer: Fortran (Formula+Translator) Poslovni Primjer: Cobol Konceptualni Primjer: C Orijentiran na baze podataka Primjer: dBase Univerzalni Primjer: PL%

Klasifikacija programskih jezika: prema orijentaciji Jezici orijentirani ka sistemskom* programiranju Zahtijeva dobro poznavanje gra'e stroja i procesa koji se u stroju odvijaju Jezici orijentirani ka korisni&kom programiranju Zahtijeva dobro poznavanje sustava obrade podataka za koji se pie program Kombinirani jezici

..

Danas svi programski jezici tee univerzalnosti (i sa stajalita namjene i sa stajalita platforme)

* Programiranje za potrebe operacijskog sustava (programa koji omogu#ava elementarnu komunikaciju izme"u stroja i !ovjeka)

Tipovi programiranja
Jednostavno programiranje Strukturirano programiranje (uvo'enje reda u jednostavno programiranje) Modularno programiranje (moduli po na&elu crne kutije) Objektno programiranje (objektu se mijenjaju svojstva) Makro programiranje (integracija izvodljivih programa procesa) Markup programiranje (HTML)

Proces nastajanja Programa


Izrada Algoritma: (Definiranje problema, Razumijevanje problema, Pisanje algoritma, Testiranje algoritma, Ispravljanje algoritma, Kreiranje dokumentacije)

Prevo'enje Algoritma u programski jezik Zapisivanje programa u ra&unalu Prevo'enje programa u strojni jezik Testiranje programa Ispravljanje greaka Izrada dokumentacije (opisa programa i upute za rad) Iterativni proces

..

Kvalitetna priprema (izrada algoritma) klju& dobrog programiranja

Prevo'enje Algoritma u Programski jezik (Tablica ekvivalenata algoritamske i Basic instrukcije)


Algoritam U&itaj Ispii Kraj Idi na Ako je .. Onda u protivnom Za do Pove"aj Basic Input Print End Go to IF then . else . For to Next Bezuvjetni skok Uvjet (grananje) Iteracija Slijedna Struktura

IZAZOV PLUS
to "e ispisati algoritam ako iterativno u&itamo brojeve: %,2,3
%. X=0, Y=0, S=0 2. For I=% to 3 3. Input X 4. S=S+X 5. Print S 6. Next I 7. End

to je %,3,6

%0 bodova

Prevo'enje Programskog jezika u Strojni jezik Program napisan u programskom jeziku (tekst)
Pomo#u programa prevoditelja koji moe biti

IZAZOV PLUS
Jezici orijentirani ka sistemskom programiranju u strojni jezik uglavnom se prevode pomo"u ..

Interpreter (simultano prevo'enje)


Prevodi se u

Compiler

Program na strojnom jeziku (u binarnom obliku zapisane instrukcije koje razumije procesor)
Dok se instrukcije prevode one se i izvravaju (program radi), tako da rezultat interpretiranja nije binarna datoteka Prevedeni oblik pohranjuje se i !uva u binarnom obliku (datoteci) i po potrebi na zahtjev korisnika pokre#e i izvrava (datoteke tipa EXE i COM)

to je Compiler?

Na!elno:

Interpretiranjem se bre pokre#e program, ali on sporije radi! ZATO?

%0 bodova

Programi u neprevedenom (izvornom) obliku su*: tekstovi koji se pohranjuju u datoteke na ure'ajima vanjske memorije (diskove, diskete,) Obi&no su te datoteke ozna&ene posebnim nastavcima koji aludiraju na programski jezik u kojem je program napisan Primjer naziva datoteke: ime.nastavak (nastavak 3 slova)

Programi prevoditelj: Binarni program (kao datoteka smjeten na ure'aju 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) (ako je compiler) a procesor te instrukcije izvrava i tako izvodi program a rezultat prevo'enja smjeta kao datoteku (binarnu) na ure'aj vanjske memorije. Ovakva datoteka izvodljivi je program.

BAS-Basic, PAS-Pascal, FOR-Fortran


* u na&elu

Ure'aji u ra&unalu nosioci programa:


ROM &ipovi primaju jednostavne programe u strojnom jeziku i omogu"avaju 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 izvo'enja nekog drugog programa, npr. programa operacijskog sustava) sa vanjske memorije i instrukcije u strojnom obliku predaje procesoru koji ih izvrava

to "e se od programiranja nadalje raditi: SISTEMSKI SOFTVARE (programi) BIOS, operacijski sustavi, pomo"ni sistemski programi, programi prevodioci, KORISNI!KI SOFTVARE (programi) Poslovni uredski programi, programi za upravljanje s bazama podataka, programi za pomo" u odlu&ivanju,

PITANJA!
Za sve to se u stroju deava ili ne deava odgovorni su PROGRAMI!

You might also like