Dasar Komputer & Pemrograman 2B Fortran
Statement Kontrol Lanjutan Statement GOTO Unconditional GOTO (Tak Bersyarat) Assigned GOTO (Pengerjaan) Computed GOTO (Bersyarat atau Terhitung) Statement IF Logical IF Arithmatic IF Block IF
Unconditional GOTO (Tak Bersyarat) Bentuk Umum : GOTO <slabel> Ket : Untuk mengontrol proses menuju ke suatu statement lainnya yang ditunjukan oleh <slabel> tanpa ada syarat yang diberikan. Contoh : 5 WRITE (*,’(1X,A,)’) ‘KOMPUTER’ GOTO 5 END OUTPUT : KOMPUTER KOMPUTER KOMPUT^C MENUNJUKAN DITEKAN CTRL+C atau CTRL+BREAK
Assigned GOTO (Pengerjaan) Bentuk Umum : GOTO<name>[[,](<slabel>[,<slabel>]..)] Ket : Untuk meloncat ke suatu label statement<slabel> yang ditunjukkan oleh isi dari <name> Contoh : ASSIGN 15 TO LONCAT GOTO LONCAT ,(15) WRITE (*,’(1X,A)’) ‘TIDAK DITAMPILKAN’ 15 WRITE (*,’(1X,A)’) ‘DITAMPILKAN’ WRITE (*,’(1X,A)’) ‘TIDAK JUGA DITAMPILKAN’ END RUN : DITAMPILKAN TIDAK JUGA DITAMPILKAN
Computed GOTO (Bersyarat atau Terhitung) Bentuk Umum : GOTO(<slabel>[,<slabel>]…)[,]<i> Ket : Untuk mengontrol loncatan dari proses ke suatu label statement<slabel> tertentu, tergantung dari nilai ungkapan integer<i>. Contoh :
Contoh Character*1 BUNYI Write (*,’(1x,A)’)’ << PILIHAN>>’ 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 C C menuju ke label sesuai dengan nomer yang dipilih 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 C menghitung luas segitiga 2000 Write (*,’(1X,A.\)’) ‘PANJANG SISI DASAR ?’ Read (*,’(BN,F7.2)’) S Write (*,’(1X,A.\)’) ‘TINGGI SEGITIGA ?’ 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 C selesai 4000 CONTINUE END
Cont.. RUN : << PILIHAN>> 1. Menghitung isi silinder 2. Menghitung luas segitiga 3. Menghitung isi kubus 4. Selesai Pilih Nomer (1-4) ? 2 Pilih Proses yang Dipilih PANJANG SISI DASAR ? 20.0 TINGGI SEGITIGA ? 15.0 LUAS SEGITIGA = 150.00
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>
Contoh 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 C sebelumnya jawaban anda dianggap salah terlebih dahulu JAWAB = ‘SALAH !!!’ C seleksi jawaban anda, bila benar jawaban anda diisi nilai benar IF (IREMAIN .EQ. 2) JAWAB = ‘BENAR ...’ C tampilkan hasilnya WRITE (*, ‘(/, 1x, A, A10) ‘ JAWABAN ANDA ADALAH ‘,JAWAB END
Cont.. SAYA MEMPUNYAI 8598 KELERENG SAYA BAGIKAN KEPADA 1228 ANAK TIAP ANAK DAPAT 7 BUAH DAN SISANYA SAYA SIMPAN SENDIRI DALAM ISTILAH KOMPUTER DISEBUT DENGAN MODULO 7 DAN SISA PEMBAGIAN DISEBUT DENGAN REMAINDER BERAPA REMAINDERNYA ? 2 JAWABAN ANDA ADALAH BENAR
Arithmatic IF Digunakan untuk menyeleksi kondisi dari suatu ungkapan arithmatika, apakah bernilai negatif, nol atau positif. BU : IF (<expression>)<slabel1>,<slabel2>,<slabel3>
Contoh 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 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 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
Cont.. C C SELESAI 1000 CONTINUE END
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