You are on page 1of 51

FORTRAN

Vebe

Autor: Milan Goci


Predmet: Informatika II
Poslednje izmene: 10.12.2011.

Informatika 2, Milan Goci

SADRAJ

AS 1 ............................................................................................................................... 3
AS 2 ............................................................................................................................... 13
AS 3 ............................................................................................................................... 17
AS 4 ............................................................................................................................... 20
AS 5 ............................................................................................................................... 26
AS 6 ............................................................................................................................... 29
AS 7 ............................................................................................................................... 32
AS 8 ............................................................................................................................... 36
AS 9 ............................................................................................................................... 39
AS 10 ............................................................................................................................... 43

Informatika 2, Milan Goci


- AS 1 Azbuka Fortan jezika
FORTRAN je programski jezik definisan nad skupom osnovnih i izvedenih simbola.
Osnovne simbole ine slova engleske azbuke (velika i mala), cifre dekadnog brojnog sistema i specijalni
znaci:
S = {A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,
z,0,1,2,3,4,5,6,7,8,9,+,-,*,/,(,),=, , ,.,$,, }
Izvedeni simboli su niske osnovnih simbola koje se koriste u okviru FORTRAN naredbi, ali po svojoj
funkciji u naredbi imaju smisao jednog simbola. Izvedeni simboli koji se koriste u FORTRAN-u su:
a) znaci aritmetikih operacija,
b) logike konstante,
c) znaci logikih operacija,
d) relacijski znaci i
e) slubene rei.
Aritmetike operacije
Aritmetika
operacija
sabiranje
oduzimanje
mnoenje
deljenje
stepenovanje

Simbol u
FORTRAN-u
+
*
/
**

Operacija
u matematici

x+ y
x y
x y
x / y (ili x : y )

u FORTRAN-u
X+Y
X-Y
X*Y
X/Y

xy

X**Y

Logike operacije
Logika operacija
negacija
konjunkcija
disjunkcija
ekvivalencija
ekskluzivna disjunkcija (iskljuivo ili)

Simbol u
FORTRAN-u
.NOT.
.AND.
.OR.
.EQV.
.XOR.

Operacija
u matematici u FORTRAN-u
p
.NOT.P
pq
P.AND.Q
pq
P.OR.Q
pq
P.EQV.Q
pq
P.XOR.Q

Relacije poreenja
Relacija poreenja

Simbol u
FORTRAN-u

Predikat
u matematici u FORTRAN-u

manje od

.LT.

x< y

X.LT.Y

manje ili jednako

.LE.

x y

X.LE.Y

jednako

.EQ.

x= y

X.EQ.Y

razliito

.NE.

x y

X.NE.Y

vee ili jednako

.GE.

x y

X.GE.Y

vee od

.GT.

x> y

X.GT.Y

Informatika 2, Milan Goci


Slubene rei
Slubene rei su engleske rei koje se koriste u Fortranu kao simboli. Greke u pisanju ovih rei dovode do
pojave sintaksnih greaka pri prevoenju programa sa Fortran jezika na mainski jezik. Slubene rei ne
mogu se koristiti kao simbolika imena.
Primeri slubenih rei: PROGRAM, END, READ, WRITE, SUBROUTINE, FUNCTION, IF, ELSE.
Elementarne konstrukcije FORTRAN jezika
Elementarne konstrukcije FORTRAN jezika su:
a) podatak,
b) simboliko ime,
c) struktura podataka i
d) izraz.
Podatak
Zapis informacije koja je predmet obrade na raunaru zove se podatak. Podaci mogu da reprezentuju razliite
informacije u raunaru pa se zato razlikuju po tipu. Prema tipu podatak moe biti:
a) numeriki (celobrojni i realni),
b) logiki,
c) alfabetski i
d) kompleksni.
Ako podatak predstavlja jednu veliinu koja se pri obradi na raunaru, po pravilu, ne razlae na elementarne
delove, tada kaemo da je to elementarni podatak.
Simboliko ime
Simboliko ime je niska od jednog do est slova i/ili cifara pri emu prvi simbol mora biti slovo (kod nekih
kompilatora 8, do najvie 31, gde se simboli preko 6 ili 8 ne uzimaju u obzir). Simboliko ime ne sme da
sadri specijalne znake i ne sme biti slubena re.
Primer 1.1. Da li sledee rei mogu biti simbolika imena ili ne?
a) INDEKS
b) LAMBDA
c) Masa
d) KOL.
e) LAN
f) MES-AR
g) BAROMETAR
h) PREZIME

_____DA_______________
_____DA_______________
_____DA_______________
_____NE_______________
_____NE_______________
_____NE_______________
_____DA_______________
_____DA_______________

Izraz
Izraz je zapis postupka kojim se definie dobijanje (izraunavanje) jednog rezultujueg podatka na osnovu
jednog ili vie podataka.
Prema vrsti podataka nad kojima se vri izraunavanje izraz moe biti:
a) aritmetiki,
b) znakovni,
c) logiki i
d) relacijski.
4

Informatika 2, Milan Goci


Konstanta
Konstanta je veliina koja ne menja svoju vrednost tokom izvrenja programa.
U FORTRAN jeziku postoje tri vrste konstanti:

numerike konstante,
logike konstante,
alfabetske konstante (literali, Hollerith-konstante).

Numerike konstante
Numerike konstante mogu biti:

celobrojne (Integer) konstante,


realne konstante (u jednostrukoj ili dvostrukoj tanosti), u obliku nepokretne take (Fixed point) i
pokretne take (Floating point),
kompleksne konstante, formirane od realnih konstanti za realni i imaginarni deo konstante, sa
jednostrukom i dvostrukom tanou, u obliku nepokretne i pokretne take,
oktalne konstante (za specijalno korienje),
heksadecimalne konstante (za specijalno korienje).

Logike konstante
Logike konstante mogu biti:

.TRUE. (tano) i
.FALSE. (netano).

Alfabetske konstante
Alfabetske konstante se formiraju od niza ASCII karaktera koji su dodeljeni numerikim konstantama po
principu jedno slovo u jedan bajt.
Promenljiva
Za razliku od konstanti, promenljive veliine ili krae promenljive, menjaju svoju vrednost tokom izvrenja
programa.
Promenljive se oznaavaju nizom simbola koji mora da zadovolji sledee uslove:

prvi simbol mora biti slovo engleske azbuke ili specijalni znak ($),
ostali simboli mogu biti slova engleske azbuke, specijalni znak $ ili cifre dekadnog brojnog
sistema,
broj simbola u nizu je ogranien obino na 6 ili 8 simbola, zavisno od kompilatora (ostatak
simbola u nizu do najvie 31 se ne uzima u obzir).

Niz simbola koji definie promenljivu naziva se ime promenljive.


Svaku promenljivu odlikuje:

ime,
tip,
oblast definisanosti i
tekua vrednost.
5

Informatika 2, Milan Goci


Tip promenljive
Promenljive mogu biti sledeeg tipa:

celobrojne promenljive (INTEGER),


realne promenljive (REAL),
realne promenljive dvostruke tanosti (DOUBLE PRECISION),
kompleksne promenljive (COMPLEX),
promenljive tipa LOGICAL (dodeljuju im se logike vrednosti),
alfabetske promenljive ili promenljive tipa CHARACTER.
Deklarisanje vrste promenljivih

Postoje tri naina deklarisanja vrste promenljivih:


a) unutranja konvencija FORTRAN jezika,
b) eksplicitna deklaracija i
d) implicitna deklaracija.
Pravila unutranje konvencije su:
a) ako ime promenljive poinje slovom I, J, K, L, M ili N, to je celobrojna promenljiva,
b) ako ime promenljive ne poinje jednim od prethodno navedenih slova, to je realna promenljiva.
Opti oblik eksplicitne deklaracije je
<tip> <lista>
gde su:
<tip> - slubena re koja pripada skupu S={INTEGER, REAL, DOUBLE PRECISION (REAL*8),
COMPLEX, LOGICAL, CHARACTER}
- <lista> - imena promenljivih meusobno razdvojena zapetama.
Opti oblik implicitne deklaracije je
IMPLICIT <tip> < lista>,
gde je IMPLICIT slubena re FORTRAN jezika koja oznaava implicitnu deklaraciju,
<tip> - slubena re koja pripada skupu rei S={INTEGER, REAL, DOUBLE PRECISION
(REAL*8), COMPLEX, LOGICAL, CHARACTER}
<lista> - spisak simbola kojima poinju imena promenljivih eljenog tipa, meusobno razdvojenih
zarezima.
Primer 1.2. Napisati implicitnu deklaraciju tipa promenljivih tako da sve promenljive ija imena poinju
slovima A, B, C, D, E, F, budu promenljive tipa REAL, a promenljive ija imena poinju ostalim slovima
abecede budu tipa INTEGER (celobrojne).
Odgovor: IMPLICIT REAL (A-F), INTEGER (G-Z)
Primer 1.3. Napisati implicitnu deklaraciju vrste promenljivih kojom e se obrnuti unutranja konvencija
FORTRAN jezika, tj. celobrojne promenljive da postanu realne promenljive obine tanosti, a realne
promenljive da postanu celobrojne (INTEGER) promenljive.
Odgovor: IMPLICIT REAL(I-N), INTEGER(A-H, O-Z)

Informatika 2, Milan Goci


Format specifikacije
Da bi se program mogao uspeno prevesti u izvrni program, moraju se zadovoljiti sledea pravila za pisanje
izvornog koda:
kolona
1
1-5
6
7-72
73-80

polje
komentar
obeleje naredbi
identifikator nastavka linije
naredbe
identifikacija (FORTRAN kompilator ignorie te kolone)

Kao oznaka za komentar koristi se C u 1. koloni. Komentar se moe nai u bilo kojem delu programa i bez
znaaja je za prevodilac FORTRAN programa i slui za lake praenje programa. Takoe se u programu
mogu nalaziti i prazni redovi koji doprinose veoj preglednosti programa.
U 6. koloni kada se oznaava nastavak prethodne linije moe stajati bilo koji znak izuzev 0 ili blanko znaka,
a najee se koristi *. Na ovaj nain jedna naredba moe biti zapisana u najvie 20 redova (zavisi od
kompilatora).
Ustanovljeni redosled naredbi u FORTRANu je sledei:
1.
2.
3.
4.
5.
6.

PROGRAM, FUNCTION, SUBROUTINE ili BLOCK DATA naredba,


PARAMETER naredbe i/ili IMPLICIT naredbe,
ostale specifikacione naredbe (izuzev DATA naredbi),
funkcijske naredbe,
izvrne naredbe,
END naredba.

Dopunska pravila su:


1. Naredbe FORMAT i ENTRY se mogu nalaziti na bilo kojem mestu programske jedinice izmeu prve
naredbe programske jedinice i naredbe END, pri emu se naredba ENTRY ne sme pojaviti u okviru
programskih ciklusa definisanih naredbama DO i u okviru IF naredbe i njoj odgovarajue ENDIF naredbe.
2. Sve specifikacione naredbe moraju prethoditi DATA naredbama.
3. PARAMETER naredbe se mogu meusobno izmetati sa IMPLICIT naredbama i ostalim
specifikacionim naredbama, izuzev DATA naredbama. Opisne naredbe koje specificiraju vrstu simbolikih
imena konstanti moraju prethoditi naredbama PARAMETER koje definiu ta simbolika imena. Naredbe
PARAMETER moraju prethoditi onim opisnim naredbama koje koriste simbolika imena konstanti
definisana naredbama PARAMETER.
4. DATA naredbe se mogu meusobno izmetati sa funkcijskim naredbama i izvrnim naredbama.
5. Komentari se mogu nalaziti na bilo kojem mestu programske jedinice. Mogu prethoditi prvoj naredbi
programske jedinice i moraju prethoditi naredbi END.
I specifikacija
Koristi se za podatke tipa INTEGER (sva tri tipa).
Opti oblik:
nIk
gde su: n neoznaen ceo broj, koji odreuje broj ponavljanja,
I slovo, koje ukazuje da je re o opisu celobrojnog polja (engl. Integer),
k neoznaen ceo broj, koji odreuje broj pozicija celobrojnog polja.
F specifikacija
Koristi se za podatke tipa REAL, DOUBLE PRECISION i COMPLEX (predstavljeni u fiksnom zarezu).
Opti oblik:
7

Informatika 2, Milan Goci


n F k.d
gde su: n neoznaen ceo broj, koji odreuje broj ponavljanja,
F slovo, koje ukazuje da je re o opisu realnog broja (engl. Fixed point),
k neoznaen ceo broj, koji odreuje broj pozicija realnog polja,
d neoznaen ceo broj, koji odreuje broj decimalnih mesta brojnog podatka.
E specifikacija
Koristi se za podatke tipa REAL, DOUBLE PRECISION i COMPLEX (predstavljeni u pokretnoj zapeti,
engl. Floating point).
Opti oblik:
nE k.d
gde su: n neoznaen ceo broj, koji odreuje broj ponavljanja,
E slovo, koje ukazuje da je re o eksponencijalnom zapisu broja (engl. Exponential form),
k neoznaen ceo broj, koji odreuje broj pozicija realnog polja,
d neoznaen ceo broj, koji odreuje broj decimalnih mesta brojnog podatka.
D specifikacija
Koristi se za podatke tipa REAL, DOUBLE PRECISION i COMPLEX (predstavljeni u pokretnoj zapeti sa
dvostrukom tanou).
Opti oblik:
nD k.d
gde su: n neoznaen ceo broj, koji odreuje broj ponavljanja,
D slovo, koje ukazuje da je re o zapisu broja dvostruke tanosti,
k neoznaen ceo broj, koji ukazuje na broj pozicija u polju koje sadri konstantu dvostruke
tanosti,
d neoznaen ceo broj, koji ukazuje na broj decimalnih mesta konstante dvostruke tanosti.
L specifikacija
Koristi se za logike vrednosti.
Opti oblik:
nL k
gde su: n neoznaen ceo broj, koji odreuje broj ponavljanja,
L slovo, koje ukazuje da je re o zapisu logike konstante,
k neoznaen ceo broj, koji odreuje broj pozicija polja.
A specifikacija
Koristi se za podatke tipa CHARACTER.
Opti oblik:
Ak
gde su: k neoznaen ceo broj, koji odreuje duinu polja,
A slovo, koje ukazuje da je re o alfabetskoj (slovnoj) konstanti.
U sluaju da se navede parametar k to znai da se uzima k karaktera, a ako se ne navodi tada se za duinu
uzima specifikacija iz CHARACTER opisa.
X specifikacija
Definie broj praznih mesta kod tampanja.

Informatika 2, Milan Goci


Opti oblik:
nX
gde su: n neoznaen ceo broj, koji odreuje broj ponavljanja,
X slovo, koje ukazuje da je re o praznom polju.
Primer 1.4. Sledee konstante/ promenljive su realne/ celobrojne/ neispravne:
konstanta/promenljiva
a) (X61)
b) 3.5E02
c) PAUSE
d) YU126
e) KAT
f) END
g) X+3
h) INDEX
i) T1.4
j) 42Y

____________________
______ konstanta______
____________________
_____ promenljiva_____
_____ promenljiva_____
____________________
____________________
_____ promenljiva_____
____________________
____________________

realna/ celobrojna/ neispravno


______ neispravno_____
______ realna_________
______ neispravno_____
______ realna_________
______ celobrojna______
______ neispravno_____
______ neispravno_____
______ celobrojna______
______ neispravno_____
______ neispravno_____

Biblioteke (INTRINSIC) funkcije


Matematika
a
ea
ln a
log10 a
a
sin a
cos a
tan a

ctg a
asin a
acos a
atan a
sinh a
cosh a
tanh a

FORTRAN
ABS(a)
MOD(a,b)
EXP(a)
ALOG(a)
ALOG10(a)

SQRT(a)
SIN(a)
COS(a)
TAN(a)
COTAN(a)
ASIN(a)
ACOS(a)
ATAN(a)
SINH(a)
COSH(a)
TANH(a)

Opis
Apsolutna vrednost
Modularna aritmetika
Eksponencijalna funkcija

Logaritamska funkcija
Kvadratni koren
Trigonometrijske funkcije

Inverzne trigonometrijske funkcije

Hiperboline funkcije
Kodiranje aritmetikih i logikih izraza

Aritmetiki izraz se sastoji od jednog ili vie argumenata meusobno razdvojenih aritmetikim operacijama.
Argumenti aritmetikog izraza mogu biti: numerike konstante i promenljive i biblioteke matematike
funkcije. Aritmetiki izraz se pie kao niz koji se sastoji od naizmeninog smenjivanja argumenata i
aritmetikih operacija, pri emu vai:
niz poinje argumentom ili znakom minus (-), koji oznaava u tom sluaju promenu znaka
prvog argumenta,
niz se zavrava argumentom,
dva simbola aritmetikih operacija ne smeju se pisati jedan do drugog,
vrednost aritmetikog izraza se izraunava sa leva na desno, pri emu vai sledei prioritet:
izraunavanje vrednosti funkcije,
9

Informatika 2, Milan Goci

stepenovanje,
unarna operacija promene znaka,
mnoenje i deljenje,
sabiranje i oduzimanje.

Logiki izraz je sastavljen od jednog ili vie argumenata meusobno razdvojenih logikim operacijama.
Argumenti logikog izraza mogu biti: logike konstante i promenljive i predikti.
Vrednost logikog izraza se odreuje izvravanjem logikih operacija s leva na desno, uz potovanje
sledeeg prioriteta:

izraunavanje vrednosti predikata,


operacija .NOT. ,
operacija .AND. ,
operacija .OR. ,
operacije .XOR. i .EQV. .

Ako zagradama nije drugaije definisano, vai sledei prioritet operacija:


1.
2.
3.
4.
5.
6.

**
*, /
+, //
.GT. .GE. .LT. .LE. .EQ. .NE.
.NOT. .AND. .OR. .EQV. .NEQV.

Prioritet operacija, kao i kod aritmetikog izraza, moe biti izmenjen upotrebom zagrada. Unutranji par
zagrada ima najvii prioritet.
Primer 1.5. Uz pomo zagrada oznaiti kojim e se redosledom izvriti operacije u sledeem izrazu

A+B*C.LT.D.AND.Q.
Odgovor: (((A+(B*C)).LT.D).AND.Q)
Primer 1.6. Poreati sledee operatore po prioritetu, poev od operatora sa najveim prioritetom:

.AND., +, .LT., *, /, .NOT., .EQ.


Odgovor: *, /, +, .LT., .EQ., .NOT., .AND.
Primer 1.7. Kodirati sledee izraze na FORTRAN-u:

a) ab + ac ,

2a 8b
b) 3
,
c

c)

e) ln sin a + e 2 + cos b arctg , f)

Odgovor:

a+b
(3k + 1) ,
k 3

d)

1
(2a n )2 ,
3

p(p a )(p b )(p c ) .

a) A * B + A * C,
b) 3 * (2 * A - 8 * B) / C,
c) (A + B) * (3 * K + 1) / (K - 3),
d) (2 * A - N) ** 2 / 3,
e) ALOG(SQRT(ABS(SIN(A + EXP(X / 2)) + COS(B - ATAN(X / 2)))),
10

Informatika 2, Milan Goci


f) SQRT(P * (P - A) * (P - B) * (P - C)).
Specijalni sluajevi

1) sin x 2 ( ) SIN( x * *2)


2) sin 2 x () SIN( x ) * *2
3)

x 5 () x * *(5. / 3)

cos y
.
e xy
Odgovor: ALOG(SQRT(TAN(X)**2+0.2+COS(Y)/EXP(X*Y))).

Primer 1.8. Kodirati sledei izraz ln tg 2 x + 0.2 +

Primer 1.9. Sledee matematike izraze kodirati na FORTRANu korienjem obine i dvostruke tanosti:
2

a)

sin x + x 3
,
ln 2 sin x 2

xy
x
y
b) y .

zx
Odgovor: a) SQRT(SIN(SQRT(X)) + X ** 3) / ALOG(SIN(X * X)) ** 2,
DSQRT(DSIN(DSQRT(X)) + X ** 3) / DALOG(DSIN(X * X)) ** 2,
b) (X ** Y / Y ** X) ** 2 / Z * (Y / X).
Primer 1.10. Sledei aritmetiki izrazi su celobrojni, realni ili neispravni:

a) 5X+1.0
b) -0.4E+5*P
c) .99E-4+2
d) 1/A-1
e) A+-B
f) K**2E1
g) R**2.0
h) 2J*K*L
i) AX+BX+X
j) K**2E1

____ neispravan_______
____ realan___________
____ realan___________
____ realan___________
____ neispravan_______
____ neispravan_______
____ realan___________
____ neispravan_______
____ neispravan_______
____ neispravan_______

Primer 1.11. Ako je vrednost realnih i celobrojnih promenljivih

A = 6.
I=4
J=3
izraunati vrednosti logikih izraza:
a) A.GT.4.0
b) A.LE.3.0D-03
c) I.EQ.J
d) 5.NE.I
e) I*J.GT.A
f) A**J.LT.A*I*J

____________________
____________________
____________________
____________________
____________________
____________________

Odgovor: a) .TRUE., b) .FALSE., c) .FALSE., d) .TRUE., e) .TRUE., f) .FALSE..


Primer 1.12. Za date vrednosti logikih promenljivih

V = .TRUE.
11

Informatika 2, Milan Goci


X = .TRUE.
Y = .FALSE.
Z = .FALSE.
izraunati vrednosti logikih izraza:
a) .NOT.Y
b) .NOT.V
c) V.AND.X
d) X.AND.Y
e) Z.AND.X
f) V.OR.X
g) X.OR.Y
h) Y.OR.Z

____________________
____________________
____________________
____________________
____________________
____________________
____________________
____________________

Odgovor: a) .TRUE., b) .FALSE., c) .TRUE., d) .FALSE., e) .FALSE., f) .TRUE., g) .TRUE., h) .FALSE.


Aritmetika naredba dodeljivanja

Naredba kojom se vrednost aritmetikog izraza dodeljuje promenljivoj zove se aritmetika naredba.
Opti oblik je:
p=a
gde su: p - ime promenljive ,
a - aritmetiki izraz.
Dejstvo naredbe dodeljivanja je sledee: izraunava se vrednost aritmetikog izraza, izraunata vrednost se
transformie u tip podatka saglasno tipu promenljive kojoj se vrednost dodeljuje i dodeljuje se promenljivoj.
Primer 1.13. Kodirati sledeu aritmetiku naredbu
x

e 2 + 1.2 sin 2x
y=
.
3.3 cos x 7.1e x
Odgovor: Y = SQRT((EXP(X / 2) + 1.2 * SIN(2 * X)) / (3.3 * COS(X) - 7.1 * EXP(X))).
Primer 1.14. Kodirati sledeu logiku naredbu
y=

2 + x ax 2
> 0 e x < x 1 x 1 0.
x+2

Odgovor: Y = SQRT((2+X-A*X**2)/(X+2)).GT.0.OR.EXP(X).LT.(X-1).AND.SQRT(X-1).LE.0.
Primer 1.15. Napisati naredbu dodeljivanja vrednosti logikog izraza

a
2b 2c a c
b+c
logikoj promenljivoj z.
Odgovor: LOGICAL Z

Z = A / (B + C) - 2 * B.NE.2. * C.AND.A.GE.C
12

Informatika 2, Milan Goci


- AS 2 Naredba ulaza

Opti oblik naredbe ulaza


j

READ(i, j) lista
FORMAT(formatirani_podaci)

gde je:
i oznaka ulaznog ureaja (5)
j obeleje naredbe
lista imena promenljivih, meusobno razdvojena zarezima, kojima se dodeljuju brojne vrednosti sa ulaza,
formatirani_podaci koriste se formati specifikacija.
Primer 2.1. Napisati naredbu za uitavanje vrednosti promenljivih A, B, C i opisnu naredbu FORMAT, ako
se A nalazi u prvom slogu od 1. do 10. kolone sa 2 decimalna mesta, B u drugom slogu od 10. do 20. kolone
sa 3 decimalna mesta, a C u etvrtom slogu od 21. do 30. kolone, sa 5 decimalnih mesta.
Odgovor: READ(5, 20) A, B, C
20 FORMAT(F10.2/9X,F11.3//20X,F10.5)
Primer 2.2. Napisati ulaznu naredbu READ sa odgovarajuom opisnom naredbom FORMAT za uitavanje
sledeih brojnih vrednosti:

-0.2423

10 8
64276464.1
Dati izgled ulaznog sloga sa brojnim vrednostima.
Odgovor: READ( 5, 10) A, B, C
10 FORMAT(F7.4,E6.1,F10.1)

-0.24231.0E-864276464.1
Ponavljanje vie opisa

Ako se vie opisa ponavlja, tada se koristi oblik


n(lista)
gde je:
n odreuje broj ponavljanja,
lista opisi polja, meusobno razdvojeni zarezima.
Primer 2.3. Zapis oblika

FORMAT(I2, F6.2, I2, F6.2, I2, F6.2)


zapisati koristei ponavljanja vie opisa.
Odgovor: FORMAT(3(I2, F6.2))

13

Informatika 2, Milan Goci


Naredba izlaza

Opti oblik naredbe izlaza


j

WRITE(i, j) lista
FORMAT(formatirani_podaci)

gde je:
i oznaka izlaznog ureaja (6)
j obeleje naredbe
lista imena promenljivih, meusobno razdvojena zarezima, kojima se dodeljuju brojne vrednosti sa ulaza,
formatirani_podaci koriste se formati specifikacija.
Primer 2.4. Za izvrnu naredbu WRITE (6, 10) X, Y, Z napisati opisnu naredbu FORMAT, tako da se:

a) vrednosti X, Y i Z tampaju u jednom redu u proizvoljnom obliku, a iza tog reda preskau tri prazna reda,
b) preskoe 2 prazna reda, a u treem se tampaju vrednosti X, Y i Z.
Odgovor: a) 10 FORMAT(5X, 3F12.2///)
b) 10 FORMAT(//3F12.2)
DATA naredba

Naredba za dodeljivanje poetnih vrednosti je oblika


DATA lista /podaci/
gde je:
DATA - slubena re,
lista - spisak imena promenljivih, imena nizova, imena elemenata nizova ili imena znakovnih podniski
razdvojeni zarezima,
podaci - spisak konstanti ili simbolikih imena konstanti koje se sleva nadesno dodeljuju elementima
navedenim u listi, razdvojeni zarezima
Primer 2.5. Napisati naredbu DATA za definisanje vrednosti promenljivih datih sledeim naredbama:

DEG=0.1743329
PI=3.1415926536
IT=42
N14=16
N16=14
Odgovor: DATA DEG, PI, IT, N14, N16 /0.1743329, 3.145926536, 42, 16, 14/
Primer 2.6. Napisati naredbu DATA za dodeljivanje vrednosti sledeih promenljivih:

Ime

Vrsta (Tip)

Vrednost

ABC
BCD
JDE
LEF
TUV
VEX

real, obina tanost


real, obina tanost
celobrojna
celobrojna
logika
logika

2.5 10 4
-4.2
-413
19
tano
netano

Napomena: Eksplicitno definisati vrstu promenljive, tamo gde je potrebno.

14

Informatika 2, Milan Goci


Odgovor:

LOGICAL TUV, VEX


DATA ABC, BCD, JDE, LEF, TUV, VEX /2.5E-4, -4.2, -413, 19,.TRUE.,.FALSE./
Algoritam

Postupak transformacije ulazne informacije u izlaznu informaciju naziva se algoritam.


Osobine algoritama su:

Definisanost: Svaki korak u algoritmu mora biti jednoznano definisan. Skup pravila treba da je
takav da se operacije koje definiu ta pravila mogu izvravati sukcesivno jedna za drugom.

Determinisanost (odreenost): Vrednost koja se dobija posle izvravanja svakog koraka


jednoznano je odreena vrednostima iz prethodnog koraka. Dejstva koja treba da se izvre treba da
budu strogo i nedvosmisleno odreena u svim sluajevima i da ne ostavljaju mesta slobodnom
donoenju odluke.

Konanost: Rad algoritma mora se zavriti u konanom broju koraka i za konaan interval vremena.
Broj koraka moe biti proizvoljno veliki. Zbog ove osobine ponekad se kae da algoritam predstavlja
efektivnu proceduru za reenje nekog problema.

Rezultativnost: Algoritam mora dati rezultat za sve situacije za koje je kreiran. Zbog toga svaki
algoritam poseduje:

a) Ulaz: Algoritam poseduje odreen broj (moda i jednak nuli) ulaznih podataka, odnosno
veliina koje su zadate pre poetka izvrenja algoritma.
b) Izlaz: Algoritam ima jednu ili vie izlaznih veliina, odnosno veliina koje imaju
potpuno odreeni odnos sa ulaznim podacima, a rezultat su obrade na osnovu primene
algoritma.

Masovnost: Algoritam treba da obezbedi reavanje cele klase problema koji se razlikuju samo po
ulaznim veliinama.
Grafiki prikaz simbola za oznaavanje dijagrama toka programa (algoritma)

Grafiki simbol

Opis
Granino mesto (poetak, kraj, prekid). Upotrebljava se za
predstavljanje poetka i kraja postupka, procedure, procesa,
kao i prekida ili odlaganja procesa.
Konektor (veznik). Ulazna ili izlazna prikljuna taka
izmeu prekinutih linija toka.
Ulaz. Unos podataka preko ulazne jedinice (instrukcije
ulaza).
Izlaz. Izlaz podataka preko izlazne jedinice (instrukcije
izlaza).
Obrada (operacija, proces, radnja). Izvrenje operacije ili
grupe operacija (instrukcije obrade).
Odluka (uslovno grananje). Izbor pravca izvrenja
algoritma zavisno od uslova (instrukcije provere uslova).
Modifikacija programa. Izvrenje operacija kojima se
menjaju naredbe programa.

15

Informatika 2, Milan Goci


Poziv potprograma. Izvravanje potprograma prethodno
zapisanog izvan glavnog programa (instrukcija poziva
potprograma).
Linija toka (vezna linija). Prikazivanje redosleda veza
izmeu blokova.
Spajanje. Mesto spajanja dve linije.
Grananje. Jedna dolazna i vie odlaznih grana.

Komentar (napomena). Objanjenje, odnosno dodatni


komentar ili kratko tumaenje operacije.
Programska struktura

Pod algoritamskom (programskom) strukturom podrazumeva se vie koraka (komandi programskog jezika)
koji ine jednu celinu. Postoje tri elementarne algoritamske strukture:
1. linijska,
2. razgranata i
3. ciklina.
Linijska struktura

Naredbe koje se pri izvravanju programa uvek izvravaju u navedenom redosledu


(sekvencijalno) ine linijsku strukturu. U ovom sluaju, nakon izvrenja jedne
naredbe prelazi se na izvrenje naredbe koja neposredno sledi u programu (slika 2.1.).
Linijski programi su programi u kojima se javljaju naredbe ulaza, obrade i izlaza. Ovi
programi imaju smisla u sluajevima kada za razne vrednosti ulaznih veliina treba
izvriti sloena izraunavanja.

Slika 2.1. Linijska struktura


Primer 2.7. Sastaviti algoritam i napisati program kojim se izraunava zbir dva realna broja x i y. Na izlazu
tampati njihov zbir.

PROGRAM ZAD
READ(5, 10) X, Y
10 FORMAT(2F10.3)
F=X+Y
WRITE(6, 20) F
20 FORMAT(2X, F = , F10.3)
STOP
END

16

Informatika 2, Milan Goci


Primer 2.8. Sastaviti algoritam i napisati program kojim se izraunava vrednost funkcije
4

x
x + y
f =

xy
2x
na osnovu unetih vrednosti za x i y. Na izlazu tampati vrednost funkcije.
PROGRAM ZAD
READ(5, 10) X, Y
10 FORMAT(2F10.3)
F = ((X + Y) / 2 * X) ** 4 - X / (X - Y)
WRITE(6, 20) F
20 FORMAT(2X, F = , F10.3)
STOP
END

- AS 3 Razgranata struktura

Naredbe uslovnog prelaska omoguuju grananja u programu, tako da se pri izvravanju programa prolazi
samo kroz jednu od moguih grana. Ovakva programska struktura zove se razgranata struktura. Broj grana
u razgranatoj strukturi moe biti razliit (dve, tri ili vie), to zavisi od naredbe prelaska kojom se ostvaruje
grananje u programu.
If iskaz spada u blokovski uslovni prelazak, jer omoguuje da se u svakoj grani razgranate strukture moe
nalaziti blok naredbi. Uslov po kome se vri prelazak predstavlja logiki izraz ija vrednost moe biti true ili
false. Ako je vrednost izraza true, izvrava se blok naredbi B1 koji sledi iza naredbe prelaska IF, u
suprotnom se izvrava blok naredbi B2 koji se pie iza rezervisane rei ELSE.

Sintaksa IF-THEN-ELSE strukture ima oblik


IF(uslov) THEN
B1
ELSE
B2
ENDIF

Slika 3.1. IF-THEN-ELSE struktura


Primer 3.1. Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost x izraunava vrednost
funkcije
x, x 0,
y= x =
x, x < 0.

Na izlazu tampati rezultat oblika


Za uneto X = xxx.xxx dobija se Y = xxx.xxx.
17

Informatika 2, Milan Goci


PROGRAM ZAD
READ(5, 10) X
10 FORMAT(F7.3)
IF (X.GE.0) THEN
Y=X
ELSE
Y = -X
ENDIF
WRITE(6, 20) X, Y
20 FORMAT(2X, ZA UNETO X = , F7.3, DOBIJA SE Y = , F7.3)
STOP
END

U sluaju da ne postoji blok B2, tada ne treba pisati rezervisanu re ELSE. Sintaksa ove strukture ima oblik

IF (uslov) THEN
B1
ENDIF

Slika 3.2. If struktura


Primer 3.2. Sastaviti algoritam i napisati program za odreivanje vrednosti

y = min(q, max(r, s )).


PROGRAM ZAD
READ(5, 10) Q, R, S
10 FORMAT(3F10.3)
IF (R.GT.S) THEN
Y=R
ELSE
Y=S
ENDIF
IF (Q.LT.S) THEN
Y=Q
ENDIF
WRITE(6, 20) Y
20 FORMAT(2X, Y = , F10.3)
STOP
END

18

Informatika 2, Milan Goci


Na slici 3.3 prikazana je struktura u kojoj se u odrenoj grani IF-THEN-ELSE strukture nalazi druga IFTHEN-ELSE struktura. Za ovakvu strukturu IF naredbi kae se da su ugnjedene if naredbe.

Slika 3.3. IF-THEN-ELSE-IF struktura

Sintaksa strukture moe se zapisati na dva naina:


1. pomou IF-THEN-ELSE strukture
2. pomou IF-THEN-ELSE-IF strukture
1. IF (uslov1) THEN
B1
ELSE
IF (uslov2) THEN
B2
ELSE
B3
ENDIF
ENDIF

2. IF (uslov1) THEN
B1
ELSEIF (uslov2) THEN
B2
ELSE
B3
ENDIF

Primer 3.3. Sastaviti algoritam i napisati program koji za zadate vrednosti x1 i x2 izraunava y po formuli

x1 + x2,

y = x1 x2,
x1 - x2,

ako je x1 < x2,


ako je x1 = x2,
ako je x1 > x2.
PROGRAM ZAD
READ(5, 10) X1, X2
10 FORMAT(2F10.3)
IF (X1.LT.X2) THEN
Y = X1 + X2
ELSEIF (X1.EQ.X2) THEN
Y = X1 * X2
ELSE
Y = X1 - X2
ENDIF
WRITE(6, 20) Y
20 FORMAT(2X, Y = , F10.3)
STOP
END

19

Informatika 2, Milan Goci


- AS 4 Ciklina struktura

Ako se niz naredbi u programu moe izvriti vie puta u toku izvravanja programa, tada se kae da ove
naredbe obrazuju ciklinu strukturu. Meu naredbama koje ine ciklinu strukturu mora postojati bar jedna
naredba takva da omoguava izlazak iz ciklusa. Uslov pod kojim se izlazi iz ciklusa zove se izlazni
kriterijum ciklusa. Ako je izlazni kriterijum broj ponavljanja ciklusa, tada se ciklus zove brojaki ciklus. Ako
je izlazni kriterijum dostignuta tanost u procesu raunanja, tada se ciklus zove iterativni ciklus.
Za realizaciju iterativnih ciklusa koristi se dowhile struktura ija sintaksa ima oblik
DOWHILE (uslov)
B
ENDDO

Slika 4.1. Dowhile struktura


Primer 4.1. Sastaviti algoritam i napisati program za nalaenje najveeg pozitivnog korena funkcije
f(x) = x 3 23x 2 + 62x 40 koristei iterativnu formulu
x 0 = 23. ,
40 62
x i +1 = 2
+ 23, i = 0, 1, K .
xi
xi

Izraunavanje prekinuti kada bude zadovoljen uslov x i +1 x i 10 5 .


PROGRAM ZAD
X0 = 23.
X1 = 40 / X0 * X0 - 62 / X0 + 23
DOWHILE (ABS(X1 - X0).GT.1.0E-5)
X0 = X1
X1 = 40 / X0 * X0 - 62 / X0 + 23
END DO
WRITE(6, 10) X1
10 FORMAT(2X, X1 = , F10.3)
STOP
END

20

Informatika 2, Milan Goci


Primer 4.2. Sastaviti algoritam i napisati program za iterativno reavanje sistema jednaina

4 x 2 3xy + 2 x 1 = 0
x 2y 2 + 3 = 0
koristei sledee formule:

x n +1 =

1
x n (3y n 1) + 1 ,
2

y n +1 =

xn + 3
.
2

Iterativni proces prekinuti kada se ispune uslovi

x n +1 x n i y n +1 y n .
Na ulazu je data vrednost za i poetne vrednosti za x 0 i y 0 . Na izlazu tampati reenja sistema jednaina.
PROGRAM ZAD
READ(5, 10) EPS, X0, Y0
10 FORMAT(3F10.3)
X1 = 0.5 * SQRT(X0 * (3 * Y0 - 1) + 1)
Y1 = SQRT((X0 + 3) / 2)
DOWHILE (ABS(X1 - X0).GT.EPS .OR. ABS(Y1 - Y0).GT.EPS)
X0 = X1
X1 = 0.5 * SQRT(X0 * (3 * Y0 - 1) + 1)
Y0 = Y1
Y1 = SQRT((X0 + 3) / 2)
END DO
WRITE(6, 20) X1, Y1
20 FORMAT(2X, 2F10.3)
STOP
END

Primer 4.3. Sastaviti algoritam i napisati program kojim se izraunava i tampa vrednost funkcije
primenom sledeeg razvoja u red
ch x =

ch x

x 2k
.
k = 0 (2k)!

Izraunavanje prekinuti kada relativna vrednost prirataja sume postane manja od zadate vrednosti EPS.
Napomena: Ovaj razvoj u red vai za x < 4 .

21

Informatika 2, Milan Goci


Reenje:

Postoje dve vrste prirataja sume:


1) apsolutna vrednost prirataja sume: Si+1 Si = a i+1 ,
2) relativna vrednost prirataja sume: (Si +1 Si )/Si +1 = a i +1 /Si +1 .
Razvojem funkcije ch(x) u red dobija se:
ch x =

x 2k

(2k)! = a k = a 0 + a 1 + ... + a k + a k +1 + ... ,

k =0
2k

pri emu vai

k =0

x
x 2(k +1)
x 2k x 2
x 2k x 2
x2
, a k +1 =
=
=
=
ak
(2k)!
(2 (k + 1))! (2k + 2)! (2k + 2) (2k + 1) (2k)! (2k + 2) (2k + 1)
a0 = 1
ak =

c
c
c

Zadatak izracunava sumu reda ch(x)


x- vrednost za koju se izracunava vrednost sume
EPS- apsolutna tacnost

PROGRAM zad
WRITE (6,10)
10 FORMAT (2X, 'Unesite vrednosti za x i EPS')
c Unos vrednosti za x i EPS
READ (5,20) x, eps
20 FORMAT (2E15.7)
IF(ABS(x).LT.4) THEN
a0 = 1.
s = a0
k=0
c
c
c
c

Izracunavanje sume
k - broj iteracije
S - suma reda
a0- prvi clan reda
DO WHILE (ABS(a0/s).GT.eps)
a0 = x*x/((2*k+2)*(2*k+1))*a0
s = s+a0
k = k+1
END DO

Stampanje sume reda

WRITE (6,30) s
30 FORMAT (2X, 'S=', E15.7)
ELSE
WRITE (6,40)
40 FORMAT (2X, 'Za red mora da vazi |X|<4.')
ENDIF
STOP
END

22

Informatika 2, Milan Goci


Brojaki ciklus

Za realizaciju brojakog ciklusa koristi se DO petlja. Sintaksa DO petlje ima oblik

DO n I = m1,m2, m3
telo ciklusa
CONTINUE

Slika 4.2. DO petlja

pri emu je:


n obeleje poslednje naredbe u petlji,
I numerika promenljiva (ne moe biti tipa COMPLEX) koja predstavlja broja petlje,
m1, m2, m3 numeriki izrazi,
m1 poetna vrednost brojaa petlje,
m2 - krajnja vrednost brojaa petlje,
m3-korak promene ciklusne promenljive (u sluaju da je izostavljen podrazumeva se da je 1).
Primer

4.4.

Sastaviti

f ( x ) = 41.926 1 + x

algoritam

napisati

program

za

izraunavanje

vrednosti

funkcije

za x = 1.00(0.2)2.00. Izlazna lista neka izgleda


X
x.xx

F(X)
xxx.xx

Reenje:

PROGRAM zad
WRITE (6,10)
10 FORMAT (2X, 'X', 5X, 'F(X)')
DO 30 X = 1.0, 2.0, 0.2
F = 41.926 * SQRT(1 + X ** 3)
WRITE (6, 20) X, F
20
FORMAT (2X, F3.1, 5X, F6.2)
30 CONTINUE
STOP
END

Primer 4.5. Sastaviti algoritam i napisati program za izraunavanje vrednosti funkcije f(x,y) za n zadatih
vrednosti x i y po formuli
e x sin 2 y za x < y,

f (x, y ) = cos x sin y za x = y,


1 xy
za x > y.

Rezultate tampati u obliku tabele sa zaglavljem

23

Informatika 2, Milan Goci


x
y
f(x,y)
---------------------------------------------xxxx.xxx
xxxx.xxx xxxxx.xxxx

Reenje:

c Argumenti programa
c
n - ukupan broj parova vrednosti x i y
c
x,y - vrednosti promenljivih za koje se izracunava funkcija f
c
f - funkcija od dve promenljive, x i y
PROGRAM zad
WRITE (6,10)
10 FORMAT (2X, 'Unesite vrednost za n')
READ (5,20) N
20 FORMAT (I3)
c Stampanje zaglavlja
WRITE (6, 30)
30 FORMAT (5X,'X',10X,'Y',10X,'F(X,Y)' / 2X,'----------------------')
DO 70 I = 1, N
WRITE (6, 40)
40 FORMAT (2X, 'Unesite vrednost za x i y')
READ (5, 50) X,Y
50 FORMAT (2F8.3)
IF (X.LT.Y) THEN
F = EXP(X) * SIN(2 * Y)
ELSE IF (X.EQ.Y)) THEN
F = COS(X) * SIN(Y)
ELSE
F=1X*Y
END IF
c

Stampanje rezultata

WRITE (6, 60) X, Y, F


60 FORMAT (2X,F8.3,2X,F8.3,2X,F10.4)
70 CONTINUE
STOP
END

Primer 4.6. Sastaviti algoritam i napisati program za izraunavanje vrednosti sume


S=

50

n + 2.5
.
2
+ 1.2

n
n =1

24

Informatika 2, Milan Goci


Reenje:

PROGRAM zad
S=0
DO 10 N = 1, 50, 1
S = S + (N + 2.5) / (N * N + 1.2)
10 CONTINUE
WRITE (6, 20) S
20 FORMAT (2X, F6.2)
STOP
END

Primer 4.7. Sastaviti algoritam i napisati program za izraunavanje vrednosti sume


S=

i =1
i 3

i + 3 .5
,
i3

za unetu vrednost n < 100.


Reenje:

PROGRAM zad
READ(5, 10) N
10 FORMAT (I3)
S=0
DO 20 I = 1, N, 1
IF (I.NE.3) THEN
S = S + (I + 3.5) / (I - 3)
ENDIF
20 CONTINUE
WRITE (6, 30) S
30 FORMAT (2X, F6.2)
STOP
END

25

Informatika 2, Milan Goci


Primer 4.8. Sastaviti algoritam i napisati program za izraunavanje sume
S=

50

j+ 2

j 3 .
i =1 j=1
j 3

Reenje:

PROGRAM zad
S=0
DO 20 I = 1, 50, 1
S1 = 0
DO 10 J = 1, I, 1
IF (J.NE.3) THEN
S1 = S1 + (J + 2) / (J - 3)
ENDIF
10
CONTINUE
S = S + S1
20 CONTINUE
WRITE (6, 30) S
30 FORMAT (2X, F6.2)
STOP
END

- AS 5 Jednodimenzioni niz
Polje ili niz (engl. array) je kolekcija promenljivih istog tipa sa zajednikim imenom. Za polje se moe rei
da je to skup homogenih elemenata podataka (istog tipa), gde je svakom elementu stavljen u korespondenciju
ureeni niz celih brojeva (indeksa). Svakom elementu polja moe se jednoznano locirati na osnovu indeksa.
Broj indeksa koji su dodeljeni svakom elementu polja naziva se dimenzionalnost polja. Broj elemenata
polja naziva se veliina, rang ili duina polja. U Fortranu polje moe imati jednu ili vie dimenzija.
Primer 5.1. Sastaviti algoritam i napisati program kojim se ureuju elementi niza A u nerastui redosled.
Broj elemenata niza A je N. tampati niz A pre i posle sortiranja.
Reenje:

26

Informatika 2, Milan Goci


N e s o rtira n i n iz

P rv i p ro la z

D ru g i p ro la z

T re i p ro la z

e tv rti p ro la z

PROGRAM zad
DIMENSION A(50)
READ (5,10) n
10 FORMAT (I3)
READ(5,20)(A(i),i=1,n)
20 FORMAT (5F10.5)
WRITE (6, 30) (A(i),i=1,n)
30 FORMAT (2X,'VEKTOR A PRE
UREDJIVANJA'/(5(2X,F10.5)))
DO 40 i=1,n-1
DO 40 j=i+1,n
IF (A(i).LE.A(j)) THEN
pom=A(i)
A(i)=A(j)
A(j)=pom
ENDIF
40 CONTINUE
WRITE(6, 50) (A(i),i=1,n)
50 FORMAT (1X,'VEKTOR A
POSLE UREDJIVANJA'/(5(2X,F10.5)))
STOP
END
27

Informatika 2, Milan Goci


Primer 5.2. Sastaviti algoritam i napisati program za odreivanje poloaja teita sloene povrine A
pomou formula:
A=

Ai ,
n

1
A

Ai x i ,

1
yt =
A

A i yi .

xt =

Vrednost n je formata I3, dok su vrednosti A i , x i , y i formata 6F10.3. Na izlazu tampati rezultat sledeeg
izgleda:
A = xxxxxx.xxx
XT = xxxxxx.xxx
YT = xxxxxx.xxx
Reenje:

PROGRAM zad
c Deklarisanje nizova
DIMENSION nizA(100), x(100), y(100)
DATA a, xt, yt /3* 0./
WRITE (6,10)
10 FORMAT (2X, 'Unesite vrednost za n')
c Unos dimenzije niza
READ (5,20) n
20 FORMAT (I3)
WRITE (6,30)
30 FORMAT (2X,'Unesite vrednosti niza a')
c Unos niza A
READ (5,40) (nizA(i), i = 1,n)
40 FORMAT (6F10.3)
WRITE (6,50)
50 FORMAT (2X, 'Unesite vrednosti niza x')
c Unos niza X
READ (5,60) (x(i), i = 1,n)
60 FORMAT (6F10.3)
WRITE (6,70)
70 FORMAT (2X,'Unesite vrednosti niza y')
c Unos niza Y
READ (5,80) (y(i), i = 1,n)
80 FORMAT (6F10.3)
DO 90 i = 1, n
a = a+nizA(i)
xt = xt+nizA(i)*x(i)
yt = yt+nizA(i)*y(i)
90 CONTINUE
xt = xt/a
yt = yt/a
WRITE (6,120) a, xt, yt
120 FORMAT (2x,'A= ',F10.3/2x,'XT= ',
F10.3/2x,'YT=', F10.3)
STOP
END

28

Informatika 2, Milan Goci


Primer 5.3. Za zadate brojeve x i , i = 1,...,100, sastaviti algoritam i napisati program za izraunavanje sume

S( x i ) =

sin

xi
cos 2 x i
k
k2 +1

k =1

Sume raunati sve dok je apsolutna vrednost sabranih lanova vea od 10 5 . Izlazna lista neka izgleda
I
xxx

X(I)
xxxxx.xx

S(X(I))
xxxxx.xx

Reenje:

c
c
c

k - broj iteracije
x - jednodimenzioni niz
n - dimenzija niza

PROGRAM zad
c Deklarisanje niza
DIMENSION x(100)
eps = 1.E-5
WRITE (6,10)
10 FORMAT (2X, 'Unesite vrednost za n')
c Unos dimenzije niza
READ (5,20) n
20 FORMAT (I3)
WRITE (6,30)
30 FORMAT (2X,'Unesite vrednosti niza x')
c Unos niza x
READ (5,40) (x(i), i = 1, n)
40 FORMAT (8F8.2)
c Stampanje zaglavlja
WRITE (6,50)
50 FORMAT (2X, 'I', 10X, 'X', 10X, 'S(X(I))')
DO 80 i = 1, n
k=1
s = (ABS(SIN(x(i)/k)-COS(x(i))**2))/(k**2+1)
c

Ispitivanje tacnosti postavljene uslovom zadatka


DO WHILE (ABS(s).LE.eps)
k = k+1
s = s+(ABS(SIN(x(i)/k)-COS(x(i))**2))/(k**2+1)
END DO

WRITE (6,60) i, x(i), s


60 FORMAT (2X, I3, 3X, F8.2, 3X, F8.2)
80 CONTINUE
STOP
END

29

Informatika 2, Milan Goci


- AS 6 Dvodimenziono polje

Primer 6.1. Sastaviti algoritam i napisati program za nalaenje transponovane matrice AT na osnovu zadate
matrice A
2 3 5
A = 1 4
5 .
1 3 4
3x 3

Reenje:

PROGRAM zad
INTEGER a(3,3), b(3,3)
DATA a/2, -3, -5, -1, 4, 5, 1, -3, -4/
DO 10 i = 1, 3
DO 10 j = 1, 3
b(i, j) = a(j, i)
10 CONTINUE
WRITE (6, 20)
20 FORMAT (5x, 'Matrica A'/)
WRITE (6, 30) ((a(i, j), i= 1,3), j=1,3)
30 FORMAT (5x, 3I5)
WRITE (6, 40)
40 FORMAT (5x, 'Matrica B'/)
WRITE (6, 50) ((b(i,j),i= 1,3),j=1,3)
50 FORMAT (5x, 3I5)
STOP
END
Primer 6.2. Sastaviti
nain:
1 2
A = 4 0
2 5

algoritam i napisati program za sabiranje matrica A i B, koje su definisane na sledei


1 0
2 1
1 2 3 x 4

3 4 1 2
B = 1 5 0 3 . Odtampati elemente rezultujue matrice
2 2 3 1 3 x 4

C = A + B.

Reenje:

PROGRAM zad
INTEGER a(3, 4), b(3, 4), c(3, 4)
DATA a/1, 2, -1, 0, 4, 0, 2, 1, 2, -5, 1, 2/
DATA b/3, -4, 1, 2, 1, 5, 0, 3, 2, -2, 3, -1/
DO 10 i = 1, 3
DO 10 j = 1, 4
30

Informatika 2, Milan Goci


c(i, j) = a(i, j) + b(i, j)
10 CONTINUE
WRITE (6, 20)
20 FORMAT (5x, 'Matrica C'/)
WRITE (6, 30) ((c(i,j),i= 1,3),j=1,4)
30 FORMAT (5x, 4I5)
STOP
END

Primer 6.3. Sastaviti algoritam i napisati program za mnoenje dve celobrojne matrice A i B. Matrica A je
reda m x n, a B je reda n x k.
Reenje:

PROGRAM zad
INTEGER A(20,20), B(20,20), C(20,20)
10

READ(5,10) m,n,k
FORMAT(3I3)

20

WRITE(6,20) m,n,k
FORMAT(2X,'M=',I3, 2X, 'N=',I3, 2X, 'K=',I2)

Citanje vrsta po vrsta


READ(5,25) ((A(i,j),j=1,n),i=1,m)

Citanje kolona po kolona

25

READ(5,25) ((B(i,j),i=1,n),j=1,k)
FORMAT(3I3)

30

DO 30 i=1,m
DO 30 j=1,k
C(i,j)= 0
DO 30 t=1,n
C(i,j)=C(i,j)+A(i,t)*B(t,j)
CONTINUE

40

WRITE(6,40)
FORMAT(5X,'MATRICA A')

DO 60 i=1, m
WRITE(6,50) (A(i,j),j=1,n)
50
FORMAT(10(2X,I3))
60 CONTINUE

31

Informatika 2, Milan Goci


c
70
80
90

Stampanje vrsta po vrsta


WRITE(6,70)
FORMAT(/,5X,'MATRICA B')
DO 90 i=1,n
WRITE(6,80) (B(i,j),j=1,k)
FORMAT(10(2X,I3))
CONTINUE

WRITE(6,100)
100 FORMAT(/,5X,'MATRICA C')
DO 130 i=1,m
WRITE(6,120) (C(i,j),j=1,k)
120
FORMAT(10(1X,I4))
130 CONTINUE
STOP
END
- AS 7 Potprogrami - osnovni pojmovi

Izvrni program se sastoji od programa ili od programa i jednog ili vie potprograma. Ako se izvrni program
sastoji od programa i potprograma, onda se za program kae da je glavni program. Potprogram i glavni
program obrazuju programske module. Programski modul iz koga se vri prelazak na potprogram naziva se
pozivajui programski modul.
Upotreba potprograma omoguava da se jedanput napisan potprogram moe koristiti u vie razliitih
programa i formirati biblioteka potprograma. Karakteristike potprograma:

omoguava krai zapis programa,


smanjuje angaovanost memorijskog prostora,
omoguuje lake testiranje glavnog programa,
isti potprogram moe se koristiti u raznim programskim modulima.

Argumenti su veliine pomou kojih se prenose informacije iz jednog programskog modula u drugi.
Argumenti iskorieni pri pisanju potprograma nazivaju se fiktivni argumenti. Argumenti iskorieni pri
pozivu potprograma nazivaju se stvarni argumenti. Argumenti mogu biti i ulazni i izlazni. Fiktivni i stavrni
argumenti se moraju slagati po broju, redu i vrsti.
Da bi se definisao jedan potprogram potrebno je:
dodeliti potprogramu jedan jedinstven naziv,
definisati fiktivne argumente potprograma,
utvrditi postupak na osnovu kojeg e se definisati vrednosti funkcije.

U Fortranu postoje tri vrste potprograma:


funkcijska naredba,
funckijski potprogram i
opti potprogram.

32

Informatika 2, Milan Goci


Funkcijska naredba

Funkcijska naredba omoguuje izdvajanje jednog izraza (aritmetikog, logikog ili zakovnog) kao
potprograma.
Opti oblik funkcijske naredbe je:
fun([f[, f]...]) = izr

gde je:
fun - naziv funkcijske naredbe,
f - fiktivni argument,
izr - izraz.
Fiktivni argument moe biti samo ime promenljive (bez indeksa) i moe se pojaviti samo jednom u listi
fiktivnih argumenata. Oblast dejstva fiktivnog argumenta je samo u okviru funkcijske naredbe. Isto ime
fiktivnog argumenta se moe upotrebiti u vie funkcijskih naredbi istog programskog modula, a moe se
upotrebiti i kao ime promenljive izvan funkcijske naredbe. Ime funkcije se moe upotrebiti u naredbi za
eksplicitnu deklaraciju, kako bi se specificirala vrsta imena funkcije.
Primeri funkcijskih naredbi:
SUMA(A, B) = A + B
FUN(A, B) = .NOT.A.AND.B
Funkcijska naredba se poziva na taj nain to se kao argument izraza u programskom modulu kome pripada
funckijska naredba navodi naziv funkcijske naredbe sa stvarnim argumentima izmeu zagrada:
fun([s[, s]...])

gde je:
fun - naziv pozvane funkcijske naredbe,
s - stvarni argument.
Sve funkcijske naredbe koje se definiu moraju se nalaziti ispred prve izvrne naredbe, a nakon opisnih
naredbi.
Primeri naredbi za pozivanje:
ZBIR = SUMA(3, 8)
TEST = FUN(C, D)
Primer 7.1. Sledei izraz definisati funkcijskom naredbom

r = a 2 + 2a + 1,
a zatim, koristei definisanu funkciju, napisati sledee naredbe:
a) z = c 2 + 2c + 1 + c 2 ,
b) a = sin 2 b + 2 sin b + 1 ,
2
c) d = a i + 2a i + 1 ,

d) q = (a + b ) + 2(a + b ) + 1 .
2

33

Informatika 2, Milan Goci


Reenje:

R(A) = A*A+2*A+1
a)Z=R(C)+C*C,
b)A=R(SIN(B)),
c)D=R(A(I)),
d)Q=R(A+B).
Primer 7.2. Rastojanje izmeu dve take u ravni odreeno je relacijom d = (x 1 x 2 ) 2 + (y1 y 2 ) 2 gde su
(x 1 , y1 ) i (x 2 , y 2 ) koordinate prve i druge take, respektivno. Koristei ovu formulu napisati program kojim
se izraunava rastojanje od koordinatnog poetka svake od N taaka ije se koordinate redom uitavaju.
Relaciju kojom se odreuje rastojanje izmeu dve take u ravni definisati funkcijskom naredbom.

Reenje:
PROGRAM zad
c Definisanje funkcijske naredbe
RAST(X1,Y1,X2,Y2)=SQRT((X1-X2)**2)
+(Y1-Y2)**2)
READ(5,10) n
10 FORMAT(I3)
DO 80 i=1,n
READ(5,40) x, y
FORMAT(2F10.5)
40
c Stampanje izlaznih rezultata
WRITE(6,50) i,x,y,RAST(0.,0.,x,y)
FORMAT(3X,I3,6X,F10.5,2X,F10.5,
2X, F10.5,2X,E15.7)
80 CONTINUE
50

STOP
END
Primer 7.3. Napisati program za tabeliranje vrednosti funkcije

y = f (2g (f ( x ))) ,
za x = 0.1(0.1)0.9, ako je

f (x ) = 2 x ln(x ),

x
g(x ) = tg + | x | .
2

Izlaznu listu tampati u obliku


X
0.1

Y
x.xxxxxxxExx

Reenje:

34

Informatika 2, Milan Goci


PROGRAM zad
c Definisanje funkcijskih naredbi
f(x) = 2 * x - ALOG(x)
g(x) = TAN(x / 2.) + ABS(x)
c

Stampanje zaglavlja

WRITE (6,10)
10 FORMAT (2X, 'X',10X, 'Y')
DO 30 x = 0.1, 0.9, 0.1
y = f(2 * g(f(x)))
WRITE (6,20) x, y
FORMAT (2x, F3.1, 2X, E14.7)

20

30 CONTINUE
STOP
END
Primer 7.4. Tabelirati funkciju
z = y 0 .3

y2
x2
, gde je y = x + 0.2 x
y +1
x +1

za vrednosti x = 0(1)10, pri emu je funkcija y zadata funkcijskom naredbom. Izlazna lista neka izgleda
X
Y
Z
_____________________________________
xx.xx
xxxx.xxx
xxxxx.xx

Reenje:

y- ime funkcijske naredbe


PROGRAM zad

Definisanje funkcijske naredbe


y(x) = SQRT(x) + 0.2 * x - x ** 2. / (x + 1.)

c Stampanje zaglavlja
WRITE (6,10)
10 FORMAT (5X, 'X', 8X, 'Y', 9X, 'Z')
DO 30 x = 0., 10.
z = y(x) - 0.3 * y(x) ** 2 / (y(x) + 1.)
c Stampanje rezultata

35

Informatika 2, Milan Goci


WRITE (6,20) x, y(x) , z
FORMAT (2X, F5.2, 3X, F8.3, 3X, F8.2)

20

30 CONTINUE
STOP
END
- AS 8 Funkcijski potprogram

Funkcijski potprogram se koristi u situaciji kada funkciju nije mogue definisati korienjem samo jedne
naredbe. Potprogram ovog tipa moe sadrati proizvoljan broj naredbi koje definiu funkciju. On ini
posebnu programsku celinu i moe se pozvati iz bilo kog programskog modula.
Opti oblik funkcijskog potprograma:
[tip] FUNCTION fun([f[, f]...])
telo funkcije
RETURN
END

gde je:
tip - tip potprograma,
FUNCTION - slubena re,
fun - naziv funkcijskog potprograma,
f - fiktivni argument argument,
RETURN - slubena re
END - slubena re, koja oznaava fiziki kraj programa.
Vrste fiktivnih argumenata i ime funkcijskog potprograma, koje predstavlja jedinu izlaznu veliinu, odreene
su unutranjom konvencijom ili opisnim naredbama za eksplicitnu, odnosno implicitnu deklaraciju, koje se
piu odmah iza naredbe FUNCTION.
Funkcijski potprogram se poziva na taj nain to se kao argument izraza u programskom modulu kome
pripada funckijski potprogram navodi naziv funkcijskog potprograma sa stvarnim argumentima izmeu
zagrada:
fun([s[, s]...])

gde je:
fun - naziv pozvanog funkcijskog potprograma,
s - stvarni argument.
Povratak iz funkcijskog potprograma u pozivajuu programsku jedinicu se ostvaruje naredbom RETURN.

36

Informatika 2, Milan Goci


Primer 8.1. Sastaviti potprogram tipa FUNCTION u kome se za
x = 0.1 (0.1) 0.5 i y = 0.01 (0.01) 0.03 izraunava vrednost funkcije F (x, y) po formuli
e x sin 2 y

F(x , y ) = cos x
1 x y

za

x < y,

za
za

x = y,
x > y.

zadate

vrednosti

U glavnom programu uitati vrednosti x i y, a kao rezultat tampati x, y i F (x,y).


Reenje:

c Funkcijski potprogram
FUNCTION F(x, y)
IF (x.LT.y) THEN
F = EXP(x) * SIN(2 * y)
ELSE IF (x.EQ.y) THEN
F = COS(x)
ELSE
F = 1 - SQRT(ABS(x * y))
END IF
RETURN
END
c x, y- vrednosti promenljivih
c F-vrednost funkcije
PROGRAM zad
c Stampanje zaglavlja
WRITE (6,10)
10 FORMAT (8X, 'X', 10X, 'Y', 10X, 'F(X,Y)')
DO 40 x = 0.1, 0.5, 0.1
DO 20 y = 0.01, 0.03, 0.01
WRITE (6,30) x, y, F(x, y)
30
FORMAT (2X, F8.3, 2X, F8.3, 2x, F10.4)
20
CONTINUE
40 CONTINUE
STOP
END
Primer 8.2. Napisati program za izraunavanje vrednosti determinante
0

D= 7
5

0
8

5
6

Izraunavanje izvriti korienjem potprograma tipa FUNCTION za izraunavanje determinante reda dva.
Reenje:

37

Informatika 2, Milan Goci


c
c

Potprogram det za odredjivanje vrednosti determinante reda dva


Ulazni parametri: b1, b2, c1, c2
INTEGER FUNCTION det(b1, b2, c1, c2)
INTEGER b1, b2, c1, c2
det = b1 * c2 - b2 * c1
RETURN
END
c

Glavni program
PROGRAM zad
INTEGER a(3, 3), det, d
DATA a/0, -6, 9, 7, 0, -5, 5, -8, 6/
c Izracunavanje vrednosti determinante reda tri
d=a(1,1)*det(a(2,2),a(2,3),a(3,2),a(3,3))a(1,2)*det(a(2,1),a(2,3),a(3,1),a(3,3))
+a(1,3)*det(a(2,1),a(2,2),a(3,1),a(3,2))
c Stampanje vrednosti determinante
WRITE (6, 10)
10 FORMAT (5x, 'Za matricu A'/)
WRITE (6, 20) ((a(i,j), i = 1,3), j = 1, 3)
20 FORMAT (5x, 3I5)
WRITE (6,30) d
30 FORMAT(/ 2X, 'Vrednost determinante je:',
2X, I5)
STOP
END

Primer 8.3. Funkcija f definisana je izrazom

f (x ) =

2 + x 2 n +1
,
n =0 (2n + 1)2

( x < 1) .

Sastaviti potprogram tipa FUNCTION za izraunavanje vrednosti funkcije f sa tanou 10 5 .


Korienjem ovog potprograma sastaviti program za izraunavanje vrednosti f (x ) i f (sinx )
x = 0.00 (0.05 ) 0.80 . Rezultat tampati u obliku
X
x.xx

F(X)
x.xxxxx

F(SIN(X))
x.xxxxx

za

Reenje:

c Potprogram tipa FUNCTION nalazi vrednost funkcije f (x)


c eps zadata tacnost
c a0 i a1 su clanovi reda
FUNCTION F(x)
eps = 1.E-5
PI = 3.14159265

38

Informatika 2, Milan Goci


c Izracunavanje sume reda
F = 0.
a0 = x
a1 = ABS(a0)
n=0
c

Ispitivanje da li je tacnost zadovoljena


DO WHILE (a1.GE.eps)
a0 = a0 * (x ** (2 * n + 1) / ((2 * n + 1) ** 2))
F = F + a0
a1 = ABS(a0)
n=n+1
END DO
F = 2. / PI * F
RETURN
END

c Glavni program
PROGRAM zad
WRITE (6,10)
10 FORMAT (10X, 'X', 9X, 'F(X)', 10X, 'F(SIN(X))')
c Izracunavanje f (x) i f (sinx)
DO 30 x = 0.0, 0.8, 0.05
y = F(x)
z = F(SIN(x))
WRITE (6,20) x, y, z
20 FORMAT (11X, F4.2, 5X, F7.5, 9X, F7.5)
30 CONTINUE
STOP
END
- AS 9 Opti potprogram

Za razliku od funkcijske naredbe i funkcijskog potprograma koji imaju jednu izlaznu veliinu, opti
potprogram moe imati jednu, vie ili nijednu izlaznu veliinu. Opti potprogram ini posebnu programsku
celinu i moe se pozvati iz bilo koje programske celine.
Opti potprogram je sledeeg oblika:
SUBROUTINE sub([f[, f]...])
telo potprograma
RETURN
END

gde je:

39

Informatika 2, Milan Goci


SUBROUTINE - slubena re,
sub - naziv opteg potprograma,
f - fiktivni argument argument,
RETURN - slubena re
END - slubena re, koja oznaava fiziki kraj programa.
Vrsta fiktivnih argumenata odreena je unutranjom konvencijom ili opisnim naredbama za eksplicitnu,
odnosno implicitnu deklaraciju, koje se piu odmah iza naredbe SUBROUTINE.
Poziv opteg potprograma se vri naredbom
CALL sub([s[, s]...])

gde je:
CALL - slubena re,
sub - naziv pozvanog opteg potprograma,
s - stvarni argument.
Primer 9.1. Napisati:

a) opti potprogram,
b) funkcijski potprogram,
za izraunavanje vrednosti
E(x ) =

1
1.43
x5e x

+ 1

Reenje:
a) SUBROUTINE E(X, VR)
VR=1/(X**5*(EXP(1.43/X)+1.))
RETURN
END

b) FUNCTION E(X)
E=1./(X**5*(EXP(1.43/X)+1.))
RETURN
END
Primer 9.2. Sastaviti potprogram tipa SUBROUTINE za izraunavanje vrednosti funkcije

y=

i =1

x aj ,

(
j=1
j i

gde su a j ( j = 1,..., n ) dati brojevi. Ulazni parametri potprograma su: n, x, a j ( j = 1,..., n ) , a izlazni y.

U glavnom programu pozvati potprogram za x = 0.0 (0.1)1.0 . Vrednost n uitati u formatu I2, a vrednosti
a j ( j = 1,..., n ) u formatu 8F8.2. Izlazna lista neka izgleda:
N = xx

X
xxxxx.xx

Y
x.xxxxxxE xx

M
40

Informatika 2, Milan Goci


Reenje:

c Potprogram opsteg tipa


SUBROUTINE IZVOD(n, x, a, y)
DIMENSION a(n)
c Izracunavanje sume
s=0
DO 20 i = 1, n
p=1
DO 10 j = 1, n
IF (i.NE.j) THEN
p = p*(x-a(j))
END IF
10 CONTINUE
s = s+p
20 CONTINUE
y=s
RETURN
END
c Glavni program
c Zadatak izracunava vrednost funkcije y
41

Informatika 2, Milan Goci


PROGRAM zad
c Deklarisanje niza A
DIMENSION a(100)
WRITE (6,10)
10 FORMAT (2X, 'Unesite vrednost za n')
c Unos dimenzije niza
READ (5,20) n
20 FORMAT (I2)
WRITE (6,30)
30 FORMAT (2X, 'Unesite vrednosti niza a')
c

Unos niza

READ (5,40) (a(i),i=1,n)


40 FORMAT (10F8.2)
WRITE (6,50) n
50 FORMAT (5X, 'N=', I2, 10X, 'X', 11X, 'Y'/)
DO 80 x = 0.0,1.0,0.1
c Poziv potprograma
CALL IZVOD(n, x, a, y)
c Stampanje vrednosti x i y
WRITE (6,60) x, y
60 FORMAT (17X, F9.2, 1X, E13.6)
80 CONTINUE
STOP
END
Primer 9.3. Tebelirati funkciju
f (x ) = 0.3 ln x 2 + y 2 + x 2 + y 2 + 2.6(sin a 1 + sin a 2 ) + 2.2(cos b1 + cos b 2 ),

gde su x i y koreni jednaine

1.8p 2 + 0.2zp 4.15z 2 = 0


za z = 1(3)40. a 1 i a 2 su koreni jednaine
p 2 5.5p 3.25 = 0,
b1 i b 2 su koreni jednaine
0.6p 2 + 1.3p + 0.1 = 0.
Sve kvadratne jednaine reavati optim potprogramom. Parametre kvadratnih jednaina uitavati u
proizvoljnom formatu. Na izlazu tampati tabelu sledeeg izgleda
TABELA FUNKCIJE F(Z)
Z
F(Z)
1
xxx.xxxxx
42

Informatika 2, Milan Goci


4

xxx.xxxxx

Reenje:

SUBROUTINE Kvad (a, b, c, x1, x2)


x1 = (-b + SQRT(b * b 4 * a * c)) /(2 * a)
x2 = (-b - SQRT(b * b 4 * a * c)) / (2 * a)
RETURN
END
PROGRAM zad
DATA a1, b1, c1, a2, b2, c2, a3, b3, c3
*/1.8, 0.2, -4.15, 1., -5.5,-3.25, 0.6,1.3, 0.1/
c

Stampanje zaglavlja

WRITE(6,10)
10 FORMAT(3X, 'TABELA FUNKCIJE F(Z)' / 3X, 'Z', 8X, 'F(Z)'/)
CALL Kvad(a2, b2, c2, aa1, aa2)
CALL Kvad(a3, b3, c3, bb1, bb2)
DO 30 z = 1, 40, 3
b1 = b1 * z
c1 = c1 * z * z
CALL Kvad(a1, b1, c1, x, y)
f = 0.3 * (ALOG(SQRT(x * x + y * y) + x * x + y * y)) + 2.6 * (SIN(aa1) + SIN(aa2)) +
*2.2 * (COS(bb1) + COS(bb2))
WRITE(6,20) z, f
20 FORMAT(2X, F4.1, 3X, F9.5)
30 CONTINUE
STOP
END

- AS 10 Verini razlomak, Hornerova ema, numerika integracija,


nule funkcije
Primer 10.1. Napisati program za izraunavanje verinog razlomka

f (x ) = a +

x1 x 2
x2 x3
2 a+
x3 x4
3 a+
M
(n 1) a + x n 1 x n
n a

43

Informatika 2, Milan Goci


Na ulazu uitati vrednost za a i niz X = {x i }n .
Reenje:
PROGRAM zad
INTEGER a
DIMENSION x(50)
WRITE(6,10)
10 FORMAT(2X, 'Unesite vrednosti za a i n:')
READ(5,20) a, n
20 FORMAT(2I3)
WRITE(6,30)
30 FORMAT(2X, 'Unesite vrednosti niza X:')
READ(5,40) (x(i), i = 1, n)
40 FORMAT(10F6.2)
ver = n * SQRT(FLOAT(a))
DO 50 i = n - 1, 1, -1
ver = i * SQRT(FLOAT(a)) + (x(i) - x(i + 1)) / ver
50 CONTINUE
WRITE(6, 60) ver
60 FORMAT(2X, F6.2)
STOP
END
Primer 10.2. Izraunati vrednost polinoma

P = a n x n + a n 1 x n 1 + ... + a 1 x + a 0 ,
koristei Hornerovu emu
P = (...((a n x + a n 1 )x + a n 2 )x + ... + a 1 )x + a 0 ,

za n 10, x = 1 (0.1) 2 i
a 0 = 0.75, a 1 = 163.2, a 2 = 3.17, a 3 = a 4 = 5.6,
a 6 = 1.21,

a 7 = 26.7,

a 8 = 3.66,

a 9 = 10.2,

a 5 = 2.34,
a 10 = 11.6.

Koeficijente uitati u pogodnom formatu, a izlazna lista neka izgleda:


X
x.x

P
x.xxxxxxE xx

Reenje:

c
c

Ulazni argumenti funkcijskog potprograma:


a - ime niza
44

Informatika 2, Milan Goci


c
c

n - dimenzija niza
x - argument
FUNCTION Horn(a, n, x)
DIMENSION a(1)
Horn = a(n)
DO WHILE (n.NE.0)
Horn = Horn * x + a(n - 1)
n=n-1
END DO
RETURN
END

c Glavni program
PROGRAM zad
c Dimenzionisanje vektora a
DIMENSION a(0:20)
c

Dodela vrednosti elementima niza


DATA (a(i), i = 0, 10) /0.75, 163.2, -3.17, 2*5.6, -2.34, -1.21,
*26.7, -3.66, 10.2, -11.6/

WRITE(6, 10)
10 FORMAT(2X, 'Unesite vrednost za n manju od 11')
c

Ucitavanje vrednosti promenljive

READ(5, 20) n
20 FORMAT(I2)
IF(n.LT.11) THEN
c

Stampanje zaglavlja

30

WRITE(6,30)
FORMAT(2X, 'X', 10X, 'P(X)')

40
50

DO 50 x = 1., 2., 0.1


y = Horn(a, 6, x)
WRITE(6,40) x, y
FORMAT(2X, F4.2, 5X, E13.6)
CONTINUE

c
60

ELSE
Stampanje poruke o greski
WRITE(6,60)
FORMAT(2X, 'Uneli ste vecu vrednost od potrebne!')
END IF
STOP
END

45

Informatika 2, Milan Goci

Primer 10.3. Izraunati odreeni integral

arctg

A =

1 .2 e
1

x2 +1
x
dx ,
+ cos x

Simpsonovim pravilom, sa korakom h = 0.01 . Podintegralnu funkciju izraunati potprogramom tipa


FUNCTION. Izlazna lista neka izgleda
VREDNOST INTEGRALA A = xx.xxxxxxxE xx .
Reenje:

Simpsonovo pravilo:
b

f (x )dx = 3 [f (a ) + 4 f (a + h ) + 2 f (a + 2 h ) + ... + f (b h )]

ili

f (x )dx = 3 [f

+ 4(f 1 + f 3 + ... + f 2 n 1 ) + 2(f 2 + f 4 + ... + f 2 n 2 ) + f 2 n ] , gde je

h=

c
c
c
c
c
c
c
c
c

ba
i f k = f (a + kh ), (k = 0,1,..., 2n )
2n

Opsti potprogram
Ulazni argumenti potprograma:
a - donja granica odredjenog integrala
b - gornja granica odredjenog integrala
h - korak integracije
Funk - podintegralna funkcija
Izlazni argumenti potprograma:
vrintg - vrednost izracunatog integrala
SUBROUTINE Simpson(a, b, h, Funk, vrintg)
EXTERNAL Funk
n = (b - a) / (2 * h)
s1 = 0
s2 = 0

DO 10 i = 1, n
s1 = s1 + Funk(a + (2 * i - 1) * h)
10
CONTINUE
DO 20 i = 1, n - 1
s2 = s2 + Funk(a + 2 * i * h)
20
CONTINUE
vrintg = h / 3 * (Funk(a) + 4 * s1 + 2 * s2 + Funk(b - h))
RETURN
END
c Funkcijski potprogram
c Ulazni argument: x - vrednost za koju se izracunava podintegralna funkcija

46

Informatika 2, Milan Goci


FUNCTION Funk(x)
Funk = ATAN((x ** 2 + 1) / x) / (1.2 * EXP(x) + COS(x))
RETURN
END
c

Glavni program
PROGRAM zad
EXTERNAL Funk
a=1
b=3
h = 0.01

c Poziv opsteg potprograma


CALL Simpson(a, b, h, Funk, vrintg)
c

Stampanje rezultata

WRITE(6,20) vrintg
20 FORMAT(2X, 'VREDNOST INTEGRALA A = ', E14.7)
STOP
END
Primer 10.4. Izraunati odreeni integral
3 .6

A =

x sin x

7 . 2 + ln (x
0

+1

) dx ,

trapeznim pravilom, sa korakom h = 0.01 . Podintegralnu funkciju izraunati potprogramom tipa


FUNCTION. Izlazna lista neka izgleda
VREDNOST INTEGRALA A = xx.xxxxxxxE xx
Reenje:

Trapezno pravilo
b

f (x )dx
a

f (a ) + f (b )

=
+ f (a + h ) + f (a + 2 h ) + ... + f (b + h )
2

xn

n 1

x0

i=0

h
f (x )dx = 2 [f (x ) + f (x
i

c
c
c
c
c
c
c
c
c

ili

+ 1)] , gde je h = x i +1 x i

Opsti potprogram
Ulazni argumenti potprograma:
a - donja granica odredjenog integrala
b - gornja granica odredjenog integrala
h - korak integracije
Funk - podintegralna funkcija
Izlazni argumenti potprograma:
vrintg - vrednost izracunatog integrala
SUBROUTINE Trapez (a, b, h, Funk, vrintg)
47

Informatika 2, Milan Goci


EXTERNAL Funk
n = (b - a) / h
s1 = 0.
DO 10 i = 1, n - 1
s1 = s1 + Funk(a + i * h)
10 CONTINUE
vrintg = h * ((Funk(a) + Funk(b)) / 2 + s1 + Funk(b - h))
RETURN
END
c Funkcijski potprogram
c Ulazni argument: x - vrednost za koju se izracunava podintegralna funkcija
REAL FUNCTION Funk(x)
Funk = x * SIN(x) / (7.2 + ALOG(x ** 2 + 1.))
RETURN
END
c

Glavni program
PROGRAM zad
EXTERNAL Funk
a = 0.
b = 3.6
h = 0.01

c Poziv opsteg potprograma


CALL Trapez(a, b, h, Funk, vrintg)
c

Stampanje rezultata

WRITE(6,20) vrintg
20 FORMAT(2X, 'VREDNOST INTEGRALA A = ', E15.7)
STOP
END
Primer 10.5. Napisati program za nalaenje nule funkcije f(x) = x3 7x = 0 metodom deljenja na pola sa
tanou . Proces treba prekinuti kada bude zadovoljen uslov a-b .
Reenje:

PROGRAM zad
c

Definisanje funkcijske naredbe


F(x)=x ** 3 7 * x

WRITE(6, 10)
10 FORMAT(2X, 'Unesite a, b i eps:')
READ(5,20) a, b, eps
20 FORMAT(2F8.3, E10.3)
48

Informatika 2, Milan Goci


k=0
DO WHILE(ABS(b - a).GT. eps)
k=k+1
c = (a + b) / 2
IF (F(c) * F(a).LT.0) THEN
b=c
ELSE
a=c
END IF
END DO
30

WRITE(6,30) c
FORMAT(2X, 'Resenje: ', E14.3)
STOP
END

Primer 10.6. Napisati program za reavanje jednaine ex 10x = 0 metodom seice. Poetna reenja x0 i x1 i
dati su na ulazu. Na izlazu tampati krajnje reenje. Funkciju definisati funkcijskom naredbom.
Reenje:

Za metodu seice vae sledea pravila:


1. definisanje funkcije,
2. poetni uslovi: x 0 , x 1 ,
3. iterativna zakonitost x k +1 = x k

x k x k 1
f (x k ), k = 1, 2, K ,
f (x k ) f (x k 1 )

4. uslov kraja x k +1 x k .
PROGRAM zad
c

Definisanje funkcijske naredbe


F(x)=EXP(x) 10 * x

WRITE(6, 10)
10 FORMAT(2X, 'Unesite x0, x1 i eps')
READ(5,20) x0, x1, eps
20 FORMAT(2F8.3, E10.3)
k=0
x2 = x1 - (x1 - x0) / (F(x1) - F(x0)) * F(x1)
DO WHILE (ABS(x2 - x1).GT.eps)
k=k+1
x0 = x1
x1 = x2
x2 = x1 - (x1 - x0) / (F(x1) - F(x0)) * F(x1)
END DO
WRITE(6,30) x2
30 FORMAT(2X, 'Resenje: ', E14.3)
STOP
49

Informatika 2, Milan Goci


END
Primer 10.7. Napisati program za reavanje jednaine x5 sinx = 0 Njutnovim iterativnim postupkom .
Poetno reenje x0 i tanost dati su na ulazu. Na izlazu tampati krajnje reenje. Funkciju i njen prvi izvod
definisati funkcijskim naredbama.
Reenje:

Za Njutnov metod vae sledea pravila:


1. definisanje funkcije,
2. poetni uslovi: x 0 ,
3. iterativna zakonitost x k +1 = x k

f (x k )

f ' (x k )

, k = 0, 1, K ,

4. uslov kraja x k +1 x k .
PROGRAM zad
c

Definisanje funkcijskih naredbi


f(x) = x ** 5 - SIN(x)
f1(x) = 5 * x ** 4 - COS(x)

WRITE(6, 10)
10 FORMAT(2X, 'Unesite x0 i eps')
READ(5,20) x0, eps
20 FORMAT(F8.3, E10.3)
k=0
x1 = x0 - f(x0) / f1(x0)
DO WHILE (ABS(x1 - x0).GT.eps)
x0 = x1
x1 = x0 - f(x0) / f1(x0)
k=k+1
END DO
WRITE(6,30) x1, f(x1)
30 FORMAT(2X, 'x1= ', E14.3, 2X, 'F(x1)=', E14.3)
STOP
END
Primer 10.8. Napisati potprogram za reavanje log2x ex = 0 metodom tetive (regula falsi). Funkciju
definisati funkcijskim potprogramom.
Reenje:

Za metodu tetive vae sledea pravila:


1. definisanje funkcije,
2. poetni uslovi: x 0 , x 1 ,
3. iterativna zakonitost x k +1 = x k

x k x k 1
f (x k ), k = 1, 2, K ,
f (x k ) f (x k 1 )
50

Informatika 2, Milan Goci


4. uslov kraja x k +1 x k .
FUNCTION Tet(x0, x1, eps, F)
EXTERNAL F
k=0
x2 = x1 - (x1 - x0) / (F(x1) - F(x0)) * F(x1)
DO WHILE (ABS(x2 - x1).GT.eps)
k=k+1
x1 = x2
x2 = x1 - (x1 - x0) / (F(x1) - F(x0)) * F(x1)
END DO
Tet = x2
RETURN
END
FUNCTION F(x)
F = ALOG10(x) ** 2 - EXP(x)
RETURN
END
PROGRAM zad
EXTERNAL F
WRITE(6, 10)
10 FORMAT(2X, 'Unesite x0, x1 i eps')
READ(5,20) x0, x1, eps
20 FORMAT(2F8.3, E10.3)
t = Tet(x0, x1, eps, F)
WRITE(6,30) t
30 FORMAT(2X, 'T= ', E14.3)
STOP
END

51

You might also like