You are on page 1of 18

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 untuk memanipulasi data dalam bentuk larik (array) dan dapat melakukan operasi aritmatika terhadapnya.

INDIKATOR
1. Mahasiswa dapat menggunakan ungkapan spesifikasi (specification statement) DIMENSION, IMPLICIT, dan TYPE dalam mendefinisikan sebuah larik. 2. Mahasiswa mampu menggunakan ungkapan operasi aritmatika pada larik berdimensi satu dalam sebuah program aplikasi. 3. Mahasiswa dapat melakukan manipulasi aritmatika terhadap larik berdimensi banyak dalam sebuah program aplikasi.

6 67

Pemrograman Komputer Bahasa FORTRAN

68

4.

Mahasiswa dapat memanipulasi tampilan program aplikasi larik yang berkaitan dengan tampilan masukan dan keluaran sehingga program lebih interaktif. Variabel-variabel yang digunakan sedemikian jauh disebut variabel tanpa indeks atau variabel skalar. Tiap variabel skalar mewakili sebuah sel memori tempat disimpannya sebuah nilai tunggal, yaitu sebuah variabel X dapat dipandang sebagai sebuah kotak :
X

Sangat sering, seseorang ingin menggunakan satu nama untuk mengacu pada sebuah daftar nilai yang mempunyai ciri sama, misalnya nomor pengenal mahasiswa dalam kelas ilmu komputer, skor suatu nilai ujian dan sebagainya. Ini dilakukan dengan menggunakan larik atau variabel berindeks. Dalam matematika, orang menggunakan suatu lambang dengan tikalas berbeda untuk menunjukkan elemen-elemen suatu himpunan yang diketahui. Sebagai contoh s1,s2,s25 boleh digunakan untuk menunjukkan skor suatu kelas dengan 25 mahasiswa. Menggunakan penulisan tikalas, dapat ditulis :

s
i =1 25 i =1

25

= s1 + s 2 + ... + s 25

untuk jumlah skor, dan ( si ) / 25 untuk rata-rata kelas. Dengan perkataan lain, penggunaan tikalas mutlak penting dalam pengembangan penulisan ringkas untuk memanipulasi aljabar dari bilanganbilangan yang dicakup. 4.1 STATEMEN DIMENSION, IMPLICIT DAN TYPE Sebelum suatu larik linier atau dimensi banyak digunakan dalam sebuah program, programmer harus melengkapi kompiler dengan informasi berikut : 1. Nama larik; 2. Jumlah indeks dalam larik (yakni apakah larik adalah dimensi satu, dimensi dua, dan seterusnya); 3. Jumlah alokasi memori yang harus disediakan, atau nilai maksimum tiap indeks. Hal di atas dilaksanakan dengan penggunaan pernyataan tipe DIMENSION (seperti halnya pernyataan TYPE, pernyataan DIMENSION adalah tak dapat dieksekusi dan harus ditempatkan sebelum suatu pernyataan yang dapat dieksekusi di dalam program). A. STATEMEN DIMENSION

Pemrograman Komputer Bahasa FORTRAN

69

Kegunaan statemen DIMENSION adalah untuk menyatakan bahwa suatu variabel merupakan variabel berindeks sekaligus menentukan jumlah dari elemen-elemennya. Bentuk umum statemen ini adalah sebagai berikut : DIMENSION<array>[,<array>(<dim>] Dimana : <array> adalah nama dari suatu variabel berindeks yang didevinisikan <dim> adalah deklarasi dimensi yang menunjukkan jumlah dari elemen larik. Dalam mendeklarasaikan larik, hal-hal berikut patut diperhatikan : 1. Suatu array (larik) maksimum dapat berdimensi sampai 7 buah dimensi dan ukuran maksimum seluruh larik adalah 64 Kilo byte (Kb) atau 65536 byte. 2. Untuk WATFOR77 indeks maksimum adalah 6500 indeks untuk bilangan real. 3. Nilai indeks tidak boleh nol atau negatif 4. Nilai indeks tidak boleh lebih dari nilai indeks yang dinyatakan dalam statemen DIMENSION. Contoh 4.1 : DIMENSION AMOUNT (100) DIMENSION ID(50), TAX(150) DIMENSION AMOUNT(100,100) Pada contoh pertama di atas, statemen tersebut memerintahkan kompiler bahwa AMOUNT adalah nama suatu larik linier (berdimensi satu) dan memerintahkan kompiler untuk mengalokasikan 100 lokasi memori untuknya. Pada statemen ke dua, mendeklarasikan dua buah larik linier dengan 50 elemen untuk ID dan 150 elemen untuk TAX. Sedangkan statemen ke tiga mendefinikan larik berdimensi banyak yang bernama AMOUNT dengan elemen 100x100 (100 baris dan 100 kolom). B. STATEMEN IMPLICIT Statemen IMPLICIT digunakan untuk mendefinisikan tipe default dari nama yang dibuat oleh pembuat program. Bentuk umum statemen ini adalah sebagai berikut : IMPLICIT <type>(<a>[<a>])[,<type(<a>[,<a>],)] Dimana : <type> adalah salah satu dari tipe : INTEGER INTEGER*2

Pemrograman Komputer Bahasa FORTRAN

70

<a>

INTEGER*4 REAL REAL*4 REAL*8 DOUBLE PRECISION LOGICAL LOGICAL*2 LOGICAL*4 CHARACTER adalah suatu huruf atau range dari huruf. Bila berbentuk range dari huruf, harus dari urutan kecil kebesar.

Statemen IMPLICIT mendefinisikan tipe dari semua variabel atau larik yang huruf pertama dari namanya disebutkan sebagai <a>. Huruf yang sama tidak boleh didefinisikan ulang dengan statemen IMPLICIT. Variabel atau larik yang sudah didefinisikan dengan statemen IMPLICIT dapat didefinisikan ulang dengan statemen TYPE. Contoh 4.2
C234567890 IMPLICIT INTEGER A ANGKA = 5 AKAR= 15 . . .

Statemen diatas mendeklarasikan semua nama variabel dan larik yang diawali dengan huruf A dianggap sebagai tipe integer, sudah bukan real lagi. Contoh 4.3 a :
marupakan variabel integer edit descriptor harus sesuai tipe data

C234567890 NILAI = 57.35 BOBOT = 1.5 NILAIAKHIR= NILAI*BOBOT WRITE(*,200) NILAIAKHIR 200 FORMAT(1X,NILAIAKHIR= ,F6.2) END

Bila program ini dijalankan, akan tampak sebagai berikut :


Terjadi kesalahan pada format data Kode salah 1241 menunjukkan jenis kesalahan Isi dari register di CPU

Pemrograman Komputer Bahasa FORTRAN

71

? Error: Data format error in file USER Error code 1241, status 000E PC = 4C74: 012C; ss = 51CF, FP = F52A, SP = F52C

Kesalahan yang terjadi disebabkan karena variabel dengan huruf awal I,J,K,L,M,N, kalau tak didefinisikan lain (default), berisi data integer. Sehingga, variabel NILAI dan NILAIAKHIR dianggap sebagai data integer, tetapi pada program diatas berisi data real dan format outputnya digunakan F6.2 yaitu format untuk bilangan real. Untuk dapat menggunakan program tersebut tanpa menimbulkan adanya kesalahan, gunakan statemen IMPLICIT seperti dalam program berikut :
mendefinisikan semua nama yang diawali dengan huruf N adalah tipe real C234567890 IMPLICIT REAL (N) NILAI = 57.35 BOBOT = 1.5 NILAIAKHIR= NILAI*BOBOT WRITE(*,200) NILAIAKHIR 200 FORMAT(1X,NILAIAKHIR = ,F6.2) END

Bila dijalankan akan didapat hasil :


NILAIAKHIR = 86.02

Contoh 4.4 :

C234567890 IMPLICIT INTEGER (A-D) IMPLICIT CHARACTER*20 (N) IMPLICIT INTEGER(A-D, P-G,X) . . .

nama diawali huruf A, B, C, D INTEGER nama diawali N karakter panjang 20 byte nama diawali A,B,C,D,P,Q dan X INTEGER

C. STATEMEN TYPE Statemen type berfungsi untuk mendefinisikan tipe dari suatu nama yang dibentuk oleh pembuat program. Bentuk umum statemen ini adalah sebagai berikut : <type> <nama> [,<nama>] ... Dimana : <type> adalah salah satu dari tipe : INTEGER

Pemrograman Komputer Bahasa FORTRAN

72

INTEGER*2 INTEGER*4 REAL REAL*4 REAL*8 DOUBLE PRECISION LOGICAL LOGICAL*2 LOGICAL*4 CHARACTER <nama> adalah nama dari variabel, nama larik, nama fungsi atau nama fungsi eksternal. Statemen type mempunyai atauran sebagai berikut : 1. Suatu statemen type harus ditulis sebelum executable statement 2. Nama yang ditunjukkan di statemen type tidak boleh didefinisikan lebih dari sekali. 3. Suatu statemen type tidak boleh diberi statemen label . Contoh 4.5 :
C234567890 REAL NILAI1, NILAI2, NILAI3, JUMLAH . . .

Berarti, nama variabel NILAI1, NILAI2, NILAI3 dan JUMLAH adalah bertipe real. Contoh 4.6 :
C234567890 CHARACTER NAMA*10, ALAMAT*20 REAL*8 NILAI1, NILAI2, NILAI3*4 . . .

Berarti variabel NAMA adalah tipe karakter 10 byte, ALAMAT adalah tipe karakter 20 byte, NILAI1 dan NILAI2 adalah tipe real 8 byte dan NILAI3 tipe real 4 byte. Statemen type dapat digunakan untuk mendefinisikan ulang nama yang sudah didefinisikan oleh statemen IMPLICIT :

Pemrograman Komputer Bahasa FORTRAN

73

Contoh 4.7 :
C234567890 IMPLICIT INTEGER (A-D,X) REAL BOBOT . . .

berarti nama variabel BOBOT termasuk dalam tipe integer, tetapi tipe real, sedang nama lain yang diawali huruf B tetap bertipe integer. Statemen TYPE juga dapat menggantikan statemen DIMENSION untuk mendefinisikan larik beserta jumlah elemennya. Contoh 4.8 :
C234567890 DIMENSION A(5,5), NILAI(100) . . .

dapat juga ditulis dengan arti yang sama sebagai berikut :


REAL A(5,3) INTEGER NILAI(100) . . .

4.2 LARIK BERDIMENSI SATU Larik linier atau dimensi-satu dengan N elemen adalah suatu daftar atau serangkai N sel memori, dimana tiap sel boleh menyimpan sebuah nilai. Sel-sel ini mempunyai nama sama dan berdampingan satu sama lin. Suatu sel khusus dalam larik dimensi-satu ini dikenali oleh sebuah bilangan bulat K, yaitu posisinya dalam larik (jadi 1 K N). Sebagai contoh, andaikan ID sebuah larik dimensi-satu dengan 50 elemen, maka ID dapat digambarkan sebagai serangkaian 50 kotak seperti pada gambar 4.1. Tiap sel dalam larik diacu oleh nama dan posisinya, disebut indeks. Secar menjenis, ID(1)menunjukkkan elemen pertama dari larik, ID(2) menunjukkan elemen ke dua,

Pemrograman Komputer Bahasa FORTRAN

74

dan seterusnya. Lebih lanjut, jika K terdefinisi dan 1 K 50, maka ID(K) mengacu pada elemen ke-K dari larik. Indeks ID ID ID . . . ID 48 ID 49 ID 50 Gambar 4.1 Larik dimensi-satu Walaupun elemen sebuah larik ditentukan oleh nama larik diikuti oleh tikalas yang sesuai (diapit dalam tanda kurung), tiap elemen larik dapat muncul dalam ekpresi hitungan sama halnya seperti variabel skalar. Contoh 4.9 :
X = AMOUNT(5) + Q PAY(K) = HOURS(K) * 40.0 TAX(6) = 25.75

1 2 3

Tetapi kita tidak dapat menggunakan nama larik itu sendiri (tanpa menyebutkan indeksnya) dalam pernyataan hitungan. Dalam contoh 4.10 berikut GRADE adalah sebuah larik dan SUM adalah variabel biasa, sehingga statemenstatemen berikut adalah salah, karena nama GRADE mengacu kepada seluruh elemen larik, sedangkan hitungan mencakup lokasi-lokasi memori sendiri-sendiri. Contoh 4.10
SUM = GRADE + SUM GRADE = SUM + 10.0 GRADE = GRADE + 20.0

Kita juga dapat mengacu elemen-elemen larik dalam pernyataan masukan/ keluaran seperti READ(*,10) X, TAX(3)

Pemrograman Komputer Bahasa FORTRAN

75

MULAI

Contoh 4.11 :
C MENENTUKAN RATA-RATA KELAS C DAN JUMLAH MAHASISWA DIBAWAH C RATA-RATA KELAS C C234567890 DIMENSION SCORE(25) C C BACA SKOR C DO 100 I = 1, 25 READ (*,10) SCORE(I) WRITE (*,10) SCORE(I) 10 FORMAT (F10.1) 100 CONTINUE C C MENGHITUNG JUMLAH DAN RATA-RATA C SUM=0.0 DO 200 I=1,25 SUM=SUM+SCORE(I) 200 CONTINUE AVE=SUM/25.0 WRITE(*,20) AVE 20 FORMAT(1X,RATA-RATA KELAS 1,1X,F10.1) C C HITUNG BILANGAN DIBAWAH RATA-RATA C K=0 DO 300 I=1,25 IF(SCORE(I) .LT. AVE) K=K+1 300 CONTINUE WRITE(*,30) K 30 FORMAT(1X,BANYAKNYA DIBAWAH 1RATA-RATA,1X,I3) STOP END
DO 100 I =1, 25 BACA SCORE KE I SCORE(I) CETAK SCORE(I)

10 0

SUM 0 DO 200 I =1, 25 SUM SUM+SCORE(I)

20 0

AVE SUM/25 CETAK AVE K0 DO 300 I =1, 25

SCORE(I ) < AVE TIDAK 30 0

YA

K K+1

CETAK K SELESAI

Gambar 4.2 Diagram Alir Contoh 4.11

Pemrograman Komputer Bahasa FORTRAN

76

4.3 LARIK BERDIMENSI BANYAK Dalam matematika, sebuah matriks didefinisikan sebagai rangkaian bilangan berbentuk siku empat, seperti berikut ini :
Baris pertama Baris kedua Baris ketiga

a11 a21 a31


Kolom pertama

a12 a22 a32


Kolom kedua

a13 a23 a33


Kolom ketiga

a14 a24 a34


Kolom keempat

adalah sebuah matriks 3 x 4, yakni sebuah matriks dengan tiga baris (barisan bilangan mendatar) dan empat kolom (barisan bilangan tegak). Tiap elemen dalam matriks dikenali dengan dua bilangan bulat, tikalas-tikalasnya. Tikalas pertama memberitahu posisi baris dan tikalas kedua memberitahu posisi kolomnya. Misalnya a21 muncul di baris kedua, kolom pertama, a32 muncul di baris ketiga kolom kedua, dan seterusnya. Di dalam FORTRAN, larik dimensi-dua mxn adalah daftar dari mn sel memori (elemen-elemen larik) di mana suatu elemen tertentu ditentukan oleh sepasang bilangan bulat K, L, di mana 1 K m dan 1 L n. bilangan-bilangan bulat K, L disebut tikalas-tikalas dari elemen; tikalas pertama K disebut baris dan tikalas kedua L disebut kolom dari elemen larik. Elemen larik berdimesi-banyak dapat digambarkan seperti dalam gambar 4.3 berikut. A(1,1) A(2,1) A(3,1) A(1,2) A(2,2) A(3,2) A(1,3) A(2,3) A(3,3) A(1,4) A(2,4) A(3,4) A A Gambar 4.3 Larik Dimensi-Dua (3x4) Secara serupa, suatu larik berdimensi-tiga m x r x s adalah sebuah daftar dari m r s sel memori (elemen larik) dimana suatu elemen tertentu ditentukan oleh tiga bilangan bulat J, K, L, dimana : 1 J m , 1 K r, 1 L s A A A . . . Tikalas (1,1) (2,1) (3,1) . . . (2,4) (3,4)

Pemrograman Komputer Bahasa FORTRAN

77

sebagai contoh, andaikan B adalah sebuah larik dimensi-tiga 2 x 4 x 3, maka B mempunyai 2 4 3 = 24 elemen, yang disajikan dalam gambar 4.4. Halaman 3B(1,1,3)B(1,2,3)B(1,3,3)B(1,4,3)B(2,1,3)B(2 ,2,3)B(2,3,3)B(2,4,3)

Halaman 2B(1,1,2)B(1,2,2)B(1,3,2)B(1,4,2)B(2,1,2)B(2 ,2,2)B(2,3,2)B(2,4,2)

Halaman 1B(1,1,1)B(1,2,1)B(1,3,1)B(1,4,1)B(2,1,1)B(2 ,2,1)B(2,3,1)B(2,4,1) Gambar 4.4 Larik Dimensi-Tiga (2 x 4 x 3) Contoh 4.12 :


C PROGRAM MATRIK N X M C C234567890 REAL*4 A(20,20) C WRITE(*,(1X,A,\)) JUMLAH BARIS ? READ(*,(BN,I2))N WRITE(*,(1X,A,\)) JUMLAH KOLOM ? READ(*,(BN,I2))M C C MEMASUKKAN DATA MATRIK C WRITE(*,*) DO 101 I=1,N DO 100 J=1,M WRITE(*,(1X,A(,I2,,,I2,)?,\))I,J READ(*,(F7.2)) A(I,J) 100 CONTINUE 101 CONTINUE C C MENCETAK MATRIK C WRITE(*,*) WRITE(*,(/,1X,A))DATA MATRIK A : DO 400 I=1,N

Pemrograman Komputer Bahasa FORTRAN

78

400

END

WRITE(*,(1X,100(F9.2))(A(I,J),J=1,M)

4.4 MASUKAN/KELUARAN LARIK Andaikan A dan B adalah larik linier masing-masing dengan empat dan tiga elemen. Seperti telah dinyatakan sebelumnya, elemen-elemen A dan B dapat muncul dalam pernyataan masukan/keluaran seperti variabel-variabel biasa. Hal ini dapat dilihat dalam contoh 4.13 berikut : Contoh 4.13 : READ(*,10) A(3), B(2), J, K memberitahu komputer untuk membaca nilai-nilai untuk A(3) dan A(2) sebagaimana halnya untuk J dan K. Khususnya, pemasukan keseluruhan larik A, B dengan mendaftarkan semua elemennya, sebagai contoh berikut : Contoh 4.14 : READ(*,20) A(1), A(2), A(3), A(4), B(1), B(2), B(3) Cara ini efektif untuk variabel larik dengan elemen sedikit tetapi tidak akan efisien digunakan jika terdapat ratusan elemen larik. A. Nama Larik dalam Statemen Masukan/Keluaran Cara membaca keseluruhan elemen sebuah larik dapat dilakukan dengan menggunakan nama larik tersebut dalam statemen masukan/keluaran. Sebagai contoh pernyataan read dalam contoh 4.14 dapat disederhanakan menjadi pernyataan dalam contoh 4.15 berikut : Contoh 4.15 : READ(*,20) A, B Tetapi, harus dengan jelas dimengerti aksi yang dihasilkan oleh pernyataan masukan/keluaran yang demikian : 1. keseluruhan larik akan disimpan atau dicetak; yakni, setiap lokasi memori yang dialokasikan oleh pernyataan DIMENSION akan diberi satu nilai. Dengan demikian, jika SCORE telah mendeklarasikan sebuah larik dengan DIMENSION SCORE(35)

Pemrograman Komputer Bahasa FORTRAN

79

Maka bentuk READ(5,30) SCORE 30 FORMAT(5F10.1) tidak boleh digunakan jika hanya ingin membaca nilai ke dalam SCORE 2. Elemen-elemen larik akan diberi nilai atau dicetak sesuai dengan urutan penyimpanan dari larik (lihat gambar 4.1, 4.3, 4.4), yaitu, tikalas pertama berubah paling cepat, tikalas kedua berikutnya, dan seterusnya. Contoh 4.16 : Andaikan C, D, dan E adalah larik-larik yang dideklarasikan oleh DIMENSION C(3), D(2,3,2), E(3,2) Maka pasangan WRITE_FORMAT WRITE(*,30) C, D, E 30 FORMAT(6X,4F10.2) memerintahkan komputer untuk mencetak sejumlah 3 + 232 + 32 = 21 nilai; 3 dari larik C, 12 dari D dan 6 dari E. Karena pernyataan FORMAT hanya mempunyai empat medan numerik, maka pada tiap baris akan dicetak empat bilangan, dan pernyataan FORMAT akan digunakan berulang-ulang sampai semua nilai tercetak. Jadi, keluaran akan seperti berikut ini : C(1) D(2,1,1) D(2,3,1) D(2,2,2) E(2,1) E(3,2) C(2) D(1,2,1) D(1,1,2) D(1,3,2) E(3,1) C(3) D(2,2,1) D(2,1,2) D(2,3,2) E(1,2) D(1,1,1) D(1,3,1) D(1,2,2) E(1,1) E(2,2)

Jika digunakan 6 medan numerik seperti berikut : 30 FORMAT (6X,6F10.2)

Pemrograman Komputer Bahasa FORTRAN

80

maka keluaran akan berisi enam bilangan pada tiap barisnya, dengan urutan penampilan tidak berubah. B. Do Loop Terselubung Jika diinginkan untuk menyimpan atau mencetak sebagian dari suatu larik, atau andaikan tidak ingin menyimpan atau mencetak larik menurut urutan penyimpanan yang telah ditentukan, hal ini dapat dilakukan dengan menggunakan sebuah DO loop. Pada contoh berikut, dimisalkan variabel AMOUNT adalah sebuah larik linier dengan 100 elemen yang mungkin. Contoh 4.17a : (larik berimensi-satu)
DO 100 I=11,N,1 READ(*,10) AMOUNT(I) 100 CONTINUE

Contoh 4.17b : (larik berdimensi-dua)


DO 101 I=1,N DO 100 J=1,M WRITE(*,(1X,A(,I2,,,I2,)?,\))I,J READ(*,(F7.2)) A(I,J) 100 CONTINUE 101 continue

memberitahukan komputer untuk membaca nilai-nilai AMOUNT(11), AMOUNT(12), sampai AMOUNT(N), dimana N telah didefinisikan sebelumnya dan N<100. Cara tersebut diatas dapat juga dilakukan/ disederhanakan dengan pernyataan seperti contoh berikut : Contoh 4.18 :
READ(*,10)(AMOUNT(I), I=11,N,1)

Ekspresi (AMOUNT(I), I = 11, N, 1 disebut suatu DO loop terselubung karena, ekspresi tersebut mangakibatkan berlangsungnya suatu aksi loop di dalam pernyataan READ.

Pemrograman Komputer Bahasa FORTRAN

81

Contoh 4.19 : (matrik m x n)

DO lopp terselubung

WRITE(*,(/,1X,A))DATA MATRIK A : DO 400 I=1,N 400 WRITE(*,(1X,100(F9.2))(A(I,J),J=1,M)

SOAL-SOAL YANG DIPECAHKAN 1. Andaikan N dan larik linier A dengan N elemen berada di memori. Tuliskan sebuah ruas program FORTRAN yang : a. Menghitung jumlah kuadrat-kuadrat : 2 2 SUM = A12 + A2 + ... + An b. Menghitung hasil kali PROD=(1-A1)(1-A2)(1-AN) Jawab : a. Untuk kasus ini, pertama-tama tetapkan SUM0.0 sebelum melaksanakan penjumlahan, sehingga programnya menjadi :
SUM=0.0 DO 100 K=1,N SUM=SUM+A(K)**2 100 CONTINUE

b. Untuk kasus ini, petama-tama tetapkan PROD1.0 sebelum melaksanakan perkalian


PROD=1.0 DO 100 K=1,N PROD=PROD*(1.0-A(K)) 100 CONTINUE

2. Tentukan keluaran dalam program berikut ini


INTEGER A(10) DO 100 I=1,10,2 A(I)=2*1-3 A(I+1)=I**2-5 100 CONTINUE DO 200 I=2,10,3 A(I)=A(I+2)-A(I) 200 CONTINUE WRITE(*,10) A 10 FORMAT(1X,5I8) STOP END

Pemrograman Komputer Bahasa FORTRAN

82

Jawab: Pernyataan pertama mendeklarasikan A berupa sebuah larik linier bertipe bulat dengan 10 elemen. DO loop pertama dieksekusi: (i) Pertama untuk I=1. ini menghasilkan A(1)= -1 dan A(2)= -4 (ii) Kemudian untuk I=3. ini menghasilkan A(3)= 3 dan A(4)= 4 (iii) Kemudian untuk I=5. ini menghasilkan A(5)= 7 dan A(6)= 20 (iv) Kemudian untuk I=7. ini menghasilkan A(7)= 11dan A(8)= 44 (v) Kemudian untuk I=9. ini menghasilkan A(9)= 15dan A(10)= 76 DO loop kedua dieksekusi menghasilkan : (i) Pertama untuk I=2. ini mengubah nilai A(2) sebagai berikut A(2)A(4)-A(2) = 4-(-4) =8 (ii) Kemudian untuk I=5 ini mengubah nilai A(5) sebagai berikut A(5)A(7)-A(5) =11-7=4 (iii) Terakhir untuk I=8 ini mengubah nilai A(6) sebagai berikut A(6)A(10)-A(8) =76-44=32 Pasangan WRITE-FORMAT mencetak nilai-nilai A dengan lima bilangan bulat pada satu baris dalam medan-medan dengan lebar 8. karenanya, keluaran akan muncul sebagai berikut ; 11234567812345678123456781234567812345678 -1 8 3 4 4 20 11 32 15 76 3. Sebuah larik matrik NxN berada dimemori. Tulislah ruas program FORTRAN yang mencetak elemen-elemen A di atas diagonal, yaitu elemen-elemen A(I,J) untuk mana I<J Jawab : Kita ingin mencetak elemen-elemen : A12 A13 A14 A1N A23 A24 A2N ... AN-1,N Indeks pertama I menyatakan baris dari elemen, dan karenanya akan berubah dari 1 sampai N-1. Indeks kedua J menyatakan kolom, dan karenanya akan berubah dari I+1 sampai N. Kita tidak dapat menggunakan DO loop terselubung bersarang : WRITE (*,10) ((A(I,J),J=I+1,N), I=1,N-1) Karena I+1 dan N-1 tidak dapat berupa parameter. Tetapi, kita dapat menggunakan DO loop bersama-sama dengan DO loop terselubung : NN=N-1 DO 100 I=1,NN

Pemrograman Komputer Bahasa FORTRAN

83

K=I+1 WRITE(*,10) (A(I,J), J=K,N) 10 FORMAT(1X,8(3X, F10.2)) 100 CONTINUE SOAL-SOAL LATIHAN 1. Temukan kesalahan, jika ada dengan tiap pernyataan DIMENSION berikut: a. DIMENSION, J(8), INTEREST(5,10) b. DIMENSION A(4,0,3), B(6) C(9,4) c. DIMENSION A(M,N) XYZ(4,-8,7) 2. Temukan keluaran tiap ruas program berikut : 3. DIMENSION ID(5) a. b.
DO 100 K=1,5 ID(K)=2*K 100 CONTINUE ID(2)=ID(2)+ID(3) ID(5)=ID(5)-ID(4) WRITE(*,10) ID 10 FORMAT(1X,5I8)

INTEGER X(6) DO 100 K=1,6,2 X(K)=3*K X(K+1)=K+2 100 CONTINUE DO 200 J=1,6,3 X(J)=X(J)+X(J+1) 200 CONTINUE IF(X(2) .LT. 7) X(2)=X(3) WRITE(*,20)X 20 FORMAT(1X,6I8)

4. Suatu kelas 35 mahasiswa mengikuti sebuah ujian yang skornya memiliki rentang dari 0 sampai 100. Tulislah sebuahprogram FORTRAN yang menemukan : (a) rata-rata skor; (b) jumlah mahasiswa yang gagal, yaitu nilainya dibawah 60; dan (c) jumlah mahasisea dengan nilai sempurna (100). PRAKTIKUM 1. Tulislah beberapa program FORTRAN berikut, jalankan, amati prosesnya dan simpan dengan nama berbeda.
C23456789 SUM=0.0 PROGRAM LAT4_1A C PROGRAM RATA-RATA DO 100 I=1,25 READ(*,10) A 10 FORMAT(F10.1) SUM=SUM+A 100 CONTINUE AVE=SUM/25.0 WRITE(*,20) AVE 20 FORMAT(1X,RATA-RATA= , 1X, F4.1 END C23456789 PROGRAM LAT4_1B C PROGRAM RATA-RATA DIMENSION J(50) J(1)=1 J(2)=1 DO 100 I=3, 50 J(I)=J(I-2)+J(I-1) 100 CONTINUE WRITE(*,20) 20 FORMAT(1, 15X,BARISAN FIBONACCI//) WRITE(*,30) J 30 FORMAT(1X,5(3X,I6)) END

Pemrograman Komputer Bahasa FORTRAN

84

C23456789 SUM=0.0 PROGRAM LAT4_1C C Program menghitung standar deviasi C DIMENSION X(1000) WRITE (*,100) READ(*,105) N TOTAL=0 DO 20 I=1, N WRITE(*,110) I READ(*,115) X(I) 20 TOTAL=TOTAL+X(I) RATA=TOTAL/N S1=0 DO 30 I =1, N 30 S1=S1+(X(I)-RATA)**2 SD=(S1/N)**0.5 WRITE(*,200) RATA WRITE(*,210) SD 100 FORMAT(1X,JUMLAH MAHASISWA?,\) 105 FORMAT(BN,I4) 110 FORMAT(1X,NILAI MAHASISWA KE,I4,?,\) 115 FORMAT(BN,f6.2) 200 FORMAT(1X,RATA-RATA NILAI :, F6.2) 210 FORMAT(1X,STANDAR DEVIASI :, F6.2) END

C23456789 PROGRAM LAT4_1E DIMENSION N(25) READ(*,10) N 10 FORMAT(5I5) DO 100 J=1,24 JJ=J+1 DO 200 K=JJ,25 IF(N(J)+N(K).NE.75) GOTO 200 WRITE(*,20) N(J), N(K) 20 FORMAT(1X,I5,3X,I5) 200 CONTINUE 100 CONTINUE END

C23456789 PROGRAM LAT4_1D C PROGRAM RATA-RATA 2 DIMENSION SCORE(25) C BACA SKOR C DO 100 I=1,25 READ(*,10) SCORE(I) WRITE(*,10) SCORE(I) 10 FORMAT(F10.1) 100 CONTINUE C C HITUNG JUMLAH DAN RATA-RATA SUM=0.0 DO 200 I=1,25 SUM=SUM+SCORE(I) 200 CONTINUE AVE=SUM/25 WRITE(*,20) AVE 20 FORMAT(1X,RATA-RATA KELAS =1X,F10.1 C C HITUNG BILANGAN DIBAWAH RATA-RATA C K=0 DO 300 I=1,25 IF(SCORE(I) .LT. AVE) K=K+1 300 CONTINUE WRITE(*,30) K 30 FORMAT(1X, BANYAKNYA DI BAWAH - RATA-RATA = , 1X, I3) STOP END C23456789 PROGRAM LAT4_1F DIMENSION N(25) C TETAPKAN TIAP N(K)=0 C DO 100 K=1,24 NK= 0 100 CONTINUE C C BACA DAN HITUNG BILANGAN DO 200 J=1,200 READ(*,10) K 10 FORMAT(I5) N(K) = N(K) + 1 200 CONTINUE C C CETAK DISTRIBUSI C DO 300 K=1,25 WRITE(*,20) N(J), N(K) 20 FORMAT(6X, 2(I4,5X) 300 CONTINUE END

2. Buatlah sebuah program untuk menjumlahkan dua buah matrik NxM

You might also like