You are on page 1of 10

FORTRAN

Uvod
Raunala su samo strojevi: neznaju nita, ne razmiljaju ni o emu, ali mogu izuzetnom brzinom i vrlo tono, slijediti precizno napisane upute. Takve upute moraju se napisati u posebnom jeziku koji stroj moe "razumjeti" programskom jeziku. FORTRAN je programski jezik ija prva verzija datira iz 1956 i nastao je u IBMovom laboratoriju u San Joseu u Californiji, a verzija koju mi koristimo na vjebama je FORTRAN 77, kojoj je standard utvren 1977. Nakon te verzije izalo je jo nekoliko, podosta proirenih, verzija standarda. (F90, F95, F2003, 2008. "Vlasnika" verzija Fortran2010 - Portland Group za MS Visual Studio) Svaki programski jezik mora imati leksiku strukturu, sintaksu i semantiku. Leksiku strukturu predstavljaju elementi od koji se tvori jezik Alfabet - Velika i mala slova engleske abecede (dijakritici nisu doputeni) - Znamenke 0 ... 9 - specijalni znakovi (interpunkcija, +/-* i sl.) Pomou Alfabeta gradi se Rjenik: - kljune rijei (npr. READ, IF, DO, CONTINUE) - imena funkcija (SIN, COS, ABS) - identifikatori - labele - konstante - brojevi - nizovi znakova itd. Sintaksu (pravopis) i semantiku (znaenje) uvoditi emo malo po malo tokom vjebi.

Brojevi
U fortranu razlikujemo dva tipa numerikih vrijednosti cijele ( INTEGER ) i realne ( REAL ) Cijeli brojevi su ...,3, -2, -1, 0, 1, 2, 3, ... Realni brojevi su zapravo ono to u matematici nazivamo decimalnim brojevima. Karakterizira ih decimalna toka koja odvaja cijeli dio od decimalnog dijela broja npr 2.73 Ukoliko je broj napisan bez decimalne toke, fortran ga tretira kao cijeli broj. Ako je napisan s tokom, tretiran je kao realni broj.

Notacija: u slijedeim definicijama (ali SAMO u tim definicijama, NE i u FORTRANU) - Uglate zagrade " [ " i " ] " kau: ono to je unutar tih zagrada pojavljuje se 0, 1, ili vie puta. - Ono to je izvan zagrada, pojavljuje se barem jednom. - Vertikalna crta " | " znai " ili "

Identifikatori...
...su klasa rijei koja je karakterizirana slijedeim pravilom Identifikator se sastoji od znakova koji mogu biti slova i znamenke uz uvijet da prvi znak bude slovo. slovo [slovo | znamenka] 7SAMURAJA, CVRICVRAK, +OSAM nisu korektni identifikatori. ZATO? Identifikatori se upotrebljavaju kao imena varijabli, funkcija i slino. razmak " " u identifikatoru nije doputen.

Niz znakova...
...definiran je slijedeim pravilom: Niz znakova je proizvoljna kombinacija znakova unutar literala (apostrof, jednostruki navodnik) 'ovo je broj 7 a ovo broj 9' je takav niz. Formalno, niz znakova definira se ovako: '[znak]'

Konstante
numerike cjelobrojne 2, -88 realne 0.91, +5.0, -4. , -2.5E-3 logike .TRUE. i .FALSE. znakovne ' ' | 'znak'

Funkcije
Funkcije koje susreemo u matematici, pojavljuju se redovito i u programskim jezicima. Funkcije su predstavljene izrazima oblika ime_funkcije (argumenti) pri emu su argumenti izrazi. Mi emo se baviti samo tzv. funkcijama jedne varijable, odnosno, funkcijama kojima treba samo jedan argument. primjer: sin(x), F(y), log(3+4*a) Tablica funkcija u fortranu x x ex ln x log x sin x, cos x tg x arc sin x arc cos x arc tg x ABS (X) SQRT(X) EXP(X) ALOG(X) ALOG10(X) SIN(X), COS(X) TAN(X) ASIN(X) ACOS(X) ATAN(X)

Pozabaviti emo se sada onim radi ega je Fortran (FORmula TRANslation) i smiljen aritmetikom tj. nainom na koji se u fortranu zapisuje aritmetiki izraz.

Izrazi
Spominjali smo da, generalno, varijabli pridruujemo vrijednost izraza. Objasnimo stoga znaenje "aritmetikog izraza": Aritmetiki izraz je svaka smislena kombinacija operanada i operatora (Ovo nije definicija, ve opis aritmetikog izraza) Operator ponekad moe biti i isputen: Takoer su to i 4, a, PI, 23.45 su izrazi A+B, C*D, 12/m, cos(A), ...

Operatori, dakle, predstavljaju aritmetike operacije i, na neki nain, stvaraju vezu izmeu operanada. Operandi, pak, mogu biti brojevi, varijable, funkcije i IZRAZI kao npr. u izrazu (a+b)*(c-d). (rekurzivna definicija)

Aritmetiki operatori koji se koriste u fortranu su (zapisani u fortranskoj notaciji) - predznak: +, - zbrajanje, oduzimanje: +, - mnoenje i dijeljenje: *, / - potenciranje: ** (Pazite! radi se o potenciranju, a ne - samo - o kvadriranju!) Kad fortran rauna izraz, raunanje provodi s lijeva u desno, osim kad prioritet raunskih operacije zahtijeva drukije: Najvei prioritet ( ... ) - zagrade Funkcije, ** *, / predznak zbrajanje i oduzimanje najmanji prioritet U izrazu a+b*c+d prvo se rauna b*c zatim se dodaje a, a nakon toga dodaje d. U izrazu (a+b)*(c+d) prvo se izraunaju zbrojevi, a zatim se ti zbrojevi pomnoe. Zagrade mijenjaju redoslijed operacija, i pametnim koritenjem zagrada, (pogotovo kad nismo sigurni u redoslijed) dobiti emo eljeni redoslijed raunanja. Zadaci: Pretvorite u klasinu matematiku notaciju: 1. (a*b*c)**2 2. a/b*c/d 3. a/b*c**2 4. 5.0/(a**3*b**2/3.2) Pretvori u fortransku notaciju b 1. x 3a c a+2b 2. x 5 ab 2 3a 3. x 3 b a+b x c 4. d2

Struktura programa u fortranu


Program je tekst koji sadri niz naredbi, pri emu u svakom redu stoji samo jedna naredba. Red u koji se upisuje naredba, u fortranu ima posebnu strukturu: podijeljen je na pozicije ili kolone (na svakoj poziciji moe stajati samo jedan znak) OVO JE VRLO VANO! 1 2 3 4 5 6 7 72

1 mjesto za oznaku komentara 1- 5 - labela 6 mjesto za oznaku retka za nastavak 7 72 naredba Komentar tekst koji compiler ignorira, a koji slui programeru (i itatelju) za pisanje objanjenja Labela numerika oznaka od 1 do 99999 koja slui za oznaavanje retka. Nuna je pri radu s naredbama za kontroku toka programa Mjesto za nastavak Ako je naredba preduga i ne stane u 66 znakova, treba ju nastaviti u slijedeem redu. U redu u kojem se pie nastavak naredbe u 6. kolonu upiemo bilo koji znak osim ' ' i nule Struktura programa PROGRAM IME_PROGRAMA Deklaracije varijabli Inicijalizacija varijabli 123 END PROGRAM je kljuna rije koja oznaava poetak programa. IME_PROGRAMA je identifikator (poinje slovom, ne sadri posebne znakove ni razmak) i mora biti jedinstven: vie se ne smije pojavljivati u programu! Ime programu daje programer i obino odraava ono to program radi... END je kljuna rije koja oznaava kraj programa i obavezno je posljednja naredba u programu. naredba ... naredba

Prvi program program prvi end

Varijable
Varijabla je (strogo uzevi) rezervirani memorijski prostor iji sadraj korisnik/programer smije mijenjati tokom izvoenja programa. Sadraj dakle moe biti UPISAN u varijablu. Pri tome se sadraj koji je eventualno prethodno tamo stajao brie i zamjenjuje novim. Naravno, ukoliko je u varijablu neto upisano, tada taj sadraj moemo i iskoristiti na neki nain. Koritenje sadraja nije destruktivno, tj "itanjem" se sadraj varijable ne mijenja. Varijabele se razlikuju po imenima, te se njihovim sadrajem barata pomou tih imena. Ime varijable je identifikator i ono mora biti JEDINSTVENO.

Pridruivanje
Openito, u fortranu, izraze, odnosno vrijednosti izraza (a to je to izraz, objasniti emo malo kasnije), moramo pridruiti varijablama. IMEVARIJABLE = IZRAZ Pojednostavnimo to za trenutak: IMEVARIJABLE = BROJ

to to znai? pridruivanje

15
varijabla broj

15

pridruivanje

varijabla

izraz

Nakon pridruivanja, varijabla sadri vrijednost izraza i u programu, kad god zatrebamo taj izraz, moemo upotrijebiti umjesto njega varijablu kojoj smo ga pridruili (u koju smo izraz smjestili). Varijabla dri vrijednost sve do novog pridruivanja! Primjeri: 1. Varijabli S pridrui broj 7, a varijabli CRVENO pridrui vrijednost 3.1415 S=7 CRVENO=3.1415 S 7 CRVENO 3.1415

2. Pridrui A 10, B 20, C 30, a zatim C B, B A A=10 B=20 C=30 C=B B=A Ovo ilustrira mogunost da varijabli pridruimo ne samo broj, nego i vrijednost spremljenu u neku drugu varijablu. 3. Pomou pridruivanja, u fortranu se moe apisati minijaturni program koji je temelj zamjene vrijednosti dvjema varijablama, uz upotrebu tree, pomone. A=10 B=20 POMOCNA=A A=B B=POMOCNA Pridruivanje, dakle omoguava uvanje neke vrijednosti "pod nekim imenom". Primjer: program drugi R=2.71 PI=3.1415 O=2*R*PI end Nakon ovih linija koda, varijabla O sadrati e vrijednost 17.02693, jer su tokom raunanja izraza iz memorije raunala proitane vrijednosti R i PI. R i PI pri tome nisu ni izgubile ni promijenile svoje vrijednosti.

A 10 10

B 20 10

C 30 20

Primjer program treci a=1.23 b=45.0 c=a+sin(b) d=a*c**2+(1.1-2.3*(-b-c)) end Ovdje je niz pridruivanja, koji ilustrira i pisanje izraza u FORTRANU.

Deklaracija
Fortran kao i brojni drugi programski jezici zahtijeva od programera da prije nego pone koristiti imena varijabli u programu, ta imena deklarira, tj najavi i rezervira. Fortran je meutim, neto liberalniji od npr C-a. to je deklaracija? Deklaracija je popisivanje imena varijabli koje e biti koritene u programu, uz istovremeno odreivanje tipa varijable. Preciznije, deklaracijom se propisuje koji tip podatka smije biti smjeten u varijablu. Zato? Govorili smo o tipovima brojeva u Fortranu (decimalni tj. realni i cijeli). Veliina prostora koji e pri zapisivanju u memoriju zauzeti cijeli broj, openito je manja od prostora koji je potreban realnom broju. Compiler eli radi efikasnosti unaprijed znati koliko mjesta treba rezervirati za korisnikove podatke. Takoer, odreivanje tipa podatka unaprijed, omoguava compileru da te podatke adekvatno tretira pri prevoenju i kasnije, radu programa. Stoga, compileru trebamo rei koliko varijabli imamo, kojeg su tipa i kako se zovu. Kako? Eksplicitna deklaracija oznaka_tipa ime_varijable [, ime_varijable]

npr INTEGER CURA, DECKO, AS, DESETKA REAL HERC, TREF, PIK To je EKSPLICITNA deklaracija Implicitna deklaracija Da bi "olakali" rad programerima (najee iz matematikih, fizikalnih i tehnikih struka) autori fortrana su unaprijed odredili da I,J,K,L,M,N i sve varijable koje poinju tim slovima oznaavaju INTEGER varijable, osim ako programer, pomou EKSPLICITNE deklaracije ne odredi drukije. Varijable koje poinju bilo kojim drugim slovom osim gornjih su tipa REAL. Dakle u programu je doputeno pisati IVICA = 6 DRAGICA=7.5 bez prethodne deklaracije Nije meutim doputeno pisati IVICA = 6.0 DRAGICA = 7

elimo li to, moramo napisati REAL IVICA INTEGER DRAGICA IVICA = 6.0 DRAGICA = 7 Napomena: Deklaracija mora biti jednoznana: ime varijable se u deklaraciji smije pojaviti samo jednom.

nije korektno: program krivo INTEGER A,B,C REAL B,C,D INTEGER C,D,E end

Zadatak 1 Koje su varijable realne, koje integer, a koje ne valjaju: ALI, BABA, I, 40RAZBOJNIKA, PROHUJALO, S VIHOROM, POVRATAK, FILIPA, LATINOVICZA, IMATI-I-NEMATI, 25.PET, TISUA, MILJA, ISPOD MORA Zadatak 2 Napiite program za raunanje stranica u pravokutnom trokutu ako su zadane hipotenuza i kut uz nju Zadatak 3 Zbroji i podijeli kruke i jabuke (12 kruski i 57 jabuka). Tonije: jednu var. nazovite kruke, drugu jabuke i pridruite im navedene vrijednosti, a zatim obavite nad njima i spomenute operacije.

You might also like