Algoritma dan Pemrograman
Oleh:
Eddy Prasetyo N
Konten
Pendahuluan
Aturan
Silabus
Referensi
Introduksi Algoritma
Tentang Saya...
• Nama :
Eddy Prasetyo Nugroho
• Beristri 1 dan Anak Tiga
• Unit kerja : Ilmu Komputer , FPMIPA, UPI
• Pendidikan S1 Teknik Informatika STT Telkom
• Pendidikan S2 ,Magister Teknik Bidang Rekayasa Perangkat Lunak, Informatika,ITB
• E-mail : eddypn@gmail.com
• Hp : 08562116367
Aturan
Metoda Penilaian :
Tugas mandiri/Tugas Kelompok (min 10%)
Kehadiran/Latihan di kelas (min 5%)
Praktikum (maks 15%)
Quiz (maks 15%)
UTS (min 25%)
UAS (min 30%)
Syarat Kelulusan :
Kehadiran minimal 80 %
Mengumpulkan semua tugas mandiri/tugas kelompok
Mengikuti Quiz
Mengikuti UTS dan UAS
Silabus
Pengantar ke algoritma
Dasar-dasar algoritma dan aturan penulisan teks algoritma.
Penggunaan tipe, nama, dan nilai yang tepat.
Struktur Algoritma runtunan, pemilihan, dan pengulangan.
Prosedur dan fungsi.
Referensi
Liem, Inggriani, Diktat Algoritma dan
Pemrograman (Paradigma Prosedural), Teknik Informatika ITB, 1999
Aho, Alfredd dkk, Data Structures and Algorithms, Addison-Wesley Publising Company, 1987
Munir, Rinaldi, Algoritma dan Pemrograman (buku 1), Informatika, Bandung 2005.
Munir, Rinaldi dan Leony Lidya, Algoritma dan Pemrograman (buku 2), Informatika, Bandung 2005.
Walter Salvitch, Absolute Java, Addison Wisley,
Introduksi Algoritma
Pengantar Algoritma
Saat ini sangat mudah kita menemukan orang yang bekerja dengan komputer. Dengan berkembangnya teknologi komputer, komputer telah banyak digunakan untuk membantu dan mengerjakan tugas manusia. Dalam banyak kasus, komputer terlihat pintar bahkan lebih pintar dari manusia, sehingga sering muncul anggapan bahwa komputer bisa mengerjakan apa pun untuk memberikan hasil yang diinginkan manusia.
Pendapat di atas tidak sepenuhnya salah. Persoalannya, komputer tidak begitu saja bisa menyelesaikan masalah yang disodorkan. Orang harus merumuskan langkah-langkah penyelesaian masalah itu dalam bentuk urutan instruksi yang disebut dengan program.Agar program dapat dilaksanakan oleh komputer, program ditulis dalam bahasa yang dimengerti oleh komputer. Bahasa ini disebut dengan bahasa pemrograman. Tanpa program, komputer tetaplah sebuah perangkat keras yang tidak bisa melakukan apa-apa.
Dengan semakin banyaknya bahasa pemrograman, pemecahan masalah tidak dilakukan dengan langsung menulis programnya.
Perlu dibangun sebuah rancangan pemecahan masalah yang berisi urutan langkah-langkah untuk mencapai solusi dengan bahasa yang tidak tergantung pada bahasa pemrograman tertentu. Urutan langkah-langkah sistematis untuk
menyelesaikan suatu masalah dinamakan algoritma. Tidak ada aturan baku bagaimana algoritma ditulis. Notasi algoritma
ditentukan atas kesepatakan bersama, biasanya antara perancang program dan pemrogram.
Algoritma merupakan deskripsi pelaksanaan suatu
proses yang disusun dari sederetan langkah instruksi yang logis. Tiap langkah instruksi mengerjakan suatu aksi. Efek pengerjaan dari suatu aksi dapat diamati dengan membandingkan status awal yaitu kondisi
sebelum aksi dilakukan dan status akhir yaitu kondisi setelah aksi dilakukan. Merancang algoritma dimulai dengan menentukan status awal dan status akhir yang ingin dicapai dari sebuah proses. Perhatikan 2 buah contoh berikut.
Contoh 1
{status awal: gelas A berisi minuman a, gelas B berisi minuman b
status akhir: gelas A berisi minuman b, gelas B berisi minuman a}
{Dibutuhkan sebuah gelas kosong yaitu gelas C}
Algoritma
Tuangkan minuman a ke gelas C Tuangkan minuman b ke gelas A Tuangkan minuman a ke gelas B
Contoh 2
{status awal: kotak A berisi sejumlah bola, kotak B kosong
status akhir: Bola pada kotak A berkurang 1, kotak B berisi sebuah bola}
Algoritma
Ambil 1 bola dari kotak A
Masukkan bola terambil ke kotak B
Perhatikan contoh 1. Contoh 1 terdiri dari 3 instruksi. Status awal dan status akhir dari algoritma ditulis pada 2 baris teratas. Untuk setiap aksi yang dilakukan masing- masing instruksi bisa ditentukan status awal dan status akhir sebagi berikut:
Aksi 1
{status awal: gelas A berisi minuman a, gelas C kosong}
Tuangkan minuman a ke gelas C
{status akhir: gelas A kosong, gelas C berisi minuman a } Aksi 2
{status awal: gelas A kosong, gelas B berisi minuman b } Tuangkan minuman b ke gelas A
{status akhir: gelas A berisi minuman b, gelas B kosong } Aksi 3
{status awal: gelas B kosong, gelas C berisi minuman a } Tuangkan minuman a ke gelas C
{status akhir: gelas B berisi minuman a, gelas C kosong, }
#Latihan 1
Terdapat 4 buah bola yang tampilannya sama. 3 bola mempunyai berat yang sama dan sebuah bola lebih ringan atau lebih berat. Untuk mencari bola mana yang beratnya berbeda disediakan sebuah
timbangan tanpa skala yang hanya bisa
menunjukkan 2 benda beratnya sama atau tidak.
Buat algoritma untuk persoalan ini.
Contoh 3
{status awal: kotak A berisi sejumlah bola, kotak B kosong
status akhir: bola pada kotak A berkurang 1, kotak B kosong atau berisi sebuah bola merah}
Algoritma
Ambilkan 1 bola dari kotak A if bola berwarna merah then
Masukkan bola terambil ke kotak B
Definisi Algoritma
Algoritma berasal dari asal kata “algorism”, yaitu nama penulis buku Arab yang terkenal, yaitu Abu Ja‟far Muhammad Ibnu Musa Al-Khuwarizmi.
Sekumpulan tahapan logis untuk menyelesaikan suatu tugas
Suatu resep tindakan
Suatu cara mendeskripsikan perilaku
Urutan langkah-langkah logis, disusun secara sistematis untuk menyelesaikan masalah
Mekanisme Pelaksanaan Algoritma oleh Prosesor
Agar dapat dilaksanakan oleh komputer, algoritma harus ditulis dalam notasi bahasa pemrograman
sehingga dinamakan program. Jadi, program adalah perwujudan atau implementasi algoritma yang ditulis dalam bahasa pemrograman tertentu sehingga
dapat dilaksanakan oleh komputer.
Kegiatan membuat program disebut pemrograman (programming).
Orang yang menulis program disebut pemrogram (programmer).
Secara garis besar komputer tersusun atas empat komponen utama: piranti masukan, piranti keluaran, unit pemroses, dan memori
Piranti masukan
Memori
Piranti keluaran Unit Pemroses
Utama
Notasi Algoritmik
Berdasarkan teknik pemrograman terstruktur,
pemecahan masalah tidak selalu dilakukan dengan langsung menulis programnya dalam bahasa
pemrograman, tetapi dibuat lebih dulu disain atau rancangan yang mewakili pemecahan masalah tersebut.
Desain berisi urutan langkah-langkah pencapaian solusi yang ditulis dalam notasi-notasi deskriptif yang disebut algoritma.
Notasi untuk menuliskan algoritma disebut notasi algoritmik
Notasi Algoritma
Notasi algoritmik yang dipakai bersifat umum, kadang-kadang terdapat perbedaan notasi
yang dirujuk, tetapi esensinya sama, tidak bergantung pada bahasa pemrograman maupun mesin komputernya.
Algoritma yang dibuat dapat diterjemahkan
ke dalam berbagai bahasa pemrograman.
Teks Algoritma sebagai notasi
Notasi ini sebagai jembatan keragaman dan
kompleksitas bahasa sehingga mahasiswwa mampu melakukan “abstraksi”
Sebagai alat untuk menuangkan rancangan secara prosedural yang selanjutnya dengan mudah
ditranslasi menjadi salah satu program dalam bahasa tertentu
Teks Algoritma terdiri dari 3 bagian yaitu:
Judul (Header) nama program, prosedur/fungsi, modul
Kamus deklarasi type,konstanta,variabel, fungsi/prosedur
Contoh Algoritma dan notasinya
Contoh : Tiga versi algoritma untuk operasi tambah, kali, kurang, bagi, dua buah
bilangan. Analisa perbedaan ketiga algoritma
tersebut
Format Teks Algoritma
JUDUL
{ Ini adl. Teks atau algoritma }
{ Spesifikasi teks algorima secara umum : Status Awal =…..
Status Akhir = …..}
KAMUS
{ Bagian ini dilakukan pendefinisian nama konstanta, variabel, spesifikasi prosedur/fungsi }
ALGORITMA
Versi 1
PROGRAM TKKB_V1
{Status Awal= “Diberikan dua buah bilangan dengan nama B1, B2”;
Status Akhir= “Diperoleh luaran berupa hasil tambah, kali, kurang, bagi dari kedua bilangan tersebut”}
KAMUS
B1, B2 : integer
ALGORITMA B1 99
B2 11
output (“ Nilai B1 dan B2 berturut-turut = ”, B1, B2 ) output (“ Penambahan B1 dan B2 = ”, B1+B2 )
output (“ Perkalian B1 dan B2 = ”, B1 * B2 )
output (“ Pengurangan B1 oleh B2 = ”, B1 - B2 )
Versi 2
PROGRAM TKKB_V2
{Status Awal= “Diberikan dua buah bilangan dengan nama B1, B2”;
Status Akhir= “Diperoleh luaran berupa hasil tambah, kali, kurang, bagi dari kedua bilangan tersebut”}
KAMUS
B1, B2 : integer
ALGORITMA
Input (“ Bilangan bulat pertama ? : ”, B1) Input (“ Bilangan bulat kedua ? : ”, B2)
output (“ Penambahan B1 dan B2 = ”, B1+B2 ) output (“ Perkalian B1 dan B2 = ”, B1 * B2 )
output (“ Pengurangan B1 oleh B2 = ”, B1 - B2 ) output (“ Pembagian B1 oleh B2 = ”, B1/ B2 )
Versi 3
PROGRAM TKKB_V3
{Status Awal= “Diberikan dua buah bilangan dengan nama B1, B2”;
Status Akhir= “Diperoleh luaran berupa hasil tambah, kali, kurang, bagi dari kedua bilangan tersebut”}
KAMUS
B1, B2,Tb, Kl, Kr,Bg : integer
ALGORITMA
Input (“ Bilangan bulat pertama ? : ”, B1) Input (“ Bilangan bulat kedua ? : ”, B2)
Tb B1+B2 ; Kl B1*B2 ; Kr B1-B2 ; Bg B1/B2 output (“ Penambahan B1 dan B2 = ”, Tb)
output (“ Perkalian B1 dan B2 = ”, Kl )
output (“ Pengurangan B1 oleh B2 = ”, Kr )
Belajar Memprogram dan Bahasa Pemrograman
Pemrograman memerlukan dua keahlian (skills) : berfikir
algoritmik (Algoritmic thinking) dan pengetahuan sintaks bahasa pemrograman (language syntax) .
Belajar sintaks bahasa pemrograman merupakan bagian yang relatif mudah.
Belajar memprogram adalah belajar tentang metodologi
pemecahan masalah, kemudian menuangkannya dalam suatu notasi yang mudah dipahami.
Sedangkan belajar bahasa pemrograman berarti belajar memakai suatu bahasa, aturan tata bahasanya, instruksi-instruksinya, tata cara pengoperasian compiler-nya, dan memanfaatkan instruksi- instruksi tersebut untuk membuat program yang ditulis dalam suatu bahasa.
Bahasa Pemrograman(1)
Berdasarkan terapannya, bahasa pemrograman dapat digolongkan atas dua kelompok besar:
Bahasa pemrograman bertujuan khusus. Misal Cobol (untuk terapan bisnis dan administrasi), fortran (terapan komputasi ilmiah), dll.
Bahasa pemrograman bertujuan umum, yang dapat digunakan untuk berbagai aplikasi. Yang termasuk kelompok ini adalah bahasa Pascal, Basic, dan C
Bahasa Pemrograman(2)
Berdasarkan notasi bahasa pemrograman lebih “dekat” ke mesin atau bahasa manusia, maka dikelompokkan menjadi dua:
Bahasa tingkat rendah. Bahasa jenis ini dirancang agar setiap instruksinya langsung dikerjakan oleh komputer, tanpa harus melalui penerjemah (translator). Contohnya adalah bahasa mesin.
Bahasa tingkat tinggi, yang membuat pemrograman lebih mudah dipahami, lebih “manusiawi” dan berorientasi ke bahasa manusia (bahasa Inggris). Program dalam bahasa ini tidak dapat langsung dilaksanakan oleh komputer. Ia perlu diterjemahkan dulu oleh
translator bahasa ke dalam bahasa mesin sebelum akhirnya dieksekusi oleh CPU. Contoh bahasa: Pascal, Cobol, Basic, C,
Paradigma Pemrograman
Prosedural / imperative instruksi akan dieksekusi secara sekuensial o/
sebuah prosesor. Terdapat memorisasi dan struktur data
Contoh: Pascal, C, Fortran …
Fungsional Didasari konsep pemetaan dan fungsi pada matematika.
Fungsi dapat berbentuk sbg fungsi primitif, atau komposisi dari fungsi-fungsi lain yang telah didefinisikan. Pemrogram berasumsi bahwa ada fungsi-fungsi dasar yang dapat dilakukan. Disini tidak mempersoalkan Memori dan Struktur data, tidak ada pemilahan data dan program
Contoh: LOGO, LISP
Deklaratif, Predikatif atu logik didasari atas pendefinisian rlasi antar individu yang dinyatakan sbg predikat orde pertama. Sebuah program lojik adalah kumpulan aksioma (fakta dan aturan deduksi). Pemrogram
mendeklarasikan sekumpulan fakta dan aturan. Ketika program dieksekusi, pemakai mengajukan pertanyaan (Query) dan program akan menjawab apakah pernyataan itu dapat dededuksi dari autran dan fakta yang ada.
Contoh : PROLOG
Object Oriented Didasari oleh kelas dan objek. Objek adl instansiasi dari kelas. Objek mempunyai atribut dan kelakuan (metoda). Paradigma ini
Proses Interpretasi Algoritma ke Prosesor
Algoritma Program dlm bahasa tingkat Program dlm bhs Mesin
tinggi
Interpretasi oleh CPU
Translasi Kompilasi
Contoh Program Pascal
Program Selamat1a;
(* Menuliskan : Hello.. *) (*Deskripsi*)
Begin
Write(„Hello.. ‟);
End.
Contoh Program C
/*menulis hello ke layar */
Versi 1:
Void main() {
printf (“Hello..\n”);
}
Versi 2:
Int main() {
printf (“Hello..\n”);
Return 0;
}