Anda di halaman 1dari 36

A R R A Y S

( L A R I K S )
Variabel-variabel yang digunakan sebelumnya 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 :

Jika kita ingin menggunakan satu nama untuk 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, penggunaan suatu lambang dengan
indeks berbeda untuk menunjukkan elemen-elemen suatu
himpunan yang diketahui. Sebagai contoh s1,s2,…s25
digunakan untuk menunjukkan skor suatu kelas dengan jumlah
25 mahasiswa. Secara matematis, jumlah skor dapat dituliskan
sebagai :

untuk rata-rata kelas. Penggunaan indeks mutlak penting


dalam pengembangan penulisan ringkas untuk memanipulasi
aljabar dari bilangan-bilangan yang dicakup.
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).
STATEMEN DIMENSION
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 a(n), b(m,n), k(i,j)
Dimana :
a, b, k adalah nama dari variabel berindeks yang di-definisikan.
m,n,i,j 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. Nilai indeks tidak boleh nol atau negatif
3.Nilai indeks tidak boleh lebih dari nilai indeks yang di-
nyatakan dalam statemen DIMENSION.

Contoh :
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 mendefinisikan larik
berdimensi banyak yang bernama AMOUNT dengan
elemen 100x100 (100 baris dan 100 kolom).
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


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 : !234567
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 :
!234567
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


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 :
!234567
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
NILAIAKHIR = 86.02
didapat hasil :
!234567
IMPLICIT INTEGER (A-D)
IMPLICIT CHARACTER*20 (N)
IMPLICIT INTEGER(A-D, P-Q,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


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 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 :
.Suatu statemen type harus ditulis sebelum executable statement
.Nama yang ditunjukkan di statemen type tidak boleh didefinisikan
lebih dari sekali.
.Suatu statemen type tidak boleh diberi statemen label .

!234567
REAL NILAI1, NILAI2, NILAI3, JUMLAH
.
.

Berarti, nama variabel NILAI1, NILAI2, NILAI3 dan


JUMLAH adalah bertipe real.
!234567
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 :

!234567
IMPLICIT INTEGER (A-D,X)
REAL BOBOT
.
.

berarti nama variabel BOBOT yang termasuk dalam tipe


integer, berubah menjadi 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.

!234567
DIMENSION A(5,5), NILAI(100)
.
.
.
dapat juga ditulis dengan arti yang sama sebagai berikut :
REAL A(5,3)
INTEGER NILAI(100)
.
.
.
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 lain. 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 berikut. Tiap sel dalam larik diacu oleh
nama dan posisinya, disebut indeks. 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.
Indeks
ID 1
ID 2
ID 3
.
.
.
ID 48
ID 49
ID 50

Walaupun elemen sebuah larik ditentukan oleh nama


larik diikuti oleh indeks yang sesuai (diapit dalam tanda
kurung), tiap elemen larik dapat muncul dalam ekspresi
hitungan sama halnya seperti variabel skalar.
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 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.
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)
MULAI
! MENENTUKAN RATA-RATA
! KELAS DAN JUMLAH MAHA- DO 100
! SISWA DIBAWAH RATA-RA-
I =1, 25
! TA KELAS
! BACA SCORE KE I
!234567
SCORE(I)
DIMENSION SCORE(25)
! CETAK SCORE(I)
! BACA SKOR
DO 100 I = 1, 25
READ(*,10)SCORE(I) 100
WRITE(*,10)SCORE(I)
10 FORMAT (F10.1)
100 CONTINUE
SUM ← 0

&
&

! MENGHITUNG JUMLAH DAN DO 200


! RATA-RATA
I =1, 25
SUM=0.0
DO 200 I=1,25 SUM ← SUM+SCORE(I)
SUM=SUM+SCORE(I)
200 CONTINUE 200
AVE=SUM/25.0
WRITE(*,20) AVE
20 FORMAT(1X,’RATA-RATA& AVE ← SUM/25
&KELAS’,1X,F10.1)
CETAK AVE

K←0
200

!
! HITUNG BILANGAN DIBAWAH RATA-
! RATA DO 300
K=0
I =1, 25
DO 300 I=1,25
IF(SCORE(I).LT.AVE) K = K+1
300 CONTINUE
WRITE(*,30) K SCORE(I) YA
30 FORMAT(1X,’BANYAKNYA DIBAWAH < AVE
1RATA-RATA’,1X,I3)
STOP
TIDAK K ← K+1
END
300

CETAK K

SELESAI
LARIK BERDIMENSI BANYAK
Dalam matematika, sebuah matriks didefinisikan sebagai
rangkaian bilangan berbentuk segi-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 sebagai indeksnya. Indeks pertama memberitahu
posisi baris dan indeks 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 indeks-indeks dari elemen; indeks pertama K disebut
baris dan indeks kedua L disebut kolom dari elemen larik.
Elemen larik berdimesi-banyak dapat digambarkan seperti
gambar berikut.
A(1,1) A(1,2) A(1,3) A(1,4) Indeks
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)
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 berikut.
Halaman 3

B(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 2

B(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 1

B(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)

Larik Dimensi-Tiga (2 x 4 x 3)
! PROGRAM MATRIK N X M
!234567
REAL*4 A(20,20)
WRITE(*,’(1X,A,\)’) ’JUMLAH BARIS ?’
READ(*,’(BN,I2)’)N
WRITE(*,’(1X,A,\)’) ’JUMLAH KOLOM ?’
READ(*,’(BN,I2)’)M
! MEMASUKKAN DATA MATRIK
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
! MENCETAK MATRIK
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
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 berikut :

READ(*,10) A(3), B(2), J, K

memberitahu komputer untuk membaca nilai-nilai untuk A(3) dan B(2)


sebagaimana halnya untuk J dan K. Khususnya, pemasukan keseluruhan
larik A, B dengan mendaftarkan semua elemennya, sebagai contoh
berikut :

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.
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 diatas dapat
disederhanakan menjadi pernyataan berikut :
READ(*,20) A, B
Tetapi, harus dengan jelas dimengerti aksi yang
dihasilkan oleh pernyataan masukan/keluaran yang
demikian :
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)
Maka bentuk
READ(5,30) SCORE
30 FORMAT(5F10.1)
tidak boleh digunakan jika hanya ingin membaca nilai ke dalam
SCORE

•Elemen-elemen larik akan diberi nilai atau dicetak sesuai dengan


urutan penyimpanan dari larik, yaitu, indeks pertama berubah
paling cepat, indeks kedua berikutnya, dan seterusnya.

Contoh :
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
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)

maka keluaran akan berisi enam bilangan pada tiap barisnya,


dengan urutan penampilan tidak berubah.
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.
DO 100 I=11,N,1
READ(*,10) AMOUNT(I)
100 CONTINUE

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 :

READ(*,10)(AMOUNT(I), I=11,N,1)

Ekspresi (AMOUNT(I), I = 11, N, 1) ➔


disebut suatu DO loop terselubung karena, ekspresi tersebut
mengakibatkan berlangsungnya suatu aksi loop di dalam
pernyataan READ.

WRITE(*,’(/,1X,A)’)’DATA MATRIK A : ’
DO 400 I=1,N
400 WRITE(*,’(1X,100(F9.2)’)(A(I,J),J=1,M)
TERIMA KASIH
• Masukkan Jumlah N ? 6
• Score(1) = 70
• Score(2) = 90
• Score(3) = 40
• Score(4) = 60
• Score(5) = 80
• Score(6) = 50
• Rata-rata =
• Jumlah dibawah rata-rata =
• Score(1) =
• Score(2) =
• Score(3) =
• Score(4) =
• Score(5) =
• Score(6) =

Anda mungkin juga menyukai