17 Mei, 2010

materi kuliah Rabu 19 mei 2010

A. STATEMEN GOTO BERSYARAT



Statemen ini digunakan untuk mengontrol loncatan dari nilai ungkapan integer . Bentuk umum :

GOTO ([,]…)[,]



Dimana :

adalah statemen label dari suatu executabel statemen yang berada pada unit program yang sama dengan statemen GOTO bersyarat tersebut.

adalah ungkapan integer



Statemen GOTO bersyarat akan menuju ke yang pertama bila ungkapan bernilai 1, akan menuju ke kedua bila bernilai 2 dan seterusnya.















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 :

ungkapan logika atau ungkapan hubungan yang akan diseleksi.

executable statement, kecuali statemen DO, blok IF atau statemen IF logika lainnya.

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 :

merupakan ekspresi aritmatika (disebelah kanan tanda =) yang akan dievaluasi harganya.

merupakan nomor statemen yang dituju selanjutnya bila lebih kecil, sama dengan atau lebih besar dari nol.




















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() THEN

ELSE

ELSEIF () THEN

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