Aleksandar S. Stamatovic

University professor, Ph.D. and M.Sc. In Physics,

B.Sc. In Physical Chemistry at University of Belgrade, Yugoslavia.

Contents

 Work Information

 Hot List

 Contact Information

 Current Projects

 Biographical Information

 Personal Interests

Text related to teaching subjects

( Sorry, Serbian only!)

 

Work Information

Job title

Full Professor at Faculty of Physics, University of Belgrade, Yugoslavia.

Full Professor (part time) at Faculty of Physical Chemistry, University of Belgrade, Yugoslavia.

Honorary Professor of Ion Physics in Institute for Ion Physics, Faculty of Natural Sciences at Leopold Franzens Universitaet, Innsbruck, Austria.

Key responsibilities

Responsible for the following subjects:

Department of Physics: Electronics, Automation.

Department of Meteorology: Meteorological Measurements, Meteorological Information.

Faculty of Physical Chemistry: Application of Computers in Physical Chemistry,

Instrumental Electronics.

Department or workgroup

Department of Physics: Chair of Metrology and Applied Physics

Department of Meteorology: Chair of General Meteorology

Institute for Ion Physics

Back to top

Hot List

 Insert a hyperlink

 Insert a hyperlink

 Insert a hyperlink

Back to top

Contact Information

Electronic mail address

skela@ff.bg.ac.yu skela@mail.ff.bg.ac.yu skela@rudjer.ff.bg.ac.yu

alekstam@lotos.ffh.bg.ac.yu

Aleksandar.Stamatovic@uibk.ac.at

Web address

Type some text.

Office phone

xx381-11-630-152 extension 111 or xx381-11-3282-111 extension 819

Back to top

Current Projects

Electron / molecule / cluster interaction

Contrails

List of some publication in the period 1996-2000.

1

Title: Kinetic energy release in electron-induced decay reactions of molecular ions: C/sub 3/H/sub 8//sup +/ and C/sub 3/H/sub 7//sup +/

Author: Matt-S; Echt-O; Stamatovic-A; Mark-TD

Source: Journal-of-Chemical-Physics. vol.113, no.2; 8 July 2000; p.616-20

Publication Year: 2000

2

Title: Electron attachment to nitric oxide clusters and electron impact ionization of carbon monoxide clusters

Author: Senn-G; Muigg-D; Denifl-G; Stamatovic-A; Scheier-P; Mark-TDSource: European-Physical-Journal-D. vol.9, no.1-4; Dec. 1999; p.159-62

Publication Year: 1999

3

Title: Spontaneous and induced dissociation of singly and multiply charged fullerene ions

Author: Biasioli-F; Fiegele-T; Mair-C; Senn-G; Matt-S; David-R; Sonderegger-M; Stamatovic-A; Scheier-P; Mark-TD

Source: International-Journal-of-Mass-Spectrometry. vol.192; 27 Sept. 1999; p.267-80

Publication Year: 1999

4

Title: Electron attachment to oxygen clusters studied with high energy resolution

Author: Matejcik-S; Stampfli-P; Stamatovic-A; Scheier-P; Mark-TD

Source: Journal-of-Chemical-Physics. vol.111, no.8; 22 Aug. 1999; p.3548-58

Publication Year: 1999

5

Title: Low energy dissociative electron attachment to ozone

Author: Senn-G; Skalny-JD; Stamatovic-A; Mason-NJ; Scheier-P; Mark-TD

Source: Physical-Review-Letters. vol.82, no.25; 21 June 1999; p.5028-31

Publication Year: 1999

6

Title: Electron impact ionization of neutral and ionized fullerenes: ionization cross-sections and kinetic energy release

Author: Matt-S; Scheier-P; Stamatovic-A; Deutsch-H; Becker-K; Mark-TD

Source: Philosophical-Transactions-of-the-Royal-Society-London,-Series-A-(Mathematical,-Physical-and-Engineering-Sciences). vol.357, no.1755; 15 May 1999; p.1201-27

Publication Year: 1999

7

Title: Dissociative electron attachment to CF/sub 2/Cl/sub 2/

Author: Denifl-G; Muigg-D; Walker-I; Cicman-P; Matejcik-S; Skalny-JD; Stamatovic-A; Mark-TD

Source: Czechoslovak-Journal-of-Physics. vol.49, no.3; March 1999; p.383-92

Publication Year: 1999

8

Title: Experimental and theoretical determination of electron ionization cross sections for atoms, molecules and molecular ions relevant to fusion edge plasmas

Author: Matt-S; Muigg-D; Denifl-G; Sonderegger-M; Fiegele-T; David-R; Grill-V; Scheier-P; Mark-TD; Deutsch-H; Becker-K; Stamatovic-A

Source: Czechoslovak-Journal-of-Physics. vol.48, suppl., pt.S2; 1998; p.333-8

Publication Year: 1998

9

Title: High-resolution electron ionization study of CO, (CO)/sub 2/ and (CO)/sub 3/: appearance energies and bond dissociation energies

Author: Muigg-D; Denifl-G; Stamatovic-A; Echt-O; Mark-TD

Source: Chemical-Physics. vol.239, no.1-3; 15 Dec. 1998; p.409-16

Publication Year: 1998

10

Title: Dissociative electron attachment to CO/sub 2/

Author: Cicman-P; Senn-G; Denifl-G; Muigg-D; Skalny-JD; Lukac-P; Stamatovic-A; Mark-TD

Source: Czechoslovak-Journal-of-Physics. vol.48, no.10; Oct. 1998; p.1135-45

Publication Year: 1998

11

Title: Dissociative electron attachment to CO and NO: the O/sup -/ production threshold revisited

Author: Denifl-G; Muigg-D; Stamatovic-A; Mark-TD

Source: Chemical-Physics-Letters. vol.288, no.1; 15 May 1998; p.105-10

Publication Year: 1998

12

Title: Formation of NO/sup -/ following electron attachment to NO clusters

Author: Yannan-Chu; Senn-G; Matejcik-S; Scheier-P; Stampfli-P; Stamatovic-A; Illenberger-E; Mark-TD

Source: Chemical-Physics-Letters. vol.289, no.5-6; 19 June 1998; p.521-6

Publication Year: 1998

13

Title: Dissociative electron attachment to NO molecules and NO clusters

Author: Yannan-Chu; Senn-G; Scheier-P; Stamatovic-A; Mark-TD; Bruning-F; Matejcik-S; Illenberger-E

Source: Physical-Review-A-(Atomic,-Molecular,-and-Optical-Physics). vol.57, no.2; Feb. 1998; p.R697-700

Publication Year: 1998

14

Title: Dissociative electron attachment cross section to CHCl/sub 3/, using a high resolution crossed beams technique

Author: Matejeik-S; Senn-G; Scheier-P; Kiendler-A; Stamatovic-A; Mark-TD

Source: Journal-of-Chemical-Physics. vol.107, no.21; 1 Dec. 1997; p.8955-62

Publication Year: 1997

15

Title: Electron attachment to oxygen and oxygen/ozone clusters studied in a high-resolution crossed beams experiment

Author: Matejcik-S; Kiendler-A; Stampfli-P; Skalny-JD; Stamatovic-A; Maerk-TD

Source: Zeitschrift-fur-Physik-D-(Atoms,-Molecules-and-Clusters). vol.40, no.1-4; May 1997; p.70-4

Publication Year: 1997

16

Title: Electron impact ionization and dissociation of neutral and charged fullerenes

Author: Matt-S; Echt-O; Rauth-T; Duenser-B; Lezius-M; Stamatovic-A; Scheier-P; Maerk-TD

Source: Zeitschrift-fur-Physik-D-(Atoms,-Molecules-and-Clusters). vol.40, no.1-4; May 1997; p.389-94

Publication Year: 1997

17

Title: Electron attachment to molecules and clusters of atmospheric relevance: oxygen and ozone

Author: Matejcik-S; Kiendler-A; Cicman-P; Skalny-J; Stampfli-P; Illenberger-E; Chu-Y; Stamatovic-A; Mark-TD

Source: Plasma-Sources,-Science-and-Technology. vol.6, no.2; May 1997; p.140-6

Publication Year: 1997

18

Title: Electron attachment to XCN (X=Br, Cl). Competition between X/sup -/ and CN/sup $/formation

Author: Bruning-F; Hahndorf-I; Stamatovic-A; Illenberger-E

Source: Journal-of-Physical-Chemistry. vol.100, no.51; 19 Dec. 1996; p.19740-6

Publication Year: 1996

19

Title: Dissociative electron attachment to CF/sub 2/Cl/sub 2/ using a high-resolution crossed-beams technique

Author: Kiendler-A; Matejcik-S; Skalny-JD; Stamatovic-A; Mark-TD

Source: Journal-of-Physics-B-(Atomic,-Molecular-and-Optical-Physics). vol.29, no.24; 28 Dec. 1996; p.6217-25

Publication Year: 1996

20

Title: Low-energy electron attachment to mixed ozone/oxygen clusters

Author: Matejcik-S; Cicman-P; Kiendler-A; Skalny-JD; Illenberger-E; Stamatovic-A; Mark-TD

Source: Chemical-Physics-Letters. vol.261, no.4-5; 25 Oct. 1996; p.437-42

Publication Year: 1996

21

TITLE (ENGLISH): Electron attachment to oxygen, ozone and other compounds of atmospheric relevance as studied with ultra-high energy resolution

AUTHOR(S): Maerk,-T.D.; Matejcik,-S.; Kiendler,-A.; Cicman,-P.; Senn,-G.; Skalny,-J.; Stampfli,-P.; Illenberger,-E.; Chu,-Y.; Stamatovic,-A. (Institut fuer Ionenphysisk, Leopold Franzens Universitaet, Technikerstr. 25, A-60210 Innsbruck (Austria)

SOURCE (BIBLIOGRAPHIC CITATION): Open Society Fund, Bratislava (Slovakia) Plasma and Ecology. Basic Problems Bratislava (Slovakia) Open Society Fund Aug 1996 208 p. p. 21-24 In the frame of ESCAMPIG XIII

REPORT/PATENT NUMBERS: INIS-SK--99-037 (INISSK99037)

PUBLICATION YEAR: 1996

22

TITLE (ENGLISH): Dissociative electron attachment to CF sub 2 Cl sub 2 using a high-resolution crossed-beams technique.

AUTHOR(S): Kiendler,-A.; Matejcik,-S.; Skalny,-J.D.; Stamatovic,-A.; Maerk,-T.D. (Innsbruck Univ. (Austria). Inst. fuer Ionenphysik)

SOURCE (BIBLIOGRAPHIC CITATION): Journal-of-Physics.-B,-Atomic,-Molecular-and-Optical-Physics. (2 Dec 1996). v. 29(24). p. 6217-6225.

PUBLICATION YEAR: 1996

23

TITLE (ENGLISH): Measured and calculated cross sections for the electron-impact ionization of C sub 6 sub 0.

AUTHOR(S): Matt,-S.; Duenser,-B.; Lezius,-M.; Stamatovic,-A.; Scheier,-P.; Maerk,-T.D. (Universitaet Innsbruck (Austria)) (and others)

SOURCE (BIBLIOGRAPHIC CITATION): Bulletin-of-the-American-Physical-Society. (May 1996). v. 41(3). p. 1059b.

REPORT/PATENT NUMBERS: CONF-9605105-- (CONF9605105)

PUBLICATION YEAR: 1996

24

TITLE (ENGLISH): Vibrationally Resolved Electron Attachment to Oxygen Clusters.

AUTHOR(S): Matejcik,-S.; Kiendler,-A.; Stampfli,-P.; Stamatovic,-A.; Maerk,-T.D. (Intitut fuer Ionenphysik, Leopold Franzens Universitaet, Technikerstrasse 25, A-6020 Innsbruck (Austria))

SOURCE (BIBLIOGRAPHIC CITATION): Physical-Review-Letters. (Oct 1996). v. 77(18). p. 3771-3774.

PUBLICATION YEAR: 1996

 

Back to top

Biographical Information

Name: Aleksandar Stamatovic

Title: Professor

Academic degrees: Ph.D.in Physics 1969, M.Sc.in Physics 1966,

B.Sc. Physical Chemistry 1963

Born: 26.12.1940.

Birth place: Sabac, Yugoslavia

Parents' names: Sotir, Nadezda

Marital status: divorced,

Citizenship: Yugoslav

Addresses:

Official:

Faculty of Physics,

University of Beograd,

Yu 11001 Beograd, P.O.Box 368, Yugoslavia

Private:

Prvomajska 114a, Yu - 11080 Zemun, Yugoslavia.

 

Educational background:

Elementary school in Sabac (1947-1951).

High school in Beograd (1951-1959).

University study in Physical Chemistry at the University of

Beograd, Faculty of Natural Sciences (1959-1963). Award for

best marks during studies.

Postgraduate study also at University of Beograd, Faculty of

Natural Sciences, Department of Atomic and Molecular Physics in the field of electron-atom and electron-molecule collision processes in the group of Prof. Milan Kurepa. Master of Science thesis on design and application of monopole mass spectrometer finished in 1966 at the University of Beograd. During 1967 and 1968 coworker in the group of Prof. George Schulz, Department of Applied Science, Yale University, New Haven, CT, USA, where the experimental part of the Ph.D. thesis has been done. Ph.D. degree 1969 at University of Beograd, thesis on low energy monochromatic electron beam interaction with molecules.

 

Professional activities:

Starting from October 1963 assistent in the Institute of Physics Beograd, in the group of Prof. Milan Kurepa, working in the field of electron atom and electron molecule interactions.

During 1967 and 1968 postgraduate, and during 1969 and 1970 postdoctoral coworker in the group of Prof. George Schulz, Department of Applied Science, Yale University, New Haven, CT USA.

Since 1972 teaching position at the University of Beograd, and starting from April 1974 permanent teaching position at the University of Kragujevac, Yugoslavia.

During 1974 and 1975 coworker in the group of Prof. Ingolf Hertel, Department of Physics, University of Kaiserslautern, FR Germany, working in the field of electron scattering on laser excited Na atoms.

After the untimely death of Prof. George Schulz in 1975, invited as a guest senior scientist to maintain the research in the laboratory of late Prof. Schulz, at Department of Applied Science, at Yale, during 1976 and 1977.

In 1981 Humboldt stipendiat at the Free University Berlin, Department of Molecular Physics, working in the field of laser preparation of excited atoms for scattering experiments with electrons, ions and molecules.

Since January 1981 colaborating, part time, with group of Prof. Tilman M„rk, Leopold Franzens University in Innsbruck, Austria, in the field of electron and photon interaction with van der Waals clusters.

Starting from October 1983 permanent teaching position at the University of Beograd, and full university professorship since June 1986.

Guest full professor at Institute for Ionphysics, Leopold Franzens University in Innsbruck,Austria, since academic year 1987/1988.

 

Teaching activities:

Since 1972 involved in university level teaching activities, in Serbo-Croat, German and English, at the University of Kragujevac, University of Beograd, Leopold Franzens University in Innsbruck and Free University Berlin, in the following subjects:

General Physics, Electronics, Gaseous Electronics, Programming Science, Microelectronics, Applications of microprocessors and microcomputers in scientific instrumentation, Physics and Chemistry of the Atmosphere, Meteorological instrumentation, Meteorological communication and data reduction.

Besides teaching courses at different universities, actively involved in individual scientific education of students in experimental physics, leading to all academic degrees, at the universities mentioned above.

 

Present position:

Full professor at the Faculty of Physics,

University of Beograd, Yugoslavia.

 

Publications:

Over 200 publications, more than one third (over 70) in the well known international journals.

 

 

Back to top

Personal Interests

Video, photography, computers, hiking, skiing, motor boating

Back to top

Text related to teaching subjects (Sorry, Serbian only!)

Tekstovi u vezi predavanih predmeta

 Elektronika

 Automatika

 Meteorolo{ka merenja

 Meteorolo{ke informacije

 Primena ra~unara u fizi~koj hemiji

 Instrumentalna elektronika

Back to top

Predmet: ELEKTRONIKA

Studijska grupa fizika

Smer A, B, C, D

Katedra za METROLOGIJU I PRIMENJENU FIZIKU

semestar peti, nedeljni fond ~asova 4+2+3

ispit: pismeni i usmeni

Uvodne napomene, definicije i klasifikacija sistema.

Nezavisni izvori napona i struje. Pasivni elementi elektronskih kola.

Omov zakon, Kirhovlljeva pravila, Teveninova teorema o ekvivalentnom izvoru.

Razdelnik napona. Razdelnik napona za naizmeni~nu struju. RC i RL filtri.

Diode, njihove karakteistike i primena u elektronskim kolima.

Bipolarni tranzistor. Najjednostavniji model tranzistora.

Primena tranzistora kao prekida~a.

Emiterski pratioc napona, karakteristike i primena.

Tranzistorski izvor struje, karakteristike i na~ini njihovog pobolj{awa.

Tranzistorski poja~ava~ sa zajedni~kim emiterom, karakteristike i primena.

Obrta~ faze sa jedini~nim poja~anjem i kontinualni pomera~ faze.

Model Ebers-Mola i njegova primena na osnovna kola sa tranzistorima.

Detaljno razmatranje emiterskog pratioca napona i poja~iva~a sa zajedni~kim emiterom. Odre|ivawe ta~ke mirovanja.

Strujna ogledala. Izlazni poja~ava~i, pu{-pul veza.

Darlington spoj i super beta tranzistori. Butsrejping sheme.

Diferencijalni poja~ava~. Milerov efekat.

Primena prou~enih kola u realnim shemama.

Uvod u digitalnu elektroniku. Brojni sistemi.Bulova algebra.

Osnovna logi~ka kola. Sinteza kombinacionih logi~kih kola.

Minimizacija - Karnoove mape.

Kompleksna kombinaciona kola u upotrebi i sheme sa njima.

Dekoderi, ROM, PAL i PLA i njihove primene.

Osnovna sekvencijalna kola.

Broja~i i registri. Monostabilna kola.

Kompleksna sekvencijalna kola u upotrebi i sheme sa njima.

Tranzistori sa efektom polja, tipovi i karakteristike.

Osnovna analogna digitalna kola sa FET-ovima.

Povratna sprega i opreacioni poja~ava~i.

Frekventne karakteristike i stabilnost.

Linearna kola sa operacionim poja~ava~ima.

Nelinearna kola sa operacionim poja~ava~ima.

Osnovni pojmovi i specifi~nosti industrijske elektronike.

Aktivni filtri. Oscilatori.

Fazno osetljivi detektori i njihova primena.

Osnovni pojmovi i blok shema telekomunikacija.

D/A i A/D konvertori.

Uvod u mikrora~unarske sisteme.

Inteligentna instrumentacija.

Literatura:

1. Bele{ke sa predavawa prof. A. Stamatovi}a

2. V. Bo~varski i A. Stamatovi}: Digitalna elektronika, PMF, Kragujevac 1994.

3. P. Horowitz & W. Hill: The Art of Electronics, Cambridge University Press, 1989.

Back to top

Predmet: AUTOMATSKO UPRAVQAWE

Studijska grupa PRIMEWENA FIZIKA I INFORMATIKA

Katedra za METROLOGIJU I PRIMEWENU FIZIKU

semestar peti, nedeqni fond ~asova 2+2

ispit: pismeni i usmeni

Uvodne napomene, definicije i klasifikacija sistema.

Funkcije prenosa sistema. Mehani~ki sistemi.

Elektromehani~ki sistemi.

Hidrauli~ni sistemi. Pneumatski sistemi.

Stawa sistema. Stabilnost sistema.

Karakterizacija sistema.

Frekventna metoda analize i sinteze sistema.

Sistemi sa vi{e ulaza i izlaza.

Digitalni sistemi automatskog upravqawa.

Komponente digitalnih sistema.

Struktura digitalnih sistema. Funkcija disretnog prenosa.

Stawa digitalnih sistema. Stabilnost digitalnih sistema.

Sinteza digitalnih sistema.

Analiza konkretnih, ~esto kori{}enih sistema.

Literatura:

1. Bele{ke sa predavawa prof. A. Stamatovi}a

2. Prof. dr Mili} R. Stoji}: Kontinualni sistemi automatskog upravqawa, Nau~na kwiga, Beograd, 1988.

3. Prof. dr Mili} R. Stoji}: Digitalni sistemi upravqawa, Nauka, Beograd, 1990.

Back to top

 

Studijska grupa METEOROLOGIJA

Katedra za op{tu meteorologiju

Predmet: METEOROLO[KA MEREWA

semestar peti, nedeqni fond ~asova 3+3

ispit: usmeni

 

Merewa temperature , termometri sa te~no{}u.

Deformacioni termometri, termografi, elektri~ni termometri.

Radijacioni termometri, akusti~ki termometri.

Merewe vla`nosti vazduha.

Psihrometarska metoda merewa vla`nosti.

Merewe padavina i isparavawa.

Merewe zra~ewa, spektri zra~ewa Sunca i Zemqe.

Merewe kratkotalasnog i dugotalasnog zra~ewa.

Merewe vazdu{nog pritska.

Gre{ke i korekcije pri merewu vazdu{nog pritiska.

Merewe prizemnog vetra.

Merewe vertikalnog profila vetra.

Merewe atmosferskog elektriciteta.

Osmatrawe oblaka i odre|ivawe vidqivosti.

Merewe vertikalnih gradijenata meteorolo{kih elemenata.

Merewe strukture meteorolo{kih elemenata.

Automatske meteorolo{ke stanice.

Radiosondirawe atmosfere.

Meteorolo{ki radari, princip rada.

Vrste meteorolo{kih radara i wihova primena u meteorologiji.

Meteorolo{ki sateliti.

Meteorolo{ka merewa za potrebe ekologije.

Primene lasera u meteorolo{kim merewima.

 

Literatura:

1. Bele{ke sa predavawa prof. A. Stamatovi}a

2. D.H. Lenschow, Ed.: Probing The Atmospheric Boundary Layer,

AMS, Boston, 1986.

3. D.D Houghton, Ed.: Handbook of Applied Meteorology,

John Wiley & Sons, 1985.

Back to top

Studijska grupa METEOROLOGIJA

Katedra za op{tu meteorologiju

Predmet: METEOROLO[KE INFORMACIJE

semestar peti, nedeqni fond ~asova 2+5

ispit: pismeni i usmeni

Uvod.

Korist od meteorolo{kih informacija.

Svetska meteorolo{ka organizacija (SMO).

Svetsko meteorolo{ko bdewe.

Globalni sistem osmatrawa.

Globalni sistem telekomunikacija.

Globalni sistem za obradu podataka.

Evropski centar za sredwero~nu prognozu vremena.

Tehni~ki aspekti osmatrawa i prikupqawa podataka.

Tehni~ki aspekti telekomnikacionog sistema.

Meteorolo{li kodovi.

Tehni~ki aspekti sistema za obradu podataka.

Osobine meteorolo{kih podataka.

Logi~ka kontrola podataka.

Kriti~ka kontrola podataka.

Meteorolo{ki informacioni sistem (MIS).

 

Literatura:

1. Bele{ke sa predavawa prof. A. Stamatovi}a

2. Bele{ke sa predavawa prof. Z. Jawi}a

3. D.D Houghton, Ed.: Handbook of Applied Meteorology,

John Wiley & Sons, 1985.

Back to top

 

TTTTT RRRR III DDDD EEEEE SSS EEEEE TTTTT A K K

T R R I D D E S S E T A A K K T R R I D D E S S E T A A K K T R R I D D EEE S EEE T AAAAA KK

T R R I D D E S E T A A K K

T R R I D D E S S E T A A K K

T R R I D D E S S E T A A K K

T R R III DDDD EEEEE SSS EEEEE T A A K K

 

 

SSS TTTTT RRRR A N N A

S S T R R A A N N A A

S S T R R A A NN N A A

S T R R AAAAA N N N AAAAA

S T R R A A N NN A A

S S T R R A A N N A A

S S T R R A A N N A A

SSS T R R A A N N A A

FFFFF OOO RRRR TTTTT RRRR A N N A

F O O R R T R R A A N N A A

F O O R R T R R A A NN N A A

FFF O O R R T R R AAAAA N N N AAAAA

F O O R R T R R A A N NN A A

F O O R R T R R A A N N A A

F O O R R T R R A A N N A A

F OOO R R T R R A A N N A A

priredio:

A. Stamatovi}

PMF - BEOGRAD

1993. & 2000.

 

 

 

 

 

 

 

 

 

Uvod

Kratak priru~nik za FORTRAN 77 je namenjen pre svega studentima za

brzo savladjivanje osnovne sintakse ovog jo{ uvek dosta u nauci

kori{}enog programskog jezika. Pri pisanju, usvojeno je bezbroj

puta dokazano pravilo da jedan primer vredi znatno vi{e od brda

re~i obja{njenja, zbog ~ega se, pored navedenih primera, student

upu}uje na zbirku primera izvornih programa i ispitnih zadataka -

programa. Priru~nik je napisan u konciznom stilu, sa `eljom da

korisnici brzo nadju ono {to tra`e u ~emu im poma`u iscrpan

sadr`aj i indeks pojmova. Kao uzor kori{}en je "D`epni vodi~ -

FORTRAN 77" Clive Page-a, ~ija je struktura materijala usvojena, a

i ve}ina navedenih primera su sli~ni ili isti. Ljubiteljima

perfekcije i potpunosti nije se moglo izi}i u susret, jer su ova

dva stava u jasnoj suprotnosti sa prethodno iznetim. Ovaj svestno

u~injen nedostatak se mo`e lako otkloniti kori{}enjem navedene

literature.

 

Znakovi i linije

Skup znakova

Skup znakova koje podr`ava FORTRAN ~ine 26 slova latinice (A-Z) i

slede}ih trinaest znakova:

+

-

*

/

(prazno mesto - blank)

=

(

)

.

,

:

'

$

Prazno mesto - blank u FORTRAN-u nema zna~aja sem u okviru slovne

konstante, te prema tome GO TO i GOTO imaju isto zna~enje.

Posebno treba napomenuti da FORTRAN ne prepoznaje navodnice ", te

se umesto njih koristi apostrof '.

Kao i u svim drugim programskim jezicima nula 0 i slovo O se

nesmeju me{ati.

Takodje treba napomenuti da znak jednakosti nema matemati~ko

zna~enje jednakosti, ve} ozna~ava pridavanje vrednosti izraza sa

desne strane znaka jednakosti promenljivoj ili konstanti

nazna~enoj na levoj strani znaka jednakosti.

Izgled linije

Kompajler FORTRAN-a koristi prva 72 znaka na liniji. Znakovi od 73

nadalje se ignori{u i mogu se koristiti za posebna obele`avanja.

Slovna mesta 1-5 se koriste za oznaku - labelu, koja nemora da ima

pet cifara i cifre nemoraju da po~nu na prvom slovnom mestu, mada

je tako preglednije.

Po~etna i linije nastavka iskaza

Po~etna linija

Po~etna linija mora imati blank - prazno mesto na slovnom mestu

broj {est, mesta 1-5 sadr`e oznaku - labelu, ili su prazna. To

zna~i da na slovnom mestu jedan nesme da bude C ili *.

Linija produ`enja - nastavka iskaza

{esto slovno mesto slu`i za obele`avanje produ`etka linije. Naime,

ako prvih 72 znaka nisu bili dovoljni za `eljeni iskaz, linija se

mo`e produ`iti na taj na~in da slede}a linija ima na slovnom mestu

{est neki znak, naj~e{}e * ili $. Ovaj postupak se mo`e ponavljati

potreban broj puta.

Linije komentara

Svaka linija koja po~inje sa C ili * na prvom slovnom mestu

predstavlja komentar, koji mo`e da sadr`i i znake koje ne podr`ava

FORTRAN. Linija komentara mo`e biti locirana bilo gde u okviru

programa, tj. ispred naredbe END. komentar mo`e da se umetne ~ak i

izmedju po~etne linije i linije nastavka.

Imena i oznake

Simboli~ka imena

FORTRAN koristi simboli~ka imena koja su data pojedina~nim

vrednostima konstanti i promenljivih, kao i skupna imena za

indeksno promenljive, funkcije, potprograme, zajedni~ke (common)

blokove i programske jedinice. Simboli~ko ime se sastoji od {est

znakova od kojih prvi mora biti slovo. Neki kompajleri podr`avaju

i du`a imena. Prvo slovo odredjuje i tip podataka. Slova I do N

odredjuju tzv. celobrojni - INTEGER tip podataka. Ostala slova

odredjuju realni - REAL tip podataka. Ova podela se mo`e izmeniti

iskazom IMPLICIT ili specificiranjem tipa podataka.

Lokalna i op{ta imena

Imena programskih jedinica, ulaznih ta~aka (entry points) i

zajedni~kih blokova (common blocks) su op{ta (globalna). Isto ime

se nesme da koristi za dva ili vi{e globalnih pojmova u okviru

jednog programa. Globalno ime nesme da bude isto bilo kom lokalnom

imenu u okviru iste programske jedinice.

Imena konstanti, variabli, indeksnih promenljivih i iskaznih

funkcija su lokalne za programsku jedinicu, te se ista imena mogu

koristiti u drugoj programskoj jedinici.

Takodje su imena kontrolnih promenljivih u DO petljama lokalnog

karaktera i mogu se koristiti vi{e puta u okviru iste programske

jedinice.

Klju~ne re~i

Klju~na re~ je niz karaktera koji ~ini bitan stalni deo FORTRAN

iskaza. Mnoge klju~ne re~i imaju oblik va`e}ih simboli~kih imena

(DATA,CLOSE,IF,ERR itd.), te u principu mogu da se koriste

dvojako, mada se to ne preporu~uje, iako FORTRAN nema rezervisanih

re~i. Ovde treba napomenuti da PC DOS ima rezervisanih re~i i ako

se napi{e program sa imenom npr. IF.FOR, startovanje novostvorene

izvr{ne datoteke IF.EXE ne}e biti mogu}e sa DOS komandne linije

~ak iako se IF.EXE nalazi u nekom drugom subdirektorijumu a ne u

DOS subdirektorijumu.

Oznake - labele

Kolone 1-5 na FORTRAN liniji su rezervisane za oznake - labele.

Prazna mesta i vode}e nule se ignoru{u, a labela nemora da bude

pode{ena ni prema levoj ni prema desnoj ivici. Svaki FORMAT iskaz

mora da ima labelu. Bilo koji drugi iskaz mo`e da ima labelu ali

se pozivi mogu vr{iti samo na labele izvr{nih iskaza.

Vrste podataka

FORTRAN ima 6 tipova podataka: integer, real, double precision,

complex, logical i character.

Integer, real, double precision i complex su poznati pod nazivom

aritmeti~ki tip podataka. Konverzija medju njima se vr{i

automatski u aritmeti~kim iskazima, DATA i PARAMETER iskazima, ali

se NE VR[I pri pozivu potprograma i ulazno-izlaznim iskazima.

 

 

Prostor u memoriji

Double precision i complex tipovi podataka uzimaju duplo vi{e

memorijskog prostora.

Aritmeti~ki i slovni tipovi nemogu da dele isti deo memorijskog

prostora upotrebom COMMON ili EQUIVALENCE iskaza.

Celobrojni

Celobrojna konstanta se sastoji od niza decimalnih cifara kojima

prethodi znak plus ili minus. Vode}e nule se ignori{u, a nisu

dozvoljeni zarezi, ta~ke ili eksponenti. Ispravni primeri su:

001 -546 +100 4500

Celobrojni podaci se mogu egzaktno pretvoriti u ma{inski kod.

Realni

Realni podaci se ~uvaju u ma{ini u obliku broja sa pomi~nim

zarezom.Premda se nula i mali realni podaci mogu ta~no predstaviti

u ma{inskom kodu, op{te je pravilo da se veliki realni brojevi

nemogu ta~no predstaviti u ra~unaru, te stoga treba izbegavati

testove na ta~nu jednakost koji uklju~uju realne podatke.

Realne konstante moraju imati decimalnu ta~ku ili decimalnu ta~ku

i eksponent. Eksponent se sastoji od E i integer konstante koja

predstavlja ekponent za osnovu deset. Zarezi nisu dozvoljeni a

znaci su opcioni ispred eksponenta i dela ispred eksponenta.

Realne konstante se mogu predstaviti sa neograni~eno mnogo

decimalnih mesta, ona koja prelaze kapacitet ma{ine se ignori{u.

Primeri ispravnih realnih konstanti su:

-7. 3.14 5E3 6.67E-13

Dvostruka ta~nost

Konstante dvostruke ta~nosti su predstavljene eksponentom kome

prethodi slovo D, ~ak iako je eksponent nula. Nije dovoljno da se

konstanta napi{e sa dvostruko vi{e cifara. Ispravni primeri su:

-1D0 3.14159265358989D0 +5D3 6.67D-13

Kompleksni

Kompleksni tip promenljive se sastoji iz para realnih ili integer

brojeva, napisanih u zagradi i rastavljenih zarezom, a koji

predstavljaju realni i imaginarni deo kompleksnog broja.Primeri:

(2,25) (3.14,-2E3) (-.321,7654)

Logi~ki

Postoje samo dve logi~ke konstante: .true. i .false.

Slovni

CHARACTER tip podataka se koristi za rad sa tekstom. Svaka slovna

variabla mo`e da sadr`i ~itav niz slova, ali njena du`ina mora da

bude deklarisana u IMPLICIT ili CHARACTER iskazima. Slovna

variabla se sastoji od niza slova napisanih izmedju apostrofa:

'greska' '(4x,3f10.5)' 'vas broj je'

Polja, indeksi i podnizovi

Uredjen skup podataka istog tipa (i iste du`ine za slovne

promenljive) naziva se polje podataka ili polje indeksno

promenljivih, ponekiput i matrica podataka. Ovakva polja mogu imati

do sedam dimenzija (sedam indeksa). Pojedina~ni element polja je

okarakterisan imenom polja i skupom indeksa rastavljenih zarezom i

napisanih u zagradi. Granice indeksa moraju sa budu deklarisane u

iskazu za tip podataka, COMMON ili DIMENSION iskazu.

Indeksi

Indeksi moraju da budu celobrojne vrednosti u datim granicama.

Mogu da budu i celobrojni izrazi bilo kakve kompleksnosti, mogu da

uklju~uju dalje pozive na polja i pozive na funkcije, pod uslovom

da nemaju uticaja na druge indekse istog polja. Primeri:

MAT(0,-10) SUPER(i,j,k,l,m,n) D(K(N(INDEX)))

Slovni podnizovi

Slovni podniz predstavlja skup uzastopnih slova u okviru slovne

promenljive ili polja slovnih promenljivih. Poziv na podniz se

sastoji od imena promenljive ili polja promenljivih i dva

celobrojne vrednosti, razdvojene s dve ta~ke i napisane u zagradi.

Celobrojne vrednosti ukazuju na polo`aj prvog i poslednjeg slova u

nizu. Bilo koji od ova dva pokaziva~a mo`e da se izostavi, u tom

slu~aju vrednost za prvi je 1, a za drugi N, gde je N broj

poslednjeg slova u originalnoj slovnoj promenljivoj. Primer:

CHARACTER*8 LANDS(100)

LANDS(55)='SCOTLAND'

Onda je poziv na LANDS(55)(2:4) jednak 'COT'.

Izrazi

Aritmeti~ki izrazi

Aritmeti~ki izrazi se koriste da bi se navele numeri~ke operacije

koje ra~unar treba da izvr{i. Oni se sastoje od jednog ili vi{e

~lanova sastavljena od aritmeti~kih tipova podataka (integer, real,

dvostruka ta~nost ili kompleksni). Aritmeti~ki izrazi mogu da

sadr`e podizraze u zagradama i pozive funkcija. Rezultat

numeri~kih operacija u okviru aritmeti~kog izraza je numeri~ka

vrednost izra`ena jednim od aritmeti~kih tipova podataka.

Najjednostavniji aritmeti~ki izraz je konstanta, varijabla,

element polja ili poziv funkcije.

Aritmeti~ki izraz mo`e imati jednu od slede}ih formi:

~lan

+ ~lan

- ~lan

exp op ~lan

gde je op jedan od slede}ih aritmeti~kih operatora:

+ sabiranje

- oduzimanje ili negacija

* mno`enje

/ delenje

** stepenovanje.

}lanovi mogu biti konstanta bez znaka, imenovana konstanta,

promenljiva, element polja, poziv na funkciju ili ceo aritmeti~ki

izraz u zagradi.Redosled izra~unavanja operacija u izrazu je

slede}i:

1. izraz u zagradi

2. poziv na funkciju

3. stepenovanje

4. mno`enje ili delenje

. sabiranje ili oduzimanje.

U okviru svake od ovih grupa izra~unavanje te~e sa leve na desnu

stranu, izuzev za stepenovanja, koja se izvode sa desne na levu

stranu. Prema tome, A/B/C je isto {to i (A/B)/C, dok je A**B**C

isto {to i A**(B**C). Sve kombinacije ~etiri aritmeti~ka tipa

podataka su dozvoljene osim kompleksni brojevi sa dvostrukom

precizno{}u.

Ako operator ima dva operanda istog tipa, rezultat je takodje tog

tipa. Ako operandi nisu istog tipa, dolazi do implicitne

konverzije u smeru:

celobrojni, realni, kompleksni brojevi ili double precision.

Jedini izuzetak od ovog pravila je da vrednost stepenovana na

celobrojni eksponent ne trpi konverziju. Ako je eksponent

negativan, vrednost se ra~una kao recipro~na vrednost dobijena sa

pozitivnim eksponentom:

2.0**(-3) => 1/(2.0**3) => 1/8.0 => 0.125.

U ostalim slu~ajevima vrednost stepenovanja se ra~una preko

logaritama.

Delenje celobrojnih uvek rezultuje u odbacivanju necelobrojnog

dela. Zbog toga ne treba izostavljati decimalnu ta~ku. Primeri:

-8/3 => -2

2**(-3) => 1/(2**3) => 1/8 => 0

Zagrade menjaju redosled operacija i treba ih koristiti radi ve}e

jasno}e.

Izrazi sa celobrojnim konstantama

Ovi izrazi mogu da se koriste za deklarisanje granica polja, ili

du`ine slovnih promenljivih, ili da se postave vrednosti

imenovanih konstanti u okviru PARAMETER iskaza. Izrazi sa

celobrojnim konstantama se sastoje samo od stvarnih i imenovanih

celobrojnih konstanti, operatora i zagrada. Poziv na funkcije nije

dozvoljen.

Slovni izrazi

Postoji samo jedan slovni operator, koji se ozna~ava sa //, a

predstavlja spajanje dva niza. Slovni izraz, cexp, ima oblik:

cterm

ili cexp//cterm

gde je cterm slovna konstanta, promenljiva, element polja, podniz

ili poziv na funkciju, ili kompletan slovni izraz u zagradama.

Npr.:

MAILST(1:30) = FSTNAM(:1)//' '//SURNAM

Slovni izraz koji sadr`i concatenation sa izrazom promenljive

du`ine ne sme se koristiti u slovnom izrazu izuzev u iskazu

pridru`ivanja vrednosti.(slovni izraz promenljive du`ine se

specificira kao *(*).

Izraz za slovnu konstantu u okviru PARAMETER iskaza mo`e da

koristi samo od imenovanih i aktuelnih konstanti kao i operatora

//.Poziv na funkciju i podnizove nije dozvoljen.

Izrazi odnosa

Izrazi odnosa imaju za vrednost logi~ku promenljivu. Oni mogu da

imaju jedan od dva oblika:

exp relop exp

ili cexp relop exp

gde je exp bilo koji aritmeti~ki izraz, cexp je bilo koji slovni

izraz, a relop je jedan od slede}ih {est operatora:

.LT. manje od

.LE. manje ili jednako

.EQ. jednako

.GT. ve}e od

.GE. ve}e ili jednako

.NE. nejednako

Aritmeti~ki izrazi mogu biti razli~itog tipa podataka, jer se vr{i

konverzija kada je potrebno (medjutim COMPLEX se nemo`e porediti

sa DOUBLE PRECISION). COMPLEX tip mo`e jedino da koristi operatore

.EQ. and .NE. ali se ne preporu~uje, jer se vrednosti, izra`ene u

pomi~nom zarezu, u op{tem slu~aju ne ~uvaju u ra~unaru u egzaktnom

obliku.

Kada se dva slovna izraza uporedjuju oni mogu imati razli~ite

du`ine; ako je tako, kra}i se nastavi blankovima. Izrazi se

uporedjuju svaki karakter posebno dok se ne naidje na razliku ili

na kraj.

 

Logi~ki izrazi

Ovi izrazi se sastoje od logi~kih ~lanova i operatora i daju kao

rezultat TRUE ili FALSE. Oni mogu biti kori{}eni u logi~kim IF ili

blok IF ili pridru`enim logi~koj promenljivoj ili elementu polja.

Oblik logi~kog izraza, lexp, mo`e biti:

lterm

.NOT.lterm

lexp lop lterm

gde je lop jedan od logi~kih operatora:

.AND.

.OR.

.EQV. ili

.NEQV.

Redosled izvr{avanja logi~kih izraza koji sadr`e odnosne podizraze

je slede}i:

1. aritmeti~ki izrazi

2. odnosni izrazi

3. operator .NOT.

4. operator .AND.

5. operator .OR.

6. operatori .EQV. i .NEQV.

Treba primetiti da se operatori .EQV. koji izra`ava logi~ku

ekvivalentnost i .NEQV. neekvivalentnost (koji se ponekad zove

ekskluzivno OR) ne mogu da budu kori{}eni u istom podizrazu.

Zagrade se mogu uvek koristiti da pojasne redosled izra~unavanja

slo`enih izraza.

Struktura programa

Programske jedinice

Izvr{ni program mora da sadr`i tzv. glavnu programsku jedinicu.

Pored toga mo`e da sadr`i proizvoljan broj potprogramskih jedinica

bilo kog od tri postoje}a tipa: potprogram, funkciju ili blok

podataka. Fortranski program mo`e da koristi spoljne funkcije i

potprograme koji su napisani u drugim programskim jezicima.

Vrste iskaza

INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL i CHARACTER

su iskazi tipa podataka.

IMPLICIT, PARAMETER, DIMENSION, COMMON, EQUIVALENCE,

EXTERNAL, INTRINSIC, SAVE i svi iskazi tipa podataka se zajedno

nazivaju iskazi specifikacije.

PROGRAM, SUBROUTINE, FUNCTION, BLOCK DATA, ENTRY, DATA, FORMAT,

iskazna funkcija i svi iskazi specifikacije se zajedno nazivaju

neizvr{nim iskazima.

Iskazi pridru`ivanja (uklju~uju}i i ASSIGN), svi oblici IF i GO TO

iskaza, kao i ELSE, ELSE IF, END IF, DO, CONTINUE, CALL, RETURN,

READ, WRITE, PRINT, OPEN, CLOSE, INQUIRE, REWIND, BACKSPACE, END

FILE, STOP, PAUSE i END su izvr{ni iskazi.

Redosled iskaza

Iskazi u svakom programu moraju da slede pravila o redosledu:

PROGRAM, SUBROUTINE, FUNCTION or BLOCK DATA

IMPLICIT

PARAMETER

Drugi iskazi specifikacije FORMAT

Iskazne funkcije i

Izvr{ni iskazi ENTRY DATA END

To zna~i da IMPLICIT iskazi moraju da budu pre ostalih iskaza

specifikacija izuzev PARAMETER, koji mo`e da bude bilo gde u

okviru iskaza specifikacija.

Linije komentara mogu biti bilo gde, ali pre END iskaza, koji mora

da bude na kraju.

redosled izvr{avanja

Izvr{avanje programa po~inje sa prvim izvr{nim iskazom glavne

programske jedinice i nastavlja se sekvencijalno, ali podlo`no

efektima kontrolnih iskaza GO TO, IF, CALL itd. Izvr{avanje se

zavr{ava sa END iskazom, ili STOP iskazom. Medjutim, pojedine

gre{ke mogu izazvati prerani prekid programa.

Glavni program (MAIN PROGRAM)

Mo`e ali nemora da po~ne sa iskazom PROGRAM i mo`e da sadr`i sve

ostale iskaze osim SUBROUTINE, FUNCTION, BLOCK DATA, ENTRY ili

RETURN. Iskaz SAVE se ignori{e ukoliko se nadje u glavnom

programu.

Oblik iskaza PROGRAM je:

PROGRAM ime

Ovaj iskaz je opcioni jer se ime ne koristi dalje u programu, ali

mo`e biti korisno pri dokumentaciji i za saop{tavanje gre{aka.

BLOCK DATA jedinica

se koristi da inicijalizuje sadr`aje imenovanih COMMON blokova.

Block data mora po~eti na jedan od ova dva na~ina:

BLOCK DATA ili

BLOCK DATA ime

Ime je bitno samo ako ima vi{e od jednog bloka. Ime mo`e da se

koristi u EXTERNAL iskazu u drugoj programskoj jedinici (kao {to

je glavni program) da bi se osiguralo uklju~ivanje block data u

kompletan program. U ve}ini sistema na ovaj na~in se imenovani

blokovi mogu automatski koristiti iz pre-kompiliranih biblioteka

potprograma.

Block data mo`e da sadr`i samo IMPLICIT, PARAMETER, DIMENSION,

COMMON, EQUIVALENCE, SAVE, DATA, END i iskaze tipa podataka kao i

komentare.

Isti COMMON mo`e se na}i samo u jednom od vi{e block data

jedinica.

Funkcijski potprogram

Po~inje sa FUNCTION iskazom i mo`e da sadr`i sve iskaze osim

PROGRAM, SUBROUTINE i BLOCK DATA i ima oblik:

FUNCTION ime(d,d...d) ili

tip FUNCTION ime(d,d...d)

gde je tip jedan od INTEGER, REAL, DOUBLE PRECISION, COMPLEX,

LOGICAL, CHARACTER ili CHARACTER*len; d je fiktivni argument koji

mo`e biti promenljiva, polje, funkcija ili potprogram. Broj

fiktivnih argumenata mo`e biti nula, ali zagrade moraju ostati da

bi se se uo~ila razlika izmedju poziva na funkciju i promenljive:

X = RANDOM( )

Forma specifikacije du`ine *len je ista kao i za CHARACTER tip

iskaz izuzev {to se nemogu koristiti imenovane konstante.

CHARACTER*(*)FUNCTION DATUM(DAN)

U okviru podprograma ime funkcije se pona{a kao obi~na

promenljiva, kojoj mora biti pridru`ena vrednost pre RETURN ili

END iskaza koji kontrolu predaju programskoj jedinici koja je

zvala potprogram. Tip podataka funkcije (kao i du`ina slovnog

tipa promenljive) mogu biti implicitno odredjeni imenom ili

specificirani u FUNCTION iskazu ili potonjim iskazima tipa

promenljive.

Alternativna imena i ulazne ta~ke mogu da se specificiraju ENTRY

iskazom (ali alternativni RETURN iskazi nisu dozvoljeni).

Funkcija mo`e da se koristi u bilo kojoj programskoj jedinici

pomo}u poziva na funkciju koji mo`e da bude deo nekog izraza, ali

funkcija nesme da poziva samu sebe direktno ili indirektno. Tip

podataka imenovane funkcije (i du`ina za slovne funkcije) moraju

se specificirati kori{}enjem imena funkcije u iskazu tipa podataka

u svakoj programskoj jedinici u kojoj se funkcija poziva ukoliko

implicitan tip ne odgovara stvarnom tipu.

Premda se informacija mo`e preneti u ili iz FUNCTION potprograma

preko argumenata, COMMON blokova ili kroz spoljne datoteke, ima

nekih ograni~enja u kori{}enju funkcija sa "bo~nim efektima" koji

~ine boljim kori{}enje SUBROUTINE potprograma za te slu~ajeve.

Funkcija koji vr{i ulazno/izlazne radnje nesme biti u izlaznoj

listi WRITE ili PRINT iskaza.

Funkcija koja pridru`uje vrednost sopstvenom argumentu ili

~lanovima COMMON bloka, nesme se pozivati u izrazu koji uklju~uje

bilo koji drugi ~lan koji je promenjen izvodjenjem funkcije.

FUNCTION se mo`e koristiti slobodno u svim slu~ajevima ako joj se

vrednostt svih argumenata odr`ava i nema efekta na COMMON blokove

i spoljne datoteke.

 

Pozivanje na funkcije

Poziv na funkciju mo`e da se da se vr{i u bilo kom izrazu

odgovaraju}eg tipa u obliku

fime(a,a...,a)

gde je fime ime spoljne, unutarnje ili iskazne funkcije, a svako a

je stvarni argument.

Potprogram SUBROUTINE

Po~inje sa

SUBROUTINE sime(d,d,...,d) ili

SUBROUTINE sime

gde je sime simboli~no ime a svako d je fiktivni argument koji mo`e

da bude: zvezdica (~ime se ozna~ava alternativna povratna ta~ka),

ili ime fiktivne promenljive, polja, potprograma ili funkcionog

potprograma. Potprogram SUBROUTINE mo`e da sadr`i bilo koji iskaz

osim PROGRAM, FUNCTION, and BLOCK DATA.

SUBROUTINE mo`e da se zove iz bilo koje druge programske jedinice

osim iz sebe same, direktno ili indirektno.

Informacije se mogu preneti u ili iz potprograma preko argumenata,

COMMON blokova i spoljnih datoteka.

Kontrola se vra}a programskoj jedinici koja je zvala potprogram po

izvr{enju END ili bilo kog RETURN iskaza.

Alternativna imena potprograma i ulazne ta~ke mogu se

specificirati pomo}u ENTRY iskaza.

CALL iskaz

ima oblik:

CALL sime(a,a,...,a) ili

CALL sime

i slu`i za izvr{avanje procedura specificiranih potprogramom imena

sime sa stvarnim argumentima a.

Argumenti potprograma

Svrha potprogramskog ili poziva funkcije je da pridru`i stvarne

argumente fiktivnim argumentima potprograma i da prenese kontrolu

potprogramu. Stvarni argumenti moraju da se sla`u sa fiktivnim u

redosledu, broju, tipu podataka (sem u slu~aju imena potprograma i

alternativnih specifikatora povratka). Slede detaljna pravila:

Ako je fiktivni argumenat promenljiva onda stvarni argumentt

mo`e da bude: promenljiva, element polja, podniz, ili izraz. u

slu~aju slovnih promenljivih, du`ina mora ta~no da odgovara,

medjutim svaki fiktivni argument du`ine *(*) uzima du`inu

stvarnog argumenta. Teku}a vrednost du`ine mo`e da se nadje

unutarnjom funkcijom LEN.

Ako je stvarni argument izraz koji se sastoji od vi{e

promenljivih, onda potprogram ne sme da dodeljuje nove vrednosti

odgovaraju}oj fiktivnoj promenljivoj, naime, izraz se izra~unava

samo jednom. Npr. ako sadr`i indeksne reference, promene u toku

potprograma ne menjaju element polja kojim se dobija vrednost

izra~unata potprogramom.

Ako je fiktivni argument polje onda stvarni argument mo`e da

bude: polje, element polja, ili podniz elementa polja. Fiktivni

argumenti mogu imati razli~ite granice dimenzija od stvarnih

argumenata ali ne smeju prelaziti alocirane granice. Ako je

stvarni argument element polja ili podniz elementa polja onda je

njime specificirana osnovna adresa (tj. prvi element) fiktivnog

polja. Treba primetiti da donje granice stvarnih i fiktivnih

argumenata moraju da odgovaraju.

U slu~aju slovnog tipa stvarno polje se tretira kao

kontinualni niz karaktera, ignori{u}i granice elemenata polja,

tako da fiktivni argument polja nesme da bude ve}i po du`ini od

stvarnog polja argumenata. Fiktivni argument polja sa

specificiranom du`inom *(*) uzima du`inu stvarnog argumenta za

svaki element polja.

Ako je fiktivni argument ime funkcije onda stvarni argument

mora da bude ime spoljne, unutarnje ili fiktivne funkcije.

Ako je fiktivni argument ime potprograma, onda stvarni

argument mora da bude ime stvarnog ili fiktivnog potprograma.

Ako je fiktivni argument zvezdica ({to je dozvoljeno samo u

iskazu SUBROUTINE ili u ENTRY iskazu potprograma) onda stvarni

argument mora biti labela izvr{nog iskaza kojoj prethodi zvezdica.

Ovo specificira alternativnu ta~ku povratka.

Ako poziv potprograma uzrokuje da dva ili vi{e fiktivnih

argumenata treba da budu pridru`eni jednom stvarnom argumentu,

onda se ne sme dodeliti vrednost fiktivnom argumentu. Sli~no

pravilo va`i za ~lanove COMMON blokova koji postaju pridru`eni

fiktivnim argumentima. Npr. ako je potprogram specificiran:

SUBROUTINE SUB(X,Y,Z)

COMMON C

a pozivna jedinica sadr`i slede}e iskaze:

COMMON S

CALL SUB(R,R,S)

Onda su X i Y asocirani sa R, a Z i C pridru`eno S tako da u

okviru potprograma nemogu biti pripisane vrednosti nijednom

argumentu X,Y,Z i C.

Ime potprograma ili funkcije mo`e da se prenosi kroz bilo

koji broj poziva potprograma; fiktivno ime mora da se deklari{e u

EXTERNAL iskazu u svakoj programskoj jedinici koja prenosi ime na

drugi potprogram ~ak kada je funkcija unutarnja.

Alternativni return specifikatori u potprogramima nemogu da

budu preneti na drugi nivo potprograma.

RETURN iskazi

vra}aju kontrolu programskim jedinicama koje su zvale funkcijski

ili obi~ni potprogram i imaju oblik:

RETURN

Alternativni oblik koji se mo`e da koristi samo za SUBROUTINE je:

RETURN e

gde je e celobrojni izraz koji specificira broj alternativne

povratne ta~ke u listi argumenata. Ako SUBROUTINE (ili ENTRY)

iskaz sadr`i N fiktivnih argumenata specificiranih zvezdicom, i

vrednost e je u opsegu 1 do N, onda se kontrola vra}a e-toj labeli

u listi argumenata CALL iskaza. Ako e nije u tom opsegu normalni

povratak se de{ava. Npr.:

CALL SUBX(Y,Z,*170,*180,*190)

izvr{avanje

RETURN M

gde M ima vrednost 2, uzrokuje povra}aj kontrole ne na iskaz

neposredno posle CALL ve} na labelu 180.

Premda alternativni povratci nisu u skladu sa principima

strukturnog programiranja, oni mogu biti korisni pri traganju za

gre{kama u potprogramima.

ENTRY iskazi

specificiraju alternativnu ulaznu ta~ku za potprogram:

ENTRY eime(d,d,...d)

gde je eime je ime ulazne ta~ke, a svako d je fiktivni argument.

Ako nema argumenata zagrade mogu da budu izostavljene.

ENTRY iskaz mo`e da se koristi bilo gde u programskoj jedinici

osim u IF bloku ili DO petlji.

Ako se ENTRY koristi u SUBROUTINE onda eime je dodatno ime

potprograma, koje mo`e da se koristi u CALL iskazima u drugim

programskim jedinicama. Fiktivni argumenti moraju da slede pravila

za SUBROUTINE iskaz.

Ako se ENTRY koristi u FUNCTION potprogramu, onda je eime dodatno

ime funkcije koje se mo`e koristiti u pozivima funkcije. Fiktivni

argumenti moraju tada da slede pravila za FUNCTION iskaz.

Ako je FUNCTION ime slovnog tipa, sva ostala eimena moraju biti

slovnog tipa i iste du`ine. Ako je samo jedan du`ine *(*) onda svi

moraju imati du`inu *(*).

Lista argumenata za svaki ENTRY iskaz mo`e da bude razli~ita ali

pri svakom ulazu fiktivni argumenti drugih ulaza ne sme se

koristiti ni na koji na~in osim ako nisu fiktivni argumenti

aktuelnog ENTRY.

Kori{}enje alternativnih ENTRY ta~aka nije u skladu sa principima

modularnog programiranja, ali mo`e da bude pogodno u nekim

slu~ajevima.

Funkcije u iskazu

Odnos koji dovoljno jednostavan da se mo`e formulisati u jednom

iskazu nazivaju se iskazne funkcije ili funkcije u iskazu i mogu

se koristiti samo u okvirima jedne programske jedinice. Funkcija i

argumenti mogu da se pojave u iskazima tipa promenljive. Op{ti

oblik:

fime(d,d,...,d) = izraz

gde je fime simboli~ko ime funkcije a svako d je fiktivni

argument, odnosno njegovo ime, a izraz je onaj koji defini{e

funkciju. U ovom izrazu nemo`e se na}i iskazna funkcija koja je

definisana u iskazima koji slede, kao ni slovni podaci promenljive

du`ine, ili bilo kakvi podnizovi. Imena fiktivnih argumenata su

lokalna za iskaznu funkciju i mogu se koristiti nezavisno u

ostatku programa. Primer:

LOGICAL DIGIT

CHARACTER CHAR

DIGIT(CHAR) = CHAR.GE.'0'.AND.CHAR.LE.'9'

VABS(X,Y,Z) = SQRT(X**2+Y**2+Z**2)

Unutarnje funkcije

Specifi~no ime funkcije je potrebno samo ako ga treba predati kao

stvarni argument potprograma, u svim drugim slu~ajevima se mo`e

zanemariti. Treba primetiti da slede}e in line funkcije (videti

tabelu 2) nemogu da budu predate kao stvarni argumenti; specifi~na

imena svih ostalih funkcija koje se koriste na ovaj na~in moraju

da budu deklarisane u INTRINSIC iskazu.

Tabela 2 navodi unutarnje funkcije standardnog FORTRAN-a. Treba

primetiti da standard ne zabranjuje ostvarivanje dodatnih

funkcija.

Uglovi se mere u radijanima za sve trigonometrijske funkcije.

Ilegalno je koristiti argumente koji bi dali matemati~ki

nedefinisan rezultat, ili rezultat koji je van opsega brojanja.

Ako se ime unutarnje funkcije pojavi u EXTERNAL iskazu, ili kao

ime polja, ili ime fiktivnog argumenta, onda gubi svojstvo

unutarnje funkcije u toj programskoj jedinici.

Iskazi za specificiranje

IMPLICIT iskaz

Tip podataka se mo`e postaviti eksplicitno iskazom tipa ili

FUNCTION iskazom, ina~e je tip odredjen prvim slovom imena i to

slova I do N su integer, a ostali su real tip. IMPLICIT iskaz

mo`e da se koristi da se ovo implicitno pravilo promeni za sva

simboli~na imena u programskoj jedinici. INTRINSIC iskaz ne uti~e

na tip unutra{njih funkcija. Primer op{teg oblika:

IMPLICIT tip(c,c,...c), tip(c,c,...c)...

Vi{e IMPLICIT iskaza mo`e biti u jednoj programskoj jedinici, ali

se zna~enje jednog slova ne sme menjati vi{e puta. Primer:

IMPLICIT CHARACTER*80(C), COMPLEX(Q,X-Z)

 

PARAMETER iskaz

Ovaj iskaz se koristi da da simboli~no ime konstanti, koje kasnije

mo`e da se koristi u programu umesto konstante. Op{ti oblik iskaza je:

PARAMETER (cn = ce, cn = ce, cn = ce)

gde je cn simboli~no ime, ce su izrazi za definisanje konstanti i

mo`e da sadr`i stvarne ranije definisane konstante, zagrade i

operatore (ali ** mo`e se koristiti samo celobrojne brojeve),

medjutim, pozivi na funkcije nisu dozvoljeni.

Ako ime slovne konstante ima du`inu specificiranu sa *(*), onda

stvarna du`ina je ona koja je pridodata PARAMETER iskazom. Npr.:

PARAMETER(LOGN=8,NPTS=2**LOGN)

DIMENSION INDEX(LOGN),X(NPTS),Y(NPTS,LOGN)

CHARACTER*(*)TITLE

PARAMETER(TITLE='TABLE OF RESULTS')

PARAMETER(PI=3.14159, HPI=PI/2, FMAX=NPTS/(2*PI))

Deklarisanje polja

Ime polja mo`e da se nadje u vi{e specifikacija, ali dimenzije

smeju da budu specificirane samo jednom, {to se mo`e u~initi bilo

kojim iskazom tipa ili COMMON, ili DIMENSION iskazom.

Polja mogu imati 1 do 7 dimenzija od kojih svaka mo`e da ima

definisane gornju i donju granicu. Ako nije specificirana donja

granica za nju se podrazumeva vrednost 1.

Oblik deklaracije polja je

a(d)

gde je a simboli~ko ime polje a d je lista granica dimenzija

odvojenih zarezima od kojih svaka ima oblik:

lb:ub ili ub

gde obe granice mogu biti iskazane u obliku izraza sa konstantama,

npr.:

PARAMETER (NPTS=1024)

REAL X(NPTS),Y(-5:5,0:NPTS-1),Z(2,2,2,2,2,2)

LOGICAL LEAPYR(80:89)

Ako je polje fiktivni argument u potprogramu (tako da je stvarna

dimenzija odredjena u drugoj programskoj jedinici), postoje dve

opcije: mo`e biti podesivo polje ili polje pretpostavljene veli~ine.

Podesivo polje ima granice dimenzija specificirane izrazima

celobrojnih promenljivih koje se predaju potprogramu preko liste

argumenata ili COMMON bloka. Ovi izrazi nemogu da sadr`e reference

na polja odnosno njihove elementa kao ni pozive funkcija. Stvarne

granice fiktivnih argumenata se izra~unavaju samo pri svakom ulazu

u potprogram, ali se ne menjaju pri izvr{avanju. Npr.:

SUBROUTINE SMOOTH(RAW,NPTS,M,RESULT,FILTER)

COMMON /SHAPE/LX,LY

REAL RAW(NPTS),RESULT(NPTS/M),FILTER(0:LX,0:LY)

Polje predpostavljene veli~ine ima gornju granicu svoje poslednje

dimenzije specificiranu zvezdicom {to predstavlja nedefinisanu

veli~inu. Po{to stvarna veli~ina nije poznata u okviru

potprograma, polja se u ovom slu~aju nesmeju koristiti bez indeksa

u izvr{nim iskazima, kao {to su READ i WRITE. Primeri:

FUNCTION EXPAND(TABLE,BIGGER)

COMPLEX TABLE(*), BIGGER(10,-1:*)

Primedba: Mnogi FORTRAN sistemi uklju~uju opciju provere granica

polja, koja je korisna pri razvoju programa, ali koja nemo`e biti

primenjena na polja pretpostavljene veli~ine, tako da je bolje

koristiti podesivo polje kadgod je informacija o veli~ini dostupna.

Iskaz o tipu

Ovi iskazi se koriste da promene ili potvrde tip podataka

pridru`en odredjenim simboli~kim imenima. Pored toga mo`e se

koristiti za specificiranje dimenzija polja.

CHARACTER iskaz specificira pored toga du`inu svakog slovnog

podatka:

CHARACTER*len,v*len,v*len,...,v*len

gde je v ime polja, konstante, promenljive ili funkcije, a svako

*len je opciona specifikacija du`ine, koja se sastoji od zvezdice

pra}ene bilo integerom ili integer izrazom u zagradama. Zarez pre

prvog v je takodje opcion. Podrazumevana du`ina cele liste mo`e

da se da posle CHARACTER klju~ne re~i.

Ako du`ina nije data podrazumeva se jedan.

U slu~aju fiktivnih argumenata za potprogram (ili ime funkcije)

du`ina mo`e biti specificirana kao *(*), {to predstavlja podesivu

du`inu. Stvarna du`ina je ona koja je deklarisana u programu koji

poziva potprogram, koja se prenosi automatski.

Oblik drugih iskaza tipa je:

tip v,v,...,v

gde je tip jedan od INTEGER, REAL, DOUBLE PRECISION, COMPLEX OR

LOGICAL.

Svako v je deklarator polja ili ime konstante, promenljive, polja ili funkcije.

Primeri:

DOUBLE PRECISION X,FUNC,Z(100)

CHARACTER*30NAME,ADDRES(5)*20,ZIP*5,ACCNT(500)

Ime unutarnje funkcije (intrinsic) ne treba da se nadje u iskazu tipa.

DIMENSION iskaz

Se koristi da da specificira du`inu polja, tip podataka je

odredjen imenom ukoliko se ne nalazi u iskazu tipa. Oblik je:

DIMENSION a(d), a(d),...,a(d)

gde je svako a(d) deklarator polja.

COMMON iskazi

se koriste za deklarisanje komon blokova (common blocks) koji

predstavljaju oblasti memorijskog prostora koji je dostupan dvema

ili vi{e programskih jedinica. Imenovani komon blokovi moraju da imaju istu

du`inu (mereno u memorijskim jedinicama) u svakoj programskoj jedinici: oni su

korisni za razmenu podataka izmedju programskih jedinica umesto

ili pored potprogramskih argumenata.

Blank (ili neimenovani) komon blokovi mogu da imaju razli~ite

du`ine u razli~itim programskim jedinicama: namenjeni su

zajedni~kom kori{}enju memorije za razli~ite svrhe u svakoj od

razli~itih programskih jedinica, odnosno za privremeni radni

prostor.

Op{ti oblik iskaza je:

COMMON /cbn/vlist,/cbn/vlist,...,/cbn/vlist

gde su cbn simboli~ka imena, koja se izostavljaju za blank komon

blokove, a svaka vlist je lista promenljivih , polja, i

deklaratori polja odvojeni zarezima, koje mogu biti izostavljene

ispred kose crte. Ako je blank komon prvi na listi prvi par kosih

crta mo`e da bude izostavljen. Npr.:

COMMON WORK(1000), SPACE(2000),/IMAGE/CORNER(2,4)

Komon blok koji sadr`i bilo koji podatak slovnog tipa mora da

sadr`i samo karaktere tog tipa.

Imena komon blokova su globalna ali sadr`aji vlista imaju lokalna

imena, koja mogu biti razli~ita u svakoj programskoj jedinici. Ona

su pridru`ena samo po polo`aju u memorisanoj sekvenci. Informacija

mo`e da se prenese iz jedne programske jedinice u drugu samo preko

podataka istog tipa.

Ako se isti programski blok istog imena pojavljuje vi{e puta u

programskoj jedinici, odgovaraju}e liste su spojene zajedno

redosledom pojavljivanja.

Imenovani komon blokovi se inicijalizuju DATA iskazima u BLOCK

DATA programskim jedinicama.

Blank komon blokovi nemogu da se inicijalizuju DATA iskazima.

Sadr`aj blank komona ili bilo kog komon bloka koji se pojavljuje u

glavnom programu nikad nemo`e biti nedefinisan.

Sadr`aji ostalih blokova, koji se koriste u potprogramima se

nemogu sa~uvati pri izlazku iz potprograma ukoliko blok nije

prisutan u programskoj jedinici koja je potprogram zvala, ili ako

nije imenovan u SAVE iskazu.

EQUIVALENCE iskaz

se koristi da prisili dve ili vi{e promenljivih ili polja da dele

isti memorijski prostor. Za njih se onda ka`e da su asocirane. Ova

asocijacija mo`e da bude korisna za {tednju memorije ili mo`e da

bude povoljno da se imena varijabli pridru`e elementima polja.

Op{ti oblik iskaza je:

EQUIVALENCE (vlist),(vlist),...,(vlist)

gde su vlist liste dva ili vi{e ~lanova odvojenih zarezima, koji

mogu biti promenljive, polja, elementi polja, ili podnizovi.

Fiktivni argumenti potprograma (i promenljive koje su takodje

funkcije imena) nesmeju se pojavljivati u listi.

Slovni ~lanovi mogu biti asocirani samo slovnom tipu.

Pojavljivanje jednog elementa polja u listi mo`e dovesti ostale

elemente polja u asocijaciju takodje.

FORTRAN IV je dozvoljavao da se multi dimenziona polja koriste sa

manje indeksa no {to je odredjeno njihovom dimenzionalno{}u. To

nije dozvoljeno u FORTRAN 77, ali mogu}e da se koristi

bezindeksno ime polja u listi da predstavlja prvi elemenat polja.

Dva razli~ita elementa polja nesmeju biti asocirana, direktno ili

indirektno, istoj memorijskoj lokaciji. Sli~no va`i i za

podnizove.

Ako je jedan ~lan komon bloka prikazan u EQUIVALENCE iskazu, svi

asocirani ~lanovi su preneti u common blok.

Ilegalno je asocirati ~lanove razli~itih common blokova direktno

ili indirektno.

Premda se common blok nesme pro~iriti nani`e, mo`e se pro{iriti

navi{e (ali imenovani common blokovi moraju da imaju istu du`inu u

svim programskim jedinicama). Npr.:

REAL X(100,6),Y(1024),ROWSIX(100)

EQUIVALENCE (YLAST,Y(1024)),(ROWSIX,X(1,6))

EXTERNAL iskaz

slu`i da deklari{e simboli~ko ime za spoljnu proceduru tako da se

mo`e koristiti kao argument u potprogramu. Mo`e se takodje

koristiti za povezivanje BLOCK DATA programske jedinice za

pozivaju}u programsku jedinicu. Uobi~ajeni oblik iskaza je:

EXTERNAL ime,ime,...,ime

gde je svako ime spoljna funkcija, potprogram, blok podataka

jedinica ili fiktivna funkcija ili potprogram. Treba napomenuti da

INTRINSIC iskaz ima isto zna~enje za funkcije ostvarene FORTRAN

sistemom.

Iskazna funkcija se nesme pojaviti u EXTERNAL iskazu, ako se

unutarnja funkcija ipak pojavi, onda to ime ne poziva vi{e

unutarnju funkciju u toj programskoj jedinici.

INTRINSIC iskaz

slu`i za deklarisanje simboli~kog imena kao unutarnje funkcije

tako da mo`e da bude kori{}eno kao stvarni argument u pozivu

potprograma. Op{ti oblik je:

INTRINSIC fime,fime,...,fime

gde su sva fime imena unutarnjih funkcija.

Treba primetiti da imena nekih unutarnjih funkcija, koje su in-line

funkcije nemogu da se prenesu kao stvarni argument.

Slede nekoliko primera primena INTRINSIC i EXTERNAL iskaza:

INTRINSIC SINH, COSH

EXTERNAL MYFUNC

CALL GRAPH(SINH)

CALL GRAPH(MYFUNC)

END

SUBROUTINE GRAPH(FUNC)

EXTERNAL FUNC

CALL PLOT(FUNC,0.0,3.14)

END

SAVE iskaz

se koristi da promenljive i polja (uklju~uju}i i imenovane komon

blokove, ukoliko se blok ne nalazi u pozivaju}oj jedinici ili vi{e

u strukturi, u svakom slu~aju komon blokovi mogu biti sa~uvani samo

u celosti) u potprogramu ostanu definisani i kada se kontrola

vrati pozivaju}oj programskoj jedinici. Oblici iskaza su:

SAVE\ ili

SAVE s,s,...,s

gde je svako s ime promenljive, polja ili ime komon bloka izmedju

kosih crta, npr.:

SAVE X,Y,Z,/MYCOM/

ako se SAVE koristi bez argumenata onda se ~uvaju svi odgovaraju}i

oblici iz datog potprograma.

Treba primetiti da ako je komon blok definisan u SAVE iskazu u

bilo kom potprogramu, onda mora biti deklarisan u SAVE u svakoj

programskoj jedinici gde se pojavljuje.

DATA iskaz

se koristi da se defini{u po~etne vrednosti za promenljive i

polja:

DATA nlist/clist/,nlist/clist/...,nlist/clist/

gde su nlist liste promenljivih, polja, elemenata polja,podnizova

ili implied DO liste, a sve clist predstavljaju liste konstanti.

Zarezi izmedju / i clist su opcioni.

Imena fiktivnih argumenata, funkcija i sadr`aji blank commona

nemogu biti kori{}eni u DATA iskazima.

Sadr`aji imenovanih komon blokova mogu se inicijalizovati samo

DATA iskazima u okviru BLOCK DATA programske jedinice.

Sadr`aj u clist mogu ~initi stvarne ili imenovane konstate;

ukoliko nekoliko sukcesivnih konstanti imaju iste vrednosti,onda

se to mo`e izraziti sa r*c, gde je r faktor ponavljanja, a r i c

mogu biti stvarne ili imenovane konstante. Ukupan broj konstanti u

clist mora odgovarati broju podrazumevanom u nlist. Ime polja bez

indeksa stoji za svaki elemenat polja. Ako su dve veli~ine

asocirane EQUIVALENCE iskazom, samo jedna od njih se mo`e

inicijalizovati DATA iskazom.

Implied DO liste oblika:

(alist,iv=e1,e2,e3) ili

(alist,iv=e1,e2)

gde je alist lista elemenata polja uklju~enih u implied DO, iv je

celobrojna promenljiva implied DO, a e1, e2, i e3 su izrazi

celobrojne konstante koje mogu sadr`ati implied DO promenljive iz

spoljnih implied DO petlji. \1Pravila su sli~na onima iz DO iskaza

izuzev da su samo celobrojni i pozitivni podaci dozvoljeni.

Pravila za pretvaranje tipa podataka su ista kao za odgovaraju}e

iskaze pridru`ivanja.

Primeri:

PARAMETER (NX=64, NY=80, NTOTAL=NX*NY)

REAL ALLSET(NS,NY), SPARSE(NX,NY)

DATA ALLSET/NTOTAL*0.0/

DATA ((SPARSE(J,I),I=3,7,2),J=1,5)/0.0,14*2.5/

CHARACTER*8 A,B,C

DATA A,B,C/'PADDED','TRUNCATED','EXACTFIT'/

Iskazi za pridavanje vrednosti

promenljivoj ili elementu polja pojavljuju se u slede}a ~etiri

oblika:

pridavanje aritmeti~ke vrednosti ima oblik:

v=e

gde je v promenljiva ili element polja aritmeti~kog tipa, a e je aritmeti~ki izraz.

pridavanje logi~ke vrednosti ima oblik:

v=e

gde je v logi~ka promenljiva ili elemenat polja, a e je logi~ki izraz.

Treba primetiti da logi~ki izraz mo`e da sadr`i relacione izraze

uklju~uju}i aritmeti~ke i slovne izraze. Primer:

LOGICAL LIMITS(10)

LIMITS(K)=R(K).GE.RMIN.AND.R(K).LE.RMAX

pridavanje slovne vrednosti

ima oblik:

v=e

gde je v slovna promenljiva, element polja ili podniz, a e je slovni izraz.

Nijedan od slovnih znaka definisanih u v ne sme biti pozvan u e.

Ako je du`ina v ve}a od e, dodaju se prazna mesta sdesna, ako je v

kra}e od e suvi{ni znaci se ignori{u. Ako je v podniz, nijedan

drugi znak niza nije promenjen pridavanjem vrednosti podnizu.

ASSIGN iskaz

se koristi da prida vrednost celobrojne promenljive labeli iskaza.

Op{ti oblik je:

ASSIGN s TO v

gde je s labela izvr{nog ili FORMAT iskaza u istoj programskoj

jedinici, a v je celobrojna promenljiva.

Promenljiva v se potom mo`e koristiti u istoj programskoj jedinici

u pridru`enom GO TO iskazu ili kao format identifikator u READ,

WRITE or PRINT iskazu. Dok se promenljiva ne pridru`i nekoj

celobrojnoj vrednosti, nesme se koristiti u aritmeti~kim izrazima

ili na bili koji drugi na~in.

Premda je pridru`eno GO TO zastareo iskaz, ASSIGN pru`a mogu}nost

jednostavnog izbora formata u vreme izvodjenja programa. Primer:

101 FORMAT(10G15.7)

ASSIGN 101 TO MYFORM

WRITE(LP,MYFORM) ARRAY

Iskazi za kontrolu

Prenos kontrole medju programskim jedinicama vr{i se ne samo

kontrolnim iskazima, ve} i END i ERR in I/O iskazima, ili

alternativnim povratcima iz CALL iskaza.

Ilegalno je prenositi kontrolu u DO petlje ili IF blokove. Prenos

iz ovih struktura van njih je dozvoljen.

Bezuslovni GO TO iskaz

ima oblik:

GO TO s

gde je s labela izvr{nog iskaza u istoj programskoj jedinici.

Izra~unati GO TO iskaz

prenosi kontrolu jednom od nekoliko iskaza ve} prema vrednosti

celobrojnog izraza i ima oblik:

GO TO (s,s,...,s),e

gde su svi s labele izvr{nih iskaza u istoj programskoj jedinici,

a e je celobrojni izraz, zarez ispred e je opcioni. Ista labela se

mo`e pojaviti vi{e puta u listi. Ako ima ukupno N labela u listi i

e ima vrednost u opsegu 1 do N, onda se kontrola prenosi na labelu

koja ima vrednost e.

Ako e ima vrednostt manju od 1 i ve}u od N kontrola se prenosi na

slede}i iskaz u programu, tj. GO TO nema efekta. Primer:

GOTO(100,200,300,100)MOD(KOUNT,5) + 1

Pridani,pripisani GO TO iskaz

Mada zastareo, zadr`an je radi kompatibilnosti sa FORTRAN IV. On

prenosi kontrolu na iskaz koji ima labelu koja je pripisana

celobrojnoj promenljvoj u ASSIGN iskazu. Primeri:

GO TO v ili

GO TO v(slist)

gde je v celobrojna promenljiva trenutno pripisana vrednosti

labele izvr{nog iskaza u istoj programskoj jedinici. Lista labela

slist je opciona, ali ako je prisutna kontrola mora biti predata

jednoj od labela u toj listi.

Blok IF iskaz

omogu}uje uslovno izvr{avanje ~itavih blokova iskaza i ima oblik:

IF (lizr1) THEN

block1

ELSE IF(lizr2) THEN

block2

ELSE

else block

END IF

Gde su lizr logi~ki izrazi, a svaki blok sadr`i proizvoljan broj

izvr{nih iskaza izuzev END.

Svaki blok iskaza posle IF ili ELSE IF se izvr{ava ako su

odgovaraju}i logi~ki izrazi true, a else-blok se izvr{ava onda ako

su svi IF i ELSE IF pre njega false.

ELSE IF iskaz kao i odgovaraju}i blok mogu se izostaviti ili

ponoviti proizvoljan broj puta.

ELSE iskaz kao i odgovaraju}i blok se takodje mogu izostaviti.

END IF iskaz mora da bude prisutan za svaki IF - THEN iskaz.

Skokovi nisu dozvoljeni u bilo koji blok, ali skokovi iz blokova

su dozvoljeni uklju~uju}i i po~etni IF - THEN iskaz.

Bilo koji blok mo`e da sadr`i DO petlje ili druge IF blokove pod

uslovom da su korektno ugnjezdeni, tj. da je svaka od ovih formi

kompletno sadr`ana u jednom bloku.

Logi~ki IF iskaz

omogu}ava uslovno izvr{avanje jednog iskaza i ima oblik:

IF(lizr)st

gde je lizr logi~ki izraz, a st je bilo koji izvr{ni iskaz izuzev

DO, IF - THEN, ELSE IF, ELSE, END IF, END ili drugi logi~ki IF.

Iskaz st se izvr{ava samo ako lizr ima vrednost true. Primer:

IF(X.GT.0.5) CALL MODIFY(X)

Aritmeti~ki IF iskaz

je zastarela forma zadrana radi kompatibilnosti sa FORTRAN IV, i

ima oblik:

IF(e)s1,s2,s3

gde je e celobrojni, realni ili izraz dvostruke preciznosti, a

svako s je labela izvr{nog iskaza.

Kontrola se prenosi na prvu labelu za negativne vrednosti izraza,

za nulu na drugu, a za pozitivne na tre}u.

DO iskaz

se koristi da defini{e DO petlju, koja mo`e da sadr`i bilo koji

broj izvr{nih iskaza izuzev END i izvr{ava se ponovo sa regularnom

sekvencom vrednosti promenljive koja se zove DO promenljiva. Npr.:

DO s,v = e1,e2,e3 ili

DO s,v = e1,e2

gde je s labela izvr{nog iskaza, v je promenljiva celobrojnog,

realnog ili tipa dvostruke ta~nosti, a svako e je izraz

odgovaraju}eg tipa. Zarez posle labele je opcija ali se

preporu~uje. Primer:

DO 55,N=-100,MAX(LIMIT,100),ISTEP(K)

DO petlja se sastoji iz svih izvr{nih iskaza posle DO sve do

linije labele s, tj. uklju~uju}i i nju. Iskaz na ovoj liniji ne

sme da bude: bezuslovni ili pridru`eni GOTO, aritmeti~ki ili blok

IF, ELSE, ELSE IF, RETURN, STOP, END, ili drugi DO iskaz. Medjutim,

mo`e da bude logi~ki IF iskaz.

DO petlja mo`e da sadr`i CALL iskaze, pozive na funkcije i potpune

IF-END IF blokove kao i druge kompletne DO petlje.

CONTINUE je fiktivni iskaz specijalno za kraj DO petlje, te se

njegova upotreba jako preporu~uje.

DO promenljiva, v, dobija pridru`enu vrednost, u sukcesivnim

prolazima kroz petlju, od e1 do e2 sa korakom e3, ako korak nije

naveden podrazumeva se da je jedinica.

DO promenljiva mo`e da se poziva u petlji, ali joj se nesme

pridru`ivati nova vrednost.

Izrazi e1, e2, e3 specificiraju broj iteracija. Svaki izraz se

pretvara u tip podataka koji odgovara v i onda se odbroj odredjuje

prema:

MAX(INT((e2 - e1 + e3)/e3),0

Vrednost e3 nesme biti 0 ali sme biti negativna ~ime se dobija

opadaju}a sekvenca vrednosti v.

Izrazi e1, e2 i e3 se izra~unavaju samo jednom kada se DO iskaz

izvr{ava, a ne ponovo pri iteracijama, tako da promene u njihovim

vrednostima nemaju efekat na odbroj petlje.

Kada se petlja zavr{i regularno promenljiva v ima vrednost za

jedan prolaz ve}u od odbroja.

Premda su sada realni i dvostruka ta~nost dozvoljeni treba biti

oprezan pri radu sa njima jer se pri zaokrugljivanju prema ranije

datom izrazu mogu desiti znatna odstupanja. Pri radu sa

celobrojnim nema tih problema.

CONTINUE iskaz

smi{ljen je kao o~it kraj DO petlje, ali se mo`e da koristi bilo

gde u programu gde je dozvoljen izvr{ni iskaz. Sam iskaz ne

uzrokuje bilo kakvu radnju ili efekat.

STOP iskaz

zavr{ava izvodjenje programa i vra}a kontrolu operacionom sistemu:

STOP ili

STOP m

gde je m niz do pet decimalnih brojeva ili slovna konstanta. Ova

vrednost je dostupna korisniku (ali postoje razlike medju

sistemima u na~inu kako se to izvodi, npr.:

STOP 'ERROR ATT LINE 19 OF ROUTINE MADFULL'.

PAUSE iskaz

je sli~an STOP iskazu, ali on samo privremeno suspenduje program.

Izvr{avanje programa se nastavlja kada se odgovaraju}a komanda,

koja je potpuno sistemski zavisna, da operacionom sistemu. Zbog

ove nestandardnosti PAUSE ne treba koristiti u prenosivom

software-u, premda je korisna u interaktivnim sistemima. Oblik je:

PAUSE ili

PAUSE m

gde m ima isto zna~enje kao u STOP iskazu.

END iskaz

Ovaj iskaz se mora i jedino mo`e pojaviti na kraju svake

programske jedinice.

END je izvr{ni iskaz i mo`e da ima labelu. U glavnom programu ima

ulogu STOP, a u funkciji ili podprogramu efekat RETURN iskaza.

Ulazno izlazni iskazi

Postoje tri grupe ulazno/izlaznih iskaza:

READ, WRITE i PRINT iskazi izvode stvarni prenos podataka.

BACKSPACE, ENDFILE i REWIND iskazi izvode pomo}ne operacije.

Obe ove grupe koriste koriste celobrojne brojeve za ozna~avanje

spoljnih datoteka i uredjaja, dok operacioni sistem obi~no koristi

imena za iste.

Tre}a grupa, OPEN, CLOSE i INQUIRE su namenjeni za

odredjivanje odnosa brojeva logi~kih jedinica i imena datoteka pri

izvr{avanju programa.

Svi u/i iskazi su globalnog tipa: posle OPEN iskaza za neku

datoteku u/i operacije sa njom mogu da se vr{e u bilo kojoj

programskoj jedinici.

Pre-povezane datoteke

u FORTRAN-u olak{avaju u/i bez upotrebe OPEN iskaza.

Standardne u/i datoteke se koriste sa zvezdicom ili PRINT iskazom.

Npr. slede}a dva iskaza imaju isti efekat:

PRINT 11,A,B,C

WRITE(*,11)A,B,C

Stvarno odredi{te ovih datoteka je zavisno od konkretnog sistema,

mo`e biti {tampa~ ili konzola i sl. Za ulaz se koristi sli~ni

oblik:

READ(*,5)X,Y,Z ili

READ 5,X,Y,Z

Klju~ne re~i

Kontrolni parametri svih u/i iskaza se specificiraju pomo}u

'klju}na re~=vrednost' formata radije nego preko liste poziciono

zavisnih parametara. Sa klju~nim re~ima parametri se mogu

pojavljivati u bilo kom redosledu. Radi kompatibilnosti sa

FORTRAN IV, a i radi jednostavnosti, UNIT= i FMT= klju~ne re~i

mogu se izostaviti ako su prvi i drugi respektivno. Npr.:

WRITE(LPT,44)P,Q,R je identi~no

WRITE(UNIT=LPT,FMT=44)P,Q,R

Primedba: kada je slovni izraz dozvoljen kao u nekoliko slu~ajeva

OPEN, CLOSE i INQUIRE, svi blankovi na kraju slovnog niza se

ignori{u.

UNIT identifikator

mora biti prisutan u svakom u/i iskazu (osim za jednu formu

INQUIRE). Obi~no se pojavljuje u obliku UNIT=u ali mo`e biti samo

u ako je prvo u listi. u ima tri mogu}a oblika:

mo`e biti celobrojni izraz sa nenegativnom vredno{}u za

ozna~avanje broja logi~ke jedinice;

zvezdica i ovde ozna~ava pre-povezane u/i datoteke;

slovni znak se koristi samo u READ i WRITE iskazima za interni prenos datoteka:

u je tada slovna promenljiva, polje ili element polja, ili podstring koji koji sam ~ini

internu datoteku.

ERR, END i IOSTAT iskazi

Svi u/i iskazi mogu da sadr`e:

ERR=s

gde je s labela izvr{nog iskaza u istoj programskoj jedinici.

Kontrola se prenosi ovom iskazu u slu~aju gre{ke pri u/i operaciji.

Alternativni ili dodatni na~in detektovanja gre{aka je:

IOSTAT=iv

gde je iv celobrojna promenljiva ili element polja. Po izvr{enju

u/i iskaza vrednost iv se stavlja na nulu ako nema gre{aka ili na

pozitivan broj koji ozna~ava tip gre{ke ukoliko se ista dogodila.

Nomenklatura gre{aka je zavisna od sistema.

Po izvr{enju READ iskaza, iv dobija negativnu vrednost ako se

do{lo do end-of-file (EOF).

END=klju~na re~ mo`e da se koristi samo u READ iskazima

primenjenim na sekvencijalne ili interne datoteke:

END=s

gde s predstavlja labelu izvr{nog iskaza kome se predaje kontrola

ukoliko se dodje do EOF.

Ukoliko END ili ERR situacije nastanu u toku izvr{avanja READ

iskaza, poneki ili svi podaci u u/i listi mogu da budu nedefinisani.

Vrste ulaza/izlaza

FORTRAN 77 koristi {est tipova u/i, ali sa nekoliko izuzetaka,

nije dozvoljeno da se me{aju razli~iti tipovi kod istih datoteka.

Sekvencijalni formatirani u/i

se koristi za prenos podataka ka i iz slovnih fajli i uredjaja kao

{to su tastature, monitori i printeri. Specifikator formata razli~it od zvezdice mora

da se koristi. OPEN iskaz se mo`e da koristi; uobi~ajene predeterminisane vrednosti

su obi~no odgovaraju}e. Svaka READ ili WRITE operacija mo`e da odgovara

jednom ili vi{e zapisa kao {to je navedeno u formatu. U op{tem slu~aju jedan zapis

odgovara jednom redu teksta.

Na`alost, pravila za kontrolu zapisa na printeru FORTRAN IV su

zadr`ana, tako da prvo slovo odnosno znak na svakoj liniji slu`i

za kontrolu pomaka reda i mor biti jedan od slede}ih:

blank izlaz na slede}oj liniji

0 preska~e jednu liniju

1 izlaz na prvom redu slede}e strane

+ izlaz na istoj liniji kao i pre.

Kori{}enje '+' je prili~no zavisno od ma{ine, te tra`i oprez.

Sekvencijalni neformatirani u/i

Neformatirani WRITE se koristi za izlaz u binarnu fajlu, koja se

mo`e da ~ita samo neformatirinim READ. Odsustvo formata ~ini

prenos efikasnijim. Ako se koristi OPEN onda se mora specificirati

FORM='UNFORMATTED'. READ i WRITE iskazi nesmeju da koriste format

specifikatore, a svaki prenos odgovara ta~no jednom zapisu, koji

mo`e biti bilo koje du`ine. Gre{ka je poku{ati da se ~ita vi{e

vrednosti no {to je u zapisu.

Sekvencijalni listom odredjeni u/i

listom odredjeni, ili slobodan format, je koristan za vreme

testiranja, tj dok se nezna stvarni format izlaznih podataka,

specificira se zvezdicom:

WRITE(6,*)'VOLTAGE =',VMAX

PRINT *,X,Y,Z

READ(*,*)A,B,C

format koji je rezultat ovakvog u/i zavisi od svakog podatka i

njegovog brojnog opsega. U op{tem slu~aju brojevi sa pomi~nim

zarezom se koriste sa onoliko cifara koliko ta~nost ma{ine

omogu}ava, a eksponencijalni oblik se koristi ako je potrebno.

Izlazni format je obi~no kompatibilan sa ulazom, jedino se kod

slovnih promenljivih ne kopiraju apostrofi koji su pri ulazu neophodni.

Svaki podatak mora da bude razdvojen od ostalih jednim ili vi{e

praznih mesta, zarezom sa ili bez ramaka, ili novom linijom sa ili

bez razmaka. Ako se kosa crta pojavi kao rastavnica, onda se

zavr{ava sa u~itavanjem i ostatak ulazne liste ostaje nedefinisan.

Ponavljanje iste vrednosti konstante se mo`e specificirati kao

N*vrednost, gde je N broj ponavljanja, npr:

3*-273.12,5*.T,2*'YES'

Vrednosti izra`ene u pomi~nom zarezu, nemoraju da sadr`e zarez ili

eksponent. Kompleksne vrednosti moraju da sadr`e dva broja u

zagradama. Logi~ke vrednosti se sastoje iz jednog od dva slova T

ili F kojima prethodi ta~ka. Slovne promenljive se moraju navesti

u apostrofima.

Ova vrsta transfera se nemo`e koristiti za interne ili fajle

direktnog pristupa.

Neformatirani u/i sa direktnim pristupom

Datoteke direktnog pristupa se ~esto nazivaju datoteke sa

random (nasumce) pristupom. Sastoje se od zapisa koji mogu biti

pisani i ~itani bilo kojim redom. Du`ina zapisa je odredjena pri

stvaranju datoteke. Zapisi su numerisani pozitivni celim brojevima

koji po~inju sa jedan.

Datoteka direktnog pristupa zahteva OPEN sa specifikacijom

ACCESS='DIRECT', a odgovaraju}a du`ina zapisa mora da bude data u

RECL=iznos. Za formatirane datoteke du`ina je u slovnim

jedinicama, dok za neformatirane du`ina zavisi od ma{ine. Svaki

READ i WRITE moraju da koriste REC=iznos da bi se specificirao

broj zapisa. Ako je izlazni zapis kra}i od ove du`ine, ostatak

zapisa ostaje nedefinisan. END=labela se nemo`e koristiti sa

datotekama direktnog pristupa.

Primeri:

OPEN(UNIT=1,FILE='DATA',ACCESS='DIRECT',RECL=40)

WRITE(1,REC=5000)ARRAY

READ(1,REC=LOCN,ERR=900)A,B,C

Formatirani u/i sa direktnim pristupom

Pravila su sli~na prethodnim, ali OPEN iskaz mora da specificira

ACCESS='DIRECT' i FORM='FORMATTED'.Specifikator formata (razli~it

od *) je potreban kod svakog READ ili WRITE. Prenos podataka

po~inje sa zapisom specificiranim sa REC=broj i nastavlja se

sekvencijalno ako format specificira kori{}enje vi{e od jednog

zapisa. Formatirane datoteke direktnog pristupa se obi~no ne mogu

printati ili njima pri}i na bilo koji drugi na~in.

Neformatirani oblik je verovatno efikasniji u ve}ini slu~ajeva.

u/i sa interne datoteke

Ova vrsta READ ili WRITE iskaza je razli~ita od svih ostalih u

tome {to se prenos podataka vr{i od slovne promenljive ili polja

slovnih promenljivih, koja ~ini internu datoteku. Ovo je korisno

kod pretvaranja iz slovnih u neslovne podatke, kao i za ~itanje u

seriji razli~itih formata zapisa kopiranog iz spoljne datoteke.

Svi prenosi su formatirani:slobodan format nije dozvoljen. Na ovaj

na~in se zamenjuju nestandardni iskazi DECODE i ENCODE. Unutarnja

datoteka se nemo`e koristiti sa drugim u/i iskazima osim READ i

WRITE. Datoteka je eksplicitno premotana pre svakog pristupa.

Ako je interna datoteka slovna promenljiva, element polja ili

podniz onda predstavlja jedan zapis. Ako je slovno polje, onda

svaki element slovnog polja predstavlja jedan zapis. Format mora

biti odgovaraju}i. Ako je izlazni zapis kra}i od slovnog podatka,

ostali deo se puni blankovima. Treba primetiti da interna datoteka

nije otvorena sa OPEN tako da se blankovi tretiraju kao

BLANK='ZERO'. Ulazni format treba da po~ne sa BN da bi se ovo

spre~ilo.

OPEN iskaz

se koristi da pove`e logi~ku jedinicu sa datotekom i da se

specifiraju njene karakteristike. Mo`e se otvoriti postoje}a

fajla, stvoriti nova ili promeniti karakteristike postoje}e veze.

Ako je neka druga datoteka ve} povezana sa logi~kom jedinicom, ona

se zatvara pre no {to se nova otvori.Gre{ka je, medjutim, poku{aj

da se otvori ista datoteka na dve razli~ite jedinice. OPEN se mo`e

koristiti na bilo kom tipu datoteka, ali je obavezan za kori{}enje

sa fajlama direktnog pristupa. Iskaz OPEN ima oblik:

OPEN(olist)

gde je olist lista podataka odvojena zarezom od slede}e liste:

UNIT=u

koja specificira broj jedinice i obavezna je.

STATUS=cizraz

gde je cizraz 'OLD' za postoje}u fajlu, 'NEW' za otvaranje nove

fajle, 'SCRATCH' za privremeni radni prostor, ili 'UNKNOWN' koji

se podrazumeva, tj. koji je predeterminisan ako druga~ije nije

navedeno.

FILE=cexp

gde je cexp slovni izraz koji daje ime datoteke; nesme se

koristiti za 'SCRATCH'.

ACCESS=cexp

gde cexp ima oblik 'SEQUENTIAL'(podrazumeva se) ili 'DIRECT'.

FORM=cexp

gde cexp ima oblik 'FORMATTED (podrazumeva se za SEQUENTIAL) ili

'UNFORMATTED'(podrazumeva se za DIRECT).

RECL=iexp

gde je iexp je celobrojni izraz koji specificira du`inu zapisa;

mora da se da za fajle direktnog pristupa. Jedinice su slovnog

oblika za formatirane datoteke.

BLANK=cexp

gde je cexp slovni izraz koji specificira na~in obrade praznih

mesta, mo`e biti 'NULL' koji ih ignorira, ili 'ZERO'.

IOSTAT=iv

daje kod statusa.

ERR=s

odredjuje izlazak u slu~aju gre{ke.

Primeri:

OPEN(UNIT=3,FILE='PRINTOUT',STATUS='NEW')

OPEN(UNIT=N 5,FILE=DEV//MYDATA,STATUS='OLD',ERR=99)

OPEN(UNIT=1,FILE=FNAME,FORM='UNFORMATTED',IOSTAT=KODE)

CLOSE iskaz

Sve datoteke i jedinice se automatski zatvaraju kada prestane

izvr{avanje programa, tako da je CLOSE potreban samo za ponovno

pripisivanje jedinica ili datoteka. Op{ti oblik je:

CLOSE(clist)

gde je clist sastavljeno od:

UNIT=u

koji specificira jedinicu i mora da bude prisutan.

STATUS=cexp

gde je cexp slovni izraz koji ima vrednost 'KEEP'(koja se

podrazumeva za imenovane fajle) ~ime se fajla zadr`ava posle zatvaranja,

ili 'DELETE' ~ime se bri{e.

IOSTAT=iv

{to vra}a statusni kod.

ERR=s

koji specificira izlazak u slu~aju gre{ke.

Primer:

CLOSE(UNIT=15,STATUS='DELETE',ERR=999)

INQUIRE iskaz

omogu}ava da se programom defini{u teku}e karakteristike bilo koje

logi~ke jedinice ili imenovane datoteke. Postoje dve razli~ite

vrste INQUIRE iskaza:

INQUIRE jedinice:

INQUIRE(UNIT=u,ilist)

INQUIRE fajle:

INQUIRE(FILE=cexp,ilist)

gde ilist sadr`i bilo koju od slede}ih stavki, razdvojene zarezima.

Sve one (osim ERR=) pridru`uju vrednost promenljivoj ili elementu polja

koriste}u normalna pravila za iskaze pridru`ivanja.

ERR=s specificira izlaznu labelu pri gre{ci

NUMBER=iv daje broj logi~ke jedinice

RECL=iv daje du`inu zapisa za DIRECT, ina~e je nedefinisao.

IOSTAT=iv daje statusni kod

NEXTREC=iv daje broj slede}eg zapisa kod SEQUENTIAL fajli,

ina~e nedefinisano

EXIST=lv daje .TRUE.ili.FALSE.

OPENED=lv daje .TRUE.ili.FALSE.

NAMED=lv daje .TRUE.ili.FALSE.

NAME=cv daje ime fajle ako ima (ina~e nedefinisano)

ACCESS=cv daje 'SEQUENTIAL' ili 'DIRECT' ili nedefinisano

FORM=cv daje 'FORMATTED' or 'UNFORMATTED' ili je nedefinisan

BLANK=cv daje 'NULL' ili 'BLANK' ili je nedef.

SEQUENTIAL=cv daje 'YES' ili 'NO' ili nedefinisano

DIRECT=cv daje 'YES' ili 'NO' ili nedefinisano

FORMATTED=cv daje 'YES' ili 'NO' ili nedefinisano

UNFORMATTED=cv daje 'YES' ili 'NO' ili nedefinisano

gde su:

iv - celobrojna promenljiva ili element polja

cv - slovna promenljiva ili element polja

lv - logi~ka promenljiva ili element polja

Primeri:

CHARACTER FNAME*10,DS*3

INQUIRE(UNIT=13,NAME=FNAME,DIRECT=DS)

READ, WRITE i PRINT iskazi

READ iskaz prenosi podatke sa interne ili eksterne datoteke listi promenljivih ili

elementima polja.

WRITE iskaz izra~unava listu izraza i prenosi vrednosti internoj ili eksternoj datoteci.

PRINT iskaz je poseban slu~aj WRITE iskaza koji prenosi formatirane ili listom

odredjene podatke u standardne pre-povezane izlazne datoteke.

Ovi iskazi imaju slede}e op{te oblike:

READ(UNIT=u,FMT=fmt,REC=iexp,ERR=s,END=s,IOSTAT=iv)rlist

WRITE(UNIT=u,FMT=fmt,REC=iexp,ERR=s,END=s,IOSTAT=iv)wlist

READ fmt,rlist

WRITE fmt,wlist

Dva poslednja oblika koriste standardne pre-povezane jedinice.

Specifikator jedinice mora biti prisutan, ostali su opcioni.

Klju~ne re~i UNIT= i FMT= mogu da se izostave ako se jedinica i

format specificiraju na prvom i drugom mestu.

Specifikator formata mora biti prisutan za sve osim neformatiranog transfera

podataka. Za listom upravljani prenos je zvezdica. Za druge slu~ajeve mo`e biti

labela FORMAT iskaza, celobrojna promenljiva kojoj je vrednost dodeljena ASSIGN

iskazom, ili slovni izraz ili polje koje sadr`i kompletan format uklju~uju}i i spoljne zagrade.

Specifikator broja zapisa, iexp, je celobrojni izraz sa pozitivnom vredno{}u i mora biti

naveden kada se koriste fajle direktnog pristupa.

Lista podataka READ iskaza, rlist, mo`e biti prazna (u tom slu~aju se preska~e jedan zapis) ili mo`e da sadr`i: promenljive, elemente polja, polja, podnizovi, implied DO list.

Lista podataka WRITE ili PRINT iskaza, wlist, mo`e biti prazna (u kom slu~aju se

dobija prazan izlazni zapis) ili mo`e da sadr`i bilo koju stavku dozvoljenu u rlist kao

i izraze. Izraz mo`e da ima bilo koju formu, ali nesme da sadr`i bilo koju referencu na

funkcije koje uklju~uju dalje u/i operacije. Treba primetiti da je konstanta dozvoljen

oblik izraza. Polje bez indeksa u listi podataka stoji za sve elemente koji se

transmituju u sekvenci. Podesivo polje je dozvoljeno, ali nije dozvoljeno polje

pretpostavljene veli~ine.

Implied DO lista ima oblik:

(dlist,v=e1,e2) ili

(dlist,v=e1,e2,e3)

gde v,e1,e2,e3 imaju isto zna~enje kao u DO iskazu.

dlist mo`e sadr`ati bilo koju stavku koja je dozvoljena u rlist

ili wlist, uklju~uju}i dalje implied DO liste. Npr.:

WRITE(*,*)'TABLE',(X,SIN(X),X=0.0,1.525,0.05)

READ 55,((ARRAY(I,J),I=1,J),J=JMIN,JMAX)

Primedba: redundandne zagrade nisu dozvoljene zbog mogu}e zabune

oko implied DO liste.

REWIND iskaz

se koristi da se sekvencijalna datoteka postavi na po~etak, tj prvi zapis.

Nema nikakvog efekta ako je fajla ve} premotana. Neke jedinice se nemogu

premotati (npr. linijski {tampa~).

Primeri:

REWIND u ili

REWIND(UNIT=u,ERR=s,IOSTAT=iv)

specifikator jedinice je obavezan, ostali su opcioni:

REWIND(UNIT=3,ERR=120

BACKSPACE iskaz

se mo`e koristiti kod sekvencijalnih datoteka za pomeranje unazad

za jedan zapis. Nesme se koristiti na zapise dobijene listom upravljanim izlaznim

iskazima. Oblici ovog iskaza su sli~ni REWIND:

BACKSPACE u ili

BACKSPACE(UNIT=u,ERR=s,IOSTAT=iv)

ENDFILE iskaz

se koristi da zapi{e specijalni end-of-file zapis u sekvencijalnu datoteku. Ovo

mo`e imati zna~aja kod uredjaja kao {to je jedinica magnetne trake, ali nije u

op{tem slu~aju zahtevano zato {to se uslovi end-of-file de{avaju uvek kada READ

iskaz dodje na kraj sekvencijalne fajle. Oblici ovog iskaza su sli~ni REWIND: ,

ENDFILE u ili

ENDFILE(UNIT=u,ERR=s,IOSTAT=iv)

Specifikacija FORMAT

je potrebna pri formatiranim READ, WRITE i PRINT iskazima da bi se

kontrolisalo prevodjenje izmedju internih i eksternih formi pretstavljanja podataka.

Format se mo`e specificirati FORMAT iskazom ili slovnim poljem ili izrazom.

FORMAT iskaz ima oblik:

FORMAT flist

gde se flist sastoji od para zagrada u kojim se nalazi lista edit descriptora

razdvojenih zarezima. Svaki FORMAT iskaz mora da ima labelu. Na FORMAT

se poziva u u/i iskazima bilo direktno navodjenjem labele ili preko celobrojne

promenljive kojoj je pripisana vrednost labele ASSIGN iskazom. Premda FORMAT

iskaz mo`e biti postavljen bilo gde u okviru programske jedinice u kojoj se koristi,

lak{e je posti}i korektan format ako se nalazi dovoljno blizu relevantnom u/i iskazu.

FORMAT iskaz mo`e da se koristi za vi{e u/i iskaza. Ukoliko ne sadr`i apostrofe ili

Holerith edit descriptore mo`e da se koristi i u ulazu i u izlazu, npr.:

READ(5,91)FINAME

91 FORMAT(A/(10G12.3))

WRITE(6,91)'SPECTRUM',(S(I),I=1,NPTS)

Alternativno, kompletna specifikacija formata, uklju~uju}i i spoljne zagrade, mo`e se

specificirati pomo}u slovnog polja ili izraza. Primedba: vode}a prazna mesta i slova na

kraju se ignori{u. Ovo omogu}uje da se konstrui{e ili izmeni specifikacija formata u

toku izvodjenja programa. Kori{}enje slovne konstante je povoljno za jednostavne

formate, npr.:

READ(1,'(10F5.2)',END=90)ARRAY

Specifikacija formata slovnim stavkama mo`e da sadr`i prazna mesta pre leve

po~etne zagrade, a bilo koji karakter posle krajnje desne zagrade se ignori{e. Ako

se ne radi o elementu slovnog polja ve} o slovnom polju, specifikacija se mo`e

protezati na vi{e elemenata polja.

Edit descriptori koji se nalaze u flist mogu imati bilo koju od slede}ih formi:

ed neponavljaju}i edit descriptor

red ponavljaju}i edit descriptor

n red n je broja~ ponavljanja (celobrojni)

(flist)

kompletna specifikacija u zagradama

n(flist)

isto to sa broja~em ponavljanja

Zarezi koji razdvajaju stavke mogu biti izostavljeni na bilo kojoj

strani kose crte ili ta~ke zareza, ili izmedju D,E,F,ili G deskriptora i P deskriptora

neposredno pre njih.

Prazan format, ili onaj koji sadr`i samo neponavljaju}e edit deskriptore mo`e da se

koristi samo sa u/i iskazima koji imaju prazne u/i liste. Npr. da se presko~i jedan

zapis na jedinici 3:

READ(3,'()')

Ponavljaju}i edit deskriptori

svaki od njih odgovara jednoj stavki u u/i listi (osim za kompleksne koji zahtevaju

dva realna deskriptora za prenos).

Iw Iw.m celobrojni podaci

Fw.d decimalni bez eksponenta r d k

Ew.d }Ew.dEe decimalni sa eksponentom e u o

Gw.d }Gw.dEe sa ili bez eksponenta a p m

Dw.d (stari exp.oblik) l l p

Lw logi~ki tip podataka

Aw A slovni tip podataka

gde su d,e,m, i w celobrojne konstante bez znaka, d je broj cifara posle decimalne ta~ke,

e je broj cifara u eksponentu, m je minimalni broj cifara uklju~uju}i ispis vode}ih nula, w je ukupna {irina polja

Novi oblik Iw.m dozvoljava kontrolu vode}ih nula, npr.:

WRITE(*,'(i4.4,i4.0)')12,0

daje na izlazu '0012bbbb' gde b predstavlja blank. na sli~an na~in novi oblici E i

G dozvoljavaju kontrolu {irine eksponenta. Ako ulazno polje sadr`i decimalnu

ta~ku D,E,F i G imaju isti efekat. Pri izlazu F deskriptor nikad ne koristi eksponent, koji

E i D uvek koriste. G deskriptor koristi oblik F ukoliko broj nije

suvi{e mali ili suvi{e veliki kada prelazi na E oblik.

~irina koja se podrazumeva za A deskriptor je du ina odgovaraju}e

slovne stavke u u/i listi.Ako se koristi oblik Aw i w ne odgovara du`ini niza,

vi{ak karaktera sa desne strane se ignori{e, ili se ubacuju blankovi sa leve strane.

Neponavljaju}i edit deskriptori

Ovi deskriptori ne odgovaraju stavkama u/i liste, a oblici su im:

'string' apostrof, ispisuje slovni niz

nHstring ~ini isto (zastarela forma)

Tn tabulator do kolone n

TRn tabulator n kolona udesno

TLn tabulator n kolona ulevo

nX presko~i n kolona (isto kao TRn)

SP znak slede}im pozitivnim brojevima

SS potisni znak pozitivnim brojevima

S sistemski re`im za '+' znak

BN ignorisanje blanka na ulazu

BZ nule umesto blanka na ulazu

kP skaliranje u/i faktorom k / po~inje nov zapis

: zaustavlja skanovanje formata ako je u/i lista zavr{ena

gde je k mala konstanta, a n je pozitivna celobrojna konstanta.

Tabulator deskriptori su pogodni za pravljenje tabela, npr.:

123 FORMAT(T2,'DATE',T22,'LONGITUDE',T42,'LATITUDE')

Oni se mogu koristiti i za preme{tanje stavki na drugo mesto ili

za prenos iste stavke vi{e puta. Npr.:

READ(2,'(A10,T1,F10.0)')NAME,NUMBER

na izlazu presko~ene kolone se pune blankovima ako ranije nisu ispunjene, a

ostale su nepromenjene.

SS,SP, i S deskriptori nemaju efekta na ulaz; na izlazu efekat je aktuelan za ostatak u/i.

Po~etni uslovi, kao i oni posle S su zavisni od ma{ine.

BZ i BN deskriptori kontroli{u tretiranje blankova ulaznih polja. Naime, kada se ~itaju

brojevi, naro~ito celobrojni, sa terminala ili sli~nih uredjaja, kori{}enje BN otklanja

potrebu za da se desno poravnaju brojevi u ulaznom polju. BN se podrazumeva za sve

files otvorene sa OPEN, ali prepovezane fajle i interne fajle tra`e eksplicitno BN na

po~etku svakog ulaznog formata. Primeri (u kojima b zna~i blank):

CHARACTER*6 TEST

TEST='12bb45'

READ(TEST,11)M,N

11 FORMAT(BN,2I3)

{to pripisuje vrednost 12 M i 45 N-u (bez BN vrednost M bi bila 120).

Faktor za skaliranje kP radi kao i u FORTRAN IV, npr.:

WRITE(*,100)(3.14159,I=1,4)

100 FORMAT(T2,F10.2,E10.2,2P,F10.2,E10.2)

stvaraju zapis sli~an ovome:

3.14 0.31E01 314.16 31.4E01

Pri unosu podataka efekat je obrnut. Sa G formatom faktor skaliranja nema efekta ako

je veli~ina u opsegu F formata, ina~e efekat je isti kao za E format.

Edit deskriptor dve ta~ke se koristi kada treba isti format da se koristi za dva ili

vi{e izlaznih iskaza sa listama podataka razli~ite du`ine, npr.:

WRITE(6,11)X

11 FORMAT('X=',F10.2,:,'Y=',F10.2)

Poruka 'Y=' se u ovom slu~aju ne pojavljuje na izlazu jer je izlazna lista ispra`njena

kada pretra`ivanje formata dodje do dve ta~ke.

LITERATURA

1. Chirlian, Paul M.:Microsoft FORTRAN

Markt & Technik Verlag, Haar bei Muenchen, 1984.

2. Koci}, Vlajko i Zoran Konstatinovi}: FORTRAN 77

Univerzitet u Beogradu, Institut za nuklearne nauke "Boris

Kidri~", Vin~a, Beograd, 1990.

3. Kuester, James,L., Joe H. Mize:"Optimization Techniques with

FORTRAN", McGraw-Hill Book Company, New York, 1973.

4. Menda{, Istok, Predrag Milutinovi}, Dragan Ignjatijevi}:

"100 najkorisnijih FORTRAN-skih potprograma", Grupacija Mikro

knjiga, Dragon - bit in`enjering, Beograd, 1991.

5. Metcalf, Michael:"FORTRAN optimization", Academic Press,

London, 1982.

6. Page, Clive:"Pocket Guide FORTRAN 77", Pitman Publishing Ltd,

London, 1983.

7. Parezanovi}, Nedeljko:"Ra~unske ma{ine i programiranje,

programski jezik FORTRAN IV", Privredno-finansijski vodi~

Beograd, 1983.

8. Ridler, Philip:"Pockett Guide to FORTRAN", Pitman Publishing

Ltd, London, 1982.

9. To{i}, Du{an:"FORTRAN 77 zbirka re{enih zadataka", Tehni~ka

knjiga, Beograd, 1991.

10. Wehnes, Harald:"FORTRAN 77 - Strukturierte Programmierung mit

FORTRAN 77", Carl Hanser Verlag, Muenchen, 1985.

11. @okalj, Milan:"FORTRAN IV", Vjesnik, Zagreb, 1969.

 

 

 

INDEKS

A

ACCESS= 24 ,AND 7 ,argumenti potprograma 10 ,aritmeti~ki izrazi 5 ,

aritmeti~ki IF iskaz 22 ,

ASSIGN iskaz 20 ,

B

BACKSPACE iskaz 30 ,

bezuslovni GO TO iskaz 21 ,

BLANK= 27 ,

blank 1 ,

blok IF iskaz 21 ,

BLOCK DATA programska jedinica 8 ,

C

CALL iskaz 10 ,

celobrojni 3 ,

CHARACTER iskaz 6 ,

CLOSE iskaz 28 ,

COMMON iskaz 17 ,

COMPLEX iskaz 4 ,

CONTINUE iskaz 23 ,

D

DATA iskaz 19 ,

deklarisanje polja 15 ,

DELETE 28 ,

DIMENSION iskaz 16 ,

DIRECT 26 ,

DO iskaz 22 ,

DOUBLE PRECISION iskaz 4 ,

dvostruka ta~nost 4 ,

E

ELSE iskaz 11 ,

ELSE IF iskaz 21 ,

END= 24 ,

END iskaz 23 ,

END IF iskaz 21 ,

ENDFILE iskaz 30 ,

ENTRY iskaz 11 ,

EOF= 24 ,

.EQ. 6 ,

EQUIVALENCE iskaz 17 ,

.EQV. 7 ,

ERR= 24 ,

EXIST= 28 , /

EXTERNAL iskaz 18 ,

F

FALSE 7 ,

FILE= 27 ,

fiktivni argument 9 ,

fiktivne funkcije 9 ,

FMT= 24 ,

FORM= 25,

FORMAT iskaz 30 ,

FORMATTED 28 ,

formatirani u/i sa direktnim pristupom 26 ,

FUNCTION 8 ,

funkcijski potprogram 8 ,

funkcije u iskazu 12 ,

G

.GE. 6 ,

glavni program 7 ,

GO TO iskaz 21 ,

.GT. 6 ,

I

IF iskaz 21 ,

imena i oznake 2 ,

IMPLICIT iskaz 15 ,

indeksi 4 ,

INQUIRE iskaz 28 ,

INTEGER iskaz 3 ,

INTRINSIC iskaz 18 ,

IOSTAT= 28 ,

izgled linije 1 ,

iskaz o tipu podataka 16 ,

iskazi za kontrolu 20 ,

iskazi za specificiranje 15 ,

izra~unati GO TO iskaz 21 ,

izrazi 5 ,

izrazi odnosa 6 ,

izrazi sa celobrojnim konstantama 6 ,

izrazi, slovni 6 ,

K

KEEP 28 ,

klju~ne re~i 24 ,

kompleksni brojevi 4 ,

konstante 3 ,

L

labele 3 ,

.LE. 6 ,

linija 1 , /

linija komentara 2 ,

linija nastavka iskaza 2 ,

logi~ki IF iskaz 22 ,

logi~ke promenljive 4 ,

logi~ki izrazi 7 ,

LOGICAL iskaz 4 ,

lokalna i op{ta (globalna) imena 2 ,

.LT. 6 ,

M

MAIN 7,8 ,

N

NAME= 28 ,

NAMED= 28 ,

.NE. 6 ,

neformatirani u/i sa direktnim pristupom 26 ,

neponavljaju}i edit - deskriptori 32 ,

.NEQV. 7 ,

NEW 27 ,

NEXTREC= 29,

NOT 7,

NUMBER= 528 ,

O

OLD 29,

OPEN iskaz 28,

OPENED= 30,

OR 9,

oznake - labele 3 ,

P

PARAMETER iskaz 16,

PAUSE iskaz 25,

po~etna linija 3

polja, indeksi i podnizovi 6,

ponavljaju}i edit - deskriptori 33,

potprogram 12,

potprogram SUBROUTINE 12,

pozivanje na funkcije 12,

pre-povezane datoteke 25,

pridani-pripisani GO TO iskaz 22,

PRINT iskaz 31,

PROGRAM iskaz 10,

programske jedinice 9,

promenljive 3,

prostor u memoriji 5,

R

READ iskaz 31,

READ, WRITE I PRINT iskazi 25, 31,

realni 4,

REAL iskaz 4,

RECL= 28,

redosled iskaza 10,

redosled izra~unavanja 7 ,

RETURN iskaz 13,

REWIND iskaz 32,

S

SAVE iskaz 20,

SCRATCH 27 ,

sekvencijalne datoteke 25 ,

sekvencijalni zapis 26,

sekvencijalni formatirani u/i 26,

sekvencijalni listom odredjeni u/i 27,

sekvencijalni neformatirani u/i 27,

simboli~ka imena 3,

slobodan format 27,

slovni izraz 8,

slovni podnizovi 6,

specifikacija FORMAT 32,

STATUS= 29, 30,

STOP iskaz 10, 24,

struktura programa 9,

SUBROUTINE potprogram 9 ,

T

TRUE 5,

U

ulazno/izlazni iskazi 25 ,

u/i sa interne datoteke 28,

UNFORMATTED 27,29-31

UNIT= 26,

UNKNOWN 29,

unutarnje funkcije 12,15,

unutarnje datoteke 28,

uvod 1,

V

vrste podataka 4,

vrste iskaza 9,

vrste u/i 25 ,

W

WRITE iskaz 31 ,

Z

znakovi i linije 2 ,

Back to top

Predmetni tekstovi se nalaze na serveru lotos.ffh.bg.ac.yu

Predmetni tekstovi se nalaze na serveru lotos.ffh.bg.ac.yu

 

Last Revised:

Back to top