Statemen ini digunakan untuk mengontrol loncatan dari nilai ungkapan integer . Bentuk umum :
GOTO (
Dimana :
adalah ungkapan integer
Statemen GOTO bersyarat akan menuju ke
Contoh 3.13
C234567890
CHARACTER*1 BUNYI
WRITE(*,’(1X,A)’)’ <<>>’
WRITE(*,*)
WRITE(*,’(1X,A)’)’ 1. Menghitung isi silinder’
WRITE(*,’(1X,A)’)’ 2. Menghitung luas segi tiga’
WRITE(*,’(1X,A)’)’ 3. Menghitung isi kubus’
WRITE(*.*)
WRITE(*,’(1X,A)’)’ 4. SELESAI’
15 WRITE(*,’(//,1X,A,\)’)’PILIH NOMER (1-4)?’
READ(*,’(BN,I1’) NOMER
C
C menuju ke label sesuai dengan nomor yang dipilih
WRITE(*,*)
GOTO(1000,2000,3000,4000) NOMER
BUNYI = 7
WRITE(*,’(1X,A,A)’)’SALAH PILIH!!,Ulangi’, BUNYI
GOTO 15
C
C MENGHITUNG ISI SILINDER
1000 WRITE(*,’(1X,A,\)’)’JARI-JARI LINGKARAN?’
READ(*,’(BN,F7.2)’) R
WRITE(*,’(1X,A,\)’)’TINGGI SILINDER?’
READ(*,’(BN,F7.2)’) T
XISI = 3.1419 *R**2*T
WRITE(*,’(/,1X,A,F7.2)’)’ISI SILINDER =’,XISI
GOTO 4000
C
C MENGHITUNG LUAS SEGI TIGA
2000 WRITE(*,’(1X,A,\)’)’PANJANG SISI DASAR?’
READ(*,’(BN,F7.2)’) S
WRITE(*,’(1X,A,\)’)’TINGGI SEGITIGA?’
READ(*,’(BN,F7.2)’) T
XLUAS = 0.5*S*T
WRITE(*,’(/,1X,A,F7.2)’)’LUAS SEGITIGA =’,XLUAS
GOTO 4000
C
C MENGHITUNG ISI KUBUS
3000 WRITE(*,’(1X,A,\)’)’PANJANG SISI KUBUS?’
READ(*,’(BN,F7.2)’) S
WRITE(*,’(1X,A,\)’)’TINGGI SILINDER?’
READ(*,’(BN,F7.2)’) T
XISI = S*S*S
WRITE(*,’(/,1X,A,F7.2)’)’ISI KUBUS =’,XISI
GOTO 4000
C
C SELESAI
4000 CONTINUE
END
Bila dijalankan akan ditampilkan 4 buah pilihan dan anda dapat memilih salah satu dari pilihan tersebut :
<<>>
1. Menghitung isi silinder
2. Menghitung luas segi tiga
Pilih proses yang and pilih
3. Menghitung isi kubus
4. SELESAI
PILIH NOMER (1-4)?2
Jika misalnya dipilih 2, berarti akan menghitung luas segi tiga, maka akan ditanyakan :
PANJANG SISI DASAR?20.0
TINGGI SEGITIGA?15.0
LUAS SEGITIGA = 150.00
3.1.1 STATEMEN IF
Statemen atur kondisional dan iterasi (pengulangan) merupakan komponen bahasa FORTRAN yang dapat digunakan untuk membuat keputusan. Keputusan diambil setelah meninjau beberapa kondisi tertentu. Untuk keperluan ini dikenal adanya statemen IF.
Ada 3 macam statemen IF yaitu :
- IF logika (logical IF)
- IF aritmatika (arithmetic IF)
- IF blok (Block IF)
A. IF LOGIKA
IF logika digunakan untuk menyeleksi suatu statemen logika atau statemen hubungan (relasi), jika kondisinya benar (TRUE) maka statemen yang mengikutinya akan diperoses. Sebaliknya, jika salah (FALSE) proses akan meloncat ke statemen berikutnya (ungkapan logika yang digunakan .LT.,.LE.,.EQ.,.NE.,.GT.,.GE.). Dua operator logika yang sangat berguna selain .NOT. adalah .OR. (logika atau ) dan .AND. (logika dan).
Bentuk umum :
IF(
Dimana :
Berikut adalah contoh pendeklarasian IF logika yang benar :
IF(X .GT. 3 .AND. Y .LE. 2) GOTO 3
IF(A .LE. X .OR. Y .LE. 2) GOTO 5
IF(.NOT. (X .LT. Y .OR. G .GT. GG)) GOTO 3
Contoh 3.15
C PROGRAM MENCARI TAHUN KABISAT
C234567890
WRITE(*,’(1X,A,\)’)’TAHUN ?’
READ(*,’(BN,I4)’) ITAHUN
XTAHUN=ITAHUN/4.0
JTAHUN=ITAHUN/4
IF(XTAHUN .EQ. JTAHUN) GOTO 100
WRITE(*,’(1X,A,I4,A)’)’TAHUN’,
1ITAHUN,’BUKAN TAHUN KABISAT’
GOTO 200
100 WRITE(*,’(1X,A,I4,A)’)’TAHUN’,
1ITAHUN,’ADALAH TAHUN KABISAT’
200 CONTINUE
END
Bila program tersebut dijalankan akan didapatkan hasil :
TAHUN ? 1987
TAHUN 1987 ADALAH BUKAN TAHUN KABISAT
B. IF ARITMATIKA
Statemen IF aritmatika digunakan untuk menyeleksi kondisi suatu ungkapan aritmatika apabila bernilai positif, negatif atau nol. Gambar 3.8 menunjukkan diagram alir dari if aritmatika.
Bentuk umu IF aritmatika adalah :
IF (
dimana :
Gambar 3.8 Diagram alir IF Arithmatika
Berikut adalah contoh pendeklarasian statemen IF aritmatika yang sahih :
IF (A+B) 21, 23, 24 IF(Z-0.001)12, 12, 13
IF(X) 3, 4, 5 IF(K(I,J)-1)20, 40, 30
IF(A*XZ**3-A*B) 2, 3, 4
Contoh 3.16 :
C PROGRAM PREMI
C PREMI = 9.75 JIKA BELUM KAWIN
C PREMI = 16,25 KAWIN TANPA ANAK
C PREMI = 24.50 KAWIN PUNYA ANAK
C234567890
REAL NET
WRITE(*,50)’ID ?’
50 READ(*,’(BN,I4)’)ID
PAY = 50000.00
IF(TYPE-2) 10,20,30
10 NET = PAY -9.75
GOTO 75
20 NET = PAY – 16.25
GOTO 75
30 NET = PAY – 24.50
75 WRITE(*,40)ID, NET
40 FORMAT(1X,I5,3X,F12.2)
END
C. IF BLOK
Statemen IF blok dapat terdiri dari statemen IF-THEN, ELSE, ELSEIF dan ENDIF.
Bentuk umum :
IF(
ELSE
ELSEIF (
ENDIF
Berikut contoh pendeklarasian IF-THEN, ELSE, ELSEIF dan ENDIF :
A. IF (IREMAIN .EQ. 2) THEN
ENDIF
B. IF(IREMAIN .EQ.2) THEN
ELSE
ENDIF
C. IF(IREMAIN .EQ. 2) THEN
ELSEIF (IREMAIN .EQ.3) THEN
ELSE
ENDIF
Contoh 3.17 :
C234567890
CHARACTE*20 NAMA(5), KET, GARIS*52
REAL*4 NILAI(5)
DATA NAMA /’ARIEF’,’BUDI’,’CANDRA’,’DEWI’,’EDI’/
DATA NILAI/95.9,57.5,23.5,90.0,65.75/
C CETAK JUDUL TABEL
GARIS=’----------------------------------------‘
WRITE(*,’(1X,A)’)’ DAFTAR NILAI UJIAN’
WRITE(*,*)
WRITE(*,’(1X,A)’) GARIS
WRITE(*,’(1X,A)’)’ NAMA MAHASISWA NILAI KETERANGAN’
WRITE(*,’(1X,A)’) GARIS
DO 15 I=1,5
IF(NILAI(I) .GT. 75.0) THEN
KET = ‘LULUS SANGAT BAIK’
ELSEIF(NILAI(I) .GT. 65.0) THEN
KET = ‘LULUS BAIK’
ELSEIF(NILAI(I) .GT. 55.0) THEN
KET = ‘LULUS CUKUP’
ELSE
KET =’TIDAK LULUS’
ENDIF
15 WRITE(*,40) NAMA(I), NILAI(I), KET
40 FORMAT(1X,A20,2X,F6.2,2X,A20)
WRITE(*,’(1X,A)’) GARIS
END
SOAL-SOAL YANG DIPECAHKAN
3.1 Temukan nilai akhir K setelah tiap ruas program FORTRAN berikut dilaksanakan
a.
K=2
10 DO 20 I=3,8,2
IF (I .EQ.5) GOTO 20
K=K+1
20 CONTINUE
K=2*K
b.
K=2
10 DO 20 I=3,8,2
IF (I .EQ.5) GOTO 10
K=K+1
20 CONTINUE
K=2*K
Jawab :
1. Pernyataan pertama memberi nilai 2 kepada K. Kemudian DO loop dieksekusi sebagai berikut :
(i) Pertama untuk I=3. karena I≠5, pernyataan K=K+1 dieksekusi, yang menghasilkan :
Kß K+1 = 2+3=5
(ii) Kemudian untuk I=5. Karena I=5,pengendalian dialihkan ke CONTINUE yang mendaur-ulang DO loop
(iii) Kemudian untuk I=7. Karena I≠5, pernyataan K=K+1 dieksekusi, yang menghasilkan :
Kß K+1 = 5+7=12
Nilai I berikutnya melampaui nilai uji, sehingga pengendalian dialihkan ke pernyataan yang menyusul DO loop, yang melipat duakan nilai K. Karenanya nilai K terakhir adalah 24.
(iv)
2. Pernyataan pertama memberi nilai 2 kepada K. Kemudian DO loop dieksekusi sebagai berikut :
(i) Pertama untuk I=3. Karena I≠5 pernyataan K=K+1 dieksekusi, yang menghasilkan :
Kß K+1 = 2+3=5
(ii) Kemudian untuk I=5. Karena I=5, pengendalian dialihkan ke pernyataan DO
Karena pengendalian dialihkan ke pernyataan DO, DO loop mulai dari awal lagi dan menetapkan I=3. Jadi, (i) dan (ii) diulang berkali-kali. Ini memberikan sebuah loop tak terhingga dan tidak terdapat nilai terakhir dari K.
Tidak ada komentar:
Posting Komentar