Upload
mirhad-sinanovic
View
581
Download
10
Embed Size (px)
DESCRIPTION
Programiranje
Citation preview
\0 lsrv tb
DR NEDELIKo panBzeNovrC
FORTRAN)ffIIIZDAI{IE
Al, l
cqblF^ -*,6.0(
-k Eefuiqe r, .'-,t,,!OBEocRAD,reeo. A&4*l-
DrNedeljko pau;eruvr(,prof. PMF-a u Beogadu
FOR,TR,AN IV
IzdrinC
IDP "IrhnCna
kniiSa"AGoSrA Uam-ldrlrova 5
neoenc€st---___
hPwle Feiwid,prof. FOi{-a u neograu
ZaizAratadz
Ih Bltto Petwii
Urednik
Nlwlafua|,at
T€hdald rrednik
Hilojc Irj;lStutfiC,I
I
ffrnfr*'nr,GiFtl'|4Iln tO.irr|r txra*il*C.F L
t saDRL*ri strana
I1. lryq)... 3
2. ..PNETTK}DITE I{AP'OUENE O FOSTBAN JEZIKU 5
r,Tberu por@ovrJF
rPSu Po'@ovl 5
2.2. N.G|l gkaJe progrenrr .... ?
t. ercl4l FoR''!m"AN JEZUr't I3.1. Ve{f\.dovr aglcskc rzbukc 9
3.2rfic *eq broinog skt€Ea e
' t.3. Logld<c kcetrde 10
_.i . 3,1. Zei rlilcB.5b oFEiF 10
| \- !.8. h.cr n qcractrc poecdpaJe 10
3.8. Zapf zelogl{kaop€rrc|e ........ ll
. $.?. S.atldlil imcf .. ...... .., 11
3.E. Slulbac rcGl ... ll.. AL@NITflI gA FEAI.IIIIM KONSTANTAMA i PNOUSN-
lJMi ........ 13
4.1. Dldldctje broJne konstante..... ......,.... 14
,1.1.1. Celt brojevi .,......:. t{4.1.2. M€iovtd brojevi 15
{.2. Dcfhlcijs realne promenlflve .. 1?
,1.2.1. Ime prorilcntJive .......;.. 1?
4.2.2. Ytstr proraenlJlve po unutrEinjoj konvencitl.. l8
4.3. Arttmedakl l'rrz .... ..... 19
/t.3.1. Arltmetidke operactJe . . .... 19
4.3.2. Upotreba zegpada .,....... 2l4.3.3. Vrsta niitmcti0kog tzroza . 2f
:i:lEtru.
Stranr
{.{. DodelJlvenJe broSc vr6&o!d prgmstrtyoj{.4,1. ArtbouCke arredbe 28,4.4.2. Neredbr ulezc ... 24
4,4.2.t. Se celth broJeve ZB
4.4.2.2: Opt bo6ovl6h brolein ....-r.,.. 27
4.4.2,3, Opl! pr8'trog pour ... ZO
{.5. Irdsvrnj€ broJne vrednocd proo€ouilvo E0
{.5. 1. Optr cclth brr€ve E2
,[.5.2. Opls nelorrtth broJern
4.5.3. Opte prrzDos polj. .. g6
,1.8. Pro3te lldjsko tlgorltamoke ltruktur€ 96
4.6.1. preldd rade po progreEu t flztCH krlj
a.9.{. Apsolutnr vredDort ....,. i.{. 9. 5. _TrtgonomotrlJrke firnkctJe l.
. . ...
{.9.6. Invsrznc trtgotromoflrsko ftItlkcue ......4. 9. ?.. Htperbollloe funkctJe
{.10. Nerodbe promcnllvot bezuttovnog prolaeka ....{.11. DslJ. tnoguanostl narcdbc utazr .,..
{.11.1. Grclko na ularu ;.,.....1.LL.2. KreJ ulrznth podrtak!
{.U. Dlllrrtlenrc vr'te promaulve
1.12. l. EklpltcltDe deklonctJr
. a.L2.2. Ibpltcltm dokl€raclts
{. 18. T*etuclna objslnj€nra u progremu
1.13. 1. hwcnrcnl preldd rade t porukc opera-
a. lE. 2.
a.ll. PrllodlKomartirl u Drograrru
1.1{.1. I'redunavaaJc t.flltr .....,1.11.2. Strusuald Prtner ,
a. 14.t. Irrrounrv!trJe kor.tr! trrnlcatd.ltn.,.d!ra.ln.
PnoullirlJM tA INDEIGIMA - NXUOVT
6.1. DrllatctJa llil ...6.1.1. lnc nl'r I lnd.krlt.1.2. Vrrts nt{ ...,
6.2. Jc&rodlmaElonrlnl nlzovl ..6.2.1. Jadlodlnanzlonelnl ntroel u llnu ulezno-
Irlsrnlh nrrcdbl ...t.z.r. ElcnGnU nlrl u arltm.UdkoJ n.rldbl ....
5.3. Clkll&rc tlFrlt n!k. rtrukEr!t.!.i. .Nnrcdb:r rr o9l. protrrmtkog clklu.n .,.5.!.2. Norcdbn bct doJrtvn
56
s6
57
58
60
67
67
08
6E
09
09
1t
7l
72
72
72
11
16
70
7'EO
tl8t
E3
8!
8t
8?
00
u
proSramt
.1.8.2. prlmert rlgo,rttrEs sr prolgD ttnlJrldnstruktrrrmr
,1. 7. Rargrrnrtc llnlJeke rlgorttartrlk€ atrukture
4.?.1. Urloml prelezak po vr€dnosd srltnd6koglzrrtr .
s6
'3780a
89
4.?.2. Berullovnl prslrzrk 40
4.?.3. prtm.rl rrzgretrsuh thlrsldh ,truKurl .... {0{.8. DalJe mogudnoa$ lrredbo FORMAT &
{.8. l. ponrvljarj. J€dnog qrtrs .. ...., .. 44
4.E.2. ponavlJrnjc vlac optla .. 1l{.8.3. Pretezek ne novl rlog.,,f,ti.-I. Vezn lzmedju optta I lllte ...,.,,. .114.8.i. 1ek6t u FCRMAT-nar€dbt ... ie..
4,9. Elementarne funkclje 52
f.9.1. Ekrponcnct.,rlnr funkctJr 6a
{.9.2. Logrrltamtko funkctJa 6{4.8.3. Kvadretnl korcn .., r.. !... 55 6.t.t, Odnor dvo I vllc ctklu.n
ftrm
5. 4. Dvod!uc$r,!@ah{ dr'wt5.d. 1. D+odmaglatN dawl u lild uilrre
fahdb ncrod ..:. ., .. ,......5.,1.2. Rcgtetrovaa! dr,.cdruam@ d'l r!a-
uclJf rrAror. I v€ra-sl tsd[odDodo-nalnlrl dloc
5. 5. Vilcdllncnzi@aljd lnzor{
5.6. Rododod d.Garti difr n*ga ill v.ilc dzova uliafl deruo-lrlazd,h oara& 109
POTPR@AMI ... .. . t138.1. Olnovd pojdovl 113
6.2. r\d.cfj*. arr.&c lt'0.!. nd|cudd pcttrosrlE tt8
S.S. 1.. Slleih d*tcfsctts vretc fiilctJrkqpo{Fo3rrtlr
E.a. OpaU Doipcqrh3.4.tr. Ftoocdsvl tztrz Ir poqrogrrml .......
6.5. N|CH prcaofcnJa rrtundtr Ir prolra.Era u pot-Pl.ogTtmc
6.6. PromarlJtvl u&ll'd u posro0raroG
6.?. lm.!n Fotrogrrrae kofi ae javljeju keo arguacn-tf drucdi po$rotrrma ,.:...,.
8.E. Ntrovl k o argun.lrd potprograEl
ALGONITMI S.I LOGIEIfiil KONSTA.N:TAII&{ I PK}lItD{.LJIVIM
?. 1. Operactje porcdjcnrr
?.1.1. DcflntctJe opsractje poredjonJr g.........?.1.2. Naredtre preleaka po wrdrorH poirdjcalr ..
7.2. Lioglike ogcnciJo
?.2.1. Lc{iluke konatantc I proncndJtvc
?. 2.2. . DefhtclJc logltkth opcrrcfts ..?.2.3. LogtCkl lztaz .
7.2.4. Meutvanjo yrednoEd logtcklra promcnlJlvtm
95
--4,'rgtru
158
r61_160
t&t
8.
?.t.{. 1. lw.{rt{cts yr.dBoru re ul.zr .,.7.2-.a.2. I.odflu ur$a
7.2..5. I&tag rtr&o.d loGd[db proaclfll$ ...?.2;G fr.&. fragU 9o. r*ro&cad tqlGluq trrr-
6....
ALCClt"m er tsALDm 3oilttTAmTAil.A r ptoucDtlJr-vrr Dwra!rc r^@flt.f. Ea{a*cfF u',4,]dto tcrtrot duosfu}o ta&oaH .... 165
t"2. Drddctf rcrlac proapanlttv. dvootfl*r tedaoet{ .... 166
6.3. Doildlfvats broFe vrc&o€A reslnio prolocn{tivtmd!/{!E*a rrt-o.d tCS
8.1.1. Ad*adlfta er..&a 168
E.t..2. l{e*rftr xrrr .. ..:.. ....... 168
t.l. ladrvnf broJfrL wt&oei{ prowtfl*dh dvoctr.ln€Lilosd 169
E,5. IstaAl*artr .q.+-rrt,pll fudlcijs !a dvoahukostdr#r
.tLGOBrlffi 6* x0t{"t lxa$il xo!&sTAlrrail.a r pRo-xoDtl**'il .. .. .. ..e. 1. D4B{f lmdc**c konstsqte l?E
9.2. Ddrfeif 9*cmcntjgvc t?8
0.t. SCd$csir *l.tel.{ }ons{effds proncnl}i-vi:n ... 1a0
t t.l. AtlilndJkr rnm*r rEo
C.S.?. Ncra*r rd*r*.. ..,........: lsf9.{.' Ie&r*lie ltn*erd tenplakr*U 5r,rono*liiv.* Lgz
9.t (antkk?p V*lfiFpdvo*Frrkc ,e{nos{i 184
t.& llfflAnrn*Jc k9ryl**ih deq\E$iln* 4u*ciF .... lSs
n^oralnLllo rci{*eFn{t* w,!ryaa&rr.* MDnf@rurE ffa-ftil ra ror19. l. hendillvn &rl{rr r*{nl3 ,r9,1
fe-?. v*lndr,r*c *spif#esi€ nenerli*qS tro*tepr u sky,rru,rhc r*qlm*e lC*rl€€ ls5
}Gu24
ts180
9.132
133
rt8
142
7.
151
151
151
152
154
154
156
158
l5E
10.
11.
L2.
10.2.1. Zrr.&lCkr polrr 18 promonlrlvc lcdarldb du-ttnr .,.
10.3.1- ZrrGdntdkr Dolrr rr pro:ndrutva rrrll&6hdutlnr' ..
10.2.1. Zrjcdntdkr i rr nlrovo .
10.t. Vlaoltruko kortl4atc E.morlrrkog proltorl od rtrr-nc vllc pro$rm.ldh Jcdnlor
- 10.8.1. Nctnenovaaa zrJcdrlckr uona u momorul ..10.3.2. Imsrovrn zs.J€dDlcks 2(nt u ltroDoruf ....
DODEIJIVANJE POCETNIH VREDNCS ;I PROMENIJIVTM.
11.1. DodelfvanJe podetrtli wcdaosd promentfvlm aarcd-bom za,ekepllcttnu delilarectru wstG promerlJtvlh .
11.2. Naredba rr dodeljtvanre poletnlh vrednodd .,....,.:l11.3.. Programska Jedlnlce ze dod€Utvrnj. poOetrth vrcd-
noafl zaJednldHm zonama u mcmorlJl .... . :. . . . ...:
oPSTE Mocucxosn UNoSENJA I IZDAVANJAPODATAICA
12.1. Dalre mogrrdnoatl naredbe FICRI\&{T
12.1. 1.' OpiU opis podataka
12. l. 2. Koeficijsrt razmere
12.1.3, Razme6taj poua u ulazno-izlaznorn elogu ...12.1.4. Opis heks8dekadnih brojeva
12.1,5. Opis alfabetskih podataka
12.2. Promene FORMAT-naredbe za .weme iz\.rgavanjaproSTama
12. 2. 1. Po6tavljanje sadriaia FORMAT-naredbesa ulaza
L2. 2. 2. Polbvljaqje sadrirja Fon[1AT-naredbe.keo vrednosti niza ....
12.3. Uno6enJe i izdavanje pchtrka po njihovom imenu ...KONISCE.UE SPoLJNIH ]!r r:MoRUA
13.1. Magnehi di6k .. . .....:..
ttrrlr
1rc
t9?
200
208
203
205
2ott
20s
211
2L1
2LI
?19
220
22L
22t
223
223
224
225
229
229
13. 1.1. Defhl..nje pod.t*a Z2S
13.1.2. Pozlclolrrnje glave dlska
8.1.3. Pratos pod.trkr .;........ . 281
13.1.3.1. Uptr podrt kr !r dsk ?tl13.1.8.2. IzdevanJe pod.trka .a dlrlr t81
13.2. Uap€tra trrkr &'|l18.2.L. Prmr podrtakr ztg
8.2.f.1. Upt! poditrkr [r EagD3tru tr*u ... 28t
L3.2.1.2. l!&v!nj3 Dodst*e ra megn trGtrlkc ........ 2g
1 .2.2. OrDskr kraF gruge po&t b 288
13.2.8. Premt varr. nrgFGttre trak€ ...... tt618.2.3.1. VrlGalJG tato Dr pretbodrn elog .. 238
1t,2.8.2. Vr.60r. trrte ne poGotrL grop. ... tt6
Ltt.r.lrs. IEO
mrcc rRAD SA FORTRAN - PnOGRAXTXA NA nACUNARU ?DP-lr /?O . . . . . . . . . . . 237
2L7
2L7
l. u v o D
Jezik Je sredstyo za komunikaciju izmedju najmdnje dva koris-nika. Odigledno Je da jezik mora biti definisan tako <Ia je prihvatljivza sve korisnike. Ako s e posmatra problem komunikacije izmedju do-
' veko i raCunara, moraju ae uzeti u obzir Aobre i loie strane jednogI drugog i na oslovu toga mora se formirati jezik za njihovu komuni-kaciJu.
Jczik raCunara je vooma siromadan i zbog toga neprihvatljiv za6oveka. Medjutinr, pisani ili govorni jezik doveka nue dovoljno precizarlda bi bio prihvatljiv za raCunar. Zato se mora traZiti novi jezik koji dcbiti prihvatljiv i za doveka i za ra6unar. Jezici koji su definisani da za-dovolJe ovaj uslov zovu se progTamski jezici. programski Jezik mora daodgovorl slededim zahtevimo:
1. Da pruZi 6to je mogude vedi komfor za doveka, pri prenoienjuelgorltama na raCunar.
2. Da omogu6i lako pra6enje prograrnskog algoritma Sto ve6egbroja ljudi.
3. Da omogu6i formalno prevodjenje sa programskog jezika namasinski jezik.
Prvi zahtev znadi da programski jezik morn obezbediti lako izra-tavanJe o problemu kojt se ieli re6iti pomoGu radunara. Medjutirn, pri-mena raCunara je veoma 6lroka, a samim tim I problemi su raznovrsni.U takvoJ situaciji definlsani su programski jezici za pojedine oblastiprlmene Tacunafa. Danas su najpoznatiji programski Jeztci:
FOR TnAN - namenjen naudno-tehnidki problenrima/FORmula TMNslnting/
AL@L - namenjen nauino-tehniiki problcmima/ALGOritam L:rnguage/
COBOL - namenjen poslovnoj obr.:rdi podntrka/Commo4 Bnsiness Oricnti,l Langtagrr/
PLA - namenjen nau6nim, tehnickim i poslovnim problemima/Progranrming Language I/ tI
. Pored ovih Jezika postoJi jo6 na desctine progranrkih jezikn. I!le-djutinl, od svih ovih jezika najvlBe je rasprostrnnJen IORfiAN. Na skor.obrt% dan:rinjih radunara mole sc korisUU progamski Jezik FORTRAN.
$nt1,),il
Ilrugi navedenl zahtev za prograurH ,edk trebo da omogu€i razme_nu programsklh algorltama roedju Btrudnjsclme koJf a€ bave odgovarajudimproblemrma. prema tome, progtamski Jeztk mora btd rzgradJen na uobica-jenom 6kupu tipogafstrJh silbolal a konstrukcile u lezitu moraJu biti rakoshvatljive za 6to 6irl krug struCnjaka
- Tredi zahtev omoguduJe izradu programa, koji 6e obezb€dtti daradunar vr6i prevodjarje sa progrrmskog na maltneH Jezlk. OvaJ pro_grnm naziva se program za prevodfenje I kao ulazne poaa*e aobi;akonstrukcije iz progratnskog Jezika, pa th prevodl u Bkup naredbi u ma-lln"I9- Jeztku. Kada Je ceo progtam preveden aa programskog na nra-6inskl Jezlk, njegovo izvrlavanje na radunaru mole poCetl.
2. PRETHODNE NAPOMENE O FORTRAN-JEZIKU
2.1. Op5ti pojmovi
oenovna, nedeljiva jedinica jezika zove ee eimbor. FornAN Je ve6-taEki jezik, koji ae defini5e nad izabranim ercupom eimbola. skup aimbolaje izabran tako da odgovara uobicajenim tipografskrm sirnbolima. Novi erm-boli su konetruieanl od postojecih tipografskih eimbola, a njihorra konstruk-cija je lako shvatljiva za giri krug struCnjaka razlilitih profila.
simbol kao jedinica jezika ne izrazavaniita drugo, osim Eto predstav-lja samog sebe.
Elementarna konstrukcija u FoRTRAN-jeziku saEinjena je od nizasimbola. .Elementarna konstrukcija ima odredjeno znadenje, ali sama za
sebe ne egzietirq u progremu. Elemertarne konstrukcije FoRTRAN-Jezlkasu:
- konstante,
- promenlJive,
- nizovi i- iztazi.slozena konstrukcija, u F0RTRAN jeziku Eacinjena je od niza simbo-
la i elementarnih konstrukcija. ona egzietira u prqaramu i ima odredjenismisao sama za sebe. SloZene konetrukcije u FORTRAN-jezlku jesu:
- naredbe,
- potlrrogrami I- programl.
1
lit:tl ,i
I
lr'
6
Naredbe FORTRAN-jezika se dele na: izvr5ne i opisne. IzvrSne nar.orl-
be odredjuju koja operacija treba da se izvrSi i nad kojim pocJacima, pa pt.e-
ma tome one predstaeljaju akciju koju raEunar treba da sProvede. Opisne
naredbe pruZaju sve dodatne informacije potrebne za izvr5ne naredbe, koje
se odnose na to kako tfeba izvrSiti odredjenu akciju, ili daju informacije o
programu u celini, 3to omoguCuje lak5e prevodjenje programa sa IrORTII..\N-
-jezika na maSinski jezik.
Pravila kako se nad skupom simbola jezika grade elementarne i slo7e-
ne konstrukcije 6ine gramatiku jezika. Prema tome, poznavanjem granralike
moZemo redi o Bvekoj zadaloj konstrukciji u jeziku da li je korektna ili uije,ne ulazedi u nJeno zna6enje. Sintaksa jezika izu6ava gramatiCki korektne
konstrukcije i daje mogudnost formalnog otkrivanja gresaka u konstrukcija-ma. Odmah treba uoditi da sirtaksiCke greSke u programu mogu biti otkri-vene u prograhu za prevodjenje, jer su formalne prlrode.
Semantika jezika izudava znadenje pojedinih konatrukcija u jeziku.
Program 6a6tavua 6ovek. i sve konstrukcije FORTRAN-jezika koje
dine program, napisane 6u prema algoritmu sastavljenom za reSavanje od-
redjenog problema. Prema tome, setnanti6ke gre5ke u programu, po pra-
.vilu, ne mogu biti formalno otkrivene, jer su to najdeSde gre5ke u algoritnru,
a samim tim ove greSke ne moZe otkriti program za provodjenje, ved jedino
Eovek.
Pravila po kojima se grade poJedine konstrukciJe FORTRAN-jezika
lako se pamte, ako se uoEe razlozi za5to su ona uvedena. Zato treba imati
u vidu sledede:
l) svaka konstrukcija u FORTRAN-jeziku, mora biti tako definisana
da se jednoznadno razlikuje od svih ostalih konstrukcija,
2) konstrukcije se moraju takodefinisati da se omogudi sto lakSe nij-hovo prevodjenje na maSinski jezik, i
3) konstrukci.ie mor.aju biti 5to razumljivije za Coveka.
Pri definisnnju svakog programskog jezikn mor.a ee voditi raduna o
ova tri aspekta jezika, Kako je to sprnvt'rleuo u I.'ORTR.{N-Jeziku bide lzlo-Zeno u rnaterijalu koii slc<li.
,l
2.2. Nadin pisanja programa
Sve naredbe FORTRAN-programa moraju biti prenete na kartice dabi program bio unet u raeunar. Da bi program za prevodjenje pravilno pri_hvatao naredbe sa kartica, moraju se postovati slecleda pravila o buSenjukartica:
l) od r. do 5. kolone zakljudno busi se broj koji predstavlja obeiezj€naredbe.
2) od 7. do ?2. kolone zakljudno busi se niz simbola koji aine ,ar.ctlbu3) Ako neka naredba sadrzi vise od 66 simboia, odnosno ne mor-e bi.ti
buiena na jednoj kartici, moze se koristiti ukupno 20 kartica za njeno buse-nje, ali svaka kartica, osim prve, mora sadrzati znak razlidit od nule iblanka u 6. koloni.
4) Od 73. do 80. kolone moZe se buSiti ma kakav tekst. Najae5de jeto tek6t koji sluzi za identifikaciju programa i za redoslecl kartica . l)rogra-mu. SadrZaj ovih kolona ne uzima se u obzir od programa za prevortjenje.
5) Obja5njenja u programu koja se ne odnose na progl'arr za prevodje-nje, ved olakSavaju pra6enje programa od strane ioveka, piSu se od 2. do
80. kolone, pri demu se u prvoj koloni mora nalaziti slovo C. Ovakav tekstse mote pisati na bilo kojem mestu programa, i bez znadaja je pri formi_ranju maSinskog programa.
Radi preglednog sprovodjenja navedenih pravila o pisanju programa,pogodno je pisati FICRTIIAN-program u formularima oblika pt'ikazanog lra
s|,2.2.1.
51. ::.2.1
fii
8
Naredbe FORTRAN'programa piBu ee odozgo nadole onim redom kako
ae izvrgaveju u programu. U okvlru.naredbe moZe ee nalaziti proizvolJan
broJ sfiabola blanko, Ovo omoguduJe prcgledno pisante naredbe, a ne menJa
njeno znacenj€.
3. SIMBOLI FORTRAN-JEZII(A
Skup eimbola FORTRAN-jezlka Eaatav[en je od
- veUklh slova engleeke azbuke,
- ctfara dekadnog brojnog 813tema,
- IogiEtdh konstanti,
- znakova za eritmetlcke operacije,
- znakova za oPeracije Poredjenja,
- znakova za loglEke oPerac$e,
- ePqcljalnih znakova i
- glulbenlh redi.
3. l. Velika glova engleske azbuki
Veltke elova engleeke azbuke Elne 26 eimbola FORTRAN'jezika' i to
AlBlcl DlEl rlGl Hl Il rl Kl LIM lNlol Plal Rl s lTl ulv lwl
xlYlzgde vertikalna crta nlje simbol FoRTRAN-jezika' vec razdvaja pojedine
eimbole Jezlka.
3.2' Cifre dekadnog broinog aistema
Cifre dekadnog broinog eiatema 6ine l0 gimbola FOTRAN-jezlka i to
olll2lsl{l5l6l?lsle
rtr
l
l0
$;
Ii3
ilI
3.3, Logidke konstante
Logidke konstante, koje se u algebri logike najdeS6e oznaIavaju eim-bolima 0 i l, u FORTttAN-jeziku se pi5u sa
rfAt,sE. I ;'r'nun.
gde konstanta.I'ALSE. (dita se fo:ls, a znalilatl odgovara 0, a .'l'IttJE.(6ita se tru:, a znadi istina) odgovara I u algebri logike.
3.4. Znaci aritmetldkih opcracija
Znaci arltmetidkih operacija u FORTRAN-lezlku su
+l-l* | 7 | **
pri 6emu lmajti ;lede6e znaEenje
+ sabiranje
- oduzlmanje
* mnoZenje
/ delenJe
** atepenovanje
3.5. Znacl zi operacije poredjenja
Znacl za opcracije poredjenja u FO[tTRAN-jeztku su
.LT. i .LE.'' .EQ. i .NE. I .cr, i .cE.
pri demu imaju slede6e znadenje:
. LT. odgovara simbolu ( u nratematici (simbol je sastavljen ocl pr-vlh slova engleskih reii "LJss Than", Sto znadi "nranje od,,),
. LE. odgovara slmbolu { u ntatematici (slmbol je sastavlJen od pr-vih slova engleskih reIi "Lcss than or Equal to", Sto zuali"manje ili jednako"),
. EQ. odgovara eirnbolu = u m:rtematlci (simbol je sastavljen od pr-vih slova cngleske reli "I.lQual to", Sto zna6i "jednako"),
ll
NE. odgovara simbolu f u matematici (simbol je sastavljen od pr-
vih slova engleskih reei "Not Equal to"' Sto znadi "nije jedna-
ko" ),
. CT. odgovara simbolu > u matematici. (simbol je sastavljen od pr-
vih slova engleskih reEi "Greater Than"' Sto znadi "ve6e od")'
'GE.odgovarasimbolu>umatematici(simboljesastavljenodpr.vih slova engleskih reei t'Greater than or Equal to,', Eto znadi
"veCe ili jednako"),
3.6, Znaci za logiike oPeracije
Znaci za logidke operacije u FORTRAN-jeziku su
.oR. I .AND. I .Nor.
pri 6emu imaju eledede znadenje
. OR. logiika "ili" oPeracija,
.AND. logtEka !'1" oPeracija,
.NOT. Iogieki "net' oPeracija'
3. ?. SPecijalni znaci
Specijalnt znaci, obuhvataju interpunkcijske znake' koji se mogu ko-
r{etiti u FORTRAN-jezilinr I to su
(l)i=l,l'lrlbl'lEgde eimbol b oznalava medjuprostor ill blanko-lzmedju tipografskih sim-
bola.
3.8. SluZbene re6i
SluZbene refl 6u engleske redi koje se u FORTRAN-jeziku koriste
kao gimboli. To zna6i da ee te redi.mogu Pisati 6amo u obllku datom u ta-
beli 3. l. U tabeli je dat oblik pisanja sluZbene re6i u FORTRAN-jeziku' a
poEto znadenje re6i ukazuje na funkciju simbola u ROtrtneN-jeziku to je
rlat I prevocl reii na srpskohrvatski jezik radi lak6eg koriidenja za one i:i-l
fl
I
l
j'l;rl
lrllrll
t2
taoce kojl ne poznaju engleski jezik,zapiaan u fonetekoj transkripcijl.
Takdoje je u tabelt dat i izgovor reEl,
3. 1
'I
I
l
"liil
1tl:1,
I
il
I
Red.br. SluZbena red znadenje dlta se
I ASSIGN dodeli rsalnt BI.,IOCK DATA paket podataka blok delte3. CALL pozovi kol4. COMMON zajedni6ki kgman5. COMPLEX kompleksan kompleke6. CONTINUE nastavi kentinju:7. DATA podaci deitD8. DIMENSION dimenzija dimenEan9. DO izvrSi du:
10. DOUBLE PRECISION dvostruka tadnost dabl preelZenll EQVTVALENCE odgovarajuCi ikwivalanst2. EXTERNAL spoljaFnji ikett:nrl13. FORMAT raspored fc:mat14. FUNCTION funkcija fankEan15. GO TO predji na gou tu16. IF ako lft7- II\TTEGER ceo broj intidt,18. IOGICAL logiEki lodiikall9- PAUSE pauza , po.z20. READ iitaj ri:d27 REAL realan rieltt RETURN povratak rit.:n23. STOP zaustavi Btop24 SUBROUTINE potprogram s r\bru:tl:n25. WRITE piSi rait
1
&
4. ALCORITMI SA REALMM KONsTANTAMA I PROMENIJTVIM
Svaki ra6unski procee moZe se ra5dlanitl na niz formula, po kojlmase vr6i lzraEunavanje medjurezurtata i konadnih rezultata. Formula u uo -blcajenoJ matematiEkoj notaclji sadrzi promenljive t konstante medjueob -om povezane aritmetlckim operacijama. promenljivim, koje se nalaze nadeenoJ stranl neke formule, moraju bitl dodeljene brojne vrednostl pre ra-EunenJa po toj formuli. Ove promenljive dobijaju brojne vredno6tt, pre po_
detka rada po algoritmu, kao polazne velidlne ili gu to udjurezultati izra-Eunavanja po prethodnim formulama.
Tako, formula
Y=xl +xz(3,7 +4'x!)
sadrZl promenlJive xr, x2, x3, 6lje brojne vrednoeti moraju bitl poznatepre izradunavanja velldine y. Na dernoj strani formule ({.1) figurilu i kon-atante 2; 3,7 I 4- Izra6unavanje po formuli (4. l) predetav{a lzracunavanjevrednoett aritmetldkog lzraza deeno od znaka jednakosti, I dodeljlvanje lz-racunate brojne vrednosti promenljlvoj y, na revoj :trani znaka jednakoeti.
Sve ovo je opSte poznato u matematicl i predstavlja uobldajeni nadtnkorlldenja formula od atrane Blrokog broJa ljudt razlidltlh profeelJa.
U ovoj glavi Ce bitl izloZeno kako se pi6u formule u FORTRAN-jezt-ku. ImaJudl u vldu ita sve sadrze formule, to 8e u FoRTRAN-jeziku mora-Ju deflnieati slededl pojmovl:
- kako ee pl6u konstante t promenglve.
- &eko se pl5u arltmetlGkl lzrazl,- ldto ge dodeljuju vrednostl promenljivim,
(4.1)
l4
ll
- kako se izradunavaju medjurezultati i rezultati,- kako se izdaju konadni rezultati.
4.1. Definicija brojne konstante
U FORTRAN-jeziku brojna konstanta moZe biti ceo broj ili medovit' broj. ova stroga podela konstanti na cele i mesovite.uslovljena je nadinomregistrovanJa konstanti u memorlji racunara. celobrojna konstanta regi-struJe se kao ceo blnarni broi, a meBovita konstanta se registruje kao broju pokretnom zet^eztu.
4. l. l. Celi brojevi
Ceo broj se piSe kao niz dekadnih cifara, ispred kojeg moZe stajatlznak + za pozltlvan broj, a obavezno znak - za negativan broj. Ovako za-pisana celobroJna kongtanta mora biti u brojnom intervatu i-231 , 2tl -l-l .
Ovaj brojni interval je odredjen kapacitetom jednog memorljskog reglstra(s1.4. l.l.). ltegistarsadrZl 32delijeoznaEene, naeI.4. l.l, sa0, 1,...,31. SaclrZaj delije 3l je najve{e teZine I registruje znak broja. Ceo broj x
ri,1,
!*-l
,-O AJAK+1 ZNAK:
sI.4. l. t.
registrovan u ovakvom reglstru mora biu u intenralu
-2rl ( x : 2tr -l = 2.147.4g3.64?
lz lzloIene deflncije za piCanje celth brojeva eledl da
- ceo broj ne sadrZi decimalnu ta6ku. trl:'I
l
$
izmedju cifara celog broja ne moze stejatl medjuprostor.
(4. l.l)
x=rx.16'k (4. t.2')
15
Primeri
a) Dozvoljen oblik celog broja:
-386
65
0
2t47483641
b) Nedozvoljen oblik celog broja:
35. 0
35 000
3147483647
4. 1.2. Meiovitl brojevi
Me6ovlt broj ee moZe pieati na dva\nadina, kao:
a) Niz dekadnth cifara, pri Cemu se celobrojni i razlomljeni deo raz-
dvajaju declmalnom ta6kom. ispred ovakvo g niza moLe stajati znak + za po-
zltivne brojeve, a mora stajati znak - za negativne brojeve. ovako zapisan
meSovlt broj mora imati najmanJe jednu cifru, a najviEe ? dekadnih cifara.
b) ObUk kao pod a) lza kojeg ee pi5e "lono/E'
a zalirn se navodi ceo
dvoclfreni dekadni broj, kojl predstavlja eksponent broja 10. Brojna vred-
nost ovako zaplsane konstante jednaka je proizvodu brojeva ispri:d slova.E
i etepena broja 10, aa celobrojnlm eksPonentom navedenim iza slova E'
kx",f. x" II il-----r l l--- ----- ----l u---1 0
/!NAl< Xil
sl.4.1.2.
MesovltibroJeeregiatruJeumemorijiradunarauobllkupokretnogzataza (eI.4. 1.2. ). Ovako registrovan broj x ima brojnu vrednost
FITii
16
gde se eksponent xE r€gietruje kao ceo blnarnl broj' pa je
_ 64 . xD{63
a mantisa xu registruje se u binarno kodiranom hekeadekEdnom
tako da ie
o<1"* l<l -16*
Zamenom (4. 1.3) i (4. f .4) u
val za broj x u Pokretnom zanezu
o<l*l<(t-lo-').to6t
(4. 1.2) lako se dobtja da je brojnl lnter-
(4. 1.3)
sletemu,
(4. 1.4)
(4. r.5)
tako da svl
registruJu
(4. r.6)
(4. r. ?)
Najmanja vrednost mantiae razlillta od nule ieste 16-l 'brgjevi manji po apsolutnoj vredtrosti od 16-65 u raEunaru ee
kao nule. Prema tome, 'broj r f 0, mora bitl u tntervalu
r6-.!(lxl ( (l-16-6 ).r6Gt
ili u dekadnom brojnom sistemu
5,4.10-?e rlxl< ?.2' ro?5
. Me6oviti brojevi, razliditi od nule, zapieani u jednom od dozvo{enih
oblika (a) lli (b) tnoraju po brojnoJ vrednogti prtpadati dozvolJenom lnterva-
lu (4. l. ?). Brojevi ispod donje granice lntervala registruju ae kao nule' a
broJevt iznad gornje g""|U"u prouzrokuju prekoradenje kepeciteta regletra'
Primeri
a) Dozvoljeni oblicl meBovitih broJeva:
0.345
-22.O
482.57E-2
-. L2
15. D l5
25. E0
b) Nedozvoljeni obllci melovitih brojeva
2. 000.596
-15. El36
25. E
1.8?6,00
4. 2. Definlcija reElne promenljive
4.2. l. Ime promenljive
U matematlci je uobiCajeno da ee promenljive oznadavaju Jednlm elo-
vom azbuke. U FORTRAN-jezlku nlz simbola oznadavaju promenljivu, Ova-
kav niz elmbola zove se lme promenljive. Niz simbola koji 61ne ime pro-
menljive mora iapu.njavatl slede6e uelove:
- prvt simbol mora blti veliko elovo engleeke azbuke ili specijalni
znak I ,
- ost'll glnboU mogu bltl: vellka elova engleeke azbuke, cifre dekad-
nog brojnog slstema llt opecijalnl znaci I ,
- broJ simbola kojl Clne lme promenljive moZe biti od I do 6.
Prlmeri
a) Dozvo[ena lmena promenljlvih:-
:AAAA
ALz
CDEIs
IAI\/FASA
ZACREB
b) Nedozvoljena imena promenljivih:
Aa,Ct372
t2A
Al0. A
l
llj
il
1
I.liht
20
Aritmetidka operacija izmeclju dva argumenta, koja su celi brojevi,
daje kao rezultat ceo broj. Tako, ako se dele dva cela broja rezultat je sa-
mo celobrojni deo koli6nika.
Rezultat aritmetidke opc:acije izmedju argumenta od kojlh je jedan
realan, a drugi celobrojnl, lll su oba realna, jeste realan.
' Ze operaciju atepenovanja treba imatl u vidu kako se ona reallzuje na
radunaru:
a) Ako je izloZilac Btepena ceo broj, tada se opereclja stepenovanja
svodi nb mnoZenje. Prema tome, stepen
a{
se raEuna, kao
a.a.a.a
b) Ako je izlolllac stepena realan broj, tada Ee vrednost atepena ra-6una logaritmovanjem I antilogaritmovanJem. Tako ako treba lzradunati
to se izra6unava kao
a2'5
antitn(2,5Ina)
Iz ovoga sledi da se u operaciji stepenovanja, kade je izlolllac real-an, ne moZe pojaviti negativan broj kao osnovajer operaclja logaritmovanja
nije definisana za negativne brojeve.
c) Niz operacija stepenovanja izvrBavaju se.e desna na levo. Izraz
A**B**C
ra6una se tako 6to se najpre odredi (B ** C), a zatim A'ir (B**C). Ovo je
razlidito od (A*+Bl ':*C.
d) Promena znaka ima iatl prioritet kao i stePenovanie tako ako se
napiSe izraz ,.--A**B
oso ie biti izra6unato kao - (A ** B), a ne kao (-Al**8,
2l
Utabeli4.3.2.navedeniauPrlme:.iaritmeticldhLztazainjihoviek.vivalenti u matematidkoj notaciJi.
4. 3. 2. UPotreba zagrada
Ako utvrdjenl prlorltet aritmetlcldh operac{a ne odgovara aritmetiI-
kom lzralu.koji ae Zeli zapleati, mog! 8e korlstiti zagrade. Prem tonre, za-
grade treba korletitl, kao i u matematici, kada se Zeli proureniti prioritet
operaclja. .Deo erltmett6kog izraza u olwiru otvorene I zatvorene male za-
grade dobija najviEl prioritet. Ako postoji veci broj zagrada, unutrasnja za-
gradajenajvtBegprlorlteta.Deoa'itmetickogizrazaizmedjuzagrada,od-noel ge pretna arltmetiEkom izrazu u celini kao jedan argument'
Utabeli4.3.3.navedenlauprlmeriaritmetidkihizrazaeazagrada.ma i njlhovl et<vlvalentl u matematickoJ notacljl'
4.3.3. Vrsta aritmetiEkog lzraza
Izra6unata brojna vrednost, koia se doblJa kao rezultat aritmetilkog
izraze po vretl jeste:
Tabela 4.3.2.
ARIfI{ETICKI IIRAZI
-ArB.rc
-A2+B.c-5,6-1rrf+!rC-S.6
rx3+x2-203. rX*.3+X..2-20.
22
- ceo broj, ako su svi argumenti aritmetidkog izraza celobrojne kon-stante ili celobrojne promenljive, odnosno
- realan, broj, ako je barem jeda5r argument aritmetiekog izraza re_alna konstanta ili realna promenljlva.
Tabela 4
ARITII{STICKI TZRAZI
U FORTRANU U !{ATEITIATICI
Ar (B+C),/D A (B+c)
D
- (A+B) r*2*D-4. - (e+g) 2.o-4
x* (Y,/ (Y+x) ) x.Yy+x( (.:A) rr24ar @/BD.t2 ( (-e) 2+a.L
) 2
B
A,/ (B+c) *r2-4. /D+3. 3_'._1+r(B + c)' o
U tabeli 4.3.4. dati su primeri aritmetiEkih izraza 6a oznakom vrstearitmetidkog izraza.
Tabela 4.3.4ARITMETIEKITZ,F"AZ VRSTA
[**4+3*MNl ceo broj
(J I rz1*s13 ceo broj
(J /rz7*1113. realan broj
A**3-ll:r*2 realan broj
-I,:,(3. +K)/A realan broj
il
I
]iI
t'r
ilE
ta
4. 4. Dodeljivanje brojne vrednosti promenljivoj
4.4. l. Aritmctidka naredba
Opsti oblik aritmetilke naredbe Je:
a={ (+.4. t)
gde je
a - ime promenljive,
9 - aritmetidki izraz.
Ova naredba ima sledece dejstvo: vrednost aritmetidkog izraza p,pretvara se u vrstu brojnog podatka, saglasno vrsti promenljive a, i do-
deljuje se promenljivoj a.U aritmetidkorn izrazu V ne moZe se pojaviti promenljiva kojoj nije
dodeljena brojna vrednost pre izvr5avanja naredbe (4 . 4. l).Treba uoditi razliku izmedju znaka jednakosti u aritmeti.6koj nare<J-
bi, i uobldajenog zna6enja u matematici. Znak jednakosti u aritmetilkojnaredbi opisuje proces koji se sastoji od:
- izradunavanja vrednosti aritmetidkog i.zraza, na desnoj slrani zna-
ka jednakosti, prema konkretnim vrednostima promenljivih,
- dovodjenja izra6unate brojne vrednosti promenljive u celobrojni ilirealni oblik, u saglasnosti sa vrstom promenljive na levoj strani znaka jed-
nakosti, i- dodeljivanja ovako dobijene brojne vrednosti, promenljivoj na levoj
strani znaka jednakosti.
Sve navedene faze u izvrSavanju aritmetiike naredbe dogadjaju se je-dna za drugom. Prema tome,'u fazi izraiunavanja vrednosti aritmetidkog
izraza moZe se koristiti brojna vrednost prorneliljive, kojoj ie u zadnjoj
fazi biti dodeljena izraEunata brojna vrednost. Kako se brojna vrednostpromenljive duva u odredjenom memorijskom registru, to u ovom sluiajuznaii da sadrZaj ovog registra moZe biti kori5ien u iazi izradunavanja vr-ednosti aritmetidkog i.zraza, a zatim uni5ten upisom nove brojrr' vrerlnosti
koja se dodeljuje promenljivoj. Tako se moZo pisali
24
A=A+B
5to znadi: sabratl brojne vrednosti promenlJivih A
dodelitl kao novu brojnu vrednost prdmenljivoj A.
Primeri
(4.4.21
B i dobijenl rezultati
l) Primeri aritmetidkih naredbi:
AB=C*:r2+AB+4. 36
I-J+A*+2-4
BRZINA=PUT/VREME
VREDN=CENA*KOLIC
2) Aritft€tidka naredba
A=l/3-4*B
zal = 10i B = 3.5 dodeljuje promenljivoj A brojnu vrednost - f1,0.
4.4.2. Naredba ulaza
Aritmetldka naredba dodeljuje brojnu vrednott p"o-enllivoj, po iz-
radunatoj vrednoati aritmetidkog izraza. Medjutim, neke promenljive u aI-
goritrru dobijaJu podetne vr€dnostl prema konkretnom primeru koji se re-
5ava. Ovalve ve[Elne zovu se ulazne velidine. Tako, algoritam na sl. {. ?.3
sadrZi ulazne velidine x1 i x2, kojima moraju biti docleljene brojne vred-
nosti na podetku izvr5avanja algoritma. U istom algoritmu promenljiv:r .Y
dobija brojnu vrednost preko aritmetidke naredbe. Prema tome, postoia -
nje promenljivih koje dobijaju brojne vrednosti.na podetku algoritma, onro-
gu6uje primenu algoritma za razli.ite konkretne brojne vrednosti ovih pro-
menljivih. Algoritam u kojem ne postoje promenljive, kojima sc brojrra
vrednost mole dodellti kao velidina koja ulazi u algoritam, predstavlja niz
izradunavanja koji pri svakom izvrSavanju algoritma dovodi clo istog rezul-
tata. Jasno je da ovakav algoritam retko ima praktidnog smisla. NajdeSdt'
je potrebno sastaviti algoritam koji de izraEunavati rezultate za raz[ditc
poLazne podatke. Polazni podacl nalaze se na apoljnim nosloclma infornr:r-
26
maciJa I program koJi ih korlstl dode[uje njihove brojne wrednosti odgova-
rajuelm promenljivim, Naredba koja omoguCuie ovakvo dodeljivanje broj-
nlh vrednostl promenljivlrn zove se naredba ulsza. Ova naredba se pile u
obuku
READ(I, J)ltsta (4.4. 3)
gde je
READ - slulbena re6, koja oznaCava da ge radi o naredbi ulaza,
I - celobrojna konstanta bez znaka lli ime celobrojne promdn-
ljive, kojoj mora bltl dodeljenabrojna vrednoat Pre izvt6a-
vanje naredbe (4.4.31'
j - obeleZje jedne naredbe FORMAT,
lista - spisak imena promenljivih, medju sobom razdvoienih zare-
zima, kojima te dodeljuju brojne vrednostl sa ulaza.
Ako je apoljni nosllac lnformacija kartlca, tada vellEina i ukazuje
na Clta6 kartlca sa kojeg 6e btti Eltanl broJni pgdaci. Kod raEunara IBM
-360/44, kada se vrBi ulsz preko Elta6a kartica, treba uzetl da je i = 5.
NaredbE ulaza Je izvr6na naredba i ima sledede znadenje: Proeitati ulazne
podatke sa ulaznog uredjaja 1, p"d kontrolom opisne naredbe j, i dode-
llti pro6ltane brojne vrednosti promenljivim, navedenim t liEti.
Prema tome, izvr5na naredba sadrZi lnformaclu o tome gde se na-
laze ulazni podaci (i), i kojim promenljivim se dodeljuju (lieta). Mediutim
kako lzgledaJu brojne vrednosti ne kartlci to nlje reEeno LzvrEnom nared-
bom ulaza. Brojnl podatak na kartici nalazi ae u obllku konatante, a kon-
stante Bu eastavljene od nlza eimbola FORTRAN-jezlka. Sveki simbol kon-
etante bull ee u jednu kolonu kartice. VlSe kolona, koje z auzima jedna kon-
stanta ne kartlci, Iine polJe. Jedno ili vlle polja, koja se sa jedne kartice
unoae u memor{u raEunara, Elne elog, Oplsna naredba, kojom se opisuje
lzgled sloga, plle se u obUku
j FORMAT(slog) 14.4.4l
j - obeleZje naredbe,
FORMAT - eluZbena re6, koja ukazuje da se radi o naredbi za opis
podataka, I
gde Je
i,
26
slog - niz opisa, medju aobom razdvojenih zarezima, kojima se opl-
suju pojedina polja ulaznog sloga.
Ulazni slog je sastavljen od vi3e polja, a svako polje sadrii jednu
konstantu. Za opis ulaznog sloga potrebno je opisati svako polje u okviru
sloga. Opis polja zavisi od konstante koja se nalazi registrovana u polju.
Neka 3 polja dine jedan ulazni slog. Tada se opis sloga sastoji od 3 opisa
pojedinih polja, tj. naredba (4.4.41 dobija oblik
j FORMAT(opls1,opis2,9pis3 ) U.4.5)
Opisi pojedinih polja navode se u naredbi (4.4.5) sleva na desno,ona-
ko kako slede na kartici (s1.4.4. 1),
/poLlEl rc/-7E2 PoLIE 5
sr. 4.4.1
Da bi se u nizu naredbi koje di;tle program omogudilo jednozna6no u-
kazivanje na odredjenu naredbu pro-grama, uvodi se obeleZje naredbe.ObeleZje naredbe je jednocifren do
I
li
I
I
lr
Ll
petoclfren ceo neoznaden dekadni broj.
ObeleZje naredbe se piSe sa leve strane naredbe. Svaka FORI\IAT-naredba
mora imati obeleZje (oznadeno sa j u 4.4.4 i 4.4.5), koje seobavezno na-
vorli u.naredbi ulaza (4.4.3), odnosno izLaza (4.5.1). IzvrSne naredbe FOR-
TRAN-programa mogu po potrebi imati obeleZja. U jednoj programskoj je-
dinici ne moie se jedno obeleZje koristiti, kao obeleZje, viSe od jedne FOR-
TRAN-naredbe.
4,4.2.1. Opis celih broJeva
Ako porje sadrZi celobrojnu konstantu, opisuje se na slede6i na6in
rk (4.4.6)
gde je
I - simbol FORTRAN-jezika, koji oznadava da se radi o celom bro-
ju (Integer),
k - neoznaden ceo broj, koji ukazuje na broj kolona polja na kartici.
Ako je broj k takav, da polje sadrZi ve6i broj kolona nego Sto to
zahteva broj cifara brojnog podatka, tacla oclgovarajudi broj kolona rra lcvoj
27
strani polja ostaje nebuSen. Tako, ako u polju sa opisom Il0 koje sadrZi
10 kolona, od l. do l0.kolone, treba registrovati broj -386, to u kolonama
od 1. do 6. nede biti niSta bu5eno, a -386 6e se bu5iti sleva nadesno od 7. do
10. kolone.
4.4.2.2. Opis me.lovitih brojeva
Ako polje na kartici sadrZi me5oviti broj, opisuje se sa
Fk. d (4.4.7)
gde je
F - simbol FORTRAN-jezika, koji oznadava da se radi o me6ovitom
broju lFixed point),
k - neoznaden ceo broj, koji ukazuje na broj kolona polja na kartici,
d - broj decimalnih mesta brojnSg podatka.
Broj k mora biti tako odredjen da zadovoljava rislov
k>c+d+2 (4.4.8)
gde je
c - broj cifara celobrojnog dela broja,
d - broj cilara razlomljenog dela broja,
2 - jedno mesto za znak broja, i jedno mesto za decimalnu taiku.
Decimalna tadka se moZe izostaviti na kartici, i pri tome 6e bi.ti od-
redjena opisom (4.4.7). Tako u ovom slu6aju relacija (4.4.8) dobija oblik
k>c+dI1 (4. 4. s)
Medjutim, ako postoji decimalna tadka na kartici, ali nije u saglasnosti sa
opisom (4.4.7), tada 6e biti prihva6eno mesto decirnalne tadke na kartici,
a ne u opisu (4.4.7). Tako, opis F8.0 6e upisivati brojne podatke u memo-
riju radunara sa brojem decimalnih mesta, zadatih decimainom tadkom u
od govarajudem polju kartice
Ako se u polju registruju samo pozitivni brojevi, moZe se izostaviti
mesto za znak broja, a ako se izostavi i mesto za decimalnu taaku, to se
relacija (4.4. 9) svodi na
p>c+d (4.4. 10)
28
Za registrovanje vrlo mallh lU vellkth brojeva oblik (4.4. ?) je nepo-
godan, jer zahteve navodjenje svih cifara broja. U ovom sluCaju pogodno
je koristiti oblik
Ek. d (4.4. l1)
gde je
E - rlmbol FORTRAN-jezika, koJi ukazuJe da ee radl o meBovltom
broJu, zapieanom u ekeponencljalnom oblil<u (Exponential form),
k - neozna6en ceo broj koji ukazuJe na broj kolona polja na kartici,
d - broJ declmalnlh mesta brojnog podatka.
Kohatante zaplaana u eksponencijalnom obli,ku regtstruje Ee u polju
kartlce, kao i raniJe oplsana meEovlta konatanta Semo 6to ee lza declmal-
nlh mesta broja navodi €lovo E, a iza glova E izloillac broja 10. Tako ee
moZe pisatt
17.83E-15
6to odgovare decimalnom broju l?,83.10-lt. BroJ zaplsan u eksponencijal-
nom oBllku zahteve polje sa
k>c+d+6 (4.4. t2lgde je
c - broj clfara celobrdjnog dela broja,
d - broJ cifara razlomUenog dela broJa,
6 - jedno mesto za znak broja, jedno mesto za decimalnu taEku,slovo
E,jedno mesto za znak eksponenta i dva me$ta za dekadne ciirceksponenta.
Znak ekBponenta se moze izoetaviti, ako je eksponent pozitivan broj.
Slovo E se mole lzostavltl, ali se pri tome obavezno m6ra plsati znak eks-
ponenta. Tako se mogu registrovatl sledede konstante ne karticl:
-2.147820
-2.147+20
+8. l4E-02
8. t4-o2
Me5ovltl br.ojevi zapleani bez slova E i ekspdnenta mogu biti uneti
pomodu opiat (4.4. I t), pri Eemu 6e ae amatrati da je eksponent nula.
Tako ae mote pisati
20. 156E0
20.156+0
20. 156
Svl navedenl prlmeri 6e u memoriji racunara blti regratrovanl u obliku po-
kretnog z rezll., I predatavlja6e brojnu vrednost 20,156.
4.1.2.3. Opia preznog polja
Vrlo Gesto je potrebno neke kolone kartlce preekodltl. Qa bl ae ovo
omogudilo uveden Je ople
({. {. r3}
gde je
X - elmbol FORTRAN-jezike,koji oznadava daeeradi o opiau praSnog
polja,
n - c€o neoznaden broj, kojl ukazuje kollto kolona eadrti pol.je tgjetreba preskodltl.
Prlmer
Zs zedete vrcdnoetl promen{ivih 1, C, I I g lzreEunatl vrednoat
X - (el +32,4Xb-2c)
Velldlna f je eeo troclfrgn broJ I nalazi 8e na karticl od l. do 4. kolone.
Velt6lneC, !ig gadrle 3 cela l2 declmalnameata lnrlaze se nakarticlod 20. do 4O. kolote, pri CeEu eveka zauztma po{e od po ? kotona. Izgled
kartlce Je prlkazan nr e1.4.4.2.
/t a" b c
1...1 ulg- !+.{ol
sl. 4.4. 2
30
Program na FORTRAN-jeziku lma slede6i izgled:
READI 5r lol IrArBrC :
ro FaRMATi l4t ',5xtF7'2tF7'
ltF 7' 2lY: I A*rl +32.4 l* ( B-2. *C I
U naredbi FORMAT opisana su sva Polja na kartlci, sleva na desno'
koja 6lne ulaznl slog, ukljueujudi i polje koje se preskeee od 5' do 19' ko-
lone. PromenlJive I, A, B i C dobtjaju brojne vrednosti sleva nadesno' ka-
ko su zapisane u listi naredbe READ. Konstanta 2, u aritmetiCkoj naredbi
zaplsana je sa decimalnom tadkom, Bto znaEi da 6e u memoriji radunara
bitl reglstrovana u obllku Pokretnog zarleza' Na ovaj naein, operacija mno-
Lenja 2.*C izvodi ee izmedju angumenata u pokretnom zarezu' Ako bi kon-
atanta bila zaplsana bez decimalne tadke, tj' arttmetiEka naredba u obliku
Y' ( A'.*l +32.4 I tl 8-2r'C I
tada bi konstanta 2 bila registrov:rna u memoriji raEunara kao ceo broj'
Ovo bi ZnaEilo da pre lzvodjenja operacije mnoZenja 2*C, ova konstanta
mora biti prevedena u oblik pokretnog zareza, a botom izvr5ena aritmetid-
kaoPeracijamnoZenja.Ijedanidrugioblikari'tmetidkenaredbejekorek-tan I dovodl do istog rezultata. Ivledjutim, plvi dbltk (sa decimalnom ta6-
kom)predstavljaboljizapis,jer6etakavaritmetleklizrazbitibtlelzta-Cunat pri izvrBavanju programa na raCunaru'
4.5. Izdavanje brojne vrednosti P:9*gtlilte
BroJna vrediroet promenljive registrovana je u memorlji raiunara u
binarnom broJnom sistemu, kao ceo broj ili kao broj u pokretnom zarezu'
Blnarni obllk broja je neBogodan za koriS6enje od strane 3lreg broja ljudi
koji su korisnicl radunara. Zato ie potrebno broj prevesti iz binarnog u tlt'-
kaclnibrojniaistem,irezultateizdatiudekadnonrbrojnomsisten.ru.Potpu.
na informacija o izdavanju brojnih vrednosti promenljivih' na izlazni orgau'
sadrZi sledeie:
- imena promenljivih iije se brojne vredno6ti Zele iz<lati' kao i
- oblik izdavanja brojnlh vrednosti'
flt
Iin
H
3l
Prvi deo informacije, o imenima promenljivih 6ije se brojne vredno_sti Zele izdati, zadaje se izvr5nom naredbom izlaza
WRITE (i, j)lista (4. s.1)gde je
WRITE - sluZbena red, koja ukazuje da se radi o izdavanju brojnihvrednosti promenljivih;
i - celobrojna konstanta bez znaka ili celobrojna promenljiva,kojoj je dodeljena brojna vrednost pre izvr5enja naredbe(4.5. 1). Ova brojna vrednost odredjuje izLazni uredjaj nakojem se ir5i izdavanje rezultata. Za raaunar IF,M-_360144,
kada se izl.az vr5i na budadu kartica to je broj ?, a na Stam.pa6u broj 6,
j - obeleZje jedne naredbe FORMAT;lista - spisak imena promenljivih, medju sobom razdvojenih zare_
zima, dije se brojne vrednosti izdaju.
Svakoj izvr5noj naredbi izlaza, kao Sto je nareclba (4.5.1) pridruZu_je se jedna opisna FORMAT-naredba, koja sadr-i informacije o obliku iz_davanja brojnih vrednosti promenljivih. Oblik izdavanja zadaje se istim o_pisima koji su sluZili za opis podataka na kartici, sa-mo Sto sada opisujuizgled Stampanog dokumenta ili busene kartice na izrazu. Jedan ili vise po-dataka koji se prenose naizlazni organ dine izlazni slog. DuZina izlaznogsloga zavisi od nosioca informacija na kojem se vr5i upis informacija naizlaznom organu radunara. Ako se izlaz vr5i na bu3a6u kartica, tada jemaksimalna duZina izlaznog sloga g0 simbola, koji se mogu bu5iti u g0 ko_lona jedne kartice. Ako se izlaz vr5i na paralelnom Stampa6u, tada je du_Zinaizraznog sloga 120 tipografskih simbola (ovaj broj moze biti i ve61 kocinekih tipova Stampada), koji dine jedan red na itampanom dokumentu.
Opisna naredba, koja se pridruZuje naredbi izlaza ima oblik
j FORMAT(slog) e.5.2)
j - obeleije naredbe koje se navodi u izvrsnoj naredbi izla-za (4.5. l),
gde je
Elz
FORMAT - sluzbena re6, koia ukazuie na vratu opisne naredbe'
$log - niz oplsa koji definiSu izlazni slog'
Izclavanjelz\aznogsloganaparalelnomstampaEuzahtevainformaci.
ju o vertikalnorn po*"."rrju papira na StamPa'u' Ova informqcija je sadr-
Zana u prvom simbolu lzLaznog aloga' Kao prvi simbol izlaznog sloga nro-
Ze se pojaviti jedan od simbola +, b,0 i-Li I Pri eemu imaju sledeCe znade -
nje:
+ - bez Pomeranja PaPira,
b - Pomeranje PaPira.za I novi red'
0 - Pomeranje PaPira za 2 n'ova reda, i
I - pomeranje papira na prvi red sledede 6trane'
Jedan od navedena 4 pirnbola mora 5e nalaziti na Podetku izlaznog
sloga. Ako ovaj simbol nije obezbedjen Prvim oplsom u izlaznom slogu'
treba ga naveatl lzmedju apogtrofa kao jedan od opisa izlaznog sloga'
Tako naredba
j FoRMAT (',b,, 13.2x,8r2.5) (4.5.3)
formira izlszni slog od 4 polja, Pri demu prvo polje sadrii jgdan sinrbol
blanko, drugo polje sedrZi tri simbola za vrednost celobrojne promenljive'
trede polje sadrZl dva blanka i detvrto polje l2 limbola za brojnu vrednogt
rcalne promenljive. Prema tome, izlazni elog sadrZi 18 elmbola' Kada se
ovako formlran izlazni slog po5atje na paralelni 6tampai' Prt'i sinrbol bl-
6e upotrebljen kao komandni simbol za vertikalno pomelanje -papira na
Btampadu, i u ovom slutaju proizveSde novi red na $tampanom dokumentu'
Oetalih 1? simbola izlaznog sloga bi6e Stampani ocl podetka reda sleva na
desno kako slede u izlaznom slogu.
1.5. l. gpb ""Uh btoj*
Izdavanje brojne vretlnosti celobrojne pronrenljive opisuje se sa
IK
simbol koji ukazujc' tla sc rarli o cclitu brojcvinl:r'
I
gde je
(4.5..11
33
- ceo neoznaIen broj, kojl odredJuje bnoJ meeta koJi 6e zauzetlbrojna vrednost na izlaznom nosiocu informaclja. To je broj ti_pografsklh eimbola na Btampa.nom dokumentu, kada se LzLaz vt_di na Etampa6u, odnosno, broj kolona kartice, kada ee Izlazvr-6i na bu6adu kartica.
Ako se izlaz vrsi na gtampacu i pri tome brojrla vrednost koja se gtahpa prevazilazi duZinu k, odredjenu na Stampanom dolarmentu tada se Stampa kzvezdica (*) u predvidjenom polju.
Najvedi ceo broj koji moze biti registrovan u memorijskom registrusadrri l0 dekadnih cifara, a ako se uzme u obzir i l meato za znak,to z,.a-6i da format Ill uvek obezbedjuje koreltno &ane vrednosti celobrojnepromenljive. Brojna vrednoat itampa se na desnoj strani predvldJenog po_lja za Stampanje, a na levoj strani nevaZede rule Etampaju Ee kao medju-prostori (blanko). Znak broJa &a €e nepoaredno levo od prve vaIedecifre pri 6emu ee Etampa znak ( -) za negativne brojeve, a znak + ss nsStampa. Prema tome, predvidjanjem ve6e duzine polja od one koja je po-trebna za ftampanJe broJne vrednosti moZe se obezbediti potreban broj me_djuprostora (bfanka) izmedju brojeva koji se Etampaju u jednom redu.
Prlmer
Na kartici eu zadata tri cela broja x, y i z. Broj x je buBen od 10.do 15., broj y od 20.do 24., a broj z od 52. do b4. kolone jedne kartlce,uneti brojeve sa kardce i 6tampad na paralelnom EtampaEu. u ovom sru-Eaju potrebne eu eledeCe FORTRAN naredbe:
READ{5r401 IIr IYrllFORHATI9IT l6r{Xr l5r27I, I3lURITE(614lltXrlYrttFoRtlAT(r .rl6rl0rl6l
U naredbi FORMAT sa obeleZjem 40, opisi 9X, 4X i 2?X definiEuprrl,na polja na kartict izmedju brojevd x, y i z. Naredba WRITE obezbe_djuje Stampanje brojnih v.ednosti promenljivih Ix, ry i IZ redom slevanadesno po opisima u FOnMAT-naredbi sa obeleZjem 41, Tako 6e brojnevrednosti promenljivih rx r rz bru Stampane po opleu 16, a promenrjive Iy
40
4l
34
po opisu I8. Kako brojna vr€dnost promenljlve rY eadrzl 5 simbola na kar-
ticl, a opis I8 odredJuJe polje od 8 aimbola, to 6e.tri simbola sa leve etra-
ne polja biti nelakorlEdena za prlkazivanje broja I eluli6e za razmak iz'medju brojeva na Etampanom dokumentu. SliEno razmatranje vaZi i za pro-
menljivu IZ. Stampani dokumenat 6e imati elededl lzgled
xx)ooo(bbbxlo(xxbbb)o(xgde Je
r'n.d.rdr ( b ) tri soecrial-X - c{fra dekadnog brojno! sistema, medJuprostor ( b ) iU speclje
ni znak (-),
b - mediuProstor (blenko)'
4.5. 2. Opia meEovltih broteva
MeEovitl broJ registruJe ee u memorlii u obliku pokretnog zateza.
Ako se za fzdavanJe vrednosti realne promenljlve korlsti opie
Fk' d
tada 6e broJna vrednoet na izlazu bltl u obliku:
(4.5.5)
gde je 6 mesto za znak broJa, i to: elmbol - za negativne brojeve i sim-
bol b za pozitlvne brojeve. obuk (4.5.5) izdaje vrednostl promenljivih u
vldu celobroJnog i razlomljenog dela. celobrojni deo sadrZi maksimum k -
- d - 1 tipografeko meato, ako je broj pozltivan, a k - d - 2 tlpografska
meate, ako Je broJ negativan. Razlomlieni deo sadrZi d dekadnih cifara'
Prema tome, broi k je
klc+d+2gde je
c - broj clfara celobroJnog dela broja,
d - broJ cllara razl,om{enog dela broJa,
(4. s.6)
35
2 - jedno meato za znak broJa (znak negatlvnog broJa lzdaje se kao
simbol - , a.znak pozldvnog kao simbol b), i jedno meato za
decimalnu tadku.
Ako se za izdavanje vrednogtl realne promenljive koristi opis
Ek. d
tada 6e brojna vrednost na izlazu bitl u obliku
(4. 5. ?)
gde je
0 - mesto zaznak broja, I to: slmbol - za negativne brojeve, i sim-bol b za Pozitivne brojeve,
X - clfra dekadnog brojnog sistema,
d - broj decimalnih mesta,
k - ulcupan broj simbola,
Ukupan broj eimbola za lzdavanje brojne vrednosti sa opisom (4.5. 7)
k >d'+ ? (4.5.8)
Ako u oplslma (4.5.5) i (4.5. ?) broj k definiEe manji broj simbola
od onog koji zahteva zaple brojne vredno6ti, to 6e na predvidjenoj duZini
k blti izdate zvezdice (*).
4.5. 3. Ople praznog pola
Razmak lzmedju brojeva, kao 5to smo ved videli, moZe se ostvaritl
predvldjanjem vedeg broja ceth u opisirna I, F iU E. Medjutim, opis
nx (4.5.9)
definlSe'na lzlazuprazno polje od n medjuprostora, tako da se ovim opl-
eom mbgu definleatl proizvoljni razmaci izmedju brojeva.
Je
36
Primer
Nakarticieenalazebrojevil,XiYuslededemrasporedu:
a) od 1. do 5. kolone ceo broj I (opis I5)'
b) od 6. do 12. kolone meEoviti broj X (opis F?' 2)'
c) od 13. do 24. kolone meEovitl broj Y (opis Efz' 5)'
Sastaviti program kojl Ce uneti zadate brojeve sa kartlce i Stampatl:
RCAD{5rBl IrXrY8 FORltAr( l 5t F7.2rELa' 5 I
IIRITE(6r?l trXrY7 fORilAT( r r, t!rlXlF?.2t2/.tEl?.51
Zal=18,X=-24.5iY=0.3E-2O,stampanidokumenatlmaizgled
4. 6. Proste linijske algorltalqqkejlAlge
4.6, 1. Preklo ada po Progralau I flziEki kraj programe
Doeada6nje izlaganje FORTRAN-jezika omogu6uje zapis proetih llnlj-
slrih algoritamsldh struktura' Medjutim' za korelrtan zapie algoritama na
FORTRAN-jeziku nedostaje mogu6nost ukazivanja na zadnii algorltamski
korak u algoritmu. Ovo 8e u FORTRA|'I-jeziku vr6i naredbom
(4.6. l)
(4.6.2)
gde je
STOP - sluZbena reE, koja ozna6ava kraj rada po Programu'
n - jednocifreni do Petocifreni ceo dekadni broj bez znaka'
U jednom programu moZe 6e nalaziti viEe naredbi STOP' Da bi se
omogu6io uvid kojom od viSe naredbi je zavr6eno izvr6avanje programa'
to je uveden oblik (4'6. 2), koji izdaje naredbu (4'6' 2) na Stampaiu'
ili
STOP
STOP n
bbb 1 Sbbb- 24. 5qbbb0. 30000E -20
rs rzx I.7.2tzx E12.5
3?
Program zapisan na FORTRAN-Jeztku, prevodl ee na maEineld, Jezlkpre lzvrgevalja na radunaru. Ovo prevodjenje vr6i program za prevodJe_
nJe, u koJl kao ulaznl podacl ulaze naredbe trroRTRAN-programa, a lzLaz-ne vellEine 8u nanedbe u maBlnekom Jezlku. Da bi progro- za prevodJenJe
doblo informac{u kada je zavrleno prevodJerlje I zadnJe naredbe FORTRAN--programa, uvodi 8e naredba
END (4.6.3)koJa ae mora nalazltl na kraju svakog FORTRAN-programa.
4.6.2. Prlmeri algoritama ea proetlm linijeH.m strukturama
Prlmer 1
Na JednoJ karticl se nalaze brojne vrednoeti promenljlvlh x1, x2, x3,
x4 I x5 rr obltku F?.3. IzraCunatl rezultat y po formuU
t - [t, + r2). x3 - r.] . ",
. ", (4. 6.4)
Na lzlazu ltampatl zadate brojeve x1, I = l, 2, ... 5, 1 rezultat y.
FORTRAN-program lma elededl tzgled:
REAOl5r l0l Ilr12rISrX4rISl0 FoRilaT ( Fl.3 rF?.3 rF7.trF?.3rF7.3 t
Y! | | Ilrxz l.X3-X4 l:txSrllrRITC(6r ll I Xl rX2rXllr14r15rY
I I FORI{ATl I I rF7.3rF9. 3tFj.) rF9.t tF9.3,819.? tSlopE'|{0
U naredbi FORMAT aa obeleZjem 11 promenljiva Xl se Stampe u
ietom obliku u koJem ge nalozl na karttci. Ostale ulazne veliCine se Stam-paju u obltlil F9.3, Cime eu obezbedjena dva medjuproatora izmedju bro-jeve kojl se Etampaju. Rezuttaf,*Y se Etarrrpa u obliku El9. ?, 6ime je o-bezbedjen razmak od 5 medjuprostora u odnosu na brojnu vrednoct promen-
{tve X5.
38
Prlmer 2
sastaviti program koji za zadatu vredno't - l{ x <1, lzra.unava l't/{
po formull
y = to'11: 0,9994 + 0,5998 x + o, 1?03 ' x2 (4.6.5)
Neka je vrednortt argumenta x zadata od 1' do 6' kolone u obliku
F6..S.NaizlazuStampetivrednogtatgumentalvrednostlfunkcije(4.6.5)u obliku 812,5. Na sl. 4.6, 1. data je blok-shema algoritma'
sI.4.6. I
Program na FORTRAN-Jeziku lna elede6l lzgled:
REA0I 5r l0l Ilo FoRrlllF6.3l-- v'o.sgsqro.5998tXlo.l?0!rri'2
IRtTEl6rl9l lrYl5 FORrArlr rrF6.3r2lr€12.51
sroPENO
Navedeni prlmerl iluetruju prdgrame saetavtJene po zadatim algori-
tmimasaProstlmlinijskimstrukturama.UtokuJednogiavr5avanjatakvogprograma, svaka naredba ge izvrSi jedanput' Naredbe se izvr6avaju odoz-
go prema dole, kako slede u zaplsanom nizu' Dolaekom na naredbu STOP
prekida se dalji rad Po Programu'
Treba napomenuti da su nevedeni primerl zapisanu u obliku progra-
ma koji predstavlja kompletan zapie algoritma na'FORTRAN-jeziku' Sva-
ka naredba ovakvog programa bu5i se u jednu karticu kako je to obja5njetto
u odeljku 2.2.
39
4. ?. Razgranate linijske algoritamske strukture
Niz naredbi koje dine prostu linijsku algoritamsku strukturu izvrga-
vaju se jedna za drugom u zapisanom redosledu. Kod razgranatih linijskih
algoritrimekih struktura, mora postoiati naredba kojom se redosled izvri:r-
vanja naredbi u programu moZe promeniti' Ovakve naredbe se zovu uprav-
ljacke naredbe. Postoje dve vrste upravljadkih naredbi: uslovne i bezuslor -
ne. Uslovne upravljadke naredbe vrie prelazak na naredbu sa zadatitn o-
beleZjem, ako je navedeni uslov ispunJen, a bezuslovne upravljatkc nar'':rl '
be vr5e uvek prelazak na naredbu sa zadatim obeleZjem'
Vrednost aritmetiekog \ztaza *, moZe biti pozitivna, negativna ili
nula. Naredba uslovnog prelaska po vrednosti aritmetidkog izraza ima ob-
ukIF( v )nr, nz, nr (4.7. r)
gde je
IF - sluZbena red, koja ukazuje da se radi o uslovnoj naredbi'
9 - aritmetith iztaz' a
n1 - obeleZja izvrSnih naredbi u FORTRAN-Programu' i=I'2'3'
Naredba (4.?.1) ima sledede znadenje u zavisnosti od vrednosti arit-
metl6kog izraza:
a) q I 0, pre6i na naredbu sa obeleZjem n1,
b) 9 = 0, predi na naredbu sa obeleZjem n2, i
c) I I 0, predi na naredbu sa obeleZjem n3'
Kako vrednost aritmetiEkogizraza mora biti manja' jednaka ili ve6a
od nu1e, to zna6i da 6e se prelazak izvrSiti uvek na jedno od obeleZja n1'
nr ill nl. Odavde sledi da naredba koja se nalazi neposredno ispod uslovne
aritmetieke naredbe mora imati obeleZje.
Na sI.4. ?.1' prikazani su grafidki simboli uslovnih algoritamskih
koraka koji odgovaraju naredbi (4. ?. 1). Po5to ova naredba omoguiuje tri
40
iz?azau zavlsnostl od vrednosti arltmetidkog lzraza, to ae u grafickom
prikazivanju moZe koristiti simbol prikazan na sI.4. 7. 2 koji v15e odgova-
ra mogu.dnostima naredbe (4. ?. l)'
sI.4. ?. I
nz n3
sI.4. ?.2
4. ?.2. Bezuslovni Prelazak
Naredba IF omoguduje prelazak u zavisnosti od vrednosti aritmetld-
kog izraza. VrIo eesto u programlma treba bezuslovno promeniti redosled
izvrSavanja naredbi'
Ovo je omogu."".;"";t:(4.7.21
gde je
GO TO - sluZbena ree, koja oznadava bezuslovni prelazak'
n - obeleZje jedne izvr6ne FORTRAN-naredbe u programu'
4. ?.3. Primeri razgranatih ltnijskih algoritamskth atruktura
Primer I
Zazadate vrednosti x1 i x2 izra6unati y po formuli
ako je xt 4 x2'bko
1" ,,, = ",ako je x1)x2
[*' * *'y ={xr xz
L*,, *,
a1
Brotevlxll12moguimatldvacelaltrldecl.roalnam€sta.Prematome,broJ 11 neka je bufen od l. do ?. kolone, a x2 od 8' do 14' kolone jedne
kfruco. UvodJaJem grsf,dkog obllkr ra sl.4'7'2, 'lgsrttrn se Dote prtkazatl
tao na gl. 4.?.3.
FORTRAN-Pro gram aastavlJen Po
algorltmu na eI.4. ?.3' ima lzgled
100
20a0
200
t0
30
REAOl5rl00l Xlr12FORilTT { Ft.:1, F7.3
'tFlxl-x.z1 10r20r30Y'XlrI2ItlrEl6r200l YFOR||AT(' I rEl4.?lsloPYrXl+I2G.0 ro 40Y.XLlf,2GO rO 40ENO
sl.4. ?. 3
Iz gornjeg primera 8e vldl da Jb korl66enjem naredbe CtO TO izbeg-
nuto ponavljanje naredbe WRITE, poale svakog lzradunavanja promenlJive
Y, kao I naredbe STOP za prekld rada po PrograEtu'
Prlmer 2
Funkcija y(x) je zadata na el'4' 7'4, Eto ge mole izrazTti na
slede6i naEin
sl.4. 7.4
i,
i,,
42
Za -c9(x€-rza -r<x{ 0
zs. 0(x< rza r<x<+@
Ze d < 999 zadatlh vrednosti argumenata xi, x2,.. . ; Xa , izra6unati vredno-
stt funkcije y(x).
a) Opis ulaznih podataka
Neka prva kartica sa uleznlm-podacima sadrZl od l. do 3.kolone broj
n, aod4.do12, broj r se4declmelnamesta. Izaovekarticedolazi n
kertica i na svakoj od njih je bu6ena jedna vrednost argumenta x od 1. do
9. kolohe, prt Eemu aigument x moZe imati 3 cela 14 declmalna mesta'
b) Raepored EtampnnJa reeultata
bele:
Na lzlazu formirati Etampanl dokumenat, kojl 6e ae eastojati od ta-
!(1 y(xr )
x2 y(xz)
y(x)
-" ,,r",
FORTRAN-program sastavlJen po algoritmu na sI.4. ?.5
izgled:R€aol5rlo0l NrR
tOO FORI{ATlI3rF9.4l80 lFlNl l0r2Orl0lO REAO|5r20Ol x
200 FoRriAr I F9.41lFlIfRl 3Or30r{0
40 IFIXt tOr50r6060 tF(I-Rl 3Or30r70lQ l:lt-f,1:r*Q.i90 l{RITE(6r3001 XrY
3O0 FORilATI t . tF9.4rEz0.tIilrN- IGO TO 80
20 sToP,o Y-0
GO TO 90!Q fr-(f,rr!-X$21..0.5
co T0 e0ENO
ima slededi
43
sl. 4. ?. 5
Razgranata algoritamska struktura na s1.4,7.5 nalazi se u okviru cik-luea, kojl Je oznaden na slici sa C. Izlazni kriterijum ovog ciklusa sadrZi
ispitivanje promenljive n, kojom se kontrolise broj izradunavanja funkcije
y(x). Kada se lzraduna vrednost funkcije i za zadnju zadatu vrednost argu-
menta, izla,zl se iz ciklusa i prekida se dalji rad po programu.
Za n=4 i t-12, izlazni rezultati po ovom programu se Stampaju u ob-
liku tabele:
8.1240-l 5. oodo-2. 0000t7.o+ao
o.0o.o
-0.1r83216€ 020.500479tE ol
4.1
gdc' jr. u prvoj koloni Stampana vrednoet argumenta,
6a vrednost funkcije.
a u drugoj odgovaraju-
4.8. Dalje mogu6nosti naredbe FORMAT
Opis ulaznog, odnosno izlaznog sloga u FORMAT-naredbi moZe u ne-
kim primerima biti veoma glomazan. U ovom odeljku bice razmotrene sve
mogu€nosti.naredbe FoRMAT koje dozvoljavaju kraci zapis opisa ulaznih,
odnosno izlaznih polja jednog sloga.
4.8. l. Ponavljanje jednog oPisa
VrIo de6to vi6e uzastopnih polja irnaju isti ogir;. Da bi se izbeglo u-
zastopno ponavljanje istog opisa u FORMAT-naredbi, mogu se opisi pisati
u oblikunIk
nFk. d
nEk. d
(4.8. r)
gde je n ceo neozna6en broj koji pokazuje koliko puta se ponavlia opis ko-
ji sledi. Tako, umesto niza oPisa:
FORMAT(F?. 2, F7 . 2,I4, 14, 14)
moZe se pisati:
FORMAT(2F?.2,3l4l
4.8.2. Ponavlianje viSe oPisa
Ako se vi5e opiea ponavlja, tada se ovi opisi mogu pisati izmedju ot-
vorene i zatvorene male zagrade, tj'
n( list a) (4.8.2)
gde je
lista - spisak opisa medju sobom razdvojenih zarezima,
n - ceo neozna6en broj koji ukazuje na broj ponavljanja opisa na-
vedenih u ligti. Tako, niz oPisa
j FORIVIAT(I2, F6. 4, 12, F 6. tl, 12, F6. 4)
45moZe se kraie pieati u obliku
j FoRMAT(3 (r2, F6.4) )
4.8.3. Prelazak na novi slog
Ako promenljive u listi naredbe READ dobijajurbrojne vrednosti izviEe ulaznih slogova (sa vi6e kartica), tada je potrebno u FORMAT-nared_bi oznaEiti kraj jednog ulaznog sloga r podetak novog ulaznog sroga. sli.nasituacija na'taje kada se vrednostr promenljivlh u listilaredbe wRITE ze-le izdati u viSe izlaznih slogova (novih redova). Ova informaclja, o krajujednog ulaznog, odnosno lzlaznog, eloga I o podetku slede6eg zadaje ee.slm-bo10m kosa crta (/) u naredbi FORMAT. Tako naredba FORMAT moze tna-tl sledeCi izgled:
j FORMAT(slog, I stog2) (4.8. 3)
U opienoj naredbi (4. 8. g) kosa crta oznadava kraj ulaznog elogas, kada jeova naredba prldruZena izvr5noj ulaznoj naredbi, ili kraj izJ.aznog slogal,kada je ova naredba prldruZena izvr5noj izl,aznoj naredbi.
ViSe kosih crta navedenih jedna za drugom imaju slede6e znadenje:
a) Ako je n kosih crta navedeno na poCetku, lli na kraju naredbeFORMAT, tada ce n uraznih slogova brti preskoieno, odnosno izdato npraznih elogova na izlazu.
b) Ako se n uzastopnih kosih crta nalazi izmedju dva sloga, tada 6ena ulazu biti preskoden 1-1 nrezni slog, odnosno na rzrazu 6e biti izdatn-l prazan slog.
Tako, naredba
FORMAT(slo91 / / / sLog2 |
ima sledede znadenje:
(4.8. 4l
a) Na ulazu: sa prve kartice dita se slog1, i prva kosa crta oznaEavakraj ovog sloga. Druga i tre6a kosa crta oznadavaju prolazak druge i treiekartice bez ditanja, a zatim se dita slog2 sa detvrte kartice.
b) Na lzlazu: u prqyom redu ltampa se slog, , a zatim prva kosa crtaoznadava kraj ovog l;hrrog rloga. Druga i tre€a kqse crte prgizy0de p0
46
jedan novi red, a zatim se Stampa slog2 u detvrtom redu. ovo objaSnJenje
je dato ne vodedi pri tome raduna o Prvom' komandnbm' qimbolu u LzTez'
nom slogu. Medjutim, slogr i slogz ' moraju imati' iao prvi simbol'ko-
mandni simbol za vertikalno pomeranje papira na Stampa€u' Deistvo ovog
simbola je nezavisno od opisanog dejstva kosih crta u 4aredbi FORMAT'
Primer
Saotavttl program koji celobrojnim promenljivim I' J i K dodeljuje
brojne vrednostl 8a jedne kartice, a realnim promenlilvlm A' B' C i D
sI.4. 8. I
kazan je nlZe:
dodeljuje brojne vrednosti sa druge ka-
kartice. Dodeljene brojne vrednosti
promenljivim 6tarnpat! na paralelnom
Stampadu, tako da su bojne vrednosti
promenlJivih I, J i K u jednom,a Pro-
menljivih A, B, C iD u drugom redu
Etamianog dokumenta. Opisi pojedi -
nih polja, i njlhov raspored na karti-
cama prikazani su na sl.4:8. t'
Izgled FORTRAN-Programa Prl-
READI 5t lOl I I J rKr A rBrCrOlo FoRHAT( t11l2lF7.2 rEl{.71 I
tlR tTEl 6r2Ol I I J1K1A181CrD20 FOR;{ATl. .r3ll0/. I t2lF7.2r2Xr€l{.7r2Xll
5 TOP
ENO
Tako za ulazne Podatke
I=386?; J=-4005; K=1100?
A=312,45; B=-42,58' 10t? ; C=-0,56; D=4, 13i06' l0-r2
Etampani dokument ima obUk
/A
r7.2
B
E14.7
c
=72
D
E14J
1867 -(005772.45 -0.4258000E l9
l 1007-0.56 0.{137O60F-l I
t
I5
I J
t5
K
I5
47
4,8,4. Yeza izmedju oplsa i liste
Posmatrajmo FORMAT-naredbu koja sleva na desno sadrZi n opisa
brojnih podataka. Ulazno-izlazna naredba, kojoj je pridruZena ovakva FOR-
MAT-naredba, neka sadrZi u listi m imena promenljivih. Ovde su mogu-
Ca tri sludaja:
1) Broj opisa u FORMAT-naredbi jednak je broju promenljivih u lis-
ti, tj. m = n. U ovom sludaju svakoj promenljivoj u listi odgovara jedan
opis brojnog podatka u FoRMAT-naredbi, Dodeljivanjem brojnih vrednosti
avim promenljivim u listi, po opisima u FOnMAT-naredbi, sleva nadesno,
lekoriSdeni su avi navedeni opisi u FORMAT-naredbi.
Tako, naredbe
READ(5, TO) AI, M4, K2, JOT
10 FORMAT(F?.3,3I4)
lspunjavaju uslov da je broj promenljivih (4) u listi, jednak broju opisa (4)
u FORMAT-naredbi.
2) Broj opisa u FORMAT-naredbi je ve6i od broja promenljivih u li-
Bti, tj. n ) m. U ovom sludaju svakoj promenljivoj u listi bi6e pridruZen
jedan opis u FORMAT-naredbi redom sleya nadesno, a ostatak opisa
(n-m), u FORMAT-naredbi ne6e biti iskorilden.
Ako se prethodno navedenoi READ-naredbi pridruZi druga FORI\{AT-
-naredba, tako da naredbe lmaju izgled:
READ(5, 1O)AI, M4, K2, JOT
10 FORMAT(F?, 3, 314,Erz. 5,12)
tada 6e promenljivoj A1 biti pridruZen opis F?.3, promenljivim M4,K2 i
JOT opis 14, a opisi E12.5 i 12 ne6e se koristiti.
Prema tome, ako u FORMAT-naredbi Postoji veCi broj opisa nego
6to to zahteva ligta naredbe READ, odnosno WRITE, tada ce biti iskoriEce-
no samo onollko opisa, sleva nadesno, koliko ima promenljivih u listi'
3) Broj opisa u FORMAT-naredbi je manji od broja promenljivih u
Usti, tJ. n ( m. Tada treba razlikovati dva elucaja:
48r
a) Ako izmedju epoljne otvorene i zatvorene zagrade FORMAT-riared-
be, koje ae zovu zagrade nultog nivoa, ne Postoje unutra6nje zagrade, tada
6e posle prolaska kroz sve opise, sleva nadeeno, do€i do prelaska na novi
slog i ponovo 6e se koristiti isti opisi, od podetka FOBMAT-naredbe. Tako
ako naredba sadrii 3 opisa, prvi slog se obrazuje od navedena 3 opisa, a
slede6i slogovi se ponavljaju prema potrebi liste, ulazne odnoeno lzlazne,
nar€dbe, tj.
FORMAT (4.8.5)
Primer
Neka su brojne vrednosti promenljivih A, B I C zadate na tri kartice
sa opisom Fl7.2. Tada se dodeljivanje ovih brojnih vrednostl promenljlvim
moZe izvr5iti pomodu naredbi:
READ(5, 20)A, B, C
20 FORMAT(F7.2)
Naredba 20 definiSe ulazni slog od jednog polja sa opisom F?' 2, i u
podetku dodeljuje brojnu vrednost promenljivoi A. Iza ovoga, Po5to 6u i8-
crp€ni svi opisi u FoRMAT-naredbi, dolazi do formiranja novog ulaznog
6loga, a to znadi prelazak na Citanje slede6e kartice pod oplsom F7'2' a
brojha vrednost se dodeljuje promenljivoj B. Na isti nadin se prelazl na
slede6u karticu i dodeljuje se brojna vrednost promenljivoj C'
b) Ako izmedju spoljne otvorene i zatvorene zagrade, FORMAT-na-
redbe, postoje unutra5nje zagrade koje mogu biti prvog I drugog nivoa' ta-
da 6e posle prolaska kroz sve opise, sleva nadesno, do6i do prelaska na
slede6i slog i do ponavljanja opisa sleva nadeeno, koji 6e nalaze izmedju
zatvorene zagrade nultog nivoa i najbliZe otvorene zagrade prvog nivoa'
Oznadimo li dekadnim ciframa O' I i2 otvorene, a sa 0', l"i'2'za'
tvorene zagrade, nultog, prvog i drugog nivoa, tada Ce biti
(op1s1, opis2, opis3 )
0 I 2 2. l, 0-
49
(4. 8.6)
Primer
Na prvoj kartlcl ulaznlh podataka nalaze ee brojne vrednosti promen-rjivih N I E ea opieima 15 i El2.s. Iza ove kartice slede tri kartice na ko-Jima ee nalaze brojevt od prve do devete kolone, sa opisom Fg. 4 koje tre _
ba dodelltl promenljivim Xl, X2 I X3. Naredbe koje obezbedluju unoEenje
ova"lndh podataka mogu ae zapiaati u ubllku
READ(5,40)N, E, Xl, X2, X3
40 FORMAT(Is, E12.5/(F9.4) )
Navedena FORMAT-naredba definiFe prvl ulaznl slog sa opisima IS
i Ef2. 5, I eledeGe ulazne alogove sa opisom tr'9. 4. Kraj prrog sloga je de-finiaan koeom crtom, a ostali ulazni slogovi su definisani izmedju otvore-ne zagrade pryog nivoe i zatvorene zagrade nultog nivoa. Broj ovih slogo-va zavisl od broJe promenljivih u listi READ naredbe. U navedenom prime-ru bi6e formlrana tri ovakva eloga.
4.8.5. Teket u FORMAT-naredbl
U doaadaBnJem izlaganju vldeli emo kako ge unose i lzdaju brojni po-daci. MedJutlm, vellkl broj brojnih podataka na izlazu 6ini nepregledntmitampant dokumeat, Zato je pogodno imati mogudnost tekstuelnog obja6nje-nJa Stampanlh rezultata. Da bl ge ovo omogu6ilo, u FORMAT-naredbi se
moZe navoditi tekst. Tekst je sastavljen od nlza elmbola: od slova, clfaraili specijalnih znakova. ovakav niz simboll zove se tekstuelna konstanta i-li literal. Broj simbola literela zov€ ae dullna literala.
Literal ge moZe definisatl na.dva nalina, kao
- niz simbola zapisanih izmedju apostrofa, ili- pomoCu poaebnog II opiea.
50
Literal definisan izmedju apostrofa predstavlja niz simbola od kojih
je prvi i zadnji simbol apostrof, tj.' Iiteral' (4. 8. ?)
gde je
- simboi FoRTRAN-jezika,
literal - tekst sastavljen od glova, cifara ili specijalnih znakova'
Tako moZe biti zaPisan literal,VREDNOSi FUNKCIJE'
U okviru niza simbola, koji Eine literal u (4. S' ?), ne moZe ee nala-
ziti Jedan specljalni znak apostrof. Medjutim, ako se zeii naveEti apostrof,
u olwlru llterala, moreiu ee plsati dva apostrofa (il)'
Drugi oblik navodJenja teksta u FORMAT-naredbi vr5i se pomo6u o-
piea
nHllteral (4.8. 8)
gde je
n - ceo neoznaEen broj, koji ukazuje na broj simbola literala'
H - €imbol'FORTRAN-jezika, koji ukazuje de ee radi o oplsu
tekgta, *)
literal - tekst eaetavljen od elova, cifara i specljalnlh znakova'
Tako ee moZe Pleati1THVREDNOST FUNKCIJE
Kao Eto ee vldi, navodjenje teksta izmedju apoetrofa ne zahteva plsa-
nJe broja elmbola koji 6ine tekat, kao 6to Je to slulaj ea opieom (4' 8' 8)'
MedJutim, aa gledlEta kori36enJa oba oplea lmaJu iato zna6enje:
a) Ako jti FORMAT-naredba, u kojoi ee nalazl llteral, priduriena na-
redbi iziaza (Wnttn), tada 6i navedeni niz simbola 6inttl pol.je u lzlaznom
slogunaonommestunakoJemeenqlazlllteral,elevanadesno,uFoRMAT-
-naredbl.b) Ako je FORMAT-narcdba, u kojoj se nalazl llteral,pridruZerra na-
redbi ulaza (READ), tada 6e navedenl nlz aimbola, kojl Etnl literal u FoR-
ijffi; Holerlt je pronalaza6 uredjaja zh bulenJe kartlca, i po njego-vom imenu je ureto slovo H za opie teligta.
51
MAT-naredbi, 6itl zamenien eadrZajem odgovarajudeg polja u ulaznom
elogu.
Ako FORMAT-naredba gadrZi samo literale i opise praznih polja,
bez opisa brojnih podataka, tada naredba ulaza, odnosno.izlaza, kojoj se
pridruiuje ovakva FORMAT-naredba, ne sadrZi listu.
Primer
Sastavitiprogram koji izraEunava vrednost na oFnovu zadate cene ikoliEine. Na svakoj kartici nalaze se tri polja: ptwo polje sadrZi 5 kolona,
1 od 2. do 5. kolone buBi se Sifra robe, a prva kolona ostaje nebilSena. Dru-go polje eadrZi cenu robe, i opisuje se sa opisom F10.2. Tre6e polje sadr-Zi koliEinu robe i opieuje se sa FlO.2. Broj ovakvih kartlca moZe biti pro-izvoljan, a zadnja kartica u paketu, u polju za cenu, ima buSenu vrednost
nula (to moZe biti i prazna kartica). Za svaku karticu izratunati vrednost,
kao proizvod cene i kolidine, a na kraju obrade svih kartica Stampati sumu
avih pojedinaEnih vrednosti.
sI.4. 8. 2
52
Na s1.4.8,2 data je Eema algorltma,
C - cena,
K - koliEina,
V - vrednost,
U - ukupna vrednoat.
FORTRAN-program ima 8lede61 lzgled:
gde su uvedene slede6e oznake:
HRITEI6'IO,fO FORilAfl I ISIFRAT rtXr rCEI{Ar r3Ir tKCLICIt{A'r{Ir TVR8DIOST'/l
UKUPN0'0REAOI5T3OI C€NArA(OLFORilAT{ lXt r5tt*t t2fLO.2tFLZ.2ln-(cENAl 4or5or{oVREO.CENA.AROLllRtIEl 6r 30l CENATAXOL rYREDUKUPNO.UKUPilOTVREIIGO Tn 20llRlIEl6r6Ol UKUPTIOFORfi Arl lgXr 18( lH- I /l9Xr rU!(UPNOt'Fl2'2/lSTOP ICNO
Za ula,zrrle podatke
AclS t2.oo io.ooDE36 t35.OO 12.50FAt2 15.50 4.?OaK50 t.75 300.00BB2l 200.oo 45.50
o.00
gde jedan Etarnpani red odgovara sadrzaJu Jedne karttce, Izlaznl rezultetl
6e blti u obliku
SIFRA CE'IIA KOL ICTT'IA VREOI{OST
2030
40
5060
ACls 12.00 36.00DE3{ l35.o0 l?.50FAl2 15.50 4.70aK50 r.75 3oO.OO8E2l 200.oo 45.rO
4t2.O0168t.50
12,85525.OO
9l 00.00
ur(uPllo I t8 l?. 35
4. 9. Elementarne funkciie
U mnogim matematldkim i tehnidldm zadaclma zahteva te izra€una-
vatrje elementarnih funkclja za zadate vrednosu argumenata'Ovaj problem
53
je reEavan u matematlci nekoliko stotina godlna unazed, i saetojao se u iz-nalatenju formula po kojlma se mogu izracunavatt tabuce za elementarne
funkctje. To ae najEeS6e vr6ilo razvfientem funkcije u stepene redove i.liprlmenom iteraclonih formula. Poelednjlh godina za lzradunavanje elemen-
tranlh funkclja llroko se kortste ortogonalni poltnomt, a posebno polinomi
Cebldeva.
RazvoJ elelitronaklh radunaldh maBina posebno je doveo do razvojaraznlh algoritama, koJlma ee mole lzraEuneti vrednoet elementarne funk-c$e sa zadatom tadno66u.
Neka je f(r) elemenatarna funkcija, Ciju vrednost treba odrediti za
zadatu vred[oat argumenta. Neka je g(x) aritmetidki lzraz po kojem se vr-6l prlblllno izradunavanje fttrkcije f(x), tako da Je
f(r) s g(x) (4. e. l)
Na raEunaru ee vr6l lzradunavanJe funkcije f(x) prlmenom aproksimacione
formule g(x). Apaolutna gre6ka prl ovon izraEunavanJu je
E=lf(x)-g(x)la relauvna gre6ka Je odredjena sa
e = | rt*L:St-ll
(4.9.2',t
(4. 9. 3)
Algoritrnl za izradunavanje elementarnih funkcija nalaze ae u memo-
riji ra6unara, i po pozivu se koriste za izradunavanje. Poziv algoritma za
izra6unavanje elementarne firnkciJe u FORTRAN-jeziku vrEi se ee
funkcija( * ) (4.9.4)gde je
funkcija - propleano lme eleme-ntarne funkclje,
V - arltmetiEld, Tzraz, diJa ae vrednost uzima kao argument
tunkclJe,
Funkclja zapieana u obliku (4,9.4) moZe se nala?itl kao argument u
arltmetlEkom lzrazu. Izra6unavanje funkcije predstavlja operaciju najvi-Eeg priorlteta u aritmetlCkom lzrazu. Proplsana lmena funkclja predstav-
ljaju uoblEajene matemattdke oznake ovih funkclja. Od toga ee odatupa aa-
mo u sludajevima kad to ne odgovara uvedenim konvencljama FORTRAN-
-Jezlke.
il
Vremene izraCunavanja eletnentendh funkcija, navedena u daljem
tekstu, odnose se na radunar IBM-360/44 bez specijalnih regletara, kojl-
ma ge moZe povedati brzina rada raEunara.
4.9. l. Eksponencijalna funkcija
Eksponericijalna funkelja (ev ) piEe se u obliku
EXP( v ) (4. e.5)
gde lzracunata vrednost ergumenta +, mora blri realan broJ, a vrednoet
funkciJe b16e takodje realan broJ. Vrednost argumenta mora zadovoljavatl
uBlov
* ( 1?4,6?3 (4. s.6)
Vrednost argu.menta koJa ne zadovoljavd udov (4.9.6) dovodi do broj-
ne vrednostl funkclje koja ne moZe biti registrovana u reglstru memorije
(prelazi opseg iealnlh brojeva). Ako je
v <- 180, 218
onda se za vrednoet funkclje uzlma nula. Ako je
lvl<o,s?3.10-8
4, 9. 2. Logaritameka funkcija
Logaritamska funkcija se pl5e u obliku
ALOG(q)
ako se radl o prirodnom Iogaritmu (rnv ) ili
(4. 9. ?)
(4. e.8)
vrednost funkcije je l. Relativna greSka ovako lzradunate funkclje iznosi
E (0, 18?. 10-6 (4. e. e)
Srednje vreme lzradunavanja eksponecijalne funkcije iznosi oko 310 4sek.
ALOGIo( * )
(4. e. l0)
(4. 9. l 1)
ako ee radi o dekadnom logaritmu (log'y)' Izraeunate vrednosti argumenta
i funkcije eu reali'd brojevi. Kako naziv logaritamske funkcije, u uobidaje-
noj matematidkoj notaciji, podinje slovom L, a ovo slovo po ullutra5njoj
55
konvenciji FORTRAN-jezika ukazuje na celobrojne vrednosti, to je ispreduobidajene oznake funkcije, u FORTRAN_jeziku dodato slovo A.
Argument u logaritamskim funkcijama (4.9. l0) i (4.9. 11)mora ispu_njavati uslov:
v>0
Relativna greEka pri izradunavanju funkcije je
€ < 0, 3?2. l0-8Srednje vreme izradunavanja logaritamske funkcije
4.9.3. Kvadratni koren
(4. s. t2l
(4. e. 13)
iznosi 230 s.sek.
Izradunavanje kvadratnog korena (y'i)ta, piSe se sa
za zadatu vrednost argumen-
SQRT( v ) (4. s. 14)
gde su izradunate vrednosti argumenta i funkcije rearni brojevi. vrednbstargumenta mora ispunjavati uslov
v>0
Relativna gre5ka pri izradunavanju kvadratnog korena iznosi
(4. s. l5)
(4. s.16)€ <0,298.10-?
Srednje vreme izradunavanja kvadratnog korena iznosi oko 140 s.sek.Ranije smo videli da se kvadratni koren mogao izraeunati preko ope_
^acije stepenovanja, tj.
(*)**0.5 14.9.17)
Medjutim, ovde treba imati u vidu da se izradunavanje stepena (4.9.171naradunaru vrii kori5denjem logaritmovanja i antilogaritmovanja. prema to_me, oblik (4.9. l7) je isto Sto i
EXP (0.s * Ar,oc(e)) (4.9.18)
Kako se izrazorrr (4.9. lg) poziva logaritarnska funkcija, dije vremeizvrSavanja iznosi 230 psek, i eksponencijalna funkcija, dije vreme izvr_Sivanja iznosi 310 Esek, to 6e izradunavanje kvadratnog korena trajati
56
oko 540 rrsek. Odavde 8e vidi da je izraEunavanje kvadratnog korena pre-
ko funkcije (4.9. 14) 4 puta brZe nego preko operacije stepenovanja (4'9'l?'
4. 9. 4. APsolutna vrednost
Apsolutna vrednogt aritmetidkog Lzraza( I'r'I ) pi$e se sa
ABS('I' ) (4' e' le)
gde su izraEunate vrednosti argumenta i funkcije realni brojevi'
Ako je izradunata vrednost argumenta ceo broj, apsolutna vrednost
se pi6e u obliku- IABS (v ) (4' e' 20)
pri 6emu je i vrednost funkcije ceo broj. Za ovtt funkciju Ee ne postavljaju
ogranidenja na vrednosti argumenta'
Srednje vreme dobijanja apsolutne vredngsti broja iznosi oko 4 sek'
4. 9. 5. Trlgonornetrijske funkclje
Kod svih trigonometrijskih funkclja izrarunate vrednostl argumenta
i fuikcije su realnl brojevi. Argument trigonometrijske fu[kciJe mora biti
zadat u radijanima'
a) Trigonometrijska funkcija sini pi6e se u obliku
SIN( V )
gde mora biti isPunjen uslov
lvlca, z3s.1o'
Relativna gre5ka, pri izra6unavanju funkcije, je
c < 0, 372. t0-8
a srednje vreme izvrSavanja oko 200 psek'
b) Trigonometrtjska funkcija cosv se pi5e u obliku
cos(v )
gde mora biti ispunjen uslov (4' 9. 22). Relativna gre5ka prl
koslnusne funkcije je
e ( 0,298' l0-t
(4. s .2tl
(4. e.22)
(4. e.23)
(4.9.241
izradunavanju
(.r.9.25)
51
a srednje vreme izvr6avanja oko 200 pgek.
c) Trigonometrijska funkclja tgV piSe se u obliku
TAN(*) (4.9.26)
gde mora biti ispunJen uslov (4.9. 22), pri demu vrednost argumer$a ne
eme bltl
(4.9.28)
coTAN( { ) (4.9.29)
gde mora bltl lepunjen uelov (4.9.22), pri 6emu vrednoet argumenta ne
gme biti
**(r. . |)"gde je k ceo broj.
Relativna gre6ka pri izraCunavanju tangesa je
c{1, ?4.10-8
a sr€dnje vreme izvrEavanja oko 22O y.eek.
d) Trlgonometrljska funkcija ctgv pi6e se u obllku
*^r kn
gde je k ceo broj.
Relatlvna gre6ka prl tzra6unavanju kotangensa je
a1|.74. lo-8
a srednje vreme izvrBavanja oko 227 ueek.
4. 9. 6, Inverzne trigonometrljske fun*ciJe
ARSIN ( V )
gde mora bltl lepunjen uslw
lv lrtRelatlvna greSka prl lzra6unavanju funkciJe Je
{4.9.2?)
(4.9.30)
(4. e. 31)
(4. e.321
(4.9. 33)
(4.9.34)
Kod svih inverznlh trigonometrijskih funkcija izraEunate vrednoeti
argumenta I funkc{e eu realni broJevl.
a) lnverzna sinuana funkcija (arcgln v I se pl6e u obllku
e{0,3?2' l0-E
5E
a srednje vreme izvr5avanja oko 310 &sek.
b) Inverzna kosinusna funkcija (alccos v ) pi6e se u oblilcr
ARCOS( v) (4. e, 3s)
gde mora blti lspunJen uslorr-(4.9.33). Relativna greEka je ista kao kod in-verzne sinusne funkcije (4.9.341, a srednje vreme izvr6avanja iznosi oko
325 psek.
c) Inverzna funkcija tangenea (arctg V ).p15e ee u obllku
ATAN (e) (4. e.36)
gde lzracunata vrednost argumenta moZe blti ma koJl realau broj. Relativ-ne gredka pri izracunavanJu funkc{e je
e(0, ?45.10-6 (4. 9. 37)
a srednje vreme izvrBavanJa oko 165 psek.
4.9. ?. Hiperbolldne funkc{e
Kod svih hiperboUtdh funkc[a izradunete vrednogti argumenta i fun-
kc{e su realnl brojevi.
a) Hlperbolldna slnuana funkctja (stnh V ) piEe ae u obllkra
srNH( e )
gde mora biti iepunJen ualov
lvl(r?4,6?3Relatlvna gre6ka pri lzraCunavardu funkcije je
(4. e. 38)
(4. e. 3e)
(4. 9. 40)e<0,149.10-?
a srednje vreme izvr6avanja oko 460 ssek.
b) Hiperboltdna kosinusna funkcija (coshv ) pi5e se u obliku
cosH( { ) (4.9.4r\
gde mora biti ispunjen uslov (4.9.39), a relativna gre5ka je ieta kao kod
hiperbolllne sinusne funkcije (4.9.40). Srednje vreme izvrSavanja iznosi
oko 485 p.sek.
I
I
l 59
c) Hiperbolidna tangensna funkcija (tgh V ) pi5e se u obliku
TANH( v ) (4.s.42)
gde izradunata vrednost argumenta moze biti ma koji realan broj. Rerativ-na gre5ka pri izradunavanju funkcije je
€ < o, ?45. 10-8
a srednje vreme izvrEavanja zavisi od vrednosti argumenta90 do 450 rsek.
Primer
(4. 9.43)
i kre6e se od
Na sedam kartica je zadato ? vrednosti za argument x, sa opi.somF8. 4. Izradunati vrednosti funkcija
y' = I -e-rsin2x+log(coszx).tgl,xy, = arcsin (1ft)+ tnlxl. arctgx
y, = y'Jr -tfril'+ sinhx - 2coshx
i Btampati u obliku tabele.
FORTRAN-program u ovom eludaju irna izgled:t{RItEt6,lo0t
100 F0R|{AI{ . I r 14X1 rX. r l4Xr' yl. rl5Xr.y2r I l5Xr . yr. t II=0l0 REAO( 5t200, x
200 F0RHAT(F8.4tvf = f .-Exl(__X, iSlN{ 2..X1 +ALOGtO(COS t X t +rZ } |TAN( x Iy2 = ARstil(x/loo.l+ALoctleS(xit*ArAil(xt _- .--..,..ry3 : SeRTtABS{.1._rANHtxf r fiiinnrxt_2.*cosH(xtltRtTEl6r:t001 xr Ylr Y2t Y3
_300 FoRr{ATt, . rF8.4ltl1ltii.ttI = I+lIFI I-Il lOr20rl0
20 sroPEND
IzLazni rezultati su Stampani u obliku tabelex Yl Y2
-75.t42t -o.5E284798 12 _0.7584949E-34.2885 -0.3989898E 15 _0.57991888-28.oo12 -0.i{87e51€ lz _o.stssiiie-2.t4to _0.erloe55€ ol _o. rol6irtE0.5604 0.3ell?scE 00 _o.zsiroile5.zoza 0..?z2s44sE or o.ziisilir17.3333 0.(72891rE 02 0.44;o7i7E
ol0l0t0lo00t0l
Y3
-0.7888761E 33-0. l16?8758 l6-0.2176315E r3-o.t42?1BtE 02-0.1035359E 0l-0. e08e070E 02-0.16854888 08
{. 10. Niredbe promenljivog bezuslovnog prelaska
Uslovns naredba prelaeke daje moguCnost grananja programa u trlrazlidite grane, pri 6emu je evaka pd njih usrovljena vrednosdu aritmetid-koglztaza. Vrednost aritmetidkog izraza se ispituje da Ii je manja, jedna_ka ili ve6a od nule. pored ovakve naredbe uslovnog prelaska, postoji i na-redba po kojoj ee prelazak vr5i po brojnoj vrednosti promenljive. Ovu na-redbu 6emo zvati naredba promenljivog bezuslovnog prela'ka. opSti oblikove naredbe je
GO TO (Uete),t (4. 10. t)gde je
GO TO - slulbena red, i oznaEava nafedbu prelaeka,lieta - epieak obelezJa izvr5nrh naredbt u programu medju sobom
razdvojenlh zal"ezlmE,
i - irne celobolne promenljlvg.
Neka llsta u (4.10. l) sadrri m obelezja, eleva nadesno oznadenlhsa nr, n2, . . . , n6, deJetvo ner€dbe (4. 10. l) je dlede6e:
a) Ako je brojna vrednost promenllve I = k, a k € [], m] , onda Ce
se lzvrdltl prelazak na naredbu ea obelelJem n1.b) Ako je brojna vrednoat promenlJtve I = p,a pd tl,ml , tada Ce se
pre6l na naredbu koja aledi neposredno lze naredbe (4. 10. l) u programu.Na sI.4. 10. I prikazana su grananJa koJa se vr6e naredbom (4. f0. l).
Kako je ovakav graftEld prikaz nepotrebno glozen uveden je odgovarajuclprosttji grafldld prlkaz (sl. 4. 10. 2]..
u FoRTRAN-jeziku poetojt r elternatrvni obrrk naredbe promenljivogbezuslovnog prelaska, koJl se pi5e
GO TO i, (lista) (4. to.2)gde je
GO TO - eluZbena red, I oznadava neredbu prelaaka,
i - lme celobrojne promenljive, a
Ueta - spleak obeleZJa izvrdnih naredbi u programu medju sobonr
razdvojenlh zarezlma.
61
Ako llsta u (4. 10.2) sadrZi m obelezja, sreva nadesno oznadenrh sarr,o2,...1'6 tada promenljiva i! mora imatl jednu od vrednosti zapiea_nih kao obeleija nr, nz 1...,n6, u trenutku izvrBavanja naredbe 14, ro,z).Izvr6avanje ove naredbe prouzrokuje prerazak na naredbu sa obererjem do_deljenim promenljivoj i. promenljivoj i moie se dodeliti obelezje u makojem dehi programa naredbom
ASSIGN n TO i (4. 10.3)gde je
ASSIGN - sluZbena red, i oznadava dodeljlvanje vrednosti obeleZjapromenljivoj,
- obeleZje izvrEne FORTRAN_naredbe, a- ime celobrojne promenljive.
sI.4. 10. 2
Dejatvo naredbe (4. f0. g) je elede6e: obelertrJe n( ltr, trr,...,,r.ldodeljuJe ae celobroJnoj promenljrvoj !. ovae je vazno imatr u vrdu razrikuizmedju obelezja i celog broja. vrednost obelerja ne more biti dodeljenapromenllvoJ! ako ge koristi aritmetidka naredba
t=n ({.10.4)
Razlog za ovo je interno predstavljanje informaclja u radunaru. ObeleZjekao lnformactja u ra.unaru nlje ceo broj nad kojrm se mogu rzvoditi arit-
n
i
IriirtNAREDBA
sI.4. 10. r
n/nr
@
metlEke operacije, ve6 adresa koja jednozna6no ukazuje na Jednu naredbu'
Zato 1e u FORTRAN-jeziku uvedena posebna naredba (4. f0.3), kojom se
promenljivoj moZe dodeliti vrednost obeleZJa. Medjutim, u naredbi {4.10.1)
promenulvoj I moZe se dodellti brojna vrednost sa ulaza ill aritmetidkom
naredbom. Prema tome, naredba (4.10. l) jeste pogodnlja za kori66enje u
programima, nego naredba (4. 10. 2).
Prlmer
Na n kartica zadate su brojne vrednosti promenljivih k,x1,x2 i x3,
gde je n r 99. BroJria vrednost promenljive k bu5ena je u prvoj koloni kar-
tlce, a zatim u slededa trt polja kartlce brojne vrednoetl promenljivih xt ,
x2 i xs ae oplsom F7.4. tzraCunatl vrednost y* na slededi na6ln
fz*l * sxi+ 4xf, ako je k = I
| ,*r-", )2+(x3-xs)2 ako je k = 2
yr = 1 4(x1-x2)(x2-r3)+xlxzxr ako je k = 3
t (r1+x2 +xr)s-8x1x2x! ako ie k = 4
(l)(2t
(3)
(4)
ALo t<{ lt,z,s,el taaa se ne vr5i nikakvo izra6unavanje- Rezultate
Etampati u oblilar tabele u kojoj 6e se u Prvoj koloni nalaziti broj k, a vre-
dnoat y1 Stampati u (k+l)-oj koloni. U ostalim kolonama Stampati zvezdi'
ce (*).
Ovaj zadatak se moZe re5iti na dva naEina: bez kori36enja i sa kori3-
denjem naredbe promenljivog bezuslovno g prelaski.
a) Prvo relenje: bez koriS6enja naredbe promenljivog bezuslovnog
prelaska.
Sema algoritma, u ovom sludaju, prikazana je na sl.4. l0' 3.
U algorltmu 8e dodeliuje, pre izratunavanja funkclje, simbol (*) kao
vrednost odgovarajude promenljive. Zatim 4e ovaj simbol biti zamenjen
vrednoEdu funkcije, u odgovaraju6oj promenljivoj y1 , Jr, y, ili y, , a u
zavi€nosti od toga po kojoj formuli 6e biti vrieno izradunavanje' Na ovaj
naEln u algoritamskom koraku lzlaza bi6e izdata brojna vrednost promen-
live k i jedne funkcije Yr, Yz, Y3 ili Yr' a ostale funkclje de biti izdate
kao almbol zvezdLce.
63
)x,G1.13,1
sI.4. 10. 3
Ovakav oblik izlaza u FORTRAN-jeziku ostvaren je dodeljivanjem
promeljivim yl, Y2, Y3 i Y4 brojne vrednosti ve6e nego Sto je to predvi-
djeno opisom odgovaraju6ih promenljivih u FORMAT-naredbi koja je pri-
druZena izLaznoj naredbi. Kako je promenljivim yl, y2, Y3 i Y4 pridru-
Zen opis F9.3 u FORMAT- naredbi sa obeleZjem 400, to znadi da rezultat
moZe imati najviSe 5 celih mesta. Ako se promenljivim dodeli brojna vred-
nost koja ima ve6i broj celih mesta, na predvidjenom polju za Stampanje
vrednosti promeljive bi6e Stampane zvezdice. Zato ie promenljivim Y 1,Y2,
Y3 i Y4 dodeljena brojna vrednost C = 108 , koja 6e pri izlazu dati simbole
zvezdice za one Promenljive kojima se za zadate vrednosti ulaza ne dode-
ljuje programom izra6unata vrednost po jednoj od formula (l), (2), (3) ifi
(4). FORTRAN-program eastav$en po algorltmu na sl.4. 10. 3. lma el,ede-
Ci izgled:tRITEt5rlool
lO0 FORilATI 3Hl Kr gIr rYl t r lOXr I Y2d r l0Isry3. rlOXr . y4. I IREAD(5r2O0l N
200 FoRxaTl t2tlO lF{Nr 2Ot2Ot3O20 sToP30 READ(5r30OI Kr Xlr X2r 13
3OO FORfiATI l?tTXrtl tXrF?.41 IYl . .lE9Y2rYlY3=YIY4jYllFlr-ll 40rllr4o
40 tF(K-21 iOt22r5050 lFl(-31 6013316060 lFlt(-41 7Ot44t'1044 Y+ . lll+X2rx31..3-E.rxlrx2.I3.r2
GO TO 7033 \€ - {.t(Xl,-X2lrlX2-X3l.Il.XZrI3
G0 ro 7022 Y2 . (Xl-I2l.a2+(I3-Ill.r2
GO TO ?Oll yl r 2..x1r.2+3.rxz..2+4.rl3rt2?O LRITE(6r4OOl Kr Ylr Y2r Ylr Y4
4OO FO8flATl. t tl2t2\t1(3IrF9.3l INrN-lco to loEND
tU prograpu Je promen[lvoj Yl dodeljena brojna vrednoat , lE9, tj.
l0l (prva traredba lspod naredbe sa pbeleuerp 3091. 4 zetlm promenljlvlm
Y2, Y3, t Y{ dodelena je brojna vrednogt promen}jlva Yl. Ovo je moglo
bittzaplFanoiuobllku
Yl = .1Eg
Y2= .rEgY3= .lEOY4= .rE9
Medjutlm, zapls sproveden u programu krcdt Je I prula manJe 6anri
za gre6ke pri bu5enJu kartlca. O ovome treba voditl racuna prl pisanju
FORTRAN-programa, I gde je god to mogude treba 6to krade zaplsatl 8va-
ltu fORTRAN-neFedbu.Po navedenom prograrnu tzraduneto Je 6 vrednoetl funkcija. Argu -
rnetltl se unose d opleom F?.4. MedJutlm, u polJu, na ksrtlcl, gde b'e
65
busi brojna vrednost argumenta declmalna ta6ka se mote nalaziti u bilo ko-joj koloni, r sve brojne vrednostr 6e biti korerrtno proditane. ovo je omogu-deno time 5to ukoliko poetoji neusaglaBenost izmedju broja decimalnih me_sta zadatih opisom I odredjenlh declmalnom tackom na kartlci, bi6e v8ra6ipolozaj decimalne taEke na kartict, a ne onaj zadat opisom. ovo je ilustro-vano i zadatlm ulaznim podaclma, gde se vldi da declmalna tadka nije u ie_toj koloni kartice:
6204I34
Izlaz'nl rezultati, za
K
4.2 -t.4 o.g3.e -5.O 4.4r 1.0 l.Z5 -3.6-0.4 1.05 -O.99I.35 0.62 -1.21.-6.20 0.48 L.256navedene ulazne podatke, Stampani eu u obliku tabele:
Y4Y3Y2YI
2 r:ttt*t't'r* +2.920 **,r*rr**,* ***t*rr**O attlat*lt* *,t!rt*:ra** *,r**trf++ tt***,.*:l*4 t+lat*ttr a*rt***nt ********* _lJ2.06OI l rt+B tl*t!t.r:.!i **r**t*** :l**at!3tl*3 *rtrrt:rrt {,+,t*,r*t,3:tr LO.705 *,r****t*,4 ,ltttf tll.+ tlr*t,t*t*t l*****r** _ 5r. 3gE
Prva kartica ulaznih podataka eadrii broj n, koji u ovom sluEaju i_ma vrednost 6. Druga kartica sadrii argumente za koje se vrednost funkci-je raduna po formuli (2). U pvroj koloni treCe kartice nalazi ee nula, 6toznadi da ne6e do6i do raEunanja ni po jednoj od formula (tl, e), (g) i (4).ostale kartlce sadrze argumente za koje ee ra.unaju vrednosti funkcijaredom po forrnulama (4), (l), (g) i (4).
b) Dnugo re6enje: sa kortBdenjem naredbe promenljivog bezuslovnogprelaska.
Sema algorltma, u ovom sluiaju, prikazana je na sl. 4.10.4. Algori_tam je isti. kao i na sI.4. 10. 3, samo Sto je ispitivanje vrednosti promen{i-ve k jednostavnije. FORTRAN-program zapisan po algoritmu na s1.4.11,4.ima slededi izgled:
6
+4?0
400
t{RtIEt6rl00lIOO FORI{AT(3Hl XrgXr tYlr;tOXf .y2r rl0Irry3rrl0Xr tfq. f IR€AOt5r200l N200 FoRr{atl I2tlo lFlNl 20r20rtO20 sIoP llt0 REAOl5r300t Kr Xlr Xzr Xt
300 FORllAtl l2t3Xt 3l 3X,F7.4t IYl = +0.1E+0912 - O. l.€ +9Y3 . . lE09Y4 = .lE9GO IO (Llt22t3tt44rr N
GO TO 701.1 Yl = 2.rXl*t2+3.r12**2+4.rXt.tz
GO TO ?O22 Y2 - (Xl-x2trr2+(x]_Xlrr.2
co to ?033 Y3 . 4.1(Xt-X2trlX2-X3r+XlrX2rX3
GO rO 70Y4 r lXl+I2+x3trr3-B.rXlrxz*x3.rzIRITE(61400l l(r Ylr Y.2r Y3t y4FORIIATI t t;12tZXt413XrF9.3l tN . l{-lGO tO r0€l{o
Neka obja5njenja programa:
l) Brojna vrednost lOt prolnenljivim y1, y2, y3 i y4 dodeljena jearitmeti6kim naredbama (prve Eetiri naredbe iza naredbe sa obeleZjem300), u kojirna je konstanta na desnoj strani zapisana u razliditim oblici-ma. Ovo ilustruje ekvivalente oblike zapisa iste konstante.
2J Znaci blanko (medjuprostor) su bez znaiaja ispred i u okviru za_pisa naredbe.
3) Iza naredbe STOP moie stajati prtoizvoljan, mak$inum petocifre-ni broj. Ovo je ilustrovano naredbom STOP pa obeleZjem 2e, ipa koje sto-jt broj 1l (proizvoljno izabran).
Obe navedene varijante progr:rma za iste ulazne podatke daju iste iz-Iazne rezul.tate. Plema tome, ovi programi su medju sobom ekvivalentni,I tim Sto druga varijanta predstavlja kra6i, pa prema tome i bolji zapis
Programa.
4.11. Dalje moguCnosti naredbe ulaza
4,11. l. Gre6ke na ulazu
Naredba ulaza omoguduje dodeljivanje brojnlh vrednosti promenlji-vim aa spoljnih nosioca informacija - kartica. Registrovanje podataka na
spoljnim nosiocima infotmacija-karticama vr6i se nezavisno od radunara.U pripremi bu5enih kartlca moZe dodi do gre5aka koje mogu biti otkriveneprl dltanju kartlca na ditacu kartica. po otkrivenoj grebci na ulazu, moZe
se upravljanJe izvr5avanjem.programa preneti na deo programa u kojem se
razreaava nastala gr.eEka na ulazu. U ovom sludaju naredtra ulaza pi6e ee
u obUku
READ(i, j, enn = n) lista (4.11. l)
U naredbl (4. ff. 1) dopiean je deo ERR = n, a ogtali deo naredbe je ranijeobJa6njen. ERR = je eluZbeni niz slmbola, a n obeleZje izvr6ne FOR-TRAN'naredbe. Skradenica ERR je uzeta od engleeke redi ERRor (gre6ka!
U elulaJu otkrlvanja gre5ke ns ulasu upravljanje se prenosi na FORTRAN-nar€dbu 8a obeleZrem n. Gre6ke na ulazu mogu biti prouzrokovane iz dva
razloga:\
67
sI.4. 10.4
- buBenjem nevaledeg koda u kolonl kartlce, ilt- neregularnlpn pololajem buiotlna na kartlci.
4.tL.2. Kraj ulaznih podataka
Kraj ulaznlh podataka moZe ge kontrolleatl programakl De dva nedl-
na:
a) unoSenjem broja ulaznih podataka, pre podetka unoEenJa podataka
diji se kraj kontroliBe. U ovom sluIaju kraj ulaznlh podataka konstatuje se
prebrojavanjem unetih podataka (vidi primer na kdju odeljka 4. l0).b) U paketu ulaznih kartica aadriaj zadnje kartlce moZe bitl karakte-
ristldan. Kraj ulaznih podataka u ovom glulaju raapoznaje Be identiflkaci-jom karaheristiEnog sadrZaJa zadnJe kartlce (vidi prlmer na kraju odeuka
4.8.5).
Pored ovih naclna raspoznavanja kraja ulaznih podetaka, ovo a€ nro-
Ze oetvariti i naredbom ulaza
READ(I,J,END=n) Usta (4. lr.2)
gde je END = eluZbeni niz simbola, a n obeleZje jedne lzvrEne FORTRAN'
-naredbe u programu, Naredba (4,11.2), po uno6enju gvih ulaznif podataki,
vrEi preno6enje upravljanja na FOBTRAN-naredbu sa obeletrjem n.
END i ERR mogu 6e po.Zeljt piaati u READ-naredbl. Moraju se pisa-
ti lza obeleZja FORMAT-haredbe j, a njlhov redoeled navodjenja je bez zna-
6aja. Tako se pored (4. 1 I. I ) i (4. f 1, 2) mogu plsati I obllci
READ(i, j, END=n1 , ERR=n2 ) liate (4. 11. 3)
READ(i, j,ERR=nr,END=n1 ) Lieta (4. 11.4)
Naredbe (4. f1.3) t (4. f1.4) su ekvivalentne.
4. 12. Deklarisanje vrste promenljive..-Unutradnja konvencija FORTRAN-jezika razdvaja promenljive po vr-
eti, na cilobrojne I realne, u zavisnosti od prwog slova imena promeljive.
Medjutim, nlje teEko pretpo6taviti da ime promenljive, koje odgovara pri-
69
rodi promenljive u problemu koji ee re6ava, moze btti u auprotnostl ss u-nutra6njom konvencijom o vrsti promenljive. Tako, MASA, kao ime pro-menljive, po unutra5njoj konvenclji jeete celobrojna promenljiva,a po pri_rodi problema, predstavlja fizidku veridinu koja po praviru nrJe ceo broj.
Da bi Je omoguEilo imenovanje promenljivih u auprotnosti 6a unu_tra6njom konvencijom, uvode se opisne naredbe koJima se moze deklarisa_ti vrsta promenljive po Zelji progratnera, Deklaracija vrete promenljiveopisnim naredbama, moZe biti: eksplicitna i implicitna. I jerrna i druga de_klaracija je starija od unutratrnje konvencije FORTRAN_jezika.
Opisne naredbe za deklaraciju vr6te promenljive pi6u se na podetkuPrograma.
Ekspllcitna deklaracija
Ehsplicitna deklaracija vrste promenljive omoguduJe deklarisanje iz_vesnlh imena promenljlvih kao ceLobrojnih, odnosno realnih promenljivih.Op$ti oblik ove opisne naredbe je
vrsta Usta (4.12, tlgde je
vrsta - eluZbena red INIEGER ili REAL,liata - spieak imena promenljivih, medju sobom razdvojenih zarezi_
ma, koje se deklari5u po vrsti.Tako oplsne naredbe
INTEGER A,GODINA, 812
REAL JOT, MASA,16
dgktrritu, u programu na dijem se podetku nalaze, prornenljive A, CODI_NA i Bf 2 kao celobrojne, a JOT, MASA i 16 kao realne pronenljive.
)4. 12. l,/Implicitna deklaracija
'--^-f
Eksplicitna deklaracija.eluZi za deflnieanje vrate promenljive po
konkretnom imenu promenljive. pored ovakve deklaraclje, Eoze se vrstapromenljlve deklarlsatl po poEetnom slovu imena promen{lve. Ovakva de_klaracija se zove lmpllcltna deklaraciJa vrste promenljlve t zadaje se opi-snom laredbom:
70
IMPLJCIT USIA (4.12.21
gde je
IMPLICIT - slulbene red, t ukazuje na implicitnu dekkiraclju vrstepromenljlve,
lieta - spleak saetavljen od elernenata medJu eobom razdvoJe-
nlh zarezima.
Elemenat liste u naredbi (4.12.2) je obllka
vrsta (lletal ) (4. 12.3)
gde je
vrata - slulbena re6 INTEGER ili REAL,
listal - episak velikih slova engleske azbuke medJu sobom razdvoje-
nih zarezlma.
Sve promenljive 6ija imena podinju elovima navedenlm u llstil , prl-padaju po vretl celobrojntm ili realnim promenljivim saglaeno sluEbenoj
re6i (INTEGER iU REAL), koja stoji na meato re6i vrstq, ispred odgova-
rajude llete.Ako slova engleske azbuke u (4.12.3) alede u azbudnom redoeledu,
- moZe ae umesto navodjenja svih slova, navesti aamo Prvo i zadnje. elovo
razdvojeno povlakom, tako da elemenat Uste moZe imati obUk
it: az
gde su a1 i az vellka elova engleske azbuke.
Primer
(4.12.4)
Opisna naredba
IMPLICIT REAL(I, L), NTEGER(A-F, Q)
deklari5e, u programu na 6ijem se poEetku nalazi, promenljive dije ime
podinje slovom I i L kao realne promenljive, a promenljive, dije ime
poElnje slovom A, B,'C, D, E, F iQ kao celobrojne promenljive.
?l
4.13. Tekstuelna obja5njenja u programu
4, 13. 1. Privremeni prekid rada i poruke operatoru
Naredba STOP prekida rad po programu bez mogu6nosti nastavljanja
rada po istom programu. Medjutim, ako postoji potreba da se izvr5i izve-
sna manipulacija u toku rada programa, kao Sto je promena ulaznih kartica,
papira na Stampaeu i sl. moie se izvr5iti privremen prekid rada po progra-
mu, Ovo obezbedjuje izvr6na naredba
PAUSE (4.13. l)gde eluZbena red PAUSE ima znaEenje privremenog prekida rada po pro-
gratnu. Naetavak rada po programu vr5i operator odgovarajudom manipu-
lacijom na komandnom pultu radunara. U nastavku rada, po programu, iz-vr3avanje programa podinje naredbom koja sledi iza naredbe PAUSE ko-jom je izvr5en privremeni prekid rada po programu.
Ako postoji viSe naredbi za privremeni prekid rada po programu, o-
ne 6e mogu ozna6iti brojevima. Tako se moZe pisati
PAUSE n (4. 13 , 2l
gde je n neoznaden ceo broj koji ukazuje na naredbu kojom je izvr5en pri-vremeni prekid rada po programu.
Ako se Zeli izdati saop5tenje kojim se obja6njava razlog privreme -nog prekida rada po programu, moZe se pisati
PAUSE Uteral (4.13.3)
gde je literal tekot kojt ee biti Stampan kao poruka operatoru ili programe-
ru.
Tako naredba
PAUSE ,PROMENITI PAPIR NA SIEIIPAEUI
vr6i privremen prekid rada po programu, i Etampa tekst koji ukazuje ope-
ratoru da treba izvr5iti promenu papira na Stampadu. Posle promene pa-
pira na 5tampadu operator zadaje naetavak rada po programu i izvr5ava -nje programa se nastavlja naredbom koja sledi iza naredbe PAUSE.
72
4.13.2. Komentari u programu
Ako se Zeli, u programu, plsati tekst koji objaEnjava program iU po_jedlne delove programa, radi rakEeg pradenja argoritma, moze ge korrstl-ti plsanje komentara. Komentar podirije slovom C i mole da sadrZi slova,clfre I specijalne znake.
Kada se komentar bu6i na kartici, u prvoJ koloni se buSi elovo C,a od 2. do 80' kolone tek.t komentara. Komentar se ne analizrra od stra-ne programa za prevodjenje, ved u onom obliku kakav Je bio na ulaznlmkarticama, lzdaje se na Btampanl dokumenat na kojem se Btampa FOR_TRAN-program pri prevodjenju na ma5insld jezik (vldi glavu 2).
4. 14. Primeri
4. 14. l. Izradunavanje teZlrta
zavrte parova. zadatih dlmenzija r i a odreditr koordinate teziEtapovrEine na e1.4. 14. l. Velldine g i : su zadate sa dva gela i dva decl _
malna mesta. Rezultate flqmpail u obllku tebele:
IZRAEUNAVANJE TEZISTA
sI.4. 14. r
Koordinate teZi{ta na eI.4. 14. l, mogu se izradunatl pomoGu formula
X=- (4. 14. I )
(4. 14.2)4r2 -3a2
Y = siF7iiSema algorltma prikazana Je na s1. 4. 14.2
XYAR
er.ffi.
?3
sl.4. 14. 2
Program eastavlen po dgorltmu na el.4. 14.2 lma aledeGi izgled
C TEII3TE RAvNE FIGURElRlfEl6rl0l
l0 FoRtttt r tr ll3rr I lzRAcuilAvAr{JE rEilsrar/lr0r r7I r I Rt ;91 1 .A. r 9xr I I.,9xr .Yr / IR€AOl5r20rEtlO.{Ol R' AFoRfiAT t 2F5.2 tX r -AtR/l3.l4rR+2.rAtY s (4.*Rlr2-t.a[.rz, I lt.*3.14*R+6.*AlrRITEl6r30l Rr Ar X, Y
30 FoRllATlr rr4Fl0.2tGO TO l5
40 rRtTE{6r50150 FOR'IATI IOI I'KRAJ PROGRAIIAI I
sroPENO
Za zedate ulazne podatke, lzlazrrd rezultatt se dobijaju u obliku tabele:
IZR CUilAVANJE TEiISTA
AI Y
-2.30I .956.65
I520
R
30.o030.00{0.o0
(RAJ PROGRA'II
40.o030.0030.OO
-6.89-5.84-6-47
?571
4. 14, 2. Statistl6ld.Prlmer
Izvr6eno Je nlz merenia. Svako merenJe daJe jedan podatak x1 , koJl
Je buEen na kartlci od 1. do 10. kolone. Saetavlti Program koji 6e utvrdltl
broJ merenJa (n) I lzraEunati ar€dniu vrednost
(4. r4.3)
I gtandardno odetupanje
6= (4. 14.41
kao I odstupanje pojedinih merenja od arednje vrednoeti.
lzLezne r"ezultate Stampatl u obliktr tabele:
X - NADX
SREDNJA VBEDNOST = i
STANDARDNO ODSTUPANJE = o
Algoritam je prikazan na sI.4. 14.3. Kao Eto ee vidi ea slike, atgorltam
ee aastoji iz dva dela. U pnrom delu ge vr6t uno6enJe ulaznih podataka u
cilju izra6unavanja srednje vr€dnoetl, a u drugom delu ae vrbl ponovno u-
no6enje ulaznlh podataka u cllju lzradunevanja odstuPenJa Poiedlnih mere-
nJa od erednje vrednostl I lzradunavanja etandardnog odstupanja'
- 1$" =i &*,
(i I o'-'))i
xN
I2
cC
c
sI.4. 14. 3
Program sestavlien po algoritmu na sl.4. 14' 3 ima slededi izgled:
PROGRAIT ZA IIRACUNAVANJEiniin.rt vREonosrt I sTANDARDNoc oosruPANJA
REAL NAOX
^l=ONADX = 0.ll0 REAOl5rl0rEND=201 xlo FORqAT(FlO.0l
TADT = NADX+XN=N+lGO TO 30
20 PAUSE IPOSTAVITI PONOVO ULAZN€HRlrEl6r40l
h+1, n
tzL..n,x,x,r
PODAT'(E NA CITACI
7877
40 FORXAT {/ I I I I tx t.N. r l2X r I X I r I 5xr . I_tI ADx. LIIADI = NADX./NN=0SICT|A - 0.
70 R€ADI5rl0rEt{D'50} tfl r t{+lIR : X-ltAOXSIGIIA . SIGilA+XRtXRTRITE(6r601 Nr Xr rR
60 FORIIATI r ir J3r5XrEl4. 7,5X,Et{. 7'co To 70
50 SIGllA r SQRTIStcHA/NtTRIIE(6,80I NADT,SIGTIA
80 FORt{Af(/. SREDNJA VRCDI{OST-.,it4.ttl*. STANDARDNO oosTupAr.t.re.i reri. zt
STOPENO
ze z".dsle ulazne podatke xr , lzlazni r€zultati 6e dbbljatu u obliku tabele:
Algoritam za izradunavanje korena Jednadine (4.14.5) prlkazan jena s1.4. 14.4, gde je uzeto da je e = l0-r
sr- 4.14.4.
FORTRAN-program napfuan po &lgorttnu na el.4. 14.4, lma eledeGl lzgted:
C PRT'IEi TTERACIONOG POSTUPKAccC TILAZ ZIGIAYTJA TABELEc
tR trE ( 6r'10otIOO FOR'IATIIIIZR,A'UilAVANJE KORENA JEONACIXE'.f Sll{lX, . AlXr ll /l6Xr rArrl2XrrXr/lcC ZADATA GRANICA APSOIUTII€ ERES(E tEPS'c
CP3'l.E-{
3 0.21r6500E 0l -o.538t3t8E Ol{ 0.21820008 035 0.2210000E 036 0.22{}500E 037 o.22652008 Ot
SREDAIJA VREDNoSI= O.22lO3L3E 03
STANDARD{O TIDSTUPATT|JE= O.3472305t Ol
4. 14. 3. IzraCunavanje korena transcendentne jednadlne
Odredlti naJmanJl pozltivan koren tranecendentne jednaClne
"irr'=* (4.r4.s)x
za zadate vrednoett parametra A 1z lntervarq [0, t; t,0j. Zt tzra6unava-nJe korena prlmenitt lteratlvan poatupak
AXtrr =
-
aU Xl
gde je xo = tr/2. Iterativan poetupak prektnud kada bode lepunjen ualov
NX
I 0.2190000E 032 0.2225000E 03
x-tAox
-0.20313{2E Ol.0.I468658e 0l
-0.2831345€ Ol-0.31 341 t'E-O r0.33186{eE or0.5488647E Ol
gde je e zedeta ta6noat.lx'., - xrl<e (4. t4.71
7E
cC UIAZ PARAI4ETARA 'A'cl0 REAOl5r200rEND-701 A2OO FORfiAT(F5.2IcC IESTIRANJE PARAXETRA 'A/c
tF(a-.tl Lot20t2020 IFIA-l.l 3Or30rlOcC POCEINA VREDNOSI KORENA IX'c30 X-3.141592r. icC IT€RAClor'tI CIKLUSc{0 II . A/SIN|X!
IFlAESlXr-Xl-ePSl 60r5o,tO50 X.XX
G0 T0 +0cC TZLAZ PAN,AilEIRA 'A' I I(ORE{A IX'c60 tRITEl6r300l Ar I300 FoRIAIl6Xr2lEX,F5.2ll
GO IO l0cC ZAVRSEIAK PROGRAXAc70 ttIlE I 6, roo I4OO FORI'ATI/' XRAJ PROGRA'IA"
stoPEr{0
Za zedele vrednoati parerDetra A, lzlazni rezultatl re Etampaju u ob[kutebele:
TZR^CUilAVANJE KOREI{A JEDNAEIil€ STNIX) = ^./T
0. lo o.a2o.tz o.tt0.6! 0.8tt.00 l.ltrIAJ PROGRA'II
U programu je promen[lva xl , iz algorltmr ne s1.4.14.4, ozna6e-
na se xx.
5. PNOMENUIVE SA INDEKSIMA . NIZOVI
5,l. Definlcija niza
U mnogim oblastima primene matematike, dolazi do potrebe izvodje-nJa operaclja nad grupom brojnih podataka. Da se ne bi pojedinaCno imeno-
vall brotni podacl, ovakva grupa dobija zajednidko ime. Tako se uvodi po-
Jam vektora, determinarte i matrice. FORTRAN-jezik pruZa mogudnosti
lakog zapiea grupe brojnlh podataka. Ovakva grupa brojnih podataka regis-truJe ee u memor{i talco ifto se svaki elemenat grupe registruje u jednom
memoriJekom regiatru. Neka eu registri memorije adreeirani redom sa
L, 2, 3, .. ., n, gde je n broj regiatera memorije. Neka gr.upa brojnih poda-
taka, koja se tell registrovati, eadrZi m elemenata (brojeva). Ako je prvieleBenet grupe regl8trorran u registru ea adresom r, tada Ce za registro-vanJe cele grupe bitt upotrebljenl redom registri
r, r+1, r+2, .,. , r}m-l ' (5. l. 1)
Sadrlajl regiatara (5.1. l) Jeeu brojni podaci grupe, Sto znali da se
svake grupe broJnih podataka prlkazuJe u memoriJi u obliku jednog nlza bro-
Jeva, bez obzira na raapored broJeva u grupi.
ViSe podataka aa zaJednldldm imenom, u FORTRAN-Jeziku zove se
niz. Prematome, veldorl, deternlnente I matrice u FORTRAN-jeziku |i-6u ae kao nlzovl.
Tako, kede re elem€rtl mstrice
80
(5. r. 2)
registruju u memoriji raEunara, tada se formira niz u obliku
att,aut,a31,a11,aer,alz,att,art,ag3,t14,a:t,alt (5.1.3)
Ako je prvi elemenat art reglstrovan u registru 6ija je adresa 300,onda 6e za regiatrovanje matrice A, biti angazovani registri
300, .301, 302, ..., }tt
diji Ce sadrtraji biti redom elementi niza (5. 1.3).
(s. r.4)
5.1.1. Irne niza i indeksi
Ime niza defini6e se na iati na6in kao i ime promenljlve. Medjutim,ako jedno ime predstavlja ir'e promenljive, to 6e ne more kori'titi isto i-he i za ime niza.
Da bi emo oznacili pojedine el€mente niza uvode se lndeksi. vrednostindeksa je ceo broj kojim se jednoznadno odredjuje jedan elemenst niza.Broj indeksa niza zove se dimenzija niza. Niz moze bitl jednodimenziona-lan, dvodimenzionalan itd. do rnaksimum sedmodimenzioualan. Tako da jeopsti oblik promenljive sa indeksima
ime (lista) (5. l. 5)
gde je
ime - ime niza koje se definiEe, kao i ime promenljive,lieta - epieak indeksa medju sobom razdvojenih zarezircrra.
Broj indeksa mole biti najmanje jedan, a najvlSe sedam.
Indeke moZe biti aritmetiCki izraz, Eija ee brojna vrednost izracuna-va, a zatim za odredjivanje elementa niza prevodi u celobrojnu konstantu.
Vrednost ovako dobijenog celog broja mora biti veda od nule i manja ili jed-naka najvedoJ predvidjenoj vrednostt indeksa. NaJvece predvidjene vredno-sti indekea nlza moraju biti zadate na po6etku programa za svaki niz koji
^ f':, :::;, tii]Ltr, asz 3sr a
81
se pojavljuje u Programu. Ovo se zadaje opisnom netedbom
DIMENSION lista (5. r. 6)
gde je
DlMENsloN.sluZbenareE,iodredjujeopisnunaredbuzadefiniga-nje maksimalnih vrednosti indeksa,
li6te - sPissk sastavljen od elemenata, medju gobom razdvo-jenih zarezima.
Elemenat liete (5' 1.6) piSe se u oblilm
ime (lista) (5. 1. ?)
gde je
lme - ime nize,
llata - episak celih neoznadenih brojeva, koji predstavljaju najvedemogu6e vrednosti indeksa, medJu eobom razdvojenih zsrezi-ma.
Tako se mole Pisati
DTMENSION A(r0, r0), vEK(50)
Eto znatt da 6e u Bemoriii raEunara biti rezervisano 10o regietare ze e-
lemente mstrlce A i 50 registara za komponerte vektora VEK'
5. 1- 2. Vrsta niza
Povrstinizovisedelenacelobrojneirealne.Akosuevielementiniza cell broJevi, oada je niz celobroJan, a ako su elerrerdi nlza realni bro-
levi i niz Je reilan. Vrsta niza Je odredjena unutraSniom konvencijom FloR-
TRAN-Jezika, kao i vrsta promenljive, tj. ako ime niza poEinje slovom I,
J,K,L,M ili N, onda Je niz celobrojan, e u auprotnom niz je realan'
Ako ge Zeli nizu dodeliti ime koje je u suprotnosti 8a unlrtragnjom
kornrenclom FORTRAN-jezika, moze 8e korlstittr ekeplicltna tlt lmplicitna
deklaraiijavrate niza. ,Ekeplicitina,deklaracija vrgte niza vr6i se.oplenim
neredbama REAL ifi INTEGER, objafnjenim u odeljku 4'tz't; Ime niza se
navodi u jednoj od ove dve naredbe u zavignosti od toga koje je vr6'te niz'
I
82
Ako se deklari.e realan niz, navodi se ime niza kao elemenat liste naredbeREAL, ili ako se deklari.e cerobrojni niz, navodi se ime niza kao eleme-nat liste naredbe INTE.ER. opisnim naredbama REAL i TNTEGER poreddeklaracije vrste niza mogu se zadati i najvece mogu.e vrednosti indeksaodgovarajuceg niza. Tako u ovom sr.ucaju elemenat u listi ovih naredbi mo-te imati oblik (5.1.?). Ato eu makeimalne vrednosti indekea definisane unaredbi REAL ili INTEGER onda ovo ne trebe posebno pieati u naredbi DI-MENSION. Medjutim, za svaki niz koji se koristi u programu moraju se de_finieati makeirnalne vrednoati rndekea, odakle sredi da ee svako ime nizamora pojaviti ili u naredbi REAL ili INIEGEB ili DIMENSION. Tako se mo-Ze plsati
(5. l. 8)
(5.1.s)
Naredba BEAL deklarige matrice M i J kao realne nizove, a naredba INTE-GER deklariSe matricu A i vektor T kao celobrojne nizove.
Implicitna deklaracija vrste niza vrsi se na ieti nadin kao i implicit-na deklaraclja vrate promenljive (vidi odeljak 4. lZ.Zl. To ee postiZe opis_nom naredbom IMPLICIT, kojom se vrsta niza moZe deklarisati_po poaet_nom slovu u imenu niza. Tako
IMPLICIT REAL (J, M, INTEGER (A, T)
f,EAL M(5,121, J(2o,20)TNTECER A(5,5), T(10)
(5.1.10)
deklariSe sve promenljive i nizove dija imena poEinju slovom J ili M kaorealne promenljive, odnoeno nizove,.i eve promenljive i nizove 6ija ime_na po6inju slovom A ifi T kao celobrojne promenljive, odnosno nizove.
?reba uoEiti razliku lzmedju deklaracije (S. l. l0) i (S. 1. 8) odnosno(5' l'9)' Deklaracija (s. l.ro) deklari.e eve promenrjive i nizove cija ime-na po€inju alovon J ili M odnosno A ili T, dok deklaracija (b. l. B) i (S. 1.9)deklarise samo nizove 6ija eu imena M i J, odnosno A. i T.
Eksplicitna deklaraciJa vrate promenrjive i niza irna najvi6i prioritet,a zatin inplicitna deklaraciJa vrete i na kraju unutrasnja konvencija FoR-TRAN-jezika.
83
5. 2. Jednodimenzionalni nizovi
Elemenat jednodimenzionalnog
ime (i) (5.2. r)
gde je
ime - ime niza,
i - indeks niza.
Maksimalna vrednost indeksa niza moZe biti zadata u naredbi DIMEN-SION ili REAL ili INTEGER. Niz, u ovi.m naredbama, navodi se kao ele-menat liste u obliku
ime (i*,) (5.2.21
gde je i-.,ceo neozna6en broj koji odredjuje maksimalnu vrednost indeksa,
odnosno broj elemenata niza. Tako naredba
DTMENSTON A(20), VEK (s0) (5.2.3)
defini5e 20 elemenata niza A:
A(1), A(2), A(3), . . ., A(20)
odnosno 50 elemenata niza VEK:
vEK(l), vEK(z), .. ., vEK(50).
Elemenat niza zove se promenljiva sa indeksom. Svaki elemenat ni-ze regictruje se u jednom memorijskom registru. Sve Sto je rebeno da va-
Zi za obianu promenljivu vali i za promenljivu sa indeksom.
5.2. 1. Jednodimenzionalni nizovi u listi ulazno-izlaznih naredbi
Nizovi se pojavljuju kao elementi liste ulazne naredbe, kada se vrsidodelJivanje brojne vrednosti elementima niza sa ulaza. Ako se vr3i izda-
vanje brojnih vrednosti pojedinih elemenata niza tada se nizovi pojavljuju
niza ima opSti oblik
84
u liati izlazne lraredbe' Elemer$i jednog niza mogu se pojaviti na v15e na6i-na u liati.ulezne, odnoano lzlazne naredbe.
a) Ako elementi nlza ne elede jedan za drugim po odredjenom zakonu,tada ae mogu navoditi u ligti na isti narin kao imena pt'omenljivih. Tako eemoZe pieati
READ (5,10) A(4), A{2), A(s), A{r5)
Sto znadi da Ce elementima A(4), A(2), A(B) i A(1S) niza A biti dodeUeDebrojne vrednoati sa uleza.
b) Ako elementi niza koji 8e navode u listi slede u.redosledu, poEevod elementa m, do zekljulno sa eleo.entorn Erz, tada ae moze plEati ele-meDt liste, u ulaznoj, odnoano izlaznoj naredbi u obliku
(ime(i), i = m1,m2) (5. 2. !)gde je
ime - ime niza,
i - ime eelobrojne promenljive,r[1, m3 - celi neozaadeni brojevi ili celobrojne promenljive.
zapie (5'2'4) ima isti efekat kao da su erementi niza u listi, navde-nl u redosledu
ime(mr), ime(m, +l), .. ., ime(m2)
Ako se evi elementi niza tele navesti u listl,evodi na
(ime(i),i = l,iq) (s.2.6)
umesto oblika (s.2.61 moi,e se pisati i samo ime niza u risti, tj.
ime g.z.7l
Prema tome, ako u listi ulazne, odnosno izlazne naredbe etoji samoime niza, to ime isti efekat kao da su navedeni elementi niza podev5i od pr-vog do posrednjeg. Informacije o tome koliko niz ima elemenata sadrza'a
(5.2.5)
onda se oblik ( S, 2 . 4)
85
j
je u opisnin naredbama DIMENSTON tU REAL lli INTEGER'
c) iko elementt niza koji ae navode u listi ne slede jedar iza drugog,
moze 3e u listi Pis8ti oblik
(ime(i), i = -t, mz, mr) (5. 2.8)
gde sve oznake imaju isto znadenje kao i u (5. 2-4), a uvedena v€Udina m!,
moZe biti ceo neoznaten broj ili celobrojna promenliiva. Zapis (5' 2'8)
ima isti efekat kao da su elementi niza nabrojani u fedosledu:
ime(m), ime(mr+mr), ime(mi +2m!), ..., ime(mr+kmJ (5'2'9)
gde Je
(5.2. 10)
gde erednja zagrada oznadava celobroJni deo koli[nika
Prema tome, oblik (5' 2.8) eadrli k+l elemenst niza, koji eu Davede-
ni u (5.2.9).
5,2.2. Elemerti niza u eritmetickoj naredbi
Elemedi niza mogu se na6i na levoj ili na deenoj strani znaka Jedna-
koeti u aritmetickoj naredbi. Pojava elementa niza u aritmetidkoJ naredbi
ima isto znadenJe kao i pojava obidne promenljive. Ako 6e elemenat niza
pojavljuje na desnoj strani tada predstavlia argumenat aritmetickog izta",
a ako se pojavuuje na levoj strani onda je to elemenat niza kojem ae dode-
ljuje brojna vrednoat izracunata aritmetickom naredbom'
Primer
Na kartici je zadato 10 brojevri u formatu F8.3. Sastaviti program,
koji 6e uneti brojeve se kartice u memoriju radunara, itampati nJihove
broJne vrednosti I lzra€unati i Etampati njihw zbir.
-=l=rl
\t
86
Ovaj zadatak Cemo re5iti na dva na6ina: bez kori5denja aizova i sakori5denjem nizova u .programu.
a) Prvo re5enje: bez korilldenJe nizove u programu
READ ( i, lO I _Xl r X ? r X3 t 14 t X5 t X6 t Xlr Xrtr 19r XIOl0 FoRfllTltoFS.3ty.Il+x2rl3+x4+x 5+x6+x7+x8+x9+xI ollRlTE( 61 201 -
Xl r X2r X3r I4r X5 r X5, 17, lgr Xe I X ; 6, vZo FoRfiaT(r, rlOF12.31t; vJ;,ig.ttS Toe€l{D
b) Drugo re6enje: se koriEdenJem nizova u programu
DI^tEltsloN xt lo IREID(irl0t Xlo FoRltATaloFS.3'y-O.lrl
l3 Yry+I(IllF(t-l0l ltrl2rlt.ll I.Irlco ro 13l2 tRtTEl6r20t x,Y
20 FOR'{ATl I rrlOFl2. rll. y..rF9.3tstoPEIID
Prvo resenJe zahteva uvodjenje promenljivih (X1,X2,, , ., XIO) kojima8e dodeljuju brojne vrednosti zadete na kartici. Iete promenljive se mora-ju naveati u aiitmettEkoj naredbi da biemo izradunali njihovu sumu. Medju_tim, u drugom reitenju, gde su kori.Cenl nlzovi uvodi ae Jedno ime niza (X) ,a promenom indekga postite se isti efekat kao i u prvom resenju. prvo re_senje je moglo biti primenjeno u slu.aju 10 brojeva, medjutim, da se radiloo vedem broju brojnih podataka, napr. 1000, ovo bi bilo nemogude zapisatiuvodjenjem 1000 imena promenljivih, dok se drugo regenje bitno ne menjapovecanjem broja brojnih poclataka. Tako, ako bi se radilo o 1000 brojevaniz.X bi bio definisan u DIMENSION-neredbi kao X(1000) i predvidieno su-miranje bi se moglo izvrsiti zamenom broja l0 sa lO00 u naredbi Il...
t\
8?
5. 3. Ciklidne algoritamske strukture
5.3. l. Naredba za opis Programskog ciklusa
ciklidne algoritamske struKure vrlo se cesto javljaju pri sastavlja-
nju algoritama za regavanje razliditih zadataka' Kao sto je obja5njeno u o-
deljku 1. 4., izlazni kriterijum iz ovakvih ciklusa moZe biti razlidite pri-
rode. Najde5de, su ovi kriterijumi brojadkog karaktera' tako da se pomo-
Cu njih kontroli5e broj ponavljanja ciklusa. Kada se ciklus izvr5i zadati
broj puta, vr5i se izlaz iz ciklusa. Da bi se omogu6ilo lako pisanje rrvalcvih
cikluea u FORTRAN-jeziku postoji posebna naredba za njihovo definisanje'
to je naredba oblika
DO n i=m, ,m2,ra3 (5.3.1)
gde je
DO - sluZbena red FORTRAN-jezika'
n - obeleZje jedne izvr5ne FORTRAN-naredbe' koja se naiazi iza' naredbe (5.3. 1),
i - ime celobrojne Promenljive,
rn1 I m2 mr- celi neoznadeni brojevi ili irnena celobrojnill promenljivih'
Naredba (5.3.1) ima sledede zna6enje: naredbe koje se nalaze ispod
naredbe (5.3.1) zakljutno sa naredbom 6ije je obeleZje n' 6ine programski
ciklus, koji 6e se izvrSiti k+1, puta gde je
(5.3.2)
Promenljivaf pri prvom izvrsavanju ciklusa ima vlecnost ml ' a pri
svakom slededem izvrSavanju prethodna vrednost promenljive 1 poveCava
6e za m3 , tako da promenljiva i uzima redom vrednosti
i = m' mr +m3 , mr +2m, , ..., mr +km3 (5.3.3)
Promenljiva i zove 6e inrleks ciklusa, a m, je potetna vrednost incieksa'm,
gornja granica indeksa, a m3 prirastaj indeksa. Na sl' 5'3' 1' prikazana
je Sema.cikliene algoritamske strulcture koja se realizuje naredbom (5' 3 1)
- = Fs'-al
88
si. 5.3. I sl. 5.3.2
Sema na sl. S.3. t sad,rZi detalje koji ee uvek ponavljaju kod ove vr_ste programskih cikrusa, kao sto je postavljanje podetne vrednosti indeksaispitivanje izraznog kriterijuma i pove.anje indeksa za navedeni prira.taj.Da bi se izbeglo ovo ponavljanje uvedena je ekvivalentna gema na 61. 5.3.2.Iz Seme na sl. S.3.1. vidi ee da Ce se algorltameki koraci, koii Eine cit<-lus, izvrsiti najmanje jedanput, bez obzira na odnos izmedju velicina mrimr.
. Ako je m, =1 ne mora se navoditi u naredbi (S,3.1) , pri demu sepise ni zarez ispred m3 r pa se oblik (S.g.l) svodi na
DOni=mt,mr(5. 3. 4)
gde je znadenje pojedinih simbola isto kao i u naredbi (5.g. l) s tim 5to jek uvek ceo broj i iznosi
k=mr -m, (5.3.5)
izlaznog kriteriJuma u ciklusu napa Ce algoritameki korak za ispitivanjesl. 5.3.1 biti
L-mr*kntr,
L*ms + L
I =_-, (;. 3. 6)
-€9
Prema tome, u rluCaiu nattdbc cllhr.r u oblttu (5.3.4) prolazl kroz clklug
vrle ge 8a vrednoatima lndckaa
i=Et, mr*1, mr+2,..., E, (5.3. ?)
Zadnja naredba u ciklugu (naredba sa obeletjem a) ne eme bitt Jedna
od slededih naredbi
co roPAUSE
STOP
IF (po vrednosti aritmetidkog lztazal
DO
Primer
Ranlje navedeni primer, nqtrraju odeljka 5.2.2., u kojem ae vrgisabiranJe 10 broJeva, kao eleme-nata niza X, mote 6e reSlti primenom na-
redbe ciktu6a. ReSenje uFORTRAN-jeziku ima elededi izgled:
Olr.tENStOr{ Il lOlREAO|5rl0l I
l0 FoRfiAtlloft.3tyr0.OO ll l.lrl0
ll YrVrIl I ITRITE(6,20I Y
20 FORT,|AI(r f:rlF9ollSTOPENO
U orrom sluEaju programsld ciklus BadrZi jednu naredbu
Y=Y+X(I)
koja se izvrdava 10 puta, zg vrednosti promenljive l=1,2,3,...,10. Kako
je pre ulaska u ciklua promenljivoj Y dodeljena vrednogt nula, a svaki pro-
lazak kroz ciklu8 povedava pr€thodnu vrednoat promenljive Y za odgovara-
Judu vrednoat elomenta nize X, to de po izlaeku iz clldusa vrednoat Promen-
lJtve Y bltl euma zadatih 10 elemenata nlze X.
90
5.3.2. Naredba bez dejstva
U FORTRAN-jezikil postoji mogu6noetOva naredba se pile u obliku
zaplsa naredbe bez dejstva.
CONTINUE (s. 3.8)
gde Je
CONTINUE - eluibena reE i oznadava naredbu bez dejstva.Izvr6avanJe ove naredbe ne proizvodi nikakve promene u 4adunaru,
ve4 samo prelazak na naredbu, koja treba da se izvrgi iza ove naredbe.Ovde treba razlikovati dva sluCaja:
1) Ako je naredba (5.3. S) zadnja naredba programekog ciklusa, tadaie posle ove naredbe do6i do ponavljanja ciklusa, ako to zahteva izrazni kri-ierijum, odnosno do prelaska na naredbu koja sledi iz.a naredbe (S.3. S), a-ko se izlazi iz ciklusa.
2) Ako naredba (S.3. g) nije zadnja naredba ciklusir, tada izvr3avanjenaredbe (5.3.8) predstavlja prelazak na naredbu koja sledi iza ove naredbe.
Naredba (5.8.8) koristi se u programiranJu, naJ€eSCe u slededa dvasluCaJa:
f) Ako bi zadnja naredba ciklusa trebalo da bude neka od nedozvolje_nih naredbi, tada se kao zadnja naredba moze koristiti naredba (5.3. g).
2) Ako se Zeli izbaciti iz programa naredba koja ima obeleZje, tacla,da se ne bi menjala obelezja, moZe se na mesto izbadene naredbe ubacitinaredba (5. 3.8) sa istim obel< Ijem.
Primer!
Zadeta su dva niza brojeva x, i y,
z, ='\'Jr
pri Cemu ako je y* = 0, uzetida je z* = 0, k€ 1r,r,...,SOf . Elementinizova xi i y, su brojevi sa maksimum 3 cela i 3 decimalrra mesta. Nekase na jednoj kartici nalazi l0 ovakvih brojeva. prema tome, ulazni podaci
i = 1,2,...,50
tzL^z: z
sI. 5.3.3.
nalaze se na l0 kartica i to na prvih 5 nalaze 6e elementi niza x' a na dru-
gih 5 elementi nlza y. Blok-gema algoritma prikazana je na sl' 5 ' 3 ' 3 '
Program sastavljen po algoritmu na sI' 5' 3' 3' ima slededi izgled:
olrtEr{sIoN x( 501'Yl5Ol rZ(5OlREADl5r50l XrY
5o FORr{ar(10F8.31DO 30 I=l'50lF(YlIll l0'20rlO
to Zllt=x(lllY(I!30 CONTINUE
tlR I TE t 61 60 I ( Zl I I r I =l ' 501
FORHAT( r r17Xr. 1". // lr r rgl4.7l I
STOPZ(Il'0.GO rO l0END
. U ovom primeru naredba sa obeleZjem 10 sadrZi operaciju deljenja'
Ova operacija se nalazi u ciklusu, jer je treba izvrSiti 50 puta da bi smo
formirali niz Z. Medjutim, u operaciji deljenja delilac ne sme biti jednak
nuli. Zato se pre dolaska na operaciju deljenja vrSi ispitivanje vrednosti
delioca(elemenatnizaY),iakojenjegovavrednostrazliditaodnuledola-
60
20
n
zi ae na lardbu 10, a zadm ne nercdbu CONUNUE koja je zadnja ruiredbacikluea. Ako je vrednost tndekss I (i0 vrll se ponavljanje cikluea, a ako JeI . 50 vrdi ee izlazak iz cikluea, tJ. prelazak na naredbu koja sledi iza na-rcdbG CONTINUE. Ako je vrednost delioca (elemenat niza y) jednaka nuli,vrl rt prelazek na naredbu sa obeleljem 20, kojom se postavue nula kaovt.cdnost odgovarajuceg elementa niza z, posle ovoga vr.i se prelazak naza'lnJu naredbu u ciklusu, cime 8e obezbedjuje normalno izvr'avanje cikluse,
5.3. 3. Odnos dva i vi5e ciklusa
VeC smo videli u prethodnon primeru da naredbe koje Cine ciklus nemoraju biti zapisane izmedju DO naredbe i zadnie naredbe ciklusa, prematome' nekom naredbom usrovnog ili bezuslovnog preraska moZe se privreme-no izadi iz ciklusa I ponovo vratiti u ciklus. ovaj povratak u cikru' more bi-ti na Ea koju naredbu u okviru ciklusa, uklju6uju6i i zadnju naredbu ciklusa.llfedjutim, treba voditi raluna da ee vrednost promenljive koja predetavljaindeks cikluse tre ame menjatl naredbama u okviru ciklusa.
Posebno je vaZno pravilno koristiti cikluse kada ih lma vedi broj uprogramu. Ovde 6emo razlikovati tri mogu.a slu.aja u odnosu i"mea;,. avai vi3e ciklusa:
l) Linijska kompozicija programskih ciklusa.Za dva ili vi5e ciklusa koji slede jedan iza drugog u programu, kaieee da dlne linijeku kompoziciju ciklusa. U ovom eludaju odnos ciklusa jeslededi
i
f-P n, i1=6!rr,^!1,-['t
"'f iI nr_,
Tf_E n2 i,=m(21,_f),-!r,t?s,I i
tli: I n2-+
i f_D9 ne i"=61n, -lD,,rrlrt:t Icpl ittl--np I
:
98
Za orrakrru kompozictju od p programsldh clklusa.C 1, C2,.. ., Co va.
trl eledede:
- broj ciklusa p u ovakvoj kompoziciJi je neogranlEen,
- obeleZja D1 , n2 r .. ., Dp su mdju sobon razLicta,
- dva tU vlBe indekea iz skupa lt, , t, , ... , ie | -*u imati igta i-mena.
2) Konc ertridna kompoziclja progro m e kih cikluea.
Za dva llt vl6e ciklusa, koji se nelaze Jedan u okvfuu drugoga, kale
ee da obrazuJu koncentridnu kompoziclju progra-skih clklusa. U ovom slu.
6aju odnos ciklusa je slede6l:
rr1 ir=mlll, tntt, -gt
n2 Lz=mfi,-!x, -f)
np ip=-P,-tn,mln
Za ovahru kompoziciJu od p programskih ciklusa C1 , C2 , . .., Cn
vaZl sledede:
- neki od ciklusa mogu lmati zajedniCla'r zadnju naredbu, a to znali
da neka od obelelja iz elorpa [n1,n2,...,np | -o* biti jednaka,
04
- lrdekst 11, !2 ,. . ., lp moraju imail razllelta lmena.U koncentrldnoj kompoziciji prograurstdh cilJ.u6a mogu biti jednaka
obelezJa zadnjth naredbl ctkluaa, Bamo ako ne doyde do eeCenJa pojedtnihcikluea. Ako eu eva obelerja medju 80bom Jednaka, tada koncertridna kom_poziciJa dobija elede6i lzgled:
n t,=m{rl, -[tt, *ot
n ir=ra{2), -!r}, -tzt
n ip=mlDl, r'!1 mln
I
I
Ako gu lzleznlkriteriJuml clkluea Cr, C2,..., Cp, koJi grade kon_centricnu kompoziciju takvi da ulazak u ciklus c1, znaEi prorazik kroz cik-lus q* puta, tada ulazak u koncertricnu kompoziciJu crklusa defini5e slede_6i broj prolazaka kroz poJedine clkluse:
- kroz ciklue C, prolazi Be qr puta,
- kioz ciklug C2 prolazi 6e qt .qr puta,kroz ciklus C1 prolazi ae 91 .9r . . . 9r puta, i
- lcoz ciklus Cp prolazi ae gr . g: . . . qp puta.ovakav broJ prolazaka kroz ciklus sledi iz cinjenice 6to se za svaki
prolazak kroz ciklue Cr_, cillus C1 izvrdi 9r, Futa.
3) Nedozvolena kompozicija programskih cikluga.
Dva ill vlEe cikluea medru sobonr ae ne smeju sedi. Tako za dva ci-kluea C1 t C, niJe dozvolJen alededl odnos:
96
i,:-ltr, -tl *fl
rr=-1'),-f;t, -!"
5. 4. Dvodlmenzionalni nizovi
Elemenat dvodimenzionalnog niza ima opSti oblik
ime(i1 ,5) (5.4.1)
gde je
ime - ime niza,
ir , i2 - indeksi niza.
Maksimalna vrednost indeksa niza moZe biti zadata u naredbi DIMEN-
SION ili REAL ili INTEGER. Dvodimenzionalni niz u ovim naredbama navo-
di se kao elemenat li6te u obliku
ime(ir-., , ir-*) (5- 4.21
gde su ir-o i ir-., celi neoznadeni brojevi koji odredjuju maksimalne vred-
nosti indeksa.
Tako, naredba
DIMENSION A(10, 1o), B(20, 8)
deftniSe 100 elemenata mstrice A:
A(r,r), A(1,2), ..., A(1,10)
A(2,1), A(2,21, ..., A(2-10)
ti*----------iA (rb, r), A (i0,2), ...,A(lri,10)
lll
n2
96
160 elemenata matrice B:
B(1,1), B(1,2), ..., B(1,s)B (21 1), B (421, . . ., B (2, 8)t:
B (2b,1), B (2b, s), .. ., B (2d,8)
5.4. t. Dvodimenzionalni nizovi u ligti ulezno-izlaznib naredbl
Kao I elemertl jednodimenzlonalnih nizova (vldi b.2.1), teko I ele_mentl dvodhaenzionalnih nrzova mogu ae pojaviti u listi ulazno-rzlazne oa-redbe na vi6e naEina:
a) Ako ae poJedfnadnt elementi nizova pojavljuju u llsti tada ee vr6lnavodJenje odgweraJu6ih elemeaeta. Tako ee moZe pleati
wRrTE (6,50) A (35, 10), B (18,4), c t3,3)
5to znacl da treba lzdati brojne vrednoeti odgovarajucih elemenata matrr-caA, BlC.
b) Ako elemertl matrice kojl ee navode u llsti slede jedan za druglm,tada se elemenat Uete moie pisati u obliku
((ime(i'iz), ir =-(ir, mft ), ir=-l'), *1', ) (5.4.3)
gde je
ime - ime niza,
it , ir - imena celobrojnih promenljivih,
-!tl - .uU neoznadeni brojevi ili imena celobrojnih promen{ivih,i' j = r'e'
Zapie (5.4.3) ima isti efekat kao da su elementi matrice navedenl uslededem redogledu:
i-e(m{t}, -tit ), ime(mlt) +r,*(r'}),...,ime(m!t), -1,, ),ime(mjr), -1" *r), ime(mf), +r, -j') + 1),...,ime(m!'),mltr +11,
ime(m(,t} , -1" ), ime(m!" + l,-lrl ),..., ime lrrrl'l , -jrr)
lik
n
Ako se u listi navode evi elementl dvodimenzionalnog niza, tada Ee
oblik (5.4. 3) svodi na
((ime(ir,iz), ir = 1, i1-.1)p i, = 1, i1-..) (5.4.4)
Umesto oblika (5.4.4) moZe qe u listi navesti samo ime niza, tj' olr-
lme (5.4.5)
Ovde je vaZro uoditi da obtik (5.4.41' odnosno (5.{' 5) obezbedjuje po-
javljivanje elemenata niza u listl u redosledu kolona po kolona mairice'
Medjutim, ako se Zeli redosled vr6ta Po vrsta matrice tada (5'4'4) treb^'
zapisatl u obliku
((lme(i, , ir), iz = 1, i2.o), ir = 1, ir-.,) (5. 4.6)
Medjutim, zapis (5.4.6) ne moZe 6e zameniti zapisom (5'4'6)' ier(5.4. 5) podrazumeva redosled (5.4.4). VaZi op6te pravilo Ca se u zapisima
(5.4.4), odnosno (5.4.6) brZe menja indeks prvi sleva, a sporije indeks ko-
Jieledi.Tako,u(5.4.4)brZesemehjaindbksil,aspo):ijeindeksi2'tj'zair=1, indeksl, uzimasvevrednostlir = 1,2,"', Lr^u' azatimdo-
Iazi do promene indeksa i2, ti. iz=2, Pri 6emu opet indeks i, uzima sve
mogude vrednosti. Kod zapisa (5.4.6) indeks\i2 se brZe menja' a indeks it
6porije.
c) Ako elementi niza, koji se navode u listi' ne slede jedan za drugim'
moze 6e u li6tl p188ti oblik
((ime(i'ir), i, =*lt)., -lt) , m[f) ),i, = -1" ,-1" ,."!') ) {s'e'z)
gde su eve oznake iste kao u (5.4.3), a dopisane velidine -lt) i -!') -ogublti celi neoznaceni brojevi ili celobroine promenljive. Zapis (5.4. ?) ima
istiefekatkaodasuelementimatricenavedeniuustiu6lede6emredosle-du:
ime(mf),rJ," t, ime(mf) **1",-14 ),...,ime(m!) *krrn:t',t"1")'
ime(m!r),m(,2) +-l2l 1, ime(-f) *-lt),-!') +,,,!') ), "',ime(m!l) +
**r,,.$' ,-l') +-!'l ),...,ime(m!t' ,*1" +tr-fl 1,ime(ml') *-(i) ,
m!') trrm!'' ),,,,,Ime(mlt)+lr1mt' ,*l'' *hxml" )
98
gde eu
f ,r, ,tl Ik'|=1fu+l
f ,r, ,:,.|k' =l.*;r'-J
celobrojni delovi odgovarajudih kolidnika.Tako, zapie
(5.4.8)
(5.4.e)
=A+B
gde su A i B matrice 5x10. Elementi jedne
vrste matrlce A, odnosno B, bu5eni su na
jednoj kartici sa opisom F8.3, Na izlazuStampati rezultujudu matrlcu C. Sema algo-rltma prikazana je na sl. S.4.1, gde su sa A,
B i C oznadene tnatrice, a aa ait, , b,,i i ",.J
elementi odgovaraju6ih matrica, program, na
FORTRAN-jeziku, eaetavljen po algoritmu na
sl. 5.4.1 ima izgled koji je dat na stededoj
strani.
Kao 5to 6e vidi, program sadrZi dva
ciklusa jedan u okviru drugog. Spolja5nji ci-klus se iZvr5ava 5 puta, a unutra5nji 10 puta.
Medjutim, za svakl prolazak kroz spolja5n,ji
((A (r,o, t = 2,6,2), J = 4.s,3)
proizvodl sledeCi redoeled elemenata niza A u listi:
A (2,4), A (4,4), A (6,4), A (2,'rl, A (4,'tl, A (6, ?)
Primer
Sastaviti program za izradunavanJe zbira matrlca
c
sl. 5.4. I
99
Dll'lENsloN A(5, lol rtJ( 5r l0 I rc(5, lolqEADl5' l0! I lA( I,J ),J=1, lO), l=l 15t, ( (ts(LJl rJ=I, lO), l=l r5llo FoRMAT{ 10F8.3)0O ll I-t,5O0 ll J=lrt0
ll cu,J)=A( I rJl+Bll,Jlr{RIIE(6r20l ( (c( t rJl rJ=lrtolr I=lr5)
20 FrlRfiAT(. MATRICA C,// (. r,l0Fll.3llS ItIPEr.rt)
ciklus unutrasnji ciklus se izvrsi l0 puta, tako da naredba l1 (ova naredbaje zadnjg i zajednidka naredba za oba ciklusa) izvrSi se pri jednom izvrSe_nju programa 50 puta.
5.4.2. Fegistrov?nje dyodimenzionalnog niza u memoriji radunarai veza sa jednpdimenzionalnirn nizom
VeC je redeno da se nizovi u memoriji raeunara registruju kolona po
kolona u registrima memorije, dije adrese slede u pri.rodnom nizu brojeva.Posmatrajmo niz a(i, j), gde je a ime niza, ! iIsu indeksi niza, koji uzima_ju sledede vrednosti i = 1,2,...,n; j = 1,2,...,m. Uvedimo oznaku a,..,/ku kojoj a,,, predstavlja elemenat niza a(i,j), a k relativnu adresu registrau kome se registruje elemenat niza a(i,j). R.elativna adresa registra defini-5e registar u kome se nalazi prvi elemenat niza sa l, a ostale registre re-
Tabela 5.4.1
100
dom 2, 3 , 4, , , ., n. m, gde je n. m relativna adresa zadnjeg elementa nizaa(r^, m). U tabeli 5. 4. I prikazan je raspored elemenata niza a(i, j) sa odgo_
.iva:'aju6im retativnim dhresama,
Iz tabele 5.4.1 sledi da se relativna adresa k, elementa sa indeksi_ma i, j izraEunava po formuli
k=i+n(i-l) (s.4. 10)
Prema tome, dvodimenzionalni niz a(i, j) Ciji indeksi uzimaju vredno_sti i = 1, 2, ...,ni j = 1,2,.. ,, m, moZe se posmatrati u memorijt radunarakao jednodimenzionalni niz a(k) diji indeks uzima vrednostl k = 1,2, . . .,n.:n. Veza izmedju indeksa dvodimenzionalnog niza a(i, g) i jednodimenzio_
nalnog niza a(k) data je relacijom (5.4. 10).
Primer
Nadin registrovanja dvodimenzionalnih nizova i njihovu vezu sa jedno_
dimenzionalnim nizovima prosledicemo na primeru sabiranja dvodimenzio-nalnih matrica. Ovde Cemo razlikovati dva sludaja:
1) Dimenzije matrica u programu su iste sa dimenzijama matrica de_
finisanim opisnom naredbom DIMENSION.
a) Re5enje zadatka preko dvodimenzionalnih nizova.Na ovaj naEin reSeno je sabiranje dvodimenzionalnih matrica u pri_
Tabela 5.4,2
N. I 2 3 L 5 6 ,] I I f,)
Io l.l
I
o t,26
o 1.31l
o t,416
o l,s21
o 1,626
o 1,73t
ol,g36
o t,9t1
o t,tot6
2o 2,1
?
aza7
o z.it2
a z,tl7
o z.s22
o 2,627
o..'32
o3!-tt
oe o
L2
o 2.toL'T
3orr
3
o 9,2I
o 3,113
o g.t!q
o 1,523
o 3,6
28
Orr
33
o 3,838
o 3,943
a 3,tot8
Lo {,1
Iot,,2
Io(,3
t4
a L,r.tll
n !!_2L
9 4,6_29
a r,,?
34
o 4,839
9 4,eI,L
o4,lo19
5g:,L
51!-2_
l09 s,r
t5
o5,4n 9!l
)<os,6
30
Oct
35
o5,8LO
1i,s-L5
o5,ios.1l
101
meru na kraju odeljka 5.4.1. u ovom slu[aju tabela 5.4.1 za registrovanjeelemenata matrice A ima obliktabele 5.4.2. Na isti na6in se reg:struju :l
elementimatricaBiC.Kako je u navedenom primeru pretpo'tavljeno da se elementi matrice
A unose vrsta po vrsta, to znadi da 6e elementi prve vrste biti regi.slrovaniu registrima dije su relativne adrese 1, 6,.11, !6, ZL, 26, 5I,36, 4l i 46.
Zatim se unose elementi druge vrste i registruju u registrima z, 1, Lz, ird.U istom programu sabiranje matrica je izvr6eno preko dva programska ci._
klusa, tako da se sabiraju vrsta po vrsta matrica A i B'i formira se matri-ca C.
b) Re5enje zadatka preko jednodimenzionalnih nizova.. Isti zadatak ae inoze re6iti ako se koriste jednodimenzionalni nizovi.U ovom slu6aju prograrq na FORTRAN-jeziku ima elede6i izgled:
DIilENSION A( 50),81 50t,C (50)READ( 5r IOI A,BFORr.,rAI( 10F8.3tD0 ll l=t,50C(ll=AlIl+8lltr{RITE(5r20t C
FORilATIT HATRICA C' lllt .rloFt1.3t,S TOPEND
Tabela 5.4.3 prikazuje registrovanje elemenata matrice A, kada su
uneti kao jednodimenzionalan niz, a pri tome su na karticarna bili raspore-djeni vrsta po vrsta.
to
ll
20
Tabela 5.4.3
t.it\ 1 2 3 L 5 6 7 r0I8
I
2
9r,tt
ot, 66
"l,l-fi02 ,6
6o3, t
2l
og,?:27
o3,626
oa ,l- -11-9l.,a-_12--..ol.3
i?.q_.L
-34oa,--s--
35
ol,e los,r los,o-36 ! lt l-ts---'---'----'- I,--'ol.z los.z los,z37 I tz i-17-
- - 'J'-" - - i-- --. -
n-e !os,r i9s,ats-:41 j.__ol-_
a,n i1r-.-l- 19s.."-3e ,, tt i 4e__
1-ro_ i9s,5 ,os,tL40tt1lso
ol 12
2
ot.?,7
42,2t?
42,7fl
03,2z2
3
:5
q r,3_,3.ol , t
I
or, g
I02.:
!3
02,L,IL
oz.8
_19 -02 .9
l9
03. g
23,
03, 42T
ol- 8
.28 _
03 .9E
ol,to1n
9r,g9
\s5
ot, ot0
42, s15
oz-r-a-
fr03,s
)q,
Ii['
I
i
I
L.tz
Poredjenjem tabela 5.4.2 i 5.4.3 vldl se da su to dva sasvlm razlidi_ta nadina registrovanja elemenata matrice A, a isto 6e biti i za matricu B.p tabeli 5.4.3 elementi prve vrste matrice nalaze se u registrima dije su
relativne adrese 1,2,3,4,5,6, ?,8,9, 10, a zatim slede elementi druge vr_ete itd. Izradunavanje rezultujude matrice C vr5i se preko Jednog program_
skog ciklusa, koji se izvrSava 50 puta.
c) ReSenje zadatka pod a) i b) je sprovedeno pod pretpostavkom.da su
ulazni podaci bili u redosledu vrsta po vrsta matrica A i B. Medjutim, ako
pretpLetavimo da se na jednoj kartici nalaze elementi jedne kolone.matriceA, odnosno B, tada 6e za registrovanje, matrice A biti potrebno l0 kartica,a na svakoj 6e se nalaziti po jedne kolona matrice. Isto Ce biti i za matricuB.
Program za sabiranJe matrlca moZe ae napisatl u sledede'n obllku:
DII{ENStON At 50l rBt 50r,C I 50tREAOtSrl0l A,8
IO FORilAII5F8.3IDO ll I.tr50
ll Cll)=a(Il+8lItr{RlTEl6r20l
20 FoRIIAT( | ltaTRlcA crllDO 12 Jrlr5
l2 l{RlTEl612l, lCl I I r I=Jr5Or5l2l FoRfiATl. rrloFll.3)
STOPENO
Elementl matrica A i B unose se sa kartica kao elementl Jednodimen-zionalnih nizova. Izra6unavanje matrice C takodje je izvr5eno preko sabi-ranja elemenata Jednodimenzionalnih nizova. Nacin registrovanja elemena-
ta. jednodimenzionalnog niza A identl€an je kao i u slu6aju dvodimenzional-nog nizi i prikazan Je u tabeli 5,4.2. Medjutim, kako rezultuju6u matricuC lelimo da Stampamo u obliku vrsta po vrsta, to se u listi izlazne nared-be matrica C piSe kao jednodimenzionalni niz, 6iji se svaki peti elemenat
Stampa u Jednom redu, pri Cemu je prvi elemenat odredjen indeksom (J)
koji ee menja u DO ciklusu.
2) Dimenzije matrica u progranu su manje od dimenzija matrica de-
finisanih opisnom naredbom DIMENSION. U ovom sluCaju opisnom nared-
bom defini5u se najvede mogude dimenzije matrica, a dlmetlzije matrica
103
za koje se izvrbava program zadaju se preko ulaznih podatakal
a) Re5enje zadatka preko dvodimenzionalnih nizova. Neka su matriceA I B tipan x m, gde je n<5, m< 10. Ulazni podaci neka su rasporedjeni
u redosledu vrsta po vrsta, a na svakoj kartici se nalazi l0 elemenata jed-ne ili vi5e vrsta. FORTRAN-program u ovom sludaju ima slededi izgled:
Dlr{ENSION A(5, l0) rBl5,l0},c(5, l0}READl Sr l0' NrMr ( (Al LJl rJ:1,Ht I I=11N) r I IBl t rJl rJ=Ir il1, l=IrNl
lo FoRHATI 2t2t tLOF8.1t'D0 ll I-lrNDO ll J=lrt'l
ll Cl trJl=A( I'Jl+B( I'Jlt{RITE(6r20'
20 FORilATII H.ATRICA CIlID0 l2 I=lrN
l2 |TRITE(6'30l (C( IrJlrJ=lrlt)30 F0RHATI. rrloFll.3l
S TOPEND
Prema tome, pre unosenja elemenata matrica A i B, unosi se brojvrsta n i broj kolona m matrica A i B, i ovi brojevi dodeljuju se promen-
ljivim N i M. Nadin registrovanja matrice A, u sludaju matrice 3x4, pri-kazan je u tabeli 5.4.4. Kao Sto se vidi iz tabele, matrica A je registrova-na u 12 registara 6ije su relativne adrese 7,2,3,6,7,8,11,12,13,16,1? i18, a svih ostalih 38 registara je slobodno. VaZno je uoditi da sumiranjeovako registrovanih matrica ne moze da se izvrsi preko jednodimenzional-
nog niza koji ima 12 elemenata, jer adrese elemenata matrica A i B ne
slede jedna za drugom.
b) ReSenje zadatka preko jednodimenzionalnih nizova.
Neka su matrice A i B tipa n x m, i njihovi elementi rasporedjeni na
karticama vrsta po vrsta, a na svakoj kartici da se nalazi 10 elemenata
jedne ili viSe vrsta. Tada program na FORTRAN-jeziku moZe biti zapisan
u obliku:oil.tENsloN at 501,8 ( 50t,c( 501REAo( 5, l0) N,r{
IO FORIlAT( 2I2 'K=N*l.t
REAOl Sr40l lAl t l'1=1rKl r(8(l lrl=lrxl4O FORMAT ( TOF8.3
'D0 ll I=t'Krr Cl I l.A( I t+B( I I
*RlrE(6r20)
104
20 FORf.TAT{. r{ATR,ICA C'llD0 12 J=lrK,ML= I +H- I
l2 !,lRITEt6r30l (C(Jl rJ=l rLl30 FORI{AT( r'rlOFll.1}
S IOPENO
Neka su matrice A i B tipa 3 x 4. Gornji program 6e izvrSiti regis-
trovanje elemenata matrice A u rasporedu prikazanom u tabeli 5.4.5.
Tabela 5.4.4
Prema tome, elemerti matric€ A sada su rasporedjeni u registrima
dije adrese slede jedna za drugom. I sabiranje matrica moze se izvrSiti a-
ko se primenjuje jedan programski ciklus koji se izvr5ava n x m puta.
\jt\ I 2 3 L 5 6
,18 I t0
Ior,l
I
ol ,z6
ol ,g'n
or,t i't6 i ?r 26 3l
__i__l__$41166
202.1
2
oz,21
02. g
12
o^,l7 -n
:il
n'v a 1l-3
o3,'t1
og. 2I
or.3B
o3.l18 23 28 33 38 ' 43 r,a
Lt, 9 1L 't!l 2L Js-
5 q t0 l5 ?0 25 30 35 -{,0-It_4sl s0
Tabela 5.4. 5
\jt\ 2 3 L 5 6 7 I I 0
I01, I
I
02, z6
9i,-1-1l l6 u ,6 31 36 4 46
2ar,
z
2
oz,37
o3, lt2 I'l n n n -n t2 _t7 -_
IL-zE-
Jol,3
3
o2,t,8 13 ls n 28 33 38 Lf
Lor , {
Io3r I
9 IL f) ?t, 29 31 39 t,1
5o2,
1
5
43,2p 6 n 25 30 35 to -at- 50
105
c) Ako se elementi matrica A i B registruju kolona po kolona na kar-ticama, i to tako da se na kartici nalazi 10 brojeva tada Ce program imatislededi izgled:
DfilENSl0N A(501'ts( 501 rC(5OlREAo( 5, lo I N, H
l0 FoRxArl 2l2lK3N* l,l
READ(5'40) lAl I )1I=l1Klr(B(I I'I=1'()40 FORr,lATl l0F8.3l
D0 ll I-lrKll C(tt=A(Il+B(I)
brRIrE(6r20'20 FORr{Arlr ilATRICA Crll
L =l't- IDO l2 I=trN
tZ l{RITE(6rlOt (C111 r.1=l 1K1L},0 FORt'lAT('' tlOFll.3l
5 TOPEND
U ovom siuEaju elementi matrice A, tipa 3 x 4 bide registrovani na
na6in prikazan u tabeli 5.4.6.
Tabela 5.4.6
Kao Sto se vidi, tabele 5.4. 5 i 5.4.6 razlikuju se Po tome 5to u ta-
beli 5.4.5 elementi slede po vrstama, a u tabeli 5.4.6 po kolonama. Kako
rezultujudu matricu treba Stampati po vrstama, to se naredbe izlaza t od'
govaraju6im programima razlikuju.
Navedeni primeri ilustruju razlidite nadine registrovanja dvodimen-
zionalnih nizova u memoriji radunara. VaZno je uoditi da uno5enje eleme-
l_-- !
--
I
-
I
-
I *-lt I ts i2L l2e 131 13e',14_L!9_
106
nata dvdimenzioD€ tnatrice kolona po kolona, i unosenje iste matrice kao
Jednodlmenzionog niza ima isti paspored registrovanja elemenata u memo-
riji, ako je tip matrlce jednak maksimalnim vrednostima indeksa u pro-gramu. U evim drtglm sludajevima ovo registrovanje je razlidito, Medju-
tim, obrada nad elementima matrica, predstavlja bolje programsko rege-
nje, ako ae matrlca tretira kao jednodimenzionalni niz. Tako u slueaju sa-
biranja matrica videli smo da tretiranje matrice kao dvodimenzlonalnog ni-za zahteva dva programaka ciklusa, a u sluCaju jednodimenzionalnog niza
zahteva Jedan programski ciklus.
5. 5. Vlgedlmenzionalni nlzovi
Elemenat viEedimenzionog niza ima opSti oblik
ime(lista) (5. 5. r)
ode je
lista - epleak, od najvl5e ?, indeksa niza medju aobom razdvojenihzareilma.
Prema tome, vlEedimenzioni n|z moZe imati najviSe ? irdeksa. Sve
3to je reCeno za dvdlmenzlor(alne nlzane vaZL I za viEedlmenzionalne nizo-
ve. Maksimalne vrednosti indekaa navode 6e u listi naredbe DIMENSION,
pri 6emu elemenat liste ima obfik (5. 1. ?). Vrsta niza moZe bitl definisana
jednom od oplenlh naredbi za deklarisanje vrate.
Vi6edlmenzionalni niz u listi ulazno-izlaznlh naredbi navodi se ,r ob-
Iilnr:
(...(ime(i,,12,...,\), ir =mltr,-ltr, .f' t,ir=ml2) , ^!:t , 'ot" ),..., i*=-lut, *'f , -!* ) (5.5.2)
i oblik (s.5.2)Ako je prira6tal indeksa 1, moZe se prirastaj izostavitisvodi se na
(...(ime(i, ,12,...,i*) i, =6(1) , -lt'),iz=m(,2) , -!'' ),,.., i*=m(,H, mfr) (5.5.3)
10?
Ako se indeksi u (5.5.3) menjaju od 1 do maksimalne vrednosti, tj'
i,^"J, . . . , iu =1, i*-.') (5. 5' 4)
tada se mogu izostaviti, i oblik (5. 5.4) svodi se samo na ime niza
lme (s.5.5)
Kaoikoddvodimenzionalnihnizova,takoikodviSedimenzionalnihnizova najbrZe se menia prvi indeks sleva, a zatim sleva na desno sporije
se menjaju, tako da krajnji desni indeks se menja najsporije'
Tako, elemenat liste u obliku
(((A(I, J, K), I=2, 6,21 ,I--1,2\ ,K=a, 12, s\
ima isti efekat kao da su navedene indeksne promenljive u sledecem redo-
s Iedu:
A(2,1,4), A(4, 1,4) , A(6,1,4), A (2,2,4\, A(4'2,4\' A(6,2,41 ,
A{2,1,e), A(4, 1,e), A(6,1,e), A (2,2,s\, A(4,2,e), A(6'2,e)
Visedimenzionalni niz sa k indeksa il , i2, . . ., ir, moZe se posmatra-
ti kao jcdnodimenzionalni niz sa indeksom j. Veza izmedju indeksa viSedi-
menzionalnog i jednodimenzionalnog niza data je relacijom
j - i, +{iz -1)irF..+(i3 -l)i,-.,. ir-.,* . . .
. ..+(ir -1)ir-*. iz^^,... i1r-r) -."(s.5.6)
Relacija (5. 5.6) za zad,ate vrednosti indeksa visedimenzional'nog niza
odredjuje indeks odgovarajudeg jednodimenzionalnog niza, odnosno relativ -
nu adresu elementa vi5edimenzionalnog niza.
Primer
Najednojkartici,'tkolonama4,25's2i4Sbu5enisujednocifrenibro-jevi od 1 do 5. Oznalimo ove brojeve redom sa i, j, k' i' Sastaviti prog-
ram koji Ce u proizvoljnom broju kartica utvrditi broj pojavljivanja m, sva-
108
ke od mogudih kombinacija i, j, k, l. Na izlazu Stampati kombinacije i, j,k, I koje se pojavljuju u zadatom paketu kartica, kao i njihov broj pojaviji_vanj a.
DIt{ENSI0N tt( 5r 5r 5r 5 )
D0 t0 I=l'5D0 l0 J=1,500 l0 K=I,5D0 lO L=lr5
l0 H(I1J1K1L)=O40 READlSr20rENp=39,, I rJrKlL20 FORHAT{3Xr I lr20Xr I 1,6X, i l, t5x, I t }ll{ t rJrKrLl =H( I, JrKrL l+l
Go ro 403O ltRlTE(6r90)90 FORl{aT(r rr4Xr.I r14X1.J. r4XrrKr14x1.Lr r4Xrr4' 11DO 50 I!lr5
0O 50 J=lr5D0 50 K=tr500 5O L=lr5lF(|1( IrJrKrLl ) 60r50r60
60 HRITE(6r80, IrJrKrLrH(IrJrKrLl50 CONTINUE80 FoRilAT(, ,r5i5,
STOPEND
Naredba 6a obelezjem 10, koja se izvrsava 62i puta, vr5i postavlja_nje nule, kao brojne vrednosti svih €lemenata detvorodimenzionalnog nizaM' To postavljanje vr.i s€ na taj na.in .to se redom menjaju indeksi nizaM. U obradi svaka kombinacija I, J, KwL definise jedan elemenat matriceM, i pojava ove konibinacije povedava vrednost odgovarajudeg elementa ma-trice M za jedinicu. Na ovaj nadin izvr5eno je prebrojavanje svih kombina_cija na ulaznim karticama.
Stampanje je programirano tako da se u jednom redu stampa kombi-nacija i broj pojavljivanja. Kombinacije koje se ne pojavljuju, ne6e bitiStampane. Za jedan primer ulaznih kartica i.zlazna tabela ima slededi iz-gled: {) IJKLil
I
)444
I23
25It
l
5
5II
3
3
5
t(D
5.6. Redgslel elemg.nata dva niza ili vi5e nizova u listi ulapno_-rzraznln naredbr
Ako se elementi nizova navode kao indeksne promenljive sa konkret-nim vrednostima indekea, njihov redosled moze biti proizvoljan, ali u.a-glasen sa ulaznim podacima, odnosno sa obrikom Stampanja na izlazu. Me-djutim, ako elementi jednog niza slede u odredjenom redosledu; onda seoni mogu skraceno pisati na naEin kako je to objasnjeno u prethodnim odelj-cima (vidi 5.2. I i 5.4. r).
eesto postoji potreba da elementi dva niza ili vi5e nizova slede naiz-menieno jedan iza drugog. u ovom sludaju element liste moze imati slede-Ci oblik:
(ime, (i), ime2 (i), i = m' , mz , m3 ) (5.6. r)
gde elementi niza imer' i ime, slede naizmeniIno jedan iza drugog. Zapis(5.6. f) proizvodi slededi redosled elemenata,
ime, (mf , imer(m,), imer(m, +m.), ime, (m, +mr),
, ime, (m, +krn.), imer(mr + kms)
gde je k odredjeno sa (5.2. 10).,
Oblik (5.6. l) koji defini5e y'wa jednodimenzionalna niza u naizmenid_nom redosledu elemenata, moze se prosiriti na veci broj jednodimenzional-nih nizova.
Takodje, umesto jednodimenzionalnih nizova mogu se u naizmeni6nomredosledu elemenata pisati visedimenzionalni nizovi.
Primer
Koordinate ta6aka Ai , i = 1, 2, 3,4 sa sl. S. 6. l, zadate su na jednoj
kartici u slededem redosledu xr, yr , x2, y2, x3, y3 , x. , y,i i to tako da
svaka koordinata zauzirna l0 kolona, od kojih su tri namenjene za decimalnamesta. Iza ove kartice nalaze se dve kartice i to tako da se na prvoj nalazi8 vrednosti, a na drugoj tri vrednosti za argumenat x, pri eemu argumenatmoze imati tri cela i tri decimalna mesta. za zadatih ll vrednosti argumen-
ta r izraeunati y(x), prema sl. i).0. l, i Stampati x iy u obliku tebele.
ll0
sl. 5.6. 1
Blok Sema algoritma prikazana je
nizovi 6iji su elementi apscise, odnosno
na sl. 5.6.2. Sa X I Y oznaderri
koordinate taEaka A1(x, , yr ). U
vL.tx,y,Q
f=v,*ffie; .E+H*(qixt
sl. 5.6.2
r11
lstom algoritmu Q oznadava r.iz diji su elementi q, , i = 1,2, " ', ll zadate
vrednosti argumenta x. Vrednlsti funkcije fi, i = 1,2'..., ll oznadene su
nizom F. Kao Sto se vidi sa sl. 5.6.1. vrednosti funkcije izmedju tadaka
odredjuju se linearnom interpolaciiom, a vrednosti funkcije levo od tadke
A, i desno od tadke An odredjuju se linearnom ekstrapolacijom' Program
ne FORTRAN-jeziku sastavljen po algoritmu na sl. 5.6.2 ima slededi iz-
gled:
DII..ENSION X(4lrYl4l rQ( lll'F ( ll I
REAfr( 5r l0t lX( I I tYl I l l I-l'141 rCIO FORHAT( BFIO.3 I
DO ll l.lrlltF(Q(ll-X(2) I l2rl2rl3
13 IFlalll-x(31 I 14rlarl5l5 F(I t=Yl3t+lYl4l-Yl3t l/(x{'?t-xl3l lt(0ll t-xl3l }
1T CONTINUElRlTEl6r16l lQ( I )rFl I lr I=l rll I
t6 FORHAT(r rr5Xrrlrll?Xr'\t lll' .'FlO'ltE20'7')sroP
L2 Fltt-Y( I t+{Yl 2l-Yl I r I / ( xl 2 l-xl ll rt(Ql t l-xl I l'G0 T0 ll
l4 F( I t-Yl 2 l+(Y( 3l-Y{2 I I /( x( 3}-x (21,t(o( I l-x{ 2l'G0 T0 l1END
U listl uLazno-izlaznih naredbi pojavljuju se nizovi diji elementi sle-
de u naizmeniCnom redoeledu.
Za zad^te koordinate tacaka A, , tako da je 41(-80;45), Ar(-4O; -2o\,
Ar(10;1oo), A1 (?0; 1o) i 11 zadatih vrednosti argumenta x rezultati se do-
biJaju u obliku tabele:
x
- lo.oooloo.o00
12. ou 060.000
222.OOO1 .000
13.0(tO-4,00010.00020.ooo50.000
0.5199998E 02-o.350c000E 02
o.e700000E o20.2500000e 02
-0.2r80000E 030.?83e9e8E 020.95500008 02o.66_r99e8E 02o.999999?E 020.8500000E 020.4000000€ 02
/,/ // 7-
PROGRAH
:
' lJ'u ilot ;)t.t:r =)' -lJo
:
:
sl.6. l. I sl.6.1.2
,17 -" nu
6. PorPRoc*o*i-)\-.-
V ViEe naredbi izdvojenih u posebnu programsku celinu grade PotPro-
gram. lPotprogram najde66e predstavlja niz naredbi koje bi se pojavljiva-
le na viEe mesta jeilnog programa i kojima bi se vr6ilo izraEunavanje po
istim formulama, ali za razlidite vrednosti argumenata. lzdvajanje ovih
naredbi u posebnu programeku celinu omoguduje kra6i zapis programa, a
samim tim i njegovo lak5e prenoEenie na radunar i manje angatrova4ie me-
morije radunara. Tako ako se niz od n naredbi oznaden sa P (sl. 6. 1. I. ) u
programu pojavljuje m puta, tada se ovaj niz moZe izdvojiti u posebnu pro-
grameku celinu - Potprogram (s1.6. 1.2).
Program na sI.6. 1. l, Pored
ostaUh naredbi, G'aarZl m. n nared -
bi, jer se niz P od n naredbi Ponav-
lja m puta. Ako se niz P od n nared-
bi izdvoji u potprogram (sl.6. f. 2),
tada ee u programu na mestima gde
se nalazio niz P vr6i prelazak iztp"og..-" u potprogram. Po izvrEe-
nom potprogramu vr6i se povratak
u program i to neposredno na slede-
6u naredbu koja sledi iza meeta pre-
laza na potprogram. Na ovaj nadin
umesto m. n naredbi pi6e ae samo n
naredbt koje Cine potprograrr. y'e-
ma tome, kciriSdenje potprograma u Programiranju ima slededa svojstva:
- pruia mogudnost kradeg zapisa programa, a samim tlm smanjuje
tt4
mogucnost greske u pripreml programa,
- smanjuje aDgazovanje memorlskog prostora,- omogucuje lakse testiranje programa, jer se potprogrami kao po-
sebne programske celine mogu odvojeno testirati, i- isti potprogram moZe se koristiti u raznlm programima,Ovde treba hapomenuti da koribdenje potprograma uopgte ne utide na
brZe izvr5avanje programa od strane ra[unara. Jer, I ako je umesto m. nnaredbi zapisano samo n naredbt, kada se lzvrsava program, izvrsice sem, n naredbi.
Iz svega Sto je do sada redeno o potprogramima sledi da se za kori5_cenJe potprogiama u programlranju moraju poznavati slede6i elementi:
- na6ln zaplea potprograrne, tako da on 6ini posebrm programsku ce_liriu,
- nadin prelaska iz programa u potprogram, i- nadin povratk3 iz potprograma u program.
Izradunavanje elementarnih funkcija (odeljak 4. g) vr6i se pomodu pot_programa. Za izradunavanje elementarne funkciJe, kao 6to je trigonome_trijska funkcija sinus, potrebno Je oko r00 naredbr na maiinskom jeziku,Svaka naredba angaZuje 3edan memorijsld registar, Ako se izradunavanjesinushi funkcije vrsi na r0 mesta u programu, i ako se ovo izraEunavanjene bi vrSilo preko potprograma, to bi znadilb da bi 10 puta po r00 naredbir/bilo zapisano u programu na ma5inskom jeziku, odnosno za ovo izraduna_vanje bilo bi angaZovano 10.100=f0O0 registara u nemoriji. Medjutim, a_
ko se lzradunavanje vrsi preko potprograma, bice angazovano samo r00 re-gista/ra u memoriji radunara,
IJ KoriSdenje potprograma pruZa mogu6nost da se jedanput izradjen
potprogram moZe datl na koriSdenje Sirokom lrrugu programera, koji gamogu lako koristiti u r'azliritim programima.'lNa ova5 nacrn formira sebiblioteka potprograma u ratunskim centrima, u kojoj se nalaze kao goto-vi potprogrami mnogi postupci iz numeridke matematike, statistike i dru-gih oblasti primene radunara.
. U FORTRAN-jeziku postoje tri vrste potprograma
- funkcijska naredba,
- funkcijski potprogram i- opsti potprogram.
11s
6. 2. F\rnkcijska naredba
Funkcijska naredba omoguduje izdvajanje jednog aritmetitkog izrazakao potprograma. Opd_ti oblik pisanja funkcijske naredbe je
ime(lista) =e (6.2.1)
gde je
ime - naziv funkcijske naredbe i defini5e se na isti nadin kao i imepromenljive,
iista - spisak fiktivnih argumenta medju sobom razdvojenih zarezima.Fiktivni argumenti mogu biti sarno imena p.o..,u.rt1iuiir. -- -'
l' - aritmetidki izraz, u kojem se kao argumenti mogu javiti: fik_tivni argumentt,. tT".": promenljivih L p."g";I, f;;;;",d ruga imena funkc ijskih naredbi I fu nkc ijskil potp.ogr".rr"
-1lr1 _di 6. 3).
Funkcijska naredba (6.2.1) poziva se na taj nadin Bto se kao arg-ume_nat aritmetiekog izraza u programu navodi ime funkcijske naredbe sa stvar_nim argumentima izmedju zagrada, tj.
ime (Iista)
gde je
ime - naziv funkcijske naredbe,
lista - spisak stvarnih argumenata,zima.
(6.2.2\
medju sotront razvojenih zare_
Kada se izvrsava program, svaki argument aritmeti[k og izraza uprogramu, oblika (6.2.2) izracunava se tako sto se u funkcijskoj naredbiodgovarajudeg irnena (6.2.1) fiktivni argumenti redom zamenjuju stvarnimargumertima. za ovako definisane vrednosti fiktivnih argumenata izraduna_va ae vrednoat aritmetidkog izraza I i tako dobijena brojna vrednost dode-ljuje ee imenu funkcijske naredbe.
Prema tome, funkcijska naredba predstavlja potprogram, sa proiz_voljnim brojem ulaznih velidina. Izvestan broj ulaznih velitina se navodeu listi (6.2. 1) kao argumerti potprograma, a ostale ulazne velieine pred_stavljaju promenljive koje su definisane u programu, kojem je pridruZenafunkcijska naredba, a figuri5u kao argumenti u aritmetidkom izrazu 9
t
ll6
(6. 2. l. ).:I1rnke'ijska naredba mora imati naimanje jedan fiktivni argumer$'
lztazni rezultat potprograma je jedan broi koji se dodeljuje imenu funkcijske
naredbe.
Na mestima stvarnih argumenata u (6.2.2) mogu se pisati aritmetidki
izrazi.Fiktivni i stvarni argumenti moraju se slagati po broju, redu i vrsti'
To znadi. ako fiktivnih argumenata ima n i stvarnih mora biti n, i pri tome
stvarni argumenti u (6. 2. 2) zamenjuju filctivne argumerte u (6. 2 . l) redom
sleva nadesno, Slaganje argumenata po vrsti podrazumeva da ako je fiktivni
argumert celobrojna, odnosno realna Promenljiva, onda odgovarajuca veli-
6ina mora biti na mestu stvarnog argumerta.
Vrsta funkcijske naredbe deklariSe se na isti na6in kao i vrsta pro-
menljive
- unutragnjom konvencijom po poeetnom slovu imena funkcijske nared-
be,
- eksplicitnom deklaracijom pomodu opisne naredbe REAL ili INTEGER
iIi- iglplicithom deklaracijom pomodu opisne naredbe IMPLICIT'
Funkcijske naredbe se navode na podetku
programske jedinice pre prve izvrSne naredbe
programa.
GrafiEki potprogram se prikazuje pomodu:
- kruZnog simbola, u koji se upisuje broj
potprograma (PPn, n = 1,2,...), i oznadava po-
6etak potprograma (sl. 6.2.11 ,
- iza kruZnog simbola sledi grafidki simbol
sa polukruZnim bodnim atranama u koji se upisu-
ju ime potprograma i fiktivni argumenti potpro-
grama, koji se po broju, redu i vrsti moraju sla-
gati sa stvarnim argumentima. Ime programa
tnoze se izostaviti i u tom slueaju algoritam pot-
programa se razlikuje od ostalih potprograma oz-*.6.21
NAREDBEPOTPROCRAHA
nakom u kruZnom simbolu na poletku potPrograma.
sl.6.2.2 sl. 6.2.3 sl. 6.2.4
11?
- povratak iz potprograma u program oznaEave se lrr.utnim gimbolomu koji se upisuje skradenica PUP (Povratak U Program).
Pr.imer
Za zadate vrednosti x1 , yl
, = *lbj+ F (x3, ys )
i = 1,2;3 izraEunati
l.
gde je
I
F(x, Y) = 3xz + 8Y + etr+EY
Algoritam za oyo izradunavar\i€ prikazan je na sl. 6.2.2. A ovom aI-goritmu koristi se potprogram PPl (sl. 6.2.31 za izraEunavanje funkcije
F (x,y) = r, (x,l) * gF1(r'Y1
gde je
F, (x,Y) = 3x2 + 8Y
a vrednost funkcije 4(x,y) izradunava se pomodu potprograma PP2 (sl.
6.2.4) koji se poziva u potprogramu PPl.
: xtx,i-1,2,s
F,(x,v)-5azvgY
118
Program na FOnTBAN-jezlku aartrv{en po algorltmima na sl.6.2.2, 81.6.2.3 i sl. 6.2.4 ima slededl lzgled; .'
DtltrNstoN xtJtrYt3t '\. /Fl(XrYl.3.tlI*X+8.rYFlxrYl=Fl(irY l+EXPtFllXrYt'REAoI 5rz0l tx( l r ry(t I rI_lr3t
?0 FORIiAT(6f5.2'Z.F( X( I I r Y( I I I tFtxl2t,y( Z I txF I xt3l,y t3 t IxRtTEl5rS0' Z
80 FOR||ATl ' t t'Zs' rE14.7lSTOPEND
U ovom programu Je predvidJeno da se ulazni podaci nalaze na Jed-noJ kartlci u redoeledu x1 r X1 r x2, !2 , xs, yil a evald od njih ee opisuJe
sa Ft.2.Za ulazne podatke
x, o 1,00
Yr -0xr = -o' 14
Y2 = -1,05xr = 0,35
xs = -o' ?5
rezultat se dobija u obliku
Z. o"L55191i2 02
6. 3. Funkcijski potprogram
Funkcijska naredba se moZe kofistiti kao potprogram, ako se radi o
Jednom aritrnetiEkom izrazu. Medjutim, vrlo desto potprogram sadrZi ve6ibroJ naredbi I to ne eemo aritmetlCkih. Ovakav potprogram zove ae funk-
cijski potprogram. Op5ti@ stedeCi
FUNCTION ime (llsta)
:END
gde je
FUNCTION - sluZbena red, koja oznadava poCetak iime - naziv potprograma koji se defini5e na
promenljive,
lista
119
tip potprograma,
isti nadin kao ime
- spisak fiktivnih argumenata potprograma, medju sobomrazdvojenih zarezima,
END - eluZbena re6, koja oznaCava fizidki kraj potprograna.Fil:tivni argumenti mogu biti imena promenrjivih, imena nizova iri
fildivna imena drugih funkcijskih ili op5tih potprograma. Kako se filiitivnaimena drugih potprograma mogu koristiti kao fiktivni argumedi u Iisti(6:3.f) bide obja5njenou odeljku 6.?.
Funkcijski potprogram se pi5e kao posebna programska celina. SluZ_bena reE FUIrcTION oznadava poEetak ovog potprograma, a sluZbena redEND kraj potprograma, i pi6e se uvek kao zadnja naredba potprograma. Iz_medju prve i zadnje naredbe potprograma moze se nalazitl proizvoljan brojFORTRAN-naredbi, osim
- druge FUNCTION - naredbe,
- druge END - naredbe, ili- SUBROUTINE - naredbe.
Vreta fiktivnih argumenata odredjena je unutrasnjom konvencijomFOTRAN-jezika ili opisnim naredbama za eksplicitnu, odno'no implicitnudeklaraciju vr6te, koje se piSu iza prve naredbe potprograma.
Prelazak iz programa u ovaj potprogram vr5i se na isti nadin kao ikod funkcijske naredbe, navodjenjem imena po.tprograma, kao argumentaaritmetidkog izraza u obliku
ime(lista) (6. 3. 2)
gde je lista spisak stvarnih argumenata, medju sobom razdvojenih 'zarezima,kojima se zamenjuju redom fiktivni argumenti potprograma. Na mestimastvarnih argumenata mogu do6i i aritmetidki izrazi fii imena funkcijskihili opstih potprograma. Stvarni i fiktivni argumenti moraju se Blagati po
broju, redu i vrsti. Funkcijski potprogram mora lmati najmanje jedan ar_gument. Izlazni rezultat funkcijskog potprograma je jedan broj koji 6e do_
deljuje imenu potprograma. Prema tome, medju FORTRAN-naredbama ko-
(6.3.1)
I
120
je dine potprogram mora se nalazlti najmaujF jedna aritmetiCka 4aredba,
na dijoj levoj strani od znaka jedriakosti stoji ime.potprograma, a kojom ee
dodeljuje iilazoi rezultat potprograma njegovom imenu. I!
Povratak iz potprograma u program vr5i se posebnom FORTRAN-na-
redbom
RETURN (6. 3. 3)
koja se mora pojaviti najmanje jedanput izmedju prve i zadnje naredbe pot-
programa. Ako se u potprogramu koriste programski ciklusi onda naredba
(6.3.3) ne sme biti zadnja naredba ciklusa, na slidan nadin kao 5to naredba
STOP ne sme biti zadnja naredba ciklusa u programu.
U FORTRAN-jezlku postoji veliki broj funkcijskih potprograma, koji
se u programu pozivaju propisanim imenom. Ovo su potprogrami opdteg
karaktera, kao 5to,je izradunavanje elementarnih funkcija i sl., koji se 6es-
to koriste u raznim prora-unima. U tabeli 6.3. I dat je spisak ovih potpro-
grama. U tabeli su uvedene sledede oznake
x, xr, x2,.,. -artimetidkiizrazi,R - realna veliEina, koja se registruje u obliku pokret-
nog zareza,
C - celobrojna velidina, koja se registruje u obliku celogbroja,
M - maksimalna vrednost celog broja (M=2 147 483 6411 ,
P - maksimalna vrednost broja registrovanog u oblikupokretnog zareza (P s ?,2. 10?3 ),
["] - celobrojni deo broja y.L"JNavedena relativna gie5ka funkcije je najveda EtatistiEki dobijena re-
lativna grSka za razne vrednosti argumenta iz dozvoljenog intervala.
Funkcijski potprogrami navedeni u tabeli 6.3. 1, pojavljuju se jedan-
put u programu posle prevodjenja sa FORTRAN-jezika na ma5inski jezik.
Svako mesto u .FORTRAN-programu na kojem se pojavljuje ime funkcijskog
potprograma znadi prelaz na ovaj potprogram, a zatim, kada se izvrSi ovaj
potprogram, vrsi se povratak iz potprograma u program.
U FORTRAN-jeziku postoje i funkcije koje se pi5u na isti naain kao
i funkcijski potprogrami, a pojavljuju se u programu onoliko puta koliko
t2l
Tabela 6.3. Ibu rlEr. ot1.
qrurhr.
4l!, I nlta,att I a,rt.ta_t' tlEltdu ls-Ett.E(rl b(rt I I r,rl.rl-r E@ lqslbwloht lq{d .T I l,0t.rO_' M l*t6
F(l) a I T a"a.tltlr(tl tblrl I rr<l,tl3.to' t l. tt.ta
tllptsrtt.illrt I rl<4,:tt.to'b tdLrb, * l. tt. lO{
tM ar, rt [t rl<a,tr5.lO-rr, lt !/artld. r.r. -. -
I l,3l.rc-t
rulrt .t{ (rl I rr.l,2tl. l0rr, rt I a.3a. r!-'
rnlll aoabllt I rt$ I t.:a. ro_'M.- Brtc.rrrd. tdsl,.Icl rr{l I l,al.rc-'
{l:l .Ett(rt rtat I ,.rr.to'rffilrt,rll 6rt l.!/r:, ri .rY.t a ,.7r.tc-'
ruld .Dlr) I .r < lta.atl I !,to.ro{slrt I ar <!?a,atl t o.tat.to_'ua:l 6lrt I a l. u. to-twlrt,rl....l E(t,rr,..., c .r1.1.2a....<i I
er.rr*ucrr2....t rlr 'ttt,...<t I
MFt.a:,...' c rrl,tr2t....<r C
ur(at.1,...t T rrl,lrrl....<t c
Nu(4t.rr,..., Sarl'.1...., C rtr.r.:r,...<r I
[.r lrl.rl,..., rrr'rrlr,.!r<t I
qFhr.t,..., c rtt , utt ,... (r
I .tr,11,... <t c
6IeFac I s,zc. ro'7 &tr. r&Ul!l t-&fi'et !tat I t.rl'to-l lAl-! l@lt
I o.rr,ro-flrrr.rrrr I a. ta. !a_t
rulrt I lc<,ul.rot' t.tt'll-'
L22
6d
G1I
@dt
dc)pdF
t
srloo
trd,{.o Ndo0t,kOtrtNN'
'lnbioookcn.o aJc ooO Urk C6O.$ a,dF{ o aOOOLto .oo )aol{ a-l!.Xra.{
tJ.catl,aIcLd.oottlA4
xooon,
F{
o8tta
tt,a
L6L6et,tal+{NoA
rt,a-lt,oeI!t,nc,{ntdI
a,Ioc
dogtocattAoIoI
Iia7EuttOfirtoko.ona.taa,>{adorredAEx:
an(,
.ractL
Irae,k-tt at
on&t
I I I I I I t
aa,aft & (, (, e u & U & U & (, &
r,co3ttl!
oco{,crtLtno v,
x
:tY?
tuNLA
x
A
v
x
x
Etl,
dx
x
A
vN1
x
EIl
xIBx
ovc|x
uIx
:Y,ta
ATx
Ix
Aux
It4,6r.
(, a o a o tr (, & o fr q &
FcaIAaI,ao.aa
d(,-,1.,rtEo.l,g
D
IN*
urc,{o;x
dxEUl
I
,a
a{x
xq
EI
x
l\x
xcgIx
l\xIEx
Nx
-l or
:l:I
x x x E': li:tcaI.a,to3t5
xC.13h
Ixl-a&.H
c{x
xz(,HoH
Nx
rzoHa^
dx
xtHoH
N,a
x2Ho
x
xooI
x
xooI
xtofi
ra
aio4
,lf<z
x
EH
-_\
123
puta su zapisani. Dakle, na svakom meatu gde ae nalazi Diihovo ime, u ma-
Sinskomprogramu,bi6epostavljenizvestanbrojmaFinaldhnaredbikojerealizuju odgovarajudu funkciju. Ove funkcije su prikazane u tabeli 6' 3' 2'
Primer
Sastaviti program koji izralunava vrednost funkcije
0(x,Y) = U(x-Y) - 4,3 u (2x-1,5Y)
gde Je
(6. 3. 4)
u(t) =(6. 3. s)
za proizvoljan broj parova (x, y). Svaki par brojeva (x, y) nalazi 6e na po
jednoj kar{ici, i registruje ee opisom polja F10.4'
Algorltam je Prikazan na sl. 6.3.1, gde ie pretpostavljeno da se iz-
ra€unavanje funkcije (6. 3.5) vrSi pomodu funkcijskog potprograma (sl' 6' 3' 2) '
lo za t < o
.l o,u ze t = o
Lt,t z4 t > o
t
ilII
I,.\
j3ji
sI.6.3.1 sr. 6.3.2
o
124
FORTRAN-program sastavljen po algoritmu na sI. 6.3.1 ima slede.
Ci izgled:
hRITE(6rl0ll0 F0RHATI' rr5Xrrxrr)4Xr'Yrr9XrtTEIA' lll4 READ( 5r 12, EN0:20 I xrYl2 FOR},|ATl2FlO.4t
TETAiUFUUI X-Y I-+. 3*UFUN( 2. rX-I " 5fy'
IIRITEI6Tl3I X,Y,TETAl3 FORHATI | 'rFl0.4r5XrFl0.4r5XrF4. l l
G0 TO l420 sT0P
END
Izra6unavanje funkcije U(t) vr5i se pomoCu slededeg funkcijskog potprog-
rama
FUNCTION UFUN(T'IF(T) l0rtlr1Z
lO UFUN=0RETURN
ll UFUN.o.5RETURT'I
l2 UFUN-1.0RETURNEI{D
Za Sest zadatih parova (x,y) na ulazu, izlazni rezultati se dobijaju u
obliku tabele
125
vrsta FUNCTION ime(lista) (6. 3.6)
iI!
END
gde namesto redi vrsta moZe doCi sluZbena reE INTEGER ifi REAL u zavis-no6ti od toge koja se vrsta brojnog podatka dodeljuje imenu promenljive kao
rezultat potprograma. Sve ostale re6i u gore navedenoj konetrukciJi imaju
ranije opisano znadenje (vidi 6.3. 1).
6.4. OpSti potprogram
Funkctjska naredba i funkcijski potprogram kao izlaznu velidinu daju
jednu vrednost koja ee dodeljuje imenu odgovarajuceg potprograma. Medju-
tim, vrlo 6esto se zahteva da potprogram moZe dati vi6e vrednosti na iz-lazu. To je omoguCeno opStim potprogramom, koji se pi5e kao posebne pro-
gramska cellna oblika
SUBROUTINE ime(lista) (6.4. 1)
;II
END
gde je
SUBROUTINE - eluZbena reC i oznaEava podetak i tip potprograma,
ime - naziv potprograma i definiSe se na isti naein kao imepromenljive,
- spisak fi}*ivnih argumenata, mediu sobom razdvojenihzatezima,
- sluZbena red, koja oznadava fizi6ki kraj potprograma.
Fiktivni argumenti opgteg potprograma mogu biti imena promenljivih,
imena nizova, fiktivna imena drugih funkcijskih lli opStih potprograma (vi-
di odeljak 6.?).
Izmedju prve naredbe potprograma (SUBROUTINE) i zadnje naredbe
(END) moZe se nalaziti prozvoljan broj FORTRAN-naredbi, osim:
- naredbe FUNCTION,
x
I 5" 07500.0033
- I 50. O000-12.5500
0"o5Or OOO0
Y TETA
- 1o.0000480.0000
30" 5000-20.0000
0o070.0000
- 3.30.J0.c'
-3.3-1.6
o. ('Iista
END6.3. l. Eksplicitna deklaracija vrste funkcijskog potprogram4
Vrsta funkcijskog potprograma moZe se deklarisati unutra6njom kon-
vencijom FORTRAN-jezika ili implicitnom deklaracijom po prvom slovu
imena potprograma. Pored ovih mogudnosti, funkcijski potprogram moZe
se po vrsti deklarisati eksplicltno na slededi nadin
t
t28
- druge END-naredbe, lll- druge SUBROUTINE-naredbe.
Vrsta fiktivnih argumenata odredjena je unutraSnjom korvencijom
FORTRAN-jezika ili opisnim naredbama za eksplicitrnr, odnosno, impli-
citnu deklaraclju vrste, koje se piSu iza prve naredbe potprograma.
Kako opgti potprogram mole dati vise vrednoeti na izlazu, to ee od
svih navedenih argumenata u listi neki pojavljuju kao ulazne velidine u
potprogramu, a neki dobijaju brojne. vrednosti u Potprogramu i predstav-
ljaju izlazne veliCine. Prema tome, lme potPrograma u ovom sludaju slu-
Zi samo za raspoznavanje potPrograt+a, a ne za dodeljivanje brojne vred-
nosti na izla?.lt iz potprograma. OpBti po,tprogram ima smisla i bez argu-
menta. Ako je potprogram bez argumenata, onda se piSe u obliku
SURROUTINE ime
II
I
END
Prelazak iz programa u oP5ti
CALL ime (lista)
(6. 4. 2)
potprogram vrli se pos'ebnom nared-
bom
(6. .l . 3)
gde je
CALL - sluZbena ret i oznaCava poziv op5teg potprograma,
ime - naziv opSteg potprograma koji se poziva,
lista - spisak stvarnih argumenata, medJu sobom razdvojenih za-rezima.
Stvami argumenti mogu biti aritmetilki izrazi, imena funkcijskih i-
Ii imena op5tih potprograma.
Stvarni i fiktivni argumenti moraju se slagati po broju, redu i vrsti'
Od navedenih stvarnih argumenata neki de biti ulazne veliEine u op5tem
potprogramu, a neki Ce biti imena promenljivih ill nizova kojima se docle-
ljuju vrednosti u potprogramu i predstavljaju izlazne velidine potprogranr:r'
L27
PrimerSastaviti potprogram za reiavanje kvadratne jednadine
Ax2+Bx+c=o (6. 4. 4)
jeAlgoritam
prikazan na sl.potprograma
6.4'. 1.
Re(x) = --b1?^Im (x.)=ylDl/2A
lDl <o,1 ' 10
n"(xn)= Re(x.)
6.4.r
U FORTRAN-jeziku ovaj potprogram moze se zapisati u vidu opgteg
potprograma u obliku
SUBRUUTINE KVJ€D( Ar B rC t REXIr I l{Xl rREX2I I tlX2 rI IREAL IHXI' II1X2lF{Al 20r21.r20
20 DISKR=8**2-40*A+cREXI=-Bl I 2.*A )
I ilXl= SQRT ( ABS ( D I SKR I ) / ( 2. *A I
IF(ABSIDISKR l-l"oE-61 ll'll'2222 lFl DISKR t l0r rlr l210 lF(61 l3rl4rl3l3 I=3l5 IHx2=-Iltxll6 REx2=RExl
RETURNla I=a
GO T0 15I I I =2
co To 16l2 I -l
REX2=REXI-Ir,!XlREXl=REXlrIl'lXlRETURN
2l I.5R E TURNEND
rT ovom potprogramu vr5i se ispitivanje uslova
lol <t.o.to-6
da bi se izbegao uticaj greske koia se javlja pri prevodjenju koeficijenata
jednadine u interni kod radunara (binarno kodirani heksadekadni brojni sis-
tem), kao i uticaj greSke usled radunanja sa pribliZnim,brojevima.
Primeniti opsti potprogram za reSavanje kvadratne jedna6ine (KVJED)
na reSavanje prolzvoljnog broja kvadratnih jednadina, pri eemu su koefici-
jenti svake kvadratne jednadine zadati na jednoj kartici sa opisom F6.2.
Algoritam za ovo izradunavanje prikazan je na si. 6.4.2, gde je
pretpostavljeno da je op5t-i oblik kvadratne jednaEine
Pyt+Qy+R=0 (6. 4. 5)
a promenljiva I svoj.om vredno5Cu odredjuje karak:ter re5enia, kako je to
opisano u opgtem potprogramu na sl. 6.4. f. FORTRAN-program sastav-
t29
sI.6.4.2
ljen po algoritmu na 61. 6.4.2. ima slededi izgled
REAL Il{Yl r lHY2HRITE( 6, IO
'lO FORIIAT( | I r 3Xr rAr 17X1 tBtr7Xr'f t rlOIr'Xl I r l4Xr tX2r rBXr.tltlt rr24xrrREALAI{ . tilAclN REALAT{ lfiAcll{r/lREADl5r llrEND-lil Pr'QrRFoRtlAT(3F6.21 ,.CALL KVJE0I PrQrRrREYlr IllYl rREY2r ll{Y2r I IGO TO (16r 16r l5rl5rlTlrlIIRITE I 61 2O I P rQ rR rREYI r t l'lYl r REYZ r I l{Y2 r IFORIIAT(' t t7 lF6o2tZXl rl llco ro 13IRITEI 6t30, PrQrRrREYI rREY2r IFORilATI t' t7(F6.2tZXlrF6.2rlOXrF6.2rl0Xrll IGO T0 13
l? URtTEl6r+Ot PrQ'Rrl40 FORhATI'' t3lF6.2t2)(lr32XrIl t
G0 ro 13l4 sToP
END
Za ulazne podatke, za re6avanje 4 kvadratne jednaEine, po gornjem
programu, dobiJaju 6e rezultati u obliku tabele:
t3ll
l520
l630
ULAZ: qQ./R
rED(ea,R Re(xli.(x),Pe(v.),I- (Y.), x )
r30
c
-+8.00lo4l
2+.0041c00o.o
xl t2REALAN ITIAGIN REALAN IilAGIN
lr0O -61001.00 -2r406000 0.01.00 -10r000.0 -10.00
12.o0lo 200.0 2.005.00 {o00
-4.001.200.05o 00
-2.00-4c 00
I2435
6.4. l. Promenljivi izlaz iz potprograma
lzlaz tz funkcljskog I oplfteg potprograma vrgi se preko naredbe RE-TURN' u slucaju funkciJskog potprograma naredba RETURN vrsi povratakiz pqtprograma u program, i to u onaj aritmetiCki lzraz programa, u kojemse kao argumert pojavilo ime funkcijskog potprograma,po kojem se doSlo izprograma u potprogram. U sluEaJu opsteg potprograma naredba RETURNvr$i povratak iz potprograma u program i lo na naredbu koja neposrednosledi iza naredbe CALL kojom Je izvrden preLaz iz programa u potprogram.
Pored ovakvog povratka lz op3teg potprogranra u progratn, moZe sevrgiti i povratak na naredbu sa odredjenim obeleZjem u programu. [, ovomsluEaju naredba povratka ima oblik
RETURN i (c.4.6)
gde je 1 ceo neoznaEen broj ve6l od nule ili ime celobrojne plornenljive,Brojna v.ed'ostjukazuJe na obelezje naredbe, zadato medju atvarnirn ar-gumentima potprograma, ObeleZja naradbi u programu na.koja se moie do-di iz potpr.g'ama navode se kao stvarni argumenti pdprograma u obriku
& n (6.1. ?)
gde je
& - simbol koji ukazuje da je argument obetezje naredbe, a
n - obeleZje Jedne izvr5ne FORTRAN naredbe u programu.
Kako se fiktivni i stvarni argumenti moraju slagati po broju, redu ivrsti, to se na odgovarajudem mestu, u nizu fiktivnih argumenata pise,+.Tako, naredba (6.4.6) vrll prclaz iz potprograma u program na naredbu
i
131
CiJe je obelel,je n1 , gde je ! redni broJ obeleZJa u listi stvarnih argumena-ta potprograma.
U ranijem primeru, za resavanje kvadratne jednadine, u programuae vrgi prelaz na razlidite naredbe Etampanja u zavisnosti od velidine I,kojoj se dodeljuje brojna vrednost u potprogramu (KVJED). Ako se koristinaredba (6.4.6), moZe se isti program napisati u obliku
REAL lilYlrlltY2HRIIE(6r10'
lO FORI{AI( t, r3X, .Ar rTXr rB, r 7Xr rC r r t0Xr rXl, rl4xr. X2r r gx,*tl.l. rr24Xr.REALAN It{AclN REALAN IilAGlXr/t
l3 READ(5rllrEt{D.l4l prQrRl l FORT,|AT ( 3F6.2 t
caLL KVJ ED{ pr Qr R r REyl r t tlyl, REy2, tt{y2, I,El 6r fl 5r tl 7 ILRITEI6r20 I PrQrRrREYIr ItlYlrREY2r IllY2r IFORI{ATl' t tl lF6.2t2I I rtl IGO TO t3I{RITE(6, 30 t P,Q,R,REYI, REY2, IFORl.lATl. . t3lF6"2t2X lrF6.2r lOXrF6.Zrl.0XrI llGO TO t3t{RlTEl6r40 I PrQrRrIFORIIATI | . tJlf6.2t2Xlr32XrJl IG0 ro 13
l+ sToPEND
Op5ti potprograln u ovom sludaju ima slededi izgled:
suBRouIINE KVJED( Ar IrCr REXIr IilXl,REX2, IilX2, t,1, +,IIREAL IIIXI,JHX2tF(Al 20r2lr20
20 DlSKR.Brr2-+o*A*CREXI'-8/(2.rAt
l52J
l630
l740
22l0l3t5
l6
Itll
l2
2L
I |lxl.SQRTlAbS I DISKR ,11 12.+AtIFt AESt DtsKR t-1"0E-6t 11, 11, 22IF(DISxR' l0rll,t2IFlEl l3rl4113lr3I }lI2r- I ilxlJ.2REx2.R EX IRETURN Jt-+Go To It1.2J.lGO TO 16I.lREx2.RE X l- I |'tX IREXl.REIlrtitxlRETURN Ilr5RETURN 3€r{0
132
6. S. Nacit![ preno5enJe argumenate lz progreEa u potprqgreme
Funkcijski i op6ti potprogram predstavljaju posebne programske ce-line. Ovakvi potprogrami kada ee jedanput napiEu mogu se po po,,trebl korie_titi u razliditim progrqmima, Sve promenljive i obeleZja koja ee Jav{aju upotprogramu nezavlsni su od onih u programu. Tako se ista obeletje I i.me_na promerJjivih mogu pojaviti u Flcrtprogramu i programu. Medjutim, zaista inena promenljivih, u programu i potprogramu, angaZuju se razllll_ti registri u mehoriji. U opStem potprogramu za redavanje kvadratne Jed_nadine, pronenljivrm A, B i c dodeljuju se brojne vrednosti stvarnrh argu-menate P, Q, R (vidi primer na kraju odeljka 6.4). promenljiva I Jav{a eekao stvarni argumerd i kao fiktirfni argument potprograme. Medjuttm, broj-na vrednost p.omenljive I u progremu bi6e u jednom, a broJna vrednost pro-menljive u potprogramu bide u drugom memorijskom reg.istru. Ovakav ne_din prenoEenja vrednosti argumenata zove ae dir:ektan prenos argumenetaiz programa u potprogram.
Prema tome, u slucaju direktnog prenosa argumenata iz programa upotprogram, vrednosti argumeneta ae prenoEe iz registara memoriJe -u ko_jiqna se nalaze atvarni argumenti - u registre memorije angaiovane za fik-tivne argumente potprograma.
Pored ovog nadina prenogenja argumenata iz programa u potprograa,moie se koristiti indirektan prenoa argumenata. u ovom slucaju, kao fik-tivni argument pojavljuje ge adreea registra u kcjem se nalazi stvarni er-gument programa. Na ovaj na6in ee vrednost argumenta uzima iz registramemorije u kojem se nalazi stvarni argumert. Da bi se ukazalo na to dana mesto fildivnog argumerta dolazi adresa, a ne vrednost stvarnog argu_menta, filctivni argumert se pi5e izmedju kosih crta, tj.
/a/
gde je a ime fiktivnog argumente.
Tako ako bismo u opBtem potprogramu6ine,.u prvoj naredbi, fiktivne argumente A,crta, tj. potprogram u obliku
(6. 5. r)
za regavanje kvadratne jedna-
B i C napisali izmedju kosih
I
2J
22toItr5
l6
l{ll
l2
2L
133
SUBROUI I ilE r.V JED I t Al, l8l t f C t t RE'.l t ltitxl, RE XZ, I ilXZ, I r. r*, I tRElt tHxlrlllxzlFl^t 20t2lr20DlsxRr 8r12-{. *a*cREII.-.8/(2..A1I llxl.SQRT ( ABS I OtS(R I I I I 2. tA.llFlABSt DISKRt-l.OE-6t llr tlr22lFlOtSKRl lOrllrl2;Ft8t l3?l4rl3l13I tlx2r- I ilx IJ.2REI2.REx lRETURN JI'tGO TO r5l-2J.lGO TO 16l.lREX2-REXI- lrXlRETI'RETIiIHxIRETURN I1.5RETURN 3EilD
tada ee brojne vrednosti stvarnih argumenata p, Q i R ne6e dodeliti fildiv-nim argumentima A, B i c, ve6 6e se u potprogramu namesto fiktivnih ar_gumenata /N' /B/ 7/c/ Euvari adrese registara u kojima se nalaze brojnevrednosti promenljivih p, e i R. Na ovaj naEin brojne vrednosti argumena_ta P, Q, R koriste ae u potprogramu, indirektno iz registara memorije ukojima se one duvaju u programu, a preko odgovarajudih adresa ovih regi_atare.
6.6. Promenliivi ulazi ,, -a^-^--^-^
U funkcijski i opiti potprogram dolazi se lz programa, na prvu izvr,6nu naredbu koja eledi iza naredbe FUN.TI.N ili
''BROUTIONE_ pored
ovakvog prelaza na potprogram, kod ovih potprograma moze se koristitii promenljivi ulaz u porprogram. pod pojmom t'ulaz u potprogram[ podra_zumeva ae meato u programeko.ur algoritmu na koje se vr6i prelazak, ka_da ee prelazi iz prograrna na potprogram. promenljivi ulazi u potprogramoznadavaju ee naredbom
r8{
ENTRY tme, (llata) (6.8. l)
gde Je
ENTRY - sluibena reE koja ozna{ava mesto ulaska u potprogram,ime, - naziv i-tog ulaza u potprogram, koji 6e definiEe na isti na-
Ein kao i ime potprograma,
Iista - spisak fiKivnih argumenata i-tog ulaza upotprogram, me-dju sobom razdvoJenlh zerezima. Ovi flltivnt ergumerti sedefiniSu na isti naCin kao i fiktivni ergumerdi pdprograma,ali mogu biti razlidlti po broju, redu I vrsti od fitrflvnih ar-gumenata potprograma.
Na ovaj na6in motre biti definisan veCi broj mesta u potprogramu, od
koJih moZe podeti izvr5avanje potprograma, pored normalnog pr.elaza izprograma na potprogram od prve lzvrEne naredbe {za naredbe FUNCTION,
odnosno SUBROUTINE. Na ma koje me6to potprogrema, oznaceno kao mo-gudi ulaz naredbom (6,6. 1), moze se dodl u sluCaJu funkcijskog potprogra-Ere, navodjenjem argumenta aritmetickog izraza u obllku
ime, (lista) (6. 6. 2)
gde je
- naziv i-tog ulaska u potprogram
- spisak stvarnih argumenata i-tog ulaza, medju sobom raz-dvojenih zarezlma. Ovl stvarni argumerti 6e definisu nalstl nadin kao i stvarni argumenti potprograma, samo Stose po broju, redu i vrstl moraju slagatl ea fiktivnim argu-
, ,mentima i-tog ulaza u potprogram.
U sludaju op5teg potprograma, prelaz na ulaz, definisan naredbom(6.6.1), vr$i se naredbom
CALL ime, (lista) (6.6.3)
gde je
CALL - sluZbena reE koja oznadava pozivanje opiteg potprograma,
ime, - naziv i-tog ulaska u potprogram,
lleta - spieak stvarnih argumeneta l-tog ulaze u potprogram, me-dJu sobom razdvojenlh zarezima. Ovi etvarni ergumenti8e definigu na istl necln kao i etvarni ergumerili potprogra-ma, samo lfto se po broju, redu i vrsti moraju sla$ati safiktivnim argumertima l-tog uleza u potprogiam
ime,
lista
t
135
Naredbe (6.6. l) ne utiCu na redosled lzvrSavanja naredbi patpragraan1
ma. Ove naredbe se ne smeju nalaziti u okviru prc'gramskih ciklusa del;ni-
sanih naredbama DO.
Primena naredbe (6.6. l), za definisanje viSe ulaza u potprogram' u
programiranju je korisna kada se Zele na razli[itim mestima programa
definisati razliditi argumenti, koji se ne slaZu po broju' vrsti i redu sa
argumentima definisanim u prvoj naredbi potprograr4a (FUNCTION' odnos-
no SUBROUTINE). Pored toga, ova naredba je korisna i kada se na razli-
ditimmestimaprogramadefiniSurazliditeizlaznevelidinepotprograrna.
Primer
Velidine A i B odredjuiu D(karlove koordinate na slede6i nadin
x-- tf$T6'zy= tr+B
(6. 6. 4)
(6. 0. i,)
Saetaviti Program koji Ce izradunavati Dekartove i polarne koordirrltc tada-
ka, na osnovu zadatih vrednosti A i B' Na sI' 6'6' i prikazan it algr;pi13'
za reSavanje ovog zadatka.
Izradunavanje polarnih koor<]inata vrSi se preko potprograma, diji
je algoritam prikazan na sl. 6'6'2' Kao Sto se vidi' postoie tri mogu6a tt-
laza u ovaj potprogram PP1, PP2 i PP3' Ulaz PP1 obezbediuje izradunava-
nje
R = \fizTjz
lJlazPP2 obezbedjuje izraeunavanje ugla u radijanirna
XQ.= arctg 1.
(6. o. nt
i R po formuli (6.6.6), a ulaz PP3 obezbedjuje izradunavanje ugla u stepe-
nima na osnovu zadatog ugla Q" u radijanima'
180Q" = um't' q"
(6.6. ?)
(6. 6. 8)
136
(a., s,x )
(x,v,n,e^;
(x v,ng.)
sI.6.6-2
t
13?.
Program sastavljen prema algoritmu na sl. 6.6.1 ima slededi izgled:
HRIrEl6rtOtr0 FoRtfATl. tr3xrrxrrSxr.y.rgxrrSrll0xr
trIETAr/. . t.26lf-t.RADIJANA STEPENI./l50 READ(5r20rENDr4Ol ArB20 FORiArl2F6.2t
y-A.gCALL KORR(A,8,XICALL KORRTIX,Y,R, RADI JICALL KORTSISTEPEN
'XETTE(6, 30 I XTYTRTRADIJ,STEPEN30 FORIIATI | . t3lF7.2t2XlrF6.3t2Xtfl.Zl
GO TO 50{0 sToP
END
a potprogrem, prema algoritmu na sl. 6.6.2, bi6e
SUEROUTI}I€ KORRTI X, Y,RI TETA tTETA.ATII{l Y./X IEN'RY KORRtX,Y,RIR.SQRTI X.XiY.Y tRETUR,NEI{TRY KORTSITETASITETAS-TEIA*I 40. /3. I +l 59RETURI{EIID
Potprogram nosl ime KORRT i ima 4 fiktivna argumenta, od kojih su X iY ulazne vrlldine, a R i TETA izlazrc;e veliEine. pored toga, potprogramsadrZi dva ulazna mesta, pri cemu ulazno mesto aa imenom KoRR ima trifiktivna argumenta, od kojih 6u prva dva ulazne velidine, a dnrgi izlaznaveliEina potprograma. poredjenjem normalnog ulaza u potprogram, prekoioena.KORRT sa ulaznim meatom KORR vidimo da ee u prvom radunajuobe polarne koordinate g t R, a u drugom eamo koordinata R. ulazno me-ato sa imenom KORTS ima jedan fiktivni ergument i to izlazni. Na ovo u-lazno mesto ima smlsla da se predje iz programa samo ako je pre toga pot_program pozivan preko imena KORRT, Cime j6 promenljiva TETA dobilabroJnu vrednoet, pa je aritmetirki izraz na desnoj strani aritmetidke na-redbe
f €f ASrT€TArI 8O o I 3. L1ti9
definleen I promeriljiva TETAS Eote doblti korelctrnr broJnu vrednoet kadase na potprogratn dodje prsko ul8z. KORTS.
r38
izlazni rezultati se dobijaju u obliku tabele
Za ulazne podatke
A
13,20
6, l84,37
ll,8?
XY
I 5. l8 ,.7t)9.72 !3.697.48 - l. 70
12. +O 8.2f
B
-?,50
?, 50
-6,0?
-3,60
R TETARAOIJANA STEPENI
16.22 0n359 20.5016. ?8 0.953 5a.617.67 -O.22? -l2o8l
ll.gt 0.588 33r59
6 . ?. I?",,1: pdprog."-. koj nti d"ugihpotprograma
VeC je reteno da se kao fiktivni, odnosno odgovarajudi Etvarni, ar_gument funkcijskog i opsteg potprograma mote pojeviti ime drugog potpro_grama. Medjutim, ako u programu 6toji naredba
-c4LL FUNtnATrArDt (6. ?. l)
gde ie MAT ime potprogrr. ar A i D imena promenljivih, tada program zeprevodjenje ea FORTRAN-jezlka na maginski jezik ne ra8polare informa_cijom o tome da li je MAT ime potprograma ili lme promenljtve. prematome, ava imena potprograma koja se javljaju keo stvarni argurnenti u dru_gim potprogramima moraju biti deklarieana kao takva u programu. Ovo aevr6i poeebnom naredbom
EXTERNAL lieta (6.?.2)
gde je
EXTERNAL - sluZbena reC u FORTRAN_Jeziku,lista - spisak ime.ne potprograma, medju sobom razdvojeni
zarezirna, koja se javljaju kao irgumenti u potprogra-mima, I
'!
4j139
Naredba (6.?.2) pi5e se u programu pre prve lzvrEne naredbe pro-grama.
Primer
Sastaviti potprogram za numeridko izracunavanje odredjenog integra-la po Simpsonovom obrascu
b
v = i rt'l a' = | [rt*"t +4f (xr) +2f(x2)+. ..+4f(xo-t)+f("J] (6. ?. 3)
gde je
(6.?.4)
a n broj podintervala na koji se deli interval integracije [", U-]. U (6. ?. 3)
vrednost apscise x, odredjena je relacijom
. b-ah:-n
xr =a+ih,
odakle sledi da je
f(x.) = f(a)
f(x") = 1161
i=0,1,...,n (6. ?.5)
'\'
(6. ?. 6)
Ulazne velidine za potprogram jesu ime potprograma za izradunava-nje vrednosti funkcije (x,), granice integracije a i b, kao i broj podinter-vala n. lzlazna veliCina potprograma je vrednost integrala y i broj k kojiu potprogramu dobija sledede vrednosti
f O - "Lo
je koreltno izraeunata vrednost integrala,k= l
I I - ako je ulazna velicina n < 2, i tada se vrednost integrala\ ne izradunava.
Algoritam saetavljen po gornjim zahtevima prikazan je na sl.6. ?. I,Kako se Simpsonov obrazac (6. ?,3) primenjuje za paran broj podintervala
to se ne poCetku algoritma, na osnovu zadatog broja n izradunava broj
140
J,o,b,n v k
x+h?x
sr. 6. ?.1
-=,.[;] (6. ?. ?)
gde srednja zagrada oznadava celobrojni deo kolidnika. promenljiva j, uokviru algoritamskog cikluea C, defini5e da li se vrSj. izraaunavanje sumeordinata funkcije (x), koja se kasnije mnoti sa 4 (suma sr). OpSti potpro_
gram na FORTRAN-jeziku aaetav{en prema algoritmuslededi lzgledt
SUBROUI TNE SlilPSf l FUltrArBrNryrKtllr2.lll/21lFti-2t torltrll
l0 K-lRETURN
ll K.OH- ( 0-A l/xSlrOoS2=0.X.A+Xlrl =il- lJ.1DO 12 l.lrillGO TO lt3rl{lrJ
13 Slr5lrFUN(XlJ.2
l2 XrX+HYtlHlTo I r{ FUNI A t +FUN ( I I +4" *Slr2. rS2 IRETURN
l4 s2rszrFuN(XlJ.lGO TO l2END
l.l1
na el. 6. ?.1 lma
(6. ?.8)
(6.?.e)
Primeniti izloZen potprogram na izradunavanje integrala
Ifaxl-
J1+xzo
Prematome, funkcija f(x), u ovom s).u6aju, ima oblik
1
r(x) = If;r-U ovom slu6aju treba aastaviti program Ciji 6e zadatak biti da pozo-
ve pqtprogrrh SIMPSN i da Ftaapa vrednoet izraCunatog integrala. Medju-tim, potprogram SIMPSN eadrZi fiktivan argumerd fUU, t o5i predstavl.jaime fun&cije, pa prena tomg i medJu stvarnim argumentima mora ae po-javiti ime potprograma po kojem ae vr6i izradunavanje vrednoati funkcije(6.?.9). Program u ovotn sludaJu ima slededi izgled
t42
EXTERNAL F679READI 5r 1(.1 ArgrN
l0 FoRr{ATl2F6.2rl2lcALL SIl.tpsNlF6TgrArBrNrvRED, I tIF(tt tlrl2rll
ll t{RITE(6r20t20 FORI'iATtr VREONoST ITTEGRALA NlJf TZRACUNATA JER.*. JE N }IANJE OD 2I}
STOPl2 HRITEt6130t vREo3O FOR}IATII VREONOST TNTEGRALA JEITEI5.?I
STOPENO
Naredba EXT ERNAL ukazuje programu za prevdjenje sa FORTRAN--Jezika na maitinskr jezik da ime F6?9 u naredbi cALL nije ime promenlji-ve, ved ime potprograma. pri prelasku iz programa u potprogram SIMPSN,flktlvno ime potprograma FUN zamenjuje se stvarnim imenom F6?9. To Jeime funkciJskog potprograma koJi se mora naplsatl odvojeno za svaku funk-ciju liji se irdegral izraEunava, Tako za funkciju datu sa (6. ?,9) ovaj pot_program ima sledeCi izgled:
FUNCT!ON F679IXIFo79=lolll.+xrx,R€TURNEND
Ovaj funkciJski potprogram poziva se u op5tem potprogramu SIMPSN,
Jer Je prelazom iz programa na potprogram SIMpSN fi}iivno ime potprogra_ma FUN zamenjeno atvarnim irnenom F6?9. Vrednost irtegrala (6.?.S)Stampana je u obliku
VREDNOST INTEGRALA JE 0"78539808 OO
u programu Je uzetoda je A = o; B = 1,0 i N = 20.
6.8, Nizovi kao afgumenti potpr.ograma
Niz u pdprogramlr mole blii argument pdprograma lli ne. Ako niznir€ argument potprograma, tada 8e rrrakglnralne vrednoati njegovih in-deksa moraJu definlsati u naredbi DIMENSION, kao i kod svih druglh pro-gratna. Za ovako definisan niz rezervi6e ae potreban prostor u memor{i,t'oval prostor se koristi aarno u okvlru odgovarstudeg pdprograme.
143
Medjutim, .ako
je niz argumert potprograma, tada se ime niza morapojaviti takodje u naredbi DIMENSION u potprogramu, ali se ne moraju na_voditi maksirnalne vrednosti indeksa, jer je za ovakav niz prostor u memo_riji rezervisan u okviru programa, a ne potprograma. prema tome, imeniza u naredbi DIMENSION, kada je niz argument potprograma, sluZi samozato da ukaZe da je odgovarajuci argument ni.z, a ne zato da rezervige me-morijski prostor' zato se za ovakve nizove u DIMENsIoN-naredbi najde.cenavodi samo ime i poaetne vrednosti indeksa. Tako, ako se napiie
I rutclIoN. pptArNtDIhENSIOfu A(lt,ct20t
to znari da potprogram pp ima za pr-vi fiktivni argument jednodimenzional_ni niz A, dija Ce maksimalna vrednost indeksa biti zadata u programu, akonkretan broj elemenata niza A, koji se koristi u potprogramu, zadat jefiktivnim argumentom N. Naredba DIMENSION defini5e u ovom sludaju daje argument A jednodimenzionalni niz, a niz C posto nije argument potpro-grama bice definisan u potprogramu i za njega bi6e rezervisano 20 memo_rijskih registara.
Prema tome, elemenat liste DIMENSION_naredbe u potprogramu, ka_da niz nije argument potprograma ima oblik
ime(i-^,) (6. 8. r)
gde je
ime - naziv niza, a
i-u. - maksimalna vrednost indeksa niza.Medjutim, ako je niz argument potprograma, tada se moZe pisati ob-
lik (6.8. l), ali Ce on imati isti erekat kao i
ime(t)
Posto broj elemenata niza moze biti promenljiv kadapotprograrna, to se dozvoljava i oblik
(6. 8.2)
ie niz argumerd
(6.8.3)
gde je
ime
ime(n)
naziv niza, a
L44
n - ime celobrojne proritenlJive, Eijom brojnom vrednog6u sedefinise broj elemenata niza u potprogramu.
()blik (6.8.3) je dozvoljen samo u potprogramima i to za nizove kojise javljaju kao argumenti potprograma. Za jednodimenzione nizove, kojisu argumenti potprograma, oblici (6.S. 1), (6. 8. 2) i (6, 8. 3) imaju isto zna_6enje.
Medjutim, kada je u pitanju vi$edimenzioni niz, tada je op5ti oblik(6.8,3) sledeCi
ime ( Iista) (6. 8. 4)
gde je
ime
I ista- nazl mza, a- spisak, od najviSe ?, imena celobrojnih protnenljivih,me-
dju sobom razdvojenih zarezima. Brojne vredngsti ovilfpromenljivih defini5u maksimalne vrednosti indeksa u pot_programu,
Oblik (6.8.4) omoguduje razliditi raapored elemenata vi5edimenzio_nalnog niza. U memoriji radunara vi5edimenzionalni niz se regictruje ko_lona po kolona. Tako Ce elemenat ime (2,2) biti 4. elemenat u nizu, akoje u pitanju niz in^e (2,3)
ime( 1. 1)
ime(2, 1)
ime(l,l)ime(2, 1)
ime(3, 1)
ime(1,2)
|..ar-rilirne( I , 3)
ime(2,3)
odnosno peti elemenat ako je u pitanju niz ime (3,4):
ime(1,3)
ime(2,3)
ime(3.3)
ime( l, 4)
ime(2,4)
ime(3,4)
Slede6i primer ilustruje, razlidite rasporede elemenata dvodimen_zionalnog niza u potprogramu za isti dati dvodimenzionalni niz u programu.
Primer
'ime(1,2)
ime(3,2)
Sastavitl program koji formira dvodimenzionalni niz
145
11 t2 13 14
2t 22 23 24
31 32 33 34
(6.8.5)
i potprogram koji Stampa elemente dvodimenzionalnog niza (6. 8. 5) ze raz!
li6ite oblike DIMENSION-naredbe u Potprogramu.
Neka je ime dvodimenzionalnog niza (6.8.5) NIZ, tada 6e program i-
mati sledeci izgled
OItlENSION NIZ( 3ral0O l0 l=1r3D0 l0 J-lr4
1G NtZ(IrJlrlO*I+JhRITE(6120l
2L FOR}|ATl I f r3Xr'Nrt3Xt rltl'llOIrt TNIZOVI U POTPROGRAI{U'lID0 3O I'1r3DO 3O J=lr4
3',t CALL VARNI2{NIZrl rJ IS TUPEND
gde je VARMZ ime op5teg potProgrema, Eiji su argumerti: ime dvodimen-
zionalnog niza (NIZ), broj vrsta (I) i broj kolona (fl istog niza u potprolra-
rnu, Neka su broj vrsta i kolona, u PotProgramu, definisani kao promen-
ljive, tada potprogram ima slededi izgled
sU8R(IUTINE VARNIZ ( Arilr I{ IDlltENSlot{ Atr{rr{tt{RITEI 6r l0 I l{rl{r (A( I r J I t J=ltlllFORI,|AT( . .,2I4r3Xr4l 5llF(N-ll 2Or39t2ODO {O I=2rNllRlTE( 6r 501 lA( I rJl r.Jtl rl'llFoRHAT(r .rllXr4ISlRETURIIIEND
Dvodimenzionalni niz (6.8.5) u memoriji, registrovan je kolone po
kolona. Prvi indeks niza u naredbi DIMENSION definiSe broj vrsta dvodi-
menzionalnog niza, odnosno broi elemenata kolone. Prema tome, u Potpro-
gramu 6e biti koriSdeni elementi niza (6.8.5), tako da svaka kolona sadr-
Zi N elemenata niza u programu. Rezultati gornieg potprograma Etampani
su u sledecem rasPoredu
lir
2t10503Cr
lt8
t{
t2III
lllrlltlII2lll2lII2ttl2lll2l3lll2l3lll2l3rll2L3l
NIZOVI U POTPROCRAIIU
2l2t 3t2l 3I 12
2
3
4
2
2
2
3
3ll2Itl 2212 32lr 22 13Iz !2 23
Kao Eto se vldi tz prikazanlh rezultata, dvodimenzlonalni niz sa di-EenzlJrma A(2, 2) u potprogramu korietlde sledede elemente niza (6 . 8. S)
l2h.zbzt2 1322 2.332 33t2 13 l+22 23 1.432
'? t+
11 31
2t L2
ll t2
2t 22
lz programa
Jer svaka kolona dvodimenzionalrlog niza u potprogt'mu sadrti dva elemen_ta, iz nlza elemenata (6. S. S) u programu poreaia(ih kolona po kolona.
Medjutim, ako ge u naredbi DIMENSION potprograma, niz zapise uotitlku A(1, l), tj. potprogram u obliku
suERourtilE VARNI ZIArN,il'otr{€NstoN AtlrltlJRllEl6r lOl trllr lAl lrJ t rJ=lrttl0 foR,flAtl | .;214111,r4151lFln-lt 20r30r20
20 OO {O I.Z|N
t17
40 lrRlTEl6150l (Al lrJlrJrlrHl50 FoRrAllr rrllXr4l5l3O RETURN
ENg
tada Ce nizovi u potprogramu imati slede6i izgledN
IIII2
222'2+3l
H
I2ttI
I{I ZOVI U POTPROGRAIIU
lllltllll12lll2ltl2tlt2Lll2l3lri2l3lll2l3lll2t3l
?t3l21 3l3l t221 3t 123l t2 22
2l2t 3l21 31 t2
122232
.L3ll22L 3t31 L212 222t 3l3l L2L2 22
U ovom slulaju evaka kolona dvodimenzionalnog niza u programu po-Elnje narednim elementom niza (6. g. 5), kada se ovaj shvati kao jednodi-menzionalni nlz porcdjan u redosledu kolona po kolona. Zato rriz A(2,2) upotprogramu lma obllk
jer prva kolona podinJe elemertom 11, a druga gledeCim elemertom, postoprvl tndeka u naredbi DIMENSION niza A ima vrednost 1.
Ako se u potprogramu, u naredbi DIMENSION, niz A zapise tako dapnri lndeks ima,iatu vrednost kao i u programu, tako da potprogram imao&lilk
1l 21
21 3l
ll
liI
lilll
I
ii
148
SUEROUTIIJE VARNT Z ( Arrtr it tDIIIENSION A(3IIIllRIT€l6r l0t Nrttr lA{lrJI 1J-l I!{tl0 F0RB r(r rr2t4r3Xr{l5lrtil-l) 2Ot3Ot2O
2O DO +0 I-2rN40 llRITEl6r50t (fltrJtrJ.lrt{l50 FoRttATl. rrllxrtt5l30 RETURN
ENIi
tada Ce nizovi u potprogramu imati slededi redosled
I{IZOVI U POTPROGRA}IU
11lt L2ll 12 13lt l2 13 l+ll2Lll L22t 22tl t2 132t 22 23lt L2 13 1+2L 22 23 24ll2ttlll t22L 2231 32ll L2 13zt 22 2331. 32 331l t2 13 142L 2; 23 2431 32 33 34
U ovom sludaju isti indeksi u potprogramu I programu octredjuju is-te eleErerte niza (6.8. 5).
{rlo Ieeto u potprogramima vi5edimenzionalni nizovi tretiraju se
kao jednodimenzionalni nizovi. Tada se potprogram VARI.fIZ mofe napisa-ti u obliku
rll2l3l4zt2?2t243l
L49
SUER0UTINE VARNI Z (A rN, fl IDIHENSION A( I INll.Ntlll{RITEI 6r IOI llrllr lAl I l r-}rlrNt{l
I0 FORIIAT(' tt214r3XrL2I3lRETURNENO
U ovom EluEaju niz (6.8,5) u programu biGe u potprogramu uzet kao
jednodimenzionalni niz i to u redosledu kolona po kolona niza (6.8. 5). Tako
da 6e za razne vrednosti N i M biti definisani elede6i Jednodimenzionalni ni-
zovi u potProgramu
2222Iv33
A
I23+t234I23+
NIZOVT U POTPROGRAI{U
llrl 2lll 2t 3tIl 2t 3l r2I I 21lI 21 3l r2LL 2L 3t t2 22tL 2L 3t L2 22ll 2l 3lLL 21 3T L2 22tL 2L 3t t2 22Ll 2t lr tz 22
3232
t23232
L3 23
13 22 3it3 2-7 t1 t+ 2+ 3+
U potprogramima koji 6e odnose na matriEni ra6un, i nalaze se u bi-blioteci gotovih pqtprograma radunsklh centara, najdesCe 5e matrice treti-raju kao jednodimenzionalni nizovi, U ovom sluaaju je vazno uoeiti da Ce
redosled elemenata matrica u potprogramu biti kolona po kolona matrice,
kao jednodimenziorialni niz.
<^U.
(.( "
to
$
?, AI.GORITMI SA I.OGIEKIM KONSTAIfTAMAI PROMENLJTVIM
7. 1. Operaclje poredjenja
29 ?.1. l. DeXniclje operaclja poredjenja
U mnoglm problemima tok algorltma zavlsl od odnosa nekih brojnihvelldina. U dosadaEnjirn lzlaganjima ovakve odnose uvek smo svodlli na
lepitlvanje vrednoetl aritmetlEkog lzraza, a tok algorltma menjall u za-
visnoetl od toga da l1 je vredrost izraza bila manja, jednaka lll veda od
nule.
U FORTRAN-jeziku postoji mogudnost dlrektnog poredjenja brojnihvellElna. Op6ti oblik ovakve operacije poredjenja je
aOb (?.1. l)gde su
a,b - aritmetidki lzrazl,O - operaclja poredJenja.
Operacija poredjenjau (?. f. l) moZe biti jedna od operacija navede-
nlh u tabeli ?. l. l.Tabela ?.1- 1.
Operacije poredjenja
U FORTRANU u matematlcl Opis
F:o ledmko. GT. veCe.GE. >/ vece lli iednako. L't'. manle. L!l^ \< manie lll iednako. NE. * razliCito
152
Navedene oznake operaclja poredjenja u tabeU ?,1.1,, treba ehvatitikao jedan nedeljivi si.mbol FORTRAN-jezika. Operacija pbredjenja (?.1.1)uvek izraZava jednu tvrdnju koja moZe biti istinita ili laina.
Ako je tvrdnja -iskaz izra|en sa (?. 1. 1) istinit, ozna6i6emo ga, kakoje to uobidajeno u algebri Logike, sa 1, a ako je laZan sa 0.
Tako se moZe, u FORTRAN-jeziku, pisati operacija poredjenja
J, GT.56to u matematidkoj notaciji predstevlja relaciju
(7. r.2)
(7. 1.3)j>s
U $atematici je uobiEajeno da se funkcija (?.1. l) zove predikat, pa6emo ovaj termin koristiti u daljem izlaganju. Kara}cteri.stika funkcije(?.1.1), odnosno predikata, jeate da argumenti funkcije uzimaju vrednos_ti iz potencijalno beskonaEnog ekupa veudina, a sama funkcija uzima vred-nosti iz etcupa lO, ff . tafto, argument j predikata (?. l,3) uzima vredno_sti iz skr:,pa celih brojeva, a vrednost poredjenja j)b moZe biti istinita llilazna, a to znadi da uzima jednu od vrednosti, u'rovno oznadenih sa l ili 0.
j o ?. 1.2. Naredba prelaza po vrednosti poredjenja
Grananje u programima po vrednosti operacije poredjenja, moZe seizvrEiti pomodu naredbe
IF(p)naredba (?. 1. 4)gde ie
IF - sluZbena red,
p - predikat (definisan sa ?.1. l, ),naredba - jedna izvrSna FORTRAN-naredba, osim druge naredbe IF
po vrednosti poredjenja, ili DO_naredbe.
Naredba (7. 1.4) izvrSava se razlidito u zavisnosti od vrednosti pre_dikata p:
l) Ako je vrednost predikata p = l, tada se izvrEava naredba zapisa-na desno od zatvorene zagrade u (?.1.4), a zatim mogu nastati dva slu6aja:
16:t
a) Ako naredba u (?.1.4) nije uelovan llt bezuslorna naredba prelas-
ka, tada 8e izvrgava naredba koja eledl iza naredbd (7'L'41'
b) Ako je naredba u (?. f.a) ualovna ili bezuelovna naredba prelaza'
tada se lzvr5ava naredba ukazana ovom naredbom prelaza'
2) Ako ie vrednost Prediketa p = O, tada se ne izvr6ava naredba za-
piaana deeno od zatvorene zagrade u 1?' f'4), ve6 odraah prelezi na nared-
bu koja sledi iza naredbe (?. f.4)'
Tako, naredba
lFlJ.GT.5l A'BrC
ima sledede dejatvo:
(?.1.5)
- ako je J ve6e od 5, lzvrFi6e se naredba A=B+C' a zatim naredba
koja sledi lza naredbe (?.1.5),
- ako je J manje ili jednako 5, preskodlde ae neredba A=B+C i izvr-
6iti naredba koja sledi iza' (1. 1.5).
Medjutim, u sluEaJu nar€dbe
rF(J.Gr.5' G0 T0 100(?. 1.6)
ako je J veCe od 5, izvr6i6e 8e naredba bezualovnog Preleska na naredbu
sa obeleZjem 100, a ako je J manje ill jednako 5, pre6i 6e se na naredbu
koja eledi iza naredbe (?' 1' 6).
Prlmer
Zadal je niz brojeva xr, l=1, 2, "' Svaki od brojevd xr nalazi se ne
po Jednoj kartici u polju od l. do l0' kolone ea opieom F l0' 5' Odrediti ko-
liko Je od zadatih brojeva xt ve6e od 25,8'
Algoritam za re5evanje ovog zadatka je prikazan na sI' ?' l' l'
Program saetavljen po algoritmu na 8l' ?' 1' f ima slededi izgled:
N.030 REAO(5rlO0rCND.20l X
loo FoRtATlFlo.5tIFlIrGTo25.El ll-N+lGO tO 30
20 lRlTEl6r40l rtC FORKATIT 11rrtf4l
STOPEt{D
tt{
. TRUE.
. FALSE.
LOGICAL listagde je
LOGICAL - sluZbena re6, a
sl. ?. l. I
. ?.2. Logi6ke operactje
32 7.2. l. Losidke konstenfF i nF^h6-ri{,,^
U dvoznadnoj algebri logike (Bulovoj algebri) postoje dve konstante,NaJde66e se ove konstante oznadavaju ciframa 0 I 1, pri demu 0 predstav-{a vrednoet laZnog iskaza, a I vrednoet istinltog iekaza. U FORTRAN-Je_zlku za logiEke kongtante koriste se simboli
za ietlnitoet, I
za laZnost iakaza.
Logidka konstanta se registruje u jednom memorijskom registru.Imena logidkih promenljivih konstruisu se na istl na6ln kao i irnen.
brojnih promenljlvlh. Da se jedno ime promenljive u programu odnosi nalogtcku promenljivu, ukazuje se opisnlm naredbama za deklaraciju vrstepromenljive. Ova deklaracija se moie izvr5iti ekspllcitno naredbom
(7.2. rl
(7.2.21
(7.2.31
155
Ilste - spleak lmena promenljivih medju sobom razdvojenib zarezi-
ma, koje se deklarisu kao logidke promenljive.
Pored eksplicitne deklaracije logiCkih promenljivih, moZe se izvrEi-
tl I implicitna deklaracija pomo6u naredbe
IMPLICIT lista
gde je
IMPLICIT - sluZbena red, a
(7 .2. 4l
lieta - spisek elemenata medju sobom odvojenih zarezima.
Element llste u slu6aju lmplicitne deklaracije logidkih promenljivlh
lma lzgled
LOGICAL (lletar)
gde je
LOGICAL - eluZbena red, a
(?.2.5)
listal- spisak velikih slova engleske azbuke, medju sobom raz-
dvojena zarezima.
Impllcitnom deklaracijom kao logi6ke promenljive deklariEu se eve
promenljive u jednom programu, dija imena podinju jednim od navedenih
glova u implicitnoj deklaraciji (7.2.4l,, gde je elemenat liste obltka 0.2'5).
Ako v16e uzastopnih elova engleske azbuke predstavljaju podetna slo-
va lmena logiCkih promenljivih, tada ee elemenat llste u (?.2.4) moZe pi-
eatl u obliku
TOGICAL (x1-x2,x3-xa) (7.2.6l
DekleractJa (7.2.6) deklarlEe eve promenljive tija lmena po6inju od
vellkog elova xr do vellkog slova x2 engleeke azbuke, odnosno od x3 do
x., kao loglEke promenljive u programu.
Ta&o oplana naredba
LOGICAL AFITLTBIJLL 9.2.71
deklarlSe promenljlve ABf, L I BULL u Progrs.mu kao logiEke promenlji-
ve.
156
Opisna naredba
IHPLTCII L06ICALIA-D,L I (7 . 2.8)deklariSe sve promenljive Cija imena poCinju slovima A, B, C, D i L kao lo_gidke promenljive.
ViSe logidkih promenrjivih sa zajednidkim imenom obrazuju niz. Isve sto je receno za nizove u s1udal'u brojnih veuEina vazi i za nizove aalogidkim velidinama.
?. 2. 2. Definicije logidkih operacija
Logidke operacije definiEu se nad argumentima koji mogu uzimativrednosti iz skupa od dva erementa fo, rj . Rezultati.logickih operacija u-zimaju takodje vrednosti iz istog skupa elemenat" lo, rl . u algebri logikeskup funkcija preko kojih se moze izraziti proizvoljna funkcija algebre ro-gike zove se pun sistem funkcija. pun sistem funkcija grade razlidite funk-cije algebre logike. u FoRTRAN-jeziku su izabrane tri funkcije koje 6inepun eistem funkcija, to su:
- negacija ili ne funkcija,
- konjukcija ili i funkcija, i- disjunkcija ili iU fuakcija.
Pomodu ove tri funkcije moZe se izraziti proizvoljna funkcija algeb_re logike. Sa druge strane, primena ovih funkcija na_jbliZa je Eirem krugu.ljudi, jer argumente povezuje na na6in koji je vrlo blizak uobidajenom na_dinu razmi6ljanja.
Funkcija negacije z je takva sloZena funkcija koja je istinita ako ar_gument x nije i6tinit, odnosno laZna ako je argument x istinit. Ova fun-kclja se dobija primenom operacije negacije nad jednim argumentom
z = A e.2.g)gde povlaka iznad x oznadAva operaciju negacije, i 6ita se "ne x,,. U ta_beli 7.2. 1 data je definicija funkcije negacije.
x z=x0 I
o
Tabela ?.2- I
15?
Funkclja konjukcije z je takva eloZena funkcija algebre loglke, koja
je isttnita samo eko au oba argumenta t I y, od kojth je oaatavljena, ie-tinlU. U evl- dr.ugim eluEajevima ta funkclja je laZna. Ova frinkclja se pl-Be
z = x^':' (?.2. 10)
gde simbol A oznedava operaclju konjukcije, I 6ita ge "t I y". U tabell
7.2.2 dala je tabela ietlnltoetl za funkclp (7-2.l0l.
Tabela 7.2.2.
x v z=xhy
0 0 00 I o
I {, (,
I I
Funkclja dlsjunkcije z Je takva sloZena funkcija algebre loglte, ko-
Ja je laZna aamo ako su oba argumenta x i y, od kojih Je saatavljena,la-
Zna. U evtm dnrgim eludajevima ta funkcija je tstlnitE. Ova funkclja ae pl-
lez=rYy (7.2.1r)
gde almbol V oznadava opbraciju dlejunkclje, i 6ita ge t'r ili yt'. U tabell
?. 2. 3 data Je tabela letinltoeti za funkcifu (7.2. lLl.
Tabela ?.2.3.
x v z = rVy
o 0 oo II 0
1 I
Deflnlsane trl 1og16ke operacije: Degacija, konjukclja i diejunkclja
predatavljaju logidke operaclje u FORTRAN-jeziku. U tabeli 7.2.4 pfika-
zanl su simboll ovlh operaclja u FORTRANU.
15E
-3t ?.2.3. tpgtctd tzrez
fddEkl izraz Je aaetav{en od logickth konstalru. foddkfh promen{l_vlh sa lndeksom ilI bez njega, r predikata'edju aobom povezanih logirr.rnoperac$ama. vrednost logtEkog tzraza odredjuJe ee rzvrSavanjem logld-&{h operac{a gleva nadeano, prr rem-u vazi alede6r prrorrtet: naJpre ee rz-ra6unava vrednoat predlkata. a zatlm redom logi6klh operablJa negactJe,tonjulctle i na kraJu dreJunkclje. Ako se zeli drugacrjt redoaled u prlortte-tloa operac{a, to ae moZe poett6l uvodjenjem zagrsda. Deo logtEkog lzra_ze replsan rzmedfu otvorene r zatvorene male zagradb rma naJvt6l prrorttet.
Dve logiEke opereraclJe u loglGkom lzrazu mogu bltl Jedna do druge,eqho a.ko Je druga od nJth operac{a negaclJe.
Prlmer loglIkog lzraza u F0RTRANU
B. AND. C. L.3.6 (7,2, t2)Ovde Je prvl argumentj operac{e log{Eka promen{lva B, a drugl predltatC. LT.3.6. Promenljivd C Jeste broJna promen{iva, t ako Je C < g,6, i Blatlnlto, logi€ld lzraz (.7.2.L2, Je tstinlt; u gvim dnrgtm elu.aJevima onJe lalan.
3€ t.r. n.
7.2.4. l. Dodeulvanje vrednoatt ea ulaza
Inena logi.rdh promenljrvih, pojedtni elementi logt.kth nizova ili tro-glcH nizovt navode se u lietl ulazne naredbe po retrm pravflrma kao i ueluEaju broJnth velrErna. Medjutim, u odgovaraJucoj FoRMAT-naredbi opi-suJe ee po{e u ulaznom slogu koje sadrZi loglEku konatantu, sa
gde Je
n
L
w
nLw (7 . 2. r3l
- ceo neoznaden broj kojt ukazuJe koliko puta ae prlmenjuje oplc L,- efr*6f FORTRAN-jezlka kojlm se ukazuJe da odgovarajude polje
u ulaznora elogu aadrli fodGku konstantu.
- c.o Deozna€en broJ kojlm ae deflni6e Birlna polja u ulaznom slo-gu, odnoano broJ kolona na kartlcl kada ae radl o ulazu ea lltaEalirrttca.
159
Polje na karticl, koje sadrZi logidku konstantu moZb imati jednu ko-lonu iU vl5e njih. Medjutim, sa glediSta reg"istrovanja logidke konstante od
znaCaja je samo prva kolona. U prvoj koloni polja rno." ju nalaziti bu6en
kod elova T, za konetantu.TRUE., odnosno kod slova F za konstantu .FAL-sE. .
Ako su promenljive A i B deklarisane u programu kao logiike pro-menljive, tada naredbe
REA0l5rl0t ArBl0 FORiArt2LSt
dodeljuju vrednoeti promenljivim A i B sa jedne kartice, pri demu u kolo-nama 1. i 6. mora biti bu5en kod slova T ili F u zavisnosti od toga kojakonkretna vrednost se Zeli dodeliti promenljvim A i B. sadrzaj ostarih ko-lona, od 2. do 4. prvog polja i od ?. do 10. drugog polja, na kartici je bezznaCaja.
: '. 7.2.4,2- Logldka naredba
lrt ze_.se. dode]ili Lqgtqtoj pro_
- menljivoj, pglgglr {eredbe
l: e (7.2.14)gde je
a - ime logi(ke pr:":_"!lf:_*:3.._in_deksom,iti bez njegar
= - simbol FORTRAN-jezika,--+9 - loglCki izraz.
Tako se moie oisati
-
(7.2.1s)ive, Izradunavanje logidko g izraza
sti vr5i se sl.eva nadesno. Kako je X. O-Tti yre izraEunati vrednosl
180
3,f t, r. u.
imena logidkih promenljivlh, pojedini erementi logtdkih nizova ilt. lo -gi6ld nizovt navode se u lieti izr.ezne naredbe po iatim prav[ima kao u elu-daju brojnih velidina. Medjutim, u odgovarajud0j FoRMAT-naredbt navodiee opie (7.2.1S), ea&o 6to w oznadava broj slmbola u polju izlaznog elo-ga' Ako ee izdaje logi.6ka konstarte .TRUE., tade 6e krajnjr degni erobolpolja u izlaznom elogu bitt slovo T, a ako Ee izdaje logi.ka konstanta' FAlsE., tada ce krajnji desni simbol u porju bl* elovo F. svi ostal' srm-boli u polju lzLeznog eloga bi6e znaci blanko.
Tako naredba izalza
lrRIfE(6r20t ArB20 foRrtATl. .r2L5l
formira dva polja od po 5 sinbola. prva Cetiri etmbola svakog polja bi6eznaci blanko, a u zadnjim pozicijems polja bi6e alovo T, odnoeno F u zavi_snosti od vrednosti logidkih promenljivlh A i B.
Odrediti vrednost logidklh tunkcija
Fr=xrnxzVxsFz=xrVxzVfrF!=xrAXznXs
gde su x2 i x3 togidke promenljive, a x1 predikat
/ Prlmer .-il--lr''
(?. 2. r6)
(7.2. r7)
(?. 2. r8)
(7.2. t9)
tj.x, = (a >b)
(o *" je a1b*' =l
l.r ato je a>u
Velidine koje ulaze u algoritam jesu brojevi a i b, i logidke kone-koje predstavljaju vrednoeti argumenata x2 i x3 .
Algoritam za izre.Cunavanje funkcija (7.2. I7l prikazan je na el.?.2.1,
tante
r6l
Fr - Xrz\livxsFs-\vxrvx3
Program na FORTRAN-jeziku zapisan po algorltmu na al. ?, 2, l. ima
slededi lzgled
IHPLICIT LOGICALIX,FIDlHeNSlOr{ X(3lrF(31yRI IE ( 6t2001
20o FoRiATl. ,r3xr'ArrTXr rB,tSlti rxl XZ Xt Fl F2 Frt ll
600 READ(5r3O0rElilD:5O0t ArDrXl2lrX(31300 FoRHAT(2F6.2.2Lt1
xlllrA.6E.8F( I l=Xl I lcAND.x(Zl. OR.Xl3lF( 2l=oNOT.X( I l.OR.Xl 2 l.OR..NOf. I(31F{ 3 l=xl I l.ANtr..t{OT. X( 2 l.At{D..NOT. x(3 IHRI TE( 6r+001 ArBr lX( I I I !*1 r3l r lFlI I r l-l r3 I
40O FORilATl.' tF6.2t2XtF6.216L5lGO T0 600
500 sroPEND
Za zadate veliilne a, b, x2 i x, rezultati se dobijaju u obliku ta-:
bele
t@
FIx3xl x2
FFTFTF.
F2
TTTT
TT
F3
F
FF
TFF
100 50 13. l2 F+0. lo 60.00 F1.50 22,00 F{o 80 -1o00 T
-12.00 -12c00 T-12100 0.0 F
FFTTFFFFTTFf
39 - ?. 2.6. Naredba prelaza po vrednosti logiEkog izraza y'
U odeljku 7. l. 2..videll smo naredbu p.relez/po vrednostl predikata.Medjutim, op6tiji oblik ove naredbe bl6e
I[(9) naredba ,,/
gde sve oznake lmaju isto znaEenje, kao i u sludaiu naredbe (?. 1.4), samo6to ee izmedJu zagrade moZe pisati ma kakav logiEH Tzraz g. Dejstvo na_redbe (?.2. l?) 3e lsto kao I u eluEaju nar6dbe (1.1,41, samo sve ono Eio seodnoet na predlkat p sada se odnosi na loglCld, Iziaz j. Zapravo naredba(7.1-4't j€ poseban sludaj naredbe (?.2.r7.. kada je logldki izra?sastavljenod jednog predlkata.
Tako ee _moZe plgati
IF.(A. AND. B. OR. C. cT. 28. 5) c,o To l0o
U*9ySlq*cluCeju pqgme4_.jive A i B moraju bitl dektarisane kao lcgilke pro_men{lve, a promenljiva C mora blti brojna promenljiva. I,,radunavanje z
vrednostl logiEkog izraza u gornjoj naredbr odvija se srede6im redosledom:
sa pr.a) Odredjuje ee vrednoet konjukcije A. AND. B koju 6emo oznaCtti
Ib) Odredjuje se vrednost predlkata C.GT.28.,5 koju Cemo oznadi_
tl ea p..
. c) Na kraju se odredJuje vrednost logidkog iztaza pr.OR. p, koju6emo oznaCiti ea p.
Dejstvo gornje naredbe je aledede: ako Je vrednost logidkog lzraza pistinita prelazl se na naredbu C,O TO 100, u auprotnom na naredbu kojaeledi iza opleane lF naredbe.
163
Primer
Zadat je niz brojeva x1 , i=1,2,... . Sv'kl od brojeva xt natazi se
na po jednoj kartici u polju od 1. do 10. kolone kartice sa opisom FlO' 5'
Odrediti koliko od zadatih brojeva xi leZi u intervalu [-20; -10] iu [5, 1;
8,51 .
Algoritam za re5avanje ovog zadatka je prikazan na sl'7'2'2'
sI. ?. 2. 2
Program eastavljen po algoritmu na el. ?' 2.2, irna slede6i izgled
N.t3C READl5rlO0rEND=20t x
lco FoRttAT(Fl0.5lI F I'I. GE. -20. ANo. x. L E. - 10. I'R.
.X.G€o5o t.ANO.X.LE.8.5l NEN+lGO TO 30
20 l.RtTC(614Ol N
t0 FORI{ATlr N.'rl8lstoPEND
-20<x<-1O
5<x<8n+19fl
8, ALGORITMI SA REALNIM KONSTANTAMA IPROMENLJIVIM DVOSTRUKE TAENOSTI
Pri razmatranju algoritama sa realnim kon'tantama i promenljivim,u glavi 4, podrazumevala se tzv. obidna taEnost, tj. registrovanje mesovi-tog broja u jednom memorijskom reg"istru. ovakav naiin registrovanja do-zvoljavao je da meBovitl broj sadrzi najvide 7 vazelirt dekadnih cifara.
U mnogim, posebno tehni6kim primenama ra6unara, ova tadnost jedovoljna. Medjutim, u nekim naudnim problemlma, kao i u izuzetnlm teh-nlckim izraEunavanjima, moie 8e zahtevati predstavlanje me5ovitih bro-jeva sa ve6om ta6no6cu. Naj6eE6e se uzima povedan broj cifara meSovitihkonetanti dva ili vi$e puta ve6i od obidne taEnosti. Kod radunara IBI\{-'360144 registrwanje brojeva u dvostrukoj tadnosti obuhvata 16 vazedihdekadnih cifara broja.
Me5ovita konstanta dvostruke taCnosti pi5e se u jednom od slededadva oblika, kao
0 al Niz dekadnih cifara, pri Cemu se celobrojni i razlomljeni deo raz_dvajaju decimalnom taekom. Ispred ovakvog niza moZe stajati znak + zapozitivne brojeve, a mora stajati znak - za negativne brojeve. Ovako za_pisan meSoviti broj moze imati najmanje 8, a najviEe 16 dekadnih cifara,
r b) Oblik kao pod a), sa najmanje jednom cifrom, a najvile 16 dekad_
nih cifara, iza kojeg se pi6e slovo D, a zatim se navodi ceo dvocifreni de-kadni broj, hoji predrtavua eksponent broJa 10. Blojna vrednost 0vek0 zlr_
166
pisane konstante jednaka je prolzvodu brojeva ispred elova D i stepena bro-ja lO, sa celobrojnim eksponentom navedenim iza elova D.
IVlesoviti broj dvostruke taenoetl.registruje se u memoriji u oblikupokretnog zareza, tako da se eksponent I deo mantiee ve6e teZine registru-je u jednom registru, kao u sludaju obidne tadnosti, a deo manje teZine
mantiee u susednom memorijskom registru (s1.8. l. l). Ovako registrovan
IZNAK XH
broj x ima brojnu vrednost
sl.8. 1. I
^. - \/-_( t:z aa-r 1 '.1..
x = xM.16xB (8.1.1)gde za x, vaZi relacija (4, 1.3), a. za. x6 vaZi relacija e.1,4), s tim Sto
se u ovom sludaju u mantisi naLazi L4 binarno kodiranih heksadekadnil ci-fara, Sto odgovara pribliZno 16 dekadnih cifara.
Primeri
a) Dozvoljeni oblici meSovitih konstanti dvostruke ta€nosti
384. I 5?I)4-14.t)D-2
15684.3?90?
b) Nedozvoljeni oblici meSovitih konstanti dvostruke tadnosti
t2.004-5.07D150
8.2. Definicija realne promenljive dvostruke tadnosti t
Ime realne promenljive dvostruke tadnosti definiSe se na isti naain
lcao i ime realne promenljive obidne tadnosti. IMedjutim, da bi se imcna
ovih promenljivih razliltovala u programu, sva imena promenljivih dvo-
struke tadnosti Inoraju biti eksplicitno <.leklarisana jeclnont opisnom nared-
lrorn. Ova opisna naredba se piie
i
51 9---24.23----- 1051 50- ---10
t67
DOUBLE PRECISION IiStA II (S. 2. 1)
cde jt' DOUBTR PRECISION
zlieta -
registra.
eluZbena red, koja oznadava opisnu naredbu
za deklarisanje realnih promenljivih dvos -
truke tadnosti,
spisak imena promenljivih i nizova medju so-
bom razdvojenih zarezima, koji se u Prcgr.r-mu deklariSi.r kao promenljive i nizovi dvos -
truke tadnosti-
lzAko se ime niza deklariSe kto niz diji 6u elementi dvostruke tran'ls-
'ti, tada se u zagradi iza imena ni:a navodi dimenzija niza na isti na6in l^:ao
lu naredbi DIMENSION. Kada je ovakav niz naveden u listi opisne irar:'lLe
(5.2.1), ne navodi se i u listi DIMENSION-naredbe. lt*ko ".
moze piiati
!.bOUBLE PRECISIC}N KITEI,IT C( 20 I
Eto znadi da 6e u programu promenljive K i TEM, kao i niz C koji ima 20
elemeneta, biti dvostruke tadnosti. Za svaku promenljivu, sa indeksom ili
bez indeksa dvostruke taEnosti, u memoriji radunara bide angaZovana dva
Treba uoditi da opisnom naredbom (8.2. 1) eksPlir:',ino se deklaridu
lmena promenljivih navedena u listi kao realne promenljive dvostruke tad-
nostl, Tako u gornjem prlmeru promenljiva K, koja je po unutraSnjoj kon-
venciji celoborjna, deklariEe se kao realna i to dvostruke tadnosti.
Opisnom naredbom (8.2. 1) deklaridu 6e i imena funkcijskih naredbi
i potprograma ako ee ZeU rezultat potprograma u dvostrukoj tadnosti.
Opisna naredba (8.2. f) se piEe na po6etku programa, pre prve izvr-
6ne naredbe p"og".-") h.edosled pisanja opisnih naredbi na podetku progra-
ma je slede6i:
' ' 1. Naredbe za ekspUcitnu deklaraciju vrste promenljivih (REAL, IN-
TEGER, DOUBLE PRECISION, LOGICAL),
, 2. Naredba za implicitnu deklaraciju vrste promenljive (IMPLICIT),
, 3. Naredba za navodjenje imena potPrograma kojl se javljaju kao ar-
gumenti drugih potprograma (EXTERNAL),
168
4. Naredba za,definiciju rttmenzija nizova (DIMENSION),
i 5. F\rnkcijske naredbe, i6. Oetale.naredbe programa.
t. r.dvostruke tadnosti
8.3. 1. AritmetiEka naredba
Na lsti nadin na koji se obidnim promenJ.jivim dodeljuje brojna vred_nost aritmetidkom naredbom, moZe se i promenljlvoj dvostruke tadnostidodeliti brojna vrednost. U ovom sluEaju aritmetidka naredba irna oblik.
gde jea=V
a - inie promenljive dvostruke tadnosti,
V - aritmetiEki izraz.
(8.3.1)
,Jo,rJ.it i - .. ,' ,'.,1,
Ranije smo videli da ako je jedan od argumenata neke aritmetidke o-peracije u aritmetidkom izrazu y, u obliku pokretnog zereza, a drugi celo_brojni, tada 6e medjurezultat ove operacije biti u pokretnom zarezu.. Me_
djutim, eada argumenti aritmetidkogizraza V mogu bitl vehdine u pokret-nom zarezu obidne i dvostruke ta6nosti i celobrojne velidine. U ovakvimaritmetidkim izrazirna medjurezultati se javljaju u obliku dvoetruke tadno-sti, ako je barem jedan argument dvostruke tadnosti, Medjutib, ako arit_meti6ki izraz g ne sadrZi argumente dvostruke tadnostl, tada 6e izraEuna_ta vrednoet aritmetidkog izraza biti prevedena u oblik dvostruke tadnoeti idodeljena promenljivoj a u (8.3. 1).
8.3. 2. Naredba ulaza
Kada se promenljivoj dvoetruke tadnosti dodeljuje brojna vrednostsa ulaza, tada se u ulaznom slogu mora opisati polje koje sadrZi konsten_tu dvoetruke ta6nosti, Ovaj opis polja pi6e ee u obliku
nDk.d (8. 3. 2)
gde Je
4nI'D
'k
169
- neoznalen ceo broj, koji ukazuje na broj ponayljanja oplaa D,
- slnbol FORTRAN-jezlka, koji ukazuje da pofJe eadrZi konstan-
tu dvoatruke tadnostl,
- neoznaden ceo broj, kojf ukazuje na broJ koloua polja na karticikoje eadrZi konetantu dvostruke ta6nosti,
' d - neoznalen ceo broj, koji ukazuje na broj decimalnrh megta kon-
stante dvo8truke taonosti.
Opis (8.3.2) navodi Ee na odgovarajudem rnegtu FORMAT-naredbe.
Konstanta dvoetruke taEnogti, sa odgovaraju6eg polja kartice, dodeljuje se
odgovaraju6oj promenljlvoj dvostruke tadnogti u Usti traredbe.laza. Ovak-
va konstanta registruje se u dva memorijeka registra, kako je to prikazeno
(8.3.2) moZe ee korietlti 1 opls
nFk.d (8. 3.3)
gde Je ziradenje sinbola ieto kao i u sludaju opisa konstar*e obiEne taEno-
eti. Obllk (8.3.2) i (8.3.3) ne razlikuju se bitno kada se radi o ner:edbi u-leza. U oba slu€aja konstenta se ulaza dodeljuje se pronenljivoi u Usti iregtstruje se na leti nadln u memor{i raEunara. Obllk (8.3,2) je pogoderr
za zapla vrlo 'nrlih i velikih brojnih vrednoeti, dok je u evlm drugim slu-
6ajevlma pogodnije korlgtiti oblik (8.3.3).
8.4. Izdavaaje brojnih vrednogti promenljivih dvostruke ta6nosti
Za lzdranje brojnih vrednooti promenljivih dvosttruke taEnosti moZe
se kortstlti Jedan od oavedenih oplea (8. 3. 2) iU (8.3.3). Kao I u sluEaju o-
blEne taEnoetl, opie (8.3.2) je pogodan kada ee radi o vrlo mellm ill vrlovsl{klm brojnim vrednostlma, dok je u svlm drugim slu6ajevioa pogodniji
opig (8.3.3). Ovo lz razloga Bto je eksponencijalnl oblik broja nepogodniji
za Eitoqje nego oblik 8a flk8nlm brojem c€lih i decimalnlh mesta. U sluda-
ju dvoetruke taEnostl ekapoaeacijalnl obUk ge izdaJe sa slovom D umeeto
alova E koJe se korigti za obiduu tadnost,
cl.r8. 1. 1.
Pored opiaa
170
Prlraer
sastavitl funkciJsl{, potprogram koJl i.zradunava sa dvostrukom tac -no56u
a
"h * rr)a2., x2r*r (8.3.4)
(8.3.6)
(8. 3. 7)
lxl<r, gaeie
ai
e!
85
E?
a9
all
= 0, ?85 398
=-0,080 745
= 0,002 490
=-0,000 036
= 0,000 000
=-0,000 00.0
t63 397 426
512 18? 669
394 565 299
5?6 18? 395
3r3 333 683
00r ?34 798
5
4
5
3
3
7
IzraEunavenje po formuli (8.3.4) daje vrednostl sluuene funkcije sa
relativnom greEkom
E < 16. l0-r6 (8. 3.5)Algoritam potprograma prikazan Je na sI.8.3. 1.
Brojne vrednostl kondtanate a2s., . dodeljuJu se etementima nlza br*r ,
i =0, 1, ...,+, ^
zatlm lzraEunava
Y=x2da bi se u clklueu odredila vrednost polinoma
n = br +yfbr +y [u3 +yfta+y 1ur+u.y1;]f6to odgovara polinomu
R = ar +x2 las +x2[a5 +xz (a7 +xz (ae +a11 xr))]f
Po lzlasku iz ciklusa dobijena vrednost R se mnoZl sa x, dime je odredjena
vrednost aprokelmacionog polinoma (8. 3.4) za detu vrednoet x.
FunkciJsld potprogram Bastavljen prema algoritmu ne sI.8.3. I ima
slede6i lzgled
L7L
FUNCTJON SINP+X(XIDULIBLE PRECISION SINP4X'B( 5I rXrY8 ( I I =u" 7E5396L6)397 4265A I 2 I - - 8.-07 45, I 21 87 66e4D- 2
B( 3 I =2" a9C39+565299t0-3A I 4l = - 3. 65761 8.?3 95: D- 5B(51=3cL1t336833D-7YrXtXS I NP4X=- 1.7347987f,-9DO l0 l=lr5
l0 SINPaX=SIf,tP4X*Y+Bl6-1,SINP4X.5l\P4X*XRfTURNENI')
Program koji za zadat ugao u ra-
dijanima (x), izra6unava ugao Ittl4\'xi sin((n/a). x), ima elede6i izgled:
sI.8. 3. I
DOUELE PRECISION XTYTALFAI 5INP4X
,, lBllil?lu?]n*,'*'r?Xr'UGA' u RADIJANITIA' rl4Xr'sINUs'/ I
IOO nelOt5rl00rEND-l0ll x
lo0 FoRfrAT(F8.51Y.SINP{X(xlaLin=3. rar 5 s26535ae7 et 2 / 4' r x'
HRtfE(612OOl X'ALFAtVzoo i6inlii;' lFBo5rF22ol6ro2€''161
G0 T0 30010r sToP
ENT)
Rezultati ee Stampaju u obliku tabele
X UGAO U RADIJANIMA
l. oo0u0 o.7853eSl 633974480-o.4oo0o -0.31415e26515897e20.0 0.0
-0.oooot -0.00000785398163400.52000 0.40840?0449666730
SINUS
o.?071067811865450D 00-o.3090169943749487D O0
0.0-0. ?85398 I 63389t5L90-O5
0. 39716789063477e39 00
R.y+b5_i ? R
Izradunavanje elementarnih funkcija sadvostrukom tadno5du
t72
Ako se proraCun izvodi sa dvostrukom taeno5du, tada je potrebno isve elementarne funkcije, koje se javljaju u proradunu, lzraeunati sa dvo_strukom-tadnoscu- vec je redeno da se u sludaju obiEne ta.nosti ove funk-cije radunaju preko funkcijskih potprograma sa propisanim imenima, koji8e automatskl pozivaju pri prevodjenju programa 6a I,ORTRAN-jezika nametinski jezik. potprogrami koji izradunavaju elementarne funkcije 6advostrukom tadno66u imaju takodje propisana imena, a prvo slovo. ovihimena ie uvek D, dto ukazuje da se radi o potprogramu sa dvostrukom ta6-noB6u. U tabell g. S. l. dat je spieak propisanih imena ovih potprograma.
Pored funkcijsrdh potprograma navedenih u tabeli g,5. 1, u FORTRAN--jeziku postoji I izvestan broj funkcija koje se pi.u na isti nadin kao i funk_cijsld potprogrami, aU se ne javljaju jedanput u programu na ma5inskomjeziku, ved onollko puta koliko puta su zapisane u programu, To zna6i dase ova funkcija zamenju;e nizom ma5inskih naredbi na svakom mestu pro_grertra na kojem je zapisana. Spisak ovih funkcija sa propisanim imenimadat je u tabeli g.5. 2.
U tabelama 9. S.1 i g, S.2 uvedene su sledeCe oznake:
x, xl, x2 ,... - aritmetidki izrazi,R _ reaLna velidina koja se registruje u obliku pokret_
nog zateza,
C _ celobrojna velidina, koja se registruje u qbliku ce_log broja,
M _makeimalna vrednost celog broja (M=Z 14? 4gB 647),p _ maksimalaa vrednost broja registrovanog u oblikupokretnog zareza (pr7, Z. IOls ),
[yJ - celobro;ni deo broja y,DR _ realna velidina koja se registruje u obliku pokret_
nog zareza dvostruke tadnosti,Dp - maksimalna vrednost br.oja registrovanog u obliku
pokretnog zateza dvostruke tadnosti (Dp*T 2. l0?5),
UU ,rEt. e1r. Otu Eira
Eb, | {lta.att ! t' !t.!a_rt E{*!t.rr rGElt.relrl a ! ,,tt'la-l' E@ l{[tc&lo(rl { I n a.ta. L-l' m btGtb0F lr, 6 u B l.{.la-'t[ulrl .bo { . l.tl.rcll 4 a.[.U-Lu[t DI I rl < a.tt.tcr' d a,x. ra-l!
{Ert&
r(r, at (.1 d I { <!.lt.lol't 4 , a\.vrrt, I !,!t.ll-lt
m|tl { < o.tt.lor'drtt. H.t..
B a,ar.la_lluu(t, r l.l u q< I n I' O. tl-l'
hEqE.
Etrt il t(l B l,t:.r-r'Ulrl &cEtd n r{(t il r.r. ro_tlE:atrrrl B latt ,tnt a t I 1.il. tt-r.
cntrl I ! < lta.art x !.9.ra_l'rd I l I'tl.la-l'Nl.' ritr(lt a !at a a'at.la-rr ,.ru4rt,n,..., Elt,rt....l B 11,.try,... a t T bU-F rtrra.uq.rr,.,.t 6t.t..r..,.t n t{,rrrr,... < t E LLI-r. xh..r.Eb *flt-a l T lril. rl-13Eb, r-;[/in'r. 4 rttat & t.o.to-L' Et!.-t tUto5L, r:-\-r.r n It.ta-tt<rdt.tta B a.:.ra_L
o4br uJ.-ttt'ra d c<r <a,ut.tctt il l.rl.tt-D
I
1?3
Tabela 8.b.1.
Tabela 8.5.2.ubrb,. ab
&Lrta_tdreb c I Edrrr. tr dlt!dl4.bt. r dl0
t&rtq ss.r IDhc, t'l T ,r.{ I c
go B Irtao l.utd a d
E& turt rDb&ar+h|rtt il
re(tt,tt .r-Ft/f,rJ..r t Hrr.E.ql-dbuol bl T rrtaQ B
lrtliil
ilir
Iii
il
ti[1
I'l'lr
t71
Navedena relativna greEka funkctj{r,vedu atatigddki dobijenu relativnu greBkudozvo{enog lntervala.
Prlmer
f,I2nlme primer naveden na kraj.u odetjka 4. g, s tlm Eto 6emo eadalzraEunavanJe erementarnrh funkclja izvr.iti preko potprograma aa dvoetru-kom tadno66u. U ovom zadatku treba lzradunati
Xr - l-e-reln2x + log(coezx).tgx
Jr ='ercaln (#) . h lxl.arqtsx
xr =y[lT]ffi1 +stnhx - 2costix
za zadatih ? vrednoetl argumenta x.
FORTRIIN-prog?am u eludaju koriEdenja potprograma ea dvoetrukotntaEnol6u lma elededl izgled:
ggyg!E PRTCISTOT{ xrYrrY&Y3HRlrEt6, loot
IOO FOnllAT( !.1. 14X1 t I I r l4Xr . yl . rl 5Xr, y? | rl5Xr . y3. l;DO l0l t-lr?REAO{512001 x
2OO FORilAT(F8.4IYl !l' -oExP | -Il
:D-s t lJl ?: rx t r o1s61o, ocos ( r r rrz, rorAN I x Iy3.DARstNt x/loo., +oLoG r ola iiiiiIoArAN( x ry3.DseRr I Dms r r..-oraii i ;t; i; ;i ; ;iiiililiocos" r, Ilol xRrrEt6r3ool xr ylry2rij:--3oo FoRlrATt . . rFo.irii, iitt-i.t t
STOP, .Elrlo
Izlazd. rezulted au Etampanl u obliku tabele:xYlYZY3
u tabeli 8.5. l, predetavlja naj_za rezne vrednosti argumenta iz
-75.t+2f-3r.2665-2t.0032i2.3{lo
0.rbg+.t.2026tt..33t!
-o.5828t970 32-0.!989881o l5-0.74071620 lz-o.97to9590 0to.3911757tr 000.2229++10 0to.a728656D 02
-0.758+e52D Ot-0.t?99992D Ol-Oc.57992?*D Ol-Oot0t6tt4D 0l-0.e86t05?o oooo2t29i40D Oto.lt90?20D Ot
-Oo?E88785O 3l-0ol16?878O l6-0o21?633e0 t3-Oo1122784o e2-o.to35loio ol-Or9089O7!D O2r0.l6E5t9lD 0!
1?5
Razlike izmedju ovlh rezultata i rezultata u primeru na kraju odelj-
ka 4.9, nastaju zbog izradunavanja elementarnih funkcija na 16 vaZedih ci-fara, prema ? vaZedih cifara kada ee radi Ea obidnom tadno56u.
l{$
til$
ti!filrlJFtfrffi lrll
i$
aii'il1
ffi;{
ffrltwrtta+{l
$i{ft
#
ffillllil
iii
f{''.t.
r$
lj,t'j1
i
I
It
il
ljl
i
I
9. ALC,ORITMI SA KOMPLEKSNIM KONSTANTAMA
r pnbvrnrvr"rrvuvr
U neklm oblaetlma nau6nih i tehnt6kih izradunavanja javljaju,ee kom-plekene veliEine I operacije sa ovakyim veliElnama. Kako ee aritmetiekeoperacije ea kompleksnlm velidinama svode ne aritmetidke operacije aa
realnim veliEinanta, pri demu se vodi ra6una o realnom i imaginarnomdelu kompleksne veliEine, to Be ovakve operacije mogu programiiati pomo-
6u naredbi u FORTRAN-jeziku koje operi5u sa realnim veli6inama. Medju-tim, kako jedna aritmetiEka operacija nad kompleksnim argumentima zah-
teva vedi broj aritmetiCkih operacija nad realaim velidinama, to je progra-miranje aritmetidkih operacija nad komplekenim veliEinama vrlo zaroetan
poeao. Tako, ako su z1 i z2 kompleksni brojevi
zr =a+biz2 =c+di
gde su a, b, c I d realne velidine, a i = 6l- tada je
zr+zz=(e+c)+(b+d)i21 - N2= (a - c)+(b - d) izr . zz = (ac-bd)+(ad+bc)i
(e.l)
(s.2)
Ztz2
ac+bd bc-ad+-ic2+d2 c2+d2
Kao 6to se vldi, aritmeti.dka operacija deljenja kompleksnih veliEinazahteva dve operaciJe stepenovanja, detiri oper&cije mnoZenja i detirl ope-
rac{e sablranja, odnosno oduzimanja realnih velidina. Da bi se izbeglo
lT8
programiranje aritmetlEHh opetrclra aad hompleksnlm vellItnama u FOR-
TRAN-jeziku, postoji mogudnost rada .s tomplekenim veUIinana bez raz-dvajanja realnog i funaglnarnog dela ovlh vellElna.
9, 1. Definicija komplekene konetante
J Kompleksna konstanta ee pi5e u obtiku
/ (a, u) (e. r. r)gde eu a i b meBovlte konstante u FoRTRAN-jeziku./Konatanta (9. 1. l)u matematldkoj notacljl predstav{a kompleksni broJ
I a+bl (e. r. 2)
Ako Je realnl lli tmaglnarni deo jednak nuli, I tada mora bltl naveden
u obllku (9. 1. 1).' Za regletrovanJe ko'nplekene konatante (9.1. f) o lr€tuo-r{l ralunara ge koriste dva reglstra;"/U jednom regl8tr:u ee nelezi realnldeo kompleksne konstEnte, e u drugom lmaginarnl deo. Oba dela ae regl-struju p obllku pokretnog zereze.
Prlmerl
a) Dozvofienl obllcl kompleksnih konstanti
(1.4, -3.2)(0.0,45. )
(0.0, 0.0)
(t2.38-2,5.4)
b) Nedozvoljenl obllcl komplekenlh konstantl
(A, B)
(A,4.0)
(r2.4E-3)
9. 2. Definiclja kompleksne Fromenljlve \
Iae komplgkene promenljlve defini3e Ee na latl naEln kao i ime real-
-ne promenljlve. Medjutlm, da bi ee imena ovih promenlJivih razlikovala,
1?9
imena komplekanth promenlJlvrh moraJu bld dekrarisana kao komplekenepromenllve. /Ova deklaraclJa mole bltl eksplicltna, pomodu oplsne narJd_be
/ coMpl.nx ueta (9. 2. l)68de
je
I COUpIOX - elulbena re6 kojom ee deklarigu lmena komplekenihpromenljivlh,
\ llata - spteak imena promenljivih, medju eobom razdvojenihzarezlraa, koJa se deklariEu kao komplekane promen_ljive.
Teho, optana naredba
coHPLEX XTYTNAPoNTA{ 1O I (s.2.2)dsklrlSe promenljtve X, y t NAPON kao kompleksne promenlji!.e I nlz A,Lro nlz ra l0 el.emenata, od kojlh je evaki kompleksni broj.
pored' eksplrcitne dekraracije (9. 2. l ) komprekenih promenrjrvih, mo-gu tc oyo proilenljive deklarisati lmpllcttno oplenom naredbom
IMPLICIT lista (e. 2. 3)gdc F
IMPLICIT - eluZbena reC, a
ll8ta - epieak elemenata, medju gobom razdsojenih zarezima.
Element ltete (9. 2.3) je oblika
vrsta (listel) (e.2.41gde Je
vrsta - sluZbena re6 COMpLEX, REAL, INTEGER ill LOGICAL,Ustar - epiaak velilcifi elova engleske azbuke, medju eobom razdvo_
Jena zarezima.
Impllcltnom deklrracijom (9. 2, S) deklarlEu se 6va lmena promen{i_rrlh koJa podfnJu Jednlm od navedenih elova izmeoJu zagrada u (9. 2.4), kaopromeulve odredJene vrate, a preBa tome koja erutrbena rer etojl nanestor€El vrste u (9.2.4).
Tako oplana oaredba
lnPtlc I T r0clcAt I lrslrcotptEX.l Tr RrZ I (9. 2.5)
180
ima eledede znalenje: promenljive Elja imena podinju slovima A i S, dekla-
riEu se kao logidke promenljive, a promenljive Cija imena podinju slovima
T, R ill Z, kao kompleksne promenljive.
Ako slova koja ee navode izmedju zagrada u (9.2.4) slede u azbud-
nom redu, tada ee moZe pisati samo pr-vo i zadnje slovo izmedju kojih se
etavlja povlaka (-). tako naredba
IHPLICI T COJ'IPLEXI tI-II,T I (9. 2.6)
deklariEe promenljive 6ija imena po6inju slovima D, E, F, G, H i T kao kom-
pleksne promenljive.
Opisne naredbe za deklarisanje vrste prornenljivih piSu se na podet-
ku programa pre svih drugih opisnih naredbi, odnosno pre prve izvrBne na-
redbe programa ako drugih opisnih naredbi nema, i to tako da se najpre na-
vodi eksplicitna, a zatim implicitna opisna naredba za deklarisanje vr6te
promenljivih.
Za svaku kompleksnu prornenljivu u memoriji radunara bi6e rezervi-sana dva registra, za reg"istrovanje realnog i imaginarnog dela promenljl-
ve, kao brojeva u pokretnom zarezu.
Opisnim naredbama (9.2. l) i (9.2.3) deklariSu se i imena funkcijskih
naredbi i potprograma, ako je rezultat ovih potprograma kompleksni broj.
9.3. Dodeljivanje vrednosti kompleksnim promenljivim r'
9.3. 1. Aritmetidka naredba /
Kompleksnoj promenljivoj moZe
tl6ke naredbe
a=9gde je
se dodeUti vrednost pomofu aritme-
(e.3. l)
- aritmetiEki izraz, a ,
- ime kompleksne promenljive.
y Arltmetl6kiizraz g moZe kao argumente imati celobrojne, realne ikompleksne konstante i promenljive, Rezultat aritmetldke operacije izme-
dju dva argumenta, od kojih'je bar jedan kompleksan, bl6e uvek komplek-
sna konstanta. Izradunata vrednost aritmetidkog izraze V. kao kompleksna
v
a
r81
konstanta, dodeljuje se komplekenoJ pr.omenljlvoj a na levoj strani znakajednakosti. Ako je vrednost arltmetiEko g lztaza ? realan broj, tada de bi-ti lormirana kompleksna konstanta, 6ijt ce rearan deo brtl vrednost arit-metiEkog tzteza. a imaglnarni deo 6e bitl nura. ovakva komplekena kons-tanta bi6e dodeljena promenljivoj a .
u arltmetiEkom izrazu r mogu se koristlti Ietiri erltmedEke opera-clje izmedju celobrojnrh, lsornrfu i konpleksnih konstantl i promenrjivih.
Moie ee korietiti i operacija stepenovanja, prr 6emu u sludaju da je.oanova komplekena velrEina, stepen mote bitt eoho celobrojna veu€ina.
9.3.2, Naredba ulaza y'
faaa a" L^-Fleksnoj promedjfvol t :ejF:1' __tedage u ulaznom etrogu pojav{uju dve porja koja eadrre dve realne. konstante. u,
Jto-*i"*"_"t Fgi-gaglaaren deo komplekgne promenljive./Ou. po{l ee opisulu pomo6u opl-
_"-1 ."..rl"Eo"tte t]ljtss.ttg({ iu E- gpit:--, 1/ TaEo, alo kompleksne promenljive X i y, i celobrojna promeljiva J
doUtil-iu brojne vrednosti ea ulaza, tada ee moZe pisati
&EADl5r lo9t XtYtJ-100 FORIAf l 2( FO.3rElA.5 ], I4t
U ovom slu6aju na JednoJ karttct Je opiaano 5 polja:
- prvo polje od 8 kolona, sa opleom Fg.3, eadrli realrri deo komplek_ene promenljive X,
- drugo polje od 12 kolona, sa opisom 812.5, eadrZi imaginarni deokomplekane promenJ.jlve. X,
- tre6e polje od 8 kolona, sa oplsom F9.3, sadrZi realni deo kom_plekene promenljive y,
- Eetvrto polje od 12 kolona, ea opieom Elz.S, sadri,i imaginarnideo komplekene promenljive y, i
- peto polje od 4 kolone, sa opisom 14, sadrti ceo broj koji se dode_ljuje promenljivoj J.
t62
b. 4. Izdavanje vrednortl lonptrtrotb promenljtvth
fZa lzdevanJe vrednoatl komplGt.rth promenUlvth vaZt ellGno kro I ze
q9l9 u_{e-
. tl lzlazne neredbe navodt tme komplekgne pron"dJly",lt_llrlfb49lS_qL.SoophuJu rc dva poUa koja radrZe r9afn9 broJevlr-prvo po[e rrdrll realnldeo, a drugo lmrginernl deo komplekrne promen{lve. Ove po{e ae opleuJu
opislma ze nelorrlte konltanto (F tlt E ople)./
Ui Talco ako ae leU izdati vrednoat komplekene promen$lve Z, mo?e ee
pieatl\, rRtTE{6.2obl z/-200 FORllaT ll I tEll.4t?xrF8.+l- . , ._ .- _.
_U orron rluGelu lzlezni ilor redrtl'-@ItaaopeCu),- g4jr-o4ll-€t!qb(tla, ra opleom E1!r4, -!9je9a-odnasqr i"jgtjgn-, lonplstrne prbmsnglve Z,i.!91$ra{!,rgtedJuAlgrtora, ra opleom 3X. t-.to{e ^d n rimbol.. .r oplsom F8.4, foJlg:l3ggllt !-:glf:4
deo komplokrne promenlJlve Z.
Prlmer
Progmm .e.tlvttl trko dr ta bror.vt ) Z | ! nrlazo na JednoJ kar-tlcl I dr ovskvih kutlcr motG bltl prolzvolJen broJ. Al3orltem za ovo lzra-dunrvrnJo prlkrzrn 1r ne rl.9.f.'t.
broj l.ra;lIj t\,riU*
r Y"
r83
uL-^z: x,z,L
taAz"x,z.Y,L
sl.9.4. I
Progrem na FORTRAN-Jeziku, eastavlJen po algoritrnu na e1. 9,4. l.tme rlededl tzgled:
COllPlEX ZrYHRITE(612001
200 FoRH^Tl | .r3Xrrxrrl0lr.zt t22\tryrrl6xr rLrl1r rlSXrtREALo lHAG.rrEXrtREALerrgXr.uIAc../l
400 READ(trt00rE)|Dr50O I Xr ZrL300 FoRHATI F5. L t f 6. 2tF).2r I Ll
G0 T0 llrZr3r4lrLYrXf Z
r0l HRlTEt6120U xrZrYrL201 F0RilATl I t 1l)t lrFEo2rFTr2rlXrl€l!r6rl{l
G0 T0 +00I Yrx.t.lt.2r-!r6l
00 ?0 +0t2 Yrl-;r12.gra.O,
G0 ?0 40tt l.Z.ZlX
80 t0 401'1 ftZl l0t0t-lo0l.Ic0 t0 aol
t00 sToPEI{D
184
Rezultati su StamPani u oblllil tabele
xLREAL. I t4AG"
25"2 36.78 -1"26Z.r 0.0 4.00
- l.O 2.2O -lo lO2.J 1.00 1.006'!, 2.00 3'001.5 s.oo -2.oo
REA L.
0" 5361 83E0.2loo00E0.420000E0.00. r32000E0.300000E
I I'iAG.
-0.367800E olo.+00000E ol
-0.9999968- 0lo.100000E 010.144000E 02o. r20000E 02
L
3523I4
5. Kompleksne velidine dvostruke tadnosti /
ve6 smo videli da se komPleksna velidina u radunaru prikazuje pomo-
6u dva realna broja, koja se registruju u obliku pokretnog zatez^' Prvi od
ovih broieva Predstavlia realni, a drugi imaginarni deo kompleksnog broja'
Kako se brojevi u pokretnom zairezrt mogu u radunaru registrovati i u obll-
kudvostruketabnoeti(g1avaS),toseikompleksnekonEtanteiprorhenljivemogu pojaviti u obliku dvostruke tadnosti'
. Kompleksna konstanta dvostruke tadnoeti pi6e se u obliku
(a, b)
o2c1OI
02ol
qde su a i b mesovite konstante dvostruke taEnosti u FORTRAI\hIgiEI'
--
-\---- '-;+;---
-tmets-mpfet"nu p.o-""liive deklariSe se pomo6u eksplicitne nared-
bezadeklarisanjevrstepromen1jivih.Medjutim,l@.'Iil""
=""d13ima oblikCOMPLnX * 16 listq--^--- (9. 5. 2)
sde broi 16 ukazuje da se 16 podregistara koristi za re-gistrovanje brojne.6-- -- -" -:-_+
vrednosti kompleks ne p"o-t"11iil__f tlo svakiie gistar sadr Zi 4 podre gis -
j.r"pl"k"i" nam:nl:ive avo:trute ta!n9 i*.":::O-narni deo kolnpt"t"togEfrllT"Eiil" uoditi da se dvostruka tadnost kom-
-r- ::-oil""tn p.o-"nijiut,te moZe deklarisati Pomo6u naredbe DOUBLE PRE-
CISION, jer se u listi ove naredbe mogu navesti satno imena realnih pro-
menljivih.
186
Tako ee ne moZe PisatiCOHPLEX A'BDoUBLE PRECISIOII Ar0
vedCOltPLEXtl6 Ar B
O zadavanju broja podregistara za registrovanie promenljivih, u opis-
nlm naredbams, bi6e redl u odeliku 10.1'
Kompleksnoj promenljivoj dvoetruke taEnosti moZe ae dodeliti vred-
nost pomo6u aritmetiEke naredbe
a =* (e,5. 2)
gde je a ime promenljive deklarisane kao komplekEna promenliiva dvostru-
ke tadnoeti. Aritmetidkl Lzrez ,lr moze lmati za argumente celobrojne kone-
tante I promen\jive, kao i realne i kompleksne konstante i promenljive obld-
ne ill dvoetruke ta6no8ti. Rezultat aritmetiEke operacue lzmedju dva argu-
menta, od kojih je bar jedan kompleksna veucina dvostruke tacnostl, b16e
uvek kompleksna konetanta dvostruke taEnosti. Izra6unata vrednost aritme-
tiEkog lzraza v, kao kompleksna konstanta dvostruke taEnoetl dodeljuje ee
promenljivoj a na levo j strani znaka je dnakosti u nare dbl (9 ' 5 ' 2 ) '
DodeljivanjevrednostlkomplekanojPromenljivojdvostruketaEnosti
sa ulaza, vrEl se na slidan naein kao i u sludaju komplekene promenljive
obldne taEnogti, eamo 6to ee u eludaju dvostruke tacnoeti za opis polja u u-
laznom Elogu koristi opls meEovltih konstanti dvoetruke tacnostl. I6to vazi
i u eluEaju lzdavanja vrednosti kompleksnih promenliivlh dvostruke taeno-
sti.
Primer ,L (
Prirrernakrajuodeljkag.4.reditisadvostrukomtaEno66u'Uovomslu6aju FORTRAN-program ima elededi izgled
COHPLEX+16 ZrYOOUELE PRECISION XHRI TE I 61 20O I
2OO FORHATI | .r3Xr rXrrlOXrtlt t22XttYrrl6IrrLr/rr r18X;.REAL. lllAGrrrSXr.REAL.'r9Irr.lHAG.r/,
t00 READI 5r300rENDr5O0l XrZrL300 FORITAT( F5.LtF6t2tF5.2r I I I
GO TO llr2r3r4lrLY.X+Z
186
401 l{RITE(612Oll IrliVrL201 FORIIATI I rrf5olrfOrZIFT.2rllt2€l5.6rt4l
G0 TO 400I Y.X*ZIl lr2D0r-fo6D0l
G0 T0 4012 Ytz_t*l2o0D0r4.oDol
GO T0 +013 Y.Z*ZIX
GO TO 4ol4 YtZl lOoODOr-1.000 lrI
GO TO 401500 sToP
END
Rezultati se dobtjaju u obliku tabele
xzREAL. IIIAG.
25.2 '6.?8
-1.262. I 0.0 +.00
-1"0 2.20 -4.102.0 1.00 r.006"0 2.OO 31001.5 8.00 -2.o0
REAL.
0.5351 83D0.21000000.420000D0.00.132000D 020.3000000 0l
I HAG.
-0.36?800D 0l I0.+000000 ol 5
-oc1000000 00 20.1000000 0l 3001{4000D 02 I0" 12000 D 02 (
o20r0l
Razllke u rezultatima, kada je prlmer re6avan 6a obidnom tadnoilu.(na kraju odeuka 9.4), t prlkazanlh rezultata u sludeju dvostruke talnoatl,potlEu iz slededih rezloge.
- vrednosti promenljivih x. 7 z, u sluEaju dvoetruke tadnosti, btde
prevedene aa vedom tadnoScu iz dekadnog brojnog slstema u binarno kodl-ranl heksadekadnl brojnl sistem u pokretnom zar.ezrr,
- vrednosti konetanti koje se javljaju u prog"amu takodje 6u sa ve6-om tadnoS6u registrovane u memoriji,
- izradunavanje po navedenim formulama izvrBava se ea ve6im bro-jem vaZe6ih clfara argumenata, i medjurezultati pojedinih aritmetidkih o-peracija, ako je jedan argument - .lh operacija dvostruke tadnosti, bide ta-kodje dvostruke tadnosti.
Sve ovo 6ini tadnijim proradun izveden sa dvostrukom taEno56u od
onog sa obidnom taEnoE6u.
9. 6. IzraEunavanje komplekenih elementarnih funkcija
Izralunavanje elementarnlh funkciJa za kompleksne vrednosti argu-menata daje kompleksnl broj, kojl Je lste vrste kao i argument elementar-
18?
ne funkclje. Tako, ako Je argumcnt loodrlA blt 6$oc tednoett, bl6e
I vrednost funkctje komplekenl broJ obllar trb.d, odlo.no eko Je argu-
ment kompleksnl broJ dvostnrte trcm.tl bl6c t vrcdno.t t\lDIcuG komplek-
snl broj dvoetruke ta6nostl. Ime komplekanlh elementsmlh funkc{a oblEne
tadnosti poElnJe slovom C, a ime komplekenih funkcija dvoetruke ta6noatl
podlnje slovlma CD.
U tabell 9.6. 1. dat je spieak funkcijekih Potprograma sa propisanim
imenima, koji se Eogu koristitt u FORTRAN-jeziku za izradunavanje kom-
plekenih elementarnlh funkcija.
Pored funkcijsHh potprograma navedenih u tabeli 9.6. 1., u FORT-
RAN-jeziku poetoji I lzveetan broj frurkcija koje se pidu na isti nadln kao i
funkctJakl potprogreml, aU ee ne javljaju jedanput u Pr<tglatlu na ma6ln-
Ekom jezlku, ve6 onoUko puta kollko puta au zepleane u prograntu. Spieak
ovlh funkctja ea propleanim lmenima dat je u tabell 9.6.2.
. U tabelama 9.6,1 I 9.6.2 kori66ene 8u slede6e oznake:
K - kompleksna veUdina obiIne tadnoetl,
KK - kompleksna ve1i6lna dvoetruke tadnoeti,
R - realna vell6ina obidne tadnosti,
RR - realna veUdlna dvostruke tadnosti,
z - kompleksna veUdine, z=a+bi,
P - makeimalna vrednost konstante u Pokretnom zatezu obilne ta6-
nosti (P e 7,2. fi15 L
DP - maksimalna vrednost konotante u pokretnom zarezu dvostuke
, ta6nosti (DP E 7,2'Io75 )
188
Tabela 9.6.1&!t! Dlr.nlr
Opl lU toftranr Ytau ogrelaanr. krbCrylr) I rl < I?a,57f, ,u< a rir<-rac I t,ta.to-5OEP (.1 n rl<l?{.5t3 --
u < o.3i!?.loro n t,5f,' to-rt :lJ.
CE{t) h(:l I .t&01 t z,oo.ro-5 ,rlrodhl 1o9!rttuCoG(z) u / 0+01 n s.7!. to- "CSF(rl vt n -tbt <9 x
Kvrdratnl lorcn@80nf, (!) I rt,lbl(P g 9,8c. lo-'"CSrr lr)
ta(t)I rt <0.82t5-loo T l,17. to-'
tlgotr*t!ljtt.l[rlc I t.-'DSIX (r, ( rl < 0,351t.1O"
rl < lta,5tlI t, ?t. to-r'
CG(ttco. (r l
x rl < 0,8239.106)l <l?4.5t!
I l,ur-to-6
CDCga ( t ! u il <0,35!t-1016bt d lTa,atr
g s, te. ro-t5
qS(r)I rl - lr+btl
I (.2rr2tt/2 <p t 1.8?.to-6CNs (r) u (.'+b't'lr < D? E t,32. to-l:
Tabela 9.6.2Nlaln plenrr ruhkclrr
Qir*"-l .'n..nrr."r. RGI.grcl. tGEnJ. od
&ar (r '
R. (r) x lul,lbl<P balnl de k6plct.nd,
rrDG(r) I!{ tl ( tal.tbr<P i n91n.rn1 deo t6pl.t
]OU (.. b I R rar , rbr < P
X(mu(a,b tt lat,tbt<oP sroir od dvd rcaln!
;oNG (a)con) I
l.r,tbr<rEoNC (r, f,x i,5r<oP ,lck.nog broj!
Primer
Zz zadatr vrednost kompleksnog broja z izradunati funkcije
y, = ["", +Ln(3,6+4, Zi)] ]. lcosz I sinzz
Jz =[Re(y,1+I-(y,)] * [n"1y, )-I-(rr)] i
yr = conj(y2)+3,8-4i
u obidnoj tadnosti.
Za izra6unavanje u obidnoj tadnoeti FORTRAN-program ima slededi
lzgled
colrPLex Yl3lrzltRlTE(6r51
5 F0Rl'lAT(r'r6Xr'ReALNI DFO II'IAGINARNI'r*. DEor/ I
READI 5r l0 I Zl0 FoRr'rAT( 2F8"41
Y( I l*CSQRT(CEXP ( Z+1. I {CLOG( ( 3.6r4.21 I I r*ca8sl c c0s(z tFcsINlz.rLlyl 2 l=CilpLx( REAL(y{ I I l+AIt{AGl yt I I I r
rREAL I Y( I t l-AIr'lAGl Y( I I I Iyl 3 l=CON.rGt y( 2 t l+( 3. 8r-4.O1URITE{6'201 Zr (Y(l I'l=l'31
20 FOR||ATl t trtZ ='t2El5.7It ItrYl=trZtL5.Il*, .r.yZ.r t2El5.7lr I, rY3=r rZeL5.7l
STOPENO
Rezultati se dobijaju u obliku tabele
R,EALNI D€O IHAGTI,IARNI OEO
Z - -O.{16000OE Ol 0.2t'120(r0E C2Ylr -0.!258756t l9 -O.27857788 l9Y2' -0.6044533E 19 -o.4729?80F l8Y3. -C.6044533E 19 O.rr72978OE l8
j{]J.i{
I o. RActoNALNo KoRTSC ENJE uNUTRASt.re MpuonI.lrneCuuene
U unutra6njoj ili operativnqj memoriji radunara nalaze se naredbe i
podacl u kdernom kodu radunara. Automatska obrada podataka odvija se po
odredjenom programu. Za ovu obradu neophodna je komunikacija izmedju
memorije i komandnog organa u cilju izvrsavanja pojedinih naredbi prog-
rama, kao i izmedju memorije i aritmetidkog organa u cilju obrade podata-
ka. Preme tome, od unutra5nje memorije se zahteva ve.lika brzina upisa i
izdavanja informacija. Medjutim, ovakve brze memorije preostavljaju sku-
pe tehnldke uredjaje, pa je unutraSnja memorija po pravilu vrlo ogranieenog
kapaciteta. Zato je prohlem racionalnog koris6enja unutraSnje memorije
radunara vrlo vaZan u programi.ranju. ovaj problem se resava na dva nadi-
aa.
- izborom optimalne duzine podataka, i- vitestnrkim koriscenjem memorijskog prostora,
10. l. Promenliiva duZina Dodataka
Najmanja adresiva jedinica memorije je podregistar, u kojem se mo-
Ze regietrovati jedan karaKer. Kod memorija koje su organizovane po re-
gistrima, ovi se sastoje od odred;enog broja podregistara, Tako registar
memorije koC radunara lF.M-360144 sastoji se od 4 podregistara, a podre-
gistar od 8 delija. Za racionalno koriSdenje unutrasnje memorije potrebno
je obezbediti optimalan broj podregistara za pojedine informaciie u raduna-
ru. Broj podregistara koji se koristi za registrovanje podatka u memoriji
tyz
zove se duZina podatka. U programima koje 6mo do sada pisali nije poseb_no ul<azivano na duZinu podataka. Za sve podatke koji su kori5deni u prog_ramu, pretpostavljana je tzv. standardna dul,ina podataka. standardna du_Zina podataka u FORTRAN-jeziku bide primenjena za sve one podatke zakoje nije zahtevana drugadija duZina. pored standardne duZine postoji mi._nimalna i maksimalna duZina podataka, Minimalna duZina predstavlja najmanji broj podregistara, a maksimalna najvedi broj podregistara koji 6e morekoristiti za odredjenu informaciju u FORTRAN_jeziku. Standardna, mini_malna i maksimalna duZina podataka u FORTRAN_jeziku prikazana je u ta_beli 10. 1. 1..
Tabela 10. l. I
Vrsta podatka DuZina podatka
Standardna Minimalna MaksimalnaCelobrojna promenlji
vb 4 2 4
Realna konstartd ilirealna promenljiva 4 4 6
Kompleksna konstanta. ili kompleksna pro-
menljiva I o r6Logidka konstanta ili
logitka promenljiva 4 I 4
Celobrojna konstanta u programu uvek se registruje u jednom memo_rijskom registnr, tj. ima duZinu 4. Za promenljive u programu 6ija je vr_sta definisana unutrasnjom konvencijom FoRTRAN-je zika vazi standardnaduZina podataka.
Za promenljive u programu dija je vrsta definisana opisnom ,aredlbom za implicitnu deklaraciju vrste duZina podataka moze biti razlidita iukazuje se u naredbi
IMpLICIT iista
gde je element iiste u obliku
(10.1.1)
(10. 1.2)vrsta* s (listar)(10. l. 6)
1git
gde je s dulina podatka koja se odnosi na odgovarajudu vr6tu promenljivih,dija imena poEinju slovima navedenim u lietir.
Ako promenljive koje se implicitno deklariEu imaju standardnu duZi_nu onda se element liste pi6e u obliku
vrsta (listar) (10. r.3)
tj. oblik bez navodjenja dutrine promenljivih.Tako se moZe pisati
I r.tPtIcl T INT€6ERr2l A, 6rCl rREAL*8tRr 5rTlEto zna6i da ce promenljive dija irnena po6inju .lovima A, B i c biti celo-.brojne i svaka od njih registrovana u dva podregistre memorije, tj. u Jeq-nom memorij.kom regi'tru mogu ae registrovati brojne vrednosti za dveovakve promenljive, a promenljive R, S i T bi6e realne promenljive dvoe_truke tacnostl 1 svaka od njih bice registrovana u g podregi.tara, tj. u dvamemorijska registra.
Ako je celobrojna promenljiva duZine dva podregietra, tada njenabrojna vrednost x mora biti u ir$ervalu
-2ri (x .zL'-l=s2787 (r0. r.4)
u naredbi za ekspricitnu dekraraciju vrate promenljivih moze biti u-kazana duZina promenfjivih. To moZe biti uCinjeno na vi5e nadina:
a) Definieanje duzine prornenrjivih za sve promenlJive koje se navodeu listi ove naredbe. U ovom sluEaju naredba ima oblik
vrstaj! a lista (10. r.5)
gde je
vrata - sluZbena re6 INTEGER, REAL, COMPLEX ifi LOGICAL,a - c€o neoznaEen broj koji ukazuje na duZinu promenljivih i e_
lemenata nizova u listi,llsta - spisak imena promenljivih i nizova medju sobom razdvojenih
' zarezima.
Tako se moZe pisati
LOGICAL*T A,OELTA,ALFAI I,O I
194
5to deklariEe promenljive A, DELTA i r0 elemenata niza ALFA kao logid-ke promenljive duzine l, tj. vrednosti ovih promenljivih bice registrovanegvaka u po jednom podregistru.
b) Definisanje duZina promenljivih za evaku promenljivu ponaosob. uovom sluEaju naredba ima oblik
vrsta lista (10. l. ?)
gde je
vrsta - sluZbena red INTEGER, REAL, COMPLEX ili LOGICAL,lista - spisak elemeneta medju sobom razdvojenih zarezima.Elemenat ltste, u (10. 1. ?) lma oblik:
ime*s
ako ee odnosl na promenljlvu, odnosno
(10. r.8)
imet s (ltsta, ) (r0. r.9)
ako se odnosi na niz, gde je
ime - naziv promenljive ili niza,s - duZina promenljive, odnosno elementa niza,
ll8tat - spisak, od najvise ?, celih neoznaCenih brojeva, medju so-bom razdvojenih zarezima, koji defini5u maksimalne vred_nosti pojadinih indeksa niza.
Tako se moZe pisati
collPLEx 8ETA, RaD*1r{ GRAD* 16( lo, l5 | (r0. l. l0)
6to znadi da je promenljiva BETA kompleksna promenljiva obidne tadnostia RAD i<ompleksna promenljiva dvostruke taenosti, kao i svih rb0 eleme-nata dvodimenzionalnog niza GRAD.
c) Definisanje dulina promenljivih moZe biti udinjeno i konrbinovanjemzajedniEke duZine(a) i pojedinadnih duZina (b). u ovom sludaju naredba imaoblik
vrsta*s Usta (10.1. il)
195
gde su elementi liste imena promerrljivih i nizova, pri demu je njihova du-zina definisana sa brojem s u (10. 1. 1l), ili su elementi liste oblika (10. 1.
9), pri demu je njihova duZina posebno definisana.
Tako se moZe pisati
INTEGER*2 LI ST,MASA (
'O ' , GA}IA*4 (i0. 1.12)
6to znadi da su promenljiva LIST i b0 eiem6nata niza MASA deklarisani kao
celobrojne promenljive duZine 2 podregistra, a promenljiva GAMA kao 9e_lobrojna promenljiva duZine 4 podregistra.
U odeljku 8.2 uvedena je opisna naredba DOUBLE pRECISION za de_
klarisanje realnih promenljivih dvostruke tadnosti. Medjutim, eksplicitnadeklaracija pomodu naredbe
REAIr*8 lista
bna potpuno isti efekat kao naredba
(10.1.13)
DOUBLE pRECISION tista
gde ee podrazumeva da su liste u naredbi (10. 1.13)
(10.1.14)
i (10.1.14) jednake.
10. 2. ViSestruko kori56e tora u okviruProgr
Svakom imenu promenljive ili elementa niza dodeljuje se u memorijiraEunara fizicko meato u kojem se 6uva vrednost ove promenljive. Kao Stoemo videli, ovo fizieko mesto moze bi.ti najmnnje jedan podregistar, a naj_vi6e 16 r.jih u memoriji radunara. prostor u memoriji potreban za regis-trovanje jedne konstante zvademo polje, ViSe polja dine zonu u mem()rijiraEunara. Prema onome gto smo do sada videli svako polje u memoriji re-giBtruje vrednost jedne promenljive ili jednog elementa niza. U toku izvr_Savanja programa iz polja se izdaje registrovana konstanta ili se upisuje, a
u zavisnosti od mesta odgovarajuce promenljive u naredbi koja se izvriava.
mem
196
Tako, ako se ime promenljive nalazi na deenoj stranl znaka jednako_sti, u aritmetidkoS naredbi, tada ee vr6i izdavanje vrednosti odgovaraju.epromenljive iz memorije, a ako ae ime promenljive nalazi na revoj stranijednakoeti vrgi ae upis nove vrednosti u odgovarajude memorijsko polje.
Kako FORTRAN-jezik dozvoljava veliki izbor u imenovanju promen_ljivih, to se u toku izrade programa uvode imena promenljivih prema nji_hovom znadenju u problemu koji se re6ava, kao i prema mnemotehnidkimolakdicame u pilanju programa. Medjutim, vrlo 6esto ovakvo imenovanjepromenljivih dovodi do neracionalnog koribdenja memorijskog prostora.Zato u FORTRAN-jeziku poetoji opisna naredba kojom se moZe zahtevatida'viEe promenrjivih ili nizova imaju zaJedniEku zonu u memoriji. u nared-nom izlaganju upoznaCemo se Ba definisanjem zajedniEke zone u memoriJlu okvlru jedne programske jedinice,
lO.2.L. Zajedni6ka polja za promenljive jednakih duZina
Opisna naredba za definieanje zajednidkih polja ima oblik
EQUryALENCE lista (10.2. l)
gde je
EQUMLENCE - sluZbena red,
lista - spisak elemenata medju sobom razdvojenih zarezima.
Element liste u (10.2. l) je oblika
(listaj
gde je Listat spisak imena promenljivih iste duZine mediunih zarezima.
Tako se moZe pieatiR€ALT8'{A5A, DUZI I{A, JOTr4IilfEGER12 ATBE14TC rGr4EQUI vaL eNC E I A r BE fA r C I r ( JOT r G t r I ilASA r OUZ t NA I
(10.2.21
sobom ratdvoje-
197
To znaEi da 6e celobrojnim promenljivtm A,BETA i C biti dodeljenoiato polje u memorijl radunare duZlne 2 podregistra, a promenljivim JOTi G pofje dullne 4 podregistare (l memorijeH regietar), i na kraju promen_ljivim MASA i DUZINA bi6e dode{eno polje durine dva memorijska registra,poilto eu to realne promenljive dvostruke tacnoati. prema tome, ako se nebi koristila opiena naredba EQUMLENCE za registfovanje promenljivihA,BETA C, JOT, c, MASA i DUZINA bilo bi angazovano gx2+2x4+2x8 = B0podregietara' Medjutim, upotrebom naredbe EQ'IVALENCE koristi se i+4++8=14 podregistara memorije.
Opisna naredbe EQUMLENCE pi6e se.pre prve izvrlne naredbe pro-grama lli potprograma, U odnosu na ostale opiene naredbe ove naredba senavodl poele naredbe za deklarisanjevr6te i dimenzije nizova.
1o.2.2.
Ako su promenljive razliEitih duZina, tada je polje odredjeno promen-ljivom naJvede duZine. Sve promenlJive navode se u listi u (10.2.2). Kao3to Je poznato, kompleksna promenljiva dvostruke tadnogti predstavlja pro_menljivu najvece duzine (16 podregietara), a logi.ka promenljiva predstav-lja promenljivu najmanje dutine (1 podregistar). Ako ee u zajedniEkom po_lju nalazi po Jedaa promenljiva razlldite duZine, tada svaka od njih po.injeda se regiatruje od prvog levog podregistra polja, Ciju 6emo adreau ozna-6iti ea 1, prema podregistrima veCe relativne adrese (2,g,. -.). Na sl. lO.2.1 prikazano je polje od 16 podreglatara i oznaden raspored registrovanjapromenljivih razllEite duZine.
Na.sl. 10.2.1 uvedene su sledede oznake;Cl6 - komplekena konstanta dvostruke tacnosti (duZine 16),CE - kompleksna konsterta obidne taInosti (duZine g),R8 - realna konateda dvostruke tadnosti (duZine g),i{ - realna konstarda.obi€ne tadnosti (dutrine 4),14 - celobroJna konetanta (duline 4),Il - logiEka konstanta (du'ine 4),12 - celobro:tn&konstanta (duline 2),Ll - logtdka konsterta (duZine l).
198
ZAf POLJA
c16
c8RA
R4
T4
L4
l2L1
sl. 10.2. I
Premtr tome, ako se ZeIe registrovati u polju kompleksne promenlji-
ve dvostruke tadnosti KOM2, realna promenljiva dvostruke tadnosti RP2,
kompleksna promenljiva obidne ta6nosti KOM1, realna prpmenljiva obidne
ta6nosti RPl, celobrojne promt:nljive 14 i 12 duZine 4, odnosno 2, i logilke
promenljive L4 i Ll duZine 4, odnosno l, tada Ce opisne naredbe imati sle-
de6i izgledcor,tPl Ex Kor.tl, xo]t2*!6REAL RP2*8TNTEGER I2I2LOGTCAL L4rL l*lEoUIVALENCF I KOHzr KollLr RP2r RPI r | 4, | 2 tL4 tL||
Promenljive RPI i 14 nisu deklarisane po vrsti i duZini, jer za njih vai,i u-
nutragnja konvencija F.ORIRAN-jezika. U ovom sludaju polje sa raspore-
dom promenljivih prikazano je na sl. 10.2.2.
Medjutim, u jednom polju vede duZine moZe se registrovati vedi broj
promenljivih manje duZine. Na 3I. 10.2.3 prikazano je polje od 16 podregis-
tara sa mrrgudim registrovanjem promenljivih manje duZine. O:nake na sl.
I O. 2. 3 iste su kao ve6 koriSdene oznake na sl. I 0. 2. l.Opisne naredbe koje deklariSu kori5denje polja od 16 podregistara rt;t
!IIr
Kon2KOMl
R.P 2
RP1
T4L4
T2
L1
10.2.2
POL]E
1 2 3 4 516l7l8 ? l10l11 112113 14 1s116
+SADRZAT PoLfA -=
sl. 10. 2.3
nadin prikazan na sl.10.2.3. imaju sledeCi izgled:
cor.rPLEx KoH2*l6r Konl ( 2)REAL RP2*8(2IIRPI(4IINTEGER I4(4lrl1*2(81L0GICAL L4(41'L,rll 16,EQUMLENCElKOH2rKolll( I !' RP2( I I rRPII I I r
*I{( I }r Il (1. lrL4( I IrL( ll )
c16
cE coRg RA
R4 R4 e,4 R4
t4 L4 I4 T4
L4 L4 L4 L4
l2 t2 l2 L2 l2 t2 l2 I2L1Ll LIL1 L1L1 L1L1 Lt lLl lLr lL1 LI L1LI LI
200
Na sl. 10. 2.4 prlkazan je
polja od 16 podregistara
raspored promenljivih unutar memorijskog
POLJE1lz 3 4 5 617 a 9 110 11 12 .13 114 15 16
SADRZAJ eolr-Koy|2
KOM1(1) KOM'r(2)
R P2(1) e.P2(2)
Rp1(1) Rp1(2) RP1(5) RP1(4)r4(1) 14(2) r46) 14@)L4(1) L4(2) L4G) L4(4)
r1(1) I r.t(z) r1(3) I r1(4) I1(s) | I1(6) r1(7) I r1(8)-(r )lL(z) L(s (4 (5)l L(6)lL (7)lL(8 -(9)lL(ro)L(11 /raVt ar aLlt hillLh4
st. 10.2.4
Kao 5to se vidi, u naredbi EQUIVALEI\C_8, u ovom sluCa;u, trebahavesti prve elemente nizova. Detaljnije o zajednidkim zoirama nizova bi-6e redi u slede6em odeljku.
LO.2.3, Zajednidka zona za nizove
Elementi dva niza ili vi5e nizova mogu imati zajednidku zonu u me_rdoriji. U ovom sludaju element liste u (10.2.2) jeste obtika
im e( I ist ar) (10.2.3)
gde je
ime - naziv niza,
lista2 - spisak, od najvi5e ?, neoznadenih celih brojeva, medjusobom razdvojenih zarezima. O;ri brojevi definisu konkre_tan elemenat niza-
20t
Pored oblika (l0. z. B) na konkretan element niza mote se ukazati ipreko odgovarajuceg elemerda Jednodimenzlonelnog niza (vidi odeljak b. s,relac{a 5. 5.6), tj.
ime(J) (10.2.4)
gde te J ceo neozneCen broj odfedten relacljom (5.5.0).Kao 6to Je poznato, nizovl se fegistruJu ri rsgldrima memorlje ClJe
adrese blede Jedna za drugom. u EQUIVALENCE-nerecrbi navode 6e kon-kretni elementl nizova koji ce trrratl zajedniEko po{e, a a obzirom na toda se ostali erementr niza regletruJrr u eueedriim regiatrrna, to 6e i drugielementl nizova imati zaJedniCka polja.
Tpko opiene naredbe
DI|IENSl0N At5t? I trll'lEQUI vALEt{CE ( Al I,1,,, Bl l, t
deflnigu dvodimenzioni niz A l Jednodimenzionahi niz B od po gb €leheneta,kao nizove kojt se registruJu u zajednlckoj zoiri od 3b regietara memoriJe.Isti efekat 6e imati i zapis
DI,IENSION Al 5r?l r Bl 351eQUIvArEI{CE tAt I tr8(l t I
gde Je u prvom sludaju, u naredbi EQUIVALENCE konkretan erement nlzaA ukezan oblikom (10.2.9), a u drugon sludaju obDkom (tO.Z.4r.
Medjutim, ako nizovi ne eadrze rstt broj eremenata tada ce biti defi-nisana zajedniEka zona u kojoj ce raepored nizova zavisiti od navedenih kon-kretnih elemenata u naredbi EQUMLENCE. Tako 6e naredbama
OtxENSION Al lOl rB(5 I tCl2t 2lEQUIVALENCE (Al5rrBl I lrC( lr I I I
bitl definigana zajedniEka zona od l0 registara u kojoj 6e nlzovi biti respo-redjenl na nadin prikazan na sl. 10.2. S,
Isti raspored nizova proizvodi i zapie
DI'{ENSION Al l0 I r8( 5t rcl 2r 2lEQUIvAtENCE lAl5l rB(2lrCl e, I t I
kao i drugi zapiei prema el. 10.2.5, koji definiiu odgovarajuCe elementenlzova A, B i C u ietom polju memoriJake zone.
Ako eu nizovi ea erementima razliditih durina, tada se elementi nizo-va reglatruju u zonr od navedenog poc€tka eleva na deeno, prema odgovara.-ju60j dultnl ele.enata. pri ovome !e u Jsdnora memorrjskom regi.tru mo!
202
l- zoNA oDro REorsr^RA
saocZa: zoxe
A(1) A(2) A(3) a(a) A(s) A(6) A(z) .A(6)^(e)
A(1o)
B(1) B(2) B(5) B(4) B(s)
c(!,1) z(z,t) 4t.z) *4sl. 10.2. 5
ra nalaziti podatak registrovan prema propisanom nadinu registrovanje od-govarajuceg podatka.
Tako se moZe pisaticoHPLEX Ct 4tINTEGER J*2( I2 IDIilENSION A{ IO IEQUIVALENCE(A'3', CI I IrJ( I I IRaspored elemenata nizova prikazan je na sl. 10.2.6. Elemernat C( l)
niza C zauzima dva registra u memoriji, kao kompleksna prgmenljiva obid-ne taEnosti. U istom polju registrovani su elementi A(3) i A(4) niza A, odrnosnoelementiJ(l), J(2), J(g), J(4) nizaJ.
ZONAOD 10 REGISTARA
1 2 5 4 5 6 7 a 7 lo
SADRZAI ..+A(1)
^(z)A(5)
^(4)A(s) A(6) A(7) A (o) A(?) A(10)
c(l) c(2) c(5) c(4)
sr.10.2.6
Isti nizovi mogu se registrovati i od podetka zajednidke zonc; tada
opisne naredbe imale slededi izgled:
1 2 5 4 5 6 7 o 9 10
bi
j
$
203
COI'1PLEx C(41INTEGER J*2II2IOITTENSION A(IOIEQUIVALENCETA( l t rc( I lrJ I I ) l
U ovom sludaju raspored elemenata nizova prikazan je na s1. 10.2. ?
ZONAOD IO REOIS'IARA
1 2 5 4 5 6 7 a 9 ro
sADRiAr zoNE--*-.|
A(1) A(2) A(s) A(4) A(s) A (6) A(7) A(8) A(?) A.(1o)
c(1) C(L) c(3) c(4)
(1 h ,F)fJ16. (z)FG r(7F(rc (",
s1. 10.2.7
10.3. Vi5estruko kori56enje memorijskog prostora od strane
@
Naredba EQUMLENCE omogu6uje viSestruko kori56enje memorij-
skog prostcra u okviru jednog programa ili potprograma. Medjutim, pot-
programi se vrlo desto koriste lt programiranju, i nije teSko pretpostaviti
da se izvestan broj podataka koristi u programu kao i u jednom potprogra-
mu ili u vise potprograma, ili pak da se isti memorijski prostor koristi u -
vise programskih jedinica. u ovom sludaju treba omoguditi da polje ili zona
u memoriji bude zajednidka za vi5e programskih jedinica' Orakve zone u
memoriji mogu se definisati na dva nadina, kao
- neimenovane zajednidke zone u memoriji, i kao
- imenovane zajednidke zone u memoriji.
10.2. 1. Neimenovana zajedni6ka zona u memoriji
Opisna naredba za definisanje neimenovane zajednidke zone u memo-
riji, pi5e se u obliku
2U
COMMON lista (10.3. l)
gde je
COMMON - sluZbena r€C,
lista - spisak elementa medju sobom razdvojenih zarezima.
Elemenat liste moZe biti ime promenljive ili niza. Ako je elemenatliste ime niza, onda se iza imena izmedju zagrada m.gu navesti maksimal-ne vrednoEti indeksa niza, tj,
ime(listal) (r0.3.2)
gde je
ime - naziv niza,
listar - spisak, od najvise ?, neoznadenih cetih brojeva, koji de-fini5u maksimalne vrednosti pojedinih indeksa.
Ako se jedna naredba (10.3. 1) nalazi u programu, a druga ovakvanaredba u potprogramu, sa ekvivalentnim iistama, tada de odgovarajudepromenljive iz jedne i druge liste imati zajedni[ka polja u memoriji. pod
ekvivalentnim listama podrazumevaju se liste sa istim redosledom promen-Ijivih po vrsti i duZini.
Tako, ako se u programr.r nalazi naredba
COMMON AI, A2, A3, J7, J2
a u potprogramu naredba
coMMoN xL, x2, x3, Kl, K2
tada Ce promenljive Al i Xl imati zajednidki registar u memoriji, kao iproruenljive AZ i)I.2, Ag i X3, Jf i Ki, kao i J2 i KZ.
Odmah treba uoditi da ovakva zajedniEka zona izmedju programa ipotprograma predstavlja jedan nadin za ulaz podataka u potprogram, bez
njihovog navodjenja kao argumenata potprograma, kao i za izraz rezunatapotprograma.
Ako se COMMON-naredbom ZeIi dobiti zona za zajednidkim podaci_ma zs viEe prograrnsldh jedinica, tada sve coMMoN-naredbe moraju ima-
205
ti ekvivalertne llste u celini ili jednim njihovim delom sleva nadesno.
Tako, ako se naredbe
INIEGERT2 Jrt(LOGICALT! LlrL2COl.ll{ON Al 30 I r JrKrLl rL2
nalaze u programu, a naredbeINTEGERT2 CrOLOGICAL*I FIrF2COltl{ON Bl30 I rCrDr FlrF2
u potprogramu, liste COMMON-naredbi su ekvivalentne i u ovakvoj zajed-
nidkoj zoni mogu se prenositi i vrednosti iz programa u potprogram, i o-bratno po6to se li6te 6laZu po redu, vrsti i duZini promenljivih i nizova.
Ako se zajedniCkom zonom ne prenoae vrednosti promenljivih, ved
se aemo racionalno koristi memorljski prostor, tada redosled promenlji-vih u listl moZe biti proizvoljan. Medjutim, ovaj redosled mora biti usa-glegen u.programu i potprogramu. Ova eaglasnost Eroze se posticl na dva
naEins
- navdjenjem promenljivih u redosledu po njihovoj opadajucoj du-
Zini, ili- navodjenjem promenljivih u proizvoljnom redosledu sa uvodjenjem
filrtivnih promenlivih da bi se usaglaeile duZine promenljivih u listama
COMMON-naredbi.
10.3.2. Imenovana zajednidka zona u memoriji
Zajednicka zona u memoriji kao i pojedini njeni delovi mogu dobitiime. U ovom BluEaju element liste u (10.3. 1) ima oblik
/ime/ tista, (10.3.3)
gde je
ime - nazlv zone koJu 6lne promenljive koje slede u listi2,liata2 - gradl se na istl nacin kao i lista u (10.3. 1).
Nazlv zone defiriile 8e na isti na6in kao i ime promenljive i uvekse pi6e izmedJu kosih crte.
Tako re moZe pisati
t08
co'|NoN I zoNAtI Al 5 I t8 I lO'/zoNA2/KSI I 5I, JOT
gde elementi nizova A i B 6ine_deo zone u memoriji, koja noer ime zoNAl,a elementi niza KsI I promenljiva Jor cine deo zone u memoriji 6a imenorn7,oNA2.
u istol coMMON-naredbi mogu se nalaziti imenovani i neimenovanidelovi zone u memoriji. Ako se iza imenovanog dela, Zeli navesti neimeno-rran deo zone, tada se oni razdvajaju sa dve kose crte.
Tako se moZe pisati' collHoN AtBErAlstr92tB?ltCtD,EtLOl
ovakva zajednicka zona sadrZi neimenovani deo, koji 6ine promenljive A.C, D i niz t(10), i imenovani deo, koji line promenljive E}1, 82 i 83 ealmenom- BETA.
Ako ee nadJe vi6e COMMON-naredbi u jednoj programskoj jediniciea n razllEitih lista, tj.
COMMON lista,COMMON llsta, (10.3.4)
I
I
COMMON listao
onda je njihov efekat isti kao da je jedna naredba oblika
COMMON listar, listar, . . ., lista" (10.3. s)
Naredba COMMON, kao opisna naredba, navodi se pre prve izvrSne.nare'dbe programa. Ako postoje i druge opisne naredbe u programu, tadaje njihov redosled slede6i:
l. Opisne naredbe za eksplicitnu deklaraciju vrste (REAL, INTECUR,COMPLEX, LOCICAL, DOUBLE PNECISIO}9,
2. O2isna naredba za implicitnu deklaraciju vrste (IMpLICIT) ,
3. Opisna naredba za navodjenje imena potprogramt, koji se javlja-ju kao argumenti drugih potprograma (EX,[ERNAL),
4. Opiena naredba za dimenzionisanje niTova (DIMITNSION),
5, Os:isna naredba za definisanje zajednidke zone u raznim progranl
"- kim jedinic ama (COMMON),
2VI
6. Olrisna naredba za definisanje zajednidke zone u jednoj programr
skoj jedinici (EQUMLENCE),
?. Funkcijske naredbe, i
8. Izvr5ne naredbe programir.
il
lfi
1 1. DODEIJIVANJE POEETNIH VREDNOSTIPROMENIJTVIM
/
U mnogim problemima, pored ulaznih podataka, javlja se i izvestan
broj konstantl, koje ulaze u prora6un sa nepromenjenim vrednostima Pri
svakom izvodjenju proraduna. Ovakve konstante dodeliuiu se promenljtvlm
jedanput na PoEetku Prora6una.
Takvo dodeljivanje podetnih vrednosti promentjivim, odigledno' moZe
se izvrSiti pomodu aritmetidkih naredbi, kod kojih 6e se na desnoj strani
rnaka jednakosti nalaziti konstarta, a na levoi ime promenljive kojoj 6e o-
va konstanta dodeljuje' Medjutim, aritmeti6ke naredbe predstavljaju izvr5ne
naredbe programa i posle prevodjenja programa sa FORTRAN-jezika na ma-
Sinski jezik, ove naredbe ostaju u programu na ma6inskom jeziku' 6ime zau-
zimaju prostor u memoriji i pored toga Sto 6e se izvrliti samo jedanput na
podetku programa. Prema tome, ovako dodeljivanje podetnih vrednosti Pred-
stavlja neekonomidno kori5denje memorijskog Prostora'
Uovojglavibi6eobjaEnjenerraredbekojeomogu6ujudodeljivanjepo-
detnih vrednosti promenljivim u fazi prevodjenja Programa sa FORTRAN-
-jezika na maEineki jezik. Prema tome, ove naredbe 8e ne javljaiu u Pro-
gramu na maEinskom jezilni, ali obezbedjuju Postavlianje konstanti u me-
morijeldm registrima, bez koriS6enja izvr5nih naredbi FORTRAN-jezika' i
11.1. DodeliiYPie po.C9t-nih vl.ednosli P:ojnenljiyi.{n naredbom , IFa ekEiEiliTEEklaraciju viste promenljivih V
Ve6 smo videll da opisna naredba za eksplicitnu deklaraciju vrste
promenljive (REAL, INTEGER, COMPr'FX,LOGICAL) ima dve funkcije:
2Lo
- deklariEe vrstu promen{lvih po lmenima promenljlvih,- defini5e duZine promenljivih.
Pored navedenih funkclja, ova naredba se moZe koristitl i za dode-ljivanje poeetnih vredno6ff promenljivim i nizovima koji se pojavljuju ulisti ove naredbd, .iako, oplta funkcija ove naredbe moZe se opisati naslededi nadin
vfFte * I llsta (11. l.l)gde je
vrsta - slulbena red (REAL, INTEGER, COMPLEX ili LOGICAL),s - nbobavez4n ceo neoznaden lroj kojt definlse duZinu promen_
ljivih za koje to nije posebno ukazano u listi ove naredbe,lista - spisak elemenata medju sobom razdvojenih zarezima.
Ako se deklari5e ime promenljive u listi, onda je elemenat Uste
tuE * q/k/ (ll.l.2)gde je
ime - nazlv promenlJtve,
s1 - neobavezan ceo neoznaden broj koji deflnlEe duZinu promenljl-ve, a
k - neobavezna konstanta, koja ee dodeljuje kao podetna vrednostpromenljivoj.
Ako se deklarile ime niza u listi (ll. I. l), onda je element listeime*sz (lista r ) llista2 / (ll. 1.3)
gde je
ime - naziv niza,s2 - neobavezan ceo neoznaden broj, koji definiie duZinu eleme-
nata niza,
lieta1 - neobavezan spisak, od najvi5e ?, neoznadenih, celih brojeva,medju sobom razdvojenih zarezlma, koji defini5u makeimal_ne vrednosti indeksa niza,
lista2 - neobavezan episak konetanti, medju sobom razdvojenilr zare-zima, koje se dodeljuju kao poEet-ne vrednosti elementimaniza.
Ako au u lieti2 uzaatopne konstante medju sobom jednake, tada ele-ment llste2 moie imati obllk
rlr
fli+
iF
.r.*:-]Tffi
m*k2lr
(11.1.4)gde Je
m - c€o neoznaden broj koji ukazuje na broj konetantl sa vredno66uk,
k - konetanta koja se ponavlja m puta.
Tako ee mole pleati
,, INTEGERi2 JOT/186/TALFA(5, tOt t5O+OtREAL ftAsA/_7.2f3/ rBEtA( lOt/5.1.0, 5+2.0/col{PlEXrl6 DEt TA/ I -1.4D-2 13. 2D4 I ILOGIcAL LoG*I/"TRUE. /,PLus/.FALsE./
Iime ee postiZe eledede dejstvo
- promenljiva Jor i elementl niza ALFA deklariSu se kao celobroj-ne promenlJlve duZine dva podregistra, i promenljlvoj JOT se do_deljuje podetna vrednogt 186, a evih 50 elemenata niza ALFA dobi-jafu potetnu vrednoet nula,
- promenljlva MA'A i elementi niza BETA dekrarrdu se kao rearnepromen{ive duZlne 4 podregistara, t promenljivoj MASA dodeljuJeoe pocetna vrednoet - 7zoo, a prvrh pet elemenata nlza BETA do-blJaJu broJnu vrednoat t, dok elede6ih 5 eremeaata vrednost 2,
- komplekanoj promenljtvoj dvoetruke tadnoeti DELTA dodeljuje eepodetna vrednost -0, 014+32000. i,
- logidkoj promenljlvoj LOG duZine jedan podregietar dodelJuje eepoEetna vrednost . TRUE., a logidkoj promenljtvoj pLUS, duZine4 podregletra, dodeljuje se vrednost . F-AI^SE.
)rft' ft.2. Naredba za dodeljlvanje podetnih vrednoeti
DodeljivanJe podetnih vrednosti moZe se izvrBiti i pomodu poeebnenaredbe obllka
DATA Ueta (11.2. r)gde je
DATA - sluZbena re6,libta , epleak elemenata medju sobom razdvojenlh zarezima.
Elementl liete, .u (11.2. l), imaju obltk
\
li:
iitl
i212
Iietal /lieta21 (r1.2.21gde je
Ustal - spisak imena promenljivih sa indeksom ili bez njega i imenanizova medju 6obom razdvojenih zarezima,
Iista2 - spisak konstanata koje se sleva nadesno dodeljuju promenlji_vim i elementima nizova navedenim u listil , medju sobomrazdvojenih zarezima.
Konstante u listi2 mogu blti celobrojne, realne, kompleksne, heksa_dekadne, 10gi6ke ili alfabetske (literali). Ako je viSe uzastopnih konstantijednako, moZe se pisati
m*k (11.2.3)gde je
m _ ceo neoznaden broj koji ukazuje na broj ponavljanja konstante k,- k - konstanta koja se ponavlja.
'Tako se moZe pisatiLOGICAL t{2IDI rtil,is I ON Al lO,, C ( 5loAr a N/ L 2 / t A / tO+O. I, B, C f 3, 2 t 5*t
" 5 / t L f .TRuE. r. FALsE. /6ime se postize slede6e dejstvo:
- celobrojna promenljiva N dobija brojnu vrednoet 12,- deset elemenata niza A dobijaju vrednost nula,- promenljiva B dobija vrednost 5,2, apet elemenata niza C dobija_
ju vrednosti l, S, i- Iogi6ke promenljive L(l) i L(2) niza L dobijaju vrednosti .TnuE
odnosno . FALSE.
Ako se Zeli proizvoljan sadrZaj postaviti u memorijski.registar, po_godno je koristiti heksadekadne konstante.
Heksadekadna konstanta pi5e se kao niz heksadekadnih cifara o,1,2,3,4,5,6,7,8,9, A, B, C, D, E i F ispred kojih stoji slovo Z.
Kako binarni k6o heksadekadnih cifara sadrZi detiri binarne cifre, toznadi da u jednom podregistru sa g 6etija mogu da se registruju dve hek_sadekadne cifre. posto je binarni kod heksadekadnih cifara potpun ravno_meran kod, to zna6i da se pomoCu heksadekadnih cifara moie u memorij-
'aa3
skom registnr poetavlil pfolzvo{en btaarnl radrzaj. Makaimalni broj clfa_ra koji moze imeti hek.edekadna konstarta zavisi od definieane duzine pro-menljive, Kako se duZina promenljtve odredjuje po broju,podregistara zanjeno registtovanje, a jedan podregiatar sadrZi dve heksadekadne cifre, toje maksimalni broj cifara h"ksadekadne konatante dva puta vedi od duzinepromenljive kojoj se dobeljuje ova konstanta. Ako j6 broj cifara heksadekad_ne konstante ve6i od dozvoljenog,za datu duZinu promenljive, odbacuju €eheksadekadne cifre e leve strane; ako je pak broj cifara manji, s leve stra_ne se dodaju nule. Tako se moZe pisati
CoHPLEx CrOrl6INTEGER*2 OETA,ALFALOGICAL IOG*IDArA C/ | 3. E "197O. I IDIL6HSREDNJA VREDN0SI/,,. BEt At I Ag. I , ALFA|ZCLCS| tL}clar'rl
dlme ae poettZe slede6e:
- promenljlvoj C, dtja Je duZlna g, dodeljuje se podetna vrednost li_teral
3. 8. 1970
kojl je definiean izmedJu apostrofa,- promenljivoj D, 6ija je duZina 16, dodeljuje se kao podetna vred_
noet llteralSNEDNJA VREDNOST,
kojl Je deftnlean opleom 16H,
- promenrJlvoj BETA, 6lja je duZina 2, dodeljuje se kao podetna vre-dno€t llteral
.ABkojl je definisan lzmedju apostrofa;
- promenljivoj ALFA, Eija je duZina 2, dodeljuje se kao podetna vre_dnogt hekeadekadna konstanta
crcskoja je definieana podetnim slovom Z, i
- promenljivoj LOG, Cija je duZlna l, dodeljuje sc kao podetna vred_noet heksadekadna konstanta
D3
koja je definleana poEetnim elovo
ri;,1
rll
2t4
Naredba (11.2.1) plBe se pre lzvrlnlh naredbl progratna, i tada je
redoaled oplenih naredbl glededi:
1) Oplane naredbe za ekeplicltnu I lmpllcitnu deklaraclJu vrste (RE-
AL, INTEGER, DOUBLE PRECISION, COMPLEX, I.OCICAL, IMPLICII),
2) Optsna naredba za navodJenje lmena potprograma koJl se javljaju
kao argumenti drugih potproglama (EXTERNAL),
3) Optena natedba za definisanje dimenzije nizova i maksimalnih
vrednostl lndekaa nizova (DIMENSION),
4) Oplene naredba za deflnisanje zajedntdkih zona (COMMON),
5) Opiena naredba za dellnlsanje zajednidldh polja (EQUfVALENCE),
6) Optgna naredba za postavljanje podetnih vrednosti (DATA),
?l FunkdJake naredbe, I8) Izvr6ne naredbe programa.
Naredba (11.2.1) ne mole ee koristiti za dodeljivanje poEetnih vred-
noetl promen[lvim koJe uleze u zajednidku zonu pr6gr"msldh jednlca (CO-
MMON-zona). Ovalfftm promen{ivim dodeljuJe 6e podetna vrednoet pomo-
6u poaebne progrqmske jedlnice BTJOCK DATA, koja je opiaana u slede-
€em odeljkr,r.
11.3. Programeka Jedlnlca za dodeUivanje poEetnih vrednosti
zajednlEldm zonama u memorlji
PostavljanJe podetnih vrednoeti promenl5lvim i nizovima koji Eine
zajednidku zotttr ze vlSe programskih jedinica vrSi se preko posebne pro-
gramske jedinice, Etja je etruktura elededa
BI-OCK DATAIII
END
(1r.3. l)
gde Je
BIiCK DATA - sluZbena re6, koja oznaEava prograinsku jedinicu
za postavljanje podetnih vrednosti u zajednickim zo-
name u memoriji,END - eluZbena red koja oznadava fizidki kraj programske
jedinice.
2t5
Izmedju prve naredbe programske jedinice (BLdCK DATA) i zadnjenaredbe (END), ne 6me 6e nalaziti nijedna izvr5na naredba. Ako se koris.te.naredbe za eksplicitnu ili implicitnu deklaraciju vrgte promenljivih one
se moraju pisati neposredno iza prve naredbe potprograma (BLOCK DATA).Iza ovih naredbi navodi se naredba COMMON u kojoj sG mogu navesti sa_
mo lmenovane zajednidke zone, i to sve promenljive ovih zoia, bez obzira -
da li dobijaju podetne vrednosti ili ne. ova programska jedinica se posebno
ne poziva u programu, ve6 dini sastavni deo programa, i izvr5ava se napoCetku programa.
Tako se moZe pisatiELOI( DAIAR,EAI. KORzcollHOilrl'oN/?l r Er KOR2OATA Pl r Er KOR!/3. l4l 599 t 2.7 lB2B2 t l. +t+2t4 IEND
dlme se postiZe sledede:
- zajedniEka zona aa imenom KON sadrZi promenljive pI, E, KORZ,kojima se dodeljuju podetne vrednosti,
- promenljivoj PI dodeljuje se podetna vrednqst 3. f4lS93,
- promenljivoj E dodeljuje se poietna vrednost Z.7t8ZgZ, i- promeljlvoj KOR2 dodeljuje se poietna vrednost t.4t4?t4.
I
i
ti
I2. OPSTE MOGUCNOSTI UNOSENJAFODATAKA
I IZDAVANJA
U ovoj glavl blCe izloZene dalje mogudnostl unoEenJa I lzdavanJa po_dataka u FORTR"A,N-jeziku. prvl deo materi3rra (odefJa& 12. l.i 12.2)pred-stavlja da\ie mogu6noe* oplene naredbe FOBMAT, a drugi deo (odeljak12.3) odnosl ee na unoEenJe i izdavanje podatarra bez korl6denJa naredbeFORMAT.
t2. l- DaUe moguGnoail naredbe FORMAT
12. l. l. Op6tl opie podataka
PolJe ulaznog lll rzraznog eloga, &oje aadrzr cerobrojae, meEovtte,kompleksne tlt logtdke konatante, moZe lmatt opitl opla
gde Je
n
G
k
d
nck. d (12.1.1)
- ceo neoznaCen broj koJl uka2uSs na broj ponevljanja opisa,- glnbol FORTRAN-jezl&a,
- ceo neoznaCen broJ koji ukazuje na duZlnu polja u ulaznom, odno_gno lzlaznom, elogu,
- ceo neoznacen broj kojl ukazuje na broJ var.6rh cifara kada geopleuje po{e aa meEovltld lli kooplekantm brojevlma. Ova kon-atanta je bez znadaJa kada ee opleuJe pol,je aa celobrojnom ili lo_gllkom konstantom.
Ako ee lzdaje meEovlti broJ x u lntervalu0,lrlxl<rd (t2. r.2l
218
gde je d parameter u speclflkacltt (12. l. l), tada se broj izdaje bez lzlo-Zioca. U suprotnom Bludaju, meEoviti broj se lzdaje sa izloZiocem E iU D,
6to zaviai od deflnlsane duZine promenljlve, Eija je to brojna vrednoct.
McdJutlm, pri izdavanju me5ovitih brojeva u 3irlnl polja k treba uvek
predvideti meata za izloZilac broja.
Pri korlE6enju opisa (12.1. l) treba voditi ra6una o slededem: ako je
duZlna polja (k) nedovoljna za sme5taj brojnog podatka, tada Ce bitl polje
lopunjeno sa k zvezdica (*).
Prlmer
Sietaviti program koji dodeljuje poEetne vrednosti promenljivimStampa njlhove vrednoeti na slede6l naEin
a) CelobroJne promenljlve
ALFA = 4236
JOT =5
b) Realna promenljiva dvostruke tadnocti
D = 324.12
c) Realna promenljiva obidne ta6nosti
R = -125.6
d) Kompleksna promenljiva
KOM = (r4.2, -s.Bl
e) Logt6ka promenljiva
LOG = .FA[,SE.
Progro- ima slededl izgled
INIEGER*2 ALFAt1236l, JgT l5tREAL.8 Dl tZ4. LZt, R!1 f -LZ'.. 6tcollPtEx t(Otrllt4r2r_r.8t, -
LoGtCAt.l LOG/.FAt SE. /, rRITE(6rl0t ALFI,JOTTDlRl|(Qil1!916
l0 FonilAtt I t r2G4tGt2.s,eir.zrz6ir .t$!tstoPEND
Vrednosti promenljivih Etampaju se u obliku
42t6 5 ?24.12 -0el3E 03 14.2 -3" 80
219
Po6to Je vrednoat promenljlve R van intervafa (12. I.21, to je StampanJe
izvrieno u ekeponenclJalnom oblLku (ea zaokruZenjem).
L2. l, 2. KoeficUent razqere
Ako se konatante u ulaznom, odnosno, lzLaznorn slogu opieuje opis-
om F, E ill D, tada se moZe uz ovai opis primeniti koeficijent razmere u
obllku
mPnFk. d (12.1.3)
' mPnEk. d (r2. 1.4)
mPnDk. d (12. 1. 5)
- ceo oznaden broj koji ukazuje na koeficijent razmere,
- elmbol FORTRAN-jezika.
ili
iu
gde je
m
P
Ako ee opie (12. 1.3). kortett za ople polja u ulaznom slogu, tada lma
slede6e dejstvo
u=s.10-- (12. 1.6)
gde je
a - vrednoat konatante u ulaznom slogu, a
u - vredtroat konstante koja Ce biti regietrovana u memoriji.
Ako ge opla (12.1.3) koriati za opis polja u izl:aznorn slogu, tada on
lma elede6e deJstvo
s=u.108 (12.1.7)
gde je
u - vrednost konstente u memoriji, a
e - vrednoet konetante koja 6e biti izdata u izlaznom slogu.
Ako ee opie (12.1.4) iU (12.1.5) prlmenjuje na konstante u poljima
ulaznog eloga., on je bez dejstva. Ako se ovi oPi.si primenjuju na izlazu,
tada ne u.tlEu na brojnu vrednost konstantl, veC semo na oblik Stampanja
tako 6to 6e se vrednoet mantlse povedati 10o puta, a eksponent umanjiti
ze m.
220
Koeficijent razmere primenjen na jedan opis u FoRMAT-naredbi os_taje u vaznosti i na svim ostallm opisima koji slede iza ovog opisa, Ako eeZeIi ukinuti va'noet koeficijenta razmere, treba zapi.sati opis F, E ili D uobliku (12. 1.5), (tZ. r.4) iU (12. 1. S) u kojem 6e biti m = 0.
L2.7.9. Razme6taj polja u ulazno_izlaznom slogu
Posebnim opisom moZe se definisati poCetak polja u ulaznom, odnos_no u izlaznom slogu. Ovaj opis se pi6e u obliku
(12.1.8)gde je
T - simbol FORTRAN_jezika,
n - ceo neoznaden broj, manji od maksimalne duZine sloga lli jed_nak ovoj, i oznadava podetak polja u slogu.
Medjutim, kada ee radi o izlazu treba imati u vidu da je prvi eimbolu lzlaznom elogu komandnog karaktera i da ee odnosi na vertikalno pome-ranje papira na Etampadu. Tako je drugi elmbol lzlaznog sloga u etvari pr-vi simbol koji se Etampa, pa n u (f 2. 1.8) ukazuje na (n-l)_vi elmbol ujednom Etampanom redu.
Prlmer
Slede6l program
4.2f. 13E'-0. OliIRITE(orl0t Ar8
l0 FORHA7(, A-rr2pF6.0 fT4tElA.lrFlr I B=rtS IOPEAID
daje Ftampanl dokument u obllkuA. 22t3.B= _l4oDE_03
PoSto je na opis F, za promenljivu A, primenjen koeficijent razme-re 2P- to je brojna vrednost promenljive A, pove6ana l0 puta pre Stam-panja. Kako se koeiicijent razmer€ prenoei I na sledede opise koji slede,to je i za opis E primenjen isti koeficijent razmere.. Medjutim, brojn:r
Tn
22L
vr€dnost promenljive B, nede bitl promenjena, ali 6e oblik dtampanja bitltakav da 6e mantlsa bltl pomnoZena sa 103 , a eksponent umanjen ze 2. lIdfugom lzlaznom slogu raspored polja u slogu je definlsan opislma T.
12. L. 4. Opis heksadekadnih konstanti
U odeljku 11.2 videli smo da se podetna vrednost promenljivih moZe
postavltl pomo6u heksadekadnih konstanti. Medjutim, hekeadekadna kon-stanta ae moZe na€i i u polju ulaznog ili izlaznog sloga. U ovom sluCaju o-pisuje se ea
(12. 1.9)'gde je
n - ceo neoznaEen broj kojl oznalava broj ponavljanja opisa,Z - elmbol FORTRAN-jezika, ik - ceo neozna6en broj koji definide duZtnu polja u slogu.
Ako je heksadekadna konstanta duZa od duZine polja, tada se odbacu-
Ju clfre eleve. Ako Je heksadekadna konatanta kra6a od duZine polja, vrdiee dopuna sleva nulama u sluEaju ulaza, odnosno znacima blanko u eludajutz]reze,-
12. f.5. Opie alfabetaklh podataka
FORTRAN-jezIk je deflntean pre svega ,^ opi" problema, u kojimaae preteZno javljaju izradunavanja po odredjenim formulama; drugim re-llma za obrEdu brojnih podataka. Alfabetski podaci koji predstavljaju nizsimbola, javljaju se u obllku literala, kao neimenovani podaci, a eamimtlm, ne pruzeju ge vede moguCnosti manipulaclje sa njima u progremu.Medjutim, da bl I u FORTRAN-jeziku postojala mogu6noet za ve6e mani-pulactje sa a[abetskim podacima, uveden je opie
nAk (12.1.10)
gde je
n - ceo neoznaden broj kojl ozne€ava broj ponavljanja opisa,
A - simbol FORTRAN-jezika, Ik - ceo neoznaden broj kojl defniEe duZinu auabetskog podatka.
rrZk
gaz
opla (r2. l. l0) mote rc tor{rdtt ze ulez t tzraz alfabeterdh podataka.oval ople ee odnosl na erfebetrke podat&e, koJlma ee dodeljuje rme na iartnaEln kao t lme promen{ivfua. Dullna aUabetakog podatka odgovara dutrinipromen{lve, CiJe ime se dode{uJe alfebetekom podatku. Ime ovakvog alfa_betekog podatka prBe se u liail ulazne naredbe, kada ee unosi, odnoeno uUrti lzlazne naredbe, kada ee lz.daJe aUabetski podatak.
Ako je duZlna auabetskog podatka (k) jednaka po broju slmbola aadclderleanom dulinom promenljrve kojoj ee dodeljuje auabetski podatakteda odgovarajude polje u ulaznom, odnoeno u izlaznom alogu sadrZf L sl_mbola. Akb je durtna alfabetekog podatka manJa od duzlne porja, tada aeelfabeteki podatak poetavlja u polju sleva nadesno, a u oatali deo poljapost8vuaju se znacl blanko. Ako je {ulrna auabetskog podatka ve6a od du-Itne po{a, tada ge alfabetskr podatak poatavlja eleva nadeeno, a vrEak ai-mbol,a ge odbacuje.
Primer
U l.koloni karticg bu5en je ceo broj k, a od 2. do 10. kolone broj x.tzracunativrednoet n, F ill y uzavisnostlodvrednoetibroja k, nasle-de6l naGln
f t izraEunati t= x2+lIk =1 2 ', F.=2x+g,sII a " y-x2-2x-4\
Program saataviti tako da ae moze korlstltl za prolzvoljan broJ ula_znlh kartlca.
Program na FORTRAN-jeziku ima elededl izgledrDlHEilStolt A(3tDATA Al ll l. ALF|. l.
^l 2l t.gElA. f ,A l3l t.cAnA. f
3OO READI jrl00rENtrriool KrI100 Fo8t|atlllrFg.tl
G0 TO llr2r3lrK'G0 r0 300I V.X||X+I.
{OO llRlTEl6r?O0l AlKl rY2OO FqRlffllr rlA4r! ' rrEl2.5l
60 TO'3002 l'2tlX+1.5
GO r.O 400
3
t00
YrXaX-2.1X-4cG0 T0 400STOPEND
Za ulazne podatke date u tabell 12. l. L, rezultati se dobijaju u obli-
Tabele 12.1. Iku:
k x
2 r,26
I {,003 2.20
I -1, 00
0ETA . 0.600008 OlALFA . O.l700O€ 02GAI{A r -0.35600E 0lALFA . C.20000E 0l
Elementlma olza A dodeljene su kao poEetne vrednosti, aUabeteld
podact ALFA, BETA t GAMA, I Etampanje teketa izvr6eno je pozivanjem
odgovaraJudeg elementa niza A.
12.2. Promene FORMAT-naredbe za vreme izvr6avania programa
Prema dosadaBnjem izlaganju FORMAT-naredba se pi5e u programu
I nJen obllk se ne moZe menjati za vreme izvr5avanja. Medjutim, u neldm
aluEaJevtma Je pogodno da ge ova naredba moZe menjati za vreme 7zvr6a-
vanJa programa. Ovo se moZe postldi na dva nadina:
- postav{anjem ea'drZaJa FORMAT-naredbe sa ulaza, i
-poatavljanjeeadrZajaFORMAT.naredbekaopodetlevrednostirrlza.
12.2.1. PoetevUanje eadrZaja FORMAT-naredbe sa ulaza
U odeljku 4.8.5 obJa6njeno je da se llteral u FORMAT-naredbi, koja
Je prldnrZeoa naredbl ulaza, zamenjuje aadrZajem odgovarajuceg polja u
ulaznorn elogu. Prema tome, ako je opiena naredba napisana u obllku
j FORMAT('Uteral') (r2'2' r)
a lzvr6na naredba ulaza, pomo6u koje ee unoel novl eadrZaj FORMAT-na-
redbe
READ (i,J) (t2.2.2)
221
tada 6e izvr.nom naredbom (Lz.z.z) brti postav{en novr eadrraj naredbe(I2.2. l) na predvidjenoj duZini izmedju apoetrofa.
Na ovaj naEin eadrZaj FORMAT_naredbe moZe se menjati proizvolj_an broj puta za vreme izvrEavanja programa. Medjutim, ove promene aeodnose aamo na pisani tekst (Uteral) koji se nalazi izmedju apostrofa.
Tako je ovo pogodan nadin kada ae unoae razlldita objaEnjenja kojatreba Etampati uz rezultate.
12.2.2.
SadrZaj FORMAT-naredbe, ukljuduju6i spoljnu otvorenu i zatvorenuzagradu, moZe se postaviti kao vrednost niza sa odgovarajudim brojem e_Iemenata u zavisnoeti oct broja ermbola koje sadrZi FoRMAT-naredba.ovavrednost moze biti postavljena kao podetna vrednost nlza lri dodeljena ele-mentima niza sa ulaza. Naredbom
odnosno
gde je
ime - naziv niza Cijim elementima je dodeljena vrednost sadrZaja
_ FORMAT-naredbe.
Primer
Tako raniji primer na kraju odeljka 12.l.S, mole biti iapiean bezFORMAT-naredbe, i tada program ima slede6l izgled
READ(i, ime)Usta
WRITE(i, ime)Usta
(12.2.3)
, (t2.2.41
OIHENSION A{3I,FORUL( 3I,FCRIZI5'DATA A./.aLFASETAGAMA, t.iaeiliili I tFeoit. I s
_- -]FoRlzl2oHl. rrA4rr . .rEl2.5i t3o0 REAo( 5TFORULT ENO:5oot i;i-- - "G0 T0 llr2r3trK
I400
2
)
G0 T0 300l=l*l+11t{RtTE(6,FoRIZl A(|(l,YG0 T0 ]i00Y=2;rX+3.5GO TO 400Y-XrX-2. *X-4.G0 T0 400
500 STOPE
^10
225
Ze ulazne podatke date u tabeli 12. l. l, rezultati se dobijaju, kao iranije, u obliku
B€fA = 0.6OO0OE OlALFA . O.1700OE Oz6AflA - -0.356O0E OlALFA = 0.20000E Ol
,r.r.
Uno6enje i izdavanje podatala vrEi se navodjenjen imena promenlji_vlh, u Usti odgovaraju6ih izvrEnih naredbi, i navodjenjem opiea u listiFORMAT-naredbe. pri ovome ae jedna ista informacija o vrsti podatakanavodi dva puta. prvi put je to reEeno preko imena promenljive, a drugiput preko opiea polja u ulaznom, odnosno u izlaznom slogu.
Postoji mogudnoet da se unoEenje I tzdavar{e podataka vrdi lsk{udi_vo preko lmena promenljivih i nizova. Ovo se postiZe naredbom
NAMELIST lletagde je
NAMELIST - sluZbena red,
liste - epieak elemenata koji se medju sobom ne razdvajajuzarezima.
Elernenti liete imaju oblik
/ime/lieta, (r2.3.21gde je
ime - nazlv koji se eastoji.od jednog do 6est alfanumeridkih sim_bola, od kojih prvi mora biti slovo,
Uatal - splsak imena promenljivih i nizova medju sobom razdvoje_nlh zarezima.
U ovom slu6aju nare{ba ulaza ima obllk
(r2.3. l)
(12. 3. 3)
(12.3.4)
READ(i, ime)odnosno u elu6afu izlaza
IvRITE(i, ime)
li)l
irl
l
i,i,
226
gde te
i - ceo neoznaden broJ llt ime celobrojne promenljlve, kojim eedefinlEe nlazno-izlazna jedinica,
ime - naziv promen{lvlh sadrZanih u lletll u (12.3. Z).
fako-ime u (fZ. g.3), odnoeno (12,1, \,-ukazuje na eplsak promeh_ljivth t nizova, to znadl da Je ovlm deflnlsana lista urazne. odnosno izlaz_ne, naredbe, Opia po{a ulaznog, odnogno Lzlaznog sloga u ovom cludaJunlje zadat, ali ee zato ulazni, odnoeno lzlazri podaci moraju pisati.u ob[_ku
ime lista2 & EI{D (12. 3.5)gde je
lme - nazlv promenljlvlh eadrZanlh u Uetll u (12. S. 2),11sta2 - siisak elemenata medJu sobom razdvojenlh zarezima, iEND - gluZbena red, koJa oznaEava kral ulaznlh podataka.
Elementl llete2 eu oblika
tulmeo = I
lmeo = llsta3
(12. 3.6)
(r2.3.71gde je
imep - lme promenllve, koJe mora biti eadrZano u lletll ,
k - kongtanta koJa se dodeljuje promen{lvoj sa lmenom imep ,lmea - lme niza, koje mora biti eadrtreno u UEtil ,
lieta3 - episak konetand medju sobom razdvojenih zarezima, i<oje se
redom dodefiuju elementima nlza Cije je lme na levoj etrantznaka jednakoati.
Ako je u lietl3 viEe uzaetopnih konstantl jednako, onda element listemoZe lmatl obllk
m*kr (r? 3.8)gde je
m - ceo neozna6en broj koji ukazuje na broj ponavljanja konstante,kl - konstanta koja ee ponavlja.
. 227
Ulazni podacl koji se unose pomo6u naredbe (12.3. 1) moraju biti bu-Seni podev od 2. kolone kartice.
Naredba (12.3. l) moie se nqlq2ill bilo gde u prograrnu, ali mora bi-tl lspred prve naredbe u kojoj se korrste imena promenljivih iz listel u(L2-3.2). Pomocu ove naredbe mogu ae unostiti i izdavati vrerlnosti svihvrsta promenljivih: celobrojne, meSovite, komplekdne ilt logiike konstan-te.
Prlmer
Zadate eu dva kompleksna broja Cr i Cz, i l0 elemenata niza A sa
realnlm konstantama obidne tarnosti, kao i 3 elementa niza L sa Iogidkimkonatantama. IzraCunati C, P i K po formulama
c=
P=
K = Lr IrLz ALt
Program na FORTRAN-jeziku ima slededi izgled:
COIIPLEX CTCTIC2LOGICALII L(3I,KOI
'{ENsI ON A I IO
'NAI.IEL I ST/ULA ZICI,C2,L, AI IZLAZ/CTP TKR EAo l 5r u_AZ
'C-CllC2pr10O lO l.lrlO
l0 PrPr11 1 1
K-l-( I l.AND.Ll z t.ANo.Lt 3 IltRt TE ( 6r I ZLAI ISTOPEITID
Ulaznl podacl ee pripremaju na karticama, tako da se buEe od 2. ko-lone kartice. Za ulazne podatke
6ULAZ Ct-(2. t4.21 tC2. l-L. t5.21111=T1 TlF g
1r{1 l4lle rt12. r 6END
rezultatl se ltampaju u oblikurt zLlzf,rtEND
crc,l0l-la'I'l
(0.?0419616r-Oo5l?O54621rP. l28.0OOO0 rt(.F
13. KORISCENJE SPOLJNIII MEMORIJA
'!iJiilii
:i;it:!j
Kao spoljrl memorije kod raEunara najde5ce se koriate magnetnr ,.1: i r,.1,r
diEk i magnetnatraka. Ove memorije sp relativno apore.u odnosu na ope-j ,r;r{.!,,rativnu (feritnu) memoriju raIunera, ali au zato velikog kapaciteta. I mag-netni diek i magnetna traka su po svojoj prirodi medijrim na koji ,e irrfor]c"'s,:rr,-1macija upisuje i sa kojeg se izdaje serijeki, i.to kod magnetnog dieka bit rr rj1i"
"po bit, a kod magnetne trake znak po znak (karakter). ., ,i:,.
' ii'4'-
-gd13. I Magnetni disk ,:i ji,r
f 3.l.l. Definisanje podataka /t: \.1,_svi podaci koji 6e 6e prenositi ng magnetni disk ili izdavati aa dis_
ka moraju biti definisani u jednoj grupi podataka, pomodu oplsne naredbe
DEFINE FILE lista ( r3. 1. 1)
gde je
DEFINE FILE _ sluZbena red,lista - spisak elemenata
ma.medju sobom razdvojenih zarezi-
Elementi u listi (tB. t. l) su oblika
iiit
t#rr;ii
d1[,i{:,i$
:;:61
,if;
.1i
$
,r,
r riilrr#
1.tll.;
gde je
g (s, d, f, p) (13.1.2)
tt0
I - c€o neozna6en broj koJi predatavlja identifikacioni broj grupe,
8 - c€o neoznalen broj koji definlEe broj elogova u grupi sa iden-tifikacionim brojem g,
d - ceo neoznacen broJ kojt defini6e makeimalnu dutinu sloga u gru.pi sa identiflkacionim brojem g,
f - elovo L, E ili U koje definiFe neEin preno6enJa lli izdavanja po-dateka, i
p - ime celobrojne promenljlve, Cija vrednost definiEe slog na dis-ku.
DuZina sloga d moze se lzraziti broJem podregistara ili brojem re-glstara u memoriji Eiji se eadrZaj izdaje na disk ili poatavlja sa di6k; jed-
nim elogom obrazovanim za ovakvu komunikaciju.
Slovo L defini6e da se srog za komunikaciju izmedju diska i unutraE-
nJe memor{e obrazgJe prema F08MAT-naredbi ili bez ove naredbe. Mak-
simalna duZlna eloga (d) izraZava se brojem podregistara u memoriji.Slovo E definiSe da se elog za komunikaciju izmedju diska i unutraS-
nje menorije obrazuje prema FORMAT-naredbi. Mahimalna duZina slog'a
(.d) lzraZava se brojem znakova.
Slovo U definiEe da ee slog zq komunikaoiju izmedju dieka i unutra5-nJe memorije obrazuje bez upotrebe IORMAT-naredbe. Maksimalna duzi-na aloga LztaZava ee broJem registara u memoriji.
Poele evakog obradanja disku vrednost celobrojne promenljive p bi-va uvedana za jedinicu, Cime ukazuje na slededi slog na disku.
13. 1. 2. Pozicioniranje glave disr<a
Da bl se omogudllo pozicioniranje gleve dlska pre nego 6to dodje do
izvrdne naredbe uno6enJa ili izdavanja informaciJa ea diska, uvedena je na-
redba
FIND (g'r) (13.1.3)
FIND - sluibena red,
g - ceo neoznaden broj ili celobrojna promenljiva diia vrednostpredstavlja identifikacioni broj grupe,
gde je 8de je
231
r - ceo neoztreEen broJ ili aritmettckt lzt9;z Elit vrednost ukazuje
na relativan poloZej sloga u grupi sa idertifikacionim brojem g,
13. 1. 3. Prenos Podataka
13. 1.3.1. UPis Podataka na disk
Upie podataka iz unutra6nje memorije radunara na disk vr5i se iz-
vr6nom naredbom
WRITE (g'r, j) Iieta (13.1.4)
gde jel
lista
WRITE - sluZbena re6,
g - ceo neoznaden broj ili i-e celobrojne PromenlJive Ciiavrednost predstavlja iderdifikacioni broj grupe,
r - ceo neoznacen broj ili aritmeti6ki izraz tiia vrednost uka-zuj€ na relativan poloZaj eloga u grupi sa idedifikacionimbrojem, g, i
j - neobavezan Parameter, koji ako se navodi mote biti obe-
leZje;edne FoBUaT-naredbe, ili irne jednog nlza' 6iji sa-drZaj odgovara sadrZaju jedne FORMAT-naredbe kojom se
defini6u izlazni podacl,
- splsak imena promenljivih i nizova, medju sobom razdvo-jenlh zarezima, 6ije Ce ee vrednosti Prenositi'
READ - sluZbena reC,
g - ceo neoznecen broj ili ime celobrojne promenljive 6ijavrednogt predetavlja identiflkacioni broj grupe'
r - ceo neoznaEen broj ili aritmeti6ki izraz dija vrednost uka-
zuje na reletivan p"t"Z.j sloga u grupi ss ldentifikacionimbroJem g,
13. 1.3.2. Izdevanje Podatka aa dieka
Izdavanje podataka sa diska i njihovo prenosenje u unutra6nju memo-
rlu re6unara vr6i 8e izvr6nom naredbom
READ (g'r, i, ERR=n) Iieta (13. 1.5)
232
Primer
; - neobavezan parametar, koji ako se navodi mo'e biti obelez_je jedne FORMAT-nareabe, ili ime jednog niza 6iji sadrZajodg.ovara.sadrZaju jedne FORMAT_naredbe kojom se defini_5u izlazni podaci,
n - reobavezan parametar, koji ako se navodi predstavlja obe_leZje jedne izvrSne naredbe na koju se vrSi prelazak u slu_daju da se otkrije gre5ka na disku za vreme prenogenja po_dataka u unutra5nju memoriju radunara, ilista - spisak imena promenljivih i nizova, medju sobom razdvoje_nih zarezima, kojima se dodeljuju brojne vrednosti sa diska.
Sastaviti program koji elementu ai,.; matrice
al,6o
ai,,eo
i
a s,'o o
arri. oo
3t, se 3t,60
iiasiso tr,'oo
at, s6
?2, Se
:
15,'s6
azd, se
diska u unutra5nju memoriju ra6unara i StampatiProgram ima slede6i izgled
lNTt6ER At20r60 I,81 60'DEFINE FILE 2(20r6OrUrKtDO l0 l.lrZ0DO 20 J'1r60
20 al I;J l.loo*frJl0 l{RITE(2r I I lAl I rJ I rJrlr6Ol
O0 30 l{rlr5REA0l2.il'ERR=5OO) lgl J I r J.l r6O I
/
,,, ',,
dodeljuje brojnu vrednost
ar.J = 100i+j (13.1.?)
ovako formiranu matricu upisati na magnetni disk, a zatim preneti elemente
(13.1.8)
njihove vrednosti.
233
blRI TE ( 6r 40 I ( 0l J t r J=56t 601F0RilAT( ! rr516lSTOPEND
Elementi matrice A dine grupu podataka sa identifikacionim brojem
2. Svaka vrsta matrice [ini jedan slog, pa prema lomc grupa je saEinjena
od 20 slogova. Svaki slog sadrZi 60 elemenata jedne vr.te matrice. Upis
na disk vrEi se vrsta po vrsta matrice, Sto dini ulnrpno 20 slogova za upis.
Izdavanje sa diska vrsi se u pet slogova, diji su sadrtraJi redom prva, dru-
ga, treCa, detvrta i peta vr6ta. Iz svake vr6te matrict koja se prenese sa
dieka u unutragnju memoriju raeunara, Stampa se zadnjil 5 elemenata vrste
od 56. do 60. elementa. Tako ftadlprni dolorment ima slededi izgled
156 Lrl rto I59 160256 297 2rA 259 260356 )r1 tt6 759 360456 457 458 +59 +60516
'57 558
'59 560
U sludaju da se pri prenoGu podataka sa diska u unutrasniu memori-
ju radunara otkrije greSka, tada dolazi do prelaska na naredbu zauetavlja-
nja (ea obeleZjem 500), Eime se prekida dalji rad po Programu.
ta'2.W13. 2. 1. Prenos podataka
13.2. 1.1. Upis podetaka na magnetnu tralor
Upis podataka iz unutra6nje memorije ra€unara na.magnetnu traku
vr5i se izvrSnom neredbom
WRITE(i) Iista ( 13. 2. 1)
gde je
WRITE - sluZbena fed,
i - ceo neoznaden broj ili celobrojna promenljiva, 6ija vreri-nost ukazuje na jedinicu magnetne trake,
tista - spisak imena promenljivih i nizova medju sobom razdvo-j€nih zarezima, dije se brojne vrednosti upisuju na mag-nctnu traku,
3040
500
234
Naredbi (13.2.1) nije pridrutene opisna FORMAT-naredba, jer ob-lik (13.2.1) pretpo.tavlja prenogenje podataka u internom kodu radunara,tako da FORMAT-naredba nije potrebna.
Pored oblika (f3.2. f) moZe se koristiti i oblik
WRITE (i, ) rista 1t3.2.21
koJi ima isto znaCenje kao i naredba izlaza opisana u odelJku 4. S., s timsto 6eda i ukazuje na Jedinicu megnetne trake. prema tome, naredbi (13. 2
2.) prtdrulute ee FORMAT-ndreilba sa obeleljem j.
13.2.1.2. Izdavenje podstaka ea magnetne trake
IzdavanJe podataka sa magnetne trake i njihov upis u unutradnju me-moriju ralunara vr5i se izvrgnom naredbom
READ(i) li6ta
gde Je
READ - slutbena re6,
I - ceo neoznaden broj ili celobrojna promenljiva, Eija brojnavrednost ukazuje na jedinlcu magnetne trake,
lista - spisak imena promenljivih i nizova medju sobom razdvoje_nih zarezima, kojima se dodeljuju brojne vrednosti sa mag_netne trake.
Naredbi (13.2.3) nije pridruZena opisna FORMAT_naredba, jer ob_
lik (f3.2.3) pretpostavlja da se sa trake izdaju podaci koji su upisani u in_ternom kodu ralunara, naredbom (19.2. l).
Ako su duZlne liste i sloga na magnetnoj traci jednake, tada 6e sveizdate informacije sa trake upisuju u ukazane memorijske registre imeni-ma u listi naredbe (13.2. 3). Ako je duZina li6te manja od duZine sloga na
traci, tada se prenosi aamo ona duZina sloga koja odgovara listi. Medjutim,ako Je duZina liste veda od duZine sloga na traci, tada se ovakva naredba(13..2.3) nede izvr5iti i dolazi do prekida rada po programu.
Pored oblika (13,2.3) moZe se koristrti i oblik
(13.2.3)
READ(i, j) lista (13.2.4)
235
koji ima iFto znscenJe kao i neredba ulaza opieana u odeljku 4. r1.2, s tim6to i seda ukezuJe na jedinicu magnetne trake. Prema tome, naredbi ( f 3. 2.
4) pridrulujq ee FORMAT-naredba 8a obeletjem j.
13.2.2. Oznaka kraja grupe podataka
Kraj grupe pdataka na magnetnoj traci oznadava se posebnlm zna-
kom koji se upisuje naredbom
END FILE g (13.2. s)
gde je
END FILE - sluZbena re6,
g - ceo neoznacen broj tli celobrojna promenljiva, {ijabrojna vrednost predetavlja idertifikacioni broj grupepodataka.
13. 2, 3, Premotavanje magnetne trake
L3.2.3.1. Vradanje trake na prethodan slog
Vracanje trske na prethodan slog postize ae naredbom
BACKSPACE g
gde je
BACKSPACE - sluZbena red
(13.2.6)
g - ceo neoznaeen broj ili celobrojna promenljiva, dijabrojna vrednost predstavlja identifikacioni broj gru-pe podataka.
t3-2-3.2.@
VraCanje trake na poEetak grupe postiZe se rrrr -'dborn
REWIND g
gde je
REWIND - slutbena red,
(1s.2.'i)
g - ceo neoznacen broj ili celobrojna promenljiva, dija brojnavrednoat predttsvua identifikacioni broj grupe podataka'
trl
t2l
t3l
t4l
LITERATURA
Fredric stuart: FORTRAN ProgramminS, ilohn Wiley & 8ons, inc' 'New York. 1969,
John Blatt: Introductlon to FORTRAN IV Programming: Using the
Watfor Compiler, Soodyeer Publtehlng cornpany'Pacific Pell.rdtt, California, 1968'
IBM System/360, FORTRAN IV Language (G30'€b16) '
Milan Zotalj: FORTRAN IV, Koordlnecioht odbot' korienika meElna
zs obradu podataka Jugoslavije, 1969'
IBM System/360, FoRTRAN Iv lJtbrery Eubprograms (Cz8-6596-2)lsl
PRILOG
RAD SA FORTRAN _ PROGRAMIMANA RACUNARU PDP.I1/70
S A D R Z,A J
l. Uvod2. Opis radunrrskog sistema PDP-ll/70
2.1. Tchnidke karakteristike2.2. hoganrski sistem
3. Komuitocija korisnika sa sistemom
3.1. Podetak rada na terminalu3.2. Kr i rada na terminalu
4. Rad na FORTRAN - progamima
4.1. ddresa teke4.2. Uno&nje novog prograna4.3. Prevotlenje progama 2494.4. Povezivanje programa 2514.5. Izwtavanje programa 2524.6. Obrazovanje komandne teke 252
5. Urealivad tekgta - editor 253
5.1. ReZimi rada editora . 2545.l.l.Relim unoienja ZS45.l.2.ReZim ureilenja 255
5.2. Komande editora 2555.2.1. Ubacivanje novog telsta ?555.2.2.lzbuivan1e teksta 2565.2.3. hetraZivanje tekrta . 2565.2.4. Rad sa pokazivadem reda . 2Sj5.2.5. Unolenje rcvog bloka . 2575.2.6. fkC nda n cditorom ZSg
Strana
241242
242245
245
245246
247
247248
240
6. Neke osobine implementiranog FORTMN _ jeziira
!.1 . Priprema programa6.2. Elementi iezika6.3. Na';d;iorrnnN-j."ik"' : : : : . :
6.3.l.Naredbaulazaiilaza . . : : . : . : : : :6.4.2. Naredba promenljivog bezuslovnog prelaska6.3.3. Naredba ciklusa .-:6.3.4. Konverzija podataka
6.4. Funkcijski potprobarn
9.1.l.geilrisanjJ$ue4nihbro.yeva . : : : : : : : : .
9.1.?.?r;ok" operacde nad redima6.4.3. Logidko pomoanje .
6.5. Biblioteki potpiograma
9.l.l.Fgeklediniceiteke ..6.5.2. Datumi i weme .6.5.3. Kraj izvrlavurja programa
258
25825825925926126t2612632632&264266266267267
27tUTERATI.]RA
I. WOD
U ovom prilogu izloZeni su osnovni elementi o radunarskom sistemuPDP-l I /70, rad sa FORTRAN.programima pod operativnim sistenorn IAS,pripremaI9lTleN+tograma u interaktivnom radu, kao i osobenosti implementiianogFORTRAN-jezika. Za ovo izlaganje koriidena je dokumentacija proizvottaCa,navedena na kraju priloga. Izlaganje nema cilj da prikaZe we mogudnosti koje jeproizvodad predvideo, za rad sa FORTRAN-programima, ved je nadinjen izbor,onih mogudnosti, koji de biti dovoljne da korisnik, koji poznaje FORTMN-jezik,moZe koristiti rad unar.
lzlagnje osobenosti implementiranog FORTRAN-jezika. ima cilj da ukaZena razlilie izmedu FORTRAN-jezika opisanog u knjizi i implementiranog zaraEunare PDP-Il. lmplementirura varijanta jezika nosl oznaku proizvodadaFORTRAN IVVOIC.O3.
Pri izlaganju sintaksnih definicija. koristi se slededa simbolika:
l"lrr
lalt_,CTRL/Cr
C-]RL/ZJparumetor
TEKST
wram(tar
TEKST
- elenrenat o mole sc ponoviti najmanjer-puta. a najviSe j.put;r.
- isrojestoiIo]l
* meiluprostor ili blanko,
- ovo su tastaturne komande, kcje se proizvodejednovrem:eninr pritiskom na tastere CTRL i C, odnosno Z
- mala kurziv slova, oznadavaju parametre, koje korisnikdefinite.i unosi,
- crna velika slova, oznadavaju tekst, koji korisnik unoci,uvek u navedenom obliku,
- mala kuziv podvudena slova, oznadavaju.parametre, diievrednosti rad unar izdaje,
- velika slova, cnadavaju tekst, kc{i ratrunar izdqie, uvck unavedcnorn obliku.
- telat podwCen isprekidanom linijom korisnik tipka olt nno vidi na cltrulu.
I
ir,
l:,ll
242
. Ovde su poronetott TEKST, pg.gllg_t_gl i TEKST primeri navedenih oblikaslova.
2. OFIS RACUNARSKOG SISTEMA Pt'P.I T/70
2. l. Tehnicke karakteristike
- Radunar PDP-lr/70 je najveci radunar iz serije radunara pDp-l l, arneridkcfirme DEC (Digital Equipment corporation). osnovne karaktcristike sistemi su:
- l6'to bitna red sa mogudnosdu obrade po recima (16 bita), po bajtovima(8 bita) i za brzi prenos dvostrula rel (32 bita),
- asinhrnost operacija,
- sistem prekida,
- brzi registri opite namene,
- komunikrcioni tanat (UNIBUS), i- mogudnost prikljudivanja rznovrsne periferne opreme.Na sl. 2.1.r orikazana je veza sistemi pomod. komunikacionog kanara(LNIBUS). Kaiakterisrika ovakve organiz.ri:i iu-f-"to pritfirClr."i.-;;;;;
opreme.. Komuaikacija sa operativnom m..oiilotn odviia se na istr natin kaoi saperifernim urcdajima.
Opcrativna mano{ia
- kryacitefi 64KB4MB,- vrcme prilaza: 0p gccc,
- mcmorijrkiregistar: t6 delija,- direktni pristup memoriji,
o, .. I poluprwodntna medumemorija od 2 KB, smanjujo brcj obradrnjalcritnoj memoriji, tako da je srednje vrerne prilaza 0,4 psec
AdnretiCki o4n- bzi registri oplte namcne,- ultnctfli(c operacijc u fikrnsn zarezu (vrcme bvrlavriria 0.96.?,scc).
aritmetickc operac{c u pokretnom zarean (vrcme tL"il;ii,ii4;lrtcc),
- obrada m dudni redi (t6 bita) i duzini bdtl (E bitt).
NIBUS
sr. 2.t.t.
243
Upravljadki orgar
- asinhronost opcrac{a,
- sistcm prekida,
- komunikacioni kanal za vezu izmedu organa sistema (UNIBUS).
Spoljnja mernorija
Magnetri disk RP{s
- broj povr$na: l9 povrsina/paketu,- broj staza: 4l I stazay'povrSini.
- broj se(tora : 22 sektora/ sw|i,- broj bajtova: 512 bajtova/sektoru- kapacitet: 88 MB,
- bzina diska: 3.600 obrtaja/min.,- pozicioniranje glave:
- zajedan cilinder: 7 msec
- maksimalno pozicioniranje: 50 msec
- srednje vreme: 28 msec.
Magnetna traka TE-16
- lirina trake: 1,27 cm,- duZinatrake:731,6m
' - brzina kretanja: l,l4 m/sec,- brzina premotavanja: 3,8 m/sec,- vrcme polaska i zaustavljanja: 8 msec,
- broj kanala: 9
- gustina: 800 ili 1600 bita/in,- rer'mak izmotlu blokova: 1,65 cm,- kapacitet 23 MB ili 46 MB,
- brzina prenosa; 36.([0 bajtova/sec, ili 22.000 bajtova/sec.
[Jlszneizlrni srt hiIinijCd stmpat LA-lt0
- matridni lt8rrpaC,-- matrica 5x7 tafakr,- skup znakova: 96 znakova (rrelika i mala slorva),- duzina reda: l32znaka/ndu,- bzina: oko 100 redova/min (zaviri od dutine reda).
TcminalW-50
- alfurumeriCki tcrmind se tastaturqn i okranorn,- skup simbola: vtlikaslova, dckadno cifrc i ryecijalni zawi(sl.2.l.Z),- broj rcdovrnackruru: 12
- broj pctcUr u rcdu: 80.
244
ol
al
v)
rErLflJ
t-illllNEtrEtrtrtrEtrtrl-ElEJ
Htrtrtrtrtrtrtr@trtrtrtrEH
HHntrtrtrtrtrtrtrtrtrtrtrr
HHtrtrEtrtrtrtrtrEtrtrtrtr@
245
2.2. Programski sistem
Programski sistem radunara dinc operativni sistem i progamski prevodioci iinterpretatori. Za ratunu PDP-I I /70 je razvijen operativni sistem IAS (InteractiveApplications System), koji omoguduje:
- rad u razdeljenom vremenu,
- sekvencijalnu obradu poslova, i- rad u realnom vremenu.
Na sistemu postoje prevodioci za sledede jezike:
- simbolidkijezik,_ FORTRAN IV,_ FORTRAN IV PLUS, i- coBoL
klao i interpretator za BASIC-jezik.
3. KOMI.JNIKASJA KORISAIIKA SA SISTEMOM
3.1 . Podetak rsda n8 termhalu
Svaki korisnik mora, pre rada na sistemu, dobiti Sfre pomodu kojih Ce muoperativni sistem omogueiti rad sa programima sistenra. Ove Sifre korisnikodre<luje u dogovoru sa sistem-programerom, koji iste saoptrtsva qerativnomsistemu. Kada korisnik Zeli da radi na terminalu, mora, po uk[udeqiu terminda uelektriCno. napajanje, sprovesti odreden dijalog, kre kdi se predstada sistcmu.Ovaj dijalog ima slededi izglsd;
CTRL/C
I.AS PROGRAM DEVEIJOPMEMSYSTEM VERSI0N 2I}weme daUm
PDS>IJOGINUSER NAME? karktnikPASSWORD? .rrf_a
USER kortnik WC [tutalos I TTOI: JOB-ID 12 sarc ettu!4
Svaki red korisnik .zavriava pritiskom na taster RET.URI.I (prelezat napoCetsk novog reda). U navedcnqrr d$dogu porukc korisnike imaju slcdcCcznaiinja:
koisttik - nisks simbola odrodena u dogovoru se{stem?rogrilrl.erqm,
gtlra - niska simbolr odrollena u dqovoru sa sisbmarogrun,crorn, pri t[kanju r ne vidi na ekruru,
: .ill'tt:
,liftr,;i'
246
wemedoumlatabt
Posle zavrietka dijaloga, korisnik, na poruku sistema PDS, moze zahtevati:
- uno*nje novog programa,
- rad sa editorom radi ispravki u programu,
- prevotlenje progt:rma,
- povezivanje progama, ili- iarriavanje programa.
himerNeka korimik Cije u Sifre, ranije ved saopstcnc operativnom sistcmu,
DRAGAN i 1951, teli da radi na terminalu. Tada korimik vodi slededi dijalog:
GTRL/C
IAS PR,OCRAM DEI/TIOPMENT SIISTEM VERSION 2.0
17:29:56 26-FEB-79
TDS>IOGINT,SERNA"IIIE? DRAGANPASSWORD? l$l 'TSERDRAGAN ttlC[201,1001 TTOI: JOB-ID 12 l?:30:fi) 26-FEB=7e
tDs>
32. Knjtadanatcrmiaah
. Kada korisnik Zcli da zavrli rad na terminalu, na poruku sistema PDS,odgovara sa Loc'our' q'
pDs > u)"ourposle Ccga sistem izdajo zavrlmr ponrku u obliku:
USER /gonsai& lJlC I kttabr ITTOI: JOB-ID 12 ware dattonCDNECTTIME 4 M SYSIEMUTILIZATIONzT MCTS
BYE
fdo *.f i n odgovuajuCt yrcmcna.
trd ovalcvog zrvrlct&.a radl, mdc i. sistem prckinuti opdulfuurttcrmindq ako korirnik odrcdcno urmo (nr primer l0 minuta) ne saopiti nikrhnrpondru prcko tlrte0n. U oqn slu0{u sirtcm jwljr ponrku.
TIIrIEOtnLdrfczrrlnu ponrku i pruklde oprlulivrnJc torminrh"
- 6as minut i sekund tekudeg vremena,
- dan, mesec i godina tekudeg dana.
- identifikacioni kod korisirika.
247
Primcr
. Tako, ako korisnik, DRAGAN, zavr5i r.ad sa terminalom moZe se dobitisledcdi bve5taj:
PDS > LOGOUT
USERDRAGAN UIC[20l,tm] TT0l: JoB-rD il t7:38:00 26_FEB_79CONECT TIME 08 M SYSTEM UTILIZATION I MCTS
BYE
4. RAD SA FORTRAN-PROGRAMIMA
4.1. Adresa teke
Teka !t opranizovan skup infomracr.ia, koji se duva u memorijskor.medijumu. Ako teka sadrZi podatke zove se datoreka, a ako sadrii progr:rm zove seprogramoteka. Na istan memorijskom medijumu moie se nalaziti vi5e teka.Informacija po kojoj se pronalazi memor{ski medijum, na kome se nalazi teka,kao i teka na medijumu zwe se adresa teke. Op5ti oblik adrese teke je
-- furetloi:l[katatoglimeI sadr|aj)f:verziial
ueu - ukazuje na vrstu memorijskog uredaja, i to tako daprva dva slova dznadavaju vntu uredaja, abroj izaslova..ukazuje na uredaj iz date vrste. Tako, poredostalih, postoje sli:dedi uretlaji:MM - magretna traka,RK - magnetni disk,SY - sistemski uredaj (disk),LP - StampaC,
- t9- t dva-oktalna broja, razdvojena zarezima, koji sepitu izmetlu uglastih zagrada i moraju biti iz inte;daI I ,377 | . Ovo je idenrifikacioni kod korisnika.
- do dcvet simbola, koji mogu biti slova ili cifre, stim daprvi simbol mora biti slovo. Ovo je ime teke.
- ukazuje na sadrZaj teke, i toFTN, - FORTRAN-program,LST ,- izveSt{ (listing) o programu,OBJ - preveden program,OLB - biblioteka,TSK - ia,r&ri program,CMD - komurdna tekaDAT - datoteka.
- olilalni broj iz intervala [ 1,77777 ] , koji defini&verziju tcke. Ako se ne navede podrazumeva se vezijasa najvcdim brojem.
lcotalog
ine
sdrrsi
tunila
ii:1r
248
4.2. Unobnje novqg programa
Ako Zeli da unosi novi program, preko terminala, korisnik tieba da ima uvidu, da, sadrZaj jedne kartice, odgovaralednom redu na terminalu. prema tomeako naredba sadrzi obelezje, ouo se unori od pocetka reda i pritiska t"rt t i,c,b,cim.e se dolazi na poziciju za podetak unosenja naredbe. Ak'o naredba ne sadrtioDele+, tada se pritiskom na TAB, takode dolazi na poziciju za unosenje naredbe.
Pri uno5enju programa korisnik vodi slededi dijalog:
PDS > CREATEFILE? rrne.FTNREADY FOR INPUT
fortran-program
CTRL/Z
tzI EXrT ]PDS >
U ovom dijalogu sluibena red CREATE oznadava da se Zeli unositi (kreirati)novi progtram. Ime programa irne navodi korisnik, i to moze biti niska odmarksimum devet slova ili cifara, pri demu prvi simbol mora biti slovo. Iza imenaprograma tipka se tailia i tekst FTN, koji ukazuje da se radi o FORTRANfrogra-mu. SiStem izdaje ponrku da je sprcman za unoienje, posle dega korisnik unosiFORTRAN-program. Kada je korisnik uneo FORTMNjrogram, tipka CTRL/Z(ednovremeno CTRL i Z) i program je, pod nryedenim imenom-, saiuvanlna.disku, a sistem daje poruku PDS ) i korisnik-odluduje Jta ieli dalje da radi.
- Kod ovakvog unolenja prog{ama, korisnik moZe vrliti iqpravke, siuno utekudem redu, i to:
a) Pritiskom na tasterDELETE bri5ezadnjiznaku tekudem redu.b) Pritiskom CTRL/U brile tekuCi red. Red koji je zavrlen, pritiskorn na
taster RETURN, ne moZe se iqprav.jati. Ovakve grelke mogu sc igravliati sapopomodu editora.
Primer
Un95e.1lj: novog Programa ilustrovademo naJednostavnom primeru. Bi& toqPgatn koji izradunava simu unel8 tri ccla broji. Uno5enje ss'"rgi ;;;;;dijalogu:
J49
PDS >CREATEFILE? SUMA.FTN
INTEGERXI,X2,)c},YTYPE IO
l0 FORMAT( t UNETITRI BROJA UOPISU t8:')ACCTPI20XIX2X3
20 FORMAT(3rE)Y=Xl+X2+X3TYPE 30,Y
30 ionrr,r,lr 1 ' s[rMA UNETIH BRoJEVA JE' , 17)
STOP
ENDctRL/zlzI Exlr ]tDs>
Posle ovoga, progam pod imenon SLJMA.FTN'nalazi se na dislu i korisnikmoZe zahtevati.njegovo prevoilenje, povezivanje i izvrSavutje. Metlutim, ako uprogramu postqie greSke, ispravke se mogu vr$ti samo pomodu editora,
4.3. Prevodeni: pmgruna
Da bi izvriili prwottenje FORTRAN-programa, potrebno je pozvati FORT'RAN.prevodilac, zadati adreal teke sa FORTRAT{-programom i prcdi na izvrhva.njc prevoilenja. Ovo se postile komandama:
PDS.> FOIRRANI[kvalifilutorll telnl
iliFDS > FOIRTRAN] [ftrulrf,tzror]fl
FILE? tel@l
Kvaldilotor &finis teke koje sc formiraju u toku prwodenja, kao i izvcltaje oizyrFnan prwotlenju. Telul saddi FORTRANjrogram i mora, kao opis sadrlajeimati FTN. (rulgttaton mogu biti:
/LIST [ : teka2l
lOBlIECII:telol
/sw I rTcH | : ([ /fin*aia ll )
Kvrlilikator LIST fonnira tiluz o FOf.TRAN-progamu, eis rrdrlrJa o,al<veteke je IJT. Ako teloz niie nnredena onda sc izvettaj o progamt izdaje neltsnpdu. Ako kvdilikator LIST niie navc&n izvctt{ sc ne Ldajc.
250
Kvalifikator OBJECT formira tehu od prevedenog programa, a opissadr2aja ovakve teke je OBJ. Ako kvalilikator OBJECT nije na'eden formira seteks sa imenom te&e1 i opisom sadrfaja OU.
Kvalifikator swITcH omoguduje da korisnik bira oblii izvettaja o izvrrenomprevoilenju. ovo sc zadaje navoilenjem odgovarajudih niski simbola namesto rceifunkciia. Mogu biti navedene sledede niske:
U:0U:lLl :2Ll:3DE
EX
izdavanje dijagnostike,izdavanje FORTRAN-programa i dijagnostike,izdavurje raspodele memorije i dijagnostike,izdavanjc gonerisanog koda i d{agnostike,prwotlenje progranrskih redova sa slovcn D u pnojpoziciji,prihvata red od 80 pozicda, u protivnon prihvata redod 7.2 pozicije.
Navotlcnjcm 11 ;7 bide obuhva&ne we funkcdeU: l.Ll:2iLl:3dakle s,iizvettaji koji se mogu dobiti pri prwodenju. Broj n u definicdi kvalilikrtoraSWITCH o&eilen je brojem funkcda koje se navedu.
Primer IKomanda
PDs > F0RTMN/LIST/SW: (/tl : l) PROGI
prwodi prograrn PROGI. FTN, izdaje izveltaj na ltarptCu, kojl sadrZi FORT.RAN-progrant i dijagrostiku, i formira teku prcvedepog programa PROGI.OBJ.
Primcr2
Komande
fDS> FORTRAN
FILE? POTI.]LAZ
ptcvode program POTULAZ.FTN, i formiraju tetcu sa prcvedcnim programom podimenorn K)TULAZ.OBJ.
Primer 3
Komande
PDS > FORTMN/LIST : L /OBL.:PFILE? MAX
prwodc program MAX.FTN, formir{u teku L.LST o izvr$idn prevotlenju i'tctuP.OBJ prevctlnog programa.
251
Primer 4
Komanda
PDs > FORTRAN/SW : (/DE) POTtzLAz
prevodi program POTIZLAZ.FTN, tako da ukljuduje i programske redove, koji u
pwoj poziciji sadrZe slovo D, i formira teku POTIZLM.OBJ.
4.4. P ove:,iv mje programa .
Preveden program nije u izvrSnom obliku, jer je potrebno izvrSiti povezivsjepojedinih programskih jedinica. Ovo se postiZe slededim komandama:
PDS > LINK I lcvatifitator lf, - teka I u telca lu teta[/1n11 ">'fli
PDS > LINK I kwlilitutor liFILE? tete f, tet<a 1/LIB l] 3
Kvolifilutor definie teke koje se formiraju u toku povezivanja. Navedene tekemoraju imeti opis sadr2aja OBJ, a ako se koristi biblioteka, tada iza odgovarajuCe
adrcse tcke trcba postaviti /LIB. Kvaliflearon mogu biti:
ftASK; telu1
/MAP[:reAn2 l
Kvalifikator TASK formira khh d izvr5nog programa, diji je opis sadrZaja TSK;ako sc ne navede, tada se formira teka sa imenom programa, koji se pwezuje iqisom sadrtaja TSK.
Kvalifikator MAP formira teha koja sadrii raspored i veze izmeduprogramskih jcdinica, sa opison sadrzaja MAP Ako * tekh ne navede tada se
izreltaj izdaje na Stampadu.
Pdncr IKomande
DS>LINKIASK : ZADATAK/
I FILE? PROGI,FOTULAZ,MAX,PATIZLAZ
povezuju prwedcne grogramc PROG l. OBJ, POTULM.OBJ, MAX.OBJ, POT
IZI-|.Z.ON i-forminju now toku ZADATAK.TSK kojs sadrZi ?vrlni program.
252
Primer 2
Komanda
PDS > LINK/MAP FED
lou:t.uj. program FED.OBJ, zdaje_zvestaj o povezivanju na Stampadu i formirazvrSniprogramsarmenomFED.TSK. J - r- '-"sr
Primer 3
Komande
PDS > LINK
FILE? RAD
povezuju program RAD.OBJ, i obrazuju izvrsni program RAD.TSK.
4.5.Izvr3avarje programa
Kada je FORTRAN-Iradunaru. #*;#;il;;i:"$Tr.[il1?.: povezan moze se izvrriti m
PDS ) RUN r.r ,elz
PDS > RIJN
FILE? tet@
?Or.*t:t predstavlja adresu programa, koji se Zeli izvrsiti, i mora imati opis sadrZrf
Primer
Komande
PDS >RIJN
FILE? ZADATAK
omoguCuju prelazak na izvrfuvanje programa ZADATAK.TSK.
4.6. Obrazoruje kornmdnc bke
. Jedan FORTRAN-orogram prolazi koz fazu prevottenja, povezivanja iwrevanja. Za svaku *;,[j*:.iil;.;ffiuje komande. Merrutim, prttestrranju prqgrama cesro treba vis p'ta prodi kroz navedene faze. Da bi rc
ili
t53
izbeglo navotlenje istih komandi viSe puta, moZe se od komandi obrazovatikomandna teka i komandonr
PDS) @ re&a
'preii na interpretacdu komandi u navedenoj komandnoj teci, diji opis sadrZajamora biti CMD.
Primer
Obrazujmo komandnu teku KOM.CMD na slededi nadin:
PDS >CREATE
FILE? KOM.CMD
READY FOR INPUT
FORTRAN PROGI
FORTRAN/LIST FOTI.JLA Z
FONf,RAN MAXFORTRAN POTITLAZLINK/TASK: ZADATAK
. PROGI. FOTULAZ, MAX POTIZLAZ
RIJN ZADATAK
CTRL/Z
tzI EXIT J
PDS >
Interpretacija wih komandi, u komandnoj teci KOM.CMD. omoguduje sekornandom'
-s>@KoMgde se podraatmwa opis sadrzaja CMD. Interpretacijom orih komandi vrSi seprevodenje programa PROG I , POTULAZ,MAX,POTIZI.AZ, djihovo povezivanjeu izvrlni program ZADATAK i prelazak na izvrgvanje ovako formiranogprograma. Pri prevotlenju programa POTULAZ dobija se i izveltaj o prevodenju.
5. UREDIVAC TET$TA-EDITOR
Program koji omoguduje uroitenje bilo kakvog tekstazovc se uredivaC tekstaili editor. Ovaj program se pciva komandcn
PDS> EDIIT I
{t
ffi
ffi
ffii
lffi
ffil
ififJ1
lri
{11
iil
rl|$'f:l'l'.t.
li,,'
t,
I
254
Ovaj p_rogran se koristi zr igravke FORTMN-programa u interakttunom reZimurada. Program ima dva osnovna reZima rada: re2im unolenja i rezim uredenja. UreZimu unolenja omogudeno je unoSenje novih redora u portojedu teku. kao iformiranje novih teka. U relimu uretlenja omogudene su izmene postojeie teke,
5.1. Retimirdacditon5.1.1. Rctiauro&njr
Kada korisnik pozove prqgram za uredenje teksta i navede novo ime teke,tada se editor dovodi u re2im unolenja. slededi dijalog prikazuje formiranje noveteke:
PDS ) EDIT re&a
I CREATTNC NEW F|LE IINPUT
tekstr EXIT
I Exlr ]PDS >
Unotenje ptaznog reda (tipka REruRN) do,odi editor u rcZim uredenja .Zato akooe tcti uncti red bcz grafiEkih tipografskih znakova, mora !e uneti jedan ili vi&mcduprostorr (blankova) u odgovaraju0i rcd. Po uno5enju pr8znog reda editorizdaje ' i ako korisnik tipka komandu EXIT editor zatvara iclu.
Primer
Sledcdi interaktivur rad korisnika vrti formiranje nry€ teke, pod imenomPROG I. FTN.
PDS > EDIT PROGI.FTN
I cREATT]tc NEW FILE I
tNPtn
C PR.OGRAMPROGI.
TNTEGERA(40),Y
CALL ULAZ(NA)y=MAX(N'i{)
CALLTZ,AZ(Y)
STOP
END*EXITI EXrr I
PDS >
255
5.1.2. Refim urcilenja
Kada korisnik Zeli vrtiti ispravke u postojedoj teci, tada editor dovodi ureZim uretlenja. Ovo se postize sledecim dijalogom:
PDS > EDIT
FILE? relu
. I n LINES READ IN I
IPACE r l
Ovde adresa tekeul<znr1e na teku koja se Zeli uredivati, anje broj uzetih redova ielcke. Zvetdtca (') na kraju dijaloga ukazuje da se editor nalazi u reZimu uretlenja,pa se odekuje intervencija korisnika. Ako u adresi teke nije navedena verzda,uzima sc teka sa najvedim brojem verzije.
Teka se sastoji od redova i pri radu editora.obra,uje se zona editora,kojamole da primi blok od 80 redova. Ovakav blok redova zove sc strana. Da bi sc
ukazalo na odretlen red uvodi se pokazivad reda. Na podetku rada editorapokaziva! ukazuje na prvi red u teci. Neke komande editora menjaju poloZajpokazivaca reda.
Primer
Pozovimo progam PROG I.FIN radi ispravki. Ovo se posti2e na slededi
nadin:
DS>EDIT
FILE? PROGI.FIN
[ 7 LINES READ rN IIPAGE I l
52. Komn& cditore
5.2.1. tlbrclvrijc novog tsksta
I z ] CIIHNGE] / nislal / nisko2 [ / |
Ova konianda pootavlje r&lu2 na mcsto niskel u prvon pojavljivanju zrstelu tckudcm redu. Alio je nislul grazna, tada * nisluT pctavljr na podetak reda.Ako je niska2 prazns,.tada sc nurtar izbacujc iz redr"Nro rrrlzlnijc naalens uI rkudatr redu izdejc re poruka NO MATCH. Cco broj n ukazujc de dc r komrnde:zvrlti n puta.
156
Irll./C IHANGE | /nisluy /niskaxl/]Kao komanda CHANCE samo Sto se funkcija obavlja u wim pojavljivanjima
niskel u tekuiem redu, a ne sarno u prvom pojavljivanju kao 5to se to radi ukomandi C-HANGE. Ceo broj n ukazuje da ie se komanda primeniti na tekudi red islededih n-l redova.
t INSERT l[nistta IA*o je niska navedena, tada ubacuje navedenu nisku kao novi red koji sledi
iza tekudeg reda. Pokazivad postavlja u red kojije ubaeen.Ako nislct nije navedena editor.prelazi u reZim uno5enja.
AIDD] nril<a
Navedena niska se dopizuje na kraj tekuCeg reda. Pokazivad reda ostaje utekuiem redu.
l*niskaIma istu funkciju kao komanda ADD, osim Sto se novi tekudi red i izdaje.
R[EfiPE] [nrsea]
Izbacuje tekudi red i na njegovo mesto postavlja navedenu nisku. Pokazivadreda ostaje u tekudem redu.
Ako nistca nije navedina, tada se izbaorje tekudi r€d, a pokazivad reda senalazi u slede6em redu, u odnosu na izbaden red.
5.2.2. Izbacivmje teksta
D [ELETE] [a]
Ako je n)O izbacuje se tekudi red i n-l slededi red, apokaziva! s€ postav[ana red koji sledi iza zadnjeg izbadenog reda.
Ako je n(0, tada Ce n redova ispred teku6eg reda biti hbadeno. pokazivad.reda ne menja polozaj.
Ako n nde navedeno, tada de teku6i red biti izbaden i pokazivaC redapostavljbn na sledeei red.
KILLZatvan ulaznu teku, bri$e izlaznu teku editoh i vrada sistem u pN.
5.2.3. Pretrativarje teksta
[r]F INDJ [nrta]Pretratuje redov€, pocev od reda koji dedi iza tekudeg reda, i trati a-ti red
koji podinje sa navedenom niskom, postavlja pokhwaC u naiten rod i izdajesadrLaj reda. Ako nr'slra nije navedena. pokazivad se postavlja na slede6i red.
257
Lt lsrlIzdaje we redove, na terminalu, podev od tekudeg reda. pbde izvrlenogizdavanjapokazivae reda nalazi se na poditku bloka.
_ Komanda CTRL/O obustavlja izdavanje, a ponorrnim pritiskon CTRL/Oizdavanje se nastavlja.
I}Ima isto dejstvo kao komanda LIST, samo ito sp izdavanje vrii na itampadu.
[n] L [ocATEf [zrs&a]Postavlja pokazivad,reda u red, u kojem je naiten z-ti dogailaj niske, podevod rcda koji sledi iza tekudeg reda.Akci niska nije navedena pokazivad reda se postavlja u slededi red.
[n] PL [OCATEI[nistul
. rma istu funkciju kao komanda LocATE, samo sto prcuaarje s'e broko'eteke. r.vs.sJw rrs uruAv..
5.2.4. Rd sa pokazivadan reda
N [ExT] [tr ]Postavua pokun&, reda u z.ti red u odnosu na tekudi red, i to unaprcd zan)O, unazad za n(0,Ako n nije navedeno postavtja pokaz iva0 na slededi red.
ry Ir1lma istu funkciju kao korn-anda NEXT, sarno tto izdaje novi tekudi red.Pritisak na rasrer RETURN ima istu li,"k;idk- $ r,-, pi-iiul'ii.t"r1o,
ESC ima istri funkciju kao NP-I.
P IRINTI [r]Izdajc tckudi red i n-r srededih redora; ako n nije navedenobdaje samo.teku.ired. Pokazivad je postav[cn na zrdnji a,O"U LO.
-- --"-
TOF
Upisujc tekudi btok u teku ipokazivaC postavlja naprvi red tcke.
5.2.5. Unoenjc novog blokrRDN [Ewl [z]
Unosi n-ti blok tcke za iepravtja4ie u zonu cditora, i pokazivrd postavlja uprvi red bldra.Ako z nijo navedeno, trda sc.tpku6i brok upinrjc u tcku, a stededi brok unoriu zonu cditon. pokaziva! r pchvfa u pnireOifoL.
258
5.2.6. kaj rada sa cditorom
EX [tT] [reka]Zatvua teku i vrada sistem u PDS. Isti efekat ima i komanda sa tastature
CTRL/2.ltko je teka navedena, tada izlazna teka dobija navedeno ime.
6. NEKE OSOBINE TMPLEMENTTRANOG FORTRAN-JEZIIG
Ovde 6e biti objasnjc4c n€kc T€cificnosti irplcm€ntacije FORTRAN-lrzikaza radunare PDP-I l. BiCe pomenute silmo one osobine koje sc ralikuju u odnosrna FORTRAN-jezik opisan u knjizi.
6.1. Priprema programa
Kada se pregrant unosi preko tastature terminala, vaie ista pravila orasporedu naredbe unutar jednog reda, kao i za rasporcd narcdbe na kartici.Medutim, razlike koje poctoj€'treba da olaklaju interaktivnu pripremu programa.
To su sledede razlike:l. Ako programski rcd ne sadrZi obeleZje, pritiskom na taster TAB dolazi se
u 7. poziciju zaunosenje naredbe.2. Akg programski red sadr2i obeleZje, pritiskom na taster TAB, poslc
unetog obeleZja, dolazi se na 7. poziciju.3. Ako se posle pritiska tastera TAB unese sirnbol koji nije slobo, tada se
ovakav simbol postavlja u 6. poziciju i sluZi za oznaku nastavka programskog reda.4. Progranrski red koji u prvoj poziciji sadr2i dovo D mote biti, Pri
prevottenju, uzet kao konrentar, ili prcveden kao naredba. Ovo se rcguli& opcijomDE u kvalifikatoru SMTCH.
5. Ako rcd sadrZi slovo C u rpvoj poziciji, onda je to komentar. Medutim,komentar se mo2o navoditi u wakom prograrrkom rcdu stim lto se iryrcdkqnontara narrodi znak ruvika (!).
62. ElenortiJczilre
l. Cclobrojne konsturtc rnoraju biti u intervalu | -327 68; 327 67 l.2. Rcdna konrtant!, r&lidits od nule, mora biti po rpsolutnoj vrednosti u
intcrvalu [0,14x l(Irt;0,17 x lOt ].3. Standardna drdina celobrojne promcnljive jc 2 podrcgistra (INTEGER.
2).4. Porcd logiekih opcracija .Nm., .AND. i .OR. uvcdcne sr i opcncije
.EQV. i XoR.i<bfininne na sledcdi nadin:
259
X Y X.EQV.Y X.XOR.Y
0
0
I
I
0
I
0
I
I
0
0
I
0
I
I
0
6.3. Nnedbe FORTRANlzika
5.3.1. Nardba ulgn i lg,laza
l. Ako se drugadije ne defini$, tada je broj 5 broj logidke jedinice unaredbi READ i WRm za rad sa terminalqn, a broj 6 pridruZen je Stampadu.
2. Opcije END i ERR mogu se koristiti u naredbama READ i WRITE.3. U listama naredbi izlaza WRITE, TYPE i PRINT dozvoljeni zu i izrazi.4. Ako je duZina podatka, u ulaznom slogu, kraia od duZine rezewisanog
polja, tada se podaci mogu razdvajati zuezima O. Ovo se moZe primeniti zapodatke dija se polja opisuju sa I, O, F, E, D, G i L, ali ne mohe za opise A i H.Tako, naredba
READ (5,10) N, x, Yl0 FORMAT (16,2F8.2)
za ulazni slog
30. t.5.-2.04
dodcljuje vrednosti promenljivim i to: N=30, X=l,5 i Y=-L.M.5. U FORMATaaredbi ne moZe se koristiti qis Z, ali zaro posloli opis O,
koji ima op3ti oblik
nOkgdd je & duZina polja, a n broj ponavljanja opisa. SadrZaj polja, na ulazu, je oktalnibroj, koji ne moZc biti vedi & 177777, i promenljiva u listi mora biti celobrcjna.Ako jc polje pridndeno celobrojnoj prunenljivoj u naredbi izlazaradase oktalnavrednost pranenljive bdajc u polju desno poravnata.
6. Ako se Zbli odrediti duZina ulanqg sloga ili dela ulaznog doga, moZe sena poCetak ili unutar FORMAT-narcdbe potaviti slovo Q, a u listi, naodgovarajudem mestu celobrojna pronenljiva, kojoj Ce se dodeliti cco broj kojipredstavlja, odgovarajudu duiinu ulaznog sloga.
7. Posebno korisna mogudnost, za pisanje interaktivnih programa, jestonavotlenjc znaka $ (znak za dolar), kao pwog sinrbola u izlsnqn dogu Ovim se
spreCna prelazak u naf,i red, posle izdavurja izlunog sloga na terminalu.8. Za rad sa temrinalqn postoj€ poscbne narcdbe uleza i izlea Trko, za
ulaz sa t$tature tcrminala motc sc koristiti narcdba
260
ACCEYI i,lista
Sto je ekvivalentno sa naredbom
READ (i,il listo
' gde je i broj logidke jedinice pridruiene terminalu.
Sliino za izlaz na.terminal postc4'i naredba
TYPE i [, tista ISto je ekviva.lentno sa naredbom
WRITE ( i, j l|ista I
gde je i broj logidke jedinice pridruZene terminalu.9. Posebna naredba omoguCuje izlaz na Stampad To,je naredba.
PRINTi[,lrira]Sto je ekviva.lentno sa naredbom
WKITE / i,j )llistalgde je i broj logr'dke jedinice.pridruZen Stampadu.
10. Naredba DEFINE FILE moZe se pisati samo u obtiku
If,FINE FILE g( s,d,U,p )
Primer
-, . . ^ ! _tl"drdern programu za unete logidke veliCine X i y odroiluje se X.EeV y iX.XOR.Y:
LCIIICAL*t X. ywRtTE (5, l0) !KOMENTAR SE MOZEPTSATI IZA USKLTCNIKA,
l0 FORMAT('$ UNESIEDVEITGTCKEVREDNOSTI:')READ (5,20) N, X, YFORMAT ( Q,2L5)wRrTE (5,30) X.Y.NFORMAT (' ULAZNE VELICINE Su:
"2L5
/I' DUZINA ULAAnOC SLOGA JE:',I5)TYPE 40, X, Y. X. EQV.Y,X. XOR. YrcRMAT ( x="ll/' Y="L1/' X.EQV.Y="lt/' XXOR.y="L{)sIoPEND
20
D
D30
D
N
26t
Izvrlavanjem ovog programa dobija se sle&di izvettaj na terminalu.
UNESIE DVE LOGICKE VREDT€STI: F, FT.,LAZNE VELICINE SU: F F
DUZNA I.'I.AZNOG SI.OGA JE: 3
X=FY=fX.EQVY=TX.XOR.Y=F
Ovaj program ilustruje:l. Komentar s€ moZe pisati u istqn redr! sa naredbon, ali se navodi iza
znaka usklika (!),2. Komsrdni ripbol u izlu;nqn slogu moZe biti $,3. Broj logidl@ jedinice 5 odnosi ce na terminal,4. himona opisa Q uFORMAT.naredbi,5. Naredbr TYPEje nuedbtzlazana terminal,6. Korii&nt logidkih operacija.EQV. i XOR.7. U listi naredbe izlaza mogu sc navoditi izrazi.
532. Nelcdbr plurcn$ivog bczurlovnog prcla*a
- - U ovoj naredbi dcvoli:no je bctaviti listu, tako da narodba ima opltioblik:
GO TO i[(isra)]
fJJ. f{rs{gs cikhrrs
- Narcdba cikbsa (DO) moZe imati celobrojne ?raze, ,namosto podetnevrednooti, gornjc granicc i priraltaja indekra. hiralt8t indeksa *oz.'irn.ti-inqativno vrcdnocti.
6.3.4. Xovcrzijr po&tdoPodaci sc nelazo u mcmoriji u inGmqn kodu, a pri komunikrciji sq
fS.-"T ury9"jF1 podaci nr-u ASCII-kodu. Mgguda je trirverzgr poa-ffi ijcdnog u drugi kod. Tako, nrredba
XIIICODE (n,i,p\ tisa
konvcrtuje podstkc iz intcmog kodr u ASCII.kod, gdc ar
n
i- colobrcjni izraz, koji prcdstrvtja broj ASCII-simbola,
koji dc rc dobiti konvoniio,- obcldjc FORMAToalcdbe ili ime niua toii !1drrt
qbcpo!r,
262
Konverzija podataka iz ASCII-koda u intemi kod ostvaruje se naredbom
lista
gde su
n
tp
Itsta
kincr
- ime niza, koji de primiti konvertovane podatke u
ASCII-kodu,
- qpisak prornenljivih, nizova i/ili elemenata nizova, Cijevrednosti 6e biti konvertdane iz intemog koda uASCII-kod.
DECODE (n,j,p) lista
- celobrojri izraz, koii predstavlja broj ASCII-simbola,koji Ce biti konvertovani,
- obeletje FORMAT-naredbe, ili ime nLa koji sadrliopise polja,
- ime niza, koji sadrii ASCII+imbole, koji de bitikonvertofuri u intemi kod,
- spisak promenljivih, nizwa i/ili elemenata nizovakojima de se dodeliti vredncti u intemqn kodu.
U slededem programu je nrndbon DECODE dodeljena vrednost promenlji-voj N; ova vEdnost je u intcmun kodu, tako da se moZe koristiti zaizra0unavanja, tto ie ilustrovano mnoZenjem ove vrednosti sa 2, a zatim je rezultat,naredban ENCODE, transformisan u ASClI.kod.
C PROGRAM ILUSTRUJE DECODE I ENODE.DATA X /, 12Y,. /DECODE(4, lox ) N
'O FI)RMAT(I4)
l;=2eN t
F TCODE(4,10,Y) N
TYPE20,Y
20 FORMAT (' REZT LTAT JE ' ,iA ;.$oPEND
Lvriavarjem ovog prograrr dobija se izvclt{:
REZTJLTAT '82468
Ovrj prcdsn ibrtn$r primenu nucdbi DECODE i ENCQDE.
2ot
5.4. Funkcijdd posrogram
6.4. l. C*nedsmjc sbdajnih brojcva.
Skupu elementamih funkcija dodat je potprogram za generisanje pseu-
do-sludajnih brdeva. To je funkcijski potprogam ipoziva se sa
RAN ( t,i)
gde su f i y celobrojne promenljive. Rezultat rada funkciskog potproBrama jesludajan broj uniformne raspodele nad intervalom (0,1). Menjaju6i poeeme
vrcdnosti arguminata (ij), mogu se generisati rezlidite sekvence sludajnih brojwa.
Primer
$ededi program. itustruje primenu funkcijskog potprograma RAN:
DIMENSTON Y(4)70 TYPE IO
l0 FORMAT('S POCETNE VREDNOSTT:')
ACCEPT 20, I, J. N
?a F0RI{AT (3I8)
rF ( N. LT.0) SrOP
PRINT 50,I, J60 FORMAT( /' ZA rcCETNE VREDNOsTti' .t2,',',t2,' DOBUA SE:')
DO30K=l,N+lDOutOL= l3
'10 Y(L) = RAN(1, J)
30 PRINT 50, Y50 FORMAT{ ",4F10.6;
GOTO 70
END
Izrrbvo!:m wogprogiunamodo se na lturpafu dobiti rlstledi izveltaj:
264
ZA POCETNEVREDNOSTT:0, 0 DOBIJA SE:
0.0000310.012360o.0020420.838541o.&85450.393595
0.0003360.M69670.4061t6o.ut1t30.4321300.725453
ZA POCETNE VREDNOSTI: 3, 2 DOBIJA SE:
0.000t83 0.0008240.0444% 0.1557320.@6802 0.8224400.r zosor 0.4761340990&g 0.1069860.826873 0.418881
0.001 190 0.0041 200.1s5732 0.5r t 6900.419702 0.8631720.234E93 0.6339380.386418 0.4293340.468534 0.282129
0.0032e60.5339390.8734t60.3222910.72&770.071433
0.0r40080.6685550401 7100.6895960.0982430475966
6.42 Logj[ke operscije nad rcdimaSadrzaj dva podregistra
1roz: se posmatrati kao binarna red. Nad ovakvimbinarnim redima mogu se rzv,oajt.Joerji. op.,"&. i to nal-sriioufr;r.;ffi"bitovima. Ovo je omogudeno slededim-fu*"i'rt_ i"rprogramima:
IOR(n, n)
Logleka llloperacija nad velidinama m i n rr:etimkao binarne re0i,
IAND (m, z)
Logidka loperacija nad velicinama m i n uzetikao binarne redi,
NOT(rn)
Logidka NE-operacija nad velidinan m uzetom kao binarna red,
IEOR (rz,z)
."0i. bgdk" ekskluzivna lll-operacija nad velidinama m i n vzetimkao binarne
9 *i'' ovim potprogamima argumenti m i n sr cerobrqine promenljive'ielementi celobrojnih nizova du2inJd".poOregirt a. *
6.4.3. Logidko pcnernje
_ Funkcijski po@rosram .kqi_i-omogufuje logidko pomeranje biname redi(sadrZd dva podregistra),poava se sil
ISIIFT (m,r) Program zr unctc olddnc broJcvc l7 i 7 ddc alcdcli Xvcttti:
265
gde su
m
n
- cclobrtina promenljiva ili element celobrojnog niza
duZinc dva podrcgistra,
- defini5e vntu i broj Pomeranja veltine m i to na
slededi naCin:n)0, puneranje levo,n(0, pcncranje desno,
n=0, bez pomeranja.Apsolutna vrednost z odreiluje broj panerutja.
' N='. 06l' IoR(M,N)='. o6l' IAI{D (M, N) = ' , 06l' tfor(M) =' , 9,6/
' IEOR(M,N)=' . 9,6/
' ISI{FT (M, N) = ' . 9,6/
Primer
Slededi progam unosi oktalne brojeve M i N; i nad njihorim vrednostima,
uietim kao binarne reCi, vrSi logidke opcraciie i logiitko pqncrsnje i ?dajc
rearltate na terminalu:
40 TYPE IO
t0 FORMAT(' $ tNETIDVAOKTALNABROJA:')ACCEPT ]0, M, N
20 FORMAT (2O8)
ll =lOR(M.N)12 = IAND (M, N)
13 = tCIT(M)14 = IEOR(M, N)
15 = ISHFT (M, N)
TYPE 30, M, N, I I , 12, 13, 14, 15
30 FORMAT('M=',06lI2
3
4
5
6
CO TO,t0
END
)66
UNETI DvA OKTALNA BROJA: l7J' lf= 17
N-7IOR (M, N) = t7
IAND(M,N)= 7
tlOT (M) = 1777(A
IF0R (M, N) = 3600
UNETI DVA OKTALNA BROJA: CTRL/C
TASK SUSPENDED
DS>ABORT. I I : 30 : 23 SIZE: 5K CPU: 0.06
tDs>
Prograrn sadr2i.ciklus bez blaznog kriterijuma. Korisnik moZe izadi b ciklusa(programa) tipkanjem.CTRl/C, posle Ccga sistem javlja poruku da je zadatakprivrcmeno iskljrgen ([ASK SUSPENDFD) i dolazi u PDS. Korisnik, ako Zeli daprckne rad po programu tipka ABORT, r)ime definitivno iskljuduje program,'aako Zeli da se vrati u progr.am tipka CONTINUE.
6.5. Biblioteka potprogrdna
55.1. LogiCkc jedinie i teke
CALL ASSIGN (n, telu, dutina)Argumenti:
- ceo broj, cclobrojna prcimenljiva ili celobrojni iraz,- azbudni podatak, koji sadrZi naiv ureilda i ime teke,- duZina azbucnog podatka, kojijc naveden kao argum-
ent teka,
Funkcija: Navedenoj recipridruZuje sc broj logilkc jcdinicc n.Potprogram se mora navcsti pre naredbi vlaza, izlu,a i DEFINE FILE, kojc
koriste narredcn broj logidke jcdinicc.
CALLCI,6E(n)Argumcnt:
n - coo brc{, cclobrojna promcnljiva ili celobrojni braz.
Funkcija; Zatv,ara teku nr nryedcnoj logiCkoj jedinidf
nteludutiw .
261
6.5.2. Datuni i vreme
CALL DATE (arz)
Argument: niz -ime niza,, iu"nt.ij., u pnih g podregistara niza postavlja se tekuii datum, u obliku
dd-mmm-ggde srr r^lddan u mesecu, mmm-naziv meseca' gg-zadnje dve cifre
godine.
CAIL IDATE (t;,e)
Argumenti; i,y,,t'celobrojne promenljive,Funkcija: Promenljiva i dobija vrednost rednog brda meseca u godini,T dana
u toku meseca, a k zadnie dve cifre godine od tekudeg datuma.
sEcNrF (tArgument: i-ceo broj ili celobrojna promenljiva,
Funkcija: Vrednost funkcijskog potPrograma je broj sekundi od ^i
- tog
trenutka do teku&g vrem€na, pri demu se porod uzima kao vrcdnost 0. Tac-
nost izmerenog vrcnr€na je 0,02 sekunde.
CALLTIME(p)
drgumentp-ime pronrenljive ili niza,Funkcija: Tekude vreme kao zbudni podatak u obliku
hh:mm:ss
gde zu ftIr{as, rnnrminuti, ss-sekundi, dodeljuje sc aryumentu potPrograma.
6.5.3. Kraj izvtlwoja prognrta
CALLE)OT
Funkcija: To je potprogram koji ima ckvivalentnu funkcijl kao naredba
STOP, ooim lto ne izdaje poruku. Ovaj PoQrogam zatvara sltc teke otvorene u
programu i prekida izvrtavutje programa.
Primer
Sastavidemo prograrn u kome demo koristiti p otptogllrne za datum i vrcme,
kao i poprograme zq rad'sa imenovanim datotekama u FORTRAN-prgEamu' --.i.to, it.a.Ci program odrotluje datum (D), redni broj mcseca Q), duta (J) i
godine (Kj, vreme-(T), kao i vreme u sekundama u lreoutku poietka.radn
ir"Sr-itsf i i vte.i iaAa poFrograma (S2).Ovako odrodene velidine upisuje, kao
4 sloga, u datotcku DATUM.DAT:
268
LOGICALTI D(e),T(8) '
Sl = SECNDS (0.)CALL ASSIGI.i( i.'onruu.nAT' ,9)
DEFINE FILE I (4,5, U,L)
CALL DATE(D)
CALL IDATE(I, J, K)
CALL TIME (T)52=SECMS(!l)L= IwRtTE ( I' L) Sl , 52
WRITE(I,L) D
WRITE(l'L) I, J, K
WRITE(l'L) T
CALL CK)SE (l)STOP
,KRA' UPISA UDATOTEKU',
END
Slededi program upisane slogove, u datoteku DATUM'
terminalu:toGICAL*l D(e),T(8)
CALL ASSIGN ( I, ' DATUM.DAT, ,9)
. DEF',INE FILE l(4'5' U' L)
L=lREAD (l' L) Sl, 52
READ (I, L) D
READ (I, L) I, J, K
READ (I' L) T
TYPE IO, SI, 52, D,I, J' K' T
0 FoRMAT(' sl =',F14,71
I ' s2=' ,F8.2/
2 ' D=' ,9Al/3 .'1=',14/4 ' J=',A/5 ' K=' ,l4l6 ' T=',8A1)
CALL CTOSE(I) I
CALL EXT I
END
DAT, cita i izdaje na
\
'%9
Izvrlavanjem ovog Programa mogu so dobiti slededi rcatltsti na terminalu:
Sl = 0,4189920Et05
52 = 0.08
D = 24-FEB-79
l= 2
J= 24
l(= 79
T= ll:38:19
Tumacedi ore rcatltste vidimo da od purodi do vrcmena I I Crsova, 38 minuta iis;k""dipi"itk". lresg sekundi (SO' a da deo Plograrna izmodu odrotlivrnja
St i Sl traj; 0.08 sckundi (S3). Ostali rczultati su oCigledni
LITERATURA.
[]. PDP-II FORTRAN Language Referencc ManualI I *LFLRA-C-D
l2 I . t AS/RSX-I I FORTRAN IV User's Guide
-LMFUA-C-D
Order No.
Order No.
DEC_.
DEC-| r-
[3]. tAS EditinS Utilities, Reference Manual Order\o. DEC-I I-OIEUA-A-D
t4l. IAS User's Guide Order No. DEC-II-OIUGA-C-D Digital Eguipment
Corporation, Maynard, Massachusetts 01754
[5]. PDP-I I /70 Procesor Handbook, DEC, 1976.
18
4.2,2. Yrsta
vrsta promenljive odredjuje se prema tome khkva brojna vreclnost semoZe dodeliti promenljivoj, Svaka promenljiva mora biti delinisana po vrs_ti. To znadi da promenljlva dobija ili celobrojne vrednosti ili melovitebrojne vrednosti (brojeve u pokretnom zarezu). Ako promenljiva uzima sa_mo celobrojne vrednoatl zove se cel0broJna promenljiva, a ako uzirna vre-dnosti meSovitih brojeva zove se realna promenljiva.
Vrsta promenljive, po unutra5njoj konvenciji FORTRAN_jezika, defi_n15e se na slededl nadin:
- ako ime promenljlve podinje slovom I, J, K, L, M ili N, to je ce_lobrojna promenljiva,
- ako ime promenljlve ne poCinje jednim od navedenih slova, to je rc_alna promenljiva.
Svakoj promenljivoj u FORTRAN_programu pre lzvrSenja programana radurteru, dodeljuje se jedan registar u koJem /:e se duvati brojna vred_nost promenljive. Ako je promenljiva celobrojna njena brojna vrednost 6eee reglstrovati u odgovarajudem reglstru kao ceo broj. Ako je promenljivarealna njena brojna vrednost 6e biti registrovana kao broj u pokretnom za-
'.ezu.
Prlmeri
a) Celobrojne promenljive po unutraSnjoj konvenciji
IJ
I19
IAT]
I\'ASA
NETO
b) Realne promenljive po unutralnjoj konvenciji
I
i)
iii
A
R
prornenljive po unutraSnjoj konvenciji
l9
CENA
BRUTO
c1846
4. 3. Aritmetidki izraz
' Aritmetidki izraz dine jedan argument ili vi5e argumenata medju so-
bom razdvojenih znacima aritmetidkih operacija. Argument aritmetidkog iz-raza je konstanta ili promenljiva.
4. 3. l. Afitmetidke operacije
AritmetiEke operacije su:
+ sabiranje,
- oduzimanje,
't mnozenje,
/ deljenje i** stepenovanje.
Aritmetieki izraz se pi5e kao niz, koji se sastoji od naizmeni-nog
smenjivanja argumenata i aritmetidkih operacija, pri demu:
- niz podinje sa argumentom ili znakom minus (-), koji oznaiava pro-
menu znaka prvom argumentu, i- niz se zavrdava argumentom.
Vrednost aritmetiekog izraza izrattnava se sleva na desno, pri demu
vaZl prioritet aritmetidkih operacija, prikazan u tabeli 4.3. l, gde je sa Ioznaden najvi5i prioritet, a sa pz operacija promene znaka argumentu.
Tabela 4.3- I
Prlorltet ArltnetlEka operacija Izvr5ava se
I s'rPZ sdesna na levo
2 sleva na desno
3 +r- sleva na desno