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 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.
[Elvara Luna]
[4523210040]
2
Daftar Isi
3
LAPORAN PRAKTIKUM 1-13
Modul Praktikum ke : 1
Contoh Soal
Algoritma:
Pseudocode:
2. Lakukan
b. Lakukan
4
i. Tampilkan karakter "I".
d. Tampilkan newline.
e. Tingkatkan nilai n.
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 :
5
Flowchart :
Start
Masukan Nama
Karyawan
Tetapkan
Gaji/Bulan
1.000.000
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 :
7
Flowchart :
Start
Masukan
alas
Maukan
tinggi
luas = 0.5 *
alas * tinggi
Tampilkan
Luas Segitiga
end
8
Hasil Running Kedua Program :
Modul Praktikum ke : 2
Contoh Soal
9
Algoritma:
Pseudocode:
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
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:
Pseudocode:
11. Tampilkan "Total gaji yang diterima Pak Anto adalah Rp.[totalGaji]"
12
Nama : Elvara Luna
NPM : 4523210040
Modul Praktikum ke : 3
Contoh Soal
Algoritma:
Pseudocode:
13
2. Tampilkan pesan "Menampilkan Nilai A dan B".
6. A = A + 2.
7. B = B + 4.
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:
Pseudocode:
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:
16
NPM : 4523210040
Modul Praktikum ke : 4
Contoh Soal
Algoritma:
Pseudocode:
17
2. Tampilkan pesan "Menampilkan Nilai A dan B".
5. A = A + 22.
6. B = akar_kuadrat(A).
10. Selesai.
Program:
Algoritma:
Pseudocode:
1. Inisialisasi counter = 0
18
a. Tampilkan "Universitas Pancasila Fakultas Teknik Jurusan Teknik Informatika"
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:
19
a. Jika IPS lebih besar dari ipsTertinggi, perbarui ipsTertinggi dengan nilai IPS tersebut dan set
jumlahMahasiswa menjadi 1.
Pseudocode:
3. Inisialisasi jumlahMahasiswa = 0
i. Tambahkan 1 ke jumlahMahasiswa
20
Nama : Elvara Luna
NPM : 4523210040
Modul Praktikum ke : 5
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:
Pseudocode:
1. Inisialisasi angka = -8
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:
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
NPM : 4523210040
Modul Praktikum ke : 5
23
Contoh Soal
Algoritma:
Pseudocode:
24
19. Menampilkan perpindahan dengan jumlah menara dan keping step by step tanpa menggunakan
inputan (nama file : Prak6-19.cpp)
Program :
Algoritma:
Pseudocode:
1. Inisialisasi jumlahKeping = 3
25
2. Inisialisasi jumlahMenara = 3
Hasil Running :
26
Nama : Elvara Luna
NPM : 4523210040
Modul Praktikum ke : 8
Contoh Soal
Pseudocode
Nilai = {{11, 22, 33, 44}, {63, 11, 66, 7}, {22, 28, 11, 7}}
27
5. Loop untuk m dari 0 hingga 2
i. Tampilkan Nilai[m][a]
b. Tampilkan newline
Algortma :
2. Inisialisasi Variabel:
Variabel m, a
3. Tampilkan Pesan:
Tampilkan "Menampilkan ARRAY/LARIK 2 Dimensi"
4. Tampilkan Pemisah:
Tampilkan "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
Loop untuk m:
i. Tampilkan Nilai[m][a]
b. Tampilkan newline
6. Tunggu Input:
Tunggu input dari pengguna (gunakan cin.get())
28
Algoritma:
Tampilkan pesan informasional tentang "ARRAY/LARIK 2 Dimensi" dan "Dengan Ordo 4x4 Melalui
Inputan".
Tampilkan newline.
Tampilkan newline.
Pseudocode:
29
2. Inisialisasi variabel m, a
7. Tampilkan newline
9. Tampilkan newline
b. Tampilkan newline
47. Kalikan dua buah matriks dengan ordo 4x4 dan 4x4 (nama file : P08-47.ccp):
Program :
30
Algoritma:
**
***
*******
***********
*******
***
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:
32
Hasil Running Program :
NPM : 4523210040
Modul Praktikum ke : 9
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:
34
Pseudocode:
result = d / e
Kembalikan result
NPM : 4523210040
Modul Praktikum ke : 10
Contoh Soal
35
Algoritma:
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:
3. Inisialisasi variabel l.
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:
5. Tampilkan hasilnya
38
Hasil Running :
NPM : 4523210040
Modul Praktikum ke : 12
SOAL
Buat Penjualan Toko Bagus (nama file : P12-04.ccp): Dengan aturan sebagai berikut:
- 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
totalbayar : float
40
DESKRIPSI
scanf("%d", &jumlahPelanggan)
totalbarang = 0
totalbayar = 0
printf("\nPelanggan ke-%d:\n", i + 1)
endfor
printf("Nama: ")
scanf("%s", pelanggan->nama)
printf("Alamat: ")
scanf("%s", pelanggan->alamat)
printf("Telephone: ")
scanf("%s", pelanggan->telephone)
scanf("%d", &(pelanggan->jumlahBarang))
totalBarang += pelanggan->jumlahBarang
totalBayar += pelanggan->totalBayar
printf("\n=======================================================\n")
printf("========================================================\n")
endfor
41
printf("| %3d | %-10s | %-15s | %-11s |\n", i + 1, pelanggan->nama, pelanggan->alamat,
pelanggan->telephone)
printf("========================================================\n")
printf("========================================================\n")
ALGORITMA
1. Mulai / Start.
3. Terima input dari pengguna untuk jumlah pelanggan yang akan melakukan pembelian
(jumlah_pelanggan).
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.
6. Tampilkan total keseluruhan barang yang terjual dan total pendapatan dari semua pelanggan.
7. Selesai / End
42
Nama : Elvara Luna
NPM : 4523210040
Modul Praktikum ke : 13
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
INPUT nama
INPUT npm
PRINT "Masukkan Golongan Darah (A Reshus +, A Reshus -, B Reshus +, B Reshus -): "
INPUT golongan_darah
TUTUP_FILE(file)
ELSE
END IF
End Procedure
44
ALGORITMA
1. Inisialisasi variabel
BACA nama
BACA npm
TAMPILKAN "Masukkan Golongan Darah (A Reshus +, A Reshus -, B Reshus +, B Reshus -): "
BACA golongan_darah
TUTUP_FILE(file)
ELSE
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:
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.
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.
56
}
}
tukar(arr[i + 1], arr[high]);
return i + 1;
}
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.
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.
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.
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<<"\t\t==========================================================
=======================";
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;
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<<"\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=========================================================
========================";
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.
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()
72
// Hitung sisa pembayaran atau kembalian
HitungSisaPembayaran()
END PROCEDURE
73
Hasil Running
74
Kesimpulan
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.
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