modul logika dan algoritma - bsi

45
1 MODUL LOGIKA DAN ALGORITMA DISUSUN OLEH: RABIATUL ADWIYA NIP. 201209659 PROGRAM STUDI SISTEM INFORMASI AKUNTANSI KAMPUS KOTA PONTIANAK FAKULTAS TEKNIK DAN INFORMATIKA UNIVERSITAS BINA SARANA INFORMATIKA 2019

Upload: others

Post on 01-Oct-2021

40 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: MODUL LOGIKA DAN ALGORITMA - BSI

1

MODUL

LOGIKA DAN ALGORITMA

DISUSUN OLEH:

RABIATUL ADWIYA

NIP. 201209659

PROGRAM STUDI SISTEM INFORMASI AKUNTANSI KAMPUS KOTA PONTIANAK

FAKULTAS TEKNIK DAN INFORMATIKA

UNIVERSITAS BINA SARANA INFORMATIKA

2019

Page 2: MODUL LOGIKA DAN ALGORITMA - BSI

2

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

ini diharapkan dapat mendukung mahasiswa dalam memahami matakuliah Sistem

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.

Pontianak, September 2019

Penulis,

Page 3: MODUL LOGIKA DAN ALGORITMA - BSI

3

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

DAFTAR PUSTAKA ......................................................................................................... 45

Page 4: MODUL LOGIKA DAN ALGORITMA - BSI

4

PENGANTAR LOGIKA DAN ALGORITMA

A. PENGERTIAN LOGIKA DAN ALGORITMA

1. PENGERTIAN LOGIKA

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

Logika adalah:

a. penalaran atau bentuk pemikiran.

b. ilmu yang memberikan prinsip-prinsip yang harus diikuti agar dapat berfikir valid

menurut aturan yang berlaku.

2. PENGERTIAN ALGORITMA

ALGORITMA Diperkenalkan Oleh Ahli Matematika : Abu Ja’far Muhammad Ibnu

Musa Al Khawarizmi. Seorang ilmuwan Persia yang menulis kitab al jabr w’al muqabala

(rules of restoration and reduction) sekitar tahun 825 M. pengertian dari Algoritma adalah:

a. Langkah - langkah yang dilakukan agar solusi masalah dapat diperoleh.

b. Suatu prosedur yang merupakan urutan langkahlangkah yg berintegrasi.

c. Suatu metode khusus yang digunakan untuk menyelesaikan suatu masalah yang nyata.

B. KRITERIA PEMILIHAN ALGORITMA

1. Ada Output,

2. Efektifitas dan Efesiensi,

3. Jumlah Langkahnya Berhingga,

4. Berakhir, → ( SEMI ALGORITMA )

5. Terstruktur,

Suatu Algoritma yg terbaik (The Best): “Suatu algoritma harus menghasilkan output yg tepat

guna (efektif) dlm waktu yg relatif singkat & penggunaan memori yg relatif sedikit (efesien)

dgn langkah yg berhingga & prosedurnya berakhir baik dlm keadaan diperoleh suatu solusi

ataupun tdk ada solusinya “.

Contoh:

Sebuah prosedur untuk masalah menentukan akar kuadrat dari suatu bilangan Bulat Positif

yg di Input:

Baca bilangan Bulat Positif yg diinput, sebut saja sebagai A

1. Dinyatakan Nilai B adalah 0 2.

Page 5: MODUL LOGIKA DAN ALGORITMA - BSI

5

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

b. Sintak Pada Bahasa Pemrograman Java

Page 6: MODUL LOGIKA DAN ALGORITMA - BSI

6

Class LogikaalgoritmaApp

{

public static void main(string[] args)

{

system.out.println(“Logika

Algoritma”);

}

}

c. Sintak Pada Bahasa Pemrograman Python

print (“Logika Algoritma”)

D. TAHAPAN ANALISA ALGORITMA

Gambar 1. Tahap Penyelesaian Masalah

1. Bagaimana merencanakan suatu algoritma.

Dengan menentukan model atau desain untuk menyelesaikan suatu masalah sebagai

sebuah solusi, sehingga akan banyak terdapat variasi model yang diambil yang terbaik.

2. Bagaimana menyatakan suatu algoritma

Menentukan model algoritma yang digunakan untuk membuat barisan secara urut agar

mendapatkan solusi masalah. Model algortima tersebut dapat dinyatakan dengan

pseudocode atau flowchart.

Page 7: MODUL LOGIKA DAN ALGORITMA - BSI

7

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?

Page 8: MODUL LOGIKA DAN ALGORITMA - BSI

8

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?

P=15, Q=5, R=5

Maka P,Q,R adalah 15, 5, 5

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.

Page 9: MODUL LOGIKA DAN ALGORITMA - BSI

9

Buatlah pseudocode untuk menukarkan isi kedua bejana itu sedemikian sehingga bejana

A berisi larutan berwarna biru dan bejana B berisi larutan berwarna merah.

GAMBAR 2. ILUSTRASI BEJANA

GAMBAR3. ILUSTRASI PERTUKARAN ISI BEJANA

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

Page 10: MODUL LOGIKA DAN ALGORITMA - BSI

10

KONSEP TIPE DATA

1. Pengertian Tipe Data

Tipe data adalah himpunan yang dapat anda temui pada semua data. Dengan memahami

tipe data, anda juga dapat menentukan suatu nilai dapat dimiliki dari data tersebut ataukah

tidak. Salah satu bentuk penerapan tipe data dalam kehidupan sehari – hari adalah pada

bilangan bulat.

2. Pembagian Tipe Data

a. Tipe Sederhana (simple type)

• Int,Bool,Char

• Tipe Float

b. Tipe String

• Operasi string

c. Tipe Terstruktur (structured type)

• Array, Struct

3. Variabel & Konstanta :

Variabel :

• Untuk menyimpan suatu nilai, dan nilai yang ada padanya dapat diubah selama

eksekusi berlangsung.

• Penamaan variabel bersifat case sensitive (huruf besar & huruf kecil dianggap berbeda).

• Harus dideklarasikan dahulu sebelum digunakan

Contoh : int alas , tinggi ;

Konstanta :

Sebuah variabel dengan tipe data tertentu dan memiliki nilai data yang akan selalu tetap

di dalam program.

Contoh :

float phi;

const phi=3.14;

Tipe data Variabel

Page 11: MODUL LOGIKA DAN ALGORITMA - BSI

11

4. Tipe Data sederhana pada C++

a. Tipe int : tipe data yang nilainya tidak memiliki titik desimal.

Type Batas nilai Ukuran Memori

Short int -32768....32767 2 Byte

Int - 32768 ... 32767 2 Byte

Long - 2147483678 ...

2147283647 4 Byte

Unsigned integer 0-65535 2 Byte

b. Tipe float: tipe data yang nilainya merupakan pecahan (memiliki titik desimal).

Type Batas nilai Format

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

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

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

Tabel Operator Aritmatik dan Matematik

Operator Aritmatik &

Matematik ARTI

pow pemangkatan

sqrt Menghitung akar

% Sisa hasil bagi (modulus)

* , / Perkalian, Pembagian

+ , - Penjumlahan, Pengurangan

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

Page 12: MODUL LOGIKA DAN ALGORITMA - BSI

12

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

}

E. Flowchart (Diagram Alur)

Flowchart adalah suatu diagram yang menggambarkan susunan logika suatu program.

1. Simbol -simbol flowchart

Page 13: MODUL LOGIKA DAN ALGORITMA - BSI

13

GAMBAR 4. Simbol Flowchart

2. Diagram alir Program Komputer

Pada dasarnya suatu program komputer umumnya terdiri atas :

Pembacaan / pemasukan data ke dalam komputer

Melakukan komputasi/perhitungan terhadap data tersebut

Mengeluarkan / mencetak/ menampilkan hasilnya.

3. Struktur Flowchart

Struktur Flowchart terdiri dari 3 struktur, yaitu :

a. Struktur Sequence/ sederhana

Contoh:

Page 14: MODUL LOGIKA DAN ALGORITMA - BSI

14

Gambar 5. Flowchart Sederhana

b. Struktur Branching

Contoh:

Gambar 6. Flowchart Percabangan

c. Struktur Looping

Contoh:

Page 15: MODUL LOGIKA DAN ALGORITMA - BSI

15

Gambar 7. Flowchart Looping

Dgn menggunakan kotak masukan/baca/input/read, STRUKTUR SQUENCE / STRUKTUR

SEDERHANA Diagram yang alurnya mengalir secara berurutan dari atas ke bawah atau

dengan kata lain tidak adanya percabangan atau pengulangan .

LATIHAN 3:

1. Sebutkan yang termasuk dalam tipe data majemuk?

2. Sebutkan yang termasuk dalam tipe data tunggal?

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

Page 16: MODUL LOGIKA DAN ALGORITMA - BSI

16

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:

Gambar 8. Struktur Percabangan IF

2. Struktur Percabangan if ... else

Bentuk umum :

if (kondisi)

perintah1;

else

perintah 2;

Diagram alur dr pemakaian IF......ELSE sbb:

Gambar 9. Struktur Percabangan IF… ELSE

3. Struktur Percabangan Nested If

Pernyataan if yang berada dalam pernyataan if yang lain

Bentuk umum :

Page 17: MODUL LOGIKA DAN ALGORITMA - BSI

17

Gambar 10. Struktur Percabangan Nested IF

4. Percabangan Switch Case

untuk menangani pengambilan keputusan yang melibatkan sejumlah atau banyak

alternatif.

Bentuk Umum :

switch (ekspresi integer atau karakter)

{

case konstanta1:

...perintah;

break;

case konstanta2:

...perintah;

break;

default :

...perintah;

break;

if (syarat)

if (syarat)

....perintah;

else

....perintah;

else

if (syarat)

....perintah;

Else

....perintah;

Page 18: MODUL LOGIKA DAN ALGORITMA - BSI

18

LOOPING

(PERULANGAN)

Pemutaran kembali, terjadi ketika mengalihkan arus diagram alur kembali ke atas,

sehingga beberapa alur berulang beberapa kali.

Gambar 11. Struktur Looping

1. Perulangan For

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;

}

(1)Variabel A diberi harga 1

(2)Var. A berubah hrg menjadi 2

(3)Var. B diberi hrg sebesar hrg A dikalikan hrg A

(4) Harga B dicetak Lalu ke (2), (3),(4) & kembali lagi ke

(2) dstnya...

Jadi yang akan tercetak adalah harga-harga 4,9,16, ... dst

Page 19: MODUL LOGIKA DAN ALGORITMA - BSI

19

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:

Gamabr 3. Output Program Penggunaan For

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:

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;

}

Page 20: MODUL LOGIKA DAN ALGORITMA - BSI

20

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

Page 21: MODUL LOGIKA DAN ALGORITMA - BSI

21

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

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

Page 22: MODUL LOGIKA DAN ALGORITMA - BSI

22

Adapun programnya sebagai berikut:

#include <studio.h>

main()

{

int counter;

counter =0;

do

{

printf ("C++ \n");

counter++;

}

while (counter < 15);

}

4. Perulangan nested for

Perulangan for di dalam perulangan for lainnya.

Bentuk Umum :

For (inisialisasi; syarat pengulangan; pengubah nilai)

{

For (inisialisasi; syarat pengulangan; pengubah nilai)

{

perintah ;

}

}

Page 23: MODUL LOGIKA DAN ALGORITMA - BSI

23

STRUKTUR REKURSIF

Rekursif adalah suatu proses yang bisa memanggil dirinya sendiri.

Contoh konsep penggunaan Rekursif

Masalah : Memotong Roti tawar tipis-tipis sampai habis

Algoritma :

Jika roti sudah habis atau potongannya sudah paling tipis maka pemotongan roti

selesai.

Jika roti masih bisa dipotong, potong tipis dari tepi roti tersebut, lalu lakukan

prosedur 1 dan 2 untuk sisa potongannya.

Macam-macam Struktur Rekursif:

1. Fungsi Pangkat

2. Faktorial

Menghitung 10 pangkat n dengan menggunakan konsep rekursif.

Secara Notasi pemrograman dapat ditulis :

10 0 = 1 …………………………..(1 )

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

Contoh :

10 3 = 10 * 10 2

10 2 = 10 * 10 1

10 1 = 10 * 10 0

10 0 = 1

0! = 1

N! = N x (N-1)! untuk N > 0

Scr notasi pemrograman dapat ditulis sebagai :

FAKT (0) = 1 .............................................. (1)

FAKT(N) = N * FAKT (N-1).................................... (2)

Contoh :

FAKT(5) = 5 * FAKT(4)

FAKT(4) = 4 * FAKT(3)

FAKT(3) = 3 * FAKT(2)

FAKT(2) = 2 * FAKT(1)

FAKT(1) = 1 * FAKT(0)

Nilai Awal

Page 24: MODUL LOGIKA DAN ALGORITMA - BSI

24

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

Contoh Listing Faktorial

#include<iostream.h>

#include<iomanip.h>

Unsigned long faktorial (unsigned long);

Int main()

{

for (int i=0;

i:<=10; i++)

cout << setw(2) << i << “! Faktorial(i) << endl;

Page 25: MODUL LOGIKA DAN ALGORITMA - BSI

25

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

Page 26: MODUL LOGIKA DAN ALGORITMA - BSI

26

MENARA HANOI

GAMBAR 12. Menara Hanoi

Jika n=1, maka langsung pindahkan saja piringan dr tiang A ke tiang C & selesai.

Pindahkan n-1 piringan yg paling atas dr tiang A ke tiang B.

Pindahkan piringan ke n (piringan terakhir) dr tiang A ketiang C Pindahkan n-1

piringan dari tiang B ke tiang C.

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

Rumus Langkah Pemindahan :

N = Jumlah Piringan

F. Larik atau Array

1. Pengertian Larik atau Array

Larik atau Array adalah tipe terstruktur yang terdiri dari sejumlah komponen yang

mempunyai tipe data yang sama.

Variabel Array terdiri dari:

a. Array berdimensi satu

Bentuk Umum :

Tipe_Data Nama_Variabel [ukuran]

2N - 1

Page 27: MODUL LOGIKA DAN ALGORITMA - BSI

27

b. Array berdimensi dua

Bentuk Umum :

Tipe_Data Nama_Variabel [index-1] [index-2]

Contoh Listing Program C++ Array Dimensi dua:

int i, j ;

int tabel [3] [2] ;

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

{

for (j=0; j<=1 ; j++)

{

cout<< “data ke - ”<< i << j<<endl;

cout<< “nilai =“ ;

cin>> tabel [ i ] [ j ];

}

}

Page 28: MODUL LOGIKA DAN ALGORITMA - BSI

28

METODE DIVIDE AND CONQUER

Bentuk Umum Proses Metode D And C dapat dilihat sebagai berikut :

GAMBAR 13. Bentuk Umum Metode D an C

1. Metode Selection Sort

Tehnik pengurutan dgn cara pemilihan elemen atau proses kerja dgn memilih elemen

data terkecil utk kemudian dibandingkan & ditukarkan dgn elemen pd data awal, dst s/d

seluruh elemen shg akan menghasilkan pola data yg telah disort.

Prinsip Kerja dari Teknik Selection Sort ini adalah :

Pengecekan dimulai data ke-1 sampai dengan data ke-n

Tentukan bilangan dengan Index terkecil dari data bilangan tersebut

Tukar bilangan dengan Index terkecil tersebut dengan bilangan pertama ( I = 1 ) dari data

bilangan tersebut

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

yg optimal.

Page 29: MODUL LOGIKA DAN ALGORITMA - BSI

29

2. Metode Buble Sort

Tehnik Sort yg bekerja dgn menggunakan prinsip gelembung (bubble) udara yg akan

bergerak naik ke atas secara satuper satu.

Prinsip Kerja dari Bubble Sort adalah : 1. Pengecekan mulai dari data ke-1 sampai data

ke-n 2. Bandingkan data ke-n dengan data sebelumnya (n-1) 3. Jika lebih kecil maka

pindahkan bilangan tersebut dengan bilangan yg ada didepannya ( sebelumnya ) satu

persatu (n-1,n-2,n-3,....dst) 4. Jika lebih besar maka tidak terjadi pemindahan 5. Ulangi

langkah 2 dan 3 s/d sort optimal.

Contoh : 22 10 15 3 8 2

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

Page 30: MODUL LOGIKA DAN ALGORITMA - BSI

30

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.

4. Metode Insertion Sort

Prinsip dasar Insertion adalah secara berulang-ulang menyisipkan / memasukan setiap

elemen. ke dlm posisinya / tempatnya yg benar.

a. Prinsip Kerja Insertion Sort adalah

Page 31: MODUL LOGIKA DAN ALGORITMA - BSI

31

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.

Lakukan Iterasi selanjutnya sampai iterasi ke- 6

Catatan : Setiap ada pemindahan, maka elemen. Yang sudah ada akan di insert sehingga

akan bergeser ke belakang.

5. Metode 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: 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

Page 32: MODUL LOGIKA DAN ALGORITMA - BSI

32

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 33: MODUL LOGIKA DAN ALGORITMA - BSI

33

TEKHNIK SEARCHING

(PENCARIAN)

1. Teknik Pencarian Tunggal

a. Teknik Sequential Search

Pencarian Sekuensial (sequential searching) atau pencarian berurutan sering

disebut pencarian linear merupakan metode pencarian yang paling sederhana. Pencarian

beruntun adalah proses membandingkan setiap elemen larik satu per satu secara

beruntun, mulai dari elemen pertama sampai elemen yang dicari ditemukan atau seluruh

elemen sudah diperiksa

Pencarian berurutan menggunakan prinsip sebagai berikut :

1. data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari sampai

data tersebut ditemukan atau tidak ditemukan.

2. Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai dengan

jumlah data.

3. Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari.

4. Apabila sama, berarti data telah ditemukan. Sebaliknya apabila sampai akhir

pengulangan tidak ada data yang sama, berarti data tidak ada.

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.

b. Teknik Binary Search

Binary Search adalah algoritma pencarian untuk data yang telah terurut, yaitu data

yang diurutkan dari yang besar ke kecil ataupun sebaliknya, pencarian dilakukan dengan

Page 34: MODUL LOGIKA DAN ALGORITMA - BSI

34

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

CONTOH STUDY KASUS :

3 5 7 10 13 17 21 28

Diketahui x = 17

1. Mencari nilai low dan high, nilai awal low dan high dapat ditentukan dari nilai

terkecil dan nilai terbesar dari suatu indeks.

Didalam contoh, nilai indeks terkecil=1 dan nilai indeks terbesar=8. Sehingga dapat

ditentukan nilai low=1 dan nilai high=8.

2. Jika nilai low <= high maka dapat mencari nilai mid. Jika nilai low>high, maka

pencarian gagal. Dalam soal diketahui low=1 dan high=8.Maka 1<=8, memenuhi

syarat. Maka dapat mencari nilai MID.MID = (low+high) div 2

= (1 + 8) div 2

= 9 div 2

= 4

3. Bandingkan nilai X dengan nilai dari indeks yang dihasilkan dari nilai MID.X

MID17 > 10

Page 35: MODUL LOGIKA DAN ALGORITMA - BSI

35

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.

2. Teknik Pencarian Nilai MaxMin

a. Teknik StraitMaxMin

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.

c. PENJELASAN SEARCHING STRAIT MAXIMUM :

Untuk menjelaskan proses pencarian data terbesar atau data maksimum dari

sekelompok data, di bawah ini akan diberikan contohnya

terlebih dahulu.Jika diketahui sebuah sebuah larik data atau vector A yang

memiliki 6 elemen data,sebagai berikut:

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,

Page 36: MODUL LOGIKA DAN ALGORITMA - BSI

36

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.

PENJELASAN SEARCHING STRAIT MINIMUM

Pada kasus yang lain, jika diinginkan mencari data terkecil atau data minimum dari

sekelompok data pada dasarnya langkah-langkah yang dilakukan adalah sama dengan

algoritma prosedur pencarian data maksimum sebagaiman dijelaskan sebelumnya.

Perbedaannya adalah terletak pada langkah ke-4, yaitu pertukaran data akan dilakukan jika

data pada ukuran berikutnya memiliki harga yang lebih rendah dari nilai sebelumnya. Pada

vector A dalam contoh sebelumnya, nilai 15 adalah merupakan data minimum atau terkecil

dari semua data pada vector A.

Waktu tempuh/time complexity yang digunakan untuk menyelesaikan pencarian hingga

mendapatkan solusi yang optimal terbagi atas :

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.

CONTOH KASUS BEST CASE :

Pada Himpunan A yang berisi {5,-4,9,7} dilakukan pencarian elemen max & min dengan

Page 37: MODUL LOGIKA DAN ALGORITMA - BSI

37

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

CONTOH KASUS AVERAGE CASE :

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.

Page 38: MODUL LOGIKA DAN ALGORITMA - BSI

38

STUDI KASUS

PERCABANGAN DAN PERULANGAN

A. Contoh Kasus 1: Kalkulator sederhana

Buatlah programkalkulator sederhana yang dapat melakukan operasi +, -, * dan /

terhadap 2 bilangan.

Contoh:

Input: Masukkan bilangan 1: 16

Masukkan bilangan 2: 4 Masukkan operator: /

Output: Hasilnya dari 16 / 4 adalah 4

1. Cara Penyelesaian Masalah:

Program akan menerima input berupa bilangan 1, bilangan 2, dan operator. Kemudian

program akan mengecek nilai operator, jika operator yang dimasukkan adalah ‘+’

maka operasinya adalah penjumlahan, jika operator yang dimasukkan adalah ‘-’ maka

operasinya adalah pengurangan, jika operator yang dimasukkan adalah ‘*’ maka

operasinya adalah perkalian, dan jika operator yang dimasukkan adalah ‘/’ maka

operasinya adalah pembagian.

2. Input:

Input yang dibutuhkan untuk program ini adalah:

a. Bilangan pertama dalam bentuk angka (integer)

b. Bilangan kedua dalam bentuk angka (integer)

3. Output:

Program ini akan menghasilkan output yang berupa:

a. Nilai hasil perhitungan yang bertipe floating point>

4. Struktur Data yang Dibutuhkan:

a. Variabel bertipe integer untuk menyimpan data bilangan 1 --> variabel bil1

b. Variabel bertipe integer untuk menyimpan data bilangan 2 --> variabel bil2

c. Variabel bertipe char untuk menyimpan jenis operator --> variabel op

d. Variabel bertipe float untuk menyimpan hasil perhitungan --> variabel hasil

5. Logika Pemrograman:

Page 39: MODUL LOGIKA DAN ALGORITMA - BSI

39

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:

Gambar 14. Flowchart Studi Kasus

B. Contoh Kasus 2: Tumpukan bilangan

1. Permasalahan

Buatlah program untuk menampilkan tumpukan bilangan.

2. Cara Penyelesaian Masalah:

Untuk membuat tumpukan bilangan seperti pada contoh kasus diatas, diperlukan dua

level perulangan. Perulangan pertama untuk tingkatan, sedangkan perulangan kedua

untuk mencetak angka pada tiap tingkatan.

3. Input:

Input yang dibutuhkan untuk program ini adalah:

a. Jumlah tumpukan dalam bentuk angka (integer)

4. Output:

Program ini akan menghasilkan output yang berupa:

a. Tumpukan angka dengan jumlah tumpukan sesuai nilai angka yang dimasukkan

5. Struktur Data yang Dibutuhkan:

Page 40: MODUL LOGIKA DAN ALGORITMA - BSI

40

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:

Gambar 15. Flowchart Studi Kasus

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.

Page 41: MODUL LOGIKA DAN ALGORITMA - BSI

41

STUDI KASUS

TUMPUKAN (STACK)

A. Contoh Kasus 1: Membalik kalimat

1. Permasalahan

Buatlah flowchart untuk membalik kalimat.

Contoh:

Input: Masukkan kalimat = “APA KABAR”

Output: “RABAK APA”

2. Cara Penyelesaian Masalah:

Untuk membalik kalimat dapat diselesaikan menggunakan dua cara. Pertama dengan

menggunakan array. Sedangkan yang kedua dengan memanfaatkan stack. Stack

(tumpukan) merupakan struktur data yang dalam pengelolaan datanya bersifat Last In

First Out (LIFO), yaitu data yang terakhir dimasukkan akan dikeluarkan pertama kali.

Data yang dimasukkan kedua dari terakhir akan dikeluarkan yang kedua. Demikian

seterusnya, sehingga data yang pertama kali dimasukkan akan dikeluarkan terakhir.

3. Input:

Input yang dibutuhkan untuk program ini adalah:

a. Kalimat yang akan dibalik dalam bentuk array of character (string)

4. Output:

Program ini akan menghasilkan output yang berupa:

a. Kalimat yang sudah dibalik dalam bentuk string

5. Struktur Data yang Dibutuhkan:

a. Variabel bertipe string (array of character) untuk menyimpan kalimat awal -->

variabel kalimat

6. Logika Pemrograman:

a. Operasi perulangan dengan menggunakan ‘DO ... WHILE’ atau ‘WHILE ... DO’

7. Flowchart

Flowchart untuk penyelesaian menggunakan array of character

Page 42: MODUL LOGIKA DAN ALGORITMA - BSI

42

Gambar 16. Flowchart Studi Kasus

Flowchart untuk penyelesaian menggunakan stack

Gambar 17. Flowchart Penyelesaian

B. Contoh Kasus 2: Membalik bilangan

1. Permasalahan

Buatlah flowchart untuk menampilkan bilangan dalam urutan terbalik.

Contoh

Page 43: MODUL LOGIKA DAN ALGORITMA - BSI

43

Input: Masukkan kalimat : 1234

Output: Hasil : 4321

2. Cara Penyelesaian Masalah:

Proses untuk membalik urutan bilangan berbeda dengan membalik kalimat. Suatu

kalimat bisa dianggap sebagai array dari karakter, sedangkan bilangan tidak bisa.

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:

a. Bilangan yang akan dibalik dalam bentuk integer

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

Page 44: MODUL LOGIKA DAN ALGORITMA - BSI

44

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:

Input: Masukkan kalimat = “KASUR RUSAK”

Output: Kalimat termasuk palindrom

Input: Masukkan kalimat = “MAKAN MALAM”

Output: Kalimat tidak termasuk palindrome

Page 45: MODUL LOGIKA DAN ALGORITMA - BSI

45

DAFTAR PUSTAKA

[1] Jan Hendrik Rapar.1996. Pengantar Asas-asas Penalaran Sistematis.Kanisius Media:

Yogyakarta.

[2] Jogiyanto.2016. Analisis dan Disain Sistem Informasi.Andi Offset:Yogyakarta

[3] Sugiono.2012. Penelitian Kualitatif, Kuantatif, Mix dan R&D. Alafabeta:Bandung.