modul logika algoritma - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi...

69
i Pagei MODUL LOGIKA ALGORITMA Disusun Oleh: Feri Prasetyo H.

Upload: others

Post on 20-Jul-2020

20 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

i

Pag

ei

MODUL

LOGIKA ALGORITMA

Disusun Oleh:

Feri Prasetyo H.

Page 2: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

ii

Kata Pengantar

Puji Syukur kehadirat Tuhan Yang Maha Esa karena atas limpahan rahmat-Nya

sehingga kami dapat menyelesaikan modul Logika Algoritma Untuk Masiswa

semester 1 matakuliah Logika dan Algoritma. Saat ini banyak berkembang

berkembang bahasa-bahasa pemrograman tingkat tinggi yang pemakaiannya sudah

sangat mudah, namu sebagai seorang yang memehami bahasa pemrograman harus

mengikuti kedah bahasa pemrograman agar dapat memahami konsep pregram

dengan baik dan benar. Modul Logika Dan Algoritma ini sangat penting bagi

mahasiswa program studi Manajemen Informatika khususnya, karena menjadi

dasar bagi mahasiswa untuk mempelajari bahasa pemrograman. Pada modul ini

diberikan contoh-contoh kasus untuk mempermudah memahami konsep.

Kami menyadari masih banyak kekurangan dalam penyusunan modul ini.

Oleh karena itu, kami sangat mengharapkan kritik dan saran demi perbaikan dan

kesempurnaan modul ini.

Kami mengucapkan terima kasih kepada berbagai pihak yang telah

membantu proses penyelesain modul ini, Semoga modul ini dapat bermanfaat bagi

kita semua, khususnya para peserta didik.

Penulis

Feri Prasetyo H.

Page 3: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

iii

Pag

eiii

Daftar Isi

Kata Pengantar .................................................................................................................... ii

Bab 1 ..................................................................................................................... .............. 1

Logika ....................................................................................................... ............................. 1

Algoritma ............................................................................................................................... 1

Algoritma Dalam Pemrograman ............................................................................................ 2

Kriteria Pemmilihan Algoritma ............................................................................................... 3

Contoh Lankah langkah Algoritma ......................................................................................... 3

Menyatakan Algoritma ............................................................................................................ 5

Sifat sifat Algoritma ................................................................................................................. 6

Latihan Soal Bab 1 ................................................................................................................... 7

Bab 2 ....................................................................................................................................... 8

Struktur Data ............................................................................................ ............................... 8

Pembagian Data ............................................................................................ .......................... 9

Contoh Tipe data Yang lain ..................................................................................................... 10

Tipe data terstruktur ................................................................................... ............................ 13

Variabel .................................................................................................................................. 13

Operator .................................................................................................................................. 15

Bab 3 ..................................................................................................... .................................. 19

Diagram Alur ...................................................................................... ................................... 19

Simbol Diagram Alur ............................................................................................................... 19

Struktur Flowchart ................................................................................................................. 21

Bab 4 ........................................................................................................................................ 22

Page 4: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

iv

Percabagngan if ...................................................................................................................... 22

Percabagngan if else ............................................................................................................. 23

Nested if ............................................................................................................................. ... 23

If majemuk ......................................................................................................... .................. 24

switch - case ...................................................................................................................... 25

BAB 5 ....................................................................................................... ............................... 25

Perulangan for .................................................................................................................... 25

While ................................................................................................................................... 28

Break ............................................................................................................................. ....... 29

Bab 6 .................................................................................................................................... 30

Rekursift ................................................................................................................... ........... 31

Deret fibonancy .................................................................................................................. 32

Menara Hanoi ...................................................................................................................... 32

Bab 7 ..................................................................................................................................... 35

Array ....................................................................................................................... ............... 35

Pendeklarasian aray dimensi Satu ......................................................................................... 37

Array Berdimensi dua .......................................................................................................... 43

Bab 8 ....................................................................................................................... .............. 50

Algoritma Devide And Conquer Dengan Sorting ................................................................... 50

Pengunaan D and C pada Sorting .......................................................................................... 51

.Bubble Sort ........................................................................................................................ 51

Selection Sort ...................................................................................................................... 52

Merge Sort .......................................................................................................................... 53

Bab 9 ............................................................................................................................. ........ 54

Page 5: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

v

Pag

ev

Algoritma Devide And Conquer Dengan Searching ................................................................ 54

Tehnik Pencarian Tunggal ....................................................................................................... 54

Linear/Sequential Search ....................................................................................................... 54

Binary Search ......................................................................................................................... 54

Tehnik Pencarian MAXMIN ...................................................................................................... 54

Bab 10 ...................................................................................................................................... 57

Metode Gredi .......................................................................................................................... 57

Optimal On Tape Storage Problem .......................................................................................... 57

Knapsack Problem .................................................................................................................... 58

Minimum Spanning Tree Problem ............................................................................................. 60

Shortest Path Problem ............................................................................................................... 61

Metode Gredi Model pewarnaan .............................................................................................. 61

Referensi .................................................................................................................................... 64

Page 6: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

1 | P a g e

BAB I

Logika Algoritma

A. LogikA

Logika berasal dari kata Yunani kuno (logos) Merupakan Cabang Dari Ilmu filsafat ilmu logika (ilmu pengetahuan) yang mempelajari kecakapan untuk berpikir secara lurus, tepat, dan teratur

Dikenalkan pertama kali Oleh Aristoteles Aristoteles, adalah seorang filsuf Yunani, murid dari Plato dan guru dari Alexander yang Agung. Ia menulis tentang berbagai subyek yang berbeda, termasuk fisika, metafisika, puisi, logika, retorika, politik, pemerintahan, etnis, biologi dan zoologi

Definisi Logika

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

aturan yang berlaku B. Algoritma

Diperkenalkan Oleh Ahli Matematika : Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi Seorang ilmuan Persia yang menulis kitab al jabr w’al muqabala (rules of restoration and reduction) sekitar tahun 825 M dalam ilmuan barat di kenal dengan algorism. Kemudian dalam bahasa Indonesia konsep ini menjadi algoritma, suatu metode, tahapan untuk mencari pemecahan sustu permasalahan. Algoritma membantu membuat kerangka berfikir secara logis dan sistematis dengan membuat beberapa konsep perencanaan, untuk menyelesaikan beberapa masalah yang di hadapi

Definisi Algoritma 1. Langkah - langkah yang dilakukan agar solusi masalah dapat diperoleh. 2. Suatu prosedur yang merupakan urutan langkahlangkah yg berintegrasi. 3. Suatu metode khusus yang digunakan untuk menyelesaikan suatu masalah yang nyata

Tahapan penyelesaian masalah: Masalah Algoritma Penyelesaian

Page 7: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

2 | P a g e

Dalam Pemrogaman Komputer

Masalah : Masalah merupakan kejadian yang dialami oleh seseorang dalam kehidupan sehari

hari. Misal Maslah Untuk Menghitung luas Persegi panjang

Model : Sedangkan model merupakan desain yang dilakukan untuk dapat menyelesaikan

masalah misal: rumus menghitung persegi panjang adalah Panjang x Lebar

Algoritma : Algoritma merupakan langkah langkah/ urutan/ prosedur penyelesaian

masalahpermasalahan menghitung persegi panjang dengan menentukan “Input”

(nilai awal dri panjang dan lebar) ”Proses” (Luas persegi panjang x lebar)

“output” (hasil dari proses)

Program : Sedangkan program merupakan aplikasi untuk menjalankan algoritmaMisal

menjalankan algoritma tersebut dengan Bahasa pemrograman C++

#include <stdio.h>

# include <conio.h>

#include <iostream.h>

Main()

{

int P, L, Luas;

clrscr;

cout<<"Program"<< endl;

cout<<"*menghitung L.persegi.P*"<<end1;

cout<<"\n nilai Panjang=";cin>>P;

cout<<"\n nilai Lebar=";cin>>L;

L=P*L;

cout<<"\n nilai Luas="<<L;

<getch();

}

Eksekusi : merupakan menjalankan/membuat masalah tersebut agar terselesaikan dengan

cara melakukan eksekusi langkah langkah algoritma tersebut

Hasil : Sedangkan hasil merupakan tujuan utama algoritma sebagai tahapan bahwa

algoritma telah selesai dan berakhir

Page 8: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

3 | P a g e

Beberapa kriteria pemilihan algoritma 1. Ada Output: Algoritma harus mempunyai output yang merupakan solusi dari masalah

yang sedang diselesaikan. Dengan demikian argoritma akan berhenti dengan memberikan hasil jika sudah menjalankan semua kriteria dan prosedur

2. Efektifitas dan Efisiens

Efektif → algoritma menghasilkan solusi yang sesuai dengan masalah yang diselesaikan (tepat guna).

Efisiensi → jika waktu proses algoritma relatif lebih singkat dan penggunaan memori komputernya lebih sedikit

3. Jumlah Langkahnya Berhingga : Pada hal ini Barisan instruksi yang dibuat harus dalam suatu urutan tertentu atau harus berhingga berhingga dapat dikatakan bahawa jika terjadi suatu kendalan atau kondisi yang berbedaakan melakukan kegitan baru arau mengikuti kegiatan yang ada, agar masalah yang dihadapi dapat diselesaikan dengan tidak memerlukan waktu relatif lama.

4. Berakhir : semua Proses penyelesaian masalah harus berhenti dan berakhir dengan hasil akhir yang merupakan solusinya atau berupa informasi yang tidak diketemukan solusinya. SEMI ALGORITMA, yaitu suatu prosedur yang hanya akan berhenti jika mempunyai atau menghasilkan solusi, sedangkan jika tidak menghasilkan solusi, maka prosedur tersebut akan berjalan tanpa henti.

5. Terstruktur: Urutan langkah-langkah harus disusun sedemikian rupa agar proses

penyelesaian tidak berbelit-belit dan bagian proses dapat dibedakan dengan jelas mana bagian input, proses dan output sehingga memudahkan user melakukan pemeriksaan ulang

Contoh :

Urutan langkah langkah untuk menghitung luas persegi panjang

a. Diketahui sebuah persegi panjang memilik Panjang dan Lebar b. Hitunglah Luas Persegi panjang dengan Rumus Panjang x Lebar c. Tampilkan hasilnya d. Ingin menghitung lagi kembali ke A e. Selesai

Analisis Algoritma Analisis algoritma merupakan prosedur dari beberapa kriteria yang berlaku pada lagoritma itu sendiri yaitu berupa beberapa tahapan antara lain:

a. Merencanakan algoritma: Merencanakan algoritma dengan cara Menentukan beberapa model atau desain sebagai penyelesaian dari suatu masalah untuk mendapat sebuah solusi yan mungkin. Dengan demikian, akan banyak terdapat variasi desain atau model yang dapat diambil yang terbaik.

Page 9: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

4 | P a g e

b. Validitas suatu algoritma Yakni jika penyelesaian memenuhi solusi yang sebenarnya dan berakhir dengan baik, dapat diartinkan solusi yang didapat merupakan penyelesaian suatu masalah dan bukannya membuat masalah baru sehingga membuat proses semakin bertambah dan berhingga tanpa penyelesaian masalah.

c. Bagaimana menganalisa suatu algoritma Caranya melihat running time atau waktu tempuh yang digunakan dalam menyelesaikan masalah serta jumlah memori yang digunakan dalam penyelesaian masalah tersebut.

Waktu Tempuh (Running Time) dari suatu Algortima. Hal-hal yang dapat mempengaruhi daripada waktu tempuh adalah : 1. Banyaknya langkah: Makin banyak langkah atau instruksi yang digunakan, maka makin

lama waktu tempuh yang dibutuhkan dalam proses tersebut.

2. Besar dan jenis input data: Jika jenis data adalah tingkat ketelitian tunggal (Single precision), maka waktu tempuh akan menjadi relatif lebih cepat dibandingkan dengan tingkat ketelitian ganda(double precesion).

3. Jenis Operasi: Sebagai contoh, operasi perkalian atau pembagian akan memakan waktu

lebih lama dibandingkan operasi penjumlahan atau pengurangan.

4. Komputer dan kompilator: hal terakhir yang mempengaruhi waktu tempuh suatu proses algoritma adalah komputer dan kompilatornya, walaupun sebenarnya faktor ini diluar tahap rancangan atau tahap pembuatan algoritma yang efisien. Algoritma dibuat untuk mencapai waktu tempuh yang seefektif dan seefisien mungkin, tetapi kesemuanya itu akan sangat bergantung pada kemampuan komputer yang tentunya harus sesuai dengan jumlah program atau langkah yang diperlukan oleh algoritma, begitu juga dengan kompilator tersebut

Jumlah Memori Yang digunakan: banyaknya langkah yang digunakan dan jenis variabel data yang dipakai dalam suatu algoritma akan sangat mempengaruhi penggunaan memori. Dalm hal ini, diharapkan dapat memperkirakan seberapa banyak kebutuhan memori yang diperlukan selama proses berlangsung hingga proses selesai dikerjakan. Dengan demikian, dapat disiapkan storage yang memadai agar proses suatu algoritma berjalan tanpa ada hambatan atau kekurangan memori

d. Menguji program dari suatu algoritma: Yaitu dengan cara menyajikannya dalam salah satu bahasa pemrogramana, misalnya BASIC, PASCAL, FORTRAN, dBase, C++ atau yang lainnya. Dalam proses, uji program oleh komputer akan melalui beberapa tahap yaitu: 1. Fase Debugging, yaitu fase dari suatu proses program eksekusi yang akan melakukan

koreksi terhadap kesalahan program. Yang dimaksud disni adalah error atau salah dalam penulisan program baik logika maupun sintaksnya.

Page 10: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

5 | P a g e

2. Fase Profilling, yaitu fase yang akan bekerja jika program tersebut sudah benar atau telah melalui proses pada fase debugging. Fase ini bekerja untuk melihat dan mengukur waktu tempuh atau running time yang diperlukan serta jumlah memori/storage yang digunakan dalam menyelesaikan suatu algoritma

e. Menyatakan algoritma 1. Menyatakan Algoritma dengan Bahasa sehari hari

Contoh : untuk menghitung luas persegi panjang: a. Tentukan nilai panjang b. Tentukan nilai Lebar c. Hitung Luas persegi panjang dengan rumus = Panjang x Lebar d. Cetak luas Persegi panjang

2. Dengan Mengunakan diagram alur

Dalam algoritma pengunaan diagram alur berfungsi sebagai penggambaran alur suatu kegiatan yang digambarkan dengan sismbol symbol tertentu dimana setiap symbol memiliki tugas, fungsi dan makna dan tujuan tertentu. Contoh flowchart untuk menghitung luas persegi panjang. Ya Tidak

Mulai

Input Panjang

Input Lebar

Hitung Luas: PxL

Hitung

lagi?

Cetak Luas

Selesai

Page 11: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

6 | P a g e

Diagram alur atau flowchat merupakan menggambaran langkah langkah denga menggunakan symbol flowchart simol flowchart akan di bahas lebih detail pada bab 4 Diagram Alur

3. Dengan Statemen penggalan program C++

#include <stdio.h>

# include <conio.h>

#include <iostream.h>

Main()

{

int P, L, Luas;

clrscr;

cout<<"Program"<< endl;

cout<<"*menghitung L.persegi.P*"<<end1;

cout<<"\n nilai Panjang=";cin>>P;

cout<<"\n nilai Lebar=";cin>>L;

L=P*L;

cout<<"\n nilai Luas="<<L;

<getch();

}

Sifat-Sifat Algoritma 1. Banyaknya langkah instruksi harus berhingga: pelaksanaan sebuah algoritma yang

terprogram haruslah dapat diakhiri atau diselesaikan melalui sejumlah langkah operasional yang berhingga. Jika tidak demikian, kita tidak akan dapat mengharapkan bahwa pelaksaan algoritma tersebut dapat menghasilkan suatu solusi yang baik.

2. Langkah atau instruksi harus jelas: artinya bahwa penulisa setiap langkah yang terdapat didalam sebuah algoritma harus memiliki arti yang khusus atau spesifik sehingga dapat dibedakan antara penulisan langkah untuk komputer(program/pemrograman) dengan penulisan langkah bagi manusia(pesudocode). Manusia akan lebih mudah memahami algoritma yang terdiri atas simbol-simbol(Contoh: pembuatan algoritma dengan diagram alur/flowchart) sedangkan komputer hanya membutuhkan sebuah penulisan algoritma dengan kode-kode yang dituangkan dalam bahasa yang dimengerti oleh komputer itu sendiri(bahasa pemrograman).

3. Proses harus jelas dan mempunyai batasan: rangkaian suatu proses yang berisi langkah-

langkah instruksi dari suatu algoritma yang akan dilaksanakn harus ditetapkan dengna jelas, baik dan pasti sebab sebuah algoritma harus memiliki instruksi dasar tertentu dimana setiap instruksi harus memiliki unsur pelaksana yang berfungsi sebagai pemroses data yang akan dimasukkan dalam sebuah komputer. Dengan demikian, sebuah algoritma harus ditulis dengan jelas tentang batasa-batasan proses yang akan dilaksanakan oleh komputer.

4. Input dan Output harus mempunyai batasan: input merupakan data yang dimasukkan ke

dalam algoritma yang untuk kemudian akan dilaksanakan oleh komputer. Dengan begitu, input yang diberikan harus sesuai dengan jenis dari bahasa pemrograman yang digunakan, sedangkan ouput merupakan hasil yang diperoleh dari pekerjaan yang dilaksanakan komputer untuk kepentingan user yang merupakan pihak diluar komputer. Algoritma harus

Page 12: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

7 | P a g e

menghasilkan output karena merupaka solusi yang diharapkan dari suatu masalah yang timbul.

5. Efektifitas: instruksi yang diberikan pada komputer agar hanya menjalankan atau

melaksanakan proses yang mampu dilaksanakannya. Yang dimaksud mampu adalah bahwa suatu algoritma atau instruksi-instruksi dalam sebuah program hanya akan dapat dilaksanakan jika informasi yang diberikan oleh instruksi-instruksi tersebut lengkap, benar dan jelas.

6. Adanya Batasan Ruang Lingkup: Suatu Algoritma yang baik adalah algoritma yang hanya

ditujukan bagi suatu masalah tertentu saja untuk mrnyelesaikan hingga berakhir.

Latihan :

1. Jelaskan lankah langkah pengujian sebuah algoritna beserta contohnya?...

2. Buatlah algoritma pertukaran untuk mempertukarkan 2 jenis benda dan jelaskan dengan

sebuah contoh?...

Page 13: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

8 | P a g e

BAB 2

Struktur Data

A. Struktur Data Struktur data merupakan suatu bentuk pengelolaan mengenai data agar data dapat dipergunakan dan diolah secara lebih efisien dan efektif. Dalam beberapa bahasa pemrograman, istilah struktur data seringkali ditampilkan secaa fisik dalam bentuk tabel (biasanya pada bahasa pemrograman/pengelolaan database berbasis visual), namun pada beberapa bahasa pemrograman yang tidak berbasis visual, strutkur data lebih berupa pengelolaan data dengan aturan-aturan tertentu B. Tipe Data Tipe data adalah jenis data yang mempunyai batasan tempat dan karakteristik sesuai dengan interprestasi data dan dapat diolah oleh komputer untuk memenuhi kebutuhan dalam pemrograman komputer. Dalam setiap Bahasa pemrogaman mempunyai sekumpulan tipe data primitive atau disebut tipe data yang menjadi bawaan Bahasa tersebut (built in) dan ada juga yang menyediakan beberapa fasilitas untuk programmer agar dapat mendefinisikan tipe data baru. C. Tingkatan Spesifikasi Tipe data Dalam beberapa Bahasa pemrogaman memiliki dua tingkatan yaitu spesifikasi dan implementasi, elemen dasar spesifikasi tipe data adalah:

1. Atribut atribut yang membedakan objek data dengan tipe tersebut 2. Nilai nilai yang mungkin dimiliki oleh objek data dengan tipe data 3. Operasi operasi yang dimungkinkan untuk memanipulasi objek data dengan tipe tersebut

D. Elemen Spesifikasi Tipe data Sedangkan elemen dasar implementasi sebuah tipe data adalah:

1. Representasi penyimpanan yang digunakan untuk mewakili objek objek data dengan tipe tersebut pada penyimpanan computer selama program dijalankan

2. Alat dimana operasi yang di definisikan untuk tipe data itu direpresentasikan dengan algoritma algoritma dan prosedur prosedur yang memanipulasi representasi penyimapana yang dipilih untuk objek data tersebut

Setiap Bahasa pemrogaman memiliki tipe data elementernya seperti integer, bolean, char dan enumerasi (terbilang). Sedangkan objek data yang merupakan kumpulan dari objek objek data yang lain disebut objek data terstruktur atau struktur data. Strutur data juga dapat di definisikan suatu kumpulan objek objek data yang memiliki aturan kemudian digolongkan berdasarkan operasi untuk memanipulasikanya. Komponenya dapat berupa objek data elementer atau objek data terstruktur seperti array, record, list, stack, queue, tree, file berkas, set himpunan.

Page 14: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

9 | P a g e

E. Pembagian data

1. Tipe data sederhana: adalah tipe data yang sudah ada dan dijadikan standar dalam bahasa

pemrograman tertentu. Isi dari tipe data sederhana ini adalah data-data tunggal berikut

contoh tipedata sederhana dalam pemrogaman C++

Char : Digunakan untuk menampung data sebuah karakter. untuk menuliskan tipe char,

karakter perlu ditulis didalam tanda petik tunggal ( ‘ )

Contoh :

‘A’ � karakter berupa huruf A

‘1’ � karakter berupa angka 1

‘*’ � karakter simbol *

Integer : Tipe Integer (int) adalah tipe data yang nilainya tidak mempunyai

titik desimal, contoh: 1, 10, 15

Float : Tipe Float adalah bilangan yang mengandung pecahan desimal, misalnya: 3.65,

2.60240000E-6, dan lain-lain. Notasi E artinya perpangkatan sepuluh.2.60240000E-6 artinya

2.60240000E X 10-6

Tipe Data Tambahan, yang dimiliki oleh Borland C++, adalah : Unsigned digunakan bila data

yang digunakan hanya data yang positif saja.

Page 15: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

10 | P a g e

Ada juga tipedata yang disebut dengan bolean atau bool, Merupakan jenis Data yang hanya

memiliki 2nilai, yakni benar (true) dan salah (false) yang juga diwujudkan sebagai 1 dan 0.

Jenis Data tersebut terutama sekali dipakai untuk menunjukkan Kondisi yang memerlukan

keputusan untuk kelanjutan proses. Tipe Data tersebut dapat dimanfaatkan untuk mewakili

suatu obyek yang memiliki nilai binary. Penerapannya dengan menggunakan operator and,

or, dan not.

Implementasi tipe data bool dengan operator AND, OR atau NOT. 0 = False; 1 = True

Penggunaan AND #include<stdio.h> #include<conio.h> #include<iostream.h> main( ) { float a, b, c, d, e, f, g, h; clrscr( ); cout<<"Masukan Nilai A = "; cin>>a; cout<<"Masukan Nilai B = "; cin>>b; cout<<"Masukan Nilai C = "; cin>>c; // Proses d = a + 4 < 10; e = b > a + 5; f = c - 3 >= 4; g = d && e && f; cout<<endl<<endl; cout<<"Program Ekspresi AND"<<endl<<endl; cout<<"Hasil dari d = a + 4 < 10 adalah " <<d<<endl; cout<<"Hasil dari e = b > a + 5 adalah " <<e<<endl; cout<<"Hasil dari f = c - 3 >= 4 adalah " <<f; cout<<endl<<endl; cout<<"Hasil dari g = d && e && f adalah " <<g; cout<<endl; getch( ); }

Page 16: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

11 | P a g e

Penggunaan NOT #include <stdio.h> #include <conio.h> #include<iostream.h> main( ) { int a, b, c; clrscr( ); cout<<"Masukan Nilai A = "; cin>>a; /* Proses */ b = (a + 4 < 10); c = !(b); cout<<endl<<"Program Ekspresi NOT "<<endl; cout<<"Nilai A = "<<a<<endl; cout<<"Nilai b = (a + 4 < 10) = "<<b<<endl; cout<<"Nilai c = !(b) = "<<c; getch( ); } Penggunaan OR #include<stdio.h> #include<conio.h> #include<iostream.h> main() { float a, b, c, d, e, f, g, h; clrscr( ); cout<<"Masukan Nilai A = "; cin>>a; cout<<"Masukan Nilai B = "; cin>>b; cout<<"Masukan Nilai C = "; cin>>c; d = a + 5 > 10; e = b > 5 + a ; f = c - 4 <= 7; g = d || e || f; cout<<endl<<endl; cout<<"Program Ekspresi OR"<<endl<<endl; cout<<"Hasil dari d = a + 5 > 10 adalah " <<d<<endl; cout<<"Hasil dari e = b > 5 + a adalah " <<e<<endl; cout<<"Hasil dari f = c - 4 <= 7 adalah " <<f; cout<<endl<<endl; cout<<"Hasil dari g = d || e || f adalah " <<g; cout<<endl; getch( ); }

Page 17: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

12 | P a g e

2. Hanya sekedar contoh beberapa tipe data yang lain Tipe data Composite: Tipe Data Komposit merupakan tipe data yang dapat menampung banyak nilai, antara lain sebagai berikut.

a. Array Array atau sering disebut sebagai larik, adalah tipe data yang sudah terstruktur dengan baik, meskipun masih sederhana. Array mampu menyimpan sejumlah data dengan tipe yang sama (homogen) dalam sebuah variabel. Sebagai ilustrasi, array mampu menampung banyak data namun dengan satu tipe data yang sama, misalnya integer saja. Setiap lokasi data array diberi nomor indeks yang berfungsi sebagai alamat dari data tersebut. Contoh Sebuah larik A dengan delapan buah elemen, notasi penulisannya : A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8] Angka didalam tanda kurung siku menyatakan indeks larik.

b. Record atau struct Seperti halnya Array, Record atau Struct juga termasuk tipe data komposit. Record dikenal dalam bahasa Pascal/Delphi sedangkan Struct dikenal dalam bahasa C++. Berbeda dengan array, tipe data record mampu menampung banyak data dengan tipe data berbeda-beda (heterogen). Misalnya, satu bagian integer, satu bagian lagi character, dan bagian lainnya Boolean. Biasanya record digunakan untuk menampung data suatu obyek. Misalnya, siswa memiliki nama, alamat, usia, tempat lahir, dan tanggal lahir. Nama akan menggunakan tipe data string, alamat bertipe data string, usia bertipe data single (numeric), tempat lahir bertipe data string, dan tanggal lahir bertipe data date. Berikut ini contoh pengunaan record dalam Delphi. bermanfaat untuk mengelompokkan sejumlah data dengan tipe data yang berlainan. Contoh : struct data_pegawai { int nip; char nama[25]; char alamat[40]; }

c. Image Image, atau gambar, atau citra, merupakan tipe data grafik. Misalnya grafik perkembangan jumlah siswa SMK, foto keluarga kita, video perjalanan, dan lain-lain. Pada bahasa-bahasa pemrograman modern terutama yang berbasis visual, tipe data ini telah didukung dengan sangat baik.

d. Date Time Nilai data untuk tanggal (date) dan waktu (time) secara internal disimpan dalam format yang spesifik. Variabel atau konstanta yang dideklarasikan dengan tipe data Date dapat digunakan untuk menyimpan, baik tanggal maupun jam. Tipe data ini masuk dalam kelompok tipe data composite, karena merupakan bentukan dari beberapa tipe data.

Page 18: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

13 | P a g e

e. Object Tipe data object digunakan untuk menyimpan nilai yang berhubungan dengan obyek-obyek yang disediakan oleh Visual Basic, Delphi, dan bahasa pemrograman lain yang berbasis GUI. Sebagai contoh, apabila mempunyai form yang memiliki control Command button, yang kita beri nama Command1.

f. Subrange Tipe data subrange merupakan tipe data bilangan yang mempunyai jangkauan nilai tertentu sesuai dengan yang ditetapkan programmer. Biasanya, tipe data ini mempunyai nilai batas minimum dan nilai batas maksimum. Tipe data ini didukung dengan sangat baik dalam Delphi.

g. Enumerasi Tipe data ini merupakan tipe data yang mempunyai elemen-elemen yang harus disebut satu persatu, dan bernilai konstanta integer sesuai dengan urutannya. Nilai konstanta integer elemen ini diwakili oleh suatu nama variable yang ditulis di dalam kurung. Tipe data ini juga dijumpai pada Delphi, dan bahasa pemrograman deklaratif seperti SQL.

3. Tipe Data Terstruktur A. Tipe Data String

Merupakan suatu data yang menyimpan array (larik), sebagai contoh 'ABCDEF' merupakan sebuah konstanta string yang berisikan 6 byte karakter. Ukuran Tempat untuk tipe data ini adalah 2 s/d 256 byte, dengan jumlah elemen 1 s/d 255.

B. Tipe Data Set Sebuah set merupakan suatu himpunan yang berisi nilai (anggota). Set merupakan Tipe data yang khusus untuk Pascal. Set dalam pemrograman sangat mirip dengan himpunan dalam ilmu matematika.

F. Variabel

Fungsi 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 Dalam pemberian nama variabel, mempunyai ketentuan-ketentuan antara lain :

1. Tidak boleh ada spasi ( contoh : gaji bersih ) dan dapat menggunakan tanda garis bawah ( _ ) sebagai penghubung (contoh : gaji_bersih).

2. Tidak boleh diawali oleh angka dan menggunakan operator aritmatika.

Variabel, dibagi menjadi dua jenis kelompok, yaitu : a. Variabel Numerik : Variabel numerik ini dibagi menjadi menjadi 3 (tiga) macam :

1. Bilangan Bulat atau Integer 2. Bilangan Desimal Berpresisi Tunggal atau Floating Point. 3. Bilangan Desimal Berpresisi Ganda atau Double Precision.

Page 19: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

14 | P a g e

b. Variabel Text 1. Character ( Karakter Tunggal ) 2. String ( Untuk Rangkaian Karakter )

Deklarasi Variabel Adalah proses memperkenalkan variabel kepada Borland C++ dan pendeklarasian tersebut bersifat mutlak karena jikatidak diperkenalkan terlebih dahulu maka Borland C++ tidak menerima variabel tersebut. Deklarasi Variabel ini meliputi tipe variabel, seperti integer atau character dan nama variabel itu sendiri. Setiap kali pendeklarasian variabel harus diakhiri oleh tanda titik koma ( ;).

Contoh : int Panjang, Lebar;

Merupakan variabel

Merupakan tipe data mengunakan tipedata “integer”

char nama_mahasiswa[20];

Merupakan variabel

Merupakan tipe data mengunakan tipedata “Char”

G. Konstanta Konstanta : Sebuah variabel dengan tipe data tertentu dan memiliki nilai data yang akan selalu tetap di dalam program. Secara garis besar konstanta dapat dibagi menjadi dua bagian, yaitu:

1. Konstanta Bilangan konstanta bilangan dibagi menjadi tiga kelompok, antara lain: a. Konstanta Bilangan Bulat (Integer). Adalah bilangan yang tidak mengandung nilai

desimal. Ini merupakan nilai default pada konstanta bilangan. Contoh : 1, 2, 3, 100 b. Konstanta Desimal Berpresisi Tunggal ( Floating Point) Konstanta Floating Point,

mempunyai bentuk penulisan, yaitu : - Bentuk Desimal ( contoh : 5.57 ) - Bentuk Eksponensial / Bilangan Berpangkat ( contoh : 4.22e3�4.22 x 103)s

Page 20: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

15 | P a g e

c. Konstanta Desimal Berpresisi Ganda ( Double Precision) Konstanta Double Precision, pada prinsipnya sama seperti Konstanta Floating Point, tetapi Konstanta Double Precision mempunyai daya tampung data lebih besar.

2. Konstanta Teks Konstanta Teks dibagi menjadi dua kelompok, antara lain; a. Data Karakter (Character). Data karakter hanya terdiri dari sebuah karakter saja yang

diapit oleh tanda kutip tunggal ( ‘ ). Data karakter dapat berbentuk abjad ( huruf besar atau kecil ), angka, notasi atau simbol. Contoh : ‘Y’ ‘y’ ‘9’ ‘&’ dan lain-lain.

b. Data Teks (String). Data String merupakan rangkaian dari beberapa karakter yang diapit oleh tanda kutip ganda ( “ ). Contoh : “Virusland”, “Jakarta”, “AMIK BSI”, “Y” dan lain-lain.

Bentuk deklarasi konstanta diawali dengan reserved word const. Contoh : float phi;

const phi=3.14;

H. Operator Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program, yang digunakan untuk melakukan sesuatu operasi atau manipulasi, seperti penjumlahan, pengurangan dan lain-lain. Operator mempunyai sifat sebagai berikut:

1. Unary : Sifat Unary pada operator adalah hanya melibatkan sebuah operand pada suatu operasi aritmatik Contoh : -5

2. Binary : Sifat Binary pada operator adalah melibatkan dua buah operand pada suatu operasi aritmatik Contoh : 4 + 8

3. Ternary : Sifat Tenary pada operator adalah melibatkan tiga buah operand pada suatu operasi aritmatik Contoh : (10 % 3) + 4 + 2

Operator Aritmatika : Operator untuk operasi aritmatika yang tergolong sebagai operator binary

Operator yang tergolong sebagai operator Unary, adalah

Hierarki Operator Aritmatika. Didalam suatu ekspresi aritmatika, selalu menjumpai beberapa operator aritmatika yang berbeda yang dapat digunakan secara bersamaan. Urutan operator aritmatika sebagai berikut :

Page 21: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

16 | P a g e

Contoh Penggunaan Operator dalam C++

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

main( )

{

int a, b;

clrscr( );

a = 8 + 2 * 3 / 6;

b = (8 + 2) * 3 / 6;

cout<<" A = 8 + 2 * 3 / 6"<<endl;

cout<<" B = (8 + 2) * 3 /6"<<endl;

cout<<endl;

cout<<" Hasil dari A = "<<a<<endl;

printf(" Hasil dari B = %i ",b);

getch( );

}

Operator penambahan dan pengurangan A = A + 1 atau A = A - 1;disederhanakan menjadi A ++ atau A--Operator “ ++ “ atau “ -- “ dapat diletakan didepan atau di belakang variabel. Keterangan :

1. Penambahan: menambahkan 1 ke nilai variable, prefix (++A)atau postfix (A ++) 2. Pengurangan: mengurangkan 1 ke nilai variabel, prefix (--A) atau postfix (A --)

Kedua bentuk penulisan operator ini mempunyai arti yang berbeda.

a. Jika diletakan didepan variabel, maka proses penambahan atau pengurangan akan dilakukan sesaat sebelum atau langsung pada saat menjumpai ekspresi ini, sehingga nilai variabel tadi akan langsung berubah begitu ekspresi ini ditemukan, sedangkan

b. Jika diletakan dibelakang variabel, maka proses penambahan atau pengurangan akan dilakukan setelah ekspresi ini dijumpai atau nilai variabel akan tetap pada saat ekspresi ini ditemukan.

Page 22: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

17 | P a g e

Pengunaan notasi di depan variabel #include <stdio.h> #include <conio.h> main( ) { int a = 10, b = 5; clrscr( ); printf("Nilai A = %d", a); printf("\nNilai ++A = %d", ++a); printf("\nNilai B = %d", b); printf("\nNilai --B = %d", --b); getch( ); } Hasilnya: NIlai A = 10 Nilai ++A = 11 Nilai B = 5 Nilai –B = 4 Pengunaan notasi di belakang variabel #include<stdio.h> #include<conio.h> #include<iostream.h> main( ) { int a = 10, b = 5; clrscr( ); printf("Nilai A = %d", a); printf("\nNilai ++A = %d", a++); printf("\nNilai A = %d", a); printf("\nNilai B = %d", b); printf("\nNilai --B = %d", b--); printf("\nNilai B = %d", b); getch( ); }

Hasilnya: NIlai A = 10 Nilai ++A = 11 NIlai A = 11 Nilai B = 5 Nilai - -B = 5 Nilai B = 4 Operator relasi

Page 23: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

18 | P a g e

Operator Relasi digunakan untuk membandingkan dua buah nilai. Hasil perbandingan operator ini menghasilkan nilai numerik 1 (True) atau 0 (False).

#include <stdio.h> #include <conio.h> #include <iostream.h> main( ) { float a, b, c, d, e, f, x, y; clrscr( ); cout<<"Masukan Nilai X = "; cin>>x; cout<<"Masukan Nilai Y = "; cin>>y; a = x = = y; b = x != y; c = x > y; d = x < y; e = x >= y; f = x <= y; cout<<endl; cout<<"Hasil dari "<<x<<" == "<<y<<" = "<<a<<endl; cout<<"Hasil dari "<<x<<" != "<<y<<" = "<<b<<endl; cout<<"Hasil dari "<<x<<" > "<<y<<" = "<<c<<endl; cout<<"Hasil dari "<<x<<" < "<<y<<" = "<<d<<endl; cout<<"Hasil dari "<<x<<" >= "<<y<<" = "<<e<<endl; cout<<"Hasil dari "<<x<<" <= "<<y<<" = "<<f<<endl; getch( ); } Operator Bitwise Operator ini digunakan untuk memanipulasi data dalam bentuk bit. Borland C++ menyediakan enam buah operator bitwise.

Page 24: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

19 | P a g e

BAB 3

Diagram Alur

Diagram alur atau flowchart merupakan pengambaran dari algoritma yang berupa bentuk sisbol symbol yang mererasikan dari setiap langkah langkah. Dalam penggambaran diagram alur terdapat symbol symbol yang memiliki kegunaan masing masing. Flowchart diawali dengan penerimaan input, pemrosesan input, dan diakhiri dengan penampilan output. Diagram Alur untuk Program Komputer Pada dasarnya suatu program computer umumnya terdiri atas :

1. Pembacaan / pemasukan data ke dalam computer 2. Melakukan komputasi/perhitungan terhadap data tersebut 3. Mengeluarkan / mencetak/ menampilkan hasilnya.

Simbol diagram ALur

Simbol keterangan

Simbol proses yang di gunakan untuk memproses berupa himpunan penugasan yang di gunakan secara berurutan

Input / Output data yg akan dibaca & dimasukan ke dalam memori komputer dari suatu alat input

Decision (kotak keputusan) berfungsi utk memutuskan arah/ percabangan yg diambil sesuai dgn kondisi yg dipenuhi, yaitu Benar/Salah

Flowline, menunjukkan bagian arah instruksi dijalankan

Subroutine digunakan untuk menjalankan proses suatu bagian (sub program) atau prosedur.

Connector/penghubung, digunakan untuk menghubungkan diagram alur yang terputus dimana bagian tersebut masih berada pada halaman yang sama

Preparation digunakan untuk pemberian harga awal

Terminal, berfungsi sebagai awal (berisi ‘Start’) sebagai akhir (berisi ‘End’) dari suatu proses alur.

Page 25: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

20 | P a g e

On page Connector, Untuk menghubungkan sambungan dari bagian flowchart yang terputus dimana sambungannya berada pada halaman lain.

Pedoman-Pedoman dalam Membuat Diagram Alir (Flowchart) Bila seorang analis dan programmer akan membuat flowchart, ada beberapa petunjuk yang harus diperhatikan, seperti :

1. Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan. 2. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harus dapat

dimengerti oleh pembacanya. 3. Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas. 4. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi kata kerja

misalkan 5. Setiap langkah dari aktivitas harus berada pada urutan yang benar. 6. Lingkup dan range dari aktifitas yang sedang digambarkan harus ditelusuri dengan hati-hati.

Percabangan-percabangan yang memotong aktivitas yang sedang digambarkan tidak perlu digambarkan pada flowchart yang sama. Simbol konektor harus digunakan dan percabangannya diletakan pada halaman yang terpisah atau hilangkan seluruhnya bila percabangannya tidak berkaitan dengan sistem.

7. Gunakan simbol-simbol flowchart yang standar

Ada beberapa jenis flowchart diantaranya:

1. Bagan alir sistem (systems flowchart). 2. Bagan alir dokumen (document flowchart). 3. Bagan alir skematik (schematic flowchart). 4. Bagan alir program (program flowchart). 5. Bagan alir proses (process flowchart).

System Flowchart

System flowchart dapat didefinisikan sebagai bagan yang menunjukkan arus pekerjaan secara keseluruhan dari sistem. Bagan ini menjelaskan urut-urutan dari prosedur-prosedur yang ada di dalam sistem. Bagan alir sistem menunjukkan apa yang dikerjakan di sistem.

Document Flowchart

Bagan alir dokumen (document flowchart) atau disebut juga bagan alir formulir (form flowchart) atau paperwork flowchart merupakan bagan alir yang menunjukkan arus dari laporan dan formulir termasuk tembusan-tembusannya.

Schematic Flowchart

Page 26: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

21 | P a g e

Bagan alir skematik (schematic flowchart) merupakan bagan alir yang mirip dengan bagan alir sistem, yaitu untuk menggambarkan prosedur di dalam sistem. Perbedaannya adalah, bagan alir skematik selain menggunakan simbol-simbol bagan alir sistem, juga menggunakan gambar-gambar komputer dan peralatan lainnya yang digunakan. Maksud penggunaan gambar-gambar ini adalah untuk memudahkan komunikasi kepada orang yang kurang paham dengan simbol-simbol bagan alir. Penggunaan gambar-gambar ini memudahkan untuk dipahami, tetapi sulit dan lama menggambarnya.

Program Flowchart

Bagan alir program (program flowchart) merupakan bagan yang menjelaskan secara rinci langkah-langkah dari proses program. Bagan alir program dibuat dari derivikasi bagan alir sistem. Bagan alir program dapat terdiri dari dua macam, yaitu bagan alir logika program (program logic flowchart) dan bagan alir program komputer terinci (detailed computer program flowchart). Bagan alir logika program digunakan untuk menggambarkan tiap-tiap langkah di dalam program komputer secara logika. Bagan alat- logika program ini dipersiapkan oleh analis sistem. Gambar berikut menunjukkan bagan alir logika program. Bagan alir program komputer terinci (detailed computer program flow-chart) digunakan untuk menggambarkan instruksi-instruksi program komputer secara terinci. Bagan alir ini dipersiapkan oleh pemrogram.

Process Flowchart

Bagan alir proses (process flowchart) merupakan bagan alir yang banyak digunakan di teknik industri. Bagan alir ini juga berguna bagi analis sistem untuk menggambarkan proses dalam suatu prosedur. Struktur Flowchart

1. Sederhana Struktur sederhana merupakan Diagram yang alurnya mengalir secara berurutan dari atas ke bawah atau dengan kata lain tidak adanya percabangan atau pengulangan. Missal menghitung luas persegi panjang

Page 27: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

22 | P a g e

BAB 4 Percabangan

Percabangan Struktur percabangan merupakan struktur Diagram flowchart yang alurnya terjadi/terdapat alih kontrol berupa percabangan. Flowchart dengan stuktur percabangan digunakan untuk meyeleksi kondisi dan menentukan pilihan proses selanjutnya.

Percabangan if Percabangan if juga digunakan untuk memecahkan masalah untuk pengambilan keputusan di antara banyaknya pernyataan yang ada, bentuk dari struktur percabangan if yaitu pernyataan if, if-else, nested if dan if-else majemuk

a. Percabangan if Bentuk penulisan : if (kondisi) { ...pernyataan; }

Page 28: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

23 | P a g e

b. Percabangan if - else Pergertian dari pernyataan if-else adalah jika kondisi bernilai benar maka pernyataan-1 akan dikerjakan dan jika kondisi bernilai salah maka pernyataan-2 akan dikerjakan. Bentuk penulisan :

if (kondisi)

{

...pernyataan-1;

}

else

{

...pernyataan-2;

}

c. Nested if

Pergertian dari pernyataan nested if adalah pernyataan if berada di dalam pernyataan if yang lainnya. Bentuk penulisan :

if (syarat)

{

Page 29: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

24 | P a g e

if (syarat)

...perintah;

else

...perintah

}

else

{

if (syarat)

...perintah;

else

...perintah;

}

If majemuk Pernyataan if-else majemuk sebenarnya serupa dengan nested if hanya saja penulisannya yang lebih sederhana. Bentuk penulisan :

if (syarat)

{

...perintah;

...perintah;

}

else if (syarat)

{

...perintah;

...perintah;

}

else

{

...perintah;

...perintah;

}

switch - case Bentuk dari switch - case merupakan pernyataan yang dirancangan khusus untuk menangani pengambilan keputusan yang melibatkan sejumlah atau banyak alternatif penyelesaian. Pernyataan switch - caseini memiliki kegunaan sama seperti if – else bertingkat, tetapi penggunaannya untuk memeriksa data yang bertipe karakteratau integer. Bentuk penulisan perintah ini sebagai berikut:

Switch (ekspresi ionteger atau karakter)

{

Case Konstanta -1:

Page 30: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

25 | P a g e

…… Perintah ;

…… Perintah ;

Break;

Case Konstanta -2:

…… Perintah ;

…… Perintah ;

Break;

Default:

…… Perintah ;

…… Perintah ;

}

Setiap pilihan akan dijalankan jika syarat nilai konstanta tersebut dipenuhi dan defaultakan dijalankan jika semua cabang diatasnya tidak terpenuhi. Pernyataan break menunjukan bahwa perintah siap keluar dari switch. Jika pernyataan ini tidak ada, maka program akan diteruskan ke pilihan-pilihan yang lainnya

BAB 5

Perulangan (Looping)

Perulangan adala suatu kegiatan melakukan kegiatan yang serupa secara ber ulang ulang sebanyak beberapakali sesuai dengan perin tah yang harus di kerjakan. Secara umum terdiri dari dua bagian, yaitu:

1. Kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan.

2. Badan (body) pengulangan, yaitu bagian algoritma yang diulang. Dua bagian yang ada pada struktur pengulangan, adalah:

- Inisialisasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama kali. - Terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan.

Missal: mesin foto copy akan melakukan pencetakan sebanyak li buah maka mesin tersebut tidak akan berhenti sebelum mencetak lima lembar Contoh beberapa penggunaan perulangan :

a. Penggunaan For Penggunaan for terbagi atas dua yaitu secara menaik dapat dikatakan bertmbah dan secara menurun dapat dikatakan berkurang

Page 31: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

26 | P a g e

Pendeklarasian for : For (inisialisasi; syarat pengulangan; pengubah nilai pecahan)

{

Pernyataan/perintah;

Pernyataan/perintah;

}

Atau dapat juga seperti ini: for(a = 1; a <= 10; ++a) {

Pernyataan/perintah;

Pernyataan/perintah;

}

Kegunaan dari masing-masing argumen for diatas adalah : • Inisialisasi: merupakan bagian untuk memberikan nilai awal untuk variabelvariabel tertentu. • Syarat Pengulangan: memegang kontrol terhadap pengulangan, karena bagian ini yang akan menentukan suatu perulangan diteruskan atau dihentikan. • Pengubah Nilai Pencacah:mengatur kenaikan atau penurunan nilai pencacah. #include<stdio.h>

#include<conio.h>

#include<iostream.h>

main( )

{

int a;

clrscr( );

for(a = 1; a <= 10; ++a)

cout<<a;

getch( );

}

output

For menurun Seperti dijelaskan diatas for menurun berarti for yang nilainya berumah menjadi nilai terkecil sesuai dengan kondisi perintah yang dilakukan. Pendeklarasian for menurun :

Page 32: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

27 | P a g e

For (inisialisasi; syarat pengulangan; pengubah nilai pecahan)

{

Pernyataan/perintah;

Pernyataan/perintah;

}

Atau dapat juga seperti ini: for(a = 10; a >= 1; --a) {

Pernyataan/perintah;

Pernyataan/perintah;

}

Penggalan program for menurun: # include <stdio.h>

# include <conio.h>

#include<iostream.h>

main( )

{

int a;

clrscr( );

for(a = 10; a >= 1; --a)

cout<<a;

getch( );

}

output

Nested for Nested for merupakan for didalam for biasa disebut dengan istilah for bersarang. Pendeklarasianya sebagai berikut: for( inisialisasi; syarat pengulangan; pengubah nilaipencacah ) { pernyataan / perintah; } Atau sebagai berikut for(a = 1; a <= 5; a++) { pernyataan / perintah; } #include<stdio.h>

Page 33: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

28 | P a g e

#include<conio.h> main( ) { int a, b; clrscr( ); for(a = 1; a <= 5; a++) { printf("\n"); for(b = a; b <= 5; b++) printf(" %d ",a); } getch(); } output

C. while Bentuk perulangan while dikendalikan oleh syarat tertentu, yaitu perulangan akan terus dilaksanakan selama syarat tersebut terpenuhi. Pendeklarasian while sebagai berikut:

while ( syarat )

{

Pernyataan / perintah ;

Pernyataan / perintah ;

}

Satu hal kunci yang membedakan struktur WHILE dengan FOR, adalah di dalam perulangan FOR kondisi akhir perulangan harus sudah diketahui pada awal program. Namun dalam perulangan WHILE, kita bisa membuat perulangan yang nilai akhir atau kondisinya belum diketahui pada saat perulangan dimulai

#include <stdio.h>

#include <conio.h>

main( )

{

int bil=2;

clrscr( );

Page 34: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

29 | P a g e

while(bil<=10)

{

printf(" %d ",bil);

bil+=2;

}

getch( );

}

Do while Pernyataan perulangan do - while merupakan bentuk perulangan yang melaksanakan perulangan terlebih dahulu dan pengujian perulangan dilakukan dibelakang

do

{

Pernyataan / perintah ;

Pernyataan / perintah ;

}

while ( syarat );

contoh program #include <stdio.h>

#include <conio.h>

main( )

{

int bil=2;

clrscr( );

do

{

printf(" %d ",bil);

bil+=2;

}

while(bil<=10);

getch( );

}

D. Break

Page 35: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

30 | P a g e

Pernyataan break telah dibahas pada pernyataan pengambilan keputusan switch. Pernyataan break ini berfungsi untuk keluar dari struktur switch. Selain itu pernyataan breakberfungsi keluar dari perulangan ( for, while dan do-while). Jika pernyataan break dikerjakan, maka eksekusi akan dilanjutkan ke pern yataan yang terletak sesudah akhir dari badan perulangan ( loop ) #include <stdio.h>

#include <conio.h>

main( )

{

int bil = 1;

clrscr( );

do

{

if (bil >= 6)

break;

printf(" %d ",bil);

}

while(bil++);

getch( );

}

BAB 6

Rekursif

Rekursif adalah suatu proses yang bisa memanggil dirinya sendiri. Secara tidak sadar dalam kehidupan sehari hari kita selalu mengunakan rekursif baik secara tidak sadar atau pun secara sadar, pemangilan yang kita lakukan misalnya saat kita bercermin (kita

akan memangil diri kita sendiri), atau saat kita meotong sebuah roti hingga porongan terakhir (kita akan memangil potongan yang sama hingga roti tidak dapat di potong kembali) dan lain lain contoh rekursif yang kita lakukan dalam kehidupan sehari hari tanpa kita sadari.

Page 36: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

31 | P a g e

A. Deret fibonancy Penemu bilangan Fibonacci adalah Leonardo da Pisa atau Leonardo Pisano (1175-1250). Beliau adalah seorang matematikawan Italia, yang juga dikenal sebagai Fibonacci yang juga memiliki peran dalam mengenalkan sistem penulisan dan perhitungan bilangan Arab ke dunia Eropa. Leonardo adalah orang yang memperkenalkan deret. Setelah meninggal, ia sering disebut sebagai Fibonacci (dari kata filius Bonacci, anak dari Bonacci). Ayahnya bernama William atau dikenal sebagai Bonacci. Untuk itu Leonardo memiliki julukan Fibonacci yang berasal dari kata Filius Bonacci yang artinya anak dari Bonacci

Deret Fibonaccy adalah deret dimana nilai suku ke n merupakan jumlah nilai suku ke n-1 dan suku ke n-2. Untuk suku n > 2, Suku pertama (n=1) nilainya adalah 1, dan suku ke dua (n=2) nilainya = 1 Hasil deret fibonaccy adalah sebagai berikut: Deret Fibonaccy : 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)

#include <iostream.h>

int suku, a, b, c;

int main()

{

cout<<"Membuat Deret Fibonacci\n";

cout<<"Masukkan nilai suku ke-: ";cin>>suku;

cout<<"Bilangannya adalah: \n";

a=0;b=1;

cout<<a<<endl<<b<<endl;

for(int i=3; i<=suku; i++)

{

c = a + b;

a = b;

b = c;

cout<<c<<endl;

}

return 0;

}

B. Menara Hanoi

Page 37: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

32 | P a g e

0 A (asal) B (Bantu) C (Tujuan) 1 A (asal) B (Bantu) C (Tujuan) 2 A (asal) B (Bantu) C (Tujuan) 3 A (asal) B (Bantu) C (Tujuan) 4 A (asal) B (Bantu) C (Tujuan)

Page 38: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

33 | P a g e

5 A (asal) B (Bantu) C (Tujuan) 6 A (asal) B (Bantu) C (Tujuan) 7 A (asal) B (Bantu) C (Tujuan) Dari contoh diatas dapat diambil kesimpulan , untuk memindahkan N piringan dari tonggak asal (A) ke tonggak tujuan (C) maka piringan ke N harus berada di tonggak tujuan (C) , sedangkan piringan ke 1 sampai (N - 1) harus berada di tonggak bantu (B). Setelah piringan ke 1 sampai (N-1) berada pada tonggak bantu (B) , kemudian pindahkan piringan ke 1 sampai (n-1) tersebut dari tonggak bantu (B) ke tonggak tujuan (C) Nah bagaimana caranya membawa piringan ke 1 sampai (N-1) dari tonggak asal ke tonggak bantu (B) , caranya sama saja yaitu dengan memindahkan piringan ke (n-1) dari tonggak asal (A) ke tonggak tujuan yang pada saat ini berada pada tonggak (B) sedangkan piringan dari 1 sampai ke (N-2) dipindahkan ke tonggak bantu yang saat ini berada di tonggak (C) , Setelah piringan ke 1 sampai (N-2) berada pada tonggak bantu (C) , kemudian pindahkan piringan ke 1 sampai (N-2) ke tonggak tujuan (B) dan seterusnya.Metode penyelesaian permainan Hanoi diatas sering disebut sebagai metode back tracking , jadi solusi dicari dengan cara mundur ke belakang dahulu , baru kemudian solusi bisa di temukan . Permasalahannya bagai mana jika terdapat lebih dari 3 piringan cakram:

1. Berapa langkah minimal yang diperlukan untuk memindahkan 2, 3, 4, 5 atau 6 cakram dari tiang

awal ke tiang lainnya ? ( cakram yang kecil selalu berada di atas )

2. Dengan menentukan pola permasalahan di atas, tentukan rumus untuk menentukan banyak

langkah minimal untuk menyusun n lempengan.

Tabel hasil:

Page 39: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

34 | P a g e

Banyak cakram

(n)

Banyak

perpindahan

minimal(L)

Dugaan pola

1 L1=1 2-1= 2 1 -1

2 L2=3 4-1= 2 2 -1

3 L3=7 8-1= 2 3 -1

4 L4=15 16-1= 2 4 -1

5 L5=31 32-1= 2 5 -1

.

.

.

.

.

.

.

.

.

n

2 n -1

#include <stdio.h>

#include <conio.h>

void hanoi(int piringan, char dari, char bantu, char ke)

{

if(piringan>0)

{

hanoi(piringan-1, dari, ke, bantu);

printf("Pindahkan piringan %d dari %c ke %c\n",piringan, dari,

ke);

hanoi(piringan-1, bantu, dari, ke);

}

}

void main()

{

int piringan;

printf("Berapa banyak piringan ? ");scanf("%d", &piringan);

printf("\n");

hanoi(piringan, 'A', 'B', 'C');

getch();

Catatan:

Tidak boleh meletakan piringan yang lebih kecil di bawah piringan yang lebih besar

Page 40: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

35 | P a g e

}

BAB 7

ARRAY

Array Array atau larik dalam bahasa indonesia ada juga yang menyebut matriks merupakan sekumpulan variable yang memiliki nama sama tapi nama tersebut dibedakan oleh suatu indeks. bukanlah tipe data dasar seperti integer atau boolen, Menggunakan array akan memudahkan dalam membuat kelompok data, serta menghemat penulisan dan penggunaan variabel. Merupakan alokasi memori statis. mengalokasikan memori untuk tipe data yang sama secara berurutan. berisi beberapa nilai jenis yang sama. Hal ini juga menyimpan nilai-nilai dalam memori pada ukuran tetap. Array juga merupakan struktur data yang statis yang mempunyai 1 nama tetapi memiliki banyak tempat. Setiap tempat harus dibedakan, untuk membedakannya dibutuhkan penunjuk, pentunjuk dapat berupa karakter(char) atau integer. Sekali disimpan dalam penunjuk yang sama(berbentuk indeks), maka isinya tidak akan hilang kecuali indeksnya diisi oleh nilai yang lain, dengan kata lain kita dapat menempatkan 5 nilai yang bertype int tanpa harus mendeklarasikan 5 variabel yang berbeda

Page 41: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

36 | P a g e

untuk masing-masing nilai. Sebagai gantinya kita dapat menggunakan array untuk menyimpan kelima nilai tersebut Karaktersitik Array : 1. mempunyai batasan dari pemesanan alokasi memory (bersifat statis) 2. mempunyai type data sama (homogen) 3. dapat di akses secara acak. 4. berurutan (terstruktur) Array dideklarasikan dengan tanda [ ] (bracket), baik dalam bahasa C++ dan Java. Tanda [ ] disebut juga “elemen yang ke- ...“. Misalnya kondisi[0] berarti array kondisi elemen yang ke nol. Bentuk umum dari tipe data array adalah:

Contoh:

tipe_data nama_array[jumlah_elemen]

A[1], A[2], A[3], A[4], A[5], A[6] untuk mengisi elemen array misal A[1]:=1;.Sifat Array Array merupakan struktur data yang statis, yaitu jumlah elemen yang ada harus ditentukan terlebih dahulu dan tak bisa di ubah saat program berjalan Untuk memasukkan data ke dalam array, sintak yang digunakan adalah : Memasukan Nilai ke Array Untuk memasukan nilai kedalam elemen array, dengan cara menyebutkan index untuk elemen array tersebut. Index dimulai dari index ke 0, bukan dari index ke 1.

a[nomor_elemen] = data;

a[0] = 5;

Page 42: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

37 | P a g e

a[1] = 6;

a[2] = 7;

dan seterusnya.

Pada C/C++, array merupakan pointer Yang mempunyai alokasi memori tetap (pointer constant). Akses elemen suatu berarti: array bersifat random, artinya dapat dimulai dari mana saja dan tidak harus dari elemen pertamanya. Elemen-elemen array tersusun secara berderet dan dapat diakses secara random di dalam memori Keuntungan

1. penggunaan array sebagai tipe data dibandingkan dengan penggunaan tipe data yang lain adalah kemampuannya yang dapat mengumpulkan beberapa data yang bertipe sama dalam satu variabel, sehingga dalam pembuatan program yang terdiri dari beberapa tipe yang sama, tidak membutuhkan banyak variabel.

Kelemahan array adalah sebagai berikut: Array mempunyai fleksibilitas rendah, karena array mempunyai batasan sebagai berikut:

1. Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain

2. Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus

Variable array terdiri dari:

1. Array Berdimensi 1 2. Array Berdimensi 2

Pendeklarasian aray dimensi Satu Untuk memasukan nilai kedalam elemen array, dengan cara menyebutkan index untuk elemen array tersebut. Index dimulai dari index ke 0, bukan dari index ke 1.

A[nomor_elemen] = data;

#include <iostream.h>

#include <conio.h>

void main()

{

clrscr ();

int A[5];

int i;

for(i=0;i<5 br="" i=""> {

cout<<"Masukkan Data "<>A[i];

}

Page 43: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

38 | P a g e

for(i=0;i<5 br="" i="">{

cout< "<} getch () ;

}

Mengakses elemen array dengan linear search Pada araay 1 dimensi untuk mengakses aray harus terdefinisi terlebih dahulu sebelum aksi pengaksesan dilaksanakan. Elemen array yang tersusun secara berurutan mulai dari elemen pertama hingga elemen terakhir. Missal ada sebuah aray A dengan indek = [55,10,12,8,0,9,124,25,70,30] untuk mengakase aray tersebut dengan sistem linear search mencari mulai dari data awal hingga data akhir, missal yang di cari adalah angka 9 maka di a akan mencari mulai dari data pertama hingga data berikutnya sehingga di padat kan bahwa data 9 berada pada array ke 5 #include <iostream.h>

#include <conio.h>

int linear_search(int [], int, int);

main()

{

clrscr();

const int array_size=10;

int array[array_size]={55,10,12,8,0,9,124,25,70,30};

cout<<"============== Linear Search ==========================="<<endl;

cout<<"========================================================"<<endl;

gotoxy(1,24);

cout<<"========================================================";

gotoxy(1,5);

cout<<" Isi dari array adalah : "<<endl;

cout<<"\n Array : "<<"\t\t Data : "<<endl;

for(int count=0; count < array_size; count++)

{

cout<<"\t"<<" array ["<<count<<"]"<<"\t\t";

cout<<array[count]<<endl; }

int searching_element=0;

int flag=0;

cout<<"\n\n Masukan data yang Anda cari : ";

cin>>searching_element;

flag=linear_search(array,array_size,searching_element);

Page 44: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

39 | P a g e

if (flag != -1)

cout<<"\n Data tersebut ditemukan pada posisi : array ["<<flag<<"]";

else

cout<<"\n Data tersebut tidak ditemukan ";

getch();

return 0;

}

/********** Definisi Fungsi ******************/

int linear_search(int array[], int array_size, int element)

{

int flag=1;

for (int count=0; count<array_size; count++)

{

if (element == array[count])

{

flag=count; break; }

}

return flag;

}

Array Berdimensi Satu Elemen-elemen array dapat diakses oleh program menggunakan suatu indeks tertentu. Pengaksesan elemen array dapat dilakukan berurutan atau random berdasarkan indeks tertentu secara langsung. Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai atau menampilkan nilai pada indeks yang dimaksud. Array satu dimensi juga disebut array dimensi satu atau biasa juga disebut Vektor karena hanya memiliki satu arah /* ---------------------------------- */

/* Inisialisasi Array Dimensi 1 */

/* ---------------------------------- */

#include <conio.h>

#include <iostream.h>

main( )

{

char hari[7][10] =

Page 45: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

40 | P a g e

{"Minggu","Senin","Selasa","Rabu","Kamis","jum'at","Sabtu"};

clrscr( );

cout<<"Nama-nama hari:"<<endl;

cout<<hari[0]<<endl<<hari[1]<<endl<<hari[2]<<endl<<hari[3]

<<endl<<hari[4]<<endl;

getch();

}

Penerapan dari array berdimensi satu dapat digunakan untuk mencari bilangan dari

sejumlah data yang ada. Pencarian bilangan disini akan menggunakan teknik linear search

Data sudah ditentukan terlebih dahulu untuk memudahkan model pencarian beserta

lokasi indeks dari data yang dicari, Apabila data ditemukan akan menginformasikan letak

indeksnya.

#include <iostream>

int a[10],jumlah=10;

Page 46: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

41 | P a g e

bool cari(int cariData,int nElemen) {

int i;

for(i=0; i<nElemen; i++) {

if(a[i] == cariData)

break;

}

if(i == nElemen) return false;

else return true;

}

void input(int data,int i) {

a[i] = data;

}

void hapus(int data,int nElemen) {

int i;

for(i=0; i<nElemen; i++) {

if( data == a[i] )

break;

}

if(i==nElemen)

cout << "Data "

<< data << " tidak terhapus (tidak ada)" << endl;

else {

for(int j=i;

j<nElemen-1; j++) {

a[j] = a[j+1];

}

cout << "Data " << data

<< " dihapus" << endl;

}

}

void tampil(int nElemen) {

for(int i=0; i<nElemen; i++)

cout << a[i] << " ";

cout << endl;

Page 47: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

42 | P a g e

}

void main() {

int data;

for(int i=0; i<jumlah; i++){

cout << "a[" << i << "] = ";

cin >> data;

input(data,i);

}

tampil(jumlah);

int cariData = 12;

if (cari(cariData,jumlah)==false)

cout << "Data " << cariData

<< " tidak ditemukan " << endl;

else

cout << "Data " << cariData

<< " ditemukan" << endl;

hapus(89,jumlah);

jumlah--;

hapus(0,jumlah);

jumlah--;

tampil(jumlah);

}

/* ---------------------------- */

/* Program Array Satu Dimensi */

/* ---------------------------- */

#include<conio.h>

#include<stdio.h>

#include<iostream.h>

#include<iomanip.h>

main( )

Page 48: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

43 | P a g e

{

int i;

char nama[5][20];

float nilai1[5];

float nilai2[5];

float hasil[5];

clrscr( );

for(i=1;i<=2;i++)

{

cout<<"Data Ke - "<<i<<endl;

cout<<"Nama Siswa : "; gets(nama[i]);

cout<<"Nilai MidTest : "; cin>>nilai1[i];

cout<<"Nilai Final : "; cin>>nilai2[i];

hasil[i] = (nilai1[i] * 0.40)+ (nilai2[i] * 0.60);

cout<<endl;

}

cout<<"------------------------------------------"<<endl;

cout<<"No. Nama Siswa Nilai Nilai ";

cout<<"Hasil"<<endl;

cout<<" MidTest Final ";

cout<<"Ujian"<<endl;

cout<<"------------------------------------------"<<endl;

for(i=1;i<=2;i++)

{

cout<<setiosflags(ios::left)<<setw(4)<<i;

cout<<setiosflags(ios::left)<<setw(10)<<nama[i];

cout<<setprecision(2)<<" "<<nilai1[i];

cout<<setprecision(2)<<" "<<nilai2[i];

cout<<setprecision(2)<<" "<<hasil[i]<<endl;

}

cout<<"------------------------------------------"<<endl;

getch();

}

Page 49: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

44 | P a g e

Array berdimensi 2

Array dua dimensi sering kali digambarkan/dianalogikan sebagai sebuah matriks atau bentuk grid.

Jika array berdimensi satu hanya terdiri dari 1 baris dan banyak kolom, array berdimensi dua terdiri

dari banyak baris dan banyak kolom yang bertipe sama.

Page 50: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

45 | P a g e

Array dua dimensi merupakan array yang terdiri dari M buah baris dan N buah kolom. Bentuknya

dapat berupa matriks atau tabel.

Contong penggambaran Array dimensi 2 dengan ukuran 2x3 yang berarta memiliki 2 baris dan 3

kolom

#include <conio.h>

#include <iostream.h>

main()

{

char nama[2][3][10]={{"Pak","BU","Mas"},

{"Andi","Budi","Carli"}};

clrscr();

cout<<nama[0][0]<<ends<<nama[1][0]<<endl;

cout<<nama[0][1]<<ends<<nama[1][2]<<endl;

cout<<nama[0][2]<<ends<<nama[1][1]<<endl;

getch();

}

/* -------------------- */ /* Array Dimensi 2 */

Page 51: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

46 | P a g e

/* -------------------- */ #include<conio.h> #include<stdio.h> #include<iostream.h> #include<iomanip.h> main() { int i, j; int data_jual[4][4]; clrscr(); for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { cout<<"Data Ke - "<<i<<" "<<j<<endl; cout<<"Jumlah Penjulan : "; cin>>data_jual[i][j]; } } cout<<"Data Penjualan Pertahun"<<endl; cout<<"-----------------------"<<endl; cout<<"NO 2007 2008 2093"<<endl; cout<<"-----------------------"<<endl; for(i=1;i<=3;i++) { cout<<setiosflags(ios::left)<<setw(5)<<i; for(j=1;j<=3;j++) { cout<<setiosflags(ios::right)<<setw(4); cout<<data_jual[i][j]; cout<<" "; } cout<<endl; } cout<<"-----------------------"<<endl; getch( ); }

Page 52: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

47 | P a g e

Array dimensi 2 penjumlahan 2 buah matrik

Page 53: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

48 | P a g e

Page 54: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

49 | P a g e

Page 55: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

50 | P a g e

BAB 8

Algoritma Devide And Conquer Dengan Sorting

Divide : Membagi masalah menjadi beberapa upa-masalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil ( idealnya berukuran hampir sama ).

Conquer : Memecahkan ( menyelesaikan ) masing-masing upa-masalah ( secara rekursif ).

Combine : Menggabungkan solusi masing-masing upa-masalah sehingga membentuk solusi masalah semula.

Algoritma Divide and Conquer merupakan algoritma yang berprinsip memecah-mecah permasalahan

yang terlalu besar menjadi beberapa bagian kecil sehingga lebih mudah untuk diselesaikan

Ada 4 hal penting yang harus dipahami dalam strategi ini : branching factor, balance, data dependence of divide function dan sequentiality.

1. Branching Factor

Branching factor dalam algoritma divide and conquer adalah jumlah dari subproblem yang akan dibagi dari sebuah problem awal. Ini adalah langkah nyata dari algoritma divide and conquer, didalam proses pembagian yang sebenarnya, jumlah dari branching factor harus 2 atau lebih, karena jika tidak problem tidak bisa dibagi. Banyak jenis algoritma ini termasuk pula algoritma komputasi geometric yang memiliki branching factor berjumlah 2

2.Balance

Sebuah algoritma divide and conquer dikatakan balance jika problem awal dibagi menjadi sub-sub problem dengan ukuran yang sama. Yang artinya jumlah dari keseluruhan ukuran subproblem sama dengan ukuran problem awal (initial problem). Algoritma Mergesort dan binary tree, dan sama halnya dengan algoritma reduksi & prefix sum adalah beberapa contoh algoritma divide and conquer yang seimbang (balance).

3. Data Dependence of Divide Function

Algoritma divide and conquer memiliki sebuah fungsi pembagian terhadap data yang memiliki ketergantungan, artinya jika ukuran relatif dari sebuah Pseudocode untuk model algoritma n-way divide and conquer subproblem tergantung pada proses input datanya. Ini adalah salah satu ciri dari algoritma yang tidak seimbang, salah satu contohnya adalah algoritma quicksort yang akan membagi subproblem dengan fungsi data-dependent divide.

4. Control Parallelism or Sequentiality Algoritma divide and conquer dikatakan berurutan (sequential) jika subproblem dieksekusi sesuai dengan perintah program.

Page 56: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

51 | P a g e

Pengunaan D and C pada Sorting

Sorting atau biasa banyak orang yang mengatakan dengan istilah Pengurutan, pengurutan

merupakan sebuah proses yang biasa dilakukan dalam pengolahan data memilih beberapa data

untuk dapat di urutkan. Pengurutan Atau sorting di analogokan sebagai sebuah kegiatan yang

mencari beberapa datad alam suatu tempat penyimpanan, dengan urutan tertentu baik urut menaik

(ascending) dari nilai terkecil sampai dengan nilai terbesar, atau urut menurun (descending) dari nilai

terbesar sampai dengan nilai terkecil

Terdapat dua macam pengurutan:

Pengurutan internal (internal sort), yaitu pengurutan terhadap sekumpulan data yang disimpan dalam media internal komputer yang dapat diakses setiap elemennya secara langsung. Dapat dikatakan sebagai pengurutan tabel

Pengurutan eksternal (external sort), yaitu pengurutan data yang disimpan dalam memori sekunder, biasanya data bervolume besar sehingga tidak mampu untuk dimuat semuanya dalam memori.

Algoritma pengurutan internal yang utama antara lain:

1.Bubble Sort

Prinsip Kerja dari Bubble Sort adalah :

a. Pada Penyeleksian ini Pengecekan mulai dari data ke-1 sampai data ke-n b. Tahap Berikutnya Bandingkan data ke-n dengan data sebelumnya (n-1) c. Jika Pada data berikutnya lebih kecil maka pindahkan bilangan tersebut dengan

bilangan yg ada didepannya (sebelumnya) secara satupersatu (n-1,n-2,n-3,....dst) d. Jika ditemukan data lebih besar maka tidak terjadi pemindahan e. Silahkan di Ulangi langkah berikutnya hinga menjadi sort optimal

Contoh diketahui terdapat data sebagai berikut : 10 5 20 6 8 5 3 4

Langkah ke 1 : 10 7 20 6 8 5 3 4 10 7 20 6 8 3 5 4 10 7 20 6 3 8 5 4 10 7 20 3 6 8 5 4 10 7 3 20 6 8 5 4 10 3 7 20 6 8 5 4 3 10 7 20 6 8 5 4 Langkah ke 2 : 3 10 7 20 6 8 5 4 3 10 7 20 6 8 4 5 3 10 7 20 6 4 8 5 3 10 7 20 4 6 8 5 3 10 7 4 20 6 8 5 3 10 4 7 20 6 8 5

Page 57: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

52 | P a g e

3 4 10 7 20 6 8 5 Langkah ke 3 : 3 4 10 7 20 6 8 5 3 4 10 7 20 6 5 8 3 4 10 7 20 5 6 8 3 4 10 7 5 20 6 8 3 4 10 5 7 20 6 8 3 4 5 10 7 20 6 8 Langkah ke 4 : 3 4 5 10 7 20 6 8 3 4 5 10 7 6 20 8 3 4 5 10 6 7 20 8 3 4 5 6 10 7 20 8 Langkah ke 5 : 3 4 5 6 10 7 20 8 3 4 5 6 7 10 20 8 Langkah ke 6 : 3 4 5 6 7 10 20 8 3 4 5 6 7 10 8 20 3 4 5 6 7 8 10 20

2.Selection Sort

Prinsip kerja selection short sebagai berikut,

a. Pengecekan dimulai data ke-1 sampai dengan data ke-n b. Tentukan bilangan dengan Index terkecil dari data bilangan tersebut c. Tukar bilangan dengan Index terkecil tersebut dengan bilangan pertama ( I = 1 ) dari

data bilangan tersebut d. Lakukan langkah 2 dan 3 untuk bilangan berikutnya ( I= I+1 ) sampai didapatkan

urutan yg optimal Contoh diketahui terdapat data sebagai berikut : 10 5 20 6 8 5 3 4

Langkah ke : 10 7 20 6 8 5 3 4 Langkah ke 1 : 3 10 7 20 6 8 5 4 Langkah ke 2 : 3 4 10 7 20 6 8 5 Langkah ke 3 : 3 4 6 10 7 20 8 5 Ulangi langkah berikutnya hingga semua terurut.

3.Insertion Sort

1. Prinsip Kerja Insertion Sort adalah 2. Pengecekan mulai dari data ke-1 sampai data ke-n 3. Bandingkan data ke-I ( I = data ke-2 s/d data ke-n ) 4. 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

Page 58: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

53 | P a g e

Lakukan langkah 2 dan 3 untuk bilangan berikutnya ( I= I+1 ) sampai didapatkan urutan yg optimal.

Contoh : 22 10 15 3 8 2 Iterasi 1 1 2 3 4 5 6 Langkah 1: 22 10 15 3 8 2 Langkah 2: 22 10 15 3 8 2 Langkah 3: 10 22 15 3 8 2 Langkah 4: Ulangi langkah 2 dan 3 Iterasi 2 Langkah 1: 10 22 15 3 8 2 Langkah 2: 10 22 15 3 8 2 Langkah 3: 10 15 22 3 8 2 Langkah 4: Ulangi langkah 2 dan 3 Lakukan Iterasi selanjutnya sampai iterasi ke- 6 Catatan : Setiap ada pemindahan, maka elemen. Yang sudah ada akan di insert sehingga akan bergeser kebelakang.

3. Merge Sort

Prinsip Kerja Merge Sort adalah :

• Kelompokan deret bilangan kedalam 2 bagian, 4 bagian, 8 bagian, ......dst (2n) • Urutkan secara langsung bilangan dalam kelompok tsb. • Lakukan langkah diatas untuk kondisi bilangan yg lain sampai didapatkan urutan yg

optimal .

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

Page 59: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

54 | P a g e

BAB 9

Algoritma Devide And Conquer Dengan Searching

1. Tehnik Pencarian Tunggal :

a. Linear/Sequential Search ( Untuk data yg belum terurut / yg sudah terurut ) Pencarian yg dimulai dari record-1 diteruskan ke record selanjutnya yaitu record-2, ke-3,..., sampai diperoleh isi record sama dengan informasi yg dicari Algoritma : 1. Tentukan I = 1 2. Ketika Nilai (I) <> X Maka Tambahkan I = I +1 3. Ulangi langkah No. 2 sampai Nilai(I) = X 4.Jika Nilai (I) = N+1 Maka Cetak “Pencarian Gagal” selain itu Cetak “ Pencarian Sukses “

b. 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 Binary Search

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

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

Page 60: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

55 | P a g e

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. • Contoh : Terdapat himp.A yg berisi 4 buah bilangan telah disusun secara increasing dengan

A[0] = 2, A[1] = 4, A[2]=5, A[3]=10. Tentukan / cari Bilangan Max&Min serta jumlah operasi perbandingan yg dilakukan.

untuk masalah tersebut dapat digunakan procedure STRAITMAXMIN yg menghasilkan bilangan Min=2 & bilangan Max=10, Operasi perbandingan data mencari bilangan MaxMin dari himpunan tersebut (n-1) =3 kali operasi perbandingan.

WORST CASE

• Terjadi jika elemen dalam himp. disusun secara decreasing (menurun). Dengan. Oprasi perbandingan sebanyak 2(n-1) kali satuan operasi.

• Contoh : Mencari elemen MaxMin & jumlah oprasi perbandingan yg dilakukan terhadap himp.A yg disusun decreasing. A[0]=80, A[1]=21, A[2]=6, A[3]=-10

Penyelesaian

• untuk masalah tersebut dengan proses STRAITMAXMIN adalah elemen max=80 & elemen min=-10, Operasi. perbandingan untuk elemen Maxmin tersebut adalah 2(4-1) = 6 kali satuan operasi.

AVERAGE CASE

• Jika pencarian elemen MaxMin dilakukan pada elemen dalam himpunan yg tersusun secara

acak (tidak decreasing/tidak increasing). Jumlah oprasi. Perbandingan yg dilakukan adalah

rata-rata waktu tempuh best case & worst case, yaitu ½ [ (n-1) + 2(n-1) ] = ( 3n/2 -1 ) kali.

• Contoh, Pada himpuan A yg berisi { 5,-4, 9,7 } dilakukan pencarian elemen max & min dengan

menggunakan proses STRAITMAXMIN. Berapa elemen maxmin yg didapatkan & jumlah oprasi

perbandingan yg dilakukan.

Penyelesaiannya : Elemen max=9, & elemen min=-4. Jumlah operasi perbandingan adalah ( 3. 4/2 - 1) = 5 kali satuan operasi. Searching dengan Tehnik DANDC

Page 61: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

56 | P a g e

• Dengan Prinsip Dasar Metode Devide & akan dapat dipecahkan suatu permasalahan proses Searching elemen Max&Min dengan teknik DANC

• Contoh : Tentukan elemen MaxMin suatu array A yg terdiri 9 bil. : A[1] = 22, A[4] = -8, A[7] = 17 A[2] = 13, A[5] = 15, A[8] = 31 A[3] = -5, A[6] = 60, A[9] = 47

Lalu Proses tree call dr setiap elemen yg ditunjuk pada bagan tree tersebut diatas. Dengan

cara, membalik terlebih dahulu posisi tree dr bawah ke atas. Lalu mengisinya dengan

elemen-elemnnya sesuai dengan bagan tree. Perhatikan bagan tree call ini :

1 ,5

4,5

1,9

6,9

1,2 3,3

6,7 8,9 1,3

1,2 22,13 3,3 -5,-5

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

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

1,9 60,-8

Page 62: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

57 | P a g e

BAB 10

Metode Gredi

Di gunakan Untuk mendapatkan solusi optimal dr permasalahan yg mempunyai dua kriteria yaitu

Fungsi Tujuan/Utama & nilai pembatas (constrain)

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.

1. Optimal On Tape Storage 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).

Persoalan = Bagamana susunan penyimpanan program2 tersebut sehingga L1 + L2 + L3 + ... + Ln = L ? Pemecahannya = jika program.2 tersebut disimpan dlm Order, dimisalkan adalah Order I, yaitu : j

sama dengan tik maka akan didapat k=1

Misal terdapat 3 buah prg.(n=3) yg masing2 mpy panjang prg. (I1,I2,I3)=(5,10,3). Tentukan urutan

penyimpanannya scr berurutan (sequential) agar optimal....!

Dari 3 program tersebut akan didapat 6 buah kemungkinan order, yg didapat dr nilai faktorial 3

3! (ingat faktorial n!).

Dari tabel tersebut, didapat Susunan /

order yg optimal,sbb :

susunan pertama untuk program ke tiga

susunan kedua untuk program kesatu

susunan ketiga untuk program kedua

Page 63: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

58 | P a g e

2. Knapsack Problem

Contoh : sebuah Tas dimana Terdapat n obyek (Xi;i=1,2,3,....n) objek di sini biasa diasumsikan sebuah benda, yang masing-masing mempunyai berat (weight)/ Wi & masing-masing memiliki nilai (profit)/Pi yg berbeda-beda. Permasalahn yang terjadi , Bagamana obyek-obyek tersebut dimuat / dimasukan kedalam ransel (knapsack) yg mempunyai kapasitas maks. = M. Sehingga timbul permasalahan sbb: Bagaimana memilih obyek yg akan dimuat dr n obyek yg ada sehingga nilai obyek termuat

jumlahnya sesuai dgn kapasitas( M) Jika semua obyek harus dimuat kedalam ransel maka berapa bagian dr setiap obyek yg ada dapat dimuat kedalam ransel sedemikian shg nilai kum. maks. & sesuai dgn kapasitas ransel ? Penyelesaian Dengan Kriteria Greedy.

Konsep dr kriteria yg ditawarkan oleh metode Greedy yaitu : Pilih obyek (barang) dengan nilai Pi maximal atau terbesar Pilih obyek (barang) dengan berat Wi minimal dahulu. Pilih obyek (barang) dgn perbandingan nilai & berat yaitu Pi/Wi yang terbesar.

Diketahui bahwa kapasitas M = 20kg , Dengan jumlah barang n=3 Berat Wi masing-masing barang (W1, W2, W3) = (18, 15, 10) Nilai Pi masing-masing barang (P1, P2, P3) = (25, 24, 15)

Pilih barang dengan Nilai Profit Maksimal

P1 = 25 X1 = 1, dimisalkan sebagai (batas atas nilai) P2 = 24 X2 = 2/15, dihitung dengan Fungsi Pembatas P3 = 15 X3 = 0, dimisalkan sebagai (batas bawah nilai)

Pilih barang dengan Berat Minimal W1 = 18 X1 = 0, sebagai batas bawah W2 = 15 X2 = 2/3,dihitung dgn Fungsi Pembatas W3 = 10 X3 = 1, sebagai batas atas

Pilih barang dgn menghitung perbandingan yg terbesar dr Profit dibagi Berat (Pi/Wi) yg diurut secara tidak naik, yaitu : P1/W1 = 25/18 karena terkecil maka X1 = 0 P2/W2 = 24/15 karena terbesar maka X2 = 1 P3/W3 = 15/10 dengan Fungsi pembatas X3 = 1/2.

Page 64: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

59 | P a g e

Nilai profit maksimal = 31.5 dengan komposisi yang sama

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 Data tersebut di inputkan kedalam algoritma terjadi proses sebagai berikut : 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/2benda 10kg hanya dpt dimuat 1/2 bgn yaitu 5 kg. i=3 Endif diakhiri krn ransel sdh penuh (max =20kg)

Page 65: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

60 | P a g e

Profit nilai yang didapat adalah : P1 + P2 + P3 yaitu: 24.1+ 15.1/2 + 18.0 = 24 + 7.5 = 31.5

3. Minimum Spanning Tree Problem

Kasus MST Problem = mencari minimum.biaya (cost) spanning tree dr setiap ruas (edge) graph yang membentuk sebuah pohon (tree). Solusi dr p’masalah’ ini :

a. Dengan memilih ruas suatu graph yang memenuhi kriteria dr optimisasi yang menghasilkan biaya min.

b. penambahan dari setiap ruas pada seluruh ruas yang membentuk graph akan menghasilkan nilai/biaya yg kecil (minimumcost).

Kriteria2 dr spanning tree, yakni : 1. Setiap ruas pada graph harus terhubung (conected) 2. Setiap ruas pd graph hrs mpy nilai (label graph) 3. Setiap ruas pd graph tdk mpy arah (graph tdk berarah) Proses Total minimum cost terbentuknya graph dgn tahapan sbb:

1. Dari graph yg tetbentuk, apakah memenuhi kriteria MST. 2. Lakukan secara urut dr simpul ruas awal s/d ruas akhir 3. Pada setiap simpul ruas perhatikan nilai/cost dr tiap-tiap ruas 4. Ambil nilai yg paling kecil (jarak tertpendek setiap ruas). 5. Lanjutkan s/d semua simpul ruas tergambar pd spanning tree 6. Jumlahkan nilai/cost yg dipilih tadi.

1 2

4 3

5

6

10

30

20

55

40

35

15

50 45

25

Page 66: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

61 | P a g e

4. Shortest Path Problem.

Permasalahan : menghitung jalur terpendek dr sbh graph berarah. Kriteria utk permasalahan jalur terpendek/SP problem tsb :

1. Setiap ruas pd graph hrs mpy nilai (label graph) 2. Setiap ruas pd graph tdk hrs terhubung (unconnected) 3. Setiap ruas pd graph tsb hrs mempunyai arah (graph berarah).

5.Metode Gredi Model pewarnaan

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 dipergunkan , diminta seminimal mungkin

Contoh

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

A B E

C D F

45

20

15

10 15 20 35

10 50

30

3

Page 67: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

62 | P a g e

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. - Bila Simpul berdampingan maka berilah warna lain. - Bila simpul tidak bedampingan maka berilah warna yang sama

Page 68: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

63 | P a g e

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 ) Pembagian simpul berdasarkan simpul yang tidak langsung berhubungan seminimal mungkin ( BISA DILAKUKAN DENGAN BEBERAPA KEMUNGKINAN ) Dari langkah ke 5 diperoleh 3 fase, sehingga bisa kita simpulkan keseluruhan situasi dan hasilnya dapat dinyatakan dengan : Fase 1

Fase 2

Fase 3

Page 69: MODUL LOGIKA ALGORITMA - repository.bsi.ac.id€¦ · masalahpermasalahan menghitung persegi panjang dengan menentukan ^Input _ (nilai awal dri panjang dan lebar) _Proses (Luas persegi

64 | P a g e

Referensi

Al Fatta, Hanif, S.k om. 2006. Dasar PemrogramanC++. Andi Offset. Yogyakarta

Frieyadie. 2006. Panduan Pemrograman C++. Andi Offset. Yogyakarta

Kadir, Abdul. 2001. Pemrograman C++ menggunakan turbo C++ dan borland C++. Andi Offset.

Yogyakarta.

Nugroho, Adi, ST., MMSI. Pemrograman Berorientasi Objek. Informatika. Bandung

Jan Hendrik Rapar. 1996. Pengantar Logika. Asas-asas penalaran sistematis. Yogyakarta: Penerbit Kanisius. ISBN 979-497-676-8

Raharjo, Budi. 2004. Mengungkap Rahasia pemrograman dalam C++. Informatika. Bandung

Tim Penyusun Komisi Manajemen Informatika Akademi Manajemen Informatika Dan Komputer BSI

2014

Sismoro heri dan Kussrini Iskandar 2094. Struktur data dan Pemrogaman dengan Pascal. Andi offset yogjakarta.

Tim Penyusun Komisi Manajemen Informatika Akademi Manajemen Informatika Dan Komputer BSI 2014

Yulikuspartono, S.Kom,2003, Pengantar Logika dan Algoritma, Andi Offset, Yogyakarta Yulikuspartono, S.Kom,2003, Pengantar Logika dan Algoritma, Andi Offset, Yogyakarta http://www.web-games-online.com/towers-of-hanoi/index.php