NESTED LOOP ( LOOPING BERSARANG)
Dalam sebuah looping FOR-NEXT diperbolehkan untuk membuat looping FOR-
NEXT lainnya. Pada operasi looping di dalam looping tersebut, urutan eksekusi
dimulai dari looping yang paling dalam sehingga instruksi-instruksi yang di dapat
pada looping yang paling dalam akan lebih dulu diselesaikan.
Syarat yang harus diperhatikan untuk operasi FOR-NEXT nested loop adalah :
Setiap looping tidak boleh menggunakan variabel kontrol yang sama
Antara looping yang satu dengan yang lain tidak boleh saling berpotongan
(overlapping)
Contoh nested loop yang SALAH:
START
FOR K = 2 TO 4
FOR L = 6 TO 8 STEP 2 Salah, karena Loop
saling berpotongan
M=K*L
NEXT K
NEXT L
END
Contoh nested loop yang BENAR:
START
Looping Looping K L M
luar ke- dalam
FOR K = 2 TO 4 ke-
1 1 2 6 12
1 2 2 8 16
FOR L = 6 TO 8 STEP 2 2 3 3 6 18
2 4 3 8 24
3 5 4 6 24
3 6 4 8 32
M=K*L
Hasil yang tercetak :
M, 12 16 18 24 24 32
NEXT L
NEXT K
Contoh dua loop yang terpisah
END (benar, tapi bukan nested loop) :
START
FOR K = 2 TO 4
Hasil yang tercetak :
2
K
3
NEXT K 4
6
FOR L = 6 TO 8 STEP 2
8
NEXT L
END
Contoh Nested Loop dengan batas yang berubah:
START
Looping luar Looping dalam N K
ke- ke-
FOR N = 1 TO 4 1 1 1 1
2 2 2 1
2 3 2 2
FOR K = 1 TO N
3 4 3 1
3 5 3 2
N,K
3 6 3 3
4 7 4 1
NEXT K 4 8 4 2
4 9 4 3
NEXT N 4 10 4 4
END
Hasil yang tercetak :
Penulisan Program di QBASIC: 1 1
CLS 2 1
FOR N = 1 TO 4 2 2
FOR K = 1 TO N 3 1
PRINT N, K 3 2
NEXT K 3 3
NEXT N 4 1
4 2
END
4 3
4 4
Contoh flowchart dan programnya menggunakan nested loop
START
Penulisan Program di QBASIC:
FOR N = 1 TO 4
CLS
FOR N = 1 TO 4
FOR K = 1 TO N
FOR K = 1 TO N Output:
PRINT K, PRINT K,
1
NEXT K 1 2
1 2 3
NEXT K PRINT 1 2 3 4
NEXT N
PRINT END
NEXT N END
START
Penulisan Program di QBASIC:
FOR N = 4 TO 1 STEP -1 CLS
FOR N = 4 TO 1 STEP -1
FOR K = 1 TO N Output:
FOR K = 1 TO N
1 2 3 4
PRINT K, PRINT K, 1 2 3
1 2
NEXT K 1
NEXT K PRINT
NEXT N
PRINT END
NEXT N END
ARRAY
Array (variabel berindeks/bersubskrip) adalah variabel yang mempunyai tipe data
sejenis(homogen), misalnya numerik atau string, yang mampu menampung banyak
nilai dan didefinisikan dengan sebuah nama variabel berindeks.
Berdasarkan jumlah dimensi indeks dalam sebuah variabel array, dikenal
adanya array dimensi satu dan arrray dimensi banyak.
Beberapa hal penting yang harus diperhatikan bila ingin memasukkan
deretan data kedalam variabel array adalah :
a. Tipe data yang akan di simpan ke dalam variabel harus diketahui,
karena variabel array numerik hanya dapat menerima data numerik dan variabel
array string hanya dapat menerima data string.
b. Banyaknya data harus lebih kecil atau sama dengan jumlah subskrip ( indeks )
dari array tersebut.
c. Untuk memasukkan deretan data dalam suatu variabel indeks dapat digunakan
intruksi perulangan.
d. Banyaknya indeks yang ditentukan menunjukkan banyaknya ruang memori
yang dialokasikan, oleh karena itu dalam menentukan banyaknya indeks
sebaiknya disesuaikan dengan banyaknya data sehingga tidak
memboroskan pengalokasian ruang memori.
Array berdimensi satu
Ada sekelompok variabel yang masing-masingnya mempunyai fungsi yang sama.
Misalnya dalam ujian akhir, diujikan 6 mata pelajaran. Variabel untuk menyatakan
nilai mata pelajaran dapat digunakan variabel array atau variabel berindeks/subskrip
N ( ) atau N(A) dengan A=1,2,3,4,5,6 dimana :
N(1) N(2) N(3) N(4) N(5) N(6)
Bilangan 1 s/d 6 yang ada di dalam kurung disebut subskrip/indeks, yang merupakan
petunjuk posisi variabel dalam kelompoknya tersebut.
Contoh 1:
Perhatikan flowchart dibawah ini, tentukan hasil jika diketahui datanya 5, 10, 15, 20
(1) (2)
START START
READ A FOR K = 1 TO 3
READ B READ A(K)
READ C A(K),
A, B, C
NEXT K
B A(2)
END END
Penjelasan :
1. Flowchart(1) tidak menggunakan variabel array sehingga dibutuhkan 3 nama
variabel untuk membaca nilai data yang disediakan yaitu variabel A, B dan C
2. Flowchart(2) menggunakan variabel array sehingga hanya dibutuhkan 1 nama
variabel untuk membaca nilai data yang disediakan yaitu variabel A dengan
menggunakan indeks dari 1 sampai 3 dimana A(1) = 5, A(2) = 10 dan A(3) =15
3. Hasil yang dicetak dari kedua flowchart tersebut adalah :
5 10 15
5
Contoh 2. : penggunaan variabel array untuk tipe data string
START
FOR K = 1 TO 3
INPUT NPM$(K)
INPUT Nama$(K)
NEXT K
PRINT NPM$(2) END
Perhatikan flowchart berikut, dimanakah letak kesalahannya ?
START
INPUT NPM$(K)
FOR K = 1 TO 3
INPUT Nama$(K)
NEXT K
PRINT NPM$(2) END
Array berdimensi dua
Contoh : Flowchart Matriks Penjumlahan
Start A B
Masukkan nilai FOR BRS 1 = End
B? TO B
Masukkan nilai
K? FOR KLM 1 =
TO K
DIM A(B,K),
B(B,K), Masukkan nilai
C(B,K), B (BRS, KLM)
FOR BRS 1 = NEXT KLM
TO B
NEXT BRS
FOR KLM 1 =
TO K
FOR BRS 1 =
TO K
Masukkan nilai
A (BRS, KLM)
FOR KLM 1 =
TO B
NEXT KLM
A(BRS,KLM)
B(BRS,KLM) +
C(BRS,KLM)
NEXT BRS
Cetak
C (BRS,KLM)
A
NEXT KLM
NEXT BRS
B
Berikut ini Penjelasan algoritma program dari penjumlahan Matriks :
Jumlah Ordonya
Berapa jumlah baris ? Diisi ke variabel B.
Berapa jumlah kolomnya ? Diisi ke variabel K.
Memesan variabel A, B dan C, yang masing-masing dapat menampung sebanyak B
baris dan K kolom.
Pengisian angka-angka di Matriks A :
a. Untuk BRS dari 1 hingga B, kerjakan nomor 3b.
b. Untuk KLM dari 1 hingga K, kerjakan nomor 3c.
c. Posisi untuk baris :
YA = BRS + 2
d. Posisi untuk kolom :
XA = 3 * KLM
e. Pada baris ke YA dan kolom ke XA, angka untuk matriks A diisi, dimasukkan
ke variabel :
A ( BRS , KLM )
f. Bertemu NEXT KLM, menuju ke nomor 3b.
g. Bertemu NEXT BRS, menuju ke nomor 3a
.
Pengisian angka – angka di Matriks B.
a. Untuk BRS dari 1 hingga B, dikerjakan nomor 4b.
b. Untuk KLM dari 1 hingga K, kerjakan nomor 4c.
c. Posisi untuk baris :
YA = BRS + 2
d. Posisi untuk kolom :
XA = 40 + ( 3 * KLM )
e. Pada baris ke YA dan kolom ke XA, angka untuk matriks B diisi, dimasukkan
ke variabel : B ( BRS , KLM )
f. Bertemu NEXT KLM, menuju ke nomor 4b.
g. Bertemu NEXT BRS, menuju ke nomor 4a.
Proses penjumlahan dan cetak matriks C :
a. Untuk BRS dari 1 hingga B kerjakan nomor 5b.
b. Untuk KLM dari 1 hingga K kerjakan nomor 5c.
c. Menjumlahkan matriks A dan matriks B untuk dimasukkan ke matriks C :
C ( BRS , KLM ) = A ( BRS , KLM ) + B ( BRS , KLM )
d. Cetak matriks C dari variabel :
C ( BRS , KLM )
Untuk angka-angka berikut, dicetak disebelah kanan
e. Bertemu NEXT KLM, menuju ke nomor 5b.
f. Kosongkan 1 baris.
g. bertemu NEXT BRS, menuju ke nomor 5a.
Contoh Penulisan Program Array dimensi dua pada Qbasic
CLS
DIM Q(2,3)
DATA 6,3,5,8,7,9
FOR R = 1 TO 2
FOR C = 1 TO 3
READ Q(R,C)
NEXT C
NEXT R
PRINT Q(2,1)
PRINT Q(1,2)
END
Penjelasan program:
1. DIM Q(2,3) mendefinisikan bahwa Matrik Q terdiri dari 2 baris dan 5 kolom
2. Untuk R =1, harga C yang pertama adalah 1, kemudian 2 dan 3, maka statemen
READ Q(R,C) menjadi READ Q(1,1) lalu READ Q(1,2) dan READ Q(1,3)
Jadi untuk R = 1, tiga buah bilangan pertama pada DATA dibaca sebagai baris
pertama dari Q
3. Untuk R =2, harga C yang pertama adalah 1, kemudian 2 dan 3, maka statemen
READ Q(R,C) menjadi READ Q(2,1) lalu READ Q(2,2) dan READ Q(2,3)
Jadi untuk R = 2, tiga buah bilangan terakhir pada DATA dibaca sebagai baris
kedua dari Q.
4. Hasil dari program di atas adalah:
8
3