Upload
mocoz
View
1.953
Download
3
Embed Size (px)
Citation preview
STANDAR KOMPETENSI
Setelah menyelesaikan mata kuliah Komputer mahasiswa mampu mengembangkan paket program aplikasi mandiri untuk menyelesaikan masalah keteknikan khususnya Teknik Mesin
dengan bahasa FORTRAN
KOMPETENSI DASAR
Mahasiswa dapat membuat program aplikasi yang lebih kompleks yang membutuhkan adanya pengambilan keputusan
dalam mengatur aliran logika program.
INDIKATOR
1. Mahasiswa dapat menggunakan stetemen perulangan dalam mengatur aliran logika pemrograman dimana dibutuhkan adanya pengerjaan sebuah statemen yang berulang-ulang (looping and repetition)
2. Mahasiswa dapat menerapkan penyeleksian kondisi pada sebuah statemen yang memiliki beberapa opsi pengerjaan yang berbeda sesuai dengan kondisi yang dihasilkan.
42
Pemrograman Komputer Bahasa FORTRAN -
3.1 PERULANGAN
Statemen kontrol atau statemen kendali termasuk executabel statement, yang mengendalikan urutan dari proses statemen-statemen di dalam blok program. Di dalam sebuah program, kadang kala, terdapat suatu eksekusi statemen yang sama yang dilakukan berulang-ulang. Dimana, pengulangan suatu proses adalah hal yang mendasar untuk penulisan progran komputer, dan akan sangat berguna untuk mempunyai sebuah komando mirip makro seperti DO … WHILE 1≤ I≤ N.
3.1.1 STATEMEN CONTINUE
Pernyataan CONTINUE digunakan sebagai dummy statement (statemen boneka), yang digunakan untuk terminal statement pada statemen DO atau statemen GOTO
3.1.2 STATEMEN END
Fungsi dari statemen END pada program utama adalah untuk mengahiri proses dari program, sedangkan pada unit program mempunyai fungsi seperti RETURN. Statemen END harus terletak diakhir dari program dan tidak boleh digabung dengan statemen lain. Bentuk umum dari statemen ini adalah :
END
Contoh 3.1 :
C234567890 A= 20.0 WRITE(*,21) A 21 FORMAT(1X,’NILAI A = ’,F7.2) END
3.1.3 STATEMEN STOP
Statemen ini berfungsi untuk menghentikan proses pengerjaan program. Statemen STOP tidak mesti ada didalam sebuah program. Penempatan statemen ini boleh dimana saja di dalam program. Bentuk umum statemen STOP adalah sebagai berikut :
STOP [<n>]
Dimana :
43
END selalu di akhir program
Pemrograman Komputer Bahasa FORTRAN -
<n> merupakan suatu konstanta angka yang panjangnya tidak boleh lebih dari lima digit atau suatu string dan sifatnya opsional.
Contoh 3.1 :
C234567890 A=10.0 B=60.0 WRITE(*,100) A STOP ’PROSES DIHENTIKAN DENGAN STATEMEN STOP’ WRITE(*,200) B 100 FORMAT(1X,’NILAI A =’,F5.1,/) 200 FORMAT(1X,’NILAI B =’,F5.1) END
Bila program ini dijalankan, didapatkan hasil sebagai berikut :
NILAI A = 10.0
PROSES DIHENTIKAN DENGAN STATEMEN STOP
3.1.4 STATEMEN PAUSE
Tidak seperti statemen STOP yang menghentikan/keluar dari program, statemen PAUSE digunakan untuk menghentikan sementara proses eksekusi program. Pengaruh dari penghentian sementaran program dengan statemen PAUSE akan berakhir atau eksekusi program dilanjutkan apabila ditekan tombol <Enter>. Bentuk umum statemen PAUSE sebagai berikut :
PAUSE [<n>] Dimana :
<n> merupakan suatu konstanta angka yang panjangnya tidak boleh lebih dari lima digit atau suatu string dan sifatnya opsional.
Contoh 3.2 :
C234567890 A=10.0 B=60.0 WRITE(*,100) A PAUSE ’Tekan Tombol RETURN untuk melihat nilai B’ WRITE(*,200) B 100 FORMAT(1X,’NILAI A =’,F5.1,/) 200 FORMAT(1X,’NILAI B =’,F5.1) END
44
Pemrograman Komputer Bahasa FORTRAN -
Bila program ini dijalankan, didapatkan hasil sebagai berikut :
NILAI A = 10.0
Tekan Tombol RETURN untuk melihat nilai BPlease press <return> to continue.
NILAI B = 60.0
3.1.5 STATEMEN DO
Pernyataan DO digunakan untuk mengulang suatu statemen atau proses sebanyak N kali. Bentuk umum dari statemen ini adalah sebagai berikut :
DO <slabel>[,] <nama variabel> = <exp1>,<exp2>[,<exp3>]
Dimana :<slabel> : adalah statemen label dari suatu executabel
statement.<nama variabel> : suatu variabel numerik integer<exp1> : nilai numerik bulat sebagai awal perulang-
an (starting point) <exp2> : nilai numerik bulat akhir perulangan (end
point)<exp3> : nilai numerik bulat sebagai peningkatan
(interval) perulangan.
Contoh 3.3 :
C234567890 DO 5 I=1,5,1 5 WRITE(*,21) I 21 FORMAT(1X,I2,’.’,1X,’KOMPUTER’) END
Bila program ini dijalankan, didapatkan hasil sebagai berikut :
1. KOMPUTER2. KOMPUTER3. KOMPUTER4. KOMPUTER5. KOMPUTER
45
Statemen labelVariabel numerik integerAwal perulanganAkhir perulanganPeningkatan (increment)
Pemrograman Komputer Bahasa FORTRAN -
Tampak statemen WRITE akan diperoses sebanyak lima kali, yaitu hitungan I = 1 sampai I = 5 dengan interval 1.
Untuk pengulangan menurun gunakan nilai awal lebih besar dari nilai akhir dengan interval bertanda minus (-) seperti tampak dalam contoh 3.4 berikut.
Contoh 3.4 :
C234567890 DO 5 I=8,1,-2 5 WRITE(*,21) I 21 FORMAT(1X,’NILAI I = ’,I2) END
Bila program ini dijalankan, didapatkan hasil sebagai berikut :NILAI I = 8NILAI I = 6NILAI I = 4NILAI I = 2NILAI I = 1
Selain hal tersebut di atas, statemen DO juga bisa menggunakan blok program DO-CONTINUE (badan DO-loop diindentasi lebih kedalam untuk memudahkan pembacaan). Bentuk statemen ini sebagai berikut:
DO n I = IN,IE,IC...
BADAN DO LOOP...
n CONTINUE
Untuk jelasnya, stateman DO dapat digambarkan dalam bentuk diagram alir seperti tampak dalam gambar 3.1.
46
Dimana :
IN = nilai awal indeksIE = nilai uji/akhir indexsIC = peningkatan/intervaln = statemen label (nomor Pernyataan CONTINUE)
Pemrograman Komputer Bahasa FORTRAN -
(a) (b)
Gambar 3.1 Diagram Alir Statemen DO
Contoh 3.5 :
C PROGRAM MENGHITUNG NILAI MAHASISWAC234567890 WRITE (*,5) 5 FORMAT(1X,’ID NO.’,4X, 1’TEST1’, 4X,’TEST2’,4X, 2’TEST3’,3X,’AVERAGE’) DO 200 I=1,100 READ(*,10)ID,S1,S2,S3 10 FORMAT(5X,I5,3(4X,F6.2) SUM = S1 + S2 + S3 AVE = SUM/3.0 WRITE(*,20)ID,S1,S2,S3,AVE 20 FORMAT(5X,I5,4(4X,F6.2)) 200 CONTINUE STOP END
47
Statemen CONTINUE
Statemen DO
Blok DO LOOP
MULAI
DO 200
I=1,100
BACA ID,S1,S2,S3
SUM S1+S2+S3
AVESUM/3.0
CETAKID,S1,S2,S3,AVE
200
SELESAI
Gambar 3.2 Diagram alir contoh 3.5, menghitung rata-rata 3 (tiga) nilai ujian mahasiswa
belum selesai belum selesai
Ya
I IN
Badan DO
I I + IC
I ≤ IE
Tidak
SELESAI
Badan DO
DO nI = IN,IE,
IC
SELESAI
n
Pemrograman Komputer Bahasa FORTRAN -
Contoh 3.6
C PROGRAM PENENTUAN RATA-RATA CC234567890 SUM=0.0 DO 200 I=1,100 READ(*,10)A 10 FORMAT(F10.2) SUM = SUM+A 200 CONTINUE AVE = SUM/100.0 WRITE(*,20)AVE 20 FORMAT(1X,F10.2) STOP END
3.1.6 KELUAR DARI DO-LOOP
Terdapat dua cara untuk keluar dari suatu DO-loop : (a) keluar secara normal, (b) keluar tak normal. Pembahasan hal tersebut akan dibahas lebih detail di bawah ini.A. Keluar Normal
Program akan keluar dari perulangan secara normal terjadi apabila indeks I melebihi nilai uji IE (seperti ditunjukkan pada diagram alir pada gambar 3.1 (a). Dalam kasus demikian, pengendalian dialihkam ke pernyataan pertama setelah Do-loop. Semua contoh di atas keluar secara normal.
B. Keluar Tak NormalDimungkinkan beralih dari dalam ke luar suatu DO loop, misalnya dengan sebuah penyeleksian kondisi IF di dalam DO loop, walaupun nilai indeks yang sekarang tidak melebihi nilai uji IE. Suatu sifat mendasar dari keluar tidak normal suatu DO loop adalah bahwa pada saat keluar, nilai indeks I yang sekarang
48
MULAI
DO 200
I=1,100
BACA A
SUM SUM + A
AVESUM/100.0
CETAK AVE
200
SELESAI
Gambar 3.2 Diagram alir contoh 3.6, Menghitung rata-rata 100 bilangan
SUM 0
Pemrograman Komputer Bahasa FORTRAN -
dipertahankan, karenanya dapat digunakan dalam perhitungan lebih lanjut atau dalam operasi masukan/keluaran. Kerangka program berikut menggambarkan bilangan indeks K terdefinisi atau tidak.
DO 100 K = 1, 100, 2 * * * * * *
IF( X .LT. Y) GO TO 200 * * * * * *100 CONTINUE * * * * * * Nilai Indeks K tidak terdefinisi untuk pernyataan ini * * * STOP 200 * * * * * * Nilai indeks K terdefinisi untuk pernyataan ini * * * STOP
CONTOH 3.7 :
C234567890 READ (*,8) K 8 FORMAT(I10) KK = K/2 DO 100 I = 2, KK IF (K .EQ.(K/I)*I) GO TO 50 100 CONTINUE WRITE(*,10)K 10 FORMAT(10X,I5,1X,’ADALAH 1PRIMA’) STOP 50 WRITE(*,20)K,I 20 FORMAT(10X,I5,1X,’BUKAN PRIMA’ 1 10X,I5,1X,’ADALAH PEMBAGI’) STOP END
49
Keluar normal
Tidak
Ya (keluar tak normal)
MULAI
DO 100I=2, KK
BACA K
K bukan prima
I pembagi100
SELESAI
Gambar 3.3 Diagram alir contoh 3.7, Mencari bilangan prima
KK K/2
I membagi K
K prima
Pemrograman Komputer Bahasa FORTRAN -
3.1.7 PENGALIHAN DI DALAM DAN KE SUATU DO-LOOP
Seseorang selalu dapat beralih dari suatu titik dalam suatu DO loop ke titik lainnya dalam DO loop yang sama, dan seseorang secara bebas dapat melompat ke luar dari DO loop sembarang. Tetapi tidak mungkin untuk melompat ke tengah-tengah DO loop. Yakni, satu-satunya cara untuk beralih ke pernyataan di dalam suatu DO loop hanyalah melalui pernyataan DO yang sama.
Adaikan kita ingin sebuah ruas program FORTRAN menggunakan DO loop yang menghitung jumlah 1+2+3+5+6+7+ 8+9+10 tanpa melalui bilangan 4, bandingkan dua program berikut :
(A) ISUM =0 DO 100 I=1,10
IF(I .EQ. 4) I = I + 1ISUM = ISUM + I
100 CONTINUE
(B) ISUM = 0 50 DO 200 I=1,10
IF(I .EQ. 4) GO TO 50ISUM = ISUM + I
200 CONTINUE
Progran A tidak benar karena indeks I diubah di dalam DO loop. Yaitu, jika pernyataan
IF(I .EQ. 4) I = I + 1ISUM = ISUM + I
tidak berada dalam sebuah DO loop, maka 5 akan ditambahkan pada ISUM jika I mula-mula berisi 4. Tetapi, karena disini beada di tengah-tengah DO loop, pernyataan-pernyataan tersebut tidak diijinkan.
Berlawanan dengan hal ini, program B memuat penggunaan DO loop secara benar, tetapi logika program salah. Terdapat suatu ke luar tak normal bilamana I bernilai 4, tetapi pengendalian dialihkan lagi ke pernyataan DO, dan indeks dikembalikan ke nilai awal.Sehingga hasil exsekusi hanya akan menjumlahkan 1+2+3 berulang-ulang. Hasilnya adalah : 1+2+3+1+2+3+…Program B akan menghitung jumlah yang diminta apabila pernyataan
50
Pemrograman Komputer Bahasa FORTRAN -
IF(I .EQ. 4) GO TO 50diganti dengan :
IF(I .EQ. 4) GO TO 200
Contoh 3.8 :
C PROGRAM PENENTUAN C BILANGAN TERBESARCC234567890 REAL LAR READ (*,10) LAR 10 FORMAT(F10.2) DO 50 I = 1, 99 READ (*,10) X IF(LAR.GE.X)GO TO 50 LAR = X 50 CONTINUE WRITE(*,20)LAR 20 FORMAT(1X,F10.2) STOP END
3.1.8 DO-LOOP BERSARANG (NASTED DO)
Dimungkinkan mempunyai sebuah DO loop (lebih dalam) di dalam rentang DO loop lain (lebih luar). DO loop yang terbentuk disebut DO loop bersarang (nasted do). Aturan yang berlaku pada DO loop bersarang pada dasarnya sama dengan DO loop tunggal. Tetapi berikut adalah hal-hal yagn penting di dalam penggunaan DO loop bersarang:1. Karena indeks tidak dapat didefinisikan ulang didalam badan DO
loop, indeks DO loop yang lebih dalam harus tidak sama dengan indeks DO loop sebelah luar.
2. Do loop yang lebih dalam harus terletak di dalam DO loop yang lebih luar; yatiu tidak boleh jadi tumpang tindih. Gambar 3.5 menggambarkan cara DO loop bersarang dibentuk.
3. Banyaknya Do loop bersarang dibatasi oleh kompailer. Pengalihan pengendalian di dalam DO loop bersarang dapat memperdayakan, tetapi atauran-aturan tetap sama seperti DO loop tunggal.
51
Tidak
Ya
MULAI
DO 50I=1, 99
BACA LAR
50
SELESAI
Gambar 3.4 Diagram alir contoh 3.8, Menentukan Bilangan Terbesar
LAR X
LAR ≥ X
CETAK LAR
BACA X
Pemrograman Komputer Bahasa FORTRAN -
4. DO loop boleh memiliki pernyataan terakhir yang sama seperti ditunjukkan dalam gambar 3.6.
DO 18____________******DO 20___________******DO 30___________******
30 CONTINUE *** *** 20 CONTINUE *** *** 18 CONTINUE
Dapat diterima( DO loop bersarang )
(a)
DO 18____________*********DO 20___________*********
18 CONTINUE *** *** *** 20 CONTINUE
Tidak dapat diterima(DO loop tumpang tindih)
(b)
GAMBAR 3.5 Penggunaan DO loop bersarang
DO 20___________******DO 10___________******
10 CONTINUE 20 CONTINUE
DO 10___________******DO 10___________******
10 CONTINUE
DO 10___________******DO 10___________******
10 PERNYATAAN TEREKSEKUSI
GAMBAR 3.5 Penggunaan DO loop bersarang dengan akhir yang sama
52
Pemrograman Komputer Bahasa FORTRAN -
Contoh 3.9 :
C PROGRAM MENGHITUNG NILAI RATA-RATAC TIGA KALI UJIAN 25 MAHASISWA DENGANC NASTED DO-LOOPCC234567890 WRITE(*,100) 100 FORMAT(‘1’,4X,’ID’,9X,’AVERAGE’) DO 80 K = 1,25 READ (*,90) ID
90 FORMAT(I10)SUM=0.0DO 20 I=1,3 READ(*,10)SCORE
10 FORMAT(F6.2) SUM=SUM+SCORE 20 CONTINUE AVE=SUM/3.0 WRITE(*,30)ID, AVE 30 FORMAT(1X,110,5X, F6.2) 80 CONTINUE END
3.2 PENYELEKSIAN KONDISI
3.2.1 STATEMEN GO TO
Statemen GO TO merupakan statemen loncatan, yaitu digunakan untuk meloncat ke suatu statemen lainnya yang tertentu. Ada dua bentuk statemen ini, yaitu :
Statemen GO TO tanpa syarat (unconditional GO TO)Statemen GO TO pengerjaan (assigned GO TO)Statemen GO TO bersyarat/terhitung (computed GO TO)
A. STATEMEN GO TO TANPA SYARAT
53
Pemrograman Komputer Bahasa FORTRAN -
Statemen ini memberiperintah agar program dilanjutkan langsung ke statemen nomor <slabel>. Bentuk umum : GO TO <slabel>Dimana :
<slabel> = nomor statemen yang dapat dilaksanakan. variabel <slabel> (integer) adalah salah satu nomor statemen yangterdapat dalam program.
Dengan statemen ini program dapat meloncati beberapa baris statemen di atas atau dibawahnya.Contoh 3.10 :
C PROGRAM MENGHITUNG NILAI C RATA-RATA UNTUK TIAP MAHASISWACC234567890 100 READ (*,90) ID,S1,S2,S3
90 FORMAT(I5,F10.2,F10.2,F10.2) WRITE(*,90)ID,S1,S2,S3 SUM = S1+S2+S3 AVE = SUM/3.0 WRITE(*,30)AVE 30 FORMAT(1X,’RATA-RATA =’,F6.2)
GO TO 100 END
Contoh 3.11 :C234567890
5 WRITE(*,’(1A,A)’)KOMPUTER’ GO TO 5 END
Bila program ini dijalankan didapat hasil :KOMPUTERKOMPUTERKOMPUTERKOMPUTERKOMPUTERKOMPUTERKOMPUTERKOMPUTERKOMPUT^C
B. STATEMEN GO TO PENGERJAAN
54
Tanda C ini menunjukkan ditekan tombol CTRL+C (Break)Karena program akan terus berjalan (loop tak terhingga)
Gambar 3.6 Diagram alir contoh 3.10
MULAI
BACA ID,S1,S2,S3
SELESAI
SUM S1+S2+S3
CETAK AVE
CETAKID,S1,S2,S3
Ave SUM/3
Pemrograman Komputer Bahasa FORTRAN -
Statemen ini memberi perintah agar program meloncat ke statemen nomor <slabel> yang ditunjukkan oleh isi dari <name>. Bentuk umumnya :
GO TO <name>[[,](<slabel>[,<slabel>]…)]Dimana :
<name> adalah nama variabel integer yang diisi statemen label dengan perintah ASSIGN
Jadi salah satu nilai dari <slabel> harus sama dengan nilai dari <name>. Kalau nilai dari <name> tidak ada yang sama dari salah satu <slabel>, maka proses tidak akan melompat ke suatu statemen label apapun, tetapi akan dilanjutkanke statemen berikutnya.
CONTOH 3.12 :C234567890
ASSIGN 15 TO LONCAT GOTO LONCAT,(15) WRITE(*,’(1A,A)’)’TIDAK DITAMPILKAN’
15 WRITE(*,’(1A,A)’)’DITAMPILKAN’ WRITE(*,’(1A,A)’)’INI JUGA DITAMPILKAN’ END
Bila dijalankan akan didapatkan hasil : DITAMPILKAN
INI JUGA DITAMPILKAN
Nama variabel integer LONCAT berisi nilai statemen label 15 dan statemen GOTO LONCAT,(15)akan membawa proses meloncat ke statemen label 15, karena nilai variabel integer LONCAT sama dengan statemen label tersebut.
C. STATEMEN GOTO BERSYARAT
Statemen ini digunakan untuk mengontrol loncatan dari nilai ungkapan integer <i>. Bentuk umum :
GOTO (<slabel>[,<slabel>]…)[,]<i>
Dimana :<slabel> adalah statemen label dari suatu executabel statemen yang
berada pada unit program yang sama dengan statemen GOTO bersyarat tersebut.
<i> adalah ungkapan integer
55
Pemrograman Komputer Bahasa FORTRAN -
Statemen GOTO bersyarat akan menuju ke <slabel> yang pertama bila ungkapan <i> bernilai 1, akan menuju ke <slabel> kedua bila <i> bernilai 2 dan seterusnya.
Contoh 3.13
C234567890 CHARACTER*1 BUNYI
WRITE(*,’(1X,A)’)’ << PILIHAN >>’ 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’) NOMERC 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
CC 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 4000CC 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 4000C
56
Computed GOTO- 1 1000- 2 2000- 3 3000- 4 4000
Pemrograman Komputer Bahasa FORTRAN -
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 4000CC SELESAI 4000 CONTINUE END
Bila dijalankan akan ditampilkan 4 buah pilihan dan anda dapat memilih salah satu dari pilihan tersebut :
<< PILIHAN >>
1. Menghitung isi silinder 2. Menghitung luas segi tiga 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.0TINGGI SEGITIGA?15.0
LUAS SEGITIGA = 150.00
3.2.2 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
57
Pilih proses yang and pilih
Pemrograman Komputer Bahasa FORTRAN -
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(<expresi>) <statemen>Dimana :
<expresi> ungkapan logika atau ungkapan hubungan yang akan diseleksi.
<statemen> 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 3IF(A .LE. X .OR. Y .LE. 2) GOTO 5IF(.NOT. (X .LT. Y .OR. G .GT. GG)) GOTO 3
Contoh 3.15
C PROGRAM MENCARI TAHUN KABISATC234567890 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
58
Tidak
Ya
MULAI
BACA ITAHUN
SELESAI
Gambar 3.7 Diagram alir contoh 3.15,Menentukan Tahun Kabisat
TULIS :BUKAN TAHUN
KABISAT
XTAHUN=JTAHUN
HITUNGXTAHUN = ITAHUN/4.0
JTAHUN =ITAHUN/4
TULIS :TAHUN KABISAT
CONTINUE
Pemrograman Komputer Bahasa FORTRAN -
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 (<expressi>) <slabel>,<slabel>, <slabel>dimana :
<expressi> merupakan ekspresi aritmatika (disebelah kanan tanda =) yang akan dievaluasi harganya.
<slabel> merupakan nomor statemen yang dituju selanjutnya bila <expressi> 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, 13IF(X) 3, 4, 5 IF(K(I,J)-1)20, 40, 30IF(A*XZ**3-A*B) 2, 3, 4
Contoh 3.16 :
C PROGRAM PREMIC PREMI = 9.75 JIKA BELUM KAWINC PREMI = 16,25 KAWIN TANPA ANAKC PREMI = 24.50 KAWIN PUNYA ANAKC234567890 REAL NET WRITE(*,50)’ID ?’ 50 READ(*,’(BN,I4)’)ID PAY = 50000.00
59
= 0
< 0 > 0
FALSE
FALSETRUE
TRUEIE<
0
E=0
J
K
EI
J
KATAU
Gambar 3.9 Diagram alir contoh 3.16,Menentukan Jumlah Premi
POSITIF
NOL
NEGATIF
MULAI
BACA IDPAY 50000
SELESAI
NET PAY-16.25NET PAY-9.75 NET PAY-24.50
CETAK ID, NET
TYPE-2
Pemrograman Komputer Bahasa FORTRAN -
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(<statemen>) THEN ELSE
ELSEIF (<statemen>) THEN ENDIFBerikut contoh pendeklarasian IF-THEN, ELSE, ELSEIF dan ENDIF :
A. IF (IREMAIN .EQ. 2) THEN <statemen>ENDIF
B. IF(IREMAIN .EQ.2) THEN <statemen> ELSE <statemen>ENDIF
C. IF(IREMAIN .EQ. 2) THEN <statemen> ELSEIF (IREMAIN .EQ.3) THEN <statemen> ELSE <statemen>ENDIF
Contoh 3.17 :
C234567890 CHARACTE*20 NAMA(5), KET, GARIS*52 REAL*4 NILAI(5) DATA NAMA /’ARIEF’,’BUDI’,’CANDRA’,’DEWI’,’EDI’/
60
Pemrograman Komputer Bahasa FORTRAN -
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
61
Gambar 3.10 Diagram alir contoh 3.17, Menentukan kelulusan mahasiswa
TIDAK
TIDAK
TIDAK
YA
YA
YA
MULAI
BACADATA NAMA, NILAI
SELESAI
NILAI(I) > 75.0 ?
KET =’TIDAK LULUS’
CETAKJUDUL TABEL
DO I=1,5
NILAI(I) > 65.0 ?
NILAI(I) > 55.0 ?
CETAKJUDUL TABEL
15
KET =’LULUS SANGAT BAIK’
KET =’LULUS BAIK’
KET =’LULUS CUKUP’
Pemrograman Komputer Bahasa FORTRAN -
SOAL-SOAL YANG DIPECAHKAN
3.1 Temukan nilai akhir K setelah tiap ruas program FORTRAN berikut dilaksanakana. K=2
10 DO 20 I=3,8,2 IF (I .EQ.5) GOTO 20 K=K+120 CONTINUE K=2*K
b. K=210 DO 20 I=3,8,2 IF (I .EQ.5) GOTO 10 K=K+120 CONTINUE K=2*K
Jawab :a. 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=12Nilai 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)
b. 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
62
Pemrograman Komputer Bahasa FORTRAN -
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.
3.2 Tuliskan pernyataan-pernyataan berikut dalam FORTRAN :a. Jika X>Y, berhentib. Jika J≠K, lanjut ke pernyataan berpengenal 31c. Jika a2≤B+C, lanjutkan ke pernyataan berpengenal 41d. Jika A-B≥X3, berhenti
Jawab :a. IF(X .GT. Y) stop c. IF(A**2 .LE. B+C) GOTO 41
b. IF(J .NE. K) GOTO 31 d. IF(A-B .GE. X**3) STOP
3.3 Andaikan X dan Y telah didefinisikan. Tuliskan sebuah pernyataan FORTRAN atau ruas FORTRAN yang (a) mengalihkan pengendalian ke pernyataan berpengenal 41 jika a2 ≤ Y, dan jika tidak demikian mengalohkan pengendalian ke pernyataan berpengenal 42; (b) menetapkan K=0 jika X+Y>100, dan jika tidak menetapkan K=1.Lakukan hal di atas dalam dua cara, sekali dengan sebuah pernyataan IF logika.
Jawab :a . (i) perhatikan bahwa a2 ≤ Y, jika dan hanya jika a2 – Y negatif atau nol IF (X**2-Y) 41, 41, 42 (ii) IF (X**2 .LE. Y) GOTO 41 42 ………………………b. (i) Perhatikan bahwa X+Y>100 jika dan hanya jika X+Y-100 positif IF(X+Y-100.0)20, 20, 10 10 K=0 GOTO 30 20 K=1 30 ………………………. (ii) IF (X+Y .LE. 100.0) GOTO 20 K=0 GOTO 30 20 K=1 30 ……………….
SOAL-SOAL LATIHAN
1. Pada tiap pernyataan DO berikut, temukan kesalahan, jika ada :
63
Pemrograman Komputer Bahasa FORTRAN -
a. DO 700, LAMB=1,14,l c. DO 900 K=I, J, Kb. DO 800 J=7,M**2,2 d. DO 1000 LONG=K234 , K123, K345
2. Temukan nilai K setelah tiap ruas FORTRAN berikut dieksekusi
a. K=3 DO 100 J=3,7,3 K=K+J100 CONTINUE K=3*K
b. K=3 M=2 DO 300 J=3,7,M M=M+K300 CONTINUE K=3*K
c. K=3 M=2 DO 300 J=3,7,M K=K+J300 CONTINUE K=3*K
D. K=3 M=2 DO 400 J=M,7,M K=J+K+M IF(K.GT.9) GOTO 10400 CONTINUE 10 K=3*K
3. Temukan kesalahan jika ada, pada tiap pernyataan FORTRAN berikut:a. IF(A=B) GOTO 50 e. IF(X.LE.100) GOTO Kb. IF(X GT Y) STOP f. IF(A-100)10,20,30c. IF(B**2-A*C) STOP g. IF(X.GE.Y) GOTO 55d. IF(X.LT.Y+Z) 10,15, 20 h. IF(INT.LT.AMOUNT STOP
4. Jika J dan K masing-masing berisi 3 dan 5. temukan nilai akhir J setelah masing-masing ruas program dieksekusi :
a. IF(J.GE.K) J=J+2 J=J+2
b. IF(J.LT.K-1) GOTO 10 J=J+2 10 J=J+K
c. IF(5*J.EQ.3*K) J=J+2 J=J+2
D. IF(J.GE.K+1) GOTO 10 J=J+2 10 J=J+K
d. IF(J-) 10,10,20 10 J=K 20 J=J+2
IF(2*J-K)10,10,20 10 J=K 20 J=J+2
PRAKTIKUM
64
Pemrograman Komputer Bahasa FORTRAN -
1. Tulislah bebrapa program FORTRAN berikut, jalankan, amati prosesnya dan simpan dengan nama berbeda.
C23456789 PROGRAM LAT3_1AC Program statemen STOP
WRITE(*,4) A 4 FORMAT (1X,’NILAI A = ‘,F4.1)
STOP END
C23456789 PROGRAM LAT3_1BC Program statemen PAUSE
A=10.0 B=12.0 WRITE(*,4) A PAUSE ‘TEKAN <ENTER> UNTUK MELIHAT NILAI B’
WRITE(*,6) B 4 FORMAT(1X,’NILAI A = ‘, F4.1) 6 FORMAT(1X, ‘NILAI B = ‘,F4.1)
STOP END
C23456789 PROGRAM LAT3_1CC Program statemen membuat fungsiC Y(X)= LOG10 (X)
DO J=1,20,2 X=FLOAT(J) Y=LOG10(X) WRITE(*,50) X, Y ENDDO
50 FORMAT(1X,’NILAI A = ‘, F7.5), - 3X,’NILAI LOG10(X) = ‘,F9.5) END
C23456789 PROGRAM LAT3_1DC Program membuat fungsiC Y(X) = X! DOUBLEPRECISION Y WRITE(*,*) ‘BERAPA FAKTORIAL? ‘ READ(*,*) IFAKT Y=1.0 DO N=1, IFAK X=FLOAT(N) Y=Y*X
WRITE(*,4) X,Y ENDDO
4 FORMAT(1X,’HARGA ‘, I5,’!’, ‘ADALAH’, E27.17)
STOP END
C23456789 PROGRAM LAT3_1EC Program menghitung jumlah bilanganC dari 1 sampai N DOUBLEPRECISION Y WRITE(*,*) ‘N = ?’ READ(*,*) IAKHIR Y=0.0 DO 10 N=1, IAKHIR X=FLOAT(N) Y=Y+X
WRITE(*,10) N,Y ENDDO
4 FORMAT(1X,’JUMLAH BIL. DARI - 1-- ‘, I5, ‘ADALAH’, F9.1)
STOP END
C23456789 PROGRAM LAT3_1FC Program menghitung nilai dari persamaan
C
C CHARACTER*17 IFX1 DOUBLEPRECISION P,V,TC PERSAMAAN GAS CO2 R=8.31*1.0E+3 A=366.0 B=0.0429 DO M=1, 25 P=10000.0*FLOAT(M) DO N=1,M V=FLOAT(N) T=(P+A/V**2)*(V-B)/R WRITE(*,10) P, V, T ENDDO ENDDO 10 FORMAT(1X, ‘P= ’,F9.1,\,1X,’V= ’,F9.1,\,1X,’T=’,F9.1)
STOP END
C23456789 PROGRAM LAT3_1FC Program mencari bilangan terbesarC REAL LAR
65
Pemrograman Komputer Bahasa FORTRAN -
WRITE(*,*) ‘N = ?’ READ(*,10) N 10 FORMAT(I6) WRITE(*,*) ‘LAR = ?’ READ(*,20) LAR I=1 100 READ(*,20) X 20 FORMAT(F12.2) IF (LAR .GE.X) GOTO 200 LAR=X 200 I=I+1 IF (I .LE.N-1) GOTO 100
WRITE(*,30) LAR 30 FORMAT(1X,’BIL. TERBESAR ADALAH’,2X,F12.2)
STOP END
2. Buatlah program untuk menghitung :a. 1/n!b. y(t)=10.0 sin(2Πft) exp(-0.9t)
c.
d.
3. Buatlah program untuk menghitung menggunakan statemen
GOTO dan IF (decision) THEN4. Hitunglah dengan batas -4<x<4 dengan step 0.1
66