ALGORITMA
(Materi kuliah Semester 3)
♦ Pengertian Algoritma
Algoritma adalah urutan langkah-langkah yang tersusun secara sistematis untuk menyelesaikan suatu permasalahan. Contohnya seperti jika kita memasak mie kita harus menyiapkan alat dan bahannya terlebih dahulu, lalu kita proses hingga mie instannya siap disajikan.
♦ Tujuan / fungsi Algoritma
Tujuan dan fungsi algoritma adalah untuk memberikan langkah-langkah yang jelas, logis dan sistematis dalam menyelesaikan suatu masalah, sehingga proses menjadi lebih mudah, efisien, terstruktur serta dapat digunakan kembali untuk menyelesaikan permasalahan sejenis.
♦ Macam-macam Algoritma
1. Algoritma rekursif
Algoritma yang memanggil dirinya sendiri sampai mencapai kondisi berhenti. Kegunaannya adalah untuk menghitung faktorial, deret Fibonacci, Menara Hanoi, traversal pohon
2. Linear Search
Metode pencarian dengan memeriksa data satu persatu dari awal hingga akhir. Contohnya adalah untuk mencari nama dalam daftar, mencari nomor hp dalam kontak.
3. Binary search
Metode pencarian dengan membagi data menjadi dua bagian (harus terurut). Contohnya adalah mencari data pada array terurut seperti mencari nilai mahasiswa
4. Bubble Sort
Mengurutkan data dengan menukar elemen berdekatan secara berulang. Contohnya seperti Mengurutkan nilai ujian dan juga daftar barang
5. Selection Sort
Mengurutkan dengan cara memilih elemen terkecil/ terbesar lalu menukarnya. Contohnya adalah mengurutkan rangking atau daftar barang
♦ Contoh Penerapan
1. Penerapan dikehidupan sehari-hari
- Contohnya memasak mie instan
- siapkan panci dan isi dengan air secukupnya
- panaskan air sampai mendidih
- masukkan mie ke dalam air mendidih
- tunggu 3 menit hingga mie matang
- tiriskan mie dari air
- campurkan mie dengan bumbu yang sudah disediakan
- aduk hingga rata
- Mie siap disajikan
2. Penerapan dalam pemrograman (codingan)
- Contoh Faktorial dengan Rekursif
int faktorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * faktorial(n - 1);
}
}
♦ Flowchart
- Contoh Flowchart proses memasak mie instan
♣ Tugas 1 Algoritma
- Nama : Maryam
- Nim : D0224038
- Kelas : Informatika C
♣ CONTOH KASUS ♣
Bidang Pendidikan : Seorang guru memberikan tugas kepada siswa untuk mengurutkan huruf acak (A,B,C,D,E) agar berurutan dari yang terkecil ke terbesar
- Identifikasi Masalah
→ Siswa sering menuliskan huruf dalam urutan acak, misalnya : D, A, C ,B E
→ Guru ingin agar siswa bisa menyusun ulang huruf itu menjadi urutan alfabetis yang benar
- Pseudo code
1. Asumsikan bahwa huruf pertama adalah huruf terkecil
2. Bandingkan huruf pertama dengan huruf di sampingnya
3. Bila huruf pertama lebih besar, tukar posisinya dengan huruf di sampingnya
4. Lanjutkan membandingkan sampai huruf terakhir
5. Ulangi langkah pertama hingga tidak ada lagi huruf yang perlu ditukar
- Input
Pada tahap ini, kita mulai dari apa saja yang harus dimasukkan atau disiapkan agar program bisa dijalankan. Input biasa berupa data mentah yang nantinya akan diolah. Misalhnya, dalam kasus ini kita memasukkan sekumpulan huruf acak.
→ Data huruf acak, contoh : D, A, C, B, E.
char [] huruf = {'D','A','C','B','E'}
char [] huruf = {'D','A','C','B','E'}
- Proses
Bagian ini adalah inti dari jalannya program. Data yang harus dimasukkan pada tahap input akan diolah sesuai dengan algoritma yang digunakan. Dalam studi kasus kita, huruf-huruf acak tersebut akan diproses menggunakan metode pengurutan agar hasilnya menjadi lebih teratur, seperti langkah demi langkah dibawah ini
Langkah 1 : Bandingkan D dengan A → tukar → {A, D, C, B, E}Langkah 2 : Bandingkan D dengan C → tukar → {A, C, D, B, E}
Langkah 3 : Bandingkan D dengan B → tukar → {A, C, B, D, E}
Langkah 4 : Bandingkan D dengan E → tidak tukar
Langkah 5 : Ulangi langkah diatas sampai urutan besar
for (int i = 0; i < huruf.length; i++) {
for (int j = 0; j < huruf.length - 1 - i; j++) {
if (huruf[j] > huruf[j + 1]) {
char temp = huruf[j];
huruf[j] = huruf[j + 1];
huruf[j + 1] = temp;
}
}
}
- Output
Setelah semua data selesai diproses, maka kita akan memperoleh hasil akhirnya. Output ini merupakan bentuk yang sudah rapi atau sudah terurut dari data acak yang kita masukkan tadi. Dengan begitu, kita bisa melihat perbedaan antara data awal dan data hasil akhirnya.
→ Huruf sudah terurut : {A, B, C, D, E}
Algoritma pengurutan yang digunakan dalam kasus ini adalah Bubble Sort. Algoritma ini dipilih karena
sederhana, mudah dipahami
dan sangat cocok digunakan dalam jumlah data yang relatif kecil, seperti mengurutkan huruf A sampai E.
Prosesnya jelas, yaitu
dengan cara membandingkan elemen yang bersebelahan lalu menukarnya jika urutannya salah, dan langkah
tersebut diulang hingga seluruh
data tersusun rapi. Keunggulan dari algoritma ini adalah hasil akhirnya pasti terurut, meskipun input yang
diberikan berupa data acak.
Jika suatu saat input yang dimasukkan berubah, misalnya dari sekumpulan huruf {'D','A','C','B','E'} menjadi
{'Z','M','K','A'}, maka prosedur
utama algoritma tidak perlu diubah secara keseluruhan. Perubahan hanya terjadi pada bagian input, karena
proses Bubble Sort akan secara
otomatis menyesuaikan dengan data yang baru. Sementara itu, langkah-langkah proses dan output tetap sama,
yaitu data akan diurutkan
dari elemen terkecil ke terbesar sesuai dengan aturan perbandingan yang berlaku. Dengan kata lain, perubahan
input tidak mengubah alur
algoritma, hanya hasil akhir yang akan menyesuaikan dengan data yang baru saja dimasukkan.
Contoh situasi
- Kasus awal : Input = {'D','A','C','B','E'}
- Kasus baru : Input diganti jadi= {'Z','M','K','A'}
→ Outputnya otomatis akan menyesuaikan : {'A','K','M','Z'}
Prosedur yang perlu diubah hanyalah pada bagian input
-
1. awalnya
char [] huruf = {'D','A','C','B','E'};
2. Setelah di ubah
char [] huruf = {'Z','M','K','A'};
Agar algoritma ini tidak hanya efisien dan efektif, tetapi juga adil dan transparan, maka aturan yang digunakan pun harus jelas, konsisten dan bisa dengan mudah dipahami. Pada algoritma bubble sort ini, setiap data akan diperlakukan sama karena perbandingan dan pertukaran dilakukan dengan kriteria yang setara. Selain itu, hasil dari input yang sama akan selalu konsisten, dan prosedur kerjanya dapat ditelusuri. Dengan demikian, algoritma ini bisa dipercaya karena hasilnya dapat dijelaskan secara terbuka.