Anda di halaman 1dari 25

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.

4 42

Bahan Ajar Komputer

I Made Adi Sayoga,MT

43

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 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

STATEMEN

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 :

Bahan Ajar Komputer

I Made Adi Sayoga,MT

44

<n> Contoh 3.1 :

merupakan suatu konstanta angka yang panjangnya tidak boleh lebih dari lima digit atau suatu string dan sifatnya opsional.

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> 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

merupakan suatu konstanta angka yang panjangnya tidak boleh lebih dari lima digit atau suatu string dan sifatnya opsional.

Bahan Ajar Komputer

I Made Adi Sayoga,MT

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 perulangan (starting point) <exp2> : nilai numerik bulat akhir perulangan (end point) <exp3> : nilai numerik bulat sebagai peningkatan (interval) perulangan.
Statemen label Variabel numerik integer Awal perulangan Akhir perulangan Peningkatan (increment)

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. 2. 3. 4. 5. KOMPUTER KOMPUTER KOMPUTER KOMPUTER KOMPUTER

Tampak statemen WRITE akan diperoses sebanyak lima kali, yaitu hitungan I = 1 sampai I = 5 dengan interval 1.

Bahan Ajar Komputer

I Made Adi Sayoga,MT

46

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 NILAI NILAI NILAI NILAI I I I I I = = = = = 8 6 4 2 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

Dimana : IN = nilai awal indeks IE = nilai uji/akhir indexs IC = peningkatan/interval n = statemen label (nomor Pernyataan CONTINUE)

Untuk jelasnya, stateman DO dapat digambarkan dalam bentuk diagram alir seperti tampak dalam gambar 3.1.

Bahan Ajar Komputer

I Made Adi Sayoga,MT

47

I IN

DO n I = IN,IE, IC

Badan DO Badan DO
I I + IC Ya belum selesai

I IE
Tidak
SELESAI

belum selesai

n
SELESAI

(a)

(b)

Gambar 3.1 Diagram Alir Statemen DO Contoh 3.5 :


C PROGRAM MENGHITUNG NILAI MAHASISWA C234567890 WRITE (*,5) 5 FORMAT(1X,ID NO.,4X, Statemen 1TEST1, 4X,TEST2,4X, DO 2TEST3,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 Statemen Blok END CONTINUE DO LOOP

MULAI DO 200 I=1,10 0 BACA ID,S1,S2,S3 SUM S1+S2+S3 AVESUM/3.0 CETAK ID,S1,S2,S3,AV E 20 0 SELESAI

Gambar 3.2 Diagram alir contoh 3.5, menghitung rata-rata 3 (tiga) nilai ujian mahasiswa

Bahan Ajar Komputer

I Made Adi Sayoga,MT


MULAI

48

Contoh 3.6
SUM 0

C PROGRAM PENENTUAN RATA-RATA C C234567890 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

DO 200 I=1,10 0 BACA A SUM SUM + A 20 0 AVESUM/100.0 CETAK AVE SELESAI

3.1.6 DO-LOOP

Gambar 3.2 Diagram alir contoh 3.6, Menghitung rata-rata 100 bilangan KELUAR DARI

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 lebih lanjut atau

Bahan Ajar Komputer

I Made Adi Sayoga,MT

49

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 * * * *** *** STOP

Nilai indeks K terdefinisi untuk pernyataan ini

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

MULAI BACA K KK K/2 DO 100 I=2, KK I membagi K Ya (keluar tak normal)

Tidak 10 0 Keluar normal K prima SELESAI

K bukan prima I pembagi

Gambar 3.3 Diagram alir contoh 3.7, Mencari bilangan prima

Bahan Ajar Komputer

I Made Adi Sayoga,MT

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 ISUM = 0 50 DO 200 I=1,10 IF(I .EQ. 4) GO TO 50 ISUM = ISUM + I 200 CONTINUE

(B)

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 :

Bahan Ajar Komputer

I Made Adi Sayoga,MT

51

IF(I .EQ. 4) GO TO 200


MULAI

Contoh 3.8 :
C PROGRAM PENENTUAN C BILANGAN TERBESAR C C234567890 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

BACA LAR DO 50 I=1, 99 BACA X Ya

LAR X Tidak LAR X 5 0 CETAK LAR SELESAI

Gambar 3.4 Diagram alir contoh 3.8, Menentukan Bilangan Terbesar 3.1.8 BERSARANG (NASTED DO) DO-LOOP

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.

Bahan Ajar Komputer

I Made Adi Sayoga,MT

52

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 PERNYATAAN TEREKSEKUSI DO 10___________ *** *** DO 10___________ *** *** 10 CONTINUE

GAMBAR 3.5 Penggunaan DO loop bersarang dengan akhir yang sama

Bahan Ajar Komputer

I Made Adi Sayoga,MT

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 3.2.1

PENYELEKSIAN KONDISI 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 :

Bahan Ajar Komputer

I Made Adi Sayoga,MT

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 C C234567890 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
BACA ID,S1,S2,S3 CETAK ID,S1,S2,S3 SUM S1+S2+S3 Ave SUM/3 CETAK AVE 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 KOMPUTER KOMPUTER KOMPUTER KOMPUTER KOMPUT^C

Tanda C ini menunjukkan ditekan tombol CTRL+C (Break) Karena program akan terus berjalan (loop tak terhingga)

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 :

Bahan Ajar Komputer

I Made Adi Sayoga,MT

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.

Bahan Ajar Komputer

I Made Adi Sayoga,MT

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 Computed GOTO C - 1 C menuju ke label sesuai dengan nomor yang dipilih 1000 - 2 2000 WRITE(*,*) - 3 3000 GOTO(1000,2000,3000,4000) NOMER - 4 4000 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

Bahan Ajar Komputer C C SELESAI 4000 CONTINUE END

I Made Adi Sayoga,MT

57

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

Pilih proses yang and pilih

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).

Bahan Ajar Komputer

I Made Adi Sayoga,MT

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
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 Ya WRITE(*,(1X,A,I4,A))TAHUN, 1ITAHUN,BUKAN TAHUN KABISAT GOTO 200 100 WRITE(*,(1X,A,I4,A))TAHUN, 1ITAHUN,ADALAH TAHUN KABISAT TULIS : 200 CONTINUE TAHUN KABISAT END
MULAI BACA ITAHUN HITUNG XTAHUN = ITAHUN/4.0 JTAHUN =ITAHUN/4

XTAHUN = JTAHUN Tidak TULIS : BUKAN TAHUN KABISAT

CONTINUE

Bila program tersebut dijalankan akan didapatkan hasil :


TAHUN ? 1987 TAHUN 1987 ADALAH BUKAN TAHUN KABISAT

SELESAI

Gambar 3.7 Diagram alir contoh 3.15, Menentukan Tahun Kabisat

B. IF ARITMATIKA

Bahan Ajar Komputer

I Made Adi Sayoga,MT

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.
E< 0
FALSE TRUE

I J

ATAU

<0

E
=0

>0

E= 0
FALSE

TRUE

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 NEGATIF C PREMI = 24.50 KAWIN PUNYA ANAK C234567890 REAL NET WRITE(*,50)ID ? 50 READ(*,(BN,I4))ID NET PAY-9.75 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

MULAI BACA ID PAY 50000 POSITIF

TYPE-2 NOL NET PAY-16.25 CETAK ID, NET SELESAI

NET PAY-24.50

Gambar 3.9 Diagram alir contoh 3.16, Menentukan Jumlah Premi

Bahan Ajar Komputer 75 WRITE(*,40)ID, NET 40 FORMAT(1X,I5,3X,F12.2) END

I Made Adi Sayoga,MT

60

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

Bahan Ajar Komputer

I Made Adi Sayoga,MT

61

WRITE(*,(1X,A)) NAMA MAHASISWA NILAI 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

KETERANGAN

DO I=1,5 YA KET =LULUS SANGAT BAIK

NILAI(I) > 75.0 ?

TIDAK
NILAI(I) > 65.0 ?

YA

KET =LULUS BAIK

TIDAK
NILAI(I) > 55.0 ?

YA

KET =LULUS CUKUP

TIDAK KET =TIDAK LULUS

CETAK JUDUL TABEL

1 5
SELESAI

Gambar 3.10 Diagram alir contoh 3.17, Menentukan kelulusan mahasiswa

Bahan Ajar Komputer

I Made Adi Sayoga,MT

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 I5, 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 I5, 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 I5 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.

Bahan Ajar Komputer

I Made Adi Sayoga,MT

63

3.2 Tuliskan pernyataan-pernyataan berikut dalam FORTRAN : a. Jika X>Y, berhenti b. Jika JK, lanjut ke pernyataan berpengenal 31 c. Jika a2B+C, lanjutkan ke pernyataan berpengenal 41 d. Jika A-BX3, berhenti Jawab : a. IF(X .GT. Y) stop b. IF(J .NE. K) GOTO 31 c. IF(A**2 .LE. B+C) GOTO 41 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

Bahan Ajar Komputer

I Made Adi Sayoga,MT

64

a.

K=3 DO 100 J=3,7,3 K=K+J 100 CONTINUE K=3*K K=3 M=2 DO 300 J=3,7,M K=K+J 300 CONTINUE K=3*K

b.

c.

K=3 M=2 DO 300 J=3,7,M M=M+K 300 CONTINUE K=3*K D. K=3 M=2 DO 400 J=M,7,M K=J+K+M IF(K.GT.9) GOTO 10 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. c. d. IF(J.GE.K) J=J+2 J=J+2 IF(5*J.EQ.3*K) J=J+2 J=J+2 IF(J-) 10,10,20 10 J=K 20 J=J+2 b. D. IF(J.LT.K-1) GOTO 10 J=J+2 10 J=J+K IF(J.GE.K+1) GOTO 10 J=J+2 10 J=J+K IF(2*J-K)10,10,20 10 J=K 20 J=J+2

PRAKTIKUM 1. Tulislah bebrapa program FORTRAN berikut, jalankan, amati prosesnya dan simpan dengan nama berbeda.
C23456789 PROGRAM LAT3_1A C Program statemen STOP WRITE(*,4) A 4 FORMAT (1X,NILAI A = ,F4.1) C23456789 PROGRAM LAT3_1B C Program statemen PAUSE A=10.0 B=12.0

Bahan Ajar Komputer


STOP END

I Made Adi Sayoga,MT

65

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_1C C Program statemen membuat fungsi C 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_1E C Program menghitung jumlah bilangan C 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_1D C Program membuat fungsi C 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_1F C Program menghitung nilai dari persamaan C C C CHARACTER*17 IFX1 DOUBLEPRECISION P,V,T 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
a (v b ) T ( P, V ) = P + 2 V R

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

Bahan Ajar Komputer


IF (I .LE.N-1) GOTO 100 WRITE(*,30) LAR 30 FORMAT(1X,BIL. TERBESAR ADALAH,2X,F12.2) STOP END

I Made Adi Sayoga,MT

66

2. Buatlah program untuk menghitung : a. 1/n! b. y(t)=10.0 sin(2ft) exp(-0.9t) n 1 dengan A = 10.0 dan B = 1 c. 1=1 A + iB d. y (t ) = t 2 + t + 1.0 3. Buatlah program untuk menghitung

n
n =1

10

+ 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