You are on page 1of 51

F O R T R A N

Vebe





















Autor: Milan Goci
Predmet: Informatika II

Poslednje izmene: 10.12.2011.




Informatika 2, Milan Goci
2








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
3
- 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










Logike operacije

Logika operacija
Simbol u
FORTRAN-u
Operacija
u matematici u FORTRAN-u
negacija .NOT.
p
.NOT.P
konjunkcija .AND.
q p
P.AND.Q
disjunkcija .OR.
q p
P.OR.Q
ekvivalencija .EQV.
q p
P.EQV.Q
ekskluzivna disjunkcija (iskljuivo ili) .XOR. q p P.XOR.Q

Relacije poreenja

Relacija poreenja
Simbol u
FORTRAN-u
Predikat
u matematici u FORTRAN-u
manje od .LT.
y x <
X.LT.Y
manje ili jednako .LE.
y x
X.LE.Y
jednako .EQ.
y x =
X.EQ.Y
razliito .NE.
y x
X.NE.Y
vee ili jednako .GE.
y x
X.GE.Y
vee od .GT.
y x >
X.GT.Y

Aritmetika
operacija
Simbol u
FORTRAN-u
Operacija
u matematici u FORTRAN-u
sabiranje +
y x +
X+Y
oduzimanje -
y x
X-Y
mnoenje *
y x
X*Y
deljenje / ( ) y x ili y x : / X/Y
stepenovanje **
y
x
X**Y
Informatika 2, Milan Goci
4
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 _____DA_______________
b) LAMBDA _____DA_______________
c) Masa _____DA_______________
d) KOL. _____NE_______________
e) LAN _____NE_______________
f) MES-AR _____NE_______________
g) BAROMETAR _____DA_______________
h) PREZIME _____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.
Informatika 2, Milan Goci
5
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.

Informatika 2, Milan Goci
6
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
7
Format specifikacije

Da bi se program mogao uspeno prevesti u izvrni program, moraju se zadovoljiti sledea pravila za pisanje
izvornog koda:

kolona polje
1 komentar
1-5 obeleje naredbi
6 identifikator nastavka linije
7-72 naredbe
73-80 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. PROGRAM, FUNCTION, SUBROUTINE ili BLOCK DATA naredba,
2. PARAMETER naredbe i/ili IMPLICIT naredbe,
3. ostale specifikacione naredbe (izuzev DATA naredbi),
4. funkcijske naredbe,
5. izvrne naredbe,
6. 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:
n I k
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:
Informatika 2, Milan Goci
8
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:
A k
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
9
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 realna/ celobrojna/ neispravno

a) (X61) ____________________ ______ neispravno_____
b) 3.5E02 ______ konstanta______ ______ realna_________
c) PAUSE ____________________ ______ neispravno_____
d) YU126 _____ promenljiva_____ ______ realna_________
e) KAT _____ promenljiva_____ ______ celobrojna______
f) END ____________________ ______ neispravno_____
g) X+3 ____________________ ______ neispravno_____
h) INDEX _____ promenljiva_____ ______ celobrojna______
i) T1.4 ____________________ ______ neispravno_____
j) 42Y ____________________ ______ neispravno_____


Biblioteke (INTRINSIC) funkcije

Matematika FORTRAN Opis
a ABS(a) Apsolutna vrednost
MOD(a,b) Modularna aritmetika
a
e
EXP(a) Eksponencijalna funkcija
ln a ALOG(a)

Logaritamska funkcija
a log
10
ALOG10(a)
a SQRT(a) Kvadratni koren
sin a SIN(a)
Trigonometrijske funkcije

cos a COS(a)
tan a TAN(a)
ctg a COTAN(a)
asin a ASIN(a)

Inverzne trigonometrijske funkcije
acos a ACOS(a)
atan a ATAN(a)
sinh a SINH(a)

Hiperboline funkcije
cosh a COSH(a)
tanh a TANH(a)

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,
Informatika 2, Milan Goci
10
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. .GT. .GE. .LT. .LE. .EQ. .NE.
6. .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) ac ab + , b)


c
b 8 a 2
3 , c) ( ) 1 k 3
3 k
b a
+

+
, d) ( )
2
n a 2
3
1
,


e)

+
2
x
arctg b cos e a sin ln
2
x
, f) ( )( )( ) c p b p a p p .

Odgovor: 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)))),
Informatika 2, Milan Goci
11
f) SQRT(P * (P - A) * (P - B) * (P - C)).

Specijalni sluajevi

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

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

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


Primer 1.8. Kodirati sledei izraz
xy
2
e
y cos
2 . 0 x tg ln + + .
Odgovor: ALOG(SQRT(TAN(X)**2+0.2+COS(Y)/EXP(X*Y))).

Primer 1.9. Sledee matematike izraze kodirati na FORTRANu korienjem obine i dvostruke tanosti:
a)
( )
2 2
3
x sin ln
x x sin +
, b)
x
y
2
x
y
z
y
x

.
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 ____ neispravan_______
b) -0.4E+5*P ____ realan___________
c) .99E-4+2 ____ realan___________
d) 1/A-1 ____ realan___________
e) A+-B ____ neispravan_______
f) K**2E1 ____ neispravan_______
g) R**2.0 ____ realan___________
h) 2J*K*L ____ neispravan_______
i) AX+BX+X ____ neispravan_______
j) K**2E1 ____ 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.
Informatika 2, Milan Goci
12
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
2
x
e 1 . 7 x cos 3 . 3
x 2 sin 2 . 1 e
y

+
= .

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

. 0 1 x 1 x e 0
2 x
ax x 2
y
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

c a c 2 b 2
c b
a

+


logikoj promenljivoj z.

Odgovor: LOGICAL Z
Z = A / (B + C) - 2 * B.NE.2. * C.AND.A.GE.C
Informatika 2, Milan Goci
13

- AS 2 -

Naredba ulaza

Opti oblik naredbe ulaza

READ(i, j) lista
j 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
8
10


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))

Informatika 2, Milan Goci
14
Naredba izlaza

Opti oblik naredbe izlaza

WRITE(i, j) lista
j 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 real, obina tanost
4
10 5 . 2


BCD real, obina tanost -4.2
JDE celobrojna -413
LEF celobrojna 19
TUV logika tano
VEX logika netano

Napomena: Eksplicitno definisati vrstu promenljive, tamo gde je potrebno.
Informatika 2, Milan Goci
15
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.
Informatika 2, Milan Goci
16

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








Informatika 2, Milan Goci
17
Primer 2.8. Sastaviti algoritam i napisati program kojim se izraunava vrednost funkcije

y x
x
x 2
y x
f
4

+
=

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

<

= =
0. x x,
0, x x,
x y

Na izlazu tampati rezultat oblika

Za uneto X = xxx.xxx dobija se Y = xxx.xxx.
Informatika 2, Milan Goci
18

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

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


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






Informatika 2, Milan Goci
19

Na slici 3.3 prikazana je struktura u kojoj se u odrenoj grani IF-THEN-ELSE strukture nalazi druga IF-
THEN-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 2. IF (uslov1) THEN
B1 B1
ELSE ELSEIF (uslov2) THEN
IF (uslov2) THEN B2
B2 ELSE
ELSE B3
B3 ENDIF
ENDIF
ENDIF

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

x2. x1 je ako
x2, x1 je ako
x2, x1 je ako
x2, - x1
x2, x1
x2, x1
y
>
=
<

+
=

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





Informatika 2, Milan Goci
20
- 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
40 62x 23x x f(x)
2 3
+ = koristei iterativnu formulu

23. x
0
= ,
K 1, 0, i 23,
x
62
x
40
x
i
2
i
1 i
= + =
+
.

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

+
.

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











Informatika 2, Milan Goci
21
Primer 4.2. Sastaviti algoritam i napisati program za iterativno reavanje sistema jednaina


0 3 y 2 x
0 1 x 2 xy 3 x 4
2
2
= +
= +


koristei sledee formule:

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


Iterativni proces prekinuti kada se ispune uslovi


+ n 1 n
x x i
+ n 1 n
y y .

Na ulazu je data vrednost za i poetne vrednosti za
0
x i
0
y . 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 ch x
primenom sledeeg razvoja u red

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

+
=
=

Izraunavanje prekinuti kada relativna vrednost prirataja sume postane manja od zadate vrednosti EPS.

Napomena: Ovaj razvoj u red vai za 4 x < .
Informatika 2, Milan Goci
22
Reenje:

Postoje dve vrste prirataja sume:

1) apsolutna vrednost prirataja sume:
1 i i 1 i
a S S
+ +
= ,
2) relativna vrednost prirataja sume:
1 i 1 i 1 i i 1 i
/S a )/S S (S
+ + + +
= .

Razvojem funkcije ch(x) u red dobija se:

... a a ... a a a
(2k)!
x
ch x
1 k k 1 0
0 k
k
0 k
2k
+ + + + + = = =
+
+
=
+
=

, pri emu vai
(2k)!
x
a
2k
k
= ,
k
2 2 2k 2 2k 1) 2(k
1 k
a
1) (2k 2) (2k
x
(2k)! 1) (2k 2) (2k
x x
2)! (2k
x x
1))! (k (2
x
a
+ +
=
+ +
=
+
=
+
=
+
+

1 a
0
=

c Zadatak izracunava sumu reda ch(x)
c x- vrednost za koju se izracunava vrednost sume
c 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 Izracunavanje sume
c k - broj iteracije
c S - suma reda
c 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

c 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



Informatika 2, Milan Goci
23
Brojaki ciklus

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


DO n I = m1,m2, m3
telo ciklusa
n 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 algoritam i napisati program za izraunavanje vrednosti funkcije
3
x 1 926 . 41 ) x ( f + = za x = 1.00(0.2)2.00. Izlazna lista neka izgleda

X F(X)
x.xx xxx.xx
M M

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


( )

>
=
<
=
. y x za xy 1
, y x za y sin x cos
, y x za y 2 sin e
y , x f
x


Rezultate tampati u obliku tabele sa zaglavljem

Informatika 2, Milan Goci
24
x y f(x,y)
----------------------------------------------
xxxx.xxx xxxx.xxx xxxxx.xxxx
M M M

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 = 1 X * 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

.
2 . 1 n
5 . 2 n
S
50
1 n
2

=
+
+
=



Informatika 2, Milan Goci
25
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

,
3 i
5 . 3 i
S
n
3 i
1 i

=

+
=

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









Informatika 2, Milan Goci
26
Primer 4.8. Sastaviti algoritam i napisati program za izraunavanje sume

.
3 j
2 j
S
50
1 i
i
3 j
1 j

=

+
=

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:




Informatika 2, Milan Goci
27



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
2 7 5 8 1
2 7 5 8 1
2 5 7 8 1
2 5 7 1 8
2 5 7 1 8
2 5 1 7 8
2 5 1 7 8
2 1 5 7 8
2 1 5 7 8
1 2 5 7 8
N e s o r t i r a n i n i z
P r v i p r o l a z
D r u g i p r o l a z
T r e i p r o l a z
e t v r t i p r o l a z
Informatika 2, Milan Goci
28
Primer 5.2. Sastaviti algoritam i napisati program za odreivanje poloaja teita sloene povrine A
pomou formula:


. y A
A
1
y
, x A
A
1
x
, A A
n
i i t
n
i i t
n
i

=
=
=


Vrednost n je formata I3, dok su vrednosti
i i i
y , x , A 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

Informatika 2, Milan Goci
29
Primer 5.3. Za zadate brojeve 1,...,100, i , x
i
= sastaviti algoritam i napisati program za izraunavanje sume

+
=
+

=
1 k
2
i
2 i
i
1 k
x cos
k
x
sin
) x ( S .

Sume raunati sve dok je apsolutna vrednost sabranih lanova vea od
5
10

. Izlazna lista neka izgleda



I X(I) S(X(I))
xxx xxxxx.xx xxxxx.xx
M M M

Reenje:
c k - broj iteracije
c x - jednodimenzioni niz
c 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





Informatika 2, Milan Goci
30
- AS 6 -

Dvodimenziono polje



Primer 6.1. Sastaviti algoritam i napisati program za nalaenje transponovane matrice A
T
na osnovu zadate
matrice A

3 x 3
4 3 1
5 4 1
5 3 2
A


= .
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 algoritam i napisati program za sabiranje matrica A i B, koje su definisane na sledei
nain:
4 x 3
2 1 5 2
1 2 0 4
0 1 2 1
A

=
4 x 3
1 3 2 2
3 0 5 1
2 1 4 3
B

= . Odtampati elemente rezultujue matrice


B A C + = .

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
Informatika 2, Milan Goci
31
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)

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

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

c Citanje vrsta po vrsta
READ(5,25) ((A(i,j),j=1,n),i=1,m)

c Citanje kolona po kolona

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

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)
30 CONTINUE

WRITE(6,40)
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

Informatika 2, Milan Goci
32
c Stampanje vrsta po vrsta

WRITE(6,70)
70 FORMAT(/,5X,'MATRICA B')
DO 90 i=1,n
WRITE(6,80) (B(i,j),j=1,k)
80 FORMAT(10(2X,I3))
90 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.




Informatika 2, Milan Goci
33
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

, 1 a 2 a r
2
+ + =

a zatim, koristei definisanu funkciju, napisati sledee naredbe:

a)
2 2
c 1 c 2 c z + + + = ,
b) 1 b sin 2 b sin a
2
+ + = ,
c) 1 a 2 a d
i
2
i
+ + = ,
d) ( ) ( ) 1 b a 2 b a q
2
+ + + + = .

Informatika 2, Milan Goci
34
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
2
2 1
2
2 1
) y (y ) x (x d + = gde su
) y , (x
1 1
i ) y , (x
2 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
40 FORMAT(2F10.5)

c Stampanje izlaznih rezultata

WRITE(6,50) i,x,y,RAST(0.,0.,x,y)
50 FORMAT(3X,I3,6X,F10.5,2X,F10.5,
2X, F10.5,2X,E15.7)
80 CONTINUE

STOP
END

Primer 7.3. Napisati program za tabeliranje vrednosti funkcije

))) x ( f ( g 2 ( f y = ,

za x = 0.1(0.1)0.9, ako je
( ) ( ) . | x |
2
x
tg x g ), x ln( x 2 x f +

= =
Izlaznu listu tampati u obliku

X Y
0.1 x.xxxxxxxExx
M M


Reenje:

Informatika 2, Milan Goci
35
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
20 FORMAT (2x, F3.1, 2X, E14.7)

30 CONTINUE

STOP
END

Primer 7.4. Tabelirati funkciju

1 y
y
3 . 0 y z
2
+
= , gde je
1 x
x
x 2 . 0 x y
2
+
+ =

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
M M M

Reenje:

c y- ime funkcijske naredbe

PROGRAM zad

c 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

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

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.







Informatika 2, Milan Goci
37
Primer 8.1. Sastaviti potprogram tipa FUNCTION u kome se za zadate vrednosti
0.03 (0.01) 0.01 y i 0.5 (0.1) 0.1 x = = izraunava vrednost funkcije F (x, y) po formuli

( )

>
=
<
=
. y x za y x 1
, y x za x cos
, y x za y 2 sin e
y , x F
x


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


6 8 5
5 0 7
9 6 0
D

=


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

Reenje:
Informatika 2, Milan Goci
38

c Potprogram det za odredjivanje vrednosti determinante reda dva
c 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


( )
( )
( ) 1 x ,
1 n 2
x 2
x f
0 n
2
1 n 2
<
+

=

+
=
+
.


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

.
Korienjem ovog potprograma sastaviti program za izraunavanje vrednosti ( ) ( ) sinx f i x f za
( ) 80 . 0 05 . 0 00 . 0 x = . Rezultat tampati u obliku

X F(X) F(SIN(X))
x.xx x.xxxxx x.xxxxx
M M M

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

Informatika 2, Milan Goci
39
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:

Informatika 2, Milan Goci
40
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

( )

+
=
1 e x
1
x E
x
43 . 1
5
.
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

( )

=

=
n
1 i
n
i j
1 j
j
a x y ,

gde su ( ) n ,..., 1 j a
j
= dati brojevi. Ulazni parametri potprograma su: n, x, ( ) n ,..., 1 j a
j
= , a izlazni y.
U glavnom programu pozvati potprogram za ( ) 0 . 1 1 . 0 0 . 0 x = . Vrednost n uitati u formatu I2, a vrednosti
( ) n ,..., 1 j a
j
= u formatu 8F8.2. Izlazna lista neka izgleda:

N = xx X Y
xx . xxxxx xx xxxxxxE . x
M M
Informatika 2, Milan Goci
41

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

Informatika 2, Milan Goci
42
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
( ) ( ) ( ), b cos b cos 2 . 2 a sin a sin 6 . 2 y x y x ln 3 . 0 x f
2 1 2 1
2 2 2 2
+ + + +

+ + + =
gde su x i y koreni jednaine

0 z 15 . 4 zp 2 . 0 p 8 . 1
2 2
= +

za ( )
2 1
a i a . 40 3 1 z = su koreni jednaine
, 0 25 . 3 p 5 . 5 p
2
=
2 1
b i b su koreni jednaine
. 0 1 . 0 p 3 . 1 p 6 . 0
2
= + +

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
Informatika 2, Milan Goci
43
4 xxx.xxxxx
M M
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

( )
( )
a n
x x
a 1 n
x x
a 3
x x
a 2
x x
a x f
n 1 n
4 3
3 2
2 1

+

+

+ =

M

Informatika 2, Milan Goci
44

Na ulazu uitati vrednost za a i niz { }
n i
x X = .
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


0 1
1 n
1 n
n
n
a x a ... x a x a P + + + + =

,

koristei Hornerovu emu

( ) ( ) ( )
0 1 2 n 1 n n
a x a ... x a x a x a ... P + + + + + =

,

za ( )2 1 . 0 1 x , 10 n = i

. 6 . 11 a , 2 . 10 a , 66 . 3 a , 7 . 26 a , 21 . 1 a
, 34 . 2 a , 6 . 5 a a , 17 . 3 a , 2 . 163 a , 75 . 0 a
10 9 8 7 6
5 4 3 2 1 0
= = = = =
= = = = = =


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

X P
x.x x.xxxxxxE xx
M M

Reenje:

c Ulazni argumenti funkcijskog potprograma:
c a - ime niza
Informatika 2, Milan Goci
45
c n - dimenzija niza
c 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

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

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

ELSE
c Stampanje poruke o greski

WRITE(6,60)
60 FORMAT(2X, 'Uneli ste vecu vrednost od potrebne!')

END IF

STOP
END

Informatika 2, Milan Goci
46


Primer 10.3. Izraunati odreeni integral

+
+
=
3
1
x
2
dx
x cos e 2 . 1
x
1 x
arctg
A ,

Simpsonovim pravilom, sa korakom 01 . 0 h = . Podintegralnu funkciju izraunati potprogramom tipa
FUNCTION. Izlazna lista neka izgleda

VREDNOST INTEGRALA A = xx xxxxxxxE . xx .

Reenje:

Simpsonovo pravilo:

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

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

, gde je

n 2
a b
h

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

c Opsti potprogram
c Ulazni argumenti potprograma:
c a - donja granica odredjenog integrala
c b - gornja granica odredjenog integrala
c h - korak integracije
c Funk - podintegralna funkcija
c
c Izlazni argumenti potprograma:
c 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

Informatika 2, Milan Goci
47
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


( )

+ +
=
6 . 3
0
2
dx
1 x ln 2 . 7
x sin x
A
,

trapeznim pravilom, sa korakom 01 . 0 h = . Podintegralnu funkciju izraunati potprogramom tipa
FUNCTION. Izlazna lista neka izgleda

VREDNOST INTEGRALA A = xx.xxxxxxxE xx

Reenje:

Trapezno pravilo

( )
( ) ( )
( ) ( ) ( )

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


=
+ + =
1 n
0 i
i i
x
x
1 x f x f
2
h
dx x f
n
0
, gde je
i 1 i
x x h =
+


c Opsti potprogram
c Ulazni argumenti potprograma:
c a - donja granica odredjenog integrala
c b - gornja granica odredjenog integrala
c h - korak integracije
c Funk - podintegralna funkcija
c
c Izlazni argumenti potprograma:
c vrintg - vrednost izracunatog integrala

SUBROUTINE Trapez (a, b, h, Funk, vrintg)
Informatika 2, Milan Goci
48
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 0 x 7 x ) x ( f
3
= = 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)
Informatika 2, Milan Goci
49

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

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

Primer 10.6. Napisati program za reavanje jednaine e
x
10x = 0 metodom seice. Poetna reenja x
0
i x
1
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 , x
1 0

3. iterativna zakonitost
( ) ( )
( ) K , 2 , 1 k , x f
x f x f
x x
x x
k
1 k k
1 k k
k 1 k
=

+
,
4. uslov kraja . x x
k 1 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
Informatika 2, Milan Goci
50
END

Primer 10.7. Napisati program za reavanje jednaine x
5
sinx = 0 Njutnovim iterativnim postupkom .
Poetno reenje x
0
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
( )
( )
K , 1 , 0 k ,
x f
x f
x x
k
'
k
k 1 k
= =
+
,
4. uslov kraja . x x
k 1 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 log
2
x e
x
= 0 metodom tetive (regula falsi). Funkciju
definisati funkcijskim potprogramom.

Reenje:

Za metodu tetive vae sledea pravila:

1. definisanje funkcije,
2. poetni uslovi: , x , x
1 0

3. iterativna zakonitost
( ) ( )
( ) K , 2 , 1 k , x f
x f x f
x x
x x
k
1 k k
1 k k
k 1 k
=

+
,
Informatika 2, Milan Goci
51
4. uslov kraja . x x
k 1 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

You might also like