FORTRAN FORTRAN ÖRNEKL ÖRNEKL ER (2013) NOT: - K od sat satrlarndaki baz boluklar göstermek için " _ " kullanlmr. - K od sat satrlarn hemen yannda, iki ünlem iareti arasnda yazlan bilgiler o satrla ilgili açklamalar için çin yaz yazlmr. sim ile il e K arlama
K lavyeden den isi isim m giri girildikte dikten sonra sonra,, 'merhaba rhaba ...' ...' eklinde kullan karlayacak bir bir progr program amyazz. program karsilama character ad*20 write(*,*) 'adiniz nedir?' read(*,*) ad write(*,*) 'merhaba _ ', ', ad end
Top Toplam lama lemi K lavye avyede den gi giril rilen iki say say toplayan toplayan bir bir program programyazz. program toplama write(*,*) 'toplama icin iki sayi giriniz:' read(*,*) a, b c=a+b write(*,*)'toplam=', c end
Daire Daire Çevre vresi ve Alan Hesaplama K lavyede avyeden n yarçap girilen dairenin çevresini ve alan hesapl hesaplayan ayan bi bir program programyazz. program daire pi=3.141592 write(*,*) 'yaricapi giriniz:' read(*,*) r cevre=2*pi*r alan=pi*r**2 write(*,*) 'Alan= _ ', ', alan, '_Cevre= _ ', ', cevre end
dea deal Gaz Y ounluu Hesaplama
Kullan srasyla gazn ad ve mol kütlesini yazdktan sonra "gazin_adi gazinin yogunlugu [kg/m3]" eklinde çkt veren bir program yazz. program yogunluk character AD*10 P0=1.013E5 T0=273 R=8314 write(*,*)'gazin adi:' read(*,*) ad write(*,*) 'gazin mol kutlesi [kg/kmol]:' read(*,*) m R0=P0*m/R/T0 write(*,*) ad,'_gazinin yogunlugu [kg/m3]=', R0 end
Organik Molekül Younluu Hesaplama Kimyasal formülü CxHy eklinde verilen bir gaz yakn N..A. younluunu hesaplayan hesaplayan bir bir program program yazz. program yogunluk character ad*20 R=8314 P0=1.013e5 T0=273 MC=12 MH=1 write(*,*) 'Gazin adini giriniz:' read(*,*) ad write(*,*) 'C ve H atomlarinin sayisini giriniz:' read(*,*) x,y M=MC*x+MH*y R0=P0*M/R/T0 write(*,*) ad, '_gazinin yogunlugu [kg/m3]=', R0 end
dea deal Gaz Hac H acm mi Hesapl saplam ama a
Bir ideal gazn 1 atm atm basnç ve 273 273 K scaklktaki hacim deerini klavyeden girerek, istenilen baka bir scaklk ve basnçtaki hacmini hesapl hesaplam amaya yarayan yarayan bir bir program programyazz. program hacim p0=1.013E5
!1 atm basnç!
T0=273
!273 K scaklk!
write(*,*) 'v0 giriniz:' read(*,*) v0 write(*,*) 'P ve T giriniz:' read(*,*) P, T V=v0*p0/P*T/T0 write(*,*) 'Hacim=', V end
. = .
Ortalama talama ve Toplam Toplam Hesapl saplam ama a K lavyede vyeden giri girilen say saylar larn ortalamas ve toplam hesaplayan hesaplayan bir bir program program yazz. Bu hesaplamada kullanlacak saylar larn giriinin tamamland -999 girerek belirtiniz. program ortalama top=0 n=0 20
write(*,*) 'ortalama ve toplam icin sayi giriniz, bitir icin -999' read(*,*) sayi if (sayi.eq.-999) goto 10 top=top+sayi n=n+1 goto 20
10
ort=top/n write(*,*) 'toplam=', top, '_ortalama=', ort end
Ders Geçme K lavyeden vyeden srasyla örencinin ad ve soyad, örenci numaras, arasnav notu, final notu girilerek rencini rencinin n ders ders geçme geçme durumunu ve ba baar notu harfini gösteren bir program yazz. Programn sonlanmas için final notunun negatif girilmesi art tanmlayz. Baar Notu
Baar Notu Harfi
100 - 9 89 - 8 79 - 7 69 - 6 59 - 5 49 -
A A2 B1 B2 C F3
Arasnav*0.4+Final*0.6
program sinav character AS*30, BNH*2 10
write(*,*)'Ad soyad, No, Ara ve Final sinav notlarini gir,final ne &gatif girilirse programi bitir' read(*,*)AS,NO,ARA,FIN if (FIN.LT.0) stop BN=0.4*ARA+0.6*FIN
!& i areti alt sat rdan devam etmek için kullanr!
if (BN.GE.90)
BNH='A1'
if (BN.GE.80 .and. BN.LT.90) BNH='A2' if (BN.GE.70 .and. BN.LT.80) BNH='B1' if (BN.GE.60 .and. BN.LT.70) BNH='B2' if (BN.GE.50 .and. BN.LT.60) BNH='C' if (BN.LT.50) BNH='F3' write(*,*)'ad=',AS,'_No=',No,'_Basari Notu=',BNH goto 10 end
Denklem DenklemK ökler öklerini Bulm B ulma a
+ + = formatndaki bir denklemin köklerini, klavyeden a, b, c katsay lar lar girerek hesapl hesaplayan ayan bir program yaz yazz. program denklem write(*,*)'A,B,C yi giriniz' read(*,*)A,B,C
10
D=B**2-4*A*C
! hesapland!
if (D) 10,20,30
!*!
write(*,*)'gercek kok yoktur.' stop
20
X=-B/(2*A) write(*,*)'cakisik iki kok var=',x
30
X1=(-B+D**0.5)/(2*A) X2=(-B-D**0.5)/(2*A) write(*,*)'X1=',X1,'X2=',X2 end
*if
döngülerinde bu tür, virgüllerle ayrlm bir ifade kullanldnda artlar u ekilde belirlenmektedir: D <0 ise10 D=0
ise 20
D>0
ise 30
Üçgen art K ontrolü Üç kenar uzunluu klavyeden girildi inde üçgenin türünü ya da üçgen artn salanmad belirten bir bir programyazz. program ucgen write(*,*) 'ucgen kenar uzunluklarini giriniz' read(*,*) a,b,c if (a.lt.(b+c) .and. b.lt.(a+c) .and. c.lt.(a+b)) then if (a.eq.b .and. b.eq.c)then write(*,*)'bu ucgen eskenar ucgendir' else if ((a.eq.b .and. b.ne.c) .or. &(b.eq.c .and. c.ne.a).or. &(b.eq.c (b.eq.c .and. .and. c.ne.a)) c.ne.a))the then n write(*,*)'bu ucgen ikizkenar ucgendir' else write(*,*)'bu ucgen cesitkenar ucgendir' end if if else write(*,*)'bu bir ucgen degildir' end if if end
Vücut Vücut Kitle K itle nde ndeksi (BM (BM I ) He Hesaplam saplama a K lavyede vyeden vücut arl ve boy bilgileri girilerek vücut kitle indeksi hesaplayan, sonuca göre deerlendir rl endirm me yapan bir bir program programyazz. Vücut Kitle ndeksi
Deerlendirm
BMI BMI < 35 BMI < 30 BMI < 25 BMI < 20
Obez ma Kilolu Normal Zayf
35 30 25 20
=
program kindex real ki write(*,*) 'agirligi (kg) giriniz:' read(*,*) agirlik write(*,*) 'boyu (m) giriniz:' read(*,*) boy ki=agirlik/boy**2 write(*,*) 'ki=',ki if (ki.lt.20) then write(* write(*,* ,*)) 'zayif 'zayif'' elsei seif (ki.ge (ki .ge.20.an .20.and d.ki.l .ki.lt.25 t.25)) the then write(* write(*,* ,*)) 'norm 'norma al' elsei seif (ki.ge (ki .ge.25.an .25.and d.ki.l .ki.lt.30 t.30)) the then write(*,*) 'kilolu' elsei seif (ki.ge (ki .ge.30.an .30.and d.ki.l .ki.lt.35 t.35)) the then write(*,*) 'sisman' else write(*,*) 'obez' end if if end
Rüzgar H Hesaplama Farkl arazi koullarn etkisini de göz önünde bulunduracak ekilde; klavyeden belirli bir yükseklikte ölçülen rüzgar h ve yükseklik girilerek, istenilen yükseklikteki rüzgar h hesaplayabilen bir program yazz.
= K lavyede vyeden giri girilmesi gereken reken deerler: V0, Z, Z0, p V
:He :H esapl saplanmak istenen hz
Z
:Rüzgar hn hesaplanaca yükseklik
V0
:Belirli bir yükseklikte ölçülen hz
Z0
:V0 n ölçüldüü yükseklik
p
:Pürüz :Pürüz yüksekl yüksekliii ve sta stabil biliiteye teye ba ba katsay
- Büyük ehir: 2- Küçük yerleim yer yeri: 3- rsal alan:
p=0.4 p=0.2 p=0.1
program ruzgar 10
write(*,*)'1-buyuk sehir' write(*,*)'2-kucuk yerlesim yeri' write(*,*)'3-kirsal alan' write(*,*)'p katsayisinin belirlenmesi icin secim yapiniz:' read(*,*)no if (no.lt.1 .or. no.gt.3)then no.gt.3)then write(*,*)'yanlis girdiniz tekrar girin' goto 10 elseif (no.eq.1)then P=0.4 elseif(no.eq.2)then P=0.28 else P=0.16 endif write(*,*)'Z0 giriniz'
read(*,*)Z0 write(*,*)'V0 giriniz' read(*,*)V0 write(*,*)'Z giriniz' read(*,*)Z V=(Z/Z0)**P*V0 write(*,*)'Z=',Z write(*,*)'V=',V end
Serbest Düme Durgun halde halden n serbest serbest düme har hareketine eketine balayan bir cismin, klavyeden girilen yükseklik ve t saniye aralklarla h ve zeminden yüksekliini hesaplayan bir program yazz. program sdusme G=9.81 write(*,*)'yuksekligi (m),DELTAT(s) giriniz' read(*,*)Y0,DELTAT write(*,*)'T[s]
v[m/s]
y[m]'
write(*,*)'------------------------' 10
T=T+DELTAT V=g*T Y=Y0-0.5*G*T**2 write(*,20)T,V,Y
20
format(1x,3F10.3) if (Y.GT.0) goto 10 end
Sayya K adar dar T oplam oplama a (if kullan kull anarak) arak) K lavyede vyeden n giril giri len n sayna kadar olan olan tamsaylar larn toplam if döngüsü kullanarak hesaplayan bir program yazz. program toplam top=0 i=1 write(*,*) 'n giriniz:' read(*,*) n 20
if (i.gt.n) goto 10 top=top+i i=i+1 goto 20
10
write(*,*) 'toplam=', top end
Sayya K adar adar Top T opllama (do kullana kull anarrak) K lavyede vyeden n giril ri len n sayna kadar kadar olan olan tamsaylar larn toplam do döngüsü kullanarak hesaplayan bir program yazz. program toplam top=0 write(*,*) 'n giriniz:' read(*,*) n do 50 i=1, n, 1 top=top+i 50
continue write(*,*) 'toplam=', top end
z, Zaman, Zaman, Yol Y ol He H esapl saplam ama a
Sabit Sabit ivm ivme e ilile hareke hareket eden bir bir aracn ula maksim aksi mum h ve bu hza ulamas için geçen süreyi klavyeden girerek; birer saniye aral klarla ula h (m/s) ve maksim aksimum hza ulaana kadar kadar ald ald yolu yolu hesa hesapl playa ayan n bir bir program program yaz yazz. program hiz write(*,*) 'maksimum hiz (km/h) ve sureyi (s) girin:' read(*,*) vmax, tmax A=vmax/tmax write(*,*) 'Zaman (s) Hiz (m/s) Yol (m)' do 10 t=1, tmax, 1 v=a*t x=0.5*a*t**2 write(*,*) t, v*3.6, x 10
continue end
ç çe Do Döngüsü -1 program do1 write(*,*) 'i j k' write(*,*) '-----' do 10 i=1, 3 do 20 j=2, 4 k=i+j write(*,*) i, j, k 20
continue
10
continue
i
j ----1 2 1 3 1 2 2 2 3 2 3 2 3 3 3
3 5 5 5 7
end
ç çe Do Döngüsü -2 program do2 write(*,*) 'i j k' write(*,*) '-----' k=0
i
j ----1 3 1 2 3 1 2 2
do 10 i=1, 2 do 20 j=3, 4 k=k+i+j write(*,*) i, j, k 20
continue
10
continue end
ç çe Do Döngüsü -3 program do3 write(*,*) 'i j k' write(*,*) '-----' do 10 i=1, 2
i
j ----1 3 1 2 3 5 2 1
k=0 do 20 j=3, 4 k=k+i+j write(*,*) i, j, k 20
continue
10
continue end
ç çe Do Döngüsü -4 program do4 write(*,*) 'i j k' write(*,*) '-----' do 10 i=1, 2 do 20 j=3, 4 k=0 k=k+i+j write(*,*) i, j, k 20
continue
10
continue end
i
j ----1 3 1 5 2 3 5 2
ç çe Do Döngüsü -5 program do5 write(*,*) 'i j k' write(*,*) '-----' k=0 do 10 i=1, 2 do 20 j=5, 3, -1 k=k+i+j write(*,*) i, j, k 20
continue
10
continue
i
j ----1 5 1 1 1 3 15 2 5 22 2 2 2 3 33
end
ç çe Do Döngüsü -6 program do6 write(*,*) 'i j k' write(*,*) '-----' k=0 do 10 i=1, 3, 2 do 20 j=5, 3, -1 k=k+i+j write(*,*) i, j, k 20
continue
10
continue end
i
j ----5 4 11 3 15 3 5 23 3 4 30 3 3 36
Pi Say Say Hesaplama
= 4 + … dizisinin terimleri toplanarak pi say istenen duyarlkla hesaplanabilir. Bu 1) eklinde de yazlabilir. Bu dizinin ilk n terimini kullanarak toplam ksaca = say hesapl hesaplayan ayan bir bir program yazz.
!denklemler incelendiinde pi say hesapl hesaplam amak içi için n sadece sadece terim terim say girilmesinin yeterli olduu görülmektedir! program pisayisi real pi write(*,*) 'Pi sayisi kac terimle hesaplanacak?' read(*,*) n pi=0 isaret=-1 do 10 i=1, n isaret=-isaret
! bu satr ile döngüdeki i deeri arttkça isaret deeri bir + bir - de er alacaktr!
terim=isaret*4./(2*i-1) !Fortran'da 4. yazlmazsa bölme ilemi gerçeklememekte! pi=pi+terim write(*,*) 'terim sayisi:', i, '_pi=', pi 10
!*!
continue end
* Bu program programda her her döngü tekrarnda hesapl hesaplanan anan pi say ekrana yazdlmaktadr. Böylece pi sayn gittikçe doru deerine yaknsamas ekrandan izlenebilir. Eer continue satn hemen öncesindeki write sat continue sonrasna yazrsa sadece girilen n terim teri mi sonunda hesapl hesaplana anan n pi say görüntülenebilir.
Dizi To T oplam
() = + … 2
3
4
fonksiyonunun deerini, verilen x için dizinin ilk n terimini kullanarak hesaplayan bir program yazz. x ve n deerleri klavyeden girilecektir. Açklama:
1) ilemine kark geldii görülmektedir. Dolayyla Fonksiyon incelendiinde n deerine ri ne kada kadarr olan olan ilemlerin hesaplanmas için do döngüsü yazrken bu ilem lem tanmlanmalr. program dizitoplam write(*,*) 'x degerini giriniz:' ! f(x) fonksiyonun hesaplanmas için gerekli olan x deeri! read(*,*) x write(*,*) 'toplanacak terim sayisini giriniz:' read(*,*) n fx=0
!fx döngüsü oluturmadan önce balangç deerini sr olarak tantmamz gerekir!
do 10 i=1, n terim=(-1)**(i+1)*(x**i)/i fx=fx+terim write(*,*) 'i=', i, ',_f(x)=', fx 10
continue end
Tarih Tarih Y az gg.aa.yyyy eklinde girilmi tarihi gg aa yyyy ve gg/aa/yyyy formatnda geri veren bir program yazz. program tarih integer gun, ay, yil write(*,*) 'Gunun tarihini gg.aa.yyyy seklinde giriniz:' read(*,10) gun, ay, yil 10
format (i2,1x,i2,1x,i4) (i2,1x,i2,1x ,i4) write(*,20) gun, ay, yil
20
format ('_',i2,'_',i2,'_',i4) ('_',i2,'_', i2,'_',i4) write(*,30) gun, ay, yil
30
format (1x,i2,'/',i2,'/',i4) (1x,i2,'/',i2,'/',i4) end
Say Girii K lavyede vyeden n giril giri len say say kaç basamak basamakl olursa olsun, ilk 4 basama okuyan ve 'girilen sayi: (ilk 4 basamak)' ekli klinde nde dönü dönü yapan yapan bir bir program yaz yazz. program sayi write(*,*) 'bir sayi gir' read(*,10) n 10
format(i4) write(*,20)n
20
format (1x,'girilen sayi:',i4) end
Faktöriye aktöriyell Hesaplama plama K lavyede avyeden n giri girilecek cek n say sayna kadar bütün saylara ait faktöriyel deerlerini hesaplayan bir program yazz. Elde ed edilmek istene stenen: n: Sayi ---1 2 3 4 5 ... n
Faktoriyel ---------2 2 120 ... n!
program faktoriyel write(*,*) 'n degerini girin:' read(*,*) n fakt=1 write(*,20) 20
format (1x,'sayi',30x,'faktoriyel',/,1x,4 (1x,'sayi',30 x,'faktoriyel',/,1x,4('-'),30x,10('-')) ('-'),30x,10('-')) do 100 i=1, n fakt=fakt*i write(*,10)i, fakt
10 100
format (1x,i4,3x,F30.3) (1x,i4,3x,F30. 3) continue end
Gelecekteki cekteki Nüfusu He H esapl saplam ama a Bir bölgenin gelecekteki nüfusu
: Gelecekteki nüfus : Ye Y eni nüfus nüfus
= (1 + ) formülü ile hesaplanabilir. Burada
p : Nüfus Nüfus art oran n : ki nüfus say arasndaki yl fark fark
anlamndadr. Nüfus art oran p, adaki formül yard ile he hesaplan saplana abili bil ir.
= 1 eski bir sayma göre nüfustur. Eski ve yeni yllar, bunlara ait nüfus saymlar verildiine göre saymlardan sonraki 5,10,15,...,50 yl için nüfuslar hesaplayp yazan bi bir program programyazz. program nufus real NY,NE,P,N integer NG,YY write(*,*)'eski nufus ve yil' read(*,*)NE,YE write(*,*)'yeni nufus ve yil' read(*,*)NY,YY N=YY-YE P=(NY/NE)**(1/N)-1 write(*,*) ' YIL NUFUS' do 10 I=5,50,5 NG=NY*(1+P)**I YG=YY+I write(*,20)YG,NG 10
continue
20
format(1x,F5.0,I9) end
Celsius-Fah lsius-Fahrrenhe nheit-K elvin lvin Celcius Celcius bi birim riminde ndeki scaklklar -50oC ile 150oC arasnda 10'ar derece aral kla klarla rla Fahrenhe nheit ve K elvin vin birimine çeviren bir tablo hazrlaya rl ayan n bir programyazz. TF=32+1.8*TC TK =273.15+T =273.15+TC program sicaklik C
C, F, K sicaklik tablosu write(*,*) ' T[C] T[F] T[K]' do 10 TC=-50, 150, 10 TF=32+.18*TC TK=273.15+TC write(*,*) TC, TF, TK
10
continue
20
format (1x,F5.0,1x,F5.1,1x,F6.2 (1x,F5.0,1x ,F5.1,1x,F6.2)) end
Dizi Dekenlerle kenlerl e Standart Standart Sapma Sapma ve Ortal Or talam ama a He H esapl saplam ama a K lavyede avyeden n giri girilen n tane tane say sayn aritmetik ortalamas ve standart sapmas hesaplayan bir program yazz.
=
=
program standart dimension x(100) write(*,*)'n giriniz:' read(*,*) n do 10 i=1, n write(*,*) i,'. sayiyi gir' read(*,*) x(i) top=top+x(i) 10
continue xort=top/n top=0
(
)
do 20 i=1, n top=top+(x(i)-xort)**2 20
continue ss=sqrt(top/(n-1)) do 30 i=1, n write(*,*) 'x(',i,')-', x(i)
30
continue write(*,*) 'ortalama=', xort write(*,*) 's sapma=', ss end
Matris Toplama
= 15
= 69
3 4 , 7 8
1 3
7 4
C=A+B toplam toplama ilemini yapan yapan bi bir programyazz.
= 174 10 123 m
: satr say
n
: sütun say program matris dimension A(2,3),B(2,3),C(2,3) integer A,B,C write(*,*)'satir ve sutun sayisini gir' read(*,*)M,N do 10 I=1,M read(*,*)(A(I,J),J=1,N)
10
continue do 20 I=1,M read(*,*)(B(I,J),J=1,N)
20
continue do 30 I=1,M do 30 J=1,N C(I,J)=A(I,J)+B(I,J)
30
continue write(*,100) do 40 I=1,M write(*,110)(A(I,J),J=1,N)
40
continue
100
format(' A matrisi',/,9('-'))
110
format(1x,3I3) write(*,120) do 50 I=1,M write(*,110)(B(I,J),J=1,N)
50 120
continue format(' B matrisi',/,9('-')) write(*,130) do 60 I=1,M write(*,110)(C(I,J),J=1,N)
60 130
continue format(' C matrisi',/,9('-')) end
Saylar lar sralama A1 A2 A3 4
3
A4
2
1
eklinde geliigüzel girilen saylar lar sralayan bir program yazz.
Dizi dekenler kullanlmadan: program siralama real ks read(*,*)A1,A2,A3,A4 if (A2.lt.A1)then ks=A2 A2=A1 A1=ks endif if(A3.lt.A1)then ks=A3 A3=A1 A1=ks endif if(A4.lt.A1)then ks=A4 A4=A1 A1=ks endif if(A3.lt.A2)then ks=A3 A3=A2 A2=ks endif if(A4.lt.A2)then ks=A4 A4=A2 A2=ks
endif if(A4.lt.A3)then ks=A4 A4=A3 A3=ks endif write(*,*)A1,A2,A3,A4 end
Dizi dekenler kullanlarak: program sirala real ks dimension A(1000) write(*,*)'kac sayi siralanacak?' read(*,*)N do 10 I=1,N write(*,*)I,'. sayiyi gir' read(*,*)A(I) 10
continue do 20 I=1,N-1 do 25 J=I+1,N if (A(J).lt.A(I))then ks=A(J) A(J)=A(I) A(I)=ks endif
25
continue
20
continue do 30 I=1,N write(*,*)A(I)
30
continue end