Aleksandar S. Stamatovic
University professor, Ph.D. and M.Sc. In Physics,
B.Sc. In Physical Chemistry at University of Belgrade, Yugoslavia.
Contents
Work Information Hot List Contact Information Current Projects Biographical Information Personal InterestsText related to teaching subjects
( Sorry, Serbian only!)
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 Insert a hyperlink Insert a hyperlink Insert a hyperlink Back to topElectronic mail address
skela@ff.bg.ac.yu skela@mail.ff.bg.ac.yu skela@rudjer.ff.bg.ac.yu
alekstam@lotos.ffh.bg.ac.yu
Aleksandar.Stamatovic@uibk.ac.at
Web address
Type some text.
Office phone
xx381-11-630-152 extension 111 or xx381-11-3282-111 extension 819
Back to topElectron / 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
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.
Video, photography, computers, hiking, skiing, motor boating
Back to topText 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 elektronikaStudijska grupa fizika
Smer A, B, C, D
Katedra za METROLOGIJU I PRIMENJENU FIZIKU
semestar peti, nedeljni fond ~asova 4+2+3
ispit: pismeni i usmeni
Uvodne napomene, definicije i klasifikacija sistema.
Nezavisni izvori napona i struje. Pasivni elementi elektronskih kola.
Omov zakon, Kirhovlljeva pravila, Teveninova teorema o ekvivalentnom izvoru.
Razdelnik napona. Razdelnik napona za naizmeni~nu struju. RC i RL filtri.
Diode, njihove karakteistike i primena u elektronskim kolima.
Bipolarni tranzistor. Najjednostavniji model tranzistora.
Primena tranzistora kao prekida~a.
Emiterski pratioc napona, karakteristike i primena.
Tranzistorski izvor struje, karakteristike i na~ini njihovog pobolj{awa.
Tranzistorski poja~ava~ sa zajedni~kim emiterom, karakteristike i primena.
Obrta~ faze sa jedini~nim poja~anjem i kontinualni pomera~ faze.
Model Ebers-Mola i njegova primena na osnovna kola sa tranzistorima.
Detaljno razmatranje emiterskog pratioca napona i poja~iva~a sa zajedni~kim emiterom. Odre|ivawe ta~ke mirovanja.
Strujna ogledala. Izlazni poja~ava~i, pu{-pul veza.
Darlington spoj i super beta tranzistori. Butsrejping sheme.
Diferencijalni poja~ava~. Milerov efekat.
Primena prou~enih kola u realnim shemama.
Uvod u digitalnu elektroniku. Brojni sistemi.Bulova algebra.
Osnovna logi~ka kola. Sinteza kombinacionih logi~kih kola.
Minimizacija - Karnoove mape.
Kompleksna kombinaciona kola u upotrebi i sheme sa njima.
Dekoderi, ROM, PAL i PLA i njihove primene.
Osnovna sekvencijalna kola.
Broja~i i registri. Monostabilna kola.
Kompleksna sekvencijalna kola u upotrebi i sheme sa njima.
Tranzistori sa efektom polja, tipovi i karakteristike.
Osnovna analogna digitalna kola sa FET-ovima.
Povratna sprega i opreacioni poja~ava~i.
Frekventne karakteristike i stabilnost.
Linearna kola sa operacionim poja~ava~ima.
Nelinearna kola sa operacionim poja~ava~ima.
Osnovni pojmovi i specifi~nosti industrijske elektronike.
Aktivni filtri. Oscilatori.
Fazno osetljivi detektori i njihova primena.
Osnovni pojmovi i blok shema telekomunikacija.
D/A i A/D konvertori.
Uvod u mikrora~unarske sisteme.
Inteligentna instrumentacija.
Literatura:
1. Bele{ke sa predavawa prof. A. Stamatovi}a
2. V. Bo~varski i A. Stamatovi}: Digitalna elektronika, PMF, Kragujevac 1994.
3. P. Horowitz & W. Hill: The Art of Electronics, Cambridge University Press, 1989.
Studijska grupa PRIMEWENA FIZIKA I INFORMATIKA
Katedra za METROLOGIJU I PRIMEWENU FIZIKU
semestar peti, nedeqni fond ~asova 2+2
ispit: pismeni i usmeni
Uvodne napomene, definicije i klasifikacija sistema.
Funkcije prenosa sistema. Mehani~ki sistemi.
Elektromehani~ki sistemi.
Hidrauli~ni sistemi. Pneumatski sistemi.
Stawa sistema. Stabilnost sistema.
Karakterizacija sistema.
Frekventna metoda analize i sinteze sistema.
Sistemi sa vi{e ulaza i izlaza.
Digitalni sistemi automatskog upravqawa.
Komponente digitalnih sistema.
Struktura digitalnih sistema. Funkcija disretnog prenosa.
Stawa digitalnih sistema. Stabilnost digitalnih sistema.
Sinteza digitalnih sistema.
Analiza konkretnih, ~esto kori{}enih sistema.
Literatura:
1. Bele{ke sa predavawa prof. A. Stamatovi}a
2. Prof. dr Mili} R. Stoji}: Kontinualni sistemi automatskog upravqawa, Nau~na kwiga, Beograd, 1988.
3. Prof. dr Mili} R. Stoji}: Digitalni sistemi upravqawa, Nauka, Beograd, 1990.
Katedra za op{tu meteorologiju
Predmet: METEOROLO[KA MEREWA
semestar peti, nedeqni fond ~asova 3+3
ispit: usmeni
Merewa temperature , termometri sa te~no{}u.
Deformacioni termometri, termografi, elektri~ni termometri.
Radijacioni termometri, akusti~ki termometri.
Merewe vla`nosti vazduha.
Psihrometarska metoda merewa vla`nosti.
Merewe padavina i isparavawa.
Merewe zra~ewa, spektri zra~ewa Sunca i Zemqe.
Merewe kratkotalasnog i dugotalasnog zra~ewa.
Merewe vazdu{nog pritska.
Gre{ke i korekcije pri merewu vazdu{nog pritiska.
Merewe prizemnog vetra.
Merewe vertikalnog profila vetra.
Merewe atmosferskog elektriciteta.
Osmatrawe oblaka i odre|ivawe vidqivosti.
Merewe vertikalnih gradijenata meteorolo{kih elemenata.
Merewe strukture meteorolo{kih elemenata.
Automatske meteorolo{ke stanice.
Radiosondirawe atmosfere.
Meteorolo{ki radari, princip rada.
Vrste meteorolo{kih radara i wihova primena u meteorologiji.
Meteorolo{ki sateliti.
Meteorolo{ka merewa za potrebe ekologije.
Primene lasera u meteorolo{kim merewima.
Literatura:
1. Bele{ke sa predavawa prof. A. Stamatovi}a
2. D.H. Lenschow, Ed.: Probing The Atmospheric Boundary Layer,
AMS, Boston, 1986.
3. D.D Houghton, Ed.: Handbook of Applied Meteorology,
John Wiley & Sons, 1985.
Katedra za op{tu meteorologiju
Predmet: METEOROLO[KE INFORMACIJE
semestar peti, nedeqni fond ~asova 2+5
ispit: pismeni i usmeni
Uvod.
Korist od meteorolo{kih informacija.
Svetska meteorolo{ka organizacija (SMO).
Svetsko meteorolo{ko bdewe.
Globalni sistem osmatrawa.
Globalni sistem telekomunikacija.
Globalni sistem za obradu podataka.
Evropski centar za sredwero~nu prognozu vremena.
Tehni~ki aspekti osmatrawa i prikupqawa podataka.
Tehni~ki aspekti telekomnikacionog sistema.
Meteorolo{li kodovi.
Tehni~ki aspekti sistema za obradu podataka.
Osobine meteorolo{kih podataka.
Logi~ka kontrola podataka.
Kriti~ka kontrola podataka.
Meteorolo{ki informacioni sistem (MIS).
Literatura:
1. Bele{ke sa predavawa prof. A. Stamatovi}a
2. Bele{ke sa predavawa prof. Z. Jawi}a
3. D.D Houghton, Ed.: Handbook of Applied Meteorology,
John Wiley & Sons, 1985.
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 ,
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