1. STANDAR KOMPETENSI
Setelah menyelesaikan mata kuliah Komputer mahasiswa
mampu mengembangkan paket program aplikasi mandiri untuk
menyelesaikan masalah keteknikan khususnya Teknik Mesin
dengan bahasa FORTRAN
KOMPETENSI DASAR
Mahasiswa dapat membuat program aplikasi 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 dengan tampilan
6
67
2. Pemrograman Komputer Bahasa FORTRAN - 68
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 :
25
∑s
i =1
i = s1 + s 2 + ... + s 25
untuk jumlah skor, dan
25
(∑ si ) / 25
i =1
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
3. 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
INTEGER*4
4. Pemrograman Komputer Bahasa FORTRAN - 70
REAL
REAL*4
REAL*8
DOUBLE PRECISION
LOGICAL
LOGICAL*2
LOGICAL*4
CHARACTER
<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.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
? Error: Data format error in file USER
5. Pemrograman Komputer Bahasa FORTRAN - 71
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
C234567890 dengan huruf N adalah tipe real
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 : nama diawali huruf A, B, C, D INTEGER
nama diawali N karakter panjang 20 byte
C234567890 nama diawali A,B,C,D,P,Q dan X INTEGER
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 :
INTEGER
INTEGER*2
6. Pemrograman Komputer Bahasa FORTRAN - 72
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 :
7. 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, dan seterusnya. Lebih lanjut, jika K terdefinisi dan 1≤ K ≤ 50,
maka ID(K) mengacu pada elemen ke-K dari larik.
8. Pemrograman Komputer Bahasa FORTRAN - 74
Indeks
ID 1
ID 2
ID 3
.
.
.
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
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)
9. Pemrograman Komputer Bahasa FORTRAN - 75
MULAI
Contoh 4.11 :
DO 100
C MENENTUKAN RATA-RATA KELAS I =1, 25
C DAN JUMLAH MAHASISWA DIBAWAH
C RATA-RATA KELAS BACA SCORE KE I
C SCORE(I)
C234567890
DIMENSION SCORE(25) CETAK
C SCORE(I)
C BACA SKOR
C 10
DO 100 I = 1, 25 0
READ (*,10) SCORE(I)
WRITE (*,10) SCORE(I)
SUM 0
10 FORMAT (F10.1)
100 CONTINUE
C DO 200
C MENGHITUNG JUMLAH DAN RATA-RATA I =1, 25
C
SUM=0.0 SUM SUM+SCORE(I)
DO 200 I=1,25
SUM=SUM+SCORE(I)
200 CONTINUE 20
AVE=SUM/25.0 0
WRITE(*,20) AVE
20 FORMAT(1X,’RATA-RATA KELAS’
AVE SUM/25
1,1X,F10.1)
C
C HITUNG BILANGAN DIBAWAH RATA-RATA CETAK AVE
C
K=0 K0
DO 300 I=1,25
IF(SCORE(I) .LT. AVE)
K=K+1 DO 300
I =1, 25
300 CONTINUE
WRITE(*,30) K
30 FORMAT(1X,’BANYAKNYA DIBAWAH
1RATA-RATA’,1X,I3) YA
STOP SCORE(
END I)
TIDAK K K+1
30
0
CETAK K
SELESAI
Gambar 4.2 Diagram Alir Contoh 4.11
10. 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 a11 a12 a13 a14
Baris kedua a21 a22 a23 a24
Baris ketiga a31 a32 a33 a34
Kolom Kolom Kolom Kolom
pertama kedua ketiga 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 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) Tikalas
A (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.
11. Pemrograman Komputer Bahasa FORTRAN - 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)
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
400 WRITE(*,’(1X,100(F9.2)’)(A(I,J),J=1,M)
END
12. Pemrograman Komputer Bahasa FORTRAN - 78
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)
13. 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 + 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)
14. 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.
15. 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 :
SUM = A12 + A2 + ... + An
2 2
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
16. 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
17. Pemrograman Komputer Bahasa FORTRAN - 83
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) b. INTEGER X(6)
DO 100 K=1,5 DO 100 K=1,6,2
ID(K)=2*K X(K)=3*K
100 CONTINUE X(K+1)=K+2
ID(2)=ID(2)+ID(3) 100 CONTINUE
ID(5)=ID(5)-ID(4) DO 200 J=1,6,3
WRITE(*,10) ID X(J)=X(J)+X(J+1)
10 FORMAT(1X,5I8) 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 C23456789
SUM=0.0 PROGRAM LAT4_1B
PROGRAM LAT4_1A C PROGRAM RATA-RATA
C PROGRAM RATA-RATA DIMENSION J(50)
DO 100 I=1,25 J(1)=1
READ(*,10) A J(2)=1
10 FORMAT(F10.1) DO 100 I=3, 50
SUM=SUM+A J(I)=J(I-2)+J(I-1)
100 CONTINUE 100 CONTINUE
AVE=SUM/25.0 WRITE(*,20)
WRITE(*,20) AVE 20 FORMAT(‘1’, 15X,’BARISAN FIBONACCI’//)
20 FORMAT(1X,’RATA-RATA= ‘, 1X, F4.1 WRITE(*,30) J
END 30 FORMAT(1X,5(3X,I6))
18. Pemrograman Komputer Bahasa FORTRAN - 84
END
C23456789 C23456789
SUM=0.0 PROGRAM LAT4_1D
PROGRAM LAT4_1C C PROGRAM RATA-RATA 2
C Program menghitung standar deviasi DIMENSION SCORE(25)
C C BACA SKOR
DIMENSION X(1000) C
WRITE (*,100) DO 100 I=1,25
READ(*,105) N READ(*,10) SCORE(I)
TOTAL=0 WRITE(*,10) SCORE(I)
DO 20 I=1, N 10 FORMAT(F10.1)
WRITE(*,110) I 100 CONTINUE
READ(*,115) X(I) C
20 TOTAL=TOTAL+X(I) C HITUNG JUMLAH DAN RATA-RATA
RATA=TOTAL/N SUM=0.0
S1=0 DO 200 I=1,25
DO 30 I =1, N SUM=SUM+SCORE(I)
30 S1=S1+(X(I)-RATA)**2 200 CONTINUE
SD=(S1/N)**0.5 AVE=SUM/25
WRITE(*,200) RATA WRITE(*,20) AVE
WRITE(*,210) SD 20 FORMAT(1X,’RATA-RATA KELAS =’1X,F10.1
100 FORMAT(1X,’JUMLAH MAHASISWA?’,) C
105 FORMAT(BN,I4) C HITUNG BILANGAN DIBAWAH RATA-RATA
110 FORMAT(1X,’NILAI MAHASISWA KE’,I4,’’?’,) C
115 FORMAT(BN,f6.2) K=0
200 FORMAT(1X,’RATA-RATA NILAI :’, F6.2) DO 300 I=1,25
210 FORMAT(1X,’STANDAR DEVIASI :’, F6.2) IF(SCORE(I) .LT. AVE) K=K+1
END 300 CONTINUE
WRITE(*,30) K
30 FORMAT(1X, ‘BANYAKNYA DI BAWAH
- RATA-RATA = ‘, 1X, I3)
STOP
END
C23456789 C23456789
PROGRAM LAT4_1E PROGRAM LAT4_1F
DIMENSION N(25) DIMENSION N(25)
READ(*,10) N C TETAPKAN TIAP N(K)=0
10 FORMAT(5I5) C
DO 100 J=1,24 DO 100 K=1,24
JJ=J+1 NK= 0
DO 200 K=JJ,25 100 CONTINUE
IF(N(J)+N(K).NE.75) GOTO 200 C
WRITE(*,20) N(J), N(K) C BACA DAN HITUNG BILANGAN
20 FORMAT(1X,I5,3X,I5) DO 200 J=1,200
200 CONTINUE READ(*,10) K
100 CONTINUE 10 FORMAT(I5)
END 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