algoritma dan pemrograman i - reezeki2011 · pdf filepemrograman i by : sri rezeki ... kelas...

26
ALGORITMA dan PEMROGRAMAN I By : Sri Rezeki Candra Nursari Literatur : 1. Rinaldi Munir, 1998, Algoritma dan Pemrograman 1 & 2; Informatika Bandung 2. Antony Pranata, 2005, Algoritma dan Pemrograman ; Graha Ilmu, Yogyakarta 3. Abdul Kadir, 2003, Pemrograman C++, Andi, Yogyakarta 4. Andri Kristanto, 2003, Algoritma dan Pemrograman dengan C++, Graha Ilmu, Yogyakarta 5. Suarga, 2006, Algoritma dan Pemrograman, Andi, Yogyakarta 6. C++ An Introduction To Computing, 1995, Joel Adams- Sanford Leestma-Larry Nyhoof, Prentice-Hall, Inc 7. C++ Programming Design, 1997, James P. Cohoon-Jack W.Davidson, McGraw-Hill 8. Budi Raharjo, April 2004, Mengungkap Rahasia Pemrograman Dalam C++, Informatika Bandung 9. Yosua Onesimus Suheru, 2004, Trik Memecahkan Masalah Dengan Tiga bahasa Pemrograman – C++, Pascal dan Visual Basic, Gava Media, Yogyakarta 10. Inge Martina, Agustus 1997, Turbo C++ Dengan Pemrograman Berorientasi Objek, Elex Media Komputindo, jakarta

Upload: vanthuy

Post on 01-Feb-2018

254 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

ALGORITMA dan PEMROGRAMAN I

By : Sri Rezeki Candra Nursari

Literatur :

1. Rinaldi Munir, 1998, Algoritma dan Pemrograman 1 & 2;Informatika Bandung

2. Antony Pranata, 2005, Algoritma dan Pemrograman ; Graha Ilmu, Yogyakarta

3. Abdul Kadir, 2003, Pemrograman C++, Andi, Yogyakarta4. Andri Kristanto, 2003, Algoritma dan Pemrograman dengan

C++, Graha Ilmu, Yogyakarta5. Suarga, 2006, Algoritma dan Pemrograman, Andi, Yogyakarta6. C++ An Introduction To Computing, 1995, Joel Adams-

Sanford Leestma-Larry Nyhoof, Prentice-Hall, Inc7. C++ Programming Design, 1997, James P. Cohoon-Jack

W.Davidson, McGraw-Hill8. Budi Raharjo, April 2004, Mengungkap Rahasia Pemrograman

Dalam C++, Informatika Bandung9. Yosua Onesimus Suheru, 2004, Trik Memecahkan Masalah

Dengan Tiga bahasa Pemrograman – C++, Pascal dan Visual Basic, Gava Media, Yogyakarta

10. Inge Martina, Agustus 1997, Turbo C++ Dengan Pemrograman Berorientasi Objek, Elex Media Komputindo, jakarta

Page 2: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

PENGANTAR ALGORITMA

Penilaian : Gasal TA 2011/2012

UAS - Open = 40% UTS - Open = 25% ABSEN = 5 % TUGAS/NILAI ASISTEN = 30%__________________________________

Jumlah = 100%

Page 3: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Cara menyelesaikan masalah dengan komputer

menjabarkan masalah merinci langkah untuk menyelesaikan

masalah membuat sarana interaksi manusia-

komputer

algoritmaProgramkomputer

solusi

masalah

Cara menyelesaikan masalah dengan komputer

Page 4: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Apakah Algoritma itu? Algoritma berasal dari nama penulis buku Arab

yaitu Abu Ja'far Muhammad ibnu Musa Al-Khuwarizmi Algoritma adalah:

Langkah-langkah yang logis dan terstruktur untuk menyelesaikan suatu masalah

Ciri Algoritma yang baik:BerurutanTidak berarti ganda (ambiguous)Berhingga

5 ciri penting yang harus dipunyai Algoritma :1. Algoritma harus berhenti setelah mengerja-

kan sejumlah langkah. Program yang tidak pernah berhenti adalah program yang berisi algoritma yang salah

2. Setiap langkah, harus didefinisikan dengan tepat dan tidak berarti ganda

3. Algoritma memiliki nol/lebih masukan (input)

4. Algoritms memiliki nol/lebih keluaran (output)

5. Algoritma harus efektif

Page 5: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Notasi Algoritma

Notasi I : diagram alir (flowchart) Notasi II: pseudo-code

Contoh masalah : menghitung luas segiempat.

Simbol-simbol pada Flowchart

Page 6: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Notasi II : pseudo-code

Pseudocode adalah cara untuk menuliskan sebuah algoritma secara high-level (level tingkat tinggi).

Biasanya Pseudocode dituliskan dengan kombinasi Bahasa Inggris dan notasi matematika. Biasanya sebuah Pseudocode tidak terlalu detail dibandingkan dengan program. Isu-isu detail dalam program yang sifatnya teknis tidak dibahas di dalam Pseudocode.

Notasi II : pseudo-code Pseudocode adalah kode atau tanda yang meneyerupai

(pseudo) atau merupakan penjelasan cara menyelesaikan masalah.

Pseudocode sering digunakan oleh seseorang untuk menuliskan algoritma dari suatu permasalahan.

Pseudocode berisikan langkah-langkah untuk menyelesaikan suatu permasalahn [hampir sama dengan algoritma], hanya saja bentuknya sedikit berbeda dari algoritma

Pseudocode menggunakan bahasa yang hampir menyerupai bahasa pemrograman selain itu biasanya pseudocode menggunakan bahasa yang mudah dipahami secara universal dan juga lebih ringkas dari pada algoritma

Page 7: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Algoritma

Ciri-ciri algoritma : Ada input Ada proses Ada output Memiliki instruksi-instruksi yang jelas dan

tidak ambigu

Algoritma

Sifat algoritma : Tidak menggunakan simbol atau sintaks dari

suatu bahasa pemrograman Tidak tergantung pada suatu bahasa

pemrograman Notasi-notasinya dapat digunakan untuk

seluruh bahasa manapun

Page 8: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Contoh Algoritma dan Pseudocode – “Mencari Luas Persegi panjang”

Notasi I :Flowchart

mulai

Input panjang, lebar

Luas panjang * lebar

OutputLuas

selesai

Page 9: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Notasi I :Flowchart

mulai

Inputpanjang, lebar

Luas panjang * lebar

OutputLuas

selesai

Notasi II (Pseudocode):Algoritma Luas_Segiempat{Menghitung luas segiempat dengan memasukkan

nilai lebar dan panjang segiempat}Deklarasi

luas, panjang, lebar : integerDeskripsi

Input (panjang)Input (lebar)Proses luas panjang * lebarOutput (luas)

Page 10: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

atauNotasi II (Pseudocode):

Algoritma Luas_Segiempat{Menghitung luas segiempat dengan memasukkan

nilai lebar dan panjang segiempat}Deklarasi

luas, panjang, lebar : integerDeskripsi

Read(panjang)Read(lebar)luas panjang * lebarWrite(luas)

Program : serangkaian instruksi yang disusun untuk menyelesaikan sebuah masalah dengan menggunakan komputer

Kegiatan membuat program disebut Pemrograman (Programming)

Orang yang menulis program disebut Pemrogram (Programmer)

Page 11: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Program : serangkaian instruksi yang disusun untuk menyelesaikan sebuah masalah dengan menggunakan komputer

AtauProgram : adalah perwujudan atau

implementasi teknis Algoritma yang ditulis dalam bahasa pemrogaman tertentu sehingga dapat dilaksanakan oleh komputer

Programming dibagi dalam 5 tahap :1. Mengerti persoalan yang akan

diselesaikan2. Menganalisa persoalan (Diagram

Alur)3. Menulis program4. Menguji program5. Menyimpan sebagai dokumentasi

Page 12: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Beberapa Paradigma dalam Pemrograman Prosedural / Terstruktur Paradigma Fungsional Paradigma Deklaratif / Logika Paradigma Object-Oriented Paradigma Konkuren Paradigma Relasional

Paradigma bahasa Pemrograman :

Page 13: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

1. Pemrograman Prosedural Algoritma berisi urutan langkah-langkah

penyelesaian masalah proses yang procedural.

Definisi Prosedural menurut Kamus Besar Bahasa Indonesia:1. Tahap-tahap kegiatan untuk

menyelesaikan suatu aktivitas.2. Metode langkah demi langkah secara

eksak dalam memecahkan suatu masalah.

program dibedakan antara bagian data dengan bagian instruksi.

Bagian instruksi terdiri atas runtutan (se-quence) instruksi yang dilaksanakan satu per satu secara berurutan oleh pemroses. Alur pelaksanaan instruksi dapat berubah karena adanya pencabangan kondisional.

Data yang disimpan di dalam memori dimanipulasi oleh instruksi secara beruntun atau procedural.

1. Pemrograman Prosedural

Page 14: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Didasari pada konsep pemetaan dan fungsi pada matematika.

Fungsi : asosiasi (pemetaan) antara 2 type yaitu domaian dan range, yang dapat berupa: Type dasarType terkomposisi (bentukan)

2. Pemrograman Fungsional

Notasi Fungsional: Nama fungsi, Domain (parameter input) Range (definisi hasil)

Contoh :Nama-fungsi : domaian range

2. Pemrograman Fungsional

Page 15: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Didasari oleh pendefinisian relasi antar individu yang dinyatakan sebagai predikat

Sebuah program logik adalah kumpulan aksioma (fakta dan aturan deduksi)

Ketika program dieksekusi, user mengajukan pertanyaan (query), dan program akan menjawab apakah pernyataan itu dapat dideduksi dari aturan dan fakta yang ada

3. Pemrograman Deklaratif/Logika

4. Pemrograman BerorientasiObjek

Kerangka berpikir PBO berbeda dengan pemrograman tradisional. Pemrograman tradisional : memisahkan antara data, dan prosedur yang mengolah data tersebut.

PBO : data dan prosedur ini dipadukan sebagai sebuah obyek.

Page 16: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Object Oriented Programming (OOP)

Program terdiri dari obyek Obyek terdiri dari data dan fungsi

anggota

Data

Fungsi Anggota

Fungsi Anggota

Obyek

Data bersifat tersembunyi bagi fungsi-fungsi di luar fungsi anggota

Data diakses dengan cara mengakses fungsi anggota

Kelas (class) adalah kumpulan dari obyek yang sama

Object Oriented Programming (OOP)

Page 17: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Karakteristik OOP :- Encapsulation- Inheritance- Polymorphism

Encapsulation (pembungkusan)Pengemasan data dan fungsi dalam satu wadah bernama obyek

Object Oriented Programming (OOP)

Inheritance (pewarisan)Merupakan sifat yang memungkinkan sifat-sifat dari suatu kelas diturunkan ke kelas lain

Polymorphism (polimorphisme)Konsep yang menyatakan bahwa sesuatu yang sama dapat memiliki berbagai bentuk dan perilaku berbeda

Object Oriented Programming (OOP)

Page 18: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

5. Paradigma Konkuren Erat hubungannya dengan arsitektur perangkat keras yang memungkinkan pemrosesan secara paralel atau perangkat lunak sistem terdistribusi yang mengelola akses konkuren

Didasari entity dan relasi, dan pemrograman dalam bahasa query yang memungkinkan diperolehnya suatu himpunan nilai

6. Pemrograman Relasional

Page 19: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

BAHASA C++

Peubah (Variabel), Tipe Data, dan Operator

Kata-kata Kunci Untuk C++*asmautobreakcase*cdeclcharconstcontinue

defaultdodoubleelseenumextern*farfloat

forgoto*hugeifint*interrupt

long*near

*pascalregisterreturnshortsignedsizeofstaticstruct

switchtypedefunionunsigned

voidvolatilewhile

Page 20: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Yang harus diketahui dari Bahasa C

1. Bersifat Case Sensitive, artinya bahasa C mem-bedakan huruf besar & huruf kecil Contoh: Nn

2. Deklarasi didefinisikan sebelum kata main()adalah deklarasi GLOBAL, artinya semua nama yang didefinisikan didalam deklarasi global dikenal diseluruh bagian program, termasuk didalam fungsi/prosedur yg ada didlm program.Deklarasi didefinisikan didalam main(), maka nama didalam bagian deklarasi (disebut deklarasi lokal) hanya dikenal oleh program utama saja, tidak dikenal oleh fungsi/prosedur

3. Komentar ditulis diantara ‘/*’ dan ‘*/’ atau ‘//’

Bagian-bagian program C++- Contoh program :

//contoh program c++ untuk membuat komentar

#include <iostream.h> Header#include <conio.h>

void main() nama fungsi{clrscr(); menghapus layar Blok / Tubuh fungsicout << “Contoh program C++\n” ;}Mencetak di layar Akhir statement

Page 21: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Bagian-bagian program C++- Contoh program :

//contoh program c++ untuk membuat komentar

#include <iostream.h> Header

void main() nama fungsi{

Blok / Tubuh fungsicout << “Contoh program C++\n” ;}Mencetak di layar Akhir statement

Proses Pembentukan File exe

Page 22: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

ELEMEN DASAR C++

NAMA PENGENAL Nama pengenal adalah nama-nama yang ditentukan

oleh programmer (harus berbeda dengan kata-kata kunci)

Ketentuannya sebagai berikut : Panjangnya dapat berupa 1 karakter atau lebih, tetapi

hanya 32 karakter pertama yang akan diperhatikan Karakter pertama harus berupa huruf atau karakter garis

bawah (_) Karakter-karakter khusus yang lain dan blank kecuali garis

bawah tidak dapat digunakan Huruf besar dan huruf kecil dianggap berbeda (case

sensitive) Tidak boleh sama dengan kata-kata kunci

Page 23: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Pengenal (Identifier)- Penamaan Pengenal :

- Terdiri dari satu atau lebih karakter- Bisa berupa gabungan huruf, digit, dan garis bawah- Berawalan huruf atau garis bawah- Case sensitive- Contoh : GajiPegawai, gaji_pegawai, _gajipegawai, gaji2- Penamaan yang salah :

- 1nama (tidak boleh diawali angka)- Gaji-pegawai (tidak boleh ada tanda -)- #gajipegawai (simbol # tidak boleh dipakai)- Gaji pegawai (tidak boleh pakai spasi)

Tipe Data- Tipe data dasar pada C++ :

- char- int- short- long- float- double- long double

Page 24: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Tipe Data

3.4 x 10e-4932 hingga 1.1 x 10e493210 bytelong double

3.4 x 10e-38 hingga 3.4 x 10e386 byteFloat

1.7 x 10e-308 hingga 1.7 x 10e3088 bytedouble

-32768 hingga 327672 byteint

-2.147.438.648 hingga 2.147.438.6474 byteLong

0 hingga 2551 bytechar (unsigned char)

Tipe DataUkuranMemori Jangkauan Nilai

char (signed char) 1 byte -128 hingga 127

Soal Ibu Budi belanja di Indomaret. Setiap kali ibu Budi

belanja, selalau mendapat diskon 10% dari total belanjanya. Hitung Diskon yang didapatkan oleh Ibu Budi dan Total yang harus dibayarkan oleh Ibu budi kepada Indomaret.

Perintah : Buat Flowchart Buat Pseudocode Buat Algoritma

Output diskon, ttlbyr Input ttlbelanja Proses

diskon 10%*ttlbelanja ttlbyr ttlbelanja - diskon

Page 25: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

DEKLARASI VARIBEL Variabel adalah suatu pengenal yang digunakan

untuk menyimpan suatu nilai dan nilai dari variabel dapat berubah-ubah selama proses dari program

Contoh deklarasi variabel int x,y mendeklarasikan variabel x dan y bertipe

integer float a,b char huruf double x long int x register x

Variabel dan Konstanta- Variabel adalah tempat untuk menampung suatu nilai

dan nilai tersebut dapat dirubah selama program berlangsung

- Deklarasi variabel:- int angka- char huruf- char nama[20]- float harga

- Inisialisasi variabelContoh :- int jumlah = 10;- char kata = ‘a’;

Page 26: ALGORITMA dan PEMROGRAMAN I - reezeki2011 · PDF filePEMROGRAMAN I By : Sri Rezeki ... Kelas (class) ... long double 10 byte 3.4 x 10e-4932 hingga 1.1 x 10e4932 Float 6 byte 3.4 x

Variabel dan Konstanta

- Konstanta bernamaContoh definisi : - const float PHI = 3.141592;- const int MAX = 15;