programski jezici.pdf

Embed Size (px)

Citation preview

  • 8/10/2019 programski jezici.pdf

    1/67

    Dr. sc. Nikola Klem, dipl.el.in.

    Sveuilite J.J. StrossmayeraGraevinski fakultet u Osijeku

    PROGRAMSKI

    JEZICI

    Osijek, k. god. 2005/2006.

  • 8/10/2019 programski jezici.pdf

    2/67

    Nikola Klem 2

    Komunikacija sa raunalom

    01100111101

  • 8/10/2019 programski jezici.pdf

    3/67

  • 8/10/2019 programski jezici.pdf

    4/67Nikola Klem 4

    Programski jezici

    FORTRAN = FORmula TRANslationCOBOL = Common Bussines Oriented LanguageALGOL = ALGOrithmic Language

    PL/I = Programing Language I (one)BASIC = Beginners All Purpose SymbolicInstruction Code

    PASCALADA

  • 8/10/2019 programski jezici.pdf

    5/67

    Nikola Klem 5

    Programski jezici

    Problemski orijentirani jezici

    COGO = Civil Engineering Coordinate GeometrySTRESS = STRuctural Engineering System SolverHYDRO = Hydraulic Engineering Computations

    Jezici srednje razine

    C, C++Visual Basic

  • 8/10/2019 programski jezici.pdf

    6/67

    Nikola Klem 6

    Programski jezici

    Program se pie u izvornom jeziku (source

    language).

    Raunalo izvrava program u strojnom jeziku

    (object language).

    IZVORNIPROGRAM

    PROGRAMPREVODITELJ

    STROJNIJEZIK

  • 8/10/2019 programski jezici.pdf

    7/67

    Nikola Klem 7

    Programski jezici

    Program prevoditelj kompajler (compiler)

    prevodi program napisan u izvornom jeziku ustrojni jezik.

    Proces prevoenja se zove kompilacija.

    Kod asemblerskih jezika proces prevoenja sezove asemblovanje (asembliranje).

    SVAKO RAUNALO MORA IMATI PROGRAMPREVODITELJ ZA SVAKI PROGRAMSKI JEZIK

    KOJI SE KORISTI.

  • 8/10/2019 programski jezici.pdf

    8/67

  • 8/10/2019 programski jezici.pdf

    9/67

    Nikola Klem 9

    Programski jezici

    Interpretativni i interaktivni programski jezici su

    jezici kod kojih se svaka naredba moe tumaitii izvravati neovisno od ostalih programskihnaredbi.

    Interpreteri prepoznaju i izvravaju naredbejednu po jednu, to olakava, ali i usporava rad

    programa, naroito kod ciklusa (petlji ).

  • 8/10/2019 programski jezici.pdf

    10/67

    Nikola Klem 10

    Programski jezici

    Svaki programski jezik se sastoji od: Skupa znakova,

    Rjenika, Sintakse (pravila gramatike),

    Semantike (znaenja svake naredbe).

  • 8/10/2019 programski jezici.pdf

    11/67

    Nikola Klem 11

    Struktura programa

    Programje skup naredbi (instrukcija) za raunalo,

    napisanih za rijeavanje jednog problema.

    Naredbe programskog jezika formiraju se koriste

    irijei iz rjenika programskog jezika i nazive kojeprogramer dodijeljuje memorijskim lokacijama u

    koje su uskladiteni podaci sa kojima se radi uprogramu, a prema pravilima sintakse jezika.

  • 8/10/2019 programski jezici.pdf

    12/67

    Nikola Klem 12

    Struktura programa

    Svaka naredba se zavrava oznakom za kraj

    naredbe. U velikom broju programskih jezikaoznaka za kraj naredbe je toka-zarez (;).

    Naredbe se izvravaju redoslijedom kojim sunapisane, ukoliko taj redoslijed nije izmjenjenposebnim naredbama za izmjenu toka programa

    (grananje i ciklusi).

  • 8/10/2019 programski jezici.pdf

    13/67

    Nikola Klem 13

    Struktura programa

    Naredbe programskog jezika mogu se podijeliti u

    dvije kategorije:

    izvrne i

    neizvrne.

    Izvrne naredbe (naredbe koje raunalo trebaizvriti) su naredbe koje se u procesu

    prevoenja prevode u odgovarajui strojni jezik.

  • 8/10/2019 programski jezici.pdf

    14/67

  • 8/10/2019 programski jezici.pdf

    15/67

  • 8/10/2019 programski jezici.pdf

    16/67

    Nikola Klem 16

    Struktura programa

    U svim programskim jezicima znakovi koji se

    mogu koristiti za formiranje elemenata jezika su:alfabetski velika i mala slova engleske abecede,

    numerini znamenke 0,1,2,3,4,5,6,7,8,9specijalni ovisno od jezika (. , = ; + zagrade itd.)

    Znakovi iz prva dva skupa (alfabetskih inumerikih) nazivaju se alfanumerini.

  • 8/10/2019 programski jezici.pdf

    17/67

    Nikola Klem 17

    Imena podataka

    Podaci sa kojima program radi moraju seza vrijeme izvravanja programa nalaziti umemoriji raunala.

    U naredbama programa zadaju sememorijske lokacije na kojima se nalazepodaci sa kojima naredba radi.

    Korisnik se poziva na podatke tako tododijeljuje imena ovim lokacijama na

    temelju pravila sintakse.

  • 8/10/2019 programski jezici.pdf

    18/67

    Nikola Klem 18

    Imena podataka

    Program prevoditelj u postupku prevoenjapovezuje ova imena sa memorijskim

    lokacijama (adresama) u kojima e bitimemorirani ti podatci.

    Za vrijeme prevoenja program prevoditeljpravitablicu(symbol table) u kojoj sa jedne

    strane stoji ime koje je korisnik dodijeliopodatku, a sa druge strane adresa umemoriji na koju je uskladiten podatak.

  • 8/10/2019 programski jezici.pdf

    19/67

    Nikola Klem 19

    Imena podataka

    Prilikom dodijeljivanja imena lokacijamatreba voditi rauna da nas asociraju na

    podatak koji predstavljaju.

  • 8/10/2019 programski jezici.pdf

    20/67

    Nikola Klem 20

    Imena podataka

    Postoje dvije grupe memorijskih lokacija zapodatke:

    konstante - lokacije u kojima se podacipostavljaju prije poetka rada programa i ne

    mijenjaju za vrijeme rada programa,varijable (promjenljive) - lokacije kod kojih

    se sadraj (podaci memorirani u njima)mijenjaju za vrijeme rada programa.

  • 8/10/2019 programski jezici.pdf

    21/67

  • 8/10/2019 programski jezici.pdf

    22/67

  • 8/10/2019 programski jezici.pdf

    23/67

    Nikola Klem 23

    Imena podataka

    Ime varijableje uvijek formirano kao

    simbolino ime.

    Ime konstante moe biti:

    simbolino ime (simbolina konstanta ilikonstantna varijabla) ili

    vrijednost memorirana na lokaciji konstante(broj ili tekst).

  • 8/10/2019 programski jezici.pdf

    24/67

    Nikola Klem 24

    Imena podataka

    Konstante su imena podataka koja su

    jednaka vrijednosti podataka.S obzirom na to da se simbol tablica formira

    u vrijeme prevo

    enja programa, u postupkuprevoenja se na svaku lokaciju oznaenuimenom konstante unosi vrijednost koja je

    jednaka imenu.

  • 8/10/2019 programski jezici.pdf

    25/67

  • 8/10/2019 programski jezici.pdf

    26/67

  • 8/10/2019 programski jezici.pdf

    27/67

    Nikola Klem 27

    Realne konstante

    Realne konstante predstavljaju decimalne

    brojeve i mogu se pisati na dva na

    ina:

    sa fiksnom tokom,

    sa pokretnom to

    kom (floatingpoint).U PROGRAMSKIM JEZICIMA SE PRI

    PISANJU NUMERINIH PODATAKAUMJESTO DECIMALNOG ZAREZA KORISTIDECIMALNA TOKA.

  • 8/10/2019 programski jezici.pdf

    28/67

    Nikola Klem 28

    Realne konstante

    Realna konstanta moe biti proizvoljneduine.

    Pri prevoenju zaokruuje se na

    preciznost koju dozvoljava broj bitovapredvienih za uskladitenje mantise(7 do 8 znamenki jednostruka tonost,14-16 znamenki dvostruka).

  • 8/10/2019 programski jezici.pdf

    29/67

    Nikola Klem 29

    Realne konstante

    Realna konstanta sa fiksnom tokom je niz

    decimalnih znamenki iza kojih stojidecimalna toka, a moe imati i razlomljenidio (frakciju) i znak.

    Primjer

    345. (neispravno 345)452.24-345.6

  • 8/10/2019 programski jezici.pdf

    30/67

    Nikola Klem 30

    Realne konstante

    Realna konstanta sa pokretnom tokom

    sastoji se od cijelobrojne ili realne kons-tante sa fiksnom tokom iza koje stoji slovoE i odgovarajui cijelobrojni eksponent.

    Polje eksponenta ne smije biti prazno (akoje eksponent nula mora se napisati 0).

    Pozitivan eksponent moe se pisati saznakom ili bez njega.

  • 8/10/2019 programski jezici.pdf

    31/67

    Nikola Klem 31

    Realne konstante

    Primjer:

    ISPRAVNO NEISPRAVNO

    7E0 7E

    7.E0 E2 (100).7 E1 45.6E400.007 E 370 E -1

  • 8/10/2019 programski jezici.pdf

    32/67

    Nikola Klem 32

    Znakovna konstanta

    Znakovna konstanta je niz znakova (slova,brojeva ili specijalnih znakova) napisanihizmeu dva apostrofa.

    Ako se u nizu treba nalaziti i apostrof on sepie sa dva apostrofa.

    Primjeri:

    'Test 5''ulazni podatak'

  • 8/10/2019 programski jezici.pdf

    33/67

    Nikola Klem 33

    Logike konstante

    Koriste se u logikim i relacionim izrazima.

    .TRUE. istina,

    .FALSE. neistina.

  • 8/10/2019 programski jezici.pdf

    34/67

    V ij bl

  • 8/10/2019 programski jezici.pdf

    35/67

    Nikola Klem 35

    Varijable

    Varijabli se vrijednost dodjeljuje:

    naredbom za dodjeljivanje vrijednosti, uitavanjem sa ulazne jedinice,

    preko ulazno/izlazne liste potprograma.

    Tipovi varijabli odgovaraju tipovimapodataka.

    Varijablama treba davati imena tako da namkazuju o emu se radi (na primjer: BRZINA,

    PROTOK, VRIJEME).

    V ij bl

  • 8/10/2019 programski jezici.pdf

    36/67

    Nikola Klem 36

    Varijable

    NEDEFINIRANA varijabla je varijabla kojojnije dodjeljena vrijednost i ne smije se

    koristiti.U veini programskih jezika sve varijable se

    moraju eksplicitno definirati.

    U FORTRAN-u su odreene varijable

    definirane implictno.U NEKIM JEZICIMA VELIKA I MALA SLOVA

    U IMENU SE RAZLIKUJU.

    Ni i

  • 8/10/2019 programski jezici.pdf

    37/67

    Nikola Klem 37

    Nizovi

    NIZje ureeni skup elemenata, istog tipapodataka, koji nosejedno zajedniko ime.Imena nizova su simbolina imena ipodlijeu istim pravilima kao i imena

    varijabli.

    Ime varijable se odnosi najedan podatak.Ime niza se odnosi na vie podataka takoda se podatak u nizu sa kojim se radi

    mora dodatno specificirati.

    Ni i

  • 8/10/2019 programski jezici.pdf

    38/67

    Nikola Klem 38

    Nizovi

    U veini programskih jezika svi nizovi kojise koriste u programu moraju sedeklarirati na poetku programa.

    Ni i

  • 8/10/2019 programski jezici.pdf

    39/67

    Nikola Klem 39

    Nizovi

    Pojedinani podatak u nizu zove seELEMENT NIZA.

    Pojedinani element niza se specificira

    imenom niza i indeksom (ili indeksima).Indeksi su meusobno odvojeni zarezima.

    Primjer:ime_niza (ind1, ind2, ...)

    Nizovi

  • 8/10/2019 programski jezici.pdf

    40/67

    Nikola Klem 40

    Nizovi

    Indeks moe biti: konstanta, varijabla,

    opseg vrijednosti indeksa ili proizvoljanaritmetiki izraz.

    Ako rezultat koji se dobija izraunavanjemaritmetikog izraza nije cijeli broj, u veini

    programskih jezika se kao indeks uzimacijelobrojni dio.

    Nizovi

  • 8/10/2019 programski jezici.pdf

    41/67

    Nikola Klem 41

    Nizovi

    Nizovi mogu biti: jednodimenzionalni,

    dvodimenzionalni i viedimenzionalni.

    Ni i

  • 8/10/2019 programski jezici.pdf

    42/67

    Nikola Klem 42

    Nizovi

    ime 1 2 3 4 5 indeks

    X 2.32 3.45 2.00 1.45 5.68 sadraj498 502 506 600 604 adresa

    Jednodimenzionalni nizovi (vektori)

    Elementi jednodimenzionalnog niza (vektora)memorirani su u registrima centralnememorije raunala jedan pored drugoga.

    Nizovi

  • 8/10/2019 programski jezici.pdf

    43/67

    Nikola Klem 43

    Nizovi

    Dvodimenzionalni nizovi (matrice)

    Dvodimenzionalni nizovi su nizovi kodkojih je poloaj elementa u nizu odreen

    sa dva indeksa (tablice, matrice).

    Nizovi

  • 8/10/2019 programski jezici.pdf

    44/67

    Nikola Klem 44

    Nizovi

    Prvi indeks uvijek predstavlja indeks retka,a drugi indeks kolone.

    Indeksi mogu biti kao i kod jedno-

    dimenzionalnog (broj, aritmetiki izraz iliopseg izmeu najnie i najvie vrijednostiindeksa), ali i : kada predstavlja sveelemente u retku ili koloni u zavisnosti odtoga na kojem se mjestu nalazi.

    Nizovi

  • 8/10/2019 programski jezici.pdf

    45/67

    Nikola Klem 45

    Nizovi

    Operacije sa nizovima

    Ako su nizovi suglasni, operacije sanizovima mogu se izvoditi na dva naina:

    kao matrine raunske operacije ili

    po elementima.

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    46/67

    Nikola Klem 46

    Aritmetiki izrazi

    Aritmetiki izraz moe biti:jednostavan i sloen.

    Jednostavan aritmetiki izraz sastoji se odsamo jednog operanda. Operandi mogu biti:

    konstanta, varijabla,

    element niza, poziv funkcije, aritmetiki ili logiki izraz u zagradama.

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    47/67

    Nikola Klem 47

    Aritmetiki izrazi

    Primjer105, 23.45, 12.3e5 konstanta,AB - varijabla,A(I,J) element niza,SIN(x) poziv funkcije,

    (A + B) podizraz u zagradama.Operandi mogu biti po tipu: cijelobrojni,

    realni, u dvostrukoj tonosti,

    kompleksni.

  • 8/10/2019 programski jezici.pdf

    48/67

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    49/67

    Nikola Klem 49

    Aritmetiki izrazi

    Pravila za pisanje aritmetikih izraza:

    Izraz ne smije sadrati dva operatora jedan

    pored drugog. (Na pr. A*-B, N+=1)Moraju se napisati svi operatori, nita se ne

    podrazumijeva. (Na pr.: A B - varijabla, A*B -aritm. izraz )

    Prilikom potenciranja baza i eksponentmogu biti razliitog tipa.

    Operandi mogu biti razliitog tipa.

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    50/67

    Nikola Klem 50

    Aritmetiki izrazi

    Razvijanje aritmetikih izraza

    Redoslijed raunanja vrijednosti izrazaodreen je:

    upotrebom zagrada, utvrenom hijerarhijom izvrenja

    aritmetikih operacija, poloajem operatora unutar izraza.

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    51/67

    Nikola Klem 51

    Aritmetiki izrazi

    Podizrazi u zagradama

    U izrazu prvo se raunajupodizrazi uzagradama.

    U gnijezdu prvo se razvijanajdubljiizraz,pa drugi najdublji i tako redom.

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    52/67

    Nikola Klem 52

    Aritmetiki izrazi

    Hijerarhija operatora

    potenciranje, unarni minus i unarni plus,

    mnoenje i dijeljenje, zbrajanje i oduzimanje.

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    53/67

    Nikola Klem 53

    Aritmetiki izrazi

    Primjer:A + B / ((A - B) / C) - C

    Raunalo razvija:R1 = A - B A+B / (R1/C) - CR2 = R1 / C A+B / R2 - CR3 = B / R2 A+ R3 - C

    Poto su + i - operacije istog prioriteta

    ostatak izraza moe se razviti bilo kojimredom koji je matematiki korektan.

    R4 = R3 - C i R5 = A + R4

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    54/67

    Nikola Klem 54

    Izuzevcijelobrojnog deljenja ipotenciranjasve operacije sa operatorima istog

    prioriteta izvode se u bilo kom algebarskikorektnom redoslijedu.

    Operacije sa cijelobrojnim dijeljenjemizvode se slijeva nadesno.

    Primjer:I / J * K kao da je (I / J) * K

    Redoslijed se moe izmjeniti zagradama.

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    55/67

    Nikola Klem 55

    Ako ima vie potenciranja u nizu nainraunanja treba provjeriti u priruniku

    programskog jezika.

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    56/67

    Nikola Klem 56

    Operacije u cijelobrojnoj i realnoj

    aritmetici razli

    ito se izvode.Ako su oba operanda istog tipa i rezultatje tog tipa.

    Cijelobrojno dijeljenje: 6 / 4 = 15 / 6 = 0

    Potenciranje:A ** 2

    A ** 2.

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    57/67

    Nikola Klem 57

    *0.5*Y)+(A+XiliY)+SQRT(A+Xy+a+xPI/2.+X

    3.14159=PI2

    +x

    Y*BETA+X*ALFAy+x

    D)+B/(C+A

    3**3

    dc

    ba

    YXyx

    ++

    ++

    Aritmetiki izrazi

  • 8/10/2019 programski jezici.pdf

    58/67

    Nikola Klem 58

    ( )(

    5.0**))/((/()(

    )))/(((/

    sin

    b+a

    GFDSINCBA

    GFDSINCSQRTBA

    gfdc

    +++

    +++

    ++

    Naredba za dodijeljivanje vrijednosti

  • 8/10/2019 programski jezici.pdf

    59/67

    Nikola Klem 59

    Naredba za dodijeljivanje vrijednosti koristise za dodijeljivanje vrijednosti varijabli ili

    elementu niza.Opi oblik naredbe je:

    varijabla = aritmetiki izraz

    U mnogim programskim jezicima seumjesto znaka

    = koristi kombinacija znakova :=

    Naredba za dodijeljivanje vrijednosti

  • 8/10/2019 programski jezici.pdf

    60/67

    Nikola Klem 60

    varijabla = aritmetiki izraz

    Znak = ne znai jednakost u matematikomsmislu, ve:

    Sadraj memorijske lokacije pridrueneimenu varijable sa lijeve strane znaka =

    zamjenjuje se izraunatom vrednouaritmetikog izraza sa desne strane znaka =.

    Naredba za dodijeljivanje vrijednosti

  • 8/10/2019 programski jezici.pdf

    61/67

    Nikola Klem 61

    Primjer:IA = 2

    IA = IA + 5IRAZ = IA - IA / 2 * 2

    simb.

    ime

    adresa memorija

    2 200 2

    5 204 5

    208

    212IA 216 ?,2,7

    220

    IRAZ 224 ?,1

    228

    232

    IA parno -IRAZ = 0

    IA neparno -IRAZ = 1

    Razvojna okruenja

  • 8/10/2019 programski jezici.pdf

    62/67

    Nikola Klem 62

    Da bi se napisani program izvrio mora senapraviti vie koraka. Ovi koraci povezuju

    fazu pisanja programa sa fazom njegovogtestiranja.Koraci u izvrenju programa su:1. pisanje programa,2. unoenje napisanog programa u

    raunalo ili pravljenje izmjena upostojeem programu,

    3. prevoenje programa (kompilacija-compilation),

    Razvojna okruenja

  • 8/10/2019 programski jezici.pdf

    63/67

    Nikola Klem 63

    4. formiranje izvrnog programa

    (linkovanje - linking),5. uvanje izvrnog programa,6. izvravanje programa,

    7. traenje greaka u programu.Za svaku od ovih faza koriste se

    odgovarajui sistemski programi.

    Razvojna okruenja

  • 8/10/2019 programski jezici.pdf

    64/67

    Nikola Klem 64

    Program prevoditelj ISPITUJE SAMOSINTAKSNE GREKE.

    Za svaku greku dobija se odgovarajuaporuka. Greke se popravljaju i

    ponavljaju koraci 2 i 3.Tek kada nema greaka ide se na korak 4.

    PREVODITELJ NE MOE OTKRITISEMANTIKE GREKE (GREKE U

    LOGICI PROGRAMA).

    Integrirane radne sredine

  • 8/10/2019 programski jezici.pdf

    65/67

    Nikola Klem 65

    Opisani postupak po koracima za izvrava-nje programa podrazumijevao je da se za

    svaki korak koristi poseban sistemskiprogram.

    Za unoenje programa i ispravke u njemumoe se koristiti bilo koji editor (na primjer,Notepad).

    Sistemski programi za ostale faze, iako suneovisni, ipak se dobijaju zajedno sa

    programom prevoditeljem.

    Integrirane radne sredine

  • 8/10/2019 programski jezici.pdf

    66/67

    Nikola Klem 66

    Novije verzije prevoditelja ukljuuju iposebno, integrirano, radno okruenje kod

    koga su, u okviru jednog programa, datemogunosti: editiranja, prevoenja, linkovanja,

    uvanja, izvravanja i traenja greaka u programu.

    Integrirane radne sredine

  • 8/10/2019 programski jezici.pdf

    67/67

    Nikola Klem 67

    Pored integriranih radnih okruenja za

    jedan programski jezik postoje i integriranaradna okruenja zajednika za vieprogramskih jezika.

    Kod takvih okruenja su ovi sistemskiprogrami zajedniki za svejezike date u

    sastavu okruenja.