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.
A
UNIVERZITET „DŽEMAL BIJEDIĆ“ U MOSTARU GRAĐEVINSKI FAKULTET
ZBIRKA RIJEŠENIH ZADATAKA PROGRAMIRANJE U FORTRANU
SK
SKRIPTA
MOSTAR, 2007.
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
Programiranje u Fortran-u Riješeni zadaci Problemi za vježbanje Neki od dosadašnjih ispitnih zadataka Zadaci za seminarski rad Literatura
02 22 55 62 66 73
SK
1. 2. 3. 4. 5. 6.
mr. Rašid Hadžović, dipl.inž.građ.
SADRŽAJ:
RI PT
A
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
1
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
SK
PROGRAMIRANJE U FORTRANU
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
A
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
2
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đ.
UVOD
DIJAGRAM TOKA PROGRAMA Definicija
A
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).
Oznaka ili
Značenje
Učitavanje podataka u program Operacija - rad sa podacima
SK
ili
Štampanje podataka i rezultata na ekranu ili na štampaču
Naredba u Fortranu
READ, DATA, OPEN Zavisno od zadatka koriste se različite komande 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
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
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.
3
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
Štampanje podataka Poređenje – ispunjenje uslova START, STOP i END Pozivanje potprograma RETURN
Komande koje se stavljaju u dijagram toka da bi se označio početak i kraj programa. Znak koji nam služi za pozivanje potprograma. Razlikujemo 2 potprograma: FUNCTION (funkcijski) i CALL – SUBROUTINE (opšti). Komanda koja se koristi da bi se izvršio povratak iz potprograma u glavni program.
VARIJABLE
mr. Rašid Hadžović, dipl.inž.građ.
Operacija
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. U ovu grupu spadaju sve komande, koje obavljaju neku vrstu operacije u zavisnosti od onog što se traži u zadatku. 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. 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.
A
Učitavanje podataka
Objašnjenje
RI PT
Dijagram toka
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
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 ...)
SK
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.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
4
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đ.
OPERACIJE U FORTRANU Oznake u FORTRAN – u ** / * + -
A
Aritmetičke operacije Stepenovanje Dijeljenje Množenje Sabiranje Oduzimanje
Definicija zagrade stepenovanje množenje i dijeljenje sabiranje i oduzimanje
Fortran () ** *,/ +,-
RI PT
R.br. 1. 2. 3. 4.
Pisanje formula
Matematički način prikazivanja formula A+ B C
( ( A+B) ⋅ C )
D
Pisanje formula u Fortranu (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
Značenje Jednako Nije jednako Manje Veće Manje i jednako Veće i jednako
Prikaz u Fortranu .EQ. (Equally) .NE. (Not Equally) .LT. (Little) .GT. (Great) .LE. (Little and Equally) .GE. (Great and Equally)
mr. Rašid Hadžović, dipl.inž.građ.
Redoslijed korištenja aritmetičkih operacija:
Logičke operacije
Značenje Nije I Ili Ili je Ili nije
Fortran .NOT. .AND. .OR. .EQV. .NEQV.
Primjer .NOT.(3.EQ.2) TAČNO (3.EQ.3).AND.(2.EQ.2) TAČNO (3.EQ.3).OR.(2.EQ.2) TAČNO (3.EQ.3).EQV.(2.EQ.2) TAČNO (3.EQ.3).NEQV.(2.EQ.2) NETAČNO (3.EQ.3).EQV.(3.EQ.2) TAČNO Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
5
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đ.
NEKE OD NAREDBI U FORTRANU: READ Naredba za učitavanje podataka u program. READ(*,*) ili READ(*,n) ili READ(5,n)
Primjer:
RI PT
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)
mr. Rašid Hadžović, dipl.inž.građ.
A
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.
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)
SK
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 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 Alfanumerički broj An Logički broj Ln Početna tačka za broj kolone Tn Preskakanje n kolona nX Broj preskočenih redova n/ Broj preskočenih kolona 1X Samo neki od Format-a će biti obrađeni u ovoj skripti.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
Naredba Fortrana u kojoj se koristi READ/WRITE READ/WRITE READ/WRITE READ/WRITE READ/WRITE READ/WRITE READ/WRITE WRITE READ WRITE WRITE
6
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đ.
In – format za cjelobrojne varijable n – broj mjesta koja će se ostaviti (rezervisati) za broj cifara cjelobrojnih varijabli Primjer:
A
READ(5,10)N 10 FORMAT (I3) Ili WRITE(6,10)N 10 FORMAT(I3)
RI PT
U ovim primjerima moguće je unijeti samo trocifrene pozitivne dok je nemoguć unos neativnih brojeva ili ispisati trocifrene pozitivne dvocifrene negativne brojeve.
±
Format – READ I4 I4 I4 I4
Unešeni podatak 12 -122 123456 1000
Očitani podatak 12 -122 1234 1000
Format - WRITE I4 I4 I4 I4
Vrijednost 12 -122 123456 1000
Ispisani podatak 12 -122 **** 1000
mr. Rašid Hadžović, dipl.inž.građ.
Grafički prikaz formata I4:
SK
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)
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
7
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đ.
±
Grafički prikaz formata F8.3
.
A
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
Prikaz u Fortranu za E8.3 .123E+07 .346E+00 .436E+03 ********
Prikaz u Fortranu za F8.3 ******** 0.346 435.670 -123.456
RI PT
Matematički prikaz 1234556.958 0.34567 435.67 -123.4567
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.
mr. Rašid Hadžović, dipl.inž.građ.
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.
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:
SK
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 Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
8
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đ.
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.
A
KONTROLNI IZRAZI U FORTRAN-u 1) Bezuslovni GOTO Naredba koja usmjerava program direktno na broj nekog reda bez ikakvog uslova. 2) IF
RI PT
a) LOGIČKI “IF” b) ARITMETIČKI “IF” c) BLOK “IF”
mr. Rašid Hadžović, dipl.inž.građ.
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: [
] IF [] .EQ. .NE. .NOT. = .GE. .LT. .LE.
promjenljiv nepromjenljiv Aritmetički izraz
SK
:
.GT. .AND. .OR.
: Ako je rezultat aritmetičkog izraza TAČAN onda program 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
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
NE
DA
K=5
9
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đ.
b) ARITMETIČKI “IF” Koristi se za poređenje i za ispunjavanje jednog uslova koji ima tri različita odgovora.
A
Aritmetički IF se piše u sljedećoj formi: IF (Aritmetički izraz) N1, S1, P1 N1: Ako je rezultat <0 (manji od nule) → broj reda S1: Ako je rezultat =0 (jednak nuli) → broj reda P1: Ako je rezultat >0 (veći od nule) → broj reda <0
>0
=0
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
Rezultat
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 C C
BROJ: UCITANI CIJELI BROJ PZBIR: ZBIR CIJELIH POZITIVNIH BROJEVA 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
SK
C C C
UNESEN JE NEGATIVNI CIJELI BROJ
50 NZBIR=NZBIR+BROJ GOTO 5
C C C
UNESEN JE POZITIVAN CIJELI BROJ
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 riješenih zadataka Programiranje i numeričke metode - FORTRAN
10
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đ.
c) BLOK “IF”
RI PT
IF () 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
mr. Rašid Hadžović, dipl.inž.građ.
ZBIR POZ. BROJEVA:####18 ZBIR NEG. BROJEVA:###-15
A
Rješenje: Prikaz na ekranu će biti, ako unesemo sljedeće brojeve 3, 5, -8, -7, 10, 0.
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:
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 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. Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
11
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
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
A
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
IF blokovi mogu raditi na sljedeći način:
a) IF blokovi – proces rada: jedan po jedan
SK
[] IF [] THEN ------------BLOK X ------ELSE IF [] THEN ------------BLOK Y ------ELSE IF [] THEN ------------BLOK Z ------ELSE ------------BLOK W ------ENDIF
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
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
Redoslijed ispunjavanja uslova:
Ako je TAČNO program će uraditi BLOK X . NETAČAN i TAČAN – program će uraditi BLOK Y . i NETAČNI i TAČAN – program će uraditi BLOK Z . , i NETAČNI – program će uraditi BLOK W . Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
12
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đ.
Redoslijed ispunjavanja uslova:
TAČAN program će uraditi BLOK A. i TAČNI program će uraditi BLOK B. i i TAČNI program će uraditi BLOK C. i TAČNI i NETAČAN program će uraditi BLOK C1. TAČAN, a NETAČAN program će uraditi BLOK B1. NETAČAN program će uraditi BLOK A1.
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
A
b) IF blokovi – proces rada: iznutra ka vani [] IF [] THEN ------------BLOK A ELSE IF [] THEN ------------BLOK B ELSE IF [] THEN ------------BLOK C ELSE ------------BLOK C1 ENDIF ENDIF ------------BLOK B1 ELSE ------------BLOK A1 ENDIF
SK
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 () THEN ------------------------ELSE ------------------------------------ENDIF
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
13
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đ.
Netačan blok IF
RI PT
A
IF () THEN ------------------------ELSE ------------------------ENDIF
Naredba koja se koristi za ponovno učitavanje varijabli nekog niza.
[] DO = , [,] ------------------------ [ CONTINUE ] : može biti cijeli ili realni broj : početna vrijednost povratne varijable : posljednja vrijednost povratne varijable : vrijednost za koju se povećava unos podataka
SK
, , : mogu biti promjenljivi nepromjenljivi aritmetički izraz broj – funkcija.
mr. Rašid Hadžović, dipl.inž.građ.
3) DO – CONTINUE petlja
: 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 i nastavlja sa radom sve do naredbe CONTINUE. 3. Naredba CONTINUE prilikom svakog okretanja petlje povećava vrijednost za vrijednost dok ne dođe do zadnje vrijednosti . Poslije toga program dalje nastavlja sa radom. 4. Ako se vrijednost ne napiše onda se uzima da je 1. Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
14
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đ.
5. Ako je vrijednost pozitivna vrijednost se mijenja sve dok ne dođe do vrijednosti pri tom će izvršavati sve naredbe unutar DO – CONTINUE petlje.
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
A
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 veća od vrijednosti onda će se petlja jedan put okrenuti.
SK
7. Ako je vrijednost negativna onda vrijednost mora biti veća od vrijednosti tako da će se svaki put pri oktretanju petlje vrijednost smanjivati za vrijednost .
mr. Rašid Hadžović, dipl.inž.građ.
6. Ako je ispunjen uslov onda će se DO – CONTINUE petlja okrenuti barem jednom.
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
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
15
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đ.
Prikaz na ekranu: I=5 I=4 I=3 I=2 I=1
U primjeru je vrijednost N, a vrijednost M. npr. N=1, M=5.
9. Vrijednost unutar petlje se ne smije ponovo posebno zadavati, jer tada petlja nece uraditi predviđeno. Primjer:
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
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
A
8. Ako su vrijednosti , , 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 -------------------
Prikaz na ekranu:
PUTA RADIO
a da nije bilo reda 50 onda bi prikaz na ekranu bio: 1. 2. 3. 4. 5.
PUTA RADIO PUTA RADIO PUTA RADIO PUTA RADIO PUTA RADIO
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
16
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đ.
10. Vrijednost može da bude zadata i kao promjenljiva i da se koristi u nekoj drugoj svrhi osim u onoj osnovnoj.
RI PT
20 CONTINUE WRITE(6,25)ZBIR 25 FORMAT(1X,’ZBIR BROJEVA:’,I5) STOP END
mr. Rašid Hadžović, dipl.inž.građ.
INTEGER ZBIR ZBIR=0 WRITE(6,10) 10 FORMAT(1X,24(/)) DO 20 I = 1,100 ZBIR=ZBIR + I
A
Primjer:
11. Naredbe GOTO ili IF program mogu da izvedu van granica DO – CONTINUE petlje. MOGUĆE
DO ................... GOTO ili IF ................... CONTINUE
DO.................. .................... .................... CONTINUE GOTO ili IF
SK
NEMOGUĆE
12. U slučaju da imamo više od jedne petlje pravilo rješavanja petlji je iznutra prema vani. MOGUĆE
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
17
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đ.
NEMOGUĆE
RI PT
DO 30 .................... .................... .................... 30 CONTINUE 10 CONTINUE 20 CONTINUE
A
DO 10 DO 20
DO 10 K DO 10 L DO 10 M
10 CONTINUE
14. Po završetku 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,...)]
SK
Primjer:
mr. Rašid Hadžović, dipl.inž.građ.
13. Za više petlji možemo da koristimo samo jedan CONTINUE.
DIMENSION AD(100), MAAS (100),MATRICA(10,10)
Pravila: 1. 2. 3. 4. 5. 6.
Naredba DIMENSION se postavlja na početku programa. (START) U ovoj naredbi možemo definisati jednu ili više serija. U jednom program u naredba se može više puta koristiti. a1, a2, an ili b1, b2, bm dimenzija može biti cijeli ili promjenljivi broj. Ne može se u istom programu 2 puta definisati prostor za istu seriju. U programu se ne mora koristiti ova naredba. Primjer: INTEGER A(10,10),B(100).
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
18
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đ.
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.
A
Postoje dvije vrste potprograma:
1) Otvoreni potprogram: FUNCTION (funkcijski) potprogram 2) Zatvoreni potprogram: CALL SUBROUTINE (opšti) potprogram
RI PT
Radi povratka iz potprograma u glavni program obavezno je korištenje naredbe RETURN.
Pravila: 1) 2)
mr. Rašid Hadžović, dipl.inž.građ.
RETURN: Naredba za povratak iz potprograma u glavni program.
Najmanje jedna naredba RETURN mora biti u potprogramu 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:
FUNCTION (par1(,par2)...) ----------------------------RETURN END
SK
INTEGER REAL DOUBLE PRECISION COMPLEX LOGICAL CHARACTER
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. Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
19
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đ.
Primjer:
RI PT
← S = F(A,B) ↑↓↓ ↑↓↓ FUNCTION F(C,D) Objašnjenje:
mr. Rašid Hadžović, dipl.inž.građ.
A
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.
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.
SK
2) OPŠTI POTPROGRAM
Opšti oblik CALL SUBROUTINE (opšteg) potprograma. SUBROUTINE (par1,(par2),...) --------------RETURN END 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. Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
20
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đ.
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.
RI PT
------CALL PRIMJER (A,B,C,N,...) ------↑↑ ↓ ↓ ------↑↑↓↓ SUBROUTINE PRIMJER (D,E,F,M...) ------------RETURN END
Objašnjenje:
mr. Rašid Hadžović, dipl.inž.građ.
A
Primjer:
SK
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.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
21
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
SK
RIJEŠENI ZADACI
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
A
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
22
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đ.
1) Učitati varijable A i B i odštampati ih u glavnom programu. Rješenje: Dijagram toka
A
START
RI PT
A
A, B
STOP END
Fortran C C C
SK
C
UCITATI VARIJABLE A i B I ODSTAMPATI IH UCITAVANJE VARIJABLI A i B READ(5,10)A,B 10 FORMAT(F8.2) STAMPANJE VARIJABLI A i B WRITE(6,20)A,B 20 FORMAT(10X,//,'VARIJABLA A=',F8.2,/,'VARIJABLA B=',F8.2) ZAUSTAVLJANJE PROGRAMA STOP END
mr. Rašid Hadžović, dipl.inž.građ.
B
Ispis na ekranu
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
23
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đ.
2) Učitati varijable A, B i ZBI, te odrediti S=(A+ZBI)*B i odštampati ih u glavnom programu. Rješenje: START
Dijagram toka
B
RI PT
ZBI
S=(A+ZBI)*B S
STOP END
Fortran C
SK
1
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 FORMAT(F8.2) WRITE(6,*)'UNESITE VARIJABLU B' READ(5,2)B FORMAT(F8.2) WRITE(6,*)'UNESITE ZADNJI BROJ INDEKSA' READ(5,3)ZBI FORMAT(I2) S=(A+ZBI)*B WRITE(6,4)S FORMAT(/,5X,'VRIJEDNOST S=',F10.2) STOP END na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
A
A
INTEGER ZBI
2
3
4
Ispis
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
24
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đ.
3) Učitati dvije varijable i odštampati onu koja je veća u glavnom programu. Rješenje: Dijagram toka
A
B
NE
RI PT
A>B
A
B
STOP END
Fortran C C 10 C 2
SK
20
UCITATI VARIJABLE A i B I ODSTAMPATI VECU UCITAVANJE VARIJABLI A i B WRITE(*,*)'UNESITE VARIJABLE A i B' READ(5,10)A,B FORMAT(F8.2) STAMPANJE VARIJABLI A i B IF(A.GT.B)GOTO 15 WRITE(6,2) FORMAT(10X,///,'VARIJABLA B JE VECA=',F8.2) WRITE(6,20)B FORMAT(10X,///,'VARIJABLA B=',F8.2) GOTO 100 WRITE(6,3) FORMAT(10X,///,'VARIJABLA A JE VECA=',F8.2) WRITE(6,25)A FORMAT(10X,///,'VARIJABLA A=',F8.2) STOP END
mr. Rašid Hadžović, dipl.inž.građ.
DA
A
START
15 3
25 100
Ispis na ekranu
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
25
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đ.
4) Učitati varijable A i B, naći sumu i proizvod istih i odštampati ih u glavnom programu. Rješenje: Dijagram toka
A B
A
START
PROIZVOD=A*B SUMA, PROIZVOD
STOP END
Fortran C
1
SK
2
KALKULACIJA SUME I PROIZVODA DVIJE VARIJABLE REAL C WRITE(*,*)'UNESITE VARIJABLU A' READ(5,1)A FORMAT(F6.2) WRITE(*,*)'UNESITE VARIJABLU B' READ(5,2)B FORMAT(F6.1) C=A+B P=A*B WRITE(6,3)C FORMAT(10X,///,'SUMA=',1X,F7.2) WRITE(6,4)P FORMAT(10X,////,'PROIZVOD=',1X,F10.2) STOP END
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
SUMA=A+B
3
4
Ispis na ekranu
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
26
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đ.
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
A
RI PT
B
A
START
P=A*B
DA
NE
S>P
S
P
STOP END
Fortran C
SK
1
KALKULACIJA SUME I PROIZVODA I STAMPANJE VECE OD NJIH WRITE(*,*)'UNESITE VARIJABLU A' READ(5,1)A FORMAT(F 6.2) WRITE(*,*)'UNESITE VARIJABLU B' READ(5,2)B FORMAT(F 6.1) S=A+B P=A*B IF(S.GT.P)THEN WRITE(*,5) FORMAT(/,'SUMA JE VECA OD PROIZVODA') WRITE(6,3)S FORMAT(/,'SUMA JE',1X,F 7.2) ELSE WRITE(*,6) FORMAT(/,'PROIZVOD JE VECI OD SUME') WRITE(6,4)P FORMAT(/,'PROIZVOD JE',1X,F 10.2) ENDIF STOP END
mr. Rašid Hadžović, dipl.inž.građ.
S=A+B
2
5
3
6
4
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
27
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đ.
A
Ispis na ekranu
6) Učitati varijable A i B, naći količnik istih i odštampati ga u glavnom programu. Rješenje:
RI PT
Dijagram toka
A
B
DA
B=0
C=A/B C
STOP
SK
END
mr. Rašid Hadžović, dipl.inž.građ.
START
Fortran
C
1 5 2
3
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
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
28
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đ.
A
Ispis na ekranu
Rješenje:
−b ± b 2 − 4ac 2a
D= b 2 − 4ac
RI PT
x1,2 =
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
DA
A=0
mr. Rašid Hadžović, dipl.inž.građ.
7) Napraviti program za rješavanje kvadratne jednačine: ax2 + bx + c = 0.
SK
D = B2 − 4 * A * C
IMAM KOMPLEKSNA RJESENJA
D
X1 =
−B 2* A
IMAM DVOSTRUKO RJESENJE, X= STOP
X1 =
−B − D 2* A
X1 =
−B + D 2* A
IMAM DVA RJESENJA X1= , X2=
END
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
29
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đ.
Fortran
30 3 40
4 100
SK
Ispis na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
20 2
A
10 1
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' READ(5,1)A FORMAT(F8.2) IF(A.EQ.0)GOTO 10 D=B**2-4*A*C IF(D)20,30,40 WRITE(6,2) FORMAT(///,2X,'IMAM KOMPLEKSNA RJESENJA') GOTO 100 X1=-B/(2*A) WRITE(6,3)X1 FORMAT(///,2X,'IMAM DVOSTRUKO RJESENJE',/,'X=',F10.2) GOTO 100 X1=-B/(2*A)-SQRT(D)/(2*A) X2=-B/(2*A)+SQRT(D)/(2*A) WRITE(6,4)X1,X2 FORMAT(///,2X,'IMAM DVA RJESENJA',/,'X1=',F10.2,/,'X2=',F10.2) STOP END
RI PT
C
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
30
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đ.
8) Učitati niz od N elemenata i odštampati ga u glavnom programu. Rješenje: Dijagram toka
A
START DIMENSION A (100) UNESITE BROJ ELEMENATA NIZA
RI PT
N
DO 10 I = 1,N
A (I)
10
ELEMENTI NIZA A SU:
DO 20 I = 1,N A (I)
SK
20
STOP
mr. Rašid Hadžović, dipl.inž.građ.
UČITAJTE ELEMENTE NIZA A
END
Fortran C C
C
UCITAVANJE I STAMPANJE NIZA ELEMENATA DIMENSION A(100) UCITAVANJE BROJA ELEMENATA NIZA WRITE(6,*)'UNESITE BROJ ELEMENATA NIZA' READ(5,2)N 2 FORMAT(I4) 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 Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
31
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
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
RI PT
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:
START
Dijagram toka
DIMENSION A(20) DO 10 I=1,20 A(I)
10
SK
P=1
mr. Rašid Hadžović, dipl.inž.građ.
A
C
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
S=0
DO 20 I=1,10 S=S+A (2*I) P=P*A (2*I-1) 20
S,P
STOP
END
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
32
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đ.
Fortran
C
2 C 20 C
SK
Ispis na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
10 1
A
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' UNOSENJE ELEMENATA NIZA A DO 1 I=1,10 READ(5,10)A(I) FORMAT(F8.2) CONTINUE 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) CONTINUE STAMPANJE SUME I PROIZVODA NIZA A WRITE(6,20)S,P FORMAT('SUMA=',F8.2,/,'PROIZVOD=',F14.2) ZAUSTAVLJANJE PROGRAMA STOP END
RI PT
C
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: Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
33
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đ.
UCITATI NIZ OD 10 ELEMENATA, ONDA FORMIRATI DRUGI NIZ B TAKO DA SE SASTOJI SAMO OD RAZLICITIH ELEMENATA NIZA A. ZATIM NACI MIN.I MAX. 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) UCITAVANJE ELEMENATA NIZA A WRITE(*,*)'UNESITE 10 ELEMENATA NIZA A' DO 10 I=1,10 READ(5,1)A(I) FORMAT(F8.2) CONTINUE STAMPANJE ELEMENATA NIZA A WRITE(*,*)'ELEMENTI NIZA A SU:' DO 11 I=1,10 WRITE(6,5)A(I) FORMAT(F8.2) CONTINUE
SK
C C C
mr. Rašid Hadžović, dipl.inž.građ.
Fortran
RI PT
A
Dijagram toka
C
1 10
C
5 11
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
34
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
2 15 6 C
30 C 3
SK
Ispis na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
C
A
20
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 CONTINUE K=K+1 B(K)=A(I) STAMPANJE BROJA ELEMENATA NIZA B WRITE(*,2)B(K) FORMAT(/,'NOVI ELEMENAT NIZA B JE:',F8.2) CONTINUE WRITE(*,6)K FORMAT(/,5X,'BROJ ELEMENATA NIZA B JE:',I3) 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 CONTINUE STAMPANJE MAX. I MIN. ELEMENTA NIZA B WRITE(6,3)PMAX,PMIN FORMAT(//,'MAX.ELEM.=',F8.2,/,'MIN.ELEM.=',F8.2) STOP END
RI PT
C
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
35
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đ.
11) Učitati 20 elemenata niza A, sortirati ih u rastućem redosljedu i odštampati. Rješenje: Dijagram toka START
A
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)
NE
C=A(I)
A(I)=A(J) A(J)=C
SK
15
20
mr. Rašid Hadžović, dipl.inž.građ.
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 riješenih zadataka Programiranje i numeričke metode - FORTRAN
36
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
3 30
SK
Ispis na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
15 20
A
C
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
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
37
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đ.
12) Učitati niz A od 10 elemenata, pa formirati niz B tako da imamo sljedeće: B(1)B(3)B(5)B(7)B(9)
Rješenje: Dijagram toka:
START
DO
10
I=1,10
RI PT
A(10)
A
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 )
mr. Rašid Hadžović, dipl.inž.građ.
10
B(2*I) =A ( I + 5 )
DO
40
50
I=1,10 B(I)
50
STOP END
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
38
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đ.
Fortran
30
2 40
SK
Ispis na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
20
A
1 10
UCITATI NIZ A OD 10 ELEMENATA, PA FORMIRATI NIZ B TAKO DA IMAMO SLJEDECE: B(1)B(3)B(5)B(7)B(9)B[3]B[5]B[7]B[9]
RI PT
C C
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
39
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đ.
13) Učitati matricu A(4×4) i matricu B(4×4), onda naći matricu C kao proizvod matrica A i B.
C i , j = Ai , k ⋅ B k , j Rješenje:
START
A
Dijagram toka:
DIMENSION A(4,4), B(4,4), C(4,4) DO 10 I=1,4
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
mr. Rašid Hadžović, dipl.inž.građ.
A (I)
C(I,J)= C(I,J) + A(I,K)* B(K,J) 40
30
50
C(I,J) STOP
END
Fortran Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
40
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
6 2 20
40 8 7 30
SK
Ispis na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
1 10
A
5
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 FORMAT('A(',I1,',',I1,')') READ(5,1)A(I,J) FORMAT(F8.2,F8.2) CONTINUE WRITE(*,*)'UNESITE ELEMENTE MATRICE B(4×4)' DO 20 I=1,4 DO 20 J=1,4 WRITE(6,6)I,J FORMAT('B(',I1,',',I1,')') READ(5,2)B(I,J) FORMAT(F8.2,F8.2) 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) CONTINUE WRITE(6,8)I,J FORMAT('C(',I1,',',I1,')') WRITE(6,7)C(I,J) FORMAT(F10.2,F10.2) CONTINUE STOP END
RI PT
C
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
41
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đ.
14) Učitati matricu A(4×4) onda naći trag matrice A Rješenje: Dijagram toka:
A
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
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 FORMAT('A(',I1,',',I1,')') READ(5,1)A(I,J) FORMAT(F8.2,F8.2) CONTINUE TRAG=0 DO 20 I=1,4 TRAG=TRAG+A(I,I) CONTINUE WRITE(6,2)TRAG FORMAT('TRAG MATRICE JE:',F10.2) STOP END
SK
C
mr. Rašid Hadžović, dipl.inž.građ.
10
5
1 10
20 2
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
42
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đ.
15) U glavnom programu učitati varijable A i B i pozivom funkcijskog potprograma izračunati sumu tih varijabli. Rješenje:
Dijagram toka:
SK
START
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
A
Ispis na ekranu
P. P.
A
B
SUMA = F(A,B)
SUMA
FUNCTION F(A,B)
F= A+B
RETURN END
STOP END
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
43
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đ.
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
16) U glavnom programu učitati varijablu X, te pomoću funkcijskog potprograma odrediti f(X)=
X2 X2+2 5X
Rješenje:
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
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
A
C
DA
F=X2
DA
F=X2+2
DA
F=5X NE
STOP END
RETURN
END
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
44
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đ.
SK
Ispis na ekranu – prvi način
mr. Rašid Hadžović, dipl.inž.građ.
PROGRAM ZA ODREDJIVANJE FUNKCIJE 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) 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
RI PT
C C C C
A
Prvi način Fortran
Drugi način Fortran (pomoću BLOK IF) 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 riješenih zadataka Programiranje i numeričke metode - FORTRAN
45
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đ.
SK
Ispis na ekranu - drugi način
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
A
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 učitati prvi, pa drugi broj kombinacije, te pozivom funkcijskog potprograma izračunati kombinaciju: K =
I! J ! ( I − J )!
Rješenje: Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
46
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đ.
Dijagram toka: START
P.P
INTEGER A,B,C,FAKTI
INTEGER FUNCTION FAKT (L)
I,J
FAKT = 1
A = FAKT (I)
A
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
PRORACUN KOMBINACIJE K=I!/[J!(I-J)!] INTEGER A,B,C,FAKT I=PRVI BROJ J=DRUGI BROJ 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
mr. Rašid Hadžović, dipl.inž.građ.
END
Ispis na ekranu
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
47
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đ.
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
DO 10
I=1,10
A
P.P.
DIMENSION X(10),Y(10),D(10)
FUNCTION DUŽINA (A,B,C,D)
DUŽINA=SORT((A-C)**2(B-D)**2)
RI PT
X(I) ,Y(I) 10
RETURN END
YA =1,0
DO 20 I = 1,10
D(I)=DUŽINA (X(I),Y(I),XA, YA)
20
DMAX=D(1) DMIN=D(1)
DO 30
I = 1,10
DA
DMAX
DMAX = D(1)
SK
NE
mr. Rašid Hadžović, dipl.inž.građ.
XA =0,5
NE
DMIN>D(1)
DMIN = D (1) 30
DMAX,DMIN
STOP END
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
48
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đ.
Fortran
20
30 2
SK
Ispis na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
1 10
A
3
UCITATI x,y KOORDINATE 10 TACAKA.NAPISATI FUNKCIJSKI POTPROGRAM KOJI CE DA RACUNA RASTOJANJA DATIH TACAKA OD TACKE SA KOORDINATOM Xa=0,5 i Y=1,0. NACI NAJVECU I NAJMANJU DUZINU U 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 FORMAT('TACKA BROJ',I2,' JE: ') READ(5,1)X(I),Y(I) FORMAT(2F8.2) CONTINUE XA=0.5 YA=1.0 DO 20 I=1,10 D(I)=DUZINA(X(I),Y(I),XA,YA) 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 CONTINUE WRITE(6,2)DMAX,DMIN 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
RI PT
C C C C
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
49
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đ.
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: START
A
P.P
DIMENSION A (4,4)
SUBROUTINE RACUN (B,S,M,N,PMAX)
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
CALL RACUN (A,SUMA ,M,N,PMAX)
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
mr. Rašid Hadžović, dipl.inž.građ.
DO 20 I = 1,4
A (I, J)
30
RETURN
END
Fortran
C C C
SUMA ELEMENATA IZNAD GLAVNE DIJAGONALE I MAX. ELEM. MATRICE M= PRVI INDEKS 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 Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
50
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đ.
SK
Ispis na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
A
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
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
51
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đ.
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:
P.P
A
START
SUBROUTINE RACUN (B,S)
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
CALL RACUN (A, SUMA)
SUMA
S= S+B (I,J)
STOP
20
END
RETURN
END
Fortran
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 FORMAT('A(',I1,',',I1,')') READ(5,1)A(I,J) FORMAT(F8.2,F8.2) CONTINUE CALL RACUN(A,SUMA) WRITE(6,2)SUMA FORMAT('SUMA ISPOD GLAVNE DIJ.',F10.2) STOP END SUBROUTINE RACUN(B,S) DIMENSION B(4,4) S=0
SK
C
mr. Rašid Hadžović, dipl.inž.građ.
DO 20 I=1,4
A (I,J)
5
1 10
2
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
52
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đ.
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
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
A
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.
SK
Rješenje: Dijagram toka: START
REAL M,T,Q,L
L
Q
R=Q*L/2
DO 20 K=0,10
DO 10 I=0,10
⎛ I *L ⎞ ⎜ 10 ⎟ I *L ⎠ −Q* ⎝ M = R* 10 2
2
T = R −Q*
I *L 10
T
M 20 10 STOP
R END
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
53
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đ.
Fortran
4 10
20 5
SK
Ispis na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
3
A
2
RI PT
1
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
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
54
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
SK
PROBLEMI ZA VJEŽBU
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
A
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
55
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đ.
PROBLEMI ZA VJEŽBU
Problem 2: Za dati program napisan u FORTRANU napisati izlazne podatke i nacrtati dijagram toka.
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
mr. Rašid Hadžović, dipl.inž.građ.
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
A
Problem 1: Za dati program napisan u FORTRANU napisati izlazne podatke.
10
10
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
56
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đ.
mr. Rašid Hadžović, dipl.inž.građ.
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
A
Problem 3: Za dati program napisan u FORTRANU napisati izlazne podatke i nacrtati dijagram toka.
Problem 4: Za dati program napisan u FORTRANU napisati izlazne podatke i nacrtati dijagram toka.
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
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
57
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đ.
Problem 5: Za dati program napisan u FORTRANU nacrtati dijagram toka. C C C
PROGRAM ZA KORISTENJE FUNKCIJA POMOCU POTPROGRAMA
FUNCTION COS1(X) COS1=COS(X) RETURN END FUNCTION TAN1(X) TAN1=TAN(X) RETURN END
SK
Ispis na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
A
20 10
RI PT
5
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
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
58
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
mr. Rašid Hadžović, dipl.inž.građ.
SK
RI PT
A
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
59
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
mr. Rašid Hadžović, dipl.inž.građ.
SK
RI PT
A
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
C
PRORACUN ARCSINUS-a, ARCKOSINUS-a I ARCTANGENS-a Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
60
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đ.
Problem 6: Za dati program napisan u FORTRANU nacrtati dijagram toka. C C
PRORACUN ARCSINUS-a, ARCKOSINUS-a I ARCTANGENS-a
Ispis na ekranu
mr. Rašid Hadžović, dipl.inž.građ.
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
A
10
SK
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
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
61
Univerzitet «Džemal Bijedić» u Mostaru Građevinski fakultet Programiranje i numeričke metode
LITERATURA:
SK
1. Cezmi Orkun: Fortran 77, Ornas Yayinlari 1994. 2. Philip Crookall: Programiranje za početnike, Tehnička knjiga 1983.
mr. Rašid Hadžović, dipl.inž.građ.
RI PT
A
viši asistent mr. Rašid Hadžović, dipl.inž.građ.
Zbirka riješenih zadataka Programiranje i numeričke metode - FORTRAN
73