LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas...
Transcript of LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas...
LOGIKA & ALGORITMA
DISUSUN OLEH:
Sardiarinto
TEKNOLOGI KOMPUTER
UNIVERSITAS BINA SARANA INFORMATIKA
2018
Logika & Algoritma Universitas Bina Sarana Informatika | 2
KATA PENGANTAR
Alhamdulillah saya ucapkan pertama kali untuk dapat menyatakan rasa syukur saya
telah menyelesaikan modul ini. Dan dalam kesempatan ini saya ingin juga mengucapkan
terima kasih kepada :
1. Allah SWT yang telah menganugerahkan akal dan pikiran ini, serta kekuatan phisik saya.
2. Kedua Orang tua , Adik dan Kakak saya yang telah memberikan dukungannya baik
moral dan spiritual.
3. Rektor Universitas Bina Sarana Informatika.
4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada
diri saya.
Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan modul ini
dapat sebagai langkah awal untuk mempelajari Logika & Algoritma . Dan mudahan-
mudahan buku ini dapat berguna bagi para pembaca dan pengguna sekalian.
Penulis
Sardiarinto
DAFTAR ISI
KATA PENGANTAR ............................................................................................................... 2
DAFTAR ISI .............................................................................................................................. 3
BAB I PENGERTIAN DASAR LOGIKA DAN ALGORITMA ............................................. 4
BAB II KONSEP ALGORITMA & TIPE DATA .................................................................. 10
BAB IV STRUKTUR BRANCHING ..................................................................................... 28
BAB V LOOPING/PERULANGAN ....................................................................................... 33
BAB VI STRUKTUR REKURSIF .......................................................................................... 40
BAB VII LARIK ATAU ARRAY .......................................................................................... 45
BAB IX TEHNIK SEARCHING ............................................................................................ 52
BAB X METODE GREEDY................................................................................................... 56
BAB XI PENYELESAIAN DENGAN ALGORITMA PEMROGRAMAN GREEDY ........ 58
BAB XII PEWARNAAN (COLORING) ................................................................................ 60
Logika & Algoritma Universitas Bina Sarana Informatika | 4
BAB I 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
Logika & Algoritma Universitas Bina Sarana Informatika | 5
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
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
Bagaimana menyatakan suatu algoritma
1. 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
Logika & Algoritma Universitas Bina Sarana Informatika | 6
Contoh 2 :
Sebuah prosedur ketika akan mengirimkan surat kepada teman:
a. Tulis surat pada secarik kertas surat
b. Ambil sampul surat atau amplop
c. Masukkan surat ke dalam amplop
d. Tutup amplop surat dengan lem perekat
e. Tulis alamat surat yg dituju, jika tdk ingat, lebih dahulu ambil buku alamat & cari
alamat yg dituju, lalu tulis alamat tsb pd amplop surat.
f. Tempelkan perangko pada amplop surat
g. 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.
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
Logika & Algoritma Universitas Bina Sarana Informatika | 7
Perbedaan C++ dan pascal pada perintah syntax
1. C++ Gunakan perintah “switch case”
2. Pascal Gunakan “case of”
Perbedaan C++ dan pascal pada penulis huruf
1. C++ → Sensitive terhadap hurup kecil dan besar
2. Pascal → Tidak dibedakan menurut besar kecil huruf
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
Logika & Algoritma Universitas Bina Sarana Informatika | 8
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;
getch(); }
Analisa Suatu Algortima
(Untuk melihat faktor efesiensi & efektifitas dari algoritma tersebut), Dapat dilakukan
terhadap suatu algoritma dengan melihat pada :
1. 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
2. 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,
Logika & Algoritma Universitas Bina Sarana Informatika | 9
5. Efektifitas,
6. Adanya Batasan Ruang Lingkup,
Logika & Algoritma Universitas Bina Sarana Informatika | 10
BAB II 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.
Dengan memindahkan dua buah lidi yang ada pada bagian bawah, seperti dibawah ini
Logika & Algoritma Universitas Bina Sarana Informatika | 11
2. Ada tiga batang lidi dibawah ini, bagaimana caranya untuk membentuk angka 6 tanpa
mematahkannya
Jawab: Ketiga buah lidi tersebut akan membentuk angka 6 romawi
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)
Jawabannya: Karena Budi adalah Seorang guru.
Penjelasan: Budi tidak pernah mengerjakan tugas namun membuat tugas, kerjanya
cuma bicara menjelaskan materi pelajaran dalam kelas sehingga Budi tidak akan
pernah mengikuti ujian semester.
Logika & Algoritma Universitas Bina Sarana Informatika | 12
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
a. Untuk Latihan Uji Coba Pertukaran Mahasiswa Membawa 2 Gelas air yang berbeda
warnanya dan 1 gelas Kosong
b. Diberikan dua buah bejana, A dan B; bejana A berisi larutan berwarna merah, bejana
B berisi larutan berwarna biru.
c. Buatlah pseudocode untuk menukarkan isi kedua bejana itu sedemikian sehingga
bejana A berisi larutan berwarna biru dan bejana B berisi larutan berwarna merah.
Logika & Algoritma Universitas Bina Sarana Informatika | 13
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
Logika & Algoritma Universitas Bina Sarana Informatika | 14
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 ;
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;
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 ... 2147283647 4 Byte
Unsigned
integer 0-65535 2 Byte
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
Logika & Algoritma Universitas Bina Sarana Informatika | 15
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
Lanjutan Operator Aritmatik & Matematik
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.
Logika & Algoritma Universitas Bina Sarana Informatika | 16
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>
Logika & Algoritma Universitas Bina Sarana Informatika | 17
#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";
Logika & Algoritma Universitas Bina Sarana Informatika | 18
/*Melakukan perbandingan terhadap dua string dan penampilan nilainya*/
printf("Nilai Yang dibandingkan sa,sb : %d\n",strcmp(sa,sb));
printf("Nilai Yang dibandingkan sa,sc :
%d\n",strcmp(sa,sc));
printf("Nilai Yang dibandingkan sb,sa :
%d\n",strcmp(sa,sc));
getch();
return 0;
}
Hasil program yang 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>
Logika & Algoritma Universitas Bina Sarana Informatika | 19
#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;
}
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 :
• Mengidenfikasi kode program
• Membuat dokumentasi program dengan memberikan penjelasan pada setiap baris
program
• Melakukan generate dokumentasi
Logika & Algoritma Universitas Bina Sarana Informatika | 20
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
Logika & Algoritma Universitas Bina Sarana Informatika | 21
BAB III 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.
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.
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.
Logika & Algoritma Universitas Bina Sarana Informatika | 22
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
Logika & Algoritma Universitas Bina Sarana Informatika | 23
Menghitung Luas Segitiga :
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
Logika & Algoritma Universitas Bina Sarana Informatika | 24
Algoritmanya:
read bilangan
If bil mod 2 = 0 then
“Bilangan Genap”
Else
“Bilangan Ganjil”
Flowchart Bilangan Genap/Ganjil
3. Stuktur Looping
Digunakan untuk program yang instruksinya akan dieksekusi berulang-ulang.
(Akan dijelaskan pada pertemuan 5).
Logika & Algoritma Universitas Bina Sarana Informatika | 25
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”
Fowchart Menentukan Bilangan Terbesar
Berapakah nilai angka yang tercetak pada flowchart ini
Logika & Algoritma Universitas Bina Sarana Informatika | 26
LATIHAN 3
Berapakah nilai akhir pencacah pada flowchart ini
LATIHAN 4
Berapakah nilai bil yang terakhir kali ditampilkan berdasarkan flowchart ini
LATIHAN 5
Apa yang salah pada flowchartperulangan ini?
Logika & Algoritma Universitas Bina Sarana Informatika | 27
Tugas
Diketahui empat bilangan o, p, q, dan r. Buatlah flowchart/diagram alir untuk mendapatkan
nilai terbesar diantara keempat bilangan tersebut.
Buatlah flowchart/diagram alir untuk mengitung N suku pada deret berikut:
1. S=1+3+5+7+9+...
2. S=2+5+10+17+26+...
3. S=1–2+3–4+5–6+7-...
Buatlah algoritma dari flowchart ini :
Logika & Algoritma Universitas Bina Sarana Informatika | 28
BAB IV STRUKTUR BRANCHING
STRUKTUR BRANCHING (Percabangan)
1. Bersyarat
• IF
• IF......ELSE
• NESTED IF atau IF ELSE Majemuk
• SWITCH.....CASE
2. Tidak Bersyarat
• Goto
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:
2. IF ...... ELSE
Bentuk umum :
if (kondisi)
perintah1;
else
perintah 2;
Diagram alur dr pemakaian
IF......ELSE sbb:
Logika & Algoritma Universitas Bina Sarana Informatika | 29
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;
4. IF.....ELSE Majemuk (bertingkat)
If-else majemuk mirip dengan nested if. Keuntungan penggunaan if-else majemuk adalah
bentuk penulisan yang lebih sederhana.
Bentuk umum :
if (syarat)
{
... Perintah; }
else if (syarat)
{
... Perintah; }
else
{
... Perintah; }
5. Switch Case
Untuk menangani pengambilan keputusan yang melibatkan sejumlah atau banyak alternatif.
Logika & Algoritma Universitas Bina Sarana Informatika | 30
Bentuk Umum :
switch (ekspresi integer atau karakter)
{
case konstanta1:
...perintah;
break;
case konstanta2:
...perintah;
break;
default :
...perintah;
break; }
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");
}
Logika & Algoritma Universitas Bina Sarana Informatika | 31
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
Buatlah flowchart dan program dari pseudocode berikut ini:
1. Masukan kode barang
2. Masukan harga barang
3. Masukan Jumlah barang
4. Hitung bayar = harga * Jumlah barang
5. Jika bayar >= 100.000 maka diberikan discount 10%, selain dari itu tidak mendapat
discount
6. Hitung total bayar = bayar - discount
7. Cetak total bayar
Buatlah flowchart dan programnya dari pseudocode berikut ini:
1. Diketahui phi=3.14
2. Masukan nilai jari-jari (r)
3. Hitung Keliling = 2 * phi * r
4. Cetak Keliling
Logika & Algoritma Universitas Bina Sarana Informatika | 32
5. Ingin menghitung kembali? Jika Ya maka kembali ke proses awal, jika Tidak maka
program berhenti.
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.
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.
Logika & Algoritma Universitas Bina Sarana Informatika | 33
BAB V 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.
Perulangan While
Perulangan akan terus dilaksanakan selama syarat tersebut terpenuhi.
Bentuk Umum :
while (kondisi)
pernyataan ;
atau
while (kondisi)
{
Pernyataan;
pernyataan;
}
Logika & Algoritma Universitas Bina Sarana Informatika | 34
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;
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
Logika & Algoritma Universitas Bina Sarana Informatika | 35
Pengubah nilai mengatur naik/turunnya nilai syarat pengulangan
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;
Perulangan Do….While
Perulangan akan dilaksanakan terlebih dahulu dan pengujian perulangan dilakukan
belakangan.
Bentuk Umum :
do
pernyataan;
while (syarat);
Atau
do
{ 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.
Logika & Algoritma Universitas Bina Sarana Informatika | 36
5. Apabila di awal pelaksanaan kondisi sudah terpenuhi maka instruksi-instruksi paling
tidak dikerjakan satu kali.
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
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:
Logika & Algoritma Universitas Bina Sarana Informatika | 37
{
......
......
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;
......
......
Logika & Algoritma Universitas Bina Sarana Informatika | 38
}
......
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.
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
Logika & Algoritma Universitas Bina Sarana Informatika | 39
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:
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.
Logika & Algoritma Universitas Bina Sarana Informatika | 40
BAB VI 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 :
100=1 …………………………..(1 )
10 n = 10 * 10 n-1 .....................................( 2 )
Contoh :
103=10 *102
102=10 *101
101=10*100
100=1
Faktorial
0!=1
N! = N x (N-1)! Untuk N > 0
Scr notasi pemrograman dapat ditulis sebagai :
FAKT (0) = 1..............................................
FAKT(N) = N * FAKT (N-1)....................................
Logika & Algoritma Universitas Bina Sarana Informatika | 41
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.
Contoh Listing Faktorial
#include <iostream.h>
#include <iomanip.h>
Unsigned long faktorial (unsigned long);
Int main()
{
for (int i=0; i:<=10; i++)
cout << setw(2) << i << “! Faktorial(i) << endl; return 0;
}
recursive definition of function factorial Unsigned long factorial (unsigned long
number)
{
if (number <=1) // base case
return 1;
else
return number * factorial(number – 1); }
Fibonancy
Logika & Algoritma Universitas Bina Sarana Informatika | 42
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
❖ 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.
Logika & Algoritma Universitas Bina Sarana Informatika | 43
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) AB .......................…………...................… 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 (4,A,B,C)AC..........……..........................................................AC
MENARA(1,B,A,C) ...... B C
MENARA(2,B,C,A) B A ........B A
MENARA(3,B,A,C)
MENARA(1,C,B,A) ....... C A 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
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 :
N = Jumlah Piringan
Logika & Algoritma Universitas Bina Sarana Informatika | 44
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
Logika & Algoritma Universitas Bina Sarana Informatika | 45
BAB VII LARIK ATAU ARRAY
adalah tipe terstruktur yang terdiri dari sejumlah komponen yang mempunyai tipe data yang
sama.
1. Variabel Array terdiri dari :
2. Array Berdimensi Satu
3. Array Berdimensi Dua
1. Array Berdimensi Satu
Bentuk Umum :
Tipe_Data Nama_Variabel [ukuran]
Contoh:
2. Array Berdimensi Dua
Bentuk Umum :
Tipe_Data Nama_Variabel [index-1] [index-2]
Contoh:
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;
Logika & Algoritma Universitas Bina Sarana Informatika | 46
cout<< “nilai =“ ;
cin>> tabel [ i ] [ j ]; }}
Contoh II :
Diberikan matriks A sebagai berikut :
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 :
Logika & Algoritma Universitas Bina Sarana Informatika | 47
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......
Logika & Algoritma Universitas Bina Sarana Informatika | 48
Tugas Kelompok
Buatlah program dengan menggunakan C++
Penjumlahan dua buah matriks
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
Logika & Algoritma Universitas Bina Sarana Informatika | 49
BAB VIII METODE DIVIDE AND CONQUER
Bentuk Umum Proses Metode D And C dpt dilihat sbb :
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 di SORT.
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.
Logika & Algoritma Universitas Bina Sarana Informatika | 50
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.
QUICK SORT
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.
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
Logika & Algoritma Universitas Bina Sarana Informatika | 51
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.
Catatan : Setiap ada pemindahan, maka elemen. Yang sudah ada akan di insert sehingga akan
bergeser kebelakang.
MERGE SORT
Prinsip Kerja Merge SORT adalah :
1. Kelompokan deret bilangan kedalam 2 bagian, 4 bagian, 8 bagian, ......dst → (2n)
2. Urutkan secara langsung bilangan dalam kelompok tsb.
3. Lakukan langkah diatas untuk kondisi bilangan yg lain sampai didapatkan urutan yg
optimal .
Latihan Soal
1. Terdapat deret angka : 99 , 34 , 11 , 50 , 23 , 89, 65,2,6,37,74,44.
2. Urutkanlah deret angka tersebut dengan menggunakan teknik sort yang sudah
dijelaskan.
3. (Selection Sort, Bubble Sort, Insertion Sort, Quick Sort, dan Merge Sort).
Tugas Kelompok
1. Buatlah simulasi dengan video editing dari soal latihan Sorting diatas dengan cara
dipraktekkan oleh masing-masing kelompok yang di unggah di Youtube.
2. Masing-masing kelompok dapat memilih salah satu dari metode sorting.
3. sebutkan nim, nama, kelompok dan kelas secara jelas pada video editingnya.
Logika & Algoritma Universitas Bina Sarana Informatika | 52
BAB IX TEHNIK SEARCHING
Tehnik Pencarian Tunggal :
1. Tehnik Sequential Search / Linier Search
2. Tehnik Binary Search
Tehnik Pencarian Nilai MAXMIN :
1. Tehnik StraitMAXMIN
2. Tehnik D and C
Tehnik Pencarian Tunggal
1. 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
a. Tentukan I = 1
b. Ketika Nilai (I) <> X Maka Tambahkan I = I +1
c. Ulangi langkah No. 2 sampai Nilai(I) = X
d. 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
Logika & Algoritma Universitas Bina Sarana Informatika | 53
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
Logika & Algoritma Universitas Bina Sarana Informatika | 54
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
BEST CASE
Keadaan yg tercapai jika elemen pada himpunan A disusun secara increasing (menaik).
Dengan perbandingan waktu n - 1 kali satuan operasi.
WORST CASE
Terjadi jika elemen dalam himp. disusun secara decreasing (menurun). Dengan. Oprasi
perbandingan sebanyak 2(n-1) 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.
Logika & Algoritma Universitas Bina Sarana Informatika | 55
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
Logika & Algoritma Universitas Bina Sarana Informatika | 56
BAB X METODE GREEDY
Pengertian :
Untuk mendapatkan solusi optimal dr permasalahan yg mempunyai dua kriteria yaitu Fungsi
Tujuan/Utama & nilai pembatas (constrain)
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).
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 :
Bagamana obyek-obyek tersebut dimuat / dimasukan kedalam ransel (knapsack) yg
mempunyai kapasitas maks. = M. Sehingga timbul permasalahan sbb:
1. Bagaimana memilih obyek yg akan dimuat dr obyek yg ada sehingga nilai obyek
termuat jumlahnya sesuai dgn kapasitas( M)
2. 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 :
Logika & Algoritma Universitas Bina Sarana Informatika | 57
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.
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.
Penyelesaian Dengan Kriteria Greedy.
Konsep dr kriteria yg ditawarkan oleh metode Greedy yaitu :
1. Pilih obyek (barang) dengan nilai Pi maximal atau terbesar
2. Pilih obyek (barang) dengan berat Wi minimal dahulu.
3. Pilih obyek (barang) dgn perbandingan nilai & berat yaitu Pi/Wi yang terbesar.
Latihan Soal
1. 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.
2. Dengan metoda Greedy Tentukan barang apa saja yang dimuat truk dengan harga
yang paling mahal
Logika & Algoritma Universitas Bina Sarana Informatika | 58
BAB XI 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)
Logika & Algoritma Universitas Bina Sarana Informatika | 59
Profit nilai yang didapat adalah : P1 + P2 + P3 yaitu:
24.1+ 15.1/2 + 18.0 = 24 + 7.5 = 31.5
Latihan Soal
1. 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.
2. Dengan metoda Algoritma Greedy Tentukan barang apa saja yang dimuat truk dengan
harga yang paling mahal
Logika & Algoritma Universitas Bina Sarana Informatika | 60
BAB XII 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 :
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
3. Beri warna pada setiap simpul dengan warna warna baru.
a. Bila Simpul berdampingan maka berilah warna lain. b. Bila simpul tidak bedampingan maka berilah warna yang sama
Logika & Algoritma Universitas Bina Sarana Informatika | 61
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
Logika & Algoritma Universitas Bina Sarana Informatika | 62
Sumber Referensi
Kristanto, Andri. 2009. Algoritma & Pemprograman Dengan C++ Edisi 2. Graha Ilmu.
Yogyakarta.
Sjukani. 2005. Algoritma & Struktur Data dengan C, C++, dan Java. Mitra Wacana Media.
Jakarta.
Munir, Rinaldi. 2005. Logika dan Algoritma Buku II Edisi ketiga. Informatika. Bandung.
Kurniadi, Indarwoko. 2011. Logika dan Algoritma Dasar Menggunakan Bahasa C++. Mitra
Wacana Media. Jakarta.
B, Indra Yatini, Erliansyah Nasution. 2005. Algoritma & Struktur Data Dengan C++. Graha
Ilmu. Yogyakarta.
Kadir, Abdul. 2012. Algoritma & Pemrograman Menggunakan Java. Andi
Offset.Yogyakarta.
Suarga.2012. Algoritma dan Pemrograman. Andi Offset.Yogyakarta.
Insap Santosa, P. 2006. Struktur Data menggunakan Turbo Pascal 6.0. Andi Offset.
Yogyakarta.
Zakaria, Teddy Marcus & Agus Prijono. 2005. Konsep dan Implementasi Struktur Data.
Informatika. Bandung
Yulikuspartono. 2003. Pengantar Logika dan Algoritma. Andi Offset. Yogyakarta.