P. 1
Odgovori Prvi kolokvijum

Odgovori Prvi kolokvijum

|Views: 390|Likes:
Published by ArminMaglić

More info:

Published by: ArminMaglić on Aug 05, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

09/28/2013

pdf

text

original

/

ALGORITMI

, Rjesavanje problemaprtmjenom raeunara
,

Rjesavanje problema primjenom racunara prolazi kroz tri faze: ./ analiza problema; ./ razvoj algoritma za rjesavapje problema; ./ transfonnacija algoritma iiracunarski program (programiranje ).

Analiza problema Analiza problema je najkriticnija faza u rjesavanju problema. Cilj ove faze je da pruzi preciznu definiciju i opis problema, specifikaciju ulaznih podataka, . specifikaciju izlaznih podataka (rezultate koji se f ~ce.ku~), kao ipostupak da se do takvih rezultata ~robTemi koji se mogu jednostavno izraziti matematickim jezikom mogu se i precizno definisati i opisati pri rjesavanju na racunaru. Za klasu nematematickih problema to nije tacno. Za fazu analize problema postoji vise razlicitih, manje ili vise fonnalizovanih, postupaka .

i 4

~---""">

Ne ulazeci u sustinu metoda, u najsirern smislu, one obuhvataju: 1.uocavanje (identifikaciju) problema, 2.definisanje (fonnulisanje) ciljeva rjesenja, 3. definisanje sistema koji omogucuje ostvarivanje definisanih ciljeva, 4. analizu definisanog sistema (studije izvodljivosti tehnicke i ekonomske), 5. projektovanje novog sistema, G.uvodenje i cksploataciju projektovanogsistema.

.

~ Algoritmi Algoritam predstavlja niz uputstava koje tacno odreduju redoslijed operacija koje ce dovesti do rjesenja za rna koji problem datog tipa.

Sta je algoritam?
• Abu Ja'far Mohammed ibn Musa al Khowarizmi • rod en u mjestu Khwarizm, danas Khiva, Uzbekistan, oko 780. g. • umro u Bagdadu, oko 850 godine. • jedan od 10 najcjenjenijih maternaticara svih vremena

Sta je algoritam?
pali~e koristenje Hindu-arapskih brojeva (pogresno smatranih arapskim izumam - vece zasluge imaju Indijci), uvadi nulu aka 825 godine napisao knjigu vjesrin! racunanja pornocu cetiri osnovne operacije: Hidab al-jabr w'ai-muqubala

°

(Nauka 0 prenosenju

i ponistenju)

jabr (JAB-ber) - prenosenje na suprotnu stranu jednacine x-2=I2qx=12+2 muqubala (moo-KAH-ba-Iah) - ponistenje jednakih izraza s Iijeve i desne strane jednacine x+y=y+7 q x=7 al-jabr -> algebra Nematernaticki (maursko porijeklo): algebrista q namjestac kostiju

Sta je algoritam?
• Vjerovao da se bilo koji rnaternaticki problem moze rasclaniti na korake, tj. niz pravila. • U latinskom prevodu knjige (12. vijek) ispred svakog pravila pise - Dixit Algorizmi
.(J.

Algoritam
• Precizno opisan nacin rjesenja nekog problema nekoj

• Jednoznacno odreduje

• Moraju biti definisani klasi objekata na kojima

sta treba napraviti pocetni objekti koji pripadaju
se obavljaju operacije

- rekao je Al Kowarzimi

• Kao ishod algoritma pojave se zavrsni objekt(i) iIi rezultat(i). • Konacni broj koraka; svaki korak opisan instrukcijom
• Obavljanje • Upotrebljiv, • Primjeri je algoritamski proces u ako se dobije rezultat

algoritam glasi • U pocetku algoritmom se nazivaju sarno pravila racunanja s brojevima, kasnije i pravila obavljanja ostalih zadataka u matematici • u XX vijeku, pojavom racunara, pojam se prosiruje na racunarstvo, a zatim ina druga podrucja pravila za postizanje zeljenog rezultata

konacnom

vremenu

za nedopustene instrukcije: - izracunaj 5/0 - uvecaj x za 6 ili 7

Algoritam
• Algoritam mora biti djelotvoran: se dobiti rezultat

- U konacnom vremenu moze koristeci olovku i papir.
• Primjeri: - Sabiranje - Sabiranje broj s • cijelih realnih brojevaje brojeva mnogo

djelotvorno - nije, jer se rnoze pojaviti cifri

beskonacno

Sa znanjem programiranja i uz razumijevanje problema koji rjesava, student rnoze napisati djc1otvoran

(effectille}algoritam.

_ ..

-

- --

• Mnozenje se rnoze svesti na ponavljanje djelotorno, alinije ucirlkovito!-..

sabiranja' __ ...

Karakteristicne osobine za algoritam jesu: 1. broj operacija koje se moraju izvrsiti za rjesenje konkretnog problema nije unaprijed poznat, 2. procedura odredena algoritmom je deterministicki proces koji se moze ponavljati bilo kad i od strane bilo koga; ona mora biti data u obliku konacnog broja instrukcija koje tacno definisu operacije koje se izvrsavaju u svakoj fazi procedure, 3. instrukcije koje cine algoritam definisu proceduru koja se rnoze izvrsiti na odgovarajucem skupu podatakai koja u svakom slucaju dovodi do korektnog rezultata.

Vazne osobinc algoritma jesu: Konacnost Algoritarn se mora okoncati poslije konacnog broja koraka. Definisanost Svaki korak algoritma mora biti precizno definisan (operacije koje treba da se izvedu moraju biti rigorozno specificirane, bez dvosmislenosti). Ulaz Oznacava ulazne podatke u algoritam. Za izvodenje pojedinog algoritrna moze biti potrebno vise ulaznih podataka, ali i nijedan. Ulazni podaci su velicine iz datog skupa i predstavljaju pocetne vrijednosti za pocetak izvodenja algoritma. Izlaz Oznacava izlazne podatke kao rezultat primjene algoritrna na uIazne podatke. Svaki algoritam posjeduje jednu ili vise izlaznih velicina. Efikasnost Kriteriji efikasnosti mogu biti vrijeme (racunara iIi covjeka) okoncanja algoritrna, prilagodenost algoritrna za realizaciju na racunaru, jednostavnost, elegancija itd.

Tehnike prikazivanja algoritama (tokom predavanja): ./ ./ ./ ./ Prirodnijezik (koracna forma) Dijagrami toka (Flowcharts) Pseudo k6d (Pseudo cod) Nasi-Snajderman dijagrami (Nassi-SneidermanN/S diagrams) ./ Dzeksonovi strukturalni dijagrami (Jackson Structured Diagrams - JSD)
_

L-

Prirodni jezik
Ovom tehnikom se algoritam \,brojem oznacenih koraka. prikazuje kao niz

Prirodni jezik
Jednostavan primjer: racunara) dvostruku vrijednost unijet u racunar (npr. pomocu

Svaki korak sadrzi jednu iIi vise recenica prirodnog jezika (npr. srpskog) kojim se opisuje proces (operacija) koju u tom koraku treba izvrsiti.

Prikazati (na monitoru broja kojije prethodno tastature).

Prirodni jezik
Algoritam u prirodnomjeziku: 1. Traziti od korisnika da uz pomoc tastature unese broj. 2. Ucitati broj koji korisnik ukuca na tastaturi. 3. Pornnoziti ucitani broj brojem 2. 4. Prikazati rezultat operacije iz koraka 3 na monitoru racunara,

Prirodni j erik Sekvenca se prikazuje jednostavno nizanjem koraka jedan za drugim, pri cemu svaki korak dobija redni broj u redoslijedu kojim treba da se izvrsavaju, Odluka se prikazuje opisom uslova i uputstvom na koji korak se ide za slucaj da je uslov ispunjen, a na koji korak kada uslovnije ispunjen. Na slican nacin mozemo izvrsiti i selekciju iz vise mogucih rezultata nekog uslova. Repeticija - iteracija se postize tako 5tO se izvrsenje nastavlja nekim korakom kojiimamanji redni broj od onog u kojem se postavlja uslov-repeticije.

Prirodni jezik Prednosti prirodnog jezika:
,l'lednostavan za ucenje, jer se ionako sluzimo prirodnim jezikom. Nedostaci prirodnog jezika: - Koraci su predugacki jer se mora koristiti puno rijeci za njihov opis. - Prevodenje iz prirodnog jezika u kompjuterski jezik moze biti tesko jer za razliku od prirodnih jezika, kompjuterski (programski) jezici imaju vrlo precizno definisanu sintaksu (gramatiku) i semantiku (znacenje).

Blok dijagrami algoritma 1 Blok dijagrami su graficka predstava \algoritama sa ciljem njihove specifikacije [pomocu skupa grafickih simbola koji j oznacavaju pojedine operacije u algoritmu i i skupa pravila za povezivanje grafickih Isimbola.
{

Ukratko se predstavljaju pojedini simboli koji se najcesce koriste za prikazivanje algoritama. Treba napomenuti da postoje nacionalni standardi za predstavljanje pojedinih algoritamskih koraka, tj. u svijetu nije unificirano predstavljanje algoritama.

I ,

r~~~bOI odvijanja toka algoritma
.

Simbol odvijanja toka algoritrna sluzi za oznacavanje logickog toka odvijanja algoritma povezujuci blokove koji predstavljaju algoritamske korake. Predstavljen je strelicama. Normalan smjer strelicaje sa lijeva na des no i odozgo na dole. I ostali smjerovi su dozvoljeni. Strelice se ne smiju sjeci, a ako je to neizbjezno, koriste se konektori.

\\ Simbol obrade se koristi za predstavljanje svih \ operacija u kojima dolazi do transformacije i informacionih struktura najcesce aritmetickim, logickirn ili operacijama prenosa informacionog J sadrzaja . <;

r: Simbolobrade

r:
I

\ Simbol ulaza/izlaza
\

\ Simbol ulazalizlaza se koristi za predstavljanje , ulazno/izlaznih operacija koje uvode podatke u \ obradu i/ili ispisuju rezultate obrade.

L

r::bOl

(

I i

za povezivanje dijelova algoritma kada se: koristi vise stranica te nije rnoguce koristiti I I strelice koje ukazuju na tok odvijanja algoritrna iIi I • dovodi do ukrstanja strelica. Unutar konektora se upisuje oznaka (broj iii slovo) koja identifikuje konektor. Konektori sa istom oznakorn predstavljaju tacke u algoritmu koje se poklapaju (rnoze ih biti dvije iIi vise).

I ~:;~bol povezivanja sluzi ! • za blok dijagrame

povezivanja

(konektor)

r-;mbolodluke Simbol odluke (testa) sluzi za oznacavanje operacija odlucivanja ili grananja toka izvodenja algoritma, a prema nekom kriterijumu odlucivanja. Razlikuju se dvije vrste testa: aritmeticki i L·logicki. Kod aritmetickog testa iz bloka odlucivanja postoje dva ili tri izlaza - ilustrovano je na narednoj slici. Dvotacka ( : ) se koristi za oznacavanje poredenja aritmetickih izraza s, i E2•
I •

I

Kraj

Kod logickog testa iz bloka odlucivanja postoje dva izlaza (slika desno).
\ v

,

Odvojanje algoritrna se nastavlja: ~ lijevom granom, ako je ispunjen uslov E[ > E2 ~ desnom granom, ako je ispunjen uslov E[ < E2 ~ donjo~ granom, ako je ispunjen uslov E[ = E2•

Nailaskom na logicki test algoritam se, u zavisnosti od logickog izraza L, odvijajednom od grana: ~ ukoliko je logicki izraz istinit algoritam se odvija granom oznacenom sa DA iii ~ ukoliko je logicki izraz neistinit algoritam se odvija granom oznacenom sa NE.

Znaci >, < i = se mogu kombinovati po dva.

r_-

.

.. ~ ....

.

Simbol podalgoritma
Simbol podalgoritma se koristi da oznaci vise algoritamskih koraka pogodno grupisanih u cjelinu i koju nije potrebno dalje razlagati u detalje. Motivacija za koriscenje podalgoritama: ../ ponavljajuce dijelove grupisati u podalgoritam, ../ dekompozicijaproblerna na manje:- -

( Simbol podalgoritma

Simbol komentara
Simbol komcntara omogucava upisivanje komentara iIi blizeg opisa karakteristicnih koraka algoritma. Stavlja se pored toka odvijanja algoritma.
x predstavlja ugao

Ostali graficki simboli sluze za blizu specifikaciju algoritamskih koraka.

Koriscenje blok dijagrama u predstavljanju algoritma ima sljedece prednosti: 1. olaksano je pracenje logickog toka odvijanja algoritma, 2. slozene algoritme je moguce dekomponovati na module koji se povezuju i cine hijerarhijsku strukturu algoritrna, 3. zbog graficke prirode simbola koji cine blok dijagram olaksana je komunikacija sa korisnicima algoritma, 4. blok dijagrami ornogucavaju predstavu algoritrna koja je nezavisna u odnosu na racunar iii prograrnskijezik koji ce se koristiti za rjesavanje algoritrna, 5. koriscenje blok dijagrama za predstavu algoritrna omogucava da veci broj lica istovremeno radi na razvoju dijelova (modula) jednog slozenog algoritma, odnosno da veci broj programera programira nezavisno pojedine dijelove algoritrna.

Nedostaci dijagrama toka: - Treba upamtiti znacenje grafickih simbola. - Kada postoji mnogo koraka odluke i ponavljanja, dijagram toka rnoze da se pretvori u vrlo zamrsenu mrezu iz koje je tesko saciniti valjan programski ked.

I

. \
\
I

Ova tehnika je veoma slicna prirodnom jeziku s tom razlikom sto se umjesto prirodnogjezika koristi neki drugijezik (slican prirodnom) koji ima precizniju sintaksu, koristi manji broj unaprijed zadatih rijeci, paje time lakse definisati i semantiku (znacenje) recenica koje se formiraju u tomjeziku. Takavjezik cesto pcdsjeca i na programskejezike, to jest on predstavlja kompromis izmedu prirodnog i programskogjezika. Kompromis u smislu daje dovoljnojednostavan i razumljiv za covjeka, a istovremeno pogodan za dalje transformisanje algoritma u program. Recimo takavjezik moze sadrzati rijeci kao sto su: display (za prikaz poruke na monitoru), read (za ucitavanje podatka), kao i simbole +,-," /,= za koriscenje u matematickirn formulama itd.
.

I ~.

::'_"..-.r'

Pseudo kod Tako nas prethodni primjer algoritma moze pseudo kodorn biti prikazan kako slijedi: I. 2. 3. 4. display poruka read broj rezultat = broj*2 display rezultat

Pseudo kdd Prednosti: ./' Jednostavan za ucenje skoro kao i kod prirodnog jezika. ./' Lilli za prevodenje u programski jezik, jer jako podsjeca na stvame programskejezike. Nedostaci: - Ova tehnika se oslanja na poznavanje takozvanih imperativnih (proceduralnih) jezika, pa za one koji se prvi put srecu sa ovom vrstom jezika moze biti malo zbunjujuce _ - mijesa se prirodni i simbolicki jezik.

Nasi-Snajdermanovi

dijagrami (N/S dijagrami)

Nasi-Snajdermanovi

dijagrami (N/S dijagrami)

I kod Nasi-Snajdermanovih algoritama se koriste graficki simboli kao i kod dijagrama toka, ali se ovdje citav algoritam stavlja ujedan jedini pravougaonik (boks). Simboli (koraci algoritma) se izvrsavaju pocev od prvog sirnbola na vrhu boksa i nastavljaju redom do poslednjeg na prikazanog dnu boksa. Svaki sirnbol sadrzi iii prirodnim jezikom iii pseudokodom prikazane naredbe (procese).

Postoje tri vrste simbola - za: • sekvencu, • odluku i • repeticiju

Nasi-Snajdermanovi
Simboli su:

dijagrami (N/S dijagrami)

Nasi-Snajdermanovi
Simboli su:

dijagrami (N/S dijagrami)

Naredba - proces

v

Pravougaonik - koristi se za naredbe koje se izvrsavaju jedna za drugom (sekvenca). Kada se sve naredbe iz pravouganika izvrse algoritam se nastavlja sljedecim N/S simbolom.

f----__;~::..._---I

'------'------'

Simbol za odluku se sastoji od dijela u kojem se nalazi uslov i dva prevougaonika koji sadrze alternativne naredbe ako je uslov ispunjen (Da) i ako nije (Ne). Kada se izvrsi odgovarajuca naredba algoritarn se nastavlja sljedecim N/S simbolom.

Nasi-Snajderrnanovi Simboli su:
Uslov?
r--------I

dijagrami (N/S dijagrami)

Nasi-Snajderrnanovi
Simboli su:

dijagrami (N/S dijagrami)

Naredbe
L..___l_

I

_j

·V

Repeticija se sastoji od uslova i naredbe (iii niza naredbi) koje se izvrsavaju sve dokje uslov ispunjen (while ciklus). Kada uslov nije ispunjen algoritam nastavlja rad sljedecirn N/S simbolom.

Naredbe

I
L-

L_

Uslov?

_j

Repeticija za slucaj do ...while ciklusa izgleda ovako: --I U ovom slucaju, za razliku od prethodnog, Naredbe ce biti izvrsene prije testiranja da li je uslov ispunjen. Akojeste ponavlja se izvrsavanje Naredbi, a: ako nije aJgoritam: nastavlja Tad sljedecim N/S simbolom.

Nasi-Snajdermanovi

dijagrami (N/S dijagrami)

Dzeksonovi strukturalni dijagrami (Jackson Structured Diagrams) - JSD dijagrami
Dzeksonovi dijagrami slijede ideju 0 podjeli problema na niz potproblema manje slozenosti (strategija poznata kao "devide and conquer" - podijeli pa vladaj). Ali oni takode zadovoljavaju i teoremu 0 programskoj strukturi, to jest JSD dijagrami imaju graficki sirnbol za sve tri osnovne kornponente algoritma - sekvencu, odluku i repeticiju.

Prednosti N/S dijagrama: .,t Graficka prezentacija algoritma olaksava pronalaZenje logickih gresaka u algoritmu (kao kod dijagrama toka). .,tLak~e se prevodi u programski kod nego dijagram toka. Tri programske strukture (sekvenca, odluka i repeticija) zastupljene su u svim programskim jezicima. < Posto nema strelica kao kod dijagrama toka ne mogu se kreirati zarnrsene strukture, vee algoritam "glatko" slijedi logiku rjesenja, Nedostaci N/S dijagrama: - Moraju se pamtiti graficki simboli koji predstavljaju sekvencu, odluku i repeticije. - Otezano je umetanje novih koraka u vee sacinjeni algoritam, a sto je bilo lako kod dijagrama toka (koriscenjem sirnbola za konekcijukruga). S druge strane nastavljanje algoritma na sljedecoj strani je jednostavno - nacrtate novi boks, a stranu obiljezite brojem 2, itd.

Dzeksonovi strukturalni dijagrami (Jackson Structured Diagrams) - JSD dijagrami a) Sekvenca Ovde je proces A slozen proces koji se sastoji od prostih procesa B i C. Da bi se obavio proces A potrebno je najprije obaviti proces B, a onda proces C. Potprocesi se, dakle, izvrsavaju slijeva udesno jedan za drugim. Naravno proces Aje mogao biti jedan jednostavan proces koji ne zahtijeva dalju podjelu.

Dzeksunovi strukturalni dijagrami (Jackson Structured Diagrams) - JSD dijagrami
b) Odluka (selekcija) Odluka se oznacava tako sto se proces A dijeli na procese B i C, ali uslovno, tako da se proces A ispunjava bilo izvrsavanjem procesa B (kada je uslov 1 ispunjen) bilo izvrsavanjem procesa C (kada je uslov 2 ispunjen). Uocite mali kruzic u gomjem desnom uglu pravougaonika procesa B i C. Ti se kruzici koriste da se pravougaonik odluke razlikuje od pravougaonika sekvence.

\

Dzcksonovi strukturalni dijagrami (Jackson Structured Diagrams) - JSD dijagrami
c) Repeticij a Repeticija - iteracijaje slozena komponenta koja se izvrsava ponavljanjem nekog procesa nula ili vise puta u zavisnosti da li je uslov ispunjen ili ne.

Dzeksonovi strukturalni dijagrami (Jackson Structured Diagrams) - JSD dijagrami Prednosti: ./ Graficka prezentacija algoritma olaksava pronalazenje Iogickih gresaka u algoritmu (kao kod dijagrama toka). ./ lednostavniji graficki simboli nego kod dijagrama toka i N/S dijagrama. ./ Slijedi logiku rjesenja podjelom na potprobleme. Nedostaci: - Ne uocavaju se lako odluke i repeticije. - Prevodenje u program ski k6d je nesto slozenije - mora se voditi racuna 0 redoslijeduizvrsavanja procesa.

'. -, 'v·~----- --------

Davanje naziva promjenIjivim
Promjenljive u algoritmu se oznacavaju imenima koja se obicno sastoje odjednog iIi vise slovnih i brojnih znakova, tako da je prvi znak obavezno slovo. Imena promjenljivih se biraju tako da ukazuju na prirodu promjenljive koju predstavljaju. Pogodno je da je duzina irnena sto kraca i da se nazivi promjenljivih u algoritmu i odgovarajucern programskomjeziku poklapaju.

Na narednoj slici predstavljen je blok dijagram algoritma za rjesavanje problema primjenom racunara.

Blok dijagram algoritma za rjesavanje problema primjenom racunara

Postupci izrade algoritama nisu j ednoznacni te zahtijevaju i kreativnost. Inace bi vee postojali generatori algoritama.

Programiranj

e

Nakon analize problema i razvoja odgovarajuceg algoritma za rjesavanje problema slijedi transformacija algoritma u racunarski program, odnosno implementacija algoritma na racunaru. Sustina programiranja je kodiranje (prevodenje) aIgoritma (iii racunarskih metoda) na odredeni programski jezik. Program se moze defmisati kao niz naredbi (instrukcija) pisanih u odredenom programskom jeziku (izvomomjeziku) koji posjeduje implicitan iii eksplicitan redoslijed izvrsavanja na racunaru.

Programiranje - nauciti sintaksu nekog proceduralnogjezika i steci osnovna intuitivna znanja, Nakon pisanja programa slijedi: ~ testiranje i ~ otkrivanje gresaka (debagiranje debugging): o greska u losoj definiciji problema o logicke greske u algoritmu o greske prilikom unosa programa.

Programski jezici i razvoj program a

Ciljevi ./ ./ ./ ./ ./ Sta je programski jezik Masinski jezik i asembler Visi program ski jezici Popularni programski jezici Razvojni ciklus programa

Programski jezici: • Programski jezikje skup naredbi za izvrsavanje racunarskih zadataka . • Predstavlja skup rijeci i skup pravila na osnovu kojih se pise program. • Razvojni ciklus programa skup pravila na kojima se zasniva razvoj softvera.

Programski

jezici:
Assembly Language

Razvoj programskih

jezika

Machine Language

'9HI6!I;f,ffj 'MII,,!M

liN:!.]'

• Program ski jezici su podijeljeni po generacijama • lezici najnizeg nivoa su najstariji • Postoji pet generacija programskihjezika: - Masinski jezici - Asemblerski jezici - Proceduralni jezici - Problern-orijentisani jezici - Prirodni jezici

Jezici prve generacije

Jezici druge generacije • Asemblerski jezici: - Nadogradnja masinskih jezika - Nizi programskijezik - Koristi kratke slovne zamjene za programske naredbe. • Ove slovne zamjene se nazivaju mnemonici - Program se prvo pise kao source code (tekstualni fajl), a potom se prevodi u masinski .jezik. -- -- -----

• Masinski jezici:
- Sastoje se od binamih brojeva (0 i 1) - Nije potrebno prevodenje - Vezanje za konkretan racunar (masinu) • Svaka familija procesora aa ima svoj (poseban) ~--~~====~~ masinski jezik."
.. 4d.r ....
0011)

10:""0000

0000

001)0

0000

0001 0000 0000 0000 0011) 0000 0(01) 0000

WAD Y .ADD X STORE Y

Ad4r.
",DO

:100'

16

-------,.--------

---

Jezici trece generacije • Proceduralni jezici: - lezici visokog nivoa - Kreiranje programa na visokom nivou apstrakcije - Laksi za citanje, pisanje i prepravke od masinskih i asemblerskihjezika - Koriste compiler ili interpreter za prevod koda • Fortran i COBOL sujezici trece generacije

Kompajleri

i Interpreteri

• Kompajler

je program koji prevodi k6d (source code) u objektni k6d. • Interpreter prevodi po jednu Iiniju k6da i odmahje izvrsava.

Jezici trece generacije (nastavak) • Spaghetti Code & the Great Software Crisis: - GOTO naredba dovelaje do toga da se program tesko prati - Taj problem je doveo do tzv. softverske krize 1960-tih godina. • Rokovi za programiranje su se probijali • Programi su "probijali" predvideni budzet • Programi su sadrzali previse gresaka • Korisnici nisu bili zadovoljni

Jezici trece generacije (nastayak) • Struktuirani programski jezici: - Razvijeni su kako bi unapredili razvoj softvera - Predstavnici Algol i Pascal - Zabrana upotrebe GOTO naredbi - Upotreba kontrolnih struktura - IF-THEN-ELSE

Jezici trece generacije (nastavak) • Modularni programski jezici: - Razvijeni zbog problema koji su nastali u struktuiranim programskim j ezicima - Koriste se za kreiranje programa koji BU izdijeljeni na zasebne module • Svaki modul obavlja specificnu funkciju ..~.za razlicite ulazne vrijednosti daje razlicite izlazne vrijednosti

Jezici cetvrte generacije • Jezici cetvrte generacije obuhvataju: - Report generators • Jezici za formiranje (stampanje) izvjestaja iz baze podataka - Query languages • Jezici za formiranje upita kod baza ·podataka·

Objektno-orijentisano

programiranje

Objekti • Objekti sujedinice informacija koji sadrze podatke kao i metode za procesiranje i rad sa podacima • Klase objekata: - Hijerarhija ili kategorija objekata

• Objektno-orijentisano programiranje (OOP): - Zasniva se na mogucnosti visestruke upotrebe komponenata • Sposobnost pravljenja programskih modula koji obavljaju specifican zadatak. - Ukida razliku izmedu programa i podataka - Upotreba objekata koji sadrze podatke i procedure

Jezici prilagodeni • Markup jezici:

upotrebi

na Web-u

Razvojni ciklus programa • Plansko rjesavanje problema programiranja i podjela na znacajne cjeline • Sest faza: 1. Definisanje problema 2. Dizajniranje programa 3. Pisanje koda (Coding) \ 4. Testiranje i debagovanje 5. Formalizovanje rjesenja 6. Implementacija i pracenje rada programa

- Hypertext markup language (HTML)
postavlja atribute teksta i objekata na Web strani - Extensible markup language (XML) se koristi za razrnjenu objekata u Web okruzenju • Scripting jezici: - VBScript se koriste za pisanje kratkih programa (script) koji su dio Web strana - JavaScript

Faza 1: Definisanjc

problema

Faza 2: Dizajniranje

programa

• Prvi korak • Sistem analiticari formiraju zahtjeve i dostavljaju programeru • Zahtjevi: - Ulazni podaci - Obrada - Izlaz - Korisnicki interfejs

• Odgovomost programera - Top-down dizajn: polazi se od glavnog cilja pa se potom program dijeli na manje cjeline (funkcije/moduli) - Kontrolne strukture se koriste da bi se provjerilo kako svaki modul funkcionise • Definisanje algoritma: objasnjenje korak po korak kako rijesiti problem • Alati za dizajniranje programa: - Sistemski dijagrarn toka- graficki prikaz glavne faze obrade i razlicite izvore podataka. Programski dijagrarn toka - graficki prikaz logike +problema

Sistemski i program ski dijagram toka

Faza 3: Pisanje koda • Preslikavanje algoritma u specificne programske naredbe • Odabiranje programskog jezika i pisanje program a u skladu sa sintaksnim pravilima

Sistemski dijagram toka

Programski dijagram toka

Faza 4: Testiranje i otklanjanje gresaka (Debugging)
• Greske nastale usljed pogresnog logickog pristupa ili pri unosu teksta se nazivaju bagovima (bug, bugs). • Proces trazenja i ispravljanja tih gresaka se naziva debagovanje (debugging). • Proces otklanjanjagresaka i testiranje program a po pravilu oduzima vrijeme vece od onoga koje je bilo potrebno za sarno prograrmranje,

Faza 4: Testiranje i otklanjanje gresaka (Debugging) .
• Testiranje najcesce obuhvata obradu ulaznih podataka za koje program treba da da unaprijed poznati izlaz. Test podaci treba da ukljuce: - Tipicne podatke, koji ce se cesto koristiti -~Podatke koji se rijetko koriste, ali je moguce da ce se koristiti - Pogresne ulazne podatke, kako bi provjerili da ce ih program korektno prepoznati i kako ce se ponasati.

Faza 5: Formalizacija

rjesenja

• Formiranje dokumentacije - Definicija problema. Namjena i mogucnosti programa, autor(i) i narucioc posla. - Opis sistema na kom program radi (hardver i sofver). Potrebni ulazni podaci i oblik i tip izlaznih podataka. - Detaljan opis programa, dijagram toka, listing programa, podaci korisceni pri testiranju i rezultati testa - Uputstvo za instaliranje i odrzavanje -;=Uputstvo za operatera--------

Faza 6: Implementacija i odrzavanje programa
• Program se isporucuje korisniku. • Ako program treba da zamijeni program slicne namjene koji se vee koristi, cesto se u jednom periodu koriste oba programa radi dodatne verifikacije novog rjesenja, • Moguce.je da senakonovog periodajavi potreba za modifikacijom rjesenja

Algoritamske promjenlj ive
Algoritamske promjcnljive se oznacavaju imenima koja se obicno sastoje od jednog ili vise slovnih i brojnih znakova. Prvi znakje slovo. Imena promjenljivih se biraju tako da ukazuju na prirodu promjenljive koju predstavljaju.
Preporucuje se da se imena promjenljivih u

Algoritamske promjenljive
Prirnjer: Algoritam nalazenja sume i razlike dva broja

:~i!',!:JlAAnI~R9H~1:I*i 'iiiro!~rI~~pron1Jenljivih'i~i
Prvi broj Drugi broj A B

Lista ulaznih promjenljivih

i njihovih naziva

%~~~~~~g~~qjl§1i1~!~.~twn[hatprorii)enljivih
Suma SUMA RAZ

algoritmu i u odgovarajucem programu poklapajujer je na taj nacin olaksano "odrzavanje" programa.

Razlika
Lista izlaznih promjenljivih

i njihovih naziva

Algoritamske promjenljive
Primjer: Algoritam nalazenja sume i razlike dva broja

Osnovne algoritamske strukture
Rjesavanje razlicitih realnih problema dovodi do razlicitih vise ili manje slozenih algoritama.

Razlikuju se:
• Linijska struktura • Struktura /tok obrade iskljucivo odozgo na dole/ sa grananjem /algoritam sadrzi simbol odluke /izvrsavanje se vraca na prethodno

- u algoritmu se nalazi dvije ili vise algebarskih grana! • Ciklicna struktura • Struktura
KRAJ

vee izvrsene algoritamske korake/ sa podalgoritrnima

Linijska algoritamska struktura
• Postoji sarno jedna grana izvrsavanja, • Svaki algoritamski korak se izvrsava sarno jednorn. • U praksi se rijetko susrecu, jer se pornocu njih mogu rijesiti sarno elementami zadaci.

Linijska algoritamska struktura
Primjer Sastaviti algoritam koji ce promjenljivima Ai B zamijeniti vrijednosti. Cesto se koristi u slozenijim problemima (npr. kod sortiranja niza brojeva). Samostalno sastaviti algoritaml

~ ~--~-- ------

-------Primier~~-

Linij ska algoritamska struktura
Primjer
Ako u algoritmu, nakon ucitavanja ulaznih vrijednosti za A i B napisemo u bloku obrade Af-B, sta ce se desiti?

Linij ska algoritamska struktura
@-P-O-CE-l-A-K------

1;'Pfeth()clli~~j~gh~stPtohij~hljlvekBf6~~gtiblj~n~))1
Analogno: Ako u algoritmu, nakon ucitavanja ulaznih vrijednosti za A i B napisemo u bloku obrade Bf-A, prethodna vrijednost primjenljive B bice izgubljena. Kako rijesiti problem? ~jer: A=5, B=9

Af-B
Bf-POM lzlaz: A,B

Algoritam za zamjenu vrijednosti dva broja

KRAJ

Struktura sa grananjem
Strukture sa granjanjem (razgranate algebarske strukture) pojavljuju se uvijek kada algoritam sadrzi simbol odluke. U zavisnosti od vrste simbola odluke i od broja simbola odluke algoritam moze da sadrzi dvije iIi vise grana. Prilikom izvrsavanja algoritma nailaskom na simbol odluke vrsi se ispitivanje uslova postavljenih u simbolu odluke. Izvodenje algoritma se nastavlja sarno jednom od grana, a kojom - to zavisi od uslova postavljenih u simbolu odluke.

ZAMJENA

(X,Y)

Struktura sa grananjem
Utvrdivanje maksimalne iIi minimalne vrijednosti je jedan od problema koji se pojavljuju u kvantitativnim metodama i posljedicno - u odlucivanju. Problem se moze rijesiti na vise nacina. Problem nalazenja maksimuma i minimuma se svodi na utvrdivanje kojije od dva broja veci (manji). Algoritam kojim se utvrduje veci od brojeva . prikazan je na narednoj slici.

Struktura sa grananj em

Struktura sa grananjem

Struktura sa grananjem
Algoritamske strukture mogu da sadrze proizvoljan broj simbola odluke i veliki broj grana. Takve strukture ce biti prikazane na primjeru utvrdivanja najvece vrijednosti za tri databroja.
MAKS(A,B)

Klasican pristup problema sastoji se u poredenju svakog broja sa svakim. To znaci - potrebna su tri simbola odluke. Slijedi prikaz jednog od mogucih rjesenja.

KRAJ

Struktura sa grananjem

Struktura sa grananjem

KRAJ

Struktura sa grananjem
Treci pristup je uzastopno povezivanje vee realizovanog podalgoritma za utvrdivanje veceg od dva broja.

Petlja (ciklicna struktura)
Ciklicne algoritamske strukture su prirodni nastavak razgranatih algebarskih struktura. Ciklicne algoritamske strukture omogucavaju da se na jednostavan nacin rijese slozeni problemi, u okviru kojih se zahtijeva da se visestruko ponovi ista sekvenca obrade na - istim iIi razlicitim podacima. _Ciklicne algoritamske strukture.se cesto . nazivaju petlje .

.-------

--KRAJ--

Petlja (ciklicna struktura)
Ciklicne algoritamske strukture mogu biti: - proste i - slozene. Pod prostim ciklicnim strukturama podrazumijeva se algoritam koji sadrzi sarno jedan ciklus. Slozene ciklicne strukture sadrze veci broj ciklusa koji su na razlicite nacine ugradeni u cijeli algoritam.

Proste ciklicne strukture
U svakoj ciklicnoj strukturi uocavaju se tri dijeIa: - pocetak ciklusa, - tijelo cikIusa 1 - kraj ciklusa. Pocetak ciklusa cine pripremni simboli u kojima se promjenljivima dodjeljuju inicijalne vrijednosti. Tijelo ciklusa cine simboli koji se tokom izvrsavanja aIgoritma ponavljaju.

Proste ciklicne strukture
Proste ciklicne strukture mogu biti: - sa unaprijed odredenim brojem ponavljanja tijela ciklusa i - sa promjenljivim brojem ponavljanja tijela ciklusa.

Proste ciklicne strukture
U prvom prolazu promjenljiva uzima pocetnu vrijednost (u primjeru "A") U svakom sljedecern prolazu promjenljiva uvecava svoju vrijednost za vrijednost koraka (u primjeru "C") Ako je vrijednost koraka pozitivna, petlja se zavrsava kada promjenljiva uzme vrijednost vecu od krajnje vrijednosti, a ako je vrijednost koraka negativna, petlja se zavrsava kada promjenljiva uzme vrijednost manju od krajnje vrijednosti.

Proste ciklicne strukture sa unaprijed odredenim brojem ponavljanja tijela ciklusa

Proste ciklicne strukture
Postoje problemi koji se ne mogu rijesiti pomocu konstantnog broja ponavljanja tijela ciklusa, jer broj ponavljanja nije unaprijed poznat. Npr. problemi trazenja maksimuma, minimuma iIi nula nelinearnih funkcija, itd. rjesavaju se iterativnim postupcima kojima se dobija priblizno rjesenje koje je svakim korakom (iteracijom) sve blize tacnom rjesenju,

Proste ciklicne strukture
S obzirom da je potrebno beskonacno mnogo koraka da bi dobili tacno rjesenje, prihvatamo priblizno rjesenje koje zadovoljava unaprijed odredenu vrijednost. Takvi algoritmi sadrze simbol odluke u kome se ispituje ispunjenost uslova. Razlikuju se dvije vrste ciklicnih struktura sa - promjenljivim brojem ponavljanja tijelaciklusa: ·-DoUntil ...--·---·-·-----------·Do· i· While:·· ----- ----....

Proste ciklicne strukture
Algoritamski koraci sadrzani u tijelu petlje obavezno se izvrsavaju bar jednom. Ako postavljeni uslov u simbolu odluke nije ispunjen, algoritamski koraci iz tijela petlje ce se ponovo izvrsavati. Ovom strukturom se rjesavaju problemi kod kojih se moze definisati cilj (uslov zavrsetka) koji treba da bude dostignut.

Proste ciklicne strukture
Algoritamski koraci sadrzani u tijelu petlje mogu da se i ne izvrse. Prije ulaska u tijelo petlje ispituje se uslov postavljen u simbolu odluke. Ako uslov nijc ispunjen algoritamski koraci sadrzani u tijelu petlje se preskacu. Ako je uslov ispunjen algoritamski koraci sadrzani u tijelu petlje se izvrsavaju, pa se ponovo vrsi ispitivanje uslova Ovom strukturom se rjesavaju problemi kod kojih se moze defmisati uslov izvrsavanja algoritamskih koraka iz tijela petlje.

Ciklicne algoritamske

strukture tipa Do Until

Ciklicne algoritamske strukture tipa Do While

Proste ciklicne strukture
Odredivanje maksimuma niza brojevaje tipican primjer primjene prostih ciklicnih struktura. Rjesenje je u uvodenju indeksa. indeks pokazatelja, odnosno

Proste ciklicne strukture
Indeksirana promj enlj iva je konacan skup promjenljivih sa istim simbolickim nazivom razlicitim indeksom. Indeksna promjenljiva i

moze imati:

Clanovima niza pridruzuje se niz promjenljivih sa realnim brojem kao indeksom, npr.: AI, A2, A3, ...,

• sarno jednu dimenziju i tad a se naziva jednodimenziona matrica, vektor ili niz; • dvije dimenzije i tada se naziva matrica; i tada se naziva visedimenziona

AN.
Indeks je velicina koja se mijenja,

tj, K= 1,2, ... , N. indeksirane

Na taj nacin u algoritmu dobijemo

• vise dimenzija matrica.

promjenljive.

Proste ciklicne strukture
Ucitavanje niza podataka realizuje ciklicne algoritamske strukture.
Dio algoritmaje predstavljen se pomocu proste

Proste ciklicne strukture
Za odredivanje
maksimuma niza brojeva najbolje je u algoritmu iskoristiti vee realizovan podalgoritam za utvrdivanje veceg od dva broja.

na slici koja slijedi:

Petlja (ciklicna struktura)
• Suma niza:
- Niz:

Petlj a (ciklicna struktura)
• Primjer:

A= {a.,

a2, aJ)

,

aN}

(0)
I

n! :::i!(n-I)!

/'" /
~
,
i

1.::7
--,1;:-1

= {aj},i=l,

,N

(0)

I~J

=i+t

n-i (")

,~

(:)=1 (:)=n

Slozene cikllcne strukture
U praksi se najcesce susrecu slozene ciklicne strukture, cak i kada se radi 0 jednostavnim problemima, kao sto je mnozenje matrica iIi sortiranje niza. Kod slozenih ciklicnih struktura algoritam se sastoji od dva ili vise ciklusa. Ako su ciklusi nezavisni, dijelovi takvog algoritma su proste ciklicne strukture. Ako neki ciklus obuhvata jedan iIi vise ciklusa govorimo 0 ugnijezdenim ciklicnim strukturama.

Slozene ciklicne strukture

I
r..'

1fF[.
~

C

L

Ilustracija nekih slozenih algoritamskih struktura

Slozene ciklicne strukture
U svim ilustrovanim primjerima uocava se spoljasnji i unutrasnji ciklus. Broj izvrsavanja algoritamskih simbola u unutrasnjem ciklusu jednak je proizvodu broja izvrsavanja tog ciklusa i brojeva izvrsavanja svih ciklusa koji ga obuhvataju. Kod ciklicnih struktura nije dozvoljeno preklapanjetokova obrade,tj. uskakanje u·· tijelo ciklusa (sto je vee ilustrovano ).
Klasicni primjer ugnijezdenih ciklicnih strukturaje sortiranje niza podataka.

.--_~=~~l..>D'

.

Sortiranje clanova niza

Slozene ciklicne strukture
Rjesavanje realnih problema uglavnom dovodi do slozenih algoritamskih struktura. Uvedene su odredene discipline u pisanju algoritama i programa. Modulama organizacija algoritama i strukturirano programiranje su osnovni preduslovi za dobijanje pouzdanih rjesenja.

for i=1:3 for j=i+l:4 if a(i»a(j) temp=a(i) a(i)=a(j) a(j)=temp end end end

Slozene ciklicne strukture
Modularna organizacija algoritama podrazumijeva da se slozeni problemi rastave na vise manjih problema (modula). Strukturirani moduli imajujedan ulaz ijedan izlaz. Svaki modul se moze pripremiti nezavisno od ostalih modula i kasnije jednostavnim mehanizmima povezati u cjelinu.

Slozene ciklicne strukture

Modularna organizacija rjesavanja slozenih problema

Struktura

sa podalgoritmima

Struktura sa podalgoritmima
(~rA~ ')

• Veza izmedu algoritma i podalgoritma -lista ulazno- izlaznih parametara
- stvama lista parametara - parametri koji se prosljeduju podalgoritmu iz glavnog algoritma - formalna lista parametara - !ista pararnetara pozvanog algoritma

.. I---------~ "-,.,.,',,_,
,..,./\ L______J'j_,,':I<.d."""

• Broj, redoslijed i vrstaparametara stvarnei_ formalne liste mora da se poklapa.

/
-_.- -------

l7~r~.J:

/

'-- __ ,---'---\ -- t:--U.v -~----

--

(

~''''~)

A lgoritam: Izracunavanje ALGORITAM

srednje

vrijednosti

temperatura

Srednja'Iernperatura

Prvi korak prihvata vrijednost za N koja se u drugorn koraku provjerava prerna ogranicenju. Ako se ispostavi da je vrijednost N negativna ili nula, ponavlja se korak 1, u suprotnorn tok algoritma se nastavlja korakom broj 3. Ovo rjesenje nije najbolje iskoristilo sernantiku if then else selekcije jer se zapravo radi 0 sarno jednoj putanji kojaje altemativna norrnalnorn toku algoritrna.

ULAZ: TEMP _ niz realnih brojeva gde je TEMP[i] temperatura izmjerena na i-tom mjernom mjestu N - broj mjesta na kojima su ocitavane temperature, N >0 IZLAZ: SR_TEMP - realni broj, srednja vrijednost izmjerenih temperatura LOKALNE: i - cio broj, indeks mjernog mjesta (temperature) SUMA - realni broj, suma izmjerenih temperatura l. Prihvat N. 2. IF N 0 THEN idi na 1. korak ELSE idi na 3. korak. 3. Prihvat izmjerenih vrijednosti temperature u TEMP. 4. SUMA~ O. 5. FOR i ~ 1 TO N DO SUMA ~ SUMA + TEMP[i]. 6. SR_TEMP ~ SUMA I N. 7. Kraj.

s

Korektnije rjesenje drugog koraka bilo bi:

2. IF N

s 0 THEN

idi na 1. korak

Izostavljenaje else putanja koja se poklapa sa norrnalnim tokom algoritma (za pozitivnu vrijednost promjenljive N, algoritam ce svakako nastaviti sa korakom 3). Treci korak obezbjeduje prihvat svih izmjerenih vrijednosti temperature u TEMP promjenljivu. Visedimenzionalna priroda promjenljive TEMP diktira prihvat vrijednosti za svaki element TEMPi' sto ce detaljno biti prikazano kroz naredni primjer.

Peti korak rea1izuje sumiranje elemenata niza pomocu FOR iteracije, sto se u matematici oznacava simbo1om sume (I:). Sesti korak rea1izuje dije1jenje sume iz prethodnog koraka brojem e1emenata niza time se dobija srednja vrijednost temperature. U cetvrtom koraku se postav1ja SUMAna nulu. Ovaj korakje zahtijevan tijelom FOR iteracije petog koraka, a prema prethodno navedenom pravi1u 0 inicija1izaciji vrijednosti promjenljive.

Ako bi se cetvrti korak izostavio, javio bi se problem pri prvom prolazu kroz FOR iteraciju kada indeks i ima vrijednost jedan, a u SUMA bi trebalo smjestiti zbir prve izmjerene temperature i trenutnu vrijednost promjenljive SUMA koja u tom trenutku nije definisana. Iz tog razloga, uvedenje cetvrti korak koji inicijaJizuje promjenljivu SUMA na vrijednost koja je neutralna za operaciju gdje se ova promj enlj iva javlja kao jedan od operanada, tj. kao nula, jer je ona neutralni element za operaciju sabiranja. Tako, pri prvom prolazu kroz FOR iteraciju se u promjenljiyu_SUMAsIl1jestazbir prve temperature i . __ nule.

Algoritam: Izracunavanje minirnalne vrijednosti temperature

Pronalazenje minimalne (ali i maksimalne) vrijednosti unutar nekog skupa (niza) vrijednosti temperatura je proces koji se svodi na poredenje vrijednosti svake izmjerene temperature (TEMP[iJ) sa trenutno minimalnom vrijednoscu (promjenljiva min). Ako je vrijednost (TEMP[iJ) manja od vrijednosti _min, onda se zavrijednost minllsvajavrijednost . (TEM~[i])i nast~'11j~ seporedenje nove vrijednosti _._. min sa (TEMP[i+ 1D.

Slicno prethodnom algoritmu, postoji problem

inicijalizacije promjenljive min prije poredenja sa TEMP[i]. Inicijalizacija vrijednosti promjenljive min bi trebala biti veca od najmanje izmjerene vrijednosti temperature kako bi bilo moguce sprovesti opisani postupak, ali minimalna vrijednost izmjerenih temperatura je nepoznata - ona se tek treba odrediti. Postavlja se pitanje: Koliku vrijednost odabrati, imajuci u vidu opste karakteristike oblasti primjene algoritma? (atmosferska temperatura, temperatura u celicani i sl.)

Bilo bi dobro rjesenje usvajanje neke konkretne vrijednosti iz niza TEMP kao minima1ne vrijednosti promjen1jive min, npr. TEMP[l], jer se tako dobija najefikasniji a1goritam posto se moze izostaviti poredenje sa prvim e1ementom. Pri tome se pretpostav1ja da ima vise od jedne izmjerene vrijednosti temperature, N>O.

Algoritam MinimalnaTemperatura
ULAZ: TEMP - niz ralnih brojeva gdje je TEMP[iJ temperatura izmjerena na i-torn mjernom mjestu N-broj mjesta na kojima su ocitavane ternper., N>O

IZLAZ: min - realni broj, minimalna vrijednost temperature LOKALNE: i - cio broj, indeks za kretanje kroz niz TEMP 1. REPEAT prihvat N UNTIL N >0. 2. FOR i=l TO N DO prihvat TEMP[i]. 3. min ~ TEMP[I].
4. FOR i f- 2 TO N DO IF TEMP[i]<min THEN mine- TEMP[i).

Prvi korak obezbjeduje prihvat korektne vrijednosti broja mjesta na kojima se mjerila vrijednost temperature, promj enlj iva N, unutar iteracije sa izlaskom na dnu (najmanje jedno prihvatanje vrijednosti ili vise puta ako se unese pogresna vrijednost). Drugi korak definise kako ce visedimenzionalna promjenljiva prihvatati vrijednosti za svoje elemente. Kako je TEMP niz, dovoljnaje jedna iteracija za prihvat vrijednosti svakog elementa niza. Iskoristena je FOR iteracijajer se promjenljiva po kojoj je organizovana, i, koristi i kao indeks elementa niza kome se dodjeljuje vrijednost.

5. Kraj.

Cetvrti korak se sastoji od jedne FOR iteracije u cijem tijelu se nalazi jedna IF selekcija (ugnijezdena IF selekcija u FOR iteraciji).
,-----_ struktura2

I~-~
r-----_

struktuta

1

L___
--=s~~~~:1121

kraj_trukture 1 struk1ura 2

U ovom koraku se prolazi kroz sve elemente niza TEMP trazeci minimalnu vrijednost koja se cuva u promjenljivoj min, pri cemu je ova promjenljiva inicijalizovana u koraku 3. Neophodno je naglastiti da ugnijezdena struktura mora poceti i zavrsitt unutar tijelaspoljne strukture pri

r----_ ~

struktura 2,1 struklufa2.1.1

L_._

E
'-----______,...

I

..

kraj struklure

2.1.1

struklura 2.1.2

kraj strukture 2.1.2 kraj stnrkture 2,1

stTUktura2.2 SITUktu,," 2.2
kraj struklure2

... _.' ...•..

... ·····krai

c-,
.

kraj strukture

2.1.1

_______...

kraj strukture 2.1.2 kraj strukture 2.1

struktura22

cemu nesmije doci do njihovog prekJapanja ... __ ..' ._

'=--.o~~._~

-~

kra} slruktura 22 _ ........ kraj stnJklure 2

... Lose strukfiiriranje"

Podalgoritam i rekurzija
Za detaljnu specifikaciju modula koristi se hijerarhijska struktura algoritama u kojoj se razlikuje jedan glavni algoritam i skup njegovih podalgoritama. Glavni algoritam
naredba Al

Podalgoritam 1
naredba 131

Podalgoritam je algoritam koji rjesava jedan aspekt
problema i biva angazovan (pokrenut, pozvan) od strane glavnog algoritma ili drugog podalgoritma.

naredba A2 podalgoritarn 1 naredhaA4 naredbaA5 podalgoritam 2 naredba A 7 kraj

naredba R2 naredba B3 povratak

Podalgoritam3
naredba 01 naredba D2 naredba D3

narcdba D ovratak
ovratak

Glavni algoritam i njegovi podalgoritmi

Pararnetri podalgoritarna rnogu se klasifikovati prerna rnjestu njihovog definisanja na: • Formalne parametre - navode se pri definisanju podalgoritma kako bi se formalizovale ulazne i izlazne vrijednosti u formi naziva (identifikatora) i tipova intemih promjenljivih podalgoritma. Formalni parametri su istovremeno i lokalne promjenljive podalgoritma. Ove prornjenljive prihvataju ulazne, odnosno formiraju izlazne vrijednosti. Ovaj tip parametara obezbjeduje masovnost algoritama.

Pararnetri podalgoritama mogu se klasifikovati prerna mjestu njihovog definisanja na: • Stvarne parametre - navode se pri pozivanju podalgoritma u superordiniranorn algoritmu i oni sadrze konkretne vrijednosti koje ce podalgoritam prihvatiti (poslati) preko svojih formalnih parametara. Za stvame ulazne parametre se mogu postaviti promjenljive, izrazi i konstante superordiniranog algoritma, dok se za stvame izlazne pararnetre mogu postaviti sarno promjenljive superordiniranog algoritma.

Razmotricerno razmjenu navedenih tipova parametara. Broj, tip i redoslijed navodenja stvamih parametara mora biti identic an kao kod formalnih parametara pri cemu se njihovi identifikatori ne moraju poklapati. To je dozvoljeno cinjenicom da superordinirani algoritam nema pristupa interijeru podalgoritma i obmuto. Prije prenosa upravljanja sa superordiniranog algoritma na podalgoritam, vrsi se prenos stvamih parametara i dodjeljivanje njihovih vrijednosti formalnim parametrima podalgoritma po redoslijedu njihovog navodenja (prvo se prenosi prvo navedeniparametar.pa drugi.freci itd.).

Po prenosu svih parametara, prenosi se upravljanje na podalgoritam koji sada moze otpoceti izvrsavanje svojih operacija jer raspolaze svim ulaznirn vrijednostima koje se nalaze u odgovarajucim formalnim pararnetrima. Obmuti proces se desava na zavrsetku podalgoritma prilikom vracanja upravljanja superordiniranorn algoritrnu.

Prcma smjeru prenosa vrijednosti, razlikuju se tri tipa parametara: 1. Ulazni parametri - nose u sebi ulazne vrijednosti za dati podalgoritam. Na narednoj slici ulazni parametri su navedeni odrnah do strelica koje oznacavaju prenos upravljanja ka pozvanorn podalgoritmu (ul l A, ullB, ...)

Podalgoritam 1
uiiA,uilB,oo.

Glavni algoritam
naredba AI

naredba B I naredba 132 naredba 83 povratak

podalgoritam 2 naredba A7 kraj

naredba D2 naredba D3

naredba D·
ovratak

Glavni algoritam i njegovi podalgoritmi

Mehanizam prenosa ulaznih parametara cine koraci:
I. Superordinirani algoritam pri pozivu podalgoritrna, a prije transfera upravljanja, postavlja konkretne (stvame) vrijednosti na mjesta ulaznih stvamih parametara. 2. Pozvani podalgoritam preuzima stvame vrijednosti koje su proslijedene i prihvata ih kao vrijednosti odgovarajucih formalnih ulaznih parametara kada postaje moguce izvrsavanje odredenih operacija nad njima u tijelu podalgoritma. Vazno je istaci da operacije podalgoritma mogu trajno promijeniti vrijednosti koje su dobijene kao ulazni parametri, pri cemu te izmjene nisu vidljive van interijera pozvanog algoritrna.

Prema smjeru prenosa vrijednosti, razlikuju se tri tipa parametara: 2. Izlazni parametri - nose u sebi izlazne vrijednosti datog podalgoritma, rezultate njegovog izvrsavanja, Na narednoj slici izlazni parametri su navedeni odmah do strelica koje iznacavaju prenos upravljanja ka superordiniranom algoritmu (izllA, izllB, ...)

Podalgoritam I Glavni algoritam
naredba Al naredba A2 podalgoritam naredbaA4 naredba Af podalgoritam naredba A7 uaredba B I naredba B2

Mchanizam prcnosa izlaznih parametara cine koraci:
1. Pozvani podalgoritam pri kraju svog izvrsavanja, a prije transfera upravljanja, postavlja konkretne (stvame) vrijednosti na mjesta izlaznih formalnih parametara. 2. Superordinirani algoritam prihvata vrijednosti koje su proslijedene kao izlazni parametri pozvanog podalgoritma i dalje manipulisu njima kao vrijednostima svojih intemih promjenljivih koje su imale ulogu stvamih parametara.

1

Podalgoritam2
2
J....-_ -r+ ••

Podalgoritam3
naredba D 1

kraj

aredba C I naredba C2 podalgoritam

3 ovratak izl3A, izI3B,-..-.

naredba C

ovratak

Podalgoritam mora imati baremjedan izlazni paramctar jer u suprotnom ne bi imao sredstvo da .....-----iskaze .rezuhat svoga rada;-

Glavni algoritam i njegovipodalgotitllli-----·-

.--.---.-.----.-.

Prema smjeru prenosa vrijednosti, razlikuju sc tri tip a parametara: 3. Ulazno-izlazni parametri - nose u sebi vrijednosti koje za dati podalgoritam imaju ulogu i ulaznih i izlaznih vrijednosti. Npr. Podalgoritam za sortiranje elemenata niza po nekom kriterijumu ima parametar niz koji je ulazno/izlaznog tipa jer pri pokretanju podalgoritma on prenosi elemente niza na sortiranje, dok na kraju rada podalgoritma vraca niz sortiranih elemenata superordiniranom algoritmu (podalgoritmu).

Mehanizam prenosa ulazno/izlaznih parametara cine koraci:
1. Superordinirani

aJgoritam pri pozivu podaJgoritma, a prije transfera upravljanja, uspostavlja vezu izmedu odredenih intemih promjenljivih koje sadrze konkretne (stvame) vrijednosti sa ulazno/izlaznim stvamim parametrima

2. Pozvani podalgoritam preuzima dobijene veze sa stvarnim parametrima kako bi bio u mogucnosti da pomocu svojih formalnih parametara pristupa vrijednostima interijera superordiniranog algoritma. Na ovaj nacin, pozvani podaJgoritamje snabdijeven ulaznim vrijednostima nad kojima moze da izvrsi odredene operacije. Zahvaljujuci uspostavljenim vezama, svaka izmjena vrijednosti formalnih uJazno/izlaznih parametara nacinjena unutar pozvanog podalgoritrna bice vidljiva superordiniranom algoritmu i po zavrsetku rada pozvanog algoritrna.

/
Mehanizarn prenosa ulazno/izlaznih pararnetara Cine koraci: .
3. Kada se upravljanje vrati superordiniranom algoritmu, on u odredenim stvarnim parametrima ima one vrijednosti koje je postavio pozivani podalgoritarn,

Algoritam: Srednj aIMinimalnaTemperatura
ULAZ: TEMP - niz ralnih brojeva gdje je TEMP[i] temperatura izmjerena na i-tom mjemom mjestu N-broj mjesta na kojima su ocitavane ternper., N>O SREDTEMP-realni broj, srednja vrijednost temperat. MTNTEMP-realni broj, minim. vrijednost temperat.

1. Podalgoritam 2. 3.

UnosNiza(TEMP,N,

100).

Podalgoritam Srednja VrijednostNiza(TEMP,N,SREDTEMP). Podalgoritam Minimalna VrijednostNiza(TEMP,N,MINTEMP).

4. Prikazi korisniku SREDTEMP, MINTEMP.

5. Kraj.

Postoji posebna klasa podalgoritarna koji su sarno sebi i superordinirani i subordinirani - rekurzivni podalgoritmi. Rekurzivan podalgoritam poziva sam sebe sa razlicitim vrijednostirna ulaznih pararnetara potreban broj puta. Mehanizarn rekurzije se cesto koristi i u maternatici prilikorn definisanja raznih matematickih entiteta kao sto je faktorijel. Sarnopozivanje rekurzivnog algoritma mora biti uslovljeno:

Rekurzivni podalgoritmi su omogucili rjesavanje nekih problema pomocu racunara koji su do tada bili ili nerjesivi ili rjesivi uz velike napore.

se sastoje iz tri dijela: o Dio koji se izvrsava u dubinu Cine operacije podalgoritma koje se izvrsavaju prije poziva samog sebe. Ovaj dio se jedini izvrsava tokom jednog poziva rekurzivnog podalgoritma.
f) Uslovljeni poziv omogucava samopozivanje rekurzivnog podalgoritma ako je ispunjen postavljeni uslov. Uslov mora konvergirati neispunjenosti kako bi se obezbijedio zavrsetak rekurzivnog izvrsavanja, U suprotnom dobila bi se beskonacna rekurzija.

Rekurzivni podalgoritmi

Rekurzivni podalgoritmi se sastoje iz tri dijcla:

~ Dio koji se izvrsava ka povrsini cine
operacije koje se izvrsavaju poslije operacije poziva samog sebe. Ovaj dio ce se prvi put izvrsiti unutar posljednjeg poziva rekurzivnog podalgoritrna i nastaviti izvrsavati ka prethodnim pozivima sve do prvog poziva.

Rekurzivni podalgoritam ne mora sadrzavati prvi, odnosno posljednji dio, ali mora sadrzavati uslovljeni poziv. Veomaje vazno obezbijediti promjene vrijednosti promjenljivih koje formiraju uslov pozivanja da poslije odredenog broja pozivanja uslov postane neispunjen. Primjer: Konverzija dekadnog broja

Algoritam: KonverzijaDekadnogUBinarni LOKALNE: N-cio broj, dekadni broj koji treba konvertovati, N2:0 1. REPEAT Prihvat od korisnika broja N UNTIL N 2: 0 2. Podalgoritam KonvertujDekadniBroj(N,2). 3. Kraj ..

Podalgoritam: KonvertujDekadniBroj

(broj ,baza)

ULAZ: broj - cio broj, dekadni broj koji treba konvertovati baza - cio broj, baza odredisnog brojnog sistema, baza>O Lokalne: kolicnik - cio broj, kolicnik cjelobrojnog dijeljenja ostatak - cio broj, ostatak cjelobrojnog dije1jenja 1. kolicnik (-- kolicnik od (brojlbaza). 2. IF kolicnik > 0 THEN Podalgoritam KonvertujDekadniBroj(kolicnik,baza).

Matlab

3. ostatake-ostatak --5.Povratak.

od (brojlbaza).

4. Prikazi korisniku ostatak.

Postoje dvije klase softverskih paketa za rjesavanje matematickih problema: • programi zasnovani na simbolickom rjesavanju I • programi zasnovani na numerickom rjesavanju problema. Tipican predstavnik prve klase programa je Mathematica, a druge MATLAB.

MATLAB jc dostupan u vise verzija koje su prilagodene razlicitim racunarskim platformamaod PC i Macintosh racunara, preko UNIX radnih stanica do Cray racunara. Predstavlja najcesce koriscen paket u svojoj oblasti. Verzije MATLAB-a za razlicite racunarske sisteme se razlikuju donekle sarno po korisnickom interfejsu - sve komande se jednako izvrsavaju na svim platformama. Ovdje ce biti ukratko prikazan MATLAB u verziji za Windows operativne sisteme.

MATLAB je moderan, multifunkcionalan .programski sistem kojije u prvom redu _namijenjen rjesavanju problema u tehnici.
i

,

Primjena MATLAB-a u rjesavanju inzenjerskih problema

Npr. Na veomajednostavan nacin, znatno brze nego u drugim programskim jezicima, rjesavamo tehnicke probleme koji su formulisani u matricnom obliku . Srz MATLAB-a cine numericka linearna algebra i matricni racun - otuda i naziv MATLAB-a (MATrix LABoratory). MATLAB je i kreiran radi unapredenja postojeceg softvera za matricne proracune.

MATLAB pruza korisniku mogucnost da numericki i logicki obradi podatke pomocu mnostva raspolozivih programskih jedinica, da vizuelno prikaze podatke i da prosiri funkcionalne mogucnosti kreiranjem i izvrsavanjem sopstvenih programa

U danasnje vrijeme MATLAB je veoma opsezan sistem koji obuhvata i mnoge druge numericke postupke, npr.: odredivanje nula polinoma, numericko rjesavanje pocetnih problema kod obicnih diferencijalnih jednacina itd. Mnogobrojne graficke mogucnosti ornogucavaju korisnikuda formira dvo- i trodimenzionalne kolor grafike kako na .. ekranu, tako i ria stampacuili na ploteru.

Iz MATLAB-a se mogu aktivirati programi na jezicima FORTRAN i C, tj. omoguceno je koriscenje vee postojecih program a za rjesavanje odredenih problema, cime se znatno moze ubrzati rjesavanje zadataka u tehnici. MATLAB sadrzi citav niz dodatnih modula (tzv. toolbox-ova) koji su namijenjeni razlicitim oblastima primjene, kao npr.:
- Statika i dinamika konstrukcijau - Statistika, gradevinarstvu,

- Obrada.slika,

.

__
_

. __ -_~~\)_olicka_!l1.a.!{!mati1_<~~oI11IJj_llters~a~lge~~),___ . - Kontrolni sistemi itd.

MATLAB je sistem koji se nalazi u neprekidnom razvoju kome doprinose mnogobrojni stvaraoci u svijetu. Na mnogim univerzitetima MATLAB je usvojen kao standardno sredstvo u okviru kurseva iz oblasti matematike, inzenjerstva i nauke, a u industriji MATLAB se koristi kao sredstvo u istrazivanjima ciji je cilj dalji razvoj proizvodnje.

Osnovno okruzenje MATLAB-a predstavlja tekstualni prozor u kome se zadaju MATLAB komande. Komande se izvrsavaju neposredno nakon unosa. Poseban simbol (») predstavlja MATLAB prompt. Pored toga, moguce je pisati i programe u programskomjeziku kojeg nudi MATLAB. Sam MATLAB programskijezikje nalik drugim proceduralnimjezicima, izuzimajuci njegovu prilagodenost radu sa matricama.

MATLAB kao interaktivan sistem
Aritmeticke operacije i promjenljive

Matlab mozemo koristiti slicno kao dzepni kalkulator; ako poslije Matlab-ovog pokazivaca u komandnom prozoru otkucamo matematicke izraze. - atlab ce uraditi navedene racunarske operacij;~-l nosenje sadrzaja jednog reda zavrsavamo pritiskom taster Enter.

o pravilima

----l

po kojima se izvrsavaju aritmeticke operacije detaljno cemo govoriti kasnije. Slijede neki osnovni elementi interaktivnog rada kod koriscenja sistema MATLAB.

Komandni prozor :MATLAB-a Nakon pokretanja Matlab-a, pojavljuje se komandni prozor koji je sada aktivni prozor. U njemu je omogucena komunikacija sa Matlab programskim prevodiocem (engl. interpreter). Kod izraza sa vise uzastopnih operacija stepenovanja,realizacija se odvijas lijeva u desno. Programdaje znak »kojim oznacava da je spreman da prihvati komande od korisnika.

Pokretanje MATLAB-a iIi

Opisi funkcija tastera ili kombinacija tastera k 011 omogucavaju ure d'ivanje k oman dne lini .. . ne iruje: , ..".·:~.·;'il~;:I~~~:Y~\',f; ·
i, Ctrl+P t, Ctrl+N
+r-,
-r-+,

Uvod urad Osnovni element sa kojim rnanipulise MATLAB je pravougaona numericka matrica ciji elementi mogu biti i kompleksni brojevi. Specijalni slucajevi pravougaone matrice su matrice tipa lxl koje predstavljaju skalare, dok su vektori matrice sa sarno jednom vrstom ili kolonom.

Pozivanje prethodne Pomjeranje Pomjeranje Pomjeranje Pomjeranje Pomjeranje Pomjeranje

linije

Pozivanje naredne linije kursora ulijevo za jedan znak kursora udesno za jedan znak kursora ulijevo za jednu rijec kursora udesno za jednu rijec kursora na pocetak komandne kursora na kraj komandne linije linije

Ctrl+B Ctrl+F

Ctrl+<Ctrl+e+ Home, Ctrl+A End, Ctrl+E Esc Del, Ctrl+D Backspace Ctrl+K

linije

Brisanje komandne

Brisanje znaka na mjestu kursora Brisanje znaka lijevo od kursora Brisanje sadrZaja komandne linije do kraja

Unosenje podataka Matrice se u MATLAB mogu unositi na nekoliko nacina: • direktnim unosenjem elemenata, • generisanjem pomocu funkcija ili izraza ugradenih u MATLAB, • definisanjem u M datoteci, • prenosenjem iz spoljne datoteke sa podacima.

Kada su u pitanju matrice malih dimenzija najpogodniji je prvi nacin. Elementi jedne vrste se upisuju jedan za drugim, medusobno razdvojeni praznim mjestom ili zapetom. Kraj svake vrste matrice oznacava se znakom ; (tack a zapeta);Matrica se moiaograniciti zag6idimaU.-----. ·uglastim -.--- ----

Definisanje

promenljivih

Promenljive se definisu tako sto im se dodijeli vrijednost. Naziv promenljive je niz slova i cifara koji mora poceti slovom, pri cemu se velika i mala slova razlikuju. Slijedi primjer definicije matrice dimenzije 3 x 3: » A = [1 23; 456; 7 8 9]

Matricu Aje moguce definisati ina drugi nacin:

» A = [1 23
456
7 8 9] A=

A=
123 456

123 456

789

789

Vektor-vrsta se definise kao u sljedecern pnmjeru: »x
=

Prilikom definisanja vrijednosti promenljivih posebno je koristan operator dvotacka (:). Ovaj operator je namijenjen za definisanje vektora Ciji se elementi dobijaju inkrementiranjem pocetne vrijednosti za konstantan korak. Slijedi primjer:

[-1.3 sqrt(3.1) (1+2)/4*5]

x=
-1.300 1.76073.7500 Slicno kao u prethodnom primjeru sa matricom definise se i vektor-kolona. Elemente matrice je neophodno odvojiti bar jednim white space karakterom.

»x = 1:4 x= 1234

Moguce j e navesti i korak razlicit od 1, kao u sljedecem primjeru:

» y = 1:0.5:3 y= 1.0000 1.50002.00002.50003.0000

Operator dvotacka se moze koristiti i za dodjeJu vrijednosti matrici, ali sarno u slucaju da je matrica bila prethodno definisana (tj. poznate joj dirnenzije). Sljedeci primjer ilustruje ovu mogucnost. »A = [1 23; 4 56; 7 8 9]; »A(:)=21:29 A= 21 2427 222528 232629 -- - ---Ukolikornatrica Aprethodno nije biladefinisana, __________ rezultat.bi bio.vektor kolona. _

MATLAB automatski dodjeljuje vrijednost posljednjeg izracunatog izraza promenljivoj ans. Tako se moze dobiti i vrijednost izraza koji nisu dodijeljeni kao vrijednost nijednoj promjenljivoj. Slijedi prirnjer:

Selckcija clemcnata matrice Elementima matrice pristupa se preko njihovog indeksa. Osim pojedinacnih elemenata matrice, moguce je izdvojiti vrstu, kolonu iii bilo koju podmatricu. Za matricu definisanu izrazom: »A=[123;456;789]; element A(2,2) bi bio: » A(2,2)
ans =

» sqrt (2)
ans = 1.4142

5

Selekcij a elemenata matrice
Izdvajanje trece kolone matrice A vrsi se izrazom:

Selekcija elemenata matrice
Podmatrica koja predstavlja presjek prve i trece vrste i druge i trece kolone matrice A dobija se izrazom:

»A(:,3) ans =
3

6
9

»A([1 3], [23]) ans= 23

89

Selekcija elemenata matrice
Prethodni rezultat se moze dobiti i izrazom:

U izrazima i prethodno je moguce Na primjer,

za selekciju eJemenata matrice moguce je koristiti definisane vektore - promenljive. U MATLAB-u promijeniti i dimenzije matrice. izraz

»A([1 3],2:3)
iii izrazom:

»A=[A;101112] A= ]23

456 789
]011 12 matricll Anov'Om vrstom. . .. _ ._ ...._..

»A(1 :2:3,2:3)

ce prosiriti

Ukoliko se matrica prosiruje novim elementima, a ne definisu se vrij ednosti svih novih elemenata, za njihove vrijednosti se uzima nula. Na primjer:

Osnovne operacije sa matricama Transponovanje » A = [1 2 3·, 4 5 6· 7 8 9]·, , »B=A' B=

» x = 1 : 4; » x(6) = 7 x=

147
258 369

123407

Vektori
Vee je receno da matrice sajednim stupcem ili jedim retkom zovemo vektori.

Vektori »b=[5;2;1] b=
5 2

Vektori se u Matlab unose na sljedeci nacin: »a=[2 5 6] (ill a=[2,5,6]) a= 256

1

Vektori

Sabiranje

Sta dobijemo za a' i b'. »a'
ans= 2 5 6

»C=A+B C=
2 610 61014 101418

»b'
ans= 521

Sabiranje matrice i skalara
Prilikom sabiranja matrice sa skalarom, svaki element matrice se sabira sa datim skalarom. Sabiranje matrice sa skalarom je komutativno.

Sabiranje vektora sa skaJarom:

»a+2
ans=

478
»b-l ans=
4

»C=C-2 C=
048 4 812 81216

o

1

Mnozenje matrica Operator * obuhvata i mnozenje matrice i vektora, mnozenje dva vektora i mnozenje matrice ili vektora skalarorn. Naredni primjeri ilustruju ove mogucnosti MATLAB-a. »D=A*B D=
14 32 50 32 77 122 50 122 194

Mnozen]e matrica
-~'·c -,

,» y

=

[456];

:»y*'x -, " r.--_' ans c= ,,' 32

Osnovne operacije nad dva vektora su moguce sarno ukoliko su istog oblika: »a+b
??? Error using ==> +

Matrix dimensions must agree.

Pored ovoga, MATLAB posjeduje operatore / i \ koji su namijenjeni za mnozenje matrice inverzijom druge matrice. Pri tome izraz A\B predstavlja mnozenje A-HB, a izraz AlB predstavlja mnozenje A *B-l. Iz ovoga slijedi da se sistem Iinearnih jednacina Ax = b u MATLAB-u moze relativno jednostavno rijesiti, kao u sljedecem primjeru: »A= [1026; 1 109; 2 -7 -10]; » b = [28 7 -17]'; » x = A\b x= 1.0000 -3.0000 4.0000-' -

U slucaju da je matrica sistema singulama, iii bliska singulamoj, MATLAB ce ispisati upozorenje:
» A = [1 2 3; 4 5 6; 7 8 9];

Operacije sa elementima matrice ili vektora Elementi dvije matrice iIi vektora se mogu pomnoziti po principu "element sa elementom", pomocu operatora ." . Pri tome dimenzije matrica iIi vektora koji se mnoze moraju biti jednake. Slijedi primjer: [1 2 3]; »y = [4 5 6];
=

» b = [1042],; » x = A\b Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.937385e-018 x= 1.0e+016 *. 1.2609 -2.5218 1.2609

»X

»x ." y
ans = 4 10 18

Operacije

sa elementima

matrice ill vektora

Analogno prethodnom postoje i operatori ./ i .\ koji predstavljaju dijeljenje sa desna, odnosno sa lijeva. Sljedeci primjer ilustruje upotrebu ovih operatora: »x./y ans =

Stepenovanje Ako je A kvadratna matrica i x cio broj, tad a izraz A "x predstavlja x-ti matricni stepen od A. Ukoliko je x realan broj, tada je A I\x = V*D.I\x/V, gdje operator /' predstavlja stepenovanje matrica element po element, V je matrica desnih sopstvenih vektora, a D dijagonalna matrica sopstvenih vrijednosti.

0.25000.40000.5000
»x .\ y ans =

4.00002.50002.0000

Matlab - tipovi podataka
Informacioni objekti (objekti sa podacima) koje obradujemo pomocu racunara sadrze u sebi razlicite tipove podataka. Medutim, svaki objekat uvijek se moze posmatrati kao spoj dva dijela: spoljasnjeg

·Spoljasnji dio objekta sastoji se izjednog ili veceg broja pokazatelja (imena, · identifikatora, ..., oznaka). ·To je one sto programer "vidi" od cijelog :j objekta, tj. one cemu moze direktno da pristupi \i da ga koristi (na primjer: navodeci ime pbjekta u nekom programu).
_.~

i

unutrasnjeg.

t·.... -" _ ..

i Unutrasnji dio objekta jeste prikaz podataka koji , objekat cine unutar racunara; taj prikaz ostaje skriven za korisnika,
Unutrasnji dio objekta cine jedna ili vise vrijednosti i jedan iIi vise pokazatelja polozaja tih vrij ednosti. Ovi pokazatelji sadrze infonnacije 0 tome gdje se vrijednosti nalaze u memoriji racunara tokom rada programa, tj. ti pokazatelji definisu vezu izmedu imena i vrijednosti, kako je sematski pokazano na narednoj slici.
-~.

'.

..

Spoljasnji dio objekta (u programu)

....... ,.._'7"~-.-

j

Unutrasnji dio objekta (u racunaru)

Dijelovi objekata sa podacima

Razlikovanje izmedu pojmova spoljasnjeg i unutrasnjeg dijela objekta neophodno je vee zbog toga sto je unutrasnji prikaz objekta u racunaru binaran i kao takav najcesce razlicit od spoljasnjeg prikaza tog objekta. U literaturi iz oblasti MATLAB-a termin promjenljiva koristi se uopste za objekte, cije vrijednosti mogu da se mijenjaju u toku rada programa.

Drugim rijecima, promjenljive su objekti (tj. skupovi vrijednosti) u kojima svaka vrijednost moze da se mijenja. DakIe, terminom promjenIjiva obuhvacene su kako tzv. skalame promjenljive, tako i skupovi vrijednosti iIi poIja (nizovi). Medutim, mi cemo cesto koristiti i term in objekat sa podacima. . MATLAB funkcionise tako da i skalarnu promenljivu tretira kao matricu 1xl, dakIe, kao poIje.

Na taj nacin za mnoge operacije koje se izvode u MATLAB-u, bez ikakve promjene notacije, i skalari i nizovi (polja) mogu da se koriste kao operandi. N a primj er, uzmimo da su a i b dva skalara, i da su A i B dvije saglasne matrice, izrazi kojima u MATLAB":ll odredujemo proizvode brojeva a i b i proizvod matrica A i B imaju analogne oblike: a*b iA *B, tj. operacija mnozenja uoba slucaja oznacavase sa-*.-

Dakle, kako promenlj iva znaci polj e tj. niz (na primjer, to moze da bude jednodimenzioni niz ili matrica), to je ime te promenljive adresa cijelog niza. Medutim, svaki clan (ili komponenta) niza ili pojedini dijelovi tog niza (podskupovi cijelog niza) takode imaju svoja imena, koja se konstruisu od imena promenljive i specijalnih izraza za selekciju koji slijede poslijetog imena.sto omogueavadasepristupi-tim ------ dijelovima niza.----------. -- ------~~--

POJAl\1 TIPAPODATKA
Interni objekti prikazuju se u memoriji u binamom obliku. U masinskim i asemblerskim jezicima objekti se posmatraju i sa njima se manipulise jedino na ovom najnizem nivou; jedini objekti sa kojima se radi na masinskom nivou jesu brojevi i znaci. Ovo znaci da se inzenjerski problemi veoma tesko mogu rjesavati koriscenjem ovih jezika, jer se prakticno radi sarno 0 binamim objektirna i zahtijeva se detaljno poznavanje rada racunara.

U visim programskim jezicima, kod kojih korisnici i stvaraoci programa ne moraju da se upustaju u detaljno sagledavanje rada racunara, na raspolaganju stoji odreden broj tip ova podataka. Za svaki objekt sa podacima deklarise se tip podataka koje objekt sadrzi. Taj tip se kod vecine programskihjezika (kao, na primjer, kod FORTRAN-a) ne moze mijenjati u toku rada programa.

,
j

'.

Medutim, u MATLAB-u vazi koncept tzv. llmplicitnog deklarisanja tipa podatka> \
\

Prilikom dodjeljivanja jedne vrijednosti \promjenljivoj implicitno se utvrduje tip te i promenljive. I Kada se promjenljivoj odredenog tipa i: dodijeli jedna vrijednost drugog tipa, tip \promjenljive ce dinamicki biti promijenjen, tj: po~tace isti kao tip vrijednosti kojaje u
I

Na primjer, u jednu istu promjenljivu mozemo prvo smjestiti skalar, poslije toga vektor, a zatim npr. jednu tekstualnu konstantu. Dakle, mozemo konstatovati da se odredena promjenljiva MATLAB-a uvodi prilikom prvog unosenja vrijednosti u tu promjenljivu i da ce tip podatka te vrijednosti biti istovremeno i prvi tip podatka promenljive.

pitanju.

J.
1

(

Stalni tipovi podatka koji postoje u MATLAB-u sluze ze prikazivanje brojeva, teksta ili logickih vrijednosti (istinito iii lazno). Tip podataka jednog objekta odreduje interni prikaz i nacin interpretacije tog prikaza. Tip podatka karakterise se sljedecim svojstvima: (J) imenom za identifikaciju tog tipa; (2) opsegom vrijednosti; (3) notacijom za prikazivanje konstanti tog tipa, ovo znaci da nacin pisanja konstante jednoznacno odreduje kogje tipa ta konstanta; (4) skupom operacijairelacija zaobjekte tog tipa.

NIZOVI (POLJA) Skup pojedinacnih vrijednosti sa istim tipom . podatka nazivamo niz. ; Mozerno reci da niz ima isti tip kao elementi niza. Pojedinacni element niza identifikuje se pomocu indeksa. Ako elementi nekog niza posjeduju samo I..jedan indeks, onda je rijec 0 jednodimenzionom

nlzu:~- - -

U. MATLAB- u indeksi_uyij ek cine. niz _ uzastopnih prirodnih brojeva. U jednodimenzionog niza indeksi -sul,2, .." irniax,gdje je i1max-gomjagranica.

Dvodimenzioni niz sastoji se od promjenljivih sa dva indeksa. Proizvoljni element nekog dvodimenzionog niza Ajeste promjenljiva: A(I,J), - 1=1,2, , i1max J=I, 2, , i2max Ukupan broj clanova niza A iznosi i1max X i2max , a to je drugim rijecima ukupan broj rnogucih razlicitih kombinacija I i 1. Clanove dvodimenzionog niza shvatamo kao elemente matrice, gdje prvi indeks oznacava redni broj

OSNOVN1 T1POV1 PODATAKA U MATLAB-u U MATLAB-u postoji dvanaest osnovnih (stalnih) tipova podatka, a to su:

double, int8, uint8, int16, uint16, int32, 1f!ftMJ\stf9t~-lJ~a'P~gdseni~JatJlli~t
postoji mogucnost koriscenja i takvih tipova podatka koje korisnik sam uvodi.

Od sustinskog znacaja u MATLAB-u su sarno dva stalna tipa: double i char, zato sio se svi proracuni unutar racunara izvrsavaju u dvostrukoj tacnosti i zato sto se svi tekstualni podaci smjestaju u prornjenljive tip a char. Tipovi numerickih podataka int8, uint8, int 16, iunt 16, int32, uint32 i single jedino sluze za ekonomicko skladistenje numerickih objekata u rnernoriji, tj. sa ovirn podacirna nisu moguce bilo kakve matematicke operacije. Tip sparse sluzi za kompaktno memorisanje i efikasno obradivanje rnatrica sa rnalirn brojern elernenata razlicitih od nule (tzv. "praznih" il "rijetkih" rnatrica).

TIP PODATAKA double
..

-

-.- _..-

-

...

-- _..
..

! __ L--... ~~---v~-.- -- -~---.-,,... . .---.-.'. .... .. ..... -~---., ..

Tip podataka double sluzi za memorisanje r~umeriCkih nizova (iIi skalara, koji se u I~ATLAB-u takode tretiraju kao nizovi). Elementi o:ih n.izo_vamo~u da budu re~lni ili\ kompleksni brojevi (znaci da ne postoji i Iposeban tip podataka za kompleksne brojevef Brojevi koji se registruju u okviru tipa doublq i cine jedan podskup realnih odnosno / kompleksnih brojeva.

\

I

I

I,

I

..;_/ .

Konstante tipa double (u strucnoj literaturi se za konstante koristi i term in "literali") prikazuju se kao zbir realnog dijela i (opeiono) imaginarnog dijela broja: realni dio (± imaginarnidio i) gdje smo simbolima (); izdvojili opeioni dio. Ovdje je i oznaka za imaginamu (Umjesto i mozemo jedinicu

(Fl)

Brojevi koji odreduju konstantu mogu se prikazati na dva nacina. Prvi nacin ispisivanja broja odgovara uobicajenom prikazu dekadnih brojeva; ovdje piserno dva niza dekadnih cifara koji su razdvojeni decimalnom tackom, s tim sto se jedan od tih nizova moze ispustiti, ako cjelobrojnog (iIi razlomljenog) dijela broja nema. Znak broja u slucaju kadaje broj pozitivan mozemo da izostavimo. Primjeri: -123.45, .51, +139.

da.pisemo j)-

Kod drugog oblika prikazivanja, poslije deeimalnog broja, u kome su date znacajne eifre, slijedi dio sa eksponentom, gdje se poslije slova e (iii E) unosi znak (koji nije neophodan, ako je broj koji slijedi pozitivan) i zatim eifre jednog eijelog broja. Vrijednost brojajednakaje proizvodu datog deeimalnog broja i broja 10 stepenovanog eijelim brojem kojije dat poslije e.
Prikaz broja u MATLAB-u l.23e-J .019E+4 -33.E-3 Vrijednost broja 0.123 190 . -0.033

Pored navedenih oblika konstanti, U MATLAB-u se koriste i sljedece konstante: Inf (ili lnj) kao simbol za
OCJ ,

NaN (iii nan) kao simbol za "not a number" (ovo znaci "nije broj"), cime se karakterisu izrazi 0/0, OCJ / OCJ i slicno.

LOGICKE PROMENLJIVE U MATLAB-u ne postoji osnovni tip podatka za logicke vrijednosti (tj. tip podatka za - memorisanje logickih vrijednosti istinito i lazno). Logicke vrijednosti simuliraju se ipak uz pomoc tip a double. Promjenljiva tipa double, koja tokom rada programa uzimajedino vrijednosti 0 i 1, u MATLAB-u se interpretira kao logicka promjenljiva. Numericka vrijednost 1 oznacava vrijednost istinitog iskaza, a numericka vrijednost 0 laznog iskaza.

lake za memorisanje logicke vrijednosti ne posjeduje sopstveni tip podataka MATLAB pravi razliku izmedu numerickih i logickih objekata sa tipom double; jedan numericki niz sa vrijednostima 0 iI, prije nego sto ce moci biti primijenjen kao logicki objekat, mora da bude konvertovan naredbom logical.

TIPOVI PODATAKA ZA EFlKASNO MEMORlSANJE
Tipovi podataka int8, uint8, int16, uint16, int32 i uint32 sluze u prvom redu za efikasno, tj. ekonomicno iskoriscenje memorije prilikom registrovanja cijelih brojeva. Slicno tome, tip podataka single sluzi za memorisanje mjesovitih brojeva u obicnoj tacnosti.

U sljedecoj tabeli daju se podaci koji se ticu registrovanja cijelih brojeva u memoriji:
Tip podatka int8 uint8 intl6 Broj bitova 8 8 16 Vrijednosti koje se registruju -128 (-27),-127, ...,127(27-1) 0, I, ... -32768(-21'), 255(2'- I)

-32767, "', 32767(2'-'- I)

uintl6 int32

16 32

0,1, ..., 65535(216_1) -2147483648 (-231), ... ,2147483647 -- -----0, 1, "', 4294967295 (2"-1) (231_1)

uint32

32

Definisanje promenljvih koje imaju jedan od gore navedenih sedam tip ova moze se ostvariti iskljucivo pomocu konverzije promjenljivih u dvostrukoj tacnosti i to primjenom jedne od naredbi: int8, uint8, int16, uint16, int32, uint32, single Da bi se podatak sa jednim od ovih tip ova mogao koristiti u nekom proracunu, potrebno je da prethodno opet bude konvertovan u tip double - sto se postize naredbom double.

.memorisanje matrica sa malo ~~e_n~~~JaZ~ ~.~jjjetke:.:.matric.e.}( Kod rada sa ovim matricama MATLAB primjenjuje narocito optimizovane algoritme. Medutim, narociti nacin memorisanja matrice, ne utice na neke naredbe koje se u proracunu mogu primjenjivati na ove matrice jer se te naredbe potpuno isto primjenjuju kao pri radu sa "potpuno popunjenim" matricama.

C~:ta~~,p=:,e SlUZl:~::;;;:ln~ .... '
TIP PODATAKA sparse

TIP PODATAKA char

ASCII -znakova. } l'JiZ zna'FovilojI"predstavlja tekstualni podatak uvijekje ogranicen apostrofima ('), tj. crticama koje se pisu kao gornji indeks. Medutim, ako apostrof treba da bude znak koji ce pripadati samom tekstu, onda se taj znak pise udvojeno, tj. pisu se dva uzastopna apostrofa. MATLAB ta dva apostrofa tretira kao jedan apostrofu tekstu.

t~if~:=~::~~~;~~~:~j~i~~:eva ciiJ
txtvek= DJORDJE MARINA MARKO

Vektori i matrice, ciji clanovi imaju tekstualni sadrzaj definisu se u MATLAB-u slicno kao i numericki vektori i matrice, unosenjem vrijednosti izmedu uglastih zagrada. Vrijednosti su u ovom slucaju tekstualne konstante, tj. nizovi karaktera nap isani izmedu apostrofa.
» txtvek= ['DJORDJE ' ; 'MARINA' ; 'MARKO']

TIP PODATAKA cell- NIZOVI TIPA cell

MATLAB -Iinije

kom mtari 9. 79.] 'MARINA' 2.S} - Fonniran je vektorvrsta-vvcell tipa

ciji je tip podatka cell (koristi se i j tennin cell array - 8tObi se moglo doslovno prevesti kao "niz celija") slican je entitetu koga nazivamo niz brojeva, ali je ovde rijec o nizu objekata (matrica, vektora, itd.). Pored toga, objekat sa tipOn1cell moze da --bude skup kornponenti sa razlicitim sadrzajima (numerickirn, tekstualnim, itd.).

r

! Objekat

~..

....

.. __ ____...,

» vveell= {[24.
vveell =

cell koga tine jedan 12.50001 nurnericki vektorvrsta sa tri elementa. jedan element tipa char i jedan skalar, Vidimo odgovor MATLAB-ana
~~-

[lx3 double] 'MARINA'

» vvcell(l)
ans = [lx3 double]

vveell(I).

- ---

----

-..

,
iTIP PODATAKA struct - OBJEKTI TIPA
I

structure U MATLAB-u se koristi pojam structure koji se odnosi na skupove podataka koji se sastoje od ~odredenoLb[Qj_~~()lllponenti.~; od nizova, ave komponenteino"guimati razlicit tip podatka i za razliku od nizova tipa cell, ove komponente imaju jednoznacno simbolicko

Komponente jedne strukture (tj. objekta tipa structure) mogu da budu objekti tipa cell, ili da budu matrice iii drugi objekti tipa structure. U MATLAB-u vazi koncept dinamickih struktura sto znaci da se oblik objekata tipa structure nikada ne definise eksplicitno. Dodjeljivanjem sadrzaja pojedinim komponentama strukture, koje u trenutku dodjeljivanja ne postoje, formirajuse nove komponente objekta.

Za.-raziiiill
rme.

Svaka komponenta poziva se iskljucivo preko svog imena.

Jasno je da objekti tipa struct sluze da bi se objekti sa razlicitim tipovima objedinili i da bi zatim postojala mogucnost da se svi tako sabrani podaci mogu navesti pod imenom objekta tipa struct. Medutim, postoji rnogucnost i da se manipulise sa pojedinim komponentama objekta; ovakav nacin pristupa podacima naziva se selekcija. U slucaju da jedna struktura kao komponente ima druge strukture, selekcija moze da se protegne na vise nivoa. Detaljnije objasnjenje 0 radu sa strukturama dacemo kroz primjere.

Sustinsko svojstvo ovih objekata je u obliku imena komponenti, koji u opstem slucaju izgleda ovako: ime _obj ekta.ime _komponente Ovo znaci da ovdje ne postoje bilo kakvi indeksi, kao kod nizova (kako obicnih tako i nizova tip a cell).

"fATLAB
)I

- l nije

komentari - Ovdjesu definisane tri komponente strukture sa imenom krug: krug.radijusje skalar, promenljiva tipa

MATLAB - 1 ntje »krug.radijus= krug= radijus: centar: boja: ans= 1.0000 » krug.centar(l) ans = 0.5000 10 [I 0.5000] 'plavo' 10

komentari -Promijenjenaje vrijednost komponenre strukture krug.

krug.radijus=5

krug = radijus: 5 I. 0.5]

krug.centar je vektor-vrsta,
krug.bojaje

» krug.centar=[ krug = radijus: centar: krug = radijus: 5 5

char. Odgovori MATLAB-a na
pojedine komande kojima se definisu komponente strukture krug sadrze prikaz svih komponenti koje

» krug.centar

-Pozivanje jedne komponente strukrure krug. Formiranje vektorvrsta ans. -Ovdje vidimo daje rnoguce pojedinacno komponenta navodenje elemenata je ta ~ rnarrica. neke komponenteako

[1 0.5000]

» krug.boja=plavo'

centar: ~ [1 0.5000] boja: 'plavo'

~~ » krug.centar (1,2)
ans= 0.5000

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->