You are on page 1of 19

INSTALACIJA FORTRAN EDITORA I COMPILERA

Code::Blocks je besplatan editor za fortran i moze se pronaci na sledecoj adresi:

http://darmar.vgtu.lt/downloads

Pored editora potreban je i fortran compiler, na adresi http://tdm-gcc.tdragon.net/download mogue je


pronai Gfortran comipler, prilikom instalacije potreno je odrati Full Install ili ukljuiti Fortran Compiler
kod izbora komponenti.

Ispod je direktan Link za download Fortran Compiler-a za Windows OS:

http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.8.1 3.exe/download

Kreiranje novog projekta upotrebom Code::Blocks IDE-a:


Odabrati: File -> New -> Project iz glavnog menija.
Zatim u Category, odabrati Fortran u listi ispod odabrati Fortran application.

U narednom koraku unijeti ime projekta kao na slici ispod (npr. Test).

U zadnjem koraku odabrati fortran compiler, npr. GNU Fortran Compiler ili G95 fortran compiler. Nakon
potvrde bie kreiran novi projekat koji sadri fajl main.f90 sa defaultnim Hello World prgramom.
PRIMJER 1.

! Prvi program

Program Pozdrav ! Naredba program

Character *20 Ime_Prezime ! Deklaracija

Print*,'Unesite Vase Ime i Prezime' ! Unos vrijednosti

Read*, Ime_Prezime ! Ucitavanje

Print*,' Dobro dosli ',Ime_Prezime,' Na vjezbe programiranja u fortranu' ! Ispis rezultata

End Program Pozdrav ! Kraj programa


PRIMJER 2.

Napisati program za izracunavanje povrsine trougla primjenom Heronovog obrasca ako su poznate
stranice trougla.

a=3; b=4; c=5. Rezultat je 6.


PRIMJER 3.

Napisati program koji uitava dvije take sa koordinatama A(x1;y1) i B(x2;y2), a zatim izraunava

rastojanje izmeu tih taaka prema obrascu d= ( x 2x 1)2 +( y 2 y 1)2 .

Program tri

! Ovaj program racuna udaljenost izmedu tacaka A i B


! Deklaracija varijabli
implicit none
REAL X1,X2,Y1,Y2,d
! Unos nepoznatih ili ulaznih poznatih vrijednosti
Print*,'Unesite X i Y vrijednosti za Prvu tacku'
Read*, X1,Y1
Print*,'Unesite X i Y vrijednosti za Drugu tacku'
Read*, X2,Y2
! Izracunavanje nepoznate
d=SQRT((X2-X1)**2+(Y2-Y1)**2)
! Ispis rezultata
Print*,'Rastojanje izmedu tacaka A i B iznosi d=',d
Stop
End Program tri

PRIMJER 4.
Napisati program za izraunavanje duzine stranice c i ugla alfa kod vrha C ako je poznata povrina P i
duzina stranice b trougla ABC.

Rjeenje:

Program cetiri
Implicit none
! Dekleracija varijabli
Real:: P,a,c,b,alfa,ugradp,PI
PARAMETER (PI=3.14159265)
! Unos poznatih velicina
Print*,'Unesite vrijednost povrsine trougla P u mm2'
Read*, P
Print*,'Unesite vrijednost duzine stranice b u mm'
Read*, b
! Izracunavanje nepoznate duzine stranice c
c=(2*P)/b
alfa=atan(c/b)
ugradp=(alfa*180)/PI
! Ispis vrijednosti
Print*,'Duzina stranice c u mm iznosi c=',c
Print*,'Vrijednost ugla alfa je=',alfa
Print*,'Vrijednost ugla kod vrha C u stepenima je=',ugradp
! Provjera
! Za stranice b=4 i c=20 mm povrsina trougla racuna se kao
P=(c*b)/2
Print*,'Povrsina trougla sa stranicama b i c koristenih za provjeru iznosi P=',P
a=sqrt(b**2+c**2)
Print*,'Duzina stranice a trougla ABC je a=',a
Stop
End Program cetiri

Ulaz P = 40; b=4; Rezultat c=20; alfarad=1.373401; alfastepeni=78.69007; stranica


a=20.39608.
PRIMJER 5.

Napisati program koji izraunava prosjenu ocjenu za osam predmeta.

Rjeenje:
Program pet
Implicit none
! Dekleracija varijabli
Real:: P1,P2,P3,P4,P5,P6,P7,P8,SUM,SRVR
Integer:: ponunos
Integer:: P=8
10 continue
! Unos poznatih velicina
Print*,'Unesite vrijednost ocjena od 5 do 10 za osam predmeta'
Read*, P1,P2,P3,P4,P5,P6,P7,P8
! Operacije sa elementima
! Inicijalizacija pocetne vrijednosti
SUM=0.0
! Nalazenje sume i srednje vrijednsoti
SUM=SUM+P1+P2+P3+P4+P5+P6+P7+P8
SRVR=SUM/P
! Ispis rezultata
Print*,'Zbir unesenih ocjena je=',SUM
Print*,'Prosjecna ocjena za osam predmeta je=',SRVR
Print*,'Za ponovni unos unesi ,1=da, bilo koji drugi broj =ne'
Read*,ponunos
if(ponunos.eq.1) then
go to 10
end if
Stop
End Program pet

PRIMJER. 5: NA DRUGI NACIN SA DO PETLJOM

Program pet
Implicit none
! Dekleracija varijabli
Real:: S
Real:: SRVR
Real:: A
Integer:: i
Integer:: ponunos
Integer:: P=8
dimension :: A(8)
10 continue
! Unos poznatih velicina
Print*,'Unesite vrijednost ocjena od 5 do 10 za osam predmeta'
! unosenje elemenata niza A
do i=1,8
read*, A(i)
end do
! Operacije sa elementima
! Inicijalizacija pocetne vrijednosti
S=0.0
! Nalazenje sume i srednje vrijednsoti
do i=1,8
S=S+A(i)
end do
SRVR=S/P
! Ispis rezultata
Print*,'Zbir unesenih ocjena je=',S
Print*,'Prosjecna ocjena za osam predmeta je=',SRVR
Print*,'Za ponovni unos unesi ,1=da, bilo koji drugi broj =ne'
Read*,ponunos
if(ponunos.eq.1) then
go to 10
end if
Stop
End Program pet

VJEBE III

PRIMJER 1.

Napisati program koji za vrijednosti duzine predjenog puta, vremena za koje je taj put predjen i ukupno
potrosenog goriva racuna i stampa prosjecnu brzinu automobila i prosjecnu potrosnju goriva?

RJEENJE:

! PROGRAM ZA RACUNANJE PROSJECNE POTROSNJE GORIVA


! DEKLERACIJA VARIJABLI
Real:: Brzina,Vrijeme,Duzinaputa,Ukpotr,Prpotr
! UCITAVANJE PODATAKA
print*,' Unesite predjeno rastojanje u (km)'
read*,Duzinaputa
print*,' Unesite vrijeme trajanja voznje u (h)'
read*, Vrijeme
print*,' Unesite kolicinu ukupno potrosenog goriva u (l)'
read*, Ukpotr
! RACUNANJE I ISPISIVANJE REZULTATA
Brzina=Duzinaputa/Vrijeme
Prpotr=100*Ukpotr/Duzinaputa
print*,' Prosjecna brzina je:',Brzina,' (km/h)'
print*,' Prosjecna potrosnja goriva je:',Prpotr,' (l/100km)'
stop
end

PRIMJER 2.

Napisati program za izraunavanje ukupne i neto zarade radnika ako je zadana cijena po jednom satu i
ukupan broj sati rada. Na dio zarade koji prelazi 1050 km, placa se 10% poreza na dohodak.

RJEENJE:

! PROGRAM RACUNA UKUPNU I NETO ZARADU NEKOG RADNIKA AKO JE ZADANO


! CIJENA PO JEDNOM SATU RADA I UKUPAN BROJ SATI NA DIO ZARADE KOJI PRELAZI
! 1050 KM PLACA SE 10% POREZ NA DOHODAK

! DEKLARACIJA VARIJABLI

REAL:: NETZAR,UKZAR,BRSATI,ZARSAT,GRZAR,POREZ,ODBICI
PARAMETER (GRZAR=1050.0, POREZ=10.0)

! UCITAVANJE PODATAKA
PRINT*,' UKUPAN BROJ SATI:'
READ*,BRSATI
PRINT*,' ZARADA PO SATU:'
READ*,ZARSAT

! RACUNANJE REZULTATA
UKZAR=BRSATI*ZARSAT
IF (UKZAR.LT.1050.0) GOTO 30 ! IF uslov - grananje toka programa po ispunjenju uslova
ODBICI=UKZAR*POREZ/100
NETZAR=UKZAR-ODBICI

! STAMPANJE REZULTATA
30 PRINT*,'UKUPNA ZARADA:',UKZAR
PRINT*,'ZA ISPLATU:',NETZAR
STOP
END

Drugi nain

PRIMJER 3.

DO Petlja.

! Demonstracija do petlje
Integer:: brojac,poc,kraj,korak
Parameter (poc=1,kraj=10,korak=1)
N=0
do 10 brojac=poc,kraj,korak
N=N+1
10 continue
print 20, N
20 format (5x,'petlja izvrsena',I3,'puta')
stop
end

PRIMJER 3.1: Demonstracija rada do petlje - konkretnije


Napisati program koji pretvara temperaturu izracunatu u stepenima Farenhajta (Qf) u stepene

* T f 32
5
Tc
9
celizijuse (Tc) koristei obrazac. .
Za temperature od 30 do 60 F, sa korakom 2F.

Rjeenje:
PRVI SLUCAJ IF USLOV
! pretvaranje temperature u stepenima fahrenhajta
! u stepene celizijusa po zadatom obrascu
! TCELZ=(5.0/9.0)*(TFRNHT-32.0)
! stampanje odgovarajuce tabele
! dekleracija promjenjljivih i definisanje konstanti
real:: TCELZ,TFRNHT,TFPOC,TFKRAJ,TKORAK
parameter (TFPOC=30.,TFKRAJ=60.,TKORAK=2.)
! stampanje zaglavlja tabele
print 10
10 format(4x,'t(F) t(C)'/4x,'------+------+')
TFRNHT=TFPOC
! pretvaranje temperature u stepene celizijusa i stampanje
20 TCELZ=(5.0/9.0)*(TFRNHT-32.0)
print 30,INT(TFRNHT),TCELZ
30 format(5x,I3,F8.2)
TFRNHT=TFRNHT+TKORAK
if(TFRNHT.LE.TFKRAJ) go to 20
stop
end

Izlaz na ekran

DRUGI SLUCAJ SA DO PETLJOM

! Pretvaranje temperature sa do petljom


! deklaracija varijabli
real:: TCELZ,TFRNHT,TFPOC,TFKRAJ,TFKORAK
parameter (TFPOC=30.,TFKRAJ=60.,TFKORAK=2)
print 10
10 format (4x,'t(F) t(C)'/4x,'-----+-----+')
do 1 TFRNHT=TFPOC,TFKRAJ,TFKORAK
TCELZ=(5.0/9.0)*(TFRNHT-32.0)
print 20, INT (TFRNHT),TCELZ
1 continue
20 format (5x,I3,F8.2)
stop
end

PRIMJER 4. UVOD U OPERACIJE SA NIZOVIMA BROJEVA


Napisati program za uitavanje niza A od 8 elemenata, nai sumu lanova niza A.
Sumu niza A odtampati u glavnom programu.
Rjeenje:
! suma elemenata niza A
dimension A(8)
print*,'program za sabiranje elemenata miza A'
print*,'Unesite 8 elemenata niza A'
! unosenje elemenata niza A
do 1 I=1,8
read*,A(I)
1 continue
! Operacija sa elementima niza A
S=0
do 2 I=1,8
S=S+A(I)
2 continue
! stampanje sume elemenata niza A
print*,'Suma je=',S
! zaustavljanje programa
stop
end
PRIMJER 5.
Napisati program za uitavanje niza B od 6 elemenata, nai proizvod lanova niza B.
Proizvod niza B odtampati u glavnom programu.
Rjeenje:
! Proizvod elemenata niza B
dimension B(6)
print*,'Program za izracunavanje proizvoda elemenata niza B'
print*,'Unesite 6 elemanata niza B'
! Unosenje elemenata niza B
do 1 I=1,6
read*,B(I)
1 continue
! Operacija sa elementima niza B
P=1
do 2 I=1,6
P=P*B(I)
2 continue
! Stampanje proizvoda niza B
print*,'proizvod je=',P
! zaustavljanje programa
stop
end
PRIMJER 6.
Uitati niz A od 10 elemenata, nai proizvod i sumu niza.
Proizvod i sumu niza A odtampati u glavnom programu.

Rjeenje:
! Proizvod i suma elemenata niza A
dimension A(10)
print*,'Program za izracunavanje proizvoda i sume elemenata niza A'
print*,'Unesite 10 elemanata niza A'
! Unosenje elemenata niza A
do 1 I=1,10
read*,A(I)
1 continue
! Operacije sa elementima niza A
P=1
S=0
do 2 I=1,10
S=S+A(I)
P=P*A(I)
2 continue
! Stampanje proizvoda i sume niza A
print*,'proizvod je=',P,'Suma je=',S
! zaustavljanje programa
stop
end
PRIMJER 7.
Uitati niz A od 20 elemenata, sortirati ih u rastucem redoslijedu te odstampati u glavnom programu.

Rjeenje:
! niz od 20 elemenata u rastujucem redoslijedu
dimension A(20)
print*,'program za sortiranje ele. niza A u rastujucem redoslijedu'
print*,'unesite 20 elemenata niza A'
do 10 i=1,20
read*,A(i)
10 continue
! sortiranje elemenata
do 20 i=1,19
do 15 j=i+1,20
if(A(i).lt.A(j)) go to 15
c=A(i)
A(i)=A(j)
A(j)=c
15 continue
20 continue
print*,'Sortirani elementi niza A su:'
do 30 j=1,20
print*,A(j)
30 continue
stop
end
PRIMJER 8.
Napisati program koji nalazi: najveu, najmanju i prosjenu vrijednost (artimetiku sredinu )
N brojeva, gdje je N prvi podatak koji se uitava.

Rjeenje:
! Program ucitava N cijelih brojeva i nalazi
! najvecu,najmanju i prosjecnu vrijednost
! Deklaracija promjenjljivih
INTEGER::N,I
REAL::MINIM,MAXIM,SUMA,PROSVR,BROJ
! Ucitavanje broja N
print*,'Koliko ima ukupno brojeva (N>o):'
read*,N
! Ucitavanje prvog broja
print*,' Unesite prvi broj:'
read*,BROJ
MINIM=BROJ
MAXIM=BROJ
SUMA=BROJ
! Ucitavanje ostalih brojeva
do 10 I=2,N (ako umjesto broja 2 stavimo broj 1 u DO petlji vidjeti izlaz!!!)
print*,'I ostali brojevi:'
read*,BROJ
SUMA=SUMA+BROJ
IF (BROJ.LT.MINIM)THEN
MINIM=BROJ
ELSE IF (BROJ.GT.MAXIM)THEN
MAXIM=BROJ
END IF
10 continue
! Racunanje prosjecne vrijednosti i stampanje rezultata
PROSVR=SUMA/N
print*,'Minimalna vrijednost je :',MINIM
print*,'Maximalna vrijednost je :',MAXIM
print*,'Prosjecna vrijednost je :',PROSVR
STOP
END

PRIMJER 9.
Napisati program koji rauna najvei zajedniki djelilac dva prirodna broja: Najvei zajedniki djelilac
(NZD) dva pozitivna cijela boja I i J je najvei cijeli broj N kojim su djeljivi brojevi I i J bez ostatka.

Rjeenje:
! Progrm nalazi najveci zajednicki djelilac
! dva zadana prirodna broja
! Deklaracija promjenjljivih
INTEGER::I,J,N,R,POM
! Ucitavanje podataka
print*,'Unesite dva cijela prirodna broja:'
read*,I,J
! Racunanje najveceg zajednickog djelilca NZD
print*,'NZD brojeva ',I,' i',J,' je:'
IF (I.NE.MIN(I,J)) THEN
POM=I
I=J
J=POM
END IF
R=MOD(I,J)
DO WHILE (R.NE.0)
I=J
J=R
R=MOD(I,J)
END DO
print*,J
STOP
END

PRIMJER 10.
Uitati niz od 10 elemenata i nai sumu lanova na parnim i proizvod elemenata na neparnim
mjestima. Sumu i proizvod odtampati u glavnom programu.

Rjeenje:
! Suma parnih i proizvod neparnih elemenata niza A
dimension A(10)
print*, 'Program za sabiranje parnih i mnoenje neparnih elemenata niza A'
print*, 'Unesite 10 elemenata niza A'
! unosenje elemenata niza A
do 1 I=1,10
read*, A(I)
1 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)
2 continue
! stampanje sume i proizvoda niza A
print*, 'Suma je= ' ,S, 'Proizvod je= ' ,P
! zaustavljanje programa
stop
end

PRIMJERI - IF USLOVI
PRIMJER 11. Za pokazivanje rada IF THEN I ELSE

Napisati program u fortranu koji za unesene vrijednosti temperature koje su zadate u intervalu od:
0 do 300C ispisuje sljedee: T < 0 - smrzavanje; T < 10 hladno; T < 20 umjereno;T < 30
toplo;T>30-vrlo toplo.
Rjeenje:
! program za pokazivanje if then i else if uslova
10 print*,'unesi temperaturu u C'
read*,C
IF(C.le.0) then
print*,'smrzavanje'
else
IF(C.le.10) then
print*,'hladno'
else
IF(C.le.20) then
print*,'umjereno'
else
IF(C.le.30) then
print*,'toplo'
else
print*,'vrlo toplo'
end if
end if
end if
end if
print*,'zeliteli ponoviti unos unesite odg broj?'
print*,' Da unesite 1'
print*,' Ne unesite 0'
read(*,*) ponovo
if (ponovo.eq.1) go to 10
stop
end

IF THEN ELSE IF USLOV ZA ISTI PRIMJER


! program za pokazivanje if then i else if uslova
10 print*,'unesi temperaturu u C'
read*,C
IF(C.le.0) then
print*,'smrzavanje'
else if(C.le.10) then
print*,'hladno'
else if(C.le.20) then
print*,'umjreno'
else if(C.le.30) then
print*,'toplo'
else
print*,'vrlo toplo'
end if
print*,'zeliteli ponoviti unos unesite odg broj?'
print*,' Da unesite 1'
print*,' Ne unesite 0'
read(*,*) ponovo
if (ponovo.eq.1) go to 10
stop
end

You might also like