Merancang Algoritma dan Membuat Program
Konsep Dasar Algoritma
- Definisi Algoritma: Algoritma adalah langkah-langkah sistematis untuk menyelesaikan suatu masalah yang ditulis secara terstruktur dan logis.
- Karakteristik Algoritma:Finite (Terbatas): Algoritma harus memiliki jumlah langkah yang terbatas.
- Definiteness (Jelas): Setiap langkah dalam algoritma harus didefinisikan dengan jelas.
- Input dan Output: Algoritma harus memiliki nol atau lebih input dan menghasilkan minimal satu output.
- Efisiensi: Algoritma harus dirancang untuk menghasilkan hasil yang optimal dalam waktu yang efisien.
- Langkah-Langkah Merancang Algoritma:Identifikasi Masalah
- Analisis Kebutuhan
- Desain Algoritma (Pseudocode atau Flowchart)
- Implementasi (Konversi ke kode program)
Studi Kasus dan Contoh Program
Studi Kasus 1: Menghitung Faktorial
Deskripsi Masalah:Buat program untuk menghitung faktorial dari suatu bilangan bulat positif.
Analisis Kebutuhan:
Analisis Kebutuhan:
- Input: Sebuah bilangan bulat non-negatif, n.
- Output: Faktorial dari bilangan tersebut.
Algoritma:
Pseudocode:
Start
Input n
If n = 0 or n = 1 Then
Output 1
Else
result = 1
For i = 1 to n Do
result = result * i
End For
- Ambil input bilangan n.
- Jika n = 0 atau n = 1, faktorial adalah 1.
- Jika n > 1, hitung faktorial dengan mengalikan semua bilangan dari 1 hingga n.
- Tampilkan hasil.
Pseudocode:
Start
Input n
If n = 0 or n = 1 Then
Output 1
Else
result = 1
For i = 1 to n Do
result = result * i
End For
Output result
End
Implementasi C++:
#include <iostream>
using namespace std;
int factorial(int n) {
if (n <= 1)
return 1;
return n * factorial(n - 1);
}
int main() {
int n;
cout << "Masukkan bilangan: ";
cin >> n;
if (n < 0) {
cout << "Faktorial tidak terdefinisi untuk bilangan negatif." << endl;
} else {
cout << "Faktorial dari " << n << " adalah " << factorial(n) << endl;
}
return 0;
}
End
Implementasi C++:
#include <iostream>
using namespace std;
int factorial(int n) {
if (n <= 1)
return 1;
return n * factorial(n - 1);
}
int main() {
int n;
cout << "Masukkan bilangan: ";
cin >> n;
if (n < 0) {
cout << "Faktorial tidak terdefinisi untuk bilangan negatif." << endl;
} else {
cout << "Faktorial dari " << n << " adalah " << factorial(n) << endl;
}
return 0;
}
Studi Kasus 2: Mencari Bilangan Terbesar dalam Array
Deskripsi Masalah:Cari bilangan terbesar dalam sebuah array.
Analisis Kebutuhan:
Analisis Kebutuhan:
- Input: Array arr dengan n elemen.
- Output: Elemen terbesar dalam array.
Algoritma:
- Ambil jumlah elemen array (n) dan isi array.
- Inisialisasi variabel max dengan elemen pertama array.
- Bandingkan setiap elemen array dengan max dan perbarui jika elemen tersebut lebih besar.
- Tampilkan elemen terbesar.
Implementasi C++:
#include <iostream>
using namespace std;
int main() {
int n;
cout << "Masukkan jumlah elemen array: ";
cin >> n;
int arr[n];
cout << "Masukkan elemen array: \n";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
cout << "Elemen terbesar adalah: " << max << endl;
return 0;
}
Studi Kasus 3: Validasi Palindrome
Deskripsi Masalah:Periksa apakah sebuah string adalah palindrome.
Analisis Kebutuhan: Input: Sebuah string, str.
Output: Pesan apakah string adalah palindrome atau bukan.
Algoritma:
Analisis Kebutuhan: Input: Sebuah string, str.
Output: Pesan apakah string adalah palindrome atau bukan.
Algoritma:
- Ambil input string str.
- Bandingkan karakter pertama dan terakhir hingga tengah string.
- Jika semua karakter sesuai, string adalah palindrome.
- Tampilkan hasil.
Implementasi C++:
#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(string str) {
int start = 0, end = str.length() - 1;
while (start < end) {
if (str[start] != str[end])
return false;
start++;
end--;
}
return true;
}
int main() {
string str;
cout << "Masukkan string: ";
cin >> str;
if (isPalindrome(str)) {
cout << str << " adalah palindrome." << endl;
} else {
cout << str << " bukan palindrome." << endl;
}
return 0;
}
Studi Kasus 4: Program ATM Sederhana
Deskripsi Masalah:Simulasikan proses penarikan uang dari ATM.
Analisis Kebutuhan:
Analisis Kebutuhan:
- Input: Pilihan menu dan jumlah uang yang ingin ditarik.
- Output: Informasi saldo setelah transaksi.
Implementasi C++:
#include <iostream>
using namespace std;
int main() {
int saldo = 500000; // Saldo awal
int pilihan, jumlah;
cout << "Selamat datang di ATM\n";
cout << "1. Cek Saldo\n2. Tarik Tunai\n3. Keluar\n";
do {
cout << "Masukkan pilihan: ";
cin >> pilihan;
switch (pilihan) {
case 1:
cout << "Saldo Anda: Rp" << saldo << endl;
break;
case 2:
cout << "Masukkan jumlah yang ingin ditarik: ";
cin >> jumlah;
if (jumlah > saldo) {
cout << "Saldo tidak mencukupi." << endl;
} else {
saldo -= jumlah;
cout << "Transaksi berhasil. Saldo Anda: Rp" << saldo << endl;
}
break;
case 3:
cout << "Terima kasih telah menggunakan layanan kami." << endl;
break;
default:
cout << "Pilihan tidak valid." << endl;
}
} while (pilihan != 3);
return 0;
}
Tugas Mandiri:
- Mencari Bilangan Prima: Buat program untuk menampilkan bilangan prima hingga angka tertentu.
- Menghitung Rata-Rata: Buat program untuk menghitung rata-rata nilai dari sejumlah input.
- Konversi Bilangan: Buat program untuk mengkonversi bilangan desimal ke biner.