90594480 bab-4-larik-array-fotran

25

Click here to load reader

Upload: mocoz

Post on 25-May-2015

606 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 90594480 bab-4-larik-array-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 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.

4. Mahasiswa dapat memanipulasi tampilan program aplikasi larik yang berkaitan

67

Page 2: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

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 :

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 :

untuk jumlah skor, dan

untuk rata-rata kelas. Dengan perkataan lain, penggunaan tikalas mutlak penting dalam pengembangan penulisan ringkas untuk memanipulasi aljabar dari bilangan-bilangan 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

68

X

Page 3: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

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 negatif4. 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 :INTEGERINTEGER*2INTEGER*4

69

Page 4: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

REALREAL*4REAL*8DOUBLE PRECISIONLOGICALLOGICAL*2LOGICAL*4CHARACTER

<a> 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.2C234567890 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 :

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 :

? Error: Data format error in file USER

70

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

marupakan variabel integer edit descriptor harus sesuai tipe data

Page 5: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

Error code 1241, status 000EPC = 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 :

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

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 :

INTEGERINTEGER*2

71

mendefinisikan semua nama yang diawali dengan huruf N adalah tipe real

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

Page 6: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

INTEGER*4REALREAL*4REAL*8DOUBLE PRECISIONLOGICALLOGICAL*2LOGICAL*4CHARACTER

<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 statement2. 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 :

72

Page 7: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

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, dan seterusnya. Lebih lanjut, jika K terdefinisi dan 1≤ K ≤ 50, maka ID(K) mengacu pada elemen ke-K dari larik.

73

Page 8: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

IndeksID 1ID 2ID 3

.

.

.ID 48ID 49ID 50Gambar 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

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

74

Page 9: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

Contoh 4.11 :

C MENENTUKAN RATA-RATA KELASC DAN JUMLAH MAHASISWA DIBAWAH C RATA-RATA KELASCC234567890 DIMENSION SCORE(25)C C BACA SKORC DO 100 I = 1, 25

READ (*,10) SCORE(I)WRITE (*,10) SCORE(I)

10 FORMAT (F10.1) 100 CONTINUECC MENGHITUNG JUMLAH DAN RATA-RATAC

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

200 CONTINUEAVE=SUM/25.0WRITE(*,20) AVE

20 FORMAT(1X,’RATA-RATA KELAS’ 1,1X,F10.1)CC HITUNG BILANGAN DIBAWAH RATA-RATAC

K=0DO 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

75

TIDAK

YA

CETAK AVE

K 0

DO 300I =1, 25

SCORE(I)

< AVE

K K+1

MULAI

DO 100I =1, 25

BACA SCORE KE ISCORE(I)

CETAK SCORE(I)

100

SUM 0

DO 200I =1, 25

SUM SUM+SCORE(I)

200

AVE SUM/25

300

CETAK K

SELESAI

Gambar 4.2 Diagram Alir Contoh 4.11

Page 10: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

4.3 LARIK BERDIMENSI BANYAK

Dalam matematika, sebuah matriks didefinisikan sebagai rangkaian bilangan berbentuk siku empat, seperti berikut ini :

Baris pertama a11 a12 a13 a14

Baris kedua a21 a22 a23 a24

Baris ketiga a31 a32 a33 a34

Kolompertama

Kolomkedua

Kolomketiga

Kolomkeempat

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 m▪n 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(1,2) A(1,3) A(1,4) TikalasA (1,1)

A(2,1) A(2,2) A(2,3) A(2,4) A (2,1)A (3,1)

A(3,1) A(3,2) A(3,3) A(3,4) . ...

.

.A (2,4)A (3,4)

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

76

Page 11: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

Gambar 4.4 Larik Dimensi-Tiga (2 x 4 x 3)

Contoh 4.12 :

C PROGRAM MATRIK N X MCC234567890 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 MATRIKC

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

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

77

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)

Page 12: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

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)

78

Page 13: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

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 + 2▪3▪2 + 3▪2 = 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) C(2) C(3) D(1,1,1)D(2,1,1) D(1,2,1) D(2,2,1) D(1,3,1)D(2,3,1) D(1,1,2) D(2,1,2) D(1,2,2)D(2,2,2) D(1,3,2) D(2,3,2) E(1,1)E(2,1) E(3,1) E(1,2) E(2,2)E(3,2)

Jika digunakan 6 medan numerik seperti berikut :

30 FORMAT (6X,6F10.2)

79

Page 14: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

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

80

Page 15: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

Contoh 4.19 : (matrik m x n)

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 :

b. Menghitung hasil kaliPROD=(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)**2100 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-5100 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

81

DO lopp terselubung

Page 16: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

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=32Pasangan 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

82

Page 17: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

DO 100 I=1,NN 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.

a. DIMENSION ID(5) DO 100 K=1,5 ID(K)=2*K100 CONTINUE ID(2)=ID(2)+ID(3) ID(5)=ID(5)-ID(4) WRITE(*,10) ID 10 FORMAT(1X,5I8)

b. 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_1AC 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_1BC 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))

83

Page 18: 90594480 bab-4-larik-array-fotran

Pemrograman Komputer Bahasa FORTRAN -

ENDC23456789 SUM=0.0 PROGRAM LAT4_1CC Program menghitung standar deviasiC 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_1DC PROGRAM RATA-RATA 2

DIMENSION SCORE(25)C BACA SKORC

DO 100 I=1,25 READ(*,10) SCORE(I)

WRITE(*,10) SCORE(I) 10 FORMAT(F10.1) 100 CONTINUECC 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.1CC HITUNG BILANGAN DIBAWAH RATA-RATAC 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_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_1F DIMENSION N(25)C TETAPKAN TIAP N(K)=0C DO 100 K=1,24 NK= 0 100 CONTINUECC BACA DAN HITUNG BILANGAN DO 200 J=1,200 READ(*,10) K 10 FORMAT(I5) N(K) = N(K) + 1 200 CONTINUECC CETAK DISTRIBUSIC 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

84