1-uvod i struktura programa

Upload: mehdin-mujanovic

Post on 07-Jul-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 1-Uvod i Struktura Programa

    1/15

    Programski jezik FORTRAN

    Uvod

    Računala su (samo) elektroni čki sklopovi. Ne znaju ni šta, ne razmi šljaju ni očemu, ne razgovaraju, ne pitaju i ne odgovaraju na pitanja. Kad bismo iz njih uklonilitzv. BIOS (Basic Input-Output System), nakon uklju čivanja se ne bi dogodilo - ni šta.Elektronika, iako pod naponom, ne bi "radila" ni šta, osim proizvodnje topline.

    Što, onda, ra čunala mogu, kad ve ć nisu u stanju razmi šljati samostalno, kakouop ć e obavljaju toliko razli čitih i slo ženih poslova kojima ih optere ć ujemo iz sekunde usekundu?

    Računala savr šeno rade samo jednu stvar: slijede precizno napisane upute.Takve upute moraju se napisati u posebnom jeziku koji ra čunalo mo že "razumjeti" –programskom jeziku. Ra čunalo dakle provodi u djelo akcije isklju čivo na temelju nizainstrukcija koje je sastavio čovjek. Osnovni program, kojeg su, naravno, kao i (gotovo)sve programe na svijetu, napisali ljudi, je spomenuti BIOS i on daje ra čunaluelementarne upute kako obaviti jednostavne osnovne (basic) zadatke.

    Napisan je u jeziku Assembly, (naziv sustava kojeg koristimo u pisanju programa je Assembler). To je jezik najni žeg nivoa, slo ženiji od binarnih nizova kakvi su izravno"razumljivi ra čunalu", no ipak, ne pretjerano smislen "prosje čnom" programeru,naviknutom na programske jezike vi šeg nivoa.

    Složeniji, pak, zadaci zahtijevaju slo ženije programe, a slo ženiji programizahtijevaju razvijeniji jezik od Assemblyja. Naime, iako je svaki program mogu ć enapisati u Assemblyju, to je strahovito zahtjevan i duga čak pothvat. Da bi programi biličitljiviji ljudima, oblikom što sli čniji govornim re čenicama (Engleskog jezika),konstruirani su programski jezici vi ših nivoa. Jedan od njih je i FORTRAN.

    FORTRAN je programski jezik čija prva verzija (FORTRAN I) datira iz 1956. Verzije II,III, IV, 66 nastale su u periodu od 1958. do 1966. i svaka je bila unaprije đ enjeprethodne. Njegovo ime je slo ženo od po četnih dijelova rije či FORmula TRANslation iopisuje na čin na koji je jezik zami šljen. Ideja autora jezika je bila pru ž iti znanstvenicimai inž injerima alat kojim bi uz pomo ć računala, rje šavali numeri čke probleme, koji suzahtijevali velike koli čine matemati čkih prora čuna i baratanja s podacima.

    Verzija koju mi koristimo u nastavi je FORTRAN 77, (kra ć e F77) kojoj je standardutvr đ en 1977.

  • 8/18/2019 1-Uvod i Struktura Programa

    2/15

    Nakon te verzije objavljeno je nekoliko, podosta pro širenih, verzija standarda:

    - F90, F95 donijele su velike promjene u koncepciji jezika: slobodnu formu,modularnost, rekurzivnost, "pripremu" za object-oriented programiranje, operacije nad1D poljima, dinami čku alokaciju i pointere i t.d.

    - F2003 donosi pravo object-oriented programiranje, standardizaciju aritmetike (IEEEstd), naprednu manipulaciju podacima, interoperabilnost sa C-om, CLI (command-lineinterface) parametre...

    - F2008 uvodi paralelizam, memory management...

    - U trenutku nastanka ovog teksta (to čnije, njegove dopune 2013. godine) u planu jemanja revizija F2015. Takve revizije ne donose bitne novosti ve ć samo dodatke ikorekcije.

  • 8/18/2019 1-Uvod i Struktura Programa

    3/15

    Jezik: Pojmovi i struktura

    Svaki programski jezik mora imati leksi čku strukturu, sintaksu i semantiku.Objasnit ć emo što ti pojmovi zna če i kako se generiraju.

    Leksi čku strukturu predstavljaju elementi od koji se tvori jezik

    Alfabet

    Alfabet (uobi čajeno, naziv za skup svih slova u Gr čkom pismu) je skup svih znakovakoje programski jezik koristi za tvorbu rije či i rečenica

    - Velika i mala slova engleske abecede (dijakritici - č,ć ,š,đ ,ž - nisu dopu šteni)- Znamenke 0 ... 9- specijalni znakovi (interpunkcija, +, /, -, * i sl.)

    Rječ nik

    Pomo ć u Alfabeta gradi se rječ nik koji se sastoji od slijede ć ih klasa

    - ključne rije či (npr. READ, IF, DO, CONTINUE)- imena funkcija (SIN, COS, ABS)- identifikatori- labele- konstante- brojevi- nizovi znakova

    itd.

    Sintaksu (pravopis) i semantiku (zna čenje) uvoditi ć emo malo po malo tokomvjež bi, kroz primjere i zadatke.

    Iz osnovne leksi čke strukture izvode se gradivi elementi jezika. U svimprogramskim jezicima pojavljuju se elementi koji opisuju pojmove. Pojmovi suuglavnom "svuda" isti, "rije či" koji ih opisuju su sli čne, no ono što razlikuje jedan jezikod drugog su sintaksa i semantika.

    Radi ilustracije napomenimo da u govornim jezicima, na pr. Engleskom iHrvatskom ,ideja, tj pojam vode je isti, isgovorena rije č je slična u oba jezika, no razlika u

    pisanju je o čita

    WATER VODA

  • 8/18/2019 1-Uvod i Struktura Programa

    4/15

    Slično je i u programskim jezicima. Svaki postupak koji se mo že uobli čiti uprogram, mogu ć e je opisati, isprogramirati u bilo kojem programskom jeziku. Pojmovi iideje se ne mijenjaju s izborom jezika, ali na čin opisivanja - a posebno rije či i rečenice -da.

    Za po četak, opi šimo i pojmove i rije či koje koristimo u FORTRANu

    Brojevi

    U FORTRANu razlikujemo dva tipa numeri čkih vrijednosti cijele ( INTEGER ) idecimalne ( REAL )

    Cijeli brojevi su ...,–3, -2, -1, 0, 1, 2, 3, ...

    Decimalni brojevi su u stvari samo podskup realnih brojeva, no FORTRAN ih nazivarealnim (REAL) brojevima. Karakterizira ih decimalna to čka koja odvaja cijeli dio oddecimalnog dijela broja npr 2 .73

    Ukoliko je broj napisan bez decimalne to čke, FORTRAN ga tretira kao cijeli broj.Ako je napisan s to čkom, tretiran je kao realni broj.

    Identifikatori ...

    ...su klasa rije či koja je karakterizirana slijede ć im pravilom:

    Identifikator se sastoji od znakova koji mogu biti slova i znamenke uz uvijet da prvi znak bude slovo.

    Krać i zapis tog pravila je

    "slovo" ["slovo" | "znamenka"]

    Kod pisanja leksi čkih pravila u uglate zagrade se stavlja ono što se pojavljujenijednom, jednom ili vi še puta (drugim rije čima, mo že se ali i ne mora pojaviti uop ć e, aako se pojavi, mo že se i ponoviti)

    Primjer 1 :

    7SAMURAJA, CVRČICVRČAK, +OSAM

    nisu korektni identifikatori. Objasnite zašto.

  • 8/18/2019 1-Uvod i Struktura Programa

    5/15

    Identifikatori se upotrebljavaju kao imena varijabli, funkcija i sli čno. Znak za razmak " "u identifikatoru nije dopu šten. Mo žete li navesti zbog čega?

    Niz znakova...

    ...definiran je slijede ć im pravilom:

    Niz znakova je proizvoljna kombinacija znakova unutar literala (apostrof, jednostrukinavodnik)

    Primjer 2 :

    'ovo je broj 7 a ovo broj –9'

    je takav niz.

    Pravilo koje smo naveli gore, kra ć e se zapisuje ovako

    '[znak]'

    Konstante ...

    ...u FORTRANu mogu biti npr.:

    numerič ke

    cjelobrojne 2, -88, ...realne 0.9 , +!.0, -". , -2.!#-$, ...

    logič ke

    .%RU#. & . A(S#.

    znakovne

    ' ' | 'znak'

  • 8/18/2019 1-Uvod i Struktura Programa

    6/15

    Programiranje: Aritmetika u FORTRANU

    Do sada smo upoznali najjednostavnije pojmove u FORTRANu odnosnoznakove i neke jednostavne rije či. Da bismo, me đ utim, mogli napisati program,potrebno je ne što vi še. Potrebne su rije či koje u kombinaciji s ve ć navedenima stvarajunaredbe, re čenice koje ra čunalu ka žu što i kako treba napraviti.

    U nastavku, dobrim dijelom i kroz primjere, nau čit ć emo i nove rije či i na čin nakoji pišemo re čenice na šeg programa. Prije svega upoznati ć emo mehanizam zaFORTRANu

    Funkcije

    Funkcije koje susre ć emo u matematici, pojavljuju se redovito i u programskim jezicima, posebno u FORTRANu. In ž injerski problemi pretrpani su funkcijama, i gotovosvi studenti tehni čkih fakulteta ve ć su upoznati s trigonomerijskim, logaritamskim idrugim funkcijama.

    Funkcije predstavljaju izraze oblika

    "ime_funkcije" ( "argument" )

    pri čemu je argument – izraz. Uo čite da argument funkcije mora stajati unutar okruglihzagrada! O tome što je "izraz" - malo kasnije. Za po čeak, dajmo konkretne primjere zagornje pravilo.

    Primjer 3:

    sin(x),F(y),log(3+4*a)

    su korektno zapisane funkcije: sin, F i log su imena funkcija, x, y, i 3+4*a su argumenti.

  • 8/18/2019 1-Uvod i Struktura Programa

    7/15

    Tablica funkcija u FORTRANu

    | x| ABS (X)

    √ x SQRT(X)

    ex

    EXP(X)ln x ALOG(X)log x ALOG10(X)sin x, cos x SIN(X), COS(X)tg x TAN(X)arc sin x ASIN(X)arc cos x ACOS(X)arc tg x ATAN(X)

    Pozabaviti ć emo se sada onim radi čega je FORTRAN (sjetite se: FORmulaTRANslation) i smi šljen – aritmetikom tj. na činom na koji se u FORTRANu zapisujeformula ili, preciznije, aritmeti čki izraz.

    U FORTRANU ni jedna vrijednost, (konstanta, varijabla ili izraz) ne mogu stajati"sami za sebe". Nije, na pr. dopu šteno usred programa napisati

    11.4*x+12

    i napisani izraz ostaviti da "lebdi u praznom prostoru". Svaka vrijednost koja se možeizra čunati, mora se nekamo i smjestiti. Tomu slu ži

    Pridru živanje

    Op ć enito, u FORTRANu, izraze, odnosno vrijednosti izraza (a što je to izraz,objasniti ć emo malo kasnije), moramo pridru ž iti varijablama . To činimo ovako

    "VARIJABLA" = "IZRAZ"

    Varijabla je memorijska lokacija, rezervirani memorijski prostor, u koji mo žemostaviti neku vrijednost. Nama ć e to uglavnom biti numeri čke vrijednosti, naj češć edobivene izra čunavanjem nekog izraza. Ime varijable postaje sinonim za vrijednostspremljenu na danu lokaciju.

    Što to zna či?

    varijabla izraz

    pridruživanje

  • 8/18/2019 1-Uvod i Struktura Programa

    8/15

    Uočite, ponovo, kako smo to postigli u FORTRANu,

    "VARIJABLA" = "IZRAZ"

    Primje ć ujete znak " = " izme đ u varijable i izraza. To NIJE znak jednakosti, jerovdje ne provjeravamo tzv. ekvivalenciju: ne razmi šljamo o tome da li je "varijabla" istevrijednosti kao i "izraz". Naprotiv! Mi prisiljavamo varijablu da preuzme, poprimivrjednost izraza, odnosno, spremamo vrijednost izraza u varijablu. Uo čite smjer streliceu ilustraciji. Tu strelicu u FORTRANu zamjenjujemo znakom " = ".

    Dakle, znak " =" je znak za pridru ž ivanj e i u FORTRANu slu ž i samo toj svrsi i ni jednoj drugoj! Tako đ er, zapamtite, taj znak je jednosmjeran i smjer mu je onakavkakvog pokazuje ilustracija.

    Nakon pridru živanja, varijabla sadr ž i vrijednost izraza i u programu, kad godzatrebamo taj izraz, mo žemo umjesto njega, upotrijebiti varijablu kojoj smo gapridru ž ili (u koju smo izraz smjestili). Varijabla sadr ži danu vrijednost sve do novogpridru ž ivanja!

    Primjer 4:

    Varijabli S pridru ž i broj 7, a varijabli CRVENO pridru ž i vrijednost 3.1415

    S)7

    CRV#*O)$. " !

    Primjer 5:

    Pridru ž i A

  • 8/18/2019 1-Uvod i Struktura Programa

    9/15

    Primjer 6: (N.B. OVO JE VA ŽNO !) Pomoć u pridru ž ivanja, u FORTRANU se mo ženapisati minijaturni program koji je temelj zamjene vrijednosti dvjema varijablama, uzupotrebu tre ć e, pomo ć ne.

    A) 0)20

    OMOC*A)AA)

    ) OMOC*A

    Pridru ž ivanje, dakle omogu ć ava čuvanje neke vrijednosti "pod nekim imenom". To je bitan i jak mehanizam, koji je temelj ra čunanja u programiranju.

    Izrazi

    Spominjali smo da, generalno, varijabli pridru žujemo vrijednost izraza.Objasnimo stoga zna čenje "aritmeti čkog izraza":

    Aritmeti č ki izraz je svaka smislena kombinacija operanada i operatora (N.B. OvoNIJE definicija, nego obja šnjenje!)

    Operator mo že biti i ispu šten:

    4, a, PI, 23.45 su izrazi

    Tako đ er su to i

    A+B, C*D, 12/m, cos(A), ...

    Operatori , dakle, predstavljaju aritmeti čke operacije i, na neki na čin, stvarajuvezu izme đ u operanada.

    Operandi , pak, mogu biti brojevi, varijable, funkcije i IZRAZI kao npr. u izrazu(a+b)*(c-d).

    Primijetite: ovo je tzv rekurzivna definicija, koja koristi pojam koji upravo definira

  • 8/18/2019 1-Uvod i Struktura Programa

    10/15

    Aritmeti čki operatori koji se koriste u FORTRANu su (zapisani u fortranskoj notaciji)

    - predznak: + , -- zbrajanje, oduzimanje: + , -- mno ženje, dijeljenje: * , /

    - potenciranje: **

    Kad FORTRAN ra čuna izraz, ra čunanje provodi s lijeva u desno, osim kadprioritet ra čunskih operacije ne zahtijeva druk čije:

    Najve ć i prioritet ( __ )

    Funkcije, ***, /

    predznakzbrajanje i oduzimanje

    najmanji prioritet

    U izrazu a+b*c+d prvo se ra čuna b*c zatim se dodaje a , a nakon toga dodaje d.U izrazu (a+b)*(c+d) prvo se izra čunaju zbrojevi, a zatim se ti zbrojevi pomno že.Zagrade mijenjaju redoslijed operacija, i pametnim kori štenjem zagrada, (pogotovo akoniste sigurni u redoslijed izvo đ enja) dobiva se željeni redoslijed ra čunanja.

    Zadaci :

    Pretvorite u klasi čnu matemati čku notaciju:

    1. (a*b*c)**22. a/b*c/d3. a/b*c**24. 5.0/(a**3*b**2/3.2)

    Pretvori u fortransku notaciju

    1. x ← 3a +b

    c

    2. x ← 5 +a + 2b

    a − b

    3. x ←3a 2

    b 3

    4. x ←

    a + b

    c

    d 2

  • 8/18/2019 1-Uvod i Struktura Programa

    11/15

    Programiranje: Varijable

    Varijabla je, spomenuli smo to na po četku, rezervirani memorijski prostor čijisadr žaj korisnik/programer smije mijenjati tokom izvo đ enja programa.

    Sadr žaj dakle mo že biti upisan u varijablu. Pri tome se sadr žaj koji je eventualnoprethodno tamo stajao bri še i zamjenjuje novim. Upisivanje vrijednosti u varijablu sevrši pridru ž ivanjem .

    Naravno, ukoliko je u varijablu ne što upisano, tada to mo žemo i pro čitati,odnosno iskoristiti na neki na čin. Čitanje sadr žaja nije destruktivno, tj čitanjem sesadr žaj varijable ne mijenja i ne bri še

    Varijabele se razlikuju po imenima, te se njihovim sadržajem barata pomo

    ć u tihimena. Ime varijable je identifikator i ono mora biti JEDINSTVENO .

    Da bismo u varijablu upisali sadr žaj pridru živanjem koristimo slijede ć e pravilo:

    "ime_varijable" = "izraz"npr.

    J)"2,A R# ) /.0

    Čitanje je zapravo samo jednostavan naziv za upotrebu vrijednosti spremljenu uvarijablu danog imena.

    Primjer 7 :

    R)2.7I)$. " !

    O)2 R I

    Nakon ovih nekoliko redova koda, varijabla O sadr žati ć e vrijednost 17.02693, jersu tokom ra čunanja izraza iz memorije ra čunala pro čitane vrijednosti R i PI iupotrijebljene u aritmeti čkom izrazu. R i PI pri tome nisu ni izgubile ni promijenilesvoje vrijednosti.

    Dakle, u varijablu (u ovom slu čaju O) ne sprema se stvarno sam izraz, ve ć njegova izra čunata vrijednost! Što mora biti zadovoljeno da bi to bilo mogu ć e?

    Primjer 8: 1) 0.0

    J# A* ) SI*314 2 + COS314 25va)a6o 031 24

  • 8/18/2019 1-Uvod i Struktura Programa

    12/15

    Deklaracija

    FORTRAN kao i brojni drugi programski jezici zahtijeva od programera da prijenego što po čne koristiti imena varijabli u programu, ta imena deklarira , tj "najavi"njihovu upotrebu i rezervira ih. FORTRAN je u tome, me đ utim, ne što liberalniji od npr.C-a.

    Š to je deklaracija?

    Deklaracija je popisivanje imena varijabli koje ć e biti kori štene u programu, uzistovremeno odre đ ivanje tipova varijabli. Preciznije, deklaracijom se propisuje koji tippodatka smije biti smje šten u koju varijablu.

    Za š to?

    Govorili smo o tipovima brojeva u FORTRANu (decimalni tj. realni i cijeli). Veli činaprostora koji ć e pri zapisivanju u memoriju zauzeti cijeli broj, op ć enito je manja odprostora koji je potreban realnom broju.

    Pojednostavljeno, compiler želi, radi efikasnosti, unaprijed znati koliko mjesta trebarezervirati za korisnikove podatke. Tako đ er, odre đ ivanje tipa podatka unaprijed,omogu ć ava compileru da te podatke adekvatno tretira pri prevo đ enju i kasnije, raduprograma.

    Stoga, compileru nekako trebamo re ć i koliko varijabli imamo, kojeg su tipa i kako sezovu i to prije nego što "radni" dio programa do đ e na prevo đ enje.

    Kako?

    Dva su na čina za deklaraciju varijabli. Nazivaju se eksplicitna i implicitnadeklaracija. Op ć enita preporuka glasi: koristite eksplicitnu deklaraciju. Ipak, za nekeuobi čajene slu čajeve, mi ć emo koristiti i implicitnu deklaraciju.

    Eksplicitna deklaracija

    je ona u kojoj jasno i nedvosmisleno "crno na bijelo" navodimo tipove i imenavarijabli po pravilu

    "oznaka_tipa" "ime_varijable" [, "ime_varijable"]

  • 8/18/2019 1-Uvod i Struktura Programa

    13/15

    nprinteger #CKO, AS, #S#%KAreal #RC, %R# , IK

    Implicitna deklaracija

    je vrsta deklaracije koja se podrazumijeva ako ne specificiramo tipove varijabli.

    Da bi "olak šali" rad programerima (naj češć e iz matemati čkih, fizikalnih i tehni čkihstruka) autori FORTRANa su unaprijed odredili da

    I,J,K,L,M,N i sve varijable koje po č inju tim slovima ozna č avaju INTEGER varijable,osim ako programer ne odredi druk č ije.

    Varijable koje po č inju bilo kojim drugim slovom osim gornjih su tipa REAL.

    Dakle, u programu je dopu šteno pisati

    IVICA ) /RA ICA)7.!

    bez prethodne deklaracije, ali nije dopu šteno slijede ć e:

    IVICA ) /.0RA ICA ) 7

    Želimo li ipak izvesti to pridru živanje, moramo dodati eksplicitnu deklaraciju

    real IVICAinteger RA ICA

    IVICA ) /.0RA ICA ) 7

    Napomena: Deklaracija mora biti jednozna čna: ime varijable se u deklaraciji smijepojaviti samo jednom.

    Objasnite za što nije korektno pisati

    integer A, ,Creal ,C,integer C, ,#

  • 8/18/2019 1-Uvod i Struktura Programa

    14/15

    Programiranje: Struktura programa u FORTRANu

    Program je tekst koji sadr ži niz naredbi, pri čemu u svakom redu stoji najvi še jedna naredba. Pri tome ne mislimo da se pod naredbom podrazumijeva jedna "rije č"nego cijela "re čenica". Neke naredbe imaju pro širenu strukturu i zauzimaju vi še redova.

    Red u koji se upisuje naredba, u FORTRANu ima posebnu strukturu: podijeljen je na pozicije ili kolone tj. stupce (na svakoj poziciji mo že stajati samo jedan znak).

    1 2 3 4 5 6 7 72

    1 - mjesto za oznaku komentara1- 5 - labela6 - mjesto za oznaku retka za nastavak7 – 72 - naredba

    Komentar – Ako se na prvom mjestu u retku nalazi slovo "C", ostatak teksta u tomretku compiler ignorira. Takav se redak smatra komentarom koji slu ži programeru (ičitatelju) za pisanje obja šnjenja.

    Labela – numeri čka oznaka od 1 do 99999 koja slu ži za ozna čavanje retka. Nu žna je priradu s naredbama za kontrolu toka programa

    Mjesto za nastavak – Ako je naredba preduga i ne stane u prostor veli čine 66 znakova(od 7. do 72. znaka), treba ju nastaviti u slijede ć em redu.U redu u kojem se pi še nastavak naredbe, u 6. kolonum upi šemo bilo koji znak osim ' 'i nule. Dogovorno, u okviru vje ž bi iz FORTRANA neka to bude znak "#"

    Struktura programaRO RAM IME_PROGRAMA

    e 6ara:&je var&jab6&I;&:&ja6&

  • 8/18/2019 1-Uvod i Struktura Programa

    15/15

    Primjer 9:

    Ovo je prvi program koji upoznajemo u FORTRANu. On je sasvim korektno napisan icompiler ć e ga prevesti u izvr šni kod. Taj se program mo že nakon toga i pokrenuti.

    program =rv&end

    Što taj program radi?

    Primjer 10:

    U primjeru 7 izra čunali smo opseg kruga pomo ć u nekoliko naredbi pridru ž ivanja.Opremimo te naredbe dodatnima, i kompletirajmo program.

    program o=>e

    real r, =&, o

    r )2.7=&)$. " !o )2 r =&

    end

    Zadatak 1:

    Napi šite program koji izra čunava duljinu katete u pravokutnom trokutu ako je zadanadruga kateta i kut uz nju. Kut je zadan u radijanima.Napi šite i varijantu programa koji ra čuna katetu, ako je kut zadan u stupnjevima.