Konsep Dasar Algoritma ( Part I ).

Hans Beaver
12 min readDec 31, 2022

--

Just Cover

Sebuah alur kerja dalam penyelesaian suatu masalah dapat dikatakan sebagai algoritma jika memenuhi konsep — konsep berikut ini :

  • Finiteness ( Keterbatasan ).
  • Definiteness ( Kepastian ).
  • Input ( Masukan ).
  • Output ( Keluaran ).
  • Effectiveness ( Efektivitas ).

Mari kita bahas lebih jelas satu persatu agar lebih mudah memahami konsep-konsep algoritma tersebut.

1 . Finiteness ( Keterbatasan ).

Abstraction

Di ringkasan sebelumnya kita telah membahas beberapa konsep, termasuk finiteness juga. Namun mari kita dalami lebih lanjut di bagian ini dengan mengajukan pertanyaan-pertanyaan mendasar berikut :

  • Apa itu Finiteness ?
  • Bagaimana cara kerja Finiteness ?
  • Apa manfaat Finiteness ?
  • Apa contoh penerapan Finiteness ?
  • Implementasi Finiteness dalam kode pemrograman.

A. Apa itu Finiteness ?

Finiteness merupakan konsep yang berkaitan dengan keterbatasan atau kesudahan dari sebuah proses atau operasi yang dilakukan oleh algoritma tersebut. Secara khusus, finiteness dalam algoritma mengacu pada kemampuan sebuah algoritma untuk menyelesaikan suatu proses atau operasi dalam waktu yang terbatas dan tidak terus menerus.

B. Bagaimana cara kerja Finiteness ?

Cara kerja finiteness dalam algoritma tergantung pada jenis algoritma yang sedang digunakan. Namun, secara umum, finiteness dalam algoritma bekerja dengan cara mengatur agar proses atau operasi yang dilakukan oleh algoritma tersebut dapat diselesaikan dalam waktu yang terbatas dan tidak terus menerus.

C. Apa manfaat Finiteness ?

Manfaat finiteness dalam algoritma sangat banyak, diantaranya :

  1. Mencegah crash atau freeze pada sistem: Algoritma yang tidak memiliki finiteness dapat mengakibatkan masalah seperti crash atau freeze pada sistem yang menjalankan algoritma tersebut, karena proses yang terus menerus akan menyebabkan pemakaian sumber daya komputer yang berlebihan. Dengan memastikan bahwa algoritma memiliki finiteness, maka kita dapat menghindari masalah tersebut.
  2. Meningkatkan efisiensi: Algoritma yang memiliki finiteness akan lebih efisien dibandingkan dengan algoritma yang tidak memiliki finiteness, karena proses yang dilakukan oleh algoritma tersebut dapat diselesaikan dalam waktu yang terbatas dan tidak terus menerus. Hal ini akan menghemat sumber daya komputer dan mempercepat waktu yang dibutuhkan untuk menyelesaikan proses tersebut.
  3. Meningkatkan keandalan: Algoritma yang memiliki finiteness akan lebih dapat diandalkan dibandingkan dengan algoritma yang tidak memiliki finiteness, karena proses yang dilakukan oleh algoritma tersebut dapat diselesaikan dalam waktu yang terbatas dan tidak terus menerus. Hal ini akan mengurangi kemungkinan terjadinya error atau masalah pada proses yang dilakukan oleh algoritma tersebut.
  4. Memudahkan dalam pemeliharaan dan perbaikan: Algoritma yang memiliki finiteness akan lebih mudah dalam pemeliharaan dan perbaikan dibandingkan dengan algoritma yang tidak memiliki finiteness, karena proses yang dilakukan oleh algoritma tersebut dapat diselesaikan dalam waktu yang terbatas dan tidak terus menerus. Hal ini akan memudahkan kita dalam menganalisis dan mencari solusi untuk masalah yang mungkin terjadi pada proses yang dilakukan oleh algoritma tersebut.

D. Apa contoh penerapan Finiteness ?

Contoh penerapan finiteness dalam algoritma adalah sebagai berikut :

  1. Algoritma pencarian: Algoritma pencarian merupakan algoritma yang dirancang untuk mencari elemen tertentu dalam sebuah array atau struktur data lainnya. Finiteness dapat diterapkan pada algoritma pencarian dengan mengatur agar algoritma tersebut hanya menjalankan proses pencarian selama jumlah elemen yang ada dalam array atau struktur data tersebut. Setelah algoritma menemukan elemen yang dicari atau menjalani proses pencarian selama jumlah elemen yang ada dalam array, maka proses pencarian akan diakhiri dan algoritma tersebut akan mengembalikan hasilnya.
  2. Algoritma sorting: Algoritma sorting merupakan algoritma yang dirancang untuk mengurutkan elemen-elemen dalam sebuah array atau struktur data lainnya. Finiteness dapat diterapkan pada algoritma sorting dengan mengatur agar algoritma tersebut hanya menjalankan proses pengurutan selama jumlah elemen yang ada dalam array atau struktur data tersebut. Setelah algoritma selesai mengurutkan elemen-elemen dalam array atau struktur data tersebut, maka proses pengurutan akan diakhiri dan algoritma tersebut akan mengembalikan hasilnya.
  3. Algoritma pemecahan masalah: Algoritma pemecahan masalah merupakan algoritma yang dirancang untuk menemukan solusi atas suatu masalah yang dihadapi. Finiteness dapat diterapkan pada algoritma pemecahan masalah dengan mengatur agar algoritma tersebut hanya menjalankan proses pemecahan masalah selama jumlah langkah yang ditentukan atau selama waktu yang ditentukan. Setelah algoritma menemukan solusi atas masalah yang dihadapi atau menjalani proses pemecahan masalah selama jumlah langkah atau waktu yang ditentukan, maka proses pemecahan masalah akan diakhiri dan algoritma tersebut akan mengembalikan hasilnya.

E. Implementasi Finiteness dalam kode pemrograman.

Berikut ini adalah contoh implementasi finiteness dalam kode pemrograman menggunakan bahasa pemrograman C++ :

1 . Algoritma pencarian :

#include <iostream>
using namespace std;

int linear_search(int arr[], int n, int x) {
for (int i = 0; i < n; i++) {
if (arr[i] == x) {
return i;
}
}
return -1;
}

int main() {
int arr[] = {1, 2, 3, 4, 5};
int x = 3;
int result = linear_search(arr, 5, x);
if (result != -1) {
cout << "Elemen ditemukan pada index " << result << endl;
} else {
cout << "Elemen tidak ditemukan dalam array" << endl;
}
return 0;
}

Pada kode di atas, algoritma pencarian linear telah diterapkan dengan menggunakan loop for yang akan berjalan selama jumlah elemen yang ada dalam array arr. Setelah loop for selesai berjalan, maka proses pencarian akan diakhiri dan hasilnya akan dikembalikan oleh fungsi linear_search(). Dengan demikian, algoritma pencarian linear ini memiliki finiteness.

2. Definiteness ( Kepastian ).

Abstraction

Mari kita dalami lebih lanjut di bagian ini dengan mengajukan pertanyaan-pertanyaan mendasar berikut :

  • Apa itu Definiteness ?
  • Bagaimana cara kerja Definiteness ?
  • Apa manfaat Definiteness ?
  • Implementasi Definiteness dalam kode pemrograman.

A. Apa itu Definiteness ?

Definiteness dalam algoritma merupakan salah satu kriteria yang harus dipenuhi oleh sebuah algoritma agar dapat dianggap valid. Definiteness dalam algoritma mengacu pada kejelasan atau ketepatan langkah-langkah yang harus dilakukan oleh algoritma tersebut dalam menyelesaikan suatu proses.

B. Bagaimana cara kerja Definiteness ?

Untuk memenuhi kriteria definiteness, sebuah algoritma harus memiliki langkah-langkah yang jelas dan terdefinisi dengan baik, serta tidak ada kebingungan atau ambiguitas dalam langkah-langkah tersebut. Langkah-langkah dalam algoritma harus dapat diikuti dengan mudah oleh orang lain yang membaca algoritma tersebut, tanpa perlu ada penjelasan tambahan.

C. Apa manfaat Definiteness ?

Definiteness dalam algoritma memiliki beberapa manfaat, diantaranya adalah :

  1. Mempermudah pemahaman: Definiteness dalam algoritma membantu dalam proses pemahaman algoritma tersebut, karena langkah-langkah yang harus dilakukan oleh algoritma tersebut jelas dan terdefinisi dengan baik, sehingga dapat dipahami dengan mudah oleh orang lain yang membaca algoritma tersebut.
  2. Mencegah ambiguitas: Definiteness dalam algoritma menghindari adanya kebingungan atau ambiguitas dalam langkah-langkah yang harus dilakukan oleh algoritma tersebut, sehingga proses pengaplikasian algoritma tersebut lebih mudah dilakukan.
  3. Menjamin keandalan: Definiteness dalam algoritma menjamin bahwa algoritma tersebut dapat diandalkan dalam proses pemecahan masalah, karena langkah-langkah yang harus dilakukan oleh algoritma tersebut jelas dan terdefinisi dengan baik, sehingga tidak ada kemungkinan kesalahan atau kebingungan dalam proses pengaplikasian algoritma tersebut.
  4. Mempercepat proses pemecahan masalah: Definiteness dalam algoritma membantu dalam proses pemecahan masalah dengan cara menyederhanakan informasi yang diberikan, sehingga proses pemecahan masalah dapat dilakukan lebih cepat dan efisien.
  5. Mempermudah proses debugging: Definiteness dalam algoritma membantu dalam proses debugging algoritma tersebut, karena langkah-langkah yang harus dilakukan oleh algoritma tersebut jelas dan terdefinisi dengan baik, sehingga lebih mudah untuk menemukan dan memperbaiki kesalahan yang terjadi dalam algoritma tersebut.

D. Implementasi Definiteness dalam kode pemrograman.

Berikut ini adalah contoh implementasi definiteness dalam kode pemrograman :

#include <iostream>
using namespace std;

int main()
{
int a, b, c;
cout << "Masukkan nilai a: ";
cin >> a;
cout << "Masukkan nilai b: ";
cin >> b;

// Langkah 1: Jika a lebih besar daripada b, maka c sama dengan a - b
// Langkah 2: Jika a lebih kecil atau sama dengan b, maka c sama dengan b - a
if (a > b)
c = a - b;
else
c = b - a;

cout << "Hasilnya adalah " << c << endl;
return 0;
}

Pada kode di atas, terdapat dua langkah yang harus dilakukan dalam algoritma tersebut. Langkah pertama adalah jika nilai a lebih besar daripada b, maka nilai c sama dengan a - b. Langkah kedua adalah jika nilai a lebih kecil atau sama dengan b, maka nilai c sama dengan b - a. Dengan demikian, algoritma tersebut memiliki definiteness karena langkah-langkah yang harus dilakukan jelas dan terdefinisi dengan baik, serta tidak ada kebingungan atau ambiguitas dalam langkah-langkah tersebut.

3. Input ( Masukan ).

Abstraction

Mari kita dalami lebih lanjut di bagian ini dengan mengajukan pertanyaan-pertanyaan mendasar berikut :

  • Apa itu Input ?
  • Bagaimana cara kerja Input ?
  • Apa manfaat Input ?
  • Implementasi Input dalam kode pemrograman.

A. Apa itu Input ?

Input dalam algoritma adalah data yang diberikan kepada algoritma tersebut untuk digunakan dalam proses pemecahan masalah atau untuk membuat output. Input dapat berupa data yang diberikan oleh pengguna, data yang diperoleh dari file atau database, atau data yang dihasilkan oleh algoritma lain. Input dalam algoritma merupakan bagian yang penting karena mempengaruhi proses pemecahan masalah yang dilakukan oleh algoritma tersebut.

B. Bagaimana cara kerja Input ?

Cara kerja input dalam algoritma tergantung pada bagaimana input tersebut diberikan. Berikut ini adalah beberapa cara kerja input dalam algoritma :

  1. Input dari pengguna: Input dapat diberikan oleh pengguna melalui perintah cin pada kode pemrograman. Pengguna akan diminta untuk memasukkan nilai yang diinginkan, dan nilai tersebut akan disimpan ke dalam variabel yang telah ditentukan.
  2. Input dari file atau database: Input dapat diperoleh dari file atau database dengan menggunakan perintah yang sesuai, seperti fopen() atau mysql_connect(). Setelah terhubung dengan file atau database, data dapat diambil dengan menggunakan perintah yang sesuai, seperti fscanf() atau mysql_query().
  3. Input dari algoritma lain: Input dapat diperoleh dari hasil proses pemecahan masalah yang dilakukan oleh algoritma lain. Misalnya, algoritma A akan mencari nilai terbesar dalam suatu array, dan hasil dari proses pencarian.

C. Apa manfaat Input ?

Manfaat input dalam algoritma adalah :

  1. Input dapat memberikan data yang diperlukan oleh algoritma untuk memecahkan masalah atau menghasilkan output yang diinginkan. Dengan demikian, input merupakan bagian yang penting dalam proses pemecahan masalah yang dilakukan oleh algoritma.
  2. Input dapat memudahkan pengguna dalam mengatur proses pemecahan masalah yang dilakukan oleh algoritma. Pengguna dapat memberikan input sesuai dengan kebutuhan yang diinginkan, sehingga proses pemecahan masalah yang dilakukan oleh algoritma akan lebih sesuai dengan kebutuhan tersebut.
  3. Input dapat membuat algoritma lebih fleksibel dan dapat digunakan untuk menyelesaikan berbagai jenis masalah. Pengguna dapat memberikan input yang berbeda-beda sesuai dengan masalah yang dihadapi, sehingga algoritma dapat digunakan untuk menyelesaikan berbagai jenis masalah.
  4. Input dapat membuat algoritma lebih efisien dalam menyelesaikan masalah. Dengan menggunakan input yang tepat, algoritma dapat menyelesaikan masalah dengan lebih cepat dan efisien, karena tidak perlu melakukan proses yang tidak perlu atau tidak relevan dengan masalah yang dihadapi.

D. Implementasi Input dalam kode pemrograman.

Berikut ini adalah contoh implementasi input dalam kode pemrograman :

#include <iostream>
using namespace std;

int main()
{
int a, b;
cout << "Masukkan nilai a: ";
cin >> a;
cout << "Masukkan nilai b: ";
cin >> b;

int c = a + b;
cout << "Hasilnya adalah " << c << endl;
return 0;
}

Pada kode di atas, input diberikan oleh pengguna melalui perintah cin, yang akan meminta pengguna untuk memasukkan nilai a dan b. Nilai a dan b kemudian akan digunakan dalam proses penjumlahan yang akan menghasilkan output berupa nilai c.

4. Output ( Keluaran ).

Abstraction

Mari kita dalami lebih lanjut di bagian ini dengan mengajukan pertanyaan-pertanyaan mendasar berikut :

  • Apa itu Output ?
  • Bagaimana cara kerja Output ?
  • Apa manfaat Output ?
  • Implementasi Output dalam kode pemrograman.

A. Apa itu Output ?

Output dalam algoritma adalah hasil yang dihasilkan oleh algoritma setelah melakukan proses pemecahan masalah atau pengolahan data. Output dapat berupa nilai atau variabel yang telah diproses oleh algoritma, teks yang dicetak ke layar, atau data yang disimpan ke dalam file atau database. Output merupakan bagian yang penting dalam algoritma karena memberikan informasi tentang hasil proses yang telah dilakukan oleh algoritma tersebut.

B. Bagaimana cara kerja Output ?

Cara kerja output dalam algoritma tergantung pada bagaimana output tersebut diberikan. Berikut ini adalah beberapa cara kerja output dalam algoritma :

  1. Output ke layar: Output dapat diberikan kepada pengguna melalui perintah cout pada kode pemrograman. Perintah tersebut akan mencetak teks atau nilai yang diinginkan ke layar.
  2. Output ke file: Output dapat disimpan ke dalam file dengan menggunakan perintah ofstream dan membuka file dengan nama yang diinginkan. Setelah terbuka, output dapat disimpan ke dalam file dengan menggunakan perintah output_file << output << endl;.
  3. Output ke database: Output dapat disimpan ke dalam database dengan menggunakan perintah yang sesuai, seperti mysql_query(). Output akan disimpan ke dalam tabel yang telah ditentukan di database tersebut.
  4. Output ke variabel: Output dapat disimpan ke dalam variabel yang telah ditentukan pada kode pemrograman. Misalnya, hasil dari proses pemecahan masalah dapat disimpan ke dalam variabel hasil, yang kemudian dapat digunakan oleh algoritma lain atau dicetak ke layar atau disimpan ke dalam file atau database.

C. Apa manfaat Output ?

Manfaat output dalam algoritma adalah :

  1. Output memberikan hasil dari proses pemecahan masalah yang dilakukan oleh algoritma. Dengan demikian, output merupakan bagian yang penting dalam algoritma karena memberikan informasi tentang hasil proses yang telah dilakukan oleh algoritma tersebut.
  2. Output memudahkan pengguna dalam mengetahui hasil proses yang dilakukan oleh algoritma. Dengan mencetak hasil ke layar atau menyimpan hasil ke dalam file atau database, pengguna dapat dengan mudah mengetahui hasil proses yang telah dilakukan oleh algoritma tersebut.
  3. Output dapat membantu pengguna dalam mengevaluasi hasil proses yang dilakukan oleh algoritma. Pengguna dapat mengevaluasi hasil proses dengan membandingkan hasil yang dihasilkan oleh algoritma dengan hasil yang diharapkan atau dengan menggunakan hasil tersebut sebagai dasar untuk membuat keputusan atau tindakan yang diperlukan.
  4. Output dapat membuat algoritma lebih mudah digunakan dan dipahami oleh pengguna. Dengan memberikan output yang jelas dan terstruktur, algoritma akan lebih mudah dipahami oleh pengguna sehingga dapat digunakan dengan lebih efektif.

D. Implementasi Output dalam kode pemrograman.

Berikut ini adalah contoh implementasi output dalam kode pemrograman :

#include <iostream>
using namespace std;

int main()
{
int a, b;
cout << "Masukkan nilai a: ";
cin >> a;
cout << "Masukkan nilai b: ";
cin >> b;

int c = a + b;
cout << "Hasilnya adalah " << c << endl;
return 0;
}

Pada kode di atas, output diberikan kepada pengguna melalui perintah cout, yang akan mencetak teks "Hasilnya adalah" diikuti dengan nilai c ke layar. Nilai c merupakan hasil dari proses penjumlahan yang telah dilakukan oleh algoritma tersebut.

5. Effectiveness ( Efektivitas ).

Abstraction

Mari kita dalami lebih lanjut di bagian ini dengan mengajukan pertanyaan-pertanyaan mendasar berikut :

  • Apa itu Effectiveness ?
  • Bagaimana cara kerja Effectiveness ?
  • Apa manfaat Effectiveness ?
  • Implementasi Effectiveness dalam kode pemrograman.

A. Apa itu Effectiveness ?

Efektivitas dalam algoritma adalah seberapa baik algoritma tersebut dapat menyelesaikan masalah yang dihadapinya dengan cara yang efisien. Efektivitas dapat diukur dengan menggunakan beberapa kriteria, seperti kecepatan algoritma dalam menyelesaikan masalah, jumlah langkah yang diperlukan untuk menyelesaikan masalah, dan penggunaan sumber daya seperti memori dan prosesor.

B. Bagaimana cara kerja Effectiveness ?

Cara kerja efektivitas dalam algoritma tergantung pada bagaimana efektivitas tersebut diukur. Berikut ini adalah beberapa cara kerja efektivitas dalam algoritma :

  1. Menggunakan waktu: Efektivitas dapat diukur dengan menggunakan waktu yang diperlukan untuk menyelesaikan masalah. Waktu yang diperlukan dapat dihitung dengan menggunakan fungsi clock() atau dengan mencatat waktu sebelum dan sesudah algoritma dieksekusi.
  2. Menggunakan jumlah langkah: Efektivitas dapat diukur dengan menggunakan jumlah langkah yang diperlukan untuk menyelesaikan masalah. Jumlah langkah dapat dihitung dengan menggunakan variabel yang mencatat jumlah langkah yang dilakukan oleh algoritma.
  3. Menggunakan penggunaan sumber daya: Efektivitas dapat diukur dengan menggunakan penggunaan sumber daya seperti memori dan prosesor. Penggunaan sumber daya dapat diukur dengan menggunakan fungsi yang tersedia pada sistem operasi atau dengan mencatat penggunaan sumber daya secara manual.

C. Apa manfaat Effectiveness ?

Manfaat efektivitas dalam algoritma adalah :

  1. Membantu meningkatkan kecepatan algoritma: Dengan mengukur dan meningkatkan efektivitas algoritma, algoritma tersebut akan lebih cepat dalam menyelesaikan masalah yang dihadapinya. Ini akan menghemat waktu dan sumber daya yang diperlukan untuk menjalankan algoritma tersebut.
  2. Memudahkan pengguna dalam memahami algoritma: Algoritma yang efektif akan lebih mudah dipahami oleh pengguna karena memiliki cara kerja yang jelas dan terstruktur. Hal ini akan memudahkan pengguna dalam menggunakan algoritma tersebut dan membuat algoritma tersebut lebih mudah dikembangkan.
  3. Meningkatkan keandalan algoritma: Algoritma yang efektif akan lebih andal dalam menyelesaikan masalah yang dihadapinya karena memiliki kecepatan dan jumlah langkah yang optimal. Hal ini akan meningkatkan keandalan algoritma tersebut dan meminimalkan kegagalan dalam menyelesaikan masalah.
  4. Meningkatkan efisiensi penggunaan sumber daya: Algoritma yang efektif akan menggunakan sumber daya secara efisien, sehingga tidak membebani sistem dan meminimalkan penggunaan sumber daya yang tidak perlu. Ini akan meningkatkan efisiensi penggunaan sumber daya dan menghemat biaya yang diperlukan untuk menjalankan algoritma tersebut.

D. Implementasi Effectiveness dalam kode pemrograman.

Berikut ini adalah contoh implementasi efektivitas dalam kode pemrograman :

#include <iostream>
#include <ctime>
using namespace std;

int main()
{
clock_t start, end;
start = clock();

int a[10000];
for (int i = 0; i < 10000; i++)
{
a[i] = i;
}

end = clock();
double elapsed_time = (end - start) / (double)CLOCKS_PER_SEC;
cout << "Waktu yang diperlukan: " << elapsed_time << " detik" << endl;
return 0;
}

Pada kode di atas, efektivitas algoritma diukur dengan menggunakan waktu yang diperlukan untuk mengisi array a dengan nilai yang sesuai. Waktu yang diperlukan dihitung dengan menggunakan variabel start dan end, yang mencatat waktu sebelum dan sesudah algoritma dieksekusi. Selisih waktu tersebut kemudian dikonversi ke detik dan dicetak ke layar sebagai output.

--

--

Hans Beaver

I like writing and reading a book, always coding in my spare time and learn something new.