HANDOUT ALGORITMA PEMROGRAMAN DAN STRUKTUR DATA 1
PRODI SISTEM INFORMASI UKDW
# ONE
PENGANTAR ALGORITMA PEMROGRAMAN
Definisi Program/Pemrograman
– Adalah kumpulan instruksi-instruksi tersendiri yang biasanya disebut source code yang
dibuat oleh programmer (pembuat program)
Paradigma Pemrograman
1. Pemrograman Prosedural
􀂾 Berdasarkan urutan-urutan, sekuensial
􀂾 Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur
merupakan kumpulan instruksi yang dikerjakan secara berurutan.
􀂾 Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah
diubah.
2. Pemrograman Fungsional
􀂾 Berdasarkan teori fungsi matematika
􀂾 Fungsi merupakan dasar utama program.
3. Pemrograman Terstruktur
􀂾 Secara berurutan dan terstrukrtur.
􀂾 Program dapat dibagai-bagi menjadi prosedur dan fungsi.
􀂾 Contoh: PASCAL dan C
4. Pemrograman Modular
􀂾 Pemrograman ini membentuk banyak modul.
􀂾 Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri
􀂾 Sebuah program dapat merupakan kumpulan modul-modul.
􀂾 Contoh: MODULA-2 atau ADA
5. Pemrograman Berorientasi Obyek
􀂾 Pemrograman berdasarkan prinsip obyek, dimana obyek memiliki
data/variabel/property dan method/event/prosedur yang dapat dimanipulasi
􀂾 Contoh: C++, Object Pascal, dan Java.
6. Pemrograman Berorientasi Fungsi
􀂾 Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung
pada tujuan pembuatan bahasa pemrograman ini.
􀂾 Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.
7. Pemrograman Deklaratif
􀂾 Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada
memecahkan masalah dengan implementasi algoritma.
􀂾 Contoh: PROLOG
Struktur Sistem Komputer
Siklus Hidup Perangkat Lunak (Software)
Dilihat dari Struktur Sistem Komputer dan Siklus diatas, Algoritma Pemrograman dan Struktur
Data menempati posisi dibagian software dan di bagian implementasi karena bagian
implementasi merupakan bagian dimana pemrogram melakukan proses coding (pembuatan
program).
Komputer
Sistem Operasi
Bhs. Pemrograman
Progam Aplikasi
Pemakai
Hardware
Software
Brainware
Requirement Desain Implementasi Testing
Algoritma
Asal kata Algoritma berasal dari nama Abu Ja’far Mohammed Ibn Musa al-Khowarizmi,
ilmuan Persia yang menulis kitab al jabr w’al-muqabala (rules of restoration and reduction)
sekitar tahun 825 M
Definisi Algoritma
– Algoritma adalah urutan langkah logis tertentu untuk memecahkan suatu masalah.
Yang ditekankan adalah urutan langkah logis, yang berarti algoritma harus mengikuti
suatu urutan tertentu, tidak boleh melompat-lompat. (Dari Microsoft Press Computer
and Internet Dictionaary 1997, 1998)
– Alur pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis.
Yang ditekankan pertama adalah alur pikiran, sehingga algoritma seseorang dapat
juga berbeda dari algoritma orang lain. Sedangkan penekanan kedua adalah tertulis,
yang artinya dapat berupa kalimat, gambar, atau tabel tertentu. (Dari Algoritma dan
Struktur Data dengan C, C++, dan Java oleh Moh Sjukani hal 1)
Contoh Algoritma dalam kehidupan nyata:
– Jika seorang ingin memasak atau membuat kue, baik itu melihat resep ataupun tidak
pasti akan melakukan suatu langkah-langkah tertentu sehingga masakannya atau
kuenya jadi.
– Jika seseorang ingin mengirim surat kepada kenalannya di tempat lain, langkah yang
harus dilakukan adalah:
􀂾 Menulis surat
􀂾 Surat dimasukkan ke dalam amplop tertutup
􀂾 Amplop ditempeli perangko secukupnya.
􀂾 Pergi ke Kantor Pos terdekat untuk mengirimkannya.
Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai
masalah pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang
baik maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien.
Pelaksana algoritma adalah Komputer.
Manusia dan komputer berkomunikasi dengan cara: manusia memberikan perintah-perintah
kepada komputer berupa instruksi-instruksi yang disebut program.
Alat yang digunakan untuk membuat program tersebut adalah bahasa pemrograman.
Bahasa pemrograman sangat bermacam-macam: C, C++, Pascal, Java, C#, Basic, Perl,
PHP, ASP, JSP, J#, J++ dan masih banyak bahasa lainnya. Dari berbagai bahasa
pemrograman cara memberikan instruksinya berbeda-beda namun bertujuan menghasilkan
output yang sama.
Kriteria Algoritma Menurut Donald E. Knuth
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 * 1
Namun ada beberapa program yang memang dirancang untuk unterminatable: contoh Sistem
Operasi
Jenis Proses Algoritma
1. Sequence Process: instruksi dikerjakan secara sekuensial, berurutan.
2. Selection Process: instruksi dikerjakan jika memenuhi kriteria tertentu
3. Iteration Process: instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
4. Concurrent Process: beberapa instruksi dikerjakan secara bersama.
Contoh Algoritma
Algoritma menghitung luas persegi panjang:
1. Masukkan panjang (P)
2. Masukkan lebar (L)
3. L ← P * L
4. Tulis L
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.
Definisi Pseudo-code
Kode atau tanda yang menyerupai (pseudo) atau merupakan pejelasan cara menyelesaikan
suatu masalah. Pseudo-code sering digunakan oleh manusia untuk menuliskan algoritma.
Problem: mencari bilangan terbesar dari dua bilangan yang diinputkan
Contoh Pseudo-code:
1. Masukkan bilangan pertama
2. Masukkan bilangan kedua
3. Jika bilangan pertama > bilangan kedua maka kerjakan langkah 4, jika tidak, kerjakan
langkah 5.
4. Tampilkan bilangan pertama
5. Tampilkan bilangan kedua
Contoh Algoritma
1. Masukkan bilangan pertama (a)
2. Masukkan bilangan kedua (b)
3. if a > b then kerjakan langkah 4
4. print a
5. print b
Contoh Lain Algortima dan Pseudo-code:
Pseudo-code Algoritma
Nilai A ditambah dengan 5 A ← A + 5
Cetak nilai A bila lebih besar dari 10 IF A > 10 THEN PRINT A
Dari dua bilangan A dan B, cari
bilangan yang terbesar
IF A > B THEN PRINT A ELSE PRINT
B
Langkah-langkah dalam pemrograman komputer
1. Mendefinisikan masalah
Ini merupakan langkah pertama yang sering dilupakan orang. Menurut hukum Murphy
(oleh Henry Ledgard):
“Semakin cepat menulis program, akan semakin lama kita dapat menyelesaikannya”.
Hal tersebut berlaku untuk permasalahan yang kompleks. Tentukan masalahnya, apa
saja yang harus dipecahkan dengan menggunakan komputer, dan apa inputan serta
outputnya.
2. Menemukan solusi
Setelah masalah didefinisikan, maka langkah berikutnya adalah menentukan solusi.
Jika masalah terlalu kompleks, maka ada baiknya masalah tersebut dipecah menjadi
modul-modul kecil agar lebih mudah diselesaikan.
Contohnya masalah invers matriks, maka kita dapat membagi menjadi beberapa
modul:
􀂾 meminta masukkan berupa matriks bujur sangkar
􀂾 mencari invers matriks
􀂾 menampilkan hasil kepada pengguna
Dengan penggunaan modul tersebut program utama akan menjadi lebih singkat dan
mudah dilihat.
3. Memilih algoritma
Pilihlah algoritma yang benar-benar sesuai dan efisien untuk permasalahan tersebut
4. Menulis program
Pilihlah bahasa yang mudah dipelajari, mudah digunakan, dan lebih baik lagi jika
sudah dikuasai, memiliki tingkat kompatibilitas tinggi dengan perangkat keras dan
platform lainnya.
5. Menguji program
Setelah program jadi, silahkan uji program tersebut dengan segala macam
kemungkinan yang ada, termasuk error-handlingnya sehingga program tersebut akan
benar-benar handal dan layak digunakan.
6. Menulis dokumentasi
Menulis dokumentasi sangat penting agar pada suatu saat jika kita akan melakukan
perubahan atau membaca source code yang sudah kita tulis dapat kita ingat-ingat lagi
dan kita akan mudah membacanya. Caranya adalah dengan menuliskan komentarkomentar
kecil tentang apa maksud kode tersebut, untuk apa, variabel apa saja yang
digunakan, untuk apa, dan parameter-parameter yang ada pada suatu prosedur dan
fungsi.
7. Merawat program
Program yang sudah jadi perlu dirawat untuk mencegah munculnya bug yang
sebelumnya tidak terdeteksi. Atau mungkin juga pengguna membutuhkan fasilitas
baru yang dulu tidak ada.
SOAL ALGORITMA
1. Buatlah algoritma untuk menghitung konversi suhu.dari Celcius menjadi Reamur dan
Farenheit.
Input: suhu dalam Celcius
Proses: R = 4/5 * C dan F = 9/5 * C + 32
Output: suhu dalam Reamur dan Farenheit
2. Buatlah algoritma untuk mencari sisi miring dari suatu segitiga siku-siku, jika diketahui
panjang sisi yang membentuk sudut siku-siku.
Input: a dan b, yaitu panjang sisi pembentuk sudut siku-siku
Proses: c = a2 + b2
Ouput: sisi miring (c)
3. Buatlah algoritma untuk menentukan suatu bilangan genap atau ganjil
Input: suatu bilangan
Ouput: genap / ganjil
4. Buatlah algoritma untuk menentukan suatu bilangan adalah bilangan prima atau
bukan.
5. Buatlah algoritma untuk untuk menghitung akar-akar persamaan kuadrat dengan
rumus D = B2 – 4 * A * C
Jika D 0 maka ada dua akar X1 = −B + D/ 2 * A dan X 2 = −B − D/ 2 * A
NEXT
Generasi Bahasa Pemrograman, Proses Kompilasi, FlowChart, mengenal C++ dan C#

Tambah komentar Februari 17, 2010 nyohongo

Tutorial Turbo Pascal 7.0
Terdiri dari Sembilan Modul, lengkap dengan contoh dan latihan.
Referented
– Sumber : indoprog : Indonesia Programmer.
http://www.freewebs.com/salim_web
Selamat Belajar.
Semoga Bermanfaat, Terimaksih.
Tutorial ini bersifat Gratis, tidak boleh dikomersialkan.
1
Modul 1
Apa itu Turbo Pascal ?
Pascal merupakan suatu bahasa komputer tingkat tinggi yang dibuat sekitar tahun
1970 oleh Niklaus Wirth dan digunakan untuk pendidikan komputer. Nama Pascal
diambil dari seorang ahli matematika yang bernama Blaise Pascal yang menemukan
mesin hitung pertama. Bahasa Pascal dirancang untuk menyelesaikan masalah dari
berbagai kalangan pemakai, mulai dari para mahasiswa, pendidik, dan ilmuwan.
Salah satu kompiler pascal yang terkenal dan tercepat adalah Turbo PASCAL yang
dibuat oleh perusahaan Borland (http://www.borland.com ).
Adakah versi Turbo Pascal untuk pemrograman Visual ?
Pada trend pemrograman Visual, perusahaan Borland mengeluarkan Borland Delphi
yang menggunakan dasar dialek Pascal pada lingkungan pemrograman Visual.
Apa artinya Pascal adalah bahasa pemrogram terstruktur ? Pascal
adalah suatu bahasa pemrograman terstruktur. Hal tersebut berarti semua
program yang anda buat harus terstruktur dan teratur, dalam hal ini ada pemakaian
goto dan jump.
Bagaimana Struktur program pascal yang paling sederhana ?
Struktur program pascal yang paling sederhana adalah :
uses …;
var …;
begin
…. {Your program is here}
end.
Dapatkah anda memberi contoh sebuah program pascal yang
sederhana ?
uses crt;
begin
Clrscr;
Writeln(‘Saya sedang belajar Pascal !’);
Writeln(‘Di PentaCOM’);
end.
2
Bagaimana Struktur program pascal yang kompleks ?
Adapun struktur dasar suatu program pascal adalah sebagai berikut :
program … ; { Program heading }
uses … ; { Uses clause }
label … ; { Labels }
const … ; { Constants }
type … ; { Types }
var … ; { Variables }
procedure … ; { Procedures }
function … ; { Functions }
begin
statement; { Statements }

end.
Program heading
Judul program dalam Turbo Pascal bersifat optional dan tidak ada pengaruhnya dalam
program. Jika ditulis akan memberikan nama program dan suatu daftar parameter
optional dimana program itu berkomunikasi. Daftar itu terdiri dari sederetan
indentifier yang diakhiri dengan tanda kurung dan dipisahkan dengan tanda koma.
Contoh :
Program Perhitungan(Input,Output);
Uses Clause
Bagian uses clause digunakan untuk menentukan library yang dibutuhkan saat proses
program. LIBRARY merupakan file penyimpan subroutine yang secara berulang
digunakan saat proses program. Library ini diistilahkan sebagai unit dalam Turbo
PASCAL yang terdiri dari SYSTEM, OVERLAY, GRAPH, DOS, CRT yang ditempatkan
dalam file TURBO.TPL.
Contoh :
Uses Crt; (*menggunakan Unit Crt *)
Perhatian :
Unit system merupakan unit yang secara otomatis akan disertakan dalam setiap
program, unit inilah mengatur semua perintah dasar input dan output pada Pascal .
Sedangkan unit-unit lain hanya akan disertakan bila kita pilih pada bagian uses.
Declaration
Bagian ini meliputi deklarasi untuk label, const, type, var, procedure dan function.
3
Syarat terpenting dalam pembentukan suatu program adalah, bahwa setiap variabel,
type non-standard, label, procedure non-standard, serta function non-standard yang
dipakai didalamnya harus nyatakan (deklarasi) terlebih dahulu pada bagian deklarasi.
Setiap deklarasi tersebut harus bersifat unik (tidak boleh serupa satu sama yang lain).
Penulisan nama dalam deklarasi tersebut harus memenuhi syarat-syarat sebagai
berikut :
– panjang nama maximum 63 character, diawali dengan alphabet
– tidak ada special character kecuali tanda garis bawah (“_”)
– tidak boleh serupa dengan reserved word (kata tercadang)
– tidak boleh serupa dengan indentifier lainnya.
Variabel Declaration
Setiap variabel yang digunakan dalam program harus didefinisikan terlebih dahulu
sebelum digunakan. Cara penulisan ini adalah :
Var
<nama var> : <type variable>;
Statement
Bagian ini merupakan inti dari program. Seluruh perintah dan urutannya serta proses
Input/Output dalam program perlu disusun secara teratur oleh penyusun program.
Segala yang ada pada bagian uses maupun deklarasi merupakan pendukung terhadap
isi program.
Bagaimana membuat keterangan ?
Untuk membuat program anda menjadi mudah dibaca dan dimengerti, maka perlu
diberi keterangan yang akan diabaikan oleh kompiler. Untuk membuat keterangan
gunakan tanda kurawal { ini adalah keterangan }, atau (* ini adalah keterangan *).
Type data apa saja yang disediakan Turbo Pascal ?
Adapun type variable yang disediakan pada TURBO PASCAL :
1.Ordinal types
Type data yang mempunyai urutan pasti, dan masih terbagi menjadi
– Integer
Type variable yang beguna untuk pengolahan data yang bulat, type ini masih terbagi
atas berberapa menurut jangkauan data dan ukurannya :
Type Jangkuan Ukuran
Shortint -128..127 8 bit
Integer -32768..32767 16 bit
4
Longint -2147483648..2147483647 32 bit
Byte 0..255 8 bit
Word 0..65535 16 bit
– Char
Type variabel yang berguna untuk pengolahan character ASCII, type character ini
penulisannya ditandai dengan dua buah petik tunggal seperti : ‘A’, ‘3’,’*’,#7 untuk
menyatakan ‘ harus ditulis ””
– Boolean
Type varibale yang berguna untuk pengolahan hal yang hanya mempunyai dua
ketentuan yaitu benar(TRUE) dan salah(FALSE) saja.
2.Real types
Type variable yang beguna untuk pengolahan data yang tidak bulat, untuk type real
ini juga terbagi atas beberapa :
Type Jangkauan Ketelitian Ukuran
Real 2.9e-39..1.7e38 11-12 digit 6 bit
Single 1.5e-45..3.4e38 ³ 7-8 7-8 digit 4 bit
Double 5.0e-324..1.7e308 15-16 digit 8 bit
Extended 3.4e-4932..1.1e4932 19-20 digit 10 bit
Comp -9.2e18..9.2e18 19-20 digit 8 bit
Untuk pengolahan type variabel diatas di sediakan berbagai jenis operator antara lain
:
Operator Integer Type Real Type
+ Penjumlahan Penjumlahan
– Pengurangan Pengurangan
* Perkalian Perkalian
/ Pembagian Pembagian
DIV Hasil bagi
MOD Sisa Bagi
Operator Integer Type Boolean Type
NOT Bitwise Negation Logical Negation
AND Bitwise AND Logical AND
OR Bitwise inclusive OR Logical inclusive OR
XOR Bitwise exclusive OR Logical exclusive OR
SHL Bitwise shift-left
SHR Bitwise shift-right
Operator relasi yang mengembalikan hasil Boolean
Operator Fungsi
:= Menyatakan nilai
= Sama dengan
<> Tidak sama dengan
< Lebih kecil
> Lebih besar
<= Lebih kecil atau sama dengan
>= Lebih besar atau sama dengan
5
Bagaimana menampilkan tulisan ke layar ?
Pascal menyediakan perintah Write dan Writeln yang dapat anda gunakan untuk
menampilkan tulisan ke layar.
Dapatkah anda memberi contoh program yang menggunakan
variabel ?
{Deklarasi variabel}
var
UmurKu : Byte;
Keterangan : String;
(*Program anda*)
begin
UmurKu:=19;
Keterangan:=’Hi, saya sedang belajar Pascal di PentaCOM';
Writeln(‘Saya berumur ‘,UmurKu,’ tahun’);
Writeln(Keterangan);
end.
Bagaimana kalau saya ingin membaca masukan dari pemakai ?
Perintah Readln dapat digunakan untuk membaca masukan dari pemakai dan
menyimpannya ke suatu variabel.
var
UmurKu : Byte;
Keterangan : String;
begin
Write(‘Berapa umur anda ? ‘); Readln(UmurKu);
Write(‘Komentar anda: ‘); Readln(Keterangan);
Writeln;
Writeln(‘Saya berumur ‘,UmurKu,’ tahun’);
Writeln(Keterangan);
end.
Bagaimana membatasi pencetakan tempat desimal untuk data
Real type ?
Untuk menentukan jumlah tempat sebelum desimal dan sesudah desimal anda dapat
menggunakan :x:y setelah variabel yang akan dibatasi pencetakan nilainya, dimana x
adalah jumlah tempat sebelum desimal dan y adalah jumlah tempat setelah desimal.
Silahkan coba koding berikut :
var
Pi : Real;
Begin
Pi := 22/7;
Writeln(‘Bilangan Pi adalah ‘, Pi);
Writeln(‘Bilangan Pi adalah ‘, Pi:2:3);
end.
6
Modul 2
Unit apa yang perlu saya cantumkan pada bagian uses, kalau saya ingin melakukan
pengaturan layar ?
Turbo Pascal menyediakan suatu unit CRT, yang berisi perintah-perintah pengaturan
layar seperti membersihkan layar, mengatur warna tulisan, warna background,
memindahkan posisi cursor, mode layar, dan membuat window
Ok, saya sudah tahu perintah Clrscr, apa perintah untuk mengatur warna tulisan ?
Pada prinsipnya ada dua cara untuk mengatur warna tulisan yang dicetak dengan
perintah Write dan Writeln, yang pertama adalah perintah :
TextColor(nomor warna);
Dan yang kedua adalah variabel internal dari unit CRT:
Textattr := nomor warna;
Hallo, anda belum memberitahukan kepada saya nomor warna yang dapat saya
gunakan !
Baiklah, berikut ini adalah nomor warna yang mewakili masing-masing warna: 0
(black), 1 (blue), 2 (green), 3 (cyan), 4 (red), 5 (magenta), 6 (brown), 7 (lightgray), 8
(darkgray), (9) lightblue, 10 (lightgreen), 11 (lightcyan), 12 (lightred), 13
(lightmagenta), 14 (yellow), 15 (White).
Saya pernah melihat tulisan warna berkedip-kedip, dapatkah hal tersebut
dilakukan ?
Anda dapat saja melakukan hal tersebut dengan menambahkan angka 128 pada nomor
warna yang anda inginkan, misalnya :
TextColor(4 + 128);
Writeln(‘Merah dan berkedip-kedip’);
Atau :
TextColor(Red + Blink);
Writeln(‘Merah dan berkedip-kedip’);
Pada prinsipnya anda dapat menggunakan konstanta dari masing-masing nomor warna
seperti black, blue, green, dll, untuk menggantikan pemakaian nomor.
Ok, saya sudah mengerti, bagaimana pula dengan warna latar belakang ?
Pengaturan warna latarbelakang dapat menggunakan perintah :
7
TextBackground(nomor warna);
Dalam hal ini nomor warna yang berlaku hanya 0 s/d 7.
Tadi anda ada menyinggung tentang memindahkan posisi cursor, apa gunanya dan
apa perintahnya ?
Pada lingkungan dos, posisi tulisan dilayar dicetak berdasarkan posisi cursor yang
sedang aktif, misalnya sekarang posisi cursor berada di kolom 10, baris 5, maka
perintah :
Writeln(‘Sedang belajar Pascal di PentaCOM’);
Akan menampilkan tulisan tersebut mulai kolom 10 di baris 5.
Jadi misalnya anda ingin mencetak tulisan tersebut pada kolom 20, baris 13, maka
anda harus memindahkan cusor keposisi kolom 20, baris 13, diikuti dengan perintah
pencetakan tulisan tersebut, contoh :
GotoXY(20,13);
Writeln(‘Tulisan ini dicetak mulai kolom 20, di baris 13);
Bisakah saya mendapatkan nilai posisi cursor yang sedang aktif ?
Bisa, anda bisa menggunakan variabel internal unit CRT, yaitu WhereX, dan WhereY.
GotoXY(5,5);
Write(‘Turbo’);
GotoXY(WhereX+10,3);
Write(‘Pascal’);
Ngomong-ngomong, berapa sih jumlah kolom dan baris pada layar normal ?
Normalnya 80 kolom, 25 baris.
Saya pernah melihat tulisan layar komputer di bandara Polonia yang lebih besar
dari tulisan normal, bagaimana hal tersebut dapat dilakukan ?
Oh, ya. Hal tersebut dapat dilakukan dengan mengatur Mode layar dengan perintah :
TextMode(CO40);
Dan
TextMode(CO80);
Untuk menormalkannya.
Contoh :
Uses CRT;
begin
TextMode(CO40);
Writeln(‘A Real BIG Characters on screen !’);
8
Readln;
TextMode(CO80);
Writeln(‘Back to normal’);
Readln;
end.
He-he-he, saya sudah mengerti trik yang mereka gunakan.
Tunggu dulu, ada satu hal lagi yang belum diberitahu, yaitu membatasi dari
pencetakan dilayar berdasarkan koordinat kiri atas dan koordinat kanan bawah
dengan perintah :
Window(x1, y1, x2, y2);
Dimana x1, y1 adalah koordinat kiri atas dan x2, y2 adalah koordinat kanan bawah.
Contoh :
uses Crt;
begin
ClrScr;
WriteLn(‘Creating a window from 30,10 to 50,20′);
Window(30,10,50,20);
WriteLn(‘We are now writing in this small window we just created, we’+
‘can”t get outside it when writing long lines like this one’);
Write(‘Press any key to clear the window’);
ReadKey;
ClrScr;
Write(‘The window is cleared, press any key to restore to fullscreen’);
ReadKey;
{Full Screen is 80×25}
Window(1,1,80,25);
Clrscr;
Writeln(‘Back in Full Screen’);
end.
Ok, apakah anda sudah selesai ?
Belum, sebenarnya masih banyak perintah yang terdapat pada unit CRT, seperti :
Sound(frekuensi);
Delay(milidetik);
NoSound;
Apa pula fungsinya itu ?
Fungsi perintah Sound untuk membunyikan speaker komputer dengan frekuensi
tertentu.
Contoh :
Sound(500);
Tolong, bunyinya tidak berhenti, walaupun programnya sudah selesai !
He-he-he, anda tidak menggunakan perintah NoSound untuk menghentikan efek dari
perintah Sound.
Contoh :
Sound(500);
9
NoSound; Kok sekarang speaker komputer tidak berbunyi sama
sekali ? Oh, ya, saya lupa menyisipkan delay diantara Sound dan
NoSound. Contoh :
Sound(500);
Delay(1000);
NoSound;
Sebagai programer pemula pascal, saya sering mendapatkan peringatan compiler
akan kesalahan Type Mismatch, dapatkah anda menjelaskan hal tersebut ?
Ok, masalah ini sering saya dengar dari orang yang baru belajar pascal. Memang
pascal adalah bahasa yang sangat ketat dalam variabel dan type data. Berikut ini saya
akan menerangkan konvensi perhitungan dan type data yang dihasilkan :
Konvensi Penjumlah (+), Pengurangan (-), dan Perkalian (*) :
integer dengan integer = integer
integer dengan real = real
real dengan real = real
Konvensi Pembagian (/) :
Selalu menghasilkan real.
Pembagian bulat dengan Div :
Menghasilkan Integer.
Latihan di Lab :
(*Hangman.pas*)
uses crt;
const
havetry=10;
s: array[0..18] of string=
(‘hello’, ‘mouse’, ‘hacher’, ‘programmer’, ‘killer’, ‘teacher’, ‘splotchier’,
‘butcher’, ‘computer’, ‘pascal’, ‘house’, ‘poor’, ‘children’, ‘museum’,
‘security’, ‘spillway’, ‘stupidity’, ‘corrigenda’, ‘freebooter’);
var ch: char;
gue,b,nowwrd,trynow: byte;
s1,wrs,alr: string;
r: boolean;
win: integer;
begin
win:=0;
clrscr;
Writeln(‘A.Larkin Hangman ESC for exit’);
writeln;
10
randomize;
repeat
writeln;
nowwrd:=random(18);
s1:=s[nowwrd];
gue:=0;
wrs:=”;
alr:=”;
trynow:=havetry;
for b:=1 to length(s[nowwrd]) do write(‘_’);
repeat
gotoxy(20,wherey);
write(‘You have ‘,trynow,’ tries ‘);
ch:=readkey;
r:=false;
if ch<>#0 then
repeat
b:=pos(ch,s1);
if (b<>0) and (s1[b]<>#0) then
begin
gotoxy(b,wherey);
write(s1[b]);
alr:=alr+ch;
s1[b]:=#0;
gue:=gue+1;
gotoxy(40,wherey);
write(‘ ‘);
r:=true;
end else
if (pos(ch,alr)<>0) and (r=false) then
begin
gotoxy(40,wherey);
write(‘Already tried!’);
end else
if (b=0) and (r=false) then
begin
trynow:=trynow-1;
alr:=alr+ch;
wrs:=wrs+ch;
gotoxy(57,wherey);
write(‘Wrong: ‘,wrs);
gotoxy(40,wherey);
write(‘ ‘);
end;
until (b=0) or (trynow=0);
until (ch=#27) or (gue=length(s1)) or (trynow=0);
if (trynow=0) then
begin
win:=win-1;
delline;
gotoxy(1,wherey);
write(s[nowwrd]);
gotoxy(20,wherey);
write(‘You lost! Your scores is ‘,win);
end else
if (gue=length(s1)) then
begin
win:=win+1;
delline;
gotoxy(1,wherey);
11
write(s[nowwrd]);
gotoxy(20,wherey);
write(‘You win! Your scores is ‘,win);
end;
until ch=#27;
end.
Daftar Frekuensi
Nada Frekuensi
C 262
D 294
E 330
F 350
G 392
A 440
B 494
Modul 3
Setelah mencoba program Hangman, sesuatu pertanyaan yang timbul adalah
mengapa komputer dapat mengetahui huruf yang kita masukan ada dalam tulisan
atau tidak ?
Ok, hal tersebut dapat terjadi karena adanya keputusan yang terprogram, artinya
komputer dapat mengambil keputusan untuk berdasarkan aliran logika yang telah
ditentukan sebelumnya yang dikenal sebagai algoritma.
Bagaimana penulisan perintah pengambilan keputusan pada Pascal ?
Salah satu perintah struktur pengambilan keputusan adalah :
If condition Then statement;
Dimana condition adalah sesuatu yang bernilai True atau False, dan statement adalah
perintah yang akan dijalankan.
Dapatkah anda memberikan sebuah contoh pemakaian perintah If ?
Baiklah, misalnya kita akan membuat program menentukan pembayaran berdasarkan
berdasarkan jumlah belanja, jika diatas 100000 (seratus ribu) mendapatkan potongan
3%, maka programnya adalah sebagai berikut :
Uses Crt;
Var
Belanja : Real;
Begin
Clrscr;
Write(􀂵Jumlah belanja ? 􀂵); Readln(Belanja);
12
If Belanja > 100000 Then Belanja := Belanja * 0.97;
Writeln(􀂵Jumlah yang harus anda bayar 􀂵,Belanja:10:2);
Readln;
End.
Ok, saya mengerti bahwa pada prinsipnya Statement setelah Then akan dijalankan
kalau condition setelah If menghasilkan nilai True. Bagaimana kalau condition True
Statement1 dijalankan, dan sebaliknya Statement2 dijalankan ?
Untuk keputusan seperti ini, pascal menyediakan struktur pengambilan keputusan
berikut:
If condition Then Statement1 Else Statement2;
Atau lebih baik ditulis sebagai
If conditon Then
Statement1
Else
Statement2;
Langsung saya buatkan contoh :
Uses Crt;
Var
Bilangan : Integer;
Begin
Clrscr;
Write(􀂵Masukan Bilangan ? 􀂵); Readln(Bilangan);
If (Bilangan Mod 2) = 0 Then
Writeln 􀀋􀂵Genap􀂶)
Else
Writeln 􀀋􀂵Ganjil􀂶);
Readln;
End.
He-he-he, bagaimana kalau keputusannya lebih dari 2, misalnya 4 Statement yang
harus dijalankan berdasarkan masing-masing condition ?
Oh, hal itu bisa dilakukan dengan merangkai beberapa struktur If, misalnya :
If condition1 Then
Statement1
Else
If condition2 Then
Statement2
Else
If condition3 Then
Statement3
Else
Statement4;
13
Jadi pada prinsipnya adalah terdiri dari tiga struktur If.
Misalnya kita akan membuat nilai huruf dari angka dengan kriteria 80 keatas
mendapat A, 70 s/d 79 mendapat B, 60 s/d 69 mendapat C, 50 s/d 59 mendapat D,
dan dibawah 49 mendapat E, maka dapat ditulis menjadi :
if mark>=80 then
grade:=’A’
else { 79 or below goes here }
if mark>=70 then
grade:=’B’
else { 69 or below goes here }
if mark>=60 then
grade:=’C’
else { 59 or below goes here }
if mark>=50 then
grade:=’D’
else { 49 or below goes here }
grade:=’E';
Wah panjang banget, adakah cara lain untuk melakukan hal tersebut ?
Selain struktur kendali If, pascal juga menyediakan suatu struktur Case, yang akan
menjalankan statement berdasarkan range tertentu, adapun syntaxnya adalah sebagai
berikut :
Case variabel Of
Range1 : Statement1;
Range2 : Statement2;
Range3 : Statement3;
􀂫
Else StatementN;
End;
Saya akan menggulangi contoh diatas dengan struktur Case :
Case mark of
80..100: grade:=’A';
70..79 : grade:=’B';
60..69 : grade:=’C';
50..59 : grade:=’D';
Else grade:=’E';
End;
Lebih sederhana bukan.
Opss, hampir lupa, bagaimana kalau statement yang harus dijalankan pada masingmasing
condition lebih dari 1 ?
Ya, benar, sering kita perlu menjalankan beberapa Statement pada masing-masing
condition, untuk keperluan tersebut kita dapat memblok perintah-perintah tersebut
dengan Begin … End;
Contoh :
14
If Belanja > 100000 Then
Begin
Belanja := Belanja * 0.97;
Writeln 􀀋􀂵Anda berhak mendapat potongan 3%􀂶);
End;
Pertanyaan yang terakhir, bagaimana penulisan condition yang terdiri dari
beberapa logika ?
Pertanyaan yang tepat sekali, untuk condition yang terdiri dari beberapa logika dapat
anda gabungkan dengan operasi AND, OR. Misalnya kita akan mencari tahun kabisat.
In the Gregorian calendar, which is the calendar used by most modern countries, the
following rules decides which years are leap years:
1. Every year divisible by 4 is a leap year.
2. But every year divisible by 100 is NOT a leap year
3. Unless the the year is also divisible by 400, then it is still a leap year.
Maka penulisan programnya menjadi :
If ((tahun Mod 4) = 0) And Not (tahun Mod 100 = 0)) Or (tahun Mod 400) = 0 Then
Writeln 􀀋􀂵Tahun Kabisat 􀀄􀂶)
Else
Writeln 􀀋􀂵Bukan Tahun Kabisat 􀀄􀂶);
Latihan 3
1. What does Pascal provide in order to perform conditional branching ?
2. Explain briefly each syntax !
3. How could we do nested branching ? Is it legal ?
4. Tell us how to trap arrow keys !
5. How could we trap function keys (F1 through F10) ? How is it similar to trapping
arrow keys?
6. Determine the output if i=5 and j=3 for the following excerpt :
if i<4 then writeln(‘Need more experience …’)
else
begin
writeln(‘Yes, you have it !’);
if j<=3 then writeln(‘But, I would prefer better ones.’)
else writeln(‘Superb !’);
writeln(‘Congratulations !’);
end;
15
writeln(‘Thank you for using this program !’);
7. Make a program to ask ages. Classify the ages into these categories :
* age < 2 ==> “You are a baby !”
* 2 to age < 12 ==> “You are a kid !”
* 12 to age < 18 ==> “You are a teenager !”
* 18 to age < 24 ==> “You are a young adult !”
* 24 to age < 40 ==> “You are an adult !”
* 40 to age < 55 ==> “You are middle aged !”
* 55 to age < 65 ==> (Give comments yourself)
* age to 65 ==> (Give comments yourself)
Silahkan mencoba :
Readkey is a function, returning a char value. OK, let’s see how it works !
program test_readkey;
uses crt;
var
c : char;
begin
c:=readkey;
case c of
#8 : writeln(‘You presses backspace’);
#9 : writeln(‘You presses tab’);
#13: writeln(‘You presses enter’);
#27: writeln(‘You presses escape’);
#32: writeln(‘You presses space’);
else writeln(‘You presses other key’);
end;
end.
Let us detect the arrow keys. Arrow keys, just like function keys, are extended. It
means it generates a special codes. Now, here is the code to trap them :
program trap_arrow;
uses crt;
var
c : char;
begin
c:=readkey;
if c=#0 then { If extended codes, }
begin
c:=readkey; { read the code once more }
case c of
#72: writeln(‘Up arrow’);
#75: writeln(‘Left arrow’);
#77: writeln(‘Right arrow’);
#80: writeln(‘Down arrow’);
end;
end;
end.
16
Modul 4
Hallo, ketemu lagi, pada pertemuan ini kita akan membahas tentang Looping.
Apa itu Looping
Secara sederhana looping diartikan sebagai proses berulang terhadap statement
maupun serangkaian statement lebih dari satu kali.
Aduh, kurang jelas, dapatkah anda memberikan contoh pemakaian looping dari
program yang pernah kita buat sebelumnya ?
He-he-he, mungkin anda sudah lupa dengan program Hangman yang pernah kita buat
pada pertemuan kedua, disana komputer secara berulang menanyakan huruf tebakan
kita sebanyak 10 kali kesempatan, dalam hal ini kita telah menggunakan looping.
Ok, sekarang saya sudah punya gambaran. Apakah hal tersebut tidak dapat
dilakukan tanpa looping ?
Tentu saja bisa, tetapi akibatnya program kita menjadi panjang dan tidak efisien,
coba bayangkan misalnya anda ingin mencetak tulisan PentaCOM sebanyak 10 baris di
layar, bisa saja anda menggunakan perintah Writeln(‘PentaCOM’); sebanyak 10 kali.
Bukankah lebih baik kita memerintahkan komputer untuk secara berulang
menjalankan perintah Writeln(‘PentaCOM’); sebanyak 10 kali.
Benar juga ya, tetapi bagaimana struktur perintah perulangan
pada pascal ?
Salah satu struktur perintah perulangan pada pascal adalah yang menggunakan
counter.
For variabel := nilai awal To nilai akhir Do Statement;
Atau
For variabel := nilai awal DownTo nilai akhir Do Statement;
Dimana variabel harus ordinal type
Contoh :
Var I : Integer;
Begin
For I := 1 To 10 Do Writeln(‘PentaCOM’);
End.
Tapi tadi saya lihat yang satu pakai To dan yang satu lagi pakai DownTo, apa sih
bedanya ?
Kita menggunakan To kalau nilai awal < nilai akhir, dan sebaliknya pakai DownTo
17
Contoh :
Var I : Integer;
Begin
For I := 10 DownTo 1 Do Writeln(‘PentaCOM’);
End.
Apa maksudnya variabel counter harus ordinal type ?
Maksudnya variabel counter harus berupa salah satu type seperti Byte, Shortint,
Integer, Longint, Char, Boolean.
Misalnya Ch adalah Char, maka dapat dilakukan
For Ch := ‘a’ to ‘z’ Do Write(Ch,’ ‘);
Dan bahkan misalnya Bo adalah boolean, dapat juga
For Bo :=false to true do writeln(Bo);
Adakah struktur perulangan lainnya pada bahasa pascal ?
Ya, ada lagi, yaitu yang melakukan perulangan yang menggunakan condition.
While condition Do Statement;
Contoh :
I := 1;
While I <= 10 Do
Begin
Writeln(‘PentaCOM’);
I := I + 1;
End;
Apakah maksudnya I := I + 1; saya belum pernah melihat persamaan seperti ini
secara matematika !
Ya, memang hal ini tidak mungkin ada secara matematika, tetapi pada dunia
pemrograman artinya menaikan nilai variabel I sebesar 1. Supaya tidak
membingungkan pascal menyediakan suatu function Inc(variabel); sebagai penganti I:= I
+ 1;
Ok, sekarang saya sudah jelas dengan struktur looping pada bahasa pascal.
Tunggu dulu, masih ada satu struktur perulangan dengan condition, yaitu :
Repeat
Statement;
􀂫
Until condition;
Contoh :
18
I := 1;
Repeat
Writeln(‘PentaCOM’);
Inc(I);
Until I <= 10;
Kalau begitu ya sama saja dengan yang While, bukankah
begitu ?
Tentu saja ada perbedaannya, coba perhatikan contoh berikut
I := 11;
While I <= 10 Do
Begin
Writeln(‘PentaCOM’);
Inc(I);
End;
Dan
I := 11;
Repeat
Writeln(‘PentaCOM’);
Inc(I);
Until I <= 10;
Pada contoh 1, tidak akan mencetak apa-apa, sedangkan pada contoh 2 akan
mencetak tulisan PentaCOM minimal 1 kali.
Pada prinsipnya struktur While melakukan pemeriksaan awal, dan struktur Repeat
melakukan pemeriksaan di akhir.
Bagaimana kalau kita ingin keluar dari pertengahan looping walaupun conditionnya
masih terpenuhi ?
Mudah saja, gunakan perintah Break, dan anda juga dapat menggunakan perintah
Continue untuk kembali ke While ataupun Repeat.
Contoh :
I := 1;
While I <= 10 Do
Begin
Writeln(‘PentaCOM’);
I := I + 1;
Break;
End;
Akan mencetak PentaCOM sekali saja, karena begitu ketemu perintah Break, maka
proses keluar dari looping. Bagaimana dengan yang berikut ini :
I := 1;
While I <= 10 Do
Begin
19
Writeln(‘PentaCOM’);
I := I + 1;
Continue;
End;
Pelajaran tambahan :
Random dan randomize
Kedua berfungsi menghasilkan bilangan random, bilangan random sering digunakan
untuk mensimulasikan dunia nyata yang penuh dengan ketidakpastian. Kita tidak akan
mendiskusikan hal ini, tetapi pemakaian kedua perintah tersebut.
Randomize digunakan untuk menginisialisasi suatu bibit random secara acak yang
cukup dipanggil sekali saja.
Random digunakan untuk mendapatkan bilangan random(bilangan), yang akan
menghasilkan bilangan 0 s/d bilangan-1. Misalnya num:=random(50); berarti variabel
num mungkin berisi salah satu bilangan 0 s/d 49.
Cobalah contoh berikut :
var
i : byte;
begin
randomize;
for i:=1 to 10 do
write(random(30),’ ‘);
end.
Coba hilangkan “randomize”, dan jalankan beberapa kali, bagaimana dengan bilangan
yang dihasilkan apakah sama pada setiap percobaan ?
Jadi, selalu gunakan “randomize” untuk menjamin kerandoman bilangan yang
dihasilkan pada setiap run.
Latihan IV
1. Explain the characteristics of all three loop syntaxes in Pascal !
2. Explain the differences between them !
3. Suppose the output is :
123456
20
Write an excerpt using all three syntaxes !
4. Explain how to nest one syntax to another !
Latihan di laboratorium
1. Input : 5 2. Input : 5
Output : 1 2 3 4 5 4 3 2 1 Output : 1 2 3 4 5
Input : 1 1 2 3 4 5
Output : 1 1 2 3 4 5
1 2 3 4 5
3. Input : 5 1 2 3 4 5
Output : 1 2 3 4 5 4. Input : 5
2 3 4 5 1 Output : 1
3 4 5 1 2 1 2
4 5 1 2 3 1 2 3
5 1 2 3 4 1 2 3 4
1 2 3 4 5
5. Input : 5 6. Input : 5
Output : 1 Output : 1 1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5
7. Input : 5 8. Input : 5
Output : 1 Output : 1 1 1 1 1
1 2 1 1 2 2 2 1
1 2 3 2 1 1 2 3 2 1
1 2 3 4 3 2 1 1 2 2 2 1
1 2 3 4 5 4 3 2 1 1 1 1 1 1
1 2 3 4 4 4 4 4 3 2 1
1 2 3 3 3 3 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
9. Make fibonacci series. If input is n, write all the series up to n numbers :
Input : 10
Output : 1 1 2 3 5 8 13 21 34 55
The first and the second numbers of fibonacci series are 1. The third is
the sum of the first and the second. The fourth is the sum of the second
and the third. The fifth is the sum of the third and the fourth, so on.
10. Make a factor tree.
Input : 100 Input : 1001
Output : 100 Output : 1001
/ \ /\
2 50 7 143
/\ /\
2 25 11 13
/\ Input : 5
5 5 Output : 5 is a prime !
Tugas Rumah :
21
Create a game just like a space invader (you’ve got to know that), but in normal text
mode (80×25). Use colors as pretty as possible. Normally space invader have a matrix
of enemies, but I make allowances to you. You just make only one enemy. If the
enemy is destroyed, it just reappears at a different place and the player gains a
point. Each players have 3 ships to play. If all ships are used up (shot down) you
show “Game Over” message and ask if the player want to play again. Each enemy
ship scores 10. Player got an extra ship when reaches 500 and its multipliers (1000,
1500, 2000,…). Players can only have one shot. Before the fire is out, players can
not trigger another shot. The same rule applies for the enemy. Player could only
move his/her ship horizontally (left or right), not vertically or diagonally. The enemy
may come closer to the ship after it reaches the edge (of left or right). I mean that
the enemy ship go left or right, after it touches the edge, it advances a bit — just like
a normal space invader game. Make it as fancy as possible.
Modul 5
Hallo, ketemu lagi, adakah pertanyaan sejauh ini ?
Ya, setelah saya pelajari program Hangman, terutama pada bagian var dimana saya
temui deklarasi variabel dengan awalan Array of, apa sih Array itu ?
Baiklah, array adalah variabel yang dapat menampung sejumlah data yang ditandai
dengan suatu index pada masing-masing elemennya.
Contoh :
Var
Nilai : Array [1..10] of Integer;
Dalam hal ini variabel Nilai adalah suatu array yang memiliki 10 element, yaitu
Nilai[1], Nilai[2], Nilai[3], …, Nilai[10]. Pada masing-masing elemennya dapat
menampung satu nilai Integer.
Contoh :
Nilai[1] := 60;
Nilai[2] := 75;
􀂫
Nilai[10] := 90;
Writeln(Nilai[1]);
Writeln(Nilai[2]);
􀂫
Writeln(Nilai[10]);
Kalau begitu kita juga dapat melakukan hal yang sama dengan memesan 10
variabel, misalnya Nilai1, Nilai2, Nilai3, dst, dapatkah kira-kira anda memberikan
contoh keunggulan dari pemakaian Array ?
22
Ya, memang hal tersebut dapat dilakukan, tetapi sesuatu yang perlu kita perhatikan
adalah kemudahan pengolahan data Variabel tersebut, misalnya kita akan
menjumlahkan total nilai dari variabel tersebut tanpa array maka dapat ditulis :
Total := Nilai1+Nilai2+Nilai3+Nilai4+Nilai5+Nilai6+Nilai7+Nilai8+Nilai9+Nilai10;
Dan kalau pakai array :
Total := 0;
For I:= 1 To 10 Do Total := Total + Nilai[I];
Dan bagaimana kalau ada elemennya ada 100. Bisa anda bayangkan.
Adakah bentuk array yang lain, selain yang anda sebutkan ?
Ada, array yang telah kita sebutkan tersebut adalah array 1 dimensi, kita dapat juga
membuat multi dimensi sesuai dengan kebutuhan, contoh :
Var
Matrix : Array [1..3,1..3] Of Integer;
Adalah contoh array 2 dimensi, yang terdiri dari elemen Matrix[1,1], Matrix [1,2],
Matrix[1,3], Matrix[2,1], Matrix[2,2], Matrix[2,3], Matrix[3,1], Matrix[3,2], dan
Matrix[3,3].
Jadi jumlah elemennya adalah 3 x 3 = 9 elemen.
Dapatkah kita buat 3 Dimensi, 4 Dimensi, dst ?
Oh, bisa, hal ini tergantung bagaimana kita mendeklarasikan variabel array tersebut.
Adakah hal-hal yang khusus dalam mendeklarasikan array pada Pascal ?
Ada, anda bisa mendeklarasikan array seperti :
x : Array[3..10] of Integer; {elemennya x[3], x[4], x[5], 􀂫, x[10]}
idx : Array['A'..'Z'] of Integer;
a : Array['a'..'z'] of Byte;
n : Array[byte] of Integer; { The same as array[0..255] of integer; }
Saya bingung dengan yang Array ['A'..'Z'] of Integer, bagaimana kira-kira cara
pemakaiannya ?
Cara pemakaiannya seperti array bisanya, Cuma indexnya ditulis sebgai character,
contoh:
Idx['A'] = 100;
Dan kalau pakai looping :
For c:=’A’ to ‘Z’ do
idx[c]:= 0;
23
Latihan V
1. What is an array ?
2. What is it for ?
3. How is the declaration ?
4. Explain how to use it !
5. How can we declare two or more dimension in array and explain the usage.
6. Suppose we have n : array[char] of byte; Is it valid ? Explain.
Latihan di Laboratorium
1. Make a Pascal triangle, example :
Input : 7
Output : 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
2. Suppose you have an array 100 elements of random numbers. Find its maximum
and minimum value of the elements.
3. Make matrix operations : addition, subtraction, multiplication and division.
You may limit the maximum dimension of the matrix.
Latihan di rumah :
Make a jackpot game. It has 4 digits. Each digits is represented by numbers. The
players has $500 at start and must place their bet of $20 every game. Winning points :
If any two numbers are the same : bet returned plus 10% bonus
If any three are the same : bet returned plus 25% bonus
If all four numbers are the same : bet returned doubled
If all four are in sequence e.g. 1 2 3 4 or 5 4 3 2 : bet returned plus 50% bonus
If all four are even or all odd e.g. 1 7 5 3 or 2 6 4 8 : bet returned plus 5% bonus
If all four are prime numbers : bet returned plus 10% bonus
If two numbers are the same and the other two are the same too :
bet returned plus 75% bonus
24
If none of above : bet lost.
Remember, in one digit, possible primes are : 2, 3, 5, and 7 only.
Example : Bonus :
1 1 2 2 75%
1 2 2 1 75%
2 1 2 1 75%
2 1 2 2 25%
9 5 3 7 5%
7 2 3 5 10%
4 3 2 1 50%
1 8 3 2 lost
Space invader revisited.
Last time you made space invader. Now you make a full version of Space Invader
with matrices of enemies. You may extend it with bonus stages or UFO. All rules
remain the same.
Modul 6
Pada contoh maupun tugas modul-modul sebelumnya kita telah banyak
menggunakan string, apakah sebenarnya string pada Pascal ?
Sebenarnya string adalah suatu array dari char, maksudnya anda dapat mengambil
masing-masing character dari suatu string dengan memperlakukannya sebagai elemen
dari array.
Contoh :
Var
Nama : String;
Begin
Nama := ‘PentaCOM';
Writeln(Nama[1]);
Writeln(Nama[8]);
Nama[6] := ‘K';
Writeln(Nama);
End.
Maka Nama[1] adalah huruf ‘P’, dan Nama[8] adalah huruf ‘M’.
Sedangkan Nama[6] := ‘K'; akan menyebabkan string nama berubah menjadi
‘PentaKOM’.
Oh, begitu saja, jadi kita sudah selesai hari ini ?
Tunggu dulu, sebenarnya kalau kita dapat juga mendeklarasikan string dengan :
Var
Nama : String;
Alamat : String[40];
25
Dalam hal ini variabel Nama dapat menampung maksimal 255 character, sedangkan
untuk variabel Alamat dapat menampung maksimal 40 character.
Jadi kita dapat mendeklarasikan variabel string dengan panjang tertentu, berapa
panjang maksimal yang diperbolehkan ?
Sebenarnya kalau kita tidak menentukan panjang string ketika deklarasi, maka
otomatis pascal menyediakan 255 character untuk string kita, dalam hal ini
merupakan panjang maksimal yang diperbolehkan untuk suatu type data string.
Bolehkan kita memesan variabel array string ?
Boleh, anda dapat melakukannya.
Contoh :
NamaSiwa : Array[1..10] Of String[30];
Pada program Hangman, saya melihat adanya pemakaian fungsi Length, Pos, apa
fungsinya, dan adakah yang lain ?
Ya, itu adalah fungsi bantu yang disediakan oleh Pascal untuk melakukan pengolahan
data string,
Adapun fungsi bantu untuk string adalah sebagai berikut :
Length, mendapatkan panjang string
Syntax : length(s)
Contoh : : n:=length(s);
Misalnya s:=’Apa kabar ?'; n akan berisi 11.
Copy, mendapatkan bagian dari suatu string.
Syntax : copy(s,from,howmuch)
Contoh : : st:=copy(s,5,5);
Menggambil 5 character mulai posisi ke 5
Misalnya s:=’Apa kabar ?'; st akan berisi ‘kabar’.
Pos, mengambil posisi substring dari suatu string.
Syntax : Pos(substr,s)
Contoh : : n:=pos(‘kabar’,’Apa kabar ?’); { n:=5; }
Jika substring tidak ditemukan, maka akan mengembalikan 0.
Val, mengkonversi string menjadi numerik.
Syntax : val(strvar,numvar,errorcode)
26
strvar adalah suatu variabel string yang akan di konversi
numvar adalah variabel integer atau real
errorcode adalah variabel integer yang akan berisi nilai kesalahan, jika berisi 0
sukses.
Contoh : :
Var
s : string;
e : integer;
r : real;
Begin
Write(‘Enter a number : ‘); readln(s);
val(s,r,e);
if e<>0 then
writeln(‘Error at position : ‘,e);
else
writeln(‘That was : ‘,r:4:3);
end.
Str, mengkonversi numerik menjadi string.
Syntax : (numvar,strvar)
Contoh : :
var
s : string;
i : integer;
begin
write(‘Input an integer : ‘); readln(i);
str(i,s);
writeln(‘That was : ‘,s);
end.
Jika anda bekerja dengan type real, anda perlu melakukan pemformatan sebelum
konversi ke string.
Contoh : :
var
s : string;
r : real;
begin
write(‘Input a real : ‘); readln(r);
str(r:4:3,s);
writeln(‘That was : ‘,s);
end.
Concat, mengabung dua string atau lebih
Syntax : concat(s1,s2,…,sn)
Contoh : st:=concat(s1,s2);
27
Jika s1 adalah ‘Penta’, dan s2 adalah ‘COM’, maka st menjadi ‘PentaCOM’
Sebenarnya kita juga dapat menggunakan operator + untuk mengabung string.
Contoh : st:=s1 + s2; {adalah sama dengan st:=concat(s1,s2);}
Insert, menyisip suatu string kedalam string lain dari posisi tertentu
Syntax : insert(source,target,index)
Contoh : :
var
s1, s2 : string;
begin
s1:=’not ‘;
s2:=’I do love you';
insert(s1,s2,6);
writeln(s2); { I do not love you }
end.
Delete, menghapus sejumlah character dari string mulai posisi ke i
Syntax : delete(s,i,n);
var
s : string;
begin
s:=’I am not responsible for that !';
delete(s,6,3);
writeln(s); { I am responsible for that }
end.
Latihan 6
1. What is a string ?
2. Explain what the relationsip between string and character in pascal
!
3. What is the maximum length of a string ?
4. How is the declaration ?
5. Explain how to merge two string, using function and operator !
6. Explain how to convert string to value and vice versa !
7. Explain how to know the length of a string !
28
Latihan di laboratorium
8. Make programs for serveral task like this:
a. Make all letters in a string upcase.
b. Eliminate trailing spaces.
c. Eliminate leading spaces.
d. Change leading spaces with leading zeroes.
e. Count the number of word in a sentence
9. Make a text animation. Display a sentence in the center of the screen. And scroll it
Left To Right !
10. Make a text animation. Display a sentence in the center of the screen. And scroll
it Right To Left !
11. Make a text animation. Display a sentence in the center of the screen. Let all
characters fall one by one. Skip the spaces !
Latihan di rumah
Make a simple calculator that can perform addition, substraction User input the
equation then press enter. You should give the answer. Example :
Input : 5+10
Output : 15
Modul 7
Hallo, masihkah anda ingat bahwa pascal adalah bahasa pemrograman yang
terstruktur, yang artinya program yang kita buat harus terstruktur dan teratur. Salah
satu usaha untuk usaha kearah sana adalah memecah program kita menjadi sub-sub
program dengan menggunakan procedure dan function.
Apa itu procedure dan function ?
Procedure dan function merupakan sub-program yang memiliki bagian deklarasi dan
begin-end; tersendiri layaknya suatu program pascal. Tujuan pemakaian procedure
maupun function adalah untuk memecah program kita menjadi kesatuan logika yang
lebih kecil (sub-sub program) untuk menghindari perulangan pengetikan dan
memudahkan pembacaan.
Contoh pemakaian procedure :
uses crt;
begin
clrscr;
writeln(‘ABC’);
writeln(‘Press any key when ready …’);
29
readkey;
writeln(‘Hey, let”s pause !’);
writeln(‘Press any key when ready …’);
readkey;
writeln(‘Pause again !’);
writeln(‘Press any key when ready …’);
readkey;
end.
Dengan memecah program kita menjadi kesatuan yang lebih kecil :
uses crt;
procedure pause;
begin
writeln(‘Press any key when ready …’);
readkey;
end;
begin
clrscr;
writeln(‘ABC’);
pause;
writeln(‘Hey, let”s pause !’);
pause;
writeln(‘Pause again !’);
pause;
end.
Contoh pemakaian function :
Var
I : Byte;
Akar,Bagi : Word;
Begin
Writeln(Upper(‘Bilangan Prima dari 1 s/d 100′);
Writeln(Replicate(‘-‘,30);
For I := 1 To 100 do
If (Bil > 1 And Bil < 4) Then
Write(I : 4)
Else
Begin
Akar := Round(Sqrt(Bil));
Bagi := 3;
While (Bagi <= Akar) And (Bil Mod Bagi <> 0) Do
Bagi := Bagi + 1;
If Bagi > Akar Then
Write(I : 4);
End;
End.
Dan contoh berikut yang menggunakan function :
Function IsPrime (Num : Longint) : Boolean;
Var
Sq ,Dv : Word; (*local variable )
Begin
If Num < 2 Then
IsPrime := False
30
Else
If Num < 4 Then
IsPrime := Bil > 1
Else
Begin
Sq := Round(Sqrt(Num));
Dv := 3;
While (Dv <= Sq) And (Num Mod Dv <> 0) Do
Dv := Dv + 1;
IsPrime := Dv > Sq;
End;
End;
(* Main program*)
Var
I : Byte; (*local variable*)
Begin
Writeln(Upper(‘Prime number from 1 to 100′);
Writeln(Replicate(‘-‘,30);
For I := 1 To 100 do
If IsPrima(I) Then
Write(I : 4);
End.
Tadi saya melihat ada keterangan variabel local, apa maksudnya ?
Pada program utama, procedure maupun function dapat memiliki variabel masingmasing,
dimana ruang lingkup pemakaiannya hanya berlaku pada program utama,
procedure maupun function dimana variabel tersebut dideklarasi.
Contoh :
procedure foo;
var a : byte;
begin
a:=10;
writeln(a);
end;
begin { main begin…end block }
foo;
a:=15; { This will be an error, since a is only known inside foo }
end.
Kalau begitu berarti ada variabel global dong ?
Ya, benar, global variabel adalah variabel yang ruang lingkup pemakaiannya meliputi
seluruh program, baik program utama, procedure maupun function.
Contoh:
var
b : byte; { global variabel }
procedure foo;
var a : byte;
begin
a:=10;
b:=15; { This is legal }
31
end;
begin { main begin…end block }
foo;
a:=15; { This is illegal }
b:=5; { This is perfectly legal }
end.
Jadi variabel global harus dideklarasi diatas semua procedure maupun function.
Bagaimana kalau ada variabel local dan variabel global yang sama namanya ?
Global variabel tersebut akan di override. Pada suatu program yang terstruktur
dengan baik, usahakan untuk menggunakan variabel Global seminimal mungkin.
Contoh :
uses crt;
var
a : byte; { This is the global variable }
procedure foo;
var
a : byte; { This is local variable }
begin
a:=15;
writeln(‘foo is ‘,a); { Will print 15}
end;
begin
a:=10;
writeln(a); { Will print 10}
foo;
writeln(a); { Still print 10}
end. Dari tadi anda menyebutkan procedure dan function, apa sih
bedanya ? Pada prinsipnya function mengembalikan nilai.
Syntax untuk procedure :
Procedure namaprocedure (deklarasi parameter);
Deklarasi variabel local
begin
:{
commands }
::
end;
Syntax untuk function :
function namafunction (deklarasi parameter) : returntype;
Deklarasi variabel local
begin
:
{ commands }
32
:
namafunction := return value;
end;
Coba perhatikan kembali contoh Isprima untuk lebih jelas. Sebenarnya apa fungsi
deklarasi parameter pada procedure maupun function ? Pada deklarasi bagian
deklarasi parameter kita menentukan parameter dan type data dari masingmasing
parameter yang akan dikirim kedalam procedure maupun
function.
procedure makewin(x1,y1,x2,y2 : byte);
var
i,j : byte;
begin
gotoxy(x1,y1); write(#201); {top}
for i:=x1+1 to x2-1 do write(#205);
write(#187);
for i:=y1+1 to y2-1 do {middle}
begin
gotoxy(x1,i); write(#186);
for j:=x1+1 to x2-1 do write(‘ ‘);
write(#186);
end;
gotoxy(x1,y2); write(#200); {bottom}
for i:=x1+1 to x2-1 do write(#205);
write(#188);
end;
begin
makewin(1,1,30,8);
makewin(10,10,60,18);
end.
Dan contoh untuk function :
function factorial(n : byte):longint;
var
i : byte;
result : longint;
begin
result:=1;
for i:=1 to n do
result:=result*i;
factorial:=result
;
end;
var
x : byte;
begin
writeln(‘Enter a value : ‘); readln(x);
writeln(x,’! is ‘,factorial(x));
end.
Kalau kita bisa mengirim nilai kedalam procedure maupun function, apakah bisa
juga sebaliknya ?
33
Pada contoh diatas nilai parameter di kirim secara PASS BY VALUE. Kita dapat juga
mengirim parameter secara PASS BY REFERENCE dengan menambah Var pada saat
deklarasi masing-masing parameter, dalam hal ini yang dikirim kedalam procedure
maupun function adalah alamat dari variabel tersebut.
Contoh :
(*Pass by value*)
procedure foo(a : byte);
begin
writeln(a); {15}
a:=10;
writeln(a); {10}
end;
var
x : byte;
begin
x:=15;
writeln(x); {15}
foo(x);
writeln(x); {15}
end.
(*Pass by reference*)
procedure foo(var a : byte);
begin
writeln(a); {15}
a:=10;
writeln(a); {10}
end;
var
x : byte;
begin
x:=15;
writeln(x); {15}
foo(x);
writeln(x); {10}
end.
Bolehkan suatu function memanggil dirinya sendiri ?
Boleh, dan hal tersebut banyak ditemukan pada persamaan matematika, misalnya
dalam menghitung faktorial.
5! = 4! * 5
4! = 3! * 4
2! = 1! * 2
1! = 1
Jadi kita secara programming dapat dilakukan dengan :
function factorial (n:byte):factorial;
begin
if n<2 then { This is the terminating condition }
factorial:=1;
else
factorial:=n*factorial(n-1); { This is the recursive part }
end;
var
“ x : byte;
begin
writeln(‘Enter a value : ‘); readln(x);
writeln(x,’! is ‘,factorial(x));
end.
Sesuatu hal yang perlu diperhatikan dalam pembuatan fungsi rekursif adalah harus
adanya suatu titik akhir, sehingga rekursif dapat selesai.
34
Latihan 7
1. Explain the syntax of procedures and functions.
2. Explain the differences between them.
3. Explain the differences between pass by value and pass by reference. Give an
example.
4. Can procedures nest each other ? Explain and give example !
5. Explain the differences between global variable and local variable.
6. Explain the rule of calling procedures / functions.
7. Explain how recursive.
Latihan di laboratorium
8. Make a recursive algorithm of fibonacci series !
9. Make a guessing number game using functions and procedures. You hold a random
number between 1 to 100, and user have to guess. If the guess is smaller than it
suppose to be, you should say “lower”. If the guess is higher, say “higher”. If it is the
same, then userwins. User has 8 chances to guess. If chances are used up, game
over. Score is number of chances left times 10. If user wins, get another number
and go on. Don’t forget to restore the chances back to
8. If game over,ask him/her to play again.
Here are some hint :
function compare(number, guess : byte):shortint;
function advice(comparison : shortint):string;
function asknumber: byte;
function yesno : boolean;
function score(guessleft : byte):longint;
procedure writeat(x,y : byte; sentence:string);
procedure setupscreen;
Latihan di rumah
Make a program to translate a number into word using function.
Input : 1537000
Output : Satu juta lima ratus ribu tiga puluh tujuh ribu rupiah.
35
Modul 8
Hallo, ketemu lagi, apakah anda telah siap ? Ok saya rasa siap, pada hari ini kita akan
membahas beberapa fasilitas yang tersedia pada pascal dan akan membantu membuat
program anda menjadi lebih terstruktur dan mudah di maintenance.
Kalau begitu artinya, walaupun tidak mengunakan fasilitas kita tetap dapat membuat
program ?
Benar, tetapi sebagai programmer yang baik, tentu saja anda harus mampu
menghasilkan program yang terstruktur dan mudah dimaintenance.
Apa saja fasilitas yang anda maksud tersebut ?
Pertama kita akan membahas tentang Constants, Set, dan Type.
Oh, konstanta, di sekolah kami ada belajar PI = 3.1415926513… , e =
2.7182818284529…, apakah maksud anda seperti itu ?
Ya, benar, pengertian konstanta di pascal hampir sama dengan konstanta di dunia
matematikamaupun fisika, yaitu besaran-besaran yang memiliki ketetapanketetapan
tertentu. Tetapi pemakaian konstanta di pascal programmer bebas
membuat konstanta sesuai dengan kebutuhan programnya.
Dapatkah anda memberi sebuah contoh program yang menggunakan konstanta ?
Contoh :
Uses crt;
Const {deklarasi konstanta}
PPN = 0.1; {PPN 10%}
Var
Begin
End.
Penjualan, SetelahPPN : Real;
Write(‘Nilai penjualan :’) Readln(Penjualan);
SetelahPPN = NilaiPenjualan * (1+PPN);
Writeln(‘Nilai penjualan setelah PPN adalah ‘, SetelahPPN:10:2);
Kalau begitu bukankan sama saja dengan menulis langsung SetelahPPN =
NilaiPenjualan * (1+0.1); dan apa hubungannya dengan membuat program kita
lebih mudah di maintenance ?
Pada prinsipnya sama, tetapi coba anda bayangkan, misalnya terjadi perubahan nilai
PPN menjadi 12.5%, berdasarkan contoh diatas kita tinggal mengubah
Const {deklarasi konstanta}
PPN = 0.125; {PPN 12.5%, tidak pakai :}
Dalam hal ini anda tidak perlu mengubah isi program, sehingga maintenance program
anda menjadi mudah.
36
Apakah ada kegunaan lain dari konstanta pada pascal ?
Ada, yaitu memberikan nilai awal kepada variabel, contoh yang diambil dari Hangman
Modul 2 :
const
havetry=10;
s: array[0..18] of string=
(‘hello’, ‘mouse’, ‘hacher’, ‘programmer’, ‘killer’, ‘teacher’, ‘splotchier’,
‘butcher’, ‘computer’, ‘pascal’, ‘house’, ‘poor’, ‘children’, ‘museum’,
‘security’, ‘spillway’, ‘stupidity’, ‘corrigenda’, ‘freebooter’);
dan contoh lain :
Uses crt;
Const {deklarasi konstanta}
Gaji : Real = 500000;
Var
Begin
End.
Omzet : Real;
Write(‘Omzet penjualan :’) Readln(Omzet);
If Omzet >= 10000000 Then
Gaji := Gaji + 10000;
Writeln(‘Gaji yang diterima ‘, Gaji:10:2);
Pada contoh diatas konstanta Gaji yang dideklarasikan beserta type dapat berprilaku
sebagai variabel, sehingga nilainya boleh diubah didalam program.
Ok, sekarang akan kita lanjutkan ke pembahasan tentang Set.
Set adalah sesuatu fasilitas khusus pada pascal yang tidak dimiliki oleh bahasa
pemrograman lainnya. Set pada pascal adalah merupakan himpunan seperti pada
matematika. Pemakaian Set dapat menyederhanakan algoritma program, dan
memudahkan pembacaan, contoh :
uses crt;
var
c : char;
vowel : set of ‘A’,’E’,’I’,’O’,’U'; {deklarasi variabel Set}
letter : set of ‘A’..’Z'; {range A s/d Z}
begin
write(‘Enter a vowel’);
repeat
c:=upcase(readkey);
until c in vowel;
write(‘Enter a letter’);
repeat
c:=upcase(readkey);
until c in letter;
end.
Contoh lain pemakaian set
uses crt;
37
var
c : char;
begin
write(‘Yes or no (Y/N) ?’);
repeat
c:=upcase(readkey);
until c in ['Y','N'];
end.
Apakah fungsi operator in pada operasi Set ?
Oh, ya, fungsi operator in pada Set adalah menyatakan bagian dari himpunan tertentu.
Apakah masih ada fasilitas lain yang khusus pada pascal ?
Ya, masih adalah beberapa yaitu user defined type, dimana pemakai dapat membuat type ciptaan
sesuai dengan kebutuhan program.
Dapatkah anda menjelaskan lebih lanjut apa itu type ciptaan dari sisi penerapan pada
program, dan kalau bisa kasih contoh dong !
Sebagaimana kita ketahui, pascal menyediakan beberapa ordinal type seperti shortint, integer,
longint, byte, char dan boolean. Didalam pemakaian type ini kadang-kadang kurang sesuai
dengan kebutuhan, misalnya kita ingin mengolah data nilai siswa yang kemungkinan nilainya
berkisar 0 s/d 100. Pada prinsipnya kita dapat menggunakan type byte untuk keperluan tersebut.
Contoh :
Var
Fisika : Byte;
Tetapi akan lebih baik kalau dengan contoh berikut ;
Type
Nilai = 0..100;
Var
Fisika : Nilai;
Dalam hal ini type ciptaan seperti ini disebut sebagai Subrange.
Dapatkah anda menjelaskan lebih lanjut kira-kira bagaimana pengertian dari subrange
tersebut!
Ok, sebenarnya subrange tersebut merupakan bagian dari range nilai type lain, misalnya type
Byte dimana nilai yang dapat ditampung berkisar 0 s/d 255, padahal deklarasi type diatas :
Type
Nilai = 0 .. 100;
Dalam hal ini sebenarnya type nilai merupakan subrange dari type ordinal yang telah ada. Adakah
type ciptaan lain yang dapat membuat program kita menjadi lebih terstruktur ? Ya, masih
ada, salah satunya adalah type substitusi, sesuai dengan namanya, type ini sebenarnya adalah
pemberian nama terhadap type berstruktur seperti array dan string, sehingga selanjutnya kita
dapat menggunakan nama tersebut dalam deklarasi variabel.
38
Contoh :
Type
STRING30 = String[30];
Var
Nama : STRING30;
Sebenarnya sama saja kalau kita tulis sebagai berikut :
Var
Nama : STRING30;
Adakah type ciptaan yang lain ?
Masih ada dua yaitu Enumerated type dan Record Type, pada modul ini kita belum akan
membahas tentang Record type.
Apa itu Enumerated type ?
Pada pascal, user diberi kesempatan untuk membentuk ordinal type yang sesuai dengan
kebutuhan program, misalnya :
Contoh :
Var
Today : Byte;
Begin
Today := 7;
If Today = 4 then Writeln(‘Jangan lupa sembayang DATUK’);
End.
Bandingkan dengan :
Type
DOW = (senin, selasa, rabu, kamis, jumat, sabtu, minggu);
Var
Today : DOW;
Begin
Today := minggu;
If Today = kamis then Writeln(‘Jangan lupa sembayang DATUK’);
End.
Dapatkah Enumerated type mengalami input-output dan operasi matematika ?
Enumerated type tidak dapat mengalami input output maupun operasi matematika, tetapi ada
beberapa fungsi bantu ordinal yang dapat digunakan untuk mengolah enumerated type, yaitu :
Pred(X), function mendapatkan nilai predecessor dari suatu nilai ordinal
type.
Succ(X), function mendapatkan nilai predecessor dari suatu nilai ordinal
type.
Dec(X), procedure mengurangi nilai 1 ke variabel X.
Inc(X), procedure menambah nilai 1 ke variabel X.
Contoh :
39
Type
DOW = (senin, selasa, rabu, kamis, jumat, sabtu, minggu);
Var
Today : DOW;
Begin
Today := minggu;
Today := Pred(Today); {sabtu}
Inc(Today); {minggu}
End.
Latihan 8
1. Explain what is constants in pascal ?
2. Explain how constants make your program more easy maintenance ?
3. Can we change the value of constant in program ?
4. Explain how to declare set variable !
5. Explain the function of in operator in set !
6. Explain what is Sub Ranges, Subtitution and Enumerated in type declaration ?
7. Can we do input output for Enumerated type ?
Latihan di Laboratorium
8. Change your space invader game into enumerated types, i.e. :
enemy = (robot, alien, ufo); etc…
Latihan di Rumah
Make a pac-man game, using your own random number generator. You have
4 ghosts in the game, player has 5 lives. It has a “super bullet” that makes ghosts eatable. Just
like a normal pac-man. You must record the highest score, but not in file (since I haven’t taught
you yet). Hint :
* Use C as the Pac-man
* Use . as the small bullet
* Use * as the big bullet
* For ghosts you may use U Fungsi bantu
konversi ini terdiri atas ROUND(Real)
FUNCTION untuk menghasilkan data type INTEGER dari suatu REAL dengan
memperhatikan aturan pembulatan.
TRUNC(REAL)
FUNCTION untuk mengambil bagian INTEGER dari suatu REAL.
40
ORD(Char);
FUNCTION untuk menghasilkan data type Byte dari suatu Character.
CHR(Byte);
FUNCTION untuk menghasilkan data type Character dari suatu Byte.
Fungsi Bantu Matematika :
ABS(Numerik);
FUNCTION untuk mengambil harga mutlak suatu nilai
FRAC(Real);
FUNCTION untuk mengambil bagian pecahan dari suatu REAL
INT(Real);
FUNCTION untuk mengambil bilangan bulat dari suatu REAL
SQR(Real);
FUNCTION untuk menghasilkan nilai kuadrat suatu bilangan
SQRT(Real)
FUNCTION untuk menghasilkan akar kwadrat suatu bilangan
COS(Real)
FUNCTION untuk menghasilkan Cosinus suatu sudut
SIN(real);
FUNCTION untuk menghasilkan Sinus suatu sudut (dalam radian PI/180)
ARCTAN(real);
FUNCTION untuk menghasilkan sudut yang diketahui nilai tangennya
PI;
FUNCTION untuk menghasilkan nilai pi (3.1415926…)
LN(Real);
FUNCTION untuk menghasilkan logaritma natural dari suatu nilai
EXP(real);
FUNCTION untuk menghasilkan eksponensial dari suatu nilai.
Modul 9
Hallo, kita akan melanjutkan pembahasan tentang type ciptaan yang akan membuat
program anda lebih terstruktur didalam pengolahan data yang dikenal dengan istilah
Record type.
41
Apa itu Record type?
Record type adalah suatu type data terstruktur yang merupakan pengelompokan
beberapa type data lainnya.
Dapatkah anda memberi contoh suatu Record type ?
Baiklah, misalnya kita akan mengolah data nilai ujian pascal programming siswa
sebagai berikut:
Nis Nama Tugas Teori Praktek
02001 Hendra
Soewarno
80 90 90
Dari tabel diatas kita dapat menyusun variabel data sebagai berikut :
NIS : String[9];
NAMA : String[30];
Tugas, Teori, Praktek : Byte;
Misalnya jumlah siswa adalah 10 orang, maka kita perlu mendeklarasikan variabel
tersebut menjadi array:
Var
NIS : Array [1..10] Of String[9];
NAMA : Array [1..10] Of String[30];
Tugas, Teori, Praktek : Array [1..10] Of Byte;
Sedangkan kalau kita menggunakan fasilitas Record Type, maka :
Type
TSiswa = Record
NIS : String[9];
NAMA : String[30];
Tugas, Teori, Praktek : Byte;
End;
Var
Siswa : Array [1..10] of TSiswa;
Bukankan menjadi lebih sederhana dan terstruktur. Ok, I got It,
tetapi bagaimana cara pemakaiannya dalam program ? Misalnya kita
anda mengisi data untuk Siswa yang pertama. Siswa[1].Nis :=
“02001”;
Siswa[1].Nama := “Hendra Soewarno”;
Siswa[1].Tugas := 80;
Siswa[1].Teori := 90;
Siswa[1].Praktek := 90;
Bisakah anda bayangkan kalau yang tidak pakai Record Type !
Adakah cara untuk melakukan hal yang sama ?
42
Ya, kita dapat menggunakan block With … End;
With Siswa[1] Do Begin
Nis := “02001”;
Nama := “Hendra Soewarno”;
Tugas := 80;
Teori := 90;
Praktek := 90;
End;
Bagaimana untuk proses input-outputnya ?
Untuk proses input-output sama saja dengan variabel biasanya.
Contoh :
For I := 1 To 10 Do Begin
Write(‘No. Induk siswa :’); Readln(Siswa[I].Nis);
Write(‘Nama siswa :’); Readln(Siswa[I].Nama);
Write(‘Tugas :’); Readln(Siswa[I].Tugas);
Write(‘Teori :’); Readln(Siswa[I].Teori);
Write(‘Praktek :’); Readln(Siswa[I].Praktek);
End;
For I := 1 To 10 Do Begin
With Siswa[I] Do Begin
Rata := (Tugas+Teori+Praktek)/3;
Write(Nis:9,’ ‘);
Write(Nama:30,’ ‘);
Write(Tugas:6:2,’ ‘);
Write(Teori:6:2,’ ‘);
Write(Praktek:6:2,’ ‘);
Write(Rata:6:2);
End;
End;
Berbicara tentang pengolahan data, saya jadi teringat bagaimana melakukan
pengurutan data pada komputer ?
Mengurut data pada komputer membutuhkan algoritma, beberapa diantaranya adalah
:
1. Bubble Sort (Sangat sederhana tetapi lambat)
2. Quick Sort (Cepat tetapi agak rumit)
3. Shell Sort (Paling cepat tetapi sangat rumit)
Bagaimana konsep kerja dari Bubble Sort ?
Konsep dasar bubble sort adalah memindahkan data yang lebih kecil ke depan, dengan
cara membandingkan seluruh data.
for i:=1 to NumberOfData-1 do
for j:=i+1 to NumberOfData do
if Data[i]>Data[j] then
begin
t:=Data[i];
Data[i]:=Data[j];
Data[j]:=t;
end;
43
Pada prinsipnya adalah ambil data ke 1, bandingkan dengan data ke 2, 3, 4, s/d
jumlah data, jika data ke 1 lebih besar, maka pindah tempat.
Selanjutnya dilakukan terhadap data ke 2, dengan data 3,4,5, s/d jumlah data
Selanjutnya dilakukan terhadap data ke 3, dengan data 4,5,6 s/d jumlah data
Proses yang sama dilakukan sampai terhadap data ke jumlah data – 1
Bagaimana pula konsep kerja Shell Sort ?
Algoritma ini ditemukan oleh Donald Shell. Konsepnya adalah membandingkan data
dengan jarak tertentu dalam array
for gap:=(NumberOfData div 2) downto 1 do
for i:=1 to (NumberOfData-gap) do
if Data[i]>Data[i+gap] then
begin
t:=Data[i];
Data[i]:=Data[i+gap];
Data[i+gap]:=t;
nd;
Misalnya kita ada 8 data, maka gap akan mulai dari 4 s/d 1.
Pada gap = 4, maka :
Bandingkan data 1 dengan 5, 2 dengan 6, 3 dengan 7, 4 dengan 8.
Pada gap =3, maka :
Bandingkan data 1 : 4, 2 : 5, 3 : 6, 4 : 7, 5 : 8
Pada gap = 2, maka :
Bandingkan data 1 : 3, 2 : 4, 3 : 5, 4 : 6, 5 : 7, 6 : 8
Pada gap = 1, maka :
Bandingkan data 1 : 2, 2 : 3, 3 : 4, 4 : 5, 5 : 6, 6 : 7, 7 : 8
Bagaimana dengan yang Quick Sort ?
Algoritma ini merupakan metode pengurutan data yang tercepat didunia, yang
ditemukan oleh E. Hoare. Algoritma ini menggunakan metode recursive.
Prinsip kerjanya adalah membagi data menjadi dua bagian dengan data ditengah
sebagai titik pivot. Pindahkan data sisi kiri yang lebih besar dari pada pivot dengan
data sisi kanan yang lebih kecil dari pada pivot.
procedure qsort(lower, upper : byte)
var
left, right, pivot : byte;
begin
pivot:=Data[(lower+upper) div 2];
left:=lower;
right:=upper;
while left<=right do
begin
while Data[left] < pivot do left:=left+1; { Parting for left }
while Data[right] > pivot do right:=right-1;{ Parting for right}
if left<=right then { Validate the change }
begin
swap Data[left] with Data[right];
left:=left+1;
44
end;
end;
right:=right-1;
end;
if right>lower then qsort(lower,right); { Sort the LEFT part }
if upper>left then qsort(left ,upper); { Sort the RIGHT part }
Pemakaian : qsort(1,NumberOfData);
Latihan 9
1. Explain what is Record Type and give an example !
2. Explain what With … End block function !
3. Suppose we have an array contain 8 data (7,8.5,4,2,1,3,6), please write down step
by step data changing when sorting using Bubble Sort, Shell Sort, and Quick Sort !
Latihan di Laboratoriun
4. Make a database. The record tag, TStudent consists of these fields :
Field Length
~~~~~ ~~~~~~
Name 20
Address 40
Phone 15
Quiz number, from 1 to 100
Midtest number, from 1 to 100
Finaltest number, from 1 to 100
User could : add new student, edit existing student, view student in a
list, delete the record, sort the record according to :
* Quiz
* Midtest
* Finaltest
* Overall value
(Overall value = 0.1*Quiz + 0.4*Mid + 0.5*Final)
You must :
* Make simple menu.
* At least be able to handle 200 students.
* Apply quick sort for at least one key-sort.
* Apply search for student name first before editing the data.
Tip : Use array of records.
* * *
45

Tambah komentar Februari 17, 2010 nyohongo

PENGANTAR ALGORITMA DAN PROGRAM

ALGORITMA & PEMROGRAMAN: Teori dan Praktik dalam Pascal Edisi Kedua
1
BAB I
PENGANTAR ALGORITMA DAN PROGRAM
1.1. Apakah Itu Algoritma
Ditinjau 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 Ja’far 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.
1.1.1. Definisi Algoritma
“Algoritma 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.
Bab I: Pengantar Algoritma dan Program
2
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.
1.1.2. Beda Algoritma dan Program
Program 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.
ALGORITMA & PEMROGRAMAN: Teori dan Praktik dalam Pascal Edisi Kedua
3
Pembuatan algoritma mempunyai banyak keuntungan di antaranya:
1. Pembuatan atau penulisan algoritma tidak tergantung pada bahasa
pemrograman manapun, artinya penulisan algoritma independen dari
bahasa pemrograman dan komputer yang melaksanakannya.
2. Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa
pemrograman.
3. Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama
karena algoritmanya sama.
Beberapa hal yang perlu diperhatikan dalam membuat algoritma:
1. Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah.
Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah
dimengerti dan dipahami.
2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti
notasi bahasa pemrograman. Notasi yang digunakan dalam menulis
algoritma disebut notasi algoritmik.
3. 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.
4. 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.
5. Algoritma sebenarnya digunakan untuk membantu kita dalam
mengkonversikan suatu permasalahan ke dalam bahasa pemrograman.
6. 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 variabel
Untuk mengetahui dibutuhkannya pendeklarasian variabel dalam
penggunaan bahasa pemrograman apabila tidak semua bahasa
pemrograman membutuhkannya.
Bab I: Pengantar Algoritma dan Program
4
b. Pemilihan tipe data
Apabila bahasa pemrograman yang akan digunakan membutuhkan
pendeklarasian variabel maka perlu hal ini dipertimbangkan pada
saat pemilihan tipe data.
c. Pemakaian instruksi-instruksi
Beberapa instruksi mempunyai kegunaan yang sama tetapi masingmasing
memiliki kelebihan dan kekurangan yang berbeda.
d. Aturan sintaksis
Pada saat menuliskan program kita terikat dengan aturan sintaksis
dalam bahasa pemrograman yang akan digunakan.
e. Tampilan hasil
Pada 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.
1.1.3. Algoritma Merupakan Jantung Ilmu Informatika
Algoritma 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.
ALGORITMA & PEMROGRAMAN: Teori dan Praktik dalam Pascal Edisi Kedua
5
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:
1. Mengerti setiap langkah dalam algoritma.
2. Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
Tabel 1.1. Contoh-Contoh Algoritma dalam Kehidupan Sehari-hari
No. Proses Algoritma Contoh Langkah dalam
Algoritma
1 Membuat kue Resep kue Masukkan telur ke dalam
wajan, kocok sampai
mengembang
2 Membuat pakaian Pola pakaian Gunting kain dari pinggir
kiri bawah ke arah kanan
sejauh 5 cm
3 Merakit mobil Panduan
merakit
Sambungkan komponen
A dengan komponen B
4 Kegiatan seharihari
Jadwal harian Pukul 06.00: mandi pagi,
pukul 07.00: berangkat
kuliah
5 Mengisi voucer HP Panduan
pengisian
Tekan 888, masukkan
nomor voucer
1.1.4. Mekanisme Pelaksanaan Algoritma oleh Pemroses
Komputer 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
Bab I: Pengantar Algoritma dan Program
6
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 operasioperasi
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 operasioperasi
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.
Piranti
masukkan
Unit Pemroses
Utama (CPU)
Piranti
Keluaran
Memori
Gambar 1.1 Komponen-Komponen Utama Komputer
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
ALGORITMA & PEMROGRAMAN: Teori dan Praktik dalam Pascal Edisi Kedua
7
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).
1.1.5. Belajar Memprogram dan Belajar Bahasa Pemrograman
Belajar 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 pengoperasian compiler-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
simulasi seperti CSMP, Simscript, GPSS, Dinamo. Berdasarkan
terapannya, bahasa pemrograman dapat digolongkan atas dua kelompok
besar:
1. Bahasa pemrograman bertujuan khusus. Yang termasuk kelompok
ini adalah Cobol (untuk terapan bisnis dan administrasi). Fortran
(terapan komputasi ilmiah), bahasa rakitan (terapan pemrograman
mesin), Prolog (terapan kecerdasan buatan), bahasa-bahasa
simulasi, dan sebagainya.
2. Bahasa perograman bertujuan umum, yang dapat digunakan untuk
berbagai aplikasi. Yang termasuk kelompok ini adalah bahasa
Pascal, Basic dan C. Tentu saja pembagian ini tidak kaku. Bahasabahasa
bertujuan khusus tidak berarti tidak bisa digunakan untuk
aplikasi lain. Cobol misalnya, 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:
Bab I: Pengantar Algoritma dan Program
8
1. 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.
2. 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 sebuah translator bahasa (yang
disebut kompilator atau compiler) ke dalam bahasa mesin sebelum
akhirnya dieksekusi oleh CPU. Contoh bahasa tingkat tinggi adalah
Pascal, PL/I, Ada, Cobol, Basic, Fortran, C, C++, dan sebagainya.
Bahasa pemrograman bisa juga dikelompokkan berdasarkan pada tujuan dan
fungsinya. Di antaranya adalah:
Gambar 1.2 Pembagian Bahasa Pemrograman
Secara sistematis berikut diberikan kiat-kiat untuk belajar memprogram dan
belajar bahasa pemrograman serta produk yang dapat dihasilkan:
a. Belajar Memprogram
• Belajar memprogram: belajar bahasa pemrograman.
ALGORITMA & PEMROGRAMAN: Teori dan Praktik dalam Pascal Edisi Kedua
9
• Belajar memprogram: belajar tentang strategi pemecahan masalah,
metodologi dan sistematika pemecahan masalah kemudian
menuliskannya dalam notasi yang disepakati bersama.
• Belajar memprogram: bersifat pemahaman persoalan, analisis dan
sintesis.
• Belajar memprogram, titik berat: designer program.
b. Belajar Bahasa Pemrograman
• Belajar bahasa pemrograman: belajar memakai suatu bahasa
pemrograman, aturan sintaks, tatacara untuk memanfaatkan pernyataan
yang spesifik untuk setiap bahasa.
• Belajar bahasa pemrograman, titik berat: coder.
c. Produk yang Dihasilkan Pemrogram
• Program dengan rancangan yang baik (metodologis, sistematis).
• Dapat dieksekusi oleh mesin.
• Berfungsi dengan benar.
• Sanggup melayani segala kemungkinan masukan.
• Disertai dokumentasi.
• Belajar memprogram, titik berat: designer program.
1.2. Menilai Sebuah Algoritma
Ketika 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 (cost rendah). Proses harus diselesaikan
secepat mungkin dan frekuensi kalkulasi yang sependek mungkin.
Bab I: Pengantar Algoritma dan Program
10
• 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 perubahan requirement yang 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 berbagai platform komputer.
• 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.
• Harus terminate. Jalannya algoritma harus ada kriteria berhenti.
Pertanyaannya adalah apakah bila jumlah instruksinya berhingga maka
pasti terminate?
• Output yang dihasilkan tepat. Jika langkah-langkah algoritmanya logis
dan diikuti dengan seksama maka dihasilkan output yang diinginkan.
1.3. Penyajian Algoritma
Penyajian 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)
dan pseudocode. Pseudocode adalah 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,
ALGORITMA & PEMROGRAMAN: Teori dan Praktik dalam Pascal Edisi Kedua
11
misalnya dengan flowchart. Secara umum, pseudocode mengekspresikan
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.
Flowchart merupakan 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 menggunakan flowchart akan memudahkan kita untuk melakukan
pengecekan bagian-bagian yang terlupakan dalam analisis masalah. Di
samping itu flowchart juga berguna sebagai fasilitas untuk berkomunikasi
antara pemrogram yang bekerja dalam tim suatu proyek.
Ada dua macam flowchart yang menggambarkan proses dengan komputer,
yaitu:
1. Flowchart sistem yaitu bagan dengan simbol-simbol tertentu yang
menggambarkan urutan prosedur dan proses suatu file dalam suatu
media menjadi file di dalam media lain, dalam suatu sistem
pengolahan data.
Beberapa contoh Flowchart sistem:
Dokumen Pengurutan Offline
Kegiatan Manual Hard Disk
2. Flowchart program yaitu bagan dengan simbol-simbol tertentu
yang menggambarkan urutan proses dan hubungan antar proses
secara mendetail di dalam suatu program.
Kaidah-Kaidah Umum Pembuatan Flowchart Program
Dalam pembuatan flowchart Program tidak ada rumus atau patokan yang
bersifat mutlak. Karena flowchart merupakan gambaran hasil pemikiran
dalam menganalisis suatu masalah dengan komputer. Sehingga flowchart
Bab I: Pengantar Algoritma dan Program
12
Input
(Bahan mentah)
Proses Output
(Bahan Jadi)
yang dihasilkan dapat bervariasi antara satu pemrogram dengan yang
lainnya.
Namun secara garis besar setiap pengolahan selalu terdiri atas 3 bagian
utama, yaitu:
􀂙 Input,
􀂙 Proses pengolahan dan
􀂙 Output
Untuk pengolahan data dengan komputer, urutan dasar pemecahan suatu
masalah:
􀂾 START, berisi pernyataan untuk persiapan peralatan yang
diperlukan sebelum menangani pemecahan persoalan.
􀂾 READ, berisi pernyataan kegiatan untuk membaca data dari suatu
peralatan input.
􀂾 PROSES, berisi kegiatan yang berkaitan dengan pemecahan
persoalan sesuai dengan data yang dibaca.
􀂾 WRITE, berisi pernyataan untuk merekam hasil kegiatan ke
peralatan output.
􀂾 END, mengakhiri kegiatan pengolahan.
Walaupun tidak ada kaidah-kaidah yang baku dalam penyusunan flowchart,
namun ada beberapa anjuran:
􀂾 Hindari pengulangan proses yang tidak perlu dan logika yang
berbelit sehingga jalannya proses menjadi singkat.
􀂾 Jalannya proses digambarkan dari atas ke bawah dan diberikan
tanda panah untuk memperjelas.
􀂾 Sebuah flowchart diawali dari satu titik START dan diakhiri dengan
END.
Berikut merupakan beberapa contoh simbol flowchart yang disepakati oleh
dunia pemrograman:
ALGORITMA & PEMROGRAMAN: Teori dan Praktik dalam Pascal Edisi Kedua
13
Decision
Process
Input/Output
data
Document
Preparation
Predefined
process
Control
transfer
Terminator
Stored data
Off-page
reference
Loop Connector Line Connector
Untuk memahami lebih dalam mengenai flowchart ini, akan diambil sebuah
kasus sederhana.
Kasus:
Buatlah sebuah rancangan program dengan menggunakan flowchart,
mencari luas persegi panjang.
Solusi:
Perumusan untuk mencari luas persegi panjang adalah:
L 􀒏= p. l
di mana, L adalah Luas persegi panjang, p adalah panjang persegi, dan l
adalah lebar persegi.
Bab I: Pengantar Algoritma dan Program
14
Keterangan 1:
1. Simbol pertama menunjukkan dimulainya sebuah program.
2. Simbol kedua menunjukkan bahwa input data dari p dan l.
3. Data dari p dan l akan diproses pada simbol ketiga dengan
menggunakan perumusan L = p. l
4. Simbol keempat menunjukkan hasil output dari proses dari simbol
ketiga.
5. Simbol kelima atau terakhir menunjukkan berakhirnya program
dengan tanda End.
1.4. Struktur Dasar Algoritma
Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkahlangkah
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 Runtunan
Digunakan untuk program yang pernyataannya sequential atau urutan.
2. Struktur Pemilihan
Digunakan untuk program yang menggunakan pemilihan atau
penyeleksian kondisi.
3. Struktur Perulangan
Digunakan untuk program yang pernyataannya akan dieksekusi
berulang-ulang.
ALGORITMA & PEMROGRAMAN: Teori dan Praktik dalam Pascal Edisi Kedua
15
1.5. Tahapan dalam Pemrograman
Langkah-langkah yang dilakukan dalam menyelesaikan masalah dalam
pemrograman dengan komputer adalah:
1. Definisikan Masalah
Berikut adalah hal-hal yang harus diketahui dalam analisis masalah
supaya kita mengetahui bagaimana permasalahan tersebut:
a. Kondisi awal, yaitu input yang tersedia.
b. Kondisi akhir, yaitu output yang diinginkan.
c. Data lain yang tersedia.
d. Operator yang tersedia.
e. Syarat atau kendala yang harus dipenuhi.
Contoh kasus:
Menghitung biaya percakapan telepon di wartel. Proses yang perlu
diperhatikan adalah:
a. Input yang tersedia adalah jam mulai bicara dan jam selesai bicara.
b. Output yang diinginkan adalah biaya percakapan.
c. Data lain yang tersedia adalah besarnya pulsa yang digunakan dan
biaya per pulsa.
d. Operator yang tersedia adalah pengurangan (-), penambahan (+),
dan perkalian (*).
e. Syarat kendala yang harus dipenuhi adalah aturan jarak dan aturan
waktu.
2. Buat Algoritma dan Struktur Cara Penyelesaian
Jika masalahnya kompleks, maka dibagi ke dalam modul-modul. Tahap
penyusunan algoritma seringkali dimulai dari langkah yang global
terlebih dahulu. Langkah global ini diperhalus sampai menjadi langkah
yang lebih rinci atau detail. Cara pendekatan ini sangat bermanfaat
dalam pembuatan algoritma untuk masalah yang kompleks. Penghalusan
langkah dengan cara memecah langkah menjadi beberapa langkah.
Setiap langkah diuraikan lagi menjadi beberapa langkah yang lebih
sederhana. Penghalusan langkah ini akan terus berlanjut sampai setiap
langkah sudah cukup rinci dan tepat untuk dilaksanakan oleh pemroses.
3. Menulis Program
Algoritma yang telah dibuat, diterjemahkan dalam bahasa komputer
menjadi sebuah program. Perlu diperhatikan bahwa pemilihan algoritma
yang salah akan menyebabkan program memiliki untuk kerja yang
kurang baik. Program yang baik memiliki standar penilaian:
Bab I: Pengantar Algoritma dan Program
16
a. Standar teknik pemecahan masalah
– Teknik Top-Down
Teknik pemecahan masalah yang paling umum digunakan.
Prinsipnya adalah suatu masalah yang kompleks dibagi-bagi ke
dalam beberapa kelompok masalah yang lebih kecil. Dari
masalah yang kecil tersebut dilakukan analisis. Jika dimungkinkan
maka masalah tersebut akan dipilah lagi menjadi subbagiansubbagian
dan setelah itu mulai disusun langkah-langkah
penyelesaian yang lebih detail.
– Teknik Bottom-Up
Prinsip teknik bottom up adalah pemecahan masalah yang
kompleks dilakukan dengan menggabungkan prosedur-prosedur
yang ada menjadi satu kesatuan program sebagai penyelesaian
masalah tersebut.
b. Standar penyusunan program
– Kebenaran logika dan penulisan.
– Waktu minimum untuk penulisan program.
– Kecepatan maksimum eksekusi program.
– Ekspresi penggunaan memori.
– Kemudahan merawat dan mengembangkan program.
– User Friendly.
– Portability.
– Pemrograman modular.
4. Mencari Kesalahan
a. Kesalahan sintaks (penulisan program).
b. Kesalahan pelaksanaan: semantik, logika, dan ketelitian.
5. Uji dan Verifikasi Program
Pertama kali harus diuji apakah program dapat dijalankan. Apabila
program tidak dapat dijalankan maka perlu diperbaiki penulisan
sintaksisnya tetapi bila program dapat dijalankan, maka harus diuji
dengan menggunakan data-data yang biasa yaitu data yang diharapkan
oleh sistem. Contoh data ekstrem, misalnya, program menghendaki
masukan jumlah data tetapi user mengisikan bilangan negatif. Program
sebaiknya diuji menggunakan data yang relatif banyak.
ALGORITMA & PEMROGRAMAN: Teori dan Praktik dalam Pascal Edisi Kedua
17
6. Dokumentasi Program
Dokumentasi program ada dua macam yaitu dokumentasi internal dan
dokumentasi eksternal. Dokumentasi internal adalah dokumentasi yang
dibuat di dalam program yaitu setiap kita menuliskan baris program
sebaiknya diberi komentar atau keterangan supaya mempermudah kita
untuk mengingat logika yang terdapat di dalam instruksi tersebut, hal ini
sangat bermanfaat ketika suatu saat program tersebut akan
dikembangkan. Dokumentasi eksternal adalah dokumentasi yang
dilakukan dari luar program yaitu membuat user guide atau buku
petunjuk aturan atau cara menjalankan program tersebut.
7. Pemeliharaan Program
a. Memperbaiki kekurangan yang ditemukan kemudian.
b. Memodifikasi, karena perubahan spesifikasi.
Pemrograman Prosedural
Algoritma berisi urutan langkah-langkah penyelesaian masalah. Ini berarti
algoritma adalah proses yang prosedural. Pada program prosedural, program
dibedakan antara bagian data dengan bagian instruksi. Bagian instruksi
terdiri dari atas runtunan (sequence) instruksi yang dilaksanakan satu per
satu secara berurutan oleh sebuah pemroses. Alur pelaksanaan instruksi
dapat berubah karena adanya pencabangan kondisional. Data yang disimpan
di dalam memori dimanipulasi oleh instruksi secara beruntun. Kita katakan
bahwa tahapan pelaksanaan program mengikuti pola beruntun atau prosedural.
Paradigma pemrograman seperti ini dinamakan pemrograman prosedural.
Bahasa-bahasa tingkat tinggi seperti Cobol, Basic, Pascal, Fortran, dan
C/C++ mendukung kegiatan pemrograman prosedural, karena itu mereka
dinamakan juga bahasa prosedural. Selain paradigma pemrograman
prosedural, ada lagi paradigma yang lain yaitu pemrograman berorientasi
objek (Object Oriented Programming atau OOP). Paradigma pemrograman
ini merupakan trend baru dan sangat popular akhir-akhir ini. Pada
paradigma OOP, data dan instruksi dibungkus (encapsulation) menjadi satu.
Kesatuan ini disebut kelas (class) dan instansiasi kelas pada saat run-time
disebut objek (object). Data di dalam objek hanya dapat diakses oleh
instruksi yang ada di dalam objek itu saja.
Paradigma pemrograman yang lain adalah pemrograman fungsional,
pemrograman deklaratif, dan pemrograman konkuren. Buku ini hanya
Bab I: Pengantar Algoritma dan Program
18
menyajikan paradigma pemrograman presedural saja. Paradigma
pemrograman yang lain di luar cakupan buku ini.
Contoh Kasus dan Penyelesaian
1. Menghitung luas dan keliling lingkaran
Proses kerjanya sebagai berikut:
a. Baca jari-jari lingkaran
b. Tentukan konstanta phi = 3.14
c. Hitung luas dan keliling
L = phi*r*r
K = 2*phi*r
d. Cetak luas dan keliling
2. Menghitung rata-rata tiga buah data
a. Algoritma dengan struktur bahasa Indonesia
– Baca bilangan a, b, dan c
– Jumlahkan ketiga bilangan tersebut
– Bagi jumlah tersebut dengan 3
– Tulis hasilnya
b. Algoritma dengan pseudocode
input (a, b, c)
Jml = a+b+c
Rerata = Jml/3
Output (Rerata)
3. Algoritma konversi suhu dalam derajat Celcius ke derajat Kalvin
Penyelesaian menggunakan pseudocode:
Input (Celcius)
Kalvin = Celcius + 273
Output (Kalvin)
1.6. Latihan
1. Buatlah sebuah rancangan program dengan menggunakan flowchart
untuk menghitung luas lingkaran!
2. Belajar memprogram dan belajar bahasa pemrograman adalah dua hal
yang berbeda. Jelaskan!
ALGORITMA & PEMROGRAMAN: Teori dan Praktik dalam Pascal Edisi Kedua
19
3. Di manakah letak kesalahan algoritma memutar kaset tape recorder di
bawah ini:
Algoritma Memutar Kaset
1. Pastikan tape recorder dalam keadaan POWER ON.
2. Tekan tombol PLAY.
3. Masukkan kaset ke dalam tape recorder.

Tambah komentar Februari 17, 2010 nyohongo

HANDOUT ALGORITMA PEMROGRAMAN DAN STRUKTUR DATA 1
PRODI SISTEM INFORMASI UKDW
# ONE
PENGANTAR ALGORITMA PEMROGRAMAN
Definisi Program/Pemrograman
– Adalah kumpulan instruksi-instruksi tersendiri yang biasanya disebut source code yang
dibuat oleh programmer (pembuat program)
Paradigma Pemrograman
1. Pemrograman Prosedural
􀂾 Berdasarkan urutan-urutan, sekuensial
􀂾 Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur
merupakan kumpulan instruksi yang dikerjakan secara berurutan.
􀂾 Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah
diubah.
2. Pemrograman Fungsional
􀂾 Berdasarkan teori fungsi matematika
􀂾 Fungsi merupakan dasar utama program.
3. Pemrograman Terstruktur
􀂾 Secara berurutan dan terstrukrtur.
􀂾 Program dapat dibagai-bagi menjadi prosedur dan fungsi.
􀂾 Contoh: PASCAL dan C
4. Pemrograman Modular
􀂾 Pemrograman ini membentuk banyak modul.
􀂾 Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri
􀂾 Sebuah program dapat merupakan kumpulan modul-modul.
􀂾 Contoh: MODULA-2 atau ADA
5. Pemrograman Berorientasi Obyek
􀂾 Pemrograman berdasarkan prinsip obyek, dimana obyek memiliki
data/variabel/property dan method/event/prosedur yang dapat dimanipulasi
􀂾 Contoh: C++, Object Pascal, dan Java.
6. Pemrograman Berorientasi Fungsi
􀂾 Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung
pada tujuan pembuatan bahasa pemrograman ini.
􀂾 Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.
7. Pemrograman Deklaratif
􀂾 Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada
memecahkan masalah dengan implementasi algoritma.
􀂾 Contoh: PROLOG
Struktur Sistem Komputer
Siklus Hidup Perangkat Lunak (Software)
Dilihat dari Struktur Sistem Komputer dan Siklus diatas, Algoritma Pemrograman dan Struktur
Data menempati posisi dibagian software dan di bagian implementasi karena bagian
implementasi merupakan bagian dimana pemrogram melakukan proses coding (pembuatan
program).
Komputer
Sistem Operasi
Bhs. Pemrograman
Progam Aplikasi
Pemakai
Hardware
Software
Brainware
Requirement Desain Implementasi Testing
Algoritma
Asal kata Algoritma berasal dari nama Abu Ja’far Mohammed Ibn Musa al-Khowarizmi,
ilmuan Persia yang menulis kitab al jabr w’al-muqabala (rules of restoration and reduction)
sekitar tahun 825 M
Definisi Algoritma
– Algoritma adalah urutan langkah logis tertentu untuk memecahkan suatu masalah.
Yang ditekankan adalah urutan langkah logis, yang berarti algoritma harus mengikuti
suatu urutan tertentu, tidak boleh melompat-lompat. (Dari Microsoft Press Computer
and Internet Dictionaary 1997, 1998)
– Alur pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis.
Yang ditekankan pertama adalah alur pikiran, sehingga algoritma seseorang dapat
juga berbeda dari algoritma orang lain. Sedangkan penekanan kedua adalah tertulis,
yang artinya dapat berupa kalimat, gambar, atau tabel tertentu. (Dari Algoritma dan
Struktur Data dengan C, C++, dan Java oleh Moh Sjukani hal 1)
Contoh Algoritma dalam kehidupan nyata:
– Jika seorang ingin memasak atau membuat kue, baik itu melihat resep ataupun tidak
pasti akan melakukan suatu langkah-langkah tertentu sehingga masakannya atau
kuenya jadi.
– Jika seseorang ingin mengirim surat kepada kenalannya di tempat lain, langkah yang
harus dilakukan adalah:
􀂾 Menulis surat
􀂾 Surat dimasukkan ke dalam amplop tertutup
􀂾 Amplop ditempeli perangko secukupnya.
􀂾 Pergi ke Kantor Pos terdekat untuk mengirimkannya.
Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai
masalah pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang
baik maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien.
Pelaksana algoritma adalah Komputer.
Manusia dan komputer berkomunikasi dengan cara: manusia memberikan perintah-perintah
kepada komputer berupa instruksi-instruksi yang disebut program.
Alat yang digunakan untuk membuat program tersebut adalah bahasa pemrograman.
Bahasa pemrograman sangat bermacam-macam: C, C++, Pascal, Java, C#, Basic, Perl,
PHP, ASP, JSP, J#, J++ dan masih banyak bahasa lainnya. Dari berbagai bahasa
pemrograman cara memberikan instruksinya berbeda-beda namun bertujuan menghasilkan
output yang sama.
Kriteria Algoritma Menurut Donald E. Knuth
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 * 1
Namun ada beberapa program yang memang dirancang untuk unterminatable: contoh Sistem
Operasi
Jenis Proses Algoritma
1. Sequence Process: instruksi dikerjakan secara sekuensial, berurutan.
2. Selection Process: instruksi dikerjakan jika memenuhi kriteria tertentu
3. Iteration Process: instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
4. Concurrent Process: beberapa instruksi dikerjakan secara bersama.
Contoh Algoritma
Algoritma menghitung luas persegi panjang:
1. Masukkan panjang (P)
2. Masukkan lebar (L)
3. L ← P * L
4. Tulis L
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.
Definisi Pseudo-code
Kode atau tanda yang menyerupai (pseudo) atau merupakan pejelasan cara menyelesaikan
suatu masalah. Pseudo-code sering digunakan oleh manusia untuk menuliskan algoritma.
Problem: mencari bilangan terbesar dari dua bilangan yang diinputkan
Contoh Pseudo-code:
1. Masukkan bilangan pertama
2. Masukkan bilangan kedua
3. Jika bilangan pertama > bilangan kedua maka kerjakan langkah 4, jika tidak, kerjakan
langkah 5.
4. Tampilkan bilangan pertama
5. Tampilkan bilangan kedua
Contoh Algoritma
1. Masukkan bilangan pertama (a)
2. Masukkan bilangan kedua (b)
3. if a > b then kerjakan langkah 4
4. print a
5. print b
Contoh Lain Algortima dan Pseudo-code:
Pseudo-code Algoritma
Nilai A ditambah dengan 5 A ← A + 5
Cetak nilai A bila lebih besar dari 10 IF A > 10 THEN PRINT A
Dari dua bilangan A dan B, cari
bilangan yang terbesar
IF A > B THEN PRINT A ELSE PRINT
B
Langkah-langkah dalam pemrograman komputer
1. Mendefinisikan masalah
Ini merupakan langkah pertama yang sering dilupakan orang. Menurut hukum Murphy
(oleh Henry Ledgard):
“Semakin cepat menulis program, akan semakin lama kita dapat menyelesaikannya”.
Hal tersebut berlaku untuk permasalahan yang kompleks. Tentukan masalahnya, apa
saja yang harus dipecahkan dengan menggunakan komputer, dan apa inputan serta
outputnya.
2. Menemukan solusi
Setelah masalah didefinisikan, maka langkah berikutnya adalah menentukan solusi.
Jika masalah terlalu kompleks, maka ada baiknya masalah tersebut dipecah menjadi
modul-modul kecil agar lebih mudah diselesaikan.
Contohnya masalah invers matriks, maka kita dapat membagi menjadi beberapa
modul:
􀂾 meminta masukkan berupa matriks bujur sangkar
􀂾 mencari invers matriks
􀂾 menampilkan hasil kepada pengguna
Dengan penggunaan modul tersebut program utama akan menjadi lebih singkat dan
mudah dilihat.
3. Memilih algoritma
Pilihlah algoritma yang benar-benar sesuai dan efisien untuk permasalahan tersebut
4. Menulis program
Pilihlah bahasa yang mudah dipelajari, mudah digunakan, dan lebih baik lagi jika
sudah dikuasai, memiliki tingkat kompatibilitas tinggi dengan perangkat keras dan
platform lainnya.
5. Menguji program
Setelah program jadi, silahkan uji program tersebut dengan segala macam
kemungkinan yang ada, termasuk error-handlingnya sehingga program tersebut akan
benar-benar handal dan layak digunakan.
6. Menulis dokumentasi
Menulis dokumentasi sangat penting agar pada suatu saat jika kita akan melakukan
perubahan atau membaca source code yang sudah kita tulis dapat kita ingat-ingat lagi
dan kita akan mudah membacanya. Caranya adalah dengan menuliskan komentarkomentar
kecil tentang apa maksud kode tersebut, untuk apa, variabel apa saja yang
digunakan, untuk apa, dan parameter-parameter yang ada pada suatu prosedur dan
fungsi.
7. Merawat program
Program yang sudah jadi perlu dirawat untuk mencegah munculnya bug yang
sebelumnya tidak terdeteksi. Atau mungkin juga pengguna membutuhkan fasilitas
baru yang dulu tidak ada.
SOAL ALGORITMA
1. Buatlah algoritma untuk menghitung konversi suhu.dari Celcius menjadi Reamur dan
Farenheit.
Input: suhu dalam Celcius
Proses: R = 4/5 * C dan F = 9/5 * C + 32
Output: suhu dalam Reamur dan Farenheit
2. Buatlah algoritma untuk mencari sisi miring dari suatu segitiga siku-siku, jika diketahui
panjang sisi yang membentuk sudut siku-siku.
Input: a dan b, yaitu panjang sisi pembentuk sudut siku-siku
Proses: c = a2 + b2
Ouput: sisi miring (c)
3. Buatlah algoritma untuk menentukan suatu bilangan genap atau ganjil
Input: suatu bilangan
Ouput: genap / ganjil
4. Buatlah algoritma untuk menentukan suatu bilangan adalah bilangan prima atau
bukan.
5. Buatlah algoritma untuk untuk menghitung akar-akar persamaan kuadrat dengan
rumus D = B2 – 4 * A * C
Jika D < 0 maka didapat akar imajiner
Jika D = 0 maka X1 = X2 yang didapat dari D = -B / (2 * A)
Jika D > 0 maka ada dua akar X1 = −B + D/ 2 * A dan X 2 = −B − D/ 2 * A
NEXT
Generasi Bahasa Pemrograman, Proses Kompilasi, FlowChart, mengenal C++ dan C#

Tambah komentar Februari 17, 2010 nyohongo

turbo pascal

Turbo Pascal : Sebuah Pengenalan

Posted by: blogv3 on: 26 Januari 2009

Pascal adalah sebuah bahasa pemrograman yang pertama kali di buat oleh Profesor Niklaus Wirth, seorang anggota International Federation of Information Processing (IFIP) pada tahun 1971. Dengan mengambil nama dari matematikawan Perancis, Blaise Pascal, yang pertama kali menciptakan mesin penghitung, Profesor Niklaus Wirth membuat bahasa Pascal ini sebagai alat bantu untuk mengajarkan konsep pemrograman komputer kepada mahasiswanya. Selain itu, Profesor Niklaus Wirth membuat Pascal juga untuk melengkapi kekurangan-kekurangan bahasa pemrograman yang ada pada saat itu, sehingga pascal mempunyai banyak kelebihan-kelebihan diantaranya :

  • Tipe Data Standar, tipe-tipe data standar yang telah tersedia pada kebanyakan bahasa pemrograman. Pascal memiliki tipe data standar seperti : boolean, integer, real, char, string, word.
  • User defined Data Types, programmer dapat membuat tipe data lain yang diturunkan dari tipe data standar.
  • Strongly-typed, programmer harus menentukan tipe data dari suatu variabel, dan variabel tersebut tidak dapat dipergunakan untuk menyimpan tipe data selain dari format yang ditentukan.
  • Terstruktur, memiliki sintaks yang memungkinkan penulisan program dipecah menjadi fungsi-fungsi kecil  (procedure dan function yang merupakan program kecil di dalam program) yang dapat dipergunakan berulang-ulang.
  • Sederhana dan Ekspresif, memiliki struktur yang sederhana dan sangat mendekati bahasa manusia (bahasa Inggris) sehingga mudah dipelajari dan dipahami.

Hebatnya lagi, bahasa PASCAL masih digunakan sebagai standar bahasa pemrograman TOKI (Tim Olimpiade Komptuter Indonesia) dan IOI (International Olympiad in Informatics), lho…

Contoh program Pascal yang paling sederhana yaitu :

Program program_pertamaku;
begin
end.

Nah, program diatas merupakan program paling sederhana dari bahasa Pascal.

Tambah komentar Februari 10, 2010 nyohongo

alogaritma

Algoritma

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas

Langsung ke: navigasi, cari

Diagram Alur sering digunakan untuk menggambarkan sebuah algoritma.

Dalam matematika dan komputasi, algoritma merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai.

Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah, terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak, terlepas dari sistem komputer atau bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang sama.

Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.

[sunting] Sejarah istilah “algoritma”

Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup sekitar abad ke-9), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12 “Algorithmi de numero Indorum”. Pada awalnya kata algorisma adalah istilah yang merujuk kepada aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan.

[sunting] Jenis-jenis Algoritma

Terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda.

  • Divide and Conquer, paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.
  • Metode serakah. Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan “serakah” apa yang dilihat terbaik pada saat itu.

Tambah komentar Februari 10, 2010 nyohongo

cara download

Optimalkan Koneksi Internet

Optimalisasi Koneksi Internet

Pada kali ini ESC creation dot com akan membahas beberapa tips untuk Optimalkan koneksi sambungan internet yang intinya mempercepat browsing, chatting dan download dari jaringan internet. Silahkan mencoba tips dan trik untuk mempercepat ber internet kita. Hal ini sangat berguna bila kita menggunakan koneksi internet yang serba minim dari segi kecepatan yang lambat seperti internet menggunakan akses GPRS, dial up dan sebagainya. Tips ini juga bisa mengoptimalkan kecepatan internet kita seperti menggunakan akses Indosat IM3, Mentari, mempercepat koneksi internet Indosat IM2 yang kita gunakan di jaringan GPRS, tapi juga bisa digunakan di jaringan Telkom Speedy dan koneksi internet lainnya.

  1. Pertama kita rubah sedikit configurasi Group Policy di PC kita. Masuk Menu Run >>> ketik: gpedit.msc >>> Computer Configuration >>> Administrative Templates >>> Network >>> Qos Packet Scheduler >>> Limit Resevable Bandwidth doble klik >>> atur settingnya ke enable dan isi bandwidth limit dengan 0 % klik Ok.
  2. Matikan Fitur update pada Komputer anda dengan cara : Masuk Control Panel >>> Security center >>> pilih Turn Off Automatic updates
  3. Hilangkan Peringatan Auto Update dengan cara : Masuk control Panel >>> Security center >>> pada bagian resource pilih change the way Security Center alerts me >>> Hilangkan Cawang pada Automatic Updates. Untuk Windows Versi SP1 : klik kanan my Computer >>> Pilih Auto Updates >>> Tandai pada Turn Off Automatic Updates . Matikan pula Menu updates pada plikasi lain yang anda gunakan.
  4. Untuk Software browser saya sarankan anda menggunakan Browser Mozila Firefox. Yang menurut pengalaman saya paling cepat dan sesuai digunakan pada koneksi internet yang lambat. Sofware Mozila FireFox ini bisa anda download di http://www.mozilla.com/firefox lebih bagus lagi bila anda menggunakan Mozila Firefox versi 2.0 yang cocok bila di jaringan internet lambat.
  5. Optimalkan Mozila FireFox anda dengan menambahkan Plugins atau Addons Faster Fox. Addon untuk Mozila Firefox ini bisa anda download di https://addons.mozilla.org/firefox/addon/1269 dimana Addon ini hanya bisa dipakai pada Mozila Firefox versi 2.0. Guna dari addon ini meningkatkan performa Firefox dan disesuaikan dengan jaringan internet kita. Atur Pluginsnya dengan cara masuk Menu Tools pada mozila >>> Pilih add-ons >>> Pilih Fasterfox Options >> Pilih Turbo Charged >>> Ok
  6. Browsing menggunakan Mozila ini bisa kita tingkatkan lagi dengan cara menggunakan proxy dan kita terapkan pada Browser Mozila Firefox ini. Cara rubah setting proxy pada Mozila sebagai berikut : Buka menu tools >>> Options >>> Advanced >>> Network >>> Conection Settings >> tanda pada Manual Proxy Configuration >>> Http proxy >> masukan salah satu IP proxy pada daftar Proxy di bawah ini.
  7. Untuk Kebutuhan Download saya sarankan anda menggunakan Sofware Internet Download Manager (IDM) silahkan anda download di http://www.internetdownloadmanager.com/
  8. Bila perlu gunakan Proxy di atas pada IDM. Langkahnya sebagai berikut : Jalankan IDM klik menu options >>> Proxy >>> Cawang Use Http Proxy >>> Masukan salah satu Proxy dan port Proxy di atas >> user name dan Password kosongkan >>> Klik OK.
  9. Untuk kebutuhan chatting ESC creation sarankan memakai Sofware Yahoo Mesenger versi 7 atau 8 karena lebih cepat bila digunakan pada jaringan lambat. Atau bisa gunakan alternatif Mesenger yahelite.
  10. Proxy di atas juga bisa digunakan pada yahoo mesenger dengan cara buka aplikasi Yahoo Mesenger Klik menu Connection Preference >>> Tandai Use Proxy >>> cawang enable Http Proxy >>> masukan salah satu Proxy di atas >> apply dan OK.

Daftar Http Proxy Update 21 November 2009 Proxy Availability :

212.93.193.90 Port:443 (Arab Saudi)
212.93.193.89 Port:443 (Arab Saudi)
212.93.193.88 Port:443 (Arab Saudi)

200.65.129.2 Port:80 (Mexico)
200.65.129.2 Port:3128 (Mexico)

168.10.168.61 Port:80 (USA Filter)
212.138.84.62 Port:80 (Arab Saudi)
193.136.124.226 Port:3128 (Coden)
210.125.84.17 Port:3124 (Coden)

213.132.58.149 Port:8080 (UEA Etisalat)

Proxy Khusus Jaringan Telkom Speedy :

PROXIES.TELKOM.NET.ID Port: 8080

125.167.43.218 Port 8080

202.134.0.135 Port 8080

Proxy Khusus Situs Indowebster.com

119.110.76.76 Port : 3128

Pengertian Proxy dan Kegunaanya

Definisi Pengertian Fungsi dan Kegunaan Proxy silahkan baca di sini

Dengan menjalankan 10 Langkah Optimalisasi di atas mudah – mudahan bisa membantu kemudahan dan mempercepat anda dalam ber internet. Silahkan mencoba… Tetap Semangat… !!!

Catatan :

Pelajari juga Artikel :

Tambah komentar Februari 10, 2010 nyohongo

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

1 komentar Februari 10, 2010 nyohongo

Halaman

Kategori

Tautan

Meta

Kalender

Agustus 2014
S S R K J S M
« Feb    
 123
45678910
11121314151617
18192021222324
25262728293031
 
Ikuti

Get every new post delivered to your Inbox.