MODUL FORTRAN
A. Pendahuluan
Tujuan :
Setelah
membaca
bab
ini
Program
Perkembangan Fortran :
Fortran Singkatan Dari FORmula TRANslator, yang merupakan bahasa tingkat tinggi
dan ber-orientasi pada rumus-rumus (formula) atau ke permasalahan teknik.
Referensi pertama mengenai Fortran baru dikeluarkan dalam bentuk laporan tahun
1954 oleh Programming Research Group, suatu divisi teknik terapan dari IBM baru pada
tahun 1957 diterapkan
pada komputer IBM 704.
2
2. Komentar berupa tulisan bebas.
3. Statement merupakan inti yang berupa instruksi-instruksi.
5. Verb
2. Operator
6. Unit Specifier
3. Ungkapan
7. Format Specifier
4. Nama
Konstanta :
Numerik yang terdiri dari :
Konstanta Integer (Numerik Bilangan Bulat) 2 byte berkisar antara -32767 sampai 32767
dan yang 4 byte
berkisar
antara
sampai dengan
3.37E+38
Operator :
Aritmatika : ** Pangkat
level 1
* Kali
level 2
/ Bagi
level 2
+ Penjumlahan
level 3
- Pengurangan
level 3
Hubungan :
.LT.
.LE.
.EQ.
Sama dengan
.NE.
3
.GT.
.GE.
Logika :
.NOT.
.AND.
Dan
.OR.
Atau
Ungkapan :
Ungkapan Aritmatika dengan operasi didalam tanda kurung didahulukan, kemudian
pangkat, kali, bagi, jumlah, kurang. Ungkapan Karakter tidak boleh menggunakan operator
aritmatik, tapi dapat berbentuk konstanta karakter atau nama variabel. Ungkapan hubungan
adalah membandingkan niali dari dua numeric atau karakter.
Maksimum panjangnya 1320 karakter tapi hanya 6 karakter pertama yang dibaca.
didefinisikan, maka
harus ditunjukkan oleh nama variable yang diawali dengan huruf I, J, K, L, M atau N
besarnya memori 2 byte atau 4 byte default-nya 4 byte.
2.
Variabel Real ketepatan Tunggal menyimpan nilai pecahan 4 byte. Bila tidak didefinisikan
maka harus diawali huruf I,J,K,L,M,N.
3.
Variabel real ketepatan Ganda menyimpan pecahan 8 byte. Harus diawali dengan huruf
selain I,J,K,L,M,N.
4.
Variabel Karakter menyimpan variabel karakter 4 byte. Kalau tidak didefinisikan dapat
menampung 4 karakter. Diawali huruf apa saja boleh juga I,J,K,L,M,N.
4
5.
Variabel Logika menyimpan nilai logika .TRUE. .FALSE. Diawali dengan huruf apa saja
boleh juga I, J, K, L, M, N.
Nama Fungsi :
Digunakan untuk mendapatkan suatu nilai dari fungsi tersebut. Dengan fungsi, nilai data
dapat dikirimkan ke fungsi dan fungsi akan memberikan hasil yang diminta. Dalam Fortran
digolongkan menjadi 3 macam, yaitu :
1.
Fungsi Eksternal yang dibuat sendiri oleh pembuat program dalam bentuk unit program
yang terpisah tetapi masih dalam satu program.
2.
Fungsi Statement dedefinisikan tidak dalam bentuk unit program yang terpisah, tetapi
dalam statement tunggal.
3.
Fungsi Hakiki atau Fungsi pustaka yang sudah disediakan oleh fortran.
Verb adalah kata kerja perintah yang terdapat dalam statement. Hampir semua statement
Fortran mempunyai verb, kecuali assignment statement. Contoh WRITE, CALL
2.
Ungkapan Integer, yaitu nilai integer selain nilai 0 menunjukkan unit alat yang
dipergunakan adalah file eksternal (printer atau file disk).
menunjukkan nama dari filenya. Nama file sebagai berikut :
- LPT1: atau PRN (printer yang pertama).
- CON: menunjukkan alat Console.
- LPT2: (Printer kedua).
- COM: atau COM1: atau COM2 untuk Port Komunikasi.
- Nama file di Disk.
Statement OPEN
5
contoh : OPEN(1,File='LPT1:')
Format Specifier :
Digunakan untuk menunjukkan format yang akan dipergunakan oleh data input
ataupun output.
Statement :
1.
2.
STATEMEN FORMAT
Bentuk umum:
<label statement> FORMAT <format-spec>
Kegunaan:
Statement FORMAT digunakan untuk mengedit data pada alat-alat I/O,yaitu
mengatur letak, tipe dan panjang dari data yang akan dimasukkan lewat alat input atau yang
akan ditampilkan ke alat output.
Penjelasan:
<label statement>
6
Statement FORMAT bebas diletakkan dimana saja didalam program, tetapi yang baik adalah
bila ada beberapa statement FORMAT, dapat anda kumpulkan sementara menjadi satu dan
diletakkan diujung bawah atau ujung atas program, sehingga mudah mencarinya.
Edit descriptor menunjukkan informasi mengenai letak tipe dan panjang dari masing-masing
data yang akan dimasukkan lewat alat input atau yang akan ditampilkan di alat output.
CARRIAGE CONTROL
Karakter pertama dari setiap data yang ditampilkan di layar maupun diprinter tidak
turun ditampilkan atau dicetak. Bila karakter carriage control berupa karakter:
Blank atau spasi, mempunyai efek ganti baris baru,tetapi tidak memberikan spasi.
overprinting (menumpangi
penampilan
diulang
dengan
sejumlah perulangan
2.
3.
4.
5.
7
5(3X,'FORTRAN',2X,2('COBOL',2('BASIC')),/)
Yang
sama
dengan
BASIC',/) atau :
8
Bila data yang akan dimasukkan ke suatu variabel atau larik jumlahnya cukup banyak dan
sifatnya konstan, maka akan lebih baik bila digunakan statement DATA.
banyak.
STATEMENT DATA
Bentuk umum:
DATA<nlist>/<clist>/[[,]<nlist>/<clist>/]...
Penjelasan:
nonexecutable
diletakkan
<nlist> merupakan satu atau kumpulan dari nama variabel, larik atau elemen larik.
kumpulan
dari
masing-masing <clist> harus sama dengan jumlah dari nama variabel atau elemen
larik untuk masing-masing <nlist>.
9
MEMASUKKAN DATA KE LARIK
Seperti halnya data yang dimasukkan ke variabel, nilai data konstanta harus
mempunyai tipe yang sama dengan lariknya dan nama larik harus sudah disebutkan dengan
statement DIMENSION atau dengan statement type. Caranya:
1.
2.
3.
STATEMENT DIMENSION
Bentuk umum:
DIMENSION<array>)[,<array>(<dim>]...
Kegunaan:
Mendefinisikan bahwa suatu nama yang dibentuk oleh pembuat program merupakan suatu
larik serta sekaligus menentukan jumlah dari elemen-elemennya.
Penjelasan:
<array> adalah nama dari suatu larik yang didefinisikan
<dim>
adalah deklarasi dimensi yang menunjukan jumlah elemen dari larik Suatu larik
maksimum dapat berdimensi sampai 7 buah dimensi & ukuran maksimum seluruh larik adalah
64 K atau 65536 byte. Kesalahan yang dideteksi oleh compiler menunjukan bahwa ukuran
larik melebihi batas 64 kilo byte. Deklarasi dimensi dari suatu larik yang menunjukan jumlah
elemen dari larik juga merupakan batas atas dari suatu dimensi dengan batas bawahnya
adalah nol.
1
2. Suatu argument numerik integer. Bila suatu deklarasi dimensi berupa argument numeric
integer,maka jumlah elemen dari larik tersebut tidak pasti,tergantung dari nilai argument
numerik integer bersangkutan. Untuk kasus semacam ini, larik disebut dengan istilah larik
yang ukurannya dapat berubah (adjustable size array). Adjustable size array ini hanya dapat
digunakan pada subroutine.
STATEMENT INPUT/OUTPUT
1. READ
Dipergunakan untuk membaca data dari suatu media input.
BU:
READ(I, L) var1, var2,
Dengan:
I : Nomor alat input, yaitu nomor yang menyatakan suatu alat input, misal: keyboard,
disk dll.
L : label FORMAT
Var1, var2 : Nama varabel yang datanay dibaca.
Contoh
READ (*,11)A,B,I
11 FORMAT (2F10.2,I5)
Keterangan:
Harga-harga A, B , I dibaca memlalui alat input yang bertanda * (standar input) biasanya
keyboard, dengan tata letaknya sesuai FORMAT yang berlabel 11 yaitu:
A dengan FORMAT F10.2
B dengan FORNAT F10.2
1
I dengan FORMAT I5
1. WRITE
Dipergunakan untuk menuliskan isi suatu variabel pada suatu media output.
BU:
WRITE(I,L) var1, var2
Dengan:
I : Nomor alat output, yaitu nomor yang menyatakan suatu alat output, misal monitor,
printer,disk
L : Label FORMAT
Var1, var2 : Nama variabel yang datany dituliskan.
Contoh:
WRITE (*,10) A,B,C
10 FORMAT(3F20.8)
Keterangan:
Harga-harga A,B,C dituliskan pada alat aoutput yang bertanda * ( standar output)
biasnya monitor (console). Dengan tata letaknya sesuai FORMAT.
2. FORMAT
Dipergunakan untuk menentukan tata letak suatu data masukan pada media input maupun
data keluaran pada media output. Ada tiga jenis format untuk menyatakan data numeris
yatiu: tipe I, tipe F dan tipe E.
a.
Format Tipe I
Tipe I dipakai untuk membaca atau menuliskan data INTEGER.
BU :
nIw
Keterangan:
n = Cacah format I
w = Banyak kolom yang dipakai oleh data.
1
Contoh:
READ(*,100) IDATA, IHASIL
100
FORMAT(I5,I5)
Atau
100
FORMAT(2I5)
b. Format Tipe F
Tipe F dipakai untuk membaa atau menuliskan data-data REAL.
BU:
nFw.d
Keterangan:
n = cacah format F
w = banyak kolom yang dipakai oleh data
d = cacah digit di belakang titik desimal.
Contoh:
READ(*,100) X1, X2
100
FORMAT(F4.2,F4.2)
Atau
100
c.
FORMAT(2F4.2)
Format Tipe E
Tipe E dipakai untuk membaca atau menuliskan data-data REAL dengan cara
EXPONENT.
BU:
nEw.d
Keterangan:
n = cacah format E
w = banyak kolom yang dipakai oleh data
d = cacah digit di belakang titik desimal.
Contoh:
READ(*,100) X1, X2
100 FORMAT(E4.2,E4.2)
Atau
1
100 FORMAT(2E4.2)
d. Format Tipe X
Tipe X ini bukan untuk membaca atau menulis, melainkan hanya untuk memberitahu
banyak ruang kosong (spasi) antar data-data yang dibaca atau ditulis.
BU: nX
Contoh:
READ(*,100) PDAT,NILAI
100
e.
FORMAT(F5.1,3X,I5)
Format Literal
Untuk menuliskan data literal langsung dari program ke media output.
BU: xxxxxxxxxx
Contoh:
WRITE(*,100)
FORMAT(BELAJAR BAHASA FORTRAN)
STATEMEN CONTROL
1. STATEMEN GO TO
Ada dua bentuk untuk statemen ini, yaitu:
-
a.
GO TO tanpa syarat
Berfungsi memerintahkan proses untuk meloncat langsung ke statemen dengan label yang
ditunjuk.
Contoh:
1
GO TO 100
STOP
END
b. GO TO dengan hitungan
Statemen ini memberi perintah agar program loncat ke statemen dengan label n k apabila
harga var= k. Aturan-aturan untuk GO TO statemen dengan hitungan:
-
Harga var harus lebih kecil atau sama dengan m dan var 0.
Harga var harus telah ditentukan sebelum program tiba pada statemen ini.
Steiap nomor statemen yang ada dalam program dapat dipergunakan dalam GO TO
statemen dengan hitungan. Kecuali nomor statemen untuk FORMAT.
Contoh:
READ(*,10)N
GO TO (100,200,300)N
100 X=P*A
200
X=P*B
300
X=p*D
STOP
END
2. STATEMEN IF
Statemen IF ada 2 jenis:
-
Statemen IF hitungan
Statemen IF nalar.
a.
Statemen IF hitungan adalah untuk mengecek isi suatu variabel atau hasil suatu
pernyataan hitungan, yaitu apakah negatif, nol atau positif. Dan berdasarkan hasil
1
cek yang diperoleh, program diperintahkan loncat ke nomor statemen: n1, atau n2
atau n3.
BU : IF (pr) n1,n2,n3
Dimana:
pr : Pernyataan hitungan atau suatu variabel, boleh REAL atau INTEGER;
n1,n2,n3 : Nomor-nomor statemen yang akan dituju untuk digarap instruksinya.
Penjelasan:
-
Kalau harga variabel, atau hasil pernyataan hitungan < 0 (negatif), program loncat ke
n1. Hitungan = 0 (nol) program loncat ke n2 dan kalau hitungan > 0 (positif) program
loncat ke n3.
N1,n2,n3 dapat dua buiah sama, tetapi tidak dapat semua sama.
Contoh:
READ(*,10) A,B,C
IF(B**2-4*C)100,200,300
100 WRITE(*,110)
110 FORMAT(AKAR IMAJINER)
200
X=-B/(2.*A)
300
X1=(-B+SQRT(b**2-4*A*C))/(2.*A)
STOP
END
b. Statemen IF Nalar untuk membandingkan dua (atau lebih) variabel secara nalar,
kalau perbandingan nalar memberikan hasil ya, maka statemen I digarap, apabila
tidak dipenuhi maka program terus menggarap statemen di bawahnya.
1
Operator nalar yang dipakai:
.EQ.
sama dengan
.NE.
.LT.
.LE.
.GT.
lebih besar
.GE.
.OR.
atau
.AND.
dan
.NOT.
bukan
Contoh:
FORMAT(1X,TIDAK LULUS)
STOP
150
WRITE(*,200)
200
FORMAT(1X,LULUS)
STOP
END
3. STATEMEN DO
Berfungsi untuk memerintahkan komputer agar menjalankan suatu deretan, berulangulang dengan cara tertentu.
BU : DO n var=m1,m2,m3
: Nomor statemen dari suatu statemen yang merupakan batas akhir dari deretan
yang harus diproses berulang-ulang.
1
Var
Pada FORTRAN IV kalang DO tidak dapat diakhir dengan kontrol statemen, untuk
mengatasi ini dapat dipakai statemen CONTINUE. Sednag pada FORTARN 77 dijinkan.
Contoh:
DO 100 I =1,25
X=I**3
WRITE(*,10)X
100 IF (X .GT. 1000.0) GO TO 200
200
CONTINUE
STOP
END
SUBPROGRAM
Subprogram ada 2 macam:
-
subprogram FUNCTION
subprogram SUBROUTINE
1.
Subprogram FUNCTION
BU: FUNCTION nf(arg1,arg2argm)
Sifat-sifat FUNCTION :
Argumen-argumen
hanya
merupakan
input,
output
keluar
melalaui
nama
subprogram FUNCTION.
-
Boleh mempunyai lebih sari satu statemen RETURN, maupun juga statemen
STOP.
Contoh:
READ(*,10) A,B
C= TAMBAH(A,B)
WRITE(*,10)C
10
FORMAT(F8.2)
STOP
END
FUNCTION TAMBAH(X,Y)
TAMBAH=X+Y
RETURN
END
2. Subprogram SUBROUTINE
BU: SUBROUTINE ns(arg1, arg2argm)
Sifat-sifat SUBROUTINE:
Hampir sama dengan FUNCTION, hanya berbeda pada pemanggilannya yaitu
dengan cara : CALL nama subroutine. Dan SUBROUTINE tidak dapat
mengembalikan nilai sebagaimana dengan FUNCTION .
Contoh:
READ(*,10) A,B
TAMBAH(A,B)
STOP
END
SUBROUTINE TAMBAH(X,Y)
Z= X+Y
WRITE(*,100)Z
100
FORMAT(F8.2)
RETURN
END
1.
INTEGER A,B,C
WRITE (*,'(24(/))')
WRITE (*,'(A,\)') 'Masukkan Banyak Deret = '
READ (*,'(I2)') N
A=N
B=1
DO 10 I=1,N
DO 20 J=1,A
WRITE (*,'(A,\)') ' '
20
CONTINUE
WRITE (*,'(I1,\,A,I1)') A,' ',A
DO 30 J=1,B
WRITE (*,'(A,\)') ' '
30
CONTINUE
WRITE (*,'(I1,\,A,I1)') A,' ',A
WRITE (*,*)
A=A-1
B=B+2
2
10
CONTINUE
STOP
END
2
WRITE (*,'(A,\)') ' '
50 CONTINUE
IF (C .EQ. 1) THEN
WRITE (*,'(I1)') A
ELSE
WRITE (*,'(I1,\)') A
DO 60 K=1,B
WRITE (*,'(A,\)') ' '
60
CONTINUE
WRITE (*,'(I1)') A
ENDIF
A=A+1
B=B-2
C=C-1
40 CONTINUE
ENDIF
STOP
END
2
WRITE(*,*)
A=A-1
10 CONTINUE
STOP
END
Keterangan :
1. Tugas Diatas dikumpulkan dalam bentuk print dan di jilid.
2. Tugas ini adalah tugas Peorangan bukan tugas kelompok
3. Bisa dikumpulkan perkelas atau perorangan ( Nanti akan mendapatkan tanda / bukti
mengumpulkan tugas )