Академический Документы
Профессиональный Документы
Культура Документы
2016/2017 godine
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.
Program trougao
! Bez deklarisanja varijabli
Print*,'Unesite duzine stranica trougla a,b,c'
Read*,a,b,c
S=(a+b+c)/2.
P=SQRT(S*(S-a)*(S-b)*(S-c))
Print*,'Povrsina trougla je P=',P
End Program trougao
Napisati program koji uitava dvije take sa koordinatama A(x1;y1) i B(x2;y2), a zatim izraunava
rastojanje izmeu tih taaka prema obrascu .
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
Napisati program koji izraunava prosjenu ocjenu za osam predmeta bez koristenja petlji.
PRIMJER 6:
Programprimjer6
Implicit none
Real, Parameter:: PI = 3.1415927
Real:: Rv, Rk, V, h, Vk, Vv, Hv, theta, S
Print*, Unesi parametre r, R i V:
Read*, Rv, Rk, V
theta = asin(Rv / Rk)
h = Rk * (1.0 - cos(theta))
Vk = PI*(h**2)*(3*Rk - h)/3.0
Hv = (V - Vk) / (PI * Rv ** 2)
S = (2 * PI * Rv * Hv) + 2 * PI * Rk * h
Print*, Visina valjka H =, Hv
Print*, Povrina silosa S =, S
End Program primjer6
PRIMJER 7. Napisati program za raunanje broja e (osnova prirodnog logaritma) prema zadatoj
formuli;
! Deklaracija promjenjljivih
Integer::Nmax,n,i
Parameter (Nmax=20)
doubleprecision E,F
!Raunanje vrijednosti brojaE
E=1.0
do 20 n=1,Nmax
F=1.0
do 10 i=1,n
F=F*i
10 continue
E=E+1.0/F
Print'(I4,3x,F20.16)',n,E
20 continue
Stop
End
PRIMJER 8.
Napisati program za izraunavanje broja PI koristei datu formulu dok se ne dostigne lan 99.
Rjeenje:
PRIMJER 9:
Rjeenje:
! RAUNANJE VRIJEDNOSTI N
! Deklaracija varijabli
Integer::N,NMAX
PARAMETER (NMAX=100)
! Stampanje zaglavlja tabele
PRINT 10
10 FORMAT (/'n n**2 n**3 SQRT(n) n**(1/3)')
! Racunanje i stampanje tabele
do 20 N=1,NMAX
PRINT 30, N, N**2, N**3, SQRT(REAL(N)), N**(1./3.)
20 continue
30 FORMAT (1x,I3,I8,I9,2F9.4)
Stop
End
PRIMJER 10.
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 11.
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 ! IFuslov - 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
! 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
print20, N
20 format (5x,'petlja izvrsena',I3,'puta')
stop
end
PRIMJER 13 - Demonstracija rada do petlje i IF - uslova
Napisati program koji pretvara temperaturu izracunatu u stepenima Farenhajta (Qf) u stepene
* T f 32
5
Tc
celizijuse (Tc) koristei obrazac. 9 . 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 UPOTREBA DO PETLJE
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 17.
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
! niz od n elemenata u rastujucem redoslijedu
dimension A(100) ! Niz do maksimalno 100 elemenata
print*,'program za sortiranje ele. niza A u rastujucem redoslijedu'
print*,'unos elemenata niza A'
print*,'unesite koliko ima elemenata niza A'
read*,n
print*,'unos n elemenata niza A'
do 10 i=1,n
read*,A(i)
10 continue
! sortiranje elemenata
do 20 i=1,n-1
do 15 j=i+1,n
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,n
print*,A(j)
30 continue
stop
end
PRIMJER 18.
Uitati niz A od 20 elemenata, sortirati ih u opadajucem redoslijedu te odstampati u glavnom
programu.
PRIMJER 19.
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 20.
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 21.
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
Napisati program za uitavanje dva niza A i B proizvoljnih dimenzija, izvriti sabiranje prvih elemenata
nizova te sabiranje zadnjih elemenata nizova. Nakon sabiranja pojedinih elemenata nizova ispisati
vreu vrijednost dobivenog zbira elemenata.
PROGRAM dva_niza
dimension A(100), B(100)
Integer i,Na,Nb,C,D,A,B
Print*,'OVO JE PROGRAM KOJI VRSI OPERACIJE SA DVA NIZA'
10 continue
Print*,'Unesite koliko ima clanova niz A manje od 100'
Read*,Na
Print*,'Unesite broj elemenata nitza a koje ste odabrali'
do 1 i =1,Na
Read*,A(i)
1 continue
Print*,'Unesite koliko ima clanova niz B manje od 100'
Read*,Nb
Print*,'Unesite broj elemenata nitza a koje ste odabrali'
do 2 i =1,Nb
Read*,B(i)
2 continue
! Operacije sa elementima nizova
C=A(1)+B(1)
D=A(Na)+ B(Nb)
if(C.gt.D)then
Print*,'Vrijednost C veca je od D i iznosi C=',C
else if (C.eq.D) then
Print*,'Vrijednosti ci de su jednake i vrijednost C je =',C,' a vrijednost D je=',D
else if (c.lt.D) then
Print*,'Vrijednost D je veca od C i iznosi D je =',D
end if
Print*,'Zelite li ponoviti unos unesite 1 bilo koji drugi broj za Ne'
Read*,ponovounos
if (ponovounos.eq.1) goto 10
Stop
End PROGRAM dva_niza
PRIMJER 23.
Napisati program koji odreuje relativni poloaj take kada su poznate koordinate take, teita i
radijus kruga.
Program polozaj_tacke
Implicit none
Real::x,y,Xc,Yc,R,D,U
Print*,'Ovaj program odredjuje polozaj tacke'
10 continue
Print*,'Unesite koordinate x i y za tacku'
read*,x,y
Print*,'Unesite koordinate Xc i Yc i radijus R'
read*,Xc,Yc,R
D=sqrt((x - Xc)**2+(y-Yc)**2)
Print*,' Distanca je =',D
if (D.lt.R) then
Print*,'Tacka je unutar kruga'
else if (D.eq.R) then
print*,'Tacka je na konturi'
else
Print*,'Tacka je izvan kruga'
end if
Print*,'Zelite li ponoviti unos unesite broj 1 a bilo koji drugi broj za Ne'
Read*,U
if(U.eq.1) goto 10
Stop
End Program polozaj_tacke
PRIMJER 24.
Napisati program u fortranu koji za unesene vrijednosti temperature koje su zadate u intervalu od: 0 do 30 0C
ispisuje sljedee: T < 0 - smrzavanje; T < 10 hladno; T < 20 umjereno;T < 30 toplo; T>30-vrlotoplo.
Rjeenje I:
stop
! program za pokazivanje if then i else if uslova end
10 print*,'unesi temperaturu u C'
read*,C
IF(C.le.0) then
print*,'smrzavanje'
else Rjeenje II:
IF(C.le.10) then ! program za pokazivanje if then i else if uslova
print*,'hladno' 10 print*,'unesi temperaturu u C'
else read*,C
IF(C.le.20) then IF(C.le.0) then
print*,'umjereno' print*,'smrzavanje'
else else if(C.le.10) then
IF(C.le.30) then print*,'hladno'
print*,'toplo' else if(C.le.20) then
else print*,'umjreno'
print*,'vrlo toplo' else if(C.le.30) then
end if print*,'toplo'
end if else
end if print*,'vrlo toplo'
end if end if
print*,'zeliteli ponoviti unos unesite odg broj?' print*,'zeliteli ponoviti unos unesite odg broj?'
print*,' Da unesite 1' print*,' Da unesite 1'
print*,' Ne unesite 0' print*,' Ne unesite 0'
read(*,*) ponovo read(*,*) ponovo
if (ponovo.eq.1) go to 10 if (ponovo.eq.1) go to 10
stop
end
PRIMJER 25.
Sa tastature unjeti niz od 15 elemenata. Formirati novi niz y prema obrascu
1 xi 2 ln xi akoje xi 5
yi 1
1 x i x akoje xi 5
i
Zatim izracunati svih elemenata koji su razlichiti od 0.
Program primjer25
Implicit none
Real::x(5),y(5),proizvodx,ProizvodY,ProizvodXY
Integer::i
print*,'unesi clanove x'
Do i=1,5
Read(*,*)x(i)
If(x(i).ge.5.)then
Y(i)=((1+x(i))**2)*ln(x(i))
Print*,'x',i,'=',x(i)
Print*,'y',i,'=',y(i)
Else if(x(i).lt.5.)then
Y(i)=(2*x(i))
Print*,'x',i,'=',x(i)
Print*,'y',i,'=',y(i)
End if
End do
Proizvodx=1
Do i=1,5
If(X(i).ne.0)then
Proizvodx=Proizvodx*X(i)
end if
end do
ProizvodY=1
Do i=1,5
If(Y(i).ne.0)then
ProizvodY=ProizvodY*Y(i)
end if
end do
ProizvodXY=ProizvodY*ProizvodX
print*,'proizvod clanova X je',Proizvodx
print*,'proizvod clanova Y je',ProizvodY
print*,'proizvod clanova X I Y je',ProizvodXY
end program primjer25
PROGRAM 26.
Ujednodimenzionalnomnizuod 10
clanovaodreditirednibrojclanakojijenajvecipoapsolutnojvrijednostiirednibrojclanakojijedrugipoapsolutn
ojvrijednosti. Akoimavisejednakih, usvojitionajcijijerednibrojmanji.
Program niz
implicit none
real s,v,a(10)
integer i
do i=1,10
print*,Unesite ',i,'. clan niza'
read*,a(i)
end do
v=0
do i=1,10
if (v<abs(a(i))) then
v=a(i)
s=i
end if
end do
print*,'najveci broj po apsolutnoj vrijednosti je',v,'redni broj je',s
end program niz
PRIJMJER 27. DO WHILE PETLJA I USLOVI
Napisati program koji uitava N cijelih brojeva i pronalazi i ispisuje indeks (redni broj) prve i zadnje
pojave broja 5. Program treba stampati vrijednost (0) ako broj 5 nije pronaen.
! KORISTENE OZNAKE
! TRAZI - Broj koji se trazi
! PRVI - Indeks prvog pojavljivanja broja TRAZI
! ZADNJE - Indeks zadnjeg pojavljivanja broja TRAZI
! N - Ukupan broj ucitavanih brojeva
! BROJ - Broj koji se trenutno ucitava
! i - Redni broj ucitavanog broja
! Deklaracija Varijabli
INTEGER:: TRAZI,PRVI,ZADNJI,N,BROJ,i
PARAMETER (TRAZI=5)
! Ucitavanje broja N - Dosada naucen metod
Print*,'Unesite koliko ima ukupno brojeva'
Read*,N
! Inicijalizacija pocetnih vrijednosti broja PRVI i ZADNJI
PRVI=0
ZADNJI=0
! Ucitavanje N odabranih brojeva i nalazenje broja (5) - TRAZI
do 10 i=1,N
Print*,'Unesite ',i,' - i broj'
Read*,BROJ
IF (BROJ.EQ.TRAZI) then
ZADNJI=i
IF (PRVI.EQ.0) PRVI=i
End if
10 Continue
! Ispis rezultata
Print*,'Indeks prvog pojavljivanja broja',TRAZI,' je',PRVI
Print*,'Indeks zadnjeg pojavljivanja broja ',TRAZI,' je',ZADNJI
Stop
End
PRIMJER 29.
Napisati program za odreivanje reakcija oslonaca, vrijednosti maksimalnog momenta i dimenzija okruglog
poprenog presjeka grednog nosaa optereenog prema slici. Vrijednosti sila F1 i F2, rastojanja (L, l 1 i l2) i
karakteristika materijala unose se sa tastature.
Rjeenje:
Program prosta_greda
! Program racuna staticke velicine proste grede
! I dimenzionise gredu okruglog Primjer - Podatke sa terminala mogue je prenijeti u
! Konstantnog poprecnog presjeka program Ms Excel te predstaviti graficki kao na slici.
! Eksplicitno deklarisanje varijabli
Implicit none
Real::l1,l2,L,F1,F2,Ra,Rb,M1,M2,Mmax,SigmaDoz,d;
10 continue
Print*,'Unesite vrijednosti rastojanja L,l1,l2, u (mm)'
Read*,L,l1,l2
if(l1+l2.ge.L) then
Print*,'Pogresan unos podataka'; go to 10
end if
! Unos vrijednosti za sile F1 i F2
Print*,'Unesite vrijednosti sila F1 i F2, u (kN)'
Read*,F1,F2
! Unos dozvoljenog naprezanja SigmaDoz, u (kN/mm2)
Read*,SigmaDoz
! Izracunavanje reakcija u osloncima Ra i Rb,SumaMa=0
Rb=(F1*l1+F2*(L-l2))/L
Ra=F1+F2-Rb
Print*,'Reakcije oslonaca iznose Ra=',Ra,'Rb=',Rb
! Momenti savijanja u tackama 1 i 2
! Mmax=maksimalni moment savijanja
M1=Ra*l1
M2=Rb*l2 Slika. Grafiki prikaz momenta savijanja i prenika grede
Mmax=M1
if(M2.gt.Mmax) Mmax=M2;
Print*,'Maksimalni moment je=',Mmax
! Dimenzionisanje precnika grede
d=(32*Mmax/(3.14159*SigmaDoz))**0.33333
Print*,'Potrebni precnik grede iznosi',d,'(mm)'
stop
end program prosta_greda
PRIMJER 30. Podprogram - Function
! PRIMJERFRUNKCIJSKIPODPROGRAM
Print*, 'Programzasabiranjedvijevarijabepomocufunkcijskogpotprograma'
Print*, 'Unesitevarijablua'
Read*,a
Print*, 'Unesite varijablu b'
Read*,b
suma=f(a,b)
Print*, 'Suma varijabli a i b je =',suma
Stop
End
! Sabiranje
Function f(a,b)
f=a+b
Return
End
PRIMJER 31.
Napisati program koji za date vrijednosti a i b racuna vrijednost c prema slijedecem uslovu;
2a 3b
ako je a 2b 3
ab
c 3b 3 ako je a 2b 3
8a
ako je a 2b 3
b
PRIMJER 33.
Rezervoar vodotornja ima oblik prikazan na crteu (donji dio je nalazi se plovak koji pokazuje nivo vode. Napisati program koji
valjak, gornji dio je obrnuta zaobljena kupa). Unutar rezervoara izrauva koliinu vode u zavisnosti od polozaja (visine h) plovka.
Ulazni argumenti su vrijednost visine h, a rezultat koliina vode u ! **********************************************************************
m3. U programu postaviti da visine nesmiju prelaziti granine !Program za odredjivanje funkcije
vrijednosti visina datih na crteu (ograniiti kao ne dozvoljen !Zapremine vodotornja
Print*,'Unesite visinu nivoa vode h u (m).'
unos).
Read*,h
v=f(h,rh)
Print*,'Zapremina vode u vodotornju je V= ',v,' m3'
Stop
End
! Podprogram
function f(h,rh)
if (h.le.19) then
f=3.14159*12.5**2*h
Print*,'Posto je h<=19 vrijednost zapremine je v=Pi*(12.5)2 *h'
Else if (h.gt.19.and. h.le.33) then
rh=12.5+10.5*(h-19)/14
Za 0h19 m, koliina vode je odreena valjkom visine h : f=3.14159*12.5**2*19+3.14159*
v= 12.52 h *(h-19)*(12.5**2+12.5*rh+rh**2)/3
Print*,'Posto je h>19 i h=<33 m vrijednost funkcije je zapremina drugi slucaj'
Za 19h33 m, koliina vode se izraunava kao zbir zapremine End if
valjka visine 19 m i koliine vode u kupi: Return
End
! **********************************************************************
! **********************************************************************
!Program za odredjivanje funkcije i
!Zapremine vode vodotornja prikazanog na slici
Print*,'Unesite visinu nivoa vode h u (m).'
Read*,h
v=f(h,rh)
Print*,'Zapremina vode u vodotornju je V= ',v,' m3'
Stop
End
! Podprogram
function f(h,rh)
if (h.lt.19) then
f=3.14159*12.5**2*h
Print*,'Posto je h<=19 vrijednost zapremine je v=Pi*12.5**2*h'
Else if (h.gt.19) then
rh=12.5+10.5*(h-19)/14
f=3.14159*12.5**2*19+3.14159*
*(h-19)*(12.5**2+12.5*rh+rh**2)/3
Print*,'Posto je h>=19 i h=<33 m vrijednost funkcije je zapremina drugi slucaj'
End if
Return
End
!
*************************************************************************
PRIMJER 34.
Koeficijent trenja moe se odrediti pomou eksperimenta u kojem se mjeri sila potrebna za
pomjeranje mase m. Kada se izmjeri sila, uz poznatu masu, koeficijent trenja se dobiva na osnovu
formule:
U slijedeoj tabeli dati su rezultati mjerenja F za est eksperimenata. Odrediti koeficijent trenja za
svaki eksperiment i njegovu prosjenu vrijednost koristei podprogram trenje.
Program primjer33
implicit none
real, parameter:: g = 9.81 ! gravitaciono ubrzanje
real, dimension(1:6):: F, m, mi
real:: mi_prosjek, mi_ukupno,trenje
integer:: i
! inicijalizacija niziva
m = (/ 2.0, 4.0, 5.0, 10.0, 20.0, 50.0 /)
F = (/ 12.5, 23.5, 30.0, 61.0, 117.0, 294.0 /)
mi_ukupno = 0.0
do i = 1, 6
mi(i) = trenje(F(i), m(i))
mi_ukupno = mi_ukupno + mi(i)
end do
mi_prosjek = mi_ukupno / 6.0
! Ispis
Print*,'Koeficijenti trenja su:'
do i = 1, 6
print*,mi(i)
end do
print*,'Prosjecna vrijednost:', mi_prosjek
end program primjer33
function trenje(F,m)
real m
g=9.81
trenje = F/(m*g)
return
end
PRIMJER 35.
etri krunice su smjetene kao na slici. U svakoj taki dodira krunice su tangente jedna na drugu. Odrediti rastojanje
izmeu centra C2 i C4. Poluprenici krunica su: R1=16mm, R2=6,5mm, R3=12mm, R4=9,5mm.
Linije koje povezuju centre krunica ine etri trougla, poznate su duine svih stranica dva takva trougla C 1C2C3 i C1C3C4 .
Taj podatak se koristi za izraunavanje uglova 1 i 2 pomou kosinusne teoreme.
Zatim se izrauna stranica C2 C4 i pomou trougla C1 C2 C4 (kosinusna teorema poznate su duine C1 C2 i C1 C3 a ugao 3
u programu oznacen kao gama je zbir uglova 1 i 2).
Programprimjer34
implicit none
real:: r1, r2, r3, r4 ! poluprecnici kruznica
real:: c12, c23, c34, c14, c13, c24 ! udaljenosti prema slici ili stranice trouglova
real:: gama1, gama2, gama ! uglovi gama1, gama2 i gama
r1 = 16.0
r2 = 6.5
r3 = 12.0
r4 = 9.5
! Udaljenost izmedju susjednih kruznica prema slici
c12 = r1+r2
c23 = r2+r3
c34 = r3+r4
c14 = r1+r4
c13 = r1+r3
gama1 = ugao(c23, c12, c13)! ugao izmedju stranica c12 i c13
gama2 = ugao(c34, c14, c13)! ugao izmedju stranica c14 i c13
gama = gama1 + gama2
c24 = udaljenost(c12, c14, gama)
print*, "Udaljenost izmedju centra 1 i 2: ", c24
call system("PAUSE")
contains
functionugao(a,b,c)result(gama)
real, intent(in) :: a,b,c
real:: cos_bc, gama
cos_bc = (a**2 - b**2 - c**2) / (-2*b*c)
gama = acos(cos_bc)
end function
function udaljenost(a,b, gama) result (r)
real, intent(in) :: a,b,gama
real:: r
r =sqrt(abs(a**2 + b**2 - 2*a*b*cos(gama)))
end function
end program
PRIMJER 36.
U osloncu nosaa djeluju tri sile. Napisati program za izraunavanje ukupne sile koja djeluje u osloncu nosaa.
Sila je vektor. U dekartovom koordinatnom sistemu, dvodimenzionalan vektor F moemo zapisati kao:
Gdje je F jaina sile, njen ugao prema osi x, Fx i Fy su komponente od F u smjeru ose x odnosno y, a (i) i (j) jedinini
vektori u tim smjerovima, Ako su poznati Fx i Fy onda se F i mogu izraunati kao:
i
Ukupna sila koja djeluje na nosa dobiva se sabiranjem sila koje na njega djeluju.
Programprimjer36
Implicit none
Real, parameter:: PI = 3.1415927
Real:: F1, F2, F3
Real:: a1, a2, a3
Real:: R, Rx, Ry, theta
F1 = 400.0
F2 = 500.0
F3 = 700.0
a3 = radian(143.0)
a2 = radian(30.0)
a1 = radian(-20.0)
Rx = F1*cos(a1) + F2*cos(a2) + F3*cos(a3)
Ry = F1*sin(a1) + F2*sin(a2) + F3*sin(a3)
theta = atan2(Ry, Rx)
R = sqrt(Rx**2 + Ry**2)
Print*, 'Rezultantna sila je:', R, ' u N"
Print*, 'Ugao je:', degradian(theta) , ' stepena'
Contains
Function radian (deg) result (rad)
Real, intent(in) :: deg
Real:: rad
rad = deg * PI / 180.0
End function
Function degradian(rad) result (deg)
Real, intent(in) :: rad
Real:: deg
deg = rad *180.0 / PI
End function
End program
PRIJMER 37.
Napisati program za uitavanje (x,y) koordinata 25 taaka a zatim napisati funkcijski potprogram koji
e da rauna rastojanja datih taaka od take sa kordinatom (X A = 0.8 i YA = 1.5), a potom u glavnom
programu nai najveu i najmanju duinu izmeu koordinata taaka i take (A).
! Program ucitatava x,y koordinate 25 tacaka. ! Rjeenje bez funkcije
! Funkcijski potprogram duzina se koristi za racunanje, ! Program ucitatava x,y koordinate 25 tacaka.
! Rastojanja datih tacaka od tacke sa Koordinatom xa=0,8 i y=1,5 . ! Rauna rastojanja datih tacaka od tacke
! U glavnom programu se nalazi najveca i najmanja duzina
sa ! koordinatom xa=0,8 i y=1,5.
! izmedju tacaka i tacke A.
Dimension x(25),y(25),d(25) ! U glavnom programu se nalazi najveca i
Print*, 'Program za racunanje rastojanje tacaka od tacke' najmanja ! duzina izmedju tacaka i tacke A.
Print*, 'Xa=0,8 i Y=1,5' Dimension x(25),y(25),d(25)
Print*, 'Unesite koordinate 25 tacaka a(x,y)' Print*, 'Program za racunanje rastojanje tacaka od tacke'
do 10 i=1,25 Print*, 'Xa=0,8 i Y=1,5'
Print*, 'Tacka broj',i Print*, 'Unesite koordinate 25 tacaka a(x,y)'
Read*, x(i),y(i)
10 continue
do 10 i=1,25
xa=0.8 Print*, 'Tacka broj',i
ya=1.5 Read*, x(i),y(i)
do 20 i=1,25 10 continue
d(i)=duzina(x(i),y(i),xa,ya) xa=0.8
20 continue ya=1.5
dmax=d(1) ! Postavi minimalnu i maksimalnu vrijednost tako do 20 i=1,25
dmin=d(1) ! da odgovaraju vrijednostima prvog elementa d(i)= sqrt((x(i)-xa)**2+(y(i)-ya)**2)
! Postavi dmax na veu i dmin na manju vrijednost
do 30 i=1,25
20 continue
If (dmax.lt.d(i)) then dmax=d(1) ! Postavi minimalnu i maksimalnu vrijednost tako
dmax=d(i) dmin=d(1) ! da odgovaraju vrijednostima prvog elementa
Else if (dmin.gt.d(i)) then ! Postavi dmax na veu i dmin na manju vrijednost
dmin=d(i) do 30 i=1,25
End if If (dmax.lt.d(i)) then
30 continue dmax=d(i)
Print*, 'Maksimalna duzina je= ',dmax,' minimalna duzina je= ',dmin Else if (dmin.gt.d(i)) then
Stop
End
dmin=d(i)
End if
Function duzina(a,b,c,d) 30 continue
duzina=sqrt((a-c)**2+(b-d)**2) Print*, 'Maksimalna duzina je= ',dmax,' minimalna duzina je= ',dmin
Return Stop
End End
PRIMJER 38.
Napisati program koji izraunava putanju projektila koristei poziv za putanja Funkciju. Ulazni podaci
funkcije su poetna brzina i ugao pod kojim je projektil ispaljen. Izlazni argumenti su: vrijeme
projektila do dostizanja maksimalne visine, maksimalno vrijeme leta projektila, maksimalna visina i
maksimalna udaljenost.
Kretanje projektila moe se analizirati s obzirom na horizontalnu i vertikalnu komponentu poetne
brzine. Poetna brzina moe se razloiti u horizontalnom i vertikalnom pravcu i prikazuje se kao:
i
U vertikalnom pravcu brzina i poloaj projektila dati su kao:
i
Vrijeme koje je potrebno projektilu do najvie take i odgovarajua visina se prikazuje kao:
i
Ukupno vrijeme je dvostruko vrijeme od ( thmax )koje je potrebno projektilu do najvie take i rauna se
kao: .
Program primjer38
! Ovaj program racuna vremena, visinu i domet projektila te elemente trajektorije
! Koristeci poziv za putanja funkciju
Implicit none
Real Vo,theta,theta1,Vx,Vy,x,y,hmax,Tuk,Thmax,D,putanja
Real, Parameter :: PI = 3.1415926
Real, Parameter :: g = 9.81
Integer i,n
Print *, 'Unesi pocetnu brzinu u (m/s):'
Read *, Vo
Print *, 'Unesi ugao izbacivanja:'
Read *, theta
Print *, 'Unesi broj tacaka na trajektoriji:'
Read *, n
theta1 = theta * (PI / 180.0) ! Pretvori u radijane
Vx = Vo * cos(theta1) ! Vx - komponenta po x osi
Vy = Vo * sin(theta1) ! Vy - komponenta po y osi
Thmax = Vy/g ! Vrijeme potrebno za dostizanje maksimalne visine
Tuk = 2.0 * Vy/g ! Ukupno vrijeme trajanja leta projektila
hmax=Vy**2/(2*g) ! Maksimalna visina projektila
D = Vx*Tuk ! Maksimalni domet projektila
Print*,' Vrijeme za dostizanje maksimalne visine je ',Thmax,' (s)'
Print*,' Ukupno vrijeme trajanja leta projektila je ',Tuk,' (s)'
Print*,' Maksimalna visina koju projektil dostigne je ',hmax,' (m)'
Print*,' Maksimalni domet kojeg dostize projektil je ',D,' (m)'
Print*,'Tacke trajektorije su'
do i = 0,n
x = D*i/n
y = putanja(x,theta1,Vo,g)
Print *,i,x,y
End do
End Program primjer38
Function putanja(x,theta1,Vo,g)
putanja = tan(theta1)*x - g*(1.+tan(theta1)*tan(theta1))*x**2/(2.*Vo**2)
Return
End
! Vo = 230 m/s
! Ugao = 390
Program primjer38
! Ovaj program racuna vremena, visinu i domet projektila te elemente trajektorije
! Koristeci poziv za putanja funkciju Drugi nacin
Implicit none
Real Vo,theta,theta1,Vx,Vy,x,y,hmax,Tuk,Thmax,D,putanja
Real, Parameter :: PI = 3.1415926
Real, Parameter :: g = 9.81
Integer i,n
Print *, 'Unesi pocetnu brzinu u (m/s):'
Read *, Vo
Print *, 'Unesi ugao izbacivanja:'
Read *, theta
Print *, 'Unesi broj tacaka na trajektoriji:'
Read *, n
theta1 = theta * (PI / 180.0) ! Pretvori u radijane
Vx = Vo * cos(theta1) ! Vx - komponenta po x osi
Vy = Vo * sin(theta1)! Vy - komponenta po y osi
Thmax = Vy/g! Vrijeme potrebno za dostizanje maksimalne visine
Tuk = 2.0 * Vy/g ! Ukupno vrijeme trajanja leta projektila
hmax=Vy**2/(2*g)! Maksimalna visina projektila
D = Vx*Tuk! Maksimalni domet projektila
Print*,' Vrijeme za dostizanje maksimalne visine je ',Thmax,' (s)'
Print*,'Ukupno vrijeme trajanja leta projektila je ',Tuk,' (s)'
Print*,' Maksimalna visina koju projektil dostigne je ',hmax,' (m)'
Print*,' Maksimalni domet kojeg dostize projektil je ',D,' (m)'
Print*,'Tacke trajektorije su'
do i = 0,n
x = D*i/n
y = putanja(x,Vx,Vy,g)
Print *,i,x,y
End do
End Program Zadatak2
Function putanja(x,Vx,Vy,g)
real x, Vx, Vy,t,g
t = x / Vx
putanja = Vy*t - 0.5 * g * (t**2)
Return
End