Modul Praktikum
Algoritma Struktur Data
KATA PENGANTAR
PENGESAHAN
Daftar Isi
KATA PENGANTAR..............................................................................................1
PENGESAHAN.......................................................................................................2
Minggu 1. Logika Proposision 1 (Proposition Logic)..........................................6
1.1. Tujuan Intruksi Khusus..........................................................................6
1.2. Dasar Teori...............................................................................................6
1.3 Latihan....................................................................................................14
1.4. Tugas..........................................................................................................15
Minggu 2. Logika Proposision 2 (Proposition Logic)........................................16
2.1. Tujuan Intruksi Khusus...........................................................................16
2.2. Dasar Teori................................................................................................16
2.3. Latihan.......................................................................................................18
2.4. Tugas.......................................................................................................18
Minggu 3. Dasar Pemrograman dengan Bahasa C++......................................19
3.1. Tujuan Intruksi Khusus........................................................................19
3.2. Dasar Teori.............................................................................................19
3.3. Latihan....................................................................................................23
3.4. Tugas.......................................................................................................25
Minggu 4. Tipedata, Variabel dan Kostanta dalam Bahasa C++....................27
4.1. Tujuan Intruksi Khusus........................................................................27
4.2. Dasar Teori.............................................................................................27
4.3. Latihan....................................................................................................29
4.4. Tugas.......................................................................................................30
Minggu 5. Operator dan Struktur Percabangan dalam Bahasa C++.............31
5.1. Tujuan Instruksi Khusus......................................................................31
5.2. Dasar Teori.............................................................................................31
5.3. Latihan....................................................................................................35
5.4. Tugas.......................................................................................................40
Minggu 6. Struktur Perulangan dalam Bahasa C++........................................43
6.1. Tujuan Instruksi Khusus......................................................................43
6.2. Dasar Teori.............................................................................................43
6.3. Latihan....................................................................................................44
6.4. Tugas.......................................................................................................49
Minggu 7. Review materi (minggu 1 – 6) dan Responsi 1................................52
7.1. Tujuan Instruksi Khusus..........................................................................52
7.2. Dasar Teori.................................................................................................52
7.3. Latihan........................................................................................................52
7.4. Tugas...........................................................................................................52
Minggu 8. Fungsi dalam Bahasa C++.................................................................53
8.1. Tujuan Instruksi Khusus..........................................................................53
8.2. Dasar Teori.................................................................................................53
8.3. Latihan........................................................................................................54
8.4. Tugas...........................................................................................................58
Minggu 9. Array (Larik)......................................................................................59
9.1. Tujuan Instruksi Khusus..........................................................................59
9.2. Dasar Teori.................................................................................................59
9.3. Latihan........................................................................................................60
9.4. Tugas...........................................................................................................69
Minggu 10. Sorting (Pengurutan Data)..............................................................71
10.1. Tujuan Instruksi Khusus.........................................................................71
10.2. Dasar Teori...............................................................................................71
10.3. Latihan......................................................................................................72
10.4. Tugas.........................................................................................................77
Minggu 11. Searching (Pencarian Data)............................................................78
11.1. Tujuan Instruksi Khusus.........................................................................78
11.2. Dasar Teori...............................................................................................78
11.3. Latihan......................................................................................................78
11.4. Tugas.........................................................................................................81
Minggu 12. Struct (Struktur)..............................................................................82
12.1. Tujuan Instruksi Khusus.........................................................................82
12.2. Dasar Teori...............................................................................................82
12.3. Latihan......................................................................................................82
12.4. Tugas.........................................................................................................88
Minggu 13. Stack (Tumpukan Data) dan Queue (Antrian Data)....................90
13.1. Tujuan Instruksi Khusus.........................................................................90
13.2. Dasar Teori...............................................................................................90
13.3. Latihan......................................................................................................90
13.4. Tugas.........................................................................................................93
Minggu 14. Pointer dan Responsi 2....................................................................94
14.1. Tujuan Instruksi Khusus.........................................................................94
14.2. Dasar Teori...............................................................................................94
14.3. Latihan......................................................................................................94
14.4. Tugas.........................................................................................................97
14.5. Contoh Program Lainnya......................................................................97
DAFTAR PUSTAKA.........................................................................................111
1. Konjungsi ( )
Konjungsi adalah pernyataan majemuk dengan kata hubung “dan”.
Sehingga, notasi “p ^ q” dibaca “p dan q”. Tabel kebenaran untuk
konjungsi adalah sebagai berikut:
Tabel 1.2. Tabel Kebenaran Konjungsi
p q pq
T T T
T F F
F T F
F F F
p = pernyataan 1
q = pernyataan 2
p q = pernyataan 1 dan pernyataan 2
Dari tabel di atas, kita dapat melihat bahwa konjungsi hanya akan
benar jika kedua pernyataan (p dan q) benar.
Contoh:
p: 3 adalah bilangan prima (pernyataan bernilai benar)
q: 3 adalah bilangan ganjil (pernyataan bernilai benar)
p q: 3 adalah bilangan prima dan ganjil (pernyataan bernilai benar)
2. Disjungsi ( )
Disjungsi adalah pernyataan majemuk dengan kata hubung “atau”.
Sehingga notasi “p q” dibaca “p atau q”. Tabel nilai kebenaran
disjungsi:
Tabel 1.3. Tabel Kebenaran Disjungsi
p q pq
T T T
T F T
F T T
F F F
p = pernyataan 1
q = pernyataan 2
p q = pernyataan 1 atau pernyataan 2
Dari tabel di atas, kita dapat melihat bahwa disjungsi hanya akan
benar jika salah satu dari kedua pernyataan (p atau q) benar, atau
disjungsi hanya salah jika kedua pernyataan (p dan q) salah.
Contoh:
p: Paus adalah mamalia (pernyataan bernilai benar)
q: Paus adalah herbivora (pernyataan bernilai salah)
p q: Paus adalah mamalia atau herbivora (pernyataan bernilai benar)
3. Disjungsi Exclusive (XOR)
Apabila p dan q merupakan proposisi, maka p q juga merupakan
proposisi yang dinamakan sebagai disjungsi eksklusif/ exclusive or (xor
) dari p dan q. p q dibaca p xor q, p q bernilai benar (T) tepat
ketika p dan q memiliki nilai kebenaran yang berbeda. Berikut adalah
tabel kebenaran XOR.
Tabel 1.4. Tabel Kebenaran XOR
P q pq
T T F
T F T
F T T
F F F
4. Implikasi (→)
Implikasi adalah pernyataan majemuk dengan kata hubung “jika…
maka…” Sehingga notasi dari “p → q” dibaca “Jika p, maka q”.
Adapun tabel nilai kebenaran dari implikasi seperti berikut :
Tabel 1.5. Tabel Kebenaran Implikasi
p q p→q
T T T
T F F
F T T
F F T
p = pernyataan 1
q = pernyataan 2
p → q = jika pernyataan 1 maka pernyataan 2
Dari tabel terlihat bahwa implikasi hanya bernilai salah jika
anteseden (p) benar, dan konsekuen (q) salah.
Contoh:
p: Andi belajar dengan aplikasi ruangguru. (pernyataan bernilai benar)
q: Andi dapat belajar di mana saja. (pernyataan bernilai benar)
p → q: Jika Andi belajar dengan aplikasi ruangguru, maka Andi dapat
belajar di mana saja (pernyataan bernilai benar).
5. Biimplikasi (↔)
Biimplikasi adalah pernyataan majemuk dengan kata hubung “… jika
dan hanya jika”. Sehingga, notasi dari “p ↔ q” akan dibaca “p jika
dan hanya jika q”. Tabel nilai kebenaran biimplikasi sebagai berikut:
Tabel 1.5. Tabel Kebenaran Biimplikasi
p q p↔q
T T T
T F F
F T F
F F T
p = pernyataan 1
q = pernyataan 2
p ↔ q = pernyataan 1 jika dan hanya jika pernyataan 2
Dari tabel kebenaran tersebut, dapat kita amati bahwa biimplikasi
akan bernilai benar jika sebab dan akibatnya (pernyataan p dan
q) bernilai sama. Baik itu sama-sama benar, atau sama-sama salah.
Contoh:
p: 30 x 2 = 60 (pernyataan bernilai benar)
q: 60 adalah bilangan ganjil (pernyataan bernilai salah)
p ↔ q: 30 x 2 = 60 jika dan hanya jika 60 adalah bilangan ganjil
(pernyataan bernilai salah).
6. Kontrapositif, Konvers, dan Invers
Diberikan suatu implikasi p → q, maka :
a) kontrapositif (atau kontraposisi) dari p → q adalah q → p
b) konvers dari p → q adalah q → p
c) invers dari p → q adalah p → q
q, q1, q2,…
r, r1, r2,…
c) Operator logika proposisi : , , , , →, ↔
Berdasarkan defnisi formula logika proposisi, kita dapat mengetahui
bahwa
1. p ^ q = adalah formula logika proposisi
2. pq = bukan formula logika proposisi
3. ( p → r) = adalah formula logika proposisi, formula ini
dapat ditulis ( ( p → ( r)))
4. p ^ q → r s = bukan formula logika proposisi
5. p q → r s = bukan formula logika proposisi
6. p p q → r s = adalah formula logika proposisi, formula ini
dapat ditulis (p (p q)) → (r s)
7. ( ( ( p → q) → r) → s) = adalah formula logika proposisi
8. ((p → q) (r s)) = bukan formula logika proposisi
Pohon urai
Pohon urai (parse tree) dapat digunakan untuk menggambarkan
struktur suatu formula logika proposisi. Sebagai contoh, pohon urai untuk
formula ( p q) → (p (q r)) adalah sebagai berikut:
1.3 Latihan
1. Tuliskan (dalam bahasa Indonesia) negasi dari proposisi-proposisi berikut:
a) Saya seorang mahasiswa
b) Bulan ini bukan bulan Agustus
c) Susi tidak pernah dating tidak tepat waktu
d) 2 10 < 10 2
e) 3 4 ≥ 4 3
2. Tentukan negasi dari proposisi-proposisi berikut dalam bahasa Indonesia.
a) Bella lebih kaya daripada Susi
b) Susi lebih tua daripada Bella
c) Bella lebih cerdas daripada Susi
3. Diberikan proposisi sebagai
berikut: p = Matahari terbit dari
timur
r = Kucing adalah reptile
q = 2 x 3 ≤ 32
s=24<42
Tuliskan dalam Bahasa Indonesia dan tentukan nilai kebenaran dari
proposisi majemuk berikut ini:
a) p q
b) r s
c) p q
d) r s
4. Tentukan, apakah proposisi–proposisi berikut ekuivalen:
a) ((not p or q) and (p or not r)) and (p or not q) dengan not (p or r)
b) (r or p) and ((not r or (not r or (p and q)) and (r or q)) dengan p
and q
c) (p or q) and (not p and (not p and q)) dengan not p and q
5. Berikan tanda kurung untuk memperjelas presedens operator-operator
logika pada proposisi-proposisi majemuk berikut!
a) p q r
b) p q
c) p q → r
d) p → q r
e) p q → r s
1.4. Tugas
1. Tentukan semua subformula dari formula (p → q) (q → p)
2. Tentukan semua subformula dari formula ( p q) → (p (q r)
3. Gambarkan pohon urai (parse tree) untuk formula-formula berikut:
a) (p (q → p)) r
b) ( p q) → (p (q r))
c) ((q → p) (p → r q))
2.3. Latihan
Cobalah kerjakan beberapa soal latihan di bawah ini!
1. Periksa apakah formula A yang berupa (p q) ( p q) bersifat
absah, terpenuhi atau kontradiksi.
2. Periksa apakah formula B yang berupa (p q) r bersifat terpenuhi.
Apakah B bersifat absah? Apakah B bersifat kontradiksi? Apakah B
merupakan contingency?
2.4. Tugas
1. Diberikan formula A = (p q r s) → ( p q r s). Untuk
memeriksa apakah A bersifat absah (valid), apakah kita harus
menggunakan tabel kebenaran?
2. Tunjukkan bahwa (p → q) ↔ ( p q) adalah formula yang absah tanpa
memakai tabel kebenaran.
Berikut adalah contoh program untuk deklarasi variabel dan cara mengaksesnya
3.3. Latihan
Latihan 3.1.cpp
Penerapan perintah cin>>variabel
Latihan 3.3.cpp
Penerapan gets (nama_variabel)
2. Latihan 3.5.cpp
3. Latihan 3.6.cpp
4. Latihan 3.7.cpp
a) Buatlah listing program untuk memasukkan data berupa angka
kemudian berikan perintah berupa perkalian, penjumlahan,
pembagian dan pengurangan.
b) Buatlah listing program untuk memasukkan dan menampilkan data
mahasiswa (nama, nim, alamat, jurusan/prodi, kelas, jumlah sks
yang diambil.
c) Buat dan simpan di dalam folder dengan nama nim mahasiswa
masing-masing, kirimkan ke folder yang ditentukan asisten
praktikum.
d) Berikanlah kesimpulan dari beberapa latihan program di atas!
4.3. Latihan
Cobalah beberapa program latihan di bawah ini, dan analisalah hasilnya !
Latihan 4.1.cpp
Latihan 4.2.cpp
Latihan 4.3.cpp
4.4. Tugas
Berdasarkan beberapa latihan program di atas, maka buatlah program untuk
kasus berikut ini:
a) Menentukan luas bangun segitiga dan luas persegipanjang.
b) Aplikasi kalkulator sederhana, terdiri dari penjumlahan, pengurangan,
perkalian dan pembagian.
c) Pada program latihan 4.4.cpp terdapat penerapan typecasting, jelaskan
bagaimana typecasting tersebut dan jelaskan typecasting apa saja dalam
Bahasa C++!
Increment
Increment adalah suatu penambahan nilai yang terjadi pada sebuah
variabel. Adapun operator yang digunakan untuk melakukan increment
adalah operator ++. Operator ini akan menambahkan nilai dari suatu variabel
dengan nilai 1. Terdapat dua jenis increment dalam bahasa C++ yaitu pre-
increment dan post-increment.
Pre-increment adalah melakukan penambahan nilai sebelum suatu variable
itu diproses, sedangkan Post-increment adalah melakukan proses terlebih
dahulu sebelum dilakukan penambahan nilai.
Decrement
Merupakan kebalikan dari proses increment, yaitu menurunkan
(mengurangi) nilai dari suatu variabel, dan ada dua jenis yaitu pre-decrement,
dan post-decrement.
Operator Binary (Aritmatika, Logika, Relasional)
Tabel 5.2. Operator Aritmatika
Operator Jenis Operator Contoh
+ Penjumlahan 4+5 = 9
- Pengurangan 6-2 = 4
* Perkalian 4*2 = 8
/ Pembagian 9/3 = 3
% Sisa bagi 10%3 = 1
Tabel 5.3. Operator Logika
Operator Jenis Operator Contoh
&& And (dan) 1 && 1 = 1
|| Or (atau) 1 || 1 = 1
! Negasi (lawan) !0 = 1
Tabel 5.4. Operator Relasional
Operator Jenis Operator
< Lebih kecil
<= Lebih kecil atau sama
dengan
> Lebih besar
>= Lebih besar atau sama
dengan
= Sama dengan
!= Tidak sama dengan
Operator Ternary
Operator Ternary digunakan dalam operasi yang melibatkan 3 buah
operand, dan operator yang digunakan adalah “ ?: ”
Bentuk umum:
Ekspresi1 ? Ekspresi2 : Ekspresi3 ;
Contoh :
X = (X<0) ? –X : X
Operator Gabungan
Tabel 5.5. Operator Gabungan
Operator Contoh Ekuivalen
+= bonus + = 5000 bonus = bonus +5000
-= bonus - = 5000 bonus = bonus - 5000
*= bonus * = 5000 bonus = bonus * 5000
/= bonus /= 5000 bonus = bonus / 5000
%= bonus % = 5000 bonus = bonus % 5000
Type casting
Pengertian dari type casting adalah suatu cara yang digunakan untuk
menentukan atau merubah (konversi) nilai dari suatu tipe data numerik ke
dalam tipedata numerik lainnya. Terdapat 4 macam type casting dalam
Bahasa C++, diantaranya adalah dynamic_cast, const_cast, statis_cast dan
reinterpret_cast.
Struktur Kontrol Percabangan
1. Struktur if
Memutuskan untuk mengeksekusi statement atau blok statement
jika dan hanya jika ekspresi bernilai true.
3. Struktur switch
Memperbolehkan percabangan pada multiple outcomes. Berikut
adalah diagram alirnya untuk struktur switch.
5.3. Latihan
Cobalah beberapa program latihan di bawah ini, dan analisalah hasilnya !
Latihan 5.1.cpp
Latihan 5.3.cpp
Latihan 5.4.cpp
Latihan 5.5.cpp
Latihan 5.6.cpp
Latihan 5.7.cpp
Latihan 5.8.cpp
5.4. Tugas
Berdasarkan contoh program di atas, buatlah program dengan kasus seperti
berikut :
1. Menentukan gaji karyawan, dengan ketentuan sbb:
a) Gaji Pokok
kode gol=1 --> gaji pokok=Rp. 1.500.000
kode gol=2 --> gaji pokok=Rp. 2.000.000
kode gol=3 --> gaji pokok=Rp. 2.500.000
kode gol=4 --> gaji pokok=Rp. 3.000.000
b) Tunjangan = 10% x gaji pokok
c) Gaji Bersih = gaji pokok + tunjangan
2. Struktur while
Struktur while digunakan untuk melakukan proses perulangan pernyataan
atau blok pernyataan terus-menerus selama kondisi ungkapan logika pada
while masih bernilai logika benar.
Bentuk umum struktur while :
while (kondisi)
{
Statement/pernyataan yang akan diulang ;
}
3. Struktur do while
Struktur do..while digunakan untuk mengulang pernyataan atau blok
pernyataan sampai kondisi yang diseleksi pada while tidak terpenuhi.
Bentuk umum struktur do while :
do
{
Statement yang akan diulang;
}
while(kondisi);
6.3. Latihan
Cobalah beberapa program latihan di bawah ini, dan analisalah hasilnya !
Latihan 6.1.cpp
Latihan 6.2.cpp
Latihan 6.3.cpp
Latihan 6.4.cpp
Latihan 6.5.cpp
Latihan 6.6.cpp
Latihan 6.7.cpp
Latihan 6.8.cpp
6.4. Tugas
Berdasarkan beberapa latihan di atas, buatlah program untuk kasus di bawah
ini!
Latihan 8.2.cpp
Program menggunakan prototype fungsi
Latihan 8.3.cpp
Latihan 8.4.cpp
Latihan 8.5.cpp
Tipe non void
Latihan 8.6.cpp
8.4. Tugas
Berdasarkan beberapa program di atas, buatlah fungsi untuk kasus berikut ini!
1. Menentukan luas segitiga secara void dan nonvoid, ditambah adanya
prototype dalam program.
2. Buatlah program konversi nilai dengan fungsi sehingga tampilannya
seperti berikut:
9.3. Latihan
Cobalah bebrapa program di bawah ini!
Latihan 9.1.cpp
Latihan 9.2.cpp
Latihan 9.3.cpp
Latihan 9.4.cpp
Latihan 9.5.cpp
Latihan 9.6.cpp
Array 2 Dimensi untuk input
Latihan 9.7.cpp
Operasi Matrix
Latihan 9.8.cpp
Diagonal Matrix
Latihan 9.9.cpp
Perkalian Matrix dengan Konstanta
Latihan 9.10.cpp
Perkalian antar Matrix
9.4. Tugas
Berdasarkan beberapa program di atas, buatlah program seperti berikut ini!
1. Menentukan nilai jumlah dan rata-rata dari data di dalam
array. Output seperti di bawah ini:
Latihan 10.4.cpp
Metode Selection Sort Ascending
Latihan 10.5.cpp
Metode Selection Sort Descending
Latihan 10.6.cpp
Metode Insertion Sort
10.4. Tugas
Kerjakan soal di bawah ini!
1. Buat program untuk mengurutkan data dari n nilai serta tampilkan data
yang belum terurut dan yang sudah diurutkan
2. Buat program untuk mengurutkan huruf dengan inputan dinamis.
3. Buatlah program untuk mengurutkan nama teman sekelas anda.
Langkah :
a) Inputkan data secara dinamis, minimal 5 data
b) Buatlah pilihan pengurutan secara ascending dan decending
c) Tampilkan hasil sebelum pengurutan dan sesudah pengurutan
Latihan 11.2.cpp
Metode Sentinel Search
Latihan 11.3.cpp
Metode Sequential Search
11.4. Tugas
Buatlah sebuah program dengan pencarian data nama dalam sebuah kelas.
Langkah tugas :
1. Contoh program sebelumnya
2. Lakukan input array secara dinamis
3. Pencarian dilakukan dengan menggunakan nama siswa
4. Jika pencarian tidak ditemukan maka berilah keterangan
ditemukan tidaknya.
Latihan 12.2.cpp
Struct yang berisi struct lain.
Latihan 12.3.cpp
Menghitung nilai mahasiswa
Latihan 12.4.cpp
Struct of array
Latihan 12.5.cpp
Latihan 12.6.cpp
IPK mahasiswa dengan menggunakan Struct
12.4. Tugas
Kerjakan beberapa kasus di bawah ini!
1. Buat sebuah program struct untuk menghitung gaji harian pegawai, bila
diketahui ketentuannya sebagai berikut :
Gaji per jam = Rp 5000
Bila jumlah jam kerja hari itu > 7 jam, maka kelebihannya
dihitung lembur yang besarnya 15 x gaji per jam.
Langkah pengerjaan :
Latihan 13.2.cpp
Program Queue
13.4. Tugas
Berdasarkan beberapa contoh program stack dan queue tersebut di atas,
silahkan dimodifikasi ke dalam animasi sehingga proses tumpukan dan
antriannya bisa terlihat.
Latihan 14.2.cpp
Latihan 14.3.cpp
Latihan 14.4.cpp
Latihan 14.5.cpp
14.4. Tugas
Buatlah program menggunakan array dengan pointer untuk membaca huruf
digit ke 9 sampai digit terakhir, dengan contoh tampilan sebagai berikut:
4. Sorting Huruf
5. Searching Huruf
6. Stack (Tumpukan)
7. Queue
DAFTAR PUSTAKA