Jumat, 07 Mei 2010

ALGORITMA PEMROGRAMAN TINGKAT DASAR

Perangko dari Rusia pada Gambar 5.1. di samping ini bergambar seorang pria dengan nama Muhammad ibn Mūsā al-Khwārizmī. Bagi kalian yang sedangberkecimpung dalam dunia komputer maka seharusnya mengetahui siapa orang di samping ini. Dia adalah seorang ilmuwan Islam yang karya-karyanya dalam bidang matematika, astronomi, astrologi dan geografi banyak menjadi dasar perkembangan ilmu modern. Dan dari namanya istilahyang akan kita pelajari dalam bab ini muncul. Dari Al-Khawarizmi kemudian berubah menjadi algorithm dalam Bahasa Inggris dan diterjemahkan menjadi algoritma dalam Bahasa Indonesia. Standar kompetensi algoritma pemrograman dasar terdiri atas empat kompetensi dasar. Dalam penyajian pada buku ini,
setiap kompetensi dasar
memuat uraian materi, dan latihan. Ringkasan diletakkan pada setiap akhir bab.
Kompetensi dasar pada bab ini adalah menjelaskan variabel, konstanta dan tipe
data, membuat algoritma/logika alur pemrograman, menerapkan pengelolaan
array, dan mengoperasikan file. Sebelum mempelajari kompetensi ini ingatlah
kembali sistem operasi, prinsip pemecahan masalah, dan materi-materi
pendukung dari mata pelajaran matematika.
Pada akhir bab, tercantum soal-soal latihan yang disusun dari soal-soal
yang mudah hingga soal-soal yang sulit. Latihan soal ini digunakan untuk
mengukur kemampuan terhadap kompetensi dasar ini. Artinya setelah
mempelajari kompetensi dasar ini secara mandiri dengan bimbingan guru
sebagai fasilitator, ukurlah sendiri kemampuan dengan mengerjakan soal-soal
latihan tersebut.




(Sumber: www.wikipedia.org)
Gambar 5.1. Perangko bergambar
Muhammad ibn Mūsā al-Khwārizmī. 94 Rekayasa Perangkat Lunak

TUJUAN
Setelah mempelajari bab ini diharapkan pembaca akan mampu :
o Menjelaskan variabel, konstanta dan tipe data
o Membuat algoritma/logika alur pemrograman
o Menerapkan pengelolaan array
o Mengoperasikan file


5.1. VARIABEL, KONSTANTA DAN TIPE DATA
Variabel, konstanta dan tipe data merupakan tiga hal yang akan selalu kita
jumpai ketika kita membuat program. Bahasa pemrograman apapun dari yang
paling sederhana sampai yang paling kompleks, mengharuskan kita untuk
mengerti ketiga hal tersebut.

5.1.1. Variabel
Variabel adalah tempat dimana kita dapat mengisi atau mengosongkan
nilainya dan memanggil kembali apabila dibutuhkan. Setiap variabel akan
mempunyai nama (identifier) dan nilai. Perhatikan contoh berikut.
Contoh 5.1. Nama variabel dan nilai.
username = “joni”
Nama = “Al-Khawarizmi”
Harga = 2500
HargaTotal = 34000

Pada contoh 5.1. di atas, username, Nama, harga dan HargaTotal
adalah nama dari variabel sedangkan “joni”, “Al-Khawarizmi”, 2500
dan 34000 adalah nilai dari masing-masing variabel. Nilai-nilai ini akan
tersimpan di dalam nama variabel masing-masing sepanjang tidak kita rubah.
Pada sebagian besar bahasa pemrograman, variabel harus dideklarasikan
lebih dulu untuk mempermudah compiler bekerja. Apabila variabel tidak
dideklarasikan maka setiap kali compiler bertemu dengan variabel baru pada
kode program akan terjadi waktu tunda karena compiler harus membuat variabel
baru. Hal ini memperlambat proses kerja compiler. Bahkan pada beberapa
bahasa pemrograman, compiler akan menolak untuk melanjutkan proses
kompilasi.
Pemberian nama variabel harus mengikuti aturan yang ditetapkan oleh
bahasa pemrograman yang kita gunakan. Namun secara umum ada aturan yang
berlaku untuk hampir semua bahasa pemrograman. Aturan-aturan tersebut
yaitu:
• Nama variabel harus diawali dengan huruf.
• Tidak boleh menggunakan spasi pada satu nama variabel. Spasi bisa
diganti dengan karakter underscore (_).

Rekayasa Perangkat Lunak 95

• Nama variabel tidak boleh mengandung karakter-karakter khusus,
seperti : .,+, -, *, /, <, >, &, (, ) dan lain-lain.
• Nama variabel tidak boleh menggunakan kata-kata kunci d bahasa
pemrograman
Contoh 5.2. Contoh penamaan variabel.
Penamaan yang benar Penamaan yang salah
namasiswa nama siswa (salah karena menggunakan spasi)
XY12 12X (salah karena dimulai dengan angka)
harga_total harga.total (salah karena menggunakan karakter
.)
JenisMotor Jenis Motor (salah karena menggunakan spasi)
alamatRumah for (salah karena menggunakan kata kunci bahasa
pemrograman)

5.1.2. Konstanta
Konstanta adalah variabel yang nilai datanya bersifat tetap dan tidak bisa
diubah. Jadi konstanta adalah juga variabel bedanya adalah pada nilai yang
disimpannya. Jika nilai datanya sepanjang program berjalan tidak berubah-
ubah, maka sebuah varibel lebih baik diperlakukan sebagai konstanta. Pada
sebuah kode program, biasanya nilai data dari konstanta diberikan langsung di
bagian deklarasi konstanta. Sedangkan untuk variabel biasanya hanya
ditentukan nama variabel dan tipe datanya tanpa isian nilai data. Aturan
penamaan variabel juga berlaku untuk penamaan konstanta. Demikian juga
aturan penetapan tipe data.
Sebagai contoh, jika kita membuat program perhitungan matematik yang
menggunakan nilai pi (3.14159) yang mungkin akan muncul dibanyak tempat
pada kode program, kita dapat membuat pi sebagai konstanta. Penggunaan
konstanta pi akan lebih memudahkan penulisan kode program dibanding harus
mengetikkan nilai 3.14159 berulang-ulang.

5.1.3. Tipe Data
Tipe data adalah jenis data yang dapat diolah oleh komputer untuk
memenuhi kebutuhan dalam pemrograman komputer. Setiap variabel atau
konstanta yang ada dalam kode program, sebaiknya kita tentukan dengan pasti
tipe datanya. Ketepatan pemilihan tipe data pada variabel atau konstanta akan
sangat menentukan pemakaian sumberdaya komputer (terutama memori
komputer). Salah satu tugas penting seorang programmer adalah memilih tipe
data yang sesuai untuk menghasilkan program yang efisien dan berkinerja tinggi.
Ada banyak tipe data yang tersedia tergantung jenis bahasa pemrograman
yang dipakai. Namun secara umum dapat dikelompokkan seperti pada Gambar
5.2.
96 Rekayasa Perangkat Lunak


Gambar 5.2. Pengelompokkan tipe data.

Tipe data primitive adalah tipe data dasar yang tersedia secara langsung
pada suatu bahasa pemrograman. Sedangkan tipe data composite adalah tipe
data bentukan yang terdiri dari dua atau lebih tipe data primitive.
Tipe data numeric
Tipe data numeric digunakan pada variabel atau konstanta untuk
menyimpan nilai dalam bentuk bilangan atau angka. Semua bahasa
pemrograman menyediakan tipe data numeric, hanya berbeda dalam jenis
numeric yang diakomodasi.
Jenis yang termasuk dalam tipe data numeric antara lain integer (bilangan
bulat), dan float (bilangan pecahan). Selain jenis, dalam bahasa pemrograman
juga diterapkan presisi angka yang digunakan, misalnya tipe data Single adalah
tipe data untuk bilangan pecahan dengan presisi yang terbatas, sedangkan tipe
data Double adalah tipe data untuk bilangan pecahan dengan presisi yang lebih
akurat. Pada bab-bab berikutnya yang membahas aplikasi bahasa pemrograman
bagian ini akan diuraikan lebih lanjut.

Rekayasa Perangkat Lunak 97

Penentuan tipe data numeric untuk suatu variabel/konstanta harus sangat
berhati-hati. Manual dan petunjuk pada masing-masing bahasa pemrograman
pada bagian tipe data harus diperhatikan dengan seksama. Perhatikan contoh
berikut.
Contoh 5.3. Penggunaan tipe data numeric.
Kode Program A Hasil eksekusi Program A
#include
using namespace std;
int main() {
int x, z;
float y;
x = 12;
y = 2.15;
z = x * y;
cout << "X =" << y =" << y << endl; cout << " z ="" x ="12" y ="2.15" z ="25">
using namespace std;
int main() {
int x;
float y, z;
x = 12.8;
y = 2.15;
z = x * y;
cout << "X =" << y =" << y << endl; cout << " z ="" x ="12" y ="2.15" z ="25.8">
using namespace std;
int main() {
int x;
float y, z;
x = 12;
y = 2.15;
z = x * y;
cout << "X =" << y =" << y << endl; cout << " z ="" x ="12" y ="2.15" z ="25.8" integer =" bilangan">
using namespace std;

int main() {
int x;
x = 5;
char huruf = 'A';
char* kata = "Java";

cout << "X = " << huruf = " << huruf << endl; cout << " kata =" " x =" 5" huruf =" A" kata =" Java" trecord_siswa =" Record" waktulahir =" “01/01/1997”" waktulahir =" “13:03:05" waktulahir =" “02/23/1998" waktulahir =" #02/23/1998" batasindeks =" 1..20" rentangtahun =" 1950..2030" hari_dlm_minggu =" (Nol," nama_bulan =" (Nol," a =" Command1" caption =" “HEY!!!”" fontbold =" True" luas =" 0.5" c =" 5/9" p =" X" q =" X" q =" X/Y." akhir =" (nilai" a =" 1." a =" 1." a =" A" a =" A" x =" 1" y =" 0" z =" 0" z =" 1" x =" 1" y =" 1." a =" 1" b =" 0)" a =" 1." b =" 9" a =" 3)." a =" 3,">
using namespace std;

int main() {

// Mendeklarasikan array A
dengan 3 buah elemen bertipe
int
int A[3];

// Mengisikan nilai elemen
array
A[0] = 5;
A[1] = 10;
A[2] = 20;

// Menampilkan nilai elemen
array
cout<<"Nilai elemen ke-1 = "<<<"Nilai elemen ke-2 = "<<<"Nilai elemen ke-3 = "<<> A.
Arti dari kondisi ini adalah jika nilai indeks I kurang dari batas atas indeks dan isi
dari Bil[I] tidak sama dengan bilangan yang kita cari, maka pencarian akan
diteruskan pada indeks yang lebih tinggi. Selama kondisi ini dipenuhi maka
pencarian akan terus dilakukan. Perhatikan bahwa di sini kita menggunakan
“dan” yang artinya kedua kondisi harus dipenuhi agar dianggap benar.
Pencarian akan hanya akan berhenti jika salah satu kondisi atau kedua kondisi
tidak dipenuhi lagi. Sehingga misalnya Bil[I] mempunyai isi yang sama dengan A
maka pencarian akan dihentikan karena kondisi pada While sudah tidak dipenuhi
lagi.

5.3.3. Pengurutan Data pada Array
Permasalahan lain dalam array yang juga banyak digunakan adalah
bagaimana mengurutkan elemen-elemen dari variabel array tersebut. Perhatikan
kembali Contoh 5.24. Pada contoh tersebut terlihat bahwa isi elemen-elemen
dari array tidak dalam posisi berurutan. Bagaimanakah caranya agar isi elemen-
elemen tersebut terurut dari besar ke kecil atau sebaliknya?
Ada beberapa algoritma yang dapat digunakan untuk mengurutkan
sekumpulan bilangan, antara lain bubble sort, selection sort, shell sort, quick
sort, dan lain-lain. Pada buku ini kita akan membahas satu algoritma yaitu
bubble sort. Meskipun kinerjanya tidak sebaik algoritma yang lain, algoritma ini
mudah dimengerti dan banyak digunakan. Perhatikan contoh berikut.



Flowchart Keterangan

- I adalah variabel counter
sekaligus indeks
- N adalah batas atas dari indeks
- Bil[I] adalah nama variabel array
yang berisi bilangan
- A adalah bilangan yang kita cari
Gambar 5.22. Flowchart untuk pencarian bilangan.

Rekayasa Perangkat Lunak 125

Contoh 5.24. Pengurutan dengan bubble sort.
Misalkan sebuah variabel array dengan nama Bil yang terdiri dari 5 elemen yang
masing-masing berisi bilangan "5 1 4 2 8". Urutkan dari mulai nilai terkecil
sampai ke yang paling besar.
Penyelesaian:
Kita akan menggunakan metode bubble sort untuk mengurutkan array ini.
Bubble sort dilakukan dengan cara membandingkan dua bilangan yang
berurutan letaknya. Jika urutan letaknya benar maka dilanjutkan dengan
membandingkan dua bilangan berikutnya. Jika tidak maka tukar letak dari
dua bilangan tersebut.
Marilah kita terapkan algoritma ini. Perhatikan tabel array berikut. Kondisi
awal adalah pada posisi J = 0. Pertama kita bandingkan antara Bil[0]
dengan Bil[1]. Bil[0] = 5 sedangkan Bil[1] = 1. Berdasarkan aturan bubble
sort, isi dari Bil[0] tidak sesuai letaknya karena lebih besar dari isi Bil[1].
Sehingga kita perlu menukar isi dari dua elemen array ini. Sehingga Bil[0]
= 1 dan Bil[1] = 5 (perhatikan baris pada J = 1). Langkah berikutnya kita
membandingkan Bil[1] dengan Bil[2]. Bil[1] = 5 dan Bil[2] = 4, sehingga
kembali kita harus menukar isi dari elemen ini (perhatikan baris J = 2). Hal
ini terus dilakukan sampai pada perbandingan Bil[3] dengan Bil[4].
J Bil[0] Bil[1] Bil[2] Bil[3] Bil[4]
0 5 1 4 2 8
1 1 5 4 2 8
2 1 4 5 2 8
3 1 4 2 5 8
4 1 4 2 5 8

Pada posisi akhir dari tabel di atas, kita lihat bahwa bilangan belum terurut
sepenuhnya. Karena kita baru menggunakan satu kali putaran dengan
Bil[0] sebagai patokan. Kita akan lakukan perbandingan lagi, namun
dengan Bil[1] sebagai patokan. Hal ini karena Bil[0] pasti sudah berisi
bilangan paling kecil. Sehingga tabel baru kita buat seperti berikut.
J Bil[0] Bil[1] Bil[2] Bil[3] Bil[4]
1 1 4 2 5 8
2 1 2 4 5 8
3 1 2 4 5 8
4 1 2 4 5 8

Pada posisi tabel di atas, sebenarnya urutan bilangan sudah benar, tapi
algoritma belum berhenti karena algoritma belum memeriksa putaran yang
berikutnya. Sehingga diperlukan dua putaran lagi dengan dengan dasar
masing-masing pembanding adalah Bil[2] dan Bil[3]. Kedua tabel tersebut
adalah sebagai berikut.
126 Rekayasa Perangkat Lunak

J Bil[0] Bil[1] Bil[2] Bil[3] Bil[4]
2 1 2 4 5 8
3 1 2 4 5 8
4 1 2 4 5 8

J Bil[0] Bil[1] Bil[2] Bil[3] Bil[4]
3 1 2 4 5 8
4 1 2 4 5 8

Kalau digambarkan dalam bentuk flowchart akan tampak seperti pada
Gambar 5.23.


5.4. OPERASI FILE
File seringkali digunakan untuk menyimpan data agar data tidak hilang.
Data atau yang ada dan dihasilkan pada program akan hilang ketika program
diakhiri, sehingga file digunakan untuk menyimpan data tersebut. Ada dua jenis
file yaitu file program dan file data. File program berisi kode-kode program
sedangkan file data hanya berisi data. File data terdiri dari dua jenis yaitu file
data berurutan (sequential data file) dan file data acak (random-access data file).
Perbedaan utama dari kedua jenis file data ini adalah dapat dilihat pada tabel
berikut.

Gambar 5.23. Flowchart untuk pengurutan bilangan.

Rekayasa Perangkat Lunak 127


File data berurutan File data acak
- Record atau baris data harus
dibaca berurutan mulai dari yang
pertama
- Panjang field untuk setiap record
tidak perlu sama
- Pengubahan serta penambahan
record tertentu sukar dilakukan
- Record tidak perlu dibaca
berurutan
- Panjang field untuk setiap
record harus sama
- Pengubahan serta penambahan
record lebih mudah dilakukan

5.4.1. Algoritma Penulisan Data pada File
Algoritma yang digunakan untuk penulisan data untuk file data berurutan
maupun acak secara prinsip sama, hanya modusnya yang berbeda. Berikut ini
adalah algoritma penulisan data dalam SE.
Open “modus”, , “nama file data”
Write , field 1, field 2, .. field n
Close buffer number
Modus O menunjukkan file ini dibuka untuk ditulisi.
Contoh 5.25. Contoh penerapan algoritma penulisan data.
Misalkan kita punya file data dengan nama “siswa.dat” yang field-nya adalah
nama siswa, alamat, nomor telepon. Maka untuk menuliskan data adalah
sebagai berikut.
Open “O”, #1, “siswa.dat”
Write #1, , ,
Close #1
Notasi #1 menunjukkan siswa.dat akan ditempatkan dalam buffer no 1.
Notasi ini harus sama digunakan di seluruh progam di atas. Artinya kalau kita
menempatkan suatu file dengan nomor buffer #1 maka ketika membuka,
menulis, membaca dan menutup harus menggunakan notasi tersebut. Demikian
juga bila kita menempatkan pada buffer no #2.
5.4.2. Algoritma Pembacaan Data pada File
Algoritma membaca data algoritmanya hampir sama dengan menuliskan
data, tetapi modus yang digunakan tidak O tetapi I. I adalah input yang berarti
file data dibuka untuk dibaca datanya sebagai input. Berikut ini algoritmanya
dalam SE.
Open “modus”, , “nama file data”
While not EOF:
Input , field 1, field 2, ..
field n
Print field 1, field 2, .. field n
End while
Close buffer number 128 Rekayasa Perangkat Lunak

Pernyataan While Not EOF digunakan untuk memeriksa apakah sudah ada
pada baris terakhir dari data. Jika belum maka baris-baris data akan dibaca dan
dicetak sampai baris terakhir. Pernyataan input digunakan untuk mengambil
data dari file untuk dimuat ke dalam program. Sedangkan pernyataan print
digunakan untuk mencetak data ke layar komputer.
Contoh 5.26. Contoh penerapan algoritma penulisan data.
File data dengan nama “siswa.dat” seperti pada contoh 5.25 yang field-nya
adalah nama siswa, alamat, nomor telepon. Maka untuk membaca data adalah
sebagai berikut.
Open “I”, #2, “siswa.dat”
While not EOF:
Input #2, , ,
Print , ,
End while
Close buffer number

5.5. Ringkasan
• Variabel adalah tempat dimana kita dapat mengisi atau
mengosongkan nilainya dan memanggil kembali apabila dibutuhkan.
Setiap variabel akan mempunyai nama (identifier) dan nilai.
• Konstanta adalah variabel yang nilai datanya bersifat tetap dan
tidak bisa diubah.
• Tipe data adalah jenis data yang dapat diolah oleh komputer untuk
memenuhi kebutuhan dalam pemrograman komputer.
• Tipe data dapat dikelompokkan menjadi tipe data primitive dan tipe
data composite. Tipe data primitive terdiri dari numeric, character,
dan bolean. Sedangkan tipe data composite terdiri dari array,
record/struct, image, date time, subrange, enumerasi, obyek dan
variant.
• Algoritma adalah urutan langkah-langkah logis penyelesaian
masalah yang disusun secara sistematis. Algoritma harus benar dan
harus berhenti. Setelah berhenti, algoritma memberikan hasil yang
benar.
• Algoritma dapat ditulis dengan cara Structured English, Pseudocode
dan Flowchart.
• Struktur berurutan terdiri satu atau lebih instruksi. Tiap instruksi
dikerjakan secara berurutan sesuai dengan urutan penulisannya.
• Pada struktur percabangan, program akan berpindah urutan
pelaksanaan jika suatu kondisi yang disyaratkan dipenuhi.
• Struktur pengulangan terdiri dari dari kondisi pengulangan dan
badan pengulangan dan dapat dilakukan dengan For dan While.

Rekayasa Perangkat Lunak 129

• Array adalah struktur data yang menyimpan sekumpulan elemen
yang bertipe sama, setiap elemen diakses langsung melalui
indeksnya. Operasi pencarian pada array dapat dilakukan dengan
cara linear search sedangkan pengurutan dengan metode bubble
sort.
• File data ada yang bersifat urut dan ada yang acak. Metode
pembacaan dan penulisan dibedakan dari modusnya.

2 komentar:

  1. gan caranya nuat smk bhakti mulia tuyul rpl itu gmn gan dan lewat apa

    BalasHapus
  2. lebih baik lagi di sertai gambar bro

    BalasHapus