47
1 Programming Programming Lecturer: Dr. Ir. I Made Astina, M.Eng. Faculty of Mechanical and Aerospace Engineering Institut Teknologi Bandung Languange used: C++ Language Programming Freeware used: MinGW Developer Studio C++ Start: second week

Chpt-Programming1

Embed Size (px)

DESCRIPTION

sip

Citation preview

  • ProgrammingLecturer: Dr. Ir. I Made Astina, M.Eng.

    Faculty of Mechanical and Aerospace EngineeringInstitut Teknologi BandungLanguange used: C++ Language Programming

    Freeware used: MinGW Developer Studio C++Start: second week

  • ReferenceBudi Raharjo, Pemrograman C++, Informatika, Bandung, 2009http://www.icce.rug.nl/documents/cplusplus/Bjarne Stroustrup, The C++ Programming Language, Addison-Wesley, 1997Herbert Schildt, C++: The Complete Reference, fourth edition, McGrawHill Inc, 2003

  • PemrogramanBelajar memrogram: belajar tentang metodologi pemecahan masalah, kemudian menuangkannya dalam suatu notasi yang mudah dipahami Belajar bahasa pemrograman: belajar memakai suatu bahasa pemrograman, aturan tata bahasanya (syntaxis), instruksi, tatacara pengoperasian compiler

    Programming Learning:AlgoritmaFlowchartPseudocodeProgramcodeNext slide will explain all

  • Urutan pekerjaan dalam pembuatan program 1. Pendefinisian masalah apa input & outputnya 2. Penyusunan algoritma diagram alir/flowchart 3. Pengkodean (coding) menerjemahkan algoritma ke dalam bahasa pemrograman 4. Runing & debugging menjalankan program dan memperbaiki kesalahan yang ada 5. Dokumentasi program arsip program, termasuk listing program dan penjelasannya

  • AlgoritmaAlgoritma adalah urutan logis pengambilan keputusan untuk pemecahan masalah

    (KBBI Kamus Besar Bahasa Indonesia, Balai Pustaka, 1988) urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis

  • Melaksanakan algoritma berarti mengerjakan langkah-langkah di dalam algoritma tersebut pemroses harus mengerti setiap langkah dalam algoritma Bila pemrosesnya adalah komputer, maka algoritma harus ditulis dalam notasi bahasa pemrograman disebut sebagai program komputer Jadi : * algoritma adalah urutan langkah-langkah penyelesaian masalah * program komputer adalah realisasi algoritma dalam bahasa pemrogramanAlgoritma dan Program Komputer

  • Contoh persoalan (1):ada 2 buah bejana, sebut saja bejana A dan bejana B, dimana bejana A berisi larutan berwarna merah dan bejana B berisi larutan berwarna biru. Kedua isi bejana tersebut akan dipertukarkan, sehingga bejana A akan berisi larutan berwarna biru dan bejana B berisi larutan berwarna merah. Buatlah algoritma pemecahan masalahnya !

  • Pendefinisian masalah: - masukan (input): bejana A berisi larutan berwarna merah bejana B berisi larutan berwarna biru

    - keluaran (output): bejana A berisi larutan berwarna biru bejana B berisi larutan berwarna merah

    * Algoritma: 1) tuangkan larutan dari bejana A ke dalam bejana B 2) tuangkan larutan dari bejana B ke dalam bejana A

  • Correct Algorithm?Algoritma di muka tidak memberikan hasil seperti yang diharapkan hasil akhir yang diperoleh adalah bejana A berisi campuran dari larutan berwarna merah dan biru, sedangkan bejana B kosong. Seharusnya: 1) tuangkan larutan dari bejana A ke dalam bejana kosong C 2) tuangkan larutan dari bejana B ke dalam bejana A 3) tuangkan larutan dari bejana C ke dalam bejana B

  • Contoh persoalan (2):Lima (5) buah bilangan bulat positif diberikan dan sebut saja bilangan A, B, C, D, dan E. Carilah bilangan terkecil di antara kelima bilangan tersebut! * Pendefinisian masalah : - input:bilang bulat positif A, B, C, D, E - output:bilangan terkecil di antara kelima bilangan tersebut

  • Finding Minimum!Algoritma: 1. ambil X = A 2. bila X > B , maka X = B bila X C , maka X = C bila X D , maka X = D bila X E , maka X = E bila X
  • Contoh persoalan (3):Diberikan 2 buah bilangan bulat positif m dan n, dimana m > n. Carilah bilangan pembagi bersama terbesar (PBT) dari kedua bilangan tersebut (PBT = bilangan bulat positif terbesar yang membagi habis bilangan m dan n) * Pendefinisian masalah: - input : bilangan bulat positif m dan n, m > n - output : bilangan pembagi bersama terbesar untuk bilangan m dan n

  • Finding largest division number of two number!Algoritma:

    1) bagilah bilangan m dengan n, sebut saja sisanya adalah s2) jika s = 0, maka PBT = n, selesai jika s 0, maka lanjutkan ke langkah 33) ganti nilai m dengan n, ganti nilai n dengan s4) kembali ke langkah 1

  • STRUKTUR DASAR ALGORITMA

    1. SEQUENCE BERURUTAN2. SELECTION PEMILIHAN3. REPETITION PENGULANGAN

  • Diberikan 5 buah bilangan bulat positif A, B, C, D, E. Buatlah algoritma agar kelima buah bilangan tersebut tersusun berurutan dari yang terkecil sampai yang terbesar !Misalnya : A = 10 B = 15 C = 5 D = 17 E = 2Contoh persoalan (4) :

  • Putaran ke-1 : 10 15 5 17 2 Cari elemen terkecil dari elemen ke-1 sampai ke-5 Elemen ke-5, nilai 2

    2 15 5 17 10 Pertukarkan nilai elemen ke-5 dengan elemen ke-1

    Putaran ke-2 :

    2 15 5 17 10 Cari elemen terkecil dari elemen ke-2 sampai ke-5 Elemen ke-3, nilai 5

    2 5 15 17 10 Pertukarkan nilai elemen ke-3 dengan elemen ke-2

    Contd 1

  • Putaran ke-3 : 2 5 15 17 10 Cari elemen terkecil dari elemen ke-3 sampai ke-5 Elemen ke-5, nilai 10

    2 5 10 17 15 Pertukarkan nilai elemen ke-5 dengan elemen ke-3

    Putaran ke-4 :

    2 5 10 17 15 Cari elemen terkecil dari elemen ke-4 sampai ke-5 Elemen ke-5, nilai 15

    2 5 10 15 17 Pertukarkan nilai elemen ke-5 dengan elemen ke-4

    Contd 2

  • Algoritma dari penyelesaian masalah pengurutan data:

    T0 : kumpulan data ke-1 sampai ke-N belum terurut membesar algoritma pengurutan data T1 : kumpulan data ke-1 sampai ke-N sudah terurut membesar

  • Algoritma pengurutan data:

    Berikan N buah data yang tersusun secara acak.Urutkan kumpulan data tersebut sehingga:data ke-1 data ke-2 data ke-N

    * Deskripsi : untuk putaran K = 1, 2 , .. , N-1, lakukan: 1) cari data dengan nilai terkecil mulai dari data ke-K sampai data ke-N 2) pertukarkan data dengan nilai terkecil dengan data ke-N

  • 1.1 Data ke-K dianggap data terkecil (min)1.2 Bandingkan min dengan data ke-J = K+1, K+2, .. , N 1.2.1 untuk J = K+1,K+2, .. , N lakukan: jika data ke-J lebih kecil dari min , maka isikan data ke-J sebagai min yang baru2.1 Tempatkan data ke-K di sebuah tempat sementara (temp)2.2 Tempatkan min di tempat data ke-K (ini akan berakibat nilai lama terhapus)2.3 Tempatkan nilai yang tersimpan di temp di tempat min yang lama

  • DESKRIPSI SECARA LENGKAP Untuk putaran ke-K = 1,2, . ,N-1 , lakukan :

    1. Data ke-K dianggap data terkecil sementara (min)2. Untuk J = K1, K+2, . , N , lakukan : jika data ke-J lebih kecil dari min, maka isikan data ke-J sebagai min yang baru3. Tempatkan data ke-K di sebuah tempat sementara (temp), tempatkan min di tempat data ke-K yang lama, tempatkan temp di tempat min yang lama

  • Pengurutan data metode Bubble sort (pengurutan gelembung):

    untuk setiap putaran ke-I=1,2,..,N-1 , lakukan : mulai dari elemen K=N,N-1, . , I+1 lakukan : 1. Bandingkan L(K) dengan L(K-1) 2. Pertukarkan L(K) dengan L(K-1) jika L(K)

  • Putaran ke-2 : K=6 : 8 25 27 10 21 76 K=5 : 8 25 27 10 21 76 K=4 : 8 25 10 27 21 76 K=3 : 8 10 25 27 21 76

    Putaran ke-3 : K=6 : 8 10 25 27 21 76 K=5 : 8 10 25 21 27 76 K=4 : 8 10 21 25 27 76 Putaran ke-4 : K=6 : 8 10 21 25 27 76 K=5 : 8 10 21 25 27 76 Putaran ke-5 : K=6 : 8 10 21 25 27 76

  • Selection Sort MethodPengurutan data metode Selection sort (pengurutan pilih) :

    1. Jumlah putaran = N 12. Untuk setiap putaran ke-I = 1,2, . ,jumlah putaran ; lakukan algoritma berikut: 2.1 Cari elemen terbesar mulai dari elemen ke-1 sampai elemen ke-N 2.2 Pertukarkan elemen terbesar dengan elemen ke-N 2.3 Nilai N kurangi satu 2.4 Jika N > 1 balik ke 2.1 dan jika tidak lanjut ke 2.5 2.5 Selesai

  • Contoh : urut dari terkecil ke terbesar dengan metode Selection Sort data berikut: 25 , 27 , 10 , 8 , 76 , 21 D(1) D(2) D(3) D(4) D(5) D(6) d=6 , jadi banyak putaran adalah 5 kali, Putaran ke-1 (N=6) : elemen terbesar D(5) = 76 pertukarkan dengan elemen ke-6 : 25 27 10 8 21 76 Putaran ke-2 (N=5) : elemen terbesar D(2) = 27 pertukarkan dengan elemen ke-5 : 25 21 10 8 27 76 Putaran ke-3 (N=4) : elemen terbesar D(1) = 25 pertukarkan dengan elemen ke-4 : 8 21 10 25 27 76 Putaran ke-4 (N=3) : elemen terbesar D(2) = 21 pertukarkan dengan elemen ke-3 : 8 10 21 25 27 76

    Putaran ke-5 (N=2) : elemen terbesar D(2) = 10 pertukarkan dengan elemen ke-2 : 8 10 21 25 27 76Contd

  • Insertion Sort method (pengurutan sisip)Pengurutan data dengan metode Insertion sort (pengurutan sisip)Untuk setiap putaran ke-I=2,3, , N ; lakukan : * berikan nilai D(I) kepada x * sisipkan x pada tempat yang sesuai antara D(1) . D(I)

    Contoh : N=6 25 , 27 , 10 , 8 , 76 , 21 D(1) D(2) D(3) D(4) D(5) D(6)

    Putaran ke-2 : x=D(2)=27 harus dicari tempat yang tepat di antara D(1) dan D(2) dengan cara menggeser elemen-elemen di sebelah kanannya 25 , 27 , 10 , 8 , 76 , 21Putaran ke-3 : x=D(3)=10 harus dicari tempat yang tepat di antara D(1) dan D(3) dengan cara menggeser elemen-elemen disebelah kanannya 10 , 25 , 27 , 8 , 76 , 21Putaran ke-4 : x=D(4)=8 harus dicari tempat yang tepat di antara D(1) dan D(4) dengan cara menggeser elemen-elemen di sebelah kanannya 8 , 10 , 25 , 27 , 76 , 21Putaran ke-5 : x=D(5)=76 harus dicari tempat yang tepat di antara D(1) dan D(5) dengan cara menggeser elemen-elemen di sebelah kanannya 8 , 10 , 25 , 27 , 76 , 21Putaran ke-6 : x=D(6)=21 harus dicari tempat yang tepat di antara D(1) dan D(6) dengan cara menggeser elemen-elemen di sebelah kanannya 8 , 10 , 21 , 25 , 27 , 76

  • Tinjauan: metode Bubble sort : * tidak efisien karena banyaknya operasi pertukaran yang dilakukan pada setiap langkah pencarian elemen terbesar memerlukan waktu yang (relatif) lebih lama dibandingkan metode lain * sederhana dan mudah dipahami

    metode Selection sort : * dibandingkan dengan metode Bubble sort, metode ini memiliki kinerja lebih baik operasi pertukaran hanya satu kali pada setiap putaran waktu yang diperlukan lebih singkat

    metode Insertion sort : * diperlukan banyak operasi pergeseran untuk mencari posisi yang tepat untuk data yang banyak, jumlah operasi pergeseran meningkat secara kuadratik tidak praktis untuk data yang banyak

  • Algoritma Penjumlahan Bilangan Genap

    1) Sediakan tempat untuk menampung jumlah bilangan genap dan banyak bilangan genap sebut Jum dan Jdat2) masukkan nilai banyak bilangan sebut N3) masukkan nilai bilangan (sebanyak N bilangan, yaitu D(1) sampai dengan D(N))4) periksalah jenis setiap bilangan, apakah bilangan genap atau gasal. Bila bilangan adalah bilangan genap, tambahkan nilai bilangan tersebut ke Jum , dan tambahkan nilai 1 ke Jdat

  • MulaiJdat = 0Jum = 0Input NI = 1 , NInput D(I)I = 1D(I) habis dibagi 2yatidakJdat=Jdat+1Jum=Jum+D(I)I = I + 1I > NtidakyaSelesaiJdat, JumTulisFlowchart

  • Algoritma Penjumlahan Bilangan Genap (Alt.)1) Sediakan tempat untuk menampung jumlah bilangan genap dan banyak bilangan genap sebut Jum dan Jdat2) untuk putaran I=1,2, ..,N : - baca/masukkan data nilai bilangan ke-I - Bila jenis bilangan adalah bilangan genap, tambahkan nilai bilangan ke Jum dan nilai Jdat dinaikkan 1

  • MulaiJdat = 0Jum = 0Input NI = 1 , NInput Bil BilHabis dibagi 2yaJdat=Jdat+1Jum=Jum+BiltidakTulisJdat,JumSelesaiFlowchart (Alt.)

  • Menuliskan AlgoritmaAlgoritma dapat dituliskan dengan berbagai cara:TeksLevel kedekatan dengan kode program: mulai dari teks bebas sampai pseudocodeDiagram, misal: bagan alir, diagram alir (flowchart)

  • Contoh Persoalan 1Buatlah algoritma untuk menentukan apakah suatu bilangan bulat positif adalah bilangan genap atau bilangan gasal/ganjil.

  • Contoh Algoritma 1: Menggunakan Teks BebasBagi bilangan dengan bilangan 2Hitung sisa hasil bagi pada langkah 1.Bila sisa hasil bagi sama dengan 0 maka bilangan itu adalah bilangan genap tetapi bila sisa hasil bagi sama dengan 1 maka bilangan itu adalah bilangan gasal.

  • Contoh Algoritma 2:Menggunakan Pseudocode

  • Contoh Algoritma 3:Menggunakan Flowchart

  • Bagan Alir (Flowchart)Bagan alir/diagram alir (flowchart): skema grafis untuk merepresentasikan algoritmaKelebihan:Bentuk grafis memudahkan interpretasi dan pembacaanRelatif mudah dimengerti Relatif mudah untuk dibuatKekurangan:Tidak ringkas (membutuhkan media penulisan yang relatif besar)Untuk algoritma dalam ukuran besar menjadi tidak praktisKurang fleksibel untuk menjelaskan konsep-konsep spesifik dalam pemrogramanMisalnya: struktur data (type data tidak terdefinisi eksplisit), kondisional dengan banyak kasus, dsb.

  • Simbol Flowchart

  • Simbol Flowchart

  • Simbol FlowchartDll.

  • Dari Spesifikasi Masalah ke Flowchart Contoh Persoalan 2Buatlah sebuah algoritma yang membaca sebuah harga berupa bilangan bulat yang mewakili pengukuran suhu air (dalam derajat Celcius) pada tekanan atmosfir dan menuliskan wujud air pada temperatur dan tekanan tersebut:Jika suhu0 derajat, maka wujud air: bekuJika suhu>0 derajat dan 100 derajat, maka wujud air: cairJika suhu
  • Contoh Persoalan 2KamusT : integer {suhu air}

  • Dari Spesifikasi Masalah ke FlowchartContoh Persoalan 3Buatlah sebuah algoritma yang membaca sebuah nilai N yang merupakan integer positif > 0 dan menuliskan output 1,2,3,N berderet ke bawah, contoh: N = 4123 4

  • Contoh Persoalan 3Kamus:N : integer > 0 {input bilangan}I : integer > 0 {counter}

  • LatihanBuatlah algoritma dalam bentuk flowchart untuk persoalan-persoalan berikut:Menentukan apakah suatu huruf adalah huruf A atau bukan.Menentukan rangking (urutan) dari 3 buah bilangan bulat yang berbeda dan menuliskan urutannya secara menaik.Menentukan apakah masukan tahun (bilangan bulat positif) adalah tahun kabisat atau bukan.Buatlah algoritma untuk menghitung nilai faktorial dari masukan sebuah bilangan bulat positif atau 0.Buat algoritma untuk menghitung jumlah N suku dari deret aritmatika berikut: Sn = 3 + 7 + 11 + + (4n-1) Buat algoritma untuk mencetak pasangan nilai X dan Y di mana hubungan antara X dan Y memenuhi persamaan Y = X3 2X +1 dan nilai x berubah dari 10 sampai 10.

  • Kuis 1, 1 Feb 2012Buat bagan alir untuk menghitung:a. jumlah bilangan genap (NIM Genap)b. jumlah bilangan ganjil (NIM Ganjil)

    dari suatu himpunan data yang ada.

  • PR 1Buat bagan alir untuk penentuan akar dari suatu bilangan.Buat algoritma tahapan untuk menentukan menghasilkan bilangan prima yang nilainya kurang dari N