R - Google Drive

Download Report

Transcript R - Google Drive

6.3 & 7.3
NESTED LOOP
1
Circular QUEUE
( ANTRIAN melingkar )
2
2. 11
2.1 PENDAHULUAN
Perhatikan Linear Queue yang diilustrasikan sebagai berikut:
0
1
2
3
4
Q[ ]
5
6
7
n-1
8
9
G H I
J
F
R
Linear Queue PENUH
Tak Bisa Diisi Lagi
walaupun Q[0] - Q[5]
tak ada isinya
3
Bila dijadikan Circular Queue
0
1
2
3
4
5
6
7
2. 12
n-1
8
9
G H I
J
F
R
Q[9] atau Q[n]
dilanjutkan ke Q[0]
4
Bila dijadikan Circular Queue
0
1
2
3
4
R
5
6
7
2. 12
n-1
8
9
G H I
J
F
Q[9] atau Q[n]
dilanjutkan ke Q[0]
5
Bila dijadikan Circular Queue
0
1
2
3
4
5
6
7
2. 12
n-1
8
9
K
G H I
J
R
F
Q[9] atau Q[n]
dilanjutkan ke Q[0]
6
Bila dijadikan Circular Queue
0
1
2
3
4
K
R
5
6
7
2. 12
n-1
8
9
G H I
J
F
Q[9] atau Q[n]
dilanjutkan ke Q[0]
7
Bila dijadikan Circular Queue
0
1
K
2
3
4
5
6
7
2. 12
n-1
8
9
L
G H I
J
R
F
Q[9] atau Q[n]
dilanjutkan ke Q[0]
8
Bila dijadikan Circular Queue
0
1
K
L
2
3
4
R
5
6
7
2. 12
n-1
8
9
G H I
J
F
Q[9] atau Q[n]
dilanjutkan ke Q[0]
9
Bila dijadikan Circular Queue
0
1
2
K
L M
R
3
4
5
6
7
2. 12
n-1
8
9
G H I
J
F
10
2. 12
2.2. REPRESENTASI CIRCULAR QUEUE
menggunakan array satu dimensi
2.2.1 Ilustrasi
0
Q[ ]
1
2
6
7
8
9
x
x
x
x
x
R
F
x
F
atau
Q[ ]
3
x
x
4
x
5
n-1
x
R
11
0
1
2
3
n-1
4
2. 12
5
6
7
Ilustrasi dalam array satu dimensi
0
1 2 3
4
5 6 7
n-1
12
2. 13
Menggerakkan R atau F
Q[ ]
0
1
2
3
x
if(R == n)
R = 0;
else
R = R + 1;
4
x
5
6
7
8
n
9
x
F
R
atau
R = R + 1;
if(R == n+1)
R = 0;
13
2. 13
Menggerakkan R atau F
Q[ ]
0
1
2
3
4
x
x
F
5
6
7
8
n-1
9
x
R
atau dengan menggunakan Operator % atau Librari function fmod( )
R = (R+1) % n
bila n = MAXSIZE , maka :
atau
R = fmod(R+1, n
R = (R+1) %
MAXSIZE
14
2. 13
15
MOD
2
=
?
MOD --> MODULUS = SISA PEMBAGIAN
BILANGAN INTEGER
15
2. 13
15
MOD
2
=
1
MOD --> MODULUS = SISA PEMBAGIAN
BILANGAN INTEGER
16
2. 13
15
MOD
2
=
1
15
MOD
3
=
?
MOD --> MODULUS = SISA PEMBAGIAN
BILANGAN INTEGER
17
2. 13
15
MOD
2
=
1
15
MOD
3
=
0
15
MOD
4
=
15
MOD
5
=
18
2. 13
15
MOD
2
=
1
15
MOD
3
=
0
15
MOD
4
=
3
15
MOD
5
=
0
15
MOD
15
=
0
7
MOD
=
?
15
19
2. 13
15
MOD
2
=
1
15
MOD
3
=
0
15
MOD
4
=
3
15
MOD
5
=
0
15
MOD
15
=
0
7
MOD
15
=
7
20
2. 13
15
MOD
2
=
1
15
MOD
3
=
0
15
MOD
4
=
3
15
MOD
5
=
0
15
MOD
15
=
0
7
MOD
15
=
7
R
MOD
15
=
?
21
2. 13
15
MOD
2
=
1
15
MOD
3
=
0
15
MOD
4
=
3
15
MOD
5
=
0
15
MOD
15
=
0
7
MOD
15
=
7
R
MOD
15
=
tergantung nilai R
22
2. 13
15
MOD
2
=
1
15
MOD
3
=
0
15
MOD
4
=
3
15
MOD
5
=
0
15
MOD
15
=
0
7
MOD
15
=
7
R
MOD
15
=
tergantung nilai R
R
MOD
n
=
?
23
2. 13
15
MOD
2
=
1
15
MOD
3
=
0
15
MOD
4
=
3
15
MOD
5
=
0
15
MOD
15
=
0
7
MOD
15
=
7
R
MOD
15
=
tergantung nilai R
R
MOD
n
=
tergantung nilai R
dan nilai n
24
2. 13
R = (R+1) % n
atau
R = fmod(R+1, n)
Untuk n = 10
Bila
R =
(R+1)
=
(R+1) % (n)
-1
0
0 % 10 = 0
0
1
1 % 10 = 1
1
2
2 % 10 = 2
2
3
-
3
4
-
-
-
-
8
9
9 % 10 = 9
9
10
10 % 10 = 0
25
2. 14
2.2.2 Prinsip proses : FIFO
(First In First Out)
2.2.3
Proses.
a. AWAL (Inisialisasi)
b. INSERT (Sisip, Masuk, Simpan, Tulis)
c. DELETE ( Hapus, Keluar, Ambil , Baca)
Tidak ada RESET
26
a. Algoritma dasar untuk proses
AWAL (Inisialisasi),
2. 14
void AWAL(void)
{
F = 0;
R = -1;
Counter = 0;
}
Ilustrasi hasil proses awal :
0
Q[ ]
R
F
1
2
3
4
5
6
0
-1
F
R
7
8
n-1
9
0
Counter
27
2. 14
Ilustrasi hasil proses awal :
0
Q[ ]
R
1
2
3
F
4
5
6
0
-1
F
R
7
8
n
9-1
0
Counter
R sekarang = -1
jadi R = (R+1) % n
= (-1 + 1) % 10
= 0 % 10
= 0
28
b. Algoritma dasar untuk proses INSERT
2. 15
void INSERT(void)
{
R = (R+1) % n;
Q[R] = X;
Counter++;
}
c.
Algoritma dasar untuk proses DELETE
void DELETE(void)
{
X = Q[F];
F =(F+1) % n;
Counter--;
}
29
2. 16
KONDISI ANTRIAN
KOSONG
PENUH
BISA DIISI
ADA ISINYA
30
1
0
R
2
1
2 3
4
5
6 7
8
n-1
9
Counter
F
x x x x x x
F
KOSONG
2. 16
: Gambar no : ?
6
3
x x x
F
PENUH
:
R
4
0
R
5
BISA DIISI :
F
x x x x
F
x x x
4
R
x x x x
7
ADA ISINYA :
F
R
7
KONDISI ANTRIAN
R
3
6
0
x x x x x x x x x x
R
F
n
31
1
0
R
2
1
2 3
4
5
6 7
8
n-1
9
Counter
F
x x x x x x
F
6
KOSONG
Ciri : ?
:
1
2. 16
4
3
x x x
F
R
4
0
R
5
F
x x x x
F
x x x
4
R
x x x x
7
F
R
7
KONDISI ANTRIAN
R
3
6
0
x x x x x x x x x x
R
F
n
32
1
0
R
2
1
2 3
4
5
6 7
8
n-1
9
Counter
F
x x x x x x
F
6
3
x x x
F
KOSONG
:
1
2. 16
4
Counter = 0
PENUH
: Gambar no : ?
R
4
0
R
5
F
x x x x
F
x x x
4
R
x x x x
7
F
R
7
KONDISI ANTRIAN
R
3
6
0
x x x x x x x x x x
R
F
n
33
1
0
R
2
1
2 3
4
5
6 7
8
n-1
9
Counter
F
x x x x x x
F
6
3
x x x
F
R
4
KOSONG
:
1
2. 16
4
Counter = 0
PENUH
Ciri : ?
:
7
0
R
5
F
x x x x
F
x x x
4
R
x x x x
7
F
R
7
KONDISI ANTRIAN
R
3
6
0
x x x x x x x x x x
R
F
n
34
1
0
R
2
1
2 3
4
5
6 7
8
n-1
9
Counter
F
x x x x x x
F
6
3
x x x
F
R
4
0
R
5
F
x x x x
F
x x x
KOSONG
:
1
2. 16
4
Counter = 0
PENUH
:
7
Counter = n
BISA DIISI : Gambar no :
4
R
x x x x
7
F
R
7
KONDISI ANTRIAN
R
3
6
0
x x x x x x x x x x
R
F
n
35
?
1
0
R
2
1
2 3
4
5
6 7
8
n-1
9
Counter
F
x x x x x x
F
6
3
x x x
F
R
4
0
R
5
F
x x x x
F
x x x
KOSONG
:
1
2. 16
4
Counter = 0
4
PENUH
:
7
Counter = n
BISA DIISI :
Ciri :
?
1
2
5
6
3
4
R
x x x x
7
F
R
7
KONDISI ANTRIAN
R
3
6
0
x x x x x x x x x x
R
F
n
36
1
0
R
2
1
2 3
4
5
6 7
8
n-1
9
Counter
F
x x x x x x
F
6
3
x x x
F
R
4
0
R
5
F
x x x x
F
x x x
4
R
x x x x
KOSONG
:
1
2. 16
4
Counter = 0
7
PENUH
:
7
Counter = n
BISA DIISI :
1
2
5
6
3
4
Ciri : Counter < n
ADA ISINYA : Gambar no :
F
R
7
KONDISI ANTRIAN
R
3
6
0
x x x x x x x x x x
R
F
n
37
?
1
0
R
2
1
2 3
4
5
6 7
8
n-1
9
Counter
F
x x x x x x
F
6
3
x x x
F
R
4
0
R
5
F
x x x x
F
x x x
4
R
x x x x
KOSONG
:
1
2. 16
4
Counter = 0
7
PENUH
x x x x x x x x x x
R
F
n
:
7
Counter = n
BISA DIISI :
1
2
5
6
3
4
5
6
Ciri : Counter < n
ADA ISINYA :
F
R
7
KONDISI ANTRIAN
R
3
6
0
Ciri :
?
2
3
7
38
1
0
R
2
1
2 3
4
5
6 7
8
n-1
9
Counter
F
x x x x x x
F
6
3
x x x
F
R
4
0
R
5
F
x x x x
F
x x x
4
R
x x x x
7
F
R
7
KONDISI ANTRIAN
KOSONG
:
1
2. 16
4
Counter = 0
R
3
6
0
x x x x x x x x x x
R
F
PENUH
:
7
Counter = n
BISA DIISI :
1
2
5
6
3
4
5
6
Ciri : Counter < n
ADA ISINYA :
2
3
7
n
Ciri : Counter > 0
39
Algoritma yang lengkap
untuk
INSERT dan DELETE
40
a. Algoritma yang lengkap untuk proses INSERT
void INSERT(void)
{if ( Counter < n)
{ R = (R+1) % n;
Q[R] = X;
Counter++;
}
else
printf(“Antrian Penuh”);
}
2. 19
if( BISA DIISI )
Algoritma yang lengkap untuk proses INSERT dengan ‘Logika Terbalik’
void INSERT(void)
{ if ( Counter == n)
if ( PENUH )
printf(“Antrian Penuh”)
else
}
{ R = (R+1) % n;
Q[R] = X;
Counter++; }
41
b. Algoritma yang lengkap untuk proses DELETE
void DELETE(void)
{ if ( Counter > 0)
{ X = Q[F];
F = (F+1) % n;
Counter--;
}
else
printf(“Antrian Kosong”);
}
2. 20
if ( ADA ISINYA )
Algoritma yang lengkap untuk proses DELETE dengan ‘Logika Terbalik’
void DELETE(void)
{ if ( Counter == 0)
if ( KOSONG )
printf(“Antrian Kosong”)
else { X = Q[F];
F = (F+1) % n;
Counter--; }
}
42
2.4. SOAL SOAL LATIHAN MANDIRI
0
x x x
F
n-1
2. 22
0
x x x
1
R
R
Gambar-a
n-1
x x x x
1
F
Gambar-b
SOAL UNTUK CIRCULAR QUEUE YANG DIILUSTRASIKAN PADA DIATAS.
1. Sebutkan ciri bahwa Antrian :
a.
b.
c.
d.
e.
f.
2. Tulis algoritma dasar untuk:
a. Inisialisasi.
b. Insert sebuah record
c. Delete sebuah record
Kosong
Penuh
Bisa diisi
Ada isinya
Hanya berisi 10 record
Tempat yang kosong hanya ada 10 tempat.
3. Tulis algoritma yang lengkap untuk:
b. Insert sebuah record
c. Delete sebuah record
43
2. 22
4. Tulis algoritma yang lengkap untuk mengisi antrian record per
record sampai antrian penuh tak bisa diisi lagi.
5. Tulis algoritma yang lengkap untuk mendelete isi antrian
record per record sampai antrian kosong
6. Tulis algoritma yang lengkap untuk mengisi antrian record
per record sebanyak 10 recordselama antrian beleum penuh.
Apabila antrian penuh, walaupun belum mengisi 10 record,
proses pengisian dihentikan.
7. Tulis algoritma yang lengkap untuk mendelete isi antrian
record per record sebanyak 10 record selama antrian masih
ada isinya. Bila antrian sudah kosong, walaupun belum
mendelete sebanyak 10 record, maka proses delete
dihentikan.
8. Tulis algoritma untuk menghitung dan mencetak jumlah tempat
(elemen) yang ada isinya.
9. Tulis algoritma untuk menghitung dan mencetak jumlah tempat
yang masih bisa diisi.
44