13.01.2015 Views

Dari Algoritma dan

Dari Algoritma dan

Dari Algoritma dan

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Pengenalan Komputer<br />

Erick Kurniawan, M.Kom


Apa itu komputer <br />

Koputer adalah perangkat yang digunakan untuk melakukan<br />

perhitungan / kalkulasi<br />

Mampu membuat keputusan yang berjuta bahkan milliar kali<br />

lebih cepat daripada manusia<br />

Komputer memproses data yang diatur oleh satu set instruksi<br />

yang disebut program komputer<br />

Program menginstruksikan komputer untuk melakukan aksi<br />

yang spesifik sesuai dengan keinginan orang yang<br />

memprogram / programer


Apa itu komputer <br />

Hardware<br />

Software (Operating system, Programming Language,<br />

Application Program)<br />

Brainware (pemakai)


Organisasi Komputer<br />

Komputer secara virtual dapat dibagi menjadi enam unit logis<br />

yaitu:<br />

Input Unit<br />

Output Unit<br />

Memory Unit<br />

Arithmatic and Logic Unit (ALU)<br />

Central Processing Unit (CPU)<br />

Secondary Storage Unit


Sistem Operasi<br />

Sistem operasi adalah sebuah perangkat lunak yang mampu<br />

menjalankan sebuah komputer yang kita miliki<br />

Tanpa sebuah sistem operasi komputer yang kita miliki tidak<br />

akan dapat ‘berbuat apa-apa’<br />

Windows XP, Windows 2003 Server, Linux, UNIX,<br />

Machintos, dll


Definisi Program<br />

Adalah kumpulan perintah / instruksi yang biasanya disebut<br />

source code, yang ditulis oleh programmer<br />

Program adalah kumpulan instruksi atau perintah yang<br />

disusun sedemikian rupa sehingga mempunyai urutan nalar<br />

yang tepat untuk menyelesaikan suatu persoalan<br />

Instruksi (statement) yang dimaksud adalah syntax (cara penulisan)<br />

sesuai dengan bahasa pemrograman yang digunakan<br />

Mempunyai komponen-komponen : Input,Output, Proses,<br />

Percabangan <strong>dan</strong> Perulangan<br />

Tiap bahasa pemrograman mempunyai syntax yang berbedabeda<br />

untuk komponen-komponen tersebut


Bahasa Mesin, Assembly, Tingkat Tinggi<br />

Untuk berinteraksi dengan komputer programer<br />

membutuhkan bahasa :<br />

Bahasa Mesin<br />

Bahasa Assembly<br />

Bahasa Tingkat Tinggi


Bahasa Mesin<br />

Langsung dapat dimengerti oleh komputer (bahasa natural)<br />

Hanya terdiri dari bilangan 0 <strong>dan</strong> 1<br />

Bersifat machine dependent (sangat tergantung pada<br />

spesifikasi mesin / hardware)<br />

Amat sangat sulit<br />

Bahasanya tidak manusiawi<br />

Susah untuk mendeteksi kesalahan<br />

Contoh:<br />

+1300042774<br />

+1400593419<br />

+1200274027


Bahasa Assembly<br />

Menggunakan perintah dalam bahasa inggris yang lebih<br />

mudah dipahami daripada bahasa mesin<br />

Menggunakan translator program/penerjemah yang disebut<br />

assembler untuk menterjemahkan dari bahasa assembly ke<br />

bahasa mesin<br />

Contoh:<br />

LOAD BASEPAY<br />

ADD OVERPAY<br />

STORE GROSSPAY


Bahasa Tingkat Tinggi<br />

Karena bahasa assembly dirasa masih sulit maka munculah<br />

bahasa tingkat tinggi<br />

Menggunakan bahasa sehari-hari (bahasa inggris)<br />

Program yang digunakan untuk menterjemahkan bahasa<br />

tingkat tinggi kedalam bahasa mesin adalah compiler<br />

Csharp / C# adalah salah satu bahasa tingkat tinggi dari<br />

Microsoft yang paling populer saat ini<br />

Contoh:<br />

grossPay = basePay + overTimePay


Paradigma Pemrograman<br />

Pemrograman Procedural<br />

Berdasarkan urutan-urutan, sekuensial<br />

Program adalah suatu rangkaian prosedur untuk<br />

memanipulasi data.<br />

Prosedur merupakan kumpulan instruksi yang dikerjakan<br />

secara berurutan.<br />

Harus mengingat prosedur mana yang sudah dipanggil <strong>dan</strong><br />

apa yang sudah diubah.


Paradigma Pemrograman<br />

Pemrograman Functional<br />

Berdasarkan teori fungsi matematika<br />

Fungsi merupakan dasar utama program


Paradigma Pemrograman<br />

Pemrograman Terstruktur<br />

Secara berurutan <strong>dan</strong> terstrukrtur.<br />

Program dapat dibagai-bagi menjadi prosedur <strong>dan</strong> fungsi.<br />

Contoh: PASCAL <strong>dan</strong> C


Paradigma Pemrograman<br />

Pemrograman Modular<br />

Pemrograman ini membentuk banyak modul.<br />

Modul merupakan kumpulan dari prosedur <strong>dan</strong> fungsi yang<br />

berdiri sendiri<br />

Sebuah program dapat merupakan kumpulan modul-modul.<br />

Contoh: MODULA-2 atau ADA


Paradigma Pemrograman<br />

Pemrograman Berorientasi Obyek<br />

Pemrograman berdasarkan prinsip obyek, dimana obyek<br />

memiliki data/variabel/property <strong>dan</strong><br />

method/event/prosedur yang dapat dimanipulasi<br />

Contoh: C++, C#, VB.NET, Java.


Paradigma Pemrograman<br />

Pemrograman Berorientasi Fungsi<br />

Pemrograman ini berfokus pada suatu fungsi tertentu saja.<br />

Sangat tergantung<br />

pada tujuan pembuatan bahasa pemrograman ini.<br />

Contoh: SQL (Structured Query Language), HTML, XML<br />

<strong>dan</strong> lain-lain.


Paradigma Pemrograman<br />

Pemrograman Deklaratif<br />

Pemrograman ini mendeskripsikan suatu masalah dengan<br />

pernyataan daripada memecahkan masalah dengan<br />

implementasi algoritma.<br />

Contoh: PROLOG


Siklus Hidup Software<br />

Dilihat dari Struktur Sistem Komputer <strong>dan</strong> Siklus diatas,<br />

<strong>Algoritma</strong> Pemrograman menempati posisi dibagian<br />

implementasi karena bagian implementasi merupakan bagian<br />

dimana pemrogram melakukan proses coding (pembuatan<br />

program)


<strong>Algoritma</strong><br />

Asal kata <strong>Algoritma</strong> berasal dari nama Abu Ja’far Mohammed<br />

Ibn Musa al-Khowarizmi.<br />

Ilmuan Persia yang menulis kitab al jabr w’al-muqabala (rules<br />

of restoration and reduction)<br />

Sekitar tahun 825 M yang berasal dari Iran.


Definisi <strong>Algoritma</strong><br />

<strong>Algoritma</strong> adalah urutan langkah logis tertentu untuk<br />

memecahkan suatu masalah.<br />

Yang ditekankan adalah urutan langkah logis, yang berarti<br />

algoritma harus mengikuti suatu urutan tertentu, tidak boleh<br />

melompat-lompat.<br />

(<strong>Dari</strong> Microsoft Press Computer and Internet Dictionaary 1997,<br />

1998)


Definisi <strong>Algoritma</strong><br />

Alur pemikiran dalam menyelesaikan suatu pekerjaan yang<br />

dituangkan secara tertulis.<br />

Yang ditekankan pertama adalah alur pikiran, sehingga<br />

algoritma seseorang dapat juga berbeda dari algoritma orang<br />

lain.<br />

Se<strong>dan</strong>gkan penekanan kedua adalah tertulis, yang artinya<br />

dapat berupa kalimat, gambar, atau tabel tertentu. (<strong>Dari</strong><br />

<strong>Algoritma</strong> <strong>dan</strong><br />

Struktur Data dengan C, C++, <strong>dan</strong> Java oleh Moh Sjukani hal 1)


<strong>Algoritma</strong> in Real World<br />

Jika seorang ingin memasak atau membuat kue, baik itu<br />

melihat resep ataupun tidak pasti akan melakukan suatu<br />

langkah-langkah tertentu sehingga masakannya atau kuenya<br />

jadi.


<strong>Algoritma</strong> in Real World<br />

Jika seseorang ingin mengirim surat kepada kenalannya di<br />

tempat lain, langkah yang harus dilakukan adalah:<br />

Menulis surat<br />

Surat dimasukkan ke dalam amplop tertutup<br />

Amplop ditempeli perangko secukupnya.<br />

Pergi ke Kantor Pos terdekat untuk mengirimkannya.


<strong>Algoritma</strong> in Real World<br />

Dalam bi<strong>dan</strong>g komputer, algoritma sangat diperlukan dalam<br />

menyelesaikan berbagai masalah pemrograman, terutama<br />

dalam komputasi numeris.<br />

Tanpa algoritma yang dirancang baik maka proses<br />

pemrograman akan menjadi salah, rusak, atau lambat <strong>dan</strong><br />

tidak efisien.


<strong>Algoritma</strong> in Real World<br />

Pelaksana algoritma adalah Komputer.<br />

Manusia <strong>dan</strong> komputer berkomunikasi dengan cara: manusia<br />

memberikan perintah-perintah kepada komputer berupa<br />

instruksi-instruksi yang disebut program.<br />

Alat yang digunakan untuk membuat program tersebut<br />

adalah bahasa pemrograman.<br />

Bahasa pemrograman sangat bermacam-macam: C, C++,<br />

Pascal, Java, C#, Basic, Perl, PHP, ASP, JSP, J#, J++ <strong>dan</strong><br />

masih banyak bahasa lainnya.<br />

<strong>Dari</strong> berbagai bahasa pemrograman cara memberikan<br />

instruksinya berbeda-beda namun bertujuan menghasilkan<br />

output yang sama.


Kriteria <strong>Algoritma</strong> (Donald E. Knuth)<br />

1. Input: algoritma dapat memiliki nol atau lebih inputan dari<br />

luar.<br />

2. Output: algoritma harus memiliki minimal satu buah<br />

output keluaran.<br />

3. Definiteness (pasti): algoritma memiliki instruksi-instruksi yang<br />

jelas <strong>dan</strong> tidak ambigu.<br />

4. Finiteness (ada batas): algoritma harus memiliki titik berhenti<br />

(stopping role).<br />

5. Effectiveness (tepat <strong>dan</strong> efisien): algoritma sebisa mungkin harus<br />

dapat dilaksanakan <strong>dan</strong> efektif. Contoh instruksi yang tidak<br />

efektif adalah: A = A + 0 atau A = A * 1


Jenis Proses <strong>Algoritma</strong><br />

Sequence Process: instruksi dikerjakan secara sekuensial,<br />

berurutan.<br />

Selection Process: instruksi dikerjakan jika memenuhi<br />

kriteria tertentu<br />

Iteration Process: instruksi dikerjakan selama memenuhi<br />

suatu kondisi tertentu.<br />

Concurrent Process: beberapa instruksi dikerjakan secara<br />

bersama.


Struktur Program<br />

Suatu program pada dasarnya terdiri dari 3 bagian:<br />

1. Input: bisa ada, bisa tidak<br />

2. Proses<br />

3. Output: minimal satu ouput.


Contoh <strong>Algoritma</strong><br />

<strong>Algoritma</strong> menghitung luas persegi panjang:<br />

1. Masukkan panjang (P)<br />

2. Masukkan lebar (L)<br />

3. Luas = P x L<br />

4. Tulis Luas<br />

Dalam <strong>Algoritma</strong>, tidak dipakai simbol-simbol / sintaks dari<br />

suatu bahasa pemrograman tertentu, melainkan bersifat<br />

umum <strong>dan</strong> tidak tergantung pada suatu bahasa pemrograman<br />

apapun juga.<br />

Notasi-notasi algoritma dapat digunakan untuk seluruh<br />

bahasa pemrograman manapun.


Definisi Pseudo Code<br />

Kode atau tanda yang menyerupai (pseudo) atau merupakan<br />

pejelasan cara menyelesaikan suatu masalah.<br />

Pseudo-code sering digunakan oleh manusia untuk menuliskan<br />

algoritma.


Contoh Pseudo Code<br />

Problem: mencari bilangan terbesar dari dua bilangan yang<br />

diinputkan<br />

Contoh <strong>Algoritma</strong>:<br />

1. Masukkan bilangan pertama<br />

2. Masukkan bilangan kedua<br />

3. Jika bilangan pertama > bilangan kedua maka kerjakan langkah 4,<br />

jika tidak, kerjakan langkah 5.<br />

4. Tampilkan bilangan pertama<br />

5. Tampilkan bilangan kedua


Contoh Pseudo Code<br />

Contoh Pseudo-code:<br />

1. Input a<br />

2. Input b<br />

3. if a > b then kerjakan langkah 4, else kerjakan langkah 5<br />

4. print a<br />

5. print b


Contoh Pseudo Code


Langkah Pemrograman<br />

Mendefinisikan masalah<br />

Ini merupakan langkah pertama yang sering dilupakan orang.<br />

Menurut hukum Murphy (oleh Henry Ledgard):<br />

“Semakin cepat menulis program, akan semakin lama kita dapat<br />

menyelesaikannya”.<br />

Hal tersebut berlaku untuk permasalahan yang kompleks. Tentukan<br />

masalahnya, apa saja yang harus dipecahkan dengan menggunakan<br />

komputer, <strong>dan</strong> apa inputan serta outputnya.


Langkah Pemrograman<br />

Menemukan solusi<br />

Setelah masalah didefinisikan, maka langkah berikutnya adalah<br />

menentukan solusi.<br />

Jika masalah terlalu kompleks, maka ada baiknya masalah tersebut<br />

dipecah menjadi modul-modul kecil agar lebih mudah diselesaikan.<br />

Contohnya masalah invers matriks, maka kita dapat membagi<br />

menjadi beberapa modul:<br />

meminta masukkan berupa matriks bujur sangkar<br />

mencari invers matriks<br />

menampilkan hasil kepada pengguna<br />

Dengan penggunaan modul tersebut program utama akan menjadi<br />

lebih singkat <strong>dan</strong> mudah dilihat.


Langkah Pemrograman<br />

Memilih algoritma<br />

Pilihlah algoritma yang benar-benar sesuai <strong>dan</strong> efisien untuk<br />

permasalahan tersebut<br />

Menulis program<br />

Pilihlah bahasa yang mudah dipelajari, mudah digunakan, <strong>dan</strong> lebih<br />

baik lagi jika sudah dikuasai, memiliki tingkat kompatibilitas tinggi<br />

dengan perangkat keras <strong>dan</strong> platform lainnya.


Langkah Pemrograman<br />

Menguji program<br />

Setelah program jadi, silahkan uji program tersebut dengan segala<br />

macam kemungkinan yang ada, termasuk error-handlingnya<br />

sehingga program tersebut akan benar-benar handal <strong>dan</strong> layak<br />

digunakan.


Langkah Pemrograman<br />

Menulis dokumentasi<br />

Menulis dokumentasi sangat penting agar pada suatu saat jika kita<br />

akan melakukan perubahan atau membaca source code yang sudah<br />

kita tulis dapat kita ingat-ingat lagi <strong>dan</strong> kita akan mudah<br />

membacanya.<br />

Caranya adalah dengan menuliskan komentarkomentar kecil<br />

tentang apa maksud kode tersebut, untuk apa, variabel apa saja<br />

yang digunakan, untuk apa, <strong>dan</strong> parameter-parameter yang ada<br />

pada suatu prosedur <strong>dan</strong> fungsi.


Langkah Pemrograman<br />

Merawat program<br />

Program yang sudah jadi perlu dirawat untuk mencegah munculnya<br />

bug yang sebelumnya tidak terdeteksi. Atau mungkin juga<br />

pengguna membutuhkan fasilitas baru yang dulu tidak ada.


Microsoft .NET Framework<br />

.NET Framework adalah kumpulan komponen/tools yang<br />

disediakan oleh Microsoft yang digunakan untuk membantu<br />

developer untuk membuat aplikasi dengan lebih mudah<br />

.NET Framework dirilis oleh Microsoft pada tahun 2001<br />

.NET Framework terdiri dari dua komponen utama yaitu<br />

CLR (Common Language Runtime) <strong>dan</strong> BCL (Base Class Library)


CLR<br />

CLR (Common Language Runtime)<br />

Mengatur manajemen memory<br />

Mengeksekusi kode<br />

Melakukan kompilasi kode<br />

dll


BCL<br />

BCL (Base Class Library)<br />

Koleksi class yang sangat banyak <strong>dan</strong> lengkap<br />

Dapat langsung digunakan<br />

Developer tidak perlu membuat semua dari awal<br />

Sangat membantu developer untuk mempercepat pekerjaan


MSIL<br />

MSIL (Microsoft Intermediate Language)<br />

File .cs dikompile menjadi IL (Intermediate Language) oleh<br />

CLR (menggunakan csharp compiler / csd)<br />

Kemudian dikompile lagi menjadi bahasa mesin oleh<br />

komponen JIT (Just In Time Compiler)


Hasil Kompilasi<br />

Menjadi .exe<br />

Atau .dll (library)


Bahasa C#<br />

Dibuat oleh Anders Hejlsberg dari Microsoft<br />

C Family<br />

Mirip dengan bahasa C, C++ & Java<br />

C# mengambil fitur terbaik dari ketiga bahasa diatas serta<br />

memperbaiki kekurangan-nya<br />

OOP (Object Oriented Programming)<br />

Memiliki class library yang sangat lengkap (BCL), <strong>dan</strong> prebuild<br />

component<br />

Distandarkan oleh ECMA<br />

Versi terakhir adalah C# 3.5 (C# 2008)


Soal-soal <strong>Algoritma</strong><br />

1. Buatlah algoritma untuk menghitung konversi suhu.dari<br />

Celcius menjadi Reamur <strong>dan</strong> Farenheit.<br />

Input: suhu dalam Celcius<br />

Proses: R = 4/5 * C <strong>dan</strong> F = 9/5 * C + 32<br />

Output: suhu dalam Reamur <strong>dan</strong> Farenheit<br />

2. Buatlah algoritma untuk mencari sisi miring dari suatu<br />

segitiga siku-siku, jika diketahui panjang sisi yang<br />

membentuk sudut siku-siku.<br />

Input: a <strong>dan</strong> b, yaitu panjang sisi pembentuk sudut siku-siku<br />

Proses: c = √a 2 + b 2<br />

Ouput: sisi miring (c)


Soal-soal <strong>Algoritma</strong><br />

1. Buatlah algoritma untuk menentukan suatu bilangan genap<br />

atau ganjil<br />

Input: suatu bilangan<br />

Ouput: genap / ganjil<br />

2. Buatlah algoritma untuk untuk menghitung akar-akar<br />

persamaan kuadrat dengan<br />

rumus D = B2 – 4 * A * C<br />

Jika D < 0 maka didapat akar imajiner<br />

Jika D = 0 maka X1 = X2 yang didapat dari D = -B / (2 * A)<br />

Jika D > 0 maka ada dua akar X1 = -B + D/ 2 * A <strong>dan</strong> X 2 = -B<br />

- D/ 2 * A


Soal-soal <strong>Algoritma</strong><br />

1. Menghitung usia berdasarkan tahun (saja) lahir <strong>dan</strong> tahun<br />

(saja) sekarang<br />

Input : Tahun lahir (tl), Tahun sekarang (ts)<br />

Proses : Umur = ts - tl<br />

Output : Cetak Umur

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!