Dosen Pengampu
Ditulis Oleh :
FAKULTAS TEKNIK
2023
Hasil Laporan
Pada pertemuan kemarin, kita membicarakan topik yang sejauh mana algoritma dapat
mempengaruhi kinerja aplikasi yang sedang kita kembangkan dalam hal penggunaan waktu
dan ruang. Seiring berjalannya waktu, saya semakin menyadari betapa pentingnya untuk
secara cermat menilai sejauh mana algoritma ini berdampak pada aplikasi yang sedang kita
garap. Hal ini membuka wawasan baru dalam pandangan saya tentang cara merancang
perangkat lunak yang efektif.
Kepentingan algoritma yang efisien dalam pengelolaan waktu dan ruang menjadi semakin
nyata. Ini tidak hanya tentang memastikan aplikasi berjalan dengan cepat, tetapi juga
mengenai bagaimana kita dapat menghemat sumber daya yang berharga. Ketika algoritma
yang digunakan dalam aplikasi kita dioptimalkan dengan baik, ini dapat mengurangi
konsumsi daya baterai perangkat pengguna dan meningkatkan respons aplikasi secara
keseluruhan.
saya mulai memahami prinsip dasar dalam mengevaluasi efektivitas algoritma, seperti yang
ditunjukkan dalam contoh program di bawah ini yang menggunakan perulangan "for loop":
Untuk mengevaluasi efektivitas algoritma di dalam kode tersebut, kita dapat menghitung
eksekusi pada setiap baris sintaks yang akan dieksekusi:
do {
hasilTotal2 = hasilTotal2 + indeks2;
indeks2++;
} while (indeks2 < jumlahData2);
int nilaiRata2 = hasilTotal2 / jumlahData2;
do {
hasilTotal2 = hasilTotal2 + indeks2; // n (10) kali eksekusi
indeks2++; // n (10) kali eksekusi
} while (indeks2 < jumlahData2); // n (10) kali eksekusi
n(10) + n(10) + n(10) = 30 kali eksekusi
Pada baris ketiga :
Dapat di simpulkan bahwa algoritma for loop lebih efektif dalam persamaan waktu eksekusi
daripada menggunakan do while yang dimana membutuhkan 35 kali eksekusi sedangkan
jika menggunakan for loop cukup membutuhkan 15 kali eksekusi saja.
Tugas 1
Algoritma mencari bilangan prima dengan menggunakan for loop :
if (isPrime) {
System.out.print(num + " "); // 1 kali eksekusi pada setiap iterasi
(hanya jika num adalah bilangan prima)
totalEksekusi++; // 1 kali eksekusi pada setiap iterasi
}
totalEksekusi++; // 1 (increment num) kali eksekusi pada setiap iterasi
}
do {
for (int num : bilangan) {
boolean isPrime = true; // 1 kali eksekusi pada setiap iterasi
if (num < 2) {
isPrime = false; // 1 kali eksekusi pada setiap iterasi
} else {
if (num == 2) {
isPrime = true; // 1 kali eksekusi pada setiap iterasi
} else if (num % 2 == 0) {
isPrime = false; // 1 kali eksekusi pada setiap iterasi
} else {
int divisor = 3; // 1 kali eksekusi pada setiap iterasi
while (divisor * divisor <= num) { // 1 (cek kondisi) kali
eksekusi pada setiap iterasi
if (num % divisor == 0) {
isPrime = false; // 1 kali eksekusi pada setiap
iterasi
break; // 1 kali eksekusi pada setiap iterasi
}
totalEksekusi += 3; // 1 (pengecekan kondisi) + 1
(increment divisor) + 1 (perbandingan divisor dengan akar num) kali eksekusi
pada setiap iterasi
divisor += 2; // 1 kali eksekusi pada setiap iterasi
}
}
}
if (isPrime) {
System.out.print(num + " "); // 1 kali eksekusi pada setiap
iterasi (hanya jika num adalah bilangan prima)
totalEksekusi++; // 1 kali eksekusi pada setiap iterasi
}
totalEksekusi++; // 1 (increment num) kali eksekusi pada setiap
iterasi
}
i++; // 1 kali eksekusi pada setiap iterasi
totalEksekusi++; // 1 (increment i) kali eksekusi pada setiap iterasi
} while (i <= 2); // 1 (cek kondisi) kali eksekusi pada setiap iterasi
Kesimpulan :
Kesimpulan dari algoritma mencari bilangan prima menggunakan for loop dan do while loop
di atas adalah:
1. For Loop:
Algoritma menggunakan for loop untuk mengulangi iterasi pada setiap elemen dalam
array.
Perulangan dilakukan sebanyak elemen dalam array (15 kali dalam contoh ini).
Pada setiap iterasi, algoritma melakukan pengujian apakah suatu angka adalah bilangan
prima dengan menggunakan nested for loop.
Jika suatu angka adalah bilangan prima, maka algoritma mencetaknya.
Total eksekusi adalah 78 kali.
2. Do While Loop:
Algoritma menggunakan do while loop untuk mengulangi iterasi pada setiap elemen
dalam array.
Perulangan dilakukan sebanyak dua kali (terbatas pada dua iterasi).
Pada setiap iterasi, algoritma menguji apakah suatu angka adalah bilangan prima
dengan menggunakan nested for loop.
Jika suatu angka adalah bilangan prima, maka algoritma mencetaknya.
Total eksekusi adalah 272 kali.
Kesimpulan umumnya adalah bahwa algoritma dengan for loop jauh lebih efisien daripada
do while loop dalam hal jumlah eksekusi. Do while loop pada contoh di atas memiliki
overhead eksekusi yang jauh lebih tinggi karena ada dua iterasi dan lebih banyak kondisi
yang diuji. Oleh karena itu, algoritma menggunakan for loop lebih efisien dalam mencari
bilangan prima dalam array.