Sklopljena IV Razred

Embed Size (px)

Citation preview

  • 7/24/2019 Sklopljena IV Razred

    1/82

    1

    PPoojjaammiiddeeffiinniicciijjaakkoommuunniikkaacciijjee

    PPoojjaammkkoommuunniikkaacciioonnooggpprroocceessaa

    Prijenos podataka, vijesti ili obavijesti izmeu ljudi i mehanizama ili pak jednihi drugih meusobno, promatran u globalnom - najirem smislu kao komunikacije,predstavlja vrlo sloen proces.U vezi s tim problem je multidisciplinaran i u njegovomprouavanju dodirujemo ili pak direktno "zadiremo" u razliite naune discipline kao:psihologija, biologija, filozofija, telekomunikacije i drugo.

    Globalno: komunikacije obuhvataju naine, mehanizme i medijeukljuene u prijenos informacija. Komunikacije moraju odgovoriti na tri pitanja :

    -Kojom tanou mogu biti preneseni simboli od kojih je sainjena poruka(sintaksa).

    -Koliko precizno preneseni simboli nose eljeno znaenje ili smisao poruke(semantika).- S kakvim uspjehom prenesena poruka kroz svoje znaenje usmjerava naneku eljenu aktivnost onoga kome je bila namijenjena (pragmatika).

    Svaki komunikacijski sistem moe se openito prikazati modelom prikazanim na slici:Model komunikacijskog sistema :

    Prema Shannonu (anonu), osnovne komponente modela procesa komunikacije su :

    Kanal veze Kanal veze

    Shannonov model procesa komunikacije

    Kada se na stranu predaje kao i prijemnu stranu komunikacijskog sistemapostavlja povezuje raunar tada govorimo o raunarskoj mrei

    Dva su osnovna naina komunikacije u raunarskoj mrei:1. komunikacija posredstvom ureaja MODEM (Modulator- Demodulator)2. mrena kartica veza prema lokalnoj mrei (Local AreaNetwork)

    - izvor informacije- prijemnik informacije- kanal veze

    Izvor

    informacije

    Prijemnik

    informacije

    Kanal

    veze

    Izvorinformacije Koder Dekoder

    Prijemnikinformacije

    Smetnje

  • 7/24/2019 Sklopljena IV Razred

    2/82

    2

    Informacijapredstavlja preslikavanje stanja jednog subjekta u stanje drugogsubjekta.

    Npr.Ako jedan ovjek govori drugim ljudima engleskim jezikom, onda on svojeodreeno znanje ' preslikava ' na njih. Jedan od slualaca ga razumije, a to jeonaj slualac koji zna engleski jezik, dok drugi ne razumiju. Na taj nain prenos

    informacija kod slualaca je izvren na razliite naine.

    Iz primjera je vidljivo da je pojam informacije vezan za proces prenoenja informacijaizmeu subjekata koji uestvuju u komunikaciji.U procesu komunikacije postoje dva subjekta (izvor i prijemnik informacija).Subjekti su povezani kanalom veze .Subjektiu procesu komuniciranja mogu biti : ovjek, maina, knjiga, ...Veza izmeu subjekata koji komuniciraju moe biti izraena : govorom, pismom,slikom, muzikom, ...Pri procesu komunikacije izmeu subjekata, mogu se pojaviti i smetnje (buka ili um)

    SShhaannnnoonnoovv mmooddeell kkoommuunniikkaacciijjeej koji prima poruku.

    Komunikaciona veza moe biti :

    1. Kooperativna ili dvosmjernakomunikaciona veza.2. Nekooperativna ili jednosmjernakomunikaciona veza.

    Kooperativna komunikacija je takav nain komunikacije gdje izvor i prijemnik

    naizmjenino mjenjaju informacije.Npr. Razgovor dva ovijeka .

    Nekooperativna komunikacija je takav nain komunikacije u kojoj nemazamjene uloga odnosno gdje nema povratnih informacija izmeu subjekatakomunikacije.Npr. Praenje TV programa

    U teoriji informacija , definirana su tri nivoa posmatranja komunikacionogprocesa, mada meu njima nema otre granice. To su :

    - Tehniki nivo bavi se odreenim aspektima prenosa informacijakomunikacionim kanalima kao i tanou prenesene poruke . Ovaj nivoobezbjedjuje da se poruka u neizmjenjenom obliku prenese do izvora pa doprijemnika . Kad se jedna poruka formulira, pitanje je kako e se ona prenijetikanalom veze i da li e biti smetnji.

    - Semantiki nivo razmatra da li je prenesena poruka ima ili nema odreenoznaenje za prijemnik, odnosno ima li poruka smisla i da li je prijemnikprimljenu poruku u potpunosti razumo.

    - Efektivni nivo - razmatra primanje informacije i njihov znaaj pri donoenjuodluka. Ovaj nivo ispituje kako neka informacija moe da doprinese daprijemnik donenese odreenu odluku koju bez te informacije nije mogao

    donijeti.

  • 7/24/2019 Sklopljena IV Razred

    3/82

    3

    KKoommuunniikkaacciijjaaoovvjjeekkrraauunnaarr

    Za komunikaciju ovjeka i raunara slue programski ( umjetni ) jezici.

    Umjetni jezik je jezik koji je izmiljen posebno za formuliranje programa ipredstavlja komunikaciono sredstvo izmeu ovjeka i raunara.Svaki se vii programski jezik sastoji od odreenih simbola i znakova, naziva ibrojeva. Kao to postoje odreena pravila govornih jezika , tako se i kod viih jezikaza programiranje govori o sintaksi( o pravilnom nizanju simbola, znakova i naziva) isemantici( o interpretaciji upotrebljenih simbola ).

    Raunar razumije samo jedan jezik , i to mainski jeziktako da programi napisani ubilo kojem programskom jeziku se prevode na jezik raunara, tj mainski jezik.Obino se poetni program napisan u nekom programskom jeziku naziva izvornikod ,a njegov prevedeni oblik u mainski jezik naziva objektni kod.

    Prevoenje programa iz izvornog koda u objektni vri specijalni program koji se zovekompiler.. Za svaki programski jezik postoji poseban kompajler.

    Primjeri algoritama u prirodnom jeziku ( kojeg sluamo svakodnevno ) pokazali su dase predstavljanje malo sloenijih zadataka na ovaj nain nije pogodno.Iz tog razlogadolazi do pojave umjetnih ( izvedenih) jezika. U svakom sluaju da bi se napisao nekijezik ,mora se koristiti neki drugi jezik kojeg poznajemo.

    MMeettooddeennaapprreeddnneekkoommuunniikkaacciijjeeoovvjjeekk--rraauunnaarrPostoje razliite metode i sredstva kojim se obezbjeuje napredna

    komunikacija izmeu ovjeka i raunara.Metode konverzacije sa raunarom se mogu podijeliti u 6 glavnih tipova:

    - metode komandi- menija- upita-odgovora- popunjavanja formulara- funkcionalnih kljueva- sliica

    Najsavremeniji metod napredne komunikacije je metod koritenje vjetakeinteligencije.O vjetakoj inteligenciji e biti vie rijei neto kasnije.

    postupak

    podaci

    program

    ovjek

    raunar

    rezultat

    rezultat

    UlazneInformac.

    Izlazneinformacije

  • 7/24/2019 Sklopljena IV Razred

    4/82

    4

    RRaauunnaarrsskkiipprrooggrraammii((PPrrooggrraammsskkaappooddrrkkaa))

    Raunarske programe (SOFTWARE) ine svi PROGRAMI s kojima je digitalniraunarski sistem snabdjeven i koji se svakodnevno nadopunjuju i razvijaju. Izraujuih proizvoai raunarskog sklopovlja ili za to specijalizirane firme (poput Microsoft-a), dobivaju se uz raunarsku opremu ili se mogu pronai na tritu ili ih, premasvojim potrebama, korisnik sam izrauje. Programska podrka uobiajeno seisporuuje na disketama ili na CD-u uz popratnu dokumentaciju kako je instalirati usistem i upute o koritenju.

    U osnovi programska podrka dijeli se na:

    PODRKU SISTEMA(sistemski softver) koju uglavnom isporuuje prodavaDigitalnih raunarskih sistema,a omoguava iskoritavanje svih resursaraunarskog sistema (hardware-a).

    Sistemski programi mogu biti:

    Nadzorni program: je sistemski programi kojije smjeten u glavnoj memoriji raunara. esto senadzorni program naziva i operativni sistem.

    Neovisni sistemski program: mogue je izvoditipo potrebi . To su kompilatori, programi prevodioci,i pomoni programi za upravljanje podacima.Sistemski programi su pisani iskljuivo za odreenisistem.

    KORISNIKU PODRKU(aplikativni softver)-koju ine svi programi koje jekorisnik raunara kupio radi

    rjeavanja zadaa,kao programi zaobradu teksta, baze podataka i drugo,

    ili ih je sam izradio za to predvienimprogramskim alatima.

    Program je skup naredbi raunaru napisanih po utvrenim pravilima pokojima raunar vri zadanu obradu podataka.

    PROGRAM u sutini predstavlja REDOSLJEDNI niz instrukcija, koje raunarizvrava da bi obavio zadau prema zadanom postupku rjeavanja tj. po izraenomALGORITMU.

  • 7/24/2019 Sklopljena IV Razred

    5/82

    5

    Programski jezik je skup naredbi i pravila sintakse kojima se kreirajuprogramske instrukcije (programi).

    Raunar postupa prema instrukcijama. Instrukcije predstavljaju sastavni dioprograma kojeg je napisao programer. Programske instrukcije nareuju raunaru ta

    treba da odradi.

    Programska podrka sistema u sutini upravlja radom sklopova i dijeli se udvije grupe:

    OPERATIVNI SISTEM - koji obuhvaa sve programe kojikontroliraju izvravanje programakorisnika, njihov redosljed i smjetaj u

    memoriji i vre razne operacija sa njima(promjena imena ili brisanje na primjer).Kontrolira "kretanje" bit-ova kroz

    raunar i prua informacije oaktivnostima raunara i ostalih ureajau njemu i oko njega. NE SLUI zakreiranje korisnike programske podrke.Razliit je za razliite vrste raunara.Poznati su MS-DOS,WINDOWS,OS/2,UNIX,...

    JEZIKI PROCESORI - su programi koji prevode ovjekurazumljive instrukcije i komande u

    binarne zapise razumljive raunaru.Predstavljaju prevoditelja izmeu

    ovjeka i raunara u postupku KREIRANJAaplikacijskog software-a. Dakle, to sualati sa kojima e se napraviti programza crtanje slika ili program zaraunovodstvo i knjienje ili netodrugo.Nazivaju se i programski jezici.Tosu PASCAL,C,BASIC,FORTRAN,COBOL i drugi.

    Na slijedeoj slici prikazana je podijela sistema programske podrke i vezeizmeu pojedinih elemenata.

  • 7/24/2019 Sklopljena IV Razred

    6/82

    6

    GGEENNEERRAACCIIJJEEPPRROOGGRRAAMMSSKKIIHHJJEEZZIIKKAA

    Ne postoji jednoznano odreenje podjele programskih jezika na generacije,ali se oni najee dijele kako slijedi:

    Jezici prve generacije(engl. first generation languages): mainski jeziciSintaksa ovih jezika bazirana je na tzv mainskim instrukcijama.Mane: velika mogunost greke u postupku programiranja

    Jezici druge generacije(engl. second generation languages): asembleri

    Jezici tree generacije(engl. third generation languages): programski jeziciope namjene (npr.FORTRAN,ALGOL,COBOL,BASIC, Pascal, C, C++)Ovi jezici se nazivaju problemski orjentirani proceduralni jezici.Pojavljuje se potreba kompilacije ( prevoenja ) jezika.

    Jezici etvrte generacije(engl. fourth generation languages - 4GL jezici):programski jezici uske namjene (npr. dBASE, SQL, PostScript)korisnik utvruje ta trai od raunarskog sistema , a sistem samiznalazi nain zadovoljenja korisnikih zahtjeva. To su problemskiorjentirani jezici (neproceduralni jezici ).

    Mainski jezici i asembleri nazivaju se nii programski jezici i ovisni su oraunaru.

    Programski jezici

    etvrte generacije su vii programski jezici poznati su podnazivom 4GL (fourth generation languages), a karakterizira ih nain komunikacijeslian prirodnim jezicima. Na primjer, tipina naredba 4GL jezika glasi:

    FIND ALL RECORDS WHERE NAME IS "SMITH"

    4GL jezici se uglavnom koriste za rad s bazama podataka.(Informix, C/BASE 4GL,Oracle)

    GGEENNEERRAACCIIJJEEPPRROOGGRRAAMMSSKKIIHHJJEEZZIIKKAAGENERACIJA TIP JEZIKA PRIMJER NAREDBI

    Prva Machine(mainski) 10010001druga Assembly(asembleri) ADD 210(8, 13),02B(4, 7)trea Proceduralni Overtime: 5 0etvrta Problemski FIND NAME 5 "JONES"peta Natural(prirodni) IF patient is dizzy, THEN check

    temperature and blood pressure( Ako pacijent ima vrtoglavicu, onda izmjeri

    temperaturu i krvni tlak)

  • 7/24/2019 Sklopljena IV Razred

    7/82

    7

    NNiiiipprrooggrraammsskkiijjeezziicciiMMaaiinnsskkiijjeezziikk

    Mala brzina izvrenja programa, pisanih na viem programskom jeziku, iveliina memorije koju taj program zauzima glavni su razlozi za programiranje namainskom jeziku.

    Ta ogranienja dolaze do izraaja u velikim programima za upravljanje , regulaciju,mjerenje, crtanje, i obradu velikog broja podataka.

    Prednost viih programskih jezika je lakoa i preglednost u njegovom pisanju.Mainski program je sainjen od linije mainskih naredbi i svaka od njih je smjetenana odgovarajui nain u posebnu memorijsku lokaciju. Adresa te memorijske lokacijeoznaava poloaj naredbe u programu. Svaka linija mainskog programa se sastoji

    od naredbe i ,eventualno, podatka.Naredba je sastavljena od koda operacije ioperanda.

    Zbog velikog broja kodova naredbi uveden je simboliki mainski jezik ( asembler ) ukome su naredbe u svojim mnemonikim oznakama .

    Mainski jezicisu osnovni jezici koje raunar razumije, posebno prilagoenisvakom tipu procesora, pisani pomou binarnih cifara (1,0).To je jedini oblik programa koji razumije raunar, te se svaki drugi oblik programamora prevesti u mainski jezik prije nego se izvodi.

    AAsseemmbblleerr

    Asemblerisu slini mainskim jezicima, ali jednostavniji za koritenje, jer su cifrezamijenjene mnemonikim nazivima (simbolima) koji se lako pamte (napr. ADD zasabiranje ili SUB za oduzimanje)

    Primjer naredbi napisanih u asemblerskom jeziku:

    MOV A,#03CAL TIME_DELAYCLR P1.6CLR P1.6

    Programer, koji pie program u programskom jeziku asembleru mora dobropoznavati grau raunara. Program za prevoenje asembler prevodi jednu po jednunaredbu programskog jezika asembler u odgovarajuu binarnu naredbu mainskogjezika.

  • 7/24/2019 Sklopljena IV Razred

    8/82

    8

    Primjer :

    adrese mnemonika KODOVI

    dec heksadec Decim. Heksadec.

    A=100

    HL=23609Poke HL,A

    30000

    3000230005

    7530

    75327535

    LD A,100

    LD HL,23609LD(HL),A

    62,100

    33,57,92119

    3E,64

    21 39 5C77

    POJANJENJE PRIMJERA :

    1. Na adresama 30000 se nalazi mainska naredba koja u registar A stavljasadraj 100. Naredba se nalazi u 2 memorijske lokacije , u prvoj je smjetenkod operacije (62) , a u drugoj je operand 100.

    2. Kod tree operacije je 119 u memorijskoj lokaciji 30005. Pomou nje sesadraj registra A prebacuje u memorijsku lokaciju ija je adresa u paruregistra HL.(POKE n,m)( u memorijskoj lokaciji sa adresom n, upisuje se broj m)

    VViiiipprrooggrraammsskkiijjeezziiccii

    Digitalni raunar razumije samo jednu vrstu naredbi, naredbe u oblikubinarnih brojeva prikazanih na registrima. Kod asemblerskih jezikase prevoenje ubinarne brojeve obavlja prevodiocima tako da se jedna simbolika naredba prevedeu jednu naredbu u binarnom obliku ( mainski programski jezik)

    Vii programski jezici imaju takve naredbe da se jedna naredba u viem jezikuprevede u vei broj naredbi u binarnom obliku. To prevoenje obavlja kompajler.Kompajler ovisi o programskom jeziku.Prevodioci mogu biti jednostavni ali i sloeni , pa prema tome zauzimaju mali ili vrloveliki prostor u memoriji.Zbog toga manji raunari rade najee samo u asemblerskom jeziku.Kako se odnose pojedine vrste programskih jezika prikazano je na slici:

    Prevodioci iz III

    stepena u I stepen

    Prevodioci iz III u II

    stepen

    Kompajler za

    raunar X

    Asembler za

    raunar X

    Podaci Digitalniraunar X

    Rezultati

    III stepen

    GPSS, CSMP,i dr.

    II stepen

    Fortran, Cobol,

    Pascal, Algol,....

    I stepen

    Asemblerski

    jezik

    Nulti stepen

    Mainski jezik

  • 7/24/2019 Sklopljena IV Razred

    9/82

    9

    Asemblerski jezici ine I stepen raunarskih jezika. Mogue je da za jedanasemblerski jezik i isti raunar postoji vie raznih asemblera.Za programiranje u mainskom jeziku, osim poznavanja problema koji se eli rijeiti,potrebno je dobro poznavati hardver koji e se upotrebiti,odnosno njegove instrukcijete je potrebno imati odreeno iskustvo u programiranju tom mainom.

    Drugi stepen ine jezici koji zahtjevaju posjedovanje kompajlera.Drugi stepen ine jezici ope namjene:FORTRAN- FORmula TRANslationALGOL ALGOritamski jezikCOBOL COmmon Business Oriented LanguagePL/1 - Programming Language One- pokuaj da se napravi univerzalni jezik zarjeavanje problema koji rjeavaju Fortran, Cobol , Algol,..

    Trei stepen ine jezici specifine namjene ili problemsko orijentirani jezici.CSMP ( COmmon System Modeling Program) - simulacija kontinuiranih procesa

    GPSS ( General Purpose Simulation System) simulacija diskretnih procesaZa prevoenje tih jezika u mainski potreban je sloeniji prevodilac. Prevoenje semoe obaviti u tri ili dva koraka.

    Vii programski jezici mogu raditi na tzv. 'konverzacijski nain' .Pri tom nainu rada, raunaru se izdaje naredba a on je odmah prevede i izvede, tese rad obavlja u vidu dijaloga.Taj se nain rada posebno razvio uz upotrebu tzv. ' tajm ering ( time sharing) 'sistema, kod kojeg jedan raunar posluuje mnogobrojne korisnike rasporeujuisvoje vrijeme izmeu njih. Pri tome se svakom korisniku ini da raunar radi samo zanjega.Prevodilaki programi koji omoguuju rad na konverzacijski nain nazivaju seinterpreteri

    Vii programski jezici (engl. high level languages, HLL) su problemskiorijentirani jezici koji dozvoljavaju pisanje programa nainom bliskim korisniku. Zbogtoga su jednostavniji za pisanje i odravanje, a istovremeno ih je mogue prenijeti narazliite raunarske platforme. Svaki program pisan u viem programskom jezikupotrebno je prije izvoenja prevesti u mainski jezik. Pojedina naredba pisana uviem programskom jeziku prilikom prevoenja ralanjuje se na vie mainskihnaredbi. Programi prevodioci koje u tu svrhu koristimo mogu biti kompajleri (compiler)

    i interpreteri. Prvi vii programski jezici razvili su se 50-tih godina.Svi programski jezici, osim mainskog jezika, nazivaju se SIMBOLIKIM JEZICIMA.

    PREDNOSTI viih programskih jezika u odnosu na mainski jezik:- jednostavnost pisanja programa,- njihova razumljivost,- prenosivost.

    NEDOSTACI viih programskih jezika u odnosu na mainski jezik:- relativno sporije izvoenje,- nemogunost direktnog nadzora sklopovskih dijelova

    raunara.

  • 7/24/2019 Sklopljena IV Razred

    10/82

    10

    Prednosti viih programskih jezika u odnosu na mainski jezik tako su velike da sedanas mainski jezik kod personalnih raunara koristi samo iznimno i kada je toprijeko potrebno.

    Znaajna prednost viih programskih jezika je ta to se lake naue iupotrebljavaju nego asemblerski. Pri pravljenju programa upotrebom viih

    programskih jezika se ne mora voditi rauna o organizaciji hardverskih komponenata,kao to treba initi pri upotrebi asemblerskog jezika. Jedna naredba viihprogramskih jezika obavlja vie poslova, te lake shvata venapisan program. To jeveoma znaajno pri traenju i otklanjanju greaka u programu ( debugging).Programi viih programskih jezika su dosta krai nego u asemblerskom jeziku.Jedna od najbitnijih prednosti viih programskih jezika je mogunost da se jedanprogram upotrebi na vie razliitih raunara. Vrijeme rjeavanja zadataka je znatnokrae ,upotrebom viih programskih jezika nego kad se upotrebe asemblerski jezici.Nedostaci:Jedan od nedostataka viih programskih jezika je vrijeme potrebno da se neki

    program kompajlira. To kompajliranje ne daje djelotvorni program u mainskom

    jeziku. (program zauzima mnogo prostora u memoriji i vremena za izvoenje)Neki se problemi ne mogu rijeiti upotrebom viih programskih jezika.Moe se rei da za masovnu obradu podataka se upotrebljavaju iskljuivo viiprogramski jezici , a za postavljanje i pravljenje hardverskih i softverskih sistema ,asembleri su nezamjenjivi.

    Primjer:

    PROGRAM ZA NZDDati su programi za NZD u Pascalu i u asembleru:

    VARa, b: INTEGER;

    BEGIN

    WriteLn(Prvi broj);ReadLn(a);

    WriteLn(Drugi broj);ReadLn(b);

    WHILE (a b) DO

    IF (a > b) THENa := a - b

    ELSEb := b - a;

    WriteLn(NZD je:, a);

    END.

    DATA SEGMENT WORD PUBLIC

    ASSUME DS:DATA

    DATA ENDS

    CODE SEGMENT BYTE PUBLICASSUME CS:CODEMOV AX, 32MOV BX, 128

    START:CMP AX, BXJE KRAJJG AX_JE_VECISUB BX, AXJMP START

    AX_JE_VECI:SUB AX, BXJMP START

    KRAJ:JMP KRAJ

    CODE ENDSEND

  • 7/24/2019 Sklopljena IV Razred

    11/82

    11

    Kod viih jezika za programiranje treba definisati vei broj pravila za izraze kojisu doputeni (odnosno sintaksu).

    OZNAAVANJE VARIJABLI

    Varijable imaju imena koja se sastoje od jednog ili vie slova i brojeva , alitako da prvi znak bude slovo.Upotrebljavaju se slova engleske abecede ( 26 slova).Razlikuju se cjelobrojne i realne varijable, znakovne varijable, logike varijable,...

    OZNAAVANJE OPERACIJA

    + - sabiranje ; - - oduzimanje ; x mnoenje ; / - dijeljenje

    Umjesto znaka x veinom se upotrebljava znak *.Razlomljeni brojevi se obino oznaavaju sa decimalnom takom a ne decimalnimzarezom ( 3.215)

    STANDARDNE FUNKCIJE

    Kompajler sadri podprograme za funkcije ( drugi korijen, sinus, kosinus,tangens, arkus tangena, za stepene i logaritamske funkcije, za odreivanje cijelogdijela nekog broja i sl.)

    PRIDJELJIVANJE VRIJEDNOSTI VARIJABLI

    Varijabla kojoj se pridjeljuje vrijednost izraena je eksplicitno sa lijeve straneznaka = ili :=Npr. A=b+c ili A:= b+c

    SKOKOVI

    Najvanije su tri vrste skokova : bezuslovni skok, uslovni skok, skok na potprogram

    PETLJE

    Predstavljaju ponavljanje pojedinih manjih dijelova programa vie puta uzastopno.

    ( DOK , DO , BROJAKA STRUKTURA )

    JJeezziicciipprreevvooddiitteelljjii

    Centralna jedinica za obradu podataka moe prihvatati program samo umainskom jeziku. Program u viem jeziku potrebno prije izvoenja prevesti na

    mainski jezik (engl. machine code, object code) pomou INTERPRETERA iliKOMPAJLERA.

  • 7/24/2019 Sklopljena IV Razred

    12/82

    12

    INTERPRETER je program koji izvrava druge programe, tj. INTERPRETERje jeziki prevoditelj koji svaku naredbu izvornog programa (engl. source code) utrenutku izvoenja programa prevodi u binarni oblik mainskog jezika (engl. machinecode, object code).

    KOMPAJLER (kompilator, engl. compiler) je program za prevoenje izvornogprograma (engl. source code) u mainski jezik (engl. machine code, object code)samo jednom i to tokom prevoenja ili kompajliranja.Svojstva interpretera i kompajlera:

    INTERPRETER:

    Prednosti:prevodi naredbu po naredbu omoguava otkrivanje sintaksnih greaka iinteraktivno ispravljanje, tj. otkrivanje greaka pri svakom izvoenju programa iautomatsko prevoenje pri popravkama programa.Nedostaci:sporiji rad od kompajlera, nunost davanja izvornog programa korisniku.

    Primjeri programa koje prevodi interprete: Lotus, dBase, GW Basic.

    KOMPAJLER:

    Prednosti:bri rad od interpretera, zatien izvorni program.Nedostaci:odvojenost prevedenog i izvornog programa (izvrni EXE fajl).

    Primjeri programa koje prevodi kompajler: C, Turbo Pascal, Clipper.

    AALLGGOORRIITTMMII

    Cjelokupni rad raunara zasniva se u osnovi na slijedeem: procesor primapodatke od ulaznog ureaja, obradi ih i izvri i rezultat poalje na izlazni ureaj kakobi ih prikazao korisniku. Svaki procesor raspolae sa skupom instrukcija koje sukodirane BROJEM. Izvravanje programa je u sutini kopiranje brojeva u radnumemoriju i njihovo oitavanje i izvravanje od strane procesora. Niz brojevameusobno poslaganih u jednu svrsishodnu cjelinu ini PROGRAM, a postupak

    izrade te cjeline pomou jednog od jezikih procesora naziva se PROGRAMIRANJE.Niz instrukcija jezikog procesora, napisan u jednom od editor-a, koje e se potomprocesoru prevesti da ih moe izvriti, mora biti logian i usklaen s MODELOModvijanja zadataka koji se naziva ALGORITAM. Npr. postupak kuhanja jela nije nitadrugo do potivanje algoritma nazvanog recept.

    Dakle, algoritam predstavlja logiki niz radnji koje treba izvriti da se odpoetnih postavki doe do eljenog rezultata. Algoritam se moe posmatrati kao alatza rjeavanje zadanih problema. On opisuje postupak za povezivanje ulaznih iizlaznih podataka. Algoritam mora biti sasvim precizno definiran postupak, bezdvosmislenosti i nedoreenosti. a izrauje se povezivanjem logikih struktura koje se

    prikazuju grafikim oblicima (dijagramom toka ), najee prema ANSI standardu:

  • 7/24/2019 Sklopljena IV Razred

    13/82

    13

    Grafiki simboli dijagrama toka

    - poetak ili kraj

    - ulaz ( uitavanje) podataka

    - izlaz ( ispis) rezultata

    - blok obrade podataka ( izvrenje naredbe)

    - povezivanje udaljenih dijelova dijagrama ili oznaka koraka

    - logika odluka na osnovu vrijednosti nekog izraza

    - modifikacije programa

    - redoslijed izvoenja operacija ( programa)

    Prva logika struktura je najprostija, oznaava poetak i kraj algoritma

    (programa).

    Druga logika struktura koristi se za operacije koje imaju jedan ulaz i jedanizlaz kao funkcije, na primjer za Y=f(X)=2*X ulaz je neka veliina X a funkcija naizlazu daje izraunatu vrijednost za taj X. Za ulaz X=2 izlaz e biti Y=4. Takvestrukture nanizane jedna izad druge tvore niz (SEKVENCU) i predstavljaju osnovnu(linijsku) strukturu algoritma.

    Uslovno grananje (SELEKCIJA) je izbor izmeu dva mogua puta odvijanjaprograma, na primjer za prethodnu funkciju f(x)=2*X i uslov f(X)>3 program e se zaX=1 nadalje odvijati prema izlazu DA a za X=2 prema izlazu NE (struktura IF-THEN-ELSE; ako-onda-odnosno). Mogue je izmjeniti izlaze na slici to u sutini ne mijenjaodluku vesamo smjer na slici.

  • 7/24/2019 Sklopljena IV Razred

    14/82

    14

    Viestruko ponavljanje (ITERACIJA) moe biti proraun funkcije nakonzadovoljenog uslova (struktura DO-WHILE; ispitaj pa radi) ili odluka nakon proraunafunkcije (struktura DO-UNTIL; radi pa ispitaj). Ako je na primjer ulaz X=0, funkcijaf(x)=X+1 i uslov f(X)>3, lijeva struktura po ispitivanju proslijeuje X=0 na izlaz, adesna struktura e poveavati X za jedan sve dok X ne poprimi vrijednost X=4 koja

    se proslijeuje na izlaz, dakle broji do 4 . Ako je ulaz X=7 desna struktura poveati ega na 8 i proslijediti na izlaz, a lijeva e neprestano poveavati vrijednost X za jedandok ne doe do prepunjenja registra mikroprocesora (OVERFLOW). Dakle, uzadavanju uslova treba biti obazriv tako da uslovi budu usklaeni s vrijednou naulazu i s tipom petlje ponavljanja. Lijeva petlja ispravno e raditi za f(x) xmax postavi xmax=x

    Kraj Za svakiIspii xmax

  • 7/24/2019 Sklopljena IV Razred

    15/82

    15

    Komentar rjeenja:

    Prikazano rjeenje je jedno od vie moguih. Odabrano je upravo ovo, dabude pregledno i razumljivo. Reenice su pisane s glagolima u imperativu ("Uitaj",

    "Postavi"). To naglaava smisao reenice kojom korisnik (programer) nareujeautomatu tj. raunaru da izvri zadanu radnju. "Uitaj broj n" je naredba raunaru daprihvati (s nekog ulaznog ureaja, tastature, diska) zadani podatak. Naredbe e seodvijati u redoslijedu kako su napisane ako samom naredbom nije drugaijenareeno. Oito je, da e se nakon naredbe "Uitaj broj n" obaviti naredba "Ako n...".No nakon reda "Kraj Sve dok" ponavlja se petlja "Sve dok.." ako je zadani uslov "nnije prirodan broj" ispunjen ili se obavlja idua naredba ako je taj uslov nije ispunjen,odnosno n je prirodan broj. Takoer se petlja (iteracija) "Za svaki i=2 do n inislijedee" ponavlja n-1 puta da bi se nakon tih n-1 ponavljanja dobio najvei brojxmax koji se nakon obavljene iteracije ispisuje naredbom "Ispii xmax".

    Algoritam ne daje sasvim detaljno naznaku kako e se rijeiti svaka naredba. Takodruga naredba ispituje da li je n prirodan broj. Nain kako se to rjeava, ovisi oprogramskom jeziku. U C-u, gdje n moemo definirati kao cijeli broj, bie dovoljnoispitati, da li je on vei od nule. Rjeenje ovog primjera u C-u dato je u primjeru 2.1.

    Zadatak Razraditi logiku programa koji e najprije uitati broj n. Ako n nije prirodanbroj, ispisati o tome poruku i ponoviti uitavanje. Uitati n brojeva i nai i ispisatinjihovu aritmetiku sredinu.

    Zadatak Razraditi logiku programa koji e uitavati jedan za drugim niz brojeva. Krajniza brojeva oznaen je brojem -99999. Nai i ispisati aritmetiku sredinu uitanihbrojeva (broj -99999 ne uzeti u obzir).

    ZadatakRazraditi logiku programa koji e uitavati jedan za drugim niz brojeva. Krajniza oznaen je brojem 9. Nai i ispisati aritmetiku sredinu uitanih brojevauzimajui u obzir samo one brojeve koji su vei ili jednaki 2 i manji ili jednaki pet.

    ZadatakRazraditi logiku programa koji e uitati broj n. Taj broj mora biti prirodan imanji od 34. Ako taj uslov nije zadovoljen ponoviti uitavanje broja n. Izraunati iispisati n! (faktorijel od n=1*2*3*..*(n-1)*n).

    Zadatak Razraditi logiku programa koji e uitati brojeve m i n. Oba broja moraju bitprirodna i m mora biti vei od n. Ako taj uvjet nije ispunjen ponoviti uitavanje. Nai iispisati binomni koeficijent b jednak m povrh n tj.

    ( )b

    m

    n m n=

    !

    ! !

  • 7/24/2019 Sklopljena IV Razred

    16/82

    16

    Zadatak Razraditi logiku programa koji e uitati dva broja n1 i n2. Oba broja trebajubiti prirodna. Ako taj uslov nije ispunjen, ponoviti uitavanje. Ako je n2 < n1, zamijenitin1 sa n2. Nai i ispisati sumu drugih korjena svih neparnih brojeva od n1 do n2.

    PrimjerUitati prirodan broj n. Nai da li je uitani broj prost ili ne i o tome ispisatiodgovarajui tekst.

    Rjeenje:

    Uitaj broj nAko je n < 4 ini

    Ispii poruku da je n prost broj"

    Zaustavi dalji raunKraj Ako je

    Ako je n paran iniIspii poruku da n nije prost broj jer je djeljiv s 2Zaustavi dalji raunKraj Ako je

    Postavi m = drugi korjen iz nZa svaki i=3 do m u koraku po 2 uini slijedee:

    Ako je n djeljivo s i iniIspii poruku da n nije prost jer je djeljiv s iZaustavi dalji raunKraj Ako je

    Kraj Za svaki iIspii poruku da je n je prost broj

    Komentar rjeenja:

    Broj je prost ako nije djeljiv ni sa jednim brojem osim s 1 i samim sobom. Uitani brojn (za koji pretpostavljamo da je prirodan), ako je vei od 1 i manji od 4 onda je prost

    broj (2 ili 3). Ako je n paran (i vei od 3) tada nije prost i djeljiv je s 2.Neparan broj ispitujemo da li je prost tako, da ga dijelimo sa svakim neparnim brojemi to od 3 do m pri emu je m drugi korjen iz n (broj koji nije djeljiv ni sa jednim brojemmanjim od m sigurno nije djeljiv ni sa brojevima veim od m). Naredbom za iteraciju"Za svaki i=3 do m u koraku po 2" i poprima vrijednosti neparnih brojeva jer je se ipoveava za 2 u svakoj narednoj iteraciji.

    Zadatak Razraditi logiku programa koji e najprije uitati broj n. Broj n mora bitiprirodan i vei od 3. Ako taj uslov nije ispunjen, ispisati poruku o greci i ponoviti

    uitavanje. Nai i ispisati namanji prosti broj vei od n.

  • 7/24/2019 Sklopljena IV Razred

    17/82

    17

    Zadatak Razraditi logiku programa koji e uitati broj n koji mora biti vei od 10. Akotaj uslov nije ispunjen, ispisati poruku o greci i prekinuti rad programa. Nai i ispisatinajvei prosti broj manji od n.

    Zadatak Razraditi logiku programa koji e uitati brojeve n1 i n2. Ako je n1 vee odn2, zamijeniti njihove vrijednosti. Nai i ispisati sve proste brojeve u intervalu n1 don2.

    Zadatak Razraditi logiku programa koji e najprije uitati prirodan broj n i realan brojx. Program treba nai i ispisati sumu prvih n lanova nizas=1+x/1!+x**2/2!+..+x**n/n! (** oznaava stepenovanje).

    Zadatak Razraditi logiku programa koji e uitati realne brojeve a, b i c i nai iispisati rjeenja x1 i x2 kvadratne jednaine a*x**2 + b*x + c = 0. Ako jednaina

    nema realnih rjeenja (b*b-4*a*c c. Ako ti uslovi nisu zadovoljeni,ispisati odgovarajuu poruku i ponovo uitati brojeve a, b i c. Ako su brojevi ispravnozadani, nai povrinu p trokuta sa stranicama a, b i c. Koristiti Heronovu formulup=sqrt(s*(s-a)*(s-b)*(s-c)). (Sa sqrt je oznaen drugi korjen izraza u zagradi, as=(a+b+c)/2).

    Zadatak Razraditi logiku programa koji e uitati broj n. Taj broj mora biti vei odnule i manji od 10. Ako taj uslov nije ispunjen, ispisati odgovarajuu poruku i ponovitiuitavanje. Nai i ispisati srednju vrijednost svih parnih brojeva od n do 2000 ali neuzimajui u obzir one parne brojeve, koji su djeljivi sa 13.

    PrimjerRazraditi logiku programa koji e najprije uitati broj n, koji mora biti prirodan brojmanji od 1000. Ako n ne zadovaljava postavljeni uslov, ispisati poruku i ponovitiuitavanje. Ako n zadovoljava postavljeni uslov, uitati n brojeva, poredati ih(sortirati) po rastuem redoslijedu i ispisati tako poredane brojeve.

    Rjeenje:

    Definiraj vektor (jednodimenzionalnu matricu) v od 999 brojevaPostavi n=0Sve dok n nije prirodan broj manji od 1000 ini

    Uitaj broj nAko je n > 999 ili n

  • 7/24/2019 Sklopljena IV Razred

    18/82

    18

    Postavi sortiran=trueZa svaki j=0 do m-2 uini slijedee:

    Ako je v[j] > v[j+1] ini /* Treba zamijeniti v[j] i v[j+1] */Postavi sortiran=falsePostavi x=v[j]

    Postavi v[j]=v[j+1]Postavi v[j+1]=xKraj Ako je

    Kraj Za svaki jSmanji m za 1Kraj Sve dok

    /* Sada su brojevi sortirani, slijedi ispis */Za svaki i=0 do n-1 ispii v[i]

    Komentar rjeenja:

    Postupak redanja podataka po nekom kriteriju zove se sortiranje.Prikazani algoritam je tzv. "Bubble sort".Sve brojeve (ili openito podatke) pohranimo (memoriramo) u matricu ili indeksiranuvarijablu. Indeksirane varijable ili matrice predstavljaju skup podataka oznaenzajednikim imenom. Pojedini podatak u skupu odreen je imenom skupa ipoloajem u skupu ili indeksom. Koristiemo dogovor da je poetni lan skupaodreen indeksom 0, pa prema tome indeksi u skupu od n elemenata poprimajuvrijednosti od 0 do n-1. Ako je skup razmjeten u jednoj dimenziji, tada govorimo ojednodimenzionalnoj matrici ili vektoru. Ako je skup razmjeten u dvodimenzionalnutabelu, u retke i stupce, tada govorimo o matrici. U ovom primjeru koristimo vektor vod 999 lanova. Svaki lan adresira se indeksom. Na. pr. v[0] je prvi lan skupa, v[j-1] je j-ti lan i t. d. Potrebno je da na poetku definiramo vektor od 999 elemenata.Zbog toga broj elemenata koji emo uitati i zatim sortirati ne moe biti vei od 999 .Nakon uitanog broja n ispitujemo njegovu ispravnost te ako je n ispravan, uitavamon brojeva u vektor v. Nako toga slijedi samo sortiranje. Ono se svodi nausporeivanje j-tog i idueg, j+1 broja u vektoru v. Ako je naredni broj manji odprethodnog ( v[j+1] < v[j] ), izvriemo njihovu zamjenu i zabiljeit pomou logikevarijable "sortiran" da svi brojevi jo nisu poredani (true i false su logike konstante).Ovaj postupak ponavljamo tako dugo, dok sve brojeve ne poredamo i nakon prolaskakroz vektor dobijemo sortiran=true. Nakon svakog usporeivanja jo neporedanih

    brojeva u vektoru, njihov broj se smanjuje za 1. Zato broj m koji oznaava brojneporedanih podatama nakon toga smanjujemo za 1. Nakon obavljenog sortiranja(sortirani=true) ispisujemo podatke iz vektora v.

    Primjer

    Pretpostaviti da postoji funkcija Rnd(n), koja pri svakom svom pozivu daje

    sluajni broj koji je prirodan broj u intervalu 1 do n. Npr. ako naznaimo "Postavi i=Rnd(34)" tada e varijabla i poprimiti vrijednost nekog (sluajnog) cijelog broja

  • 7/24/2019 Sklopljena IV Razred

    19/82

    19

    izmeu 1 i 34. Ponavljanjem ove naredbe, varijabla i e svaki puta poprimiti neku"sluajnu" vrijednost ali uvijek u istom intervalu (ako funkcija Rnd daje jednolikorasporeene sluajne brojeve, tada e se pri vrlo velikom broju njenog pozivanjasvaki broj pojaviti priblino jednako mnogo puta). Razraditi logiku programa koji ekoristei Rnd funkciju simulirati izvlaenje lota (od brojeva 1 do 39 nasumce izvui

    7).

    Rjeenje:

    Definiraj vektor loto od 39 elemenataZa svaki i=0 do 38 postavi loto[i]=i+1Postavi n=38Za svaki i=1 do 7 uini

    Postavi j= Rnd[n]

    Postavi k=loto[j]Ispii izvueni broj/* k je "izvueni" sluajni broj; on se ne moeponovo izvui, pa ga treba izbaciti iz tabele:na njegovo mjesto stavljamo zadnji, n-ti broj*/Postavi loto[j]=loto[n]Smanji n za 1Kraj Za svaki i

    Komentar rjeenja:

    U tabelu (vektor) loto stavili smo brojeve 1 do 39. S n=39 smo naznaili da u tabeliima 39 brojeva. Iza toga zapoinjemo iteraciju koja e se obaviti 7 puta, jer emoizvui 7 brojeva. Nakon toga dobivamo sluajni broj j koji je izmeu 0 i n-1 (prvi putan=39). Broj k koji je "izvuen" nalazimo na j-tom mjestu tabele. Ispisujemo taj broj isada ga izbacujemo iz tabele tako, da na njegovo mjesto stavljamo posljednji tj. n-1.broj. n smanjujemo za 1 jer se izbor brojeva za izvlaenje smanjio za 1.

    Zadatak Razraditi logiku programa koji e simulirati bacanje kocke. Baciti kocku6000 puta i nai i ispisati broj pojavljivanja svakog od brojeva 1 do 6. Koristiti Rndfunkciju kao u primjeru 1.5.

    Zadatak Razraditi logiku programa koji e simulirati istovremeno bacanje dvijukocaka. Baciti kocke zadani n broj puta. Nai u koliko posto sluajeva su se na objekocke pojavili isti brojevi.

    Primjer

  • 7/24/2019 Sklopljena IV Razred

    20/82

    20

    Razraditi logiku programa koji e koristiti dvije matrice a1 i a2 od 100 redaka istupaca. Program najprije uita brojeve m i n koji oznaavaju broj redaka i brojstupaca koji e biti popunjeni u matricama. m i n moraju biti manji od 100. Ako tajuslov nije zadovoljen, ispisati poruku i ponovo uitati m i n. Uitati podatke (brojeve)

    u m redaka i n stupaca matrice a1 (ukupno m * n brojeva). Nai sumu svakog redka isvakog stupca matrice a1 i te sume staviti u posljednji redak (s indeksom 99)odnosno stupac matrice. Nai ukupnu sumu S svih elemenata matrice a1 i taj brojstaviti u 100. redak i 100. stupac. Nai sve relativne podatke a[i][j]/S i njihovevrijednosti u postocima staviti u odgovarajue redke i stupce matrice a2. Ispisatimatricu a2.Rjeenje:

    Definiraj matrice a1 i a2 od 100 redaka i stupaca.Ponavljaj

    Uitaj m i n.

    Ako je m > 99 ili n > 99 ispii poruku o pogreno zadanom m ili nSve dok je m>99 ili n>99

    Za svaki i=0 do m-1 uiniZa svaki j=0 do n-1 uitaj a1[i][j]

    Za svaki i=0 do 99 uini slijedee:Postavi a1[i][99]=0 /* Postavi na 0 zadnji redak i stupac */Postavi a1[99][i]=0Kraj Za svaki i

    Postavi S=0Za svaki i=0 do m-1 /* Nai sumu redka, sumu stupca i ukupnu sumu s */

    Za svaki j=0 do n-1 uiniPoveaj a1[i][99] za a1[i[j]Poveaj a1[99][j] za a1[i][j]Poveaj S za a1[i][j]Kraj Za svaki j

    Postavi a1[99][99]=S/* Relativne podatke stavi u matricu a2 i ispii je */Za svaki i=0 do m-1

    Za svaki j=0 do n-1 uiniPostavi a2[i][j]=a1[i][j]/a1[99][99]*100Ispii a2[i][j]

    Kraj Za svaki j

    Komentar rjeenja:

    Na poetku smo definirali matrice koje emo koristiti u algoritmu. Kod izrade rjeenjau programskom jeziku kakav je C, potrebno je definirati na poetku programa svevarijable no za bolju itljivost algoritma u njemu naznaujemo samo definicije vektorai matrica. Ako su m i n manji od 100, uitat emo podatke u m redaka i n stupacamatrice a1. Sluimo se konvencijom, da prvi indeks matrice oznaava redak, a drugiindeks stupac matrice tj. a1[i][j] oznaava element u i-tom redu i j-tom stupcu. Nakon

    uitavanja postavljamo na nulu vrijednosti u zadnjem (s indeksom 99) retku i stupcumatrice a1. Iza toga "prolazimo" kroz sve retke i sve stupce matrice tako da za svaki

  • 7/24/2019 Sklopljena IV Razred

    21/82

    21

    redak i (od 0 do m-1) uzimamo element a1[i][j] u svakom j-tom stupcu (j ide od 0 don-1) i poveavamo zadnji stupac svakog reda (a1[i][99] ) i zadnji redak svakog stupca(a1 [99][j] ) za svaki element matrice ( a1[i][j] ). Na isti nain u zadnji redak i stupac (a1[99][99] ) stavljamo ukupnu sumu. Relativni iznos u postotku dobivamo tako dasvaki podatak iz matrice a1 dijelimo sa a[99][99] i mnoimo sa 100. Rezultat

    stavljamo u matricu a2. Tako dobiveni rezultat konano ispisujemo u dvostrukojiteraciji po i i j na kraju algoritma.

    Zadatak Razraditi logiku programa koji e koristiti matricu od 20 redaka i 20stupaca. Uitati brojeve u svaki redak i stupac te matrice. Nai i ispisati sumulanova matrice na njenoj glavnoj dijagonali (glavna dijagonala ide od gornjeg lijevogu donji desni ugao matrice).Zadatak Razraditi logiku programa koji e koristiti matricu od 50 redaka i 50stupaca. Uitati broj m koji mora biti manji ili jednak 50. Ako taj uslov nije zadovoljenponoviti uitavanje broja m. Uitati m * m brojeva u m redaka i stupaca matrice. Nai

    i ispisati proizvod lanova na sporednoj dijagonali matrice (sporedna dijagonala ideod desnog gornjeg u lijevi donji ugao).

    Zadatak Razraditi logiku programa koji e koristiti matricu od 50 redaka i stupaca.Uitati brojeve m i n koji odreuju broj popunjenih redaka (m) i stupaca (n) matrice. mi n moraju biti manji od 51. Ako taj uslov nije zadovoljen ponoviti uitavanje brojeva mi n. Uitati brojeve u m redaka i n stupaca matrice. Nai i ispisati najvei broj usvakom od m retka matrice.

  • 7/24/2019 Sklopljena IV Razred

    22/82

    22

    TTEEHHNNIIKKEEPPRROOGGRRAAMMIIRRAANNJJAA

    MODULARNO PROGRAMIRANJE - temelji se na raspodjeli programskihfunkcija na manje NEOVISNE module izmeu kojih se potrebna komunikacijaostvaruje prijenosom operanda. Modularna struktura omoguava timski rad jer se istimodul moe koristiti u raznim drugim dijelovima programa ili u drugim programima.Na primjer modul za brisanje podataka u nekoj bazi podataka obrisae podatketemeljem unesenih vrijednosti operanda kao rednih brojeva podataka koji se imajuobrisati. S drugim vrijednostima operanda modul e posluiti za brisanje u nekojdrugoj bazi podataka iste strukture ali po nekom drugom kriteriju, recimo brisanje po

    nazivu a ne po rednom broju.

    STRUKTUIRANO PROGRAMIRANJE- predstavlja nain pisanja programa ukojem se potuje strogi SLIJED odvijanja programa ili njegovih modula. Nemaskokova u odvijanju programa prema poetku ili kraju vese svaki smjer odvijanjaprograma odreuje izborom DA-NE. Moduli su meusobno povezani hijerarhijski.Time se omoguava da se tok programa moe bezprijekorno pratiti od poetka dokraja to olakava itljivost i otklanjanje greaka.

    METODE strukturnog programiranja:

    Deklariranje svih varijabli prije koritenja (naprimjer na poetku programa),Izbjegavanje nekih naredbi nestrukturnog programiranja (npr goto).Tjeraju programere na programersku disciplinu i urednost, ograniavaju sloboduprogramera. PRIMJERI: Pascal, dBase, Ada.

    INTERAKTIVNO PROGRAMIRANJE- je tehnika kada se za izradu programakoriste ve gotove logike strukture, izraene na primjer od strane isporuiteljaprogramskog alata, te ih programer dorauje prema svojim potrebama i rezultaterada moe odmah i testirati. Produktivnije je ali manje sistematino.

    OBJEKTNO USMJERENO PROGRAMIRANJE - nastalo je kao odgovor nanemogunost definiranja globalnih zajednikih podataka u struktuiranomprogramiranju. Objektno-orijentirano programiranje prestavlja oblik programiranja kod

  • 7/24/2019 Sklopljena IV Razred

    23/82

    23

    kojeg programer osim tipa i strukture podataka definira i operacije (funkcije) koje suprimjenjive na odreenu strukturu. Na taj nain podatkovna struktura postaje objektkoji ukljuuje i podatke i funkcije. Nadalje, programeri definiraju relacije izmeuobjekata (npr.neki objekt moe naslijediti svojstva od drugog objekta).Naime, pojedinimoduli programa koriste zajednike podatke i umjesto da se podaci proslijeuju kroz

    razine strukture do modula koji ih treba, omoguava se modulu da ih direktno dohvatibez obzira na razinu u kojoj se nalazi. Podaci i operacije nad tim podacima spajajuse u cjeline nazvane OBJEKT. Svi objekti iste vrste svrstavaju se u KLASU a svakiod njih ima zasebno stanje unutar klase. U klasi se definiraju zajednike postavke zasve njene objekte koje oni mogu i ne moraju koristiti i veze prema drugim klasama.Povezanost klasa tvori hijerarhijsku strukturu programa.Kojim se od jezikihprocesora koristiti ovisi o vrsti problema koji se rijeava te o mogunostima i vrstiDigitalnog Raunarskog Sistema na kojoj e se primjeniti. Stoga tu nema strogihzakonitosti. Jenostavniji zadaci rjeavae se na PC-raunarima s QBASIC, PASCAL,FORTRAN, C++ ili VISUAL BASIC jezikim procesorom, a za knjigovodstvene svrheili obradu uenike populacije koristie se alati koji mogu upotrebiti neki od

    posluitelja baze podataka kao DELPHI. Jedna od vrhunskih programskih podrki zapraenje rada velikih firmi i ustanova, LOTUS-NOTES, vrlo je kvalitetno ali i vrloskupo rjeenje.

    SVOJSTVA Objektno orijentiranih programa

    Objekt je zaseban program, koji je sposoban obraditi odreenu zadau. Sastoji se odapstraktnih podataka (engl. abstract data types) i postupaka (engl. methods).Apstraktni podaci je naziv za podatke iji je oblik nedostupan izvan objekta. Glavniprogram nema direktan pristup takvim podacima. Operacije s apstraktnim podacimamogu obavljati samo postupci. Objekt moe biti napisan u programu razliitom odonog u kome programer pie program. Programer ne zna nita o tome kako je objektnapisan (zatvorenost, engl. encapsulation), nego treba znati samo propisani oblikslanja poruke objektu. Mogunost nasljeivanja (engl. inheritance) svojstava prijenapisanog objekta, kako se ne bi morao pisati zajedniki dio.Viezadanost (engl. polymorphism) je mogunost da se dobije odgovarajui rezultatpri slanju iste poruke razliitim objektima.

    PREDNOSTI:Pisanje programa pomou objekata jednostavnije je i s gleditapreslikavanja stvarnog svijeta (npr poslovnog svijeta) u oblik razumljiv raunaru, tj. uodnose meu objektima.

    NEDOSTACI: Zbog naina rada OOP u naelu se sporije izvravaju odtradicionalnih programa,

    navika programera na tradicionalno programiranje i mnogo gotovih starihprograma.

  • 7/24/2019 Sklopljena IV Razred

    24/82

    24

    Izbor vieg programskog jezika

    Vii programski jezici ope namjene:

    Jezici ope namjene su oni programski jezici koji nisu namijenjeni uskompodruju primjene, veje njima mogue rjeavati irok raspon zadataka.Postoji mnogo ovih jezika, a mi emo spomenuti samo one koji su znaajni ili su uirokoj upotrebi:

    Programski jezik ADA(ime po grofici Augusti Adi Loverance): (Jean Inchbiah1979.) Temeljen je na Pascal-u, omoguava viezadani rad, direktan pristupsklopovskom dijelu raunara, primjenu kod sistema s odzivom u stvarnom vrenenu(engl. real time) i dr.

    Programski jezik ALGOL (engl. algorithmic language): (1957.-1960.)Namijenjen je obradi podataka pri naunim istraivanjima i inenjerskim proraunima.

    Programski jezik APL(engl. a programing language): (Kenneth Iverson 1957.-1967.) Namijenjen je saetom i jednostavnom prikazu matematikih algoritama,posebno kod vektorskog i matrinog rauna

    Programski jezik BASIC (engl. beginners all-purpose symbolic instructioncode, u prijevodujezik ope namjene za poetnike):(John G. Kemeny i Thomas E.Kurtz 1962.-1964.) Odigrao je veliku ulogu u pribliavanju raunara i programskihpostupaka ljudima koji nisu specijalisti za raunare i omoguio je strunjacima raznihstruka rjeavanje zadataka pomou raunara.

    PREDNOSTI: jednostavnost, razumljivost, rasprostranjenost gotovo na svim vrstamaraunara.NEDOSTACI: nestrukturiranost jezika, pa je temeljni prigovor sadran u izjavi E.Dijkstra: Studenti koji su bili prvo izloeni BASIC-u su beznadno mentalno osakaenikao potencijalni programeri.

    Popularne INAICE: True BASIC, MS Quick BASIC, MS Visual BASIC.

    Programski jezik C (prvobitno razvijeni CPL, BCPL, B): (Dennis Ritchie 1972.)Najpopularniji je programski jezik ope namjene. Razvijen je uporedo s operativnim

    sistemom Unix, koji je i napisan u C-u. Vrlo je sloen i velikih mogunosti, anamijenjen je ponajprije strunjacima koji se profesionalno bave pisanjem programa.Ima dobra SVOJSTVA viih programskih jezika, ali i mogunost manipulacijesklopovskim dijelovima raunara na niskoj razini.Popularne INAICE: Microsoft C, Borland Turbo C, Watcom C, nekoliko objektnoorijentiranih inaica C++.

    Programski jezik COBOL (engl. common business oriented language, uprijevodu opi poslovno orijentirani jezik): (grupa strunjaka u odboru konferencijeCODASYL potkraj 50.-tih g. 20.st.) Jedan je od prvih viih programskih jezika.Namijenjen je poslovanju u bankama, obraunima preduzea, obraunima plaa i sl.

  • 7/24/2019 Sklopljena IV Razred

    25/82

    25

    Programski jezik Forth: (Charles H. Moore kasnih 60.-tih 20.st., smatrao gajezikom etvrte generacije, engl. fourth generation language) Ima mogunostjednostavnog definiranja novih naredbi na temelju postojeih. Programer moejednostavno smisliti rijekojoj e pridijeliti eljenu funkciju, koja nakon toga postajenaredba ovog jezika. Ima ugraen skup naredni za upravljanje prividnom memorijom,

    za direktan pristup ulazno-izlaznim jedinicama i sl. Programi se brzo izvravaju.

    Programski jezik FORTRAN (skraenica od engl. formula translation, uprijevodu prevoditelj formula): (John Backus 1954.-1958.) Najstariji je viiprogramski jezik. Namijenjen je ponajprije tehnikoj i naunoj upotrebi, gdje jepotrebno obavljati raznovrsne raunske operacije.INAICE: FORTRAN II, FORTRAN IV, FORTRAN 66, FORTRAN 77, FORTRAN 90,Microsoft FORTRAN, Lahey Computer Systems Personal FORTRAN, MicrowayFORTRAN.

    Programski jezik LOGO: (Wallyy Fuerzeig i Seymour Papert 1966.-1968.)Namijenjen je djeci i ostalim poetnicima na raunaru. Prvi je programski jezik koji je

    omoguavao jednostavno crtanje pomou raunara bez sloenog programiranja.

    Programski jezik Modula-2 (skraenica od engl. modular language, uprijevodumodularni jezik): (Niklaus Wirth 1977.) Glavna mu je odlika modularnost,viezadani rad i mogunost prevoenja modula (dijelova programa). Smatra sepreteom suvremenih objektno orijentiranih jezika.

    Programski jezik PL/M (engl. programing language for microprocessors):(Gery Kildall 1972.) Namijenjen je ponajprije primjeni kod mikroprocesora firme Intel.Originalna mu je namjena bila posluiti kao programski jezik za CP/M operacijskisistem. Nastao na PL/I, koji je trebao objediniti najbolja svojstva FORTRAN-a,COBOL-a i ALGOL-a.

    Programski jezik PASCAL (dobio ime po Blaise Pascalu): (Niklaus Wirth1967.-1971.) Posebno omoguuje strukturno programiranje, koje olakava pisanje,odravanje i popravak programa. Prvobitno je bio namijenjen uenju strukturnogprogramiranja, ali je stekao veliku popularnost u akademskim krugovima. Danas gakoriste neprofesionalci kao razbibrigu, ali i za profesionalne primjene. Zasnovan jena ALGOL-u, a po mogunostima je izmeu BASIC-a i C-a.Popularne INAICE za PC: Turbo Pascal, Borland Pascal, MetaWare Pascal, IBMPascal, Object Pascal for Mac, UCSD Pascal.

    IZBOR PROGRAMSKOG JEZIKA :

    Tip programa Najbolji jezici Najloiji jezici

    Strukturirani programi Ada, C/C++,Pascal

    Asembler, Basic

    Kratki i nekvalitetni projekti Basic Pascal,Ada,Asembler

    Brzo izvoenje programa Asembler, C Interpreter poputBasic-a

  • 7/24/2019 Sklopljena IV Razred

    26/82

    26

    Matematiki programi Fortran Pascal

    Pogrami jednostavni zanadgradnju

    Pascal, Ada C, Fortran

    Dinamika upotrebamemorije

    C, Pascal Basic

    Za okruja s ogranienommemorijom

    Basic, Asembler,C

    Fortran

    Programi za rad u realnomvremenu

    Ada, Asembler,C

    Basic, Fortran

    Upravljanje nizovimaznakova

    Basic, Pascal C

  • 7/24/2019 Sklopljena IV Razred

    27/82

    27

    OSNOVNI POJMOVI

    Osnovni elementi C++ programa

    Ovaj kratki program ima nekoliko karakteristinih elemenata:

    #include

    #include - je uputa (direktiva) kompajleru da u program ukljui tzv. zaglavljebiblioteke sa imenom "iostream.h".

    Znak # (eng. hash) je signal za preprocesor. Svaki put kad se pokrene

    kompajler, prije kompajlera pokrene se i preprocesor. Preprocesor ita kod, odnosno

    #include#include#include#include Zaglavlje standardne biblioteke

    //Program ispisuje poruku na ekranu//Program ispisuje poruku na ekranu//Program ispisuje poruku na ekranu//Program ispisuje poruku na ekranu Komentar

    char ime[10];char ime[10];char ime[10];char ime[10]; Deklaracija varijable

    void main()void main()void main()void main() Zaglavlje funkcije

    {{{{

    coutime;cin>>ime;cin>>ime; Naredbe Tijelo funkcijecout

  • 7/24/2019 Sklopljena IV Razred

    28/82

    28

    program, traei linije koje poinju sa znakom #, i prevodi ove linije koda u specijalnenaredbe spremne za kompajler.

    Include -je instrukcija preprocesora koja se moe interpretirati kao "Ovo to slijedi jeime biblioteke. Nai tu biblioteku i proitaj je tano ovdje." Uglaste zagrade (< >) oko

    imena biblioteke govore preprocesoru da ovu biblioteku potrai na uobiajenimmjestima, obino je to direktorij u kome se uvaju svi *.h fajlovi. Prema tome,#include znai, cijeli sadraj fajla "iostream.h" umetni u ovajprogram kao da je tu i napisan.

    Svi objekti u C++ jeziku grupisani su u biblioteke, i na poetku svakogprograma obavezno se ukljuuju sve biblioteke koje sadre objekte koje koristimo uprogramu. Biblioteka iostream.h (skraenica od eng. input-output-stream), izmeuostalog definie objekte "cout" i "cin" koji koristimo za pristup ekranu. Ukolikopiemo matematiki program, na poetku programa emo ukljuiti i bibliotekumath.h, a ako piemo program koji radi sa grafikom tada moramo ukljuiti i biblioteku

    graphics.h. Ideja svega ovoga je da se program ne optereuje bespotrebnoobjektima koji se nee koristiti unutar programa. Nepotrebno je program optereivatigrafikim objektima ako program nee koristiti grafiku.

    Primjer: C++ biblioteke

    Kada piemo neki program, sasvim je jasno ta pokuavamo da uradimo.Meutim, za recimo mjesec dana, kad se vratimo istom programu, pojedini dijelovikoda mogu biti potpuno nejasni i konfuzni. Nije jasno kako dolazi do ove konfuzije, alije sasvim jasno da uvijek dolazi. Da bi se oslobodili konfuzije i da bi pomogli drugima

    da razumiju na kod, trebali bi koristiti komentare. Komentar treba biti kratak i jasan.Komentari su jednostavan tekst, ignorisan od strane kompajlera, koji informie onogako ita na program o emu se radi u pojedinim dijelovima programa.

    Komentari u C++jeziku pojavljuju se u dva oblika:

    // (eng. double-slash) komentar govori kompajleru da potpuno ignorie sve odpojave znaka "//"do kraja tekueg reda.

    #include#include

    int main()

    {int a,n,rez;couta;coutn;rez=pow(a,n);cout

  • 7/24/2019 Sklopljena IV Razred

    29/82

    29

    /*(eng. slash-star) komentar govori kompajleru da potpuno ignorie sve to slijediiza "/*" znaka, pa sve do "*/"(eng. star-slash) znaka. Svaki "/*" zahtjeva i "*/".

    Primjer: Komentari

    char ime[10];

    U C++ programskom jeziku varijabla je mjesto gdje se uva informacija.Varijabla je lokacija u memoriji raunara u kojoj se uva (pohranjuje) neka vrijednost iiz koje je naknadno mogue uzeti tu vrijednost.

    void main()

    Svaki C++ program mora imati najmanje jednu funkciju, odnosno funkciju kojase zove main. Tipine funkcije se pozivaju u toku izvravanja programa. Program seizvrava liniju po liniju, upravo onako kako i izgleda sam izvorni kod, sve dok ne doedo instrukcije koja poziva funkciju. Tada program prestaje sa izvravanjem daljegkoda, odlazi na liniju gdje poinje data funkcija i izvrava je. Kada je izvrena

    funkcija, program se vraa na sljedeu liniju koda koja slijedi odmah iza linije koja jepredstavljala poziv datoj funkciji.

    Primjer: Tok izvravanje programa koji poziva funkciju

    #include

    int main(){

    /* ovo je komentarkoji se zavrsava tek kad naidjemona star-slash znak */

    cout

  • 7/24/2019 Sklopljena IV Razred

    30/82

    30

    Funkcija Ispis()je definisana na linijama 5-8. Kad je pozvana, funkcija Ispis()ispisuje poruku na ekranu. Linija 13 je poetak programa. Na liniji 15, funkcija main()ispisuje poruku koja govori "Ja sam u main funkciji". Poslije ispisa poruke, linija 16poziva funkciju Ispis(). Ovim pozivom poinje izvravanje naredbi u funkciji Ispis(). Uovom sluaju cijela funkcija sastoji od samo jedne naredbe na liniji 7, koja ispisujesljedeu poruku na ekranu "Ja sam u Ispis funkciji". Kada se zavri Ispis() funkcija(linija 8), program se vraa na liniju koja slijedi odmah iza linije s koje je pozvanadata funkcija tj. Ispis () funkcija, odnosno program se vraa na liniju 17, na kojoj senalazi naredba koja ispisuje poruku na ekranu "Ponovo u main funkciji".

    U programskim jezicima funkcija je obino potprogram koji vraa neku

    vrijednost ili rezultat, mada imamo i funkcije koje ne vraaju nikakvu vrijednost,odnosno funkcije koje vraaju void (void znai nita). Funkcija koja sabira dva cijelabroja moe da vrati zbir ta dva broja, i prema tome moe biti deklarisana kao funkcijakoja vraa cjelobrojnu vrijednost (int). Funkcija koja samo ispisuje poruku na ekranunema vratiti nikakvu vrijednost i zbog toga treba biti deklarisana kao void. Funkcijase sastoji od zaglavlja i tijela. Zaglavlje funkcije definie vrijednost kojufunkcija vraa, ime funkcije, kao i parametre koje funkcija oekuje.Prema tome,ako funkcija treba da sabere dva broja, parametri funkcije bi trebali biti ti brojevi.

    Primjer: Zaglavlje funkcije

    Nakon zaglavlja funkcije slijedi tijelo funkcije. Tijelo funkcije poinje znakom"{", a zavrava znakom "}". Izmeu vitiastih zagrada nalaze se nijedna ili vienaredbi, odnosno blok naredbi i taj blok naredbi ini tijelo funkcije.

    Naredbe odreuju ili definiu redoslijed izvravanja programa, izraunavaju

    vrijednosti ili ne rade nita (null statement). Svaka naredba u C++ zavrava saznakom ";", pa ak i null naredba, koja je samo ";"i nita vie.

    cout

  • 7/24/2019 Sklopljena IV Razred

    31/82

    31

    niz znakova koji aljemo na izlazni tok. Dakle, gornja naredba se moe interpretiratikao:

    Poalji niz znakova "Unesite vase ime: " na ekran.

    cin>>ime;

    "cin" (skraenica od eng. console in, ita se [si in]) predstavlja objekat tzv. ulaznogtoka podataka (eng. input stream), koji je povezan sa standardnim ureajem za unos(obino tastaturom). Znak ">>" predstavlja takoe operator redirekcije, ali suprotnogsmjera od operatora "", iz unesenog niza znakova izdvajaju seznaci do prvog razmaka (ili do kraja reda), i vrijednost izdvojenog niza smjeta se upromjenljivu ije ime se nalazi desno od operatora ">>". Dakle, gornja naredba moese interpretirati kao:

    Poalji unos sa tastature u promjenljivu nazvanu "ime".

    C strukturni jezik

    Uvod u programiranje u C-u

    Elementi jezika dati su preko primjera programa, koji su po konceptu zajedniki zabilo koji C program.

    Prvi C program

    /* Program #1 My first C program */#include main(){printf(''This is my first C program'');}

    Linija komentara poinje s /* a zavrava */, sve to je izmeu kompajlerignorira

  • 7/24/2019 Sklopljena IV Razred

    32/82

    32

    Header files sadri podatke koji su potrebni programuSTDIO.H mora biti u radnom okruenju programa koji se kompilira, sadri ulazno

    izlazne funkcijemain() funkcija, blok, koji svaki C program mora imati, C program poinje pozivom

    main() i zavrava kada se iz maina vraa

    printf( ) ispisuje poruku na ekranu, u C-jeziku poruka se ispisuje pozivomstandardne funkcije printf(), koja ispisuje sve to pie izmeu navodikaKraj naredbe toka zarez ( ; )Poetak i kraj bloka { }

    Pridruivanje vrijednosti varijabli

    Program kreira varijablu value, daje joj vrijednost 1023, i nakon toga je ispisuje naekran.

    /* Program #2 */#include main(){int value;value = 1023;printf("This program prinnts the value %d", value);}

    int value deklarira varijablu kao cjelobrojnu

    =- znak pridruivanja u C jezikuprintf() sadri dva argumenta odvojena zarezom

    prvi sadri tekst i format poinje sa %i upozorava da e se ispisati simbolkoji nije karakter %d integer

    drugi ime varijable koje se ispisuje (ispisuje se na mjestu formata)

    Rjeenje programa je tekst: This program prinnts the value 1023

    Primjer 3

    Program pretvara galone u litre, 1galon = 3.7854Poto se koriste cijeli brojevi uzee se 1 galon = 4 litre

    /* This program converts gallons to liters */#include main(){

    int gallons, litters;printf("Enter number of gallons : ");

  • 7/24/2019 Sklopljena IV Razred

    33/82

    33

    scanf("%d", & gallons);litters = gallons * 4;printf("%d liters", litters);}

    dvije cjelobrojne varijable odvojiti imena zarezomscanf() standardna funkcija za itanj vrijednosti sa tastature

    prvi argument sadri samo format %d ita cjelobrojnu vrijednostdrugi &gallons adresni operator da bi scanf dobro radila

    Novi tip podatka

    Program pretvara galone u litre uz upotrebu floating-point brojeva.(realni brojevi)

    /* This program converts gallons to litters using floating point numbers */#include main(){float gallons, litters;printf("Enter number of gallons: ");scanf("%f", & gallons);litters = gallons * 3.7854;printf("%f litters", litters);

    }

    float kljuna rijeza deklaraciju real varijabli s pominom tokom%f format u printf() i scanf() to upuuje funkcije na oekivanje floating-point

    podatka, ako se u programu napie broj s decimalnom tokom, tada je tokonstanta s pominom tokom

    Zakljuak

    - C program mora imati funkciju main()- Sve varijable valja deklarirati prije upotrebe- C razlikuje vie tipova podataka int, float

    - printf() funkcija se koristi za ispis na ekran- scanf() funkcija se koristi za uitavanje s tastature- Program se zavrava s pojavom znaka za kraj funkcije main()

    Funkcije

    C program je skup jedne ili vie funkcija. Da bi napisali program prvo senapiu funkcije, a nakon toga se sloe zajedno. Funkcija u C-u je potprogram kojisadri jednu ili vie C naredbi koje izvravaju jedan ili vie zadataka (u dobronapisanom C programu jedna funkcija jedan zadatak). Svaka funkcija ima ime kojese koristi za poziv. Ime se daje proizvoljno, ali ime main() je rezervirano kao i kljunerijei (koje se koriste u jeziku kao naredbe). Ne moe se koristiti funkcija unutar

  • 7/24/2019 Sklopljena IV Razred

    34/82

    34

    funkcije. Ime funkcije pa slijedi zagrada, da bi se funkcija razlikovala od varijable.main(), printf(), scanf()

    Program je skup funkcija koje sam pie ukljuujui one iz C biblioteke.

    Opi oblik funkcije u C-ufunkcija_ime(lista podataka){ tijelo funkcije}

    Funkcija u C-u moe vraati vrijednost u pozivnu rutinu. Razliiti su tipovivrijednosti koje funkcija vraa. Ako nije deklariran tip vrijednosti koju funkcija vraa Ckompiler predpostavlja da je vraa na vrijednost cijelobrojne. Svaka funkcija moraimati ime. Za poziv funkcije jednostavno se upotrijebi ime. List parametara dajeimena i tipove varijabli kojima se pridruuju vrijednosti u funkciji. Ako parametaranema, zagrada je prazna.

    Tijelo funkcije sadri naredbe C-a koje definiraju to funkcija radi.} oznaka kraja funkcije i povratka u pozivnu proceduru.

    Program s dvije funkcije

    /* This program contains two functions: main() and myfunc(). */#include myfunc();void main(){ printf("in main()");myfunc();printf("back in main()"); }myfunc(){ printf(" inside myfunc() "); }

    Program sadri dvije funkcije main()i myfunc().Program radi na sljedei nain. Prvo main() poinje izvoenje i zove printf() naredbu.Nakon toga main() zove myfunc(). Poziv se postie ispisom imena myfunc(); poziv

    funkcije je C naredba te se mora izvriti. Nakon toga myfunc() zove printf() i vraa seu main() kod zatvorene vitiaste zagrade. Nakog toga main() poziva printf() drugi put.

    Izlaz na ekranu je: in main() inside myfunc() back in main()

    Argumenti funkcije

    Argument vrijednost za koju se rauna funkcija.Formalni parametar poprima vrijednost argumenta.

    Funkcija printf() ima argument, sting koji se ispisuje na ekranu (niz znakova).Funkcija u C-u moe imati vie ili nijedan argument (gornji limit moe biti 31).

  • 7/24/2019 Sklopljena IV Razred

    35/82

    35

    Kada se funkcija definira, varijabla koja e poprimiti vrijednost argumenta mora sedeklarirati. To su formalni argumenti parametri funkcije. Funkcija navedena doljeispisuje proizvod dva cjelobrojna argumenta koji se koriste u pozivu.

    mul(int x, int y){printf(%d, x * y);}

    Svaki put kad se mul() zove, pomnoi se vrijednost pridruenu x s vrijednoupridruenu y. Zapamtiti: x i y poprime vrijednost u trenutku poziva.

    Dat je primjer poziva funkcije mul()

    /* A simple program that demonstrates mul(). */#include mul(int x, int y);void main(){mul(10, 20);mul(5, 6);mul(8, 9);}mul(int x, int y){printf("%d ", x * y);}

    Program e ispisati 200, 30, 72 ekranu. Kada se mul() zove prvi put 10 se kopira u x,a 20 u y. Kod drugog poziva 5 se kopira u x, a 6 u y. U treem pozivu 8 se kopira u x,a 9 u y. Argument je vrijednost za koju se funkcija rauna, definira se pozivom, aformalni parametar je vrijednost u koju se argument kopira (pridruuje).Funkcija vraa vrijednost

    Funkcija moe vratiti vrijednost u pozivnu rutinu. U C-u se vrijednost vraa naredbomreturn.

    Opi oblik naredbe: return value; ( value se vraa )

    Program pie proizvod dva broja. Vrijednost je pridruena varijabli, tako da sefunkcija pie na desnu stranu naredbe pridruivanja.

    /* A program that uses return. */#include

  • 7/24/2019 Sklopljena IV Razred

    36/82

    36

    mul(int x, int y);void main(){int answer;answer = mul(10, 11); /* assign return value */

    printf("The answer is %d \n", answer);}/* this function returns a value. */mul(int x, int y){return x * y;}

    U ovom programu mul() vraa vrijednost x*y uz pomonaredbe return.Ovavrijednost je pridruena varijabli answer. Dakle vrijednost vraena return naredbom

    postaje vrijednost mul() u pozivnoj rutini.

    int : vrijenost vraena po default-u.

    main() function

    Funkcija main() oznaava poetak programa, te je zgodno da se pie na poetku.Samo je jedna main() funkcija u programu, ako ih ima vie program nee znati gdjeda pone. Veina kompilera javlja pogreku.

    printf() funkcija

    Opi oblik: printf(kontrol string,argument list)

    Kontrolni string sadri znakove koji se ispisuju na ekranu ili naredbe formata koje seodnose na listu argumenata ili oboje. %d za cijele brojeve i %f za pominu toku.Format se moe nai bilo gdje u kontrol stringu. Formati i argumenti pridruuju se odlijeva na desno. Broj formata u kontrol stringu govori funkciji printf() kolikoargumenata da oekuje. Ako se pie jedan znak, koristi se format %c.

    printf(%c %c %c, A, B, C);

    Primjeri:

    printf(this is a string %d, 100); displays:this is a string 100printf(%d is decimal,%f is float,10,110.789); displays:10 is decimal, 110.789 isloatprintf(this is %c in uppercase %c, a, A); displays: this is a in uppercase A

    \n

    Postoji mogunost ispisa u novi red. Za to se koristi format \n.

  • 7/24/2019 Sklopljena IV Razred

    37/82

    37

    /* This program demonstrates the \n code which generates a new line */#include main()

    {printf("one\n");printf("two\n");printf("three");printf("four");}

    Program daje na ekranu: onetwothreefour

    Format \n moe se pisati bilo gdje u kontrol stringu, a ne samo na kraju.

    scanf() funkcija

    Opi oblik: scanf(kontrol string,argument list);

    Pretpostaviemo da kontrol string moe samo sadravati format kod. %d i %f kojikau da uita cijeli broj, odnosno broj s pominom takom. Broj argumenata i broj

    formata mora biti isti.

    Identifikatori u C jeziku

    Identifikator u C-u je ime funkcije, varijable ili bilo koji, od korisnika, definiran lan.Moe biti proizvoljno dugaak. Ime varijable poinj slovom, moe slijediti donja crticaza pomou itljivosti varijable. Mala slova i velika slova su razliita imena (count Count).Kljune rijei ne moemo koristiti za identifikator.

    NaredbeIf if(uslov) naredba ; uslov istina ili la (istina 0, la = 0)

    /* This program ilustrates the if statement */#include void main(){int a, b;

    printf("Enter first number: ");scanf("%d ", & a);

  • 7/24/2019 Sklopljena IV Razred

    38/82

    38

    printf("Enter second number: ");scanf("%d", & b);if(a < b) printf("First number is less than second");}

    Naredba se izvrava smo ako je uslov istina. if(10

  • 7/24/2019 Sklopljena IV Razred

    39/82

    39

    Inti, j, k;charch, chr;floatf, balance;doubled;

    Lokalne varijable Deklariraju se unutar funkcije.

    Primjer:

    #include func();void main(){int x;x = 10;

    func();printf("%d", x);}func(){int x;x = -199;printf("%d\n", x);}

    U C-u lokalne varijable se kreiraju kad se funkcija zove, a na izlazu iz funkcije segube.

    Formalni parametri

    Deklaracija se obavlja unutar zagrade, koja se pie u definicionoj naredbi funkcije.

    Globalne varijable,

    Deklariraju se na poetku programa, prije main() funkcije. Vrijednost je poznata ucijelom programu.Primjer:

    #include int count;func1();func2();void main(){int i;for (i=0; i

  • 7/24/2019 Sklopljena IV Razred

    40/82

    40

    }func1(){printf("count: %d", count);func2();

    12}func2(){int count;}

    Ako globalna i lokalna varijabla imaju isto ime tada se unutar funkcije gdje je lokalnavarijabla deklarirana pojavljuje lokalno, a ne utie na globalnu varijablu.

    Modifikatori

    Osim za tip void, C doputa osnovnim podacima da se piu nakon modifikatora.

    signedunsignedlongshort

    Primjer:

    /* Program pokazuje razliku signed i unsigned */#include void main(){int i; /* signed integer */unsigned int j; /* unsigned integer */j = 60000;i = j;

    printf("%d %u", i, j);}

    Primjer:

    #include main(){char letter;for(letter='Z'; letter>='A'; letter--)

    printf("%c", letter);}

  • 7/24/2019 Sklopljena IV Razred

    41/82

    41

    Konstante

    Moe biti bilo koji podatak osnovnog tipa, uz uporabu sufiksa iza vrijednosti:

    F floatL long dubleU unsigned int

    Oktalne i hexadecimalne konstante

    ( 10 ) 8 0, 1, 2, 3, 4, 5, 6, 7( 10 ) 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, Fint hex = 0 x FF /* 255 */ nulu slijedi x

    int oct = 011 /* 9 */ poinje nulom

    String konstante

    Niz znakova. Pie se izmeu dvostrukih navodnih znakova.%s format kod za string konstantu

    Primjer:

    #include main(){printf("%s %s %s %s", "this", "is", "a", "test");}

    Backslash character konstanta

    \nnovi red \bbackspace \rcarriage return\ttab \dvostruki navodnik \jednostruki navodnik\0nula \\ backslash \vertikalni tabulator

    \aalarm \Noktalna konstanta\xNheksadecimalna konstanta\bpomie kursor u lijevo za jedan znak\fide na poetak nove stranice (form feed)\ride na poetak tekue linije (carriage return)Inicijalizacija varijabli

    tip varijable_ime = konstanta;

    char ch = a ; int prvi = 0 ; float bla = 123.23F ;

    Globalne varijable na poetku programaLokalne varijable kod svakog poziva funkcije u kojoj se deklariraju (ne zna se

  • 7/24/2019 Sklopljena IV Razred

    42/82

    42

    vrijednost do prvog pridruivanja ako nije inicijalizirana)

    Primer: Zbir svih brojeva od 1 do uitanog broja.

    #include

    total(int x);void main(){int t;printf("ENTER A NUMBER: ");scanf("%d", & t);total(t);}total(int x){int sum = 0; /* iniijalizacija */

    int i, count;for(i=0; i

  • 7/24/2019 Sklopljena IV Razred

    43/82

    43

    x = x + 1 ; ++ x ; x ++ ; x = x 1 ; -- x ; x -- ; x = 10 ; /* 10 */y = ++ x ; /* 11 */ x = 10 ; /* 10 */ y = x ++ ; /* 10 */

    Bit operatori

    &I |ili ^ ekskluzivni ili ~ komplement>shift desno EKSKLUZIVNI ILI (xor)

    Relacioni i logiki operateri

    > && AND >= || OR < ! NOT

  • 7/24/2019 Sklopljena IV Razred

    44/82

    44

    if ( uslov ) naredba;else naredba;

    if ( uslov )

    {blok 1}else{blok 2}

    Primjer:

    #include

    #include main(){int magic;int guess;magic = rand(); /* get a random number */printf(" Enter your guess: ");scanf("%d", & guess);if(guess==magic)printf("\n **Right** ");else printf("\n ...sorry, you are wrong... ");}

    Uslovni izraz

    Izraz koji za rezultat daje 0 ili 0 ( la ili istina ).

    Primjer: Program ita dva broja sa tastature, ispisuje kvocijent. Kontrola djeljenja snulom provedena je drugim brojem.

    #include main(){int a, b;printf(" Enter two numbers: ");scanf("%d %d", &a, &b);if(b) printf("%d\n", a/b); /* if(b!=0) printf("%d", a/b); - ne koristi se ovaj oblik */else printf(" Cannot devide by zero\n");}

    for petlja

    Opi oblik : for ( inicijalizacija; uslov; increment ) naredba;

  • 7/24/2019 Sklopljena IV Razred

    45/82

    45

    ili cijeli blok for ( inicijalizacija; uslov; korak ){

    blok naredbi}

    Petlja se vrti sve dok je uslov istina, kad uslov postane la izvrava se naredba kojasljedi (for blok).

    Inicijalizacija naredba pridruivanja, postavlja vrijednost kontrolne varijable.Uslov odreuje kad e se izai iz petlje.Increment definir kako se kontrolna varijabla mjenja pri svakom ponavljanju petlje.

    Primjer.

    Program ispisuje vrijednosti drugog korijena brojeva od 1 do 100.

    #include #include main(){int num;double sq_root;for(num=1; num-100; i=i-5) printf("%d", i);}

    Oba primjera pokazuju da uslov mora biti na poetku. Ako je la, petlja se uope nevrti.

    Primjer:

  • 7/24/2019 Sklopljena IV Razred

    46/82

    46

    #include main(){int x, y;x = 10;

    for(y=10; y!=x; ++x) printf("%d", y);/* this statement will not execute */}

    Neke varijacije petlje

    Funkcija kbhit() vraa odgovor la ako se ne pritisne tipka, a istina ako je tipkapritisnuta.

    Primjer:

    #include #include main(){int i;/* print numbers until a key is pressed */for(i=0; !kbhit(); i++) printf("%d", i);}

    .Tipka se pritisne, istina se vraa, !kbhit() je la i petlja se zaustavlja..Tipka nije pritisnuta, !kbhit() je istina, petlja se nastavlja.

    switch naredba

    Naredba selekcije, odabira. Testira varijablu i niz integer ili character konstanti. Akonijedan nije ispunjen izvrava se default.

    Opi oblik: switch ( variable ) {

    case constant 1 : statement sequence; break;case constant 2 : statement sequence; break;default : statement sequence }

    Vano za switch:

    - switch za razliku od if testira samo jednakost- u istoj switch naredbi ne moe biti dva case-a s istom vrijenou- switch je bri od niza if-ova- dijelovi naredbi pridrueni svakom case-u nisu blokoviPrimjer:

  • 7/24/2019 Sklopljena IV Razred

    47/82

    47

    Ako nema naredbe brek izvoenje se nastavlj na sljedei case

    include main()

    {int i;for(i=0; i

  • 7/24/2019 Sklopljena IV Razred

    48/82

    48

    Primjer:

    #include main()

    {char ch;ch = 1;while(ch!=0){printf("%c", ch);ch++;}}

    Na poetku petlje testira se istinitost uslova, to znai da se petlja ne mora izriti.

    do / while petlja

    Uslov se testira na kraju petlje, pa e se uvijek izvriti barem jedanput.

    Opi oblik: do {naredbe;} while (uslov);

    Zagrada se pie da se naredba ne pobrka s while naredbom.

    Primjer:

    #include main(){int num;do{

    scanf("%d", &num);}while(num!=100);}

    continue

    #include main(){

    int x;for(x=0; x

  • 7/24/2019 Sklopljena IV Razred

    49/82

    49

    if(x%2)continue;printf("%d", x);} }

    break

    Break zaustavla najbliu petlju. Upotrebljen u naredbi switch samo djeluje na tajswitch, a ne na petlju u kojoj se nalazi.

    Primjer:

    #include main(){int t, count;for(t=0; t

  • 7/24/2019 Sklopljena IV Razred

    50/82

    50

    VJEBA

    1. Napisati funkciju s imenom max koja vraa vrijednost veeg od dvacjelobrojna broja.

    max (int a, int b){if (a>b) return(a);else return(b);}

    2. Napisati funkciju s imenom look_up() koja koristi cjelobrojni argument i vraaprema: ARGUMENT RETURN

    1 a2 b3 c4 dinae vraa nulu.

    look_ap(int i){switch(i){case 1 : return(a);

    case 2 : return(b);case 3 : return(c);case 4 : return(d);default : return (0);}

    3. Zadatak 2 rijeiti pomuu viestukog if

    look_up(int i){

    if(i==1) return(a);else if(i==2) return(b);else if(i==3) return(c),else if(i==4) return(d);else return(0);}

    4. Napisati program koji uzima broj s tastature i ispisuje poruku hello onoliko putakoliko i broj.

    #include main()

    {int t;

  • 7/24/2019 Sklopljena IV Razred

    51/82

    51

    printf(" Enter a number: ");scanf("%d", &t);for( ;t>0;t--) printf(" HELLO\n");}

    ZADACI ZA VJEBANJE I OCJENJIVANJE C++

    Tipovi podataka u C++ jeziku

    _unsigned short int 2 byta od 0 do 65 535_short int 2 bayta od 32 768 do 32 767_unsigned long int 4 bayta od 0 do 4 294 967 295_long int 4 bayta od 2 147 483 648 do 2 147 483 647_int (16 bit) 2 bayta od 32 768 do 32 767

    _int (32 bit) 4 bayta od 2 147 483 648 do 2 147 483 647_unsigned int (16 bit) 2 bayta 0 do 65 535_unsigned int (32 bit) 2 bayta od 0 do 4 294 967 295_char 1 bayt 256 karakternih vrijednosti u ASCII standardu_float 4 bayta 1.2e-38 do 3.4e38_double 8 bayta 2.2e-308 do 1.8e308

    LOGIKE FUNKCIJE

    I &&ILI || - AltGr+wNE !

    Specijalni znakovi za znakovne nizove:

  • 7/24/2019 Sklopljena IV Razred

    52/82

    52

    \t horizontalni tab \b backspace \? - upitnik\v vertikalni tab \r poetak reda \f nova stranica\n prelazak u novi red \0 zavretak znakovnog niza\a - signal

    1. Napisati program koji sa tastature uitava dva cijela broja, a na izlazudaje zbir, razliku, proizvod , kolinik ta dva broja, kao i kub prvog ikorijen drugog broja . Uzeti samo cijele dijelove rijeenja

    I nain

    #include#include#include /* biblioteka podataka za matematicke funkcije*/int main(){

    int x,y,z,r,p,kub;float k,kor;coutx;couty;z=x+y;r=x-y;p=x*y;kor=sqrt(y); /* funkcija drugog korijena*/k=x/y;kub=pow(x,3); /* pow(x,y)-funkcija stepena xy*/cout

  • 7/24/2019 Sklopljena IV Razred

    53/82

    53

    cout

  • 7/24/2019 Sklopljena IV Razred

    54/82

    54

    min=((s-86400*dan)-(3600*sat))/60;cout

  • 7/24/2019 Sklopljena IV Razred

    55/82

    55

    p=r*r*3.14;;o=2*r*3.14;cout

  • 7/24/2019 Sklopljena IV Razred

    56/82

    56

    if (a==7){ cout

  • 7/24/2019 Sklopljena IV Razred

    57/82

    57

    }getch();

    }

    8. Napisati program koji uitava dva broja x i y, te ispisuje poruku da li je

    x>y ili xy){cout

  • 7/24/2019 Sklopljena IV Razred

    58/82

    58

    }

    10. napisati program koji za uneeni cijeli broj ispituje i ispisuje da li je brojvei, manji ili jednak broju 10.

    #include#includeint main(){

    int x;coutx;if(x>10)

    {cout

  • 7/24/2019 Sklopljena IV Razred

    59/82

    59

    cout

  • 7/24/2019 Sklopljena IV Razred

    60/82

    60

    cout

  • 7/24/2019 Sklopljena IV Razred

    61/82

    61

    s=s+i;i++;}cout

  • 7/24/2019 Sklopljena IV Razred

    62/82

    62

    {cout

  • 7/24/2019 Sklopljena IV Razred

    63/82

    63

    s=s+i;cout

  • 7/24/2019 Sklopljena IV Razred

    64/82

    64

    }cout

  • 7/24/2019 Sklopljena IV Razred

    65/82

    65

    else sn=sn+n;}cout

  • 7/24/2019 Sklopljena IV Razred

    66/82

    66

    {sn=sn+n;}}

    cout

  • 7/24/2019 Sklopljena IV Razred

    67/82

    67

    cin>>n;cout

  • 7/24/2019 Sklopljena IV Razred

    68/82

    68

    }cout

  • 7/24/2019 Sklopljena IV Razred

    69/82

    69

    cout

  • 7/24/2019 Sklopljena IV Razred

    70/82

    70

    }

    32. Napii program za ispis prve i tree cifre trocifrenog broja

    #include#includeint main(){

    int i;char znak[3]; /* broj se unosi kao niz od 3 znaka */cout

  • 7/24/2019 Sklopljena IV Razred

    71/82

    71

    #include#includeint main(){

    int a;

    couta;if (a==1)

    { cout

  • 7/24/2019 Sklopljena IV Razred

    72/82

    72

    35. Napisati program za ispis zbira cifara unesenog broja

    #include#include#includeint main(){int i,s;char niz[50];cout

  • 7/24/2019 Sklopljena IV Razred

    73/82

    73

    37. Napisati program za ispis prvih n neparnih brojeva, korisnik unosivrijednost n.

    #include#includeint main(){ int i,n;

    coutn;cout

  • 7/24/2019 Sklopljena IV Razred

    74/82

    74

    for(i=1;i

  • 7/24/2019 Sklopljena IV Razred

    75/82

    75

    42. Unesi broj n a zatim n lanova niza. . Razvrstati sve lanove niza odnajmanjeg ka najveem.

    #include#includeint main(){

    int i,j,n,niz[100],pom;coutn;cout

  • 7/24/2019 Sklopljena IV Razred

    76/82

    76

    getch();}

    44. Napisati program koji za uneseno n ispisuje slijedeu slikuX za n=4XX

    XXXXXXX

    #include#includeint main(){

    int i,n,j;coutn;

    for(i=1;i

  • 7/24/2019 Sklopljena IV Razred

    77/82

    77

    46. Napisati program koji za uneseno n ispisuje slijedeu slikuX

    XXX n=3

    XXXXX

    #include#includeint main(){ int i,n,j,k;

    coutn;for(i=1;i

  • 7/24/2019 Sklopljena IV Razred

    78/82

    78

    cout

  • 7/24/2019 Sklopljena IV Razred

    79/82

    79

    Odnos izmeu C i C++

    Kao to je Pascal najtipiniji strukturno-orijentirani programski jezik, tako je C++ (uz Javu,koja, meutim, nasljeuje veinu koncepata i sintaksu od C++) najtipiniji objektno-orijentirani programski jezik. C++ predstavlja proirenje programskog jezika C, u kojeg uvodikoncept objektno-orijentiranog programiranja. Jezik C ostao je i dalje ukljuen u jezik C++,kao njegov podskup. Kao takav, C++ podrava oba programska koncepta : konceptstrukturnog programiranja i koncept objektno-orijentiranog programiranja.

    Usprkos tome to programi pisani u C-u rade i u C++, C++ u dosta sluaja nudi drukiji putrjeavanja istih programskih zadataka.

    Terminalski ulaz/izlaz

    Jedna od najoitijih razlika izmeu C i C++ je zamjena standardne biblioteke stdiobibliotekom iostream. Biblioteka iostream zamjenjuje sve mogunosti biblioteke stdio,odnosno, tri programska retka iz slijedeeg primjera daju identian rezultat :

    printf ("Danas je lijep dan.\n"); // C

    cout

  • 7/24/2019 Sklopljena IV Razred

    80/82

    80

    FILE *dat;

    dat = fopen ("tekst1.txt","wt");

    fprintf (dat,"%s","Prvi red teksta!\n");

    fprintf (dat,"%s","Drugi red teksta!\n");

    fclose(dat);Odgovaraju i primjer u C++ :

    fstream dat;

    dat.open ("tekst.txt",ios::out);

    dat

  • 7/24/2019 Sklopljena IV Razred

    81/82

    81

    funkcija(10);

    funkcija(2.71,3.14); }Ispisuje se :

    Funkcija bez parametara!Cjelobrojni parametar a = 10

    Realni parametar b = 2.71Realni parametar c = 3.14

    Podrazumijevani argumenti funkcija

    Prilikom poziva funkcije potrebno je navesti listu argumenata koja odgovara listi argumenatau zaglavlju funkcije. C++ doputa da se neki od argumenata u pozivu funkcije izostave, takoda se umjesto njih koriste podrazumijevane vrijednosti.

    Primjer:

    #include

    void funkcija(int a, int b=5){

    cout

  • 7/24/2019 Sklopljena IV Razred

    82/82

    82

    *pok = 10;delete pok;

    Deklaracije referenci

    U C-u se esto koriste pokazivai za prosljeivanje argumenata funkcijama. U C++ moe se

    koristiti referentni operator (&) u listi argumenata, toini programski kod

    iim.

    C:void zamjena (int *a, int *b){

    int t = *a;

    *a = *b;

    *b = t;

    }

    void main(){

    int x = 3, y = 5;

    zamjena (&x, &y);

    printf ("%i %i\n",x,y);}

    C++:void zamjena (int &a, int &b){

    int t = a;

    a = b;

    b = t;

    }

    void main(){

    int x = 3, y = 5;zamjena (x,y);

    cout