Dokumen tersebut memberikan ringkasan tentang standar kompetensi, kompetensi dasar, dan indikator untuk mata kuliah Pemrograman Komputer menggunakan bahasa FORTRAN. Standar kompetensi berfokus pada kemampuan mahasiswa mengembangkan program aplikasi untuk menyelesaikan masalah teknik, kompetensi dasar pada pembuatan program yang kompleks dengan pengambilan keputusan, dan indikator pada penggunaan perulangan
1. 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
4
42
2. Pemrograman Komputer Bahasa FORTRAN - 43
pengerjaan yang berbeda sesuai
dengan kondisi yang dihasilkan.
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 END selalu di akhir program
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>]
3. Pemrograman Komputer Bahasa FORTRAN - 44
Dimana :
<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
4. Pemrograman Komputer Bahasa FORTRAN - 45
Bila program ini dijalankan, didapatkan hasil sebagai berikut :
NILAI A = 10.0
Tekan Tombol RETURN untuk melihat nilai B
Please 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.
Statemen label
Contoh 3.3 : Variabel numerik integer
Awal perulangan
C234567890 Akhir perulangan
DO 5 I=1,5,1 Peningkatan (increment)
5 WRITE(*,21) I
21 FORMAT(1X,I2,’.’,1X,’KOMPUTER’)
END
Bila program ini dijalankan, didapatkan hasil sebagai berikut :
1. KOMPUTER
2. KOMPUTER
3. KOMPUTER
4. KOMPUTER
5. KOMPUTER
5. Pemrograman Komputer Bahasa FORTRAN - 46
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 = 8
NILAI I = 6
NILAI I = 4
NILAI I = 2
NILAI 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 Dimana :
.
. IN = nilai awal indeks
.
IE = nilai uji/akhir indexs
BADAN DO LOOP
. IC = peningkatan/interval
. n = statemen label (nomor
. Pernyataan CONTINUE)
n CONTINUE
Untuk jelasnya, stateman DO dapat digambarkan dalam bentuk
diagram alir seperti tampak dalam gambar 3.1.
6. Pemrograman Komputer Bahasa FORTRAN - 47
I IN
DO n
I = IN,IE,
IC
Badan DO
Badan DO
I I + IC
Ya
I≤ n
belum selesai belum selesai
Tidak
SELESAI SELESAI
(a) (b)
Gambar 3.1 Diagram Alir Statemen DO
Contoh 3.5 :
MULAI
C PROGRAM MENGHITUNG NILAI MAHASISWA
C234567890 DO
200
WRITE (*,5)
I=1,10
5 FORMAT(1X,’ID NO.’,4X,
1’TEST1’, 4X,’TEST2’,4X, Statemen BACA
DO ID,S1,S2,S3
2’TEST3’,3X,’AVERAGE’)
DO 200 I=1,100 SUM S1+S2+S3
READ(*,10)ID,S1,S2,S3
10 FORMAT(5X,I5,3(4X,F6.2)
SUM = S1 + S2 + S3 AVESUM/3.0
AVE = SUM/3.0
WRITE(*,20)ID,S1,S2,S3,AVE CETAK
20 FORMAT(5X,I5,4(4X,F6.2)) ID,S1,S2,S3,AV
200 CONTINUE E
STOP Statemen Blok 20
END CONTINUE DO LOOP 0
SELESAI
Gambar 3.2 Diagram alir contoh 3.5,
menghitung rata-rata 3 (tiga)
nilai ujian mahasiswa
7. Pemrograman Komputer Bahasa FORTRAN - 48
MULAI
Contoh 3.6
SUM 0
C PROGRAM PENENTUAN RATA-RATA
C DO
C234567890 200
SUM=0.0 I=1,10
DO 200 I=1,100
BACA A
READ(*,10)A
10 FORMAT(F10.2)
SUM = SUM+A SUM SUM + A
200 CONTINUE
AVE = SUM/100.0
20
WRITE(*,20)AVE 0
20 FORMAT(1X,F10.2)
STOP AVESUM/100.0
END
CETAK
AVE
SELESAI
Gambar 3.2 Diagram alir contoh 3.6,
Menghitung rata-rata 100
bilangan
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 Normal
Dimungkinkan 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
dipertahankan, karenanya dapat digunakan dalam perhitungan
8. Pemrograman Komputer Bahasa FORTRAN - 49
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 : MULAI
C234567890 BACA K
READ (*,8) K
8 FORMAT(I10)
KK = K/2 KK K/2
DO 100 I = 2, KK
IF (K .EQ.(K/I)*I) GO TO 50 DO
100 CONTINUE 100
WRITE(*,10)K I=2,
Ya (keluar tak normal)
10 FORMAT(10X,I5,1X,’ADALAH
1PRIMA’) I membagi
STOP
50 WRITE(*,20)K,I Tidak
K bukan
20 FORMAT(10X,I5,1X,’BUKAN PRIMA’ prima
10
1 10X,I5,1X,’ADALAH PEMBAGI’) 0 I pembagi
STOP
Keluar normal
END
K prima
SELESAI
Gambar 3.3 Diagram alir contoh 3.7,
Mencari bilangan prima
9. Pemrograman Komputer Bahasa FORTRAN - 50
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 + 1
ISUM = ISUM + I
100 CONTINUE
(B) ISUM = 0
50 DO 200 I=1,10
IF(I .EQ. 4) GO TO 50
ISUM = 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 + 1
ISUM = 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
IF(I .EQ. 4) GO TO 50
diganti dengan :
10. Pemrograman Komputer Bahasa FORTRAN - 51
IF(I .EQ. 4) GO TO 200
MULAI
Contoh 3.8 : BACA LAR
C PROGRAM PENENTUAN
DO 50
C BILANGAN TERBESAR I=1, 99
C
C234567890
REAL LAR BACA X
READ (*,10) LAR
10 FORMAT(F10.2) Ya
LAR ≥ X
DO 50 I = 1, 99
READ (*,10) X Tidak
IF(LAR.GE.X)GO TO 50 LAR X
LAR = X
50 CONTINUE
WRITE(*,20)LAR 5
20 FORMAT(1X,F10.2) 0
STOP
END CETAK LAR
SELESAI
Gambar 3.4 Diagram alir contoh 3.8,
Menentukan Bilangan Terbesar
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.
4. DO loop boleh memiliki pernyataan terakhir yang sama seperti
ditunjukkan dalam gambar 3.6.
11. Pemrograman Komputer Bahasa FORTRAN - 52
DO 18____________ DO 18____________
*** ***
*** ***
DO 20___________ ***
*** DO 20___________
*** ***
DO 30___________ ***
*** ***
*** 18 CONTINUE
30 CONTINUE ***
*** ***
*** ***
20 CONTINUE 20 CONTINUE
***
***
18 CONTINUE
Dapat diterima Tidak dapat diterima
( DO loop bersarang ) (DO loop tumpang tindih)
(a) (b)
GAMBAR 3.5 Penggunaan DO loop bersarang
DO 20___________ DO 10___________
*** ***
*** ***
DO 10___________ DO 10___________
*** ***
*** ***
10 CONTINUE 10 CONTINUE
20 CONTINUE
DO 10___________
***
***
DO 10___________
***
***
10 PERNYATAAN TEREKSEKUSI
GAMBAR 3.5 Penggunaan DO loop bersarang dengan akhir yang sama
12. Pemrograman Komputer Bahasa FORTRAN - 53
Contoh 3.9 :
C PROGRAM MENGHITUNG NILAI RATA-RATA
C TIGA KALI UJIAN 25 MAHASISWA DENGAN
C NASTED DO-LOOP
C
C234567890
WRITE(*,100)
100 FORMAT(‘1’,4X,’ID’,9X,’AVERAGE’)
DO 80 K = 1,25
READ (*,90) ID
90 FORMAT(I10)
SUM=0.0
DO 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
Statemen ini memberiperintah agar program dilanjutkan langsung ke
statemen nomor <slabel>. Bentuk umum :
GO TO <slabel>
Dimana :
13. Pemrograman Komputer Bahasa FORTRAN - 54
<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.
MULAI
Contoh 3.10 :
C PROGRAM MENGHITUNG NILAI
C RATA-RATA UNTUK TIAP MAHASISWA BACA
ID,S1,S2,S3
C
C234567890
CETAK
100 READ (*,90) ID,S1,S2,S3 ID,S1,S2,S3
90 FORMAT(I5,F10.2,F10.2,F10.2)
WRITE(*,90)ID,S1,S2,S3 SUM S1+S2+S3
SUM = S1+S2+S3
AVE = SUM/3.0 Ave SUM/3
WRITE(*,30)AVE
30 FORMAT(1X,’RATA-RATA =’,F6.2)
GO TO 100 CETAK AVE
END
SELESAI
Gambar 3.6 Diagram alir contoh 3.10
Contoh 3.11 :
C234567890
5 WRITE(*,’(1A,A)’)KOMPUTER’
GO TO 5
END
Bila program ini dijalankan didapat hasil :
KOMPUTER
KOMPUTER
KOMPUTER
KOMPUTER Tanda C ini menunjukkan ditekan tombol CTRL+C (Break)
KOMPUTER Karena program akan terus berjalan (loop tak terhingga)
KOMPUTER
KOMPUTER
KOMPUTER
KOMPUT^C
B. STATEMEN GO TO PENGERJAAN
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 :
14. Pemrograman Komputer Bahasa FORTRAN - 55
<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
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.
15. Pemrograman Komputer Bahasa FORTRAN - 56
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’) NOMER
C Computed GOTO
- 1
C menuju ke label sesuai dengan nomor yang dipilih 1000
- 2 2000
WRITE(*,*) - 3 3000
GOTO(1000,2000,3000,4000) NOMER
BUNYI = 7
- 4 4000
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
16. Pemrograman Komputer Bahasa FORTRAN - 57
C
C 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
Pilih proses yang and
pilih
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.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
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).
17. Pemrograman Komputer Bahasa FORTRAN - 58
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 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 MULAI
C PROGRAM MENCARI TAHUN KABISAT BACA
ITAHUN
C234567890
WRITE(*,’(1X,A,)’)’TAHUN ?’ HITUNG
READ(*,’(BN,I4)’) ITAHUN XTAHUN = ITAHUN/4.0
XTAHUN=ITAHUN/4.0 JTAHUN =ITAHUN/4
JTAHUN=ITAHUN/4
IF(XTAHUN .EQ. JTAHUN) GOTO 100
WRITE(*,’(1X,A,I4,A)’)’TAHUN’, Ya
XTAHUN
1ITAHUN,’BUKAN TAHUN KABISAT’ =
GOTO 200
Tidak
100 WRITE(*,’(1X,A,I4,A)’)’TAHUN’,
1ITAHUN,’ADALAH TAHUN KABISAT’ TULIS :
200 CONTINUE TULIS : BUKAN TAHUN
TAHUN KABISAT KABISAT
END
CONTINUE
SELESAI
Bila program tersebut dijalankan akan didapatkan
hasil :
Gambar 3.7 Diagram alir contoh 3.15,
TAHUN ? 1987 Menentukan Tahun Kabisat
TAHUN 1987 ADALAH BUKAN TAHUN KABISAT
B. IF ARITMATIKA
18. Pemrograman Komputer Bahasa FORTRAN - 59
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.
TRUE <0 >0
E< I ATAU I E K
FALSE =0
TRUE
E= J J
FALSE
K
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 : MULAI
C PROGRAM PREMI BACA ID
C PREMI = 9.75 JIKA BELUM KAWIN PAY 50000
C PREMI = 16,25 KAWIN TANPA ANAK
C PREMI = 24.50 KAWIN PUNYA ANAK NEGATIF POSITIF
C234567890 TYPE-2
REAL NET
NOL
WRITE(*,50)’ID ?’
50 READ(*,’(BN,I4)’)ID NET PAY-9.75 NET PAY-16.25 NET PAY-24.50
PAY = 50000.00
IF(TYPE-2) 10,20,30
CETAK
10 NET = PAY -9.75 ID, NET
GOTO 75
20 NET = PAY – 16.25
GOTO 75 SELESAI
30 NET = PAY – 24.50
Gambar 3.9 Diagram alir contoh 3.16,
Menentukan Jumlah Premi
19. Pemrograman Komputer Bahasa FORTRAN - 60
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
ENDIF
Berikut 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’/
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
20. Pemrograman Komputer Bahasa FORTRAN - 61
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
MULAI
BACA
DATA NAMA,
NILAI
CETAK
JUDUL TABEL
DO
I=1,5
YA
NILAI(I) > KET =’LULUS SANGAT BAIK’
75.0 ?
TIDAK
NILAI(I) >
YA
KET =’LULUS BAIK’
65.0 ?
TIDAK
NILAI(I) > YA
KET =’LULUS CUKUP’
55.0 ?
TIDAK
KET =’TIDAK LULUS’
CETAK
JUDUL TABEL
1
5
SELESAI
Gambar 3.10 Diagram alir contoh 3.17,
Menentukan kelulusan mahasiswa
21. Pemrograman Komputer Bahasa FORTRAN - 62
SOAL-SOAL YANG DIPECAHKAN
3.1 Temukan nilai akhir K setelah tiap ruas program FORTRAN berikut dilaksanakan
a. K=2 b. K=2
10 DO 20 I=3,8,2 10 DO 20 I=3,8,2
IF (I .EQ.5) GOTO 20 IF (I .EQ.5) GOTO 10
K=K+1 K=K+1
20 CONTINUE 20 CONTINUE
K=2*K 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=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)
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
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.
22. Pemrograman Komputer Bahasa FORTRAN - 63
3.2 Tuliskan pernyataan-pernyataan berikut dalam FORTRAN :
a. Jika X>Y, berhenti
b. Jika J≠K, lanjut ke pernyataan berpengenal 31
c. Jika a2≤B+C, lanjutkan ke pernyataan berpengenal 41
d. 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 :
a. DO 700, LAMB=1,14,l c. DO 900 K=I, J, K
b. DO 800 J=7,M**2,2 d. DO 1000 LONG=K234 , K123, K345
2. Temukan nilai K setelah tiap ruas FORTRAN berikut dieksekusi
23. Pemrograman Komputer Bahasa FORTRAN - 64
a. K=3 b. K=3
DO 100 J=3,7,3 M=2
K=K+J DO 300 J=3,7,M
100 CONTINUE M=M+K
K=3*K 300 CONTINUE
K=3*K
c. K=3 D. K=3
M=2 M=2
DO 300 J=3,7,M DO 400 J=M,7,M
K=K+J K=J+K+M
300 CONTINUE IF(K.GT.9) GOTO 10
K=3*K 400 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 K
b. IF(X GT Y) STOP f. IF(A-100)10,20,30
c. IF(B**2-A*C) STOP g. IF(X.GE.Y) GOTO 55
d. 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 b. IF(J.LT.K-1) GOTO 10
J=J+2 J=J+2
10 J=J+K
c. IF(5*J.EQ.3*K) J=J+2 D. IF(J.GE.K+1) GOTO 10
J=J+2 J=J+2
10 J=J+K
d IF(J-) 10,10,20 IF(2*J-K)10,10,20
. 10 J=K 10 J=K
20 J=J+2 20 J=J+2
PRAKTIKUM
1. Tulislah bebrapa program FORTRAN berikut, jalankan, amati prosesnya dan
simpan dengan nama berbeda.
C23456789 C23456789
PROGRAM LAT3_1A PROGRAM LAT3_1B
C Program statemen STOP C Program statemen PAUSE
WRITE(*,4) A A=10.0
4 FORMAT (1X,’NILAI A = ‘,F4.1) B=12.0
24. Pemrograman Komputer Bahasa FORTRAN - 65
STOP WRITE(*,4) A
END 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 C23456789
PROGRAM LAT3_1C PROGRAM LAT3_1D
C Program statemen membuat fungsi C Program membuat fungsi
C Y(X)= LOG10 (X) C Y(X) = X!
DO J=1,20,2 DOUBLEPRECISION Y
X=FLOAT(J) WRITE(*,*) ‘BERAPA FAKTORIAL? ‘
Y=LOG10(X) READ(*,*) IFAKT
WRITE(*,50) X, Y Y=1.0
ENDDO DO N=1, IFAK
50 FORMAT(1X,’NILAI A = ‘, F7.5), X=FLOAT(N)
- 3X,’NILAI LOG10(X) = ‘,F9.5) Y=Y*X
END WRITE(*,4) X,Y
ENDDO
4 FORMAT(1X,’HARGA ‘, I5,’!’,
‘ADALAH’, E27.17)
STOP
END
C23456789 C23456789
PROGRAM LAT3_1E PROGRAM LAT3_1F
C Program menghitung jumlah bilangan C Program menghitung nilai dari persamaan
C dari 1 sampai N a (v − b )
C T ( P, V ) = P + 2
DOUBLEPRECISION Y V R
WRITE(*,*) ‘N = ?’ C
READ(*,*) IAKHIR CHARACTER*17 IFX1
Y=0.0 DOUBLEPRECISION P,V,T
DO 10 N=1, IAKHIR C PERSAMAAN GAS CO2
X=FLOAT(N) R=8.31*1.0E+3
Y=Y+X A=366.0
WRITE(*,10) N,Y B=0.0429
ENDDO DO M=1, 25
4 FORMAT(1X,’JUMLAH BIL. DARI P=10000.0*FLOAT(M)
- 1-- ‘, I5, ‘ADALAH’, F9.1) DO N=1,M
STOP V=FLOAT(N)
END 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_1F
C Program mencari bilangan terbesar
C
REAL LAR
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
25. Pemrograman Komputer Bahasa FORTRAN - 66
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)
n
1
c. ∑ dengan A = 10.0 dan B = 1
1=1 A + iB
d. y (t ) = t 2 + t + 1.0
10
3. Buatlah program untuk menghitung ∑n
n =1
2
+ n + 1 menggunakan statemen
GOTO dan IF (decision) THEN
4. Hitunglah y = x 4 − 0.5 x 2 + 7.0 x − 8.0 dengan batas -4<x<4 dengan step 0.1