1. Algoritma
Algoritma adalah urutan aksi-aksi yang dinyatakan dengan jelas dan tidak rancu untuk
memecahkan suatu masalah dalam rentang waktu tertentu. Setiap aksi harus dapat dikerjakan dan
mempunyai efek tertentu. Algoritma merupakan logika, metode dan tahapan (urutan) sistematis yang
digunakan untuk memecahkan suatu permasalahan. Dalam ilmu matematika dan komputer,
pengertian algoritma merupakan prosedur dari beberapa langkah demi langkah untuk penghitungan.
Algoritma dipakai untuk penghitungan, penalaran otomatis, dan pemrosesan data. Pengertian
algoritma ialah suatu metode yang efektif diekspresikan sebagai rangkaian yang terbatas dari
beberapa instruksi yang telah dijelaskan dengan baik guna menghitung sebuah fungsi. Susunan
algoritma dimulai dari kondisi awal dan input awal, instruksi tersebut mendeskripsikan komputasi
yang apabila itu dieksekusi serta diproses dengan melewati urutan-urutan kondisi terbatas yang
terdefinisi dengan baik, sehingga dapat menghasilkan output atau keluaran dan berhenti di kondisi
akhir yang telah ditentukan.
Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah program.
Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program mejadi kurang
baik, demikian juga sebaliknya. Sturktur data disini berupa list, tree, graph, dsb.
2. Struktur Algoritma
Inti dari algoritma adalah menemukan solusi dari suatu permasalahan. Untuk menyelesaikan
masalah, algoritma membutuhkan spesifikasi input (masukan) sesuai yang diperlukan,
memprosesnya melalui serangkaian langkah-langkah dan menghasilkan output sebagai solusi dari
permasalahan.
a. Input
Algoritma memiliki nol input atau lebih dari pengguna. Setiap algoritma pasti memiliki input.
Yang dimaksud dengan nol input dari pengguna adalah bahwa algoritma tidak mendapatkan
masukan dari pengguna, tapi semua data inputan yang digunakan algoritma tidak dari pengguna
secara langsung, namun semua data yang akan diproses sudah dideklarasikan oleh algoritma
terlebih dahulu. Sebagai contoh sebuah algoritma menghitung 100 bilangan genap yang
pertama tidak memerluakan input dari pengguna karena sudah diketahui bahwa banyaknya
bilangan genap adalah 100. Berbeda jika algoritm tersebut digunakan untuk menghitung n
bilangan genap pertama, dengan nilai n dari pengguna. Berarti ada masukan dari pengguna
yaitu n.
b. Output
Algoritma minimal harus memiliki 1 output. Tujuan dari algoritma adalah memberikan
penyelesaian dari suatu permasalahan dengan langkah-langkah tertentu. Penyelesaian itulah
output dari algoritma yang dimaksud. Output dapat berupa apa saja, teks, file, video, suara, dan
lain-lain atau suatu nilai yang disimpan untuk digunakan algoritma lain atau disimpan di basis
data.
c. Finite(Terbatas)
Algoritma yang baik haruslah mempunyai langkah-langkah terbatas, yang berakhir pada
suatu titik di mana algoritma itu akan berhenti dan menghasilkan suatu output. Algoritma tidak
boleh berjalan terus –menerus tanpa titik henti, hingga menyebabkan hang atau not responding
jika diterapkan pada komputer. Ketika sebuah algoritma berjalan terus menerus (infinite), maka
ini mengindikasikan ada kesalahan yang dibuat oleh programmer dalam mengembangkan
algoritma.
d. Definite
Makna dari langkah logis pada definisi algoritma terdahulu tercermin dari langkah-langkah
yang pasti, tidak ambigu atau bermakna ganda. Suatu program harus mempunyai arah dan
tujuan yang jelas ,kapan mulai dan kapan berakhir. Dalam menyusun langkah-langkah dalam
algoritma perlu dihindari kata-kata seperti secukupnya, beberapa, sesuatu, sebentar, lama, atau
kata lain yang tidak terukur dengan pasti. Pemberian nomor pada algoritma dapat membantu
pengguna mengikuti setiap langkah dengan pasti hingga mencapai akhir dari algoritma, yaitu
solusi dari permasalahan.
e. Efisien
Program menghasilkan output yang benar, itu wajib. Tapi bagaimna jika output yang benar
itu dilakukan dengan waktu yang lama padahal ada algoritma lain yang lebih cepat? Hal ini
menunjukkan bahwa setiap algoritma, khususnya jika sudah diterapkan pada pemrograman,
mempunyai waktu eksekusi (running time). Algoritma disebut efisien jika untuk mendapatkan
suatu solusi tidak memerlukan memori yang banyak, proses yang berbelit-belit dan tidak perlu.
Jika algoritma terlalu banyak melakukan hal-hal yang tidak perlu akan menyebabkan waktu
eksekusi menjadi lebih lama.
Mengenai metode penyampaian Algoritma dibedakan menjadi dua, yaitu berbentuk tulisan
dan bebentuk gambar. Algoritma yang disajikan dengan bentuk tulisan dapat menggunakan
aturan bahasa natural (alami) dan pseudocode. Bahasa natural menggunakan struktur bahasa
tertentu (misalnya struktur bahasa Indonesia atau bahasa Inggris). Pseudocode adalah kode-
kode tertentu yang mendekati kode dalam bahasa pemrograman (misal bahasa Pascal, C, C++,
Java, Python, dan sebagainya), sehingga bermanfaat menggambarkan algoritma yang akan
dikomunikasikan kepada pemrogram (programmer). Algoritma yang disajikan dengan gambar
dapat berbentuk diagram alur (flowchart) atau struktogram.
• Bagian Deklarasi
Di dalam algoritma, deklarasi atau kamus adalah bagian untuk mendefinisikan
(menuliskan) semua nama yang akan dipakai di dalam algoritma. Nama tersebut dapat
berupa nama variabel, nama konstanta, nama tipe, nama prosedur, dan nama fungsi.
Penulisan pendefinisian deklarasi ini penting dilakukan karena semua proses yang
dilakukan oleh algoritma akan merujuk pada nilai yang disebutkan pada bagian ini.
Pendefinisian dalam bagian deklarasi sebaiknya dikelompokkan menurut jenis dan
nilainya masing-masing.
• Bagian Deskripsi
Deskripsi adalah bagian inti dari struktur algoritma. Bagian ini berisi uraian langkah-
langkah penyelesaian masalah. Langkah-langkah ini dituliskan dengan notasi yang lazim
dalam penulisan algoritma. Setiap langkah algoritma dibaca secara urut dari langkah
paling atas hingga langkah paling bawah. Suatu algoritma dapat terdiri dari tiga struktur
dasar, yaitu runtunan, pemilihan, dan pengulangan.
Struktur penulisan pseudocode secara umum sama dengan struktur penulisan algoritma
yang menggunakan kalimat deskriptif yaitu dimulai dari judul/header, deklarasi/kamus dan
diakhiri dengan deskripsi.
Flowchart struktur urut dilakukan untuk menyajikan suatu urutan instruksi yang harus
dilakukan dalam memecahkan masalah tertentu secara berurutan. Proses pembacaan
instruksi pasti dilakukan secara berurutan dan sesuai dengan urutan dan penulisannya
(proses pembacaan dari atas ke bawah dan dari kiri ke kanan), dalam artian akan melakukan
langkah 1 sebelum melakukan langkah 2. Kesalahan penulisan dalam struktur urutan dapat
mengakibatkan kurang tepatnya output yang dihasilkan. Sebagai contoh perhatikan operasi
aritmatika berikut ini, (5+3)*7=45, tetapi bila urutan aksinya diubah maka hasil outputnya akan
berbeda menjadi 5+(3*7) =26.
4. Bahasa Pemrograman
Bahasa atau dalam bahasa inggris language adalah suatu sistem untuk berkomunikasi.
Bahasa tertulis menggunakan simbol (yaitu huruf) untuk membentuk kata. Dalam ilmu
komputer,bahasa manusia disebut bahasa alamiah (natural languages), dimana komputer tidak bisa
memahaminya, sehingga diperlukan suatu bahasa komputer. Komputer mengerjakan transformasi
data berdasarkan kumpulan perintah - program - yang telah dibuat oleh pemrogram. Kumpulan
perintah ini harus dimengerti oleh komputer, berstruktur tertentu (syntax) dan bermakna.
Bahasa pemrograman merupakan notasi untuk memberikan secara tepat program komputer
Berbeda dengan bahasa alamiah, mis. Bahasa Indonesia, Inggris dsb. yang merupakan bahasa
alamiah(natural language), sintaks dan semantik bahasa pemrograman (komputer) ditentukan
secara kaku, sehingga bahasa pemrograman juga disebut sebagai bahasa formal (formal language).
Jadi, dalam bahasa pemrograman yang digunakan sebagai alat komunikasi untuk memberikan
perintah kepada komputer tidak berlaku kebebasan berekspresi seperti laiknya dalam bahasa
alamiah.
Pemrograman dalam pengertian luas meliputi seluruh kegiatan yang tercakup dalam
pembuatan program, termasuk (requirement's keseluruhan perencanaan analisis kebutuhan
analysis) dan tahapan dalam (planning) perancangan (design) dan pewujudannya (implementation).
Dalam pengertian yang lebih sempit, pemrograman merupakan pengkodean (coding atau program
writing = penulisan program) dan pengujiannya (testing) berdasarkan rancangan tertentu.
Pemahaman yang lebih sempit ini sering digunakan dalam pembuatan program-program terapan
komersial yang membedakan antara system analyst yang bertanggung jawab dalam menganalisa
kebutuhan, perencanaan dan perancangan program dengan pemrogram (programmer) yang
bertugas membuat kode program dan menguji kebenaran program.
Generasi bahasa pemrograman:
• Generasi I: machine language
• Generasi II: assembly language : Asssembler
• Generasi III: high-level programming language: C, PASCAL, dan sebagainya.
• Generasi IV: 4 GL (fourth- generation language): SQL