Anda di halaman 1dari 39

Pembelajaran 1.

Dasar Algoritma Pemrograman

A. Kompetensi
Setelah mempelajari keseluruhan materi pada pembelajaran ini, Anda diharapkan
dapat :
1. Merancang alur logika pemrograman
2. Menggunakan prosedur dan fungsi
3. Mengidentifikasikan kompleksitas algoritma

B. Indikator Pencapaian Kompetensi


Setelah mempelajari materi dalam pembelajaran ini, Anda dapat :
1. Menjelaskan varian dan invarian
2. Membuat alur logika pemrograman
3. Menerapkan teknik dasar algoritma umum
4. Menggunakan prosedur dan fungsi
5. Mengidentifikasikan kompleksitas algoritma

C. Uraian Materi

1. Varian dan Invarian

a. Varian dan InVarian


Varian adalah jenis atau turunan dari alur logikal yang digunakan sebelum
pembuatan aplikasi (pra-built aplication) sedangkan invarian adalah bentuk
logical dari external algoritma (fungsi/program bagian) yang terintegrasi
dengannya. Varian adalah variabel yang tidak mempunyai tipe data
sedangkan invarian adalah variabel yang mempunyai tipe data.
b. Identifier (Pengenal)
Pengenal atau Identifier adalah suatu nama yang biasa dipakai dalam
pemrograman untuk menyatakan variabel, konstanta, tipe data, fungsi atau
prosedur.
c. Variabel
Variabel adalah tempat programmer untuk dapat mengisi atau
mengosongkan nilainya dan memanggil kembali apabila dibutuhkan.

Rekayasa Perangkat Lunak | 5


Variabel merupakan representasi data dari dunia nyata yang mempunyai
suatu nilai. Dalam pengolahan data menggunakan komputer, variabel ini
akan disimpan dalam memori komputer (identifier). Variabel ini mempunyai
nilai yang dapat diubah-ubah.
Contoh:
• username = “angga”
• Nama = “Buku”
• Harga = 2500
• HargaTotal = 34000
d. Konstanta
Konstanta adalah identifier yang nilai datanya bersifat tetap dan tidak bisa
diubah.
Contoh :
program yang menggunakan nilai pi (3.14159) yang mungkin akan banyak
muncul pada kode program, maka dibuat pi sebagai konstanta.
e. Tipe Data
Tipe data adalah jenis data yang dapat diolah oleh komputer untuk
memenuhi kebutuhan dalam pemrograman komputer. Ketepatan pemilihan
tipe data pada variabel atau konstanta akan sangat menentukan
pemakaian sumberdaya komputer (terutama memori komputer). Terdapat
banyak tipe data yang tersedia tergantung dari jenis bahasa pemrograman
yang dipakai. Namun secara umum dapat dikelompokkan seperti berikut:

6 | Rekayasa Perangkat Lunak


Gambar 1. Klasifikasi ragam tipe data

1) Tipe Primitive merupakan sebuah tipe data dasar yang tersedia


secara langsung pada suatu bahasa pemrograman
2) Tipe data Numeric digunakan pada variabel (besaran yang nilainya
berubah-ubah) atau konstanta (besaran yang nilainya tetap) untuk
menyimpan nilai dalam bentuk bilangan bulat atau pecahan.
• Tipe data Integer (tipe data yang digunakan untuk
merepresentasikan bilangan bulat baik positif maupun negatif).
Contoh: Bilangan 1 : Integer (contoh deklarasi variabel bilangan
1 dengan tipe data integer).
Bilangan  10 (contoh pmberian nilai variabel bilangan 1
dengan angka 10
• Tipe data real (tipe data yang digunakan untuk
merepresentasikan bilangan yang mengandung pecahan baik
postif maupun negatif).
Contoh:
Pecahan 1 : real(contoh deklarasi variabel pecahan 1 dengan
tipe data real)
Pecahan 1  5,4 (contoh pemberian nilai variabel pecahan 1
dengan angka 5,4)

Rekayasa Perangkat Lunak | 7


3) Tipe data Character
Nilai data karakter berupa sebuah karakter. Ranah nilai untuk tipe
data ini adalah:
• Semua huruf di dalam alphabet ( a, b, .. z ; A, B, … Z)
• Semua angka ( 0,1,2 ..9)
• Tanda baca (. , ; ! ? dll)
• Operator aretmetika ( +, -, *, / )
• Karakter khusus (“$”, “#”,”@”,”^” dll)
Contoh :huruf,angka : char {contoh pendeklarasian variabel huruf
dan angka} Huruf  ‘A’ {contoh pemberian nilai variabel huruf
dengan karakter ‘A’}.
4) Tipe data String
Tipe data string hanya dapat digunakan menyimpan teks atau
apapun sepanjang berada dalam tanda
Contoh:
nama : String  “namaku” ; ‘contoh pendeklarasian variabel nama
bertipe data string dan pemberian nilai variabel nama dengan
“namaku”
5) Tipe data Boolean
Tipe data Boolean digunakan untuk menyimpan nilai True/False
(Benar/Salah)
6) Tipe data Array
Tipe data yang sudah terstruktur dengan baik, meskipun masih
sederhana. Array mampu menyimpan sejumlah data dengan tipe
yang sama (homogen) dalam sebuah variabel. Array disusun oleh
satu field ( array 1 demensi) atau lebih filed (array n demensi). Array
ini disusun dengan satu buah tipe data dasar. Data array ditandai
dengan menambahkan karakter [ ] di belakang nama variabel pada
saat deklarai variabel. Setiap array mempunyai ukuran atau
panjang data yang dapat kita kita atur. Ukuran array ini yang
menyatakan jumlah data atau baris yang akan kita tampung. Untuk
memberikan ukuran dengan memberikan nilai angka di antara
tanda [ dan ]

8 | Rekayasa Perangkat Lunak


Contoh :
Algoritma Mendeklarasikan variabel array untuk menampung data
integer. Deklarasi variabel : Nilai[5] : integer {array satu demensi
menampung 5 data integer } Nilai[5][2] : integer { array 2 demensi
menampung 10 data integer}
7) Tipe data Record atau Struct
Tipe data record mampu menampung banyak data dengan tipe data
berbeda-beda (heterogen)
8) Tipe data Image
Image atau gambar atau citra merupakan tipe data grafik
9) Tipe data Date Time
Nilai data untuk tanggal (Date) dan waktu (Time) secara internal
disimpan dalam format yang spesifik
10) Tipe data Lain
a) Subrange
Tipe data subrange merupakan tipe data bilangan yang
mempunyai jangkauan nilai tertentu
b) Enumerasi.
Tipe data ini merupakan tipe data yang mempunyai elemen-
elemen yang harus disebut satu persatu
11) Tipe Composite (tipe data bentukan)
Merupakan sebuah tipe data bentukan yang terdiri dari dua atau
lebih tipe data primitive.Tipe data bentukan dalah tipe data yang
didefinisikan oleh pemrogram ( user defined type). Tipe ini disusun
olah satu atau lebih tipe dasar. Terdapat dua macam tipe data
bentukan yaitu:
a) Tipe dasar yang diberi nama dengan tipe baru
Kadang-kadang pemrogram ingin memberi nama baru terhadap
tipe dasar yang sudah dikenal. Alasan pemberian nama tipe

Rekayasa Perangkat Lunak | 9


baru mungkin agar nama baru tersebut lebih akrab atau user
friendly dan lebih mudah diinterprestasikan oleh orang yang
membaca teks algoritma. Kita dapat memberi nama baru untuk
tipe dasar tersebut dengan kata kunci type
Contoh :
- type Bilangan Bulat : integer{ Deklarasi tipe data }
- var1 : Bilangan Bulat {Deklarasi variabel var1 bertipe
Bilangan Bulat }
Bilangan Bulat adalah tipe tipe data yang bilangan bulat yang
sama dengan tipe integer. Apabila kita mempunyai sebuah
variabel yang bernama var1 dan bertipe Bilangan Bulat.
Variabel var1 tersebut saja bertipe integer
b) Rekaman / record / tipe terstruktur
Rekaman disusun oleh satu atau lebih filed. Tipe field
menyimpan data dari tipe dasar teretntu atau tipe bentukan lain
yang sudah didefinisikan sebelumnya. Nama rekaman
ditentukan oleh programmer. Karena strukturnya tersusun oleh
field-filed maka rekaman dinamakan juga tipe stuktur
(structures type)
Field 1 Field 2 Field 3 ........ Filed n

Contoh 1 :
Mendeklarasikan tipe data bentukan untuk menampung data
titik koordinat kartesian yang mempunyai dua variabel,
dinyatakan sebagai (x,y), dengan x adalah nilai absis dalam
arah sumbu X dan y adalah nilai ordinat dalam arah sumbu Y.
x dan y adalah anggota himpunan bilangan real ( y dan x € R ).

x y

Deklarasi tipe data


Type titik : record < x : real, y : real>
Type titik : struct< x : integer, y : integer>
Dekalrasi variabel
Posisi1 : titik

10 | Rekayasa Perangkat Lunak


Akses variabel :
Jika dideklarasikan variebel dengan nama posisi1 bertipe
titik maka cara untuk mengakses tiap field pada rekaman
posisi1 adalah :
posisi1.x (mengacu ke filed x)
posisi1.y (mengacu ke field y)

2. Membuat Alur Logika Pemrograman

a. Konsep Algoritma Pemrograman


1) Definisi Algoritma
“Algoritma merupakan suatu prosedur, urutan langkah-langkah atau
tahapan-tahapan sistematis, jelas dan logis untuk menyelesaikan
permasalahan.” (Microsoft Press,”Computer and Internet Dictionary”,
1998). Langkah logis dalam Algoritma harus dapat ditentukan, bernilai
salah atau benar. Algoritma merupakan alur pemikiran dalam
menyelesaikan suatu pekerjaan yang dituangkan secara tertulis. (Moh
Sjukani, “Algoritma dan Struktur Data dengan C, C++, dan Java”).
Menurut wikipedia, algoritma adalah metode efektif, diekspresikan
sebagai rangkaian terbatas dari instruksi-instruksi yang telah
didefinisikan dengan baik, untuk menghitung sebuah fungsi.
Dari beberapa definisi di atas dapat disimpulkan bahwa: 1) Algoritma
harus mengikuti suatu urutan aturan tertentu dan tidak boleh melompat-
lompat. 2) Algoritma seseorang dengan yang lain dapat berbeda-beda
karena mempunyai alur pikir yang berbeda-beda pula, meskipun untuk
menyelesaikan permasalahan yang sama. 3) Langkah demi langkah
secara eksak harus dapat memecahkan suatu masalah. 4) Algoritma
dapat diwujudkan berupa kalimat, gambar atau tabel tertentu.
2) Aspek Penting dari Algoritma
Menurut Donald E. Knuth,(.......) algoritma harus mempunyai lima ciri
penting, yaitu:
• Finiteness. Algoritma harus berhenti setelah mengerjakan sejumlah
langkah tertentu atau terbatas.

Rekayasa Perangkat Lunak | 11


• Definiteness. Setiap langkah harus didefinisikan secara tepat, tidak
boleh membingungkan (ambiguous)
• Input. Sebuah algoritma memiliki nol atau lebih input yang diberikan
kepada algoritma sebelum dijalankan
• Output. Sebuah algoritma memiliki satu atau lebih output, yang
biasanya bergantung kepada input.
• Effectiveness. Setiap algoritma diharapkan miliki sifat efektif. Setiap
langkah harus sederhana sehingga dapat dikerjakan dalam
sejumlah waktu yang masuk akal.
3) Ragam Struktur Algoritma
Algoritma berisi langkah-langkah penyelesaian suatu masalah.
Langkah-langkah tersebut dapat berupa runtunan aksi (sequence),
pemilihan (selection), pengulangan aksi (iteration atau looping) atau
kombinasi dari ketiganya. Struktur dasar penyajian algoritma
dibedakan menjadi tiga, yaitu:
• Struktur runtunan (sequence), struktur algoritma yang mempunyai
pernyataan pernyataan secara berurutan sequential.
• Struktur pemilihan atau percabangan (selection), struktur algoritma
atau program yang menggunakan pemilihan atau penyeleksian
kondisi.
• Struktur perulangan, struktur algoritma atau program yang
pernyataannya akan dieksekusi berulang-ulang sampai kondisi
tertentu.
Dalam Algoritma, tidak dipakai simbol-simbol atau sintaks dari suatu
bahasa pemrograman tertentu, melainkan bersifat umum dan tidak
tergantung pada suatu bahasa pemrograman apapun juga. Notasi-
notasi algoritma dapat digunakan untuk seluruh bahasa pemrograman
manapun.
b. Metode Penyajian Algoritma
Penyajian algoritma secara garis besar dapat dibedakan menjadi dua yaitu:
1) berbentuk Tulisan dan 2) berbentuk Gambar. Algoritma yang disajikan
dengan bentuk tulisan dapat menggunakan aturan bahasa natural (alami)
atau pseudocode. Bahasa natural menggunakan struktur bahasa tertentu

12 | Rekayasa Perangkat Lunak


(misalnya struktur bahasa Indonesia atau bahasa Inggris). Pseudocode
adalah kode-kode tertentu dan mirip dengan kode bahasa pemrograman
(misal Pascal, C, C++) sehingga lebih tepat digunakan untuk
menggambarkan algoritma yang akan dikomunikasikan kepada
pemrogram (programmer). Tidak ada aturan atau kaidah secara khusus
bagaimana menuliskan algoritma. Jika algoritma dianalogikan sebagai
kotak hitam, maka setidaknya terdapat tiga komponen dalam kotak hitam
tersebut yaitu input (masukan, bahan mentah), proses (instruksi atau aksi,
reaksi) dan output (keluaran, bahan jadi).

Gambar 2. Komponen-komponen algoritma

1) Penyajian Algoritma menggunakan Bahasa natural (Alami)


contoh penulisan algoritma menggunakan bahasa natural (sruktur
bahasa indonesia) dengan struktur runtunan yang menjelaskan suatu
proses tertentu untuk menyelesaikan permasalahan.
Rumusan permasalahan: bagaimana mengubah beras menjadi nasi.
Penyelesaian masalah: menggunakan alat bantu penanak nasi
elektronik (rice cooker).
Judul Algoritma: Menanak nasi menggunakan rice cooker. Langkah-
langkah (deskripsi) algoritma:
- Mengambil/menyiapkan panci penanak nasi.
- Masukkan beras ke panci.
- Masukkan air ke panci.
- Mencuci beras dengan bersih.
- Membuang air pencuci dari panci.
- Masukkan air untuk memask secukupnya.
- Membersihkan/lap luar panci sampai kering.
- Menutup ricecooker.
- Menyambungkan kabel ricecooker ke stop kontak
- Menekan tombol ON di ricecooker sehingga lampu bewarna merah
(cook) menyala.

Rekayasa Perangkat Lunak | 13


- Menunggu beberapa menit sampai lampu di ricecooker berubah
bewarna hijau (warm) yang artinya nasi sudah masak.
- Nasi siap untuk dimakan.
2) Penyajian Algoritma menggunakan Pseudocode
Pseudocode adalah salah satu cara untuk menggambarkan algoritma
dalam bentuk tulisan, menggunakan beberapa notasi tulisan (code)
yang menyerupai kode program dalam bahasa pemrograman. Tidak
ada aturan baku untuk menuliskanan algoritma menggunakan
pseudocede. Setiap algoritma setidaknya terdiri dari tiga bagian yaitu:
1. Judul (Header), 2. Kamus (Deklarasi), 3. Algoritma (Deskripsi). Pada
setiap bagian apabila akan diberikan sebuah komentar atau
penjelasan maka komentar dituliskan di antara tanda kurung kurawa
contoh { Komentar }. Pernyataan atau notasi algoritmis yang dituliskan
di antara tanda kurawa tidak akan dieksekusi oleh program.
Judul adalah bagian teks algoritma yang digunakan sebagai tempat
mendefinisikan nama dengan menentukan apakah teks tersebut
adalah program, prosedur atau fungsi. Setelah judul disarankan untuk
menuliskan spesifikasi singkat dari teks algoritma tersebut. Nama
algoritma sebaiknya singkat namun cukup menggambarkan apa yang
akan dilakukan oleh algoritma tersebut
Kamus adalah bagian teks algoritma sebagai tempat untuk
mendefinisikan beberapa hal antara lain: 1) Nama type data. 2) Nama
konstanta. 3) Nama variable. 4) Nama fungsi. 5) Nama
prosedur.Algoritma (deskripsi) adalah bagian inti dari suatu algoritma
yang berisi instruksi atau pemanggilan aksi yang telah didefinisikan
Contoh:

14 | Rekayasa Perangkat Lunak


Keterangan:
• Judul (header) dalam algoritma di atas adalah: Program
Luas_segiEmpat.
• Kamus: mendeklarasikan beberapa variabel panjang, lebar dan
luas yang masing-masing bertipe float.
• Pernyataan lebar: Integer  4 terdiri dari dua pernyataan yaitu:
“lebar : Integer“ merupakan deklarasi varibel lebar bertipe Integer
dan “lebar  4“ merupakan inisialisasi atau pemberian nilai
variabel lebar dengan 4
• Panjang  5 mengisi variabel panjang dengan 5 •
• Luas  panjang * lebar adalah menghitung panjang dikalikan
lebar dan menyimpannya ke variabel Luas.
• Pernyataan constant phi : real  3.14159 terdiri dari dua
pernyataan constant phi : real merupakan deklarasi variabel phi
bertipe pecahan dan phi  3.14159 merupakan pemberian nilai
konstanta dengan nilai 3.14159
• write(......) adalah notasi algoritmis dalam pseudocode yang
berfungsi untuk menampilkan atau mencetak string atau isi
variabel yang berada pada tanda ( ...) ke layar piranti keluaran
atau monitor. Notasi write(......) dapat pula dituliskan dengan
notasi output(.......)
Contoh 2:

Rekayasa Perangkat Lunak | 15


Contoh 3

:
3) Penyajian Algoritma menggunakan flowchart
Flowchart adalah suatu metode untuk menggambarkan tahap-tahap
pemecahan masalah (algoritma) dengan merepresentasikan simbol-
simbol tertentu yang mudah dimengerti dan digunakan. Tujuan utama
dari penggunaan flowchart adalah untuk menggambarkan algoritma
secara sederhana terurai, rapi dan jelas.
Flowchart merupakan penggambaran secara grafik dari langkah-
langkah dan urut-urutan prosedur dari suatu program. Flowchart dapat
membantu analist system dan programmer untuk memecahkan
masalah ke dalam segmen-segmen yang lebih kecil dan menolong
dalam menganalisis alternatif-alternatif lain dalam pengoperasian.
Flowchart biasanya mempermudah penyelesaian suatu masalah

16 | Rekayasa Perangkat Lunak


khususnya masalah yang perlu dipelajari dan dievaluasi lebih lanjut.
Terdapat beberapa jenis atau model dalam penulisan flowchart, yang
biasa digunakan antara lain adalah:
a) Flowchart Sistem (System Flowchart)
b) Flowchart Paperwork / Flowchart Dokumen (Document
Flowchart)
c) Flowchart Skematik (Schematic Flowchart)
d) Flowchart Program (Program Flowchart)
e) Flowchart Proses (Process Flowchart)

a) Flowchart Sistem
Flowchart Sistem merupakan bagan yang menunjukkan alur kerja
atau apa yang sedang dikerjakan di dalam sistem secara
keseluruhan dan menjelaskan urutan dari prosedur-prosedur yang
ada di dalam sistem. Dengan kata lain, flowchart merupakan
deskripsi secara grafik dari urutan prosedur-prosedur yang
terkombinasi yang membentuk suatu sistem.
Flowchart sistem terdiri dari data yang mengalir melalui sistem dan
proses yang mentransformasikan data itu. Salah satu contoh
system flowchart berikut digunakan untuk merepresentasikan
bagian-bagain dari perangkat komputer yang terdiri dari keyboard
sebagai unit input, monitor sebagai unit keluaran, CPU sebagai
unit pemroses dan disket sebagai unit penyimpan data.
b) Flowchart Paperwork/Flowchart Dokumen
Flowchart Paperwork adalah flowchart yang digunakan untuk
menelusuri alur dari data yang ditulis melalui sistem. Flowchart
Paperwork sering disebut juga dengan Flowchart Dokumen.
Kegunaan utamanya adalah untuk menelusuri alur form dan
laporan sistem dari satu bagian ke bagian lain baik bagaimana alur
form dan laporan diproses, dicatat dan disimpan.
c) Flowchart Skematik
Flowchart Skematik mirip dengan Flowchart Sistem yang
menggambarkan suatu sistem atau prosedur. Flowchart Skematik
ini bukan hanya menggunakan simbol-simbol flowchart standar,

Rekayasa Perangkat Lunak | 17


tetapi juga menggunakan gambar-gambar komputer, peripheral,
form-form atau peralatan lain yang digunakan dalam sistem.
Flowchart Skematik digunakan sebagai alat komunikasi antara
analis sistem dengan seseorang yang tidak familiar dengan
simbol-simbol flowchart yang konvensional. Pemakaian gambar
sebagai ganti dari simbol-simbol flowchart akan menghemat waktu
yang dibutuhkan oleh seseorang untuk mempelajari simbol
abstrak sebelum dapat mengerti flowchart.
d) Flowchart Program
Flowchart Program dihasilkan dari Flowchart Sistem. Flowchart
Program merupakan keterangan yang lebih rinci tentang
bagaimana setiap langkah program atau prosedur sesungguhnya
dilaksanakan. Flowchart ini menunjukkan setiap langkah program
atau prosedur dalam urutan yang tepat saat terjadi. Programmer
menggunakan flowchart program untuk menggambarkan urutan
instruksi dari program komputer. Analis Sistem menggunakan
flowchart program untuk menggambarkan urutan tugas-tugas
pekerjaan dalam suatu prosedur atau operasi. Untuk
menggambarkan program flowchart ini dapat dibedakan menjadi
dua jenis atau model yaitu sebagai berikut :
▪ Conceptual program flowchart, digunakan untuk
menggambarkan alur dari suatu pemecahan masalah secara
global saja.
▪ Detail program flowchart, digunakan untuk menggambarkan
alur pemecahan secara terperinci.
e) Flowchart Proses
Flowchart Proses merupakan teknik penggambaran rekayasa
industrial yang memecah dan menganalisis langkah-langkah
selanjutnya dalam suatu prosedur atau sistem. Flowchart Proses
digunakan oleh perekayasa industrial dalam mempelajari dan
mengembangkan proses-proses manufacturing. Dalam analisis
sistem, flowchart ini digunakan secara efektif untuk menelusuri
alur suatu laporan atau form.

18 | Rekayasa Perangkat Lunak


c. Komponen-komponen Flowchart Program
Terdapat beberapa hal yang harus diperhatikan agar algoritma mudah
ditranslasikan ke bahasa pemrograman, yaitu: 1) Dibutuhkan
pendeklarasian variabel agar data tidak tergantung pada nilai masukan. 2)
Jika menggunakan variabel perlu dipertimbangkan pemilihan tipe data. 3)
Pemilihan instruksi yang tepat karena beberapa instruksi mempunyai
kegunaan yang sama tetapi memiliki kelebihan dan kekurangan yang
berbeda. 4) Aturan sintaksis dalam bahasa pemrograman yang akan
digunakan. 5) Tidak perlu memikirkan bagaimana tampilan hasil disajikan.

Tabel 1. Ragam Simbol yang sering dipakai dalam Program flowchart

Notasi/Smbol/ Nama Notasi/ Keterangan


Komponen Simbol
Terminal Point untuk memulai dan
mengakhiri proses
Input-Outpu untuk memberikan nilai data
dari perangkat masukan atau
menampilkan data ke
perangkat keluaran
Processing untuk melakukan proses atau
instruksi.
Preparation untuk memberikan nilai awal
variabel,menyiapkan
penyimpanan di dalam
storage biasanya
menggunakan kode
program)
Decision/keputusan untuk memilih proses atau
keputusan berdasarkan
kondisi yang ada. Simbol ini
biasanya ditemui pada
flowchart program
Predefined Process untuk menunjukkan
/ Simbol Proses pelaksanaan suatu bagian
Terdefinisi prosedur (sub-proses).
Dengan kata lain, prosedur
yang terinformasi di sini
belum detail dan akan dirinci
di tempat lain
Flow Direction untuk menghubungkan
Symbol / Simbol antara simbol yang satu
Arus dengan simbol yang lain
(connecting line). Simbol ini
juga berfungsi untuk

Rekayasa Perangkat Lunak | 19


Notasi/Smbol/ Nama Notasi/ Keterangan
Komponen Simbol
menunjukkan garis alir dari
proses
Connector (On- untuk menyederhanakan
page) hubungan antar simbol yang
letaknya berjauhan atau
rumit bila dihubungkan
dengan garis dalam satu
halaman
Connector (Off- Sama seperti on-page
page) connector, untuk
menghubungkan simbol
dalam halaman berbeda.
label dari simbol ini dapat
menggunakan huruf atau
angka

d. Penerapan Flowchart dengan struktur unit


Contoh (algritma dalam bentuk bahasa natural)
Rumusan masalah: Bagaimana menukar isi dua buah gelas A berisi teh
dan gelas B berisi kopi.
Penyelesaian masalah: membutuhkan satu gelas untuk menampung
sementara. Algoritma tukar isi gelas.
{Diberikan dua Gelas A dan B. GelasA berisi teh, gelas B berisi kopi.
Tukarkan kedua gelas tersebut sehingga gelas A berisi kopi dan gelas B
berisi teh. Untuk menyelesaikan masalah tersebut dibutuhkan gelas X
untuk menampung sementara larutan teh atau kopi}.
1) Mula-mula isi gelas A berisi teh, gelas B berisi kopi dan gelas X kosong
2) Tuangkan teh dari gelas A ke gelas X
3) Tuangkan kopi dari gelas B ke ke gelas A
4) Tuangkan teh dari gelas X ke Gelas B
5) Gelas A berisi kopi, gelas B berisi teh, dan gelas X kosong

20 | Rekayasa Perangkat Lunak


Gambar 3. Flowchart tukar isi gelas a) label komponen menggunakan kalimat. b) label
komponen menggunakan notasi

e. Penerapan flowchart dengan struktur pemilihan


1) Struktur Pemilihan atau Percabangan Satu Kasus
Algoritma menggunakan flowchart satu kasus ini hanya terdiri satu
ekspresi kondisi dan satu pernyataan atau instruksi (aksi). Struktur
flowchart satu kasus diperlihatkan dalam gambar dibawah ini :

Gambar 4. Struktur Pemilihan dengan Satu Kasus

“Kondisi” yang ada pada simbol belah ketupat merupakan ekspresi


kondisi yang terdiri dari operator yang meliputi: operator
perbandingan (, ==, …..), logika (OR, AND…), operand dapat
berupa variabel atau nilai variabel.

Rekayasa Perangkat Lunak | 21


Tabel 2. Ragam contoh ekspresi kondisi:

2) Struktur Pemilihan atau Percabangan Dua Kasus


Algoritma menggunakan Flowchart dua kasus ini hanya terdiri satu
ekspresi kondisi dan dua pernyataan atau instruksi (aksi). Struktur
flowchart dua kasus diperlihatkan dalam gambar dibawah ini:

Gambar 5. Struktur Pemilihan dengan Dua Kasus

Gambar di atas menjelaskan bahwa pernyataan 1 akan dieksekusi jika


hasil ekpresi kondisi bernilai true atau benar dan pernyataan 2 akan
dieksekusi jika hasil ekspresi kondisi bernilai false atau salah.

3) Struktur Pemilihan atau Percabangan Tiga Kasus


Algoritma menggunakan Flowchart dengan tiga kasus ini terdiri dua
ekspresi kondisi dan tiga pernyataan atau instruksi (aksi). Struktur
flowchart tiga kasus diperlihatkan dalam gambar dibawah ini:

Gambar 6. Struktur Pemilihan dengan Tiga Kasus

22 | Rekayasa Perangkat Lunak


Gambar diatas menjelaskan pernyataan 1 akan dieksekusi jika hasil
ekpresi kondisi 1 bernilai true atau benar. Pernyataan 2 akan dieksekusi
jika hasil ekspresi kondisi 1 bernilai false atau salah dan hasil ekspresi
kondisi 2 bernilai benar. Pernyataan 3 akan dieksekusi jika hasil
ekspresi kondisi 1 bernilai false atau salah dan hasil ekspresi kondisi 2
bernilai salah.
f. Penerapan flowchart dengan struktur perulangan
1) Struktur Perulangan menggunakan instruksi do .… while
Perintah while digunakan untuk mengulangi suatu perintah sampai
kondisi tertentu. Perulangan akan terus berjalan selama kondisi masih
bernilai benar. Perulangan akan berhenti jika kondisi ekspresi bernilai
salah. Penulisan dengan notasi flowchartnya adalah sebagai berikut :

Gambar 7. Struktur flowchart menggunakan instruksi while

Gambar 8. Flowchart mencetak deret angka 1 sampai 9 menggunakan struktur instruksi


while

2) Struktur Perulangan menggunakan Instruksi do …. While


Perbedaannya dengan instruksi while adalah terletak pada kondisi
yang diperiksa, yaitu:

Rekayasa Perangkat Lunak | 23


• Pada perintah while, kondisi yang diperiksa terletak diawal
perulangan, sehingga sebelum masuk ke dalam perulangan while
kondisi harus bernilai benar.
• Sedangkan pada perintah do … while, kondisi diperiksa di akhir
perulangan. Ini berarti bahwa paling sedikit sebuah perulangan
akan dilakukan oleh perintah do … while, karena untuk masuk ke
dalam perulangan tidak ada kondisi yang harus dipenuhi.

Gambar 9. Struktur flowchart menggunakan instruksi do...while

Gambar 10. Flowchart mencetak deret angka 1 sampai 9 menggunakan struktur instruksi
do … while

3) Struktur Perulangan menggunakan Instruksi for


Struktur perulangan menggunakan for digunakan untuk mengulangi
perintah dengan jumlah perulangan yang sudah diketahui. Pada
flowchart dengan struktur ini ini perlu dituliskan nilai awal dari variabel,
suatu kondisi untuk diuji yang berupa ekspresi boolean, dan dan
perintah yang dipakai untuk penghitung (counter). Nilai variabel

24 | Rekayasa Perangkat Lunak


penghitung akan secara otomatis bertambah atau berkurang tiap kali
sebuah perulangan dilaksanakan tergantung perintah yang akan
diberikan

Gambar 11. Struktur flowchart menggunakan instruksi for

Gambar 12. Flowchart mencetak deret angka 1 sampai 9 menggunakan struktur instruksi
for

4) Struktur Perulangan dalam Perulangan


Didalam suatu perulangan bisa terdapat perulangan yang lain. Suatu
struktur Perualangan (inner loop) yang terdapat dalam perulangan
lainnya (outer loop) ini sering disebut dengan istilah nested loop. Salah
satu contoh penerapan algoritma nested loop adalah algoritma untuk
tabel perkalian sebagai berikut :
Tabel 1. Tabel perkalian bilangan

Rekayasa Perangkat Lunak | 25


Gambar 13. Flowchart mencetak tabel perkalian 1 sampai 8

3. Menerapkan Teknik Dasar Algoritma Umum

a. Algoritma Pengurutan Data (Sorting)


Pengurutan (sorting) adalah proses mangatur sekumpulan obyek
menurut urutan atau susunan tertentu. Urutan obyek tersebut dapat
manaik (ascending) atau menurun (descending). Bila N buah obyek atau
data disimpan dalam larik L maka pengurutan menaik berarti menyusun
elemen larik sedemikian sehingga :
L[1]<=L[2]<=L[3]…<=L[n]
Sedangkan pengurutan menurun berarti menyusun elemen larik
sedemikian hingga
L[1]>=L[2]>=L[3]…>=L[n]
Data yang diurutkan dapat berupa data tipe dasar atau tipe rekaman. Jika
data bertipe rekaman maka harus dijelaskan berdasarkan field apa data
tersebut diurutkan. Field yang dijadikan dasar pengurutan dikenal sebagai
fieldkey.

26 | Rekayasa Perangkat Lunak


Berdasakan algoritmanya dikenal beberapa metoda sorting yaitu :1)
Bubble sort, 2) Selection sort (maximumsort dan minimum sort), 3)
Insertion sort, 4) Quick short, 5) Merge sort, 6) Heap sort, 7) Shell short,
8) Radix sort, 9) Tree sort
1) Pengurutan Gelembung (bubble sort)
Pengurutan gelembung ini diinspirasikan oleh gelembung sabun yang
berada di atas permukaan air. Karena berat jenis gelembung sabun
lebih ringan dari berat jenis air maka gelembung sabun tersebut akan
terapung ke atas dan benda-benda yang berat akan terbenam.
Prinsip pengurutan ini adalah : jika menginginkan terurut naik maka
elemen larik yang berharga paling kecil diapungkan atau diangkat ke
atas atau digeser ke ujung paling kiri melalui proses pertukaran.
Proses pertukaran ini dilakukan sebanyak N-1 langkah (pass) dengan
N adalah ukuran larik. Pada setiap langkah larik L[1..N] akan terdiri
atas dua bagian yang terurut yaitu L[1..I] dan dua bagian yang
belumterurut L[I+1..N]
1 I I+1
N
Sudah terurut Belum terurut

Pada algoritma pengurutan gelembung akan dibandingkan elemen


sekarang dengan elemen berikutnya. Pada pengurutan naik Jika
elemen sekarang lebih besar dari elemen berikutnya maka data akan
ditukar sehingga data yang paling kecil berada di sebelah kiri atau atas.
Begitu seterusnya sampai data terurut seluruhnya. Pengecekan atau
pertukaran data dapat dimulai dari data yang paling awal atau paling
akhir.
Contoh :
Pengurutan 6 buah data secara naik (ascending) pada suatu larik yang
dimulai dari data paling akhir:
22 10 15 3 8 2

Rekayasa Perangkat Lunak | 27


Langkah-langkah Pengurutan naik menggunakan metode bubble sort

Gambar 14. Algoritma (pseudoce) pengurutan naik metoda bubble soft

2) Pengurutan pilih (selection sort)


Prinsip pengurutan pilih adalah memilih elemen maksimum
(pengurutan ascending) atau minimum (pengurutan descending) dari
suatu larik kemudian menempatkan elemen maksimum/minimum

28 | Rekayasa Perangkat Lunak


tersebut pada awal (ascending) atau akhir (descending) dari larik.
Selanjutnya elemen terujung tersebut diisolasi dan tidak disertakan
pada proses selanjutnya. Proses yang sama diulang untuk elemen
larik yang tersisa yakni dengan memilih elemen maksimum/minimum
berikutnya dan mempertukarkan dengan elemen terujung larik sisa.
Ditinjau dari pemilihan eleman maksimum/minimum pengurutan pilih
dibedakan menjadi 2 varian yaitu :
- Algoritma pengurutan pilih maksimum : memilih eleman maksium
sebagai basis pengurutan.
- Algoritma pengurutan pilih Minimum : memilih elmen minimum
sebagai basis pengurutan
Contoh: pengurutan data manaik menggunakan metode maximum
selection sort

Langkah 1
Cari elemen maksimum dalam larik L[1..6] diperoleh nilai Maks → L[5] =
76
Tukar maks (L[5] dengan L[6], sehinga diperoleh :

Langkah 2
Berdasarkan susunan larik hasil langkah 1
Cari elemen maksimum dalam larik L[1..5]
Maks → L[1] = 29
Tukar maks (L[1]) dengan L[5], diperoleh :

Langkah 3
Berdasarkan susunan larik hasil langkah 2
Cari elemen maksimum dalam larik L[1..4] diperoleh nilai Maks → L[2] =
27

Rekayasa Perangkat Lunak | 29


Tukar maks (L[2]) dengan L[4], diperoleh :

Langkah 4
Berdasarkan susunan larik hasil langkah 3
Cari elemen maksimum dalam larik L[1..3] diperoleh nilai Maks → L[1] =
21
Tukar maks (L[1]) dengan L[3], diperoleh :

Langkah 5
Berdasarkan susunan larik hasil langkah 4 Cari elemen maksimum
dalam larik L[1..2] diperoleh nilai Maks → L[1] = 10
Tukar maks (L[1]) dengan L[2], diperoleh :

Selesai. Larik L: sudah terurut menaik

b. Algoritma Pencarian Data (searching)


Pencarian (searching) merupakan proses yang fundamental dalam
pemrograman. Proses pencarian adalah menemukan data atau nilai
tertentu di dalam sekumpulan nilai yang bertipe sama (tipe dasar atau tipe
bentukan). Terdapat beberapa macam metoda algoritma pencarian di
antaranya adalah :
- Pencarian berurutan (sequenctial search)
- Pencarian bagidua (binary search)
Dalam proses pencarian biasanya data tersimpan dalam suatu variable
array atau larik. Sebelum kegiatan proses pencarian, terlebih dahulu
dilakukan definisi terhadap persoalan pencarian dalam larik. Di bawah ini
diberikan contoh pendefinisian persoalan pencarian dalam array.
Suatu variable array L yang sudah terdefinisi elemen-elemennya. X adalah
elemen yang bertipe sama dengan array L. Carilah apakah X terdapat
didalam larik L. Hasil atau keluaran dari persoalan pencarian dapat
bermacam-macam tergantung dari kebutuhan yang diinginkan : misalnya.

30 | Rekayasa Perangkat Lunak


1) Memberikan pesan bahwa x ditemukan didalam larik L. Misalnya :
Write( X, ‘ditemukan.. !’) atau Write( X, ‘Tidak ditemukan… !’)
2) Menggunakan Indeks elemen larik
Jika X ditemukan maka simpan indeks larik tempat X ditemukan ke
dalam variable IDX. Jika X tidak terdapat didalamlarik L maka IDX diisi
dengan harga nol (0)
Contoh :

Misalkan X =68, maka IDX = 7 dan bila X = 100 maka IDX = 0


Untuk keputusan hasil pencarian kita dapat menuliskan :
If IDX  0 then
Write(X, ‘tidak ditemukan.. !’)
Else
Write( X, ‘ditemukan.. pada elemen ke-’, IDX)
Endif
3) Menggunakan Variable Boolean
Jika X ditemukan maka sebuah variable bertipe Boolean, misalnya :
“ketemu” diisi dengan true, sebaliknya “ketemu” diisi dengan false jika
X tidak ditemukan
Contoh ;
Misalkan X = 69 maka ketemu = true dan bila X = 100 maka ketemu =
false

Untuk keputusan hasil pencarian kita dapat menuliskan :


If ketemu the { ketemu = true }
Write( X, ‘ditemukan.. !’)
Else
Write( X, ‘tidak ditemukan.. !’)
Endif
a) Pencarian beruntun
Pada dasarnya pencarian beruntun adalah proses
membandingkan setiap eleman larik satu persatu secara
berurutan. Pencarian dimulai dari elemen pertama sampai seluruh

Rekayasa Perangkat Lunak | 31


elemen sudah diperiksa atau ditemukan.
Contoh berikut menjelaskan proses pencarian data untuk
mendapatkan hasil dengan menggunakan referensi indeks larik
tempat x berada

b) Pencarian Bagi Dua (Binary Search)


Pencarian bagi dua atau pencarian binary search adalah metode
pencarian yang diterapkan pada sekumpulan data yang sudah
terurut baik terurut naik atau turun. Metoda ini digunakan untuk
kebutuhan pencarian dengan waktu yang cepat. Prinsip pencarian
bagidua ialah dengan membagi data menjadi dua bagian kiri dan
kanan. Jika data ada disebelah kiri maka tidak memerlukan
pencarian disebelah kanan. Kalau data masih banyak maka dapat
dilakukan pembelahan lagi begitu seterusnya sampai data
ditemukan.
Misalnya untuk data yang telah terurut menurun, selama proses
pencarian memerlukan dua buah indexs larik yaitu indeks terkecil
(ujung kiri larik) dan indeks terbesar (ujung kanan larik). Kanan
dan kiri dinyatakan dengan membayangkan elemen terlentang

32 | Rekayasa Perangkat Lunak


secara horizontal. Algoritma pencarian data menggunakan
metode bagi dua adalah sebagai berikut :
• Misalkan indeks kiri adalah i dan indeks kanan adalah j,
mulamula i=0, j=N.
• Langkah1 : bagi dua elemen larik pada elemen tengah.
Elemen tengah adalah elemen dengan indeks k =(i+j) div 2.
Elemen tengah L[k],membagi larik menjadi dua bagian yaitu
bagian kiri L[i … j] dan bagian kanan L[k+1 … j]
• Langkah 2 : periksa apakah L[k]= X. jika sama maka
pencarian dihentikan berarti data X yang dicari sudah
ditemukan. Jika L[k] tidak sama dengan X makaharus
ditentukan apakah pencarian akan dilakukan dilarik bagian kiri
atau bagian kanan. Jika L[k] < X maka pencarian disebelah
kiri. Sebaliknya jika L[k] > X maka pencarian disebelah kanan.
4. Langkah 3. ulangi langkah 1 sampai X ditemukan atau i > j
(ukuran larik sudah nol)

Rekayasa Perangkat Lunak | 33


4. Menggunakan Prosedur dan Fungsi

a. Konsep Dasar Prosedur dan Fungsi


Sering kali dalam membuat algoritma dan program yang besar,
programmer perlu memecah program tersebut menjadi beberapa program
bagian (sub program /modul) yang lebih kecil. Tiap sub program
kadangkala cukup independent dari program utama sehingga programnya
dapat dirancang tanpa mempertimbangkan konteks tempat yang
digunakan. Modul yang dibuat oleh programmer ini dapat dipasang ke
program lain yang membutuhkannya (reusable). Teknik pemrograman ini
disebut Teknik pemrograman moduler.
Keuntungan teknik pemrograman moduler :
- untuk aktifitas yang harus dilakukan lebih dari satu kali modularisasi
- menghindari penulisan teks program yang sama secara berulang
- penggunaan modul program dapat mengurangi panjang program
Dalam beberapa bahasa pemrograman program bagian atau modul ini
dikenal dengan beberapa istilah seperti rutin, sub rutin, prosedur atau
fungsi. Pada dasarnya modul adalah sebuah kotak hitam yang memiliki
beberapa masukan atau tanpa masukan, mengerjakan suatu proses yang
hasilnya akan ditampilkan di piranti keluaran. Ada tiga kemungkinan pada
sebuah modul yaitu :
- Modul tidak memiliki parameter masukan (nilai masukan )
- Modul memiliki parameter masukan tapi tidak mempunyai nilai yang
dikembalikan (return value). Modul ini dikenal dengan nama prosedure
- Modul mempunyai parameter masukan dan nilai pengembalian (return
value). Modul ini dikenal dengan nama fungsi.

34 | Rekayasa Perangkat Lunak


Gambar 15. Struktur modul dalam konsep pemrograman Modular

Gambar 16. Blok Diagram ( a ) Prosedur dan ( b ) fungsi

b. Prosedure
Prosedur adalah program yang mengerjakan tugas/aktifitas yang spesifik
dan menghasilkan suatu efek netto. Dalam beberapa bahasa
pemrograman prosedur sering diistilahkan dengan subroutin. Suatu efek
netto diketahui dengan membandingkan keaadan awal dan keadaan akhir
pada pelaksanaan sebuah prosedur. Oleh karena itu prosedur harus
mendefinisikan dua hal yaitu :
- keaadan awal (K.Awal) yaitu kondisi sebelum rangkaian instruksi
dilaksanaakan
- keaadaan akhir (K.Akhir) kondisi yang diharapkan setelah rangkaian
instruksi dilaksanakan
Penulisan algoritma yang mendefinisikan prosedur sama persis dengan
penulisan algoritma pada umumnya. Gambar berikut menjelaskan format
penulisan algoritma dalam prosedur.

Gambar 17. Struktur penulisan algoritma prosedur

contoh1 : prosedur tanpa paramater


Tulislah algoritma program utama dan prosedur untuk menghitung luas
segitiga dengan rumus L = (alas X tinggi) / 2

Rekayasa Perangkat Lunak | 35


contoh 2 : prosedure dengan parameter masukan
Tuislah algoritma untuk menghitung luas segitiga dengan variabel alas dan
tinggi dimasukkan dari keybord

36 | Rekayasa Perangkat Lunak


c. Fungsi (Function)
Prosedure fungsi merupakan modul program yang mempunyai tujuan
spesifik. Bedanya dengan prosedur, fungsi adalah modul program yang
memberikan atau mengembalikan (return) sebuah nilai daritipe data
tertentu (tipe dasar atau bentukan). Di dalam bahasa pemrograman C, C++
tidakmengenal istilah prosedur. Prosedur dan fungsi diartikan sama
sebagai function. Dengan demikian dalam bahasa pemrograman C, C++
dikenal:
- function yang tidak mempunyai return value disebut void function
- function yang mempunyai return value
Definisi fungsi di dalam program bersesuaian dengan definisi fungsi di
dalam matematika
- f(X) = 2x2 + 5x -8
- H(x,y) = 3x – y + xy
Pada contoh diatas f dan H adalah nama fungsi sedangkan x dan y adalah
parameter fungsi yang bersangkutan nilai yang diberikan oleh fungsi
bergantung pada parameter masukan contoh :
- X=2, maka f(2) = 2.22 + 5.2 -8 = 10
- X=1, y=2, maka H(1,2) = 3.1 -2 + 1.2 = 3
Nilai f(2) = 10 dan nilai H(1,2) = 3 nilai 10 dan 3 tersebut adalah nilaiyang
diberikan (return value) oleh masing-masing fungsi f dan fungsi H Adapun
notasi untuk mendefinisakan fungsi adalah sebagai berikut :

Fungsi diakses dengan cara memanggil namanya dari program pemanggil


diikuti dengan parameter aktual (bila ada). Karena fungsi menghasilkan
nilai maka nilai tersebut dapat ditampung dalam sebuah variabel yang
bertipe sama dengan tipe fungsi. Beberapa cara untuk memanggil fungsi :

Rekayasa Perangkat Lunak | 37


- nama_variabel  namaFungsi(daftar parameter aktual);
- write(nama_fungsi(daftar parameter aktual))
- if nama_fungsi(daftar parameter aktual) < 0 then ......
- z  2*nama_fungsi(dafatar parameter aktual) – x + y; contoh : algoritma
mengitung luas segitiga menggunakan fungsi:

5. Mengidentifikasikan Kompleksitas Algoritma

a. Kompleksitas Algoritma
Sebuah algoritma tidak saja harus menghasilkan keluaran yang benar,
tetapi juga harus mangkus (efisien). Kebenaran suatu algoritma harus diuji
dengan jumlah masukan tertentu untuk melihat kinerja algoritma berupa
waktu yang diperlukan untuk menjalankan algoritmanya dan ruang memori
yang diperlukan untuk struktur datanya.
Besaran yang dipakai untuk menerangkan model penilaian waktu/ruang
algoritma adalah dengan menggunakan kompleksitas algoritma. Ada dua
macam kompleksitas algoritma, yaitu kompleksitas waktu dan
kompleksitas ruang.
b. Kompleksitas Waktu

38 | Rekayasa Perangkat Lunak


Kompleksitas waktu dari algoritma adalah mengukur jumlah perhitungan
(komputasi) yang dikerjakan oleh komputer ketika menyelesaikan suatu
masalah dengan menggunakan algoritma.
Kompleksitas waktu (T(n)dari algoritma berisi ekspresi bilangan dan jumlah
langkah yang dibutuhkan sebagai fungsi dari ukuran masukan
permasalahan. Kompleksitas waktu diukur dari jumlah tahapan komputasi
yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran
masukan n. Kompleksitas ruang berkaitan dengan sistem memori yang
dibutuhkan dalam eksekusi program. Kompleksitas ruang diukur dari
memori yang digunakan oleh struktur data yang terdapat di dalam
algoritma sebagai fungsi dari ukuran masukan n.
Tabel 3. Kelompok algoritma berdasarkan kompleksitas waktu asimptotiknya.

Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran


masukan, yang secara khas adalah jumlah data yang diproses. Ukuran
masukan itu disimbolkan dengan n. Setelah menetapkan ukuran masukan,
maka langkah selanjutnya dalam mengukur kompleksitas waktu adalah
menghitung banyaknya operasi yang dilakukan algoritma sehingga
didapatkan notasi kompleksitas waktunya dalam fungsi n yaitu f(n).
Untuk mengukur kebutuhan waktu sebuah algoritma yaitu dengan
mengeksekusi langsung algoritma tersebut pada sebuah komputer, lalu
dihitung berapa lama durasi waktu yang dibutuhkan untuk menyelesaikan
sebuah persoalan dengan n yang berbeda-beda. Kemudian dibandingkan
hasil komputasi algoritma tersebut dengan notasi kompleksitas waktunya
untuk mengetahui efisiensi algoritmanya.

Rekayasa Perangkat Lunak | 39


c. Kompleksitas Ruang
Kompleksitas ruang berkaitan dengan sistem memori yang dibutuhkan
dalam menjalankan program. Kompleksitas ruang diukur dari memori yang
digunakan oleh struktur data yang terdapat di dalam algoritma sebagai
fungsi dari ukuran masukan n. Perhatikan contoh dibawah ini:
Algorithm hitung(x,y,z)
{
return x+y*z+(x+y-z)/(y+z) +13
}
Algorithm jumlah(a,n)
//a adalah array dengan ukuran n
{
s:=0.0;
for i=1 to n do
s:=s+a[i];
return s;
}
Memori yang dibutuhkan untuk menjalankan algoritma diatas bergantung
pada jumlah dari:
- Bagian yang konstan dan tidak tergantung pada masukan dan
keluaran. Bagian ini biasanya terdiri dari memori yang dibutuhkan
untuk sourcecode, variable aggregate dan konstanta.
- Bagian variabel yang kebutuhan memorinya bergantung pada instance
permasalahan yang akan diselesaikan. Bagian ini sering disebut
sebagai karakteristik instans.
Kompleksitas ruang (penggunaan memori) dapat diringkas dalam
persamaan: S(P) = c + Sp, dimana c adalah konstanta dan Sp adalah
karakteristik instans.
Dalam analisis kompleksitas ruang hanya akan diperhitungkan nilai Sp dan
tidak terlalu memperhatikan nilai konstanta c. Pada algoritma hitung diatas,
karakteristik instans ditentukan oleh x,y dan z. Dengan asumsi masing
masing x,y,z dan return value bisa disimpan dalam 1 word (16 bits), maka
dapat dilihat bahwa memori yang dibutuhkan oleh algoritma hitung tidak
tergantung pada karakteristik instans x,y dan z, sehingga nilai Sp = 0.
Pada algoritma jumlah, karakteristik instans ditentukan oleh n (jumlah
elemen yang akan dipanggil). Karena variabel a harus mampu menampung
data berjenis float sejumlah n elemen, maka memori yang dibutuhkan
adalah n word. Variable s, i dan n masing-masing membutuhkan 1 word.

40 | Rekayasa Perangkat Lunak


Dengan demikian dapat didapatkan pertidaksamaan Sp[jumlah](n) >=
(n+3).
d. Model Perhitungan Kebutuhan Waktu/Ruang
Pengukuran waktu yang diperlukan oleh sebuah algoritma dapat dilakukan
dengan cara menghitung banyaknya operasi/instruksi yang dieksekusi.
Jika telah diketahui besaran waktu (dalam satuan detik) untuk
melaksanakan sebuah operasi tertentu, maka dapat menghitung berapa
waktu sesungguhnya untuk melaksanakan algoritma tersebut.
Contoh 1. Menghitung rerata

Larik bilangan bulat

Keterangan
- Operasi pengisian nilai (jumlah0, k1, jumlahjumlah+ak, kk+1,
dan r  jumlah/n). Jumlah seluruh operasi pengisian nilai adalah
t1 = 1 + 1 + n + n + 1 = 3 + 2n
- Operasi penjumlahan (jumlah+ak, dan k+1). Jumlah seluruh operasi
penjumlahan adalah
t2 = n + n = 2n
- Operasi pembagian (jumlah/n)Jumlah seluruh operasi pembagian
adalah t3 = 1

Rekayasa Perangkat Lunak | 41


- Total kebutuhan waktu algoritma HitungRerata:
t = t1 + t2 + t3 = (3 + 2n)a + 2nb + c detik
e. Kompleksitas Waktu Asimptotik
Suatu kompleksitas algoritma dinyatakan dalam suatu fungsi sebagai
berikut: T(n) = 2n 2 + 6n + 1
Tabel 4 Perbandingan pertumbuhan T(n) dengan n 2

Untuk n yang besar, pertumbuhan T(n) sebanding dengan n 2 . Pada kasus


ini, T(n) tumbuh seperti n 2 tumbuh. T(n) tumbuh seperti n 2 tumbuh saat
n bertambah. Kita katakan bahwa T(n) berorde n 2 dan kita tuliskan
T(n) = O(n 2 )
Notasi “O” disebut notasi “O-Besar” (Big-O) yang merupakan notasi
kompleksitas waktu asimptotik.

42 | Rekayasa Perangkat Lunak


E. Rangkuman
1. Varian adalah jenis atau turunan dari alur logikal yang digunakan sebelum
pembuatan aplikasi (pra-built aplication) sedangkan invarian adalah bentuk
logical dari external algoritma (fungsi/program bagian) yang terintegrasi
dengannya. Varian adalah variabel yang tidak mempunyai tipe data sedangkan
invarian adalah variabel yang mempunyai tipe data.
2. Pengenal atau Identifier adalah suatu nama yang biasa dipakai dalam
pemrograman untuk menyatakan variabel, konstanta, tipe data, fungsi atau
prosedur.
3. Variabel adalah tempat programmer untuk dapat mengisi atau mengosongkan
nilainya dan memanggil kembali apabila dibutuhkan. Variabel merupakan
representasi data dari dunia nyata yang mempunyai suatu nilai. Dalam
pengolahan data menggunakan komputer, variabel ini akan disimpan dalam
memori komputer (identifier). Variabel ini mempunyai nilai yang dapat
diubahubah
4. Konstanta adalah identifier yang nilai datanya bersifat tetap dan tidak bisa
diubah.
5. Penyajian algoritma secara garis besar dapat dibedakan menjadi dua yaitu: 1)
berbentuk Tulisan dan 2) berbentuk Gambar. Algoritma yang disajikan dengan
bentuk tulisan dapat menggunakan aturan bahasa natural (alami) atau
pseudocode. Sedangkan algoritma yang disajikan dengan gambar dalam
bentuk diagram alur (flowchart) atau struktogram (Nassi Schneiderman, .......).
6. Pengurutan (sorting) adalah proses mangatur sekumpulan obyek menurut
urutan atau susunan tertentu. Urutan obyek tersebut dapat manaik (ascending)
atau menurun (descending).
7. Berdasakan algoritmanya dikenal beberapa metoda sorting yaitu :1) Bubble
sort, 2) Selection sort (maximumsort dan minimum sort), 3) Insertion sort, 4)
Quick short, 5) Merge sort, 6) Heap sort, 7) Shell short, 8) Radix sort, 9) Tree
sort
8. Inti dari fungsi dan prosedur yaitu berfungsi untuk memecahkan program yang
rumit dan besar menjadi program-program yang lebih sederhana atau kecil.

Rekayasa Perangkat Lunak | 43

Anda mungkin juga menyukai