Anda di halaman 1dari 234

KONTRAK PERKULIAHAN

• Pertemuan 1-6, materinya disampaikan


oleh dosen dikelas
• Pertemuan 7 diadakan Uji Kompetensi
Individu
• Pertemuan 8 diadakan UTS, materi
diambil dari pertemuan 1-6
LANJUTAN KONTRAK PERKULIAHAN

• Pertemuan 9-14 disampaikan dosen di kelas


• Pertemuan 15 diadakan Uji Kompetensi
Individu
• Pertemuan 16 diadakan UAS dimana materi
diambil dari pertemuan 9-14

• Untuk Demontrasi Pertukaran pada pertemuan 2


mahasiswa membawa 2 Gelas/botol air yang berbeda
warnanya (Air mineral dan Air Teh ) dan 1 gelas Kosong
• Diharapkan sudah membentuk kelompok
Mata Kuliah : Logika Algoritma
Semester : Satu
Jurusan : Manajemen Informatika
SKS : 4 sks

CAPAIAN PEMBELAJARAN: Mampu membuat


program/project dengan menggunakan bahasa
pemrograman tertentu dan membuat flowchart
dari program/project yang dibuat.
Sistem Penilaian Mata Kuliah
Logika Algoritma

20 % Absensi
25% Tugas & Quiz
25% UTS
30% UAS
PERTEMUAN 1

PENGERTIAN DASAR
LOGIKA DAN ALGORITMA
PENGERTIAN DASAR

LOGIKA
Diperkenalkan pertama kali oleh Aristoteles (384-322 SM)

ALGORITMA
Diperkenalkan Oleh Ahli Matematika : Abu Ja’far
Muhammad Ibnu Musa Al Khawarizmi.
Seorang ilmuwan Persia yang menulis kitab al jabr w’al
muqabala (rules of restoration and reduction) sekitar
tahun 825 M
LOGIKA DAN ALGORITMA

Definisi Logika
1. penalaran atau bentuk pemikiran.
2. ilmu yang memberikan prinsip-prinsip yang harus
diikuti agar dapat berfikir valid menurut aturan yang
berlaku.

Definisi Algoritma
1. Langkah - langkah yang dilakukan agar solusi
masalah dapat diperoleh.
2. Suatu prosedur yang merupakan urutan langkah-
langkah yg berintegrasi.
3. Suatu metode khusus yang digunakan untuk
menyelesaikan suatu masalah yang
nyata.(Webster Dictionary)
TAHAP PENYELESAIAN MASALAH
Masalah

Analisis Model

Algoritma Analisis

Analisis Program

Eksekusi
Data
Hasil
Kriteria Pemilihan Algoritma
1. Ada Output,
2. Efektifitas dan Efesiensi,
3. Jumlah Langkahnya Berhingga,
4. Berakhir,  ( SEMI ALGORITMA )
5. Terstruktur,

 Suatu Algoritma yg terbaik (The Best): “Suatu


algoritma harus menghasilkan output yg tepat guna
(efektif) dlm waktu yg relatif singkat & penggunaan
memori yg relatif sedikit (efesien) dgn langkah yg
berhingga & prosedurnya berakhir baik dlm keadaan
dip’oleh suatu solusi ataupun tdk ada solusinya “.
Contoh Algoritma
Sebuah prosedur untuk masalah menentukan akar
kuadrat dari suatu bilangan Bulat Positif yg di Input:
Baca bilangan Bulat Positif yg diinput, sebut saja
sebagai A
1. Dinyatakan Nilai B adalah 0
2. Hitung Nilai C yg berisikan Nilai B dikalikan
Nilai B
3. Jika Nilai C sama dengan Nilai A, maka Nilai B
adalah Akar dari Nilai A, lalu stop.
4. Jika tidak, maka Nilai B akan bertambah 1
5. Kembali ke langkah pada No. 3
TAHAPAN ANALISA ALGORITMA
1. Bagaimana merencanakan suatu algoritma.
2. Bagaimana menyatakan suatu algoritma
a. Dengan bahasa semu (pseudocode).
Merupakan bentuk informal untuk mendeskripsikan algoritma
yang mengikuti struktur bahasa pemrograman tertentu.
Tujuan pseudocode adalah: Lebih mudah dibaca oleh manusia,
lebih mudah dipahami dan lebih mudah dalam menuangkan
ide/hasil pemikiran
Contoh 1:
Untuk menghitung Luas Segi tiga :
a. Masukan Nilai Alas
b. Masukan Nilai Tinggi
c. Hitung Luas =( Alas * Tinggi ) / 2
d. Cetak Luas
Lanjutan Bahasa Semu (Pseudocode)
Contoh 2 :
Sebuah prosedur ketika akan mengirimkan surat kepada
teman:
1. Tulis surat pada secarik kertas surat
2. Ambil sampul surat atau amplop
3. Masukkan surat ke dalam amplop
4. Tutup amplop surat dengan lem perekat
5. Tulis alamat surat yg dituju, jika tdk ingat, lebih dahulu
ambil buku alamat & cari alamat yg dituju, lalu tulis
alamat tsb pd amplop surat.
6. Tempelkan perangko pada amplop surat
7. Bawa surat ke kantor pos utk diserahkan pd pegawai
pos atau menuju ke bis surat untuk memasukkan surat
ke dlm kotak/bis surat.
Bahasa Pemrograman

Program adalah kumpulan intruksi-instruksi yang diberikan


kepada komputer untuk melaksanakan suatu tugas atau
pekerjaan. Dalam membuat program dibutuhkan bahasa
pemrograman.

Bahasa pemrograman adalah bahasa komputer yang


digunakan dalam menulis program

Contoh bahasa pemrograman adalah:


Bahasa rakitan (assembly), Fortran, Cobol, Pascal, C, C++,
Basic, Prolog, PHP, Java.
Lanjutan bahasa pemrograman
Berdasarkan aplikasi kegunaanya, bahasa pemrograman
dapat digolongkan menjadi 2 kelompok yaitu:
1. Bahasa Pemrograman bertujuan khusus (specific
purpose programming language), yang termasuk
kelompok ini adalah cobol (untuk terapan bisnis dan
administrasi), Fortran (aplikasi komputasi ilmiah), bahasa
assembly (aplikasi pemrograman mesin), Prolog (aplikasi
kecerdasan buatan).
2. Bahasa Pemrograman bertujuan umum (general purpose
programming language), yang dapat digunakan untuk
berbagai aplikasi, yang termasuk kelompok ini adalah
bahasa Pascal, Basic,C dan C++
Lanjutan bahasa pemrograman

Berdasarkan kedekatan bahasa pemrograman dikelompokan


menjadi 2 macam yaitu:
1. Bahasa tingkat rendah
Bahasa yang dirancang agar setiap instruksinya langsung
dikerjakan oleh komputer, tanpa harus melalui
penerjemah. Contoh: bahasa mesin (sekumpulan kode
biner (0 dan 1))

2. Bahasa tingkat tinggi


Bahasa jenis ini membuat program menjadi lebih mudah
dipahami.
Contoh: Pascal, Cobol, Basic, Fortran, C, C++
Contoh perbandingan Program C++ dan Pascal

 Perbedaan C++ dan pascal pada strukturnya


C++ Pascal
#include <stdio> program nama program
Void main() begin
{ writeln (Hallo dunia!);
Printf(“Hello dunia”); end.
}
 Perbedaan C++ dan pascal pada perintah syntax
C++ Gunakan perintah “switch case”
Pascal Gunakan “case of”
 Perbedaan C++ dan pascal pada penulis huruf
C++  Sensitive terhadap hurup kecil dan besar
Pascal  Tidak dibedakan menurut besar kecil huruf
Lanjutan tahapan Analisa Algoritma
3. Bagaimana validitas suatu algoritma.
4. Bagaimana Menganalisa suatu Algoritma.
5. Bagaimana Menguji Program dari suatu Algoritma.

Tahap Proses uji Algoritma :


a. Fase Debugging
yaitu fase dari proses program eksekusi yang akan
melakukan koreksi terhadap kesalahan.

b. Fase Profilling
yaitu fase yang akan bekerja jika program tersebut
sudah benar (telah melewati fase debugging).
Contoh Fase Debugging

Contoh menggunakan bahasa C++:


#include<conio.h>
#include<iostream.h>
main()
{
int a,t,l; //pendeklarasian variabel
clrscr();
cout<<"Masukan nilai Alas : "; //masukkan
nilai alas
cin>>a;
cout<<"Masukan nilai Tinggi : "; //masukan Muncul Pesan seperti berikut:
nilai tinggi
cin>>t;
l=(b*a)/2; //perhitungan luas
cout<<"Total Luas :"<<l<<endl; //hasil
perhitungan luas
getch(); }
Contoh Fase Profilling

#include<conio.h>
#include<iostream.h>
main()
{
int a,t,l; //pendeklarasian variabel
clrscr();
cout<<"Masukan nilai Alas : ";
//masukkan nilai alas
cin>>a;
cout<<"Masukan nilai Tinggi : ";
//masukan nilai tinggi
cin>>t;
l=(a*t)/2; //perhitungan luas
cout<<"Total Luas :"<<l<<endl; //hasil
perhitungan luas
getch(); }
Analisa Suatu Algortima

(Untuk melihat faktor efesiensi & efektifitas dari algoritma


tersebut), Dapat dilakukan terhadap suatu algoritma dengan
melihat pada :
a. Waktu Tempuh (Running Time) dr suatu Algortima.
Hal-hal yg dpt mempengaruhi drpd waktu tempuh adalah :
1. Banyaknya langkah.
2. Besar dan jenis input data.
3. Jenis Operasi.
4. Komputer dan kompilator
b. Jumlah Memori Yang Digunakan.
Sifat-sifat Algoritma
1. Banyaknya Langkah Instruksi Harus Berhingga,
2. Langkah atau Instruksi harus Jelas,
3. Proses harus Jelas dan mempunyai batasan,
4. Input dan Output harus mempunyai Batasan,
5. Efektifitas,
6. Adanya Batasan Ruang Lingkup,
Latihan Individu

(Gunakan Bahasa sehari-hari / Pseudocode )

1. Buat algoritma untuk mengirim email kepada teman


dengan asumsi sudah mempunyai alamat email.
2. Buat algoritma untuk meminjam buku di
perpustakaan
3. Buat algoritma pada saat membeli buku di toko buku
PERTEMUAN 2

KONSEP ALGORITMA
&
TIPE DATA
KONSEP ALGORITMA

1. ALGORITMA PE-UBAH
Adalah Variabel yang nilainya BUKAN konstanta (selalu
berubah – sesuai dengan kondisi Variabel terKINI)
Sintaks : P=Q
Algoritma : PQ
Arti : Bahwa Nilai P diberi harga Nilai Q
Nilai P akan SAMA DENGAN nilai Q, & Nilai Q TETAP

2. ALGORITMA PERTUKARAN
Berfungsi mempertukarkan masing-masing isi Variabel
sedemikian sehingga Nilai dari tiap Variabel akan
berubah/bertukar
Contoh Soal:
1. Diketahui P=0, Q=5 dan R=10.
Diberikan Algoritma P=Q,Q=R, mk Nilai P,Q,R
sekarang?

2. Diketahui Algoritma P=10, P=P+1 dan Q = P


Berapakan Nilai P dan Q ? ……………

3. Diketahui 3 variabel peubah P,Q dan R. Agar isi Q


ditaruh di P, isi R ditaruh di Q dan isi P ditaruh di R,
maka Algoritma yang dapat ditulis adalah : ……….

4. Diketahui 2 peubah K = 10 dan L = 20. Buat Algoritma


untuk mempertukarkan isi K dan L. : ……………
ANALISA ALGORTIMA
1. Sekumpulan lidi yang berjumlah 12 dapat membentuk
kotak seperti di bawah ini. Pertanyaan pindahkanlah
dua buah lidi tersebut agar membentuk empat buah
kotak.
ANALISA LANJUTAN
ANALISA LANJUTAN

2. Ada tiga batang lidi dibawah ini, bagaimana


caranya untuk membentuk angka 6 tanpa
mematahkannya
ANALISA LANJUTAN
ANALISA LANJUTAN

3. Budi tidak pernah bolos dalam kelasnya, tetapi dia


tidak pernah mengerjakan tugas selama setahun ini.
Kerjanya cuma bicara dan Budi juga tidak pernah
mengikuti ujian semester, Budi juga bukan murid yang
berprestasi. Kenapa Budi tidak pernah mendapat
peringatan dari pihak sekolah?
(menurut Anda apa jawabannya)
ANALISA LANJUTAN
ANALISA LANJUTAN
4. Berapa banyaknya garis minimal untuk menutup
seluruh titik-titik yang ada dibawah ini dengan syarat
bahwa untuk membuat garis tersebut tidak boleh
terputus :
a.  
 

b.   
  
  

c.  
   
   
 

d.    
   
   
   
5. Algoritma Pertukaran Isi Bejana
Untuk Latihan Uji Coba Pertukaran Mahasiswa Membawa
2 Gelas air yang berbeda warnanya dan 1 gelas Kosong

Diberikan dua buah bejana, A dan B; bejana A berisi larutan


berwarna merah, bejana B berisi larutan berwarna biru.

Buatlah pseudocode untuk menukarkan isi kedua bejana


itu sedemikian sehingga bejana A berisi larutan berwarna
biru dan bejana B berisi larutan berwarna merah.

Bejana A Bejana B
LANJUTAN
Keadaan Awal Sebelum Pertukaran:

PROSES

Keadaan Akhir Setelah Pertukaran:


KONSEP TIPE DATA
Pembagian tipe data :
I. Tipe Sederhana (simple type)
• Int,Bool,Char
• Tipe Float
II. Tipe String
• Operasi string
III. Tipe Terstruktur (structured type)
• Array, Struct
Variabel & Konstanta :
Variabel :
• Untuk menyimpan suatu nilai, dan nilai yang ada
padanya dapat diubah selama eksekusi berlangsung.
• Penamaan variabel bersifat case sensitive (huruf
besar & huruf kecil dianggap berbeda).
• Harus dideklarasikan dahulu sebelum digunakan
Contoh : int alas, tinggi ;
variabel

tipe data
Konstanta :
Sebuah variabel dengan tipe data tertentu dan memiliki
nilai data yang akan selalu tetap di dalam program.

Contoh : float phi;


const phi=3.14;
I. Tipe Data sederhana pada C++

1. Tipe int :
Tipe data yang nilainya tidak memiliki titik desimal.

Type Batas nilai Ukuran Memori


Short int -32768....32767 2 Byte

Int - 32768 ... 32767 2 Byte

Long - 2147483678 ... 4 Byte


2147283647
Unsigned 0-65535 2 Byte
integer
2. Tipe float:

Tipe data yang nilainya merupakan pecahan


(memiliki titik desimal).

Type Batas nilai Format

float 3.4E-38 s/d 3.4E+38 unsigned 32 bit

double 1.7E-308 s/d 1.7E+308 unsigned 64 bit

Long double 3.4E-4932 s/d 1.1E+4932 unsigned 80 bit


Operator Aritmatik & Matematik

Operator ARTI
Aritmatik &
Matematik
pow pemangkatan
sqrt Menghitung akar
% Sisa hasil bagi (modulus)
* , / Perkalian, Pembagian
+ , - Penjumlahan,
Pengurangan
* Dosen diharapkan memberikan contoh penerapan operator
Aritmatika & Matematika
Lanjutan Operator Aritmatik & Matematik
Operator Keterangan
= Sama dengan (assignment)
!= Tidak sama dengan
> Lebih besar
< Lebih kecil
== Sama dengan (bukan assignment)
>= Lebih besar atau sama dengan
<= Lebih kecil atau sama dengan
* Dosen diharapkan memberikan contoh penerapan operator
Aritmatika & Matematika
3. Tipe Bool
Nilai pengambilan suatu keputusan pada program, tipe
ini mempunyai 2 nilai yaitu benar(T) atau salah (F).
Operator yg digunakan AND, OR atau NOT.
Input NOT (!) AND (&&) OR (||)
A B C !A !B !C A&&B&&C A||B||C
0 0 0 1 1 1 0 0
0 0 1 1 1 0 0 1
0 1 0 1 0 1 0 1
0 1 1 1 0 0 0 1
1 0 0 0 1 1 0 1
1 0 1 0 1 0 0 1
1 1 0 0 0 1 0 1
1 1 1 0 0 0 1 1
4. Tipe Char
Digunakan untuk menampung data sebuah karakter.
untuk menuliskan tipe char, karakter perlu ditulis
di dalam tanda petik tunggal ( ‘ )

Contoh :
‘A’  karakter berupa huruf A
‘1’  karakter berupa angka 1
‘*’  karakter simbol *
II. Tipe String
Merupakan sekumpulan dari beberapa karakter, yang
banyaknya berubah-ubah sesuai kebutuhan,besarnya 1
s/d 255 karakter.

Pemberian nilai String diapit dengan tanda petik ganda (“)


Bentuk umum penulisan tipe data ini adalah :
tipe_data pengenal [panjang] ;
pengenal = nama variabel
panjang = bilangan bulat yg menunjukan
jumlah karakter
Contoh : char nama[15] ;
Fungsi pada Operasi STRING
1. Strcpy()
Untuk menyalin nilai string.
Contoh menggunakan program C++:
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
main()
{
char asal[100];
char hasil[100];
clrscr();
cout<<"Masukan kalimat : "; gets(asal);
strcpy(hasil,asal);cout<<endl;
cout<<"Kalimat asal : "<<asal<<endl;
cout<<"Kalimat hasil : "<<hasil<<endl;
getch(); }
2. Strcat()

Untuk menggabungkan nilai string.


Contoh menggunakan program c++:
int main() {
char string1 [] ="Belajar";
char string2 [] ="Logika Algortima";
cout<<"Menggabungkan String"<<endl;
cout<<"--------------------"<<endl;
cout<<"string1 : "<<string1<<endl;
cout<<"string2 : "<<string2<<endl;
strcat(string1, string2);
cout<<"\nSetelah digabung, string1 sekarang menjadi: "<<string1<<endl;
getche(); }
3. Strcmp()

Untuk membandingkan 2 nilai string.


Contoh dalam penggalan program c++:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
main()
{
char sa[]="Logika";
char sb[]="Logika Algoritma";
char sc[]="Logika Algoritma & Pemprograman";
/*Melakukan perbandingan terhadap dua string dan
penampilan nilainya*/
printf("Nilai Yang dibandingkan sa,sb : %d\n",strcmp(sa,sb));
Lanjutan Penggalan Program Menggunakan strcmp

printf("Nilai Yang dibandingkan sa,sc :


%d\n",strcmp(sa,sc));
printf("Nilai Yang dibandingkan sb,sa :
%d\n",strcmp(sb,sa));
getch();
return 0; Hasil program setelah dijalankan:
}
4. Strlen()

Untuk mengetahui panjang nilai string


Contoh dalam penggalan program c++:
#include <iostream.h>
#include <conio.h>
#include <string.h>
main()
{
char nama[50] = "Logika Algoritma";
char kosong[50] = "";
clrscr();
cout << "jumlah karakter dari nama adalah " << strlen(nama) << endl;
cout << "jumlah karakter dari kosong adalah " << strlen(kosong) << endl;
getch();}
5. Strchr ()
Untuk mencari nilai karakter dalam string.
Contoh dalam penggalan program C++:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main(void){
char str [100]="Aisyah Zahra";
char karakter='Z';
char *hasil;
hasil=strchr(str,karakter);
printf("Hasil Peubah :%s\n",hasil);
printf("Karakter %c ditemukan pada indeks ke-
%d",karakter,(hasil-str));
getch();
return 0; }
III. Tipe Terstruktur
a. Array
Adalah tipe tersetruktur yang terdiri dari sejumah komponen yang
mempunyai tipe yang sama.
Jenis Array dibedakan menjadi 3 jenis: array 1 dimensi, 2 dimensi dan
multidimensi
b. Struct
Bermanfaat untuk mengelompokkan sejumlah data dengan tipe data yang
berlainan.
Contoh : struct data_pegawai
{
int nip;
char nama[25];
char alamat[40]; }
Membuat Dokumentasi Kode Program

Dokumentasi kode program adalah:


Bentuk hard copy dari modul program yang telah ditulis
termasuk property dari kode program tersebut (tanggal
dibuat, versi, nama modul, pembuat, nomor dsb).

Tahapan membuat Dokumentasi Kode Program :


1. Mengidenfikasi kode program
2. Membuat dokumentasi program dengan memberikan
penjelasan pada setiap baris program
3. Melakukan generate dokumentasi
Tugas kelompok

Membuat program sederhana dengan menggunakan C++


• Menghitung Luas lingkaran
• Menghitung Luas Persegi Panjang
• Menghitung Luas Bujur Sangkar

Catatan :
- Pergunakan fungsi cin dan cout atau scanf dan printf
- Tampilkan NIM, Nama & Kelas pada program tersebut
- Listing progam & output dicetak
PERTEMUAN 3

FLOWCHART
DIAGRAM ALUR (FLOWCHART)
Adalah suatu diagram yang menggambarkan susunan logika suatu
program

Simbol simbol yang digunakan adalah sebagai berikut :

Proses/prosessing, satu atau beberapa


himpunan penugasan yang akan dilaksanakan
secara berurutan.

Input / Output data yg akan dibaca & dimasukan


ke dalam memori komputer dari suatu alat input

Terminal, berfungsi sebagai awal (berisi ‘Start’)


sebagai akhir (berisi ‘End’) dari suatu proses
alur.
Lanjutan Diagram Flowchart
Decision (kotak keputusan) berfungsi utk
memutuskan arah/percabangan yg diambil
sesuai dgn kondisi yg dipenuhi, yaitu
Benar/Salah. (dibahas dalam struktur
branching).

Subroutine digunakan untuk menjalankan


proses suatu bagian (sub program)
atau prosedur.

Preparation digunakan untuk pemberian


harga awal.
Lanjutan Diagram Flowchart

Connector/penghubung, digunakan untuk


menghubungkan diagram alur yang terputus
dimana bagian tersebut masih berada pada
halaman yang sama.

On page Connector, Untuk menghubungkan


sambungan dari bagian flowchart yang terputus
dimana sambungannya berada pada halaman
lain.

Flowline, menunjukkan bagian arah instruksi


dijalankan
Diagram Alur untuk Program Komputer

Pada dasarnya suatu program komputer


umumnya terdiri atas :
1. Pembacaan / pemasukan data ke dalam
komputer
2. Melakukan komputasi/perhitungan
terhadap data tersebut
3. Mengeluarkan / mencetak/ menampilkan
hasilnya.
Flowchart terdiri dari tiga struktur :
1. Struktur Squence / Struktur Sederhana
Digunakan untuk program yang instruksinya sequential
atau urutan
Contoh Flowchart Struktur Squence
Menghitung Luas Segitiga :
Start

Masukan
Alas

Masukan
Tinggi

Luas = (Alas * Tinggi)/2

Cetak
Luas

Stop
Lanjutan Struktur Flowchart
2. Struktur Branching
Digunakan untuk program
yang menggunakan pemilihan
atau penyeleksian kondisi
(contoh menentukan bilangan
genap/ganjil)
Menentukan Bilangan Genap/Ganjil
Pseuducodenya:
1. Masukkan sebuah bilangan
2. Bagi bilangan tersebut dengan 2
3. Jika sisa pembagian = 0 maka bilangan
tersebut adalah bilangan genap
4. Jika sisa pembagian = 1 maka bilangan
tersebut adalah bilangan ganjil
Lanjutan Menentukan bil Genap/Ganjil

Algoritmanya:
read bilangan
If bil mod 2 = 0 then
“Bilangan Genap”
Else
“Bilangan Ganjil”
Flowchart Bilangan Genap/Ganjil
Lanjutan Struktur Flowchart
3. Stuktur Looping
Digunakan untuk program yang instruksinya akan
dieksekusi berulang-ulang.
(Akan dijelaskan pada pertemuan 5)
Menentukan Bilangan Terbesar dari 3
Bilangan yang di Inputkan
Algoritmanya:
1. Masukkan bilangan pertama
2. Masukkan bilangan kedua
3. Masukkan bilangan ketiga
4. Jika b1 > b2 dan b1 > b3 maka cetak “ Bilangan
Pertama adalah Bilangan Terbesar”
5. Jika b2 > b1 dan b2 > b3 maka cetak “ Bilangan
Kedua adalah Bilangan Terbesar”
6. Cetak “Bilangan Ketiga adalah Bilangan
Terbesar”
Flowchart Menentukan Bilangan
Terbesar
Latihan 1
Berapakah nilai angka
yang tercetak pada
flowchart ini
Latihan 2
Berapakah nilai n yang
tercetak pada
flowchart ini
Latihan 3
Berapakah nilai Mulai

akhir pencacah
pada flowchart ini pencacah
0

pencacah T
< 12

pencacah
pencacah + 4

Selesai
Latihan 4
Berapakah nilai
bil yang terakhir
kali ditampilkan
berdasarkan
flowchart ini
Latihan 5
Apa yang salah
pada flowchart
perulangan ini?
Tugas
1. Diketahui empat bilangan o, p, q, dan r. Buatlah
flowchart/diagram alir untuk mendapatkan nilai terbesar
diantara keempat bilangan tersebut
2. Buatlah flowchart/diagram alir untuk mengitung N suku
pada deret berikut:
a. S = 1 + 3 + 5 + 7 + 9 + ...
b. S = 2 + 5 + 10 + 17 + 26 + ...
c. S = 1 – 2 + 3 – 4 + 5 – 6 + 7 -...
Tugas Lanjutan
3. Buatlah
algoritma dari
flowchart ini
PERTEMUAN 4

STRUKTUR BRANCHING
STRUKTUR BRANCHING (Percabangan)

A. Bersyarat
1. IF
2. IF......ELSE
3. NESTED IF atau IF ELSE Majemuk
4. SWITCH.....CASE

B. Tidak Bersyarat
Goto
A. Bersyarat
1. IF
Diagram yg alurnya ada/banyak terjadi alih kontrol
berupa percabangan & terjadi apabila kita dihadapkan
pada suatu Kondisi dengan dua pilihan BENAR/ SALAH.
Bentuk Umum :
if (kondisi)
pernyataan ;

Struktur Branching/percabangan:
y

t
Lanjutan
2. IF ...... ELSE
Bentuk umum :
if (kondisi)
perintah1;
else
perintah 2;
Diagram alur dr pemakaian
IF......ELSE sbb:
Lanjutan
3. Nested IF
Pernyataan if yang berada dalam pernyataan if yang lain
Bentuk umum :
if (syarat)
if (syarat)
....perintah;
else
....perintah;
else
if (syarat)
....perintah;
else
....perintah;
Lanjutan
IF.....ELSE Majemuk (bertingkat)
If-else majemuk mirip dengan nested if. Keuntungan
penggunaan if-else majemuk adalah bentuk penulisan
yang lebih sederhana.
Bentuk umum : kondisi1 perintah
if (syarat)
{
... Perintah; }
kondisi2 perintah
else if (syarat)
{
... Perintah; }
else kondisi3 perintah
{
... Perintah; }
perintah
4. Switch Case
Untuk menangani pengambilan keputusan yang melibatkan sejumlah
atau banyak alternatif.
Bentuk Umum :
switch (ekspresi integer atau karakter)
{
case konstanta1:
...perintah;
break;
case konstanta2:
...perintah;
break;
default :
...perintah;
break; }
Lanjutan
B. Tidak Bersyarat
Go To

Bentuk umum :
goto label;

Contoh :
Hitung : statement;
statement;
statement;
statement;
Goto hitung;
Contoh Program Sederhana Menggunakan Percabangan

main()
{
int nilai;
printf("Masukan nilai : ");scanf("%d",&nilai);

if(nilai>70)
printf("Lulus\n");
else
printf("Tidak lulus\n");
}
Contoh 2 IF...ELSE
main ()
{
double tot_beli,diskon=0,jum_bayar;
clrscr();
cout<<" Total Pembelian Rp. "; cin>>tot_beli;
if (tot_beli>=50000)
diskon=0.2 * tot_beli;
else
diskon=0.05*tot_beli;
cout<<"\n\n Besarnya Potongan Rp.
"<<diskon<<endl;
jum_bayar=tot_beli-diskon;
cout<<"\n\n jumlah yang harus dibayarkan Rp.
"<<jum_bayar; getch(); }
Latihan 1:
Buatkan algoritma dengan membuat program untuk kasus
mahasiswa bisa dinyatakan lulus dalam matakuliah logika
algoritma dengan ketentuan jika grade A s/d C dinyatakan
lulus selain itu tidak lulus.
Untuk mendapatkan grade diperoleh dari nilai 20%
absensi, 25% tugas, 25% UTS dan 30% UAS
TUGAS KELOMPOK

1. Buatlah flowchart dan program dari pseudocode berikut


ini:
a. Masukan kode barang
b. Masukan harga barang
c. Masukan Jumlah barang
d. Hitung bayar = harga * Jumlah barang
e. Jika bayar >= 100.000 maka diberikan discount 10%,
selain dari itu tidak mendapat discount
f. Hitung total bayar = bayar - discount
g. Cetak total bayar
Lanjutan Tugas Kelompok

2. Buatlah flowchart dan programnya dari pseudocode


berikut ini:
a. Diketahui phi=3.14
b. Masukan nilai jari-jari (r)
c. Hitung Keliling = 2 * phi * r
d. Cetak Keliling
e. Ingin menghitung kembali? Jika Ya maka kembali ke
proses awal, jika Tidak maka program berhenti.
Lanjutan Tugas Kelompok

3. Buatlah flowchart dan programnya dari pseudocode


berikut ini:
a. Masukan pilihan
b. Jika pilihan=1 maka menu=“nasi goreng”
jika pilihan=2 maka menu=“mie goreng”
jika pilihan=3 maka menu=“capcay”
c. Cetak menu
d. Ingin pilih kembali? Jika Ya maka kembali ke proses
awal, jika Tidak maka program berhenti.
Lanjutan Tugas Berkelompok
4. Buatlah Algoritma dengan program untuk menentukan
total Pembayaran sewa rental Film dengan ketentuan
berikut ini:

Kode Film diinputkan. Untuk total didapatkan dari lama


sewa dikali Harga Sewa, jika lama sewa lebih dari 10 hari
maka akan mendapatkan potongan 10% dari total. Dan
untuk total bayar didapat dari total - potongan
PERTEMUAN 5

LOOPING/
PERULANGAN
LOOPING
Instruksi pengulangan (repetition) adalah instruksi yang
dapat mengulangi pelaksanaan sederetan instruksi lain
berulangkali sesuai dengan persyaratan yang ditentukan.
Struktur instruksi perulangan pada dasarnya terdiri atas:
1. Kondisi perulangan. Suatu kondisi yang harus dipenuhi
agar perulangan dapat terjadi
2. Badan (body) perulangan. Deretan instruksi yang akan
diulang-ulang pelaksanaannya
3. Pencacah (counter) perulangan. Suatu variabel yang
nilainya harus berubah agar perulangan dapat terjadi
dan pada akhirnya membatasi jumlah perulangan yang
dapat dilaksanakan.
Tiga macam bentuk perulangan
1. Perulangan While
Perulangan yang akan terus dilaksanakan selama
syarat terpenuhi.
2. Perulangan For
Perulangan berdasarkan variabel perulangan mulai
dari nilai awal hingga nilai akhir dengan perubahan
nilai sebesar n
3. Perulangan Do – While
Perulangan akan dilaksanakan terlebih dahulu dan
pengujian perulangan dilakukan belakangan.
1. Perulangan While
Perulangan akan terus dilaksanakan selama syarat
tersebut terpenuhi.
Bentuk Umum :
while (kondisi)
pernyataan ;
atau
while (kondisi)
{
pernyataan;
pernyataan;
}
Lanjutan Perulangan While
1. Ada instruksi yang berkaitan dengan kondisi sebelum
masuk ke while sehingga kondisi ini benar (terpenuhi)
dan pengulangan bisa dilaksanakan.
2. Ada suatu instruksi di antara instruksi-instruksi yang
diulang yang mengubah nilai variabel perulangan agar
pada saat kondisi perulangan tidak terpenuhi sehingga
perulangan berhenti.
Algoritma while untuk menampilkan
angka 1 hingga 100
Algoritma Perulangan_while
{mencetak angka 1 hingga 100}
Deklarasi
int angka;

Deskripsi
angka  1;
while (angka < 101)
cout<< angka;
angka  angka + 1;
Algoritma While Mencetak Kata
“ Belajar Logika Algoritma” sebanyak 5 kali

Algoritma_While
Int bil=1;
While(bil<=5)
cout<<“Belajar Logika Algoritma”;
bil = bil+1;
2. PERULANGAN FOR
Bentuk Umum :
For (inisialisasi; syarat pengulangan; pengubah nilai)
Instruksi;
Instruksi;
Inisialisasi adalah sebagai nilai awal
Syarat pengulangan adalah instruksi yang akan
dilaksanakan selama syarat memenuhi
Pengubah nilai mengatur naik/turunnya nilai syarat
pengulangan
Flowchart Perulangan For

Inisialisasi awal

Syarat pengulangan

Pengubah nilai
Algoritma Perulangan for untuk
mencetak bilangan 1 sampai 10
Deklarasi
int i;

Deskripsi
for (i=1; i<=10; i++)
cout<<“\n bilangan : “<<i;
Algoritma Perulangan for untuk
mencetak bilangan menurun
Deklarasi
int i;

Deskripsi
for (i=10; i>1; i--)
cout<<“\n Bilangan : “<<i;
3. Perulangan Do….While
Perulangan akan dilaksanakan terlebih dahulu dan
pengujian perulangan dilakukan belakangan.

Bentuk Umum :
do instruksi-
instruksi
pernyataan;
while (syarat);
N
Atau kondisi

do
Y
{ pernyataan;
pernyataan; }
while (syarat)
Perulangan Do - While
1. Instruksi-insruksi akan diulang hanya apabila kondisi
tidak terpenuhi, dan ketika kondisi terpenuhi maka
perulangan berhenti.
2. Instruksi-instruksi dikerjakan terlebih dahulu sebelum
kondisi diperiksa.
3. Harus ada instruksi yang mendahului agar kondisi tidak
terpenuhi sehingga perulangan bisa berlangsung.
4. Harus ada intruksi diantara instruksi yang diulang
sehingga pada akhirnya dapat mengubah kondisi
menjadi terpenuhi dan perulangan berhenti.
5. Apabila di awal pelaksanaan kondisi sudah terpenuhi
maka instruksi-instruksi paling tidak dikerjakan satu kali.
PERULANGAN DO ... WHILE
LANJUTAN

MENCETAK BILANGAN GENAP 1 HINGGA 10


Int bil=2;
Do
cout<<bil;
bil+=2;
While (bil<=10);

Output : 2 4 6 8 10
Buatlah Algoritma untuk menampilkan kata Logika
Algoritma sebanyak 10 kali dengan penambahan 1.

1. Tentukan nilai awal perhitungan = 0


2. Lakukan pengulangan
3. Cetak tulisan
4. Nilai perhitungan bertambah 1
5. Ulangi langkah 3 sampai nilai perhitungan kurang dari 15
Perulangan Do….While Lanjutan

main()
{ int counter;
counter =0;
do
{
printf (“Logika Algoritma \n");
counter++;
}
while (counter < 11); }
Perintah BREAK;
Berfungsi untuk keluar dari suatu loop for, do...while, while.
Bentuk Umumnya adalah:
{
......
......
break;
......
......
}
.......
Listing Program, sbb:

void main()
{ int n, t;
t=0;
while (1)
{ scanf("%i",&n);
t=t+n;
if (t >= 100)
break; }
printf("%i",t); }

Perhatikan: nilai kondisi pada while (1), karena menurut bahasa


C nilai tersebut bernilai True. Looping akan dikerjakan terus
sampai dipaksa keluar oleh instruksi break;
Perintah Continue:
digunakan untuk mengarahkan jalannya program ke iterasi
(proses)
berikutnya pada loop yang sama.
Bentuk umumnya adalah:
while (kondisi)
{
......
......
Continue;
......
...... }
......
Perintah Continue Lanjutan
Buatlah Algoritma dan program
untuk mencetak bilangan 0 - 6, ketika proses
pencetakan bilangan pada 4, maka bilangan ini
dilewati.

Outputnya adalah: 0,1,2,3,5,6.


Perintah Continue Lanjutan
Algoritmanya adalah:
1. Tentukan nilai awal, batas akhir dan pertambahan nilai
2. Lakukan pengulangan sesuai dengan langkah 1
3. Jika dalam pengulangan bilangan yang ditampilkan
sama dengan 4, maka pengulangan berhenti dan
dilanjutkan ke bilangan selanjutnya.
4. Cetak bilangan
5. Jika dalam pengulangan bilangan yang akan ditampilkan
sama dengan 6, maka pengulangan dihentikan
Adapun Programnya sebagai berikut:
main()
{ int i;
for (i=0; i<10; ++i)
{ if (i==4) continue;
printf("bilangan : %d \n",i);
if (i==6) break;
}}
Output Program :
Latihan Individu
1. Buatlah algoritma untuk membaca data seorang
mahasiswa yang mengikuti mata kuliah Logika
Algoritma, berupa NIM, Nama, nilai absen, nilai tugas,
nilai UTS dan nilai UAS. Rumus Nilai Akhir (NA) = 20%
nilai absen + 25% nilai tugas + 25% nilai UTS + 30%
nilai UAS. Nilai grade yang didapat adalah sebagai
berikut:
Nilai Akhir (NA) Grade
NA > 85 A
70 < NA < 86 B
55 < NA < 71 C
40 < NA < 56 D
NA < 41 E
Latihan Lanjutan
2. Buatlah algoritma yang menerima input berupa sebuah
bilangan bulat X > 1 kemudian menghitung rata-rata
dari bilangan yang ada antara 1 hingga X.
3. Buatlah algoritma yang menghitung jumlah kuadrat dari
bilangan bulat mulai dari 1 hingga 25, kemudian
menampilkan hasilnya
4. Buatlah algoritma untuk menghitung jumlah deret
berikut ini dengan N buah suku dimana N dibaca dari
keyboard:
1 – 1/3 + 1/5 – 1/7 + 1/9 -1/11 + ...
Tugas Berkelompok
Buatlah algoritma dengan program untuk
menentukan sisa hasil pembagian antara
bilangan yang dimasukkan dengan bilangan
pembagi. Apabila sisa baginya=0 maka dicetak
tidak ada dan jika ada sisa baginya ditampilkan.
PERTEMUAN 6

STRUKTUR REKURSIF
STRUKTUR REKURSIF

Rekursif adalah suatu proses yang bisa memanggil dirinya


sendiri.

Contoh konsep penggunaan Rekursif


Masalah : Memotong Roti tawar tipis-tipis sampai habis
Algoritma :
1.Jika roti sudah habis atau potongannya sudah paling
tipis maka pemotongan roti selesai.
2.Jika roti masih bisa dipotong, potong tipis dari tepi roti
tersebut, lalu lakukan prosedur 1 dan 2 untuk sisa
potongannya.
Contoh Fungsi Rekursif

a. Fungsi pangkat
b. Faktorial
c. Fibonancy
d. Menara Hanoi
Fungsi Pangkat
Menghitung 10 pangkat n dengan menggunakan konsep
rekursif.

Secara Notasi pemrograman dapat ditulis :


10 0 = 1 …………………………..(1 )
10 n = 10 * 10 n-1 .....................................( 2 )

Contoh :
10 3 = 10 * 10 2

10 2 = 10 * 10 1

10 1 = 10 * 10 0

10 0 = 1
Faktorial
0! = 1
N! = N x (N-1)! Untuk N > 0

Scr notasi pemrograman dapat ditulis sebagai :


FAKT (0) = 1 .............................................. (1)
FAKT(N) = N * FAKT (N-1).................................... (2)
Contoh :

FAKT(5) = 5 * FAKT(4)
FAKT(4) = 4 * FAKT(3)
FAKT(3) = 3 * FAKT(2)
FAKT(2) = 2 * FAKT(1)
FAKT(1) = 1 * FAKT(0)
Nilai Awal
Misal :
hitung 5!, maka dapat dilakukan secara rekursif
dgn cara :
5! = 5 * 4!

Scr rekursif nilai dr 4! Dpt dihitung kembali dgn 4 *


3!,
shg 5! Menjadi :5! = 5 * 4 * 3!

Scr rekursif nilai dr 3! Dpt dihitung kembali dgn 3 *


2!, shg 5! Menjadi : 5! = 5 * 4 * 3 * 2!

Scr rekursif nilai dr 2! Dpt dihitung kembali dgn 2 *


1, shg 5! Menjadi : 5! = 5 * 4 * 3 * 2 * 1 = 120.
Fibonancy

Deret Fibonancy : 0,1,1,2,3,5,8,13,.........

Secara notasi pemrograman dapat ditulis sebagai :


Fibo (1) = 0 & Fibo (2) = 1 ....................................... (1)
Fibo (N) = Fibo (N-1) + Fibo (N-2) ................................. (2)

Contoh :
Fibo(5) = Fibo(4) + Fibo(3)
Fibo(4) = Fibo(3) + Fibo(2)
Fibo(3) = Fibo(2) + Fibo(1)

Nilai Awal
Algoritma Deret Fibonancy

A[1] = 1;
A[2] = 2;
For (i=3; i<=10; i++)
{
A[i] = A[i-1] + A[i-2];
}
Konsep Menara Hanoi

A B C
Tiang Asal Tiang Bantuan Tiang Tujuan

Jika n=1, maka langsung pindahkan saja piringan dr tiang A


ke tiang C & selesai.
Pindahkan n-1 piringan yg paling atas dr tiang A ke tiang B.
Pindahkan piringan ke n (piringan terakhir) dr tiang A
ketiang C
Pindahkan n-1 piringan dari tiang B ke tiang C.
Langkah pemindahan tsb diatas dpt
diubah dengan notasi sbb:

Menara (n,asal,bantu,tujuan)

Utk jml piringan n>1 dpt dibagi menjadi 3 notasi


penyelesaian
Menara (n-1, Asal,Tujuan, Bantu);
Menara (n, Asal, Bantu, Tujuan); atau Asal  Tujuan;
Menara (n-1, Bantu, Asal, Tujuan);
Langkah Pemindahan Piringan
MENARA(1,A,C,B) ....... A
B
MENARA(2,A,B,C) A  C ......... A
C
MENARA(1,B,A,C) ........B
C
MENARA(3,A,C,B) A B .......................…………...................… A
B
MENARA(1,C,B,A) .......C  A
MENARA(2,C,A,B)C  B ........................ C  B
MENARA(1,A,C,B) ................ A
B
MENARA A C ..........……..........................................................A  C
(4,A,B,C) MENARA(1,B,A,C) ...... B  C
MENARA(2,B,C,A) BA ........B 
A
MENARA(1,C,B,A) ....... C  A
MENARA(3,B,A,C) B C ......................................... B  C
MENARA(1,A,C,B) ........ A 
B
MENARA(2,A,B,C) AC ............... A 
C
MENARA(1,B,A,C) ........ B  C
Lanjutan
Ilustrasi diatas menghasilkan 15 langkah penyelesaian
dari permasalahan konsep menara Hanoi dgn jumlah
piringan sebanyak 4 buah18

Untuk Video konsep menara hanoi dapat dilihat pada:


https://www.mathsisfun.com/games/towerofhanoi.html

Rumus Langkah Pemindahan :


2N - 1

N = Jumlah Piringan
Latihan Individu

1. Gambarlah menera Hanoi dengan 7 piringan, lalu buat


algoritma pemindahan peringan-piringan tersebut ke menara
tujuan

2. Buat algoritma untuk mencetak deret angka 1,3,5,.... s/d 1000


angka dengan menggunakan prosedur rekursif

3. Buat algoritma untuk mencetak nama anda sebanyak 100 kali


dengan prosedur rekursif
PERTEMUAN 9

LARIK ATAU ARRAY


LARIK ATAU ARRAY
adalah tipe terstruktur yang terdiri dari sejumlah
komponen yang mempunyai tipe data yang sama.

Variabel Array terdiri dari :


1. Array Berdimensi Satu
2. Array Berdimensi Dua
1. Array Berdimensi Satu
Bentuk Umum :
Tipe_Data Nama_Variabel [ukuran]

Contoh:
int nilai [6];
jumlah elemen
nama array
tipe data elemen array
2. Array Berdimensi Dua
Bentuk Umum :
Tipe_Data Nama_Variabel [index-1] [index-2]
Contoh:
int nilai [2] [3] ;
jumlah kolom
jumlah baris
nama array
tipe data elemen array
Contoh I :
int i, j ;
int tabel [3] [2] ;
for (i=0; i<=2 ; i++)
{
for (j=0; j<=1 ; j++)
{
cout<< “data ke - ”<< i << j<<endl;
cout<< “nilai =“ ;
cin>> tabel [ i ] [ j ];
}
} Tabel[0][0] Tabel[0][1]

Hasil Tabel Tabel[1][0] Tabel[1][1]

Tabel[2][0] Tabel[2][1]
Contoh II :
Diberikan matriks A sebagai berikut :
1 1 1 1
0 1 1 1
0 0 1 1
0 0 0 1

Perintah pokok yg digunakan pd pengisian


matriks A adalah :

A[i,j] = 1, jika i <=j , A[i,j] = 0, jika i > j


Latihan :
1. Diberikan matriks A sebagai berikut :
1 2 3 4
0 2 3 4
0 0 3 4
0 0 0 4

Perintah pokok yg digunakan pd pengisian


matriks A adalah :
2. Diberikan matriks A sebagai berikut :
1 0 0 0
2 2 0 0
3 3 3 0
4 4 4 4

Perintah pokok yg digunakan pd


pengisian matriks A adalah .
3. Diberikan matriks A sebagai berikut :
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

Perintah pokok yang digunakan pada


pengisian matriks A adalah :
4. Terdapat Perintah pengisian matrix sbb:
A[i,j] = j + i, Jika i = J,
A[i,j] = j - i, Jika i < J,
A[i,j] = j x i, Jika i > J
Buatlah Matrixnya
5. Terdapat Perintah pengisian matrix sbb:
A[i,j] = j x i, Jika i = J,
A[i,j] = j ^ i, Jika i <> J,
Buatlah Matrixnya
6. Diberikan algoritma sbb :
int i ;
int a[4];
for(i=0;i<=3;i++)
{
a[i] = 2 * i + 1;
cout<<a[i];
}

Algoritma di atas akan menghasilkan nilai .....


7 . Diberikan algoritma sbb, diketahui nilai dari array
x[0]=10, x[1]=12, x[2]=12, x[3]=10 dan y[0]=2,
y[1]=3, y[2]=4, y[3]=5
int i;
int x[4], y[4];
float hasil ;
hasil=0;
for(i=0; i<=3; i++)
hasil = hasil + x[i] / y[i];
cout<<“hasil=“<<hasil;
Maka nilai hasil dari algoritma diatas adalah......
Tugas Kelompok
Buatlah program dengan menggunakan C++
1. Penjumlahan dua buah matriks
2. Pengurangan dua buah matriks
Ket :
• Masing-masing kelompok dapat memilih salah satu
dari program di atas.
• Listing program & output dicetak
• Nama, Nim dan Kelas dicetak di listing program
PERTEMUAN 10

METODE DIVIDE AND


CONQUER
• Bentuk Umum Proses Metode D And C dpt
dilihat sbb :
n input

n input I n input II n input III n input K

Subproblem I Subprob. II Subprob. III Subprob. K

Subsolusi I Subsolusi II Subsolusi III Subsolusi K

Solusi Optimal
SORTING
1. Metode Selection Sort
2. Metode Buble Sort
3. Metode Merge Sort
4. Metode Quick Sort
5. Metode Insertion.

Hal yg mempengaruhi Kecepatan Algoritma Sort :


Jumlah Operasi Perbandingan & Jumlah Operasi
Pemindahan Data
SELECTION SORT

Tehnik pengurutan dgn cara pemilihan


elemen atau proses kerja dgn memilih
elemen data terkecil utk kemudian
dibandingkan & ditukarkan dgn elemen pd
data awal, dst s/d seluruh elemen, shg akan
menghasilkan pola data yg telah disort.
Prinsip Kerja dari Teknik Selection Sort ini
adalah :

1. Pengecekan dimulai data ke-1 sampai


dengan data ke-n
2. Tentukan bilangan dengan Index terkecil
dari data bilangan tersebut
3. Tukar bilangan dengan Index terkecil
tersebut dengan bilangan pertama ( I = 1 )
dari data bilangan tersebut
4. Lakukan langkah 2 dan 3 untuk bilangan
berikutnya ( I= I+1 ) sampai didapatkan
urutan yg optimal.
Contoh : 22 10 15 3 8 2

Iterasi 1
1 2 3 4 5 6
Langkah 1 : 22 10 15 3 8 2
Langkah 2 : 22 10 15 3 8 2
Langkah 3 : 2 10 15 3 8 22
Langkah 4 : Ulangi langkah 2 dan 3 .
Iterasi 2

Langkah 1: 2 10 15 3 8 22
Langkah 2: 2 10 15 3 8 22
Langkah 3: 2 3 15 10 8 22
Langkah 4: Ulangi langkah 2 dan 3 .

Lakukan Iterasi selanjutnya sampai iterasi


ke-6
BUBBLE SORT
Tehnik Sort yg bekerja dgn menggunakan prinsip
gelembung (bubble) udara yg akan bergerak
naik ke atas secara satuper satu.
Prinsip Kerja dari Bubble Sort adalah :
1. Pengecekan mulai dari data ke-1 sampai data
ke-n
2. Bandingkan data ke-n dengan data sebelumnya
(n-1)
3. Jika lebih kecil maka pindahkan bilangan
tersebut dengan bilangan yg ada didepannya
(sebelumnya) satu persatu (n-1,n-2,n-3,....dst)
4. Jika lebih besar maka tidak terjadi pemindahan
5. Ulangi langkah 2 dan 3 s/d sort optimal.
Contoh : 22 10 15 3 8 2
iterasi 1
1 2 3 4 5 6
Langkah 1 : 22 10 15 3 8 2
Langkah 2 : 22 10 15 3 8 2
Langkah 3 : 22 10 15 3 2 8
Langkah 4 : Ulangi langkah 2 dan 3

Hasil iterasi 1 : 2 22 10 15 3 8
Iterasi 2
Langkah 1 : 2 22 10 15 3 8
Langkah 2 : 2 22 10 15 3 8
- 8>3, maka 8 tidak pindah,
untuk selanjutnya bandingkan data
sebelumnya yaitu 3.
Langkah 3 : 2 22 10 3 15 8
Langkah 4 : Ulangi langkah 2 dan 3
Hasil Iterasi 2 : 2 3 22 10 15 8
Lakukan Iterasi selanjutnya sampai iterasi ke- 6
QuickSort
Metode QuickSort sering disebut metode partition
exchange sort, Diperkenalkan oleh C.A.R. Hoare. Pada
metode ini jarak kedua elemen yang akan ditukarkan
nilainya ditentukan cukup besar.
Misal ada N elemen dalam keadaan urut turun, adalah
mungkin untuk mengurutkan N elemen tersebut dengan
N/2 kali, yakni pertama kali menukarkan elemen paling kiri
dengan paling kanan, kemudian secara bertahap menuju
ke elemen yang ada di tengah. Tetapi hal ini hanya bisa
dilakukan jika kita tahu pasti bahwa urutannya adalah urut
turun.
Secara garis besar metode ini dijelaskan sebagai berikut,
misal kita akan mengurutkan vektor A yang mempunyai N
elemen. Kita pilih sembarang dari vektor tersebut, biasanya
elemen pertama misalnya X. kemudian semua elemen
tersebut disusun dengan menempatkan X pada posisi J
sedemikian rupa sehingga elemen ke 1 sampai ke j-1
mempunyai nilai lebih kecil dari X dan elemen ke J+1
sampai ke N mempunyai nilai lebih besar dari X. Dengan
demikian kita mempunyai dua buah subvektor, subvektor
pertama nilai elemennya lebih keci dari X, subvektor kedua
nilai elemennya lebih besar dari X.
Pada langkah berikutnya, proses diatas diulang pada
kedua subvektor, sehingga kita akan mempunyai empat
subvektor. Proses diatas diulang pada setiap subvektor
sehingga seluruh vektor semua elemennya menjadi
terurutkan.
Contoh:
INSERTION SORT
Prinsip dasar Insertion adalah secara berulang-ulang
menyisipkan / memasukan setiap elemen. ke dlm
posisinya / tempatnya yg benar.

Prinsip Kerja Insertion Sort adalah


1. Pengecekan mulai dari data ke-1 sampai data ke-n
2. Bandingkan data ke-I ( I = data ke-2 s/d data ke-n )
3. Bandingkan data ke-I tersebut dengan data
sebelumnya (I-1), Jika lebih kecil maka data
tersebut dapat disisipkan ke data awal sesuai dgn
posisisi yg seharusnya
4. Lakukan langkah 2 dan 3 untuk bilangan
berikutnya ( I= I+1 ) sampai didapatkan urutan yg
optimal.
Contoh : 22 10 15 3 8 2
Iterasi 1
1 2 3 4 5 6
Langkah 1: 22 10 15 3 8 2
Langkah 2: 10 22 15 3 8 2
Langkah 3: 10 22 15 3 8 2
Langkah 4: Ulangi langkah 2 dan 3
Iterasi 2

Langkah 1: 10 22 15 3 8 2
Langkah 2: 10 15 22 3 8 2
Langkah 3: 10 15 22 3 8 2
Langkah 4: Ulangi langkah 2 dan 3
Lakukan Iterasi selanjutnya sampai iterasi
ke- 6
Catatan : Setiap ada pemindahan, maka elemen.
Yang sudah ada akan di insert sehingga akan
bergeser kebelakang.
MERGE SORT
Prinsip Kerja Merge Sort adalah :
• Kelompokan deret bilangan kedalam 2 bagian,
4 bagian, 8 bagian, ......dst  (2n)
• Urutkan secara langsung bilangan dalam
kelompok tsb.
• Lakukan langkah diatas untuk kondisi bilangan
yg lain sampai didapatkan urutan yg optimal .
Contoh : 22 10 15 3 8 2

Iterasi 1
1 2 3 4 5 6
Langkah 1 : 22 10 15 3 8 2
Langkah 2 : 10 22 3 15 2 8

Iterasi 2
Langkah 1 : 10 22 3 15 2 8
Langkah 2 : 3 10 15 22 2 8
Iterasi 3

Langkah 1 : 3 10 15 22 2 8
Langkah 2 : 2 3 8 10 15 22
Latihan Soal

Terdapat deret angka : 99 , 34 , 11 , 50 , 23 , 89,


65 , 2 , 6 , 37 , 74 , 44.
Urutkanlah deret angka tersebut dengan
menggunakan teknik sort yang sudah dijelaskan.
(Selection Sort, Bubble Sort, Insertion Sort, Quick
Sort, dan Merge Sort).
Tugas Kelompok
Buatlah simulasi dengan video editing dari soal
latihan Sorting diatas dengan cara dipraktekkan oleh
masing-masing kelompok yang di unggah di
Youtube.

Ket :
• Masing-masing kelompok dapat memilih salah satu
dari metode sorting.
• sebutkan nim, nama, kelompok dan kelas secara
jelas pada video editingnya.
PERTEMUAN 11

TEHNIK SEARCHING
TEHNIK SEARCHING
1. Tehnik Pencarian Tunggal :
a. Tehnik Sequential Search / Linier Search
b. Tehnik Binary Search

2. Tehnik Pencarian Nilai MAXMIN :


a. Tehnik StraitMAXMIN
b. Tehnik D and C
1. Tehnik Pencarian Tunggal
a. Linear/Sequential Search ( Untuk data yg belum
terurut / yg sudah terurut )
Pencarian yg dimulai dari record-1 diteruskan ke
record selanjutnya yaitu record-2, ke-3,..., sampai
diperoleh isi record sama dengan informasi yg
dicari
Algoritma :
1. Tentukan I = 1
2. Ketika Nilai (I) <> X Maka Tambahkan I = I +1
3. Ulangi langkah No. 2 sampai Nilai(I) = X
4.Jika Nilai (I) = N+1 Maka Cetak “Pencarian Gagal”
selain itu Cetak “ Pencarian Sukses “
Contoh Soal
Terdapat deret angka sebagai berikut:
80 , 45, 21, 100 , 23, 67, 43, 20, 90, 99, 46, 75, 73,
29
Buat algoritma untuk mencari angka 99 dengan
teknik Linear Search
Jawab:
Deret Angka: 80 , 45, 21, 100 , 23, 67, 43, 20, 90,
99, 46, 75, 73, 29
I = 1 , x = 99
1. Nilai I < Nilai x , 80 < 99, I=1+1=2
2. Nilai I < Nilai x , 45 < 99, I=2+1=3
3.Nilai I < Nilai x , 21 < 99, I=3+1=4
4. Nilai I > Nilai x , 100 > 99, I=4+1=5
5.Nilai I < Nilai x , 23 < 99, I=5+1=6
6. Nilai I < Nilai x , 67 < 99, I=6+1=7
7. Nilai I < Nilai x , 43 < 99, I=7+1=8
8. Nilai I < Nilai x , 20 < 99, I=8+1=9
9. Nilai I < Nilai x , 90 < 99, I = 9 + 1 = 10
10. Nilai I = Nilai x , 99 = 99 , maka pencarian
selesai
Jadi, I = 10 , x = 99
Binary Search ( Untuk data yg sudah terurut )

Digunakan mencari sebuah data pd himp.data-


data yg tersusun secara urut, yaitu data yg
telah diurutkan dr besar ke kecil/sebaliknya.
Proses dilaksanakan pertama kali pd bgn
tengah dr elemen himpunan, jk data yg dicari
ternyata < elemen bagian atasnya, maka
pencarian dilakukan dr bagian tengah ke
bawah.
Algoritma :
1. Low = 1 , High = N
2. Ketika Low <= High Maka kerjakan langkah No .3,
Jika tidak Maka kerjakan langkah No.7
3. Tentukan Nilai Tengah dengan rumus
mid = ( Low + High ) Div 2
4. Jika X < Nil. Tengah Maka High = Mid –1
5. Jika X > Nil. Tengah Maka Low = Mid +1
6. Jika X = Nil. Tengah Maka Nil. Tengah = Nil. Yg
dicari
7. Jika X > High Maka Pencarian GAGAL
Contoh Soal
Terdapat deret angka :
12, 16, 20, 25, 29, 34, 45, 56, 60, 67, 70,
78, 89, 93, 99
Buat algoritma untuk mencari angka 25 dengan
teknik Binary Search
Jawab:
12, 16, 20, 25, 29, 34, 45, 56, 60, 67, 70, 78, 89,
93, 99

L = 1, H = 15 , X = 25
L <= H, 1 <= 15 , maka
Mid = ( L + H ) Div 2 = ( 1 + 15 ) Div 2
Mid = 8
X < Mid
25 < 56 , maka H = Mid – 1 à = 8 - 1
H=7
L <= H à 1 <= 7 ,
maka Mid = ( L + H ) Div 2 = ( 1 + 7 ) Div 2

Mid = 4
X = Mid
25 = 25 , maka pencarian selesai.

Jadi untuk X = 25 , maka L = 1 , H = 7


2. Tehnik Pencarian MAXMIN
Searcing dengan Tehnik STRAITMAXMIN
Menentukan / mencari elemen max & min.
Pada Himpunan yg berbentuk array linear.
Waktu tempuh/time complexity yg digunakan
untuk menyelesaikan pencarian hingga
mendapatkan solusi yg optimal terbagi atas
best case,average case dan worst case.
Algoritma untuk mencari elemen
MaxMin :
PROCEDURE
STRAITMAXMIN(A,n,i,max,min)
int i,n, A [n], max,min
max  min  A[0]
FOR i  1 To n
IF A[i] > max; max  A[i];
ELSE IF A[i] < min ; min  A[i] ENDIF
ENDIF
REPEAT
END STRAITMAXMIN
Contoh Soal
Terdapat deret angka : 34,67,12,40,66,18,90
Buat algoritma untuk mencari Nilai Maximal dan
Minimal dengan teknik Strait Maxmin dan tentukan
pula Jumlah operasi perbandingannya.
Jawab :
34,67,12,40,66,18,90
Max =Min=34
For i = 2 to 7
1. If A[2]> max
A[2]>34
67>34 ? ya max = 67
2. If A[3]> max
A[3]>67
12>67 ? tidak, max = 67
3. else If A[3]<min
12<34 ? ya, min = 12
4. If A[4]>max
40>67 ? tidak, max =67
5. else If A[4]<min
40<12 ? tidak, min = 12
6. If A[5]>max
66>67 ? tidak, max=67
7. else If A[5]<min
66<12 ? tidak, min=12
8. If A[6]>max
18>67 ? tidak , max=67
9. else If A[6]<min
18<12 ? tidak , min=12
10. If A[7]>max
90>67 ? ya, max=90(pencarian selesai)

Jadi, Max= 90 Min=12 , dan Jumlah operasi


perbandingannya sebanyak 10 kali
BEST CASE
• Keadaan yg tercapai jika elemen pada
himpunan A disusun secara increasing
(menaik). Dengan perbandingan waktu n - 1
kali satuan operasi.

• Contoh : Terdapat himp.A yg berisi 4 buah


bilangan telah disusun secara increasing
dengan A[0] = 2, A[1] = 4, A[2]=5, A[3]=10.
Tentukan / cari Bilangan Max&Min serta
jumlah operasi perbandingan yg dilakukan.
• Penyelesaian
untuk masalah tersebut dapat digunakan
procedure STRAITMAXMIN yg menghasilkan
bilangan Min=2 & bilangan Max=10,
Operasi perbandingan data mencari bilangan
MaxMin dari himpunan tersebut (n-1) =3 kali
operasi perbandingan.
WORST CASE
• Terjadi jika elemen dalam himp. disusun
secara decreasing (menurun). Dengan.
Oprasi perbandingan sebanyak 2(n-1)
kali satuan operasi.
• Contoh : Mencari elemen MaxMin &
jumlah oprasi perbandingan yg dilakukan
terhadap himp.A yg disusun decreasing.
A[0]=80, A[1]=21, A[2]=6, A[3]=-10
Penyelesaian
• untuk masalah tersebut dengan proses
STRAITMAXMIN adalah elemen
max=80 & elemen min=-10, Operasi.
perbandingan untuk elemen Maxmin
tersebut adalah 2(4-1) = 6 kali satuan
operasi.
AVERAGE CASE
• Jika pencarian elemen MaxMin dilakukan pada
elemen dalam himpunan yg tersusun secara
acak (tidak decreasing/tidak increasing).
Jumlah oprasi. Perbandingan yg dilakukan
adalah rata-rata waktu tempuh best case &
worst case, yaitu :
½ [ (n-1) + 2(n-1) ] = ( 3n/2 -1 ) kali.

• Contoh, Pada himpuan A yg berisi { 5,-4, 9,7 }


dilakukan pencarian elemen max & min dengan
menggunakan proses STRAITMAXMIN.
Berapa elemen maxmin yg didapatkan & jumlah
oprasi perbandingan yg dilakukan.
• Penyelesaiannya :
Elemen max=9, & elemen min=-4.
Jumlah operasi perbandingan adalah ( 3.
4/2 - 1) = 5 kali satuan operasi.
Searching dengan Tehnik D AND C
• Dengan Prinsip Dasar Metode Devide &
Conquer akan dapat dipecahkan suatu
permasalahan proses Searching elemen
Max&Min dengan teknik D AND C
• Contoh : Tentukan elemen MaxMin suatu
array A yg terdiri 9 bil. :
A[1] = 22, A[4] = -8, A[7] = 17
A[2] = 13, A[5] = 15, A[8] = 31
A[3] = -5, A[6] = 60, A[9] = 47
Penyelesaian :
1,9

1,5 6,9

1,3 4,5 6,7 8,9

1,2 3,3
Lalu Proses tree call dr setiap elemen yg ditunjuk pada
bagan tree tersebut diatas. Dengan cara, membalik
terlebih dahulu posisi tree dr bawah ke atas. Lalu
mengisinya dengan elemen-elemnnya sesuai dengan
bagan tree. Perhatikan bagan tree call ini :
1,2 22,13 3,3 -5,-5

1,3 22,-5 4,5 -8,15 6,7 60,17 8,9 31,47

6,9 60,17
1,5 22,-8

1,9 60,-8
PERTEMUAN 12

METODE GREEDY
METODE GREEDY

Untuk mendapatkan solusi optimal dr


permasalahan yg mempunyai dua kriteria yaitu
Fungsi Tujuan/Utama & nilai pembatas
(constrain)
Proses Kerja Metode Greedy :

Proses Kerja Metode Greedy :

Untuk menyeselesaikan suatu permasalahan dgn


n input data yg terdiri dari beberapa fungsi
pembatas & 1 fungsi tujuan yg diselesaikan dgn
memilih beberapa solusi yg mungkin (feasible
solution/feasible sets), yaitu bila telah memenuhi
fungsi tujuan/obyektif.
Metode GREEDY digunakan dlm penyelesaian
masalah - masalah :
1. Optimal On Tape Storage Problem
2. Knapsack Problem
3. Minimum Spanning Tree Problem
4. Shortest Path Problem.
1. Optimal Storage On Tapes Problem

Permasalahan Bagamana mengoptimalisasi


storage/memory dalam komputer agar data yg
disimpan dapat termuat dgn optimal.

Misalkan terdapat n program. yg akan disimpan


didalam pita (tape).Pita tsb mempunyai panjang
maks. sebesar L, masing2 prg. yg akan
disimpan mempunyai panjang L1,L2,L3 ...,Ln.
Cara penyimpanan adalah penyimpanan secara
terurut (sequential).
L1 L2 L3 ... Ln
Persoalan = Bagamana susunan penyimpanan
program2 tersebut sehingga
L1 + L2 + L3 + ... + Ln = L ?

Pemecahannya = jika program.2 tersebut disimpan dlm


Order, dimisalkan adalah Order I, yaitu : j
sama dengan Σ tik maka akan didapat
k=1
n
Mean Retrieval Time (MRT) = Σ tj /n
j=1

n j
dan Optimal Storage = D(I) = Σ Σ lik
j=1
k=1
Contoh,
Misal terdapat 3 buah prg.(n=3) yg masing2
mpy panjang prg. (I1,I2,I3)=(5,10,3).
Tentukan urutan penyimpanannya scr
berurutan (sequential) agar optimal....!
Penyelesaiannya :
Dari 3 program tersebut akan didapat 6
buah kemungkinan order, yg didapat dr
nilai faktorial 3 3! (ingat faktorial n!).

ORDERING D(I)
1,2,3 5 + (5+10) + (5+10+3) = 38
1,3,2 5 + (5+3) + (5+3+10) = 31
2,1,3 10 + (10+5) + (10+5+3) = 43
2,3,1 10 + (10+3) + (10+3+5) = 41
3,1,2 3 + (3+5) + (3+5+10) = 29
3,2,1 3 + (3+10) + (3+10+5) = 34
Dari tabel tersebut, didapat Susunan /
order yg optimal,sbb :
susunan pertama untuk program ke tiga
susunan kedua untuk program kesatu
susunan ketiga untuk program kedua
Latihan Soal
Terdapat 7 Buah Program (N=7) yang masing-
masing mempunya panjang program (L1=10 ,
L2=3 , L3=9 , L4= 12 , L5=20 , L6=7 , L7=11),
Dengan metoda Optimal Storage Ontapes
Problem , tentukan Order yang paling optimal
METODE GREEDY (lanjutan)
2. KNAPSACK Problem
Kasus : Terdapat n obyek (Xi;i=1,2,3,....n)
yang masing-masing mempunyai berat
(weight)/ Wi & masing-masing memiliki nilai
(profit)/Pi yg berbeda-beda.
Masalah :
Masalah :
Bagamana obyek-obyek tersebut dimuat /
dimasukan kedalam ransel (knapsack) yg
mempunyai kapasitas maks. = M. Sehingga
timbul permasalahan sbb:
Bagaimana memilih obyek yg akan dimuat dr
n obyek yg ada sehingga nilai obyek termuat
jumlahnya sesuai dgn kapasitas(≤ M)
Jika semua obyek harus dimuat kedalam
ransel maka berapa bagian dr setiap obyek yg
ada dapat dimuat kedalam ransel sedemikian
shg nilai kum. maks. & sesuai dgn kapasitas
ransel ?
Penyelesaian Knapsack Problem :
1. Dengan Secara Matematika
2. Dengan Kriteria Greedy.
3. Dengan Algoritma Pemrograman Greedy.
Penyelesaian Knapsack Dengan Secara
Matematika

Fungsi tujuan = fungsi utama/obyektif = fungsi yg mjd


penyelesaian permasalahan dgn mendptkan solusi yg
optimal.

Solusi dimaksud = menemukan nilai/profit yg maks.


utk jml obyek yg dimuat dlm ransel shg sesuai
kapasitas.
n
Fungsi Tujuan Maksimum :  Pi Xi
I=1
Fungsi pembatas = fungsi subyektif = fungsi yg
bertujuan untuk memberikan batas maks. dr setiap obyek
untuk dapat dimuat dalam ransel sehingga kapasitasnya
tdk melebihi dr jumlah maks.daya tampung ransel.
n
Fungsi Pembatas :  Wi Xi ≤ M
i=1
dimana : 0 ≤ Xi ≤ 1; Pi >0;Wi>0

Catatan : karena dengan menggunakan Matematikan


sangat sulit dan rumit maka tidak dibahas lebih
mendalam.
Penyelesaian Dengan Kriteria Greedy.
Konsep dr kriteria yg ditawarkan oleh metode
Greedy yaitu :
Pilih obyek (barang) dengan nilai Pi maximal atau
terbesar
Pilih obyek (barang) dengan berat Wi minimal
dahulu.
Pilih obyek (barang) dgn perbandingan nilai &
berat yaitu Pi/Wi yang terbesar.
Penyelesaiannya : Dengan Kriteria
Greedy.
Diketahui bahwa kapasitas M = 20kg ,
Dengan jumlah barang n=3
Berat Wi masing-masing barang
(W1, W2, W3) = (18, 15, 10)
Nilai Pi masing-masing barang
(P1, P2, P3) = (25, 24, 15)
Pilih barang dengan Nilai Profit Maksimal
P1 = 25  X1 = 1, dimisalkan sebagai
batas atas nilai
P2 = 24  X2 = 2/15, dihitung dengan
Fungsi Pembatas
P3 = 15  X3 = 0, dimisalkan sebagai
batas bawah nilai
Pilih barang dengan Berat Minimal
W1 = 18  X1 = 0, sebagai batas bawah
W2 = 15  X2 = 2/3,dihitung dgn Fungsi Pembatas
W3 = 10  X3 = 1, sebagai batas atas
Pilih barang dgn menghitung perbandingan yg
terbesar dr Profit dibagi Berat (Pi/Wi) yg diurut
secara tidak naik, yaitu :

P1/W1 = 25/18  karena terkecil maka X1 = 0


P2/W2 = 24/15  karena terbesar maka X2 = 1
P3/W3 = 15/10 dengan Fungsi pembatas
X3 = 1/2.
Dibuatkan tabel berdasarkan elemen dr
ke-3 kriteria metode Greedy

Solusi ke (X1,X2,X3)  WiXi PiXi

Pi Max ( 1, 2/15, 0) 20 28.2

( 0, 2/3, 1) 20 31.0
Wi Min
Pi/Wi max ( 0, 1, 1/2 ) 20 31.5

Nilai profit maksimal = 31.5 dengan komposisi


yang sama
Latihan Soal
• Terdapat sebuah truk dengan kapasitas 80 Ton,
Akan memuat 3 buah barang masing-masing
adalah : Gula pasir 50 Ton dengan harga 100
Juta, Gula merah 60 Ton dengan harga 80 Juta
dan Gula batu 70 Ton dengan harga 90 Juta.
• Dengan metoda Greedy Tentukan barang apa
saja yang dimuat truk dengan harga yang paling
mahal
Pertemuan 13

Penyelesaian Dengan
Algoritma Pemrograman
Greedy.
Penyelesaian Dengan Algoritma
Pemrograman Greedy.
Algoritma GREEDY KNAPSACK.
PROCEDURE GREEDY KNAPSACK ( W, x, n)
float W[n], x[n], M, isi;
Int i, n;
x(1 : 1)  0 ; isi  M ;
FOR i  1 TO n
{ IF W[i] > M ; EXIT ENDIF
x[i]  1
isi  isi – W[i] }
IF i ≤ n ; x[i]  isi / W[i] ENDIF
END_GREEDY KNAPSACK
Efektif jk data (Pi/Wi) disusun scr non decreasing dahulu.
Penyelesaiannya : Dengan Algoritma Prg. Greedy.

Diket. bhw kapasitas M = 20kg, dgn jmlh brg n=3


Berat Wi masing2 brg = (W1, W2, W3) = (18, 15, 10)
Nilai Pi masing2 brg = (P1, P2, P3) = (25, 24, 15)
Lakuk’ p’urutan scr tdk naik thdp hasil Pi/Wi, misalnya :

P1/Wi  25/18 = 1,39 menjadi urutan ke 3


P2/W2  24/15 = 1,60 menjadi urutan ke 1
P3/W3  15/10 = 1.50 menjadi urutan ke 2
Sehingga m’hasilk’ pola urutan data yg baru,yaitu
W1,W2,W3  15, 10, 18 dan P1,P2,P3  24, 15, 25
Lalu data2 tsb diinputk’ pd Alg. Greedy, terjadi proses :
x(1:n)  0 ; isi  20 ; i = 1
W(i) > isi ?  15 > 20 ?  kondisi SALAH
x(1) = 1  b’arti bhw brg tsb dpt dimuat seluruhnya.
Isi = 20 - 15 kapasitas ransel b’kurang dgn sisa 5kg
i =2
W(2) > isi ??  10 > 5 ??  kondisi BENAR
x(2)=5/10=1/2benda 10kg hanya dpt dimuat 1/2 bgn
yaitu 5 kg.
i=3
Endif  diakhiri krn ransel sdh penuh (max =20kg)

Profit nilai yang didapat adalah : P1 + P2 + P3 yaitu:


24.1+ 15.1/2 + 18.0 = 24 + 7.5 = 31.5
Latihan Soal
• Terdapat sebuah kapal dengan kapasitas 180
Ton, Akan memuat 6 buah barang masing-
masing adalah : Gula pasir 50 Ton dengan
harga 100 Juta, Gula merah 60 Ton dengan
harga 80 Juta dan Gula batu 70 Ton dengan
harga 90 Juta. Beras 50 Ton dengan harga 150
Juta, Terigu 20 ton dengan harga 40 Juta,
Minyak goreng 60 Ton dengan harga 200 Juta.
• Dengan metoda Algoritma Greedy Tentukan
barang apa saja yang dimuat truk dengan harga
yang paling mahal
PROBLEMA DAN MODEL GRAPH DALAM METODE
GREEDY ( Lanjutan )
1. TRAVELLING SALESMAN
Untuk menentukan waktu perjalanan seorang
salesman seminimal mungkin.
Permasalahan:
Setiap minggu sekali, seorang petugas kantor
telepon berkeliling untuk mengumpulkan coin-coin
pada telepon umum yang dipasang diberbagai
tempat. Berangkat dari kantornya, ia mendatangi
satu demi satu telepon umum tersebut dan akhirnya
kembali ke kantor lagi. Masalahnya ia menginginkan
suatu rute perjalanan dengan waktu minimal.
MODEL GRAPH :

8 7 10
1 2
12 9
11 9
11 5 10
8 3
4

Misalnya : Kantor pusat adalah simpul 1 dan misalnya


ada 4 telepon umum, yg kita nyatakan sebagai simpul 2,
3, 4 dan 5 dan bilangan pada tiap-tiap ruas menunjukan
waktu ( dalam menit ) perjalanan antara 2 simpul .
Langkah penyelesaian :
1. Dimulai dari simpul yg diibaratkan sebagai
kantor pusat yaitu simpul 1 .
2.Dari simpul 1 pilih ruas yg memiliki waktu yg
minimal.
3. Lakukan terus pada simpul – simpul yg lainnya
tepat satu kali yg nantinya Graph akan
membentuk Graph tertutup karena perjalanan
akan kembali ke kantor pusat.
4. Problema diatas menghasilkan waktu
minimalnya adalah 45 menit dan diperoleh
perjalanan sbb :
Problema diatas menghasilkan waktu minimalnya
adalah 45 menit dan diperoleh perjalanan sbb :
7

1 2
12
8 5
10
4 3

8
Latihan Soal
Terdapat 4 kota yaitu ABCDE,
Jarak Antar Kota A, B, C, dan D sebagai berikut:
jarak A ke B = 7, A ke C = 5, A ke D = 3, B ke C =
6, B ke D = 6 dan C ke D = 2.
7
A
B
Grafnya dapat dilihat dibawah ini.
5 6
Kota Pusat : A 6 3
C D
2

Buatlah Solusi untuk jalur terpendeknya


2. MINIMUM SPANNING TREE
Kasus MST Problem = m’cari min.biaya (cost) spanning
tree dr setiap ruas (edge) graph yg m’btk pohon (tree).
Solusi dr p’masalah’ ini :
a. Dgn memilih ruas suatu graph yg memenuhi kriteria dr
optimisasi yg m’hasilk’ biaya min.
b. Penambah’ dr setiap ruas pd seluruh ruas yg m’btk
graph akan m’hasilk’ nilai/biaya yg kecil (minimum
cost).

Kriteria2 dr spanning tree, yakni :


1. Setiap ruas pada graph harus terhubung (conected)
2. Setiap ruas pd graph hrs mpy nilai (label graph)
3. Setiap ruas pd graph tdk mpy arah (graph tdk berarah)
Proses Total minimum cost terbentuknya graph dgn
tahapan sbb:
• Dari graph yg terbentuk, apakah memenuhi kriteria
MST.
• Lakukan secara urut dr simpul ruas awal s/d ruas
akhir
• Pada setiap simpul ruas perhatikan nilai/cost dr
tiap-tiap ruas
• Ambil nilai yg paling kecil (jarak tertpendek setiap
ruas).
• Lanjutkan s/d semua simpul ruas tergambar pd
spanning tree
• Jumlahkan nilai/cost yg dipilih tadi.
10
1 2
45 50
30
40
4 35 3
25
20 5
55
15
6
3. SHORTEST PATH PROBLEM
Permasalahan : menghitung jalur terpendek dr sbh graph
berarah.
Kriteria utk permasalahan jalur terpendek/SP problem tsb :
1. Setiap ruas pd graph hrs mpy nilai (label graph)
2. Setiap ruas pd graph tdk hrs terhubung (unconnected)
3. Setiap ruas pd graph tsb hrs mempunyai arah (graph
berarah).
45

A 50 B 10 E

10 20 15 20 35

30

C D F
15 3
Penyelesaian:
Jalur Panjang jarak
A–C 10
A–C–D 25
A–C–D–B 45
A–E 45
PERTEMUAN 14

Pewarnaan (Coloring)
PROBLEMA DAN MODEL GRAPH DALAM
METODE GREEDY

1. PEWARNAAN (COLORING)

Problema pemberian warna kepada semua


simpul, sedemikian sehingga 2 simpul yang
berdampingan ( ada ruas menghubungkan
ke dua simpul tersebut ) mempunyai warna
yang berbeda .Banyak warna yang
dipergunakan , diminta seminimal mungkin
Contoh : C

D
B

E
A
Permasalahan :
Menentukan pola lampu lalulintas dengan jumlah
fase minimal, dan pada setiap fase tidak ada perjalanan
yang saling melintas . Perjalanan yang diperbolehkan
adalah : A ke B, A ke C, A ke D, B ke C, B ke D, E ke B,
E ke C dan E ke D
Langkah-langkah penyelesaian masalah :
1. Tentukan simpul dari perjalanan yang diperbolehkan
( untuk peletakan simpulnya bebas )
2.Tentukan ruas untuk menghubungkan 2 simpul yg
menyatakan 2 perjalanan yg saling melintas

AC BD EB

AB BC EC

AD
ED
3. Beri warna pada setiap simpul dengan warna
warna baru.
- Bila Simpul berdampingan maka berilah warna
lain.
- Bila simpul tidak bedampingan maka berilah
warna yang sama
H
P AC BD EB H

AB BC EC M

AD
P ED
4. Kita lihat Bahwa simpul AB , BC dan ED tidak
dihubungkan oleh suatu ruas jadi untuk simpul tersebut
tidak pernah melintas perjalanan-perjalanan lain dan
simpul tersebut selalu berlaku lampu hijau

5. Tentukan pembagian masing –masing simpul yang


sudah diberikan warna.
Putih = ( AC, AD )
Hitam = ( BD, EB )
Merah = ( EC )
Catatan :
Pembagian simpul berdasarkan simpul yang tidak
langsung berhubungan seminimal mungkin (BISA
DILAKUKAN DENGAN BEBERAPA KEMUNGKINAN )

6.Dari langkah ke 5 diperoleh 3 fase, sehingga bisa kita


simpulkan keseluruhan situasi dan hasilnya dapat
dinyatakan dengan :
Fase 1:

HIJAU AC, AD, AB, BC, ED

MERAH BD, EB, EC

Fase 2:

HIJAU BD, EB, AB, BC, ED

MERAH AC, AD, EC


Fase 3 :

HIJAU EC, AB, BC, ED

MERAH AC, AD, BD, EB

Anda mungkin juga menyukai