Belajar Algoritma dan Pemrograman Dasar

Dunia digital yang semakin meluas ini membuat kita perlu memahami hal-hal detail di dalamnya. Salah satu yang perlu dipahami adalah algoritma, pernah dengar kan? Misalnya, beberapa platform media sosial sering dikabarkan mengubah algoritma pencariannya, sehingga membuat para konten kreator / digital strategist dianggap perlu menyesuaikan strategi digitalnya mengikuti algoritma yang diperbarui tersebut. Nah, tulisan ini akan sedikit membahas dasar algoritma dan pemrograman. Khususnya menegenai pengertian, struktur, jenis, fungsi, dan lain sebagainya mengenai istilah yang disebut algoritma ini.

Sejarah dan Pengertian Algoritma

Sebelum ke pembahasan dasar algoritma dan pemrograman, ada baiknya untuk mengetahui sedikit asal muasal algoritma. Penamaan algoritma disebut beberapa sumber berasal dari ahli matematika dan astronomer Arab bernama Al-Khawarizmi. Ilmuwan yang berasal dari Baghdad dan bernama lengkap Muḥammad ibn Mūsā al-Khwārizmī ini disebut sebagai orang yang memperkenalkan konsep aljabar ke dunia matematika di dunia barat. Orang-orang barat sering menyebutnya Algorism, seiring perkembangan waktu menjadi Algorithm.

Pengertian algoritma secara umum adalah, suatu urutan dari beberapa langkah logis menyelesaikan masalah. Urutan algoritma dimulai dengan kondisi awal atau input awal, instruksi menjelaskan perhitungan saat dijalankan, kemudian diproses melewati serangkaian kondisi terbatas yang ditentukan, sehingga menghasilkan keluaran atau output dan berhenti dalam keadaan akhir yang telah ditentukan. Contoh sederhana misalnya dalam membuat kue tentunya ada urutan, proses dan langkah-langkah yang harus dilakukan. Mulai dari menyiapkan bahan, mencampur bahan (dengan ukuran/takaran yang ditentukan), memanggang adonan kue di oven hingga waktu yang ditentukan, dan menghias kue yang matang dengan toping yang diinginkan. Dalam ilmu pemrograman, algoritma adalah urutan langkah-langkah dalam menyelesaikan masalah pemrograman komputer. Algoritma sendiri dapat disajikan / digambarkan dengan pseudocode ataupun flowchart.

Contoh flowchart dalam menggambarkan algoritma
Contoh pseudocode dalam menggambarkan algortima

Karakteristik Algoritma

Dalam mempelajari dasar algoritma dan pemrograman perlu diketahui karakteristik algoritma terlebih dahulu. Algoritma memiliki karakteristik atau syarat mutlak sehingga urutan langkah penyelesaian suatu masalah tersebut dapat disebut sebagai algoritma, yaitu:

  1. Finiteness (terbatas), maksudnya proses algoritma harus memiliki akhir dan jumlah langkahnya terbatas, minimal harus menghasilkan satu output.
  2. Definite (tidak ambigu), maksudnya setiap proses harus jelas.
  3. Input dan output, maksudnya harus menerima 0 atau lebih input dan menghasilkan minimal 1 output.
  4. Effectiveness (efektif), maksudnya langkah-langkahnya harus efektif dan sesederhana mungkin.

Bahasa Pemrograman

Sebagai pemahaman berikutnya dalam dasar algoritma dan pemrograman, perlu dipahami juga apa itu bahasa pemrograman. Bahasa pemrograman adalah instruksi standard untuk memerintahkan komputer untuk menjalankan fungsi tertentu. Bahasa pemrograman terdiri dari kumpulan syntax untuk melakukan perintah dasar komputer seperti menyimpan data, melakukan perhitungan, dan sebagainya. Fungsi bahasa pemrograman adalah untuk memerintakan komputer untuk mengolah data sesuai dengan keinginan kita.

Saat ini bahasa pemrograman sudah di generasi ke lima, beberapa tingakatan generasinya adalah:

  1. Generasi pertama > machine language
  2. Generasi kedua > assembly language
  3. Generasi ketiga > procedural language
  4. Generasi keempat (4GL) > fourth-generation language
  5. Generasi kelima > Object oriented programming (OOP) dan Web Development

Tingakatan bahasa pemrograman:

  1. Bahasa tingkat rendah > machine language, contoh kode binner (A = 01000001 B = 01000010 C = 01000011)
  2. Bahasa tingkat menengah > assembly language
  3. Bahasa tingkat tinggi > C++, Visual Basic, Pascal, Delphi, Python, Perl, Ruby
  4. Bahasa tingkat objek-oriented dan visual (very high level) > Java (Android), JSP, ASP

Proses pembuatan program:

  1. Kompilasi, contoh C, C++
  2. Interpretasi, contoh Perl, Ruby, Python
  3. Kompilasi sekaligus interpretasi, contoh Java

Struktur Algoritma

Image by codepolitan

Pada dasarnya ada tiga struktur dasar algoritma, yaitu:

  1. Algoritma sequential / berurutan.
  2. Algoritma selection / pemilihan.
  3. Algoritma perulangan / looping.

Variabel dan Tipe Data

Variabel dan tipe data juga merupakan beberapa yang harus diketahui dalam dasar algoritma dan pemrograman. Variable adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu
nilai tertentu di dalam proses program yang nilainya bisa diubah-ubah sesuai kebutuhan. Sebagai analogi sederhana, anggap saja variable itu semacam wadah atau tempat untuk menampung sesuatu, jika dikehidupan sehari-hari, misalnya gelas bisa dianggap semacam variable untuk menampung air jeruk, kopi atau susu.

Tipe data adalah jenis data atau nilai yang dapat ditampung oleh sebuah variabel. Sebagai analogi, bayangkan saja jika gelas adalah variabel sebagai wadah, sedangkan air jeruk, kopi atau susu adalah tipe datanya.

Penamaan variable perlu memperhatikan aturan berikut:

  1. Nama variabel boleh terdiri dari gabungan huruf dan angka, namun tidak boleh diawali dengan angka.
  2. Tidak boleh ada spasi.
  3. Tidak boleh ada simbol-simbol khusus, kecuali underscore “_”.
  4. Jumlah karakter bebas tetapi hanya 32 karakter pertama yang dipakai.

Secara umum tipe data dapat dibagai menjadi tipe data standard dan tipe data terstruktur. Dalam tipe data standar ada beberapa macam:

  1. Tipe data Integer (bilangan bulat), contoh 0, 1, 2, 3 dst
  2. Tipe data Real (Bilangan Pecahan), contoh 0.1, 0.33, -3.22 dst
  3. Tipe data Char (karakter), contoh a, b, c, d, dst
  4. Tipe data String, contoh hewan, buah, kambing dst
  5. Tipe data Boolean, contoh True dan False

Dalam tipe data terstruktur ada beberapa macam juga, yaitu:

  1. Tipe data Array, adalah kumpulan variabel dengan tipe data yang sama dan memiliki index
  2. Tipe data Record, adalah kumpulan variabel dengan tipe data yang berbeda-beda
  3. Tipe data File, adalah tipe data untuk menyimpan file
  4. Tipe data Set, adalah tipe data yang berisi kumpulan nilai
  5. Tipe data Pointer, adalah tipe data untuk menyimpan alamat memori

Operator

Operator dalam pemrograman adalah simbol dalam program untuk mengubah suatu nilai. Operator dibagi menjadi tiga, yaitu:

  1. Operator aritmatika, contohnya penjumlahan ( + ), pengurangan( – ), pengkalian (*), pembagian bilangan real ( / ), pembagian bilangan sisa (mod), pembagian bilangan bulat (div)
  2. Operator logika, menghubungkan dua atau lebih suatu nilai yang menghasilkan nilai true atau false, yaitu and, or, dan not
  3. Operator relasional, membandingkan hubungan antara dua variabel, contoh =, <>, <, <=, >, >=

Nilai Variabel

Nilai adalah besaran dari tipe data yang sudah dikenal. Nilai merepresentasikan isi dari sebuah variabel atau konstanta. Algoritma pada dasanya memanipulasi nilai. Nilai dapat dimanipulasi dengan:

  1. Mengisi nilai ke dalam variabel (var variable1 = 5 <- nilai)
  2. Menuliskan ke piranti keluaran (write(variable1) <- menuliskan 5 ke layar)
  3. Diacu dari suatu nama untuk proses perhitungan/operasi (var jumlah = variable1 * 5)

Pseudocode

Adalah cara penulisan algoritma yang hampir menyerupai bahasa pemrograman, namun pseudocode ditulis lebih sederhana dan baku agar dipahami oleh orang awam. Struktur penulisan pseudocode terdiri dari:

  1. Bagian judul, diawali dengan kata PROGRAM dan diikuti dengan nama algoritma
  2. Bagian deklarasi, digunakan untuk mendeklarasikan variabel-variabel apa saja yang akan digunakan dalam suatu algoritma
  3. Bagian isi, merupakan bagian utama dari berjalannya algoritma

Berikut adalah contoh penulisan pseudocode dalam menghitung luas persegi panjang:

Algoritma Pemilihan (Selection)

Berikut adalah contoh algoritma pemilihan dan penerapannya pada pseudocode dalam studi kasus pembelian sepatu:

Bentuk flowchart
Bentuk pseudocode

Algoritma pemilihan adalah program yang melakukan proses pengujian untuk mengambil suatu keputusan apakah satu instruksi akan diproses atau tidak. Dalam pemrograman struktur pemilihan ditulis dengan instruksi IF, ada berbagai contoh IF:

  1. IF satu kondisi
  2. IF dua kondisi
  3. IF banyak kondisi

Pseudocode IF satu kondisi

Pseudocode IF dua kondisi

Pseudocode IF banyak kondisi

Algoritma Pengulangan (Looping)

Algoritma pengulangan adalah pemrograman yang digunakan untuk mengulang beberapa perintah sesuai jumlah yang ditentukan. Beberapa instruksi pengulangan adalah:

  1. FOR
    • for…to..do pengulangan positif
    • for…downto…do pengulangan negatif
  2. WHILE DO
  3. REPEAT UNTIL
for..to..do
for..downto..do
while do
repeat until

Prosedur dan Fungsi

Procedure atau prosedur dalam pemrograman adalah program kecil atau subprogram yang ada di dalam program utama untuk menyelesaikan masalah khusus.

Penerapan procedure di pseudocode

Function atau fungsi dalam pemrograman adalah program kecil atau subprogram yang ada di dalam program utama yang mengembalikan nilai.

Penerapan fungsi di pseudocode

Struktur Data Array

Array atau larik adalah kumpulan tipe data serupa yang disimpan di lokasi memori yang berdekatan. Jika dianalogikan array sama dengan hotel dengan kamar-kamarnya, index array adalah nomor-nomor kamar. Sehingga pengunjung hotel dapat mengakses kamar tertentu (sesuai nomor) dengan menggunakan index.

Ada dua tipe dimensi array, yaitu:

  1. Array satu dimensi
  2. Array dua dimensi
Array satu dimensi (geeksforgeeks.org)
Array dua dimensi (geeksforgeeks.org)

Mengenal Struktur Data Linked List

Linked list (geeksforgeeks.org)

Linked list adalah kumpulan data yang tersusun secara sekuensial, saling terhubung dan dinamis. Secara sederhana, kumpulan data tertaut terdiri dari simpul di mana setiap simpul berisi bidang data dan referensi (tautan) ke simpul berikutnya.

Contoh implementasi linked list di bahasa pemrograman Java (codepolitan).

Perbedaan Stack dan Queue

Stack atau tumpukan adalah struktur data linier di mana elemen dapat disisipkan dan dihapus hanya dari satu sisi list, yang disebut bagian atas. Tumpukan mengikuti prinsip LIFO (Last In First Out), yaitu elemen yang dimasukkan paling akhir adalah elemen pertama yang keluar. Penyisipan elemen ke dalam stack disebut operasi push, dan penghapusan elemen dari stack disebut operasi pop. Pada tumpukan, elemen terakhir yang ada dalam list selalu ditandai dengan pointer yang disebut top element.

Contoh stack (geeksforgeeks.org)

Queue atau antrean adalah struktur data linier di mana elemen dapat disisipkan hanya dari satu sisi list yang disebut belakang, dan elemen dapat dihapus hanya dari sisi lain yang disebut depan. Struktur data antrian mengikuti prinsip FIFO (First In First Out), yaitu elemen yang disisipkan paling awal dalam list, merupakan elemen pertama yang akan dikeluarkan dari list. Penyisipan elemen dalam antrian disebut operasi enqueue dan penghapusan elemen disebut operasi dequeue. Dalam antrian, selalu pertahankan dua penunjuk, satu menunjuk ke elemen yang disisipkan pertama dan masih ada dalam daftar dengan penunjuk depan dan penunjuk kedua menunjuk ke elemen yang dimasukkan terakhir dengan penunjuk belakang.

Contoh queue (geeksforgeeks.org)

Struktur Data Binary Tree dan Graph

Struktur data tree

Jika struktur data array, linked list, stack dan queue merupakan struktur data berbentuk linear. Struktur data tree memiliki struktur data dengan pola percabangan. Setidaknya memiliki dua children (elemen di bawahnya) dari setiap parent (elemen di atasnya).

Struktur data tree

Alasan digunakannya struktur data tree:

  1. Informasi yang disimpan akan memiliki struktur percabangan seperti pohon, contohnya sistem folder di komputer.
  2. Untuk premrosesan akses dan search, tingkat struktur data tree berada pada level menengah, yaitu lebih cepat dari linked list dan lebih lambat dari array.
  3. Begitu pula untuk proses insert dan hapus elemen, struktur data tree ada di level menengah, yaitu lebih cepat dari array dan lebih lambat dari linked list.
  4. Kemudian sama dengan linked list, struktur data tree tidak mengalokasikan ukuran makasimal elemen karena setiap node dihubungkan menggunakan pointer.

Struktur data graph

Struktur data graph adalah representasi gambar dari set objek yang saling terhubung. Graph terdiri dari simpul (vertices) dan sisi (edges). Vertices kadang-kadang juga disebut sebagai nodes dan edges adalah garis atau busur yang menghubungkan setiap nodes dalam graph. Lebih formal Grafik terdiri dari satu set simpul ( V ) dan satu set tepi ( E ). Grafik dilambangkan dengan G(E, V).

Struktur data graph (geeksforgeeks.org)

Sumber:

  • codepolitan.com
  • geeksforgeeks.org
  • britannica.com