90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Transcript of 90594412 bab-3-pengaturan-aliran-pemograman-fotran

Page 1: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 2: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 3: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 4: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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)

Page 5: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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)

Page 6: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 7: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 8: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 9: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 10: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 11: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 12: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 13: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 14: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 15: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 16: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 17: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 18: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 19: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 20: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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’

Page 21: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 22: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 23: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 24: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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

Page 25: 90594412 bab-3-pengaturan-aliran-pemograman-fotran

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