1. Interaksi Manusia dengan Komputer Melalui Algoritma
Menurut Kamus Besar Bahasa Indonesia algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah. Menurut Microsoft Book-shelf yang menyatakan bahwa algoritma adalah urutan langkah berhingga untuk memecahkan masalah logika atau matematika. Berdasarkan definisi-definisi tersebut maka dapat disimpulkan bahwa algoritma secara umum identik dengan urutan langkah-langkah logis yang digunakan untuk memecahkan masalah. Adapun langkah-langkah di dalam algoritma harus logis yang berarti hasil dari urutan langkah-langkah tersebut harus dapat ditentukan benar atau salah. Langkah-langkah yang tidak benar dapat memberikan hasil yang salah.
Menurut Donald E. Knuth dalam bukunya yang berjudul “The Art Of Computer Programming” algoritma harus memiliki lima ciri penting sebagai berikut.
- Algoritma harus berhenti setelah mengerjakan sejumlah langkah. Suatu program yang tidak pernah berhenti adalah program yang berisi algoritma yang salah.
- Setiap langkah harus didefinisikan dengan tepat dan tidak berarti-dua (ambigu).
- Algoritma memiliki nol atau lebih masukan (input). Masukan adalah besaran yang diberikan kepada algoritma sebelum algoritma mulai bekerja.
- Algoritma memiliki nol atau lebih keluaran (output). Keluaran adalah besaran yang memiliki hubungan dengan masukan (input).
- Algoritma harus sangkil (efektif). Setiap langkah harus sederhana sehingga dapat dikerjakan dalam sejumlah waktu yang masuk akal.
Adapun ciri notasi algoritma yang baik yaitu dapat diterjemahkan ke dalam berbagai bahasa
pemrograman. Hal yang penting mengenai notasi tersebut adalah mudah dibaca dan
dimengerti. Notasi yang umum digunakan dalam penulisan algoritma antara lain sebagai
berikut.
a. Notasi alami
Penulisan algoritma dengan notasi alami adalah dengan cara menuliskan instruksiinstuksi yang harus dilaksanakan untuk memecahkan masalah dalam bentuk untaian
kalimat deskriptif. Proses diawali dengan kata kerja seperti ‘baca’, ‘hitung’, ‘bagi’, ‘ganti’,
dan sebagainya, sedangkan pernyataan kondisional dinyatakan dengan ‘jika…maka…’.
Dengan notasi bergaya kalimat ini, deskripsi setiap langkah dijelaskan dengan bahasa
gamblang. Notasi ini bagus untuk algoritma yang pendek, namun jelas tidak efisien
untuk masalah yang algoritmanya besar dan proses pengonversian notasi algoritma
ke notasi bahasa pemrograman cenderung relatif sukar.
b. Flowchart (diagram alir)
Flowchart sebagai gambaran dalam bentuk diagram alir dari algoritma-algoritma
dalam suatu program untuk menyatakan arah alur program tersebut. Diagram alur lebih
menggambarkan aliran instruksi di dalam program secara visual dibanding memperlihatkan
struktur program. Adapun jenis-jenis flowchart adalah sebagai berikut.
- Flowchart sistem (system flowchart) merupakan bagan yang menunjukkan alur kerja atau apa yang sedang dikerjakan didalam sistem secara keseluruhan dan menjelaskan urutan dari prosedur-prosedur yanhg ada di dalam sistem
- Flowchart paperwork / Flowchart Dokumen (Document Flochart) menelusuri alur dari data yang ditulis melalui sistem. flowchart Paperwork juga sering disebbut Flowchart dokumen.
- Flowchart Skematik (Schematic Flowchart) merupakan bagan yang mirip dengan flowchart system yang menggambarkan suatu sistem atau prosedur. Perbedaannya bukan hanya menggunakan simbol-simbol flowchart standar, tetapi juga menggunakan gambargambar komputer, peripheral, atau peralatan lain yang digunakan dalam sistem.
- Flowchart program (program flochart) merupakan bagan yang menjelaskan keterangan lebih rinci tentang langkah-langkah dari proses program. Flowchart Program juga dihasilkan dari Flowchart Sistem.
- Flowchart proses (Proses flowchart) merupakan bagan alir yang banyak digunakan di teknik industri. Flowchart juga digunakan untuk memecah dan menganalisis langkah-langkah selanjutnya dalam suatu prosedur atau sistem.
c. Pseudocode
Keuntungan menggunakan notasi pseudocode adalah kemudahan mentranslasi ke
notasi bahasa pemrograman, karena terdapat korespodensi antara setiap pseudocode
dengan notasi bahasa pemrograman. Maka dari itu, pseudocode cocok untuk algoritma
yang rumit. Pseudo-code sendiri identik dengan notasi yang menyerupai notasi bahasa
pemrograman tingkat tinggi, terutama pada bahasa C dan Pascal. Bahasa pemrograman
umumnya memiliki notasi yang hampir mirip untuk beberapa instruksi seperti notasi
if-then-else, while-do, repeat-until, read, write, dan sebagainya. Namun tidak seperti
bahasa pemrograman yang direpotkan dengan tanda titik koma, indeks, format keluaran,
kata-kata khusus, dan sebagainya, sembarang versi pseudocode dapat diterima asalkan
perintahnya tidak membingungkan pembaca.
Adapun aturan penulisan algoritma dalam notasi pseudocode dikategorikan sebagai
berikut.
- Judul algoritma adalah bagian yang terdiri atas nama algoritma dan penjelasan (spesifikasi) tentang algoritma tersebut. Nama algoritma sebaiknya singkat namun cukup menggambarkan apa yang dilakukan oleh algoritma tersebut. Berdasarkan informasi di atas, program hitung_luas_trapesium merupakan judul algoritma, sedangkan yang di dalama kurung kurawal ({ }) merupakan spesifikasi atau penjelasan singkat tentang algoritma luas persegi panjang.
- Deklarasi Bagian deklarasai berguna untuk mendefinisikan semua nama yang dipakai dalam algoritma. Nama tersebut dapat berupa nama tetapan, nama peubah (variable), nama tipe, nama prosedur, dan nama fungsi.
- Deskripsi bisa diterjemahkan sebagai bagian inti dari suatu algoritma. Bagian ini berisi uraian langkah-langkah penyelesaian masalah. Misalnya notasi write digunakan untuk mencetak data/informasi, notasi read digunakan untuk membaca data, dan lain-lain. Urutan penulisan menentukan urutan pelaksanaan perintah, sebab setiap langkah algoritma dibaca dari “atas” ke “bawah”.
2. Robot Sederhana (Program Arduino)
Arduino adalah sebuah kit elektronik open source yang dirancang khusus dengan
kemampuan komputasi yang dapat berinteraksi secara lebih dekat dengan dunia nyata
dibandingkan komputer biasa untuk memudahkan bagi para seniman, desainer, dan siapa
pun yang tertarik dalam menciptakan objek atau mengembangkan perangkat elektronik
yang dapat berinteraksi dengan bermacam-macam sensor dan pengendali. Arduino dapat
dikategorikan sebagai bahasa pemrograman tingkat menengah yang pada umumnya
memiliki alur algoritma yang mirip dengan bahasa C/C++. Perbedaannya terletak pada cara
penulisan sintaksnya. Meskipun Arduino menggunakan pemrograman dengan bahasa C/
C++.
a. Operator matematika
Operator jenis ini digunakan untuk memanipulasi angka dan bekerja seperti halnya
matematika secara sederhana.
b. Struktur
Setiap program Arduino (sketch) memiliki dua buah fungsi yang harus ada, yaitu
sebagai berikut.
1. void
setup( )
{ }
Semua kode di dalam kurung kurawal akan dijalankan hanya
satu kali ketika program Arduino dijalankan untuk pertama
kalinya.
2, void loop(
) { }
Fungsi ini akan dijalankan setelah setup (fungsi void setup)
selesai. Setelah dijalankan satu kali fungsi ini akan dijalankan
lagi, dan lagi secara terus menerus sampai catu daya (power)
dilepaskan.
Adapun program sangat tergantung pada pengaturan apa yang akan dijalankan
berikutnya. Beberapa elemen dasar pengaturan yang sering digunakan adalah sebagai
berikut.
- Elemen for Digunakan bila melakukan pengembalian kode di dalam kurung kurawal beberapa kali, misalnya mengganti #pengembalian dengan jumlah pengembalian yang diinginkan. Melakukan penghitungan ke atas dengan i++ atau ke bawah dengan i–. Penggunaan format for adalah : for (int i = 0; i < #pengembalian; i++) { }
- Elemen IF ....ELSE Dengan struktur IF ....ELSE, maka program akan menjalankan kode yang ada di dalam kurung kurawal jika kondisinya TRUE, dan jika tidak (FALSE) maka akan diperiksa apakah kondisi pada else if dan jika kondisinya FALSE maka kode pada else yang akan dijalankan.
c. Variabel
Sebuah program secara garis besar dapat didefinisikan sebagai instruksi untuk
memindahkan angka dengan cara yang cerdas. Beberapa jenis variabel antara lain
sebagai berikut.
- long (long) Variabel jenis ini digunakan ketika integer tidak mencukupi lagi. Memakai 4 byte (32 bit) dari memori (RAM) dan memiliki rentang dari -2,147,483,648 dan 2,147,483,647.
- boolean (boolean) Variabel sederhana yang digunakan untuk menyimpan nilai TRUE (benar) atau FALSE (salah). Sangat berguna karena hanya menggunakan 1 bit dari RAM.
- float (float) Variabel jenis ini digunakan untuk angka desimal (floating point). Memakai 4 byte (32 bit) dari RAM dan memiliki rentang dari -3.4028235E+38 dan 3.4028235E+38.
- char (character) Variabel jenis ini untuk menyimpan 1 karakter menggunakan kode ASCII (misalnya ‘A’ = 65). Hanya memakai 1 byte (8 bit) dari RAM.
- int (integer) Variabel jenis ini digunakan untuk menyimpan angka dalam 2 byte (16 bit). Tidak memiliki angka desimal dan menyimpan nilai dari -32,768 dan 32,767.
d. Syntax
Elemen-elemen yang dibutuhkan untuk format penulisan (syntax) adalah sebagai
berikut.
- { } (kurung kurawal) Digunakan untuk mendefinisikan kapan blok program mulai dan berakhir (digunakan juga pada fungsi dan pengulangan).
- ; (titik koma) setiap baris kode harus diakhiri dengan tanda titik koma (jika ada titik koma yang hilang maka program tidak akan bisa dijalankan).
- // (komentar satu baris) Kadang diperlukan untuk memberi catatan pada diri sendiri apa arti dari kode-kode yang dituliskan. Cukup menuliskan dua buah garis miring dan apapun yang kita ketikkan dibelakangnya akan diabaikan oleh program.
- /* */ (komentar banyak baris) Jika memiliki banyak catatan, maka hal itu dapat dituliskan pada beberapa baris sebagai komentar. Semua hal yang terletak di antara dua simbol tersebut akan diabaikan oleh program.
e. Perintah digital
Beberapa bagian dari perintah digital adalah sebagai berikut
- digitalWrite(pin, value) Ketika sebuah pin ditetapkan sebagai Output, pin tersebut dapat dijadikan HIGH (ditarik menjadi 5 volts) atau LOW (diturunkan menjadi ground).
- digitalRead(pin) Ketika sebuah pin ditetapkan sebagai INPUT maka anda dapat menggunakan kode ini untuk mendapatkan nilai pin tersebut apakah HIGH (ditarik menjadi 5 volts) atau LOW (diturunkan menjadi ground).
- pinMode(pin, mode) Digunakan untuk menetapkan mode dari suatu pin, pin adalah nomor pin yang akan digunakan dari 0–19 (pin analog 0–5 adalah 14–19). Mode yang bisa digunakan adalah INPUT atau Output.
f. Perintah analog
Arduino adalah mesin digital tetapi memiliki kemampuan untuk beroperasi di dalam
alam analog (menggunakan trik). Beberapa metode dalam menghadapi hal-hal analog
(bukan digital) adalah sebagai berikut.
- analogRead(pin) Ketika pin analog ditetapkan sebagai INPUT maka user dapat membaca keluaran voltase-nya. Keluarannya berupa angka antara 0 (untuk 0 volts) dan 1024 (untuk 5 volts).
- analogWrite(pin, value) Beberapa pin pada Arduino mendukung PWM (Pulse Width Modulation) yaitu pin 3, 5, 6, 9, 10, 11. Hal Ini dapat merubah pin hidup (on) atau mati (off) dengan sangat cepat, sehingga membuatnya dapat berfungsi layaknya keluaran analog. Value (nilai) pada format kode tersebut adalah angka antara 0 ( 0% duty cycle ~ 0V) dan 255 (100% duty cycle ~ 5V).
g. Program Robot menggunakan Arduino IDE
Robot line follower didesain dengan posisi sensor di atas permukaan putih. Dua
buah sistem sensor di pasang pada pin Analog Input A0 dan A1, sedangkan sistem
actuator motor DC dipasang pada Port 9 dan 6 untuk motor kiri, PORT 5 dan 3 untuk
motor kanan.
Berdasarkan gambar desain diatas, robot line follower digital dengan dua sensor
cahaya dan komparator menggunakan board Arduino Uno. Sensor cahaya dihubungkan
pada PORT Analog Input A0 dan A1 board Arduino, sedangkan input motor driver IC
L293D terhubung dengan PORT yaitu 9, 6, 5, dan 3 Board Arduino. Adapun prinsip kerja
robot line follower diawali pada saat sistem sensor berada di atas permukaan putih,
akan ada pantulan cahaya dari LED yang akan mengenai sensor cahaya LDR sehingga
resistansi sensor LDR berkurang. Jadi, arus bergerak melalui LDR. Kondisi tersebut
menyebabkan arus output sensor menuju IC komparator LM 393 menjadi minimum.
Arus di non-inverting oleh IC LM 393 sehingga output menuju pin Arduino menjadi LOW
(0). Sebaliknya, saat sistem sensor berada di atas garis hitam, tidak akan ada pantulan
cahaya dari LED yang akan mengenai sensor cahaya LDR sehingga resistansi sensor
LDR sangat besar. Jadi, arus tidak akan melalui LDR. Kondisi tersebut menyebabkan arus
output sensor menuju IC komparator LM 393 menjadi maksimum, oleh IC LM 393, arus
di non-inverting sehingga output menuju pin Arduino menjadi HIGH (1). Oleh Arduino
data logika pin tersebut kemudian diolah untuk mengerakan motor, motor akan bergerak
jika kedua pin motor tersebut memiliki beda polaritas.
Tidak ada komentar:
Posting Komentar