PENDAHULUANApakah Itu AlgoritmaDitinjau dari asal-usul katanya,
kata Algoritma sendiri mempunyai sejarah yang aneh. Orang hanya
menemukan kata algorism yang berarti proses menghitung dengan angka
arab. Anda dikatakan algorist jika Anda menghitung menggunakan
angka arab. Para ahli bahasa berusaha menemukan asal kata ini namun
hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika
menemukan asal kata tersebut yang berasal dari nama penulis buku
arab yang terkenal yaitu Abu Jafar Muhammad Ibnu Musa
Al-Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi Algorism.
Al-Khuwarizmi menulis buku yang berjudul Kitab Al Jabar
Wal-Muqabala yang artinya Buku pemugaran dan pengurangan (The book
of restoration and reduction). Dari judul buku itu kita juga
memperoleh akar kata Aljabar (Algebra). Perubahan kata dari
algorism menjadi algorithm muncul karena kata algorism sering
dikelirukan dengan arithmetic, sehingga akhiran sm berubah menjadi
thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang
biasa, maka lambat laun kata algorithm berangsur-angsur dipakai
sebagai metode perhitungan (komputasi) secara umum, sehingga
kehilangan makna kata aslinya. Dalam bahasa Indonesia, kata
algorithm diserap menjadi algoritma.Definisi AlgoritmaAlgoritma
adalah urutan langkah-langkah logis penyelesaian masalah yang
disusun secara sistematis dan logis. Kata logis merupakan kata
kunci dalam algoritma. Langkah-langkah dalam algoritma harus logis
dan harus dapat ditentukan bernilai salah atau benar. Dalam
beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk
melakukan pekerjaan tertentu. Pertimbangan dalam pemilihan
algoritma adalah, pertama, algoritma haruslah benar. Artinya
algoritma akan memberikan keluaran yang dikehendaki dari sejumlah
masukan yang diberikan. Tidak peduli sebagus apapun algoritma,
kalau memberikan keluaran yang salah, pastilah algoritma tersebut
bukanlah algoritma yang baik.Pertimbangan kedua yang harus
diperhatikan adalah kita harus mengetahui seberapa baik hasil yang
dicapai oleh algoritma tersebut. Hal ini penting terutama pada
algoritma untuk menyelesaikan masalah yang memerlukan aproksimasi
hasil (hasil yang hanya berupa pendekatan). Algoritma yang baik
harus mampu memberikan hasil yang sedekat mungkin dengan nilai yang
sebenarnya.Ketiga adalah efisiensi algoritma. Efisiensi algoritma
dapat ditinjau dari 2 hal yaitu efisiensi waktu dan memori.
Meskipun algoritma memberikan keluaran yang benar (paling
mendekati), tetapi jika kita harus menunggu berjam-jam untuk
mendapatkan keluarannya, algoritma tersebut biasanya tidak akan
dipakai, setiap orang menginginkan keluaran yang cepat. Begitu juga
dengan memori, semakin besar memori yang terpakai maka semakin
buruklah algoritma tersebut. Dalam kenyataannya, setiap orang bisa
membuat algoritma yang berbeda untuk menyelesaikan suatu
permasalahan, walaupun terjadi perbedaan dalam menyusun algoritma,
tentunya kita mengharapkan keluaran yang sama. Jika terjadi
demikian, carilah algoritma yang paling efisien dan cepat.Beda
Algoritma dan ProgramProgram adalah kumpulan pernyataan komputer,
sedangkan metode dan tahapan sistematis dalam program adalah
algoritma. Program ditulis dengan menggunakan bahasa pemrograman.
Jadi bisa disebut bahwa program adalah suatu implementasi dari
bahasa pemrograman. Beberapa pakar memberi formula bahwa :Program =
Algoritma + Bahasa (Struktur Data)Bagaimanapun juga struktur data
dan algoritma berhubungan sangat erat pada sebuah program.
Algoritma yang baik tanpa pemilihan struktur data yang tepat akan
membuat program menjadi kurang baik, demikian juga
sebaliknya.Pembuatan algoritma mempunyai banyak keuntungan di
antaranya :Pembuatan atau penulisan algoritma tidak tergantung pada
bahasa pemrograman manapun, artinya penulisan algoritma independen
dari bahasa pemrograman dan komputer yang melaksanakannya.Notasi
algoritma dapat diterjemahkan ke dalam berbagai bahasa
pemrograman.Apapun bahasa pemrogramannya, output yang akan
dikeluarkan sama karena algoritmanya sama.Beberapa hal yang perlu
diperhatikan dalam membuat algoritma : Teks algoritma berisi
deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut
dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan
dipahami. Tidak ada notasi yang baku dalam penulisan teks algoritma
seperti notasi bahasa pemrograman. Notasi yang digunakan dalam
menulis algoritma disebut notasi algoritmik. Setiap orang dapat
membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini
dikarenakan teks algoritma tidak sama dengan teks program. Namun,
supaya notasi algoritmik mudah ditranslasikan ke dalam notasi
bahasa pemrograman tertentu, maka sebaiknya notasi algoritmik
tersebut berkorespondensi dengan notasi bahasa pemrograman secara
umum. Notasi algoritmik bukan notasi bahasa pemrograman, karena itu
pseudocode dalam notasi algoritmik tidak dapat dijalankan oleh
komputer. Agar dapat dijalankan oleh komputer, pseudocode dalam
notasi algoritmik harus ditranslasikan atau diterjemahkan ke dalam
notasi bahasa pemrograman yang dipilih. Perlu diingat bahwa orang
yang menulis program sangat terikat dalam aturan tata bahasanya dan
spesifikasi mesin yang menjalannya. Algoritma sebenarnya digunakan
untuk membantu kita dalam mengkonversikan suatu permasalahan ke
dalam bahasa pemrograman. Algoritma merupakan hasil pemikiran
konseptual, supaya dapat dilaksanakan oleh komputer, algoritma
harus ditranslasikan ke dalam notasi bahasa pemrograman. Ada
beberapa hal yang harus diperhatikan pada translasi tersebut, yaitu
:a. Pendeklarasian variabelUntuk mengetahui dibutuhkannya
pendeklarasian variabel dalam penggunaan bahasa pemrograman apabila
tidak semua bahasa pemrograman membutuhkannya.b. Pemilihan tipe
dataApabila bahasa pemrograman yang akan digunakan membutuhkan
pendeklarasian variabel maka perlu hal ini dipertimbangkan pada
saat pemilihan tipe data.c. Pemakaian instruksi-instruksiBeberapa
instruksi mempunyai kegunaan yang sama tetapi masing-masing
memiliki kelebihan dan kekurangan yang berbeda.d. Aturan
sintaksisPada saat menuliskan program kita terikat dengan aturan
sintaksis dalam bahasa pemrograman yang akan digunakan.e. Tampilan
hasilPada saat membuat algoritma kita tidak memikirkan tampilan
hasil yang akan disajikan. Hal-hal teknis ini diperhatikan ketika
mengkonversikannya menjadi program.f. Cara pengoperasian compiler
atau interpreter.Bahasa pemrograman yang digunakan termasuk dalam
kelompok compiler atau interpreter.
Algoritma Merupakan Jantung Ilmu InformatikaAlgoritma adalah
jantung ilmu komputer atau informatika. Banyak cabang ilmu komputer
yang mengarah ke dalam terminologi algoritma. Namun, jangan
beranggapan algoritma selalu identik dengan ilmu komputer saja.
Dalam kehidupan sehari-hari pun banyak terdapat proses yang
dinyatakan dalam suatu algoritma. Cara-cara membuat kue atau
masakan yang dinyatakan dalam suatu resep juga dapat disebut
sebagai algoritma. Pada setiap resep selalu ada urutan
langkah-langkah membuat masakan. Bila langkah-langkahnya tidak
logis, tidak dapat dihasilkan masakan yang diinginkan. Ibu-ibu yang
mencoba suatu resep masakan akan membaca satu per satu
langkah-langkah pembuatannya lalu ia mengerjakan proses sesuai yang
ia baca. Secara umum, pihak (benda) yang mengerjakan proses disebut
pemroses (processor). Pemroses tersebut dapat berupa manusia,
komputer, robot atau alat-alat elektronik lainnya. Pemroses
melakukan suatu proses dengan melaksanakan atau mengeksekusi
algoritma yang menjabarkan proses tersebut.Algoritma adalah
deskripsi dari suatu pola tingkah laku yang dinyatakan secara
primitif yaitu aksi-aksi yang didefenisikan sebelumnya dan diberi
nama, dan diasumsikan sebelumnya bahwa aksi-aksi tersebut dapat
kerjakan sehingga dapat menyebabkan kejadian.Melaksanakan algoritma
berarti mengerjakan langkah-langkah di dalam algoritma tersebut.
Pemroses mengerjakan proses sesuai dengan algoritma yang diberikan
kepadanya. Juru masak membuat kue berdasarkan resep yang diberikan
kepadanya, pianis memainkan lagu berdasarkan papan not balok.
Karena itu suatu algoritma harus dinyatakan dalam bentuk yang dapat
dimengerti oleh pemroses. Jadi suatu pemroses harus:Mengerti setiap
langkah dalam algoritma.Mengerjakan operasi yang bersesuaian dengan
langkah tersebut
NOPROSESALGORITMACONTOH LANGKAH DALAM ALGORITMA
1Membuat kueResep kueMasukkan telur kedalam wajan, kocok sampai
mengembang
2Membuat pakaianPola pakaianGunting kain dari pinggir kiri bawah
kea rah kanan sejauh 5 cm
3Merakit mobilPanduan merakitSambungkan komponen A dengan
komponen B
4Kegiatan sehari-hariJadwal harianPukul 06.00 ; mandi pagi,
pukul 07.00: berangkat kuliah
5Mengisi voucer HPPanduan pengisianTekan 888, masukkan nomor
voucer
Mekanisme Pelaksanaan Algoritma oleh PemrosesKomputer hanyalah
salah satu pemroses. Agar dapat dilaksanakan oleh komputer,
algoritma harus ditulis dalam notasi bahasa pemrograman sehingga
dinamakan program. Jadi program adalah perwujudan atau implementasi
teknis algoritma yang ditulis dalam bahasa pemrograman tertentu
sehingga dapat dilaksanakan oleh komputer.Kata algoritma dan
program seringkali dipertukarkan dalam penggunaannya. Misalnya ada
orang yang berkata seperti ini: program pengurutan data menggunakan
algoritma selection sort. Atau pertanyaan seperti ini: bagaimana
algoritma dan program menggambarkan grafik tersebut?. Jika Anda
sudah memahami pengertian algoritma yang sudah disebutkan sebelum
ini, Anda dapat membedakan arti kata algoritma dan program.
Algoritma adalah langkah-langkah penyelesaikan masalah, sedangkan
program adalah realisasi algoritma dalam bahasa pemrograman.
Program ditulis dalam salah satu bahasa pemrograman dan kegiatan
membuat program disebut pemrograman (programming). Orang yang
menulis program disebut pemrogram (programmer). Tiap-tiap langkah
di dalam program disebut pernyataan atau instruksi. Jadi, program
tersusun atas sederetan instruksi. Bila suatu instruksi
dilaksanakan, maka operasi-operasi yang bersesuaian dengan
instruksi tersebut dikerjakan komputer.Secara garis besar komputer
tersusun atas empat komponen utama yaitu, piranti masukan, piranti
keluaran, unit pemroses utama, dan memori. Unit pemroses utama
(Central Processing Unit CPU) adalah otak komputer, yang berfungsi
mengerjakan operasi-operasi dasar seperti operasi perbandingan,
operasi perhitungan, operasi membaca, dan operasi menulis. Memori
adalah komponen yang berfungsi menyimpan atau mengingatingat.Yang
disimpan di dalam memori adalah program (berisi operasi-operasi
yang akan dikerjakan oleh CPU) dan data atau informasi (sesuatu
yang diolah oleh operasi-operasi). Piranti masukan dan keluaran
(I/O devices) adalah alat yang memasukkan data atau program ke
dalam memori, dan alat yang digunakan komputer untuk
mengkomunikasikan hasil-hasil aktivitasnya. Contoh piranti masukan
antara lain, papan kunci (keyboard), pemindai (scanner), dan cakram
(disk). Contoh piranti keluaran adalah, layar peraga (monitor),
pencetak (printer), dan cakram.
PirantiKeluaranUnit pemroses utama(CPU)MemoriPirantiMasukkan
Mekanisme kerja keempat komponen di atas dapat dijelaskan
sebagai berikut. Mula-mula program dimasukkan ke dalam memori
komputer. Ketika program dilaksanakan (execute), setiap instruksi
yang telah tersimpan di dalam memori dikirim ke CPU. CPU
mengerjakan operasioperasi yang bersesuaian dengan instruksi
tersebut. Bila suatu operasi memerlukan data, data dibaca dari
piranti masukan, disimpan di dalam memori lalu dikirim ke CPU untuk
operasi yang memerlukannya tadi. Bila proses menghasilkan keluaran
atau informasi, keluaran disimpan ke dalam memori, lalu memori
menuliskan keluaran tadi ke piranti keluaran (misalnya dengan
menampilkannya di layar monitor).
Belajar Memprogram dan Belajar Bahasa PemrogramanBelajar
memprogram tidak sama dengan belajar bahasa pemrograman. Belajar
memprogram adalah belajar tentang metodologi pemecahan masalah,
kemudian menuangkannya dalam suatu notasi tertentu yang mudah
dibaca dan dipahami. Sedangkan belajar bahasa pemrograman berarti
belajar memakai suatu bahasa aturan-aturan tata bahasanya,
pernyataan-pernyataannya, tata cara pengoperasiancompiler-nya, dan
memanfaatkan pernyataan-pernyataan tersebut untuk membuat program
yang ditulis hanya dalam bahasa itu saja. Sampai saat ini terdapat
puluhan bahasa pemrogram, antara lain bahasa rakitan (assembly),
Fortran, Cobol,Ada, PL/I, Algol, Pascal, C, C++, Basic, Prolog,
LISP, PRG, bahasabahasa simulasiseperti CSMP, Simscript, GPSS,
Dinamo. Berdasarkan terapannya, bahasa pemrograman dapat
digolongkan atas dua kelompok besar : Bahasa pemrograman bertujuan
khusus. Yang termasuk kelompok ini adalahCobol(untuk terapan bisnis
dan administrasi).Fortran(terapan komputasi ilmiah), bahasa rakitan
(terapan pemrograman mesin),Prolog(terapan kecerdasan buatan),
bahasa-bahasa simulasi, dan sebagainya. Bahasa perograman bertujuan
umum, yang dapat digunakan untuk berbagai aplikasi. Yang termasuk
kelompok ini adalah bahasaPascal, BasicdanC. Tentu saja pembagian
ini tidak kaku. Bahasabahasabertujuan khusus tidak berarti tidak
bisa digunakan untuk aplikasi lain.Cobolmisalnya, dapat juga
digunakan untuk terapan ilmiah, hanya saja kemampuannya terbatas.
Yang jelas, bahasabahasa pemrograman yang berbeda dikembangkan
untuk bermacam-macam terapan yang berbeda pula.Berdasarkan pada
apakah notasi bahasa pemrograman lebih dekat ke mesin atau ke
bahasa manusia, maka bahasa pemrograman dikelompokkan atas dua
macam : Bahasa tingkat rendah. Bahasa jenis ini dirancang agar
setiap instruksinya langsung dikerjakan oleh komputer, tanpa harus
melalui penerjemah (translator). Contohnya adalah bahasa mesin. CPU
mengambil instruksi dari memori, langsung mengerti dan langsung
mengerjakan operasinya. Bahasa tingkat rendah bersifat primitif,
sangat sederhana, orientasinya lebih dekat ke mesin, dan sulit
dipahami manusia. Sedangkan bahasa rakitan dimasukkan ke dalam
kelompok ini karena alasan notasi yang dipakai dalam bahasa ini
lebih dekat ke mesin, meskipun untuk melaksanakan instruksinya
masih perlu penerjemahan ke dalam bahasa mesin. Bahasa tingkat
tinggi, yang membuat pemrograman lebih mudah dipahami, lebih
manusiawi, dan berorientasi ke bahasa manusia (bahasa Inggris).
Hanya saja, program dalam bahasa tingkat tinggi tidak dapat
langsung dilaksanakan oleh komputer. Ia perlu diterjemahkan
terlebih dahulu oleh sebuahtranslator bahasa(yang disebut
kompilator ataucompiler)ke dalam bahasa mesin sebelum akhirnya
dieksekusi oleh CPU. Contoh bahasa tingkat tinggi adalahPascal,
PL/I, Ada, Cobol, Basic, Fortran, C, C++,dan sebagainya.Bahasa
pemrograman bisa juga dikelompokkan berdasarkan pada tujuan dan
fungsinya. Di antaranya adalah :
ParadigmaBahasa pemrograman
Logic PROLOGProcedural cPascallFortranbasicImperative
Declarative
Functional LISP, APL,SCHEMEDatabase SQLParallel processing ada,
pascal s, Occam,ClindaObj orientatedAda,
c++,Java,smalltalkeiffel
Menilai Sebuah AlgoritmaKetika manusia berusaha memecahkan
masalah, metode atau teknik yang digunakan untuk memecahkan masalah
itu ada kemungkinan bisa banyak (tidak hanya satu). Dan kita
memilih mana yang terbaik di antara teknikteknik itu. Hal ini sama
juga dengan algoritma, yang memungkinkan suatu permasalahan
dipecahkan dengan metode dan logika yang berlainan. Yang menjadi
pertanyaan adalah bagaimana mengukur mana algoritma yang terbaik?.
Beberapa persyaratan untuk menjadi algoritma yang baik adalah :
Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh
dari proses harus berakurasi tinggi dan benar. Pemrosesan yang
efisien (costrendah). Proses harus diselesaikan secepat mungkin dan
frekuensi kalkulasi yang sependek mungkin. Sifatnya general. Bukan
sesuatu yang hanya untuk menyelesaikan satu kasus saja, tapi juga
untuk kasus lain yang lebih general. Bisa dikembangkan
(expandable). Haruslah sesuatu yang dapat kita kembangkan lebih
jauh berdasarkan perubahanrequirementyang ada. Mudah dimengerti.
Siapapun yang melihat, dia akan bisa memahami algoritma Anda. Susah
dimengertinya suatu program akan membuat susah
di-maintenance(kelola). Portabilitas yang tinggi (portability).
Bisa dengan mudah diimplementasikan di berbagaiplatformkomputer.
Precise(tepat, betul, teliti). Setiap instruksi harus ditulis
dengan seksama dan tidak ada keragu-raguan, dengan demikian setiap
instruksi harus dinyatakan secara eksplisit dan tidak ada bagian
yang dihilangkan karena pemroses dianggap sudah mengerti. Setiap
langkah harus jelas dan pasti.Contoh : Tambahkan 1 atau 2 pada
x.Instruksi di atas terdapat keraguan. Jumlah langkah atau
instruksi berhingga dan tertentu. Artinya, untuk kasus yang sama
banyaknya, langkah harus tetap dan tertentu meskipun datanya
berbeda. Efektif. Tidak boleh ada instruksi yang tidak mungkin
dikerjakan oleh pemroses yang akan menjalankannya.Contoh : Hitung
akar 2 dengan presisi sempurna.Instruksi di atas tidak efektif,
agar efektif instruksi tersebut diubah.Misal : Hitung akar 2 sampai
lima digit di belakang koma. Harusterminate. Jalannya algoritma
harus ada kriteria berhenti. Pertanyaannya adalah apakah bila
jumlah instruksinya berhingga maka pastiterminate? Outputyang
dihasilkan tepat. Jika langkah-langkah algoritmanya logis dan
diikuti dengan seksama maka dihasilkanoutputyang
diinginkan.Sedangkan kriteria Algoritma menurut Donald E. Knuth
adalah :1. Input: algoritma dapat memiliki nol atau lebih inputan
dari luar.2. Output: algoritma harus memiliki minimal satu buah
output keluaran.3. Definiteness(pasti): algoritma memiliki
instruksi-instruksi yang jelas dan tidak ambigu.4. Finiteness(ada
batas): algoritma harus memiliki titik berhenti (stopping role).5.
Effectiveness(tepat dan efisien): algoritma sebisa mungkin harus
dapat dilaksanakan dan efektif. Contoh instruksi yang tidak efektif
adalah: A = A + 0 atau A = A * 1Namun ada beberapa program yang
memang dirancang untuk unterminatable : contoh Sistem Operasi.
Penyajian AlgoritmaPenyajian algoritma secara garis besar bisa
dalam 2 bentuk penyajian yaitu tulisan dan gambar. Algoritma yang
disajikan dengan tulisan yaitu dengan struktur bahasa tertentu
(misalnya bahasa Indonesia atau bahasa Inggris)
danpseudocode.Pseudocodeadalah kode yang mirip dengan kode
pemrograman yang sebenarnya seperti Pascal, atau C, sehingga lebih
tepat digunakan untuk menggambarkan algoritma yang akan
dikomunikasikan kepada pemrogram. Sedangkan algoritma disajikan
dengan gambar, misalnya denganflowchart. Secara
umum,pseudocodemengekspresikan ide-ide secara informal dalam proses
penyusunan algoritma. Salah satu cara untuk menghasilkan kode
pseudo adalah dengan meregangkan aturan-aturan bahasa formal yang
dengannya versi akhir dari algoritma akan diekspresikan. Pendekatan
ini umumnya digunakan ketika bahasa pemrograman yang akan digunakan
telah diketahui sejak awal.Flowchartmerupakan gambar atau bagan
yang memperlihatkan urutan dan hubungan antar proses beserta
pernyataannya. Gambaran ini dinyatakan dengan simbol. Dengan
demikian setiap simbol menggambarkan proses tertentu. Sedangkan
antara proses digambarkan dengan garis penghubung. Dengan
menggunakanflowchartakan memudahkan kita untuk melakukan pengecekan
bagian-bagian yang terlupakan dalam analisis masalah. Disamping
ituflowchartjuga berguna sebagai fasilitas untuk berkomunikasi
antara pemrogram yang bekerja dalam tim suatu proyek.
Ada dua macamflowchartyang menggambarkan proses dengan komputer,
yaitu : Flowchartsistemyaitu bagan dengan simbol-simbol tertentu
yang menggambarkan urutan prosedur dan proses suatufiledalam suatu
media menjadifiledi dalam media lain, dalam suatu sistem pengolahan
data. Beberapa contohFlowchartsistem:
Documentpengurutan offline
Kegiatan manualhardisk Flowchartprogramyaitu bagan dengan
simbol-simbol tertentu yang menggambarkan urutan proses dan
hubungan antar proses secara mendetail di dalam suatu program.
Kaidah-Kaidah Umum PembuatanFlowchartProgramDalam
pembuatanflowchartProgram tidak ada rumus atau patokan yang
bersifat mutlak. Karenaflowchartmerupakan gambaran hasil pemikiran
dalam menganalisis suatu masalah dengan komputer.
Sehinggaflowchartyang dihasilkan dapat bervariasi antara satu
pemrogram dengan yang lainnya. Namun secara garis besar setiap
pengolahan selalu terdiri atas 3 bagian utama, yaitu :1. Input,2.
Proses pengolahan dan3. Output
Untuk pengolahan data dengan komputer, urutan dasar pemecahan
suatu masalah:1. START, berisi pernyataan untuk persiapan peralatan
yang diperlukan sebelum menangani pemecahan persoalan.2. READ,
berisi pernyataan kegiatan untuk membaca data dari suatu
peralataninput.3. PROSES, berisi kegiatan yang berkaitan dengan
pemecahan persoalan sesuai dengan data yang dibaca.4. WRITE, berisi
pernyataan untuk merekam hasil kegiatan ke peralatanoutput.5. END,
mengakhiri kegiatan pengolahan.Walaupun tidak ada kaidah-kaidah
yang baku dalam penyusunanflowchart, namun ada beberapa anjuran :1.
Hindari pengulangan proses yang tidak perlu dan logika yang
berbelit sehingga jalannya proses menjadi singkat.2. Jalannya
proses digambarkan dari atas ke bawah dan diberikan tanda panah
untuk memperjelas.3. Sebuahflowchartdiawali dari satu titik START
dan diakhiri dengan END.Berikut merupakan beberapa contoh
simbolflowchartyang disepakati oleh dunia pemrograman :
Untuk memahami lebih dalam mengenaiflowchartini, akan diambil
sebuah kasus sederhana.Kasus :Buatlah sebuah rancangan program
dengan menggunakanflowchart, mencari luas persegi panjang.Solusi
:Perumusan untuk mencari luas persegi panjang adalah :L=p . ldi
mana,Ladalah Luas persegi panjang,padalah panjang persegi,
danladalah lebar persegi.
Keterangan :1. Simbol pertama menunjukkan dimulainya sebuah
program.2. Simbol kedua menunjukkan bahwa input data dari p dan
l.3. Data dari p dan lakan diproses pada simbol ketiga dengan
menggunakan perumusanL=p. l.4. Simbol keempat menunjukkan
hasiloutputdari proses dari simbol ketiga.5. Simbol kelima atau
terakhir menunjukkan berakhirnya program dengan tandaEnd.9.
Struktur Dasar AlgoritmaAlgoritma berisi langkah-langkah
penyelesaian suatu masalah. Langkah-langkah tersebut dapat berupa
runtunan aksi (sequence), pemilihan aksi (selection), pengulangan
aksi (iteration) atau kombinasi dari ketiganya. Jadi struktur dasar
pembangunan algoritma ada tiga, yaitu:1. Struktur Runtunan2.
Digunakan untuk program yang pernyataannyasequentialatau urutan.3.
Struktur Pemilihan4. Digunakan untuk program yang menggunakan
pemilihan atau penyeleksian kondisi.5. Struktur Perulangan6.
Digunakan untuk program yang pernyataannya akan dieksekusi
berulang-ulang.Dalam Algoritma, tidak dipakai simbol-simbol /
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.DefinisiPseudo-codeKode atau tanda yang
menyerupai (pseudo) atau merupakan penjelasan cara menyelesaikan
suatu masalah. Pseudo-code sering digunakan oleh manusia untuk
menuliskan algoritma.Contoh kasus :mencari bilangan terbesar dari
dua bilangan yang diinputkanSolusi Pseudo-code :1. Masukkan
bilangan pertama2. Masukkan bilangan kedua3. Jika bilangan pertama
> bilangan kedua maka kerjakan langkah 4, jika tidak, kerjakan
langkah 5.4. Tampilkan bilangan pertama5. Tampilkan bilangan
keduaSolusi Algoritma :1. Masukkan bilangan pertama (a)2. Masukkan
bilangan kedua (b)3. if a > b then kerjakan langkah 44. print
a5. print bContoh Lain Algortima dan Pseudo-code :
Tahapan dalam PemrogramanLangkah-langkah yang dilakukan dalam
menyelesaikan masalah dalam pemrograman dengan komputer adalah :
Definisikan Masalah Buat Algoritma dan Struktur Cara Penyelesaian
Menulis Program Mencari Kesalahan Uji dan Verifikasi Program
Dokumentasi Program Pemeliharaan Program
RUNTUNAN DAN PEMILIHAN Algoritma merupakan runtunan (sequence)
satu atau lebih instruksi:1. Tiap instruksi dikerjakan satu per
satu 2. Tiap instruksi dilaksanakan hanya sekali (tidak ada
instruksi diulang)3. Urutan instruksi yang dilaksanakan pemroses
sama dengan urutan aksi sebagaimana yang tertulis di dalam teks
algoritmanya 4. Akhir dari instruksi terakhir merupakan akhir
algoritma Pengaruh runtunan algoritma :Contoh :
PEMILIHAN Di dalam program ada kalanya suatu aksi hanya
dilakukan bila memenuhi persyaratan atau kondisi tertentu. Struktur
If-then dan if-then-else1. Satu kasus
2. Dua kasus
3. Tiga kasus tau lebih
Struktur case
PENGULANGAN
Struktur pengulangan terdiri atas dua bagian:1. Kondisi
pengulangan, yaitu ekspresi booleam yang harus dipenuhi untuk
melaksanakan pengulangan. Kondisi ini ada yang dinyatakan secara
eksplisit oleh pemrogram atau dikelola sendiri oleh komputer
(implisit)2. Badan (body) pengulangan, yaitu satu atau lebih aksi
yang diulang Struktur pengulangan biasanya disertai dengan:1.
Inisiasi, yaitu aksi yang dilakukan sebelum pengulangan dilakukan
pertama kali2. Terminasi, yaitu aksi yang dilakukan setelah
pengulangan selesi dilaksanakan Notasi Struktur Pengulangan
Di dalam algoritma terdapat beberapa macam struktur pengulangan
yang berbeda. Beberapa struktur yang dapat dipakai untuk masalah
yang sama, namun ada notasi pengulangan yang hanya cocok dipakai
untuk masalah tertentu. Dalam materi ini akan dibahas 3 jenis
notasi struktur pengulangan :1. struktur WHILE-DO2. struktur
REPEAT-UNTIL3. Struktur FOR
struktur WHILE-DO struktur REPEAT-UNTILStruktut REPEAT-UNTIL
memeliki makna yang sama dengan WHILE DO dan dalam beberapa masalah
kedua struktur tersebut komplemen satu sama lain. Namun ada
perbedan mendasar diantara keduanya. Pada struktur REPEAT-UNTIL,
aksi atau sekumpulan aksi dilaksanakan minimal satu kali, karena
kondisi pengulangan diperiksa pada akhir pada akhir struktur.
Sedangkan pada struktur WHILE-DO kondisi pengulangan diperiksa pada
awal struktur sehingga kemunkinan pengulangan tidak akan pernah
dilaksanakan bila kondisi pengulangan bernilai false.
Struktur FORStruktur FOR digunakan untuk emnghasilkan
pengulangan sejumlah kali tanpa penggunaan kondisi apapum. Struktur
menyebabkan aksi diulangi sejumlah kali (tertentu)Bentuk umum
struktur FOR ada dua macam : menaik (ascending) atau menurun
(descending)FOR Menaik for peubah nilai_awal to nilai_akhir do aksi
endfor FOR menurun for peubah nilai_akhir downto nilai_awal do aksi
endfor
PROSEDUR DAN FUNGSIPROSEDUR
Seringkali dalam membuat program besar si pemrogram perlu
memecah program menjadi beberapa sub-program yang lebih kecil. Tiap
sub-program kadangkala independen dari program utama sehingga
programnya dapat dirancang tanpa mempertimbangkan konteks tempat ia
digunakan. Modul yang ditulis dapat dipasang ke program lain yang
membutuhkannya. Teknik pemrograman seperti ini dinamakan teknik
pemrograman modular. Beberapa bahasa pemrograman menamakan modul
dengan sebutan rutin (routine), prosedur, atau fungsi. Modularisasi
program memberikan dua keuntungan a) aktivis yang harus dilakukan
lebih dari kali, modularisasi menghindari penulisan teks program
yang sama secara berulang kali. Modul program cukup ditulis sekali
saja, lalu modul tersebut dapat diakses dari bagian lain di
programb) Kemudahan menulis dan menemukan kesalahan (debug)
program. Procedure (prosedur) dan function (fungsi) strukturnya
kedua modul pada hakikatnya sama dengan struktur algoritma biasa,
yaitu ada bagian judul (header) yang berisi nama modul, bagian
DEKLARASI, dan badan (body) program yang berisi instruksi yang akan
dilaksanakan. Pada dasarnya struktur prosedur sama dengan sturuktur
algoritma, yaitu ada judul (header) yang terdiri atas nama
prosedure dan komentar yang menjelaskan spesifikasi prosedur,
bagian deklarasi dan badan prosedure.
Pemanggilan prosedur
Prosedure bukan program yang berdiri sendiri, jadi ia tidak
dapat dieksekusi secara langsung. Ini berarti, instruksi-instruksi
di dalam prosedur baru dapat dilaksanakan hanya bila prosedur tsb
diakses Prosedur diakses dengan cara memanggil namanya dari program
utama atau modul program Ketika Nama_Prosedur dipanggil, kendali
program berpindah secara otomatis ke prosedure tersebut. Instruksi
didalam badan prosedur dilaksanakan. Setelah semua instruksi
selesai, kendali program berpindah secara otomatis ke instruksi
sesudah pemanggilan prosedure. Didalam program pemanggil kita harus
mendeklarasikan prototype prosedur di dalam bagian DEKLARASI.
Prototype prosedur hanya berisi bagian header prosedur. Tujuan
pendeklarasian prototype prosedur adalah supaya program pemanggil
mengenal nama prosedur tsb serta cara mengaksesnya.
Nama global dan nama umum Nama lokal adalah nama-nama (tetapan,
peubah,tipe, dll) yang dideklarasikan di dalam Deklarasi
prosedure-prosedure hanya dikenal di dalam badan prosedure yang
bersangkutan. Nama Global adalah nama-nama yang dideklarasikan di
dalam program utama . Nama-nama global dapat digunakan dibagian
manapun di dalam program, baik di dalam program utama maupun di
dalam prosedure Parameter Kebanyakan program memerlukan informasi
antara prosedur (atau fungsi) dan titik dimana ia dipanggil.
Penggunaan parameter menawarkan mekanisme pertukaran informasi tsb.
Tiap item data transfer antara parameter aktual dan parameter
formal yang bersesuaian. Parameter aktual adalah parameter yang
disertakan pada waktu pemanggilan, sedangkan parameter formal
adalah parameter yang dideklarasikan di dalam bagian header
prosedure itu sendiri.ketika dipanggil, parameter aktual
menggantikan parameter formal.Tiap-tiap parameter aktual
berpasangan dengan parameter formal yang bersesuaian Jenis
parameter formal ada tiga yaitu : 1) parameter masukan (input
parameter), 2) parameter keluaran (output parameter). 3) parameter
masukan/keluaran (input/output parameter) Parameter masukkan
Parameter masukan adalah parameter yang nilainya berlaku sebagai
masukan untuk prosedure. Pada bahasa pemrograman, istilah parameter
masukan ini sering dinamakan parameter nilai (value pameter atau
parameter by value) Nilai parameter aktual diisikan (assign) ke
dalam parameter formal yang bersesuaian .Parameter keluaran
Parameter keluaran adalah parameter yang menampung keluaran yang
dihasilkan oleh presudur Bila prosedur menghasilkan satu atau nilai
yang digunakanoleh program pemanggil, maka nilai keluaran ditampung
di dalam parameter keluaran. Bila prosedur yang mengandung
parameter keluaran dipanggil, nama parameter aktual didalam program
pemanggil mengantikan (subtitute) nama parameter formal yang
bersesuaian di dalam prosedur. Jadi nama parameter aktual akan
digunakan selama pelaksanaan prosedur (ini berlawanan degan
parameter masukan, yang dalam hal ini nilai dari parameter aktual
yang di-assign ke dalam parameter normal). Karena nama parameter
merupakan suatu lokasi di memori, maka bila di dalam prosedur
parameter aktual meskipun prosedur selesai dilaksanakan. Jadi,
setelah pemanggilan, parameter aktual berisi suatu nilai yang
merupakan keluaran dari prosedur tersebut. Parameter keluaran
dideklarasikan di dalam header prosedur, tetapi harus
dideklarasikan dengan kata kunci output. Parameter
masukkan/keluaran Parameter masukan/keluaran adalah parameter yang
berfungsi sebagai masukan sekaligus keluaran bagi prosedur, istilah
parameter keluaran dan parameter masukan/keluaran sering dinamakan
parameter acuan (reference parameter atau parameter by reference)
Seperti halnya pada parameter keluaran, bila prosedur yang
mengandung parameter keluaran dipanggil, nama parameter aktual di
dalam program pemanggil menggantikan (subtitute) nama parameter
formal yang bersesuaian di dalam prosedur. Jadi, nama dan nilai
parameter aktual digunakan diseluruh bagian prosedur. Akibat
penggunaan parameter masukan/keluaran, bila parameter aktual diubah
nilainya di dalam badan prosedur, maka sesudah pemanggilan prosedur
nilai paramter aktual di titik pemanggilan juga berubah. Ini
berbeda dengan parameter masukan, yang dalam hal ini meskipun nilai
parameter aktual di dalam badan prosedur diubah, nilai parameter
aktual didalam badan prosedur diubah, nilai parameter aktual
tersebut tidak berubah di titik pemanggilan. Parameter
masukan/keluaran dideklarasikan di dalam header prosedur,
sebagaimana parameter masukan.Tetapi, parameter keluaran harus
dideklarasikan dengan kata input/ouput. Jenis parameter
masukan/keluaran adalah parameter aktual harus berupa peubah, tidak
boleh berupa tetepan atau ekspresi
FUNGSIFungsi : modul program yang memberikan/mengembalikan
(return) sebuah nilai yang bertipe sederhana (integer,real,booleam,
dan string). Defenisi fungsi didalam program bersesuaian dengan
definisi fungsi di dalam matematika. Contoh 1. f(x) =2 x2 + 5x -82.
H(x,y) = 3x-y+xyKedua contoh di atas f dan H adalah nama fungsi,
sedangkan x dan y adalah parameter fungsi yang bersangkutan. Nilai
yang diberikan oleh fungsi bergantung pada masukan parameter.
Sebagaimana halnya dengan prosedur, fungsi diakses dengan memanggil
namanya. Selain itu, fungsi juga dapat mengandung daftar parameter
formal. Jenis parameter pada fungsi adalah parameter masukan. Jenis
parameter masukan pada fungsi disebabkan oleh kenyataan bahwa
parameter pada fungsi merupakan masukan yang digunakan oleh fungsi
tersebut untuk menghasilkan nilai .
Mendefinisikan fungsi Sebagaimana halnya pada prosedur, struktur
fungsi ada bagian header yang berisi nama fungsi dan spesifikasi
fungsi, bagian DEKLARASI, dan badan fungsi. Notasi algoritmik untuk
mendefenisikan fungsi Sebagaimana halnya pada prosedur, struktur
fungsi ada bagian header yang berisi nama fungsi dan spesifikasi
fungsi, bagian DEKLARASI, dan badan fungsi. Notasi algoritmik untuk
mendefenisikan fungsi Function NAMA_FUNGSI (input daftar parameter
formal) tipe hasil { spesifikasi fungsi, menjelaskan apa yang
dilakukan dan yang dikembalikan fungsi} DEKLARASI { semua nama yang
dipakai didalam algoritma fungsi dideklarasikan di dini. Nama yang
didefinisikan di dalam DEKLARASI lokal hanya di kenal dan di pakai
di dalam fungsi ini saja} DESKRIPSI : {badan fungsi, berisi
instruksi-instruksi untuk mengahsilkan nilai yang yang akan
dikembalikan oleh fungsi } Return hasil { pengembalian nilai yang
dihasilkan fungsi}
Memanggil fungsiFungsi diakses dengan cara memanggil namanya
dari program pemanggil, diikuti dengan daftar parameter aktual
(bila ada). Karena fungsi menghasilkan nilai, maka nilai tersebut
dapat ditampung dalam sebuah peubah yang bertipe sama dengan tipe
fungsi peubah NAMA_FUNGSI(daftar parameter aktual); Function F
(input x: real) real {mengembalikan nilai F(x)=2x2 + 5x-8, x ( R }
DEKLARASI {tidak ada} DESKRIPSI : Return 2*x*x+5*x-8 atau Function
F (input x: real) real {mengembalikan nilai F(x)=2x + 5x-8, x ( R }
DEKLARASI y : real {penampung hasil fungsi F} DESKRIPSI : Y
2*x*x+5*x-8 Return y
LARIK Larik adalah struktur data yang menyimpan sekumpulan
elemen yang bertipe sama, setiap elemen diakses langsung melalui
indeksnya. Indeks larik harus bertipe data yang menyatakan
keterurutan, misalnya integer atau karakter. Larik yang bernama A
dengan delapan buah elemen dapat dibayangkan secara lojik sebagai
sekumpulan kotak yang terurut (vertikal atau horizontal). Tiap
kotak pada larik tersebut diberi indeks integer 1,2,3,8 tiapa
elemen larik ditulis dengan notasi : A[1],A[2],..A[8]. Larik adalah
struktur data yang statik, artinya jumlah elemen larik harus sudah
diketahui sebelum program dieksekusi. Jumlah elemen larik tidak
bisa ditambah, atau dikurangi selama pelaksanaan program.
Mendefinisikan larik dalam bagian DEKLARASI, berarti :
mendefnisikan banyaknya elemen larik dan mendefinisikan tipe elemen
larik.a. Sebagai peubah Misalkan - L adalah nama peubah larik yang
mempunyai 50 buah elemen yang bertipe integer. Indeks larik yang
bertipe integer dan dimulai dari 1- nama_mhs adalah peubah larik
yang mempunyai 10 buah elemen yang bertipe string. Indeks larik
bertipe char dan dimulai dari a- NilUjian adalah peubah larik yang
mempunyai 75 buah elemen yang bertipe real. Indeks larik bertipe
integer dan dimulai dari 0DEKLARASIL : array[ 1..50] of
integernama_mhs : array [a..j] of stringNilUjian : array [ 0..74]
of realb. sebagai tipe baru Misalkan TaBint didefenisikan sebagai
nama sebuah tipe baru untuk larik yang bertipe integer. Banyaknya
elemen larik adalah 100 buah elemen. Sebuah larik integer yang
bernama P dan berukuran 100 elemen dapat didefisikan bertipe TabInt
DEKLARASI type TabInt : array[1..100] of integer P :TabInt c.
Mendefinisikan ukuran maksimum elemen larik sebagai sebuah tetepan
mis. TabInt di definisikan sebagai nama sebuah tipe baru untuk
larik yang bertipe integer. Banyaknya elemen larik maks 100 buah
elemen.
DEKLARASIconst Nmaks = 100type TabInt : array[1..Nmaks] of
integerP : TabInt
Elemen larik tersusun secara beruntun. Karena itu, elemennya
diproses secara beruntun melalui indeks yang terurut, asalkan
indeks tersebut sudah terdefinisi.ALgoritma
SKEMA_UMUM_PEMROSESAN_LARIKDEKLATASIconst Nmaks =100type larik :
array [1..Nmaks] of integerA : larik k : integer {indeks larik
}DESKRIPSI : for k 1 to N do PROSES A[k] endfor PROSES adalah aksi
yang dilakukan terhadap elemen larik. PROSES dapat berupa aksi
pengisian nilai, pembacaan, penulisan atau manipulasi lainnya.
SEARCHING DAN SORTING
SEARCHINGSearching merupakan proses yang fundamental dalam
pemrograman, guna menemukan data (nilai) tertentu di dalam
sekumpulan data yang bertipe sama. Fungsi pencarian itu sendiri
adalah untuk memvalidasi (mencocokkan) data. Metode searching :
Metode searching beruntun Metode pencarian beruntun adalah proses
membandingkan setiap elemen larik satu persatu secara beruntun,
mulai dari elemen pertama, sampai elemen yang dicari ditemukan atau
seluruh elemen sudah diperiksa.Perhatikan larik di bawah ini :
Misalkan nilai yang dicari : x = 57Elemen yang dibandingkan :
23, 45, 23, 57 (ditemukan)Indeks larik yang dikembalikan : IDX =
4Misalkan nilai yang dicari : x = 67Elemen yang dibandingkan : 23,
45, 23, 57, 12 (tidak ditemukan)Indeks larik yang dikembalikan :
IDX = -1
Metode Pencarian Beruntun Pada Larik Terurut Larik yang
elemennya sudah terurut dapat meningkatkan kinerja algoritma
pencarian beruntun. Jika pada larik tidak terurut jumlah
perbandingan elemen larik maksimum n kali, maka pada larik terurut
(dengan asumsi distribusi elemenelemen larik adalah seragam) hanya
dibutuhkan rata-rata n/2 kali perbandingan. Hal ini karena pada
larik yang terurut kita dapat segera menyimpulkan bahwa x tidak
terdapat di dalam larik bila ditemukan, elemen larik yang lebih
besar dari x. Secara singkat, kita akan melakukan proses yang
serupa dengan pencarian berurutan. Kita mulai dengan pembandingan
dengan elemen yang pertama. Jika kita menganggap larik terurut naik
(ascending), maka pencarian akan diteruskan sepanjang data yang
dicari masih lebih kecil dari nilai elemen pada larik. Jika elemen
larik sudah lebih besar, maka pencarian dihentikan karena pasti
data yang dicari tidak akan pernah ditemukan pada larik.
Pencarian Bagidua (Binary Search) Metode pencarian bagidua lebih
efisien dibandingkan metode pencarian beruntun. Metode ini
memerlukan data yang sudah terurut. Dalam proses pencarian
diperlukan dua buah indeks array, yaitu indeks terkecil (indeks
kiri) dan indeks terbesar (indeks kanan).Misalkan indeks kiri
adalah i dan indeks kanan adalah j. Data sudah terurut menurun.
Pada mulanya indek kiri i diinisialisasi dengan 1 dan dan j
diinisialisasi dengan n.
Langkah-langkah dalam metode ini adalah:Langkah 1:Bagi dua
elemen larik pada elemen tengah. Elemen tengah adalah elemen dengan
indeks k = (i + j) div 2Langkah 2:Periksa apakah L[k] = x?Jika L[k]
= x, pencarian selesaiJika L[k] < x, pencarian dilakukan pada
larik bagian kiri, j = k-1Jika L[k] > x, pencarian dilakukan
pada larik bagian kanan, i = k + 1Langkah 3 :Ulangi langkah 1
hingga x ditemukan atau i > j (yaitu ukuran array sudah 0)
SORTINGSorting atau proses sort adalah proses mengurutkan nilai
baik urut menaik (ascending) maupun urut menurun (descending).
Nilai yang diurut dapat bertipe numerik maupun character
(alphanumeric). Data yang akan diurutkan dapat berada dalam memori
(internal sort) atau dapat juga dalam external storage (external
sort). Berikut ini akan diberikan beberapa contoh penerapan
algoritma pengurutan (bubble sort, selection sort dan insertion
sort) dalam bahasa C. Pengurutan internal, yaitu pengurutan
terhadap sekumpulan data yang disimpan di dalam memori utama
komputer. Umumnya struktur internal yang dipakai untuk pengurutan
internal adalah larik, sehingga pengurutan internal disebut juga
pengurutan larik. Pengurutan ekternal, yaitu pengurutan data yang
disimpan di dalam memori sekunder, biasanya data bervolume besar
sehingga tidak mampu dimuat semuanya dalam memori utama komputer,
disebut juga pengurutan arsip (file), karena struktur eksternal
yang dipakai adalah arsip.BUBBLE SORT Algoritma bubble sort,
membandingkan elemen yang sekarang dengan elemen berikutnya. Jika
elemen sekarang > dari elemen berikutnya, maka tukar. Pengecekan
dapat dimulai dari data paling awal atau paling akhir. Dalam contoh
berikut ini, pengecekan dimulai dari data yang paling akhir. Data
paling akhir dibandingkan dengan data didepannya, jika ternyata
lebih kecil maka ditukar. Dan pengecekan yang sama dilakukan
terhadap data yang selanjutnya sampai dengan data yang paling awal.
Proses bubble sort Misal array L memiliki 5 elemen data (N=5). Dari
data awal, bandingkan nilai pada indeks (N-1) dengan nilai pada
indeks (N-2). Jika nilai pada indeks (N-2) > (N-1) maka tukar
tempat. Kemudian pembandingan dilanjutkan untuk nilai pada indeks
(N-2) dengan nilai pada indeks (N-3) jika nilai pada indeks (N-3)
> (N-2) maka tukar tempat. Proses dilanjutkan sampai nilai
terkecil sudah berada pada tempatnya, yaitu pada indeks 0
Dari hasil setelah proses Pass 1 selesai dilakukan, nilai pada
indeks (N-1) dibandingkan dengan nilai pada indeks (N-2), dan
seterusnya proses pembandingan dilakukan sampai nilai terkecil
kedua berada pada tempatnya, yaitu indeks 1.
Dari hasil setelah proses Pass 1 selesai dilakukan, nilai pada
indeks (N-1) dibandingkan dengan nilai pada indeks (N-2), dan
seterusnya proses pembandingan dilakukan sampai nilai terkecil
kedua berada pada tempatnya, yaitu indeks 2. Proses ini terus
dilakukan sampai pass 4, dan data terurut secara ascending. Berikut
ini adalah contoh penerapan algoritma Bubble Sort Ascending dalam
bahasa C. Perhatikan pola perubahan urutan nilai yang terjadi dalam
setiap pass-nya dari output yang dihasilkan.
SELECTION SORTAlgoritma Selection sort memilih elemen
maksimum/minimum array, lalu menempatkan elemen maksimum/minimum
itu pada awal atau akhir array (tergantung pada urutannya
ascending/descending). Terdapat dua pendekatan dalam metode
pengurutan dengan Selection Sort : 1. Algoritma pengurutan maksimum
(maximum selection sort), yaitu memilih elemen maksimum sebagai
basis pengurutan. 2. Algoritma pengurutan minimum (minimum
selection sort), yaitu memilih elemen minimum sebagai basis
pengurutan. Algoritma maksimum selection sort ascending, memilih
elemen dengan nilai terbesar sebagai basis pengurutannya. Proses
program pertama kali dilakukan dengan mencari nilai terbesar (dari
indeks 0..N-1)dalam array, kemudian elemen terbesar tersebut
dipindahkan pada urutan terakhir (indeks terakhir, yaitu N-1) dalam
array. Proses ke-2 dilakukan dengan mencari nilai terbesar dari
indeks 0..N-2, dan elemen terbesar yang ditemukan dipindahkan pada
indeks N-2 dalam array, dan demikian seterusnya sampai seluruh data
selesai dibandingkan dan terurut.
Algoritma Pengurutan Maksimum Langkah 1; Cari elemen maksimum di
dalam L[1..N]Pertukarkan elemen maksimum dengan elemen L[N]Langkah
2 : Cari elemen maksimum di dalam L[1..N-1]Pertukarkan elemen
maskimum dengan L[N-1]Langkah 3: Cari elemen maksimum di dalam
L[1..N-2]Pertukarkan elemen maksimum dengan elemen L[N-2]..Langkah
N-1 : tentukan elemen maksimum di dalam L[1..2]pertukarkan elemen
maksimum dengan elemen L[2]
Algoritma untuk pengurutan menurunProcedure UrutSisip
(input/output L : Larik, input N : integer)DEKLARASI I : Integer
{pencacah pass} J : integer {pencacah untuk penelusuran larik}x :
integer { peubah bantu agar L[K] tidak ditimpah selama pergeseran
}ketemu : boolean {peubah Boolean untuk menyatakan posisi
penyisipan ditemukan}DESKRIPSIFor I to N do xL[I] JI-1Ketemu false
While (J 1) and (not ketemu) do if x > L[J] thenL[J+1] L[J]JJ-1
else ketemu trueendif endwhile L[J+1] xendfor
LIST Konsep logik list dapat dilustrasikan seperti sebuah kereta
api. Kereta api disusun oleh lokomotif sebagai kepala yang
terhubung dengan rangkaian gerbong sebagai badan kereta. Rangakaian
dapat terbentuk karena adanya kait penghubung (connector). Jika
hari libur biasanya penumpan meningkat maka jumlah gerbong dapat
ditambah sesuai keperluan. Jika penumpang sudah normal kembali maka
jumlah gerbong dikembalikan ke jumlah normal dengan memutuskan kait
penghubung gerbong tambahan. Suatu saat lokomotif dapat langsir
tanpa rangkaian gerbong. List digunakan untuk menyimpan sekumpulan
data yang bertipe sama (bilangan, string atau tipe
terstruktur).setiap elemen di dalam senarai mempunyai keterurutan
tertentu (adanya elemen predesesor atau elemen pendahulunya, dan
ada suksesor atau elemen berikutnya) Elemen pada list terurut
secara logik. Untuk mengurut data secara logik pada list digunakan
alamat yang berisi alamat elemen berikutnya dalam urutan sehingga
membentuk suatu rangkaian logik yang menghubungkan elemen list yang
satu dengan elemen senarai yang lainnya. Oleh karena itu list
disebut juga dengan list berkait (linked list atau lingkage list)
Sebuah list mempunyai dua bagian. 1. Bagian pertama adalah kepala
(head). Kepala list terutama digunakan untuk menyimpan alamat
elemen pertama atau elemen terakhir sebuah list.2. Bagian dua
adalah badan list. Badan list berisi kumpunlan elemen list.