Tujuan :
Setelah membaca
bab ini diharapkan praktikan dapat menggunakan Program Fortran dan mengerti bagaimana cara
membuat 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.
Struktur Program
Fortran :
Dibagi
menjadi 5 bagian kolom dan tiap baris
di dalam program dapat berisi :
1.
Metacommand
2.
Komentar
3.
Statement
4.
Sambungan dari statement baris sebelumnya.
Aturan Penulisan
Fortran :
- Kolom pertama merupakan Komentar atau metacommand
(C, *, $).
2.
Kolom 1 sampai 5 untuk penulisan label statement berupa angka.
3.
Kolom 6 untuk indikasi sambungan dari baris sebelumnya.
4.
Kolom 7 sampai 72 untuk penulisan Statement FORTRAN.
5.
Kolom 73 sampai 80 tidak digunakan (Untuk Komentar bebas).
Elemen Program
Fortran :
- Metacommand atau compiler directive sifatnya
optional.
- Komentar berupa tulisan bebas.
3. Statement merupakan inti yang berupa
instruksi-instruksi.
Suatu statement
dapat dibentuk dari elemen-elemen :
1. Konstanta 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
-2147483647 sampai 2147483647. Kontanta Real ketepatan tunggal
(Pecahan), mempunyai batasan : 8.43E-37
sampai dengan 3.37E+38 Positif -3.37E+38 sampai dengan -8.43E-37
Negatif Konstanta Real Ketepatan ganda (Pecahan), mempunyai batasan :
4.19D-307 sampai dengan 1.67D+308
Positif -1.67D+308 sampai
dengan -4.19D-307 Negatif Konstanta Karakter (String) yang
ditulis dalam tanda Petik. Konstanta Logika (Nilai Logika) .TRUE. .FALSE.
Operator :
Aritmatika :
** Pangkat level 1
* Kali level
2
/ Bagi level
2
+ Penjumlahan level 3
- Pengurangan level 3
Hubungan :
.LT.
Lebih Kecil dari
.LE.
Lebih kecil sama dengan dari
.EQ.
Sama dengan
.NE.
Tidak sama dengan
.GT.
Lebih besar dari
.GE.
Lebih besar sama dengan dari
Logika :
.NOT. Tidak
atau Bukan
.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.
Nama : dapat
berupa variabel, larik(array), fungsi, atau rutin.
Dengan ketentuan
sebagai berikut :
- Maksimum panjangnya 1320 karakter tapi hanya 6
karakter pertama yang dibaca.
- Karakter pertama harus berupa huruf.
3. Tidak boleh ada spasi atau blank.
- Tidak boleh mengandung karakter khusus.
Nama Variabel ada 5 tipe :
1.
Variabel Integer
untuk menyimpan nilai numerik bulat. Bila tidak 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.
5.
Variabel Logika
menyimpan nilai logika .TRUE. .FALSE. Diawali dengan huruf apa saja boleh juga
I, J, K, L, M, N.
Nama Larik (
Array ) :
Digunakan untuk
menyimpan beberapa nilai dalam satu nama larik. Pada Fortran dapat berdimensi
satu, dua, tiga sampai tujuh. Bila tidak didefinisikan maka harus diawali
dengan huruf 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
Unit Specifier dapat berupa :
1.
* atau 0 menunjukkan unit alat untuk Keyboard atau layar.
2.
Ungkapan Integer, yaitu nilai integer selain nilai 0
menunjukkan unit alat yang dipergunakan adalah file eksternal (printer atau
file disk). Statement OPEN 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.
contoh : OPEN(1,File='LPT1:')
Format
Specifier :
Digunakan untuk menunjukkan format yang akan
dipergunakan oleh data input ataupun output.
Statement :
1.
Statement yang terolah (Executable Statement) yaitu :
statement yang menyebabkan suatu operasi dilakukan. Contoh : ASSIGN, CALL,
CONTINUE, DO, ELSE, ELSEIF, AND, ENDIF, GOTO, IF, PAUSE, RETURN, STOP,
BACKSPACE, CLOSE, ENDFILE, OPEN, READ, REWIND dan WRITE.
2.
Statement tak terolah (Non-Executable Statement) yaitu :
statement yang tidak melakukan operasi. Contoh : FORMAT, DATA, PARAMETER,
COMMON, DIMENSION, QUIVALENCE, EXTERNAL, IMPLICIT, INTRINSIC, SAVE dan TYPE ,
PROGRAM, FUNCTION SUBROUTINE.
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> menunjukkan label dari statement FORMAT yang akan
digunakan oleh statement READ atau statement WRITE.
- <format-spec> adalah
format specification, merupakan bentuk yang menyediakan informasi terhadap
letak, tipe dan panjang dari
data. Format specification ini harus ditulis dalam tanda
kurung. Isi dari format specification ini yaitu edit
descriptor.
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.
§ 0, berarti
memberi spasi satu baris dari baris sebelumnya.
§ 1, berarti akan
mencetak di halaman baru ( tidak berlaku di layar, hanya di
printer).
§ +, berarti tidak
ganti baris, tetapi overprinting
(menumpangi penampilan sebelumnya di baris yang sama).
FORMAT SPECIFICATION BERULANG
Selain
repeatable edit descriptor dapat
diulang dengan sejumlah perulangan tertentu, format specification juga
dapat di ulang, dengan bentuk umum:
<r> <format specification>
Penjelasan:
<r>
merupakan jumlah pengulangannya.
Maksimum
jumlah pengulangan untuk
format specification adalah 3
Level.
1.
Level pertama pada format specification adalah :
2('BASIC')
Yang sama dengan: 'BASIC BASIC'
2.
Level kedua pada format specification adalah:
3.
2('COBOL',2('BASIC') Yang sama dengan:2('COBOL BASIC
BASIC')
4.
atau 'COBOL BASIC BASIC COBOL BASIC BASIC'
5.
Level ketiga pada format specification adalah:
5(3X,'FORTRAN',2X,2('COBOL',2('BASIC')),/)
Yang sama dengan :
5(3X,'FORTRAN',2X,'COBOL BASIC BASIC COBOl BASIC BASIC',/) atau : 5('FORTRAN COBOL BASIC
BASIC COBOL BASIC
BASIC',/)
Sehingga bila program ini dijalankan,akan didapat hasil sbb:
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
STATEMENT DATA
DAN STATEMENT PARAMETER
Untuk
memasukkan suatu data ke suatu variabel atau larik atau elemen dari suatu larik
dapat dilakukan dengan beberapa cara,
yaitu:
1. Dengan
statement pengerjaan
Contoh A = 5.25
Maka variabel A
akan berisi nilai 5.25.
Contoh :
A(1) = 7.15
A(2) = 8.00
A(3) = 5.55
Maka larik
A untuk elemen pertama berisi
nilai 7.15, elemen kedua berisi nilai 8.00 dan elemen ketiga berisi nilai 5.55.
2. Dengan
statement READ
Contoh:
READ (*,10)
10 FORMAT (F5.2)
3. Dengan
statement DATA.
Bila
data yang akan dimasukkan ke suatu
variabel atau larik
jumlahnya cukup banyak dan sifatnya
konstan, maka akan lebih baik bila digunakan statement DATA.
4. Dengan
statement PARAMETER.
Banyak
digunakan untuk memasukkan data
konstan yang tidak begitu banyak.
STATEMENT DATA
Bentuk umum:
DATA<nlist>/<clist>/[[,]<nlist>/<clist>/]...
Penjelasan:
§ Statement DATA
merupakan nonexecutable statemen dan harus diletakkan setelah statement spesifikasi bila
statement spesifikasi digunakan.
§ <nlist> merupakan
satu atau kumpulan dari nama variabel, larik atau
elemen larik.
§ <clist>
merupakan satu atau kumpulan dari
konstanta Jumlah konstanta untuk
masing-masing <clist> harus sama dengan jumlah
dari nama variabel atau elemen larik untuk masing-masing <nlist>.
MEMASUKKAN DATA KE
VARIABEL
Data yang berbentuk konstanta
yang akan dimasukkan ke suatu variabel
harus mempunyai tipe yang sama dengan variabelnya. Konstanta
numerik harus dengan
variable numerik,konstanta karakter harus dengan variabel karakter,
konstanta logika harus dengan variabel logika. Ada beberapa cara untuk
memasukkan data ke variabel
dengan statement DATA, sebagai berikut ini.
- Satu nama variabel dihubungkan dengan satu konstanta
2.
Kumpulan variabel dihubungkan dengan kumpulan konstanta
3.
Sejumlah variabel dihubungkan
dengan sebuah konstanta dengan
factor
Pengulang.
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. Satu elemen larik dihubungkan dengan
satu konstanta
2. Kumpulan elemen
larik dihubungkan dengan
kumpulan konstanta
3. Satu nama
larik dihubungkan dengan kumpulan konstanta (DIMENSION, IMPLICIT DAN TYPE)
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.
Suatu deklarasi
dimensi dapat berupa:
1. Suatu
konstanta integer positif tidak bertanda. Bila deklarasi dimensi berupa nilai
integer positif, maka larik yang bersangkutan mempunyai elemen dengan batas
atas yang sudah pasti, yang ditunjukkan oleh deklarasi dimensi tersebut.
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.
3. Suatu asterik
(*)
Jika deklarasi
dimensi adalah asterik (*),maka lariknya disebut dengan assumed-sizedarray (larik dengan ukuran asumsi), yang berarti
batas atas dari elemen larik tidak ditentukan,
tetapi diasumsikan. Assumed sized array juga digunakan di subroutine.
STATEMENT INPUT/OUTPUT
- 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
I dengan FORMAT I5
- 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.
- 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.
- 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.
Contoh:
READ(*,100)
IDATA, IHASIL
100
FORMAT(I5,I5)
Atau
100
FORMAT(2I5)
- 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
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
100FORMAT(E4.2,E4.2)
Atau
100FORMAT(2E4.2)
- 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 dengan n:
jumlah ruang kosong.
Contoh:
READ(*,100) PDAT,NILAI
100
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:
-
GO TO statemen tanpa syarat dan
-
GO TO statemen dengan hitungan
- GO TO tanpa syarat
Berfungsi memerintahkan proses untuk meloncat langsung ke statemen dengan
label yang ditunjuk.
Contoh:
100READ(*,10) A,B
C=A*B
-
GO TO 100
-
STOP
END
- GO TO dengan hitungan
Statemen ini memberi perintah agar program loncat ke statemen dengan label
nk apabila harga var= k. Aturan-aturan untuk GO TO statemen dengan
hitungan:
-
n1,n2,..,nm dapat tidak urut dan dapat
sama.
-
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
100X=P*A
200X=P*B
300 X=p*D
STOP
END
2.
STATEMEN IF
Statemen IF
ada 2 jenis:
-
Statemen IF hitungan
-
Statemen IF nalar.
- Statemen IF hitungan adalah untuk mengecek isi suatu variabel atau
hasil suatu pernyataan hitungan, yaitu apakah negatif, nol atau positif.
Dan berdasarkan hasil 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.
-
Hirarki dan peraturan-peraturan lain
berlaku juga pada ekspresi pr di dalam statemen IF.
Contoh:
READ(*,10) A,B,C
IF(B**2-4*C)100,200,300
100WRITE(*,110)
110FORMAT(‘AKAR IMAJINER’)
200 X=-B/(2.*A)
300 X1=(-B+SQRT(b**2-4*A*C))/(2.*A)
STOP
END
- 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.
BU: IF (ekspresi nalar) statemen)
Operator nalar yang dipakai:
.EQ. sama dengan
.NE. tidak sama dengan
.LT. lebih kecil dari
.LE. lebih kecil atau
sama dengan
.GT. lebih besar
.GE. lebih besar atau
sama dengan
.OR. atau
.AND. dan
.NOT. bukan
Contoh:
IF(A .LE. 10.0 .AND. A .GT. 5.0) GO
TO 150
WRITE(*,100)
100
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,
berulang-ulang dengan cara tertentu.
BU : DO n var=m1,m2,m3
n : Nomor
statemen dari suatu statemen yang merupakan batas akhir dari deretan yang harus
diproses berulang-ulang.
Var : Variabel integer/real yang harganya akan
berubah-ubah dari suatu harga awal m1 ke harga akhir m2 dengan besar langkah
m3.
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
100IF (X .GT. 1000.0) GO TO 200
200CONTINUE
STOP
END
SUBPROGRAM
Subprogram ada
2 macam:
-
subprogram FUNCTION
-
subprogram SUBROUTINE
1.
Subprogram FUNCTION
BU: FUNCTION nf(arg1,arg2…argm)
Sifat-sifat
FUNCTION :
-
bersifat otonom, sehingga nama-nama
variabel di dalam subprogram boleh sama dengan nama-anam variabel di dalam
program pemanggil dengan tidak terjadi kesalahan.
-
Dipanggil langsung dengan namanya.
-
Argumen-argumen hanya merupakan input,
output keluar melalaui nama subprogram FUNCTION.
-
Boleh mempunyai lebih sari satu statemen RETURN, maupun juga statemen
STOP.
-
Argumen dapat berupa konstanta maupun
variabel, real atau integer.
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, arg2…argm)
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
Virtual Lab PTA 2008 – 2009
Matematika Lanjut 2
- Jelaskan Struktur Program Fortran dan Aturan
penulisan dalam Fortran !
- Apa perbedaan Statement Stop dan End!
- Apa perbedaan Procedure dan Function!
- Buatlah program Fortran
- Program Menghitung Luas Trapesium
- Program Perkalian Matriks
- Apa hasil (output) dari program berikut ini!
A. PROGRAM 1, Bila banyaknya deret 5
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
10 CONTINUE
STOP
END
A.
Program 2 Bila banyaknya deret 5
INTEGER A,B,C
WRITE (*,'(24(/))')
WRITE (*,'(A,\)')'Masukkan Banyaknya Deret
= '
READ (*,'(I2)') N
A=N
C=N-1
B=1
DO 10 I = 1,N
DO
20 J = 1,A
WRITE (*,'(A,\)') ' '
20 CONTINUE
IF
(A .EQ. N) THEN WRITE (*,'(I1)') A
ELSE WRITE (*,'(I1,\)') A
DO 30 K=1,B
WRITE (*,'(A,\)') ' '
30
CONTINUE
WRITE (*,'(I1)') A
B=B+2
ENDIF
A=A-1
10 CONTINUE
A=2
B=B-4
IF (N .NE. 1) THEN
DO 40 I=1,C
DO 50 J=1,A
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
B.
Program 3 Bila banyaknya deret 5
INTEGER A,B,C
WRITE (*,'(24(/))')
WRITE (*,'(A,\)') 'Masukkan Jumlah Deret
= '
READ (*,'(I2)') N
A=N
DO 10 I=1,N
B=I
DO 20 J=1,A
WRITE (*,'(I2,\,A)') B,' '
B=B+2
20
CONTINUE
WRITE(*,*)
A=A-1
10 CONTINUE
STOP
END Tujuan :
Setelah membaca
bab ini diharapkan praktikan dapat menggunakan Program Fortran dan mengerti bagaimana cara
membuat 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.
Struktur Program
Fortran :
Dibagi
menjadi 5 bagian kolom dan tiap baris
di dalam program dapat berisi :
1.
Metacommand
2.
Komentar
3.
Statement
4.
Sambungan dari statement baris sebelumnya.
Aturan Penulisan
Fortran :
- Kolom pertama merupakan Komentar atau metacommand
(C, *, $).
2.
Kolom 1 sampai 5 untuk penulisan label statement berupa angka.
3.
Kolom 6 untuk indikasi sambungan dari baris sebelumnya.
4.
Kolom 7 sampai 72 untuk penulisan Statement FORTRAN.
5.
Kolom 73 sampai 80 tidak digunakan (Untuk Komentar bebas).
Elemen Program
Fortran :
- Metacommand atau compiler directive sifatnya
optional.
- Komentar berupa tulisan bebas.
3. Statement merupakan inti yang berupa
instruksi-instruksi.
Suatu statement
dapat dibentuk dari elemen-elemen :
1. Konstanta 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
-2147483647 sampai 2147483647. Kontanta Real ketepatan tunggal
(Pecahan), mempunyai batasan : 8.43E-37
sampai dengan 3.37E+38 Positif -3.37E+38 sampai dengan -8.43E-37
Negatif Konstanta Real Ketepatan ganda (Pecahan), mempunyai batasan :
4.19D-307 sampai dengan 1.67D+308
Positif -1.67D+308 sampai
dengan -4.19D-307 Negatif Konstanta Karakter (String) yang
ditulis dalam tanda Petik. Konstanta Logika (Nilai Logika) .TRUE. .FALSE.
Operator :
Aritmatika :
** Pangkat level 1
* Kali level
2
/ Bagi level
2
+ Penjumlahan level 3
- Pengurangan level 3
Hubungan :
.LT.
Lebih Kecil dari
.LE.
Lebih kecil sama dengan dari
.EQ.
Sama dengan
.NE.
Tidak sama dengan
.GT.
Lebih besar dari
.GE.
Lebih besar sama dengan dari
Logika :
.NOT. Tidak
atau Bukan
.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.
Nama : dapat
berupa variabel, larik(array), fungsi, atau rutin.
Dengan ketentuan
sebagai berikut :
- Maksimum panjangnya 1320 karakter tapi hanya 6
karakter pertama yang dibaca.
- Karakter pertama harus berupa huruf.
3. Tidak boleh ada spasi atau blank.
- Tidak boleh mengandung karakter khusus.
Nama Variabel ada 5 tipe :
1.
Variabel Integer
untuk menyimpan nilai numerik bulat. Bila tidak 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.
5.
Variabel Logika
menyimpan nilai logika .TRUE. .FALSE. Diawali dengan huruf apa saja boleh juga
I, J, K, L, M, N.
Nama Larik (
Array ) :
Digunakan untuk
menyimpan beberapa nilai dalam satu nama larik. Pada Fortran dapat berdimensi
satu, dua, tiga sampai tujuh. Bila tidak didefinisikan maka harus diawali
dengan huruf 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
Unit Specifier dapat berupa :
1.
* atau 0 menunjukkan unit alat untuk Keyboard atau layar.
2.
Ungkapan Integer, yaitu nilai integer selain nilai 0
menunjukkan unit alat yang dipergunakan adalah file eksternal (printer atau
file disk). Statement OPEN 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.
contoh : OPEN(1,File='LPT1:')
Format
Specifier :
Digunakan untuk menunjukkan format yang akan
dipergunakan oleh data input ataupun output.
Statement :
1.
Statement yang terolah (Executable Statement) yaitu :
statement yang menyebabkan suatu operasi dilakukan. Contoh : ASSIGN, CALL,
CONTINUE, DO, ELSE, ELSEIF, AND, ENDIF, GOTO, IF, PAUSE, RETURN, STOP,
BACKSPACE, CLOSE, ENDFILE, OPEN, READ, REWIND dan WRITE.
2.
Statement tak terolah (Non-Executable Statement) yaitu :
statement yang tidak melakukan operasi. Contoh : FORMAT, DATA, PARAMETER,
COMMON, DIMENSION, QUIVALENCE, EXTERNAL, IMPLICIT, INTRINSIC, SAVE dan TYPE ,
PROGRAM, FUNCTION SUBROUTINE.
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> menunjukkan label dari statement FORMAT yang akan
digunakan oleh statement READ atau statement WRITE.
- <format-spec> adalah
format specification, merupakan bentuk yang menyediakan informasi terhadap
letak, tipe dan panjang dari
data. Format specification ini harus ditulis dalam tanda
kurung. Isi dari format specification ini yaitu edit
descriptor.
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.
§ 0, berarti
memberi spasi satu baris dari baris sebelumnya.
§ 1, berarti akan
mencetak di halaman baru ( tidak berlaku di layar, hanya di
printer).
§ +, berarti tidak
ganti baris, tetapi overprinting
(menumpangi penampilan sebelumnya di baris yang sama).
FORMAT SPECIFICATION BERULANG
Selain
repeatable edit descriptor dapat
diulang dengan sejumlah perulangan tertentu, format specification juga
dapat di ulang, dengan bentuk umum:
<r> <format specification>
Penjelasan:
<r>
merupakan jumlah pengulangannya.
Maksimum
jumlah pengulangan untuk
format specification adalah 3
Level.
1.
Level pertama pada format specification adalah :
2('BASIC')
Yang sama dengan: 'BASIC BASIC'
2.
Level kedua pada format specification adalah:
3.
2('COBOL',2('BASIC') Yang sama dengan:2('COBOL BASIC
BASIC')
4.
atau 'COBOL BASIC BASIC COBOL BASIC BASIC'
5.
Level ketiga pada format specification adalah:
5(3X,'FORTRAN',2X,2('COBOL',2('BASIC')),/)
Yang sama dengan :
5(3X,'FORTRAN',2X,'COBOL BASIC BASIC COBOl BASIC BASIC',/) atau : 5('FORTRAN COBOL BASIC
BASIC COBOL BASIC
BASIC',/)
Sehingga bila program ini dijalankan,akan didapat hasil sbb:
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
STATEMENT DATA
DAN STATEMENT PARAMETER
Untuk
memasukkan suatu data ke suatu variabel atau larik atau elemen dari suatu larik
dapat dilakukan dengan beberapa cara,
yaitu:
1. Dengan
statement pengerjaan
Contoh A = 5.25
Maka variabel A
akan berisi nilai 5.25.
Contoh :
A(1) = 7.15
A(2) = 8.00
A(3) = 5.55
Maka larik
A untuk elemen pertama berisi
nilai 7.15, elemen kedua berisi nilai 8.00 dan elemen ketiga berisi nilai 5.55.
2. Dengan
statement READ
Contoh:
READ (*,10)
10 FORMAT (F5.2)
3. Dengan
statement DATA.
Bila
data yang akan dimasukkan ke suatu
variabel atau larik
jumlahnya cukup banyak dan sifatnya
konstan, maka akan lebih baik bila digunakan statement DATA.
4. Dengan
statement PARAMETER.
Banyak
digunakan untuk memasukkan data
konstan yang tidak begitu banyak.
STATEMENT DATA
Bentuk umum:
DATA<nlist>/<clist>/[[,]<nlist>/<clist>/]...
Penjelasan:
§ Statement DATA
merupakan nonexecutable statemen dan harus diletakkan setelah statement spesifikasi bila
statement spesifikasi digunakan.
§ <nlist> merupakan
satu atau kumpulan dari nama variabel, larik atau
elemen larik.
§ <clist>
merupakan satu atau kumpulan dari
konstanta Jumlah konstanta untuk
masing-masing <clist> harus sama dengan jumlah
dari nama variabel atau elemen larik untuk masing-masing <nlist>.
MEMASUKKAN DATA KE
VARIABEL
Data yang berbentuk konstanta
yang akan dimasukkan ke suatu variabel
harus mempunyai tipe yang sama dengan variabelnya. Konstanta
numerik harus dengan
variable numerik,konstanta karakter harus dengan variabel karakter,
konstanta logika harus dengan variabel logika. Ada beberapa cara untuk
memasukkan data ke variabel
dengan statement DATA, sebagai berikut ini.
- Satu nama variabel dihubungkan dengan satu konstanta
2.
Kumpulan variabel dihubungkan dengan kumpulan konstanta
3.
Sejumlah variabel dihubungkan
dengan sebuah konstanta dengan
factor
Pengulang.
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. Satu elemen larik dihubungkan dengan
satu konstanta
2. Kumpulan elemen
larik dihubungkan dengan
kumpulan konstanta
3. Satu nama
larik dihubungkan dengan kumpulan konstanta (DIMENSION, IMPLICIT DAN TYPE)
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.
Suatu deklarasi
dimensi dapat berupa:
1. Suatu
konstanta integer positif tidak bertanda. Bila deklarasi dimensi berupa nilai
integer positif, maka larik yang bersangkutan mempunyai elemen dengan batas
atas yang sudah pasti, yang ditunjukkan oleh deklarasi dimensi tersebut.
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.
3. Suatu asterik
(*)
Jika deklarasi
dimensi adalah asterik (*),maka lariknya disebut dengan assumed-sizedarray (larik dengan ukuran asumsi), yang berarti
batas atas dari elemen larik tidak ditentukan,
tetapi diasumsikan. Assumed sized array juga digunakan di subroutine.
STATEMENT INPUT/OUTPUT
- 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
I dengan FORMAT I5
- 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.
- 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.
- 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.
Contoh:
READ(*,100)
IDATA, IHASIL
100
FORMAT(I5,I5)
Atau
100
FORMAT(2I5)
- 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
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
100FORMAT(E4.2,E4.2)
Atau
100FORMAT(2E4.2)
- 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 dengan n:
jumlah ruang kosong.
Contoh:
READ(*,100) PDAT,NILAI
100
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:
-
GO TO statemen tanpa syarat dan
-
GO TO statemen dengan hitungan
- GO TO tanpa syarat
Berfungsi memerintahkan proses untuk meloncat langsung ke statemen dengan
label yang ditunjuk.
Contoh:
100READ(*,10) A,B
C=A*B
-
GO TO 100
-
STOP
END
- GO TO dengan hitungan
Statemen ini memberi perintah agar program loncat ke statemen dengan label
nk apabila harga var= k. Aturan-aturan untuk GO TO statemen dengan
hitungan:
-
n1,n2,..,nm dapat tidak urut dan dapat
sama.
-
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
100X=P*A
200X=P*B
300 X=p*D
STOP
END
2.
STATEMEN IF
Statemen IF
ada 2 jenis:
-
Statemen IF hitungan
-
Statemen IF nalar.
- Statemen IF hitungan adalah untuk mengecek isi suatu variabel atau
hasil suatu pernyataan hitungan, yaitu apakah negatif, nol atau positif.
Dan berdasarkan hasil 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.
-
Hirarki dan peraturan-peraturan lain
berlaku juga pada ekspresi pr di dalam statemen IF.
Contoh:
READ(*,10) A,B,C
IF(B**2-4*C)100,200,300
100WRITE(*,110)
110FORMAT(‘AKAR IMAJINER’)
200 X=-B/(2.*A)
300 X1=(-B+SQRT(b**2-4*A*C))/(2.*A)
STOP
END
- 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.
BU: IF (ekspresi nalar) statemen)
Operator nalar yang dipakai:
.EQ. sama dengan
.NE. tidak sama dengan
.LT. lebih kecil dari
.LE. lebih kecil atau
sama dengan
.GT. lebih besar
.GE. lebih besar atau
sama dengan
.OR. atau
.AND. dan
.NOT. bukan
Contoh:
IF(A .LE. 10.0 .AND. A .GT. 5.0) GO
TO 150
WRITE(*,100)
100
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,
berulang-ulang dengan cara tertentu.
BU : DO n var=m1,m2,m3
n : Nomor
statemen dari suatu statemen yang merupakan batas akhir dari deretan yang harus
diproses berulang-ulang.
Var : Variabel integer/real yang harganya akan
berubah-ubah dari suatu harga awal m1 ke harga akhir m2 dengan besar langkah
m3.
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
100IF (X .GT. 1000.0) GO TO 200
200CONTINUE
STOP
END
SUBPROGRAM
Subprogram ada
2 macam:
-
subprogram FUNCTION
-
subprogram SUBROUTINE
1.
Subprogram FUNCTION
BU: FUNCTION nf(arg1,arg2…argm)
Sifat-sifat
FUNCTION :
-
bersifat otonom, sehingga nama-nama
variabel di dalam subprogram boleh sama dengan nama-anam variabel di dalam
program pemanggil dengan tidak terjadi kesalahan.
-
Dipanggil langsung dengan namanya.
-
Argumen-argumen hanya merupakan input,
output keluar melalaui nama subprogram FUNCTION.
-
Boleh mempunyai lebih sari satu statemen RETURN, maupun juga statemen
STOP.
-
Argumen dapat berupa konstanta maupun
variabel, real atau integer.
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, arg2…argm)
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
Virtual Lab PTA 2008 – 2009
Matematika Lanjut 2
- Jelaskan Struktur Program Fortran dan Aturan
penulisan dalam Fortran !
- Apa perbedaan Statement Stop dan End!
- Apa perbedaan Procedure dan Function!
- Buatlah program Fortran
- Program Menghitung Luas Trapesium
- Program Perkalian Matriks
- Apa hasil (output) dari program berikut ini!
A. PROGRAM 1, Bila banyaknya deret 5
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
10 CONTINUE
STOP
END
A.
Program 2 Bila banyaknya deret 5
INTEGER A,B,C
WRITE (*,'(24(/))')
WRITE (*,'(A,\)')'Masukkan Banyaknya Deret
= '
READ (*,'(I2)') N
A=N
C=N-1
B=1
DO 10 I = 1,N
DO
20 J = 1,A
WRITE (*,'(A,\)') ' '
20 CONTINUE
IF
(A .EQ. N) THEN WRITE (*,'(I1)') A
ELSE WRITE (*,'(I1,\)') A
DO 30 K=1,B
WRITE (*,'(A,\)') ' '
30
CONTINUE
WRITE (*,'(I1)') A
B=B+2
ENDIF
A=A-1
10 CONTINUE
A=2
B=B-4
IF (N .NE. 1) THEN
DO 40 I=1,C
DO 50 J=1,A
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
B.
Program 3 Bila banyaknya deret 5
INTEGER A,B,C
WRITE (*,'(24(/))')
WRITE (*,'(A,\)') 'Masukkan Jumlah Deret
= '
READ (*,'(I2)') N
A=N
DO 10 I=1,N
B=I
DO 20 J=1,A
WRITE (*,'(I2,\,A)') B,' '
B=B+2
20
CONTINUE
WRITE(*,*)
A=A-1
10 CONTINUE
STOP
END Tujuan :
Setelah membaca
bab ini diharapkan praktikan dapat menggunakan Program Fortran dan mengerti bagaimana cara
membuat 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.
Struktur Program
Fortran :
Dibagi
menjadi 5 bagian kolom dan tiap baris
di dalam program dapat berisi :
1.
Metacommand
2.
Komentar
3.
Statement
4.
Sambungan dari statement baris sebelumnya.
Aturan Penulisan
Fortran :
- Kolom pertama merupakan Komentar atau metacommand
(C, *, $).
2.
Kolom 1 sampai 5 untuk penulisan label statement berupa angka.
3.
Kolom 6 untuk indikasi sambungan dari baris sebelumnya.
4.
Kolom 7 sampai 72 untuk penulisan Statement FORTRAN.
5.
Kolom 73 sampai 80 tidak digunakan (Untuk Komentar bebas).
Elemen Program
Fortran :
- Metacommand atau compiler directive sifatnya
optional.
- Komentar berupa tulisan bebas.
3. Statement merupakan inti yang berupa
instruksi-instruksi.
Suatu statement
dapat dibentuk dari elemen-elemen :
1. Konstanta 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
-2147483647 sampai 2147483647. Kontanta Real ketepatan tunggal
(Pecahan), mempunyai batasan : 8.43E-37
sampai dengan 3.37E+38 Positif -3.37E+38 sampai dengan -8.43E-37
Negatif Konstanta Real Ketepatan ganda (Pecahan), mempunyai batasan :
4.19D-307 sampai dengan 1.67D+308
Positif -1.67D+308 sampai
dengan -4.19D-307 Negatif Konstanta Karakter (String) yang
ditulis dalam tanda Petik. Konstanta Logika (Nilai Logika) .TRUE. .FALSE.
Operator :
Aritmatika :
** Pangkat level 1
* Kali level
2
/ Bagi level
2
+ Penjumlahan level 3
- Pengurangan level 3
Hubungan :
.LT.
Lebih Kecil dari
.LE.
Lebih kecil sama dengan dari
.EQ.
Sama dengan
.NE.
Tidak sama dengan
.GT.
Lebih besar dari
.GE.
Lebih besar sama dengan dari
Logika :
.NOT. Tidak
atau Bukan
.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.
Nama : dapat
berupa variabel, larik(array), fungsi, atau rutin.
Dengan ketentuan
sebagai berikut :
- Maksimum panjangnya 1320 karakter tapi hanya 6
karakter pertama yang dibaca.
- Karakter pertama harus berupa huruf.
3. Tidak boleh ada spasi atau blank.
- Tidak boleh mengandung karakter khusus.
Nama Variabel ada 5 tipe :
1.
Variabel Integer
untuk menyimpan nilai numerik bulat. Bila tidak 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.
5.
Variabel Logika
menyimpan nilai logika .TRUE. .FALSE. Diawali dengan huruf apa saja boleh juga
I, J, K, L, M, N.
Nama Larik (
Array ) :
Digunakan untuk
menyimpan beberapa nilai dalam satu nama larik. Pada Fortran dapat berdimensi
satu, dua, tiga sampai tujuh. Bila tidak didefinisikan maka harus diawali
dengan huruf 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
Unit Specifier dapat berupa :
1.
* atau 0 menunjukkan unit alat untuk Keyboard atau layar.
2.
Ungkapan Integer, yaitu nilai integer selain nilai 0
menunjukkan unit alat yang dipergunakan adalah file eksternal (printer atau
file disk). Statement OPEN 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.
contoh : OPEN(1,File='LPT1:')
Format
Specifier :
Digunakan untuk menunjukkan format yang akan
dipergunakan oleh data input ataupun output.
Statement :
1.
Statement yang terolah (Executable Statement) yaitu :
statement yang menyebabkan suatu operasi dilakukan. Contoh : ASSIGN, CALL,
CONTINUE, DO, ELSE, ELSEIF, AND, ENDIF, GOTO, IF, PAUSE, RETURN, STOP,
BACKSPACE, CLOSE, ENDFILE, OPEN, READ, REWIND dan WRITE.
2.
Statement tak terolah (Non-Executable Statement) yaitu :
statement yang tidak melakukan operasi. Contoh : FORMAT, DATA, PARAMETER,
COMMON, DIMENSION, QUIVALENCE, EXTERNAL, IMPLICIT, INTRINSIC, SAVE dan TYPE ,
PROGRAM, FUNCTION SUBROUTINE.
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> menunjukkan label dari statement FORMAT yang akan
digunakan oleh statement READ atau statement WRITE.
- <format-spec> adalah
format specification, merupakan bentuk yang menyediakan informasi terhadap
letak, tipe dan panjang dari
data. Format specification ini harus ditulis dalam tanda
kurung. Isi dari format specification ini yaitu edit
descriptor.
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.
§ 0, berarti
memberi spasi satu baris dari baris sebelumnya.
§ 1, berarti akan
mencetak di halaman baru ( tidak berlaku di layar, hanya di
printer).
§ +, berarti tidak
ganti baris, tetapi overprinting
(menumpangi penampilan sebelumnya di baris yang sama).
FORMAT SPECIFICATION BERULANG
Selain
repeatable edit descriptor dapat
diulang dengan sejumlah perulangan tertentu, format specification juga
dapat di ulang, dengan bentuk umum:
<r> <format specification>
Penjelasan:
<r>
merupakan jumlah pengulangannya.
Maksimum
jumlah pengulangan untuk
format specification adalah 3
Level.
1.
Level pertama pada format specification adalah :
2('BASIC')
Yang sama dengan: 'BASIC BASIC'
2.
Level kedua pada format specification adalah:
3.
2('COBOL',2('BASIC') Yang sama dengan:2('COBOL BASIC
BASIC')
4.
atau 'COBOL BASIC BASIC COBOL BASIC BASIC'
5.
Level ketiga pada format specification adalah:
5(3X,'FORTRAN',2X,2('COBOL',2('BASIC')),/)
Yang sama dengan :
5(3X,'FORTRAN',2X,'COBOL BASIC BASIC COBOl BASIC BASIC',/) atau : 5('FORTRAN COBOL BASIC
BASIC COBOL BASIC
BASIC',/)
Sehingga bila program ini dijalankan,akan didapat hasil sbb:
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
FORTRAN COBOL BASIC BASIC
COBOL BASIC BASIC
STATEMENT DATA
DAN STATEMENT PARAMETER
Untuk
memasukkan suatu data ke suatu variabel atau larik atau elemen dari suatu larik
dapat dilakukan dengan beberapa cara,
yaitu:
1. Dengan
statement pengerjaan
Contoh A = 5.25
Maka variabel A
akan berisi nilai 5.25.
Contoh :
A(1) = 7.15
A(2) = 8.00
A(3) = 5.55
Maka larik
A untuk elemen pertama berisi
nilai 7.15, elemen kedua berisi nilai 8.00 dan elemen ketiga berisi nilai 5.55.
2. Dengan
statement READ
Contoh:
READ (*,10)
10 FORMAT (F5.2)
3. Dengan
statement DATA.
Bila
data yang akan dimasukkan ke suatu
variabel atau larik
jumlahnya cukup banyak dan sifatnya
konstan, maka akan lebih baik bila digunakan statement DATA.
4. Dengan
statement PARAMETER.
Banyak
digunakan untuk memasukkan data
konstan yang tidak begitu banyak.
STATEMENT DATA
Bentuk umum:
DATA<nlist>/<clist>/[[,]<nlist>/<clist>/]...
Penjelasan:
§ Statement DATA
merupakan nonexecutable statemen dan harus diletakkan setelah statement spesifikasi bila
statement spesifikasi digunakan.
§ <nlist> merupakan
satu atau kumpulan dari nama variabel, larik atau
elemen larik.
§ <clist>
merupakan satu atau kumpulan dari
konstanta Jumlah konstanta untuk
masing-masing <clist> harus sama dengan jumlah
dari nama variabel atau elemen larik untuk masing-masing <nlist>.
MEMASUKKAN DATA KE
VARIABEL
Data yang berbentuk konstanta
yang akan dimasukkan ke suatu variabel
harus mempunyai tipe yang sama dengan variabelnya. Konstanta
numerik harus dengan
variable numerik,konstanta karakter harus dengan variabel karakter,
konstanta logika harus dengan variabel logika. Ada beberapa cara untuk
memasukkan data ke variabel
dengan statement DATA, sebagai berikut ini.
- Satu nama variabel dihubungkan dengan satu konstanta
2.
Kumpulan variabel dihubungkan dengan kumpulan konstanta
3.
Sejumlah variabel dihubungkan
dengan sebuah konstanta dengan
factor
Pengulang.
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. Satu elemen larik dihubungkan dengan
satu konstanta
2. Kumpulan elemen
larik dihubungkan dengan
kumpulan konstanta
3. Satu nama
larik dihubungkan dengan kumpulan konstanta (DIMENSION, IMPLICIT DAN TYPE)
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.
Suatu deklarasi
dimensi dapat berupa:
1. Suatu
konstanta integer positif tidak bertanda. Bila deklarasi dimensi berupa nilai
integer positif, maka larik yang bersangkutan mempunyai elemen dengan batas
atas yang sudah pasti, yang ditunjukkan oleh deklarasi dimensi tersebut.
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.
3. Suatu asterik
(*)
Jika deklarasi
dimensi adalah asterik (*),maka lariknya disebut dengan assumed-sizedarray (larik dengan ukuran asumsi), yang berarti
batas atas dari elemen larik tidak ditentukan,
tetapi diasumsikan. Assumed sized array juga digunakan di subroutine.
STATEMENT INPUT/OUTPUT
- 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
I dengan FORMAT I5
- 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.
- 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.
- 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.
Contoh:
READ(*,100)
IDATA, IHASIL
100
FORMAT(I5,I5)
Atau
100
FORMAT(2I5)
- 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
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
100FORMAT(E4.2,E4.2)
Atau
100FORMAT(2E4.2)
- 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 dengan n:
jumlah ruang kosong.
Contoh:
READ(*,100) PDAT,NILAI
100
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:
-
GO TO statemen tanpa syarat dan
-
GO TO statemen dengan hitungan
- GO TO tanpa syarat
Berfungsi memerintahkan proses untuk meloncat langsung ke statemen dengan
label yang ditunjuk.
Contoh:
100READ(*,10) A,B
C=A*B
-
GO TO 100
-
STOP
END
- GO TO dengan hitungan
Statemen ini memberi perintah agar program loncat ke statemen dengan label
nk apabila harga var= k. Aturan-aturan untuk GO TO statemen dengan
hitungan:
-
n1,n2,..,nm dapat tidak urut dan dapat
sama.
-
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
100X=P*A
200X=P*B
300 X=p*D
STOP
END
2.
STATEMEN IF
Statemen IF
ada 2 jenis:
-
Statemen IF hitungan
-
Statemen IF nalar.
- Statemen IF hitungan adalah untuk mengecek isi suatu variabel atau
hasil suatu pernyataan hitungan, yaitu apakah negatif, nol atau positif.
Dan berdasarkan hasil 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.
-
Hirarki dan peraturan-peraturan lain
berlaku juga pada ekspresi pr di dalam statemen IF.
Contoh:
READ(*,10) A,B,C
IF(B**2-4*C)100,200,300
100WRITE(*,110)
110FORMAT(‘AKAR IMAJINER’)
200 X=-B/(2.*A)
300 X1=(-B+SQRT(b**2-4*A*C))/(2.*A)
STOP
END
- 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.
BU: IF (ekspresi nalar) statemen)
Operator nalar yang dipakai:
.EQ. sama dengan
.NE. tidak sama dengan
.LT. lebih kecil dari
.LE. lebih kecil atau
sama dengan
.GT. lebih besar
.GE. lebih besar atau
sama dengan
.OR. atau
.AND. dan
.NOT. bukan
Contoh:
IF(A .LE. 10.0 .AND. A .GT. 5.0) GO
TO 150
WRITE(*,100)
100
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,
berulang-ulang dengan cara tertentu.
BU : DO n var=m1,m2,m3
n : Nomor
statemen dari suatu statemen yang merupakan batas akhir dari deretan yang harus
diproses berulang-ulang.
Var : Variabel integer/real yang harganya akan
berubah-ubah dari suatu harga awal m1 ke harga akhir m2 dengan besar langkah
m3.
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
100IF (X .GT. 1000.0) GO TO 200
200CONTINUE
STOP
END
SUBPROGRAM
Subprogram ada
2 macam:
-
subprogram FUNCTION
-
subprogram SUBROUTINE
1.
Subprogram FUNCTION
BU: FUNCTION nf(arg1,arg2…argm)
Sifat-sifat
FUNCTION :
-
bersifat otonom, sehingga nama-nama
variabel di dalam subprogram boleh sama dengan nama-anam variabel di dalam
program pemanggil dengan tidak terjadi kesalahan.
-
Dipanggil langsung dengan namanya.
-
Argumen-argumen hanya merupakan input,
output keluar melalaui nama subprogram FUNCTION.
-
Boleh mempunyai lebih sari satu statemen RETURN, maupun juga statemen
STOP.
-
Argumen dapat berupa konstanta maupun
variabel, real atau integer.
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, arg2…argm)
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
Virtual Lab PTA 2008 – 2009
Matematika Lanjut 2
- Jelaskan Struktur Program Fortran dan Aturan
penulisan dalam Fortran !
- Apa perbedaan Statement Stop dan End!
- Apa perbedaan Procedure dan Function!
- Buatlah program Fortran
- Program Menghitung Luas Trapesium
- Program Perkalian Matriks
- Apa hasil (output) dari program berikut ini!
A. PROGRAM 1, Bila banyaknya deret 5
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
10 CONTINUE
STOP
END
A.
Program 2 Bila banyaknya deret 5
INTEGER A,B,C
WRITE (*,'(24(/))')
WRITE (*,'(A,\)')'Masukkan Banyaknya Deret
= '
READ (*,'(I2)') N
A=N
C=N-1
B=1
DO 10 I = 1,N
DO
20 J = 1,A
WRITE (*,'(A,\)') ' '
20 CONTINUE
IF
(A .EQ. N) THEN WRITE (*,'(I1)') A
ELSE WRITE (*,'(I1,\)') A
DO 30 K=1,B
WRITE (*,'(A,\)') ' '
30
CONTINUE
WRITE (*,'(I1)') A
B=B+2
ENDIF
A=A-1
10 CONTINUE
A=2
B=B-4
IF (N .NE. 1) THEN
DO 40 I=1,C
DO 50 J=1,A
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
B.
Program 3 Bila banyaknya deret 5
INTEGER A,B,C
WRITE (*,'(24(/))')
WRITE (*,'(A,\)') 'Masukkan Jumlah Deret
= '
READ (*,'(I2)') N
A=N
DO 10 I=1,N
B=I
DO 20 J=1,A
WRITE (*,'(I2,\,A)') B,' '
B=B+2
20
CONTINUE
WRITE(*,*)
A=A-1
10 CONTINUE
STOP
END
panjang sekaleee
ReplyDelete