Lompat ke konten Lompat ke sidebar Lompat ke footer

Merancang Algoritma dan Membuat Program

Konsep Dasar Algoritma 

  1. Definisi Algoritma: Algoritma adalah langkah-langkah sistematis untuk menyelesaikan suatu masalah yang ditulis secara terstruktur dan logis.
  2. Karakteristik Algoritma:Finite (Terbatas): Algoritma harus memiliki jumlah langkah yang terbatas.
    1. Definiteness (Jelas): Setiap langkah dalam algoritma harus didefinisikan dengan jelas.
    2. Input dan Output: Algoritma harus memiliki nol atau lebih input dan menghasilkan minimal satu output.
    3. Efisiensi: Algoritma harus dirancang untuk menghasilkan hasil yang optimal dalam waktu yang efisien.
  3. Langkah-Langkah Merancang Algoritma:Identifikasi Masalah
    1. Analisis Kebutuhan
    2. Desain Algoritma (Pseudocode atau Flowchart)
    3. 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: 
  • Input: Sebuah bilangan bulat non-negatif, n.
  • Output: Faktorial dari bilangan tersebut. 
Algoritma: 
  1. Ambil input bilangan n.
  2. Jika n = 0 atau n = 1, faktorial adalah 1.
  3. Jika n > 1, hitung faktorial dengan mengalikan semua bilangan dari 1 hingga n.
  4. 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;



Studi Kasus 2: Mencari Bilangan Terbesar dalam Array

Deskripsi Masalah: 
Cari bilangan terbesar dalam sebuah array.

Analisis Kebutuhan: 
  • Input: Array arr dengan n elemen.
  • Output: Elemen terbesar dalam array.

Algoritma: 
  1. Ambil jumlah elemen array (n) dan isi array.
  2. Inisialisasi variabel max dengan elemen pertama array.
  3. Bandingkan setiap elemen array dengan max dan perbarui jika elemen tersebut lebih besar.
  4. 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: 
  1. Ambil input string str.
  2. Bandingkan karakter pertama dan terakhir hingga tengah string.
  3. Jika semua karakter sesuai, string adalah palindrome.
  4. 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: 
  • 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:

  1. Mencari Bilangan Prima: Buat program untuk menampilkan bilangan prima hingga angka tertentu.
  2. Menghitung Rata-Rata: Buat program untuk menghitung rata-rata nilai dari sejumlah input.
  3. Konversi Bilangan: Buat program untuk mengkonversi bilangan desimal ke biner.