Modul Logika Dan Algoritma 20191
Modul Logika Dan Algoritma 20191
DISUSUN OLEH:
RABIATUL ADWIYA
NIP. 201209659
1
KATA PENGANTAR
Alhamdulillah, pertama penulis mengucapkan rasa syukur dan segala puji bagi
Allah SWT yang telah melimpahkan segala Rahmat dan Karunianya, sehingga
modul Logika dan Algortima ini dapat diselesaikan. Modul Logika dan Algoritma
Basis Data. Modul ini dibuat berdasarkan sumber-sumber yang sudah banyak
digunakan. Pada modul ini membahas mengenai Logika dan Algoritma secara
umum. Modul ini membahas mengenai Pengertian Logika dan Algoritma, Konsep
Tipe Data, Percabangan, Perulangan, Menara Hanoi, Rekursip, dll untuk lebih
jelasnya silahkan dibaca modul ini.. Akhir kata, penulis menyampaikan terimakasih
yang tulus kepada pihak- pihak yang telah memberikan bantuan dan dukungannya
sehingga penulis dapat menyelesaikan penulisan modul ini. Pada akhir kata, penulis
memohon maaf yang sebesar-besarnya jika dalam penulisan modul ini masih banyak
kekurangan dan kelemahannya. Penulis memohon adanya sumbangan ide, kritik dan
saran untuk perbaikan penulisan modul ini supaya lebih baik ke depannya.
Penulis,
2
DAFTAR ISI
KATA PENGANTAR. ..................................................................................................................... ii
DAFTAR ISI . ..................................................................................................................................iii
PENGANTAR LOGIKA DAN ALGORITMA. .............................................................................. 4
KONSEP ALGORITMA ..................................................................................................... 8
KONSEP TIPE DATA ....................................................................................................... 10
STRUKTUR BRANCHING (PERCABANGAN) ............................................................. 16
LOOPING (PERULANGAN) ............................................................................................ 18
STRUKTUR REKURSIF .................................................................................................. 23
MENARA HANOI ............................................................................................................. 26
METODE DIVIDE AND CONQUER ............................................................................... 28
TEKNIK SEARCHING (PENCARIAN) .......................................................................... 33
STUDI KASUS: PERCABANGAN DAN PERULANGAN ............................................. 38
STUDI KASUS: TUMPUKAN (STACK) ......................................................................... 41
3
PENGANTAR LOGIKA DAN ALGORITMA
4
Hitung Nilai C yg berisikan Nilai B dikalikan Nilai B 3. Jika Nilai C sama dengan
Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu stop. 4. Jika tidak, maka Nilai B
akan bertambah 1 5. Kembali ke langkah pada No. 3
C. BAHASA PEMROGRAMAN
Program adalah kumpulan intruksi-instruksi yang diberikan kepada komputer untuk
melaksanakan suatu tugas atau pekerjaan. Dalam membuat program dibutuhkan bahasa
pemrograman. Bahasa pemrograman adalah bahasa komputer yang digunakan dalam menulis
program
Contoh bahasa pemrograman adalah: Bahasa rakitan (assembly), Fortran, Cobol, Pascal, C,
C++, Basic, Prolog, PHP, Java, Python
Berdasarkan kedekatan bahasa pemrograman dikelompokkan menjadi 2 macam yaitu:
1. Bahasa tingkat rendah Bahasa yang dirancang agar setiap instruksinya langsung dikerjakan
oleh komputer, tanpa harus melalui penerjemah. Contoh: bahasa mesin (sekumpulan kode
biner (0 dan 1)) 2. Bahasa tingkat tinggi Bahasa jenis ini membuat program menjadi lebih
mudah dipahami.
Contoh: Pascal, Cobol, Fortran, Basic, Prolog, C, C++, PHP, Java, Python
Python adalah bahasa pemrograman tingkat tinggi Dirancang oleh Guido Van Rossum
Python merupakan bahasa pemrograman yang mudah dipahami karena struktur sintaknya rapi
dan mudah dipelajari. Python banyak digunakan untuk membuat aplikasi program seperti:
Program GUI (desktop), Aplikasi Mobile Web, Game, Hacking dan Internet of Thing (IoT).
Python dianjurkan untuk pemula yang belum pernah coding
1. Perbedaan Bahasa Pemrograman C++, Java, dan Python
Misal: mencetak kata “Logika Algoritma”
a. Sintak Pada Bahasa Pemrograman C++
#include <iostream.h>
main()
{
cout<<”Logika Algoritma”;}
return 0
5
Class LogikaalgoritmaApp
{
public static void main(string[] args)
{
system.out.println(“Logika
Algoritma”);
}
}
6
a. Pseudocode (bahasa semu) Merupakan bentuk informal untuk mendeskripsikan algoritma
yang mengikuti struktur bahasa pemrograman tertentu.
b. Flowchart (Diagram Alir) Penggambaran algoritma secara diagram yang menggambarkan
alur susunan logika dari suatu masalah.
Tujuan pseudocode adalah: Lebih mudah dibaca oleh manusia, lebih mudah dipahami dan
lebih mudah dalam menuangkan ide/hasil pemikiran
Contoh : Untuk menghitung Luas Segi tiga
Masukan Nilai Alas
Masukan Nilai Tinggi
Hitung Luas =( Alas * Tinggi ) / 2
Cetak Luas
3. Bagaimana validitas suatu algoritma.
Validitas suatu algoritma dengan didapatkan solusi sebagai penyelesaian dari masalah
4. Bagaimana Menganalisa suatu Algoritma. Analisa algoritma dengan melihat waktu
tempuh dan jumlah memori yang digunakan
5. Bagaimana Menguji Program dari suatu Algoritma. Algoritma tersebut diimplementasikan
kedalam bahasa pemrograman misal: Python. Proses uji algoritma tersebut dengan dua
tahap yaitu:
a. Fase Debugging
yaitu fase dari proses program eksekusi yang akan melakukan koreksi terhadap kesalahan.
b. Fase Profilling
yaitu fase yang akan bekerja jika program tersebut sudah benar (telah melewati fase
debugging).
LATIHAN 1:
1. Sebutkan pengertian dari Logika, dan berikan contohnya?
2. Sebutkan pengertian dari Algoritma dan berikan contohnya?
7
KONSEP ALGORITMA
1. Algoritma Peubah
ALGORITMA PE-UBAH Adalah Variabel yang nilainya BUKAN konstanta (selalu
berubah – sesuai dengan kondisi Variabel terKINI)
Sintaks :
P=Q
Q Algoritma : P
Arti : Bahwa Nilai P diberi harga Nilai Q Nilai P akan SAMA DENGAN nilai Q, & Nilai
Q TETAP
2. Algoritma Pertukaran
ALGORITMA PERTUKARAN Berfungsi mempertukarkan masing-masing isi Variabel
sedemikian sehingga Nilai dari tiap Variabel akan berubah/bertukar
Contoh:
Diketahui P=10, Q=15 dan R=5. Diberikan Algoritma P=Q,Q=R, mk Nilai P,Q,R sekarang?
Penyelesaiannya:
P=Q, Q=R, R=Tetap
Maka P,Q,R?
Sebagai Latihan Algoritma Peubah dan Pertukaran, lengkapilah soal dibawah ini:
a. Diketahui Algoritma P=11, P=P+1 dan Q = P Berapakan Nilai P dan Q ?
b. Diketahui 3 variabel peubah P,Q dan R. Agar isi Q ditaruh di P, isi R ditaruh di Q dan
isi P ditaruh di R, maka Algoritma yang dapat ditulis adalah :
c. Diketahui 2 peubah K = 15 dan L = 25. Buat Algoritma untuk mempertukarkan isi K
dan L. :
3. Algoritma Pertukaran Isi Bejana Untuk Latihan Uji Coba Pertukaran Mahasiswa
Membawa 2 Gelas air yang berbeda warnanya dan 1 gelas Kosong
Diberikan dua buah bejana, A dan B; bejana A berisi larutan berwarna merah, bejana B
berisi larutan berwarna biru.
8
Buatlah pseudocode untuk menukarkan isi kedua bejana itu sedemikian sehingga bejana
A berisi larutan berwarna biru dan bejana B berisi larutan berwarna merah.
Dari gambar diatas akan kelihatan hasil dari pertukaran isi Bejana dan menghasilkan:
Bejana A berwarna Biru, bejana B berwarna Merah dan Bejana C tetap kosong.
LATIHAN 2:
1. Buat ilustrasi pertukaran antara isi gelas, diantaranya:
Gelas A = Hijau -> Kuning
Gelas B = Kuning -> Hijau
9
KONSEP TIPE DATA
Variabel
Tipe data
Konstanta :
Sebuah variabel dengan tipe data tertentu dan memiliki nilai data yang akan selalu tetap
di dalam program.
Contoh :
float phi;
const phi=3.14;
10
4. Tipe Data sederhana pada C++
a. Tipe int : tipe data yang nilainya tidak memiliki titik desimal.
b. Tipe float: tipe data yang nilainya merupakan pecahan (memiliki titik desimal).
Operator Keterangan
= Sama dengan (assignment)
!= Tidak sama dengan
> Lebih besar
< Lebih kecil
Sama dengan (bukan
==
assignment)
>= Lebih besar atau sama dengan
<= Lebih kecil atau sama dengan
c. Tipe Char
11
digunakan untuk menampung data sebuah karakter. untuk menuliskan tipe char, karakter
perlu ditulis di dalam tanda petik tunggal ( ‘ )
Contoh :
‘A’ → karakter berupa huruf A
‘1’ → karakter berupa angka 1
‘*’ → karakter simbol *
d. Tipe String
merupakan sekumpulan dari beberapa karakter, yang banyaknya berubah-ubah sesuai
kebutuhan,besarnya 1 s/d 255 karakter.
Pemberian nilai String diapit dengan tanda petik ganda (“) Bentuk umum penulisan tipe
data ini adalah :
tipe_data pengenal [panjang] ;
pengenal = nama variabel
panjang = bilangan bulat yg menunjukan jumlah karakter
Contoh : char nama[15] ;
e. Tipe Terstruktur
bermanfaat untuk mengelompokkan sejumlah data dengan tipe data yang berlainan.
Contoh :
struct data_pegawai
{
int nip;
char nama[25];
char alamat[40];
}
12
GAMBAR 4. Simbol Flowchart
13
Gambar 5. Flowchart Sederhana
b. Struktur Branching
Contoh:
c. Struktur Looping
Contoh:
14
Gambar 7. Flowchart Looping
Keterangan :
1. Masukan Nilai Variable A
mis : 3
2. Proses A dengan A*2
3. Cetak hasil proses diatas A=A*2 yg
menghasilkan A=6
LATIHAN 3:
1. Sebutkan yang termasuk dalam tipe data majemuk?
2. Sebutkan yang termasuk dalam tipe data tunggal?
15
STRUKTUR BRANCHING
(PERCABANGAN)
1. Struktur Percabangan if
Diagram yg alurnya ada/banyak terjadi alih kontrol berupa percabangan & terjadi apabila
kita dihadapkan pada suatu Kondisi dengan dua pilihan BENAR/ SALAH.
Bentuk Umum :
if (kondisi)
pernyataan ;
Struktur Branching/percabangan:
16
if (syarat)
if (syarat)
....perintah;
else
....perintah;
else
if (syarat)
....perintah;
Else
....perintah;
17
LOOPING
(PERULANGAN)
Pemutaran kembali, terjadi ketika mengalihkan arus diagram alur kembali ke atas,
sehingga beberapa alur berulang beberapa kali.
1. Perulangan For
Pendeklarasian for :
18
Kegunaan dari masing-masing argumen FOR diatas adalah :
1. Inisialisasi: merupakan bagian untuk memberikan nilai awal untuk variabelvariabel
tertentu.
2. Syarat Pengulangan: memegang kontrol terhadap pengulangan, karena bagian ini yang akan
menentukan suatu perulangan diteruskan atau dihentikan.
3. 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:
a. For Menurun
b. For menurun
Seperti dijelaskan diatas for menurun berarti for yang nilainya berumah menjadi nilai terkecil
sesuai dengan kondisi perintah yang dilakukan.
Pendeklarasian:
19
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
2. Perulangan while
Perulangan akan terus dilaksanakan selama syarat tersebut terpenuhi.
Bentuk Umum :
while (syarat)
pernyataan ;
atau
while (syarat)
{
pernyataan;
pernyataan;
}
Contoh 1:
Int bil=1;
While(bil<=5)
cout<<bil;
++bil; bil=bil+1;
Output: 1,2,3,4,5
20
Contoh 2: Buatlah algoritma dan program untuk
menampilkan angka 10 sampai 1 dengan pengurangan 1.
Maka algoritmanya adalah sebagai berikut:
1. Tentukan nilai awal
2. Lakukan proses pengulangan selama i>0
3. Cetak bilangan
4. Ulangi langkah 2 sampai batas akhir
3. Perulangan Do …. While
Perulangan akan dilaksanakan terlebih dahulu dan pengujian perulangan dilakukan
belakangan.
Bentuk Umum :
do
pernyataan;
while (syarat);
Atau
do
{
pernyataan;
pernyataan;
}
while (syarat)
Contoh 1:
int bil=2;
do
cout<<bil;
bil+=2;
while (bil<=10);
Output : 2 4 6 8 10
21
Adapun programnya sebagai berikut:
#include <studio.h>
main()
{
int counter;
counter =0;
do
{
printf ("C++ \n");
counter++;
}
while (counter < 15);
}
22
STRUKTUR REKURSIF
2. Faktorial
0! = 1
N! = N x (N-1)! untuk N > 0
Scr notasi pemrograman dapat ditulis sebagai :
FAKT (0) = 1 .............................................. (1)
FAKT(N) = N * FAKT (N-1).................................... (2)
Contoh :
FAKT(5) = 5 * FAKT(4)
FAKT(4) = 4 * FAKT(3)
FAKT(3) = 3 * FAKT(2)23
FAKT(2) = 2 * FAKT(1)
FAKT(1) = 1 * FAKT(0)
Misal :
hitung 5!, maka dapat dilakukan secara rekursif dengan cara :
5! = 5 * 4!
Secara rekursif nilai dari 4! Dapat dihitung kembali dengan 4 * 3!, sehingga 5!
Menjadi :5! = 5 * 4 * 3!
Secara rekursif nilai dari 3! Dapat dihitung kembali dengan 3 * 2!, sehingga 5!
Menjadi : 5! = 5 * 4 * 3 * 2!
Secara rekursif nilai dari 2! Dapat dihitung kembali dengan 2 * 1, sehingga 5!
Menjadi : 5! = 5 * 4 * 3 * 2 * 1 = 120.
return 0;
}
// recursive definition of function factorial
Unsigned long factorial (unsigned long number)
{
if (number <=1) // base case
return 1;
else
return number * factorial(number – 1);
24
3. Fibonancy
Deret Fibonancy : 0,1,1,2,3,5,8,13,.........
Secara notasi pemrograman dapat ditulis sebagai :
Fibo (1) = 0 & Fibo (2) = 1 ....................................... (1)
Fibo (N) = Fibo (N-1) + Fibo (N-2) ................................. (2)
Contoh :
Fibo(5) = Fibo(4) + Fibo(3)
Fibo(4) = Fibo(3) + Fibo(2)
Fibo(3) = Fibo(2) + Fibo(1)
Nilai awal
25
MENARA HANOI
Langkah pemindahan tersebut diatas dapat diubah dengan notasi sebagai berikut:
Menara (n,asal,bantu,tujuan)
Untuk jumlah piringan n>1 dapat dibagi menjadi 3 notasi penyelesaian
Menara (n-1, Asal,Tujuan, Bantu);
Menara (n, Asal, Bantu, Tujuan); atau Asal Tujuan;
Menara (n-1, Bantu, Asal, Tujuan);
2N - 1
N = Jumlah Piringan
26
b. Array berdimensi dua
Bentuk Umum :
Tipe_Data Nama_Variabel [index-1] [index-2]
27
METODE DIVIDE AND CONQUER
28
Contoh : 22 10 15 3 8 2
lterasi 1
1 2 3 4 5 6
Langkah 1: 22 10 15 3 8 2
Langkah 2 : 22 10 15 3 8 2
Langkah 3 : 2 10 15 3 8 22
Langkah 4 : Ulangi langkah 2 dan 3
Iterasi 2
Langkah 1: 2 10 15 3 8 22
Langkah 2: 2 10 15 3 8 22
Langkah 3: 2 3 15 10 8 22
Langkah 4: Ulangi langkah 2 dan 3 .
Lakukan Iterasi selanjutnya sampai iterasi ke-6
Contoh : 22 10 15 3 8 2
Iterasi 1
1 2 3 4 5 6
Langkah 1: 22 10 15 3 8 2
Langkah 2: 22 10 15 3 8 2
Langkah 3: 22 10 15 3 2 8
Langkah 4: Ulangi langkah 2 dan 3
Hasil iterasi 1 : 2 22 10 15 3 8
29
3. Metode Quick Sort
Metode QuickSort sering disebut metode partition exchange sort, Diperkenalkan oleh
C.A.R. Hoare. Pada metode ini jarak kedua elemen yang akan ditukarkan nilainya
ditentukan cukup besar. Misal ada N elemen dalam keadaan urut turun, adalah mungkin
untuk mengurutkan N elemen tersebut dengan N/2 kali, yakni pertama kali menukarkan
elemen paling kiri dengan paling kanan, kemudian secara bertahap menuju ke elemen
yang ada di tengah. Tetapi hal ini hanya bisa dilakukan jika kita tahu pasti bahwa
urutannya adalah urut turun.
Secara garis besar metode ini dijelaskan sebagai berikut, misal kita akan mengurutkan
vektor A yang mempunyai N elemen. Kita pilih sembarang dari vektor tersebut, biasanya
elemen pertama misalnya X. kemudian semua elemen tersebut disusun dengan
menempatkan X pada posisi J sedemikian rupa sehingga elemen ke 1 sampai ke j-1
mempunyai nilai lebih kecil dari X dan elemen ke J+1 sampai ke N mempunyai nilai
lebih besar dari X. Dengan demikian kita mempunyai dua buah subvektor, subvektor
pertama nilai elemennya lebih keci dari X, subvektor kedua nilai elemennya lebih besar
dari X.
Pada langkah berikutnya, proses diatas diulang pada kedua subvektor, sehingga kita akan
mempunyai empat subvektor. Proses diatas diulang pada setiap subvektor sehingga
seluruh vektor semua elemennya menjadi terurutkan.
30
Pengecekan mulai dari data ke-1 sampai data ke-n
Bandingkan data ke-I ( I = data ke-2 s/d data ke-n )
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
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
31
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
32
TEKHNIK SEARCHING
(PENCARIAN)
CONTOH KASUS :
Array :
int a [5] = {3,5,4,9,1} (index array pada bahasa C++ dimulai dari index ke 0 !!!) jika kita
ingin mencari bilangan 4 dalam array tersebut, maka proses yang terjadi kita mencari
1. dari array index ke-0, yaitu 3, dicocokan dengan bilangan yang akan dicari, jika tidak
sama, maka mencari ke index berikutnya
2. pada array index ke-1, juga bukan bilangan yang dicari, maka kita mencari lagi pada
index berikutnya
3. pada array index ke-2, ternyata bilangan yang kita cari ada ditemukan, maka kita
keluar dari looping pencarian.
33
langsung menebak apakah data yang dicari berada ditengah-tengah data yang lainnya,
kemudian membandingankan data yang ditengah dengan data yang dicari, apabila sama
maka dapat dikatakan data ditemukan, namun apabila data yang dicari ternyata lebih
kecil daripada elemen tengah, maka pencarian dilakukan dari bagian tengah ke bawah.
Algoritma/Caranya :
1. Anggap saja Urutan Terendah (UR) = 1, Urutan Tertinggi (UT) = N (nilai belum
diketahui, bisa 10,100, atau 1000).
2. Ketika Urutam Tertinggi (UT) tidak lebih besar daripada Urutan Terendah (UR), maka
kerjakan ke no.3, jika tidak, dengan kata lain data yang dicari dibawah Urutan Terendah
(UR), maka kerjakan no.7
3. Tentukan nilai tengah denga rumus = (Urutan Terendah (UR) + Urutan Tertinggi (UT))/2
4. Jika data yang dicari < daripada Nilai Tengah maka Nilai Tengah mundur -1 ke arah UR
5. Jika data yang dicari > daripada Nilai Tengah maka Nilai Tengah maju + 1 ke arah UT
6. Jika data yang dicari = nilai tengah, maka pencarian langsung ketemu.
7. Jika data yang dicari > daripada Urutan Tertinggi (UT), maka Pencarian gagal
= (1 + 8) div 2
= 9 div 2
=4
3. Bandingkan nilai X dengan nilai dari indeks yang dihasilkan dari nilai MID.X
MID17 > 10
34
4. Jika nilai X > MID maka dapat dicari nilai low.LOW = MID + 1Jika nilai X < MID
maka dapat dicari nilai high.
HIGH = MID – 1
5. Jika nilai X = MID maka nilai MID adalah nilai yang dicari. Dalam contoh
menunjukkan jika nilai X > MID, maka dapat dicari nilai low.
Low = MID + 1= 4 + 1 = 5
6. Didapatkan sebuah nilai baru, didalam contoh didapatkan nilai low baru. Sehingga
persamaan baru yang didapat :Low = 5 dan high = 8.
7. Nilai low dan high masih dapat memenuhi syarat low<=high sehingga masih dapat
mencari nilai MID.
MID = (low + high) div 2= (5 + 8) div 2
= 13 div 2
=6
8. Bandingkan nilai X dengan nilai indeks yang didapatkan dari perhitungan nilai MID.
X MID 17 = 17
Maka nilai x = nilai MID, maka nilai MID adalah nilai yang dicari.
b. Teknik Strait maxmin adalah teknik pencarian untuk mencari data atau nilai yang
lebih besar atau lebih kecil dari data yang lain dari kumpulan data biasanya
berbentuk array linier.
d. A : 50 20 43 15 66 55
Untuk menemukan data maksimum dari vector A, dapat dilakukan dengan cara
sebagai berikut. Mula-mula elemen pertama dalam A, yaitu 50 di anggap sebagai
data maksimum. Selanjutnya 50 kita bandingkan dengan elemen data yang kedua,
35
yaitu 20. Karena 50 lebih besar dari 20, maka data maksimumnya tetap, yaitu 50.
Selanjutnya, 50 kita bandingkan dengan elemen data yang ketiga yaitu 43. Harga
data maksimum sebelumnya adalah lebih besar dari 43, sehingga data
maksimumnya masih tetap, yaitu 50. Proses dilanjutkan untuk membandingkan
kembali data maksimum sementara dengan data-data pada urutan selanjutnya
secara berurutan hingga data pada urutan akhir. Ketika dibandingkan dengan data
urutan yang ke-5, yaitu 66, ternyata 50 lebih kecil dari 66. Pada akhirnya setelah
dibandingkan dengan keseluruhan data dalam vector A, data 66 merupakan data
terbesar atau maksimum.
1. Best Case
2. Average Case
3. Worst Case
1. BEST CASE
Keadaan yang tercapai jika elemen pada himpunan A disusun secara increasing
(menaik). Dengan perbandingan waktu n-1 kali satuan operasi.
Pada Himpunan A yang berisi {5,-4,9,7} dilakukan pencarian elemen max & min dengan
36
menggunakan proses STRAIT MAXMIN. Berapa elemen maxmin yang didapat dan jumlah
operasi perbandingan yang dilakukan.
Penyelesaian :
Elemen Max = 9, dan elemen min = -4
Jumlah operasi perbandingan adalah (3 *4/2-1)=5 kali satuan operasi
Tentukan atau cari bilangan Max & Min serta jumlah operai perbandingan yang dilakukan.
Penyelesian :
Untuk masalah tersebut dapat digunakan procedure STRAITMAXMIN yang menghasilkan
bilangan min = 3 bilangan max = 15, operasi perbandingan mencari bilangan MaxMin dari
himpunan tersebut adalah (n-1) = 4 kali operasi.
2. AVERAGE CASE
Jika pencarian elemen MaxMin dilakukan pada elemen dalam himpunan yang tersusun
secara acak ( tidak decreasing / tidak increasing ) jumlah operasi. Perbandingan yang
dilakukan adalah rata – rata waktu tempuh best case dan worst case yaitu ½[(n-1) + 2(n-
1)]=(3n/2 – 1)kali
Pada Himpunan A(1) = 15, A(2) = 7, A(3) = 11, A(4) = 3, A(5) = 5,A(6) = -2 dilakukan
pencarian elemen max & min dengan menggunakan proses STRAIT MAXMIN. Berapa
elemen maxmin yang didapat dan jumlah operasi perbandingan yang dilakukan.
Penyelesaian :
Elemen Max = 15, dan elemen min = -2 Jumlah operasi perbandingan adalah (3 (6/2)-1)=8
kali satuan operasi.
3. WORST CASE
Terjadi jika elemen dalam himpunan disusun secara decreasing ( menurun ). Dengan
Operasi perbandingan sebanyak 2 ( n-1) kali satuan operasi.
37
STUDI KASUS
Contoh:
38
a. Operasi percabangan dengan menggunakan ‘IF ... THEN ... ELSE ...’
b. Operasi penjumlahan menggunakan operator ‘+’
c. Operasi pengurangan menggunakan operator ‘-’
d. Operasi perkalian menggunakan operator ‘*’
e. Operasi pembagian menggunakan operator ‘/’.
6. Flowchart:
1. Permasalahan
Buatlah program untuk menampilkan tumpukan bilangan.
39
a. Variabel bertipe integer untuk menyimpan data jumlah tumpukan --> variabel n
b. Variabel bertipe integer untuk digunakan pada perulangan pertama --> variabel i
c. Variabel bertipe integer untuk digunakan pada perulangan kedua --> variabel j
6. Logika Pemrograman:
a. Operasi perulangan menggunakan statement For
7. Flowchart:
C. Soal Latihan
Buatlah program untuk menghitung jumlah bola dalam suatu triangular. Triangular
adalah suatu susunan benda (contoh: bola) yang disusun sedemikian rupa sehingga
menyerupai segitiga. Dengan mengetahui jumlah bola yang paling bawah, maka dapat
dihitung jumlah seluruh bola yang menyusun triangular tersebut.
40
STUDI KASUS
TUMPUKAN (STACK)
1. Permasalahan
Buatlah flowchart untuk membalik kalimat.
Contoh:
4. Output:
Program ini akan menghasilkan output yang berupa:
a. Kalimat yang sudah dibalik dalam bentuk string
41
Gambar 16. Flowchart Studi Kasus
1. Permasalahan
Buatlah flowchart untuk menampilkan bilangan dalam urutan terbalik.
Contoh
42
Input: Masukkan kalimat : 1234
Cara yang bisa dilakukan adalah dengan menggunakan operator modulus untuk
mengambil angka terakhir dari bilangan. Kemudian dengan membagi bilangan tersebut
dengan 10 menggunakan operator pembagian ‘/’ kita akan mendapatkan sisa bilangan
setelah bilangan yang terakhir diambil.
Contoh:
misalkan kita mempunyai bilangan 1234. Dengan melakukan operasi 1234 % 10, kita
akan mendapatkan angka terakhir yaitu 4. Kemudian dengan operasi 1234 / 10 kita
akan mendapatkan bilangan 123. Berikutnya kita dapat mengulangi lagi mulai langkah
yang pertama (menggunakan operator modulus).
3. Input:
Input yang dibutuhkan untuk program ini adalah:
4. Output:
Program ini akan menghasilkan output yang berupa:
a. Bilangan dengan urutan angka yang berupa kebalikan dari urutan angka pada
bilangan hasil input.
5. Struktur Data yang Dibutuhkan:
a. Variabel bertipe integer untuk menyimpan bilangan awal --> variabel bil
b. Variabel bertipe integer untuk menyimpan bilangan hasil --> variabel hasil
c. Variabel untuk menyimpan stack --> variabel stack
d. Variabel bertipe integer untuk menyimpan nilai sementara --> variabel nilai
e. Variabel bertipe integer untuk menyimpan angka satuan --> variabel satuan
6. Logika Pemrograman:
a. Operasi perulangan dengan menggunakan ‘DO ... WHILE’ atau ‘WHILE ... DO’
7. Flowchart
43
Gambar 18. Flowchart Studi Kasus
C. Soal Latihan
Buatlah flowchart untuk mengecek suatu kalimat termasuk palindrom apa bukan.
Kalimat palindrom adalah kalimat yang susunannya sama dengan keadaan terbaliknya.
Contoh:
44
DAFTAR PUSTAKA
45