Professional Documents
Culture Documents
Vezbe PDF
Vezbe PDF
Vebe
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
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
.LE.
x y
X.LE.Y
jednako
.EQ.
x= y
X.EQ.Y
razliito
.NE.
x y
X.NE.Y
.GE.
x y
X.GE.Y
vee od
.GT.
x> y
X.GT.Y
_____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
numerike konstante,
logike konstante,
alfabetske konstante (literali, Hollerith-konstante).
Numerike konstante
Numerike konstante mogu biti:
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).
ime,
tip,
oblast definisanosti i
tekua vrednost.
5
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.
____________________
______ konstanta______
____________________
_____ promenljiva_____
_____ promenljiva_____
____________________
____________________
_____ promenljiva_____
____________________
____________________
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
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
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:
**
*, /
+, //
.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:
a) ab + ac ,
2a 8b
b) 3
,
c
c)
Odgovor:
a+b
(3k + 1) ,
k 3
d)
1
(2a n )2 ,
3
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
x 5 () x * *(5. / 3)
cos y
.
e xy
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:
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_______
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
____________________
____________________
____________________
____________________
____________________
____________________
V = .TRUE.
11
____________________
____________________
____________________
____________________
____________________
____________________
____________________
____________________
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
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
13
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
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
2.5 10 4
-4.2
-413
19
tano
netano
14
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.
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
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
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
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.
U sluaju da ne postoji blok B2, tada ne treba pisati rezervisanu re ELSE. Sintaksa ove strukture ima oblik
IF (uslov) THEN
B1
ENDIF
18
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,
19
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
20
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
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
x 2k
k =0
2k
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
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
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
DO n I = m1,m2, m3
telo ciklusa
CONTINUE
4.4.
Sastaviti
f ( x ) = 41.926 1 + x
algoritam
napisati
program
za
izraunavanje
vrednosti
funkcije
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,
23
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
50
n + 2.5
.
2
+ 1.2
n
n =1
24
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
i =1
i 3
i + 3 .5
,
i3
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
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
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
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
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
29
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
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
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)
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
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:
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.
32
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
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
Y
x.xxxxxxxExx
Reenje:
34
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:
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
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
F(x , y ) = cos x
1 x y
za
x < y,
za
za
x = y,
x > y.
zadate
vrednosti
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
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
f (x ) =
2 + x 2 n +1
,
n =0 (2n + 1)2
( x < 1) .
F(X)
x.xxxxx
F(SIN(X))
x.xxxxx
za
Reenje:
38
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
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
Unos niza
xxx.xxxxx
Reenje:
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
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
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.
P
x.xxxxxxE xx
Reenje:
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
WRITE(6, 10)
10 FORMAT(2X, 'Unesite vrednost za n manju od 11')
c
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
c
60
ELSE
Stampanje poruke o greski
WRITE(6,60)
FORMAT(2X, 'Uneli ste vecu vrednost od potrebne!')
END IF
STOP
END
45
arctg
A =
1 .2 e
1
x2 +1
x
dx ,
+ cos x
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
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
Glavni program
PROGRAM zad
EXTERNAL Funk
a=1
b=3
h = 0.01
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 ,
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
Glavni program
PROGRAM zad
EXTERNAL Funk
a = 0.
b = 3.6
h = 0.01
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
WRITE(6, 10)
10 FORMAT(2X, 'Unesite a, b i eps:')
READ(5,20) a, b, eps
20 FORMAT(2F8.3, E10.3)
48
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:
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
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
f (x k )
f ' (x k )
, k = 0, 1, K ,
4. uslov kraja x k +1 x k .
PROGRAM zad
c
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:
x k x k 1
f (x k ), k = 1, 2, K ,
f (x k ) f (x k 1 )
50
51