Anda di halaman 1dari 76

LAPORAN TUGAS BESAR

PRAKTIKUM ALGORITMA

Dibuat Oleh :
Elvara Luna
4523210040

Dosen Penguji :
Dr. Sri Rezeki Candra

1
Kata Pengantar

Selamat datang dalam laporan praktikum algoritma ini. Laporan ini disusun sebagai bagian
dari tugas praktikum mata kuliah algoritma dengan tujuan untuk memberikan gambaran dan
dokumentasi tentang penerapan algoritma pada berbagai tugas yang telah dikerjakan.

Laporan ini mencakup pembahasan algoritma, implementasi dalam bahasa pemrograman


C++, serta hasil dari setiap percobaan yang telah dilakukan selama praktikum. Setiap bagian laporan
dirancang untuk memberikan pemahaman yang jelas tentang konsep algoritma yang telah dipelajari
dan diterapkan.

Laporan ini diharapkan dapat memberikan kontribusi positif dalam pemahaman dan
penerapan konsep algoritma. Semoga laporan ini dapat menjadi panduan yang berguna bagi
pembaca dalam memahami dan mengimplementasikan algoritma secara efektif.

Terima kasih kepada dosen pengampu praktikum, teman-teman sepraktikum, dan semua
pihak yang telah berkontribusi dalam kelancaran penyelenggaraan praktikum ini.

Bogor, 28 Januari 2023

[Elvara Luna]

[4523210040]

2
Daftar Isi

Kata Pengantar ……………………………………………………………………..2


Daftar Isi……………………………………………………………………………3
Laporan Tugas 1-13…………………………………………………………………4
Penjelasan Materi…………………………………………………………………..47
i. Selection……………………………………………………………………47
ii. Repetation………………………………………………………………….49
iii. Array……………………………………………………………………….51
iv. Function……………………………………………………………………53
v. String………………………………………………………………………57
vi. Selection Sort – Ascending………………………………………………..60
Program Tugas Besar……………………………………………………………...63
Algoritma………………………………………………………………………….71
Pseudocode………………………………………………………………………..72
Hasil Running……………………………………………………………………..74
Kesimpulan………………………………………………………………………..75

3
LAPORAN PRAKTIKUM 1-13

Praktikum : Algoritma dan Pemrograman

Modul Praktikum ke : 1

Judul Materi : Sequence

Contoh Soal

Algoritma:

1. Inisialisasi variabel n dengan nilai 1.


2. Lakukan langkah-langkah berikut selama n kurang dari atau sama dengan 5:
a. Inisialisasi variabel i dengan nilai 1.
b. Lakukan langkah-langkah berikut selama i kurang dari atau sama dengan n:
- Tampilkan karakter "I".
- Tingkatkan nilai i.
c. Tampilkan newline.
d. Tingkatkan nilai n.
3. Selesai.

Pseudocode:

1. Inisialisasi variabel n dengan nilai 1.

2. Lakukan

a. Inisialisasi variabel i dengan nilai 1.

b. Lakukan

4
i. Tampilkan karakter "I".

ii. Tingkatkan nilai i.

c. Selama i kurang dari atau sama dengan n.

d. Tampilkan newline.

e. Tingkatkan nilai n.

3. Selama n kurang dari atau sama dengan 5.

4. Selesai.

20. Dibaca nama karyawan dan gaji perbulan, jika gaji perbulan Rp.1.000.000. Hitung gaji pertahun
tersebut (nama file : Prak1-20.ccp):

Program :

Algoritma :

1. Start/Mulai
2. Masukkan nilai alas segitiga.
3. Masukkan nilai tinggi segitiga.
4. Hitung luas segitiga dengan rumus luas = 0.5 * alas * tinggi.
5. Tampilkan hasil luas segitiga.
6. End/Selesai

Pseudocode :

1. Masukkan alas segitiga

2. Masukkan tinggi segitiga

3. luas = 0.5 * alas * tinggi

4. Tampilkan "Luas segitiga adalah: luas"

5
Flowchart :

Start

Masukan Nama
Karyawan

Tetapkan
Gaji/Bulan
1.000.000

Hitung gaji pertahun dengan


rumus

gaji_pertahun =

gaji_perbulan * 12

Tampilkan Luas
Segitiga

end

6
70. Hitung luas segitiga jika diketahui alas = 27 cm dan tinggi =45 cm (nama file : Prak1-70.cpp):

Program:

Algoritma :

1. Start/Mulai
2. Masukkan nilai alas segitiga.
3. Masukkan nilai tinggi segitiga.
4. Hitung luas segitiga dengan rumus luas = 0.5 * alas * tinggi.
5. Tampilkan hasil luas segitiga.
6. End/Selesai

Pseudocode :

1. Masukkan alas segitiga

2. Masukkan tinggi segitiga

3. luas = 0.5 * alas * tinggi

4. Tampilkan "Luas segitiga adalah: luas"

7
Flowchart :

Start

Masukan
alas

Maukan
tinggi

luas = 0.5 *

alas * tinggi

Tampilkan
Luas Segitiga

end

8
Hasil Running Kedua Program :

Praktikum : Algoritma dan Pemrograman

Modul Praktikum ke : 2

Judul Materi : Selection

Contoh Soal

9
Algoritma:

1. Inisialisasi variabel huruf dengan tipe data karakter.


2. Tampilkan pesan "Masukkan satu Huruf = ".
3. Minta input dari pengguna untuk huruf.
4. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~.
5. Tampilkan pesan "Huruf Yang anda masukkan adalah huruf".
6. Selesai.

Pseudocode:

1. Inisialisasi variabel huruf dengan tipe data karakter.

2. Tampilkan pesan "Masukkan satu Huruf = ".

3. Minta input dari pengguna untuk huruf.

4. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~.

5. Tampilkan "Huruf Yang anda masukkan adalah " + huruf.

6. Selesai.

12. . Menentukan apakah sebuah bilangan benilai Negatif (nama file : Prak2-12.cpp)

Program :

Algoritma:

1. Start/Mulai
2. Masukkan bilangan.
3. Periksa apakah bilangan kurang dari nol.

10
4. Jika bilangan kurang dari nol, tampilkan bahwa bilangan tersebut adalah negatif.
5. Jika tidak, tampilkan bahwa bilangan tersebut bukan negatif.
6. End/Selesai

Pseudocode:

1. Masukkan bilangan

2. Jika bilangan < 0 maka

3. Tampilkan "Bilangan tersebut adalah negatif"

4. Jika tidak maka

5. Tampilkan "Bilangan tersebut bukan negatif"

46. Seorang pegawai yang bekerja di perusahaan Y memperoleh gaji berbeda beda sesuai dengan
golongannya. untuk pegawai yang bergolongan A mendapatkan gaji Rp.4000.000 per bulan di
tambah dengan uang lembur 50.000 per jam dan yang lain tidak mendapat uang lembur. Jika Pak
Anto pegawai bergolongan A . berapa gaji yang di terima pak Anto jika selama 1 bulan dia bekerja
lembur selama 5 jam (nama file : Prak2-45.cpp)

Program :

11
Algoritma:

1. Masukkan golongan pegawai.


2. Jika golongan pegawai adalah A, maka:
3. Set gaji pokok per bulan (gajiPokok) sebesar Rp. 4.000.000.
4. Set tarif uang lembur per jam (tarifLembur) sebesar Rp. 50.000.
5. Masukkan jumlah jam lembur yang dilakukan selama sebulan.
6. Hitung gaji lembur (gajiLembur) dengan rumus gajiLembur = tarifLembur *
jumlahJamLembur.
7. Hitung total gaji (totalGaji) dengan rumus totalGaji = gajiPokok + gajiLembur.
8. Jika golongan pegawai bukan A, maka:
9. Set gaji pokok per bulan (gajiPokok) sebesar Rp. 4.000.000.
10. Total gaji (totalGaji) adalah gaji pokok saja.
11. Tampilkan total gaji yang diterima.

Pseudocode:

1. Masukkan golongan pegawai

2. Jika golongan pegawai = A maka

3. Set gaji pokok (gajiPokok) = 4.000.000

4. Set tarif lembur (tarifLembur) = 50.000

5. Masukkan jumlah jam lembur (jumlahJamLembur)

6. Hitung gaji lembur (gajiLembur) = tarifLembur * jumlahJamLembur

7. Hitung total gaji (totalGaji) = gajiPokok + gajiLembur

8. Jika tidak maka

9. Set gaji pokok (gajiPokok) = 4.000.000

10. Set total gaji (totalGaji) = gajiPokok

11. Tampilkan "Total gaji yang diterima Pak Anto adalah Rp.[totalGaji]"

Hasil Running Kedua Program :

12
Nama : Elvara Luna

NPM : 4523210040

Praktikum : Algoritma dan Pemrograman

Modul Praktikum ke : 3

Judul Materi : Selection

Contoh Soal

Algoritma:

1. Inisialisasi variabel A dan B.


2. Tampilkan pesan informasional tentang "Menampilkan Nilai A dan B".
3. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
4. Minta input dari pengguna untuk nilai A.
5. Minta input dari pengguna untuk nilai B.
6. Tambahkan 2 ke nilai A.
7. Tambahkan 4 ke nilai B.
8. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
9. Tampilkan nilai A.
10. Tampilkan nilai B.
11. Selesai.

Pseudocode:

1. Inisialisasi variabel A dan B.

13
2. Tampilkan pesan "Menampilkan Nilai A dan B".

3. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.

4. Minta input dari pengguna untuk A.

5. Minta input dari pengguna untuk B.

6. A = A + 2.

7. B = B + 4.

8. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.

9. Tampilkan "Nilai A adalah " + A.

10. Tampilkan "Nilai B adalah " + B.

11. Selesai.

19. Untuk menampilkan pilihan 7 fakultas di Universitas Pancasila, dengan pilihan angka 1 – 7 jika
selain dari pilihan itu maka tidak di tampilkan (nama file : Prak3- 19.cpp)

1=Fakultas Ekonomi

2=Fakultas Hukum

3=Fakultas Farmasi

4=Fakultas Teknik

5=Fakultas Psikologi

6=Fakultas Pariwisata

7=Fakultas Komunikasi

Program :

14
Algoritma:

1. Minta pengguna memasukkan pilihan angka 1-7.


2. Periksa apakah pilihan berada dalam rentang 1 hingga 7.
3. Jika ya, tentukan fakultas yang sesuai dengan pilihan dan tampilkan nama fakultas.
4. Jika tidak, tampilkan pesan bahwa pilihan tidak valid.

Pseudocode:

1. Minta pengguna memasukkan pilihan (1-7)

2. Jika pilihan antara 1 dan 7 maka

3. Tentukan fakultas berdasarkan pilihan

4. Tampilkan nama fakultas

5. Jika tidak maka

Tampilkan pesan "Pilihan tidak valid"

32. . Sebuah rumah makan “SHALERO”, membuat 4 buah menu yang terdiri dari : Menu 1 : Nasi
Goreng dengan harga Rp. 5.000,- Menu 2 : Gado-gado dengan harga Rp. 3.500,- Menu 3 : Bubur
Ayam dengan harga Rp. 2.500,- Menu 4 : Ayam Bakar Pedas dengan harga Rp. 7.500,- Bila memilih
diluar dari 4 menu ini akan berkomentar “Pilihan Anda Salah” (nama file : Prak3-32.cpp)

Program :

15
Algoritma:

1. Minta pengguna memilih menu (1-4).


2. Periksa apakah pilihan berada dalam rentang 1 hingga 4.
3. Jika ya, tentukan menu dan tampilkan nama serta harga menu.
4. Jika tidak, tampilkan pesan bahwa pilihan tidak valid.
Pseudocode:

1. Minta pengguna memilih menu (1-4)


2. Jika pilihan antara 1 dan 4 maka
3. Tentukan menu berdasarkan pilihan
4. Tampilkan nama dan harga menu
5. Jika tidak maka Tampilkan pesan "Pilihan Anda Salah"

Hasil Running Kedua Program :

Nama : Elvara Luna

16
NPM : 4523210040

Praktikum : Algoritma dan Pemrograman

Modul Praktikum ke : 4

Judul Materi : Repetation

Contoh Soal

Algoritma:

1. Inisialisasi variabel A dan B.


2. Tampilkan pesan informasional tentang "Menampilkan Nilai A dan B".
3. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
4. Minta input dari pengguna untuk nilai A.
5. Tambahkan 22 ke nilai A.
6. Hitung nilai B dengan mengambil akar kuadrat dari nilai A.
7. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
8. Tampilkan nilai A.
9. Tampilkan nilai B.
10. Selesai.

Pseudocode:

1. Inisialisasi variabel A dan B.

17
2. Tampilkan pesan "Menampilkan Nilai A dan B".

3. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.

4. Minta input dari pengguna untuk A.

5. A = A + 22.

6. B = akar_kuadrat(A).

7. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.

8. Tampilkan "Nilai A adalah " + A.

9. Tampilkan "Nilai B adalah " + B.

10. Selesai.

1. Tampilkan tulisan “Universitas Pancasila Fakultas Teknik Jurusan Teknik Informatika”


sebanyak 25 kali (nama file : Prak4-01.cpp):

Program:

Algoritma:

1.Inisialisasi variabel counter dengan nilai 0.

2.Selama counter kurang dari 25, lakukan langkah-langkah berikut:

a. Tampilkan tulisan "Universitas Pancasila Fakultas Teknik Jurusan Teknik Informatika".


b. Tambahkan nilai counter dengan 1.

Pseudocode:

1. Inisialisasi counter = 0

2. Selama counter < 25 lakukan langkah berikut:

18
a. Tampilkan "Universitas Pancasila Fakultas Teknik Jurusan Teknik Informatika"

b. Tambahkan counter dengan 1

16. Pada akhir semester setelah nilai ujian semua mata kuliah tersedia maka prestasi akademik
mahasiswa dapat dihitung dalam bentuk IPS (Indeks Prestasi Semester). Tampilkan IPS tertinggi dan
jumlah mahasiswa yang mendapat IPS tertinggi tersebut. Masukan terdiri dari sejumlah IPS. Misalkan
data yang diolah adalah 28 56 78 43 78 30 maka keluarannya adalah 78 2 orang. (nama file : Prak4-
16.cpp):

Program :

Algoritma:

1. Masukkan sejumlah IPS.


2. Inisialisasi variabel ipsTertinggi dengan nilai IPS pertama.
3. Inisialisasi variabel jumlahMahasiswa dengan nilai 0.
4. Untuk setiap IPS selanjutnya, lakukan langkah-langkah berikut:

19
a. Jika IPS lebih besar dari ipsTertinggi, perbarui ipsTertinggi dengan nilai IPS tersebut dan set
jumlahMahasiswa menjadi 1.

b. Jika IPS sama dengan ipsTertinggi, tambahkan 1 ke nilai jumlahMahasiswa.

Tampilkan ipsTertinggi dan jumlahMahasiswa.

Pseudocode:

1. Masukkan sejumlah IPS

2. Inisialisasi ipsTertinggi dengan IPS pertama

3. Inisialisasi jumlahMahasiswa = 0

4. Untuk setiap IPS selanjutnya, lakukan langkah berikut:

a. Jika IPS > ipsTertinggi maka

i. Set ipsTertinggi dengan IPS

ii. Set jumlahMahasiswa = 1

b. Jika IPS = ipsTertinggi maka

i. Tambahkan 1 ke jumlahMahasiswa

5. Tampilkan ipsTertinggi dan jumlahMahasiswa

Hasil Running Kedua Program :

20
Nama : Elvara Luna

NPM : 4523210040

Praktikum : Algoritma dan Pemrograman

Modul Praktikum ke : 5

Judul Materi : Repetation

Contoh Soal

1. Tampilkan angka -8 sampai dengan 10 dengan step 1 (mis: -8,… 0 ....... 9,10) (nama file :
Prak5-04.cpp):
Program :

21
Algoritma:

1. Inisialisasi variabel angka dengan nilai -8.


2. Selama angka kurang dari atau sama dengan 10, lakukan langkah-langkah berikut:
a. Tampilkan nilai angka.
b. Tambahkan 1 ke nilai angka.

Pseudocode:

1. Inisialisasi angka = -8

2. Selama angka <= 10 lakukan langkah berikut:

a. Tampilkan nilai angka

b. Tambahkan 1 ke nilai angka

8. Melakukan proses “c” pengulangan sebanyak 2 kali, “d” pengulangan sebanyak 3 kali dan j
pengulangan sebanyak 6 kali, dimana nilai awal n = 1 dan nilai n=n*4 (nama file : Prak5-08.cpp)

Program :

Algoritma:

1. Inisialisasi variabel n dengan nilai 1.


2. Lakukan proses pengulangan "c" sebanyak 2 kali, "d" sebanyak 3 kali, dan "j" sebanyak 6 kali.
a. Dalam setiap pengulangan "c", lakukan langkah-langkah berikut:
i. Tampilkan nilai n.
ii. Perbarui nilai n dengan n * 4.
b. Dalam setiap pengulangan "d", lakukan langkah-langkah yang sama seperti pengulangan "c".
c. Dalam setiap pengulangan "j", lakukan langkah-langkah yang sama seperti pengulangan "c".

Pseudocode:

1. Inisialisasi n = 1
2. Lakukan proses pengulangan:
a. Untuk c sebanyak 2 kali:

22
i. Tampilkan nilai n
ii. Perbarui nilai n dengan n * 4
b. Untuk d sebanyak 3 kali:
i. Tampilkan nilai n
ii. Perbarui nilai n dengan n * 4
c. Untuk j sebanyak 6 kali:
i. Tampilkan nilai n
ii. Perbarui nilai n dengan n * 4

Hasil Running Kedua Program :

Nama : Elvara Luna

NPM : 4523210040

Praktikum : Algoritma dan Pemrograman

Modul Praktikum ke : 5

Judul Materi : Rekursif

23
Contoh Soal

Algoritma:

1. Inisialisasi variabel n, k, dan fakt_iter.


2. Tampilkan pesan informasional tentang "Faktorial - Rekursif".
3. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
4. Minta input dari pengguna untuk n.
5. Loop untuk k dari 1 hingga n
6. Hitung faktorial dengan mengalikan fakt_iter dengan k.
7. Tampilkan hasil faktorial untuk setiap k.
8. Tampilkan pesan newline.

Pseudocode:

1. Inisialisasi variabel n, k, dan fakt_iter

2. Tampilkan pesan "Menampilkan rekursif - Faktorial"

3. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

4. Minta input dari pengguna untuk n

5. Loop untuk k dari 1 hingga n

a. Hitung faktorial: fakt_iter = fakt_iter * k

b. Tampilkan "Faktorial dari k! adalah = fakt_iter"

6. Tampilkan pesan newline

24
19. Menampilkan perpindahan dengan jumlah menara dan keping step by step tanpa menggunakan
inputan (nama file : Prak6-19.cpp)

Program :

Algoritma:

1. Inisialisasi variabel jumlahKeping dengan nilai 3 (jumlah keping awal).


2. Inisialisasi variabel jumlahMenara dengan nilai 3 (jumlah menara awal).
3. Tampilkan status awal keadaan permainan.
4. Pindahkan keping dari Menara 1 ke Menara 2.
5. Pindahkan keping dari Menara 1 ke Menara 3.
6. Pindahkan keping dari Menara 2 ke Menara 3.
7. Tampilkan status keadaan permainan setelah pindah.
8. Ulangi langkah-langkah 4-7 sebanyak jumlahMenara - 1 kali.

Pseudocode:

1. Inisialisasi jumlahKeping = 3

25
2. Inisialisasi jumlahMenara = 3

3. Tampilkan status awal keadaan permainan

4. Pindahkan keping dari Menara 1 ke Menara 2

5. Pindahkan keping dari Menara 1 ke Menara 3

6. Pindahkan keping dari Menara 2 ke Menara 3

7. Tampilkan status keadaan permainan setelah pindah

8. Ulangi langkah 4-7 sebanyak (jumlahMenara - 1) kali

Hasil Running :

26
Nama : Elvara Luna

NPM : 4523210040

Praktikum : Algoritma dan Pemrograman

Modul Praktikum ke : 8

Judul Materi : Array

Contoh Soal

Pseudocode

1. Inisialisasi array dua dimensi Nilai dengan ordo 3x4

Nilai = {{11, 22, 33, 44}, {63, 11, 66, 7}, {22, 28, 11, 7}}

2. Inisialisasi variabel m dan a

3. Tampilkan pesan "Menampilkan ARRAY/LARIK 2 Dimensi" dan "Dengan Ordo 3x4"

4. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

27
5. Loop untuk m dari 0 hingga 2

a. Loop untuk a dari 0 hingga 3

i. Tampilkan Nilai[m][a]

ii. Tampilkan spasi

b. Tampilkan newline

6. Tunggu input dari pengguna (gunakan cin.get())

Algortma :

1. Inisialisasi Array Dua Dimensi:


ArrayDuaDimensi Nilai dengan ordo 3x4

Nilai[0] = {11, 22, 33, 44}

Nilai[1] = {63, 11, 66, 7}

Nilai[2] = {22, 28, 11, 7}

2. Inisialisasi Variabel:
Variabel m, a

3. Tampilkan Pesan:
Tampilkan "Menampilkan ARRAY/LARIK 2 Dimensi"

Tampilkan "Dengan Ordo 3x4"

4. Tampilkan Pemisah:

Tampilkan "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

Loop untuk m:

5. Untuk m dari 0 hingga 2


a. Loop untuk a dari 0 hingga 3

i. Tampilkan Nilai[m][a]

ii. Tampilkan spasi

b. Tampilkan newline

6. Tunggu Input:
Tunggu input dari pengguna (gunakan cin.get())

28
Algoritma:

Inisialisasi array dua dimensi Nilai dengan ordo 4x4.

Inisialisasi variabel m dan a.

Tampilkan pesan informasional tentang "ARRAY/LARIK 2 Dimensi" dan "Dengan Ordo 4x4 Melalui
Inputan".

Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.

Loop untuk m dari 0 hingga 3

Loop untuk a dari 0 hingga 3

Tampilkan pesan "Masukkan Isi Elemen [m+1][a+1] : ".

Terima input dan simpan ke Nilai[m][a].

Tampilkan pesan newline.

Tampilkan pesan "Tampilan Isi Elemen".

Tampilkan newline.

Loop untuk m dari 0 hingga 3

Loop untuk a dari 0 hingga 3

Tampilkan Nilai[m][a] dengan spasi.

Tampilkan newline.

Pseudocode:

1. Inisialisasi array dua dimensi Nilai dengan ordo 4x4

29
2. Inisialisasi variabel m, a

3. Tampilkan pesan "Menampilkan ARRAY/LARIK 2 Dimensi"

4. Tampilkan pesan "Dengan Ordo 4x4 Melalui Inputan"

5. Tampilkan pemisah ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

6. Loop untuk m dari 0 hingga 3

a. Loop untuk a dari 0 hingga 3

i. Tampilkan pesan "Masukkan Isi Elemen[m+1][a+1] : "

ii. Terima input dan simpan ke Nilai[m][a]

7. Tampilkan newline

8. Tampilkan pesan "Tampilan Isi Elemen"

9. Tampilkan newline

10. Loop untuk m dari 0 hingga 3

a. Loop untuk a dari 0 hingga 3

i. Tampilkan Nilai[m][a] dengan spasi

b. Tampilkan newline

47. Kalikan dua buah matriks dengan ordo 4x4 dan 4x4 (nama file : P08-47.ccp):

Program :

30
Algoritma:

1. Inisialisasi dua buah matriks dengan ordo 4x4.


2. Lakukan perulangan untuk mengalikan setiap elemen matriks.
3. Hitung hasil perkalian untuk setiap elemen hasil matriks.
4. Tampilkan matriks hasil perkalian.
Pseudocode:

1. Inisialisasi matriks A dan B dengan ordo 4x4

2. Untuk setiap baris i dari 0 hingga 3, lakukan langkah berikut:

a. Untuk setiap kolom j dari 0 hingga 3, lakukan langkah berikut:

i. Inisialisasi nilai elemen hasil matriks C[i][j] dengan 0

ii. Untuk setiap k dari 0 hingga 3, lakukan langkah berikut:

- C[i][j] = C[i][j] + A[i][k] * B[k][j]

3. Tampilkan matriks hasil C

80. Buatlah array seperti dibawah ini : (nama file : P8-80.ccp):

**

***

*******

***********

*******

***

31
**

Program :

Algoritma:

1. Inisialisasi array dua dimensi dengan ukuran 9x9 dan isi awal semua elemennya adalah spasi.
2. Isi elemen-elemen array sesuai dengan pola yang diminta.
3. Tampilkan array.
Pseudocode:

1. Inisialisasi array pattern[9][9] dengan karakter spasi


2. Isi elemen-elemen array sesuai dengan pola berikut:
a. pattern[0][8] = '*'
b. pattern[1][7] = pattern[1][8] = '*'
c. pattern[2][6] = pattern[2][7] = pattern[2][8] = '*'
d. pattern[3][4] hingga pattern[3][8] = '*'
e. pattern[4][0] hingga pattern[4][8] = '*'
f. pattern[5][0] hingga pattern[5][8] = '*'
g. pattern[6][2] hingga pattern[6][8] = '*'
h. pattern[7][4] hingga pattern[7][8] = '*'
i. pattern[8][6] hingga pattern[8][8] = '*'
3. Tampilkan array pattern

32
Hasil Running Program :

Nama : Elvara Luna

NPM : 4523210040

Praktikum : Algoritma dan Pemrograman

Modul Praktikum ke : 9

Judul Materi : Function

Contoh Soal

33
19. . Nilai d dan e dengan nama fungsi opmat19, dimana d/e, fungsi bagi mempunyai nilai 9,15 dan
0,38 (nama file : P09-19.cpp):

Program :

Algoritma:

1. Buatlah fungsi opmat19 yang menerima dua parameter, d dan e.


2. Hitung hasil bagi d dan e dan simpan hasilnya di variabel result.
3. Kembalikan nilai result.

34
Pseudocode:

Fungsi opmat19(d, e):

result = d / e

Kembalikan result

Hasil Running Program :

Nama : Elvara Luna

NPM : 4523210040

Praktikum : Algoritma dan Pemrograman

Modul Praktikum ke : 10

Judul Materi : String

Contoh Soal

35
Algoritma:

1. Inisialisasi array karakter nama1 dengan nilai "Elvara Luna".

36
2. Inisialisasi array karakter nama2 dengan ukuran 30.
3. Inisialisasi variabel l.
4. Tampilkan pesan informasional tentang "Menyalin String".
5. Tampilkan pemisah ~~~~~~~~~~~~~~~.
6. Loop untuk l dari 0 hingga nama1[l] tidak bernilai nol:
7. Salin karakter nama1[l] ke dalam nama2[l].
8. Tambahkan karakter nol ('\0') pada akhir nama2.
9. Tampilkan tulisan asli dan hasil salinan.
10. Tampilkan newline.

Pseudocode:

1. Inisialisasi array karakter nama1 dengan nilai "Elvara Luna".

2. Inisialisasi array karakter nama2 dengan ukuran 30.

3. Inisialisasi variabel l.

4. Tampilkan pesan "Menyalin String".

5. Tampilkan pemisah ~~~~~~~~~~~~~~~.

6. Loop untuk l dari 0 hingga nama1[l] tidak bernilai nol:

a. Salin karakter nama1[l] ke dalam nama2[l].

7. Tambahkan karakter nol ('\0') pada akhir nama2.

8. Tampilkan "Tulisan Asli : " + nama1.

9. Tampilkan "Tulisan Hasil Salinan : " + nama2.

10. Tampilkan newline.

7. Buatlah program untuk menformat keluaran 3 data menjadi sebuah string (contoh : vint=100,
vdbl=25.8976, vstring=”abcdef”) (nama file : P10-07.ccp):

Program :

37
Algoritma:

1. Inisialisasi variabel vint dengan nilai 100, vdbl dengan nilai 25.8976, dan vstring dengan nilai
"abcdef".
2. Format keluaran ketiga data tersebut menjadi sebuah string menggunakan sprintf atau
std::ostringstream.
3. Tampilkan hasilnya.
Pseudocode:

1. Inisialisasi variabel vint dengan nilai 100

2. Inisialisasi variabel vdbl dengan nilai 25.8976

3. Inisialisasi variabel vstring dengan nilai "abcdef"

4. Format keluaran menjadi sebuah string:

a. Buat string kosong

b. Tambahkan "vint=" dan nilai vint ke dalam string

c. Tambahkan ", vdbl=" dan nilai vdbl ke dalam string

d. Tambahkan ", vstring=" dan nilai vstring ke dalam string

5. Tampilkan hasilnya

38
Hasil Running :

Nama : Elvara Luna

NPM : 4523210040

Praktikum : Algoritma dan Pemrograman

Modul Praktikum ke : 12

Judul Materi : Pointer

SOAL

Buat Penjualan Toko Bagus (nama file : P12-04.ccp): Dengan aturan sebagai berikut:

- Jumlah pelanggan melalui proses input

- Menginput nama pelanggan, alamat, telephone, banyaknya barang yang dibeli dan menghitung
jumlah barang yang dibeli serta total bayar

PROGRAM

39
HASIL RUNNING

PSEUDOCODE

KAMUS/DEKLARASI VARIABEL

Pelanggan : struct

Nama[50],alamat[100],telephone[15] : char

jumlahBarang, jumlahpelanggan : int

totalbayar : float

40
DESKRIPSI

Print ("Masukkan jumlah pelanggan: ")

scanf("%d", &jumlahPelanggan)

totalbarang = 0

totalbayar = 0

for (int i = 0; i < jumlahPelanggan; i++)

printf("\nPelanggan ke-%d:\n", i + 1)

endfor

Pelanggan *pelanggan = arrPelanggan + i

printf("Nama: ")

scanf("%s", pelanggan->nama)

printf("Alamat: ")

scanf("%s", pelanggan->alamat)

printf("Telephone: ")

scanf("%s", pelanggan->telephone)

printf("Banyaknya barang yang dibeli: ")

scanf("%d", &(pelanggan->jumlahBarang))

pelanggan->totalBayar = pelanggan->jumlahBarang * 100

totalBarang += pelanggan->jumlahBarang

totalBayar += pelanggan->totalBayar

printf("\n=======================================================\n")

printf("| No. | Nama | Alamat | Telephone |\n")

printf("========================================================\n")

for (int i = 0; i < jumlahPelanggan; i++)

endfor

41
printf("| %3d | %-10s | %-15s | %-11s |\n", i + 1, pelanggan->nama, pelanggan->alamat,
pelanggan->telephone)

printf("========================================================\n")

printf("\nJumlah Total Barang: %d |\n", totalBarang)

printf("Jumlah Total Bayar : %.2f |\n", totalBayar)

printf("========================================================\n")

ALGORITMA

1. Mulai / Start.

2. Inisialisasikan variabel-variabel yang diperlukan: nama_pelanggan, alamat_pelanggan,


telepon_pelanggan, banyak_barang, total_barang, total_bayar.

3. Terima input dari pengguna untuk jumlah pelanggan yang akan melakukan pembelian
(jumlah_pelanggan).

4. Untuk setiap pelanggan dari 1 hingga jumlah_pelanggan, lakukan langkah-langkah berikut:

a. Terima input nama pelanggan (nama_pelanggan).

b. Terima input alamat pelanggan (alamat_pelanggan).

c. Terima input nomor telepon pelanggan (telepon_pelanggan).

d. Terima input jumlah barang yang dibeli (banyak_barang).

e. Hitung total barang dengan menambahkan banyak_barang ke total_barang.

f. Hitung total bayar berdasarkan jumlah barang yang dibeli. (Misalnya, jika harga per barang
diketahui, hitung total bayar dengan cara mengalikan harga per barang dengan jumlah
barang yang dibeli.)

g. Tampilkan nama pelanggan, alamat, nomor telepon, jumlah barang yang dibeli, dan total
bayar.

5. Ulangi langkah 4 untuk setiap pelanggan hingga semua pelanggan selesai.

6. Tampilkan total keseluruhan barang yang terjual dan total pendapatan dari semua pelanggan.

7. Selesai / End

42
Nama : Elvara Luna

NPM : 4523210040

Praktikum : Algoritma dan Pemrograman

Modul Praktikum ke : 13

Judul Materi : File

SOAL

Tambahkan isi data yang menampilkan informasi golongan darah Anda. Tambahan data (A Reshus +,
A Reshus -, B Reshus +, B Reshus -) Nama file TXT adalah BIO BIO[NPM][NAMA].TXT (nama file : P13-
05.ccp)

PROGRAM

HASIL RUNNING

43
PSEUDOCODE

DEKLARASI VARIABEL

nama STRING

npm STRING

golongan_darah STRING

nama_file STRING

DESKRIPSI

PRINT "Masukkan Nama: "

INPUT nama

PRINT "Masukkan NPM: "

INPUT npm

PRINT "Masukkan Golongan Darah (A Reshus +, A Reshus -, B Reshus +, B Reshus -): "

INPUT golongan_darah

nama_file = "BIO BIO[" + npm + "][" + nama + "].TXT"

DEKLARASI file FILE

file = BUKA_FILE(nama_file, MODE_TULIS)

IF file != GAGAL_BUKA THEN

TULIS(file, "Nama: " + nama)

TULIS(file, "NPM: " + npm)

TULIS(file, "Golongan Darah: " + golongan_darah)

TUTUP_FILE(file)

PRINT "Data berhasil disimpan ke dalam file " + nama_file

ELSE

PRINT "Gagal membuka file."

END IF

End Procedure

44
ALGORITMA

1. Inisialisasi variabel

DECLARE nama STRING

DECLARE npm STRING

DECLARE golongan_darah STRING

DECLARE nama_file STRING

2. Meminta input dari pengguna

TAMPILKAN "Masukkan Nama: "

BACA nama

TAMPILKAN "Masukkan NPM: "

BACA npm

TAMPILKAN "Masukkan Golongan Darah (A Reshus +, A Reshus -, B Reshus +, B Reshus -): "

BACA golongan_darah

3. Membentuk nama file

nama_file = "BIO BIO[" + npm + "][" + nama + "].TXT"

4. Membuka file untuk ditulis

DECLARE file FILE

file = BUKA_FILE(nama_file, MODE_TULIS)

5. Menulis informasi ke dalam file

JIKA file != GAGAL_BUKA THEN

TULIS(file, "Nama: " + nama)

TULIS(file, "NPM: " + npm)

TULIS(file, "Golongan Darah: " + golongan_darah)

TUTUP_FILE(file)

TAMPILKAN "Data berhasil disimpan ke dalam file " + nama_file

ELSE

TAMPILKAN "Gagal membuka file."

45
END IF

END

46
Penjelasan Materi

i. Selection
Materi selection dalam konteks algoritma sering kali merujuk pada beberapa jenis
algoritma atau struktur kontrol dalam pemrograman yang digunakan untuk membuat
keputusan atau pemilihan antara beberapa opsi. Dalam pemrograman, kita sering kali
dihadapkan pada kebutuhan untuk memilih atau mengambil keputusan berdasarkan kondisi
tertentu. Dua struktur kontrol yang umum digunakan untuk tujuan ini adalah if-else statement
dan switch statement.

1. If-Else Statement:
Deskripsi:
If-else statement digunakan untuk membuat keputusan berdasarkan kondisi tertentu. Program
akan mengevaluasi kondisi yang diberikan, dan berdasarkan hasil evaluasi, blok kode tertentu
akan dieksekusi.
Contoh:
cpp
Copy code
if (kondisi) {
// Blok kode yang dieksekusi jika kondisi benar
} else {
// Blok kode yang dieksekusi jika kondisi salah
}
2. Switch Statement:
Deskripsi:
Switch statement digunakan untuk membuat seleksi di antara beberapa opsi berdasarkan nilai
ekspresi. Ini adalah alternatif dari if-else statement ketika kita perlu mengevaluasi ekspresi
terhadap beberapa nilai yang mungkin.
Contoh:
cpp
Copy code
switch (ekspresi) {
case nilai1:

47
// Blok kode yang dieksekusi jika ekspresi sama dengan nilai1
break;
case nilai2:
// Blok kode yang dieksekusi jika ekspresi sama dengan nilai2
break;
// ... kasus lainnya ...
default:
// Blok kode yang dieksekusi jika tidak ada kasus yang cocok
}
Penerapan dalam Algoritma Pemilihan (Selection Algorithms):
Dalam konteks algoritma pengurutan, terdapat algoritma pengurutan yang disebut Selection
Sort yang menggunakan prinsip seleksi untuk mengurutkan elemen-elemen dalam sebuah
array. Algoritma ini memilih elemen dengan nilai terendah dan menukarnya dengan elemen
pertama, kemudian memilih elemen terendah kedua dan menukarnya dengan elemen kedua,
dan seterusnya.

3. Selection Sort:
Deskripsi:

Selection Sort membagi array menjadi dua bagian: bagian yang sudah diurutkan dan bagian
yang belum diurutkan. Pada setiap iterasi, algoritma memilih elemen terkecil dari bagian
yang belum diurutkan dan menukarkannya dengan elemen pertama dari bagian yang sudah
diurutkan.
Langkah-langkah:

Temukan elemen terkecil dalam bagian yang belum diurutkan.


Tukar elemen terkecil dengan elemen pertama pada bagian yang belum diurutkan.
Pindahkan batas antara bagian yang sudah diurutkan dan belum diurutkan ke elemen
berikutnya.
Contoh Kode:

cpp
Copy code

48
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
int minIndex = i;
for (int j = i + 1; j < n; ++j) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// Tukar elemen terkecil dengan elemen pertama pada bagian yang belum diurutkan
swap(arr[i], arr[minIndex]);
}
}
Materi selection ini merupakan bagian penting dalam pemrograman karena memungkinkan
kita untuk membuat keputusan dan melakukan seleksi berdasarkan kondisi atau nilai tertentu,
baik itu dalam struktur kontrol atau algoritma pengurutan.

ii. Repetation
Materi repetation (pengulangan) dalam pemrograman berkaitan dengan kemampuan untuk
melakukan serangkaian instruksi atau pernyataan secara berulang. Terdapat beberapa bentuk
struktur kontrol yang digunakan untuk mengimplementasikan pengulangan dalam
pemrograman, seperti for loop, while loop, dan do-while loop.

1. For Loop:
Deskripsi:
For loop digunakan untuk melakukan iterasi atau pengulangan sejumlah tertentu. Instruksi
dalam for loop akan dieksekusi sebanyak jumlah iterasi yang telah ditentukan sebelumnya.
Contoh:
cpp
Copy code
for (inisialisasi; kondisi; iterasi) {
// Blok kode yang akan diulang
}

49
2. While Loop:
Deskripsi:
While loop digunakan untuk melakukan iterasi selama suatu kondisi tertentu benar (true).
Instruksi dalam while loop akan terus dieksekusi selama kondisi yang diberikan masih benar.
Contoh:
cpp
Copy code
while (kondisi) {
// Blok kode yang akan diulang
}
3. Do-While Loop:
Deskripsi:
Do-while loop mirip dengan while loop, namun perbedaannya terletak pada pengecekan
kondisi. Pada do-while loop, blok kode akan dijalankan setidaknya satu kali sebelum kondisi
dicek.
Contoh:
cpp
Copy code
do {
// Blok kode yang akan diulang
} while (kondisi);
Penerapan dalam Algoritma Pengulangan:
Pada tingkat algoritma, pengulangan dapat digunakan untuk menyelesaikan berbagai tugas
atau masalah yang memerlukan eksekusi berulang. Sebagai contoh, algoritma pencarian
linear dapat diimplementasikan dengan menggunakan pengulangan untuk mencari elemen
dalam suatu array.

4. Algoritma Pencarian Linear:


Deskripsi:
Pencarian linear adalah algoritma sederhana yang mencari elemen tertentu dalam array
dengan memeriksa setiap elemen secara berurutan.

Langkah-langkah:

50
Mulai dari elemen pertama array.
Ulangi langkah 3 selama elemen tidak ditemukan.
Bandingkan elemen dengan nilai yang dicari.
Jika ditemukan, hentikan pencarian. Jika tidak, pindah ke elemen berikutnya.
Selesaikan pencarian.
Contoh Kode:

cpp
Copy code
int linearSearch(int arr[], int n, int target) {
for (int i = 0; i < n; ++i) {
if (arr[i] == target) {
return i; // Elemen ditemukan, kembalikan indeksnya
}
}
return -1; // Elemen tidak ditemukan
}
Materi pengulangan sangat penting dalam pemrograman karena memungkinkan penanganan
tugas yang memerlukan aksi yang diulang, seperti pengolahan array, pencarian, dan banyak
lagi. Kemampuan untuk memahami dan menggunakan struktur pengulangan dengan efektif
adalah keterampilan yang esensial dalam pengembangan perangkat lunak.

iii. Array
Array adalah struktur data yang digunakan untuk menyimpan kumpulan elemen dengan tipe
data yang sama dalam satu variabel. Elemen-elemen tersebut dapat diakses menggunakan
indeks atau posisi mereka dalam array. Materi array adalah bagian penting dalam
pemrograman dan seringkali digunakan untuk mengelola data dalam jumlah besar.

1. Deklarasi Array:
Deskripsi:
Deklarasi array adalah langkah pertama dalam penggunaan array. Ini melibatkan
pendefinisian tipe data elemen array dan nama array.
Contoh:

51
cpp
Copy code
int angka[5]; // Array bertipe int dengan ukuran 5
char huruf[10]; // Array bertipe char dengan ukuran 10
2. Inisialisasi Array:
Deskripsi:
Inisialisasi array melibatkan memberikan nilai awal pada saat deklarasi atau setelah deklarasi.
Contoh:
cpp
Copy code
int angka[5] = {1, 2, 3, 4, 5}; // Array bertipe int dengan nilai awal
char huruf[3] = {'a', 'b', 'c'}; // Array bertipe char dengan nilai awal
3. Akses Elemen Array:
Deskripsi:
Elemen-elemen array dapat diakses menggunakan indeks. Indeks dimulai dari 0 dan berakhir
pada (ukuran array - 1).
Contoh:
cpp
Copy code
int nilai = angka[2]; // Mendapatkan nilai dari elemen dengan indeks 2
4. Manajemen Data dengan Array:
Deskripsi:
Array memungkinkan pengelolaan data yang efisien. Misalnya, penggunaan loop untuk
mengakses dan memanipulasi setiap elemen array.
Contoh:
cpp
Copy code
for (int i = 0; i < 5; ++i) {
angka[i] = angka[i] * 2; // Menggandakan nilai setiap elemen
}
5. Array Multidimensi:

52
Deskripsi:
Array multidimensi adalah array yang memiliki lebih dari satu dimensi. Contohnya adalah
matriks, yang merupakan array dua dimensi.
Contoh:
cpp
Copy code
int matriks[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Penerapan dalam Algoritma:
Array digunakan dalam berbagai algoritma dan struktur data. Sebagai contoh, algoritma
pengurutan seperti Bubble Sort atau Insertion Sort dapat diimplementasikan dengan
menggunakan array.

6. Bubble Sort:
Deskripsi:
Bubble Sort adalah algoritma pengurutan sederhana yang secara berulang membandingkan
dan menukarkan elemen-elemen adjacent jika mereka berada dalam urutan yang salah.
Contoh Kode:
cpp
Copy code
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// Tukar elemen jika berada dalam urutan yang salah
swap(arr[j], arr[j+1]);
}
}
}
}
Array memberikan fleksibilitas dan efisiensi dalam mengelola data. Memahami dan
menguasai materi array adalah langkah kritis dalam pengembangan perangkat lunak.
iv. Function

53
Materi Function dalam Pemrograman

Function atau fungsi adalah suatu blok kode yang dapat dipanggil untuk melakukan tugas
tertentu. Fungsi membantu dalam mengorganisir kode menjadi bagian-bagian yang lebih
kecil dan dapat digunakan kembali, meningkatkan modularitas dan memudahkan
pemeliharaan kode. Berikut adalah penjelasan tentang materi function dalam pemrograman:

1. Deklarasi Fungsi:
Deskripsi:
Deklarasi fungsi berisi informasi tentang fungsi, termasuk tipe data nilai kembalian (jika
ada), nama fungsi, dan parameter yang diterima oleh fungsi.
Contoh:
cpp
Copy code
int tambah(int a, int b);
2. Definisi Fungsi:
Deskripsi:
Definisi fungsi berisi implementasi atau blok kode sebenarnya dari fungsi tersebut. Ini
memberikan instruksi tentang apa yang harus dilakukan fungsi ketika dipanggil.
Contoh:
cpp
Copy code
int tambah(int a, int b) {
return a + b;
}
3. Panggilan Fungsi:
Deskripsi:
Panggilan fungsi adalah cara meminta komputer untuk menjalankan blok kode yang telah
didefinisikan dalam suatu fungsi.
Contoh:
cpp
Copy code

54
int hasil = tambah(3, 5);
4. Parameter dan Argumen:
Deskripsi:
Parameter adalah variabel yang dideklarasikan dalam deklarasi fungsi dan digunakan dalam
definisi fungsi. Argumen adalah nilai yang diberikan ke fungsi ketika fungsi tersebut
dipanggil.
Contoh:
cpp
Copy code
int kali(int x, int y) {
return x * y;
}
// ...
int hasil = kali(4, 7);
5. Nilai Kembalian:
Deskripsi:
Nilai kembalian adalah nilai yang dikembalikan oleh fungsi setelah melakukan operasi
tertentu. Fungsi yang tidak mengembalikan nilai memiliki tipe data void.
Contoh:
cpp
Copy code
int kuadrat(int x) {
return x * x;
}
6. Fungsi Rekursif:
Deskripsi:
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Ini dapat digunakan untuk
menyelesaikan tugas-tugas yang dapat dipecahkan menjadi sub-tugas lebih kecil.
Contoh:
cpp
Copy code
int faktorial(int n) {

55
if (n == 0 || n == 1) {
return 1;
} else {
return n * faktorial(n - 1);
}
}
Penerapan dalam Algoritma:
Function membantu dalam pengorganisasian dan pengelolaan kode, dan mereka juga
digunakan dalam implementasi berbagai algoritma. Sebagai contoh, algoritma pengurutan
quicksort dapat diimplementasikan dengan menggunakan fungsi.

7. Quicksort menggunakan Fungsi:


Deskripsi:
Quicksort adalah algoritma pengurutan yang membagi array menjadi dua bagian dan
mengurutkannya secara rekursif.
Contoh Kode:
cpp
Copy code
void tukar(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}

int partisi(int arr[], int low, int high) {


int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
tukar(arr[i], arr[j]);

56
}
}
tukar(arr[i + 1], arr[high]);
return i + 1;
}

void quicksort(int arr[], int low, int high) {


if (low < high) {
int pi = partisi(arr, low, high);
quicksort(arr, low, pi - 1);
quicksort(arr, pi + 1, high);
}
}
Materi function adalah bagian fundamental dalam pemrograman karena membantu dalam
membuat kode yang lebih bersih, terstruktur, dan mudah dipahami. Kemampuan untuk
menggunakan dan membuat fungsi secara efektif adalah keterampilan yang penting dalam
pengembangan perangkat lunak.

v. String
String adalah kumpulan karakter atau teks yang digunakan untuk merepresentasikan kata,
kalimat, atau teks lebih kompleks. Materi string sangat penting dalam pemrograman karena
sering digunakan untuk memanipulasi dan mengelola data teks. Berikut adalah penjelasan
tentang materi string dalam pemrograman:

1. Deklarasi String:
Deskripsi:
Deklarasi string adalah proses membuat variabel yang dapat menyimpan data string. Dalam
beberapa bahasa pemrograman, seperti C++ atau Java, tipe data string khusus dapat
digunakan.
Contoh (C++):
cpp
Copy code
// Deklarasi string menggunakan tipe data string (C++)

57
string nama = "John";
2. Inisialisasi String:
Deskripsi:
Inisialisasi string adalah proses memberikan nilai awal pada saat deklarasi atau setelah
deklarasi. String dapat diinisialisasi dengan menggunakan tanda kutip ganda ("...") atau
fungsi-fungsi tertentu.
Contoh (C++):
cpp
Copy code
string kata1 = "Halo";
string kata2("Dunia");
3. Operasi pada String:
Deskripsi:
Ada banyak operasi yang dapat dilakukan pada string, seperti penggabungan (concatenation),
pemotongan (substring), pencarian karakter, penggantian karakter, dan banyak lagi.
Contoh (C++):
cpp
Copy code
string nama = "Alice";
string belakang = "Smith";

// Penggabungan string
string namaLengkap = nama + " " + belakang;

// Pemotongan string
string potongan = namaLengkap.substr(0, 5); // Mengambil potongan dari indeks 0 hingga 4
4. Input dan Output String:
Deskripsi:
Untuk memungkinkan interaksi dengan pengguna, string dapat diinput dan dioutput melalui
fungsi-fungsi input/output tertentu.
Contoh (C++):
cpp

58
Copy code
#include <iostream>
using namespace std;

int main() {
string kata;
cout << "Masukkan kata: ";
cin >> kata;
cout << "Anda memasukkan: " << kata << endl;
return 0;
}
5. Manipulasi Karakter dalam String:
Deskripsi:
Setiap karakter dalam string dapat diakses menggunakan indeks. Fungsi-fungsi tertentu juga
dapat digunakan untuk manipulasi karakter dalam string.
Contoh (C++):
cpp
Copy code
string kalimat = "Hello";
char karakter = kalimat[1]; // Mengakses karakter kedua ('e')
kalimat[0] = 'J'; // Mengganti karakter pertama menjadi 'J'
Penerapan dalam Algoritma:
String sangat penting dalam pemrograman karena sering digunakan dalam berbagai
algoritma. Sebagai contoh, algoritma pencocokan string dapat digunakan untuk mencari
kecocokan pola dalam suatu teks.

6. Algoritma Pencocokan String:


Deskripsi:
Algoritma pencocokan string digunakan untuk mencari kecocokan antara suatu pola dengan
teks yang lebih besar.
Contoh (C++):
cpp

59
Copy code
size_t pos = teks.find("pola"); // Mencari posisi pertama kemunculan "pola" dalam teks
Materi string adalah bagian integral dalam pemrograman dan sangat berguna dalam berbagai
aplikasi, mulai dari pengolahan teks hingga manipulasi data. Kemampuan untuk memahami
dan menggunakan operasi-operasi pada string adalah keterampilan penting dalam
pengembangan perangkat lunak.

vi. Selection Sort – Ascending


Selection Sort adalah algoritma pengurutan sederhana yang membagi array menjadi dua
bagian: bagian yang sudah diurutkan dan bagian yang belum diurutkan. Pada setiap iterasi,
algoritma ini mencari elemen terkecil di bagian yang belum diurutkan dan menukarnya
dengan elemen pertama dari bagian yang sudah diurutkan.
Keuntungan:
Mudah diimplementasikan.
Membutuhkan jumlah pertukaran yang lebih sedikit dibandingkan dengan Bubble Sort.

2. Langkah-langkah Algoritma:
Iterasi:
Bagian yang sudah diurutkan dimulai dari elemen pertama.
Pada setiap iterasi, mencari elemen terkecil di bagian yang belum diurutkan.
Menukar elemen terkecil dengan elemen pertama pada bagian yang belum diurutkan.
Pindahkan batas antara bagian yang sudah diurutkan dan belum diurutkan ke elemen
berikutnya.
Contoh:
Misalkan kita memiliki array [64, 25, 12, 22, 11].

Iterasi 1:
Pilih elemen terkecil dari seluruh array (11), tukar dengan elemen pertama (64).
Array: [11, 25, 12, 22, 64].
Iterasi 2:

Pilih elemen terkecil dari bagian belum diurutkan (12), tukar dengan elemen kedua (25).
Array: [11, 12, 25, 22, 64].

60
Dan seterusnya, hingga seluruh array terurut.

3. Implementasi dalam C++:


Contoh Kode:
cpp
Copy code
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
int minIndex = i;
for (int j = i + 1; j < n; ++j) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// Tukar elemen terkecil dengan elemen pertama pada bagian yang belum diurutkan
swap(arr[i], arr[minIndex]);
}
}

4. Analisis Kinerja:
Waktu Eksekusi:
Rata-rata dan kasus terburuk memiliki kompleksitas waktu O(n^2).
Jumlah pertukaran maksimum adalah n-1.
Ruangan Tambahan:
Memerlukan ruang tambahan hanya untuk variabel indeks dan pertukaran.

5. Kesimpulan:
Selection Sort adalah algoritma pengurutan yang sederhana namun kurang efisien untuk
ukuran data besar.
Cocok digunakan untuk jumlah data yang relatif kecil atau saat pertukaran data mahal.

61
Meskipun memiliki kompleksitas waktu yang sama dengan Bubble Sort, Selection Sort
cenderung lebih cepat dalam praktiknya.

62
Program Tugas Besar
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <string.h>
using namespace std;
main ()
{
char resepsionis[30], customer[30], alamat[50];
int kamar, no_kamar, harga_kamar, ranjang;
int total, lama, um, kurang;
float diskon;
string jwb, id_customer, id_resepsionis, jk, hp, checkin, checkout, fixkam;
awal:
cout<<"\n\t\t
========================================================";
cout<<"\n\t\t
==============================================================";
cout<<"\n\t\t
==================================================================
==";
cout<<"\n\t\t
==================================================================
=======";
cout<<"\n\t\t
==================================================================
============";
cout<<"\n\t\t SELAMAT DATANG DI HOTEL ASMARA
";
cout<<"\n\n\t\t JL. Kita Masih Panjang, no 69 telp private number
";
cout<<"\n\t\t Legok Hangseur, Lembur Kita, Sok tanya mbah googel
";

63
cout<<"\n\t\t=========================================================
========================";

cout<<"\n\t\t=========================================================
========================";

cout<<"\n\n\n\n\t\tSilahkan Isi Form Berikut ini";


cout<<"\n\t\t=========================================================
========================";cout<<endl;
cout<<"\t\tNama Resepsionis Yang Melayani : "; gets(resepsionis);
cout<<"\t\tID Resepsionis : "; cin>>id_resepsionis;
cout<<"\t\tNama Pemesan : "; cin>>customer;
cout<<"\t\tID Pemesan : "; cin>>id_customer;
cout<<"\t\tJenis Kelamin [L/P] : "; cin>>jk;
cout<<"\t\tNomor Telepon/HP : "; cin>>hp;
cout<<"\t\tAlamat : "; cin>>alamat;

cout<<"\t\t==========================================================
=======================";

cout<<"\n\n\t\tSilahkan Pilih Tipe Kamar Yang Anda Inginkan";

cout<<"\n\t\t=========================================================
========================";
cout<<"\n\t\t1. Standart";
cout<<"\n\t\t2. Premium";
cout<<"\n\t\t3. Deluxe";
cout<<"\n\t\t4. Suite";
cout<<"\n\t\t5. Presidential";

cout<<"\n\t\t=========================================================
========================";
cout<<"\n\t\tMasukan Pilihan : ";cin>>kamar;

64
cout<<"\n\n\t\tSilahkan Pilih Tipe Bed Yang Anda Inginkan";

cout<<"\n\t\t=========================================================
========================";
cout<<"\n\t\t1. Single";
cout<<"\n\t\t2. Double";

cout<<"\n\t\t=========================================================
========================";
cout<<"\n\t\tMasukan Pilihan : ";cin>>ranjang;cout<<endl;

if(kamar==1 && ranjang==1)


{
cout<<"\n\t\tAnda Memilih Kamar Tipe Standart Dengan Ranjang
Single";
fixkam="Standart Dengan Single Bed";
harga_kamar=200000;
}
else if(kamar==1 && ranjang==2)
{
cout<<"\n\t\tAnda Memilih Kamar Tipe Standart Dengan Ranjang Double";
fixkam="Standart Dengan Double Bed";
harga_kamar=250000;
}
else if(kamar==2 && ranjang==1)
{
cout<<"\n\t\tAnda Memilih Kamar Tipe Premium Dengan Ranjang single";
fixkam="Premium Dengan Single Bed";
harga_kamar=400000;
}
else if(kamar==2 && ranjang==2)

65
{
cout<<"\n\t\tAnda Memilih Kamar Tipe Premium Dengan Ranjang Double";
fixkam="Premium Dengan Double Bed";
harga_kamar=450000;
}
else if(kamar==3 && ranjang==1)
{
cout<<"\n\t\tAnda Memilih Kamar Tipe Deluxe Dengan Ranjang single";
fixkam="Deluxe Dengan Single Bed";
harga_kamar=800000;
}
else if(kamar==3 && ranjang==2)
{
cout<<"\n\t\tAnda Memilih Kamar Tipe Deluxe Dengan Ranjang Double";
fixkam="Deluxe Dengan Double Bed";
harga_kamar=900000;
}
else if(kamar==4 && ranjang==1)
{
cout<<"\n\t\tAnda Memilih Kamar Tipe Suite Dengan Ranjang single";
fixkam="Suite Dengan Single Bed";
harga_kamar=1500000;
}
else if(kamar==4 && ranjang==2)
{
cout<<"\n\t\tAnda Memilih Kamar Tipe Suite Dengan Ranjang Double";
fixkam="Suite Dengan Double Bed";
harga_kamar=1800000;
}
else if(kamar==5 && ranjang==1)

66
{
cout<<"\n\t\tAnda Memilih Kamar Tipe Presidential Dengan Ranjang single";
fixkam="Presidential Dengan Single Bed";
harga_kamar=2500000;
}
else if(kamar==5 && ranjang==2)
{
cout<<"\n\t\tAnda Memilih Kamar Tipe Presidential Dengan Ranjang Double";
fixkam="Presidential Dengan Double Bed";
harga_kamar=4000000;
}
else
{
cout<<"\n\t\tMaaf Pilihan Anda Tidak Tersedia";
cout<<"\n\t\tUntuk Keamanan Silahkan Isi Data Dari Awal";
cout<<"\n\t\tApakah Anda Ingin Memulai Lagi ? [Y/N]";cin>>jwb;
if(jwb=="Y" || "y")
{
goto awal;
}
else
{
cout<<"\n\n\t\tTerima Kasih";
}
}
cout<<"\n\n\n\t\tSilahkan Mengisi Form Berikut";

cout<<"\n\t\t=========================================================
========================";
cout<<"\n\t\tPilih No. Kamar [1-100] : "; cin>>no_kamar;
cout<<"\n\t\tMenginap Lebih Dari 5 Hari diskon 2% perhari";

67
cout<<"\n\t\tLama Menginap : "; cin>>lama;

if(lama>=5)
{
diskon=0.2;
}
else
{
diskon=0;
}
cout<<"\n\t\tTanggal Check In [DDMMYY] : ";cin>>checkin;
cout<<"\n\t\tTanggal Check Out [DDMMYY] : ";cin>>checkout;

cout<<"\t\t==========================================================
=======================";

cout<<"\n\n\n\n\t\tData Pemesanan Kamar"<<endl;

cout<<"\t\t==========================================================
=======================";
cout<<"\n\t\tNama Resepsionis : "<<resepsionis;
cout<<"\n\t\tID Resepsionis : "<<id_resepsionis;
cout<<"\n\t\tNama Pemesan : "<<customer;
cout<<"\n\t\tID Pemesan : "<<id_customer;
cout<<"\n\t\tAlamat : "<<alamat;
cout<<"\n\t\tNo Telp/HP : "<<hp;
cout<<"\n\t\tTipe Kamar : "<<fixkam;
cout<<"\n\t\tNo. Kamar : ";
if(no_kamar >= 1 && no_kamar <= 100)
{
cout<<no_kamar;
}

68
else
{
cout<<"\n\t\tMaaf Nomer Kamar Belum Tersedia";
cout<<"\n\t\tSilahkan Hubungi Resepsionis Untuk Pergantian Nomer";
}
cout<<"\n\t\tLama Menginap : "<<lama<<" Hari";
cout<<"\n\t\tTanggal Check in : "<<checkin;
cout<<"\n\t\tTanggal Check out: "<<checkout;
cout<<"\n\t\tHarga Perhari : Rp. "<<harga_kamar;
cout<<"\n\t\tHarga Kamar Total: Rp. "<<lama*harga_kamar;
cout<<"\n\t\tDiskon : Rp. "<<diskon*harga_kamar<<endl;
total=harga_kamar*lama-(diskon*harga_kamar);

cout<<"\t\t==========================================================
=======================";
cout<<"\n\n\t\tBiaya Total : Rp. "<<total;
cout<<"\n\t\tUang Muka : Rp. ";cin>>um;
kurang=total-um;
if(total>=um)
{
cout<<"\n\t\tKekurangan : Rp. "<<kurang;
}
else
{
cout<<"\n\t\tKembali : Rp. "<<kurang*(-1);
}

cout<<"\n\t\t=========================================================
========================";

cout<<"\n\n\t\tTerima Kasih Telah Memilih Hotel ASMARA";


cout<<"\n\t\tSebagai Tempat Peristirahatan Anda";

69
cout<<endl;
cout<<"\n\n\t\tApakah Anda Ingin Memesan Kamar Lagi ? [Y/N]";cin>>jwb;
if(jwb=="Y" || jwb=="y")
{
goto awal;
}
else
{
cout<<"\n\n\t\tTerima Kasih Atas Kunjungannya";
}
getch();
}

70
Algoritma
Program tersebut adalah suatu program untuk memesan kamar hotel dengan input data
pengunjung seperti nama, jenis kelamin, nomor telepon, alamat, pilihan tipe kamar, dan lain-
lain. Program ini juga menghitung biaya total penginapan, memberikan diskon jika lama
menginap lebih dari 5 hari, dan menghitung uang muka serta sisa pembayaran.

Berikut adalah algoritma dari program tersebut:

Algoritma:

1. Mulai program.
2. Tampilkan pesan selamat datang dan informasi hotel.
3. Input data resepsionis, customer, dan informasi kamar.
4. Tentukan tipe kamar dan harga berdasarkan pilihan pengunjung.
5. Input nomor kamar, lama menginap, dan tanggal check-in dan check-out.
6. Hitung diskon berdasarkan lama menginap.
7. Tampilkan data pemesanan kamar termasuk harga, diskon, dan total biaya.
8. Input uang muka.
9. Hitung sisa pembayaran atau kembalian.
10. Tampilkan terima kasih dan tanyakan apakah ingin memesan kamar lagi.
11. Selesaikan Program.

71
Pseudocode

PROCEDURE PemesananKamarHotel()
DECLARE resepsionis, customer, alamat, jwb, id_customer, id_resepsionis, jk, hp, checkin,
checkout, fixkam STRING
DECLARE kamar, no_kamar, harga_kamar, ranjang, total, lama, um, kurang INTEGER
DECLARE diskon FLOAT

awal:
TampilkanPesanSelamatDatang()

// Input data pengunjung


InputDataPengunjung()

// Pilih tipe kamar dan bed


PilihTipeKamarDanBed()

// Hitung harga kamar


HitungHargaKamar()

// Input nomor kamar, lama menginap, dan tanggal check-in/out


InputDetailPemesanan()

// Hitung diskon berdasarkan lama menginap


HitungDiskon()

// Tampilkan data pemesanan


TampilkanDataPemesanan()

// Input uang muka


InputUangMuka()

72
// Hitung sisa pembayaran atau kembalian
HitungSisaPembayaran()

// Tampilkan pesan terima kasih


TampilkanPesanTerimaKasih()

// Tanya apakah ingin memesan kamar lagi


TanyaPemesananLagi()

// Jika ingin memesan lagi, kembali ke awal


JikaYaGotoAwal()

END PROCEDURE

73
Hasil Running

74
Kesimpulan

Dari program yang diberikan, kita dapat menyimpulkan beberapa hal:

Tujuan Program:
Program ini dirancang untuk melakukan pemesanan kamar hotel dengan mengumpulkan
informasi dari pengunjung seperti nama, nomor kamar, tipe kamar, lama menginap, dan lain-
lain.

Fungsionalitas Utama:
Pengguna dapat memilih tipe kamar dan bed.
Program menghitung total biaya penginapan, memberikan diskon jika lama menginap lebih
dari 5 hari, dan menghitung uang muka serta sisa pembayaran.
Program menampilkan ringkasan pemesanan termasuk informasi resepsionis, pengunjung,
tipe kamar, nomor kamar, dan biaya total.

Input dan Output:


Program menggunakan input dari pengguna seperti nama, ID, nomor kamar, lama menginap,
dll.
Program menampilkan informasi pemesanan, biaya, diskon, dan hasil transaksi kepada
pengguna.

Struktur Pemrograman:
Program menggunakan struktur kontrol if-else untuk menentukan tipe kamar dan bed.
Terdapat penggunaan pernyataan goto, yang dapat membuat alur program menjadi sulit
dipahami dan dipelihara.

Kekurangan:
Penggunaan goto dapat menyebabkan kode sulit dipelihara dan memahaminya. Penggunaan
struktur kontrol seperti loop dan fungsi dapat meningkatkan kejelasan kode.
Tidak adanya penanganan kesalahan input atau validasi input yang baik.

75
Kesimpulan Akhir:
Program ini dapat digunakan untuk keperluan pemesanan kamar hotel sederhana, tetapi perlu
beberapa perbaikan dan penyempurnaan untuk membuatnya lebih terstruktur dan mudah
dimengerti.

76

Anda mungkin juga menyukai