Aleksandar S. Stamatović

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.rs skela@mail.ff.bg.ac.rs skela@rudjer.ff.bg.ac.rs

alekstam@lotos.ffh.bg.ac.rs

Aleksandar.Stamatovic@uibk.ac.at

Web address

Type some text.

Office phone

+381-11-630-152 extension 111 or +x381-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

·       Tridesetak strana FORTRANA

 

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šanja.

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. Odredjivanje 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 predavanja 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 UPRAVLJANJE

Studijska grupa PRIMENJENA FIZIKA I INFORMATIKA

Katedra za METROLOGIJU I PRIMENJENU FIZIKU

semestar peti, nedeljni 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.

Stanja sistema. Stabilnost sistema.

Karakterizacija sistema.

Frekventna metoda analize i sinteze sistema.

Sistemi sa više ulaza i izlaza.

Digitalni sistemi automatskog upravljanja.

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 predavanja prof. A. Stamatovića

2. Prof. dr Milić R. Stojić: Kontinualni sistemi automatskog upravljanja, Naučna knjiga, Beograd, 1988.

3. Prof. dr Milić R. Stojić: Digitalni sistemi upravljanja, Nauka, Beograd, 1990.

Back to top

 

Studijska grupa METEOROLOGIJA

Katedra za opštu meteorologiju

Predmet: METEOROLOŠKA MERENJA

semestar peti, nedeljni fond časova 3+3

ispit: usmeni

 

Merenja temperature , termometri sa tečnošću.

Deformacioni termometri, termografi, električni termometri.

Radijacioni termometri, akustički termometri.

Merenje vlažnosti vazduha.

Psihrometarska metoda merenja vlažnosti.

Merenje padavina i isparavanja.

Merenje zračenja, spektri zračenja Sunca i Zemlje.

Merenje kratkotalasnog i dugotalasnog zračenja.

Merenje vazdušnog pritska.

Greške i korekcije pri merenju vazdušnog pritiska.

Merenje prizemnog vetra.

Merenje vertikalnog profila vetra.

Merenje atmosferskog elektriciteta.

Osmatranje oblaka i odredjivanje vidljivosti.

Merenje vertikalnih gradijenata meteoroloških elemenata.

Merenje strukture meteoroloških elemenata.

Automatske meteorološke stanice.

Radiosondiranje atmosfere.

Meteorološki radari, princip rada.

Vrste meteoroloških radara i njihova primena u meteorologiji.

Meteorološki sateliti.

Meteorološka merenja za potrebe ekologije.

Primene lasera u meteorološkim merenjima.

 

Literatura:

1. Beleške sa predavanja 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, nedeljni fond časova 2+5

ispit: pismeni i usmeni

Uvod.

Korist od meteoroloških informacija.

Svetska meteorološka organizacija (SMO).

Svetsko meteorološko bdenje.

Globalni sistem osmatranja.

Globalni sistem telekomunikacija.

Globalni sistem za obradu podataka.

Evropski centar za srednjeročnu prognozu vremena.

Tehnički aspekti osmatranja i prikupljanja 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 predavanja prof. A. Stamatovića

2. Beleške sa predavanja prof. Z. Janjića

3. D.D Houghton, Ed.: Handbook of Applied Meteorology, John Wiley & Sons, 1985.

Back to top

 

TRIDESETAK STRANA FORTARANA

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