62
LOGIKA & ALGORITMA DISUSUN OLEH: Sardiarinto TEKNOLOGI KOMPUTER UNIVERSITAS BINA SARANA INFORMATIKA 2018

LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

LOGIKA & ALGORITMA

DISUSUN OLEH:

Sardiarinto

TEKNOLOGI KOMPUTER

UNIVERSITAS BINA SARANA INFORMATIKA

2018

Page 2: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 3: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 4: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 5: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 6: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 7: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 8: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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,

Page 9: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

Logika & Algoritma Universitas Bina Sarana Informatika | 9

5. Efektifitas,

6. Adanya Batasan Ruang Lingkup,

Page 10: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 11: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 12: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 13: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 14: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 15: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 16: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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>

Page 17: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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";

Page 18: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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>

Page 19: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 20: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 21: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 22: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 23: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 24: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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).

Page 25: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 26: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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?

Page 27: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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 :

Page 28: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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:

Page 29: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 30: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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");

}

Page 31: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 32: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 33: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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;

}

Page 34: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 35: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 36: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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:

Page 37: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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;

......

......

Page 38: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 39: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 40: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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)....................................

Page 41: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 42: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 43: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 44: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 45: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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;

Page 46: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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 :

Page 47: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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......

Page 48: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 49: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 50: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 51: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 52: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 53: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 54: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.

Page 55: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 56: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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 :

Page 57: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 58: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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)

Page 59: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 60: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 61: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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

Page 62: LOGIKA & ALGORITMA · 4. Seluruh staff dan karyawan Universitas Bina Sarana Informatika atas subangsihnya pada diri saya. Besar harapan saya sebagai penulis modul ini adalah mudah-mudahan

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.