Professional Documents
Culture Documents
Uvod 2015
Uvod 2015
http://darmar.vgtu.lt/downloads
http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.8.1 3.exe/download
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
Napisati program za izracunavanje povrsine trougla primjenom Heronovog obrasca ako su poznate
stranice trougla.
Napisati program koji uitava dvije take sa koordinatama A(x1;y1) i B(x2;y2), a zatim izraunava
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
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
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:
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:
! 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
* 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
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