Dasar Komputer & Pemrograman 2B Fortran
Statement GOTO bersyarat Statement GOTO bersyarat atau GOTO terhitung (Computed GOTO) Digunakan untuk mengontrol loncatan dari proses ke suatu label statement <slabel> tertentu, tergantung dari nilai ungkapan integer. BU : GOTO (<slabel>[,<slabel> …) [,] <i>
Cont.. Contoh : Character*1 BUNYI Write (*,’(1x,A)’)’ << PILIHAN>>’ Write (*,*) Write (*,’(1x,A)’)’ 1. Menghitung isi silinder’ Write (*,’(1x,A)’)’ 2. Menghitung luas segitiga’ Write (*,’(1x,A)’)’ 3. Menghitung isi kubus’ Write (*,’(1x,A)’)’ 4. Selesai’ 15 Write (*,’(//,1x,A,\)’)’ Pilih Nomer (1-4) ?’ Read (*,(BN,I1)’) NOMER
Cont.. C C menuju ke label sesuai dengan nomer yang dipilih Write (*,*) GOTO (1000,2000,3000,4000) NOMER BUNYI = 7 Write (*, ‘(1x,A,A)’)’ SALAH PILIH!!, ULANGI’,BUNYI
Cont.. 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
Cont.. C C menghitung luas segitiga 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
Cont.. C C menghitung isi kubus 3000 Write (*,’(1X,A.\)’) ‘PANJANG SISI KUBUS ?’ Read (*,’(BN,F7.2)’) S XISI = S * S * S Write (*,’(/,1x,A,F7.2)’) ‘ ISI KUBUS = ‘,XISI GOTO 4000
Cont.. C C selesai 4000 CONTINUE END
DO INTEGER*2 X DO 15 X = 1, 100 Y = 2.75 ** X WRITE (*, 25) X, Y IF (Y .GT. 100) THEN STOP ENDIF 15 CONTINUE 16 FORMAT (1X, ‘ X = ‘,I3,’ Y = ‘ ,F7.2) END
Statement IF Statement yang digunakan untuk menyeleksi suatu kondisi atau syarat dan proses akan melakukan suatu tindakan tertentu bila kondisi yang diseleksi benar dan akan melakukan tindakan yang lainnya bila kondisi yang diseleksi tidak benar.
Statement IF Logika (logical IF) Digunakan untuk menyeleksi suatu ungkapan logika atau ungkapan hubungan dan jika kondisinya benar (.TRUE.) maka statement yang mengikutinya akan diproses. Sebaliknya bila ungkapan logika atau ungkapan hubungan yang seleksi tersebut salah (.FALSE.), maka yang proses akan dilanjutkan ke statement lainnya. BU : IF (<expression>) <statement>
Cont.. CHARACTER*10 JAWAB WRITE (*,”(1X,A)’) ‘SAYA MEMPUNYAI 8598 KELERENG’ WRITE (*,”(1X,A)’) ‘SAYA SBAGIKAN KEPADA 1228 ANAK’ WRITE (*,”(1X,A)’) ‘TIAP ANAK DAPAT 7 BUAH’ WRITE (*,”(1X,A)’) ‘DAN SISANYA SAYA SIMPAN SENDIRI’ WRITE (*,”(1X,A)’) ‘DALAM ISTILAH KOMPUTER DISEBUT DENGAN’ WRITE (*,”(1X,A)’) ‘MODULO 7 DAN SISA PEMBAGIAN DISEBUT’ WRITE (*,”(1X,A)’) ‘DENGAN REMAINDER’ WRITE (*,*) WRITE (*,”(1X,A)’) ‘BERAPA REMAINDERNYA ? ’ READ (*,’(BN,I1)’) IREMAIN
Cont.. C sebelumnya jawaban anda dianggap salah terlebih dahulu JAWAB = ‘SALAH !!!’ C seleksi jawaban anda, bila benar jawaban anda diisi nilai benar IF (IREMAIN .EG. 2) JAWAB = ‘BENAR ...’ C tampilkan hasilnya WRITE (*, ‘(/, 1x, A, A10) ‘ JAWABAN ANDA ADALAH ‘,JAWAB END
Statement IF Arithmatika (arithmetic IF) Digunakan untuk menyeleksi kondisi dari suatu ungkapan arithmatika, apakah bernilai negatif, nol atau positif. BU : IF (<expression>)<slabel1>,<slabel2>,<slabel3>
Cont.. Write (*,’(1X,A)’) ‘PROGRAM INI AKAN MENGHITUNG NILAI DARI’ Write (*,’(1X,A)’) ‘AKAR-AKAR PERSAMAAN KUADRAT : ‘ Write (*,’(1X,A)’) ‘ 2 ‘ Write (*,’(1X,A)’) ‘ AX + BX + C = 0 ‘ Write(*,*) 1 Write (*,’(1X,A,\)’) ‘ NILAI KOEFISIAN A ? ‘ READ (*,’(F7.2)’) A C C SELEKSI NILAI A TIDAK BOLEH SAMA DENGAN NOL’ IF (A .EQ. 0.0 ) GOTO 1 WRITE (*,’(1X,A,\)’) ‘NILAI KOEFISIEN B ? ‘ READ (*,’(F7.2)’) B WRITE (*, ‘(1X,A,\)’) ‘NILAI KOEFISIEN C ? ‘ READ (*,’(F7.2)’) C WRITE (*,*)
Cont.. C C HITUNG NILAI DARI DETERMINAN D = B**2 – 4*A*C C SELEKSI NILAI DARI DETERMINAN IF (D) 100, 125, 150
Cont.. C C NILAI DETERMINAN NEGATIF, BERARTI ADA 2 AKAR KOMPLEK BERLAINAN 100 Z1 = (-B) / (2*A) Z2 = SQRT (-D) / (2*A) WRITE (*,*) ‘ ADA 2 AKAR KOMPLEK BERLAINAN : ‘ WRITE ( *,*) ‘-------------------------------------------------’ WRITE (*,’(1X, A, F7.2,A,F7.2,A)’) ‘X1 = ‘, Z1, ‘+’, Z2, ‘i’ WRITE (*,’(1X, A, F7.2,A,F7.2,A)’) ‘X2 = ‘, Z1, ‘-’, Z2, ‘i’ GOTO 1000
Cont.. C C NILAI DETERMINAN NOL, BERARTI ADA 2 AKAR REAL KEMBAR 125 X1 = (-B) / (2*A) WRITE (*,*) ‘ ADA 2 AKAR REAL KEMBAR : ‘ WRITE ( *,*) ‘-------------------------------------’ WRITE (*,’(1X, A, F7.2)’) ‘X1 = X2 = ‘,X1 GOTO 1000
Cont.. C C NILAI DETERMINAN NOL, BERARTI ADA 2 AKAR REAL BERLAINAN 150 X1 = (-B + SQRT (D)) / (2*A) X2 = = (-B + SQRT (D)) / (2*A) WRITE (*,*) ‘ ADA 2 AKAR REAL BERLAINAN : ‘ WRITE ( *,*) ‘--------------------------------------------’ WRITE (*,’(1X, A, F7.2)’) ‘X1 = ‘,X1 WRITE (*,’(1X, A, F7.2)’) ‘X2 = ‘,X2 GOTO 1000
Cont.. C C SELESAI 1000 CONTINUE END
Statement IF Blok (block IF) Statement IF blok dapat terdiri dari statement IF-THEN, ELSE. ELSEIF dan ENDIF. BU IF-THEN : IF (<ungkapan>) THEN BU ELSE : ELSE BU ELSEIF : ELSEIF (<ungkapan>) THEN BU ENDIF : ENDIF Digunakan untuk menyeleksi suatu kondisi dan mengambil tindakan apa yang harus dilakukan dalam bentuk blok-blok statement. Statement blok IF harus diawali dengan statement IF-THEN dan diakhiri dengan statement ENDIF.
Stat. IF-THEN & ENDIF CHARACTER*10 JAWAB WRITE (*,”(1X,A)’) ‘SAYA MEMPUNYAI 8598 KELERENG’ WRITE (*,”(1X,A)’) ‘SAYA ’BAGIKAN KEPADA 1228 ANAK’ WRITE (*,”(1X,A)’) ‘TIAP ANAK DAPAT 7 BUAH’ WRITE (*,”(1X,A)’) ‘DAN SISANYA SAYA SIMPAN SENDIRI’ WRITE (*,”(1X,A)’) ‘DALAM ISTILAH KOMPUTER DISEBUT DENGAN’ WRITE (*,”(1X,A)’) ‘MODULO 7 DAN SISA PEMBAGIAN DISEBUT’ WRITE (*,”(1X,A)’) ‘DENGAN REMAINDER’ WRITE (*,*) WRITE (*,”(1X,A)’) ‘BERAPA REMAINDERNYA ? ’ READ (*,’(BN,I1)’) IREMAIN
Cont.. C sebelumnya jawaban anda dianggap salah terlebih dahulu JAWAB = ‘SALAH !!!’ C seleksi jawaban anda, bila benar jawaban anda diisi nilai benar IF (IREMAIN .EG. 2) THEN JAWAB = ‘BENAR ...’ ENDIF C tampilkan hasilnya WRITE (*, ‘(/, 1x, A, A10) ‘ JAWABAN ANDA ADALAH ‘,JAWAB END
Stat. IF-THEN, ELSEIF, ELSE, ENDIF CHARACTER*20 NAMA(5), KET, GARIS*52 REAL*4 NILAI (5), DATA NAMA /’ARIEF’, ‘BUDI’, ‘CHANDRA’, ‘DEWI’, ‘EDI’/ DATA NILAI /95.9, 57.5, 23.5, 90. ,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’
Cont.. 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 (*,’(1X,A20,2X, F6.2,2X,A20)’) NAMA (I), NILAI (I), KET WIRTE (*,’(1X,A)’) GARIS END