algoritma dan pemrograman 2 pertemuan ke
TRANSCRIPT
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
1/120
Algoritma dan Pemrograman 2
Pertemuan Ke-1
Array (Larik)
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
2/120
Algoritma dan Pemrograman 2
Judul Materi : Array (Larik)
Deskripsi Materi : Materi ini mencakup subpokok bahasan arraydimensi satu, dimensi dua, perhitungan matriks, dan pengenalan dimensi n dengan
menggunakan tipe data array
Tujuan Instruksional Khusus :
1. Mendefinisikan dan membuat matriks dengan menggunakan tipe data array
2. Mengimplementasikan tipe data array untuk matrik3. Menggunakan definisi matriks untuk perhitungan matriks
Referensi :
• Buku Teks
Munir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal danC , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.
Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.
Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.
Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
3/120
ARRAY (LARIK)
PENDAHULUAN
Array atau biasa disebut larik adalah koleksi data dimana setiap elemen memakai
nama yang sama dan bertipe sama dan setiap elemen diakses dengan membedakan indeks
arraynya.
ISI
A. Deklarasi Array
Variabel array dideklarasikan dengan mencantumkan tipe dan nama variable yang
diikuti dengan banyaknya lokasi memori yang ingin dibuat.
Contoh :
int c[5];
C++ secara otomatis akan menyediakan lokasi memori sesuai dengan yang
dideklarasikan, dimana nomor indeks selalu dimulai dari 0.
int c[5] = {-12, 0, 20, 85, 1551};
Nilai suatu variabel array dapat juga diinisialisasi secara langsung seperti yang
terdapat di dalam tanda kurung kurawal pada saat deklarasi di atas.
int x[5] = [0];
Deklarasi variable array sekaligus mengisi setiap lokasi memorinya dengan
nilai 0.
B. Array Dimensi Satu
Bentuknya (Pseudocode) :
Bentuknya (C++):
nnaammaa _ _ vvaar r :: aar r r r aayy [[r r aannggeeiinnddeek k ss]] oof f ttii p pee
tt ii ppee nnaammaa _ _ vvaarr [[ uukkuurr aann]] ;;
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
4/120
Dengan :tipe : menyatakan jenis elemen array (int, char dan lain-lain)
rangeindeks : menyatakan indeks awal sampai demgan indeks akhir dari var
array yang dibuat
ukuran : menyatakan jumlah maksimal elemen array
Contoh :Algoritma :
Algoritma PangkatDua
Deklarasi
square : array [1..100] of integer
i,k : integer
Deskripsifor i 1 to 10 do
k i + 1
square[i] k * k
output(”Pangkat dari ”,k,” adalah ”, square[i])
endfor
Program C++ :
#i ncl ude
mai n( ){
i nt squar e[ 100] ;i nt i , k;
f or ( i =0; i
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
5/120
Pangkat dari 7 adalah 49
Pangkat dari 8 adalah 64Pangkat dari 9 adalah 81
Pangkat dari 10 adalah 100
C. Array Dimensi Dua
Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom.Bentuknya dapat berupa matriks atau tabel.
Deklarasi array (Pseudocode) :
nnaammaa _ _ vvaar r :: aar r r r aayy [[r r aannggeeiinnddeek k ss11,,r r aannggeeiinnddeek k ss22]] oof f ttii p pee
Deklarasi array (C++):
tt ii ppee nnaammaa _ _ vvaarr [[ uukkuurr aann11]] [[ uukkuurr aann22]] ;;
Contoh :
Sebuah matrik A berukuran 2x3 dapat dideklarasikan sebagai berikut :
Algoritma :
a : array [1..2,1..3] of integer
a1 11
a2 7
a3 4
a4 12
a5 3
a6 9
C++ :
i nt a[ 2] [ 3] = {{11, 7, 4}, {12, 3, 9}};
yang akan menempati lokasi memori dengan susunan berikut :
0 1 2
0 11 7 4
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
6/120
1 12 3 9
Dan definisi variabel untuk setiap elemen tersebut adalah :
0 1 2
0 a[0][0] a[0][1] a[0][2]
1 a[1][0] a[1][1] a[1][2]
Contoh Program 1 :
#i ncl udemai n( ){
i nt A[ 3] [ 3] ={{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};i nt i , j ;
f or ( i =0; i
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
7/120
{ i nt i , j ;
f or ( i =0; i
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
8/120
f or ( i =0; i
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
9/120
Algoritma dan Pemrograman 2
Pertemuan Ke-2
Record/Struct dan Array Of Record
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
10/120
Algoritma dan Pemrograman 2
Judul Materi : Record/Struct dan Array Of Record
Deskripsi Materi : Materi ini membahas tipe data terstrukturrecord/struct dan penggunaannya dengan tipe data terstruktur array
Tujuan Instruksional Khusus :
1. Mendefinisikan dan menggunakan tipe data record/struktur
2. Mendeskripsikan tipe data record
Referensi :
• Buku TeksMunir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal dan
C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.
Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.
Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.
Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.
Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
11/120
RECORD/STRUCT DAN ARRAY OF RECORD
PENDAHULUAN
Seperti halnya Array, Record/Struct mempunyai sejumlah elemen yang disebut
field. Kalau semua elemen array harus mempunyai tipe data yang sama, maka tiap-tiap
elemen pada Record/Struct dapat memiliki tipe data yang berbeda.
ISI
A. RECORD/STRUCT
Bentuk umum deklarasi Record/Struct
Algoritma :
namaVar : record
< namaField1 : tipeField1 ,
namaField2 : tipeField2 ,
… …
namaFieldn : tipeFieldn ,
>
Atau namavar dapat dipisah dari deklarasi tiperecordnya, sehingga menjadi
Type namaTipeRecord : record
< namaField1 : tipeField1 ,
namaField2 : tipeField2 ,
… …
namaFieldn : tipeFieldn ,
>
namaVar : namaTipeRecord
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
12/120
Bahasa C++ :
st r uct namaTi peSt r uct
{
t i peFi el d1 namaFi el d1;
t i peFi el d2 namaFi el d2;
… …
t i peFi el dn namaFi el dn;
} namaVar ;
Atau namavar dapat dipisah dari deklarasi tiperecordnya, sehingga menjadi :
t ypedef st r uct
{
t i pef i el d1 namaf i el d1;
t i pef i el d2 namaf i el d2;
… …
t i pef i el dn namaf i el dn;
} namat i pest r uct ;
namat i pest r uct namavar ;
Catatan : namaVar bisa lebih dari satu
Contoh record/struct :
Algoritma :
Deklarasi
Type Mahasiswa : Record < NIM : integer,
Nama : string,
KodeMK : string,
NilaiHuruf : char >
Mhs1,Mhs2 : Mahasiswa
Bahasa C++ :
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
13/120
/ / dekl ar as i
t ypedef st r uct { i nt NI M;
char Nama[ 20] ;
char KodeMK[ 10] ;
char Ni l ai Hur uf ;} Mahasi swa;
Mahasi swa Mhs1, Mhs2;
Cara mengakses elemen record/structur :
namavar.namafield
Contoh Program :
#i ncl ude
#i ncl ude
t ypedef st r uct
{ i nt t anggal , bul an, t ahun;
} dat a_t anggal ;
t ypedef st r uct
{ char nama[ 30] ;
dat a_t anggal t gl _ l ahi r ;
} dat a_r ekan;
dat a_r ekan i nf o_r ekan;
mai n( )
{
st r cpy( i nf o_r ekan. nama, "Hani f ") ;
i nf o_r ekan. t gl _l ahi r . t anggal = 30;
i nf o_r ekan. t gl _l ahi r . bul an = 4;
i nf o_r ekan. t gl _l ahi r . t ahun = 2002;
cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
14/120
Contoh Variasi program Cara Mendeklarasikan Structur :
#i ncl ude
#i ncl ude
mai n( )
{
st r uct dat a_t anggal
{ i nt t anggal , bul an, t ahun; };
st r uct dat a_r ekan
{ char nama[ 30] ;
str uct dat a_t anggal t gl _ l ahi r ;
};
st r uct dat a_r ekan i nf o_r ekan;
st r cpy( i nf o_r ekan. nama, "Hani f ") ;
i nf o_r ekan. t gl _l ahi r . t anggal = 30;
i nf o_r ekan. t gl _l ahi r . bul an = 4;
i nf o_r ekan. t gl _l ahi r . t ahun = 2002;
cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
15/120
Bahasa C++ :
st r uct namaTi peSt r uct
{
t i peFi el d1 namaFi el d1;
t i peFi el d2 namaFi el d2;
… …
t i peFi el dn namaFi el dn;
} namaVar ;
namaTi peSt r uct namaVar [ ukur an] ;
PENUTUP
Record merupakan suatu tipe data terstruktur yang dapat menampung data field
bertipe berbeda. Tipe ini dapat dipadukan dengan tipe data terstruktur lainnya seperti
array.
SOAL-SOAL
Buat program untuk menginput dan menampilkan 5 data mahasiswa matakuliah
Algoritma dan Pemrograman 2 dengan field-field NoMhs, Nama, Kelas, NilaiAngka dan
NilaiHuruf, dengan ketentuan NilaiHuruf tidak diinputkan tetapi berasal dari NilaiAngka.
Range NilaiHuruf : 0
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
16/120
Algoritma dan Pemrograman 2
Pertemuan Ke-3
Reccurence Relation (Relasi Berulang)
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
17/120
Algoritma dan Pemrograman 2
Judul Materi : Reccurence Relation (Relasi Berulang)
Deskripsi Materi : Materi ini membahas pemakaian skema iterasiuntuk Persoalan Deret yang rumusnya dapat dinyatakan dalam hubungan/relasi
berulang
Tujuan Instruksional Khusus :
1. Memahami algoritma hubungan berulang
2. Menjelaskan hubungan berulang dalam algoritma menggunakan sintak perulangan3. Mengimplementasikan algoritma berulang
Referensi :
• Buku Teks
Munir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal danC , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.
Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.
Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.
Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
18/120
RECCURENCE RELATION (RELASI BERULANG)
PENDAHULUAN
Pemakaian skema iterasi untuk Persoalan Deret dapat dinyatakan dalam rumus
hubungan/relasi berulang, yaitu menyangkut masalah ketelitian penyajian bilangan pada
komputer.
ISI
Contoh :
Barisan : 1,2,3,4,...,n3,5,7,9,...,n
Deret : 1 + 2 + 3 + 4 + ... + n
3 + 5 + 7 + 9 + ... + n
Contoh1 :
1,2,3,4,5,...,n
Algoritma Contoh1
Deklarasi
i,n : integerDeskripsi
Input(n)
i1s0
while (i
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
19/120
i1
s0while (i
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
20/120
s +=xpr i nt f ( “%d+”, x) ;i ++;
}pr i nt f ( “j uml ah der et s = %d “, s) ;
}
Contoh4 :
S=3+5+7+9+...+15
i 1 2 3 4 5 … n
f(i) 3 5 7 9 11 2n+1
f(i) = 2*i +1
x = 2*i +1s = s + (2*i +1)
s = s + x
Contoh5 :
S=2+5+10+17+26+...+101
i 1 2 3 4 5 … n
f(i) 2 5 10 17 26 (n*n)+1
f(i) = i*i +1
x = i2 +1
s = s + (i2 +1)
s = s + x
Contoh6 :
S=-3+6-9+12-15+18
i 1 2 3 4 5 6 N
f(i) -3 6 -9 12 -15 18 3*n*(-1)n
f(i) = 3*i *(-1)
i
atau
untuk ganjil i mod 2 =1
t = -1
untuk genap i mod 2 = 0t = 1
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
21/120
Algoritma Contoh6a
Deklarasii,s,x,t : integer
Deskripsi
i1
x0s0
t1
while (i
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
22/120
Contoh 8 :
S = 1/2-1/4+1/8-1/16+...-...
Algoritma HitungDeret7
Deklarasi
i,p,q,n : integerS : real
Deskripsi
i1 p1
q2
S0.0while (i
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
23/120
Algoritma dan Pemrograman 2
Pertemuan Ke-4
Rekursif
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
24/120
Algoritma dan Pemrograman 2
Judul Materi : Rekursif
Deskripsi Materi : Materi ini membahas bentuk algoritma rekursifdan penggunaan rekursif untuk menyelesaikan perosalan-persoalan iterasi
Tujuan Instruksional Khusus :
1. Memahami algoritma rekursif
2. Menjelaskan bentuk algoritma rekursif
3. Mendeskripsikan parameter-parameter pada algoritma rekursif4. Membandingkan algoritma rekursif dengan algoritma non rekursif
Referensi :
• Buku Teks
Munir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal danC , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.
Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.
Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.
Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
25/120
REKURSIF
PENDAHULUAN
Rekursif merupakan alat untuk memecahkan masalah dalam suatu fungsi atau
procedure yang memanggil dirinya sendiri. Definisi menurut Niclaus Wirth : “ An object
is said be recursive if it partially consist or is defines in terms of itself”
Mengapa kita memerlukan rekursif? Karena ada beberapa kasus yang akan jauh
lebih mudah diselesaikan jika menggunakan rekursif.
Secara teori semua masalah yang dapat dipecahkan dengan rekursif dapat dipecahkan
dengan tanpa rekursif. Meskipun dalam kenyataa ini, rekursif sangat bermanfaat sebab
beberapa masalah mempunyai solusi yang sulit tanpa menggunakan rekursif.
Penggunaan rekursif kadang-kadang harus mengorbankan efisiensi dan kecepatan,
disamping itu ada masalah yang sering muncul dalam rekursif, yaitu eksekusi yang tidak
pernah berhenti, akibtanya memori tumpukan akan habis dan computer hank.
Pada dasarnya rekursif sering digunakan dalam perhitungan matematika, sebagai
contoh pertimbangan fungsi factorial dan juga bilangan Fibonacci
ISI
A. Faktorial
Salah satu contoh yang sering digunakan untuk menjelaskan rekursif adalah
fungsi fakorial. Fungsi factorial dari bilangan bulat positif n didefinisikan sebagai
berikut:
n!= n.(n-1)!, jika n>1
n!= 1, jika n=0, 1
contoh :
3!= 3. 2!
3!= 3. 2. 1!
3!= 3. 2. 1
3!= 6
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
26/120
Cara lain untuk mendefiniskan fungsi tersebut sebagai berikut:
Dalam definisi ini, nilai 3! dieksprsikan sebagai 3 x 2!, dengan kata lain untuk
menghitung factorial 3, kita harus menghitung factorial lain yaitu factorial 2.
Jika definisi nilai 2!=2 x 1!
Factorial 1 didefinisikan dengan nilai 1.
Jadi jika factorial 3!= 3 x 2 x 1, yang mana secara pasti mempunyai nilai sama
yang diperoleh dari definisi tanpa rekursif.
Kita dapat menuliskan fungsi penghitung factorial seperti dibawah ini,
Algoritma :
Function Faktorial (input n: integer) integerDeklarasi{tidak ada}
Deskripsi
if (n = 0) or (n = 1) thenreturn (1)
else
return (n * Faktorial(n-1))
endif
Bahasa C++ :
1. i nt Fakt or i al ( i nt n)2. {3. i f ( ( n == 0) | | ( n == 1 ) )4. r et ur n ( 1) ;5. el se6. r et ur n ( n * Fakt or i al ( n- 1) ) ;7. }
• Pada baris 3 dari fungsi diatas,
nilai n dicek sama dengan 0 atau 1,
jika ya, maka fungsi mengembalikan nilai 1 {baris 4},
jika tidak, fungsi mengembalikan nilai n * Faktorial (n -1)
{baris 6 }
• disinilah letak proses rekursif itu, perhatikan fungsi factorial ini memanggil
dirinya sendiri tetapi dengan parameter (n-1)
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
27/120
B. Bilangan Fibonacci
Fungsi lain yang dapat diubah kebentuk rekursif adalah perhitungan Fibonacci. Bilangan
Fibonacci dapat didefinisikan sebagai berikut:
f n = f n-1 + f n-2 untuk n>1
f 0 = 0
f 1 = 1
berikut ini adalah barisan bilangan Fibonacci mulai dari n=1
1 1 2 3 5 8 13 21 34
Algoritma yang dipakai
Function Fibonacci(input n:integer) integer
Deklarasi Lokal{tidak ada}
Deskripsiif (n ==1 || n==2) then
return (l)
elsereturn (Fibonacci(n-1)+Fibonacci(n-2))
endif
Contoh,
Untuk ukuran n= 4, proses perhitungan Fibonacci dapat dilakukan sebagai berikut:
f 4 = f 3+f 2
f 4 = (f 2+f 1) + f 2
f 4 = (1+1) +1
f 4 = 3
C. Penerapan faktorial
• Kombinasi
Function Kombinasi (input n, r : integer) realDeklarasi
If (n < r) Then
return (0)Else
return (Faktorial(n)/Faktorial(r)*Faktorial(n-r))Endif
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
28/120
• Permutasi
Function Permutasi (input n, r : integer) realDeklarasi
{tidak ada}
Deskripsi
if (n< r) thenreturn (0)
else
return (Faktorial(n) / Faktorial(n-r))endif
PENUTUP
Persoalan yang diselesaikan dengan iterasi dapat juga diselesaikan dengan rekursif.
Definisi rekursif harus tergantung kondisi, yang harus ada keadaan dimana kita dapat
menghentikannya.
SOAL-SOAL
1. Buat program untuk menghitung deret S = 1+2+3+4+5 menggunakan function
rekursi
2. Buat program untuk menghitung deret S = 2+4+6+8+10 menggunakan function
rekursi
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
29/120
Algoritma dan Pemrograman 2
Pertemuan Ke-5
Pencarian (Searching) 1
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
30/120
Algoritma dan Pemrograman 2
Judul Materi : Pencarian (Searching) 1
Deskripsi Materi : Materi ini membahas metode-metode searchingsequensial search menggunakan tipe data array untuk data urut maupun tidak urut
Tujuan Instruksional Khusus :
1. Memahami dan membandingkan metode searching menggunakan tipe data array
2. Mendeskripsikan berbagai metode searching
3. Mengilustrasikan berbagai metode searching menggunakan tipe data array
Referensi :
• Buku TeksMunir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal dan
C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,
Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.
Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.
Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.
Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
31/120
PENCARIAN (SEARCHING) 1
PENDAHULUAN
Pencarian di perlukan untuk mencari informasi khusus dari tabel pada saat lokasi
yang pasti dari informasi tersebut sebelumnya tidak diketahui. Pencarian selalu
dinyatakan dengan referensi pada adanya sekolompok data yang tersimpan secara
terorganisasi, kelompok data tersebut kita sebut tabel.
Array memungkinkan untuk menyimpan nilai yang bertipe sama. Operasi yang umum
dalam array adalah Sequential Search dan Binary search. Perbedaan dari kedua teknik ini
terletak pada keadaan data.
ISI
Pencarian Sequential (Sequential Search)
Pencarian Sequential digunakan apabila data dalam keadaan acak atau tidak terurut.
Pencarian Sequential atau sering disebut Pencarian Linear menggunakan prinsip sebagai
berikut data yang ada dibandingkan satu persatu secara berurutan dengan data yang
dicari.
Pencarian Sequential (Sequential Search) :1. Sequential Search pada Array yang elemen datanya Belum Terurut
a. Metode tanpa Sentinel
b. Metode dengan sentinel
2. Sequential Search pada Array yang elemen datanya Sudah Terurut
c. Metode Sequential Tanpa Sentinel
d. Metode Sequential Search Dengan Sentinel
A. Proses pencarian sequential data belum terurut tanpa sentinel :
pada dasarnya pencarian ini hanya melakukan pengulangan dari elemen ke-1
sampai dengan jumlah data.
pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari,
apabila sama berarti data telah ditemukan,
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
32/120
sebaliknya apabila sampai akhir pengulangan tidak ada yang sama, berarti
data tidak ada.
Contoh Program SeqSearch_BelumUrut_nonSentinel
/ * SeqSearch_BelumUrut_nonSentinel
di asumsi kan Ar r ay X sudah ada dan ber i si dat a yang bel umt er ur ut , ni l ai yang di car i adal ah y dan hanya ada sat u */
#i ncl ude t ypedef enum bool ean {f al se=0, t r ue=1};mai n( ){
i nt X[ 10] ={20, 50, 10, 30, 90, 60, 70, 80, 40, 100};bool ean f ound;i nt i , y;cout > y;
f ound=f al se;i =0;whi l e ( ( i
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
33/120
perbedaannya dengan yang tanpa sentinel adalah ketika data ditemukan tapi
data tersebut adalah sentinel berarti data tidak ada.
Contoh Program SeqSearch_BelumUrut_Sentinel {cara1}
/ * SeqSearch_BelumUrut_Sentinel{cara1}
di asumsi kan Ar r ay X[ 0. . 10] sudah ada dan i ndeks ke 0. . 9 t el ahber i si dat a yang bel um ur ut , ni l ai yang di car i adal ah y danhanya ada satu, y di l et akkan di i ndex ke- 10 */
#i ncl ude mai n( ){i nt X[ 11] ={20, 50, 10, 30, 90, 60, 70, 80, 40, 100};i nt i , y;cout > y;X[ 10]=y;
i =0;whi l e ( X[ i ] ! =y)i =i +1;
i f ( i >9)cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
34/120
cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
35/120
ada di Array sehingga data yang dicari sama dengan data sentinel maka dapat
disimpulkan bahwa data tidak ditemukan.
Contoh Program SeqSearch_Urut_Sentinel {cara1}
/ * SeqSearch_SudahUrut_Sentinel {cara 1}
di asumsi kan Ar r ay X[ 1. . nmax] sudah ada dan i ndeks 1. . n t el ahber i si dat a yang sudah t er ur ut , ni l ai yang di car i adal ah y danhanya ada sat u */
#i ncl ude t ypedef enum bool ean {f al se=0, t r ue=1};mai n( ){i nt X[ 11] ={10, 20, 30, 40, 50, 60, 70, 80, 90, 100};i nt i , y;bool ean f ound;cout > y;
X[ 10]=y;f ound=f al se;i =0;whi l e ( ( ! f ound) & ( X[ i ] 9)
cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
36/120
{ i f ( X[ i ] ==y)f ound=t r ue;
el sei =i +1;
}i f ( i ==10)
cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
37/120
Algoritma dan Pemrograman 2
Pertemuan Ke-6
Pencarian (Searching) 2
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
38/120
Algoritma dan Pemrograman 2
Judul Materi : Pencarian (Searching) 2
Deskripsi Materi : Materi ini membahas metode searching binarysearch menggunakan tipe data array untuk data urut
Tujuan Instruksional Khusus :
1. Memahami dan membandingkan metode searching menggunakan tipe data array
2. Mendeskripsikan berbagai metode searching
3. Mengilustrasikan berbagai metode searching menggunakan tipe data array
Referensi :
• Buku TeksMunir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal dan
C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,
Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.
Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.
Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.
Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
39/120
PENCARIAN (SEARCHING) 2
PENDAHULUAN
Pencarian dengan menggunakan tipe data Array dapat digunakan metode Sequential
Search dan Binary search. Perbedaan dari kedua teknik ini terletak pada keadaan data.
ISI
Pencarian Biner (Binary Search)
Salah satu syarat pencarian biner ( Binary Search) dapat dilakukan adalah data sudah
dalam keadaan terurut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan.
Dalam kehidupan sehari-hari, sebenarnya kita sering menggunakan pencarian biner,
misalnya pada saat ingin mencari suatu kata dalam kamus.
Langkah dari pencarian biner adalah sebagai berikut:
1. mula-mula diambil posisi awal=1 dan posisi akhir=n
2. kemudian kita cari posisi data tengah dengan rumus posisi tengah = (posisi awal +
posisi akhir) div 2
3. kemudian data yang dicari dibandingkan dengan data tengah
a. jika sama, data ditemukan, proses selesai.
b. jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap
sama dengan posisi tengah - 1.
c. jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap
sama dengan posisi tengah + 1.
4. ulangi langkah 2 sampai data ditemukan, atau tidak ditemukan.
5. Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar
dari pada posisi akhir. Jika posisi awal sudah lebih besar daripada posisi akhir
berarti data tidak ditemukan.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
40/120
Contoh :
Misalkan kita ingin mencari angka 14 pada sekumpulan data urut berikut :
1 2 3 4 5 6 7 8 9
3 7 10 12 13 14 20 24 29
awal tengah akhir
Jawab:
1. mula-mula dicari data tengah, dengan rumus tengah = (awal+akhir) div 2 = (1+9)
div 2 = 5, berarti data tengah adalah data ke-5, dengan nilai 13
2. data yang kita cari adalah 14, bandingkan nilai 14 dengan data tengah.
3. karena 14 > 13, berarti proses dilanjutkan tetapi posisi awal dianggap sama
dengan posisi tengah+1 atau 6
1 2 3 4 5 6 7 8 9
3 7 10 12 13 14 20 24 29
awal tengah akhir
4. data tengah yang baru didapat dari rumus (6+9) div 2 = 7, berarti data tengah
yang baru adalah data ke-7, yaitu 20.
5. data yang kita cari adalah 14, bandingkan nilai 14 dengan nilai tengah.
6. karena 14 < 20, berarti proses dilanjutkan, tetapi posisi akhir dianggap sama
dengan posisi tengah-1 atau 6.
1 2 3 4 5 6 7 8 9
3 7 10 12 13 14 20 24 29
awal
akhir
tengah
7. data tengah yang baru didapat dari rumus (6+6) div 2 = 6, berarti data tengah
yang baru adalah data ke-6, yaitu 14
8. data yang kita cari adalah 14, bandingkan dengan data tengah, ternyata sama.
9. jadi data yang ditemukan pada indeks ke-6
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
41/120
Bagaimana jika data yang dicari tidak ditemukan, misalnya data yang dicari 16?
Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar dari
pada posisi akhir. Jika posisi awal sudah lebih besar daripada posisi akhir berarti data
tidak ditemukan.
Secara umum algoritma pencarian biner, adalah sebagai berikut :
(Data diurutkan lebih dahulu, data disimpan di data array, x adalah nilai yang dicari)
1. awal 1
2. akhir N
3. ketemu false
4. selama (awal data [tengah] maka awal tengah+1.
9. if (ketemu) maka tengah adalah indeks dari data yang dicari, jika tidak
data tidak ditemukan.
Contoh 1 pemakaian pencarian binary :
/ * BinSearch_SudahUrut di asumsi kan Ar r ay X sudah ada dan ber i si data yang sudah t erur ut ,ni l ai yang di car i adal ah y dan hanya ada sat u */
#i ncl ude t ypedef enum bool ean {f al se=0, t r ue=1};mai n( ){i nt X[ 10] ={10, 20, 30, 40, 50, 60, 70, 80, 90, 100};i nt i , y, j , k;bool ean f ound;cout > y;
f ound = f al se;i =0;
j =10;whi l e ( ( ! f ound) & ( i
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
42/120
el sei f ( y
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
43/120
Program ini dimaksudkan untuk mengamati jumlah operasi searching yang harus
dilakukan untuk menemukan masing-masing nilai.
PENUTUP
Metode Binary Search dapat dipakai hanya untuk data yang urut atau telah
diurutkan.
SOAL-SOAL
1. Ilustrasikan pencarian nilai 25 pada kumpulan data dibawah. Gunakanlah metode
Binary Search.
12 15 4 25 45 10 19 9 32 33
2. Ilustrasikan pencarian nilai 20 pada kumpulan data dibawah. Gunakanlah metode
Binary Search.
12 15 4 25 45 10 19 9 32 33
3. Tulislah program untuk mengurutkan data bertipe rekaman menggunakan salah satu
metode pengurutan. Tipe rekaman yang harus diurutkan mempunyai empat data, yaitu:
nomorinduk, bertipe bilangan bulat
nama, bertipe string
alamat, bertipe string
golongan, bertipe char (dapat bernilai ‘A’, …’Z’);
procedure pengurutan menerima satu parameter, yaitu bilangan bulat yang dapat bernilai
1, 2, atau 3. Apabila bernilai 1, maka data diurutkan menurut nomorinduk, apabila
bernilai 2, maka data diurutkan menurut nama, dan apabila bernilai 3, maka data
diurutkan menurut golongan.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
44/120
Algoritma dan Pemrograman 2
Pertemuan Ke-7
Pencarian (Sorting) 1
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
45/120
Algoritma dan Pemrograman 2
Judul Materi : Pengurutan (Sorting) 1
Deskripsi Materi : Materi ini membahas metode sorting langsungMetode Penyisipan Langsung (Straight Insertion Sort ), Metode Seleksi (Straight
Selection Sort ) dan Metode Penukaran ( Exchange selection) / Gelembung ( Bubble
Sort ) menggunakan tipe data array
Tujuan Instruksional Khusus :
1. Memahami dan membandingkan metode sorting menggunakan tipe data array danalgoritma rekursif
2. Mengimplemetasikan penggunaan tipe data array
3. Mendeskripsikan berbagai metode sorting4. Mengilustrasikan berbagai metode sorting menggunakan tipe data array
Referensi :
• Buku TeksMunir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal dan
C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.
Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.
Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
46/120
PENGURUTAN (SORTING) 1
PENDAHULUAN
Sorting adalah suatu proses pengurutan data yang sebelumnya disusun secara acak
atau tidak teratur menjadi urut dan teratur menurut suatu aturan tertentu.
Biasanya pengurutan terbagi menjadi dua yaitu :
• ascending (pengurutan dari karakter/angka kecil ke karakter/angka besar).
• descending (pengurutan dari karakter/angka besar ke karakter/angka kecil).
ISI
Untuk melakukan proses pengurutan dapat menggunakan beberapa metode antara lain :
A. Metode pengurutan langsung :
1. Metode Penyisipan Langsung (Straight Insertion Sort )
2. Metode Seleksi (Straight Selection Sort )
3. Metode Penukaran ( Exchange selection) / Gelembung ( Bubble Sort )
B. Metode pengurutan tidak langsung :
1.
Shell Sort2. Quick Sort
3. Merge Sort
A. Metode pengurutan langsung :
1. Metode Penyisipan Langsung (Straight Insertion Sort)
Dapat dibagi menjadi 2 bagian
– Bagian sebelah kiri data sudah terurut (tujuan)
– Bagian sebelah kanan data belum terurut (sumber)
Langkah-langkah :
1 : Baca array elemen yang akan diurutkan (n)
2 : Kerjakan langkah 3 sampai langkah 6 untuk i : 1 s/d n-1
3 : Tentukan elemen yang akan disisipkan (Temp = A [i] ;
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
47/120
j = i-1;)
4 : Kerjakan langkah 5 selama temp = 0;
5 : A [j+1]= A[j] ; j =j-1;
6 : Tempatkan elemen A [j+1] = Temp;
7 : Selesai
Algoritma Straight Insertion Sort
Deklarasi
I,J,K,N : Integer
Temp : real
A : array [1..20] of real
Deskripsi
Input(N) {maksimal N=20}
K traversal [1..N]
Input (Af) {masukkan data sebanyak N}
I traversal [2..N]
Temp A1
J I-1
While (temp =1) do
Aj+1
AjJJ-1
Endwhile
Aj+1 Temp
Ilustrasi Insertion Sort
A [0] A [1] A [2] A [3] A [4] A [5]i j=i-1
Temp =
A[ i ] 4 7 9 5 8 6
1 0 7 4 7 9 5 8 6
2 1 9 4 7 9 5 8 6
3 2 5 4 7 5 9 8 6
1 5 4 5 7 9 8 6
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
48/120
4 3 8 4 5 7 8 9 6
5 4 6 4 5 7 8 6 9
3 6 4 5 7 6 8 9
2 6 4 5 6 7 8 9
2. Metode Seleksi (Straight Selection Sort)
Selection sort dimulai dengan menyelesaikan elemen array (misalnya elemen
pertama). Kemudian sorting mencari keseluruhan array hingga menemukan nilai yang
terkecil. Sorting menempatkan nilai terkecil pada elemen tersebut, memilih elemen kedua
dan mencari elemen terkecil kedua.
Langkah-langkah Straight Selection Sort
1 : Baca array elemen yang diurutkan (n)
2 : Kerjakan langkah-langkah 3 sampai langkah 5
untuk i=1 s/d n-1
3 : Tentukan lokasi awal data terkecil Mindeks =1;
kerjakan langkah 4 untuk j=i+1 s/d n
4 : Cari data terkecil dan catat lokasinya. Test
apakah AMindeks > Aj?
Jika ya, catat Mindeks = j
5 : Tukar nilai Amindeks dengan Aj
6 : Selesai
Ilustrasi Straight Selection Sort
44 33 33 22
33 44 44 44
55 55 55 55
22 22 22 33
11 11 11 11
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
49/120
11 11 11 11
44 44 33 22
55 55 55 55
33 33 44 44
22 22 22 33
11 11 11
22 22 22
44 33 33
55 55 44
33 44 55
3. Metode Penukaran ( Exchange selection) / Gelembung ( Bubble Sort)
metode pertama yang paling banyak dipelajari pemrogram.
Sederhana
a. bubble sort tidak efisien dan menyita banyak waktu prosessor lebih banyak
daripada teknik sorting yang lain.
b. tidak lebih dari 30 atau kurang dari 30 elemen, penggunaan bubble sort masih
sangat baik
Metode gelembung / penukaran adalah metode yang mendasarkan penukaran 2
buah elemen untuk mencapai keadaan urut yang diinginkan
Langkah-langkah :
1 : Baca array elemen yang diurutkan (N)
2 : Kerjakan langkah 3 untuk I=1 s/d N-1
3 : Kerjakan langkah 4 untuk J=1 s/d N-1
4 : Cek apakah A[J]>A[J+1}
5 : Selesai
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
50/120
Ilustrasi Bubble Sort
0 44 0 33 0 33 0 33
1 33 1 44 1 44 1 44
2 55 2 55 2 55 2 22
3 22 3 22 3 22 3 55
4 11 4 11 4 11 4 11
0 33 0 33 0 33
1 44 1 44 1 22
2 22 2 22 2 44
3 11 3 11 3 11
4 55 4 55 4 55
0 33 0 22 0 22 0 22
1 22 1 33 1 11 1 11
2 11 2 11 2 33 2 33
3 44 3 44 3 44 3 44
4 55 4 55 4 55 4 55
Program berikut memakai bubble sort untuk mengurutkan data array berisi 30 nilai acak :
/ * Bubbl e Sor t */#i ncl ude #i ncl ude #i ncl ude
voi d bubbl e_sor t ( i nt ar r ay[ ] , i nt s i ze){
i nt t emp, i , j ;f or ( i =0; i
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
51/120
PENUTUP
Ketiga metode pengurutan langsung yang dibahas pada pertemuan ini hanya
beberapa dari metode pengurutan langsung lainnya. Banyak metode lain untuk
mengurutkan data. Metode-metode tersebut bertujuan sama yaitu mengurutkan data, yang berbeda hanya cara yang mempengaruhi kecepatan untuk jumlah data tertentu.
SOAL-SOAL
1. Pergunakan ketiga metode pengurutan langsung di atas untuk menampilan data dalam
pengolahan data nilai suatu mata kuliah.
Buatlah menu untuk memilih metode yang dipakai, dan pilihan field yang akan dipakai
sebagai key juga harus bisa dipilih (misal berdasarkan NIM atau Nilai Akhir).
Struktur Data yang dipakai sebagai berikut :
Deklarasi
TYPEDataMhs = Record
< NIM : String
Nama : StringUTS,UAS,Prakt,NA : real {0 s/d 100}
>
BykMhs, i, j : integer
Mahasiswa : Array[1..100] of DataMhs
Temp : DataMhs
Nilai Akhir (NA) dihitung dengan rumus : NA = 25%*UTS+50%*UAS+25%*Prakt
Proses yang dilakukan dalam program ini :
memasukkan data,
sorting, dan
tampilkan data.
2. Carilah metode pengurutan langsung lainnya selain ketiga metode yang dibahas pada
pertemuan ini.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
52/120
Algoritma dan Pemrograman 2
Pertemuan Ke-8
Pencarian (Sorting) 2
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
53/120
Algoritma dan Pemrograman 2
Judul Materi : Pengurutan (Sorting) 2
Deskripsi Materi : Materi ini membahas metode sorting tak langsungMetode Shell Sort, Metode Quick Sort dan Metode Merge Sort dengan menggunakan
tipe data array dan algoritma rekursif
Tujuan Instruksional Khusus :
1. Memahami dan membandingkan metode sorting menggunakan tipe data array dan
algoritma rekursif2. Mengimplemetasikan penggunaan tipe data array
3. Mendeskripsikan berbagai metode sorting
4. Mengilustrasikan berbagai metode sorting menggunakan tipe data array
Referensi :• Buku Teks
Munir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal dan
C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.
Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,
Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.
Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.
Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
54/120
PENGURUTAN (SORTING) 2
PENDAHULUAN
Untuk melakukan proses pengurutan tidak langsung dapat menggunakan beberapa
metode :
4. Shell Sort
5. Quick Sort
6. Merge Sort
B. Metode pengurutan tidak langsung :
1. Shell Sort
Disebut juga dengan istilah metode “pertambahan menurun (dimishing increment)”
dari Donald L.Shell. Metoda ini memanfaatkan penukaran sepasang elemen untuk
mencapai keadaan urut. Dua buah elemen ditukarkan dengan jarak tertentu.
Rumus : ■ Jarak pertama = N div 2
■ Jarak berikutnya = jarak sebelumnya div 2
Contoh :
24 46 11 26 57 38 27 20 17
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
Sehingga : ■ Jarak pertama = 9 div 2 = 4
■ Jarak kedua = 4 div 2 = 2
■ Jarak ketiga = 2 div 2 = 1
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
55/120
Ilustrasi
Jarak A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
Awal 24 46 11 26 57 38 27 20 17
Jarak = 4 24 46 11 26 57 38 27 20 17
24 38 11 26 57 46 27 20 17
24 38 11 26 57 46 27 20 17
24 38 11 20 57 46 27 26 17
Jarak = 2 24 38 11 20 17 46 27 26 57
11 38 24 20 17 46 27 26 57
11 20 24 38 17 46 27 26 57
11 20 17 38 24 46 27 26 57
11 20 17 38 24 46 27 26 57
11 20 17 38 24 46 27 26 57
11 20 17 38 24 26 27 46 57
Jarak = 1 11 20 17 38 24 26 27 46 57
11 20 17 38 24 26 27 46 57
11 17 20 38 24 26 27 46 57
11 17 20 38 24 26 27 46 57
11 17 20 24 38 26 27 46 57
11 17 20 24 26 38 27 46 57
11 17 20 24 26 27 38 46 57
11 17 20 24 26 27 38 46 57
11 17 20 24 26 27 38 46 57
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
56/120
Program berikut, memakai shell sort untuk mengurutkan array yang berisi 50 nilai acak:
Contoh Program Shell Sort :
/ * Shell Sort */#i ncl ude
#i ncl ude #i ncl ude voi d shel l _sort ( i nt arr ay[ ] , i nt s i ze){ i nt t emp, gap, i , exchange_occur r ed;
gap= si ze/ 2;do {do {
exchange_occur r ed= 0;f or ( i =0; i ar r ay[ i +gap] ){t emp= ar r ay[ i ] ;ar r ay[i ] = ar r ay[i +gap] ;
ar r ay[ i +gap]= t emp;exchange_occurr ed= 1;
}} whi l e ( exchange_occur r ed) ;
} whi l e ( gap= gap/ 2) ;}
mai n( ){i nt val ues[50] , i ;
cl r scr ( ) ;/ / dat a yang bel um di ur ut kan di ambi l dar i hasi l r andom
cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
57/120
a. Misal vektor A yang memiliki N elemen.
b. Dipilih sembarang elemen, biasanya elemen pertama, misal sebut saja X.
c. Kemudian, semua elemen tersebut dengan menempatkan X pada posisi J
sedemikian rupa sehingga :
i. elemen 1 s/d J-1 memiliki nilai lebih kecil dari X dan
ii. elemen ke J+1 s/d N memiliki nilai lebih besar dari X.
d. Dengan demikian, terdapat dua buah subvektor.
Contoh :
1 N
24 46 11 26 57 38 27 20 17
Ilustrasi
1 N
24 46 11 26 57 38 27 20 17
Subvektor Kiri X Subvektor Kanan
1 J-1 J+1 N
11 20 17 24 46 26 57 38 27
11 20 17 24 46 26 57 38 27
11 20 17
11 17 20
11 17 20
24
24
24
26 38 27 46 57
26 46 57
382726 46
38 27
57
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
58/120
Contoh Program Quick Sort :
/ * Qui ck Sor t */
#i ncl ude #i ncl ude
#i ncl ude
voi d qui ck_sor t ( i nt ar r ay[ ] , i nt f i rs t , i nt l as t ){i nt t emp, l ow, hi gh, l i st _separ at or ;
l ow= f i r st ;hi gh= l ast ;l i s t_separ at or= ar r ay[ ( f i r st+l ast) / 2] ;do {
whi l e ( ar r ay[ l ow] l i st_separ at or ) hi gh- - ;
i f ( l ow
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
59/120
3. Merge Sort
Ide metode Merge Sort :
1. Pembagian array data menjadi dua bagian (bagian kiri dan bagian kanan)
Ulangi langkah 1 secara rekursi terhadap kedu abagian tersebut, sampai tiap
subarray hanya terdiri dari satu elemen.
2. Gabungkan masing-masing bagian itu sekaligus mengurutkannya, sesuai pohon
yang terbentuk saat membagi array, sampai membentuk array pertama saat
sebelum dibagi.
Ulangi langkah 2 secara rekursi pula.
Ilustrasi Merge Sort
I201528712625
7654321
tengah =1+7 div 2
201528712625
tengahtengah
201528712625
tengahtengahtengah
201528712625
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
60/120
Algoritma MergeSortRekursi
Deklarasi
Type TipeData : Array[1..100] of integer
Data : TipeData
n,i : integerProcedure MergeSort(input/output Data : TipaData;
input awal,akhir : integer )
Deskripsi
output(‘Banyaknya elemen array :’)
input(n)
i traversal[1..n]
Datai random(n)
output(‘Data yang belum terurut : ‘)
i traversal[1..n]
output(Datai)
II
2 127162
2212176
2211726
2221176
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
61/120
MergeSort(Data,1,n)
output(‘Data yang sudah terurut :’)
i traversal[1..n]
output(Datai)
Procedure MergeSort(input/output Data : TipaData;
input awal,akhir : integer )
Deklarasi Lokal
tengah : integer
Procedure Merge(input/output Data : TipaData;
input awalkiri,akhirkiri,
awalkiri,akhirkiri : integer)
Deskripsi
if (awal
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
62/120
while (kiriakhirkiri) then
tempi Datakanan
kanan kanan+1
endif
i i + 1
endwhile
i traversal[awalkiri..akhirkanan]
Datai tempi
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
63/120
MergeSort bila ditest dengan data dari ilustrasi
MergeSort(Data,1,1) {tidak mengerjakan apa-
apa}
MergeSort (Data,1,2) MergeSort (Data,2,2) {tidak mengerjakan apa-
apa}
3 Merge(Data,1,1,2,2) {gabung & urutkan data}
MergeSort(Data,1,
4)
MergeSort(Data,3,3) {tidak mengerjakan apa-
apa}
MergeSort (Data,3,4) MergeSort (Data,4,4) {tidak mengerjakan apa-apa}
6 MergeSort(Data,3,3,4,4) {gabung & urutkan data}
MergeSort(Data,1
,7) 7
Merge(Data,1,2,3,4) {gabung & urutkan data}
MergeSort(Data,5,5) {tidak mengerjakan apa-
apa}
MergeSort (Data,5,6) MergeSort (Data,6,6) {tidak mengerjakan apa-
apa}
MergeSort(Data,5,
7)
10 Merge(Data,5,5,6,6) {gabung & urutkan data}
12
MergeSort(Data,7,7)
11
{tidak mengerjakan apa-
apa}
Merge(Data,5,6,7,7) {gabung & urutkan data}
Merge(Data,1,4,5,
7)
{gabung & urutkan
data}
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
64/120
Keterangan : = memanggil
= alur logik
PENUTUP
Proses pengurutan tidak langsung dapat menggunakan beberapa metode : Shell
Sort, Quick Sort dan Merge Sort. Metode pengurutan tak langsung, implementasinya
dapat menggunakan fungsi rekursi.
SOAL-SOAL
1. Tambahkan ketiga metode pengurutan tak langsung di atas untuk menampilan data
dalam pengolahan data nilai suatu mata kuliah pada soal latihan kuliah pertemuan ke-
8.
2. Buat program menghitung nilai tengah (median) dari data-data integer yang diinput
lewat keyboard, dan cari nilai Z dengan Z = (median)2.
(Keterangan : cari dengan bantuan procedure pengurutan atau sorting. Perhatikan
untuk data yang jumlahnya ganjil atau genap)
Misal :
Input : Data ke-1 = 3Data ke-2 = 2
Data ke-3 = 6
Data ke-4 = 5
Output : Median = 4
Z = 16
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
65/120
Algoritma dan Pemrograman 2
Pertemuan Ke-9
Pointer 1
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
66/120
Algoritma dan Pemrograman 2
Judul Materi : Pointer 1
Deskripsi Materi : Materi ini membahas tipe data pointer, pendeklarasian dan cara pengaksesannya
Tujuan Instruksional Khusus :
1. Mendefinisikan dan menggunakan tipe data pointer
2. Mendeskripsikan tipe data pointer
3. Memahami kegunaan pointer
Referensi :
• Buku TeksMunir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal dan
C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,
Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.
Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.
Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.
Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
67/120
POINTER 1
PENDAHULUAN
Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain,
karena variabel pointer atau pointer adalah variabel yang berisi alamat di memori
komputer dari suatu obyek lain, yaitu obyek yang ditunjuk oleh pointer yang mempunyai
nilai tertentu.
ISI
A. Bentuk umum deklarasi variable pointer :
Algoritma (Pseodocode) :
nama_pointer : pointer to tipedata
C++ :
t i pedat a *nama_poi nt er ;
(deklarasi pointer null)
nama_poi nt er = ( t i pedat a *) mal l oc( si ze_t si ze) ;
(deklarasi pointer kosong)
Dengan :
• tipedata adalah tipe dasar nilai yang berada di memori yang ditunjuk oleh pointer.
• nama_pointer adalah nama variable pointer .
• (*) adalah operator memori yang fungsinya untuk mengembalikan nilai variable pada
alamatnya yang ditentukan oleh operand .
• mal l oc(si ze_t si ze) adalah deklarasi pengalokasian memori kosong dengan
ukuran kapasitas sebesar si ze
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
68/120
Ilustrasi :
nama_pointer• pointer null
• pointer kosongnama_pointer
(isi)null
(alamat)
Contoh :
Algoritma (Pseodocode) :
p : pointer to integer
nilai : pointer to real
s : pointer to char
C++ :
i nt *p;
f l oat * ni l ai ;char *s;
Contoh lain dalam bahasa C++ dan dengan ilustrasi :
i nt *p; i nt *q;
q p
p=( i nt * ) mal l oc( s i zeof ( i nt ) ) ;
p
(isi)null
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
69/120
q=( i nt * ) mal l oc( s i zeof ( i nt ) ) ;
q
(isi)null
B. Pengaksesan dengan Pointer
Untuk mengakses nilai/isi pada memori yang ditunjuk oleh pointer dipakai simbol ‘*’
Contoh :
*p = 10;
*q = 20;
Pointer menunjuk memori yang ditunjuk pointer lain :
Contoh :
p = q;
berarti p menunjuk ke alamat memori yang ditunjuk oleh q, dan dengan demikian p dan q
menunjuk alamat memori yang sama.
Ilustrasi : *p = 10 *q = 20
Contoh program Pointer 1:
#i ncl ude #i ncl ude #i ncl ude voi d mai n( )
p q
10 20
p = q
p
10
q
20
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
70/120
{i nt *p, *q;p=( i nt * )mal l oc( s i zeof ( i nt ) ) ;q=( i nt * )mal l oc( s i zeof ( i nt ) ) ;*p=10;*q=20;
cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
71/120
Operator ‘&’ digunakan untuk menyatakan alamat variabel statis yang akan ditunjuk.
Contoh :
px = &x;
Ilustrasi :
int *px; int x=10;
px x
10
px = &x
pxx
10
Jika suatu variabel statis sudah ditunjuk oleh pointer, isi variabel tersebut dapat diakses
melalui variabel itu sendiri (pengaksesan langsung) atau melalui pointer (pengaksesan
tidak langsung).
• Pengaksesan langsung dilakukan langsung oleh variabel statisnya (bukan pointernya).
Contoh :
x = 10
• Operator indirection (pengaksesan tidak langsung), berupa simbol ‘*’
Contoh :
*px = 10
Ilustrasi :
value1 = 5;
5
value1
mypointer = &value1;
value1
mypointer
5
*mypointer = 10;
mypointer v e1
5 10
alu
x
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
72/120
Contoh Program Pointer 2 :
#i ncl udemai n( ){ i nt val ue1 = 5, val ue2 = 15;
i nt * mypoi nt er ;mypoi nter = &val ue1;*mypoi nter = 10;cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
73/120
Ilustrasi :
1
int
x
PENUTUP
Penerapan pointer yang paling umum yaitu menciptakan variable dinamis, yang
memungkinkan untuk memakai memori bebas (memori yang belum dipakai) selama
eksekusi program.
SOAL-SOAL
1. Apa output dari program berikut :
#i ncl udemai n( )
y
int
px
int
2
x=87;a
x
px = &x;b
87
87
y
y=*px;
px
c
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
74/120
{ i nt p = 5, q = 15;i nt *m;m = &q;q = 10;cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
75/120
}
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
76/120
Algoritma dan Pemrograman 2
Pertemuan Ke-10
Pointer 2
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
77/120
Algoritma dan Pemrograman 2
Judul Materi : Pointer 2
Deskripsi Materi : Materi ini membahas tipe data pointer, operator-operator yang dapat dipakai dana penggunaannya bersama tipe data terstrutur yang
lain
Tujuan Instruksional Khusus :
4. Mendefinisikan dan menggunakan tipe data pointer
5. Mendeskripsikan tipe data pointer6. Memahami kegunaan pointer
Referensi :
• Buku Teks
Munir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal danC , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.
Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.
Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.
Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
78/120
POINTER 2
PENDAHULUAN
Pointer adalah vriabel yang berisi alamat memori sebagai nilainya dan berbeda
dengan variable biasa yang berisi nilai tertentu. Dengan kata lain, pointer berisi alamat
dari variable yang mempunyai nilai tertentu.
ISI
A. Operator Pointer
Ada beberapa operator yang bisa digunakan dalam pointer, yaitu :3. Operator alamat (yang dilambangkan dengan symbol &)
4. Operator unary yang mengembalikan alamat dari unary yang mengembalikan alamat
dari operandnya.
Contoh Program 1:
#i ncl udemai n( ){
i nt *pt r , num;pt r = #*pt r = 100;cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
79/120
Perhatikan contoh berikut.
int *p1 // assume; p1==2000
p1++;
p1--;
Pointer Aritmatika
Contoh program 2 pointer Aritmatika.#i ncl udemai n( ){ i nt i [ 10] , * i _pt r ;
doubl e f [ 10] , * f _pt r ;i nt x;i _pt r = i ; / / i _pt r poi nt s t o f i r st el ement of if _pt r = f ; / / f _pt r poi nt s t o f i r st el ement of ff or ( x=0; x
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
80/120
C. Pointer Dan Array
Array dan pointer adalah dua struktur data yang saling berkaitan satu sama lain
didalam C, dan dapat saling dipertukarkan penggunaannya. Hal ini karena suatu array
dapat didefinisikan sebagai pointer ke elemen pertama dari array tersebut.
Pointer dapat di-array seperti tipe data yang lain dalam C++. Sebagai contoh,
untuk menyatakan sebuah array pi dari pointer sebanyak 10 buah data yang bertipe 10
integer, dapat dituliskan sebagai berikut :
int *pi[10];
Untuk menentukan alamat dari variable integer disebut var ke elemen ketiga dari pointer
array, dapat dituliskan sebagai berikut :
int var;
Pi[2] = &var
Contoh program 4 array pointer
#i ncl udemai n( ){
i nt number s[ 5] ;i nt *p;
p = number s; *p = 10;p++; *p = 20;p = &numbers[ 2] ; *p = 30;p = number s + 3; *p = 40;p = numbers; *( p+4) = 50;f or ( i nt n=0; n
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
81/120
Pointer dalam Pointer
Contoh :
char a;
char *b;
char **c;
a = ‘ z’ ;
b = &a;
c = &b;
dan misalnya berisi data-data yang acak pada memori 7230, 8092, dan 10502, maka
diagramnya adalah sebagai berikut :
Dari diagram diatas dapat disimpulkan :
• c adalah sebuah variable dengan tipe (char **) yang berisi 8092.
• *c adalah sebuah variable dengan tipe (char *) yang berisi 7230.
• **c adalah sebuah variable dengan tipe (char) yang berisi ‘z’.
Contoh program 5 pointer dalam pointer
#i ncl udemai n( ){
i nt x, *p, * *q;x = 10;p = &x;q = &p;cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
82/120
Penjelasan Program :
Proses pendeklarasian pointer dalam pointer dapat dilihat pada pernyataan :
int x, *p, **q;
x = 10;
p = &x;
q = &p;
dan hasilnya adalah : 10
E. Masalah yang kadang terjadi pada pointer.
1. Pointer yang tidak di inisialisasikan.
2. Null pointer.
• Sesudah pointer dinyatakan dan sebelum nilainya ditentukan, pointer akan
berisi sebuah nilai yang berubah-ubah. Jika pointer berisi Null atau nilai
(0), diasumsikan untuk tidak menunjuk apapun.
• Beberapa tipe pointer dapat dimulai ke Null ketika dinyatakan sehingga
menghindari salah penggunaan atau pointer yang tidak di inisialisasikan.
3. Kesalahan dalam pointer perbandingan.
Membuat perbandingan pointer antara dua obyek yang berbeda, mungkin
menghasilkan hasil yang tidak diharapkan.
4. Pengembalian nilai pointer.
Kadang setelah mendeklarasikan nilai pointer, kita lupa mengembalikan ke nilai
semula.
PENUTUP
Pointer adalah tipe data dalam pemrograman yang dapat dikenai operator
aritmatika tertentu dan operator perbandingan. Pointer dapat dipadukan dengan tipe data
terstruktur array.
SOAL-SOAL
1. Apa output dari contoh program 1 sampai dengan 4 di atas.
2. Apa output dari program berikut :
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
83/120
#i ncl udemai n( ){
i nt m, n, *x, **y;m = 10;x = &m;
y = &x;n = **y + 5;x = &n;cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
84/120
Algoritma dan Pemrograman 2
Pertemuan Ke-11
Pointer 2
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
85/120
Algoritma dan Pemrograman 2
Judul Materi : Pointer 2
Deskripsi Materi : Materi ini membahas tipe data pointer, operator-operator yang dapat dipakai dana penggunaannya bersama tipe data terstrutur yang
lain
Tujuan Instruksional Khusus :
7. Mendefinisikan dan menggunakan tipe data pointer
8. Mendeskripsikan tipe data pointer9. Memahami kegunaan pointer
Referensi :
• Buku Teks
Munir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal danC , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.
Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.
Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.
Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
86/120
POINTER 2
PENDAHULUAN
Pointer adalah vriabel yang berisi alamat memori sebagai nilainya dan berbeda
dengan variable biasa yang berisi nilai tertentu. Dengan kata lain, pointer berisi alamat
dari variable yang mempunyai nilai tertentu.
ISI
A. Operator Pointer
Ada beberapa operator yang bisa digunakan dalam pointer, yaitu :5. Operator alamat (yang dilambangkan dengan symbol &)
6. Operator unary yang mengembalikan alamat dari unary yang mengembalikan alamat
dari operandnya.
Contoh Program 1:
#i ncl udemai n( ){
i nt *pt r , num;pt r = #*pt r = 100;cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
87/120
Perhatikan contoh berikut.
int *p1 // assume; p1==2000
p1++;
p1--;
Pointer Aritmatika
Contoh program 2 pointer Aritmatika.#i ncl udemai n( ){ i nt i [ 10] , * i _pt r ;
doubl e f [ 10] , * f _pt r ;i nt x;i _pt r = i ; / / i _pt r poi nt s t o f i r st el ement of if _pt r = f ; / / f _pt r poi nt s t o f i r st el ement of ff or ( x=0; x
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
88/120
C. Pointer Dan Array
Array dan pointer adalah dua struktur data yang saling berkaitan satu sama lain
didalam C, dan dapat saling dipertukarkan penggunaannya. Hal ini karena suatu array
dapat didefinisikan sebagai pointer ke elemen pertama dari array tersebut.
Pointer dapat di-array seperti tipe data yang lain dalam C++. Sebagai contoh,
untuk menyatakan sebuah array pi dari pointer sebanyak 10 buah data yang bertipe 10
integer, dapat dituliskan sebagai berikut :
int *pi[10];
Untuk menentukan alamat dari variable integer disebut var ke elemen ketiga dari pointer
array, dapat dituliskan sebagai berikut :
int var;
Pi[2] = &var
Contoh program 4 array pointer
#i ncl udemai n( ){
i nt number s[ 5] ;i nt *p;
p = number s; *p = 10;p++; *p = 20;p = &numbers[ 2] ; *p = 30;p = number s + 3; *p = 40;p = numbers; *( p+4) = 50;f or ( i nt n=0; n
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
89/120
Pointer dalam Pointer
Contoh :
char a;
char *b;
char **c;
a = ‘ z’ ;
b = &a;
c = &b;
dan misalnya berisi data-data yang acak pada memori 7230, 8092, dan 10502, maka
diagramnya adalah sebagai berikut :
Dari diagram diatas dapat disimpulkan :
• c adalah sebuah variable dengan tipe (char **) yang berisi 8092.
• *c adalah sebuah variable dengan tipe (char *) yang berisi 7230.
• **c adalah sebuah variable dengan tipe (char) yang berisi ‘z’.
Contoh program 5 pointer dalam pointer
#i ncl udemai n( ){
i nt x, *p, * *q;x = 10;p = &x;q = &p;cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
90/120
Penjelasan Program :
Proses pendeklarasian pointer dalam pointer dapat dilihat pada pernyataan :
int x, *p, **q;
x = 10;
p = &x;
q = &p;
dan hasilnya adalah : 10
E. Masalah yang kadang terjadi pada pointer.
5. Pointer yang tidak di inisialisasikan.
6. Null pointer.
• Sesudah pointer dinyatakan dan sebelum nilainya ditentukan, pointer akan
berisi sebuah nilai yang berubah-ubah. Jika pointer berisi Null atau nilai
(0), diasumsikan untuk tidak menunjuk apapun.
• Beberapa tipe pointer dapat dimulai ke Null ketika dinyatakan sehingga
menghindari salah penggunaan atau pointer yang tidak di inisialisasikan.
7. Kesalahan dalam pointer perbandingan.
Membuat perbandingan pointer antara dua obyek yang berbeda, mungkin
menghasilkan hasil yang tidak diharapkan.
8. Pengembalian nilai pointer.
Kadang setelah mendeklarasikan nilai pointer, kita lupa mengembalikan ke nilai
semula.
PENUTUP
Pointer adalah tipe data dalam pemrograman yang dapat dikenai operator
aritmatika tertentu dan operator perbandingan. Pointer dapat dipadukan dengan tipe data
terstruktur array.
SOAL-SOAL
3. Apa output dari contoh program 1 sampai dengan 4 di atas.
4. Apa output dari program berikut :
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
91/120
#i ncl udemai n( ){
i nt m, n, *x, **y;m = 10;x = &m;
y = &x;n = **y + 5;x = &n;cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
92/120
Algoritma dan Pemrograman 2
Pertemuan Ke-12
Arsip (File) 1
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
93/120
Algoritma dan Pemrograman 2
Judul Materi : Arsip (File) 1
Deskripsi Materi : Materi ini membahas tipe data file, pendeklarasiandan perintah-perintah baku untuk mengolah data pada file
Tujuan Instruksional Khusus :
1. Mendefinisikan dan menggunakan tipe data file
2. Mendeskripsikan tipe data file
3. Menggunakan tipe data file4. Menjelaskan fungsi-fungsi pada tipe data file
5. Mengimplementasikan fungsi-fungsi file untuk memanipulasi file
Referensi :
• Buku TeksMunir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal dan
C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,
Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.
Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.
Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.
Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
94/120
Arsip (File) 1
PENDAHULUAN
Media Penyimpan :
• Memori Utama (RAM) tidak menyimpan informasi secara permanen
• Memori Sekunder media penyimpanan permanen.
Contoh : disk (floppy disk, hard disk, compact disk, flash disk dll.). Data yang
disimpan di dalam penyimpanan sekunder dikelompokkan dalam bentuk arsip/file
ISI
Data yang disimpan di dalam penyimpanan sekunder dikelompokkan dalam
bentuk arsip/file. File menyimpan data berkategori sama. Nama arsip/file harus unik.
Struktur File :
• Suatu file merupakan organisasi dari sejumlah record dapat terdiri dari satu atau
beberapa field dan setiap field terdiri dari satu atau beberapa byte.
• Adapun byte merupakan susunan dari 8 bit.
File
Record … Record
Field Field Field
Byte … Byte
Struktur data dari file
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
95/120
Gambaran record dan field
Masing-masing
adalah sebuah fieldnama alamat
ALI JL. BEO 307
SITI JL. WARU I/69
MIRA JL. WARAS 99
Sebuah record
Pengorganisasian data di dalam file :
• Sebuah informasi disebut datum atau record, sedangkan jamaknya disebut data.
Semua record di dalam file diorganisasikan penyimpanannya, dan pengaksesan record
di dalam file bergantung pada metode perorganisasiannya tsb.
• Ada dua cara : beruntun (sequential) dan acak (random).
Arsip Beruntun
Pengertian Arsip beruntun : Sekumpulan record-record terpadu, yang disimpan dalam
media penyimanan sekunder, yang dapat diakses secara berurutan record per record
searah mulai dari record pertama.
File dapat dipandang dengan dua cara : 1. Secara Tabel
Field1 Field2 Field3 … Fieldn
Record1
Record2
Record3
…
Recordn
Mark
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
96/120
2. Secara Blanko
Recordn
Mark
Record2
Record1
Record terakhir adalah record fiktif yang menandai akhir dari file.
Deklarasi File
(notasi algoritma)
Type NamaRecord : TipeRecord
NamaArsip : SeqFile of TipeRecord
VarRecord : NamaRecord
Contoh :
Type DataMhs : Record
ArsipMhs : SeqFile of DataMhs
Mhs : DataMhs
Type ArsipBil :SeqFile of Integer
Bil : ArsipBil
i : integer
Type ArsipKar : SeqFile of Char
Kar : ArsipKar
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
97/120
c : Char
(Bahasa C++)
t ypedef Ti peRecord NamaRecord;
FI LE *NamaAr si p;
NamaRecor d Var Recor d;
Contoh :
Typedef st r uct {l ong NI M;
char Nama[ 25] ;
f l oat I PK;
} Dat aMhs;
FI LE *Ar si pMhs;
Dat aMhs Mhs;
FI LE *Bi l ;
i nt i ;
FI LE *Kar ;char c;
Perintah Baku
(notasi algoritma)
Open(NamaArsip,kode)
Contoh :
Open(ArsipMhs,1)
Open(Bil,2)
Open(Kar,1)
FRead(NamaArsip,VarRecord)
Contoh :
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
98/120
FRead(ArsipMhs,Mhs)
FRead(Bil,i)
FRead(Kar,c)
FWrite(NamaArsip,VarRecord)
Contoh :
FWrite(ArsipMhs,
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
99/120
f r ead( &i , si zeof ( i ) , 1, Bi l ) ;
f r ead( &c, si zeof ( c) , 1, Kar ) ;
f wr i t e( Var Recor d, si zeof ( Var Recor d) , j um_r ecor d, NamaAr si p) ;
Contoh :
f wr i t e( &Mhs, si zeof ( Mhs) , 1, Ar si pMhs) ;
f wr i t e( &i , si zeof ( i ) , 1, Bi l ) ;
f wr i t e( &c, s i zeof ( c) , 1, Kar ) ;
f wr i t e( &Kar , ’ R’ )
f cl ose( NamaAr si p) ;
Contoh :
f cl ose( Ar si pMhs) ;
Contoh Program 1:
/ / menyi mpan data bi l angan i nteger
#i ncl ude #i ncl ude #i ncl ude
FI LE *Bi l ;t ypedef enum {t r ue=1, f al se=0} bool ean;bool ean Mar k(i nt i ) ;
mai n( ){
i nt i ;
Bi l = f open( "Bi l . dat ", "w") ;cout > i ;whi l e ( Mar k( i ) ! = t r ue){
f wr i t e( &i , si zeof ( i ) , 1, Bi l ) ;cout > i ;
}i = 999;f wr i t e( &i , si zeof ( i ) , 1, Bi l ) ;
f cl ose( Bi l ) ;
}
bool ean Mar k(i nt i ){
r et ur n ( i == 999) ;}
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
100/120
Contoh Program 2 :
/ / membaca data bi l angan i nt eger yang ada di/ / f i l e dar i cont oh pr ogr am 1#i ncl ude #i ncl ude #i ncl ude
FI LE *Bi l ;t ypedef enum {t r ue=1, f al se=0} bool ean;bool ean Mar k(i nt i ) ;
mai n( ){
i nt i , j um; j um=0;Bi l = f open( "Bi l . dat " , "r ") ;f r ead( &i , si zeof ( i ) , 1, Bi l ) ;
i f ( Mark( i ) )cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
101/120
t ypedef st r uct { l ong NI M;char Nama[ 25] ;char KodeMK[ 5] ;i nt SKS;char I ndeks;
} Dat aMhs;
FI LE *Ar si pMhs;t ypedef enum {t r ue=1, f al se=0} bool ean;voi d RekamDat aMahasi swa( ) ;voi d Cet akDaf t ar Ni l ai ( l ong KodeNI M) ;bool ean Mark( Dat aMhs Mhs) ;
mai n( ){
l ong KodeNI M;
RekamDat aMahasi swa( ) ;cl r scr ( ) ;
cout > KodeNI M;cl r scr ( ) ;Cet akDaf t ar Ni l ai ( KodeNI M) ;r et ur n 0;
}
voi d RekamDat aMahasi swa( ){
Dat aMhs Mhs;
Ar si pMhs = f open( "Mhs. dat " , "w") ;cout > Mhs. NI M;
whi l e ( Mar k( Mhs) ! = t r ue){cout > Mhs. Nama;cout > Mhs. KodeMK;cout > Mhs. SKS;cout > Mhs. I ndeks;f wr i t e( &Mhs, si zeof ( Mhs) , 1, Ar si pMhs) ;cout > Mhs. NI M;
}Mhs. NI M = 9999;st r cpy( Mhs. Nama, "xxxxx") ;st r cpy( Mhs. KodeMK, "xxxxx") ;Mhs. SKS = 9;Mhs. I ndeks = ' x' ;f wr i t e( &Mhs, si zeof ( Mhs) , 1, Ar si pMhs) ;f cl ose( Ar si pMhs) ;
}
voi d Cet akDaf t ar Ni l ai ( l ong KodeNI M){
i nt no;
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
102/120
Dat aMhs Mhs;bool ean ket emu;bool ean st op;Ar si pMhs = f open( "Mhs. dat " , " r ") ;st op = f al se;f r ead( &Mhs, si zeof ( Mhs) , 1, Ar si pMhs) ;
i f ( Mar k( Mhs) )cout
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
103/120
PENUTUP
File dengan memanfaatkan media penyimpan permanen, berfungsi untuk
menyimpan data secara permanen juga. Data yang disimpan dapat bertipe apa saja.
SOAL-SOAL
Modifikasi contoh program 3 di atas agar program tersebut tidak hanya mencetak daftar
nilai seorang mahasiswa tetapi mencetak semua data mahasiswa, dan juga mencetak
daftar mhs berdasarkan nilai yang diperoleh.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
104/120
Algoritma dan Pemrograman 2
Pertemuan Ke-12
Arsip ( File) 2
Disusun Oleh :
M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
105/120
Algoritma dan Pemrograman 2
Judul Materi : Arsip (File) 2
Deskripsi Materi : Materi ini membahas tipe data file, operasi-operasifile mengolah data dengan bahasa C++
Tujuan Instruksional Khusus :
6. Mendefinisikan dan menggunakan tipe data file
7. Mendeskripsikan tipe data file
8. Menggunakan tipe data file9. Menjelaskan fungsi-fungsi pada tipe data file
10. Mengimplementasikan fungsi-fungsi file untuk memanipulasi file
Referensi :
• Buku TeksMunir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal dan
C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,
Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.
Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.
Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.
Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
106/120
Arsip (File) 2
Operasi File
1. Membuka / Mengaktifkan File
FI LE f open( char *namaf i l e, char *mode) ;
Keterangan mode :
r : Read only
w : Menyatakan file baru diciptakan. Operasi yang akan dilakukan adalah operasii
perekaman
data. Jika file tersebut sudah ada, isi yang lama akan dihapus.a : Membuka file yang ada pada disk dan operasi yang akan dilakukan adalah
operasii penambahan data pada file. Jika file belum ada, secara otomatis file
akan dibuat .
r+ : Membuka file yang sudah ada, operasi yang dilakukan berupa pembacaan dan
penulisan.
w+ : Membuka file untuk pembacaan/penulisan. Jika file sudah ada, isinya akan
dihapus.
a+ : Membuka file, operasi yang dilakukan berupa perekaman dan pembacaan. Jika
file sudah ada, isinya tak akan terhapus.
File biner adalah file yang pola penyimpanan di dalam disk adalah dalam bentuk
biner, yaitu seperti bentuk dalam memori (RAM) komputer. Sedangkan file teksmerupakan file yang pola penyimpanan datanya dalam bentuk karakter.
Keterangan mode :
rt : mode file adalah teks dan file hendak dibaca.
rt+ : mode file adalah teks dan file bisa dibaca atau ditulisi ( = r+t ).
rb : mode file adalah biner dan file hendak dibaca.
2. Menutup File
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
107/120
I nt f cl ose( FI LE *pf ) ;
3. Menyimpan File per Character
I nt f put c( i nt kar , FI LE *pt r_ f i l e ) ;
4. Membaca File per Character
I nt f get c( FI LE *pt r_ f i l e ) ;
5. Membaca File per Integer
I nt get w( FI LE *pt r _f i l e) ;
6. Menyimpan File per Integer
I nt put w( FI LE *pt r _f i l e) ;
7. Membaca File per Blok
Untuk menyimpan atau membaca data file dalam bentuk kesatuan blok (sejumlah
byte), misalnya untuk tipe float atau struct (struktur)
i nt f read( voi d *buf f er , i nt n, FI LE *pt r_ f i l e) ;
8. Menyimpan File per Blok
i nt f wr i t e( voi d *buf f er , i nt j um_byt e, i nt n, FI LE*pt r _ f i l e) ;
9. Membaca Data String dari File
Fungsi yang digunakan untuk membaca data string pada file yaitu fgets( ) untuk
menyimpan string str ke dalam file. Dan fputs( ) untuk membaca string dari file
sampai ditemukannaya karakter baris-baru ‘\n’ atau setelah (n-1) karakter, dangan n
adalah panjang maksimal string yang dibaca per wktu-baca.
char * f get s(char *st r , i nt n, FI LE *pt r_ f i l e) ;
10. Menyimpan Data String dari File
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
108/120
i nt f put s(char *str , FI LE *pt r_ f i l e) ;
11. Mengganti Nama File
Fungsi yang berguna untuk menghapus file, yaitu rename(). Bentuk deklarasinya :
i nt r ename( char *namaf i l el ama, char *namaf i l ebaru) ;
PENUTUP
Bemacam-macam perintah untuk memanipulasi file yang terdapat pada bahasa
C++. Perintah-perintah yang dipakai tersebut harus sesuai dengan tipe data yang
disimpan pada file.
SOAL-SOAL
Buatlah contoh program untuk masing-masing operasi file.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
109/120
Algoritma dan Pemrograman 2
Pertemuan Ke-13 & 14
Arsip ( File) 3
Disusun Oleh :M u k i d i n, S.Kom.
Jurusan Teknik Informatika
STIKOM POLTEK CIREBON
2009
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
110/120
Algoritma dan Pemrograman 2
Judul Materi : Arsip (File) 3
Deskripsi Materi : Materi ini membahas tipe data file, dan proses- proses konsolidasi, penggabungan (merging) dua file, updating data file dan spliting.
Tujuan Instruksional Khusus :11. Mendefinisikan dan menggunakan tipe data file
12. Mendeskripsikan tipe data file
13. Menggunakan tipe data file14. Menjelaskan fungsi-fungsi pada tipe data file
15. Mengimplementasikan fungsi-fungsi file untuk memanipulasi file
Referensi :
• Buku TeksMunir, Rinaldi (2005), Algoritma dan Pemrograman dalam Bahasa Pascal dan
C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,
Yogyakarta
• Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.
Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.
Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.
Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
111/120
Arsip (File) 3
PENDAHULUAN
Beberapa proses di bawah ini merupakan proses yang terjadi pada file, seperti
konsolidasi, penggabungan (merging) dua file, updating data file dan spliting.
ISI
A. Algoritma Konsolidasi
Algoritma Konsolidasi adalah pengelompokan data dengan kunci yang sama yang harus
diproses sebagai satu kesatuan.
Contoh :
Diketahui sebuah Arsip Nilai Mahasiswa, satu mahasiswa dapat mempunyai beberapa
buah nilai (karena dalam satu semester mengambil beberapa matakuliah, dan tiap
mahasiswa bisa berbeda matakuliah).
Buatlah Algoritma untuk menghitung nilai rata-rata tiap mahasiswa, dan membuat daftar
nilai yang lebih sederhana, yaitu menuliskan NIM dan nilai rata-rata tiap mahasiswa.
NIM Nilai NIM Nilai Rata-rata70001 50 70001 65
70001 80 70002 69
70001 60 70003 80
70001 70 70004 53
70002 55
70002 75
70002 65
70002 86
70002 64
70003 77
70003 8370004 45
70004 54
70004 60
277
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
112/120
Algoritma Konsolidasi
{Kondisi awal : ArsipMhs sudah berisi NIM dan nilai}{Kondisi akhir : record sudah dikelompokkan berdasarkan NIM yang sama, dengan
nilainya adalah nilai rata-rata}
Deklarasi
Type DataMhs : Record< NIM : integer
Nilai : real >
ArsipMhs1, ArsipMhs2 : seqFile of DataMhsMhs : DataMhs
CurrentNim, JumNil, nMK : integer
Rata : realFunction Mrk(Input Mhs : DataMhs) Boolean
{tanda akhir = }
DeskripsiOpen(ArsipMhs1,1)
Open(ArsipMhs2,2)Fread(ArsipMhs1, Mhs)
If (Mark(Mhs) = true) thenOutput(‘Arsip kosong…’)
Else
While (Mark(Mhs) = false) doJumNil 0
nMK 1
currentNIM Mhs.NIM {record1 dari ArsipMhs1}Repeat
JumNil JumNil + Mhs.NilaiFread(ArsipMhs1,Mhs)
nMK nMK + 1
Until (currentNIM Mhs.NIM)Rata JumNil/nMK
Fwrite(ArsipMhs2, )
Outout(currentNIM,Rata)
EndwhileEndIf
Close(ArsipMhs1)
Close(ArsipMhs2)
B. Penrosesan Dua Arsip Beruntun
1. Merging
Merging adalah penggabungan dua buah file yang tipe recordnya sama. Untuk melakukan
merging ada dua cara. Cara yang paling sederhana adalah data file kedua ditambahkan
setelah record terakhir file pertama, sehingga membentuk file baru. Cara ini tidak dapat
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
113/120
dipakai jika field kunci kedua file sudah terurut dan dikehendaki file gabungan yang field
kuncinya juga terurut.
Contoh :
NIM Nama NIM Nama NIM Nama
70001 Adi 70002 Yudi 70001 Adi70003 Budi 70009 Eka 70002 Yudi
70004 Susi 70010 Bima 70003 Budi
70006 Anti 70004 Susi
70008 Doni 70006 Anti
70008 Doni
70009 Eka
70010 Bima
File ArsipMhs1 File ArsipMhs2 File ArsipMhs3
Algoritma MergingSambung
{Menggabungkan dua buah arsip beruntun yaitu ArsipMhs1 danArsipMhs2, menjadi sebuah arsip baru yaitu ArsipMhs3,
dengan cara semua record arsip kedua disambungkan setelah
record terakhir arsip pertama}{Kondisi awal : arsip pertama dan kedua sudah berisi data}
{Kondisi akhir : arsip'ketiga berisi hasil sambungan kedua arsip}
DeklarasiType DataMhs : Record
ArsipMhsl, ArsipMhs2, ArsipMhs3 : SeqFile of DataMhsMhs : DataMhs
Function Mark(Input Mhs : DataMhs) Boolean
DeskripsiOpen(ArsipMhs1, 1)
Open(ArsipMhs2, 1)
Open(ArsipMhs3, 2)FRead(ArsipMhs1, Mhs)
While (Mark(Mhs) = false) Do
FWrite(ArsipMhs3, Mhs)
FRead(ArsipMhs1, Mhs)EndWhile
FRead(ArsipMhs2, Mhs)
While (Mark(Mhs) = false) DoFWrite(ArsipMhs3, Mhs)
FRead(ArsipMhs2, Mhs)
EndWhileFWrite(ArsipMhs3, )
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
114/120
Close(ArsipMhsl)
Close(ArsipMhs2)Close(ArsipMhs3)
Algoritma Merging2 {versi And}
{Menggabungkan dua buah arsip beruntun yaitu
ArsipMhs1 dan ArsipMhs2 yang sudah terurut,
menjadi sebuah arsip baru yaitu ArsipMhs3 yang juga terurut}{Kondisi awal : arsip pertama dan kedua sudah berisi data}
{Kondisi akhir : arsip ketiga berisi hasil merging kedua arsip}Deklarasi
Type DataMhs : Record
ArsipMhsl, ArsipMhs2, ArsipMhs3 : SeqFile of DataMhs
Mhs1, Mhs2 : DataMhs
Function Mark(Input Mhs : DataMhs) BooleanDeskripsi
Open(ArsipMhs1, 1)
Open(ArsipMhs2, 1)Open( ArsipMhs3 , 2)
FRead(ArsipMhsl, Mhs1)
FRead(ArsipMhs2, Mhs2)While (Mark(Mhsl) = false) And (Mark(Mhs2) =false) Do
If (Mhsl.NIM
-
8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke
115/120
F