You are on page 1of 86

FORTRAN

Naziv potie od rei FORmula TRANslator odnosno prevodilac formula. FORTRAN je bio jedan od prvih jezika koji je omoguio programerima normalnu primenumatematikihformulainjihovoizraunavanje.SadaFORTRANpredstavlja jedan od najrasprostranjenijih programskih jezika uopte dok u inenjerskim oblastima ima posebno veliki znaaj jer predstavlja kako osnovu za prouavanje numerikihproblematakoialatzasraunavanjeveomakomplikovanihnumerikih problema. FORTRAN je takodje jedan od prvih programskih jezika koji moe da radi na svimplatformamaodnosnonarazliitimvrstamaraunara. Imajui u vidu potrebu i znaaj korienja FORTRANa za kako za studente maunstva tako i za mainske inenjere, ovde je dat kompletan prikaz programiranja, komande, mogunosti, prednosti i primere njegove upotrebe kroz sveoblastistudijanamainskomfakultetu. Takodje je dat i prikaz nekoliko aplikativnih softvera koji su korienjem FORTRANa radjeni na Mainskom fakultetu i koji predstavljaju reenje pojedinih veomasloenihproblema

Osnovneprogramskestrukture

U tekstu koji sledi objasniemo korienje osnovnih naredbi programskog jezika FORTRAN. Pri tome neemo izlagati sve njihove mogunosti navedenih naredbivesamonajneophodnijeelementenjihovesintakse.

Praznanaredba
Ovanaredbajedefinisanaprogramskomlinijomukojojjeispisanaslubenare "CONTINUE". Posle njenog izvravanja se praktino nita ne dogaa. Koristi se u sluajevima kada je potrebno da jedna programska linija treba da bude nosilac obeleja (obeleje ili labela naredbe je broj koji se ispisuje u drugom, treem, etvrtom i (ili) petom polju programske linije), najee kao kraj programskog ciklusa.

Ovanaredbasesastojiodslubenerei"PRINT",znaka"*,"kojioznaavadasu vrednostiizlaznihpromenjlivihustandardnomformatuilisteizlaznihpromenljivih. Imenaizlaznihpromenljivihseodvajajuznakom",".Poredtogaovomnaredbomse moe tampati i tekst koji se nalazi izmeu znakova " ' ". U programskom jeziku FORTRANpostojeimnogedrugemogunostizapisivanjaizlaznihpodatakainjihovo tampanjeustandardniminestandardnimformatima.Sanekimodnjih,kojikoriste naredbuWRITEupoznaemosekasnije.Posleizvrenjanaredbe PRINT*,M PRINT*,"M" naekranuebitiprikazanavrednostpromenljiveM,aposleizvrenjanaredbe naekranuebitiodtampanoslovoM. Posleizvrenjanaredbe PRINT*,'X=',X naekranuebitiodtampano"X="ibieprikazanavrednostpromenljiveX,aposle izvrenjanaredbe PRINT*,A,B,C naekranuebitiprikazanevrednostipromenljivihA,BiC.

Naredbazaprikazivanjeizlaznihrezultatanaekranu

Naredbazaunosulaznihpodataka
Ovanaredbasesastojiodslubenerei"READ",znaka"*,"kojioznaavadasu vrednostiizlaznihpromenjlivihustandardnomformatuilisteulaznihpromenjlivih. Imena ulaznih promenljivih se odvajaju znakom ",". U programskom jeziku FORTRAN postoje i mnoge druge mogunosti upotrebe ove naredbe. Sa nekima od njihupoznaemosekasnije. Posleizvrenjanaredbe READ*,A,B,C promenljivimaoznaenimsaA,BiCebitidodeljeneulaznevrednosti. Ovanaredbasesastojiodimenapromenljivekojojdodeljujemovrednost,znaka "=" i izraza koji je istog tipa kao i promenljiva kojoj se dodeljuje vrednost. Svim promenljivimikonstantamakojeuestvujuuizrazu,vrednostimorajubitidodeljene pre izvravanja ove naredbe. Promenljiva kojoj se dodeljuje vrednost takoe moe da uestvuje u izrazu. Ovom naredbom se izraunava vrednost izraza sa desne strane znaka "=" i izraunata vrednost se dodeljuje promenljivoj koja se nalazi sa leve strane znaka "=". Promenljiva ne mora biti istog tipa kao i izraz ako se radi o celobrojnomirealnomtipu.

Naredbazadodeljivanjevrednosti

Ukoliko je izraz celobrojnog tipa a promenljiva realnog izvrie se direktna konverzijavrednostiizrazaurealnitip.Uobratnomsluajuakojeizrazrealnogtipa apromenljivacelobrojnogondasekonverzijavritakotoseodrezultatodbijajaju decimalnecifre(naistinainkaokoddeljenjacelihbrojeva).Naprimer: posleizvravanjanaredbe A=B+C vrednostpromenljiveApostaejednakazbiruvrednostipromenljivihBiC; posleizvravanjanaredbe B=B+C vrednost promenljive B postae jednaka zbiru predhodne vrednosti promenljiveBivrednostipromenljiveA; posleizvravanjanaredbe A=2*I ako je I bilo jednako "2" vrednost promenljive A postae 4.0 (naravno ako prethodno A nije delarisana kao celobrojna promenljiva naredbom "INTEGER A" u tomsluajuvrednostpromenljiveApostae4); posleizvravanjanaredbe I=2*A akojeAbilojednako"2.3"vrednostpromenljiveIpostae4.

Naredbazaupravljanjetokomprograma
Ovonaredbaimavieoblikakojisunastaliurazliitimverzijamaprogramskog jezika FORTRAN. Mi emo ovde objasniti primenu tri najosnovnija oblika ove naredbe. napisanogizmeuzagradaiizvrnenaredbe.Akoiskazimavrednost".FALSE."onda se prelazi na prvu sledeu izvrnu naredbu, a ako ima vrednost ".TRUE." onda se prvo izvri naredba napisana iza logikog iskaza pa se prelazi na prvu sledeu izvrnunaredbu.Naprimerposleizvrenjanaredbe: IF(P.LE.2)P=P+1 ukoliko je vrednost promenljive P bila manja od, ona e se poveati za 1, a u suprotnomsluajuneesenitadogoditi. Ukoliko postoji potreba da se u sluaju tanosti iskaza izvri vie od jedne naredbe, i da se te naredbe preskau ukoliko je iskaz netaan onda e mo koristiti sledeioblikovenaredbe.

LogikaIFnaredba.Ovanaredbasesastojiodslubenerei"IF",iskaza

u vie programskih linija. Njen prvi rad se sastoji od slubene rei "IF", iskaza napisanogizmeuzagradaislubenerei"THEN".Unarednimredovimaseispisuje grupa izvrnih naredbi, a u poslednjem redu slubena re "ENDIF". Ako iskaz ima vrednost ".FALSE." onda se prelazi na prvu sledeu izvrnu naredbu, a ako ima vrednost ".TRUE." onda se prvo izvri grupa naredbi napisana izme "THEN" i "ENDIF" pa se prelazi na prvu sledeu izvrnu naredbu. Na primer posle izvrenja grupenaredbi: IF(P.LE.2)THEN P=P**2 PRINT*,P ENDIF

BlokovskaIFnaredba.Ovojeprvinaprimernaredbekojaseispisuje

ukoliko je vrednost promenljive P bila manja od 2, promenljivoj P bie dodeljena vrednostjednakakvadratuprethodnevrednostipromenljivePinjenanovavrednost ebitiodtampananaekranu,ausuprotnomsluajuneesenitadogoditi. Ukoliko postoji potreba da se u sluaju tanosti iskaza izvri jedna ili vie naredbi, a da ukoliko je iskaz netaan izvrava druga grupa naredbi onda e mo koristitisledeioblikovenaredbe.

iskaza napisanog izmeu zagrada i slubene rei "THEN" (kao i u prethodnom sluaju). U narednim redovima se ispisuje grupa izvrnih naredbe, u programsku linijiizanjihseunosislubenare"ELSE"izakojeseispisujedrugagrupanaredbi. Poslednjem red ove naredbe se satoji od slubene rei "ENDIF". Ako iskaz ima vrednost".TRUE."ondaseizvravagrupanaredbinapisanaizme"THEN"i"ELSE", a u suprotnom grupa naredbi napisana izmeu "ELSE" i "ENDIF" pa se prelazi na prvusledeuizvrnunaredbu.Naprimerposleizvrenjagrupenaredbi: IF(P.LE.2)THEN P=P**2 PRINT*,P ELSE P=P+1 ENDIF

RazgranataIFnaredba.Njenprviredsesastojiodslubenerei"IF",

ukoliko je vrednost promenljive P bila manja od 2, promenljivoj P bie dodeljena vrednostjednakakvadratuprethodnevrednostipromenljivePinjenanovavrednost e biti odtampana na ekranu, a u suprotnom sluaju vrednost promenljive P bie poveanaza1.

Naredbazaformiranjeciklusa

Ovanaredbasesatojiodslubenerei"DO",obelejajedneodizvrnihnaredbi koje se nalaze u narednim redovima, imena kontrolne promenljive (kontrolna promenljivamorabiticelobrojnogtipa)itricelobrojnaizrazanapisanauzagradama iodvojenazapetamaodkojihtreinijeobavezan. Ukolikosucelobrojniizrazikonstanteilipromenljive,zagradenemorajudase piu.Pritomejeprviodcelobrojnihizrazapoetnavrednostcelobrojnepromenljive, adruginjenoogranienje. Grupa naredbi koja poinje sa "DO" naredbom a zavrava se sa obeleenom izvrnomnaredbomijeobelejenavodiu"DO"naredbinazivaseciklus. Dabiseizbeglenekeodmoguihnedoumicakaoposlednjanaredbaciklusase obinouzimapraznanaredba"CONTINUE",toemoprihvatitikaostandard. Ukoliko je trei izraz, koji nazivamo korak brojake promenljive, izostavljen podrazumeva se da je on jednak jedinici. U izvrnim naredbama ciklusa moe se koristitikontrolnapromenljivaalijojsenesmemenjativrednost.

Naredbeciklusaseizvravajunasledeinain: dodele se vrednosti poetnoj vrednosti, ogranienju i koraku brojake promenljive; utvrdisedalijepoetnavrednostmanjaodogranienjaukolikojekorak pozitivan, odnosno da li je ogranienje manje od poetne vrednosti ukolikojekoraknegativan.Ukolikotajuslovnijeispunjenondaseprelazi naprvuizvrnunaredbuposleciklusa; ukoliko je prethodni uslov ispunjen kontrolnoj promenljivoj se dodeli poetnavrednost; izvresesvenaredbeciklusa; zatimsevrednostkontrolnepromenljiveuveazavrednostkoraka; ukolikojenovavrednostkontrolnepromenljiveizmeupoetnevrednosti iogranienjaopetseprelazinakorak4).Usuprotnomsluaju seprelazi naprvuizvrnunaredbuposleciklusa.

Dosadsmovidelidaseizvrnenaredbeprogramaizvravajuuredosledukojim su napisane (odozgo nadole) osim ako nije primenjena neka od naredbi za upravljanjemtokomprogramailinaredbazaformiranjeciklusa. Trea mogunost za izmenu redosleda izvravanja naredbi je naredba bezuslovnogprelaskakojasesatojiodslubenerei"GOTO"iobelejanaredbena kojuseprelaziposlenaredbebezuslovnogprelaska. Napominjemo da se praktino u svakom od programa DO, blokovska i razgranataIFnaredba,moguuspenorealizovatikorienjemsledeestrukturekoje sesastojiodsledeetrinaredbe: logikogIF, naredbedodelevrednostii naredbebezuslovnogprelaska. Meutim praksa je pokazala da esta upotreba naredbe bezuslovnog prelaska dovodi do nepreglednih programa u kojima je jako teko vriti ispravke. Mi se neemosasvimodreiprimeneovenaredbe,jeruFORTRANupostojeoblicitokova programa koji se bez nje ne mogu realizovati, ali emo voditi rauna o njenom disciplinovanomkorienju

Naredbabezuslovnogprelaska

Naredbazadodeluvrednostikonstantama

Ukolikoelimodanekojkonstantidodelimoimekojeesekoristitiuprogramu (toseobinoradiakokonstantaimaveibrojcifara),moemoprimenitinaredbuza dodelu vrednosti konstantama. Vrednosti dodeljene ovom naredbom se ne smeju menjatiutokuizvravanjaprograma. Ova naredba se sastoji od slubene rei PARAMETER i spiska definicija konstantinapisanogizmeuzagrada. Definicijakonstantejeizrazkojisesastojiodimenakonstante(kojemorabitiu skladusakonvencijomocelobrojnimirealnimslovima),znaka"="ivrednostikoja sedodeljujekonstanti.Ukolikospisakimavieodjednedefinicije,oneserazdvajaju zapetama. Naprimer,naredbom PARAMETER(PI=3.1415) PARAMETER(I=2,J=3,K=4) konstantiPIebitidodeljenavrednost3.1415,anaredbom ebitidodeljenevrednostikonstantamaI,JiK.

Sada emo dati pregled najvanijih standardnih funkcija implementiranih u programski jezik FORTRAN. Pri tome naglaavamo da na spisak standardnih funkcija nije kompletan. Ovde neemo izlagati sve mogunosti navedenih naredbi, vesamonajneophodnijeelementenjihovesintakse. AkojeFstandardnafunkcijaprogramskogjezikaFORTRANiXpromenljivaili izraz odgovarajueg tipa onda simbolom F(X) zadaje fortranskom prevodiocu da izrauna vrednost koju ima funkcija F za argument koji je jednak vrednosti promenljive(izraza)X. Osnovnestandardnefunkcijesu: ABS IABS DABS CABS SQRT apsolutnavrednostrealnogbroja; apsolutnavrednostcelogbroja; apsolutnavrednostrealnogbrojadvostruketanosti; moduokompleksnogbroja; kvadratnikorenizrealnogilicelogbroja;

Standarnefukcije

DSQRT kvadratnikorenizrealnogbrojadvostruketanosti; CSQRT kvadratnikorenizkompleksnogbroja;

EXP DEXP CEXP ALOG DLOG CLOG

eX,gdejeXrealniilicelibroj; eX,gdejeXrealnibrojdvostruketanosti; e^X,gdejeXkompleksnibroj; ln(X),gdejeXrealnibrojdvostruketanosti; ln(X),gdejeXrealnibrojdvostruketanosti; ln(X),gdejeXkompleksnibroj;

ALOG10 log10(X),gdejeXrealniilicelibroj; DLOG10 log10(X),gdejeXrealnibrojdvostruketanosti; SIN DSIN CSIN COS DCOS CCOS TAN DTAN sin(X),gdejeXrealniilicelibroj; sin(X),gdejeXrealnibrojdvostruketanosti; sin(X),gdejeXkompleksnibroj; cos(X),gdejeXrealniilicelibroj; cos(X),gdejeXrealnibrojdvostruketanosti; cos(X),gdejeXkompleksnibroj; tg(X),gdejeXrealniilicelibroj; tg(X),gdejeXrealnibrojdvostruketanosti;

ASIN DASIN ACOS ACOS ATAN SINH COSH TANH

arcsin(X),gdejeXrealniilicelibroj; arcsin(X),gdejeXrealnibrojdvostruketanosti; arccos(X),gdejeXrealniilicelibroj; arccos(X),gdejeXrealnibrojdvostruketanosti; arctg(X),gdejeXrealniilicelibroj; sinushiperbolijskish(X)=(eXeX)/2,gdejeXrealniilicelibroj; cosinushiperbolijskich(X)=(eX+eX)/2,gdejeXrealniilicelibroj; tangeshiperbolijskitgh(X)=(eXeX)/(eX+eX)gdejeXrealniilicelibroj.

DATAN arctg(X),gdejeXrealnibrojdvostruketanosti; DSINH sinushiperbolijski,gdejeXrealnibrojdvostruketanosti; DCOSH cosinushiperbolijski,gdejeXrealnibrojdvostruketanosti; DTANH tangeshiperbolijski,gdejeXrealnibrojdvostruketanosti; AIMAG imaginarnideokompleksnogbroja. REAL CONJG realnideokompleksnogbroja. konjugovanavrednostdatogkompleksnogbroja.

Naravnoovimnimnogoduimspiskomstandardnihfunkcijanebismomoglida obuhvatimo sve matematike funkcije koje nam mogu zatrebati prilikom pisanja programa.Zatojeostavljenoviemogunostikorisnikudasamdefiniefunkcijekoje nisuobuhvaeneovimspiskom. Najednostavnija od njih, je definisanje funkcije, funkcijskom naredbom, koju emorazmotritiuovomodeljku.Onasemoekoristitizadefinisanjefunkcijakojese mogupredstavitijednimizrazom. Sa mogunostima definicije ostalih funkcija upoznaemo se u odeljku koji je posveenpodprogramima. Dejstvo funkcijske naredbe je lokalno, to jest oznaka za funkciju definisanu funkcijskomnaredbom,vaisamouokviruprogramskejediniceukomejeuvedena. Funkcijska naredba se pie posle svih naredbi deklaracijapromenjljivih a pre prve izvrnenaredbeuprogramu. Ona poinje imenom nove funkcije, zatim se izmeu zagradi ispisuje lista argumenata (ako funkcija ima vie od jednog argumenta, njihove oznake se odvajajuzapetama),posleegasepieznak"="iizrazkojimjedefinisanafunkcija. Sve promenljive koje uestvuju u tom izrazu, moraju biti deklarisane u listi argumenata.

Funkcijskenaredbe

Naprimerfunkcijskomnaredbom: CTG(X)=1/TAN(X) definisanajefunkcijactg(X),kojasenadalje(uokviruprogramskejediniceukojojje uvedena)koristikaostandardnafunkcija. Prilikom korienja u programu argument funkcijske naredbe ne mora biti oznaenistokaoiunjenojdeklaraciji. Naprimer: Y=CTG(P+Q)*CTG(2*Y)+CTG(P) jesintaksnoispravnaprogramskalinija. Funkcijsku naredbu koja definie aritmetiku sredinu tri realna broja, moemo definisatisa: AS(P,Q,R)=(P+Q+R)/3

Indeksiranepromenljive

UprogramskomjezikuFORTRANpostojimogunostdasegrupipodatakaistog tipadazajednikoime.Tojerealizovanouvoenjemindeksiranihpromenljivih. One takoe mogu biti celobrojnog, realnog, kompleksnog, logikog ili znakovnogtipaiimenadobijajupoistimpravilimakaoipromenjljive. Podatak iz grupe koja obrazuje indeksiranu promenljivu je odreen imenom promenjljive(kojejezajednikozasvepodatke)isajednimilivieindeksakojisu napisaniizmeuzagrada. Indeks je pozitivan ceo broj. Ukoliko ima vie indeksa oni su razdvojeni zapetama.Maksimalandoputenbrojindeksajesedam. Promenljive koje imaju jedan indeks nazivaju se nizovi (ili vektori), a promenljivesadvaindeksamatrice.Elementiindeksiranepromenljivesezapisuju u susednim memorijskim registrima. Zbog toga je neophodno da se fortranskom prevodiocusaoptimaksimalnbrojlanovaistrukturaindeksiranepromenjljive,da bi rezervisao neophodan memorijski prostor za njihovo smetanje. To se realizuje naredbom deklaracije indeksirane promenjljive, koja se pie pre prve funkcijske naredbe, ili pre prve izvrne naredbe ukoliko programska jedinica ne sadri funkcijskenaredbe.

NaprimerakohoemodarezerviemoprostorzanizrealnihbrojevaAkojiima najvie50lanovatomoemopostiinaredbom: DIMENSIONA(50) REALA(50) ilinaredbom Ovim naredbama se zadaje fortranskom prevodiocu da za lanove niza A rezervie 50 susednih memorijkih registara i spremi ih za zapisivanje realnih brojeva. AkohoemodarezerviemoprostorzanizrealnihbrojevaLMkojiimanajvie 150 lanova, onda moramo da deklariemo i da su lanovi niza realni (a ne celi brojevi). Tomoemopostiinaredbom: REALLM(150) REALLM DIMENSIONLM(150) iligrupomnaredbi

U drugom sluaju prva naredba obavetava fortranski prevodilac da je promenjljivaLMrealnaadrugadajetonizkojieimatinajvie150lanova.

Akohoemodarezerviemoprostor zanizcelih brojevaLkojiima najvie50 lanovatomoemopostiinaredbom: DIMENSIONL(50) INTEGERL(50) ilinaredbom Ovim naredbama se zadaje fortranskom prevodiocu da za lanove niza L rezervie50susednihmemorijkihregistaraispremiihzazapisivanjecelihbrojeva. AkohoemodarezerviemoprostorzanizcelihbrojevaAkojiimanajvie150 lanova,ondamoramodadeklariemoidasulanovinizaceli(anerealnibrojevi). Topostiemopostiinaredbom: INTEGERA(150) INTEGERA DIMENSIONA(150) iligrupomnaredbi

U drugom sluaju prva naredba obavetava fortranski prevodilac da je promenljivaAcelobrojnaadrugadajetonizkojieimatinajvie150lanova.

Ako hoemo da rezerviemo prostor za matricu realnih brojeva A koji ima najvie50vrstai20kolonatomoemopostiinaredbom: DIMENSIONA(50,20) REALA(50,20) ilinaredbom Ako hoemo da rezerviemo prostor za matricu realnih brojeva KM koja ima najvie 150 vrsta i 100 kolona, onda moramo da deklariemo i da su elementi matricerealni(anecelibrojevi).Tomoemopostiinaredbom: REALKM(150,100) REALKM DIMENSIONKM(150,150) iligrupomnaredbi

AkohoemodarezerviemoprostorzamatricucelihbrojevaLkojaimanajvie 50vrstai20kolonatomoemopostiinaredbom: DIMENSIONL(50,20) INTEGERL(50,20) ilinaredbom

AkohoemodarezerviemoprostorzamatricucelihbrojevaAkojiimanajvie 150vrstai100kolona,ondamoramodadeklariemoidasulanovimatriceceli(a nerealnibrojevi). Tomoemopostiinaredbom: INTEGERA(150,100) INTEGERA DIMENSIONA(150,100) iligrupomnaredbi

Na slian nain se mogu deklarisati i indeksirane promenljive realnog tipa dvostruketanosti,kompleksnog,logikogiliznakovnogtipa. Naredbom DOUBLEPRECISIONF(50,20) rezerviemoprostorzamatricuFkojaimanajvie50vrstai20kolona,ijielementi surealnibrojevidvostruketanosti. Istosemoepostiigrupomnaredbi: DOUBLEPRECISIONF DIMENSIONF(50,20)

Naredbom COMPLEXZ(50,20) rezerviemoprostorzamatricuZkojaimanajvie50vrstai20kolona,ijielementi sukompleksnibrojevi.Istosemoepostiigrupomnaredbi: COMPLEXZ DIMENSIONZ(50,20) LOGICALB(50,20)

Naredbom rezerviemoprostorzamatricuBkojaimanajvie50vrstai20kolona,ijielementi sulogikogtipa.Istosemoepostiigrupomnaredbi: LOGICALB(50,20) DIMENSIONB(50,20) CHARACTER*3C(150)

Naredbom rezerviemo prostor za niz C koja ima najvie 150 lanova, iji elementi su nizovi kojisesastojeodtrisimbola.Istosemoepostiigrupomnaredbi: CHARACTER*3C DIMENSIONC(150)

Uitavanjeindeksiranihpromenljivih

Uitavanje indeksiranih promenljivih se moe izvriti na isti nain kao i uitavanje obinih promenljivih, pri emu se za element indeksirane promenjljive, koji elimo da uitamo, navodi ime i celobrojni izrazi kojima su definisani njegovi indeksi.Naredbe: READ*,A(2,3) READ*,A(I,J) READ*,A(I+1,3)

susintaksnoispravnozapisane. Pored toga moemo organizovati unos svih lanova indeksirane promenjljive jednom naredbom. Na primer, ako elimo da uitamo lanove niza A koji ima N elemenatatomoemouraditinaredbom READ*,(A(I),I=1,N) kojaimaistodejstvokaogrupanaredbi DO5I=1,N READA(I) 5CONTINUE

Ako elimo da unesemo matricu A koja ima M vrsta i N kolona to moemo postiinaredbom READ*,((A(I,J),J=1,N),I=1,M) READ*,((A(I,J),I=1,M),J=1,N) kojomseorganizujeunospovrstama,ilinaredbom kojomseorganizujeunospokolonama.

Prikazivanjevrednostiindeksiranihpromenljivih

Prikazivanje vrednosti indeksiranihpromenljivih se moe izvriti na isti nain kao i prikazivanje vrednosti obinih promenljivih, pri emu se za element indeksirane promenjljive, koji elimo da prikazemo, navodi ime i celobrojni izrazi kojimasudefinisaninjegoviindeksi.

Naredbe: PRINT*,A(2,3) PRINT*,A(I,J) PRINT*,A(I+1,3) susintaksnoispravnozapisane. Pored toga moemo organizovati ispisivane svih lanova indeksirane promenljivejednomnaredbom. Na primer, ako elimo da prikaemo lanove niza A koji ima N elemenata to moemouraditinaredbom PRINT*,(A(I),I=1,N) DO45I=1,N PRINTA(I) 45CONTINUE kojaimaistodejstvokaogrupanaredbi

Ako elimo da prikaemo matricu A koja ima M vrsta i N kolona to moemo postiinaredbom PRINT*,((A(I,J),J=1,N),I=1,M)

Upredhodnimodeljcimajeobjanjenunosulaznihpodatakaprekotastature.To moe biti jako veliki posao u sluaju kada je broj podataka veliki (na primer unoenje niza koji se sastoji od 10000 realnih brojeva). U takvim situacijama je korisno osloboditi operatera koji nadgleda izvravanje programa od obaveze da unosi podatke, i taj posao (koji se svodi na poznavanje daktilografije) prebaciti na manje kvalifikovanu radnu snagu. Podaci koji se unose u raunar nezavisno od izvravanjaprograma,smetajuseuposebneadresabilnememorijskejedinicekoje se nazivaju datoteke. Imenu datoteke koje dajemo u skladu sa ogranienjima operativnog sistema, obino se pridruuje ekstenzija ".DAT". U tekstu koji sledi upoznaemosesamosatekstualnimdatotekama,ukojesepodaciunosekaonizovi znakova, a itaju se prema redosledu unoenja, bez ikavikh mogunosti direktnog pretraivanja.Datotekesemogutakoekoristitiizazapisivanjeizlaznihpodatakaiz programa. Pre upotrebe neke datoteke u programu, moramo da najavimo fortranskom prevodiocudaemojekoristiti.Toserealizujenaredbom"otvaranja"datotekekoja zapoinje slubenom rei "OPEN", zatim se izmeu zagrada navode razdvojeni zapetama oznaka datoteke (ceo broj), ime i status datoteke. Status moe da bude "NEW"ukolikosedatotekaformiraprilikomizvravanjaprogramaili"OLD"ukoliko seradiodatotecikojajepostojalaprepoetkaizvravanjaprograma.

Datoteke

Na primer, ukoliko elimo da prilkom izvravanja programa formiramo novu datoteku koju elimo da nazovemo "A.DAT" i da je oznaimo brojem "3", to postiemonaredbom: OPEN(UNIT=3,FILE='A.DAT',STATUS='NEW') Napominjemo da bi neki od novijih prevodilaca podrali i slobodniju strukturu naredbe: OPEN(3,FILE='A.DAT') Ukolikoelimodaprilkomizvravanjaprogramakoristimopostojeudatoteku kojajenazvana"B.DAT"idajeoznaimobrojem"12",topostiemonaredbom: OPEN(UNIT=12,FILE='B.DAT',STATUS='OLD') Napominjemo da bi neki od novijih prevodilaca podrali i slobodniju strukturu naredbe: OPEN(12,FILE='B.DAT') Preporuljivo je (iako ne i obavezno) da se datoteke otvorene u toku izvravanjaprograma"zatvore"prenjegovogkraja.Tosepostienaredbomkojase sastoji od slubene rei CLOSE i oznake datoteke navedene u zagradi. Na primer datoteku"B.DAT"otvorenuuprethodnomtekstu,emozatvoritinaredbom CLOSE(12)

Naredba za unos podataka iz datoteke se sastoji od slubene rei "READ", otvorenezagrade,oznakedatoteke,zapete,znaka"*,"kojioznaavadasuvrednosti izlaznih promenljivih u standardnom formatu, zatvorene zagrade i liste ulaznih promenjlivih, koja se formira po istim pravilima kao i kod prethodno razmatranog oblikanaredbe"READ". Naprimernaredba READ(12,*)(X(I),I=1,N) zadaje fortranskom prevodiocu da iz datoteke oznaene brojem 12 uita prvih N lanovanizaX. Naredba za zapisivanje podataka u datoteku se sastoji od slubene rei "WRITE",otvorenezagrade,oznakedatoteke,zapete,znaka"*,"kojioznaavadasu vrednosti izlaznih promenjlivih u standardnom formatu, zatvorene zagrade i liste izlaznih promenjlivih, koja se formira po istim pravilima kao i kod prethodno razmatranenaredbe"PRINT". Naprimernaredba WRITE(12,*)(X(I),I=1,N) zadajefortranskomprevodiocudaudatotekuoznaenubrojem12unesevrednosti prvihNlanovanizaX.

Podprogrami
Jednaodosnovnihmetodazareavanjejednogsloenogproblema,sesastojiu tome da se poetni problem razloi na jednostavnije probleme, koji mogu da se parcijalno reavaju, i da se na kraju dobijena parcijalna reenja sastave u reenje poetnogproblema. SledeituidejuuprogramskomjezikuFORTRANjerealizovanamogunostda sepostupcizareavanjeparcijalnihproblemaisprogramirajuuposebneprogramske jedinicepodprograme. Pri tome se jednom napisan podprogram moe koristiti u razliitim programimaipodprogramima. UFORTRANupostojetrivrstepodprograma: funkcijskenaredbe, funkcijskipodprogramii optipodprogrami. Nain deklarisanja i korienja funkcijskih naredbi smo objasnili u II.4. Podsetiemo se samo da je dejstvo funkcijske naredbe lokalno, to jest oznaka za funkcijudefinisanufunkcijskomnaredbom,vaisamouokviruprogramskejedinice ukomejeuvedena.

Funkcijskipodprogrami Funkcijski podprogrami su uvedeni u FORTRAN, da bi se ostavila mogunost korisniku, da sam uvede nove funkcije i koristi ih kao standardne. To nije uvek mogue uraditi korienjem funkcijske naredbe, kojom se mogu definisati samo funkcijekojeseizraavajujednimizrazom.Njimasemogurealizovatialgoritmikoji imajutanojedanizlaznipodatak. Funkcijski podprogram poinje slubenom rei FUNCTION iza koje sledi ime funkcijskog podprograma i lista ulaznih argumenata, odvojenih zapetama koja se ispisujeizmeu zagrada.Posletogasenaredbeispisuju premapravilima kojavae za pisanje programa. Naredba koja se poslednja izvrava u funkcijskom podprogramu je "RETURN". Ona obavetava fortranski prevodilac da moe da preuzme vrednost izlazne promenljive. Funkcijski podprogram se zavrava naredbom"END". U toku izvravanja funkcijskog podprograma mora se bar jednom dodeliti vrednost promenjljivoj koja nosi isto ime kao i podprogram. To je jedina izlazna veliinaizfunkcijskogprograma. Nije preporuljivo da se u funkcijskom podprogramu koriste naredbe za unos podatakaiizdavanjerezultata.Vrednostizlaznogrezultatajedostupnaprekoimena podprogramaavrednostiulaznihargumenataprekolisteformalnihparametara.

NaprimerakoelimodaufunkcijskompodprogramunazvanomGkoristimotri ulazne realne promenljive, ako nema drugih ulaznih promenjljivih, dovoljno je da ispiemoprvunaredbupodprograma FUNCTIONG(A,B,C) ifunkcijskipodprogramepreuzetinjihovevrednostikadamutozadaprogramska jedinicakojagakoristi. Ukolikosuulazneveliineufunkcijskipodprogram"C"realnakvadranamatrica A i njen red N (N 50) onda, ako nema drugih ulaznih promenjljivih, moemo podprogramzapoetisa: FUNCTIONC(N,A) REALA(50,50) gde u prvoj naredbi saoptavamo prevodiocu da su ulazne promenljive oznaenesa"A"i"N",audrugojdeklariemodaje"A"matricakojanemavieod50 vrstai50kolona. Funkcijski podprogram se u okviru drugih programskih jedinica poziva kao i funkcijska naredba navoenjem imena i liste stvarnih parametara. Tada stvarni parametrimorajubitiuistomredosleduiistogtipa,kaoiformalniparametriuprvoj naredbifunkcijskogpodprograma(alimogudaimajurazliitaimena).

Optipodprogrami U sluajevima kada je potrebno da podprogram ima vie od jedne izlazne veliinekoristeseoptipodprogrami. Opti podprogram poinje slubenom rei SUBROUTINE iza koje sledi ime funkcijskogpodprogramailistaulaznihiizlaznihargumenata,odvojenihzapetama kojeseispisujeizmeuzagrada.Posletogasenaredbeispisujupremapravilimakoja vaezapisanjeprograma. Naredba kojaseposlednjaizvravauoptempodprogramu je "RETURN".Ona obavetavafortranskiprevodilacdamoedapreuzmevrednostizlaznepromenljive. Optipodprogramsezavravanaredbom"END". Pravila za unos ulaznih podataka su ista kao i kod fukcijskih podprograma. Izlaznimpromenjljivimsedodeljujuvrednostiutokuizvravanjapodprograma. Opti podprogram se u okviru drugih programskih jedinica poziva slubenom rei"CALL",izakojesenavodinjegovoimeilistestvarnihparametara.Tadastvarni parametrimorajubitiuistomredosleduiistogtipa,kaoiformalniparametriuprvoj naredbioptegpodprograma(alimogudaimajurazliitaimena).

Zamenavrednostirealnihpromenljivih SastavitiprogramkojizamenjujevrednostirealnimpromenljivimAiB,kojese uitavajusatastature. PROGRAMZAMENA READ*,A,B C=A A=B B=C PRINT*,A,B END

Zamenavrednosticelobrojnihpromenljivih SastavitiprogramkojizamenjujevrednosticelobrojnihpromenljivihAiB,koje seuitavajusatastature. PROGRAMZAMENA INTEGERA,B READ*,A,B C=A A=B B=C PRINT*,A,B END

Izraunavanjefaktorijela DatjeprirodnibrojN.SastavitiprogramkojiizraunavaN!BrojNunetipreko tastature. PROGRAMFAKTOR READ*,N NF=1 DO5I=2,N NF=NF*I 5CONTINUE PRINT*,NF END

Izraunavanjebinomnihkoeficijenata DatisuprirodnibrojeviNiK(NK).Sastavitiprogramkojiizraunavabinomni koeficijenat$\dsize{\binomnk}$.BrojeveNiKunetiprekotastature. PROGRAMBINOMK READ*,N,K L1=1 L2=1 DO5I=1,K L2=L2*(NI+1) L1=L1*I 5CONTINUE L2=L2/L1 PRINT*,L2 END

Zbirlanovanizacelihbrojeva Dat je prirodan broj N (N 1000) i niz celih brojeva X(I), I = 1, N. Sastaviti programkojiodreujezbirlanovaniza.BrojNilanovenizaunetiprekotastature. PROGRAMSNIZC INTEGERX(1000) READ*,N L=0 DO5I=1,N PRINT*,'X(',I,')=' READ*,X(I) L=L+X(I) 5CONTINUE PRINT*,L END

Zbirlanovanizarealnihbrojeva Dat je prirodan broj N (N 1000) i niz realnih brojeva X(I), I=1,N. Sastaviti programkojiodreujezbirlanovaniza.BrojNilanovenizaunetiprekotastature. PROGRAMSNIZR DIMENSIONX(1000) READ*,N S=0 DO5I=1,N PRINT*,'X(',I,')=' READ*,X(I) S=S+X(I) 5CONTINUE PRINT*,S END

Zbirlanovanizakompleksnihbrojeva Dat je prirodan broj N (N 1000) i niz kompleksnih brojeva Z(I), I =1, N. Sastavitiprogramkojiodreujezbirlanovaniza.BrojNilanovenizaunetipreko tastature. PROGRAMSNIZK COMPLEXZ(1000),S READ*,N S=0 DO5I=1,N PRINT*,'Z(',I,')=' READ*,Z(I) S=S+Z(I) 5CONTINUE PRINT*,S END

Proizvodlanovanizacelihbrojeva Dat je prirodan broj N (N 1000) i niz celih brojeva X(I), I = 1, N. Sastaviti program koji odreuje proizvod lanova niza. Broj N i lanove niza uneti preko tastature. PROGRAMPRONIZC INTEGERX(1000) READ*,N L=1 DO5I=1,N PRINT*,'X(',I,')=' READ*,X(I) L=L*X(I) 5CONTINUE PRINT*,L END

Proizvodlanovanizarealnihbrojeva Dat je prirodan broj N (N 1000) i niz realnih brojeva X(I), I = 1, N. Sastaviti program koji odreuje proizvod lanova niza. Broj N i lanove niza uneti preko tastature. PROGRAMPRONIZR REALX(1000) READ*,N P=1 DO5I=1,N PRINT*,'X(',I,')=' READ*,X(I) P=P*X(I) 5CONTINUE PRINT*,P END

Proizvodlanovanizakompleksnihbrojeva Dat je prirodan broj N (N 1000) i niz kompleksnih brojeva X(I), I = 1, N. Sastaviti program koji odreuje proizvod lanova niza. Broj N i lanove niza uneti prekotastature. PROGRAMPRONIZK COMPLEXZ,X(1000) READ*,N Z=1 DO5I=1,N PRINT*,'X(',I,')=' READ*,X(I) Z=Z*X(I) 5CONTINUE PRINT*,Z END

Aritmetikasredinanizarealnihbrojeva Dat je prirodan broj N (N 1000) i niz realnih brojeva X(I), I = 1, N. Sastaviti program koji odreuje aritmetiku sredinu lanova niza. Broj N uneti preko tastaturealanovenizaizdatotekeNIZ.DAT. PROGRAMASRNIZ REALX(1000) READ*,N OPEN(UNIT=1,FILE='NIZ.DAT',STATUS='OLD') READ(1,*)(X(I),I=1,N) AS=0 DO5I=1,N AS=AS+X(I) 5CONTINUE AS=AS/N PRINT*,AS CLOSE(1) END

Aritmetikasredinanizacelihbrojeva Dat je prirodan broj N (N 1000) i niz celih brojeva X(I), I = 1, N. Sastaviti program koji odreuje aritmetiku sredinu lanova niza. Broj N uneti preko tastaturealanovenizaizdatotekeNIZ.DAT. PROGRAMASCNIZ INTEGERX(1000) READ*,N OPEN(UNIT=1,FILE='NIZ.DAT',STATUS='OLD') READ(1,*)(X(I),I=1,N) AS=0 DO5I=1,N AS=AS+X(I) 5CONTINUE AS=AS/N PRINT*,AS CLOSE(1) END

Aritmetikasredinanizakompleksnihbrojeva Dat je prirodan broj N (N 1000) i niz kompleksnih brojeva X(I), I = 1, N. SastavitiprogramkojiodreujeAritmetikusredinulanovaniza.BrojNunetipreko tastaturealanovenizaizdatotekeNIZ.DAT. PROGRAMASKNIZ COMPLEXAS,X(1000) READ*,N OPEN(UNIT=1,FILE='NIZ.DAT',STATUS='OLD') READ(1,*)(X(I),I=1,N) AS=0 DO5I=1,N AS=AS+X(I) 5CONTINUE AS=AS/N PRINT*,AS CLOSE(1) END

Najveielementunizu Dat je prirodan broj N (N 1000) i niz realnih brojeva X(I), I = 1, N. Sastaviti program koji odreuje najvei element u nizu i njegov indeks. Broj N uneti preko tastaturealanovenizaizdatotekeNIZ.DAT. PROGRAMMAXNIZ REALX(1000) READ*,N OPEN(UNIT=1,FILE='NIZ.DAT',STATUS='OLD') READ(1,*)(X(I),I=1,N) L=1 DO5I=2,N IF(X(I).GT.X(L))L=I 5CONTINUE PRINT*,L,X(L) CLOSE(1) END

Najmanjielementunizu Dat je prirodan broj N (N 1000) i niz realnih brojeva X(I), I = 1, N. Sastaviti programkojiodreujenajmanjielementunizuinjegovindeks.BrojNunetipreko tastaturealanovenizaizdatotekeNIZ.DAT. PROGRAMMINNIZ REALX(1000) READ*,N OPEN(UNIT=1,FILE='NIZ.DAT',STATUS='OLD') READ(1,*)(X(I),I=1,N) L=1 DO5I=2,N IF(X(I).LT.X(L))L=I 5CONTINUE PRINT*,L,X(L) CLOSE(1) END

Ureivanjenizaurastuiniz Dat je prirodan broj N (N 1000) i niz realnih brojeva X(I), I = 1, N. Sastaviti programkojiUreujedatinizurastuiniz.BrojNunetiprekotastaturealanove nizaizdatotekeNIZ.DAT.UreeninizzapisatiudatotekuUNIZ.DAT.
PROGRAMRASNIZ REALX(1000) READ*,N OPEN(UNIT=1,FILE='NIZ.DAT',STATUS='OLD') READ(1,*)(X(I),I=1,N) DO10I=N,2,1 DO5J=1,(I1) IF(X(J).GT.X(J+1))THEN C=X(J) X(J)=X(J+1) X(J+1)=C ENDIF 5CONTINUE 10CONTINUE OPEN(UNIT=2,FILE='UNIZ.DAT',STAUS='NEW') WRITE(2,*)(X(I),I=1,N) CLOSE(1) CLOSE(2) END

Ureivanjenizauopadajuiniz Dat je prirodan broj N (N 1000) i niz realnih brojeva X(I), I = 1, N. Sastaviti programkojiUreujedatinizuopadajuiniz.BrojNunetiprekotastaturealanove nizaizdatotekeNIZ.DAT.UreeninizzapisatiudatotekuUNIZ.DAT.
PROGRAMOPSNIZ REALX(1000) READ*,N OPEN(UNIT=1,FILE='NIZ.DAT',STATUS='OLD') READ(1,*)(X(I),I=1,N) DO10I=N,2,1 DO5J=1,(I1) IF(X(J).LT.X(J+1))THEN C=X(J) X(J)=X(J+1) X(J+1)=C ENDIF 5CONTINUE 10CONTINUE OPEN(UNIT=2,FILE='UNIZ.DAT',STAUS='NEW') WRITE(2,*)(X(I),I=1,N) CLOSE(1) CLOSE(2) END

Sumadvematrice Datisuprirodnibrojevim,n100imatricerealnihbrojevaA,formatamxni B,formatamxn.SastavitiprogramkojiodreujematricuC=A+B.MatricuAunetiiz datotekeA.DAT,matricuBizdatotekeB.DAT,amatricuCzapisatiudatotekuC.DAT. Brojeveminunetiprekotastature.


PROGRAMSUMMAT REALA(100,100),B(100,100),C(100,100) READ*,M,N OPEN(UNIT=1,FILE='A.DAT',STATUS='OLD') OPEN(UNIT=2,FILE='B.DAT',STATUS='OLD') OPEN(UNIT=3,FILE='C.DAT',STATUS='NEW') READ(1,*)((A(I,J),J=1,N),I=1,M) READ(2,*)((B(I,J),J=1,N),I=1,M) DO10I=1,M DO5J=1,K C(I,J)=A(I,L)+B(L,J) 5CONTINUE 10CONTINUE WRITE(3,*)((C(I,J),J=1,N),I=1,M) CLOSE(1) CLOSE(2) CLOSE(3) END

Proizvoddvematrice Datisuprirodnibrojevim,n,k100imatricerealnihbrojevaA,formatamxni B,formatanxk.SastavitiprogramkojiodreujematricuC=AB.MatricuAunetiiz datotekeA.DAT,matricuBizdatotekeB.DAT,amatricuCzapisatiudatotekuC.DAT. Brojevem,nikunetiprekotastature. PROGRAMPROMAT REALA(100,100),B(100,100),C(100,100) READ*,M,N,K OPEN(UNIT=1,FILE='A.DAT',STATUS='OLD') OPEN(UNIT=2,FILE='B.DAT',STATUS='OLD') OPEN(UNIT=3,FILE='C.DAT',STATUS='NEW') READ(1,*)((A(I,J),J=1,N),I=1,M) READ(2,*)((B(I,J),J=1,K),I=1,N) DO15I=1,M DO10J=1,K C(I,J)=0 DO5L=1,N C(I,J)=C(I,J)+A(I,L)*B(L,J) 5CONTINUE

10CONTINUE 15CONTINUE WRITE(3,*)((C(I,J),J=1,K),I=1,M) CLOSE(1) CLOSE(2) CLOSE(3) END

Rastojanjedvandimenzionalnavektora Dat je prirodni broj n n 50 i dva ndimenzionalna vektora X i Y svojim koordinatamaX(i)iY(i),i=1,n.Sastavitiprogramkojiodreujenjihovorastojanje. Koordinate vektora X uneti iz datoteke X.DAT; koordinate vektora Y uneti iz datotekeY.DAT;brojnunetiprekotastature. PROGRAMRASVEK REALX(50),Y(50) READ*,N OPEN(UNIT=1,FILE='A.DAT',STATUS='OLD') OPEN(UNIT=2,FILE='B.DAT',STATUS='OLD') READ(1,*)(X(I),I=1,N) READ(2,*)(Y(I),I=1,N) R=0 DO5I=1,N R=R+(X(I)Y(I))**2 5CONTINUE R=SQRT(R) PRINT*,R CLOSE(1) CLOSE(2) END

Izraunavanjefaktorijela DatjeprirodnibrojN.SastavitifunkcijskipodprogramkojiizraunavaN!. FUNCTIONNF(N) NF=1 DO5I=2,N NF=NF*I 5CONTINUE RETURN END

Izraunavanjebinomnihkoeficijenata Dati su prirodni brojevi N i K (N\ge K). Sastaviti funkcijski podprogram koji izraunavabinomnikoeficijenat\dsize{\binomnk}. FUNCTIONBINOMK(N,K) INTEGERBINOMK L1=1 L2=1 DO5I=1,K L2=L2*(NI+1) L1=L1*I 5CONTINUE L2=L2/L1 BINOMK=L2 RETURN END

Aritmetikasredinanizacelihbrojeva Dat je prirodan broj N (N 1000) i niz celih brojeva X(I), I=1,N. Sastaviti funkcijskipodprogramkojiodreujearitmetikusredinulanovaniza. FUNCTIONAS(N,X) INTEGERX(1000) AS=0 DO5I=1,N AS=AS+X(I) 5CONTINUE AS=AS/N RETURN END

Aritmetikasredinanizarealnihbrojeva Dat je prirodan broj N (N 1000) i niz realnih brojeva X(I), I=1,N. Sastaviti funkcijskipodprogramkojiodreujearitmetikusredinulanovaniza. FUNCTIONAS(N,X) REALX(1000) AS=0 DO5I=1,N AS=AS+X(I) 5CONTINUE AS=AS/N RETURN END

Aritmetikasredinanizakompleksnihbrojeva DatjeprirodanbrojN(N1000)inizkompleksnihbrojevaX(I),I=1,N.Sastaviti funkcijskipodprogramkojiodreujearitmetikusredinulanovaniza. FUNCTIONAS(N,X) COMPLEXX(1000) AS=0 DO5I=1,N AS=AS+X(I) 5CONTINUE AS=AS/N RETURN END

Ureivanjenizaurastuiniz DatjeprirodanbrojN(N1000)inizrealnihbrojevaX(I),I=1,N.Sastavitiopti podprogramkojiureujedatinizurastuiniz. SUBROUTINERASNIZ(N,X) REALX(1000) DO10I=N,2,1 DO5J=1,(I1) IF(X(J).GT.X(J+1))THEN C=X(J) X(J)=X(J+1) X(J+1)=C ENDIF 5CONTINUE 10CONTINUE RETURN END

Ureivanjenizauopadajuiniz DatjeprirodanbrojN(N1000)inizrealnihbrojevaX(I),I=1,N.Sastavitiopti podprogramkojiureujedatinizurastuiniz. SUBROUTINERASNIZ(N,X) REALX(1000) DO10I=N,2,1 DO5J=1,(I1) IF(X(J).LT.X(J+1))THEN C=X(J) X(J)=X(J+1) X(J+1)=C ENDIF 5CONTINUE 10CONTINUE RETURN END

Sumadvematrice Datisuprirodnibrojevim,n100imatricerealnihbrojevaAiBformatamxn. SastavitioptipodprogramkojiodreujematricuC=A+B. SUBROUTINESUMMAT(M,N,A,B,C) REALA(100,100),B(100,100),C(100,100) DO10I=1,M DO5J=1,N C(I,J)=A(I,J)+B(I,J) 5CONTINUE 10CONTINUE RETURN END

Proizvoddvematrice Datisuprirodnibrojevim,n,k100imatricerealnihbrojevaA,formatamxni B,formatanxk.SastavitioptipodrogramkojiodreujematricuC=AB. SUBROUTINEPROMAT(M,N,K,A,B,C) REALA(100,100),B(100,100),C(100,100) DO15I=1,M DO10J=1,K C(I,J)=0 DO5L=1,N C(I,J)=C(I,J)+A(I,L)*B(L,J) 5CONTINUE 10CONTINUE 15CONTINUE RETURN END

Najveielementumatrici Dati su prirodani brojevi m,n 50 i matrica A formata m x n. Sastaviti opti podprogramkojiodreujevrednostikoordinatenajveegelementaumatriciA. SUBROUTINEMAXMAT(M,N,A,K,L,P) REALA(50,50) K=1 L=1 DO5I=1,M DO10J=1,N IF(A(I,J).GT.A(K,L))THEN K=I L=J ENDIF 5CONTINUE 10CONTINUE P=A(K,L) RETURN END

Rastojanjedvandimenzionalnavektora Dat je prirodni broj n n 50 i dva ndimenzionalna vektora X i Y svojim koordinatama X(i) i Y(i), i = 1, n. Sastaviti funkcijski podprogram koji odreuje njihovorastojanje. FUNCTIONRASVEK(N,X,Y) REALX(50),Y(50) RASVEK=0 DO5I=1,N RASVEK=RASVEK+(X(I)Y(I))**2 5CONTINUE RASVEK=SQRT(RASVEK) RETURN END

Tragmatrice Dat je prirodan broj n 50 i kvadratna matrica A reda n. Sastaviti funkcijski podprogramkojiodreujetragmatriceA:tr(A)=a11+a22+a33+...+ann, FUNCTIONTR(N,A) REALA(50,50) TR=0 DO5I=1,N TR=TR+A(I,I) 5CONTINUE RETURN END

Transponovamatrica Dati su prirodani brojevi m, n 50 i matrica A formata m x n. Sastaviti opti podprogramkojiodreujematricuB=AT. SUBROUTINETRANSMAT(N,A,B) REALA(50,50),B(50,50) DO5I=1,N DO5J=1,M B(I,J)=A(J,I) 5CONTINUE 10CONTINUE RETURN END

ntistepenmatrice Dati su prirodni brojevi k,n 50 i kvadratna matrica A reda n sastaviti opti podprogramzaodreivanjematriceB=AkgdejeAk=E(Ejejedininamatricareda n),zak=0iAk=Ak1Azak>0.UpodprogramukoristitipodprogramIV.5.
SUBROUTINESTPMAT(N,K,A,B) REALA(50,50),B(50,50),C(50,50) DO10I=1,N DO5J=1,N B(I,J)=0 IF(I.EQ.J)B(I,J)=1 5CONTINUE 10CONTINUE DO25L=1,K CALLPROMAT(N,N,N,A,B,C) DO20I=1,N DO15J=1,N B(I,J)=C(I,J) 15CONTINUE 20CONTINUE 25CONTINUE RETURN END

Izraunavanjeimplikacije Dati su logike promenljive P i Q. Sastaviti funkcijski podprogram koji izraunavaimplikacijuP Q. FUNCTIONIMPLIC(P,Q) LOGICALP,Q,IMPLIC IMPLIC=.NOT.P.OR.Q RETURN END

Izraunavanjeekvivalencije Dati su logike promenljive P i Q. Sastaviti funkcijski podprogram koji izraunavaekvivalencijuP Q. FUNCTIONEQV(P,Q) LOGICALP,Q,EQW EQW=(P.AND.Q).OR.(.NOT.P.AND..NOT.Q) RETURN END

Izraunavanjevrednostieferoveoperacije Dati su logike promenljive P i Q. Sastaviti funkcijski podprogram koji izraunavavrednosteferoveoperacijePQ. FUNCTIONSHEFER(P,Q) LOGICALP,Q,SHEFER SHEFER=.NOT.(P.AND.Q) RETURN END IzraunavanjevrednostiPirsoveoperacije Dati su logike promenljive P i Q. Sastaviti funkcijski podprogram koji izraunavavrednostPirsoveoperacijePQ. FUNCTIONPIRS(P,Q) LOGICALP,Q,PIRS PIRS=.NOT.(P.OR.Q) RETURN END

Inverznarelacija Na konanom skupu A= a1, ...,an koji se sastoji od n 50 elemenata zadata je relacija A2celobrojnommatricomRposledeempravilu:R(i,j)=1akoje:aiaj; 0 u suprotnom sluaju. Sastaviti program koji odreuje matricu S koja odgovara relaciji=1.Brojnunetiprekotastature;matricuRizdatotekeR.DAT;matricuS zapisatiudatotekuS.DAT. PROGRAMINVREL INTEGERR(50,50),S(50,50) OPEN(UNIT=1,FILE='R.DAT',STATUS='OLD') OPEN(UNIT=2,FILE='S.DAT',STATUS='NEW') READ*,N READ(1,*)((R(I,J),J=1,N),I=1,N) DO10I=1,N DO5J=1,N S(I,J)=R(J,I) 5CONTINUE 10CONTINUE WRITE(2,*)((S(I,J),J=1,N),I=1,N) CLOSE(1) CLOSE(2) END

Kompozicijarelacija Na konanom skupu A = a1, ...,an koji se sastoji od n 50 elemenata zadate su relacije, A2celobrojnimmatricamaRiSposledeimpravilima: R(i,j)=1akoje:aiaj;0usuprotnom; S(i,j)=1akoje:aiaj;0usuprotnom. Sastaviti program koji odreuje matricu T koja odgovara relaciji = . Broj n uneti preko tastature; matricu R iz datoteke R.DAT; matricu S iz datoteke S.DAT; matricuTzapisatiudatotekuT.DAT. PROGRAMKOMREL INTEGERR(50,50),S(50,50),T(50,50) OPEN(UNIT=1,FILE='R.DAT',STATUS='OLD') OPEN(UNIT=2,FILE='S.DAT',STATUS='OLD') OPEN(UNIT=3,FILE='T.DAT',STATUS='NEW') READ*,N READ(1,*)((R(I,J),J=1,N),I=1,N) READ(2,*)((S(I,J),J=1,N),I=1,N) DO15I=1,N DO10J=1,N

T(I,J)=0 L=0 5IF(L.EQ.N)GOTO15 L=L+1 IF((R(I,L).EQ.0).OR.(S(L,J).EQ.0))GOTO5 T(I,J)=1 10CONTINUE 15CONTINUE WRITE(3,*)((T(I,J),J=1,N),I=1,N) CLOSE(1) CLOSE(2) CLOSE(3) END

Metodapolovljenjaintervala Dati su realni brojevi E > 0, a i b (a < b), i funkcija f, koja ispunjava uslov f(a)*f(b) < 0. Sastaviti program koji nalazi priblino reenje jednaine f(x) = 0 metodom polovljenja intervala. Izraunavanje prekinuti kada apsolutna vrednost funkcije f u priblinom reenju jednaine bude manja od E. Funkciju f zadati funkcijskomnaredbom.Naprimer:f(x)=x5+x+1;a=1;b=0;E=106. PROGRAMPOLINT F(X)=X**5+X+1 READ*,A,B,E 5C=(A+B)/2 IF(ABS(F(C)).LT.E)GOTO10 IF(F(C)*F(A).GT.0)THEN A=C ELSE B=C ENDIF GOTO5 10PRINT*,C END

Metodaseice DatisurealnibrojeviE>0,aib,ifunkcijaf,kojaispunjavauslovf(a)*f(b)<0. Sastaviti program koji nalazi priblino reenje jednaine f(x) = 0 metodom seice. Izraunavanje prekinuti kada apsolutna vrednost funkcije f u priblinom reenju jednaine bude manja od E. Funkciju f zadati funkcijskom naredbom. Prvo uneti pokretni a zatim nepokretni kraj intervala. Na primer: f(x) = x5 + x + 1; a=0; b=1; E=106. PROGRAMSECICA F(X)=X**5+X+1 READ*,A,B,E 5A=AF(A)*(BA)/(F(B)F(A)) IF(ABS(F(A)).LT.E)GOTO10 GOTO5 10PRINT*,A END

Njutnovmetod DatisurealnibrojeviE>0,a,ifunkcijaf.Satavitiprogramkojinalazipriblino reenje jednaine f(x) = 0 Njutnovim metodom. Izraunavanje prekinuti kada apsolutna vrednost funkcije f u priblinom reenju jednaine bude manja od E. Funkcijefif'zadatifunkcijskimnaredbama.Kaopoetnuiteracijuuzetibroja. Naprimer:f(x)=x5+x+1;a=1;E=106. PROGRAMNEWTON F(X)=X**5+X+1 G(X)=5*X**4+1 READ*,A,E 5A=AF(A)/G(A) IF(ABS(F(A)).LT.E)GOTO10 GOTO5 10PRINT*,A END

VrednostLagranevoginterpolacionogpolinoma Datjerastuinizrealnihbrojevax0,...,xninizrealnihbrojevay0,...,yn.Sastaviti programkojiodreujevrednostLagranevoginterpolacionogpolinoma,kojiprolazi krozvoroveinterpolacije(xi,yi)i=0,n,udatojtakia(x0<a<xn).Brojeveain unetiprekotastature;nizxiizdatotekeX.dat;nizyiizdatotekeY.dat PROGRAMLAGRANGE REALX(0:20),Y(0:20) OPEN(UNIT=1,FILE='X.DAT',STATUS='OLD') OPEN(UNIT=2,FILE='Y.DAT',STATUS='OLD') READ*,A,N READ(1,*)(X(I),I=0,N) READ(2,*)(Y(I),I=0,N) B=0 DO15I=0,N P=Y(I) DO5J=0,(I1) P=P*(AX(J))/(X(I)X(J)) 5CONTINUE DO10J=(I+1),N

P=P*(AX(J))/(X(I)X(J)) 10CONTINUE B=B+P 15CONTINUE PRINT*,B CLOSE(1) CLOSE(2) END

Gausovpostupak Datjeprirodnibrojn30,realnakvadratnamatricaAredanirealninizbkoji ima n elemenata. Sastaviti program koji reava sistem linearnih algebarskih jednaina AX = B Gausovim postupkom, gde je X kolona nepoznatih, a kolona slobodnihlanovaBsesastojiodlanovanizab. PROGRAMGAUS REALB(30),A(30,30),X(30) READ*,N READ*,(B(I),I=1,N) READ*,((A(I,J),J=1,N),I=1,N) DO50I=1,N L=I 5IF(A(I,I).NE.0)GOTO25 10IF(L.EQ.(N+1))GOTO20 L=L+1 IF(A(L,I).NE.0)THEN C=B(L) B(L)=B(I) B(I)=C

DO15K=I,N C=A(L,K) A(L,K)=A(I,K) A(I,K)=C 15CONTINUE ENDIF GOTO25 20PRINT*,'SISTEMNEMAJEDINSTVENORESENJE' GOTO65 25B(I)=B(I)/A(I,I) DO30L=(I+1),N A(I,L)=A(I,L)/A(I,I) 30CONTINUE DO35K=(I+1),N B(K)=B(K)A(K,I)*B(I) 35CONTINUE DO45K=(I+1),N DO40J=(I+1),N A(K,J)=A(K,J)A(K,I)*A(I,J) 40CONTINUE 45CONTINUE 50CONTINUE

DO60K=N,1 S=0 DO55L=(K+1),N S=S+X(L)*A(K,L) 55CONTINUE X(K)=B(K)S 60CONTINUE PRINT*,(X(I),I=1,N) 65CONTINUE END

Jakobijevpostupak Datjeprirodnibrojn100,realnakvadratnamatricaAredanirealninizbkoji ima n elemenata. Sastaviti program koji reava sistem linearnih algebarskih jednaina AX = B Jakobijevim postupkom, gde je X kolona nepoznatih, a kolona slobodnih lanova B se sastoji od lanova niza b. Izraunavanje prekinuti kada rastojanje dva poslednja priblina reenja bude manje od E (videti IV.7 i koristiti odgovarajuipodprogram).PodprogramizasabiranjeimnoenjematricaIV.4iIV.5 mogu se takoe koristiti. Pretpostvlja se da sistem ima jedinstveno reenje. Parametarzatransformacijusistemauitatinaulazu. PROGRAMJACOBI REALB(100),A(100,100),X(100),D(100),C(100,100),Y(100) READ*,N,P,E READ*,(B(I),I=1,N) READ*,((A(I,J),J=1,N),I=1,N) DO5I=1,N D(I)=P*B(I) X(I)=P*B(I) 5CONTINUE DO15I=1,N

DO10J=1,N C(I,J)=A(I,J)*P IF(I.EQ.J)C(I,J)=C(I,J)+1 10CONTINUE 15CONTINUE 20CALLPROMAT(N,N,1,C,X,Y) CALLSUMMAT(N,1,Y,D,Y) IF(RASVEK(N,X,Y).LT.E)GOTO30 DO25J=1,N X(J)=Y(J) 25CONTINUE GOTO20 30PRINT*,(Y(I),I=1,N) END

GausZajdelovpostupak Datjeprirodnibrojn100,realnakvadratnamatricaAredanirealninizbkoji ima n elemenata. Sastaviti program koji reava sistem linearnih algebarskih jednainaAX=BGausZajdelovimpostupkom,gdejeXkolonanepoznatih,akolona slobodnih lanova B se sastoji od lanova niza b. Izraunavanje prekinuti kada rastojanje dva poslednja priblina reenja bude manje od E (videti IV.7 i koristiti odgovarajui podprogram). Pretpostvlja se da sistem ima jedinstveno reenje. Parametarzatransformacijusistemauitatinaulazu. PROGRAMSEIDEL REALB(100),A(100,100),X(100),D(100),C(100,100),Y(100) READ*,N,P,E READ*,(B(I),I=1,N) READ*,((A(I,J),J=1,N),I=1,N) DO5I=1,N D(I)=P*B(I) X(I)=P*B(I) 5CONTINUE DO15I=1,N DO10J=1,N

C(I,J)=A(I,J)*P IF(I.EQ.J)C(I,J)=C(I,J)+1 10CONTINUE 15CONTINUE 20D035I=1,N Y(I)=D(I) D025J=1,(I1) Y(I)=Y(I)+C(I,J)*Y(J) 25CONTINUE D030J=I,N Y(I)=Y(I)+C(I,J)*X(J) 30CONTINUE 35CONTINUE IF(RASVEK(N,X,Y).LT.E)GOTO45 DO40J=1,N X(J)=Y(J) 40CONTINUE GOTO20 50PRINT*,(Y(I),I=1,N) END

Determinantaiinverznamatrica Datisujeprirodnibrojn99ikvadratnamatricarealnihbrojevaA=[aij]redan. Sastavitiprogramkoji: 1)izraunavadeterminantumatriceA 2)usluajudajedet(A)0odreujematricuA1. tr(A)=a11+a22+...+ann UreavanjuovogzadatkapreporuujemokorienjeLeverijeveteoreme: LeverijevateoremaNekajeArealnakvadratnamatricaredan,Ejedinina matricaistogredaisk=tr(Ak).Akoje: bn=1,bn1=s1,bn2=(s2+bn1s1)/2,..., bnk = (s_k+\sum_{j=1}^{n1}b_{nj}s_{kj})\text{\hskip0.8cm}k=1,n\endalign tada je: 1)\text{\hskip0.5cm}detA=b_0,\text{\hskip0.5cm} 2)\text{\hskip0.5cm}A^{1}=\frac1{b_0}\sum_{i=1}^nb_kA^k.

You might also like