41
Pertemuan 5 PEMILIHAN/PERCABANGAN Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen: Condro Kartiko ALGORITMA PEMROGRAMAN (Semester 1 - IF6110202) S1 Informatika IT Telkom Purwokerto

Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

Pertemuan 5 – PEMILIHAN/PERCABANGAN

Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks)

Dosen: Condro Kartiko

ALGORITMA PEMROGRAMAN (Semester 1 - IF6110202)

S1 InformatikaIT Telkom Purwokerto

Page 2: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

CAPAIAN PEMBELAJARAN UMUM

Setelah mengikuti mata kuliah Algoritma Pemrograman, Mahasiswa S1 Informatika mampu membuat algoritma dalambentuk pseudocode dan flowchart serta membangun program untuk menyelesaikan permasalahan yang sederhana/mudah

S1 InformatikaIT Telkom Purwokerto

Page 3: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

CAPAIAN PEMBELAJARAN KHUSUS

Setelah menyelesaikan pertemuan ke-5 ini diharapkan mahasiswamampu menerapkan algoritma pemilihan/percabangan ke dalam

pseudocode dan program

S1 InformatikaIT Telkom Purwokerto

Page 4: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

CAPAIAN PEMBELAJARAN KHUSUS

S1 InformatikaIT Telkom Purwokerto

We Are Here !!!

Page 5: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PUSTAKA WAJIB

• Munir, Rinaldi., Leony Lidya. 2016.Algoritma dan PemrogramanDalam Bahasa Pascal, C, dan C++Edisi Keenam. Bandung: PenerbitInformatika.

BAB 7 – PEMILIHAN

S1 InformatikaIT Telkom Purwokerto

Page 6: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

SUB POKOK BAHASAN

• Pendahuluan

• Menganalisis Kasus

• Satu Kasus

• Dua Kasus

• Tiga Kasus atau Lebih

• Konstruksi Case

• Translasi Algoritma dengan Struktur Pemilihan dalam C++

• Contoh Soal dan Pembahasan

S1 InformatikaIT Telkom Purwokerto

Page 7: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PENDAHULUAN (1)

S1 InformatikaIT Telkom Purwokerto

Apa yang anda ketahui tentang konsep Percabangan?

Percabangan?

Page 8: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PENDAHULUAN (2)

S1 InformatikaIT Telkom Purwokerto

Ada 2 wanita, A dan B. B itu kurang cantik tapi baik dan pintar, sedangkan A itu cantik dan baik tapi kurang pintar. Pilih A atau B ?

A B

Pilih mana ya ……

Page 9: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PENDAHULUAN (3)

S1 InformatikaIT Telkom Purwokerto

• Percabangan adalah adalah suatu kondisi dimana sebuahinstruksi tidak dijalankan secara sekuensial, tetapi lebihberdasarkan pada kondisi.

• Pernyataan percabangan memungkinkan suatu pernyataandieksekusi hanya jika suatu kondisi terpenuhi atau tidakterpenuhi.

Page 10: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

S1 InformatikaIT Telkom Purwokerto

• Program hanya akan menjalankan statement yang ada di dalam percabangan jika kondisi bernilai benar atautrue.

• Kondisi pada percabangan harus berupa operator Boolean.

• Contoh:int a = 5 // statement bukan merupakan kondisiint a == 5 // statement yang berupa kondisi

• Kondisi menggunakan operator – operator Booleanyang hanya memberikan hasil true atau false seperti==, >, <, >=, <=, !=, &, &&, |, ||

PENDAHULUAN (4)

Page 11: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

JENIS STRUKTUR PERCABANGAN

S1 InformatikaIT Telkom Purwokerto

Page 12: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

IF.. ELSE (1)

S1 InformatikaIT Telkom Purwokerto

Digunakan untuk menguji sebuah kondisi.

Bila kondisi yang diuji terpenuhi, program akanmenjalankan pernyataan – pernyataan tertentu

Bila kondisi yg diuji salah, program akan menjalankanpernyataan lain.

Page 13: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

IF.. ELSE (2)

S1 InformatikaIT Telkom Purwokerto

Bentuk umumnya adalah :IF kondisi then

{pernyataan yg dijalankan jika kondisi terpenuhi}

else

{pernyataan yg dijalankan jika kondisi tidak terpenuhi}

Page 14: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

JENIS PERCABANGAN IF

S1 InformatikaIT Telkom Purwokerto

Proses percabangan IF memiliki tiga kasus, antara lain :

• Percabangan Tunggal• Percabangan Ganda• Percabangan Lebih dari 2

Page 15: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN TUNGGAL (1)

S1 InformatikaIT Telkom Purwokerto

Percabangan tunggal bekerja apabila hanya ada SATUalternatif instruksi saja yang dijalankan. Logika ini memungkinkan kompiler untuk menjalankan sebuah instruksi atau tidak sama sekali. Kompiler baru akan menjalankan instruksi yang ada di dalam notasi percabangan apabila kondisi yang diinginkan terpenuhi atau memberikan nilai akhir true

Apabila kondisi tersebut memberikan nilai akhir falsemaka tidak akan ada instruksi yang dijalankan.

Page 16: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN TUNGGAL (2)

S1 InformatikaIT Telkom Purwokerto

//jika hanya terdiri satu statement

if (kondisi) statemen

//jika terdapat lebih dari satu statement

if (kondisi) {

statemen1;

statemen2;

….. }

Page 17: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN TUNGGAL (3)

S1 InformatikaIT Telkom Purwokerto

Page 18: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN TUNGGAL (4)

S1 InformatikaIT Telkom Purwokerto

#include<iostream.h>

#include<conio.h>

main(){

int nilai;

cout<<”Masukkan Nilai = ”;cin>>nilai;

if (nilai>0)

cout<<”Angkanya adalah bilangan positif”;

getch();}

Page 19: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN GANDA(1)

S1 InformatikaIT Telkom Purwokerto

Percabangan ganda apabila terdapat DUA alternatifinstruksi yang dijalankan. Logika ini memungkinkan kompiler menjalankan salah satu dari DUA alternatif instruksi yang ada, dan salah satu instruksi pasti dijalankan.

Struktur percabangan jenis ini sedikit lebih kompleks bila dibandingkan dengan struktur yang hanya memiliki satu buah kondisi.

Page 20: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN GANDA(2)

S1 InformatikaIT Telkom Purwokerto

if (kondisi)

{ statemen_jika_kondisi_terpenuhi; }

else

{ statemen_jika_kondisi_tidak_terpenuhi; }

Page 21: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN GANDA(3)

S1 InformatikaIT Telkom Purwokerto

Dalam menuliskan kondisi/syarat selalu digunakan operator relasional sebagai sarana untuk melakukan proses pengecekan :

Operator Arti> Lebih besar< Lebih kecil

= = Sama dengan>= Lebih atau sama<= Kurang atau sama!= Tidak sama dengan

Page 22: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN GANDA(4)

S1 InformatikaIT Telkom Purwokerto

#include<iostream.h>

#include<conio.h>

main(){

int nilai;

cout<<"Masukkan Nilai = “;cin>>nilai;

if (nilai % 2 == 0)

cout<<“adalah bilangan genap";

else

cout<<“adalah bilangan ganjil";

getch();}

Page 23: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN LEBIH DARI DUA (1)

S1 InformatikaIT Telkom Purwokerto

Pada dasarnya hanya terdapat DUA jenis seleksi dalam struktur algoritma pemrograman, namun bukan berarti hanya bisa dikembangkan pada DUA jenis tersebut saja. Struktur seleksi dapat dikembangkan menjadi bentuk yang tidak terbatas dan dapat dikombinasikan kedalam bentuk perulangan selama notasi penulisannya tidak terdapat kesalahan. Kemampuan logika seseorang dalam merancang program dan mengamati dari permasalahan yang ada menjadi bagian yang paling penting dalam melakukan pengembangan dari bentuk seleksi ini. Dibawah ini akan diberikan contoh seleksi menggunakan kondisi lebih dari DUA

Page 24: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN LEBIH DARI DUA (2)

S1 InformatikaIT Telkom Purwokerto

Percabangan jenis ini merupakan perluasan dari struktur percabangan dengan satu dan dua kondisi. Strukturnya yaitu :

if (kondisi_1)

{statemen_jika_kondisi_1_terpenuhi;}

else if (kondisi_2)

{statemen_jika_kondisi_2_terpenuhi;}

else if (kondisi_3)

{statemen_jika_kondisi_3_terpenuhi;}

else

{statemen_jika_semua_kondisi_diatas_tdk_terpenuhi;}

Page 25: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN LEBIH DARI DUA (3)

S1 InformatikaIT Telkom Purwokerto

Page 26: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERCABANGAN LEBIH DARI DUA (4)

S1 InformatikaIT Telkom Purwokerto

#include<iostream.h>

#include<conio.h>

main(){

int bil;

cout<<“Input angka yg akan dicek “;cin>>bil;

if (bil > 0)

{cout<<bil<<" adalah bilangan Positif“;}

else if (bil < 0)

{cout<<bil<<" adalah bilangan Negatif“;}

else

{cout<<"Anda mengInputkan bilangan Nol“;}

getch();}

Page 27: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

APA BEDANYA ?

S1 InformatikaIT Telkom Purwokerto

Page 28: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

SWITCH (1)

S1 InformatikaIT Telkom Purwokerto

Selain menggunakan struktur if, juga bisa mempunyai percabangan dengan menggunakan switch.

Hampir sama dengan struktur percabangan IF, tetapilebih cocok digunakan jika kondisi yang diperiksasangat banyak

Digunakan untuk menyederhanakan if..else if..

Mempunyai banyak kondisi.

Bentuk umum struktur percabangan switch yaitu :

Page 29: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

SWITCH (2)

S1 InformatikaIT Telkom Purwokerto

Kondisi yang diperiksa harus berupa data ordinal (bertipe integer atau char), dan tidak boleh bertipe real

Page 30: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

SWITCH (3)

S1 InformatikaIT Telkom Purwokerto

switch (ekspresi) {

case nilai_konstanta1 :

statemen(pernyataan);

break;

case nilai_konstanta2 :

statemen(pernyataan);

break;

…….

default :

statemen(pernyataan)_alternatif;

}

Page 31: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

SWITCH (4)

S1 InformatikaIT Telkom Purwokerto

#include <iostream.h>

#include <conio.h>

main() {

int a;

cout<<"Masukkan bilangan:“;cin>>a;

switch (a){

case 1 :

cout<<"Hari ke "<<a<<“:Minggu";

break;

Page 32: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

SWITCH (5)

S1 InformatikaIT Telkom Purwokerto

case 2 :

cout<<"Hari ke "<<a<<" : Senin";

break;

case 3 :

cout<<"Hari ke "<<a<<" : Selasa";

break;

case 4 :

cout<<"Hari ke "<<a<<" : Rabu";

break;

Page 33: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

SWITCH (6)

S1 InformatikaIT Telkom Purwokerto

case 5 :

cout<<"Hari ke "<<a<<" : Kamis";

break;

case 6 :

cout<<"Hari ke "<<a<<" : Jum'at";

break;

case 7 :

cout<<"Hari ke "<<a<<" : Sabtu";

break;

default :

cout<<"Tidak terdapat hari ke"<<a;

}

getch();}

Page 34: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERNYATAAN SWITCH-CASE

S1 InformatikaIT Telkom Purwokerto

Struktur logika switch-case dapat digambarkan sbb.:

case b

case a

case z

case a action(s)

case b action(s)

case z action(s)

break

break

break

default action(s)

true

true

true

false

false

false

case b

case a

case z

case a action(s)

case b action(s)

case z action(s)

break

break

break

default action(s)

true

true

true

false

false

false

Page 35: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

PERBEDAAN IF DAN CASE

S1 InformatikaIT Telkom Purwokerto

Unggul yang mana antara struktur if dengan struktur case.?

Sebenarnya kalau dikatakan unggul, keduanya sama-sama unggul. Karena struktur case memiliki kelebihan dari pada struktur if, dan struktur if pun memiliki kelebihan dari pada struktur case.

Kelebihan statemen case terletak pada struktur script atau codenya yang lebih ringkas dibandingkan dengan struktur pada if.

Sedangkan kelebihan statemen if yaitu struktur if dapat menyelesaikan hampir seluruh permasalahan, sedang case tidak semua permasalahandapat diselesaikan dengan ini.

Mengapa statemen if dapat menyelesaikan hampir semua masalah, sedangkan statemen case tidak bisa?

Karena pada statemen if dapat menjalankan suatu percabangan didalam percabangan yang disebut juga dengan istilah if bersarang, dan pada statemen case tidak ada hal yang seperti itu.

Page 36: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

Selanjutnya Baca…

• Munir, Rinaldi., Leony Lidya. 2016.Algoritma dan PemrogramanDalam Bahasa Pascal, C, dan C++Edisi Keenam. Bandung: PenerbitInformatika.

BAB 8 – PENGULANGAN

S1 InformatikaIT Telkom Purwokerto

Page 37: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

Tugas (1)

S1 InformatikaIT Telkom Purwokerto

Petunjuk pengerjaan:Kerjakan beberapa latihan soal di bawah ini, diketik dalam format PDF dandikumpulkan via email ke [email protected] paling lambatMinggu, tanggal 29 Oktober 2017 pukul 23:59 WIB. Format file dan subjekemail: [ALPRO]S1IF05A Tugas4_NIM1_Nama1,NIM2_Nama2,NIM3_Nama3

1. [poin 10]Buatlah algoritma yang membaca sebuah bilangan bulat positiflalu menentukan apakah bilangan tersebut merupakan kelipatan 4.

2. [poin 10]Pasar Swalayan X memberikan diskon harga bagi pembeli yangnilai total belanjanya lebih dari Rp100.000. Tulislah algoritma untukmenentukan nilai belanja setelah dikurangi diskon. Data masukan adalahnilai total belanja pembeli, sedangkan keluarannya adalah diskon hargadan nilai belanja setelah dikurangi diskon.

Page 38: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

Tugas (2)

S1 InformatikaIT Telkom Purwokerto

Page 39: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

Tugas (3)

S1 InformatikaIT Telkom Purwokerto

6. [poin 10]Jika kita berbelanja di pasar swalayan/supermarket, nilai total belanja kita seringkali bukan kelipatan pecahan rupiah yang berlaku. Misalnya, nilai total belanja adalah Rp19.212,-. Andaikan saat ini pecahanrupiah yang berlaku paling kecil Rp25,-. Selain itu, juga ada pecahan Rp50,-dan Rp100,-. Umumnya kasir pasar swalayan membulatkan nilai belanja kepecahan yang terbesar. Jadi Rp19.212,- dibulatkan menjadi Rp19.225,-. Hal ini jelas merugikan konsumen. Misalkan Anda memiliki pasar swalayanyang jujur dan tidak merugikan pembeli, sehingga jika ada nilai belanjayang bukan kelipatan pecahan yang ada, maka nilai belanja itu dibulatkanke pecahan terendah. Jadi, Rp19.212,- dibulatkan menjadi Rp19.200,-. Tulislah algoritma yang membaca nilai belanja (integer) lalumembulatkannya ke nilai uang dengan pecahan terendah.

7. [poin 10](a) Tuliskan algoritma yang membaca bilangan bulat positif dalamrentang 1 sampai 10, lalu mengonversinya ke dalam angka romawi.(b) Kembangkan algoritma (a) di atas sehingga dapat mengonversi bilanganbulat positif sembarang ke dalam angka romawinya.

Page 40: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

Tugas (4)

S1 InformatikaIT Telkom Purwokerto

8. [poin 10]Dalam bidang pengolahan citra (image processing), elemengambar terkecil disebut pixel (picture element). Nilai pixel untuk gambar256 warna adalah dari 0 sampai 255. Operasi-operasi terhadap pixel seringkali berada di luar rentang nilai ini. Jika ini kasusnya, maka nilai hasiloperasi harus dipotong (clipping) sehingga tetap berada di dalam interval [0..25]. Jika nilai hasil operasi lebih besar dari 255, maka nilai tersebutdipotong menjadi 255, dan bila negatif maka dipotong menjadi 0. Dibacasebuah nilai hasil operasi pengolahan citra, buatlah algoritma untukmelakukan clipping tersebut.

9. [poin 10]Dibaca dua buah hari, hari pertama dan hari kedua. Tulislahalgoritma untuk menghitung durasi (selisih) kedua hari tersebut. Misalnya, hari pertama Kamis dan hari kedua Senin, maka dari Kamis ke Senindurasinya 5 hari.

10. [poin 10]Tulislah algoritma C++ yang membaca umur seseorang, lalumenentukan apakah umur termasuk kategori balita (0-5), anak-anak (5-12), remaja (12-20), dewasa (20-60), atau tua (60 ke atas).

Page 41: Jadwal: Selasa, 24/10/2017, 10:20-12.00 (2 sks) Dosen

S1 InformatikaIT Telkom Purwokerto