UNIVERZITET „DŽEMAL BIJEDIĆ“ U MOSTARU GRAĐEVINSKI FAKULTET viši asistent mr. Rašid Hadžović, dipl.inž.građ. ZBIRKA RIJEŠENIH ZADATAKA PROGRAMIRANJE U FORTRANU SKRIPTA MOSTAR, 2007.
Oct 27, 2014
UNIVERZITET „DŽEMAL BIJEDIĆ“ U MOSTARU
GRAĐEVINSKI FAKULTET
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
ZBIRKA RIJEŠENIH ZADATAKA PROGRAMIRANJE U FORTRANU
SKRIPTA
MOSTAR, 2007.
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
UNIVERZITET „DŽEMAL BIJEDIĆ“ U MOSTARU GRAĐEVINSKI FAKULTET
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
ZBIRKA RIJEŠENIH ZADATAKA PROGRAMIRANJE U FORTRANU
SKRIPTA
MOSTAR, 2007.
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 1 Programiranje i numeričke metode - FORTRAN
SADRŽAJ:
1. Programiranje u Fortran-u 02 2. Riješeni zadaci 22 3. Problemi za vježbanje 55 4. Neki od dosadašnjih ispitnih zadataka 62 5. Zadaci za seminarski rad 66 6. Literatura 73
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 2 Programiranje i numeričke metode - FORTRAN
PROGRAMIRANJE U FORTRANU
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 3 Programiranje i numeričke metode - FORTRAN
UVOD
Svaki program se sastoji od pet osnovnih koraka. Prvi korak START odnosno početak, drugi korak je UČITAVANJE PODATAKA sa kojima će se raditi u programu, treći korak je OPERACIJA, odnosno faza programa gdje se unešeni podaci obrađuju tj. vrši se rad sa podacima u zavisnosti od zadatka. U četvrtom koraku se ŠTAMPAJU rezultati programa, dok se u petom koraku program završava (STOP i END).
DIJAGRAM TOKA PROGRAMA Definicija Dijagrami toka se koriste za grafičko predstavljanje redosljeda svih radnji, koje su sastavni dio nekog programa: početka, učitavanja podataka, operacija, poređenja, štampanja rezultata, pozivanja potprograma i završetka. U dijagramima toka se koriste geometrijski oblici radi predstavljanja raznih operacija programa, koji se obavljaju. Standardizovanim oblicima obezbjeđuje se vizuelno predstavljanje problema zajedničko za sve programe.
Oznaka Značenje Naredba u Fortranu
ili Učitavanje podataka u program
READ, DATA, OPEN
Operacija - rad sa podacima
Zavisno od zadatka koriste se različite
komande
ili
Štampanje podataka i rezultata na ekranu ili na štampaču
WRITE, PRINT
Poređenje – ispunjenje uslova IF
Početak i kraj programa START , STOP i END
Povratak iz potprograma u glavni program RETURN
Pozivanje potprograma i potprogram
FUNCTION ili CALL SUBROUTINE
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 4 Programiranje i numeričke metode - FORTRAN
Dijagram toka Objašnjenje
Učitavanje podataka
Potrebne podatke unosimo sa tastature ili iz nekog poznatog FILE-a. U Fortranu koristimo naredbu READ(*,*) ili READ(5,*). U slučaju da se podaci unose u program iz nekog FILE-a onda se koristi naredba OPEN.
Operacija U ovu grupu spadaju sve komande, koje obavljaju neku vrstu operacije u zavisnosti od onog što se traži u zadatku.
Štampanje podataka
Ispis podataka i rezultata na ekranu ili na štampaču. Vrši se pomoću naredbe WRITE(*,*) ili WRITE(6,*). Oznaka * ili 6 znači da se podaci i rezultati ispisuju na ekranu. Oznaka * poslije zareza znači da je naredba unešena u slobodnom formatu.
Poređenje – ispunjenje
uslova
Najčešće korištena funkcija je IF (ako – u prevodu sa engleskog jezika) koja nam služi da bi postavili pitanje neke operacije i da bi na to pitanje imali dva moguća odgovora DA i NE. Kasnije će biti više riječi o funkciji IF.
START, STOP i END
Komande koje se stavljaju u dijagram toka da bi se označio početak i kraj programa.
Pozivanje potprograma
Znak koji nam služi za pozivanje potprograma. Razlikujemo 2 potprograma: FUNCTION (funkcijski) i CALL – SUBROUTINE (opšti).
RETURN Komanda koja se koristi da bi se izvršio povratak iz potprograma u glavni program.
VARIJABLE
Varijable koje počinju sa prvim slovom I, J, K, L, M i N su po standardu cjelobrojne varijable, a sve ostale su realne varijable. INTEGER – naredba koja od realnih brojeva pravi cijele brojeve Primjer: INTEGER ALBA – ALBA u ovom slučaju postaje cjelobrojna varijabla. REAL – naredba koja od cjelobrojnih varijabli pravi realne varijable Primjer: REAL MAAS,KRUG,NET (100) – u ovom slučaju MAAS,KRUG,NET (100) postaju realne varijable (cjelobrojne su zato što su početna slova M, K, N ...)
PRAVILA UPISIVANJA PODATAKA U FORTRAN – u U FORTRAN-u koristimo 80 kolona. U prvu kolonu unese se slovo C, kao oznaka za komentar. Komentari unešeni na ovaj način pri ispisivanju programa na ekranu ili na štampaču se ne vide tj. skriveni su u programu i pomažu samo programeru da zna šta je radio u programu i dokle je stigao. U kolone 2, 3, 4 i 5 upisuju se brojevi komandi. U šestu kolonu se upisuje znak * ili + , koji služi kao nastavak prethodnog reda. Od sedme kolone se upisuju naredbe jezika FORTRAN, pa do 72 i poslije prelazimo u sljedeći red (ukoliko naredba ne može da stane). Znak = u FORTRAN-u nema isto značenje kao matematički znak = već znači: prebaci sa desne strane jednačine na lijevu stranu.
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 5 Programiranje i numeričke metode - FORTRAN
OPERACIJE U FORTRANU
Aritmetičke operacije Oznake u FORTRAN – u Stepenovanje **
Dijeljenje / Množenje * Sabiranje +
Oduzimanje -
Redoslijed korištenja aritmetičkih operacija: R.br. Definicija Fortran 1. zagrade ( ) 2. stepenovanje ** 3. množenje i dijeljenje * , / 4. sabiranje i oduzimanje + , -
Pisanje formula
Matematički način prikazivanja formula Pisanje formula u Fortranu A B
C+ (A+B)/C
( )( )A+BD
C⋅ ((A+B)*C)**D 2 4
2B A C
A+ ⋅ ⋅⋅
(B**2+4*A*C)/(2*A) 22 rπ⋅ ⋅ 2*3,1415927*R**2
Zavisne operacije
Značenje Prikaz u Fortranu
Jednako = .EQ. (Equally) Nije jednako < > .NE. (Not Equally)
Manje < .LT. (Little) Veće > .GT. (Great)
Manje i jednako ≤ .LE. (Little and Equally) Veće i jednako ≥ .GE. (Great and Equally)
Logičke operacije
Značenje Fortran Primjer Nije .NOT. .NOT.(3.EQ.2) TAČNO I .AND. (3.EQ.3).AND.(2.EQ.2) TAČNO Ili .OR. (3.EQ.3).OR.(2.EQ.2) TAČNO Ili je .EQV. (3.EQ.3).EQV.(2.EQ.2) TAČNO Ili nije .NEQV. (3.EQ.3).NEQV.(2.EQ.2) NETAČNO (3.EQ.3).EQV.(3.EQ.2) TAČNO
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 6 Programiranje i numeričke metode - FORTRAN
NEKE OD NAREDBI U FORTRANU:
READ Naredba za učitavanje podataka u program. READ(*,*) ili READ(*,n) ili READ(5,n) Oznaka * ili 5 znači da se podaci unose sa tastature. Oznaka * poslije zareza znači da je naredba unešena u slobodnom formatu. Oznaka n predstavlja ime FORMATA, a označava se proizvoljnim brojem i upućuje na broj kojim je predstavljena naredba Format. Primjer: READ(5,10)N
10 FORMAT (I2)
WRITE Naredba za štampanje ili ispis podataka i rezultata na ekranu ili na štampaču. WRITE(*,*) ili WRITE(*,n) ili WRITE(6,n) Oznaka * ili 6 znači da je ispis prikazan na ekranu. Oznaka * poslije zareza znači da je naredba unešena u slobodnom formatu. Oznaka n predstavlja ime FORMATA, a označava se proizvoljnim brojem i upućuje na broj kojim je predstavljena naredba Format. Primjer: WRITE(6,10)N
10 FORMAT(I2)
FORMAT Naredba pomoću koje, u programu, definišemo ulaz i izlaz podataka tj. prema vrsti podataka se određuje format u kojem će biti unešeni (razlikujemo cjelobrojne i realne varijable), kao i uređenje ekrana ili štampane stranice.
Promjenljiva FORMAT u Fortranu
Naredba Fortrana u kojoj se koristi
Cijeli broj In READ/WRITE Realan broj maksimalno do 7 decimala Fn.m READ/WRITE Realan broj maksimalno do 7 decimala En.m READ/WRITE Realan broj (do 7 decimala ) – decimalan i eksponencijalan Gn.m READ/WRITE
Realan broj (do 16 decimala) Dn.m READ/WRITE Alfanumerički broj An READ/WRITE Logički broj Ln READ/WRITE Početna tačka za broj kolone Tn WRITE Preskakanje n kolona nX READ Broj preskočenih redova n / WRITE Broj preskočenih kolona 1X WRITE Samo neki od Format-a će biti obrađeni u ovoj skripti.
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 7 Programiranje i numeričke metode - FORTRAN
In – format za cjelobrojne varijable
n – broj mjesta koja će se ostaviti (rezervisati) za broj cifara cjelobrojnih varijabli Primjer:
READ(5,10)N 10 FORMAT (I3)
Ili WRITE(6,10)N
10 FORMAT(I3) U ovim primjerima moguće je unijeti samo trocifrene pozitivne dok je nemoguć unos neativnih brojeva ili ispisati trocifrene pozitivne dvocifrene negativne brojeve. Grafički prikaz formata I4:
Format – READ Unešeni podatak Očitani podatak
I4 12 12 I4 -122 -122 I4 123456 1234 I4 1000 1000
Format - WRITE Vrijednost Ispisani podatak
I4 12 12 I4 -122 -122 I4 123456 **** I4 1000 1000
Fn.m – format za realne varijable
n – ukupan broj cifara uključujući i mjesto za predznak ± i jedno mjesto za decimalnu tačku m – broj mjesta koja će se ostaviti za decimalne brojeve (za broj cifara koje će doći poslije decimalne tačke)
En.m - format za realne varijable (E se koristi za eksponencijalne brojeve) n – ukupan broj cifara uključujući i mjesto za predznak ± i jedno mjesto za decimalnu tačku m – broj mjesta koja će se ostaviti za decimalne brojeve (za broj cifara koje će doći poslije decimalne tačke) U ovom formatu se ne mogu koristiti negativni brojevi. Primjer:
READ(5,10)N 10 FORMAT (F8.2)
Ili WRITE(6,10)N 10 FORMAT(F8.3)
±
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 8 Programiranje i numeričke metode - FORTRAN
Grafički prikaz formata F8.3 n =A+ B + C + D A – broj mjesta za predznak B – broj mjesta za broj cifara broja koji će biti unešen ili ispisan C – broj mjesta za decimalnu tačku D – broj mjesta koji je ostavljen za broj decimalnih brojeva Isto važi i za Format En.m osim što nije predviđen broj mjesta za predznak, jer se Format En.m ne koristi za negativne brojeve.
Matematički prikaz Prikaz u Fortranu za E8.3 Prikaz u Fortranu za F8.31234556.958 .123E+07 ********
0.34567 .346E+00 0.346 435.67 .436E+03 435.670
-123.4567 ******** -123.456
Tn – početna tačka na ekranu za broj kolone (koristi se u naredbi WRITE) Primjer: WRITE(6,10)N
10 FORMAT(T20,I2) Značenje u Formatu: U prvom redu i u 20–toj koloni (T20) će početi ispis rezultata.
nX – oznaka za broj kolona koje će se preskočiti prilikom unošenja ili ispisa podataka ili rezultata. Koristi se u naredbama READ i WRITE. Primjer: READ(5,10)R
10 FORMAT(10X,F8.2) Značenje u Formatu: 10X – preskočeno deset kolona
Znak / - oznaka za preskakanje određenog broja redova pri unosu ili ispisu podataka
ili rezultata. Koristi se u naredbama READ i WRITE. Primjer: WRITE(6,*)’UNESITE NEKI REALAN BROJ’
READ(5,10)R 10 FORMAT(F8.2)
WRITE(6,11)R 11 FORMAT(///,10X,’REALAN BROJ JE:’,F8.2)
STOP END
± .
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 9 Programiranje i numeričke metode - FORTRAN
Značenje u Formatu: /// – preskočena tri reda i 10X – preskočeno deset kolona tj. ispis REALAN BROJ JE: će početi u četvrtom redu i u 11-toj koloni.
KONTROLNI IZRAZI U FORTRAN-u
1) Bezuslovni GOTO Naredba koja usmjerava program direktno na broj nekog reda bez ikakvog uslova. 2) IF
a) LOGIČKI “IF” b) ARITMETIČKI “IF” c) BLOK “IF”
a) LOGIČKI “IF”
Koristi se za poređenje i ispunjavanje samo jednog uslova koji ima dva odgovora DA ili NE. Logički IF se piše u sljedećoj formi:
[<Broj reda>] IF [<Logički izraz>] <izraz u FORTRAN – u > .EQ. .NE. .NOT. .GT. <Logički izraz> = <Izraz> .GE. <Izraz> .AND. <Izraz> .LT. .OR. .LE. promjenljiv <Izraz> : nepromjenljiv Aritmetički izraz <izraz u FORTRAN – u >: Ako je rezultat aritmetičkog izraza TAČAN onda program <izraz u FORTRAN – u > naredbu slijedi, u suprotnom program nastavlja sa svojim tokom (u slučaju odgovora NE).
Primjer:
K=5 IF(K.EQ.5)WRITE(*,*) ‘USLOV TACAN’ WRITE(*,9)’USLOV POGRESAN’ STOP END
K=5
DA NE SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 10 Programiranje i numeričke metode - FORTRAN
Rezultat > 0 < 0
= 0
b) ARITMETIČKI “IF”
Koristi se za poređenje i za ispunjavanje jednog uslova koji ima tri različita odgovora. Aritmetički IF se piše u sljedećoj formi:
<Broj izraza> IF (Aritmetički izraz) N1, S1, P1 N1: <Arit. Izraz> Ako je rezultat <0 (manji od nule) → broj reda S1: <Arit. Izraz> Ako je rezultat =0 (jednak nuli) → broj reda P1: <Arit. Izraz> Ako je rezultat >0 (veći od nule) → broj reda Primjer: Unijeti cijele negativne i pozitivne brojeve i naći pojedinačno zbir pozitivnih i zbir negativnih. Program se zaustavlja unošenjem nule u program. C BROJ: UCITANI CIJELI BROJ C PZBIR: ZBIR CIJELIH POZITIVNIH BROJEVA C NZBIR: ZBIR NEGATIVNIH CIJELIH BROJEVA INTEGER BROJ, PZBIR PZBIR=0 NZBIR=0 WRITE(6,*)’UNESITE NEKI BROJ’
5 READ(5,15)BROJ 15 FORMAT(I4)
IF (BROJ)50,200,100 C C UNESEN JE NEGATIVNI CIJELI BROJ C
50 NZBIR=NZBIR+BROJ GOTO 5
C C UNESEN JE POZITIVAN CIJELI BROJ 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
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 11 Programiranje i numeričke metode - FORTRAN
Rješenje: Prikaz na ekranu će biti, ako unesemo sljedeće brojeve 3, 5, -8, -7, 10, 0. ZBIR POZ. BROJEVA:####18 - - - ZBIR NEG. BROJEVA:###-15
c) BLOK “IF” <Broj izraza> IF (<Uslov>) THEN ----------------------- ----------------------- ELSE ----------------------- ----------------------- ENDIF Možemo raditi i sa više uslova i sa više blokova, ali samo se jedno ENDIF koristi.
a) Slučaj kada se naredba ELSE ne koristi
Ako se naredba ELSE ne koristi, onda je uslov tačan i program nastavlja sa radom dok ne dođe do naredbe ENDIF, osim u slučaju ako u bloku IF ne postoji naredba GOTO koja bi preusmjerila tok programa. Primjer:
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 slučaju, ako je uslov K=5 tačan 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) Slučaj kada se naredba ELSE koristi
Ako se naredba ELSE koristi u bloku IF i ako je uslov tačan onda program ide onim tokom kako ga usmjeravaju naredbe THEN i ELSE, osim u slučaju ako u bloku IF ne postoji naredba GOTO koja bi preusmjerila tok programa.
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 12 Programiranje i numeričke metode - FORTRAN
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
Pomoću ELSE programu dajemo mogućnost da odabere tačan odgovor, odnosno ako je uslov tačan na ekranu biće ispisano: TACNO ISHOD POZITIVAN dok će u suprotnom biti: NETACNO ISHOD NEGATIVAN IF blokovi mogu raditi na sljedeći način:
a) IF blokovi – proces rada: jedan po jedan
[<broj reda>] IF [<Uslov>] THEN ------- ------- BLOK X ------- ELSE IF [<Uslov 1>] THEN ------- ------- BLOK Y ------- ELSE IF [<Uslov 2>] THEN ------- ------- BLOK Z ------- ELSE ------- ------- BLOK W ------- ENDIF
Redoslijed ispunjavanja uslova: <Uslov> Ako je TAČNO program će uraditi BLOK X . <Uslov> NETAČAN i <Uslov 1> TAČAN – program će uraditi BLOK Y . <Uslov> i <Uslov 1> NETAČNI i <Uslov 2> TAČAN – program će uraditi BLOK Z . <Uslov>,<Uslov 1> i <Uslov 2> NETAČNI – program će uraditi BLOK W .
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 13 Programiranje i numeričke metode - FORTRAN
b) IF blokovi – proces rada: iznutra ka vani
[<broj reda>] IF [<Uslov>] THEN ------- ------- BLOK A ELSE IF [<Uslov 1>] THEN ------- ------- BLOK B ELSE IF [<Uslov 2>] THEN ------- ------- BLOK C ELSE ------- ------- BLOK C1 ENDIF ENDIF ------- ------- BLOK B1 ELSE ------- ------- BLOK A1 ENDIF
Redoslijed ispunjavanja uslova: <Uslov> TAČAN program će uraditi BLOK A. <Uslov> i <Uslov 1> TAČNI program će uraditi BLOK B. <Uslov> i <Uslov 1> i <Uslov 2> TAČNI program će uraditi BLOK C. <Uslov> i <Uslov 1> TAČNI i <Uslov 2> NETAČAN program će uraditi BLOK C1. <Uslov> TAČAN, a <Uslov 1> NETAČAN program će uraditi BLOK B1. <Uslov> NETAČAN program će uraditi BLOK A1. c) svaki blok koji počne mora se i završiti. Iz jednog IF bloka se ne može prebacivati neka informacija u drugi. Tačan blok IF IF (<Uslov>) THEN
------- ------- ------- -------
ELSE ------- ------- ------- ------- ------- -------
ENDIF
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 14 Programiranje i numeričke metode - FORTRAN
Netačan blok IF
IF (<Uslov>) THEN ------- ------- ------- -------
ELSE ------- ------- ------- -------
ENDIF
3) DO – CONTINUE petlja Naredba koja se koristi za ponovno učitavanje varijabli nekog niza. [<broj reda>] DO <Sn> <povratna varijabla> = <prva> , <kraj> [,<korak rasta>]
--------- --------- ---------
<Sn> [ CONTINUE ] <povratna varijabla> : može biti cijeli ili realni broj <prva> : početna vrijednost povratne varijable <kraj> : posljednja vrijednost povratne varijable <korak rasta> : vrijednost za koju se povećava unos podataka <prva>, <kraj>, <korak rasta> : mogu biti
promjenljivi nepromjenljivi
aritmetički izraz broj – funkcija.
<Sn> : broj reda koji završava petlju i kome se pridružuje naredba CONTINUE. Mora biti cijeli broj. Pravila:
1. Naredba DO se uvijek mora koristiti zajedno sa naredbom CONTINUE. 2. Petlja počinje sa naredbom DO i uzima vrijednost <prva> i nastavlja sa
radom sve do naredbe CONTINUE. 3. Naredba CONTINUE prilikom svakog okretanja petlje povećava vrijednost
<prva> za vrijednost <korak rasta> dok ne dođe do zadnje vrijednosti <kraj>. Poslije toga program dalje nastavlja sa radom.
4. Ako se vrijednost <korak rasta> ne napiše onda se uzima da je 1.
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 15 Programiranje i numeričke metode - FORTRAN
5. Ako je vrijednost <korak rasta> pozitivna vrijednost <povratna varijabla> se mijenja sve dok ne dođe do vrijednosti <kraj> pri tom će izvršavati sve naredbe unutar DO – CONTINUE petlje.
Primjer: 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 6. Ako je ispunjen uslov onda će se DO – CONTINUE petlja okrenuti barem
jednom.
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> veća od vrijednosti <kraj> onda će se petlja jedan put okrenuti.
7. Ako je vrijednost <korak rasta> negativna onda vrijednost <prva> mora biti veća 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
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 16 Programiranje i numeričke metode - FORTRAN
Prikaz na ekranu: I=5 I=4 I=3 I=2 I=1
8. Ako su vrijednosti <prva>, <kraj>, <korak rasta> definisane kao promjenljive
prije dolaska do naredbe DO tj. prije petlje mora im se prethodno zadati neka vrijednost.
---------- ----------
5 DO 10 I = N,M ----------
---------- 10 CONTINUE
---------- ----------
U primjeru je vrijednost <prva> N, a vrijednost <kraj> M. npr. N=1, M=5.
9. Vrijednost <povratna varijabla> unutar petlje se ne smije ponovo posebno zadavati, jer tada petlja nece uraditi predviđeno.
Primjer: 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
Prikaz na ekranu:
PUTA RADIO a da nije bilo reda 50 onda bi prikaz na ekranu bio:
1. PUTA RADIO 2. PUTA RADIO 3. PUTA RADIO 4. PUTA RADIO 5. PUTA RADIO
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 17 Programiranje i numeričke metode - FORTRAN
10. Vrijednost <povratna varijabla> može da bude zadata i kao promjenljiva i da
se koristi u nekoj drugoj svrhi osim u onoj osnovnoj. Primjer: INTEGER ZBIR ZBIR=0 WRITE(6,10)
10 FORMAT(1X,24(/)) DO 20 I = 1,100 ZBIR=ZBIR + I
20 CONTINUE WRITE(6,25)ZBIR 25 FORMAT(1X,’ZBIR BROJEVA:’,I5)
STOP END
11. Naredbe GOTO ili IF program mogu da izvedu van granica DO – CONTINUE
petlje.
MOGUĆE DO ................... GOTO ili IF
................... CONTINUE
NEMOGUĆE DO..................
.................... .................... CONTINUE
GOTO ili IF
12. U slučaju da imamo više od jedne petlje pravilo rješavanja petlji je iznutra prema vani.
MOGUĆE
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 18 Programiranje i numeričke metode - FORTRAN
NEMOGUĆE DO 10
DO 20
DO 30 .................... .................... .................... 30 CONTINUE 10 CONTINUE
20 CONTINUE
13. Za više petlji možemo da koristimo samo jedan CONTINUE.
DO 10 K DO 10 L DO 10 M
10 CONTINUE
14. Po završetku <povratna varijabla> se može koristiti u razne druge svrhe u zavisnosti od zadatka.
DIMENSION Naredba koja određuje (rezerviše) prostor za varijable i promjenljive koje će biti unešene prilikom korištenja programa. DIMENSION serija – ime (a1, a2, ...) [serija – ime 1 (b1, b2,...)] Primjer:
DIMENSION AD(100), MAAS (100),MATRICA(10,10) Pravila:
1. Naredba DIMENSION se postavlja na početku programa. (START) 2. U ovoj naredbi možemo definisati jednu ili više serija. 3. U jednom program u naredba se može više puta koristiti. 4. a1, a2, an ili b1, b2, bm dimenzija može biti cijeli ili promjenljivi broj. 5. Ne može se u istom programu 2 puta definisati prostor za istu seriju. 6. U programu se ne mora koristiti ova naredba.
Primjer: INTEGER A(10,10),B(100).
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 19 Programiranje i numeričke metode - FORTRAN
POTPROGRAMI Prilikom programiranja mnogo puta se desi da se dijelovi programa ponavljaju. Da ih ne bi ponovo pisali na različitim mjestima, koristimo se potprogramima za obavljanje te funkcije. Znači, program koji može da radi sam za sebe, a koji je dio glavnog programa zovemo POTPROGRAM. Postoje dvije vrste potprograma:
1) Otvoreni potprogram: FUNCTION (funkcijski) potprogram 2) Zatvoreni potprogram: CALL SUBROUTINE (opšti) potprogram
Radi povratka iz potprograma u glavni program obavezno je korištenje naredbe RETURN.
RETURN: Naredba za povratak iz potprograma u glavni program. Pravila:
1) Najmanje jedna naredba RETURN mora biti u potprogramu 2) Prilikom povratka u glavni program vraća se u red iz kojeg je pozvan potprogram
(FUNCTION) ili odmah u prvi poslije poziva CALL (opšti).
1) FUNCTION (funkcijski) potprogram Dio programa koji može da radi sam za sebe i koji može da bude pozvan više puta. Opšti oblik:
INTEGER REAL DOUBLE PRECISION FUNCTION <ime> (par1(,par2)...) COMPLEX -------- LOGICAL -------- CHARACTER --------
-------- RETURN END <ime> Ime funkcijskog potprograma. (par1(,par2)...) promjenljive koje se prebacuju iz glavnog programa u potprogram. Pravila:
1) FUNCTION potprogram mora početi sa FUNCTION a završiti sa END. 2) Može se koristiti više od jedne definicije, osim u slučaju ako je funkcija aritmetička,
onda semože koristiti samo jednom. 3) Koristeći se imenom funkcije FUNCTION (funkcijski) potprogram dolazi u aktivno
stanje.
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 20 Programiranje i numeričke metode - FORTRAN
4) Iz ovog potprograma u glavni program vraća se samo jedna vrijednost. Povratna vrijednost nosi ime funckijskog potprograma.
5) Ime funkcije istovremeno određuje i tip funkcije. 6) Isti FUNCTION potprogram može biti pozvan više puta. 7) U potprogramu mora biti samo jedno RETURN prisutno. 8) Jedan FUNCTION potprogram može biti pozvan iz nekog drugog FUNCTION
potprograma. 9) Vrijednosti promjenljivih koje se šalju u potprogram moraju biti jednake promjenljivim
u tom potprogramu. Primjer: ← S = F(A,B) ↑ ↓ ↓ ↑ ↓ ↓ FUNCTION F(C,D) Objašnjenje:
F je ime potprograma koji se poziva iz glavnog programa i samim tim je nepoznata u potprogramu, a dok su A i B već poznate varijable koje su unešene u glavnom programu. Prelaskom u potprogram nije obavezno korištenje istih oznaka za varijable, tako da u primjeru varijabla A prelazi u C, a varijabla B u D. Nakon izvršene potrebne operacije u potprogramu izračunata vrijednost F se vraća u glavni program i to u isti red iz kojeg je potprogram, sa imenom F, pozvan. Nakon povratka u glavni program, vrijednost koju je potrebno štampati ili ispisati na ekranu je vrijednost S (strelicama je objašnjen put prelaska vrijednosti iz glavnog programa u potprogram i nazad). Kroz gornji primjer je objašnjeno na koji način se izračunava samo vrijednost S koristeći se funkcijskim potprogramom.
2) OPŠTI POTPROGRAM Opšti oblik CALL SUBROUTINE (opšteg) potprograma. SUBROUTINE <ime potprograma> (par1,(par2),...) -------- -------- RETURN END <ime potprograma> Koristi se za određivanje imena funkcije (par1,(par2),...) Lista promjenljivih parametara. Pravila:
1) Opšti potprogram se poziva naredbom CALL iz glavnog programa, a potprogram počinje sa SUBROUTINE, a završava sa END.
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 21 Programiranje i numeričke metode - FORTRAN
2) Unutar opšteg potprograma sve naredbe se mogu koristiti. 3) Najmanje jedno RETURN mora postojati. 4) Ime potprograma nema nikakvog uticaja na vrijednost koja se vraća u glavni
program. 5) Jedan SUBROUTINE potprogram može biti pozvan više puta. 6) Iz jednog potprograma se može pozvati novi potprogram.
Primjer:
------- CALL PRIMJER (A,B,C,N,...) ------- ↑ ↑ ↓ ↓
------- ↑ ↑ ↓ ↓ SUBROUTINE PRIMJER (D,E,F,M...) ------- ------- RETURN END Objašnjenje:
U gornjem primjeru ime potprograma je PRIMJER i obavezno se mora naznačiti u potprogramu. Naime, potprogram PRIMJER se poziva iz glavnog programa pomoću naredbe CALL, tako da program prelazi u potprogram pomoću naredbe SUBROUTINE. Pored CALL i SUBROUTINE mora stajati ime potprograma (u ovom slučaju PRIMJER). Ime programa predstavlja samo vezu između glavnog programa i potprograma, ali se ne uzima kao nepoznata vrijednost kao kod funkcijskog potprograma. U zagradi se nalaze sve vrijednosti, poznate i nepoznate, odnosno vrijednosti koje će biti obrađivane u potprogramu.U glavnom programu su A i B nepoznate, a C i N su poznate i prelaze u F i M, a iz potprograma kao proračunate D i E prelaze u glavni program na mjesto nepoznatih A i B. U daljnem radu programa moguće je štampati proračunate varijable A i B, kao i poznate C i N. Kroz gornji primjer je objašnjeno na koji način se izračunava veči broj nepoznatih vrijednosti koristeći se opštim potprogramom.
Glavna razlika između dva predstavljena potprograma je u tome što funkcijski potprogram može da proračuna samo jednu vrijednost, a opšti potprogram može beskonačno mnogo vrijednosti.
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 22 Programiranje i numeričke metode - FORTRAN
RIJEŠENI ZADACI
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 23 Programiranje i numeričke metode - FORTRAN
1) Učitati varijable A i B i odštampati ih u glavnom programu.
Rješenje: Dijagram toka
Fortran C UCITATI VARIJABLE A i B I ODSTAMPATI IH C UCITAVANJE VARIJABLI A i B READ(5,10)A,B 10 FORMAT(F8.2) C STAMPANJE VARIJABLI A i B WRITE(6,20)A,B 20 FORMAT(10X,//,'VARIJABLA A=',F8.2,/,'VARIJABLA B=',F8.2) C ZAUSTAVLJANJE PROGRAMA STOP END Ispis na ekranu
START
A
B
A, B
STOP
END
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 24 Programiranje i numeričke metode - FORTRAN
2) Učitati varijable A, B i ZBI, te odrediti S=(A+ZBI)*B i odštampati ih u glavnom programu.
Rješenje: Dijagram toka Fortran C PROGRAM ZA UNOSENJE ZBI I ODREDJIVANJE S
WRITE(*,*)'PROGRAM ZA PRORACUN S=(A+ZBI)*B' WRITE(*,*)' ' INTEGER ZBI
WRITE(6,*)'UNESITE VARIJABLU A' READ(5,1)A 1 FORMAT(F8.2) WRITE(6,*)'UNESITE VARIJABLU B' READ(5,2)B 2 FORMAT(F8.2) WRITE(6,*)'UNESITE ZADNJI BROJ INDEKSA' READ(5,3)ZBI 3 FORMAT(I2) S=(A+ZBI)*B WRITE(6,4)S 4 FORMAT(/,5X,'VRIJEDNOST S=',F10.2) STOP END Ispis na ekranu
START
A
B
S
STOP
END
S=(A+ZBI)*B
ZBI
INTEGER ZBI
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 25 Programiranje i numeričke metode - FORTRAN
3) Učitati dvije varijable i odštampati onu koja je veća u glavnom programu.
Rješenje:
Dijagram toka
Fortran C UCITATI VARIJABLE A i B I ODSTAMPATI VECU C UCITAVANJE VARIJABLI A i B WRITE(*,*)'UNESITE VARIJABLE A i B' READ(5,10)A,B 10 FORMAT(F8.2) C STAMPANJE VARIJABLI A i B IF(A.GT.B)GOTO 15 WRITE(6,2) 2 FORMAT(10X,///,'VARIJABLA B JE VECA=',F8.2) WRITE(6,20)B 20 FORMAT(10X,///,'VARIJABLA B=',F8.2) GOTO 100 15 WRITE(6,3) 3 FORMAT(10X,///,'VARIJABLA A JE VECA=',F8.2) WRITE(6,25)A 25 FORMAT(10X,///,'VARIJABLA A=',F8.2) 100 STOP END Ispis na ekranu
START
A
B
A
STOP
END
A>B DA NE
B
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 26 Programiranje i numeričke metode - FORTRAN
4) Učitati varijable A i B, naći sumu i proizvod istih i odštampati ih u glavnom programu.
Rješenje:
Dijagram toka
Fortran C KALKULACIJA SUME I PROIZVODA DVIJE VARIJABLE REAL C WRITE(*,*)'UNESITE VARIJABLU A' READ(5,1)A 1 FORMAT(F6.2) WRITE(*,*)'UNESITE VARIJABLU B' READ(5,2)B 2 FORMAT(F6.1) C=A+B P=A*B WRITE(6,3)C 3 FORMAT(10X,///,'SUMA=',1X,F7.2) WRITE(6,4)P 4 FORMAT(10X,////,'PROIZVOD=',1X,F10.2) STOP END Ispis na ekranu
START
A
B
SUMA, PROIZVOD
STOP
END
SUMA=A+B
PROIZVOD=A*B
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 27 Programiranje i numeričke metode - FORTRAN
5) Učitati varijable A i B, naći sumu i proizvod istih i odštampati veću od njih u glavnom programu.
Rješenje:
Dijagram toka
Fortran C KALKULACIJA SUME I PROIZVODA I STAMPANJE VECE OD NJIH WRITE(*,*)'UNESITE VARIJABLU A' READ(5,1)A 1 FORMAT(F 6.2) WRITE(*,*)'UNESITE VARIJABLU B' READ(5,2)B 2 FORMAT(F 6.1) S=A+B P=A*B IF(S.GT.P)THEN WRITE(*,5) 5 FORMAT(/,'SUMA JE VECA OD PROIZVODA') WRITE(6,3)S 3 FORMAT(/,'SUMA JE',1X,F 7.2) ELSE WRITE(*,6) 6 FORMAT(/,'PROIZVOD JE VECI OD SUME') WRITE(6,4)P 4 FORMAT(/,'PROIZVOD JE',1X,F 10.2) ENDIF STOP END
START
A
B
S=A+B
P=A*B
S > P NE DA
S P
STOP
END
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 28 Programiranje i numeričke metode - FORTRAN
Ispis na ekranu
6) Učitati varijable A i B, naći količnik istih i odštampati ga u glavnom programu. Rješenje:
Dijagram toka
Fortran C KALKULACIJA KOLICNIKA WRITE(*,*)'UNESITE VARIJABLU A' READ(5,1)A 1 FORMAT(F 6.2) 5 WRITE(*,*)'UNESITE VARIJABLU B' READ(5,2)B 2 FORMAT(F 6.2) IF(B.EQ.0)GOTO 5 C=A/B WRITE(6,3)C 3 FORMAT(/,'KOLICNIK JE',F10.2) STOP END
START
A
B
B=0 DA
C
STOP
END
C=A/B
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 29 Programiranje i numeričke metode - FORTRAN
Ispis na ekranu
7) Napraviti program za rješavanje kvadratne jednačine: ax2 + bx + c = 0.
Rješenje:
x1,2 = 2 4
2b b ac
a− ± −
D= 2 4b ac− D > 0 => Realna rješenja (dva rješenja x1 , x2) D < 0 => Kompleksno rješenje D = 0 => Dvostruko rješenje (x1 = x2) Dijagram toka
START
B,C
A
A=0 DA
1 2*BXA
−=
D
IMAM KOMPLEKSNA RJESENJA
1 2*B DX
A− −
=
1 2*B DX
A− +
= IMAM DVOSTRUKO RJESENJE, X=
IMAM DVA RJESENJA X1= , X2= STOP
END
2 4* *D B A C= −
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 30 Programiranje i numeričke metode - FORTRAN
Fortran C PROGRAM ZA RJESAVANJE KVADRATNE JEDNACINE REAL D,X1,X2 WRITE(6,*)'PROGRAM ZA RJESAVANJE KVADRATNE JEDNACINE' WRITE(6,*)'Ax2+Bx+C=0' WRITE(6,*)' ' WRITE(6,*)'UNESITE VRIJEDNOST B' READ(5,1)B WRITE(6,*)'UNESITE VRIJEDNOST C' READ(5,1)C WRITE(6,*)'UNESITE VRIJEDNOST A' 10 READ(5,1)A 1 FORMAT(F8.2) IF(A.EQ.0)GOTO 10 D=B**2-4*A*C IF(D)20,30,40 20 WRITE(6,2) 2 FORMAT(///,2X,'IMAM KOMPLEKSNA RJESENJA') GOTO 100 30 X1=-B/(2*A) WRITE(6,3)X1 3 FORMAT(///,2X,'IMAM DVOSTRUKO RJESENJE',/,'X=',F10.2) GOTO 100 40 X1=-B/(2*A)-SQRT(D)/(2*A) X2=-B/(2*A)+SQRT(D)/(2*A) WRITE(6,4)X1,X2 4 FORMAT(///,2X,'IMAM DVA RJESENJA',/,'X1=',F10.2,/,'X2=',F10.2) 100 STOP END Ispis na ekranu
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 31 Programiranje i numeričke metode - FORTRAN
8) Učitati niz od N elemenata i odštampati ga u glavnom programu. Rješenje: Dijagram toka
Fortran C UCITAVANJE I STAMPANJE NIZA ELEMENATA DIMENSION A(100) C UCITAVANJE BROJA ELEMENATA NIZA WRITE(6,*)'UNESITE BROJ ELEMENATA NIZA' READ(5,2)N 2 FORMAT(I4) C UCITAVANJE ELEMENATA NIZA A WRITE(6,*)'UCITAJTE ELEMENTE NIZA A' DO 10 I=1,N READ(5,1)A(I) 1 FORMAT(F8.2) 10 CONTINUE
DIMENSION A (100)
UNESITE BROJ ELEMENATA
NIZA
START
N
UČITAJTE ELEMENTE
NIZA A
DO 10 I = 1,N
A (I)
10
ELEMENTI NIZA A SU:
DO 20 I = 1,N
A (I)
20
STOP
END
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 32 Programiranje i numeričke metode - FORTRAN
C STAMPANJE ELEMENATA NIZA A WRITE(*,*)'ELEMENTI NIZA A SU:' DO 20 I=1,N WRITE(6,3)A(I) 3 FORMAT(F8.2) 20 CONTINUE STOP END Ispis na ekranu
9) Učitati niz od 20 elemenata i naći sumu članova na parnim i proizvod elemenata na neparnim mjestima. Sumu i proizvod odštampati u glavnom programu. Rješenje: Dijagram toka
START
DIMENSION A(20)
DO 10 I=1,20
A(I)
10
P=1
S=0
S=S+A (2*I)
P=P*A (2*I-1)
DO 20 I=1,10
20
S,P
STOP
END
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 33 Programiranje i numeričke metode - FORTRAN
Fortran C SUMA PARNIH I PROIZVOD NEPARNIH ELEMENATA NIZA DIMENSION A(20) WRITE(*,*)'PROGRAM ZA SABIRANJE PARNIH I MNOZENJE NEPARNIH’ WRITE(*,*)’ELEMENATA NIZA' WRITE(*,*)'UNESITE 10 ELEMENATA NIZA' C UNOSENJE ELEMENATA NIZA A DO 1 I=1,10 READ(5,10)A(I) 10 FORMAT(F8.2) 1 CONTINUE C OPERACIJA SA ELEMENTIMA NIZA A P=1 S=0 DO 2 I=1,5 S=S+A(2*I) P=P*A(2*I-1) 2 CONTINUE C STAMPANJE SUME I PROIZVODA NIZA A WRITE(6,20)S,P 20 FORMAT('SUMA=',F8.2,/,'PROIZVOD=',F14.2) C ZAUSTAVLJANJE PROGRAMA STOP END Ispis na ekranu
10) Učitati niz od 10 elemenata, onda formirati drugi niz B, tako da se sastoji samo od različitih elemenata niza A. Zatim naći minimalni i maksimalni elemenat niza B. Odštampati elemente niza A i niza B i minimalni i maksimalni elemenat u glavnom programu. Rješenje:
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 34 Programiranje i numeričke metode - FORTRAN
Dijagram toka
Fortran C UCITATI NIZ OD 10 ELEMENATA, ONDA FORMIRATI DRUGI NIZ B TAKO DA SE C SASTOJI SAMO OD RAZLICITIH ELEMENATA NIZA A. ZATIM NACI MIN.I MAX. C ELEMENAT NIZA B. ODSTAMPATI NIZ B I MIN. I MAX. ELEMENTE NIZA B. WRITE(*,*)’FORMIRANJE NIZA B OD RAZLICITIH EL. NIZA A’
WRITE(*,*)'I TRAZENJE MAKSIMALNOG I MINIMALNOG ELEMENTA NIZA' DIMENSION A(10),B(10)
C UCITAVANJE ELEMENATA NIZA A WRITE(*,*)'UNESITE 10 ELEMENATA NIZA A' DO 10 I=1,10 READ(5,1)A(I) 1 FORMAT(F8.2) 10 CONTINUE C STAMPANJE ELEMENATA NIZA A WRITE(*,*)'ELEMENTI NIZA A SU:'
DO 11 I=1,10 WRITE(6,5)A(I) 5 FORMAT(F8.2) 11 CONTINUE
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 35 Programiranje i numeričke metode - FORTRAN
C ODREDJIVANJE ELEMENATA NIZA B B(1)=A(1) K=0 DO 15 I=1,10 DO 20 J=1,K IF(A(I).EQ.B(J))GOTO 15 20 CONTINUE K=K+1
B(K)=A(I) C STAMPANJE BROJA ELEMENATA NIZA B WRITE(*,2)B(K) 2 FORMAT(/,'NOVI ELEMENAT NIZA B JE:',F8.2) 15 CONTINUE WRITE(*,6)K 6 FORMAT(/,5X,'BROJ ELEMENATA NIZA B JE:',I3) C ODREDJIVANJE MAX. I MIN. ELEMENTA NIZA B PMAX=B(1) PMIN=B(1) DO 30 I=1,K IF(PMAX.LT.B(I))THEN PMAX=B(I) ELSE IF(PMIN.GT.B(I))PMIN=B(I) ENDIF 30 CONTINUE C STAMPANJE MAX. I MIN. ELEMENTA NIZA B WRITE(6,3)PMAX,PMIN 3 FORMAT(//,'MAX.ELEM.=',F8.2,/,'MIN.ELEM.=',F8.2) STOP END Ispis na ekranu
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 36 Programiranje i numeričke metode - FORTRAN
11) Učitati 20 elemenata niza A, sortirati ih u rastućem redosljedu i odštampati. Rješenje: Dijagram toka
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'
START
DIMENSION A(20)
DO 10 I=1,20
DO 15 J=I+1,20
DO 20 I=1,19
A(D)
10
A(I)<A(J)
C=A(I)
A(I)=A(J)
A(J)=C
15
20
A(J)
STOP
END
DA
NE
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 37 Programiranje i numeričke metode - FORTRAN
DO 10 I=1,20 READ(5,1)A(I) 1 FORMAT(F8.2) 10 CONTINUE C 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 15 CONTINUE 20 CONTINUE WRITE(*,*)'SORTIRANI ELEMENTI NIZA A SU:' DO 30 J=1,20 WRITE(6,3)A(J) 3 FORMAT(F8.2) 30 CONTINUE STOP Ispis na ekranu
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 38 Programiranje i numeričke metode - FORTRAN
12) Učitati niz A od 10 elemenata, pa formirati niz B tako da imamo sljedeće:
B(1)<B(2)>B(3)<B(4)>B(5)<B(6)>B(7)<B(8)>B(9)<B(10) Rješenje: Dijagram toka:
START
DIMENSION A(10),B(10)
DO 10 I=1,10
A(10)
DO 30 J=I + 1,10
A(I)>A(J)
30
20
DO 40 I=1,5
B(2*I-1) = A( I )
B(2*I) =A ( I + 5 )
40
STOP
END
10
C = A ( I )
A (I) = A (J)
A(J) = C
DO 20 I=1,9
DO 50 I=1,10
NE
DA
50
B(I) SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 39 Programiranje i numeričke metode - FORTRAN
Fortran
C UCITATI NIZ A OD 10 ELEMENATA, PA FORMIRATI NIZ B TAKO DA IMAMO C SLJEDECE: B(1)<B(2)>B(3)<B(4)>B(5)<B(6)>B(7)<B(8)>B(9)<B(10) DIMENSION A(10), B(10) WRITE(*,*)'PROGRAM ZA FORMIRANJE NIZA B IZ NIZA A TAKO DA JE' WRITE(*,*)'B[1]<B[2]>B[3]<B[4]>B[5]<B[6]>B[7]<B[8]>B[9]<B[10]' WRITE(*,*)' '
WRITE(*,*)'UNESITE ELEMENTE NIZA A' DO 10 I=1,10 READ(5,1)A(I) 1 FORMAT(F8.2) 10 CONTINUE DO 20 I=1,9 DO 20 J=I+1,10 IF(A(I).GT.A(J))THEN C=A(I) A(I)=A(J) A(J)=C ELSE GOTO 20 ENDIF 20 CONTINUE DO 30 I=1,5 B(2*I-1)=A(I) B(2*I)=A(I+5) 30 CONTINUE WRITE(*,*)'ELEMENTI NIZA B SU:' DO 40 I=1,10 WRITE(6,2)B(I) 2 FORMAT('NIZ B',F8.2) 40 CONTINUE STOP END Ispis na ekranu
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 40 Programiranje i numeričke metode - FORTRAN
13) Učitati matricu A(4×4) i matricu B(4×4), onda naći matricu C kao proizvod matrica A i B.
jkkiji BAC ,,, ⋅= Rješenje: Dijagram toka:
Fortran
START
DIMENSION A(4,4), B(4,4), C(4,4)
DO 10 I=1,4
DO 10 I=1,4
A (I)
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
DO 40 K=1,4
C(I,J)= C(I,J) + A(I,K)* B(K,J)
40
30
50
C(I,J)
STOP
END
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 41 Programiranje i numeričke metode - FORTRAN
C NACI PROIZVOD MATRICA A i B, KAO MATRICU C DIMENSION A(4,4), B(4,4), C(4,4) WRITE(*,*)'PROGRAM ZA RACUNANJE PROIZVODA DVIJE MATRICE' WRITE(*,*)' ' WRITE(*,*)'UNESITE ELEMENTE MATRICE A(4×4)' DO 10 I=1,4 DO 10 J=1,4 WRITE(6,5)I,J 5 FORMAT('A(',I1,',',I1,')') READ(5,1)A(I,J) 1 FORMAT(F8.2,F8.2) 10 CONTINUE WRITE(*,*)'UNESITE ELEMENTE MATRICE B(4×4)' DO 20 I=1,4 DO 20 J=1,4 WRITE(6,6)I,J 6 FORMAT('B(',I1,',',I1,')') READ(5,2)B(I,J) 2 FORMAT(F8.2,F8.2) 20 CONTINUE WRITE(*,*)'PROIZVOD MATRICA A i B JE:' DO 30 I=1,4 DO 30 J=1,4 C(I,J)=0 DO 40 K=1,4 C(I,J)=C(I,J)+A(I,K)*B(K,J) 40 CONTINUE WRITE(6,8)I,J 8 FORMAT('C(',I1,',',I1,')') WRITE(6,7)C(I,J) 7 FORMAT(F10.2,F10.2) 30 CONTINUE STOP END
Ispis na ekranu
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 42 Programiranje i numeričke metode - FORTRAN
14) Učitati matricu A(4×4) onda naći trag matrice A
Rješenje: Dijagram toka:
Fortran
C NACI TRAG MATRICE A DIMENSION A(4,4) WRITE(*,*)'PROGRAM ZA RACUNANJE TRAGA MATRICE' WRITE(*,*)' ' WRITE(*,*)'UNESITE ELEMENTE MATRICE A(4x4)' DO 10 I=1,4 DO 10 J=1,4 WRITE(6,5)I,J 5 FORMAT('A(',I1,',',I1,')') READ(5,1)A(I,J) 1 FORMAT(F8.2,F8.2) 10 CONTINUE TRAG=0 DO 20 I=1,4 TRAG=TRAG+A(I,I) 20 CONTINUE WRITE(6,2)TRAG 2 FORMAT('TRAG MATRICE JE:',F10.2) STOP END
START
DIMENSION A(4,4)
DO 10 I=1,4
DO 10 J=1,4
A(I)
10
TRAG = 0
DO 20 I=1,4
TRAG=TRAG+ A(I,I)
20
TRAG
STOP
END
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 43 Programiranje i numeričke metode - FORTRAN
P. P.
FUNCTION F(A,B)
F= A+B
END
RETURN
Ispis na ekranu
15) U glavnom programu učitati varijable A i B i pozivom funkcijskog potprograma izračunati
sumu tih varijabli. Rješenje: Dijagram toka:
START
A
B
SUMA = F(A,B)
SUMA
STOP
END
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 44 Programiranje i numeričke metode - FORTRAN
Fortran
C 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
16) U glavnom programu učitati varijablu X, te pomoću funkcijskog potprograma odrediti X2 ako je X>5
f(X)= X2+2 ako je X=5 5X ako je X<5
Rješenje: Dijagram toka:
START
UNESITE NEPOZNATU X
Y
STOP
END
Y=F(X)
P.P.
F=X2
FUNCTION F(X)
X>5
X=5
F=X2+2 X<5
F=5X
RETURN
END
DA
DA
DA
NE SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 45 Programiranje i numeričke metode - FORTRAN
Prvi način Fortran C PROGRAM ZA ODREDJIVANJE FUNKCIJE C X**2 X>5 C f(X)= X**2+2 X=5 C 5X X<5 WRITE(*,*)'UNESITE NEPOZNATU X' READ(5,2)X 2 FORMAT(2F8.2) Y=F(X) WRITE(6,1)Y 1 FORMAT(1X,'SUMA:',F7.2) STOP END FUNCTION F(X) IF(X.GT.5)F=X**2 IF(X.EQ.5)F=X**2+2 IF(X.LT.5)F=5*X RETURN END Ispis na ekranu – prvi način
Drugi način Fortran (pomoću BLOK IF) C ODREDITI FUNKCIJU C X**2 X>5 C f(X)= X**2+2 X=5 C 5X X<5 WRITE(*,*)'UNESITE NEPOZNATU X' READ(5,2)X 2 FORMAT(2F8.2)
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 46 Programiranje i numeričke metode - FORTRAN
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
Ispis na ekranu - drugi način
17) U glavnom programu učitati prvi, pa drugi broj kombinacije, te pozivom funkcijskog
potprograma izračunati kombinaciju: )!(!
!JIJ
IK−
=
Rješenje:
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 47 Programiranje i numeričke metode - FORTRAN
Dijagram toka:
Fortran
C PRORACUN KOMBINACIJE K=I!/[J!(I-J)!] INTEGER A,B,C,FAKT C I=PRVI BROJ C J=DRUGI BROJ C K=REZULTAT WRITE(*,*)'PROGRAM ZA RACUNANJE BROJA KOMBINACIJA' WRITE(*,*)' ' WRITE(*,*)'UNESITE PRVI,PA DRUGI BROJ KOMBINACIJE' READ(5,1)I,J 1 FORMAT(2I3) A=FAKT(I) B=FAKT(J) C=FAKT(I-J) K=A/(B*C) WRITE(6,3)I,J,K 3 FORMAT(1X,'1.BROJ:',I3,//,1X,'2.BROJ:',I3,//,1X, +'BROJ KOMBINACIJA:',I4) STOP END INTEGER FUNCTION FAKT(L) FAKT=1 DO 10 N=1,L FAKT=FAKT*N 10 CONTINUE RETURN END
Ispis na ekranu
P.P
INTEGER FUNCTION FAKT (L)
FAKT = 1
DO 10 N=1,L
FAKT = FAKT*N
10
RETURN
END
START
INTEGER A,B,C,FAKTI
I,J
A = FAKT (I)
B = FAKT (J)
C = FAKT (I-J)
K = A/ (B*C)
F,J,K
STOP
END
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 48 Programiranje i numeričke metode - FORTRAN
18) Učitati x,y koordinate 10 tačaka. Napisati funkcijski potprogram koji će da računa rastojanja datih tačaka sa kordinatom XA = 0.5 i YA = 1.0, te naći najveću i najmanju dužinu u glavnom programu.
Dijagram toka:
START
DIMENSION X(10),Y(10),D(10)
DO 10 I=1,10
X(I) ,Y(I)
10
XA =0,5
YA =1,0
DO 20 I = 1,10
20
DMAX=D(1)
DMIN=D(1)
DO 30 I = 1,10
DMAX<D(1)
DMIN>D(1)
DMIN = D (1)
30
DMAX,DMIN
STOP
END
P.P.
FUNCTION DUŽINA (A,B,C,D)
DUŽINA=SORT((A-C)**2(B-D)**2)
END
DMAX = D(1)
DA
NE
NE
D(I)=DUŽINA (X(I),Y(I),XA, YA)
RETURN
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 49 Programiranje i numeričke metode - FORTRAN
Fortran
C UCITATI x,y KOORDINATE 10 TACAKA.NAPISATI FUNKCIJSKI POTPROGRAM C KOJI CE DA RACUNA RASTOJANJA DATIH TACAKA OD TACKE SA C KOORDINATOM Xa=0,5 i Y=1,0. NACI NAJVECU I NAJMANJU DUZINU U C GLAVNOM PROGRAMU DIMENSION X(10),Y(10),D(10) WRITE(*,*)'PROGRAM ZA RACUNANJE RASTOJANJE TACAKA OD TACKE'
WRITE(*,*)'Xa=0,5 i Y=1,0' WRITE(*,*)' ' WRITE(*,*)'UNESITE KOORDINATE 10 TACAKA A(X,Y)' DO 10 I=1,10 WRITE(6,3)I 3 FORMAT('TACKA BROJ',I2,' JE: ') READ(5,1)X(I),Y(I) 1 FORMAT(2F8.2) 10 CONTINUE XA=0.5 YA=1.0 DO 20 I=1,10 D(I)=DUZINA(X(I),Y(I),XA,YA) 20 CONTINUE DMAX=D(1) DMIN=D(1) DO 30 I=1,10 IF(DMAX.LT.D(I))THEN DMAX=D(I) ELSE IF(DMIN.GT.D(I))THEN DMIN=D(I) ENDIF 30 CONTINUE WRITE(6,2)DMAX,DMIN 2 FORMAT(5X,'MAX. DUZINA JE:',F8.2,//,5X,'MIN. DUZINA JE:',F8.2) STOP END FUNCTION DUZINA(A,B,C,D) DUZINA=SQRT((A-C)**2+(B-D)**2) RETURN END Ispis na ekranu
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 50 Programiranje i numeričke metode - FORTRAN
19) Učitati matricu A(4×4). Naći sumu elemenata iznad glavne dijagonale. Zatim naći maksimalni elemenat (vrijednost) i njegove indekse. Sve to obraditi pomoću opšteg potprograma.
Rješenje: Dijagram toka:
Fortran
C SUMA ELEMENATA IZNAD GLAVNE DIJAGONALE I MAX. ELEM. MATRICE C M= PRVI INDEKS C N= DRUGI INDEKS DIMENSION A(4,4) WRITE(*,*)'PROGRAM ZA RACUNANJE SUME ELEMENATA' WRITE(*,*)'IZNAD GLAVNE DIJAGONALE I MAX. ELEM. MATRICE' WRITE(*,*)' ' WRITE(*,*)'UNESITE ELEMENTE MATRICE A(4x4)' DO 10 I=1,4 DO 10 J=1,4 WRITE(6,5)I,J
START
DIMENSION A (4,4)
DO 10 I = 1,10
DO 10 I = 1,10
A (I, J)
10
SUMA,PMAX, PMIN
STOP
END
CALL RACUN (A,SUMA ,M,N,PMAX)
P.P
DIMENSION B (4,4)
S = 0
DO 20 I = 1,4
DO 20 J = 1,4
I<J
20
PMAX=B(1,1)
M=1
N=1
DO 30 I = 1,4
DO 30 J=1,4
PMAX< B(I,J)
30
END
S=S+B(I,J)
PMAX=B(I,J)
M=I
N=J
RETURN
SUBROUTINE RACUN (B,S,M,N,PMAX) SK
RIPT
A
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 51 Programiranje i numeričke metode - FORTRAN
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
Ispis na ekranu
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 52 Programiranje i numeričke metode - FORTRAN
20) Učitati matricu A(4×4). Naći sumu elemenata ispod glavne dijagonale. Sve to obraditi pomoću opšteg potprograma.
Rješenje: Dijagram toka:
Fortran
C SUMA ELEMENATA ISPOD GLAVNE DIJAGONALE DIMENSION A(4,4) WRITE(*,*)'PROGRAM ZA RACUNANJE SUME ELEMENATA ISPOD' WRITE(*,*)'GLAVNE DIJAGONALE MATRICE' WRITE(*,*)' ' WRITE(*,*)'UNESITE ELEMENTE MATRICE A(4x4)' DO 10 I=1,4 DO 10 J=1,4 WRITE(6,5)I,J 5 FORMAT('A(',I1,',',I1,')') READ(5,1)A(I,J) 1 FORMAT(F8.2,F8.2) 10 CONTINUE CALL RACUN(A,SUMA) WRITE(6,2)SUMA 2 FORMAT('SUMA ISPOD GLAVNE DIJ.',F10.2) STOP END SUBROUTINE RACUN(B,S) DIMENSION B(4,4) S=0
START
DIMENSION A(4,4)
DO 10 I=1,4
DO 10 J=1,4
A (I,J)
10
CALL RACUN (A, SUMA)
SUMA
STOP
END
P.P
SUBROUTINE RACUN (B,S)
DIMESION B(4,4)
S=0
DO 20 I=1,4
DO 20 J=1,4
I>J
20
END
S= S+B (I,J)
RETURN
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 53 Programiranje i numeričke metode - FORTRAN
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
Ispis na ekranu
21) Napraviti program za proračun reakcija, momenata savijanja i transverzalnih sila na desetinama raspona proste grede opterećene ravnomjernim kontinuiranim opterećenjem.
Rješenje: Dijagram toka:
START
REAL M,T,Q,L
L
Q
R=Q*L/2
R
DO 10 I=0,10
2** 10* *10 2
I LI LM R Q
⎛ ⎞⎜ ⎟⎝ ⎠= −
M
10
DO 20 K=0,10
**10
I LT R Q= −
T
20
STOP
END
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 54 Programiranje i numeričke metode - FORTRAN
Fortran
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 1 FORMAT(F 6.2) WRITE(6,*)'UNESITE VRIJEDNOST OPTERECENJA KAO REALAN BROJ' WRITE(6,*)'VRIJEDNOST OPTERECENJA Q=' READ(5,2)Q 2 FORMAT(F 6.2) R=Q*L/2 WRITE(6,3)R 3 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 4 FORMAT(10X,'M',I2,'=',F 10.2,' kNm') 10 CONTINUE WRITE(6,*)'TRANSVERZALNE SILE NA DESETINAMA RASPONA' DO 20 K=0,10 T=R-Q*(K*L/10) WRITE(6,5)K,T 20 CONTINUE 5 FORMAT(10X,'T',I2,'=',F 10.2,' kN') STOP END
Ispis na ekranu
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 55 Programiranje i numeričke metode - FORTRAN
PROBLEMI ZA VJEŽBU
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 56 Programiranje i numeričke metode - FORTRAN
PROBLEMI ZA VJEŽBU Problem 1: Za dati program napisan u FORTRANU napisati izlazne podatke. 10 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
Problem 2: Za dati program napisan u FORTRANU napisati izlazne podatke i nacrtati dijagram toka. 10 10 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
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 57 Programiranje i numeričke metode - FORTRAN
Problem 3: Za dati program napisan u FORTRANU napisati izlazne podatke i nacrtati dijagram toka. 10 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
Problem 4: Za dati program napisan u FORTRANU napisati izlazne podatke i nacrtati dijagram toka. 10 10 15
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
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 58 Programiranje i numeričke metode - FORTRAN
Problem 5: Za dati program napisan u FORTRANU nacrtati dijagram toka. C C C 5 20 10
+
PROGRAM ZA KORISTENJE FUNKCIJA POMOCU POTPROGRAMA
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 FUNCTION COS1(X) COS1=COS(X) RETURN END FUNCTION TAN1(X) TAN1=TAN(X) RETURN END
Ispis na ekranu
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 59 Programiranje i numeričke metode - FORTRAN
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 60 Programiranje i numeričke metode - FORTRAN
C PRORACUN ARCSINUS-a, ARCKOSINUS-a I ARCTANGENS-a
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 61 Programiranje i numeričke metode - FORTRAN
Problem 6: Za dati program napisan u FORTRANU nacrtati dijagram toka. C C 10 15 20
+
PRORACUN ARCSINUS-a, ARCKOSINUS-a I ARCTANGENS-a 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
Ispis na ekranu
Problem 7: Za dati program napisan u FORTRANU napisati izlazne podatke i nacrtati dijagram toka.
Fortran 1 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
SKRI
PTA
mr.
Raš
id H
adžo
vić,
dip
l.inž
.gra
đ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka 73 Programiranje i numeričke metode - FORTRAN
LITERATURA:
1. Cezmi Orkun: Fortran 77, Ornas Yayinlari 1994. 2. Philip Crookall: Programiranje za početnike, Tehnička knjiga 1983.
SKRI
PTA