Algoritmi i Programiranje

Embed Size (px)

DESCRIPTION

Informatika predavanje 2 Ekonomski fakultet u Osijeku 2015

Citation preview

  • Algoritmi i programiranje raunala 1

    ALGORITMI I

    PROGRAMIRANJE

    RAUNALA

    4 sata

    ALGORITMI I

    PROGRAMIRANJE

    RAUNALA

    ALGORITMI 2,5 sati

    Operativni ciljevi

    Upoznati se s algoritmima, njihovom formom,

    radom, svrhovitou, te uoiti vezu izmeu

    algoritama i programiranja

    PROGRAMIRANJE I

    PROGRAMSKI JEZICI 1,5 sati

    Operativni ciljevi

    Upoznati se s programiranjem, vezom stroj-

    program, programskim jezicima, generacijama,

    evolucijom programskih jezika, te

    trendovima u razvitku programskih jezika

    SADRAJ PREDAVANJA

  • Algoritmi i programiranje raunala 2

    ALGORITMI ALGORITMI

    POSLOVNI INFORMACIJSKI SUSTAVI

    Uredski informac

    ijski

    sustav

    Sustav za podr

    ku

    odluivanju

    Upravljaki inf

    ormacijski

    sustav

    Marketing informacijski sustav

    Proizvodni informacijski sustav

    Ra informacijski sustavunovodstveni

    Financijski informacijski sustav

    ...

    POSLOVNI INFORMACIJSKI SUSTAV

    POSLOVNI INFORMACIJSKI SUSTAV

    Uredski informac

    ijski

    sustav

    Sustav za podr

    ku

    odluivanju

    Upravljaki inf

    ormacijski

    sustav

    Marketing-informacijski sustav

    Lifeware (ljudski potencijal)

    Software (programski podsustav)

    Hardware (strojni podsustav))

    Proizvodni informacijski sustav

    Ra informacijski sustavunovodstveni

    Financijski informacijski sustav

    ...

    POSLOVNI INFORMACIJSKI SUSTAV

    POSLOVNI INFORMACIJSKI SUSTAV

  • Algoritmi i programiranje raunala 3

    Za pojam zasluan arapski matematiar iz IX.

    stoljea: Muhamed ibn Musa Al Horezmi

    (u prijevodu: Muhamed sin Muse iz Horezma)

    Napisao knjigu u kojoj je razradio postupke i

    pravila za provoenje aritmetikih operacija s

    brojevima zapisanim u dekadskom obliku.

    POJAM ALGORITAM

    U runoj (manualnoj) obradi podataka, skup

    postupaka koje treba uiniti da bi se rijeio

    zadatak

    npr. Algoritam je i nauen postupak mnoena

    u osnovnoj koli

    PRIMJER RAUNSKOG ALGORITMA

    23* 32

    69

    46 +

    736

  • Algoritmi i programiranje raunala 4

    Algoritam Program

    TKO TO PROCESUIRA?!*

    * proces od lat.

    processus napredak, rastanje

    Obrada podataka koja se preteito obavlja na

    elektronikom raunalu, prema unaprijed

    zadanom programu (nizu instrukcija (naredbi)) i

    nad podacima koji su upisani i nalaze se u

    centralnoj memoriji.

    EVOLUTIVNI NIZ

    Manualna obrada

    Mehanika obrada

    Elektromehanika obrada

    Elektronika obrada

    PREDMET OBRADE

    Podaci (sve to se moe digitalizirati: brojevi,

    alfanumeriki znakovi, slike, video, tonski zapisi)

    ELEKTRONIKA OBRADA PODATAKA

  • Algoritmi i programiranje raunala 5

    Algoritmi - faza u procesu izrade programa za

    elektroniku obradu podataka

    Definiranje problema

    Razumijevanje problema

    Izrada algoritma (iskusni programeri u glavi)

    Prevoenje algoritma u programski jezik

    Strojno prevoenje (interpretacija) i testiranje

    programa

    Korekcija i prilagodba programa

    Izrada popratne dokumentacije i uputa za rad

    FAZE NASTANKA PROGRAMA

    S obzirom da su algoritmi priprema za izradu

    programa, kreiraju se u duhu programskog jezika

    za koji su priprema.

    Prilikom kreiranja algoritama treba teiti da

    instruktivni odnos

    algoritam : program bude 1:1

    ODNOS ALGORITMA I PROGRAMA

    10 S=0

    20 INPUT X

    30 IF X=-99999 THEN GOTO 60

    40 S=S+X

    50 GO TO 20

    60 PRINT S

    70 END

  • Algoritmi i programiranje raunala 6

    Algoritam je:

    Recept u kuharici,

    Upute za uporabu,

    Proces spajanja gena,

    Itd.

    to su bitne karakteristike algoritma?

    Orijentiranost k cilju (rezultatu),

    Konanost (upotrebljivost),

    Ponovljivost uz iste ulazne uvijete,

    Razumljivost procesnoj jedinici,

    Instruktivnost (formira se u obliku naredbi)

    ALGORITMI - KARAKTERISTIKE

    Opi algoritmi (zbrajanje unesenih brojeva):

    Specijalizirani algoritmi (raunanje broja e):

    NAELNA STRUKTURA ALGORITMA

  • Algoritmi i programiranje raunala 7

    OD ALGORITMA DO IZVRNOG KODA

    Definiranje problema

    Razumijevanje problema

    Analiza (rastavljanje na sastavne dijelove)

    problema i pronalaenje postupka kojim

    problem rijeiti na stroju razumljiv nain

    (primjer s kutijom ibica)

    Pisanje algoritma

    Testiranje algoritma (Traeni nivo znanja je

    testiranje (procesuiranje) algoritma i

    prepoznavanje svrhovitosti algoritma)

    Ispravljanje algoritma (Greke sintakse; formalne

    i logike)

    Kreiranje dokumentacije

    PROCES NASTAJANJA ALGORITMA

  • Algoritmi i programiranje raunala 8

    ALGORITMI

    3. Generacije

    programskih jezika

    (Basic)

    ALGORITMI

    3. Generacije

    programskih jezika

    (Basic)

    Algoritam grade(algoritmi koje emo izuavati su

    algoritmi za obradu numerikih podataka)

    Predmeti i sredstva obrade (objekti - podaci):

    Varijable

    Konstante

    Matematiki i logiki operatori

    Algoritamske strukture

    Pravila sintakse

    gr. syntaxis sastavljam, sreujem; gram.

    Skladnja, u ovom sluaju algoritma/programa

    STRUKTURA ALGORITAMA

  • Algoritmi i programiranje raunala 9

    Kompjuterom se obrauje sve to se moe

    digitalizirati konvertirati u broj (u binarni

    brojevni sustav 0 i 1)

    Izdvajamo:

    Numerike podatke (brojevi)

    0, 111.001, 10E23,

    Alfanumerike podatke (brojevi i slova)

    Pero, 0, 111.001, OSIJEK,

    Ostali tipovi: logiki,

    datumski, memo,

    VRSTE PODATAKA (OBJEKATA)

    franc. varijable, mat. promjenjiva veliina,

    promjenljiva vrijednost

    Oznaavaju se simbolima kao i u matematici

    (postoje za pojedine programske jezike pravila

    oznaavanja, tzv. pravila notacije)

    Primjeri varijabli:

    X, y, z, broj, ime, god, nIznos,

    VARIJABLE

  • Algoritmi i programiranje raunala 10

    lat. constans mat. stalan, nepromjenljiva veliina

    Oznaavaju se simbolima kao i u matematici

    (postoje za pojedine programske jezike pravila

    oznaavanja, tzv. pravila notacije)

    Konstante tijekom izvoenja algoritma ne

    mijenjaju poetno pridruenu vrijednost

    (najpoznatije su e=2,718, Pi=3,141)

    Primjeri konstanti:

    Pi, e, p, g, nGravit,

    KONSTANTE

    mat. znak (predznak) kojim se obiljeava nain

    izvoenja operacije

    Oznaavaju se matematikim simbolima:

    =, +, -, *, /, ^, (, ),

    Koriste se u aritmetikim i logikim operacijama

    Operacije se izvode od lijeva na desno pritom

    potujui pravila:

    Komutacije

    Asocijacije

    Stupnjevanja

    OPERATORI

  • Algoritmi i programiranje raunala 11

    U aritmetikim operacijama znai pridruivanja

    (u nekim programskim jezicima se oznaava s :=)

    I=I+1

    U logikim operacijama znai vaganje

    Ako je i=10 onda

    PARADOKS ZNAKA JEDNAKOSTI

    Slijedna (linearne ili sekvencijalne)

    Poetak i kraj

    Definiranje varijabli i konstanti

    Ulaz

    Izlaz

    Aritmetike i logike operacije

    Struktura bezuvjetnog skoka

    Struktura grananja (sadri logike operacije), a

    kombinira se sa:

    Slijednom strukturom

    Strukturom bezuvjetnog skoka

    Struktura iteracije (ponavljanja ili petlje)

    ALGORITAMSKE STRUKTURE

  • Algoritmi i programiranje raunala 12

    PSEUDO JEZIK BLOK DIJAGRAM

    Poetak

    Definiranje varijabli i konstanti

    1. X=0, Y=0, S=0

    Ulaz 2. Uitaj x

    3. Uitaj y

    Aritmetika operacija

    4. S=X+Y

    Izlaz 5. Ispii S

    Kraj 6. Kraj

    Kod pisanja algoritma u pseudo jeziku (kodu)

    linije se obino oznaavaju rednim brojevima

    SLIJEDNA STRUKTURA

    PROCES IZVOENJA ALGORITMA

  • Algoritmi i programiranje raunala 13

    Izvodi se kao i u matematici uvrtavanjem

    vrijednosti u algoritam

    Algoritam se testira sekvencialno praenjem

    svakog reda (instrukcije) algoritma od poetka do

    kraja, uz zapisivanje vrijednosti koje varijable

    usput poprimaju, da bi se u konanici saznala

    konana vrijednost izlaznih varijabli

    TESTIRANJE ALGORITMA

    Greke u algoritmu (Bug-ovi: eng. bug stjenica,

    kukac, buba u glavi, kvar, zaraza):

    Sintaksne greke (gr. syntaxis sastavljam,

    sreujem; gram. Skladnja)

    Formalne greke su pravopisne greke i

    tipfeler

    npr. 10. Iskii S isp. 10. Ispii S

    23. A-A+1 isp. 23. A=A+1

    Logike greke najee nastaju zbog:

    Nerazumijevanja problema

    Nepoznavanja logike rada stroja

    Niskog programerskog iskustva

    Greke se ispravljaju tzv. debugiranjem

    TESTIRANJE ALGORITMA

  • Algoritmi i programiranje raunala 14

    Nedefinirane varijable:

    npr. 1. Uitaj A isp. 1. S=0, A=0

    2. S=S+1 2. Uitaj S

    Koliki je S? 3. S=S+1

    Dijeljenje s nulom:

    npr. 1. A=0, S=0

    2. Uitaj B

    3. S=B/A

    Koliki je S?

    Kako sprijeiti unos nulu kao djelitelja?

    LOGIKE GREKE - slijedna struktura

    Struktura bezuvjetnog skoka omoguava

    naruavanje linearnosti

    PSEUDO JEZIK BLOK DIJAGRAM

    x. Idi na y

    Gdje su x i y brojevi linija algoritma bez obzira

    na smjer (gore/dolje)

    Koristi se za testiranje algoritma (preskae dio

    algoritma)

    Izaziva greku bezuvjetnog ponavljanja (tzv.

    beskonana petlja ili iteracija)

    Kombinira se s strukturom grananja radi

    naruavanja linearnosti / uspostavljanja

    ponavljanja (dijela) algoritma

    BEZUVJETNI SKOK

  • Algoritmi i programiranje raunala 15

    Omoguava preskakanje dijela algoritma

    1. X=100, S=0

    2. Idi na 5

    3. Uitaj Y

    4. S=X/Y

    5. Ispii S

    6. Kraj

    BEZUVJETNI SKOK- testiranje algoritma

    esta greka zbog koje je bezuvjetni skok na

    loem glasu

    1. X=100, S=0

    2. Uitaj Y

    3. S=X/Y

    4. Idi na 3

    5. Ispii S

    6. Kraj

    BEZUVJETNI SKOK- beskonana itracija

  • Algoritmi i programiranje raunala 16

    Struktura grananja koristi se za naruavanje

    linearnosti

    PSEUDO JEZIK

    x. Ako je ### onda $$$ [u protivnom $$$]

    BLOK DIJAGRAM

    Gdje su

    x broj linije algoritma

    ### logika operacija

    $$$ slijedna operacija i/ili operacija bezuvjetnog

    skoka (tzv. uvjetni skok)

    GRANANJE

    LOGIKE OPERACIJE (###)

    Usporeivanje:

    varijable s varijablom (x s y, z s k, i sl.)

    varijable s brojem (x s 0, y s -9999, i sl.)

    Logiki operatori:

    = jednako

    > vee od

    < manje od

    >= vee ili jednako

  • Algoritmi i programiranje raunala 17

    u kombinaciji sa strukturom bezuvjetnog skoka

    (sprijeavanje unosa nule kao djelitelja)

    1. X=100, S=0, Y=0

    2. Uitaj Y

    3. Ako je Y=0 Idi na 6

    4. S=X/Y

    5. Ispii S

    6. Kraj

    GRANANJE

    u kombinaciji sa slijednom strukturom

    (sprijeavanje unosa nule kao djelitelja?!)

    1. X=100, S=0, Y=0

    2. Uitaj Y

    3. Ako je Y=0 onda Y=1

    4. S=X/Y

    5. Ispii S

    6. Kraj

    GRANANJE

  • Algoritmi i programiranje raunala 18

    u kombinaciji sa strukturom bezuvjetnog skoka

    (ponavljanje - sprijeavanje unosa nule kao

    djelitelja)

    1. X=100, S=0, Y=0

    2. Uitaj Y

    3. Ako je Y=0 onda idi na 2

    4. S=X/Y

    5. Ispii S

    6. Kraj

    GRANANJE

    Skok na nepostojeu adresu (kod pseudo koda)

    1. X=100, S=0, Y=0

    2. Uitaj Y

    3. Ako je Y=0 onda idi na 7

    4. S=X/Y

    5. Ispii S

    6. Kraj

    Nastaje zbog auriranja redova algoritma bez

    auriranja instrukcija koje sadre

    skok (savjet: numerirati svaki red

    s korakom 10 npr. 100, 110, 120.)

    GRNANJE LOGIKA GREKA

  • Algoritmi i programiranje raunala 19

    Evoluirala iz kombinacije slijedne strukture i

    strukture uvjetnog skoka

    Vie vrsta iteracija - bavit emo se samo

    iteracijama s unaprijed definiranim konanim

    brojem koraka

    x. Za I=1 do K

    z. Poveaj I

    ITERACIJA (PONAVLJANJE)

    Omoguava uitavanje konanog broja brojeva, te

    rauna kumulativ

    1. S=0, X=0, I=0

    2. Za I=1 do 4

    3. Uitaj X

    4. S=S+X

    5. Poveaj I

    6. Ispii S

    7. Kraj

    ITERACIJA (PONAVLJANJE)

  • Algoritmi i programiranje raunala 20

    Izraun Faktorijela (X!)

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

    2. Uitaj X

    3. Za I=1 do X

    4. F=F*I

    5. Poveaj I

    6. Ispii F

    7. Kraj

    ITERACIJA (PONAVLJANJE)

    PITANJA!

  • Algoritmi i programiranje raunala 21

    PROGRAMIRANJE PROGRAMIRANJE

    PROGRAMIRANJE

    postupak kreiranja programa

    PROGRAM

    skup instrukcija (uputa) raunalu kako da radi

    PROGRAMSKI JEZK

    skup pravila* (sintaksa) za pisanje programa

    STROJNI JEZIK

    instrukcije ugraene u procesor temeljem koji

    procesor manipulira s podacima

    * Zapisan algoritam prema tim pravilima i pohranjen u

    raunalu u obliku teksta posebnim programima mogue je

    prevesti u stroju razumljiv kod (strojni jezik)

    TEMELJNI POJMOVI

  • Algoritmi i programiranje raunala 22

    Nii programski jezici

    Zahtijevaju dobro poznavanje strukture raunala,

    procesorske instrukcije i procese u raunalu

    poznavanje logike rada stroja

    Primjer: Asembler simboliki jezik

    Vii programski jezici

    Nastali objedinjivanjem vie asemblerskih instrukcija u

    jednu, stoga blii nainu razmiljanja ovjeka, te se

    programer moe usredotoiti na problem. to je

    programski jezik na viem nivou to je manje potrebno

    znati o principima rad raunala (vidi generacije)

    Primjer: Basic, Pascal, Fortran,.

    RAZINE PROGRAMSKIH JEZIKA

    Prikazani kod programa napisan je u programskom

    jeziku..

    LD A,2 U registar A upii broj 2

    LD B,3 U registar B upii broj 3

    ADD A,B U registar A upii vrijednost

    registra A uveanog za

    registar B

    10 bodova

    PRIMJER ASEMBLERSKOG PROGRAMA

  • Algoritmi i programiranje raunala 23

    I. generacija Strojni kod

    II. generacija Asembleri (jedna instrukcija strojnog koda =

    jedna asembler instrukcija) III. generacija

    Nastala objedinjavanjem vie asemblerskih

    instrukcija u jednu (Basic, Fortran, Cobol,

    Pascal, PL1, C, ) IV. generacija

    Ne proceduralni jezici (upitni jezici, generatori

    izvjea, generatori aplikacija) V. generacija

    Prirodni govorni jezik

    GENERACIJE PROGRAMSKIH JEZIKA

    Matematiki

    Primjer: Fortran (Formula+Translator) Poslovni

    Primjer: Cobol Konceptualni

    Primjer: C Orijentirani na baze podataka

    Primjer: SQL Univerzalni

    Primjer: PL1

    Danas: Svi programski jezici tee univerzalnosti

    (i sa stajalita namjene i sa stajalita

    platforme)

    ..

    NAMJENA PROGRAMSKIH JEZIKA

    Nekada:

  • Algoritmi i programiranje raunala 24

    Jezici orijentirani ka sistemskom* programiranju

    Zahtijeva dobro poznavanje grae stroja i

    procesa koji se u stroju odvijaju

    Jezici orijentirani ka korisnikom programiranju

    Zahtijeva dobro poznavanje sustava obrade

    podataka za koji se pie program

    Kombinirani jezici

    * Programiranje za potrebe operacijskog sustava

    (programa koji omoguava elementarnu komunikaciju

    izmeu stroja i ovjeka)

    ORIJENTACIJA PROGRAMSKIH JEZIKA

    Jednostavno programiranje

    Strukturirano programiranje (uvoenje reda u

    jednostavno programiranje)

    Modularno programiranje (moduli po naelu crne kutije)

    Objektno programiranje (objektu se mijenjaju

    svojstva)

    Makro programiranje (integracija izvodljivih

    programa procesa)

    Markup programiranje (HTML)

    ..

    TIPOVI PROGRAMIRANJA

  • Algoritmi i programiranje raunala 25

    Izrada Algoritma: (Definiranje problema, Razumijevanje

    problema, Pisanje algoritma, Testiranje

    algoritma, Ispravljanje algoritma,

    Kreiranje dokumentacije)

    Prevoenje Algoritma u programski jezik

    Zapisivanje programa u raunalu

    Prevoenje programa u strojni jezik

    Testiranje programa

    Ispravljanje greaka (BUG-ovi)

    Izrada dokumentacije (opisa programa i upute za rad)

    Kvalitetna priprema (izrada algoritma)

    klju dobrog programiranja

    Iterativni proces

    TIPOVI PROGRAMIRANJA

    BUG-ovi

    Zapisala Grace Murray Hopper

    Harvard University

    Raunalo Mark II

    Aiken Relay Calculator

    (a primitive computer).

  • Algoritmi i programiranje raunala 26

    PRIA O BUG-u

    ALGORITAM2PROGRAMSKI JEZIK

    Algoritam Basic Struktura UITAJ INPUT

    Slijedna ISPII PRINT

    KRAJ END

    IDI NA GOTO Bezuvjetni skok

    AKO JE ONDA

    U PROTIVNOM

    IF THEN

    ELSE Uvjet (grananje)

    ZA DO FOR TO Iteracija POVEAJ NEXT

  • Algoritmi i programiranje raunala 27

    Program na strojnom jeziku (u binarnom obliku

    zapisane instrukcije koje razumije procesor)

    Program napisan u programskom jeziku (tekst)

    Interpreter

    (simultano prevoenje) Compiler

    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 pokree i izvrava

    (datoteke tipa EXE i COM)

    Naelno:

    Interpretiranjem se bre pokree program, ali on

    sporije radi!

    PROGRAMSKI JEZIK2STROJNI JEZIK

    Tekstovi koji se pohranjuju u datoteke na

    ureajima vanjske memorije (diskove, diskete,)

    Obino su te datoteke oznaene posebnim

    nastavcima koji aludiraju na programski

    jezik u kojem je program napisan

    Primjer naziva datoteke:

    ime.nastavak (nastavak 3 slova)

    BAS-Basic, PAS-Pascal, FOR-Fortran

    IZVORNI (NEPREVEDENI) PROGRAMI

  • Algoritmi i programiranje raunala 28

    Binarni program (kao datoteka smjeten na ureaju

    vanjske memorije) koji nakon startanja simultano ita

    datoteku u kojoj je smjeten izvorni program, prevodi

    instrukciju po instrukciju u procesoru razumljiv niz

    instrukcija strojnog koda,

    (ako je interpreter) a procesor te instrukcije

    izvrava i tako izvodi program

    (ako je compiler) a rezultat prevoenja smjeta

    kao datoteku (binarnu) na

    ureaj vanjske memorije.

    Ovakva datoteka izvodljivi je

    program.

    PROGRAMI PREVODITELJI

    Ureaji u raunalu nosioci programa:

    ROM ipovi

    primaju jednostavne programe u strojnom jeziku i

    omoguavaju osnovne ivotne funkcije stroja

    Vanjska memorija

    uva programe u izvornom (programskom) jeziku u

    tekstualnom obliku i programe u prevedenom -

    strojnom (binarnom) obliku kao datoteke

    RAM

    preuzima programe na zahtjev procesora (zahtjev

    nastaje temeljem izvoenja nekog drugog programa,

    npr. programa operacijskog sustava) sa vanjske

    memorije i instrukcije u strojnom obliku predaje

    procesoru koji ih izvrava

  • Algoritmi i programiranje raunala 29

    SISTEMSKI SOFTVARE (programi)

    BIOS, operacijski sustavi, pomoni

    sistemski programi, programi prevodioci,

    KORISNIKI SOFTVARE (programi)

    Poslovni uredski programi, programi za

    upravljanje s bazama podataka, programi za

    pomo u odluivanju,

    to e se od programiranja nadalje raditi:

    Za sve to se u stroju deava

    ili ne deava odgovorni su

    PROGRAMI!

    Za sve to se u stroju deava

    ili ne deava odgovorni su

    PROGRAMI!

  • Algoritmi i programiranje raunala 30

    PITANJA! PITANJA!