Modul Pengenalan Fortran 2015.doc
-
Upload
dickyprasetyabagaskara -
Category
Documents
-
view
41 -
download
3
Transcript of Modul Pengenalan Fortran 2015.doc
Pengenalan Bahasa Fortran
MODUL I
PENDAHULUAN, PROGRAM KONDISIONAL DAN ITERASITujuan Praktikum
Mengetahui bagaimana struktur penulisan dalam program berbahasa FORTRAN.
Mengetahui cara penggunaan syntax kondisional dan iterasi.
Mengetahui tujuan penggunaan dan aplikasi program kondisional dan iterasi.
1.1 Pendahuluan1. Tata Cara Penulisan Program Bahasa FORTRAN
a) Struktur Penulisan
Struktur Penulisan bahasa Fortran memiliki aturan tersendiri.
123456787273
Kolom 1 digunakan untuk menulis pernyataan C (comment). Semua pernyataan di sepanjang baris itu di tidak akan dieksekusi.
Kolom 1 5 digunakan untuk label pernyataan pengulangan dan format yang berbentuk angka.
Kolom 6 disediakan untuk tanda sambung yang menghubungan baris sebelumnya dan baris sesudahnya. Biasanya diisi dengan karakter angka.
Kolom 7 72 adalah kolom untuk menuliskan pernyataan Fortran.
Kolom 73 dan seterusnya diabaikan oleh computer (tidak dieksekusi).
b) Jenis Data
Ada lima jenis data standard yang di kenal dalam bahasa Fortran seperti pada table di bawah ini.
Table 1, Deklarasi jenis data
Jenis DataDeklarasi
IntegerInteger
Ril (presisi tunggal dan ganda)Real, Real*4, Real*8, double precision
KompleksComplex
LogikaLogical
KarakterCharacter*n ( 1 < n < 32767 )
Satu jenis lain yang hanya pada MS FORTRAN, yaitu jenis Record, merupakan perkembangan mutakhir.
Pada awal perkembangannya, Fortran secara otomatis menganggap setiap variable yang namanya diwakili huruf I, J, K, L, M, atau N (abjad I N) akan dianggap sebagai variable integer, dan variable yang diawali dengan huruf yang lainnya di anggap sebagai variable berjenis Real.
Pembagian jenis data berdasarkan huruf awal saja seperti di atas ada kalanya tidak di kehendaki. Untuk menyiasati hal tersebut adalah dengan menyatakan variable tersebut sebagai variable Real, contoh variable momen secara langsung merupakan variable integer, maka untuk menjadikannya real adalah :
Real momen
Atau
Real*4 momen
Jenis data yang baru ada sejak Fortran 77 adalah jenis karakter. Untuk data karakter, huruf besar dan huruf kecil tidak dipandang sama. Misalnya karakter ABC tidaklah sama dengan AbCPernyataan Write akan menulis tulis nama file yang akan di buka di layer computer, sedangkan pernyataan Read meminta data untuk variable nama file. Untuk menjawabnya harus menggunakan tanda kutip, misal coba.dat. Pernyataan Open seperti di atas berarti membuka file bernama coba.dat (pada contoh ini) dengan nomor unit 3. Selesai program ini dijalankan, pada file coba.dat akan tertulis ini di dalam file unit 3.
Cara lain untuk menyatakan jenis variable adalah dengan pernyataan Implicit. Sebagai contoh, pernyataan Implicit di dalam unit program Program Latihan berikut :
Program Latihan
Implicit Real (A-D,K), Integer (I,N)
.
.
End
Mengandung arti bahwa di dalam unit program Latihan tersebut, semua variable yang di awali dengan huruf A, B, C, D, dan K adalah varibel ril, dan semua varibel yang di awali dengan huruf I dan N adalah Integer.
Klasifikasi data dalam bahasa Fortran
data
data numeris
data alphabetis
data realdata integer
dengan melihat pembagian jenis data tersebut dapat dilihat kemana orientasi penggunaan bahasa fortran tersebut.c) Bagan Alir (Flow Chart)
Flow Chart adalah diagram yang disusun untuk menyederhanakan arus logika suatu program. Untuk menggambarkan bagan arus dipergunakan symbol-simbol sebagai berikut :
Simbol
Penjelasan
1.Tanda arah aliran
2.
Proses membaca input program
3.
Proses membaca atau menulis dari suatu media
4.
Proses menulis ke printer
5.
Suatu proses
6.
Proses pengecekan
7.
Tanda mulai, atau tanda akhir
8.
Tanda sambung
Contoh penggunaan flow chart pada permasalahan sederhana berikut :
Suatu segitiga ABC memiliki sisi-sisi a=5cm, b=4cm, c=6cm, tentukan nilai sudut a ?
Flow chart
penjelasan :
mula-mula dibaca input/masukan beerupa nilai a, b, dan c kemudian dihitung sudA dengan rumus yang telah ditentukan. Dan akhirnya mencetak hasilnya.2. Program Sederhana Statement Program
Sebuah program dapat diberi nama di awal program tersebut dengan statement program yang single.
Layout Program
Layout Program pada fortran terdiri dari 80 kolom dengan spesifikasi sebagai berikut :
KolomPenggunaan
1-5Statemen label
6Penyambung karakter atau dapat dikosongkan
7-72Statemen FORTRAN
73-80Tidak digunakan
END dan STOP
Setiap program harus mengandung statemen END, yang menandakan akhir sebuah program. Setelah statemen end tidak boleh ada perintah-perintah maupun tulisan lain.
Statemen STOP berfungsi untuk menghentikan eksekusi dari program tersebut. Pada FORTRAN 77, statemen END dapat berfungsi sebagai STOP jika eksekusi tersebut berada di akhir program. Namun, statemen STOP dapat ditulis lebih dahulu untuk mengeksekusi di bagian lain selain akhir program.
Comments
Huruf C atau tanda seru (!) pada kolom 1 membuat kompiler mengabaikan tulisan pada baris tersebut yang dapat digunakan sebagai komentar untuk memberi informasi kepada semua orang yang membaca program tersebut.
Contoh program:
Program Program_Pertama
write(*,*)ini program pertama Saya
write(*,*)
stop
end
Program Biodata
write(*,*)'Nama: .....'
write(*,*)'NIM: .....'
write(*,*)'Alamat : ....'
write(*,*)'Jenis Kelamin: .....'
write(*,*)'No. Telp.:.....'
stop
end
Program Membedakan_Bilangan_Real_dan_Integer
data a,b,c,d,e/2.,4.,6.,8.,10./
data i,j,k,l,m/2,4,6,8,10/
cMenampilkan nilai awal masing-masing data
write(*,*)'Nilai awal :'
write(*,*)'a=',a
write(*,*)'b=',b
write(*,*)'c=',c
write(*,*)'d=',d
write(*,*)'e=',e
write(*,*)'i=',i
write(*,*)'j=',j
write(*,*)'k=',k
write(*,*)'l=',l
write(*,*)'m=',m
cOperasi Matematika
cx dan y adalah operasi bilangan real
x = 2/b+a*c/4*d-e
y = (2/(a+b)*c)/(4*(d-e))
cix dan iy adalah operasi bilangan integer
ix = 2/j+i*k/4*l-m
iy = (2/(i+j)*k)/(4*(l-m))
cMenampilkan hasil operasi
write(*,*)'x=',x
write(*,*)'y=',y
write(*,*)'ix=',ix
write(*,*)'iy=',iy
cmengakhiri eksekusi
stop
cmengakhiri program
end
3. Penggunaan Operator Contoh operator yang biasa digunakan:
OperatorKegunaan (aritmatik)
*Perkalian
/Pembagian
+Penjumlahan
-Pengurangan
**Pangkat
modsisa hasil pembagian
OperatorKegunaan (pembanding)
EqSama dengan
NeTidak sama dengan
LtKurang dari
GtLebih dari
LeKurang dari sama dengan
GeLebih dari sama dengan
OperatorKegunaan (logika)
orAtau
andDan
OperatorKegunaan (penugasan)
=Menyatakan nilai suatu variabel
Contoh perhitungan dengan operator aritmatik:
Program Waktu_tidur
integer a,b,x,y,z,t,t1
write(*,*)'Masukkan lamanya dirimu tidur dalam 1 hari (jam,menit)'
read(*,*)a,b
cx adalah jumlah menit dalam 1 hari
x=24*60
cy adalah lamanya tidur dalam 1 hari (menit)
y=(a*60)+b
cz adalah lamanya tidak tidur dalam 1 hari (menit)
z=x-y
ct adalah hasil pembagian antara z dan jumlah menit dalam 1 jam
t=z/60
ct1 adalah sisa hasil pembagian antara z dan jumlah menit dalam 1 jam
t1=mod(z,60)
write(*,*)'Maka, dalam 1 hari, dirimu tidak tidur selama ='
write(*,*)t,' jam',t1,' menit'
stop
end
1.2 Program Kondisional dan Iterasi1. Program Kondisional Pemakaian Select Case
PROGRAM Konversi Nilai Huruf Menjadi Angka
character N,jwb
integer Nilai
7write(*,*)'Masukkan nilai huruf='
read(*,*)N
Select case (N)
case('A')
Nilai=4
write(*,*)'Nilai anda',Nilai
case('B')
Nilai=3
write(*,*)'Nilai anda',Nilai
case('C')
Nilai=2
write(*,*)'Nilai anda',Nilai
case('D')
Nilai=1
write(*,*)'Nilai anda',Nilai
case('E')
Nilai=0
write(*,*)'Nilai anda',Nilai
endselect
write(*,*)'Dilanjutkan?(Y/N)'
read(*,*)jwb
if(jwb.eq.'Y')then
go to 7
endif
stop
end
TUGAS :
1.Bagaimana bentuk flowchart untuk syntax SELECT CASE dan jelaskan serta analisis maksud dari program diatas!
2.Kendala apa yang ditemukan pada program diatas? Beri penjelasan!2. Program Kondisional Pemakaian If-Then-ElseProgram menentukan jenis segitiga
real s1,s2,s3
7write(*,*)'Masukkan sisi 1 dari segitiga ='
read(*,*)s1
write(*,*)'Masukkan sisi 2 dari segitiga ='
read(*,*)s2
write(*,*)'Masukkan sisi 3 dari segitiga ='
read(*,*)s3
if ((s1.le.0).or.(s2.le.0).or.(s3.le.0)) then
write(*,*)'Data salah tidak bisa diproses'
go to 7
elseif ((s1.eq.s2).and.(s2.eq.s3)) then
write(*,*)'Termasuk segitiga sama sisi'
elseif (((s1.eq.s2).and.(s1.ne.s3)).or.((s2.eq.s3).and.(s2.ne.s1)).o
5r.((s3.eq.s1).and.(s3.ne.s2)))then
write(*,*)'Termasuk segitiga sama kaki'
elseif ((s1.ne.s2).and.(s2.ne.s3)) then
write(*,*)'Termasuk segitiga sembarang'
endif
stop
end
TUGAS :
1.Bagaimana bentuk flowchart untuk syntax IF-THEN-ELSE dan jelaskan serta analisis maksud dari program diatas!
2.Apa perbedaan antara perintah ELSE dengan ELSEIF?
3.Kendala apa yang ditemukan pada program diatas? Beri penjelasan!2.3.Penggunaan Kondisional If-Then Sebagai Loop
Program if_then_bisa_buat_loop
character q
10write(*,*)'Masukkan bilangan yang akan dipangkatkan:'
read(*,*)num
i=1
pow=num
20if (i.lt.10) then
pow=pow*num
i=i+1
write(*,*)num,' pangkat',i,' adalah',pow
goto 20
endif
write(*,*)'Coba lagi? (y/n)'
read(*,*)q
if ((q.eq.'y').or.(q.eq.'Y')) then
goto 10
endif
stop
end
TUGAS :
1.Bagaimana bentuk flowchart untuk dan jelaskan serta analisis maksud dari program diatas!
2.Apa perbedaan antara syntax IF-THEN-ELSE dengan IF-THEN?3.Cobalah untuk membuat program iterasi :
X / Y dengan Y dari 1 sampai 20 dan X di masukkan dari keyboard
dengan menggunakan if-then seperti program diatas!
2.4.Program Iterasi Do-Enddo
program cara_pake_iterasi_do_enddo
write(*,*)'Masukkan bilangan yang dipangkatkan:'
read(*,*)num
pow=num
do i=1,9
pow=pow*num
write(*,*)num,' pangkat',i+1,' adalah',pow
enddo
stop
end
TUGAS :
1.Bagaimana bentuk flowchart untuk program di atas dan jelaskan serta analisis maksud dari program diatas!
2.Cobalah untuk membuat program iterasi :
X / Y dengan Y dari 1 sampai 20 dan X di masukkan dari keyboard
dengan menggunakan do-enddo seperti program diatas!
Kata Bijak :It is not enough to have a good mind,
the main thing is to use it well.
( Tidaklah cukup hanya memiliki pemikiran yang bagus,
Yang lebih penting, adalah bagaimana menggunakkannya dengan baik. )
= Rene Descartes =MODUL II
SUBPROGRAM
Tujuan praktikum
Mengetahui cara penggunaan subprogram (fungsi dan subrutin)
Dalam suatu program yang panjang terkadang dipakai subprogram untuk menghindari penulisan kode yang sama secara berulang-ulang. Subprogram ada dua macam : subprogram fungsi dan subprogram subroutine.
1. Subprogram Fungsi
Subprogram fungsi dipanggil atau dipakai dengan cara menuliskan nama fungsi disertai argument yang sesuai. Nama argument pada pernyataan pemanggilan tidak perlu sama dengan parameter yang dipakai pada waktu pendefinisian fungsi. Argument boleh berupa konstanta, nama peubah, ekspresi hitungan atau nama subprogram lainnya. Yang terpenting adalah argument-argumen harus memiliki padanan satu-satu pada dengan urutan dan tipe data parameter pada deklarasi pendefinisian fungsi.
Struktur fungsi :
FUNCTION name(argument list)
Declaration part
Subprogram statement
END
Cara pemanggilan :
Menyebutkan nama fungsi dan argumennya.
Contoh : N=name(argument list)Contoh Program :
Program luas
cpendeklarasian variabel
real a,b,c,z
cpemasukan nilai
write(*,*)'Masukkan nilai a:'
read(*,*)a
write(*,*)'Masukkan nilai b:'
read(*,*)b
write(*,*)'Masukkan nilai c :'
read(*,*)c
cproses menghitung
z=F(a)-F(b)+F(c)
write(*,*)'Luas daerah =',z
end
cfungsi
real function F(x)
F=100/(x)
end
2. Subprogram Subroutine
Subroutine digunakan apabila diperlukan perhitungan lebih dari satu nilai selain itu juga digunakan untuk melakukan suatu tugas tertentu.
Pernyataan pertama dalam subroutine harus diawali dengan deklarasi subroutine.
SUBROUTINE name(argument-list)Nama suatu subroutine tidak dikaitkan dengan suatu nilai, karena nama subroutine tidak dikaitkan dengan sutu nilai maka diperlukan suatu pernyataan khusus yaitu pernyataan Call.
CALL name(argument-list)
Subroutine tidak selalu memerlukan parameter sehingga dibolehkan tidak mempunyai parameter. Sebaliknya fungsi paling sedikit harus memiliki satu parameter. Syntax dari subroutine subprogram mirip dengan subprogram fungsi.
Struktur subroutine :
SUBROUTINE statement
Declaration part
Subprogram statement
END
Cara pemanggilan :
Menuliskan pernyataan Call.
Contoh : CALL name(argument list)Contoh program :
Program Menghitung
cPenentuan cara
1write(*,*)'Tentukan cara yang akan Anda pilih'
write(*,*)'Tekan 1 untuk penambahan'
write(*,*)'Tekan 2 untuk pengurangan'
cPemilihan subroutine
read(*,*)A
if(A.eq.1) then
call Tambah(a,b,c)
else if(A.eq.2) then
call Kurang(a,b,c)
else
write(*,*)'Tekan angka yang tepat'
goto 1
end if
stop
end
clist subroutine
SUBROUTINE Tambah(a,b,c)
cinteger a,b,c
write(*,*)
write(*,*)'Anda akan melakukan operasi penambahan'
write (*,*)'Masukkan nilai a'
read (*,*)a
write (*,*)'Masukkan nilai b'
read (*,*)b
c=a+b
write(*,*)
write(*,*)'hasil jumlah =',c
stop
return
end
SUBROUTINE Kurang(a,b,c)
cinteger a,b,c
write(*,*)
write(*,*)'Anda akan melakukan operasi pengurangan'
write (*,*)'Masukkan nilai a'
read (*,*)a
write (*,*)'Masukkan nilai b'
read (*,*)b
c=a-b
write(*,*)
write(*,*)'hasil kurang =',c
stop
return
end
Kata Bijak :
Wisest is he who knows he does not know
(Orang yang paling bijaksana adalah orang yang sadar bahwa ia tidak tahu)
= The wise one =
selesai
Baca a,b,c
hitung
sudA= cos-1[(b2+c2-a2)/2bc]
Mulai
Tulis sudA
sudA
Tim Asisten Metode Numerik 2015 Ridho,Ikhsan, Hikari,Lucki, Chandra, Nur, Rizki,Aderia