D
I
S
U
S
U
N
OLEH :
Page i
DAFTAR ISI
Sampul ................................................................i
Daftar Isi ................................................................ii
Bab I
I.1Hardware Komputer ................................................................1
I.2 Software Komputer ................................................................3
I.3 Output ................................................................9
I.4 Input ................................................................10
I.5 Sistem Bilangan ................................................................11
I.6 Logic Gate ................................................................21
Bab II
II.1 CPU Dan Process Device ................................................................22
Bab III
III.1 Set Instruksi ................................................................29
Bab IV
IV.1 Pengantar Pemrograman ................................................................32
Bab V
V.1 Data, Variabel, Tipe Dan Modulisasi ...............................................................37
Bab VI
VI.1 Struktur Program ................................................................44
Bab VII
VII.1 Control Structure ................................................................53
Bab VIII
VIII.1 Looping ................................................................61
Bab IX
IX.1 Arrays ................................................................65
Bab X
X.1 Sorting And Searching ................................................................68
Page ii
BAB I
HARDWARE KOMPUTER
Central Processing Unit (CPU), biasa juga dikenal dengan sebutan processor
atau otak komputer. Fungsi dari CPU adalah untuk memproses dan mengolah
semua kalkulasi dan perintah-perintah yang membuat komputer dapat
dioperasikan. Karena panas yang dihasilkannya, CPU selalu dilengkapi dengan
kipas dan juga heat sink untuk mengurangi suhunya. Pada jenis-jenis CPU
terbaru, sudah dilengkapi pula dengan Graphic Processing Unit (GPU) yang
terintegrasi ke dalam CPU sebagai pengolah data-data grafis.
Page 1
Optical Disc Drive, biasa juga dikenal dengan CD/DVD Drive. Fungsi dari
perangkat ini adalah untuk membaca dan juga menyimpan data dari ke media
cakram optik seperti CD, DVD, atau Blue-Ray Disc.
Selain dari perangkat keras komputer yang terdapat di dalam casing, ada juga
komponen-komponen yang umum kita lihat diluar casing:
Monitor, disebut juga screen atau display. Fungsi dari layar monitor adalah
untuk menampilkan video dan informasi grafis yang dihasilkan dari komputer
melalui alat yang disebut kartu grafis (VGA Card). Monitor ini bentuk fisiknya
hampir sama dengan televisi, hanya saja televisi biasanya mampu menampilkan
informasi grafis dengan ukuran resolusi yang lebih tinggi.
Keyboard dan Mouse, berfungsi sebagai alat input untuk memasukkan perintah
teks, karakter, atau menggerakkan objek pada antarmuka grafis untuk diproses
oleh komputer. Ukuran dan bentuk dari kedua alat ini cukup beragam, namun
fungsinya sama saja.
Diluar komponen-komponen yang sudah kita sebutkankan diatas, ada pula
perangkat keras komputer yang tidak semua pengguna komputer memilikinya:
Sound Card (Kartu Suara), fungsinya sebagai penghubung anatar komputer dan
alat
output audio seperti speaker.
Page 2
SOFTWARE KOMPUTER
komputer merupakan mesin yang memproses data menjadi suatu informasi.
Komputer digunakan users untuk meningkatkan hasil kerja dan memecahkan berbagai
masalah. Yang menjadi pemroses data atau pemecah masalah itu adalah software atau
perangkat lunak. Bentuk terkecil dari perangkat lunak adalah operasi aritmatik (+, -, :,
x) dan logika (AND, OR, >, <, =). Dari operasi dasar ini disusun program atau
perangkat lunak.
Page 3
Dengan demikian, sebenarnya untuk meng-gerakkan
komputer agar bisa bekerja, maka dituntut untuk mengetahui kombinasi kerja dari ON dan
OFF Kombinasi ini kemudian dikenal sebagai bahasa mesin, bahasa yang dikenal oleh
komputer. Aturan yang ada didalam bahasa mesin, hanya merupakan kode-kode binary
ataupun kode-kode tertentu yang tentunya sangat sulit untuk dipelajari.
Karena sulitnya bahasa mesin atau low level language ini, pabrik pembuat komputer
kemudian membuat kamus agar bisa dimanfaatkan oleh pemakai. Kamus ini dikenal
sebagai compiler atau interpreter.
Kamus yang ada berisi terjemahan angka 0 s/d 9, huruf A s/d Z, aneka tanda baca, aneka
rumus perhitungan ataupun aturan-aturan yang terdapat dalam suatu bahasa program.
Terjemahan yang ada akan berbentuk pulsa- pulsa elektronik yang kemudian
dilambangkan dengan angka 0 dan 1 (konsep binary)
Dengan adanya compiler ataupun intrepreter, pemakai kemudian bisa berkomunikasi
dengan bahasa yang lebih "manusiawi" jika dibanding dengan bahasa mesin. Bahasa
yang lebih manusiawi ini kemudian dikenal sebagai high level language. Pemakai
menuliskan instruksi dalam high level language dan komputer menterjemahkan dalam
low level language (bahasa mesin).
Jenis high level language cukup banyak, seperti misalnya: Basic, Cobol, Pascal, Fortran
dan lain sebagainya. Dalam hal ini, setiap high level language memiliki aturan-aturan
tersendiri dan juga memiliki compiler ataupun interpreter tersendiri. Hal ini dapat
diilustrasikan dengan bahasa Inggris, Perancis ataupun Jepang. Dimana setiap bahasa
juga memiliki aturan-aturan dan kamus tersendiri.
Interpreter akan menterjemahkan instruksi demi instruksi, dan apabila ditemui sesuatu
kesalahan, maka proses akan berhenti, dan interpreter kemudian menunjukkan kesalahan
tersebut. Untuk memulai proses, kesalahan yang ada harus dibetulkan terlebih dahulu.
Interpreter biasanya hanya ditemui pada komputer jenis kecil, misalnya Personnal
Computer.
Dalam bekerja, compiler akan menterjemahkan seluruh instruksi yang ada, dan seluruh
kesalahan yang ditemui dalam instruksi yang ada, akan ditampilkan pada akhir proses
penterjemahan.
Program yang ditulis dengan menggunakan language, juga disebut sebagai source
program atau program yang masih mentah. Disebut mentah karena program ini masih
harus diproses ataupun diterjemahkan kedalam bahasa mesin. Hasil penterjemahan suatu
program kedalam
bahasa mesin, dikenal sebagai object program.
System Utility : merupakan program khusus yang berfungsi sebagai perangkat
pemeliharaan komputer, seperti antivirus, partisi hardisk, manajemen hardisk, dll. Contoh
produk program utilitas: Norton Utilities, PartitionMagic, McAfee, dll.
Page 4
Application Software
Custom-made Software / Custom Software / Tailor-made Software :
merupakan program yang dikembangkan untuk memenuhi kebutuhan yang spesifik.
Contoh
: aplikasi akuntansi, aplikasi perbankan, aplikasi manufaktur, dll.
Commercial Software / Package Software :
wordprocessor,
desktop publishing,
spareadsheet,
database management system,
graphics software, dsb
Aplikasi Office
`Perangkat lunak aplikasi perkantoran yang umum adalah pemroses kata dan pemroses
tabel . Pemroses kata umum di gunakan untuk menggantikan tugas pengetikan yang sering
di lakukan. Selain dapat melakukan format pengetikan seperti penomoran, pengaturan
spasi, margin (jarak pinggir kertas), jenis huruf (font), pemroses kata juga dapat melakukan
proses pengecekan kata bahkan kalimat.
Pemroses tabel biasanya di gunakan untuk melakukan perhitungan yang menggunakan
tabel (tabulasi). Fungsi standar yang di gunakan adalah penjumlahan di suatu range dalam
baris atau kolom tertentu, atau fungsi lainnya seperti pencarian nilai rata-rata, maksimal,
minimal atau deviasi. Automasi pemrosesan dapat dilakukan dengan menggunakan macro,
misalnya perhitungan bulanan.
Aplikasi Multimedia
Aplikasi multimedia saat ini sangat banyak dan beragam. Di katakan Multimedia karena
selain penggunaan media teks, aplikasi ini dapat memproses / menampilkan dalam bentuk
yang lain yaitu gambar, suara dan film
Aplikasi Multimedia sangat berkaitan dengan format data yang di gunakan. Aplikasi
Multimedia umumnya di pisahkan lagi menjadi aplikasi yang di gunakan untuk membuat,
yang hanya di gunakan untuk menampilkan saja dan aplikasi pengaturan.
Format-format digital
Page 5
MPEG (Moving Picture Experts Group), merupakan format yang di susun oleh
ahli dari berbagai penjuru dunia untuk format multimedia.
AVI (Audio Video Interleave), format AVI di buat oleh Microsoft dan mudah di
pindah- pindahkan di aplikasi buatan Microsoft lainnya seperti Word atau
PowerPoint
Quicktime, sama dengan AVI, Quicktime dapat digunakan baik di komputer
berbasis Intel maupun Mac. Quicktime dapat menyaingin AVI di karenakan tingkat
kompresinya yang lebih baik. Tingkat kompresi menentukan besar-kecilnya file
yang akan menentukan pula besar- kecilnya media penyimpanan, dan lebar jalur
data yang dibutuhkan untuk transfer.
Aplikasi Internet
Aplikasi Internet adalah protokol yang digunakan untuk berhubungan antara satu orang
atau mesin dengan pihak lain yang berjauhan. Aplikasi internet akan menyangkut dua sisi,
yaitu sisi penyedia (server) atau sisi pengguna (client).
Contoh aplikasi internet dan perangkat lunak dari sisi pengguna yang umum di gunakan
adalah :
HTTP (Hypertext Transfer protocol), merupakan aplikasi internet yang
menampilkan baris kalimat, atau gambar, dengan beberapa kata yang di beri tanda
garis bawah (hypertext). Dari hypertext ini, pengguna dapat melompat dari satu
dokumen (page) ke dokumen lainnya.
Perangkat lunak di sisi pengguna yang menjalankan http di kenal sebagai browser.
Contoh browser adalah Internet Explorer dan Netscape.
E-mail (Electronic mail), merupakan aplikasi surat menyurat di internet. Contoh
perangkat lunaknya adalah Outlook Express
Messenger
Messenger di gunakan untuk berkomunikasi antara satu orang atau lebih
(conference), selain komunikasi melalu teks (messsage), juga bisa berupa suara
(voice) mapun film (webcam)
Contoh : Yahoo Messenger
Freeware : Freeware adalah perangkat lunak bebas yang mengacu pada kebebasan
para penggunanya untuk menjalankan, menggandakan, menyebarluaskan,
mempelajari, mengubah dan meningkatkan kinerja perangkat lunak. Suatu program
merupakan perangkat lunak bebas, jika setiap pengguna memiliki semua dari
kebebasan tersebut. Dengan demikian, kita seharusnya bebas untuk menyebarluaskan
salinan program itu, dengan atau tanpa modifikasi (perubahan), secara gratis atau pun
dengan memungut biaya penyebarluasan, kepada siapa pun
dimana pun. Kebebasan untuk melakukan semua hal di atas berarti kita tidak harus
meminta atau pun membayar untuk ijin tersebut. Ada beberapa kategori yang
dikatakan freeware :
Page 6
Copylefted: Copyright pada author, contoh LGPL dan GPL, jadi perubahan dan
distribusinya bisa dilakukan tanpa ada batasannya.
Non Copylefted : free software yang mengizinkan distribusi ulang atau modifikasi
dengan menambahkan batasan baru, sehingga setiap kopi software ini, dalam bentuk
binary ataupun termodifikasi bisa menjadi proprietary software.Contoh : X Window
System
Non Copyrighted: public domain yang terdiri dari pekerjaan
kreatif dan pengetahuan lainnya; tulisan,hasil seni, musik, sains, penemuan, dan
lainnya; yang tidak ada seseorang atau suatu organisasi memiliki minat proprietari.
(minat proprietary biasanya dilakukan dengan sebuah hak cipta atau paten.) Hasil
kerja dan penemuan yang ada dalam domain umum dianggap sebagai bagian dari
warisan budaya publik, dan setiap orang dapat menggunakan mereka tanpa batasan
(tidak termasuk hukum yang menyangkut keamanan, ekspor, dll.).Contoh : STP MP3
Player
Copyrighted pada author: MIT license, BSD license, Apache license
Semi-Free Software
Open Source : adalah sistem pengembangan yang tidak dikoordinasi oleh suatu
orang/lembaga pusat, tetapi oleh para pelaku yang bekerja sama dengan
memanfaatkan kode sumber (source- code) yang tersebar dan tersedia bebas (biasanya
menggunakan fasilitas komunikasi internet). Pola pengembangan ini mengambil
model ala bazaar, sehingga pola Open Source ini memiliki ciri bagi komunitasnya
yaitu adanya dorongan yang bersumber dari budaya memberi, yang artinya ketika
suatu komunitas menggunakan sebuah program Open Source dan telah menerima
sebuah manfaat kemudian akan termotivasi untuk menimbulkan sebuah pertanyaan
apa yang bisa pengguna berikan balik kepada orang banyak.
Evaluation Copy / Trial / Preview/ Demo : adalah software yang dapat Anda
gunakan tapi ada batasan waktu atau jumlah pengguna, atau ada trialware yang
menonaktifkan beberapa fungsi dari software tersebut.
Page 7
Copyrighted software
Adware : Varian dari freeware yang menampilkan iklan pada tampilan software
(umumnya berupa banner). Contoh : GoZilla!, JetAudio (mulai versi 4.7), Eudora
Pro (mulai versi 4.2), Opera (mulai versi 5)
Spyware : Suatu istilah untuk menyebut software yang 'membonceng' sebuah
adware, yang bertugas mendownload iklan untuk ditampilkan pada adware
tersebut. Namun, spyware umumnya juga melakukan 'penyadapan' data teknis
komputer yang ditempatinya dan dikirimkan saat komputer itu online.
Nagware : Varian dari shareware yang selalu menampilkan layar peringatan setiap
digunakan, layar ini akan hilang jika software diregistrasi (dengan membayar),
namun software itu sendiri masih berfungsi secara normal walaupun tidak
diregistrasi .Contoh : ACDSee (sampai versi 2.42), WinZip, mIRC
Stripware : Varian dari freeware yang menawarkan versi gratis dari software
komersial dengan fasilitas yang terbatas, biasanya ditandai dengan pemberian
nama Personal Edition/Lite Version/Basic. Contoh : Eudora Lite, Real Player
Basic, Linux (distribusi Corel)
Optionware :Varian dari freeware yang meminta imbalan secara sukarela dalam
bentuk selain uang, misalnya : e-mail (mailware), prangko (stampware),
surat/kartupos, dll, bahkan ada yang meminta anda untuk menyumbangkan
sejumlah uang kepada yang membutuhkan, bahkan ada yang hanya meminta Anda
untuk berhenti menggerutu tentang sulitnya hidup (!). Contoh : Arachnophilia.
Alpha Version : Software proprietary yang telah selesai pengkodeannya dan dapat
digunakan, namun masih harus menjalani pengujian internal (dalam lingkungan
pembuatnya).Contoh : Mozilla
Beta Version :Software proprietary yang telah selesai pengkodeannya dan dapat
digunakan, namun masih harus menjalani pengujian eksternal (di luar lingkungan
pembuatnya). Software beta bisa gratis, bisa juga komersial.Contoh : ICQ
Commercial Sofware : Software yang dijual dan dilindungi hak cipta (copyright),
dapat bersifat open source atau closed source (proprietary). Contoh : Zope, GNU
Ada
Proprietary Software :Software komersial yang bersifat closed source,
merupakan kebalikan dari free software. Contoh : MS Windows, MS Office
Page 8
OUTPUT
Alat Keluaran (Output Devices) merupakan bagian dari perangkat keras (hardware)
yang digunakan untuk memperlihatkan informasi bagi pengguna komputer dan juga
digunakan sebagai alat interaksi antara pengguna komputer dengan komputer itu
sendiri. Ada tiga jenis alat keluaran yang paling umum digunakan, yaitu layar
(monitor), alat cetak (printer), dan perangkat suara (sound system).
Monitor, digunakan untuk menampilkan informasi di layar dan juga sebagai
alat untuk memudahkan interaksi antara pengguna komputer dengan komputer
itu sendiri.
Printer, digunakan apabila pengguna komputer membutuhkan hasil cetakan
(printout) pada kertas. Jadi, informasi yang diperoleh berupa hard copy karena
berwujud dan permanent.
Sound Output, digunakan untuk mendapat informasi dalam bentuk suara
Layar (Monitor)
Layar atau monitor merupakan alat keluaran yang paling penting karena
monitor merupakan alat keluaran yang paling sering berinteraksi dengan
pengguna komputer.
Page 9
Thermal Printer, bekerja menggunakan kertas khusus yang dipanaskan
(Direct Thermal). Contohnya printer yang digunakan untuk mencetak foto
menggunakan Thermal Dye Transfer atau printer untuk mencetak slip
pembayaran.
Plotter, biasa digunakan untuk mencetak gambar atau image dengan ukuran
besar. Misalnya untuk mencetak rancangan rumah, peta, dan lain-lain. Jenis
plotter ada dua, yaitu Flatbed Plotter dan Drum Pl
INPUT DEVICE
alat Masukan (Input Devices) merupakan bagian dari perangkat keras (hardware)
yang digunakan untuk memasukkan data dan juga memberikan instruksi.
beberapa alat masukan agar dapat bekerja dengan baik membutuhkan perangkat lunak
(software) yang biasa juga disebut device driver.
Papan ketik atau biasa disebut keyboard merupakan alat masukan yang
paling utama dan paling umum dipakai. Dipergunakan untuk memasukan
data yang berupa teks (huruf, angka, dan tanda baca) dan juga perintah atau
instruksi dengan cara diketik. Sekarang ini, mengetik adalah cara tercepat
untuk memasukan data berupa teks dan data lain ke dalam komputer.
Keyboard yang paling umum digunakan saat ini dikeluarkan oleh IBM
Enhanced Keyboard, yang mempunyai 101 tombol dengan pengelompokan.
A. Alphanumeric Keys, bagian keyboard yang menyerupai mesin tik. Jenis yang paling
umum digunakan adalah keyboard QWERTY dengan susunan enam tombol di kiri atas
dari tombol alphanumeric, yaitu Q, W, E, R, T, dan Y.
B. Modifier Keys, yang penggunaannya harus digabungkan dengan tombol lain.
Pada komputer IBM, berupa tombol Shift, Ctrl
C. Function Keys, biasanya terletak di sisi atas keyboard dengan diberi nama F1, F2, dan
seterusnya. Digunakan untuk memberi perintah dengan cepat tanpa harus mengetik
karakter yang panjang.
D. Cursor movement keys, digunakan untuk memindahkan posisi kursor pada layar
E. Numeric Keypad, umumnya terletak di sisi kanan keyboard dengan sepuluh digit
angka dan operasi aritmetika (+, -, *, /).
Alat Penunjuk (Screen-Pointing Devices)
Alat penunjuk (screen pointing device) yang paling umum digunakan pada saat
bekerja dengan komputer adalah mouse. Alat penunjuk (pointing device) selain
mouse, di antaranya Graphics Tablet (Digitizing Tablet), Joystick, Light Pen, Stylus
(Pen), Trackball, dan lain-lain.
Page
10
Alat Pemindai (Scanner)
Alat pemindai yang banyak digunakan saat ini adalah Scanner. Scanner
akan mengkonversi setiap image (baik gambar maupun teks) dengan cara
menyorotnya dengan sinar dan menangkap intensitas refleksi dari image tersebut,
yang selanjutnya dapat Anda simpan sebagai file image.
Bentuk alat pemindai (Scanner) bermacam-macam, di antaranya:
Flatbed, bentuknya seperti mesin fotocopy di mana image sebagai sumber diletakkan
di atas kaca.
SISTEM BILANGAN
Sistem Bilangan Oktal.
Sistem bilangan oktal adalah suatu sistem atau cara menghitung bilangan dengan
menggunakan delapan simbol angka yaitu ‘0’ ,‘1’, ‘2’,’3’,’4’,’5’,’6’,dan ’7’ bilangan ini
sering disebut dengan sistem bilangan berbasis atau radix 8.
52/2 = 26 sisa 0,
LSB
26/2 = 13 sisa 0
13/2 = 6 sisa 1
6/2 = 3 sisa 0
3/2 = 1 sisa 1
½ = 0 sisa 1,
MSB
Sehingga bilangan desimal 5210 dapat diubah menjadi bilangan biner 1101002.
11/8 = 1, sisa 3
1/8 = 0, sisa 1,
MSB
Titik biner
Titik desimal
25 + 2 4 + 21 + 20
32 + 16 + 2 + 1 = 51 Desimal
Sehingga bilangan biner 1100112 berubah menjadi bilangan desimal 5110.
Tabel 2.4. adalah contoh perubahan beberapa bilangan biner menjadi bilangan
1110 - - 1 1 1 0 8 + 4 + 2 + 0 =14
1011 - - 1 0 1 1 8 + 0 + 2 + 1 =11
110011 1 1 0 0 1 1 32+16+ 0 + 0 + 2 + 1 = 51
Cara lain untuk mengkonversikan bilangan biner menjadi bilangan desimal dapat
Page
13
dilakukan dengan cara menjumlahkan angka 2 dengan pangkat koefisien biner yang
berharga 1. Sebagai contoh, untuk mengubah bilangan 101112 menjadi bilangan desimal,
dilakukan dengan langkah- langkah sebagai berikut :
101112 = 1x 24 + 0x 23 + 1x 22 + 1x 21 + 1x 20 = 2310
112 = 38,
MSB 1102 =
68 0112 = 38
Page
14
Bilangan biner dapat diubah menjadi bilangan heksadesimal dengan cara
mengelompokkan setiap empat digit dari bilangan biner tersebut dimulai dari digit paling
kanan (LSB). Kemudian, setiap kelompok diubah secara terpisah ke dalam bilangan
heksadesimal.
Sebagai contoh, 01001111010111102 dapat dikelompokkan
menjadi: 0100 1111 0101 1110. Sehingga:
11112 = F16
01012 = 516
Titik oktal
Titik desimal
Oleh karena itu bilangan oktal dapat dikonversikan ke bilangan desimal
dengan cara menjumlahkan bobot kali nilai-nilai dari masing-masing posisinya.
Page
15
Sebagai contoh, untuk mengubah bilangan oktal 3728 menjadi bilangan desimal
dapat dilakukan sebagai berikut:
3 7 2 Oktal
Tabel 2.6. Ekivalen setiap digit bilangan oktal menjadi 3 bit bilangan biner
Digit oktal 0 1 2 3 4 5 6 7
Ekivalen biner 3 bit 000 001 010 011 100 101 110 111
38 = 0112, MSB
58 = 1012
28 = 0102
78 = 1112, LSB
Sehingga bilangan oktal 35278 sama dengan bilangan biner 011 101 010 1112.
Oktal 3 2 7
berikut: Oktal 3 2 7
Selanjutnya hasil bilangan biner dikelompokkan setiap empat bit dimulai dari
digit paling kanan (LSB). Kemudian, setiap kelompok diubah secara terpisah ke dalam
bilangan heksadesimal.
Heksadesimal 0 D 7
Titik heksadesimal
Titik desimal
= 1 x 4096 + 5 x 256 + 2 x 16 + 11 x 1
= 4096 + 1280 + 32 + 11
= 541910
Page
18
Konversi bilangan heksadesimal ke biner.
Konversi dari bilangan heksadesimal ke bilangan biner dapat dilakukan dengan
cara mengubah setiap digit pada bilangan heksadesimal secara terpisah menjadi
ekivalen biner 4 bit, seperti yang terlihat pada Tabel 2.8.
Tabel 2.8. Ekivalen setiap digit dari bilangan heksadesimal menjadi 4 bit bilangan
biner
A16 = 1010
516 = 0101
C16 = 1100, LSB
Page
19
Konversi dari bilangan heksadesimal ke bilangan oktal dapat dilakukan dengan
cara mengubah bilangan heksadesimal ke bilangan biner atau ke bilangan desimal
terlebih dahulu.
Sebagai contoh, bilangan heksadesimal 9F216 dapat diubah menjadi
bilangan oktal dengan cara diubah dulu ke bilangan desimal, sebagai berikut:
Heksadesimal 9 F 2
Desimal 9x162 + 15x161 + 2x160 =
2304 + 240 + 2 = 254610
Selanjutnya hasil bilangan desimal diubah ke bilangan oktal,
2546/ = 31 sis 21 = 28,
8 8, a 0 LSB
318/8 = 39 sis 6 = 68,
, a 1
0
39/8 = 4, sis 7 = 78,
a 1
0
4/8 = 0, sis 4 = 48,
a 1 MSB
0
9 F2
LOGIC GATE
Page
20
Gerbang Logika (Logic Gates) adalah sebuah entitas untuk melakukan pengolahan
input-input yang berupa bilangan biner (hanya terdapat 2 kode bilangan biner yaitu,
angka 1 dan 0) dengan menggunakan Teori Matematika Boolean sehingga dihasilkan
sebuah sinyal output yang dapat digunakan untuk proses berikutnya.
Pengertian Gerbang Logika (Logic Gates) "Gerbang logika atau gerbang
logik adalah suatu entitas dalam elektronika dan matematika Boolean yang mengubah
satu atau beberapa masukan logik menjadi sebuah sinyal keluaran logik. Gerbang
logika terutama diimplementasikan secara elektronis menggunakan diode atau
transistor, akan tetapi dapat pula dibangun menggunakan susunan komponen-
komponen yang memanfaatkan sifat-sifat elektromagnetik (relay), cairan, optik dan
bahkan mekanik."
Page
21
BAB II
CPU DAN PROCESS DEVICE
Apa Fungsi CPU?
Tujuan setiap komputer adalah melakukan beberapa bentuk pemrosesan data. CPU
mendukung pemrosesan data dengan melakukan fungsi mengambil, menkode, dan
mengeksekusi pada instruksi yang diprogram.
Secara bersamaan, fungsi-fungsi ini sering disebut sebagai siklus instruksi. Selain
fungsi siklus instruksi, CPU melakukan fungsi mengambil dan menulis data
Fungsi Siklus Instruksi CPU
Ketika suatu program berjalan pada komputer, instruksi disimpan dalam memori
komputer sampai mereka dieksekusi. CPU menggunakan penghitung program untuk
mengambil instruksi selanjutnya dari memori, di mana ia disimpan dalam format yang
dikenal sebagai kode assembly.
Jenis operasi yang biasanya dapat dilakukan oleh CPU mencakup fungsi matematika
sederhana seperti penjumlahan, pengurangan, perkalian, dan pembagian.
CPU juga dapat melakukan perbandingan antara objek data untuk menentukan
apakah mereka sama.
Semua hal luar biasa yang dapat dilakukan komputer dilakukan dengan ini dan
beberapa operasi dasar lainnya. Setelah instruksi dieksekusi, instruksi selanjutnya
diambil dan siklus berlanjut.
Page
22
Saat melakukan fungsi eksekusi dari siklus instruksi, CPU mungkin diminta untuk
menjalankan instruksi yang membutuhkan data. Misalnya, menjalankan fungsi
aritmatika membutuhkan angka yang akan digunakan untuk perhitungan.
Untuk mengirimkan data yang diperlukan, ada instruksi untuk mengambil data dari
memori dan menulis data yang telah diproses kembali ke memori.
Instruksi yang digunakan oleh CPU dan data yang dioperasikannya disimpan di area
memori yang sama. Alamat unik digunakan oleh CPU untuk melacak lokasi memori
yang berbeda.
CPU mikroprosesor
Mikroprosesor komputer pribadi adalah chip yang berisi semua sirkuit yang
diperlukan untuk mengontrol operasi komputer.
Ini memungkinkan setiap fungsi CPU dijalankan oleh satu chip yang lebih murah
untuk diproduksi dan lebih dapat diandalkan karena penggunaan sirkuit terintegrasi.
Saat ini, banyak prosesor modern memiliki beberapa CPU pada chip yang sama,
disebut sebagai core.
Komponen CPU
Unit logika aritmatika membaca dan menafsirkan instruksi dari memori dan
mengubahnya menjadi serangkaian sinyal untuk mengaktifkan bagian lain dari
komputer. Unit kontrol memanggil unit logika aritmatika untuk melakukan
perhitungan yang diperlukan.
Ketiga adalah cache, yang berfungsi sebagai memori berkecepatan tinggi tempat
instruksi dapat disalin dan diambil. CPU awal terdiri dari banyak komponen yang
terpisah, tetapi sejak 1970-an, mereka telah dibangun sebagai satu unit terintegrasi
yang disebut mikroprosesor.
Page
23
Dengan demikian, CPU adalah jenis mikroprosesor tertentu. Komponen individual
dari CPU telah menjadi sangat terintegrasi sehingga Anda bahkan tidak dapat
mengenalinya dari luar. CPU ini berukuran sekitar dua inci kali dua inci.
Ini adalah sakelar mikroskopis yang mengontrol aliran listrik tergantung pada apakah
sakelar hidup atau mati. Jadi transistor berisi informasi biner: satu jika arus melewati
dan nol jika arus tidak melewati.
Transistor terletak pada potongan silikon yang sangat tipis. Satu chip silikon
dapat berisi ribuan transistor. Sebuah CPU tunggal berisi sejumlah besar
chip. Gabungan, ini hanya mencakup sekitar satu inci persegi atau lebih.
Page
24
Bagaimana Prosesor Komputer Bekerja
Tiga langkah ini berulang dalam siklus yang dimulai kembali dengan CPU
mengambil instruksi selanjutnya. Langkah-langkah ini disebut sebagai siklus instruksi
CPU.
Ini disimpan dalam register, yang merupakan lokasi memori khusus di CPU itu
sendiri. Penghitung program bertambah untuk menunjuk ke instruksi berikutnya
setelah masing-masing mengambil dalam siklus instruksi.
Operasi Dilakukan oleh CPU
Operasi memori memindahkan data dari satu lokasi ke lokasi lain. Operasi logis
menguji suatu kondisi dan mengambil keputusan berdasarkan hasilnya. Pengendalian
operasi mempengaruhi komponen lain dari komputer.
Jenis operasi dasar ini, yang dijalankan dengan sangat cepat, memungkinkan
komputer untuk melakukan berbagai fungsi. Jumlah pasti operasi yang didukung oleh
CPU tergantung pada arsitekturnya.
Memori komputer mengacu pada area tempat data dan program disimpan. Memori
bukan bagian dari CPU, tetapi CPU harus berinteraksi erat dengannya. Ada dua jenis
memori komputer: primer, atau utama, dan sekunder.
Page
25
CPU sangat bergantung pada memori utama untuk menyimpan instruksi program
dan data instruksi beroperasi. Memori utama bersifat sementara dan hanya
menyimpan instruksi dan data untuk suatu program saat program sedang dijalankan.
Memori sekunder adalah penyimpanan yang lebih permanen yang disediakan oleh
hard drive dan flash drive.
Komponen CPU yang dikenal sebagai unit kontrol bertanggung jawab untuk
memindahkan instruksi dan data dari penyimpanan sekunder ke memori utama
sebelum pelaksanaan instruksi. Unit kontrol juga memindahkan hasil instruksi ke
penyimpanan sekunder.
Process Device
pada komputer adalah perangkat keras yang berfungsi untuk memproses dan
mengolah data yang diberikan oleh peralatan input kemudian di keluarkan dalam
bentuk informasi ke dalam peralatan output yang akan diterima oleh manusia.
Peralatan proses terdiri dari beberapa komponen perangkat keras komputer yang
saling berhubungan satu sama lain. Peralatan proses tersebut diantaranya
adalah: CPU, motherboard, Prosesor, RAM, ROM, Memory, Vga card, Lan card, Cm
os, Hard disk, Floppy Disk, CD ROM, DVD ROM, Power Supply, dan lain-lain.
A. CPU adalah : unsur yang paling penting dari sebuah sistem komputer.
Pada mesin besar, CPU memerlukan satu atau lebih papan sirkuit tercetak. Pada
komputer pribadi dan workstation kecil, CPU ditempatkan dalam sebuah chip tunggal
yang disebut mikroprosesor.
B. Motherboard adalah : Pusat pengendali yang mengatur kerja dari semua
komponen yang terpasang padanya. Mengatur pemberian daya listrik pada setiap
komponen PC. Lalu lintas data semuanya diatur oleh motherboard, mulai dari
peranti peyimpanan (harddisk, CD-ROM), peranti masukan data (keyboard,
mouse, scanner), atau printer untuk mencetak.
C. Prosesor adalah : sebuah perangkat di gunakan untuk mengolah data yang masuk,
atau bisa di ibaratkan sebagai otaknya computer.
E. ROM adalah : Memori yang hanya dapat dibaca. ROM dapat dibaca tapi tidak
dapat diperbaharui. Biasanya ROM dipakai untuk menyebutkan bagian-bagian
Page
26
elektronik tertentu dlam suatu komputer. Disk non alterable seperti CD-ROM
merupakan suatu jenis penyimpanan yang hanya bisa dibaca. Read Only Memory
bersifat non-volatile dan tidak hilang meskipun power dimatikan.
F. Memory adalah : Sebuah alat yang di gunakan untuk menyimpan data sementara
saja, Memori merupakan bagian dari komputer yang berfungsi sebagai tempat
penyimpanan informasi yang harus diatur dan dijaga sebaik-baiknya.
G. VGA Card adalah : untuk mengolah data graphis dan ditampilkan di layar
monitor, VGA juga memiliki processor yang dinamakan GPU(Graphics
Processing Unit) dan membutuhkan memory juga
H. LAN Card adalah : kartu yang dipasang pada mainboard sebagai alat penghubung
komputer dalam suatu jaringan / network. Pengertian Ethernet merupakan jenis
skenario perkabelan dan pemrosesan sinyal untuk data jaringan
.
I. CMOS adalah : suatu memory yang khusus yang berisi data vital mengenai
konfigurasi komputer dan bersifat semi-permanen.CMOS memerlukan daya yang
sangat kecil untuk mempertahankan kontennya, dan chip ini memanfaatkan baterai
sebagai sumber daya listriknya.
K. Floppy Disk adalah : perangkat penyimpanan data yang terdiri dari sebuah
medium penyimpanan magnetis bulat yang tipis dan lentur, dilapisi lapisan persegi
yang berbentuk persegi atau persegi panjang.
L. CD ROM adalah : digunakan untuk membaca compact disk dalam bentuk audio
atau CD-ROM. CD-ROM keluaran terbaru dapat membaca CD-R (CD yang dapat
ditulis) dan juga CD-RW (CD yang dapat ditulis berulang-ulang).
M. DVD ROM adalah : Perangkat komputer yang berfungsi sebagai pembaca data
pada DVD. Perangkat ini memiliki bentuk fisik sama persis seperti CD ROM
Drive, akan tetapi memiliki fungsi yang berbeda.
N. Power Supply adalah : sebuah perangkat yang ada di dalam CPU yang berfungsi
untuk menyalurkan arus listrik ke berbagai peralatan computer.
Page
27
BAB III
SET INSTRUKSI
Pengertian Set Instruksi
Set Instruksi (bahasa Inggris : Instruction Set, atau Instruction Set Architecture
(ISA)) didefinisikan sebagai suatu aspek dalam arsitektur komputer yang dapat dilihat
oleh para pemrogram. Secara umum, ISA ini mencakup jenis data yang didukung,
jenis instruksi yang dipakai, jenis register, mode pengalamatan, arsitektur memori,
penanganan interupsi, eksepsi, dan operasi I/O eksternalnya (jika ada).
ISA merupakan sebuah spesifikasi dari kumpulan semua kode-kode biner (opcode)
yang diimplementasikan dalam bentuk aslinya (native form) dalam sebuah desain
prosesor tertentu. Kumpulan opcode tersebut, umumnya disebut sebagai bahasa mesin
(machine language) untuk ISA yang bersangkutan. ISA yang populer digunakan
adalah set instruksi untuk chip Intel x86, IA-64, IBM PowerPC, Motorola 68000, Sun
SPARC, DEC Alpha, dan lain-lain.
Elemen Set Instruksi
Operation Code (Opcode), menspesifikasikan operasi yang akan dilakukan. Kode
operasi berbentuk kode biner. Dalam komputasi, sebuah opcode (disingkat dari kode
operasi) adalah bagian dari instruksi bahasa mesin yang menentukan operasi yang
akan dilakukan. Selain opcode itu sendiri, instruksi biasanya menentukan data mereka
akan memproses, berupa operan. Selain opcodes digunakan dalam arsitektur set
instruksi dari berbagai CPU, yang merupakan perangkat keras, mereka juga dapat
digunakan di mesin komputasi abstrak sebagai bagian dari spesifikasi kode byte
Contoh opcode :
0001(2) = 1(16) = Load AC dari memori
0010(2) = 2(16) = Simpan AC pada memori
0101(2) = 5(16) = tambahkan pada AC dari memori
Accumulator(AC/ACC) = penyimpanan sementara
Source Operand Reference, operasi dapat berasal dari lebih satu
sumber. Operand adalah input instruksi. Sumber dan hasil operand dapat berada di
salah satu dari ketiga daerah di bawah ini. Memori utama atau memori virtual dengan
referensi alamat berikutnya, maka alamat memori utama atau virtual harus diketahui.
Register CPU : instruksi harus diberi nomor register yang dimaksud.
Perangkal I/O : instruksi harus menspesifikasikan modul I/O yang diperlukan oleh
operasi.
Page
28
Result Operand Reference, merupakan hasil atau keluaran operasi. Result Operand
Reference : merupakan hasil dari operasi yang dilaksanakan.
Contoh set instuksi dalam microsoft :
PRINT
QUICK PRINT
PRINT PREVIEW
Contoh dalam matematika 5+5=10 (10 tersebut hasil perintah dari operand)
Next Instruction Reference, menginformasikan CPU untuk melakukan instruksi
berikutnya yang harus diambil dan dieksekusi atau juga memberitahu CPU untuk
mengambil (fetch) instruksi berikutnya setelah instruksi yang dijalankan selesai
(fetching).
Jenis Instruksi
lnstruksi-instruksi diklasifikasikan dalam tipe yang berbeda berdasarkan faktor-
faktor berikut :
Opcode : kode operasi yang harus dikerjakan oleh instruksi.
Data : tipe data : biner, desimal dan sebagainya.
Lokasi operand : memori, register, dan sebagainya.
Pengalamatan operand : metode penentuan lokasi operand (alamat).
Panjang instruksi : satu byte, dua byte, dan sebagainya.
Jumlah medan alamat : nol alamat, satu alamat, dua alamat, dan sebagainya.
Tidak ada dua komputer yang mempunyai set instruksi yang sama. Hampir
setiap komputer mempunyai beberapa instruksi yang unik yang menarik pemrogram.
Arsitek komputer memberikan perhatian dalam pembentukan set instruksi karena
melibatkan pemrogram dan mesin komputer. lnstruksi-instruksi dapat diklasifikasikan
ke dalam delapan jenis :
lnstruksi transfer data : instruksi ini menyalin data dari satu register/lokasi
memori ke yang lainnya.
lnstruksi aritmetika : instruksi ini melakukan operasi-operasi aritmetika.
lnstruksi logika : instruksi ini melakukan operasi-operasi logika Boolean.
lnstruksi transfer kontrol : instruksi ini modifikasi/mengubah urutan eksekusi
program.
lnstruksi I/O : instruksi ini melakukan transfer informasi antara peripheral eksternal
dan inti sistem (CPU/memori).
Page
29
lnstruksi manipulasi strint : instruksi ini melakukan manipulasi
string byte, word, double word, dan sebagainya.
lnstruksi Translate: instruksi ini melakukan konversi data dari satu format ke format
lain.
lnstruksi kontrol prosesor: instruksi ini melakukan kontrol operasi prosesor.
Pada Gambar 1 diberikan beberapa contoh instruksi untuk setiap jenis instruksi.
Karena pabrik komputer mempunyai dokumentasi/notasi instruksi masing-masing
yang saling berbeda, maka diberikan mnemonic sederhana untuk mewakili secara
komprehensif.
Page
30
BAB IV
PENGANTAR PEMROGRAMAN
Logika Pemrograman
A. Logika Pemrograman digunakan oleh pemrogram untuk menulis program
komputer yang efisien dan efektif.
B. Setiap program harus dimulai dengan logika program, yang merupakan
cetak biru, dan diakhiri dengan pengkodean pernyataan bahasa
pemrograman.
C. Logika program digunakan oleh programmer untuk memodelkan instruksi
bahasa pemograman yang dilakukan oleh komputer pada saat program
dijalankan.
D. Instruksi struktur logika program mungkin memberikan keputusan program
(yaitu jika file tidak ada, menampilkan pesan) atau loop melalui serangkaian
instruksi berulang.
Komponen dan Operasi Komputer
A. Perangkat keras dan perangkat lunak: dua komponen utama dari sistem
komputer mana pun
B. Hardware : perlengkapan, atau perangkat
C. Software : program yang berisi instruksi untuk komputer
D. Empat operasi utama di komputer:
o Memasukkan
o Pengolahan
o Keluaran
o Penyimpanan
o Mengorganisir data
o Memeriksa akurasi data
o Manipulasi matematika atau lainnya pada data
Page
31
L. Compiler atau interpreter : perangkat lunak yang menerjemahkan bahasa
pemrograman ke bahasa mesin
M. Kesalahan logika , atau kesalahan semantik , lebih sulit ditemukan
daripada kesalahan sintaks
N. Logika untuk mengalikan angka dengan 2 (termasuk pernyataan input,
pemrosesan dan output)
O. Dua kategori penyimpanan: internal dan eksternal
o Penyimpanan internal :
o Pahami masalahnya
o Rencanakan logikanya
o Kode program
o Gunakan perangkat lunak untuk menerjemahkan program ke bahasa
mesin
o Uji programnya
o Terapkan program ke dalam produksi
Memahami masalah:
Page
32
Merencanakan logika:
Coding program:
Menguji program:
Page
33
o Database : kumpulan file terkait, yang disebut tabel, yang melayani
kebutuhan informasi organisasi
Menggunakan Simbol Diagram Alir dan Pernyataan Kode Pseudo
A. Flowchart : representasi bergambar dari logika
B. Pseudocode : Representasi logika yang mirip bahasa Inggris
Menggunakan dan Menamai Variabel
o Karakter hukum
o Panjang maksimum
o Penggunaan huruf besar atau kecil
B. Nama variabel harus satu kata, tetapi dapat dibentuk dari beberapa kata
Perulangan tak terbatas : urutan pernyataan yang berulang selamanya tanpa jalan
keluar
A. Hindari loop tak terbatas dengan menguji nilai yang telah ditentukan
B. sebelumnya yang berarti "hentikan pemrosesan"
C. Keputusan : menguji nilai
D. Simbol keputusan diagram alir : bentuk berlian, dengan dua garis alur,
satu untuk Ya dan satu untuk Tidak
E. Nilai sentinel (atau nilai dummy )
F. Penanda akhir file ( EOF ) :
Page
34
Memahami Tipe Data
A. Dua tipe data dasar:
B. Teks
o Numerik
C. Data numerik disimpan oleh variabel numerik
D. Data teks disimpan oleh string, teks, atau variabel karakter
E. Konstanta :
o Nilai yang tidak berubah saat program berjalan
o Memiliki pengenal, dan dapat digunakan seperti variabel untuk
kalkulasi, tetapi tidak dapat diberi nilai baru
Page
35
BAB V
DATA, VARIABEL, TYPE DAN MODULISASI
Modul
unit dari organisasi sistem perangkat lunak yang membundel sekumpulan entitas
(data dan metoda operasi) dan dengan secara teliti mengontrol apa "user eksternal"
bisa lihat atau gunakan.
Penyembunyian informasi
dilakukan modul untuk melindungi informasi dari "user external" dalam
penggunaannya (misalnya software error, security) dan merupakan basis dari abstract
data type (ragam data abstraks).
Abstract data type (ADT)
Kumpulan obyek dan metoda operasi yang mempresentasikan sifat-sifat abstraks
bagi "user" dengan menyembunyikan bagaimana semua itu direpresentasikan dalam
representasi data level yang lebih rendah.
Interface dari modul
Spesifikasi bagaimana modul tersebut dilihat atau digunakan oleh "user" sementara
bagian yang private tetap tersembunyi.
Contoh
o Sebuah microwave oven sebagai suatu modul. Pemakai dapat
menggunakannya dengan tersedianya interface panel tombol. Pemakai
hanya perlu tahu untuk apa tombol-tombol tersebut dan bagaimana
mengoperasikannya. Pemakai tidak perlu tahu mekanisme kerja oven
tersebut secara intenal (tabung magnetron, chip, dsb.).
o Window menyediakan sejumlah button untuk dapat menutup,
memperbesar, memperkecil, dsb windows tersebut.
Bahasa Pemrograman Modular
Bahasa-bahasa pemrograman moderen menyediakan cara-cara untuk dapat
membuat sistem perangkat lunak secara modular demikian, yaitu
o cara untuk mengelompokkan bersama data dan metoda operasi
o cara untuk mendefinisikan interface yang "clean"
o cara untuk menyembunyikan rincian internal dari data dan metoda-
metoda operasi
o cara untuk kompilasi secara terpisah
Contoh:
o Turbo Pascal menyediakan fasilitas pembuatan TPU dengan definisi
interface.
Page
36
o Bahasa C memungkinkan pembuatan object module (*.obj) dan library
(*.a) yang dapat di-link ke modul program utama melalui interface
header file (*.h).
Bahasa Java
Bahasa Java memungkinkan konsep pemrograman modular, enkapsulasi, dan
abstraksi data dengan disediakannya skema-skema class, interface, dan packages.
Enkapsulasi dimungkinkan dengan pendefinisian private bagi data/metoda yang
disemebunyikan dan public bagi data/metoda yang berperan sebagai interface.
Dalam Java terdapat keyword interface dengan pengertian yang lain. Keword ini
digunakan sebagai suatu definisi teknis yang menyatakan sekumpulan metoda
abstraks yang bisa diimplementasikan dalam pendefinisian kelas-kelas obyek.
Manfaat definisi interface ini agar obyek-obyek dari sejumlah kelas yang
mengimplementasikan interface ini dapat saling direfer oleh variabel beragam
interface ini.
Contoh:
interface Xclass {
public void whataMethod();
}
public class Aclass implements Xclass {
public void whataMethod() {
...// diimplementasikan disini
}
}
public class Bclass implements Xclass {
public void whataMethod() {
...// diimplementasikan disini
}
}
class Mainclass {
Xclass a,b;
static public void main(String [] a) {
a = new Aclass();
b = new Bclass();
a.whataMethod();
b.whataMethod();
}
}
Page
37
Contoh lain adalah untuk masalah pencarian data (searching). Key data bisa
muncul dalam berbagai tipe data: int, float, String, dsb. Fasiltas interface ini dapat
memungkinkan pedefinisan algoritma umum compareTo() dalam
interface ComparisonKey untuk setiap tipe data. Selanjutnya kelas-kelas yang
mengimplementasikan interface tersebut dapat didefinisikan sesuai denga tipe data
yang dikehendaki.
Dengan fasilitas-fasilitasa ini kita bisa mengembangkan sistem perangkat
lunak besar dengan komponen-komponennya yang bersifat umum demikian dan
selanjutnya dapat di-plug-and-play implementasi dalam berbagai tipe data.
Fasilitas Java lain dalam pendefinisian modularitas dan ADT adalah
keyword package. Keyword ini membundle sekumpulan kelas yang satu dengan yang
lainnya saling memiliki relasi khusus. Pendefinisian package ini memungkinkan
kompilasi secara terpisah dan diimport sebagai library.
Sebagai contoh kasus untuk pembahasan modularitas dan ADT adalah suatu kelas
Priority Queue.
Definisi
o Priority Queue
Priority queue (PQ) adalah suatu struktur data abstraks yang berperilaku
sebagai berikut. PQ adalah kumpulan item data yang masing-masing memiliki tingkat
prioritas yang bisa berbeda. Apabila item data diambil dari kumpulan tersebut maka
item data yang berprioritas paling tinggi lah yang diperoleh.
Dalam pengembangannya pertama kali adalah memformulasikan konsep
abstraksnya tanpa harus memikirkan tipe datanya, apalagi implementasi rincinya.
Implementasinya sendiri dapat dilakukan dalam dua representasi level bawah yang
berbeda: array atau linked-list yang dapat belakangan kita buat.
Kegunaannya PQ
Banyak ditemukan dalam masalah-masalah penjadwalan, misalnya untuk sistem
antrian untuk pelayanan pasien dalam ruang praktek dokter, penjadwalan pembayaran
tagihan, dsb. Prioritas bisa didefinisikan dalam beberapa aspek. PQ dapat digunakan
juga untuk pengurutan data kengan key data sebagai harga prioritas: sejumlah data tak
terurut dimasukkan ke dalam PQ lalu setelah semua masuk satu demi satu data
diambil dari PQ. Pada pengurutan menaik maka data yang diambil ditaruh dari kanan
ke kiri elemen-elemen array. Pada pengurutan menurun harga key bisa kebalikan dari
harga prioritas, alterntifnya data yang di ambil satu demi satu di taruh dari kiri ke
kanan elemen-elemen array.
Page
38
Spesifikasi PQ
Terdapat sejumlah metoda operasi yang menjadi 'interface': bagi pemakai kelas
obyek ini.
o mengkonstruksikan PQ yang diinisialisasi kosong
PQ = new PriorityQueue();
o mendapatkan ukuran (jumlah item data) dalam PQ,
n = PQ.size();
o menyisipkan item baru dalam PQ,
PQ.insert(X);
o bila PQ tidak kosong, menghapus item dengan prioritas tertinggi dalam
PQ
X = PQ.remove();
Secara sepintas bisa diketahui bahwa terdapat suatu proses internal (yang tidak perlu
diketahui oleh user) di dalam skema ini yaitu pengurutan item data. Implementasi
bagaimana pun user "tidak perduli".
Contoh penggunaan dalam metoda pengurutan data berdasarkan Priority Queue:
void priorityQueueSort(ComparisonKey[] A) {
int n = A.length;
PriorityQueue PQ = new PriorityQueue(); // create & inisialisasi PQ
for (int i = 0; i < n; i++) PQ.insert(A[i]); // mengisi PQ
for (int i = n-1; i >= 0; i--) A[i] = PQ.remove(); // mengambil satu/satu
}
Selanjutnya contoh penggunaan PQ dengan tipe key integer ini dapat dilihat
dalam program lebih lengkapnya.
Pada saat ini definisi kelas PriorityQueue belum diimplementasikan. Sebelum
mengimplementasikannya maka key data item yang sedang kerjakan ini dibungkus
dalam tipe data yang generik yaitu ComparisonKey sebagai suatu interface.
interface ComparisonKey {
int compareTo(ComparisonKey value);
String toString();
}
Untuk selanjutnya ComparisonKey ini diimplementasikan sesuai dengan tipe data
yang sedang digunakan, dalam hal ini misalnya kita menggunakan integer (nanti kita
lihat bila key bertipe String).
public class PQItem implements ComparisonKey {
private int key;
Page
39
PQItem(int value) {
key = value;
}
public String toString() {
return Integer.toString(key);
}
public int compareTo(ComparisonKey value) {
int a = this.key;
int b = ((PQItem) value).key;
return ((a==b)? 0:( (a > b)?1:-1));
}
}
Implementasi Kelas PriorityQueue
Pada level yang lebih rendah kelas priority queue ini dapat diimplementasikan baik
dengan array atau dengan linked list
o Versi Implementasi Unsorted Array (berukuran dinamis)
Page
40
Representasi Untuk tipe key lain (Representation Independent Module)
Selain implementasinya yang bisa berbeda tanpa mengubah rancangan modul
tingkat di atasnya, representasi key data pun dapat diimplementasikan secara berbeda
karena ComparisonKey yang didefinisikan abstraks tersebut. Dengan
abstraksi ComparisonKey di atas maka key bertipe lain dapat menggantikan tipe key
integer dalam contoh di atas.ComparisonKey ini memiliki konsep Representation
Independent Module. Berikut ini representasi String untuk key.
class PQItem implements ComparisonKey {
private String key;
PQItem(String value) {
key = value;
}
public String toString() {
return key;
}
public int compareTo(ComparisonKey value) {
String a = this.key;
String b = ((PQItem)value).key;
return a.compareTo(b); // metoda compareTo dalam kelas String
}
}
Dalam program aplikasinya perubahan terjadi pada bagian data, sementara sejumlah
metoda tetap sama, contoh dalam program lebih lengkapnya.
Modularitan dan Penyebunyian Informasi dalam Rancangan Program
Saat program menjadi semakin besar terjadi situasi berbahaya: rumit, sulit
melakukan debug, dan hampir tidak mungkin di modifikasi kecuali dikembangkan
dengan taat dan secara terstruktur.
Penulisan program komputer dilakukan melalui medium yang memungkinkan
bervariasinya cara penulisan ekspresi-ekspresi yang potensial dapat menyebabkan
masalah yang besar. Dekomposisi ke dalam komponen-komponennya pun dapat
bervariasi, bisa saling kait-mengkait secara kompleks atau teratur dalam layer-layer.
Page
41
Abstraksi prosedural: menyatakan fungsi "apa" (what) yang dilakukan suatu prosedur.
Kita perlu mendefinisikan "apa" dari suatu prosedur terpisah dari "bagaimana" (how)
cara yang dilakukan prosedur untuk mencapai fungsi tersebut. Setelah terdefinisi
dengan baik abstraksi prosedur ini kemudian kita boleh menuliskan rincian
"bagaimana" tersebut, bahkan suatu saat misalnya untuk peningkatan efisiensi maka
metodologi/algoritmanya dapat disubstitusikan tanpa mengubah abstraksi
proseduralnya. Jadi pemisahan tersebut memberi manfaat:
o memudahkan penggunaan -- hanya perlu tahu apa yang dilakukan suatu
prosedur P
o memudahkan modifikasi -- rincian penulisan P dapat diubah tabpa
mengganggu program secara keseluruhan (di mana saja pada
pemanggilan-pemanggian P).
Secara umum pendefinisian abstraksi dengan baik pada perancangan program dapat
mengendalikan kompleksitas program serta meningkatkan modifiabilitas.
Penyembunyian informasi (enkapsulasi) baik variabel ataupun metoda dalam modul-
modul bermanfaat dalam:
o menghindari interferensi entitas lokal dalam modul terhadap entitas
bernama sama di luar modul
o menghindari interferensi entitas diluar modul terhadap entitas lokal
dalam modul terhadap entitas bernama sama
Bahasa berorientasi obyek semacam C++ atau Java mengakomodasikan enkapsulasi
ini dengan baik dengan deklarasi private. Dalam Java terdapat tingkatan lebih lanjut
sepain private, yaitu: package, protected, baru kemudian public.
Istilah package dalam Java memiliki konsep yang sama dengan istilah unit atau
module dalam bahasa pemrograman lain.
Page
42
BAB VI
STRUKTUR PROGRAM
Deklarasi Structure pada C++
Page
43
Pemakaian Structure pada C++
Untuk menggunakan structure dapat dilakukan dengan menuliskan nama structure
yang diikuti dengan nama fieldnya yang dipisahkan dengan tanda titik ( . ) atau tanda
panah ( -> ). Jika variabel tunggal maka digunakan tanda titik sebagai pemisah, tetapi
jika variabel pointer maka digunakan tanda panah sebagai pemisah. Misalnya dari
structure Mahasiswa di atas, kita akan mencetak biodata seorang mahasiswa ke layar
maka penulisannya dapat dilakukan seperti berikut.
cout<<Mhs.NIM; cout<<Mhs->NIM;
cout<<Mhs.Nama; cout<<Mhs->Nama;
cout<<Mhs.Alamat; cout<<Mhs->Alamat;
cout<<Mhs.Ipk; cout<<Mhs->Ipk;
Contoh 1: Buatlah program untuk membaca biodata yang meliputi Nim, Nama,
Alamat, dan Umur kemudian cetak (Lat_Struct_01).
/*Program structure dengan penggunaan tanda titik
Nama File : Lat_Struct_01 */
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
struct Mahasiswa
{
char Nim[9];
char Nama[25];
char Alamat[40];
short Umur;
};
main()
{
Mahasiswa Mhs;
cout<<"Nim : ";
cin.getline(Mhs.Nim,9);
cout<<"Nama : ";
cin.getline(Mhs.Nama,25);
cout<<"Alamat : ";
cin.getline(Mhs.Alamat,40);
cout<<"Umur : ";
Page
44
cin>>Mhs.Umur;
cout<<"\n\n\nNim : "<<Mhs.Nim;
cout<<"\nNama : "<<Mhs.Nama;
cout<<"\nAlamat : "<<Mhs.Alamat;
cout<<"\nUmur : "<<Mhs.Umur;
getch();
}
Struct dalam Struct
Suatu struktur juga dapat mengandung suatu struktur yang lain. Artinya field-field
dalam suatu structure merupakan suatu structure juga. Misalkan biodata Mahasiswa
yang terdiri dari NIM, Nama, Alamat, dan Tanggal Lahir. Alamat terdiri dari Nama
Jalan, Kota, dan Kode Pos. Demikian juga halnya dengan Tanggal terdiri dari
Tanggal, Bulan, dan Tahun. Dengan demikian maka struktur dibagi dalam tiga
struktur, yaitu:
struct Tinggal
{
char Jalan[40];
char Kota[15];
char Pos[5];
};
struct Tgl_Lahir
{
int Tanggal;
int Bulan;
int Tahun;
};
Page
45
struct Mahasiswa
{
char Nim[9];
char Nama[25];
Tinggal Alamat;
Tgl_Lahir Lahir;
};
Kemudian deklarasikan suatu variabel struktur yang bertipe
struktur Mahasiswa, seperti:
Mahasiswa Mhs;
Perlu diingat bahwa jika suatu struktur dengan field bertipe struktur yang lain,
maka struktur tersebut harus berada di atas struktur yang menggunakannya.
Misaslnya, perhatikan ketiga struktur di atas. Struktur Mahasiswa letaknya harus di
bawah dari struktur Tinggal dan Tgl_Lahir. Sedangkan Tinggal dan struktur
Tgl_Lahir boleh saling dipertukarkan posisinya, karena kedua struktur tidak saling
terkait.
Contoh 2: Dengan menggunakan ketiga struktur di atas buatlah program untuk
membaca dan mencetak nilai dari masing-masing field (Lat_Struct_02).
/* Program Struktur di dalam Struktur
Nama File : Lat_Struct_01 */
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
struct Tinggal
{
char Jalan[40];
char Kota[15];
char Pos[5];
};
struct Tgl_Lahir
{
int Tanggal;
int Bulan;
int Tahun;
};
Page
46
struct Mahasiswa
{
char Nim[9];
char Nama[25];
Tinggal Alamat;
Tgl_Lahir Lahir;
};
voidmain()
{
Mahasiswa Mhs;
cout<<"NIM : "; cin.getline(Mhs.Nim,9);
cout<<"Nama : "; cin.getline(Mhs.Nama,25);
cout<<"Alamat :\n";
cout<<"\tJalan : "; cin.getline(Mhs.Alamat.Jalan,40);
cout<<"\tKota : "; cin.getline(Mhs.Alamat.Kota,15);
cout<<"\tKode Pos : "; cin.getline(Mhs.Alamat.Pos,5);
cout<<"Tanggal Lahir :\n";
cout<<"\tTanggal : "; cin>>Mhs.Lahir.Tanggal;
cout<<"\tBulan : "; cin>>Mhs.Lahir.Bulan;
cout<<"\tTahun : "; cin>>Mhs.Lahir.Tahun;
cout<<"\n\nMencetak Kembali Nilai Anggota\n\n";
cout<<"NIM : "<<Mhs.Nim;
cout<<"\nNama : "<<Mhs.Nama;
cout<<"\nAlamat :\n";
cout<<"\n\tJalan : "<<Mhs.Alamat.Jalan;
cout<<"\n\tKota : "<<Mhs.Alamat.Kota;
cout<<"\n\tKode Pos : "<<Mhs.Alamat.Pos;
cout<<"\nTanggal Lahir : "<<Mhs.Lahir.Tanggal<<"-";
cout<<Mhs.Lahir.Bulan<<"-"<<Mhs.Lahir.Tahun;
getch();
}
Page
47
Array dalam Struct
Suatu structure juga dideklarasikan menjadi sebuah array apabila hendak
menggunakan satu struct untuk beberapa kali. Sebenarnya sama dengan struktur
tunggal, perbedaannya adalah hanya pada saat pendeklarasian variabelnya saja.
Bentuk umum pendeklarasian array dari suatu struktur, yaitu:
struct nama_struct
{
<tipe_data> nama_field_1;
<tipe_data> nama_field_2;
...
<tipe_data> nama_field_n;
};
Kemudian deklarasikan suatu variabel bertipe struktur di atas dengan bentuk:
Nama_struct nama_var_struct[banyak_elemen];
Contoh:
struct Mahasiswa {
char NIM[9];
char Nama[25];
char Alamat[30];
float Ipk;
};
Kemudian deklarasikan variabel bertipe struct di atas.
Mahasiswa Mhs[5];
berarti struct mahasiswa digunakan untuk Mhs[0], Mhs[1], Mhs[2], Mhs[3] dan
Mhs[4].
/*Program Array of Structure
Nama File : Lat_Struct_03 */
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
Page
48
struct Mahasiswa
{
char Nim[9];
char Nama[25];
char Alamat[4];
int Umur;
};
main()
{
Mahasiswa Mhs[5];
int i;
for(i=0; i<5; i++)
{
cout<<"Nim : ";
cin>>Mhs[i].Nim;
cout<<"Nama : ";
cin>>Mhs[i].Nama;
cout<<"Alamat : ";
cin>>Mhs[i].Alamat;
cout<<"Umur : ";
cin>>Mhs[i].Umur;
}
for(i=0; i<5; i++)
{
cout<<"\n\nNIM : "<<Mhs[i].Nim;
cout<<"\nNama : "<<Mhs[i].Nama;
cout<<"\nAlamat : "<<Mhs[i].Alamat;
cout<<"\nUmur : "<<Mhs[i].Umur;
}
getch();
}
Page
49
Demikian juga untuk program Lat_Struct_02 di atas dengan menggunakan array dapat
dibuat menjadi program Lat_Struct_04 berikut ini.
/* Program Array of Struct
Nama File: Lat_Struct_04 */
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
struct Tinggal {
char Jalan[40];
char Kota[15];
char Pos[5];
};
struct Tgl_Lahir {
int Tanggal;
int Bulan;
int Tahun;
};
struct Mahasiswa {
char Nim[9];
char Nama[25];
Tinggal Alamat;
Tgl_Lahir Lahir;
};
voidmain()
{
Mahasiswa Mhs[5];
int i;
for(i=0;i<3;i++)
{
cout<<"NIM : "; cin>>Mhs[i].Nim;
cout<<"Nama : "; cin>>Mhs[i].Nama;
cout<<"Alamat :\n";
cout<<"\tJalan : "; cin>>Mhs[i].Alamat.Jalan;
Page
50
cout<<"\tKota : "; cin>>Mhs[i].Alamat.Kota;
cout<<"\tKode Pos : "; cin>>Mhs[i].Alamat.Pos;
cout<<"Tanggal Lahir :\n";
cout<<"\tTanggal : "; cin>>Mhs[i].Lahir.Tanggal;
cout<<"\tBulan : "; cin>>Mhs[i].Lahir.Bulan;
cout<<"\tTahun : "; cin>>Mhs[i].Lahir.Tahun;
}
cout<<"\n\nMencetak Kembali Nilai Anggota\n\n";
for(i=0;i<3;i++)
{
cout<<"\nNIM : "<<Mhs[i].Nim;
cout<<"\nNama : "<<Mhs[i].Nama;
cout<<"\nAlamat :\n";
cout<<"\n\tJalan : "<<Mhs[i].Alamat.Jalan;
cout<<"\n\tKota : "<<Mhs[i].Alamat.Kota;
cout<<"\n\tKode Pos : "<<Mhs[i].Alamat.Pos;
cout<<"\nTanggal Lahir : "<<Mhs[i].Lahir.Tanggal<<"-";
cout<<Mhs[i].Lahir.Bulan<<"-"<<Mhs[i].Lahir.Tahun;
}
getch();
}
Page
51
BAB VII
CONTROL STRUCTURE
Control Structure
Selection Statement
1 IF <?php
waktukomputer server
Page
52
echo “Sekarang masih fajar”;
?>
<?php
$t=date(“H”);
if ($t<“5”)
2 IF-ELSE }
else
?>
3 NESTED-IF <?php
$t=date(“H”);
if ($t<“5”)
if ($t>”5″)
Page
53
{
?>
Multiple Statement
<?php
} else {
?>
2 SWITCH-CASE <?php
Page
54
$favcolor = “red”;
switch ($favcolor) {
case “red”:
break;
case “blue”:
break;
case “green”:
break;
default:
?>
Iterative Statement
Page
55
instruksi. Contoh pretest loop adalah while dan for.Berdasarkan pembacaan kondisi
syarat perulangan,iterative statement dapatdibagi 2 yaitu counter-controlled
loops dan logically controlled loops.
Counter-Controlled Loops
<?php
{
1 FOR
echo “The number is: $x <br>”;
?>
<?php
?>
Page
56
<?php
$x = 1;
while($x <= 5)
1 WHILE {
$x++;
?>
2 DO-WHILE <?php
$x = 1;
do
$x++;
Page
57
} while ($x <= 5);
?>
Tidak seperti counter loop dan logical loop,struktur looping ini dikontrol oleh
jumlah element dari sebuah struktur data. Pada iteration based on data
structure memiliki sebuah fungsi bernama iterator yang bertugas mencari element baru
yang belum dikunjungi. Perulangan akan berhenti saat iterator gagal menemukan
element baru lagi.Pada bahasa pemograman PHP , iteration based on data
structure menggunakan iterator yang telah didefinisikan terlebih dahulu untuk akses
iterative pada array unik PHP,contoh :
reset $list
Page
58
echo (“first number : ” +current($list) + “<br/>”);
while ($current_value=next($list))
– reset memindahkan current keelemen pertama
Page
59
BAB VIII
LOOPING
STRUKTUR KONTROL PERULANGAN (LOOPING)
Perulangan :
Perulangan data atau yang biasa disebut dengan “looping” adalah proses yang
dilakukan secara berulang-ulang sampai batas yang ditentukan. Biasanya bila dalam
perulangan tersebut tidak disertakan batasnya maka syntax akan error karena proses
itu akan berulang terus hingga tak terhingga sementara variabel dalam komputer
masih terbatas.
Jenis :
a. FOR
Contoh :
for (i=0;i<10;i++)
p=2+i;
Page
60
b. WHILE
pernyataan}
Contoh :
i=0
while (i<10)
p=2+i;
i++;
c. DO – WHILE
Syntax : do {
pernyataan}
while (kondisi);
Contoh :
i=0
do
i++;
while (i<10)
Page
61
For :
untuk mengulang suatu proses yang telahdiketahui jumlahnya.
untuk mengulang suatu proses yang belum diketahui jumlahnya. Pengecekan kondisi
akan dilakukan terlebih dahulu. Jika kondisi masih bernilai true, maka looping akan
terus berlanjut.
untuk mengulang suatu proses yang belum diketahui jumlahnya. Instruksi akan
dijalankan lebih dahulu, kemudian dilakukan pengecekan kondisi apabila masih
bernilai true maka looping akan terus berlanjut.
PERULANGAN / LOOP
For statement
While statement
Do while statement
PENJELASAN
For Statement
Ini adalah statement perulangan yang paling sering digunakan. Statement for memiliki
3 parameter, yaitu nilai awal (initial value), teskondisi yang menentukan akhir loop,
dan penentu perubahan nilai.
Bentukumum :
Page
62
Keterangan :
2. WHILE STATEMENT
Pernyataan while adalah pernyataan yang berguna untuk memproses suatu pernyataan
atau memproses pernyataan beberapa kali. Pernyataan atau aksi akan di ulang jika
kondisi bernilai benar dan jika salah maka keuar dari blok perulangan (loop)
Bentuk umumWhile :
<Inisialisasi>
while (kondisi)
Pernyataan ;
3. DO WHILE STATEMENT
Page
63
BAB IX
ARRAYS
Apa itu Array?
Secara pengertian: Array atau larik (dalam Bahasa Indonesia) adalah sebuah tipe
data bentukan yang terdiri dari sejumlah komponen dengan tipe yang sama.
Artinya, kita dapat menyimpan banyak data dalam satu variabel.
Analoginya seperti ini:
Mari kita bayangkan bahwa array merupakan sebuah hotel yang memiliki
beberapa kamar. Kemudian setiap kamar dikenal dengan index atau urutan angka.
Intinya adalah: kita akan menyiapkan kamar dalam hotel dengan nomor index
0-sekian. Untuk penggunaanya sendiri pengunjung dibagi berdasarkan nomor kamar
hotel.
Jika kita lihat lagi masalah diatas, kita tidak lagi membutuhkan banyak variabel
untuk menyiman data yang sama. Namun kita hanya membutuhkan satu variabel saja.
Ada beberapa hal yang perlu anda ketahu tentang array:
Nomor index pada Array dimulaidarinol (0).
Array hanya mampu menyimpan data dengan tipe yang sama.
Artinya, semuaisi array memiliki tipe data sama.
Jika anda sudah paham mari kita lanjutkan.
Syntax Array
Ketika kita mendeklarasikan array ke compiler, maka sama saja dengan
menciptakan sebuah hotel dengan masing-masing nomor kamar yang tersedia.
Setelah kita berhasil mendeklarasikan array, maka kita dapat mulai memberikan
nilai untuk setiap kamar-kamar yang tersedia dalam hotel yang tadi kita deklarasikan.
Tipe data array yang dapat digunakan antara lain: int, char, double, string, dan
boolean.
Berikut cara mendeklarasikan array dalam program pascal.
nama_Array:array[panjang_indeks]oftipe_Array
Contoh pendeklarasian array berdimensi 1 (satu):
X :array[0..9]of integer;
Pada contoh diatas kita telah mendeklarasikanvariabel X bertipe Array yang
memiliki indeks 0-9 (10 larik) dengan tipe data integer. Artinya kita dapat menyimpan
10 angka.
Berikut cara memberikan nilai pada array:
X[0]:=9; X[1]:=8; X[2]:=7; X[3]:=10; X[4]:=8;
X[5]:=7; X[6]:=9; X[7]:=7; X[8]:=8; X[9]:=10;
Page
64
TIPS:X[0] := 9 menunjukkan bahwa X adalah nama larik, 0 adalah nilai
indeks, 10 menunjukkan nilai integer. Sedangkan untuk mengakses nilai darivariabel:
...menggunakan namaVariabel[nomorIndeks], contoh:
Writeln(X[0]);
Dalam penggunaannya, array dipasangkan dengan sebuah fungsi perulangan.
Macam-Macam Array
Ada dua jenis tipe data array:
Array 1 dimensi
Array 2 dimensi (multi dimensi)
Jika array satu dimensi kita asumsikan sebagai deretan data maka array
berdimensi dua mewakili suatu bentukt abel atau matrik dimana indeks yang pertama
menunjukkan baris kemudian indeks yang kedua menunjukkan kolom dari tabel atau
matriks.
Berikut bentuk umumnya:
Nama_larik:Array[indeks_baris,Indeks_Kolom]ofTipe_Array;
Contoh Array dalam Program Pascal
Berikut contoh array dimensi satu dalam pascal dengan fungsi for to do:
Program Contoh Array;
usescrt;
vardata:array[0..4]of integer;
m,n,i: integer;
Begin
n:=4;
Write('Masukan 5 buahangka (1-10): ');
fori:=0to ndo
begin
write('Data ke-',i+1,' = ');readln(data[i]);
end;
Page
65
Berikut contoh array berdimensi dua:
Program Matriks;
uses crt;
var A:array[1..3,1..3] of integer;
i,j,m,n,k,l : integer;
Begin
Writeln('Program input matriks A');
writeln('-----------------------');
write('Banyaknyabaris : ');readln(m);
write('Banyaknyakolom : ');readln(n);
for i:=1 to m do
begin
for j:=1 to n do
begin
write('A [',i,',',j,'] : ');readln(A[i,j]);
end;
writeln;
end;
writeln('MelihatElemenMatrik A');
write('Bariske-');readln(k);
write('Kolomke-');readln(l);
Write('ElemenMatrik A bariske-',k,' kolomke-',l,' =',A[k,l]);
readln;
end.
Page
66
BAB X
SORTING AND SEARCHING
SORTING
Sorting adalah pengurutan data. Data diurutkan dari yang terkecil sampai yang
paling besar atau sebaliknya. Tujuannya supaya data tersebut jadi tersusun rapi,
terurut dan teratur. Algoritma untuk melakukan sorting sperti itu ada bermacam-
macam diantaranya Bubble Sort, SelectionSort, InsertionSort, QuickSort,
ExchangeSort, HeapSort, SmoothSort, CocktailSort, ShellSort, MergeSort, dan masih
banyakl agi yang lainnya. Kali ini kita akan membahas 5 macam sorting saja yaitu
BubbleSort, SelectionSort, InsertionSort, ExchangeSort dan QuickSort.
1.-BubbleSort
Jika nilai data ke-1 lebih besar dari data ke-2 maka tukar posisinya
Kemudian data yang lebih besar tersebut dibandingkan lagi dengan data ke-3
Jika data ke-3 lebih kecil dari data ke-2 maka tukar posisinya, dan begitu seterusnya
sampai data yang ada jadi terurut.
Page
67
Contoh secara manual :
0 87 74 71 54 88 60
1 74 71 54 87 60 88
2 71 54 74 60 87 88
3 54 71 60 74 87 88
4 54 60 71 74 87 88
void bubble_sort()
{
for(int i=1;i<n;i++)< span=""></n;i++)<>
{
for(int j=n-1;j>=i;j--)
{
if(data[j]
}
}
}
Dengan cara ini data akan terurut naik (ascending),untuk data terurut turun
(descending)
silahkan rubah bagian di bawahini:
(data[j]
menjadi:
if (data[j]>data[j-1]) tukar(j,j-1);
Intinya bubble sort itu salah satu metode yang simpel untuk sorting, tetapi jika jumlah
data yang disorting besar akan memakan waktu yang lama.
Page
68
2.-SelectionSort
Tukar bilangan dengan index terkecil tersebut dengan bilangan pertama (I=1) dari data
bilangan tersebut
Lakukan langkah 2 dan3 untuk bilangan berikutnya (I=I+1) sampai di dapatkan data
yang optimal
for ( i=0 ; i<= N-2 ; i++) { kecil = i; for ( k = i+1 ; k <= N-1 ; k++ ) { if (A[k] > A[j])
{
kecil=k;
}
}
temp=A[i];
A[i]=A[kecil];
A[kecil]=temp;
}
3.-InsertionSort
Insertion Sort dilakukan dengan cara menyisipkan sebuah angka keposisi yang
diinginkan. Angka yang disisipkan sesuai dengan urutan iterasinya.
Jumlahiterasiditentukan oleh banyaknya data atau ‘N’. Iterasi=N”.Sekilas algoritma
ini tidak jauh berbeda dengan Bubble Sort, namun sesungguhnya berbeda.
Langkah-langkahnya :
Bandingkan data kedua dengan data pertama, jika data kedua lebih kecil maka
tukar posisinya, jika tidak biarkan saja.
Data ketiga dibandingin dengan data ke-1 dan ke-2,jika data ke-3 lebih kecil tukar
lagi posisinya.
Page
69
Data ke-4 dibandingin dengan data ke-3, ke-2, dan ke-1, jika data ke-4 lebih kecil dari
ketiganya maka letakkan data ke-4 keposisi paling depan, gitu dech seterusnya.
Misalkandata : 10 5 7 9 2 1 8 6
Iterasi Data
0 10 5 7 9 2 1 8 6
1 5 10 7 9 2 1 8 6
2 5 7 10 9 2 1 8 6
3 5 7 9 10 2 1 8 6
4 2 5 7 9 10 1 8 6
5 1 2 5 7 9 10 8 6
6 1 2 5 7 8 9 10 6
7 1 2 5 6 7 8 9 10
void insertion_sort(){
int temp;
for(int i=1;i
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0){
data[j+1] = data[j];
j--;
}
data[j+1] = temp;
}
Page
70
4.-QuickSort
Pindahkan semua elemen yang lebih kecil kesebelah elemen tersebut dan semua
elemen yang lebih besar kesebelah kanannya. Elemen yang nilainya sama bisa di
simpan di salah satunya. Ini di sebut operasi partisi
Lakukan sort secara rekursif terhadap sublist sebelah kiri dan kanannya.
i=L;
j=R;
mid = data[(L+R) / 1];
do
{
while (data[i] <>
while (data[j] > mid) j--;
if (i<= j)
{
tukar(i,j);
i++;
j--;
};
} while (i<>
Page
71
if (L <>
if (i<>
}
5.-ExchangeSort
Exchange Sort hampir sama dengan Bubble Sort. Tapi ada bedanya, yaitu
bagaimana membandingkan antar elemen-elemennya. Exchange sort membandingkan
suatu elemen dengan elemen-elemen lainnya dalam array tersebut, dan melakukan
pertukaran elemen jika diperlukan. Jadi ada elemen yang selalu menjadi elemen pusat
(pivot). Sedangkan Bubble sort akan membandingkan elemen pertama/terakhir dengan
elemen sebelumnya/sesudahnya, kemudian elemen sebelum/sesudahn yaitu akan
menjadi pusat (pivot) untuk di bandingkan dengan elemen sebelumnya/sesudahnya
lagi.
Contoh programnya :
void exchange_sort()
{
for (int i=0; i
{
for(int j = (i+1; j
{
if (data [i] < data[j]) tukar(i,j); //descending
}
}
}
untuk pengurutan secara ascending, silahkan gunakan/ ganti syntax sebelum nya
menjadi :
if (data [i] > data[j]) tukar(i,j);
SEARCHING
Page
72
Searching adalah pencarian suatu data dalam sekumpulan data . Kali ini kita akan
bahas tentang 2 jenis searching yaitu Sequential Search dan Binary Search.
1.-Sequential Search
Data : 20 25 35 79 80 90
0 20 25 35 79 80 90 Data awal
i←0
ketemu←false
Selama (tidak ketemu) dan (i<= N) kerjakan baris 4 4 Jika (Data[i] = x) maka ketemu
← true, jika tidak ← i + 1 5 Jika (ketemu) maka I adalah indeks dari data yang dicari,
Page
73
jika tidak data tidak ditemukan Di bawah ini merupakan fungsi untuk mencari data
menggunakan pencarian sekuensial.
int i = 0;
if(Data[i] == x)
ketemu = true;
else
i++;
if(ketemu) return i;
else
return -1;
2.-Binary Search
Binary Search adalah sebuah teknik untuk menemukan nilai tertentu dalam sebuah
larik (array) linear, dengan menghilangkan setengah data pada setiap langkah, dipakai
secara luas tetapi tidak secara ekslusif dalam ilmu komputer. Sebuah pencarian biner
mencari nilai tengah (median), melakukan sebuah pembandingan untuk menentukan
apakah nilai yang dicari ada sebelum atau sesudahnya, kemudian mencari setengah
sisanya dengan cara yang sama. Sebuah pencarian biner adalah salah satu contoh
dari algoritma divide and conquer .
Penerapan terbanyak dari binary search adalah untuk mencari sebuah nilai tertentu
dalam sebuah list terurut. Jika dibayangkan, pencarian biner dapat dilihat sebagai
sebuah permainan tebak-tebakan, kita menebak sebuah bilangan, atau nomor tempat,
dari daftar (list) nilai.
Pencarian diawali dengan memeriksa nilai yang ada pada posisi tengah list; oleh
karena nilai-nilainya terurut, kita mengetahui apakah nilai terletak sebelum atau
Page
74
sesudah nilai yang di tengahtersebut, dan pencarian selanjutnya dilakukan terhadap
setengah bagian dengan cara yang sama.
int BinarySearch(int x)
int L = 0, R = Max-1, m;
m = (L + R) / 2;
if(Data[m] == x)
ketemu = true;
else if (x <>
R = m - 1;
else
L = m + 1;
if(ketemu)
return m;
else
return -1;
Page
75