Professional Documents
Culture Documents
Zbirkazadatakafortran Hadzovic PDF
Zbirkazadatakafortran Hadzovic PDF
GRAEVINSKI FAKULTET
vii asistent
mr. Raid Hadovi, dipl.in.gra.
MOSTAR, 2007.
SK
SKRIPTA
MOSTAR, 2007.
RI
PT
vii asistent
mr. Raid Hadovi, dipl.in.gra.
Programiranje u Fortran-u
Rijeeni zadaci
Problemi za vjebanje
Neki od dosadanjih ispitnih zadataka
Zadaci za seminarski rad
Literatura
02
22
55
62
66
73
SK
1.
2.
3.
4.
5.
6.
SADRAJ:
RI
PT
SK
PROGRAMIRANJE U FORTRANU
RI
PT
UVOD
Svaki program se sastoji od pet osnovnih koraka. Prvi korak START odnosno poetak,
drugi korak je UITAVANJE PODATAKA sa kojima e se raditi u programu, trei korak je
OPERACIJA, odnosno faza programa gdje se uneeni podaci obrauju tj. vri se rad sa
podacima u zavisnosti od zadatka. U etvrtom koraku se TAMPAJU rezultati programa,
dok se u petom koraku program zavrava (STOP i END).
Oznaka
ili
Znaenje
Uitavanje podataka u
program
Operacija - rad sa
podacima
SK
ili
tampanje podataka i
rezultata na ekranu ili na
tampau
Naredba u Fortranu
Poreenje ispunjenje
uslova
IF
Povratak iz potprograma
u glavni program
RETURN
Pozivanje potprograma i
potprogram
RI
PT
Dijagrami toka se koriste za grafiko predstavljanje redosljeda svih radnji, koje su sastavni
dio nekog programa: poetka, uitavanja podataka, operacija, poreenja, tampanja
rezultata, pozivanja potprograma i zavretka.
U dijagramima toka se koriste geometrijski oblici radi predstavljanja raznih operacija
programa, koji se obavljaju. Standardizovanim oblicima obezbjeuje se vizuelno
predstavljanje problema zajedniko za sve programe.
tampanje
podataka
Poreenje
ispunjenje
uslova
START,
STOP i END
Pozivanje
potprograma
RETURN
VARIJABLE
Operacija
Uitavanje
podataka
Objanjenje
RI
PT
Dijagram
toka
SK
OPERACIJE U FORTRANU
Oznake u FORTRAN u
**
/
*
+
-
Aritmetike operacije
Stepenovanje
Dijeljenje
Mnoenje
Sabiranje
Oduzimanje
Definicija
zagrade
stepenovanje
mnoenje i dijeljenje
sabiranje i oduzimanje
Fortran
()
**
*,/
+,-
RI
PT
R.br.
1.
2.
3.
4.
Pisanje formula
( ( A+B) C )
((A+B)*C)**D
B2 + 4 A C
2 A
2 r 2
(B**2+4*A*C)/(2*A)
2*3,1415927*R**2
Zavisne operacije
=
<>
<
>
SK
Znaenje
Jednako
Nije jednako
Manje
Vee
Manje i jednako
Vee i jednako
Prikaz u Fortranu
.EQ.
(Equally)
.NE.
(Not Equally)
.LT.
(Little)
.GT.
(Great)
.LE.
(Little and Equally)
.GE.
(Great and Equally)
Logike operacije
Znaenje
Nije
I
Ili
Ili je
Ili nije
Fortran
.NOT.
.AND.
.OR.
.EQV.
.NEQV.
Primjer
.NOT.(3.EQ.2) TANO
(3.EQ.3).AND.(2.EQ.2) TANO
(3.EQ.3).OR.(2.EQ.2) TANO
(3.EQ.3).EQV.(2.EQ.2) TANO
(3.EQ.3).NEQV.(2.EQ.2) NETANO
(3.EQ.3).EQV.(3.EQ.2) TANO
Zbirka rijeenih zadataka
Programiranje i numerike metode - FORTRAN
Primjer:
RI
PT
READ(5,10)N
10 FORMAT (I2)
WRITE
Naredba za tampanje ili ispis podataka i rezultata na ekranu ili na tampau.
WRITE(*,*) ili WRITE(*,n) ili WRITE(6,n)
Oznaka * ili 5 znai da se podaci unose sa tastature. Oznaka * poslije zareza znai da je
naredba uneena u slobodnom formatu. Oznaka n predstavlja ime FORMATA, a
oznaava se proizvoljnim brojem i upuuje na broj kojim je predstavljena naredba Format.
Oznaka * ili 6 znai da je ispis prikazan na ekranu. Oznaka * poslije zareza znai da je
naredba uneena u slobodnom formatu. Oznaka n predstavlja ime FORMATA, a
oznaava se proizvoljnim brojem i upuuje na broj kojim je predstavljena naredba Format.
Primjer:
WRITE(6,10)N
10 FORMAT(I2)
SK
FORMAT
Naredba pomou koje, u programu, definiemo ulaz i izlaz podataka tj. prema vrsti
podataka se odreuje format u kojem e biti uneeni (razlikujemo cjelobrojne i realne
varijable), kao i ureenje ekrana ili tampane stranice.
Promjenljiva
FORMAT u
Fortranu
In
Fn.m
En.m
Cijeli broj
Realan broj maksimalno do 7 decimala
Realan broj maksimalno do 7 decimala
Realan broj (do 7 decimala )
Gn.m
decimalan i eksponencijalan
Realan broj (do 16 decimala)
Dn.m
Alfanumeriki broj
An
Logiki broj
Ln
Poetna taka za broj kolone
Tn
Preskakanje n kolona
nX
Broj preskoenih redova
n/
Broj preskoenih kolona
1X
Samo neki od Format-a e biti obraeni u ovoj skripti.
Naredba Fortrana
u kojoj se koristi
READ/WRITE
READ/WRITE
READ/WRITE
READ/WRITE
READ/WRITE
READ/WRITE
READ/WRITE
WRITE
READ
WRITE
WRITE
READ(5,10)N
10 FORMAT (I3)
Ili
WRITE(6,10)N
10 FORMAT(I3)
RI
PT
U ovim primjerima mogue je unijeti samo trocifrene pozitivne dok je nemogu unos
neativnih brojeva ili ispisati trocifrene pozitivne dvocifrene negativne brojeve.
Format READ
I4
I4
I4
I4
Uneeni podatak
12
-122
123456
1000
Oitani podatak
12
-122
1234
1000
Format - WRITE
I4
I4
I4
I4
Vrijednost
12
-122
123456
1000
Ispisani podatak
12
-122
****
1000
SK
READ(5,10)N
10 FORMAT (F8.2)
Ili
WRITE(6,10)N
10 FORMAT(F8.3)
n =A+ B + C + D
A broj mjesta za predznak
B broj mjesta za broj cifara broja koji e biti uneen ili ispisan
C broj mjesta za decimalnu taku
D broj mjesta koji je ostavljen za broj decimalnih brojeva
RI
PT
Matematiki prikaz
1234556.958
0.34567
435.67
-123.4567
WRITE(6,10)N
10 FORMAT(T20,I2)
Znaenje u Formatu:
U prvom redu i u 20toj koloni (T20) e poeti ispis rezultata.
Isto vai i za Format En.m osim to nije predvien broj mjesta za predznak, jer se Format
En.m ne koristi za negativne brojeve.
nX oznaka za broj kolona koje e se preskoiti prilikom unoenja ili ispisa podataka
ili rezultata. Koristi se u naredbama READ i WRITE.
Primjer:
SK
READ(5,10)R
10 FORMAT(10X,F8.2)
Znaenje u Formatu:
10X preskoeno deset kolona
Znak / - oznaka za preskakanje odreenog broja redova pri unosu ili ispisu podataka
ili rezultata. Koristi se u naredbama READ i WRITE.
Primjer:
Znaenje u Formatu:
/// preskoena tri reda i 10X preskoeno deset kolona tj. ispis REALAN BROJ JE: e
poeti u etvrtom redu i u 11-toj koloni.
RI
PT
a) LOGIKI IF
b) ARITMETIKI IF
c) BLOK IF
a) LOGIKI IF
Koristi se za poreenje i ispunjavanje samo jednog uslova koji ima dva odgovora DA ili NE.
Logiki IF se pie u sljedeoj formi:
[<Broj reda>] IF [<Logiki izraz>] <izraz u FORTRAN u >
.EQ.
.NE.
.NOT.
<Logiki izraz> = <Izraz> .GE.
.LT.
.LE.
<Izraz>
promjenljiv
nepromjenljiv
Aritmetiki izraz
SK
<Izraz> :
<Izraz>
.GT.
.AND.
.OR.
<izraz u FORTRAN u >: Ako je rezultat aritmetikog izraza TAAN onda program <izraz
u FORTRAN u > naredbu slijedi, u suprotnom program nastavlja sa svojim tokom (u
sluaju odgovora NE).
Primjer:
K=5
IF(K.EQ.5)WRITE(*,*) USLOV TACAN
WRITE(*,9)USLOV POGRESAN
STOP
END
NE
DA
K=5
b) ARITMETIKI IF
Koristi se za poreenje i za ispunjavanje jednog uslova koji ima tri razliita odgovora.
>0
=0
RI
PT
Rezultat
Primjer: Unijeti cijele negativne i pozitivne brojeve i nai pojedinano zbir pozitivnih i zbir
negativnih. Program se zaustavlja unoenjem nule u program.
C
C
C
SK
C
C
C
50 NZBIR=NZBIR+BROJ
GOTO 5
C
C
C
100
BIR=PZBIR+BROJ
GOTO 5
C
USLOV ZA ZAUSTAVLJANJE PROGRAMA JE ISPUNJEN
200 WRITE(6,10)PZBIR,NZBIR
10 FORMAT(1X,ZBIR POZ. BROJEVA:,I6,///,1X,ZBIR NEG.BROJEVA:,I6)
STOP
END
Zbirka rijeenih zadataka
Programiranje i numerike metode - FORTRAN
10
c) BLOK IF
RI
PT
Moemo raditi i sa vie uslova i sa vie blokova, ali samo se jedno ENDIF koristi.
a) Sluaj kada se naredba ELSE ne koristi
Rjeenje:
Prikaz na ekranu e biti, ako unesemo sljedee brojeve 3, 5, -8, -7, 10, 0.
Ako se naredba ELSE ne koristi, onda je uslov taan i program nastavlja sa radom dok ne
doe do naredbe ENDIF, osim u sluaju ako u bloku IF ne postoji naredba GOTO koja bi
preusmjerila tok programa.
Primjer:
SK
K=5
IF(K.EQ.5) THEN
WRITE(6,*)TACNO
WRITE(6,*)KRAJ PROGRAMA
5 GOTO 50
ENDIF
10 WRITE(6,*)NETACNO
50 STOP
END
U ovom sluaju, ako je uslov K=5 taan onda se koristi naredba GOTO da bi se
preusmjerio tok programa na kraj programa, u suprotnom program ispisuje na ekranu
NETACNO i zaustavlja se.
b) Sluaj kada se naredba ELSE koristi
Ako se naredba ELSE koristi u bloku IF i ako je uslov taan onda program ide onim tokom
kako ga usmjeravaju naredbe THEN i ELSE, osim u sluaju ako u bloku IF ne postoji
naredba GOTO koja bi preusmjerila tok programa.
Zbirka rijeenih zadataka
Programiranje i numerike metode - FORTRAN
11
Primjer:
K=5
IF(K.EQ.5) THEN
WRITE(6,*)TACNO
WRITE(6,*)ISHOD POZITIVAN
ELSE
WRITE(6,*)NETACNO
WRITE(6,*)ISHOD NEGATIVAN
ENDIF
STOP
END
SK
RI
PT
Pomou ELSE programu dajemo mogunost da odabere taan odgovor, odnosno ako je
uslov taan na ekranu bie ispisano:
TACNO
ISHOD POZITIVAN
dok e u suprotnom biti:
NETACNO
ISHOD NEGATIVAN
12
RI
PT
SK
c) svaki blok koji pone mora se i zavriti. Iz jednog IF bloka se ne moe prebacivati
neka informacija u drugi.
Taan blok IF
IF (<Uslov>) THEN
------------------------ELSE
------------------------------------ENDIF
13
Netaan blok IF
RI
PT
IF (<Uslov>) THEN
------------------------ELSE
------------------------ENDIF
SK
3) DO CONTINUE petlja
<Sn> : broj reda koji zavrava petlju i kome se pridruuje naredba CONTINUE. Mora biti
cijeli broj.
Pravila:
14
RI
PT
WRITE(6,10)
10 FORMAT(1X,24(/))
DO 20 I = 1,5
WRITE(6,25) I
25 FORMAT(1X,I2,.PUTA RADIO)
20 CONTINUE
STOP
END
Primjer:
Primjer:
WRITE(6,10)
10 FORMAT(1X,24(/))
DO 20 I = 5,1
WRITE(6,25) I
25 FORMAT(1X,I2,.PUTA RADIO)
20 CONTINUE
STOP
END
Prikaz na ekranu:
5. PUTA RADIO
tj. ako je vrijednost <prva> vea od vrijednosti <kraj> onda e se petlja jedan put okrenuti.
SK
7. Ako je vrijednost <korak rasta> negativna onda vrijednost <prva> mora biti
vea od vrijednosti <kraj> tako da e se svaki put pri oktretanju petlje
vrijednost <povratna varijabla> smanjivati za vrijednost <korak rasta>.
Primjer:
WRITE(6,10)
11 FORMAT(1X,24(/))
DO 20 I = 5,1,-1
WRITE(6,25) I
25 FORMAT(1X,I=,I2)
20 CONTINUE
STOP
END
15
Prikaz na ekranu:
I=5
I=4
I=3
I=2
I=1
SK
WRITE(6,10)
10 FORMAT(1X,24(/))
DO 20 I = 1,5
WRITE(6,25) I
25 FORMAT(1X,I2,.PUTA RADIO)
50 I=6
20 CONTINUE
STOP
END
RI
PT
Prikaz na ekranu:
PUTA RADIO
PUTA RADIO
PUTA RADIO
PUTA RADIO
PUTA RADIO
PUTA RADIO
16
RI
PT
20 CONTINUE
WRITE(6,25)ZBIR
25 FORMAT(1X,ZBIR BROJEVA:,I5)
STOP
END
INTEGER ZBIR
ZBIR=0
WRITE(6,10)
10 FORMAT(1X,24(/))
DO 20 I = 1,100
ZBIR=ZBIR + I
Primjer:
11. Naredbe GOTO ili IF program mogu da izvedu van granica DO CONTINUE
petlje.
MOGUE
DO ...................
GOTO ili IF
...................
CONTINUE
DO..................
....................
....................
CONTINUE
GOTO ili IF
SK
NEMOGUE
12. U sluaju da imamo vie od jedne petlje pravilo rjeavanja petlji je iznutra
prema vani.
MOGUE
17
NEMOGUE
RI
PT
DO 30
....................
....................
....................
30 CONTINUE
10 CONTINUE
20 CONTINUE
DO 10
DO 20
DO 10 K
DO 10 L
DO 10 M
10 CONTINUE
Naredba koja odreuje (rezervie) prostor za varijable i promjenljive koje e biti uneene
prilikom koritenja programa.
DIMENSION serija ime (a1, a2, ...) [serija ime 1 (b1, b2,...)]
SK
Primjer:
Pravila:
1.
2.
3.
4.
5.
6.
18
POTPROGRAMI
Prilikom programiranja mnogo puta se desi da se dijelovi programa ponavljaju. Da ih
ne bi ponovo pisali na razliitim mjestima, koristimo se potprogramima za obavljanje te
funkcije. Znai, program koji moe da radi sam za sebe, a koji je dio glavnog programa
zovemo POTPROGRAM.
RI
PT
Pravila:
1)
2)
Dio programa koji moe da radi sam za sebe i koji moe da bude pozvan vie puta.
Opti oblik:
SK
INTEGER
REAL
DOUBLE PRECISION
COMPLEX
LOGICAL
CHARACTER
19
Primjer:
RI
PT
S = F(A,B)
FUNCTION F(C,D)
Objanjenje:
SK
2) OPTI POTPROGRAM
Pravila:
1) Opti potprogram se poziva naredbom CALL iz glavnog programa, a potprogram
poinje sa SUBROUTINE, a zavrava sa END.
Zbirka rijeenih zadataka
Programiranje i numerike metode - FORTRAN
20
RI
PT
Objanjenje:
Primjer:
SK
21
SK
RIJEENI ZADACI
RI
PT
22
START
RI
PT
A, B
STOP
END
Fortran
C
C
C
SK
Ispis na ekranu
23
Dijagram toka
RI
PT
ZBI
S=(A+ZBI)*B
S
STOP
END
Fortran
C
SK
INTEGER ZBI
Ispis
24
NE
RI
PT
A>B
STOP
END
Fortran
C
C
10
C
2
SK
20
DA
START
15
3
25
100
Ispis na ekranu
25
A
B
START
PROIZVOD=A*B
SUMA,
PROIZVOD
STOP
END
Fortran
C
SK
RI
PT
SUMA=A+B
Ispis na ekranu
26
5) Uitati varijable A i B, nai sumu i proizvod istih i odtampati veu od njih u glavnom
programu.
Rjeenje:
Dijagram toka
RI
PT
START
P=A*B
DA
NE
S>P
STOP
END
Fortran
C
SK
S=A+B
27
Ispis na ekranu
RI
PT
Dijagram toka
DA
B=0
C=A/B
C
STOP
SK
END
START
Fortran
1
5
2
KALKULACIJA KOLICNIKA
WRITE(*,*)'UNESITE VARIJABLU A'
READ(5,1)A
FORMAT(F 6.2)
WRITE(*,*)'UNESITE VARIJABLU B'
READ(5,2)B
FORMAT(F 6.2)
IF(B.EQ.0)GOTO 5
C=A/B
WRITE(6,3)C
FORMAT(/,'KOLICNIK JE',F10.2)
STOP
END
28
Ispis na ekranu
Rjeenje:
b b 2 4ac
2a
D= b 2 4ac
RI
PT
x1,2 =
START
B,C
A
DA
A=0
SK
D = B2 4 * A * C
IMAM
KOMPLEKSNA
RJESENJA
X1 =
B
2* A
IMAM DVOSTRUKO
RJESENJE, X=
STOP
X1 =
B D
2* A
X1 =
B + D
2* A
END
29
Fortran
30
3
40
4
100
SK
Ispis na ekranu
20
2
10
1
RI
PT
30
START
DIMENSION A (100)
UNESITE BROJ
ELEMENATA
NIZA
RI
PT
DO 10 I = 1,N
A (I)
10
ELEMENTI
NIZA A SU:
DO 20 I = 1,N
A (I)
SK
20
STOP
UITAJTE
ELEMENTE
NIZA A
END
Fortran
C
C
31
RI
PT
Ispis na ekranu
START
Dijagram toka
DIMENSION A(20)
DO 10 I=1,20
A(I)
10
SK
P=1
S=0
DO 20 I=1,10
S=S+A (2*I)
P=P*A (2*I-1)
20
S,P
STOP
END
32
Fortran
2
C
20
C
SK
Ispis na ekranu
10
1
RI
PT
10) Uitati niz od 10 elemenata, onda formirati drugi niz B, tako da se sastoji samo od
razliitih elemenata niza A. Zatim nai minimalni i maksimalni elemenat niza B. Odtampati
elemente niza A i niza B i minimalni i maksimalni elemenat u glavnom programu.
Rjeenje:
Zbirka rijeenih zadataka
Programiranje i numerike metode - FORTRAN
33
SK
C
C
C
Fortran
RI
PT
Dijagram toka
1
10
5
11
34
2
15
6
C
30
C
3
SK
Ispis na ekranu
20
RI
PT
35
DIMENSION A(20)
DO 10 I=1,20
RI
PT
A(D)
DO 20 I=1,19
DO 15 J=I+1,20
DA
A(I)<A(J)
NE
C=A(I)
A(I)=A(J)
A(J)=C
SK
15
20
10
A(J)
STOP
END
Fortran
C
UCITATI NIZ A OD 20 ELEMENATA, NAPISATI
C
PROGRAM ZA SORTIRANJE U RASTUCEM REDOSLJEDU
DIMENSION A(20)
WRITE(*,*)'PROGRAM ZA SORTIRANJE EL. NIZA A U RASTUCEM REDOSLJEDU'
WRITE(*,*)'UNESITE 20 ELEMENATA NIZA A'
Zbirka rijeenih zadataka
Programiranje i numerike metode - FORTRAN
36
3
30
SK
Ispis na ekranu
15
20
DO 10 I=1,20
READ(5,1)A(I)
FORMAT(F8.2)
CONTINUE
SORTIRANJE ELEMENATA
DO 20 I=1,19
DO 15 J=I+1,20
IF(A(I).LT.A(J))GOTO 15
C=A(I)
A(I)=A(J)
A(J)=C
CONTINUE
CONTINUE
WRITE(*,*)'SORTIRANI ELEMENTI NIZA A SU:'
DO 30 J=1,20
WRITE(6,3)A(J)
FORMAT(F8.2)
CONTINUE
STOP
RI
PT
1
10
37
Rjeenje:
Dijagram toka:
START
DO
10
I=1,10
RI
PT
A(10)
DIMENSION A(10),B(10)
DO 20
I=1,9
DO 30
J=I + 1,10
DA
A(I)>A(J)
C =A(I)
NE
A (I) = A (J)
A(J) = C
30
20
DO 40
I=1,5
SK
B(2*I-1) = A( I )
10
B(2*I) =A ( I + 5 )
DO
40
50
I=1,10
B(I)
50
STOP
END
38
Fortran
30
2
40
SK
Ispis na ekranu
20
1
10
RI
PT
C
C
39
13) Uitati matricu A(44) i matricu B(44), onda nai matricu C kao proizvod matrica A i B.
C i , j = Ai , k B k , j
Rjeenje:
START
Dijagram toka:
RI
PT
DO 10 I=1,4
10
DO 20 I=1,4
DO 20 J=1,4
B(I)
20
DO 50 I=1,4
DO 30 J=1,4
C(I,J) =0
SK
DO 40 K=1,4
A (I)
30
50
C(I,J)
STOP
END
Fortran
Zbirka rijeenih zadataka
Programiranje i numerike metode - FORTRAN
40
6
2
20
40
8
7
30
SK
Ispis na ekranu
1
10
RI
PT
41
START
DIMENSION A(4,4)
DO 10 I=1,4
DO 10 J=1,4
RI
PT
A(I)
TRAG = 0
DO 20 I=1,4
TRAG=TRAG+ A(I,I)
20
TRAG
STOP
END
Fortran
SK
10
1
10
20
2
42
Dijagram toka:
SK
START
RI
PT
Ispis na ekranu
P. P.
SUMA = F(A,B)
SUMA
FUNCTION F(A,B)
F= A+B
RETURN
END
STOP
END
43
Fortran
FUNKCIJSKI POTPROGRAM
WRITE(*,*)'PROGRAM ZA SABIRANJE VARIJABLI POMOCU'
WRITE(*,*)'FUNKCIJSKOG POTPROGRAMA'
WRITE(*,*)' '
WRITE(*,*)'UNESITE VARIJABLU A'
READ(5,1)A
1 FORMAT(F8.2)
WRITE(*,*)'UNESITE VARIJABLU B'
READ(5,2)B
2 FORMAT(F8.2)
SUMA=F(A,B)
WRITE(6,3)SUMA
3 FORMAT('SUMA VARIJABLI JE:',F10.2)
STOP
END
FUNCTION F(A,B)
F=A+B
RETURN
END
Ispis na ekranu
X2
X2+2
5X
Rjeenje:
ako je
ako je
ako je
X>5
X=5
X<5
P.P.
Dijagram toka:
SK
FUNCTION F(X)
START
UNESITE NEPOZNATU X
Y=F(X)
Y
X>5
X=5
X<5
RI
PT
DA
F=X2
DA
F=X2+2
DA
F=5X
NE
STOP
END
RETURN
END
44
SK
RI
PT
C
C
C
C
ODREDITI FUNKCIJU
X**2
X>5
f(X)= X**2+2
X=5
5X
X<5
WRITE(*,*)'UNESITE NEPOZNATU X'
READ(5,2)X
2 FORMAT(2F8.2)
Zbirka rijeenih zadataka
Programiranje i numerike metode - FORTRAN
45
SK
RI
PT
Y=F(X)
WRITE(6,1)Y
1 FORMAT(1X,'F(X)=',F7.2)
STOP
END
FUNCTION F(X)
IF(X.GT.5)THEN
F=X**2
WRITE(6,*)'POSTO JE X>5 VRIJEDNOST FUNKCIJE JE F(X)=X**2'
ELSE
IF(X.EQ.5)THEN
F=X**2+2
WRITE(6,*)'POSTO JE X=5 VRIJEDNOST FUNKCIJE JE F(X)=X**2+2'
ELSE
ENDIF
IF(X.LT.5)THEN
F=5*X
WRITE(6,*)'POSTO JE X<5 VRIJEDNOST FUNKCIJE JE F(X)=5*X'
ENDIF
ENDIF
10 RETURN
END
17) U glavnom programu uitati prvi, pa drugi broj kombinacije, te pozivom funkcijskog
potprograma izraunati kombinaciju: K =
I!
J ! ( I J )!
Rjeenje:
Zbirka rijeenih zadataka
Programiranje i numerike metode - FORTRAN
46
Dijagram toka:
START
P.P
INTEGER A,B,C,FAKTI
I,J
FAKT = 1
A = FAKT (I)
DO 10 N=1,L
B = FAKT (J)
FAKT = FAKT*N
C = FAKT (I-J)
10
K = A/ (B*C)
F,J,K
RI
PT
RETURN
STOP
END
Fortran
C
SK
C
C
C
END
Ispis na ekranu
47
18) Uitati x,y koordinate 10 taaka. Napisati funkcijski potprogram koji e da rauna rastojanja
datih taaka sa kordinatom XA = 0.5 i YA = 1.0, te nai najveu i najmanju duinu u glavnom
programu.
Dijagram toka:
START
DO 10
I=1,10
P.P.
DIMENSION X(10),Y(10),D(10)
DUINA=SORT((A-C)**2(B-D)**2)
RI
PT
X(I) ,Y(I)
10
RETURN
END
YA =1,0
DO 20 I = 1,10
20
DMAX=D(1)
DMIN=D(1)
DO 30
I = 1,10
DA
DMAX<D(1)
DMAX = D(1)
SK
NE
XA =0,5
NE
DMIN>D(1)
DMIN = D (1)
30
DMAX,DMIN
STOP
END
48
Fortran
20
30
2
SK
Ispis na ekranu
1
10
RI
PT
C
C
C
C
49
19) Uitati matricu A(44). Nai sumu elemenata iznad glavne dijagonale. Zatim nai maksimalni
elemenat (vrijednost) i njegove indekse. Sve to obraditi pomou opteg potprograma.
Rjeenje:
Dijagram toka:
START
P.P
DIMENSION A (4,4)
DO 10 I = 1,10
DIMENSION B (4,4)
DO 10 I = 1,10
RI
PT
S=0
DO 20 J = 1,4
10
I<J
S=S+B(I,J)
20
SUMA,PMAX,
PMIN
PMAX=B(1,1)
M=1
STOP
N=1
DO 30 I = 1,4
END
DO 30 J=1,4
SK
PMAX<
B(I,J)
PMAX=B(I,J)
M=I
N=J
DO 20 I = 1,4
A (I, J)
30
RETURN
END
Fortran
C
C
C
50
SK
Ispis na ekranu
RI
PT
5 FORMAT('A(',I1,',',I1,')')
READ(5,1)A(I,J)
1 FORMAT(F8.2,F8.2)
10 CONTINUE
CALL RACUN(A,SUMA,M,N,PMAX)
WRITE(6,2)SUMA,PMAX,M,N
2 FORMAT('SUMA ELEMENATA IZNAD GLAVNE DIJAGONALE JE:',F10.2,/,
+'MAKSIMALNI ELEMENAT:',F8.2,/,'MJESTO MAKSIMALNOG ELEMENTA JE: A('
+,I1,',',I1,')')
STOP
END
SUBROUTINE RACUN(B,S,M,N,PMAX)
DIMENSION B(4,4)
S=0
DO 20 I=1,4
DO 20 J=1,4
IF(I.LT.J)THEN
S=S+B(I,J)
ENDIF
20 CONTINUE
PMAX=B(1,1)
M=1
N=1
DO 30 I=1,4
DO 30 J=1,4
IF(PMAX.LT.B(I,J))THEN
PMAX=B(I,J)
M=I
N=J
ENDIF
30 CONTINUE
RETURN
END
51
20) Uitati matricu A(44). Nai sumu elemenata ispod glavne dijagonale. Sve to obraditi
pomou opteg potprograma.
Rjeenje:
Dijagram toka:
P.P
START
DIMENSION A(4,4)
DIMESION B(4,4)
DO 10 I=1,4
S=0
RI
PT
DO 10 J=1,4
DO 20 J=1,4
10
I>J
SUMA
S= S+B (I,J)
STOP
20
END
RETURN
END
Fortran
SK
DO 20 I=1,4
A (I,J)
1
10
52
DO 20 I=1,4
DO 20 J=1,4
IF(I.GT.J)THEN
S=S+B(I,J)
ENDIF
20 CONTINUE
RETURN
END
RI
PT
Ispis na ekranu
SK
Rjeenje:
Dijagram toka:
START
REAL M,T,Q,L
R=Q*L/2
DO 20 K=0,10
DO 10 I=0,10
I *L
10
I *L
Q*
M = R*
10
2
T = R Q*
I *L
10
M
20
10
STOP
R
END
53
Fortran
4
10
20
5
SK
Ispis na ekranu
RI
PT
REAL M,T,Q,L
WRITE(6,*)'PROGRAM ZA PRORACUN M I T SILA PROSTE GREDE'
WRITE(6,*)'ZA RAVNOMJERNO KONTINUIRANO OPTERECENJE'
WRITE(6,*)'NA DESETINI RASPONA GREDE'
WRITE(6,*)' '
WRITE(6,*)'UNESITE STATICKI RASPON GREDE KAO REALAN BROJ'
WRITE(6,*)'STATICKI RASPON GREDE L='
READ(5,1)L
FORMAT(F 6.2)
WRITE(6,*)'UNESITE VRIJEDNOST OPTERECENJA KAO REALAN BROJ'
WRITE(6,*)'VRIJEDNOST OPTERECENJA Q='
READ(5,2)Q
FORMAT(F 6.2)
R=Q*L/2
WRITE(6,3)R
FORMAT(/,1X,'REAKCIJE',/,10X,'Av=Bv=',F 8.2,' kN')
WRITE(6,*)'MOMENTI SAVIJANJA NA DESETINAMA RASPONA'
DO 10 I=0,10
M=R*(I*L/10)-Q*(I*L/10)**2/2
WRITE(6,4)I,M
FORMAT(10X,'M',I2,'=',F 10.2,' kNm')
CONTINUE
WRITE(6,*)'TRANSVERZALNE SILE NA DESETINAMA RASPONA'
DO 20 K=0,10
T=R-Q*(K*L/10)
WRITE(6,5)K,T
CONTINUE
FORMAT(10X,'T',I2,'=',F 10.2,' kN')
STOP
END
54
SK
PROBLEMI ZA VJEBU
RI
PT
55
PROBLEMI ZA VJEBU
SK
10
INTEGER A,B,C,D
A=3
B=2
C=4
D=1
CALL DENE(A,B,C,D)
CALL ALT(C,D,B,A)
WRITE(*,10)A,B,C,D
FORMAT(/,4(I5,3X))
STOP
END
SUBROUTINE DENE(C,D,B,A)
INTEGER A,B,C,D
I=A+B+C+D
K=A*B
WRITE(*,10)A,B,C,D,I,K
FORMAT(/,4(I5,3X))
CALL ALT(I,K,A,B)
RETURN
END
SUBROUTINE ALT(I,K,A,D)
INTEGER A,D
J=K+A+D
I=J
D=I*J
WRITE(*,10)I,J,K,A,D
FORMAT(/,3(I5,3X))
RETURN
END
10
RI
PT
10
INTEGER A,B,C,D
A=3
B=2
C=4
D=1
CALL DENE(A,B,C,D)
WRITE(*,10)A,B,C,D
FORMAT(/,4(I5,3X))
STOP
END
SUBROUTINE DENE(C,D,B,A)
INTEGER A,B,C,D
I=A+B+C+D
K=A*B
WRITE(*,10)A,B,C,D,I,K
FORMAT(/,4(I5,3X))
RETURN
END
10
10
56
10
RI
PT
10
INTEGER X1,X2
X1=4
X4=6
WRITE(*,10)X1,X2
FORMAT (1X,I4)
CALL ALT (X1,X2)
WRITE(*,10)X1,X2
STOP
END
SUBROUTINE ALT(A,B)
INTEGER A,B
X1=A+B
X2=A*B
A=A*B
B=A+5
WRITE(*,10)A,B
FORMAT (1X,I4)
RETURN
END
SK
10
INTEGER X1,X2
X1=4
X4=6
WRITE(*,10)X1,X2
FORMAT (1X,I4)
CALL ALT (X1,X2)
X1=X1+X2
CALL ALT(X2,X1)
WRITE(*,10)X1,X2
STOP
END
SUBROUTINE ALT(A,B)
INTEGER A,B
X1=A+B
X2=A*B
A=A*B
B=A+5
WRITE(*,10)A,B
FORMAT (1X,I4)
WRITE(*,15)X1,X2
FORMAT (1X,F7.2)
RETURN
END
10
15
57
FUNCTION COS1(X)
COS1=COS(X)
RETURN
END
FUNCTION TAN1(X)
TAN1=TAN(X)
RETURN
END
SK
Ispis na ekranu
20
10
RI
PT
EXTERNAL SIN1,COS1,TAN1
WRITE(*,5)
FORMAT (1X,'UGAO',T17,'SINUS',T31,'KOSINUS',T46,'TANGENS',/,1X,
+ '----',T17,'-----',T31,'-------',T46,'-------')
DO 10 I=1,90
X=FLOAT(I)*1.745329E-2
CALL PRORACUN(SIN1,X,S)
CALL PRORACUN(COS1,X,C)
CALL PRORACUN(TAN1,X,T)
WRITE(*,20)I,S,C,T
FORMAT(1X,I3,T15,F7.3,T30,F7.3,T45,F7.3)
CONTINUE
STOP
END
SUBROUTINE PRORACUN(FUNC,Y,REZULTAT)
REZULTAT=FUNC(Y)
RETURN
END
FUNCTION SIN1(X)
SIN1=SIN(X)
RETURN
END
58
SK
RI
PT
59
SK
RI
PT
60
Ispis na ekranu
RI
PT
15
20
WRITE(*,10)
FORMAT(1X,T10,'UGAO',T20,'ARCSINUS',T35,'ARCKOSINUS',T50,
+ 'ARCTANGENS',/,1X,T10,'----',T20,8('-'),T35,10('-'),T50,10('-'))
DO 20 I=0,90,5
X=I*1.745329E-2
S=ASIN(X)
C=ACOS(X)
T=ATAN(X)
WRITE(*,15)I,S,C,T
FORMAT(1X,T10,I3,T19,F10.7,T35,F10.7,T50,F10.7)
CONTINUE
STOP
END
10
SK
10
30
INTEGER BROJ(5,5),ZBI
WRITE(*,*)'RJESENJE ZADAATKA'
WRITE(*,*)'UNESITE ZBI'
READ(5,1)ZBI
FORMAT(I3)
DO 10 I=1,5
DO 10 J=1,5
BROJ(I,J)=0
IF(I.EQ.J)BROJ(I,J)=ZBI
CONTINUE
WRITE(*,30)((BROJ(I,J),J=1,5),I=1,5)
FORMAT(/,5(I2,4X),/)
STOP
END
61
LITERATURA:
SK
RI
PT
73