Anda di halaman 1dari 45

B A B 1PENDAHULUAN

Belajar bagaimana membuat program merupakan sesuatu hal yang sangat menarik.
Berdasarkan fakta, pemrograman merupakan gabungan antara seni dan ilmu pengetahuan yang
menarik minat hampir semua orang. Situasi ini merupakan sesuatu hal yang menguntungkan,
karena komputer sudah mulai memasuki ke banyak aspek kehidupan kita dan dalam masa
mendatang diperkirakan hampir semua orang akan membutuhkan pengertian dasar komputer.
Dilain pihak, banyak siswa pada saat pertama kali menghadapi perkuliahan pemrograman
dihinggapi perasaan takut dan segan. Menyadari hal ini, pada bab pertama, pembahasan
mengenai pemrograman riil akan dilakukan dengan cara yang berhati-hati. Pada bab ini sama
sekali tidak dituliskan sesuatu programpun. Membaca bab ini secara bertahap akan merupakan
modal yang sangat berguna, karena sekali konsep pada bab ini dapat dimengerti, maka ide dari
bab-bab yang akan datang akan lebih mudah ditangkap. Waktu yang dibutuhkan untuk
membaca Bab 1 ini, dapat juga digunakan untuk lebih mengenal komputer sebenarnya dalam
mempelajari pemrograman. Sehingga pada saat dicapai Bab 2, para siswa akan siap memulai
rancangan program yang pertama.

1.1 LATAR BELAKANG

Komputer merupakan penemuan yang relatip baru. Komputer yang pertama ditemukan pada
akhir dekade tahun 1930-an dan terutama ditujukan untuk pemanfaatan kegiatan militer serta
ilmu pengetahuan. Baru pada akhir dekade 1950-an, komputer mainframe digunakan secara
meluas dikalangan dunia usaha. Kemajuan teknologi pada dekade 1970-an memungkinkan
pengembangan komputer yang lebih kecil, lebih cepat dan lebih murah. Minikomputer dengan
harga yang wajar (pada saat itu) mulai digunakan dihampir semua sistem usaha kelas
menengah. Saat ini, microkomputer, atau personal komputer, yang berkemampuan sama
dengan komputer pertama untuk kepentingan militer telah banyak diperjual belikan dipasaran
bebas dan hampir setiap keluarga kelas menengah dapat memilikinya. Beberapa merk
komputer seperti IBM, Apple, DEC, HP dan TRS-80 menjadi merk-merk yang banyak dikenal
orang.
Selama masa sejarah diatas, berbagai bahasa pemrograman yang berbeda telah
dikembangkan untuk digunakan pada komputer diatas. (Bahasa pemrograman secara
sederhana merupakan bahasa yang digunakan untuk menuliskan prosedur yang
memerintahkan komputer untuk melaksanakan suatu perhitungan yang diinginkan). Dari
beberapa bahasa pemrograman yang telah dikembangkan, hanya ada beberapa saja yang masih
bertahan dan terus dikembangkan seperti Algol, Basic, Cobol, Fortran, dan Pascal. Bahasa
tersebut diatas merupakan contoh dari bahasa tinggi (high-level langguage) atau bahasa
prosedural. Untuk dapat memrogram komputer, paling sedikit kita perlu mempelajari satu dari
bahasa pemrograman diatas, karena semua komputer modern dapat dijalankan oleh bahasa
pemrograman tersebut. Walaupun begitu, masih ada komputer yang hanya diproduksi hanya
untuk dapat dipergunakan oleh suatu bahasa pemrograman tertentu saja.

1-1
Dengan begitu banyaknya komputer dan bahasa pemrograman yang ada, tentu saja akan
menimbulkan permasalahan apabila kita ingin mulai mempelajari bagaimana membuat
program. Dengan tanpa memperdulikan komputer macam apa yang akan digunakan, dapat
dipastikan dimana selalu akan muncul suatu komputer yang baru, hal yang samapun juga akan
dihadapi untuk bahasa pemrograman. Dari situasi ini, tampaknya akan sulit dalam menentukan
bagaimana memulai untuk membuat program. Tetapi ada beberapa fakta yang perlu diung-
kapkan.

Observasi 1. Untuk kepentingan pemrograman dalam bahasa prosedural, semua komputer


dapat dianggap sama.

Observasi 1 memberikan banyak kemudahan. Kecuali untuk suatu komputer yang khusus
(sangat jarang), dengan mempelajari bagaimana membuat program, kita dapat menjalankan
program tersebut, baik di komputer yang sangat mahal (superkomputer) maupun di komputer
yang relatip murah, malahan seringkali nama merk tidak menjadi halangan dalam menjalankan
program yang dirancang. Ini berarti, apabila kita belajar memrogram suatu komputer, maka
penulisan program untuk komputer lainnya dapat dilakukan dengan sangat mudah.

Observasi 2. Semua bahasa pemrograman prosedural memiliki kemiripan.

Sekali lagi, Observasi 2 sangat memudahkan kehidupan kita. Hal ini berarti, sekali kita
belajar membuat program, kita dapat mempelajari setiap bahasa pemrograman prosedural
lainnya dengan tanpa kesulitan. Bahasa pemrograman tidak sesulit bahasa percakapan, seperti,
Jerman, Prancis, atau Cina. Jika kita dapat berbahasa Jerman, hal ini tidak membantu kita
untuk dapat berbahasa Cina. Tetapi dengan mengetahui satu bahasa pemrograman, maka
dengan mudah dapat mengerti bahasa pemrograman lainnya.

Observasi 1 dan 2 memberikan peran yang sangat besar dalam penulisan buku ini.
Daripada memperhatikan penampilan berbagai macam komputer, maka hanya akan
didiskusikan beberapa konsep umum komputer yang dibutuhkan untuk kepentingan
pemrograman. Dan daripada merancang program dengan menggunakan salah satu bahasa
pemrograman yang ada, maka pemikiran awal dan perancangan pemecahan permasalahan
dilakukan dengan menggunakan 'model programming language (suatu bahasa pemrograman
yang sebenarnya tidak ada, tetapi dapat mencakup penampilan umum dari semua bahasa
pemrograman, mpl). Dengan cara ini kita tidak terikat pada suatu komputer dan bahasa
pemrograman tertentu, sehingga sekali kita mengerti model komputer umum dan mempelajari
pemikiran, perencanaan dan perancangan program dalam mpl, maka bagaimanapun macam
komputer serta bahasa pemrograman dimasa mendatang, kita siap untuk menghadapinya
dengan mudah.

Untuk menyimpulkan pemikiran diatas, terdapat empat pemikiran dasar yang harus
dimengerti agar dapat menangani permasalahan pemrograman dengan baik.

1-2
1. Model komputer. Suatu program dirancang dan dituliskan untuk dieksekusi pada
komputer. Untuk mengerti konsep dasar pemrograman, kita perlu mengerti terlebih dahulu
konsep dasar yang bersifat umum untuk semua komputer.
2. Rancangan program. Formulasi permasalahan dalam bentuk pernyataan sederhana
yang dapat dieksekusi komputer, merupakan langkah pertama dan langkah terpenting dalam
pemrograman. Hal ini membutuhkan pemikiran yang cermat dan biasanya setiap
permasalahan harus diurai dalam kumpulan bentuk yang lebih kecil dan sederhana, sehingga
metoda pemecahan permasalahannya harus dapat dibuktikan kebenarannya. Rancangan
program ini diselesaikan dalam mpl agar terhindar dari ketergantungan pada suatu bahasa
pemrograman tertentu.
3. Implementasi program. Setelah rancangan program diselesaikan, langkah berikutnya
adalah menuliskan program ini dalam suatu bahasa pemrograman aktual, sehingga kita perlu
mempelajari satu bahasa pemrograman aktual.
4. Eksekusi program. Sekali suatu program telah dituliskan dalam bahasa pemrograman
aktual, maka program tersebut harus dijalankan pada komputer riil.

Pada Bab ini akan dijelaskan suatu model komputer dan diperkenalkan beberapa
penampilan dasar dari mpl.

1.2 MODEL KOMPUTER

Komputer modern pada dasarnya merupakan suatu alat yang rumit. Untungnya, untuk dapat
mengerti pemrograman, hanya dibutuhkan pengertian yang sedikit dari cara kerja komputer
riil. Seluk-beluk komputer harus diberikan secara sederhana pada seorang programer;
komputer pada dasarnya harus dapat melaksanakan instruksi programer (dalam bentuk
program) dengan tanpa perlu mengetahui jaringan listrik komputer itu sendiri. Tetapi, untuk
mengerti pemrograman, kita perlu mengetahui rancangan dasar komputer. Hal ini akan
membantu kita untuk mengerti, misalkan, mengapa perintah sederhana , seperti, "cetak
pembayaran gaji bulan ini" yang memerintahkan komputer untuk menghitung dan mencetak
daftar gaji, atau "main catur" agar komputer dapat menjalankan permainan catur, tidak dapat
dilakukan, melainkan kita perlu memberikan usaha yang besar dalam perancangan program
untuk melaksanakan perintah sederhana diatas dengan menggunakan pernyataan sederhana.
Ide menjelaskan suatu alat yang rumit dalam terminologi sederhana dikenal sebagai
abstraksi. Disini, hanya akan dijelaskan beberapa tampilan komputer yang memberikan arti
penting bagi kita dan bagian lainnya akan diabaikan. Model komputer sebagai hasil abstraksi,
ditunjukan pada Gambar 1-1 dibawah ini. Komputer pada dasarnya mengandung prosesor,
store, alat input, dan alat output. Prosesor merupakan komponen pusat (utama) dari komputer,
dimana instruksi program dijalankan, atau dieksekusi. Store bertugas untuk menyimpan nilai
yang digunakan program. Alat input merupakan alat yang digunakan programer untuk
memasukan program beserta datanya, dan alat output adalah tempat dimana jawaban yang
dihasilkan program dicetak. Ke empat komponen diatas akan dijelaskan dibawah ini.

1-3
alat alat
prosesor
input output

store

GAMBAR 1-1. MODEL KOMPUTER

PROSESOR

Nama prosesor diturunkan berdasarkan fungsinya; berdasarkan instruksi yang dibuat


programer, prosesor memroses nilai data yang diberikan untuk menghasilkan nilai baru.
Seperti yang ditunjukan pada Gambar 1-2, prosesor memiliki beberapa unit berbeda untuk
melaksanakan pekerjaannya. Unit pertama adalah unit program, sebagai tempat penyimpanan
daftar instruksi (program). Terdapat unit lain untuk melakukan penjumlahan, pengurangan,
pengalian, pembagian dari dua nilai dan suatu unit yang bertugas untuk melakukan
pemangkatan, dan ahkirnya, terdapat satu unit untuk membandingkan dua nilai. Untuk saat ini,
kita hanya akan membahas lima unit aritmatik, yaitu, penjumlah, pengurang, pengali,
pembagi, dan pemangkat, sedangkan unit pembanding akan dikemukakan pada bagian lain.

Penjumlah

Pengurang

Pengali
Unit
Program
Pembagi

Pemangkat

Pembanding

GAMBAR 1-2 PROSESOR

Pertama-tama, perlu diperhatikan beberapa operasi aritmatik yang dapat dilakukan oleh
prosesor: penjumlahan, pengurangan, pengalian, pembagian, dan pemangkatan. Kalkulator
termurahpun dapat melakukan lebih banyak operasi, misalkan, banyak kalkulator yang
memiliki fungsi akar. Kalau demikian, apa kelebihan komputer? Tentu saja ada, dimana hal ini
merupakan isi dari buku. Kita harus belajar bagaimana memrogram komputer untuk
melakukan pekerjaan rumit berdasarkan aritmatik sederhana serta operasi pembanding yang
dapat dilakukan oleh prosesor. Apabila kita membutuhkan suatu perhitungan baru, sebagai
1-4
contoh, merata-ratakan suatu daftar bilangan, maka kita harus merancang dan menuliskan
suatu rutin untuk melaksanakan pekerjaan diatas berdasarkan aritmatik sederhana yang
tersedia.
Dengan kata lain, kita tidak dapat melakukan perintah "hitung daftar gaji" atau "lakukan
permainan catur" kepada komputer, karena prosesor terlalu sederhana untuk melakukan hal
ini. Di dalam komputer, tidak tersedia suatu rangkaian atau unit yang dapat menghitung daftar
gaji ataupun yang dapat menggambarkan gerakan permainan catur. Karena itu, kita harus
merancang dan menulis program berdasarkan operasi sederhana dari penjumlahan,
pengurangan, pengalian, pembagian, pemangkatan, serta pembandingan antara dua nilai untuk
melaksanakan pekerjaan kita.
Kita dapat merancang prosedur baru dengan jumlah yang tidak terbatas untuk dijalankan
pada komputer. Dilain pihak, jumlah fungsi yang dapat dijalankan oleh kalkulator sangat
terbatas, tergantung pada kunci yang dikandungnya (tentu saja hal ini tidak mencakup
programmable calculator yang kelengkapannya mendekati komputer). Hal ini yang
membedakan komputer dengan kalkulator. Tujuan kita adalah untuk memperluas kemampuan
komputer dengan merancang dan menuliskan program berdasarkan operasi elementer yang
tersedia pada prosesor. Hal ini merupakan proses pemrograman.
Untuk dapat mengerti bagaimana komputer diprogram, kita harus melihat bagaimana
bekerjanya unit aritmatik dalam prosesor. Prosesor menggunakan ke lima unit aritmatik untuk
mengevaluasi ekspresi aritmatik. Sebagai contoh, ekspresi aritmatik 2 + 2 dievaluasi oleh
penjumlah untuk menghasilkan 4. Operator + menginstruksikan prosesor untuk memasukan
dua nilai diantara tanda + ke unit penjumlah untuk menghitung hasilnya. Operator lainnya
bekerja dengan cara yang sama. Table 1-1 memberikan daftar operator yang dikenal dan dapat
diproses oleh prosesor. Tanda + dan - sudah kita kenal dengan baik, sedangkan tanda lainnya
mungkin masih membingungkan. Tanda * digunakan sebagai tanda pengali dan bukan tanda x,
karena tanda x tidak akan dapat dibedakan dengan huruf x. Simbul pembagi digunakan /,
karena tanda ini akan memungkinkan kita menuliskan suatu pembagian dalam satu baris,
sebagai contoh,

1
1/2 dari pada -
2

Simbul pemangkat digunakan dengan alasan yang sama; sehingga 103 dapat dituliskan
sebagai 10 3 dalam satu baris.

TABEL 1-1 OPERATOR ARITMATIK

1-5
+ Penjumlah
- Pengurang
* Pengali
/ Pembagi
Pemangkat

____________________________________________________________________________

Contoh 1.1 Tabel 1-2 menunjukan beberapa eskspresi matematis dimana nilai-nilainya
dihitung oleh unit aritmatik prosesor.

TABEL 1-2 EKSPRESI ARITMATIK DAN NILAI-NILAINYA

Nilai Nilai
Ekspresi Hasil hitungan Ekspresi Hasil hitungan

3+5 8 -2 * 3 -6
5-3 2 -2 * -3 6
3-5 -2 4/2 2
2 * 13 26 4 2 16
13 * 2 26 3.2 * 1.1 3.52
7/4 1.75 2 2 4

Ekspresi-ekspresi diatas dievaluasi persis seperti yang diharapkan. Perhatikan dimana prosesor
dapat membedakan simbul -, apakah merupakan "bilangan negatip" atau "pengurangan".
Sebagai contoh, ekspresi -2 * 3 pada tabel diatas, dievaluasi sebagai -6.
____________________________________________________________________________

Pada dasarnya, prosesor dapat memroses ekspresi aritmatik yang lebih rumit, seperti

2+3+4

yang dievaluasi oleh prosesor dan akan menghasilkan 9. Selama penjumlah hanya dapat
menjumlahkan dua nilai pada setiap saatnya, maka setiap operator + akan ditangani secara
terpisah: pertama, 2 ditambahkan pada 3 untuk mendapatkan 5, dan kemudian 5 ditambahkan

1-6
pada 4 untuk menghasilkan 9. Ekspresi yang lebih rumit ini dievaluasi prosesor dari kiri
menuju ke kanan. Apabila kita tidak menghendaki prosesor untuk mengevaluasi dari kiri ke
kanan maka dapat digunakan tanda kurung, sehingga prosesor akan lebih dahulu mengevaluasi
ekspresi didalam tanda kurung. Penulisan kembali ekspresi diatas menjadi

2 + (3 + 4)

akan menyebabkan prosesor lebih dahulu mengevaluasi ekspresi didalam tanda kurung, dalam
kasus ini, 3 ditambahkan pada 4 untuk mendapatkan 7 dan kemudian 2 ditambahkan pada 7
yang menghasilkan 9.
Penggunaan tanda kurung diatas tidak merubah hasil akhir dari kedua ekspresi. Tetapi,
seringkali, tanda kurung akan memberikan efek pada hasil dari suatu ekspresi. Perhatikan
ekspresi aritmatik dibawah ini

2+3*4

Apabila ekspresi ini dituliskan kembali menjadi

(2 + 3) * 4

maka, prosesor pertama kali akan menggunakan unit penjumlah pada 2 dan 3 untuk
menghasilkan 5; kemudian angka 5 dan 4 akan diproses oleh pengali untuk menghasilkan nilai
20. Dilain pihak, apabila ekspresi dituliskan sebagai
2 + (3 * 4)

3 dan 4 akan dikalikan untuk menghasilkan 12, dan kemudian 2 akan ditambahkan pada 12
untuk mendapatkan 14. Pada kasus ini, penggunaan tanda kurung secara berbeda, akan
menghasilkan nilai yang berbeda pula.
Prosesor memiliki aturan urutan yang akan dipatuhi pada saat mengevaluasi ekspresi
aritmatik. Pertama-tama akan dievaluasi ekspresi dalam tanda kurung. Ekspresi pemangkatan
yang merupakan ekspresi dengan tingkat prioritas tertinggi, akan dievaluasi kemudian.
Perkalian dan pembagian memiliki tingkat prioritas pengerjaan yang sama, persis setelah
pemangkatan. Akhirnya, penjumlahan dan pengurangan memiliki tingkat prioritas pengerjaan
yang sama, tetapi tingkat prioritasnya lebih rendah dari pada perkalian atau pembagian.
Apabila terdapat dua atau lebih operator dengan tingkat prioritas pengerjaan yang sama, maka
yang berada lebih di kiri akan dievaluasi terlebih dahulu. Tabel 1-3 menunjukan aturan urutan
pengerjaan prosesor dalam mengevaluasi ekspresi aritmatik.

TABEL 1-3 ATURAN URUTAN PENGERJAAN UNTUK EKSPRESI ARITMATIK

1-7
1. (,) ekspresi dalam tanda kurung dievaluasi terlebih dahulu; tanda kurung
terdalam memiliki prioritas.

2. pemangkatan merupakan ekspresi aritmatik dengan prioritas tertinggi.

3. *, / pengalian dan pembagian memiliki prioritas sama.

4. +, - penjumlahan dan pengurangan memiliki prioritas yang sama.

____________________________________________________________________________

Contoh 1.2 Ekspresi 3 + 2 - 1 diproses untuk menghasilkan nilai 4. Selama + dan - memiliki
prioritas yang sama, maka 3 dan 2 dijumlahkan terlebih dahulu untuk mendapatkan 5,
kemudian 1 akan dikurangkan untuk mendapatkan 4. Hal ini di ilustrasikan sebagai

3+2-1

5-1

4
____________________________________________________________________________

Bentuk grafis dari evaluasi suatu ekspresi dikenal sebagai peta evaluasi; dimana hal ini
merupakan suatu cara untuk memudahkan penjelasan tingkat evaluasi.
____________________________________________________________________________

Contoh 1.3 Peta evaluasi dari (3 + 2) * 2 / 5 adalah

(3 + 2) * 2 / 5

5 * 2/5

10 / 5

2
____________________________________________________________________________

Contoh 1.4 Peta evaluasi dari 2 * (3 + 7) / 2 adalah

1-8
2 * (3 + 7) / 2

2 * 10 / 2

20 / 2

10
____________________________________________________________________________

Satu-satunya bagian prosesor yang belum didiskusikan adalah unit pembanding. Hal
ini akan diungkapkan setelah kita mempelajari store.

STORE

Secara konseptual, store merupakan suatu alat sederhana untuk menyimpan nilai pada saat
prosesor mengeksekusi program. Store mengandung 'sel storage' secara serial seperti yang
ditunjukan pada Gambar 1-3. Setiap sel dalam store dapat menyimpan suatu nilai, seperti 25,

GAMBAR 1-3 STORE

-57.3, 0, atau 3.14159. Agar selalu dapat diketahui tempat penyimpanan suatu nilai tertentu,
maka setiap sel individu harus diberi nama, sehingga isi suatu sel dapat direferensikan
berdasarkan nama sel tersebut. Gambar 1-4 memperlihatkan nama serta isi beberapa sel.
Dalam gambar ini, nama sel 'cat' memiliki nilai 45. Dengan cara ini, sel storage aktual menjadi
jelas; nama sel merupakan identifikasi sel beserta isinya.

1-9
cat integer x riil y riil 45
-35.33
55.5

GAMBAR 1-4 SEL DENGAN NAMA SEL DAN NILAINYA

Perhatikan pula dalam Gambar 1-4, dimana salah satu nilai dalam selnya bersifat bilangan
bulat dan dua nilai lainnya mengandung tanda desimal. Secara nyata dalam komputer, kedua
tipe bilangan ini ditangani secara berbeda, karena itu kita harus berhati-hati dalam
membedakannya. Secara formal, bilangan bulat dikenal sebagai integer dan bilangan dengan
tanda desimal disebut sebagai riil. Bilangan pecahan seperti 1/4 tidak dikategorikan dalam
komputer, karena itu semua bilangan pecahan harus dituliskan dengan tanda desimal.

Instruksi Variabel

Sementara setiap sel memori dapat mengandung nilai integer atau riil, prosesor harus
mengehui setiap tipe nilai yang dikandung dalam sel storage sehingga operasi aritmatik atas
nilai-nilai tersebut dapat dilakukan dengan baik. Salah satu tugas programer adalah untuk
memberikan nama dan tipe sel storage yang akan digunakan. Hal ini dilakukan dengan
menggunakan instruksi variabel. Sebagai contoh, pernyataan dari nama dan tipe sel storage
dapat berupa

variabel
cat: integer
x, y: riil

Pada saat prosesor menghadapi instruksi ini, maka prosesor akan menamai tiga sel pertama
dalam storage sebagai cat, x, dan y. Nama sel cat hanya dapat menampung nilai integer,
sedangkan nama sel x dan y ditujukan untuk menampung nilai riil. Setelah memroses instruksi
variabel ini, prosesor menyiapkan store

cat integer x riil y riil

1 - 10
Penulisan integer dan riil dibelakang setiap sel storage menandakan tipe nilai yang dapat
dikandungnya. Nama sel cat, x, dan y disebut sebagai variabel, karena sel storagenya dapat
menampung nilai yang berbeda pada saat yang berbeda.
Contoh diatas mengilustrasikan beberapa hal yang harus diingat mengenai penggunaan
instruksi variabel.

• cat, x,dan y tidak memiliki nilai. Deklarasi variabel tidak menaruh nilai pada sel memori:
deklarasi variabel hanya memberi nama dan tipe nilai yang dapat ditampung oleh sel
tersebut.
• Nama variabel dapat dipilih secara sembarang, tetapi pemilihan nama yang merefleksikan
arti dari nilai yang akan disimpan, akan sangat membantu.
• Walaupun penggunaan instruksi variabel ini menyebabkan cat ditempatkan pada sel
pertama, x pada sel kedua, dan y pada sel ketiga, sebenarnya secara nyata penempatan
tersebut tidak perlu diketahui. Yang penting adalah, prosesor tahu lokasi sel untuk setiap
nama yang ditetapkan, sehingga kita dapat mereferensikan suatu sel berdasarkan namanya.
• Pada setiap rutin yang ditulis, instruksi variabel perlu digunakan untuk menetapkan nama
dan tipe dari semua sel storage yang akan digunakan. Pada saat rutin selesai dieksekusi,
nama, tipe, dan nilai dari sel storage yang dinyatakan dalam rutin akan "hilang", sehingga
sel storage siap untuk menerima nama, tipe dan nilai baru, ketika suatu rutin baru
dieksekusi.

Pernyataan Penugasan

Untuk menugaskan suatu nilai pada sel storage yang telah dipersiapkan oleh instruksi variabel,
dapat digunakan pernyataan penugasan. Sebagai contoh, pernyataan penugasan

cat  20

menugaskan nilai 20 pada sel storage cat. Dengan cara yang sama, pernyataan

y  3.14159

akan menaruh nilai 3.14159 pada nama sel y. Dalam mengeksekusi pernyataan penugasan,
prosesor akan mengambil nilai disebelah kanan tanda  dan menyimpannya pada sel yang
namanya terdapat di sebelah kiri tanda . Setelah kedua pernyataan penugasan diatas
dieksekusi, storenya akan tampak

cat Integer x Riil y Riil 20

3.14159

1 - 11
Perhatikan dimana x tidak memiliki nilai: x disebut tidak terdefinisi. (Langsung setelah
instruksi variabel dieksekusi, semua nama sel yang baru akan memiliki nilai tidak terdefinisi,
karena, seperti yang telah diungkapkan, instruksi variabel hanya menugaskan nama, bukan
nilai, pada sel).
Pernyataan penugasan memberikan fleksibilitas yang tinggi. Kita dapat memberikan suatu
nilai pada sel storage yang akan dipergunakan dalam penghitungan. Suatu saat, nilai dalam sel
storage tadi secara mudah dapat dirubah dengan menuliskan pernyataan penugasan baru.
Sebagai contoh, apabila store tampak seperti yang terakhir dan dituliskan pernyataan
penugasan baru

cat  -30

maka store akan tampak

cat Integer x Riil y Riil -30

3.14159

Suatu pertanyaan alamiah mengenai penggunaan pernyataan penugasan adalah; Apa yang
terjadi apabila kita tugaskan suatu nilai riil pada suatu sel integer? atau Apa yang terjadi
apabila kita menugaskan nilai integer pada suatu sel riil? Pada kasus pertama, ketika prosesor
menangani pernyataan penugasan seperti

cat  12.721

Prosesor hanya mengenal nilai integer untuk variabel cat, sehingga nilai 12.721 akan
dibulatkan menjadi 12 dan 12 akan disimpan pada nama sel cat. Dengan perkataan lain,
apabila nilai riil akan disimpan pada sel integer, maka prosesor hanya akan mengambil nilai
bilangan bulatnya dan membuang bilangan di belakang tanda desimal. Prosesor tidak
membulatkan nilai. Apabila nilai integer ditugaskan pada sel riil, maka dengan mudah
prosesor akan menambahkan titik desimal di belakang bilangan integer sebelum
menyimpannya dalam sel riil. Sebagai contoh,

x  25

1 - 12
akan menyebabkan 25.0 disimpan pada x. Sehingga, eksekusi dari dua pernyataan penugasan

cat  12.721
x  25

akan menghasilkan store

cat Integer x Riil y Riil 12


25.0
3.14159

Walaupun nilai dalam store dapat dirubah, sekali nama dan tipe sel ditetapkan pada instruksi
variabel, maka tipe dan nama sel tidak dapat dirubah.
Pernyataan penugasan pada dasarnya lebih fleksibel dari pada apa yang telah diberikan
pada contoh. Kita dimungkinkan untuk menuliskan pernyataan ini dalam bentuk

variabel  ekspresi aritmatik

dimana nama variabel di kiri tanda  merupakan variabel yang telah dinyatakan dalam
instruksi variabel dan di sebelah kanan tanda  kita dapat menuliskan setiap ekspresi
aritmatik. Sebagai contoh, setelah x dinyatakan bertipe riil, kita dapat menuliskan instruksi

x  (3.0 + 5.0 + 7.0)/2.0

Prosesor pertama kali akan mengevaluasi ekspresi

(3.0 + 5.0 + 7.0)/2.0

untuk mendapatkan 7.5, kemudian 7.5 disimpan pada x. Peta evaluasi dari pernyataan
penugasan ini akan tampak

x  (3.0 + 5.0 + 7.0)/2.0

x  (8.0 + 7.0)/2.0

x  15.0/2.0

x  7.5
1 - 13
7.5 disimpan pada x

Apabila store mengandung nilai-nilai seperti yang ditunjukan terakhir kali, maka setelah
prosesor selesai mengeksekusi pernyataan penugasan diatas, store akan mengandung

cat integer x riil y riil 12


7.5
3.14159

Apabila ekspresi sebelah kanan dari pernyataan penugasan menghasilkan bilangan riil, tetapi
variabel di sebelah kiri memiliki tipe integer, maka bilangan riil tersebut akan dihilangkan
tanda dan nilai desimalnya sebelum disimpan pada variabelnya. Sedangkan apabila hasil dari
ekspresi aritmatik merupakan nilai integer dan akan disimpan pada variabel riil, maka pada
bilangan integer tersebut akan ditambahkan tanda desimal.
Pertanyaan lain yang mungkin timbul adalah: Apa yang akan terjadi apabila nilai integer
dan riil digabungkan dalam ekspresi aritmatik di sebelah kanan tanda ? Contoh dari situasi
ini

x  7 / 4 * 3.2

Dalam komputer dan mpl yang dikembangkan, setiap operasi diasumsikan akan menghasilkan
kemungkinan jawaban yang paling teliti. Karena itu, peta evaluasi dari ekspresi diatas adalah

x  7 / 4 * 3.2

x  1.75 * 3.2

x  5.6

5.6 disimpan pada x

Sebagai hasil dari pernyataan penugasan diatas, store akan tampak

cat integer x riil y riil 12


5.6
3.14159
1 - 14
Hal ini memberikan hasil yang berbeda antar berbagai bahasa pemrograman aktual.
Dalam beberapa bahasa, hasil dari pembagian dua bilangan integer akan langsung dicari
bilangan integernya, dalam contoh diatas, 7 / 4 akan menghasilkan 1 dan bukan 1.75. Karena
itu apabila kita menggunakan suatu bahasa pemrograman tertentu, perlu diperhatikan
bagaimana ekspresi diatas ditangani. Apabila kita tidak yakin, cara terbaik adalah jangan
mencampurkan bilangan integer dengan bilangan riil dalam suatu ekspresi aritmatik.
Ekspresi aritmatik juga dapat mengandung nama sel (variabel). Sebagai contoh, apabila
store tampak seperti diatas dan prosesor mengeksekusi pernyataan

yx*3

maka 16.8 akan disimpan pada y. Prosesor pertama-tama akan mensubstitusi x yang terdapat
pada ekspresi aritmatik dengan nilai x pada sel memorinya dan kemudian akan melakukan
penghitungan. Peta evaluasi dari pernyataan penugasan diatas, adalah

yx*3

y  5.6 * 3

y  16.8

16.8 disimpan pada y

Storenya akan tampak

cat integer x riil y riil 12


5.6
16.8

Selama ekspresi disebelah kanan tanda  dievaluasi sebelum hasilnya disimpan dalam
nama variabel sebelah kiri, pernyataan penugasan dibawah inipun dapat dituliskan

1 - 15
cat  cat + 1

Disini variabel cat muncul di kedua belah tanda . Hal ini dibaca sebagai "Ambil nilai
terakhir dalam cat, tambahkan 1, dan tempatkan hasilnya pada cat." Peta evaluasi dari
pernyataan penugasan diatas adalah

cat  cat + 1

cat  12 + 1

cat  13

13 disimpan pada cat

Sekarang store akan tampak

cat integer x riil y riil 13


5.6
16.8

Tipe pernyataan penugasan seperti diatas sering dipergunakan untuk keperluan 'menghitung'.
Apabila untuk alasan tertentu kita menggunakan suatu program untuk menghitung jumlah cat,
maka hal ini dapat dilakukan dengan pertama-tama menetapkan cat sama dengan 0.

cat  0

Kemudian dituliskan perintah

cat  cat + 1

disaat program kita menghitung tambahan 1 pada cat. Pada akhir program, variabel cat akan
mengandung jumlah cat yang dihitung.

____________________________________________________________________________

Contoh 1.5 Dengan pernyataan variabel

variabel
rata: riil
nilai1, nilai2, nilai3, nilai4: integer

dan pernyataan penugasan

1 - 16
nilai1  75
nilai2  100
nilai3  88
nilai4  95

akan menyebabkan store tampak seperti

rata riil
nilai1 integer nilai2 integer 75 nilai3
integer nilai4 integer Nilai1, 100 nilai2,
nilai3, dan nilai4 memiliki nilai sebagai
88
akibat dari pernyataan penugasan diatas,
95
tetapi rata belum terdefinisi. Apabila
kita menginginkan rata-rata dari empat
nilai ditugaskan pada variabel rata,
maka hal ini dapat dilakukan dengan pernyataan

rata  (nilai1 + nilai2 + nilai3 + nilai4) / 4

Peta evaluasi untuk pernyataan penugasan diatas adalah

rata  (nilai1 + nilai2 + nilai3 + nilai4) / 4

rata  (75 + 100 + 88 + 95) / 4

rata  (175 + 88 + 95) / 4

rata  (263 + 95) / 4

rata  358 / 4

rata  89.5

89.5 disimpan pada rata

1 - 17
Setelah prosesor mengeksekusi pernyataan penugasan diatas, storenya akan tampak

rata riil 89.5


nilai1 integer nilai2 integer 75 nilai3
integer nilai4 integer 100
88
95

Perhatikan pula pemilihan nama variabel. Biasakan memilih nama


variabel untuk mewakili apa yang akan dihitung. Misalkan untuk menghitung harga rata-rata
diatas, digunakan pernyataan dibawah ini, dimana nama-nama tersebut tidak memiliki arti apa-
apa. Nama variabel tidak mempunyai arti bagi prosesor: prosesor tidak mengetahui atau tidak
perduli dengan nilai yang akan ditempatkan pada nama variabel. Dari pernyataan dibawah ini,
prosesor akan menghitung nilai yang sama seperti untuk variabel rata diatas

variabel
adon: riil
jagung, x, r2d3, cukai: integer
jagung  75
x  100
r2d3  88
cukai  95
adon  (jagung + x + r2d3 + cukai) / 4

Tetapi, kita sebagai manusia tidak memiliki gambaran tentang apa yang baru saja dihitung
berdasarkan penulisan pernyataan diatas. Apabila kita yang menuliskan program terxebut,
dalam beberapa minggu, kita sendiri akan lupa dengan apa yang kita maksudkan. Hal ini
menekankan prinsip penting pemrograman: Ketika memilih nama variabel, pilihlah nama yang
memberikan gambaran tentang apa yang akan dihitung.

____________________________________________________________________________

Contoh 1.6 Dengan pernyataan

variabel
luas, radius: riil

radius  23.2

store akan ditetapkan sebagai

1 - 18
luas riil radius riil
23.2

Apabila kita tuliskan pernyataan

luas  3.14 * radius 2

storenya akan tampak

luas riil radius riil 1690.0736


23.2

Selama pemangkatan memiliki prioritas lebih tinggi dari pada perkalian, peta evaluasi dari
pernyataan diatas adalah

luas  3.14 * radius 2

luas  3.14 * 23.2 2

luas  3.14 * 538.24

luas  1690.0736

1690.0736 ditugaskan pada luas


____________________________________________________________________________

Sebagai kesimpulan, store merupakan kumpulan sel untuk menyimpan (mengingat) nilai-
nilai yang dibutuhkan untuk penghitungan di dalam prosesor. Sel dinamakan dengan pernyatan
variabel; nilai dalam sel direferensikan berdasarkan nama sel. Sel storage biasanya dianggap
sebagai variabel, karena apabila diinginkan maka nilai dalam sel dapat dirubah.

PROSESOR - UNIT PEMBANDING

1 - 19
Kita telah mengerti dengan lebih baik bagaimana komputer menjalankan operasi aritmatik.
Prosesor memiliki kemampuan untuk mengevaluasi ekspresi aritmatik berdasarkan ke lima
unit aritmatik yang dimilikinya. Nilai hasil perhitungan ditugaskan pada sel storage setelah
prosesor mengeksekusi pernyataan penugasan. Kita mungkin berpikir hanya ini semua yang
dibutuhkan agar sebuah komputer memiliki kemampuan yang sangat besar: sebagai
programer, kita dapat mengkombinasikan berbagai pernyataan penugasan untuk menghitung
semua yang kita inginkan - luas segi empat, rata-rata nilai siswa, dan sebagainya. Hal ini tentu
saja tidak benar. Pada dasarnya komputer hampir tidak berguna apabila tidak mengandung unit
pembanding. Dalam semua program yang rumit, selalu dibutuhkan operasi pembandingan.
Kita harus memutuskan apakah nilai rata-rata harus lebih besar dari suatu nilai agar dapat
memutuskan kelulusan siswa; untuk mendapatkan nilai pajak, kita harus memutuskan
penghasilan mana yang belum dikenakan pajak. Setiap perhitungan diatas akan dibutuhkan
pembandingan nilai. Hal ini dilakukan oleh unit pembanding dari prosesor.

____________________________________________________________________________

Contoh 1.7 Ingat contoh sebelumnya, dimana harga rata-rata dari empat bilangan dihitung
dengan pernyataan penugasan
rata  (nilai1 + nilai2 + nilai3 + nilai4) / 4

Storenya tampak

rata riil 89.5


nilai1 integer nilai2 integer 75 nilai3
integer nilai4 integer 100
88
95

Sekarang kita ingin mengetahui apakah nilai rata-rata hitungan


merupakan batas nilai lulus.
Apabila sebelumnya telah diputuskan dimana nilai kelulusan adalah diatas atau sama dengan
65.0, maka kita dapat memerintahkan prosesor untuk memutuskan apakah rata lebih besar
atau sama dengan 65.0 dengan mengevaluasi ekspresi

rata  65.0

Cara kerja prosesor adalah sebagai berikut: nilai rata, nilai 65.0, dan simbul lebih besar atau
sama dengan () diberikan pada unit pembanding. Unit pembanding kemudian akan mencari
apakah nilai rata-rata lebih besar atau sama dengan 65.0. Peta evaluasi dari ekspresi ini adalah

rata  65.0

1 - 20
89.5  65.0

true

Pada kasus ini unit pembanding akan mengembalikan nilai true, karena 89.5 memang lebih
besar atau sama dengan 65.0.
Apabila nilai rata-rata adalah 57.3 dan bukan 89.5, maka peta evaluasi untuk

rata  65.0

menjadi

rata  65.0

57.3  65.0

false

Pada kasus ini, unit pembanding akan mengembalikan nilai false karena 57.3 tidak lebih besar
atau sama dengan 65.0.
____________________________________________________________________________

Tanda  pada contoh diatas, disebut sebagai operator relasi, dan

rata  65.0

disebut sebagai ekspresi terkondisi. Ekspresi terkondisi sederhana memiliki bentuk

nilai1 operator relasi nilai2

dimana nilai1 dan nilai2 dapat berupa variabel atau konstanta. Evaluasi ekspresi terkondisi
oleh unit pembanding akan menghasilkan true atau false, karena nilai1 akan sama dengan
nilai2 (true) atau tidak (false).
Operator relasi yang dapat diproses oleh unit pembanding diberikan pada Tabel 1-4. Kita
dapat membandingkan dua nilai untuk melihat apakah nilai pertama lebih kecil dari, lebih
kecil dari atau sama dengan, sama dengan, tidak sama dengan, lebih besar dari, atau lebih
besar dari atau sama dengan nilai kedua.

TABEL 1-4 OPERATOR RELASI

1 - 21
< lebih kecil dari
 lebih kecil dari atau sama dengan
= sama dengan
 tidak sama dengan
> lebih besar dari
 lebih besar dari datau sama dengan

____________________________________________________________________________

Contoh 1.8 Asumsikan store mengandung nilai-nilai dibawah ini

cat integer dog integer

Kemudian ekspresi

cat  13

memiliki peta evaluasi

cat = 13

13 = 13

true

Ekspresi

100 < dog

memiliki peta evaluasi

100 < dog

100 < 25

1 - 22
false

Ekspresi

dog  cat

memiliki peta evaluasi

dog = cat

25 = 13

false
___________________________________________________________________________

Ekspresi yang dievaluasi oleh unit pembanding disebut ekspresi terkondisi, karena evaluasi
dari ekspresi ini menghasilkan true atau false, tergantung pada kondisi (nilai) dari variabel dan
konstanta dalam ekspresi.
Ekspresi terkondisi dapat mengandung lebih dari satu operator relasi.

___________________________________________________________________________

Contoh 1.9 Asumsikan kembali dimana store tampak

rata riil 89.5


nilai1 integer nilai2 integer 75 nilai3
integer nilai4 integer 100
88
95

Apabila kita ingin menugaskan nilai huruf pada harga rata-rata yang
telah dihitung dan tidak hanya memutuskan apakah nilai ini merupakan nilai kelulusan (contoh
1.7), maka situasinya akan lebih rumit. Sebagai contoh, misalkan nilai huruf B akan diberikan
apabila nilai rata-rata paling sedikit 85.0 tetapi tidak sama dengan atau lebih besar dari 92.0.
Dengan perkataan lain, kita akan menguji kondisi dimana 85.0 lebih kecil dari atau sama
dengan rata dan rata lebih kecil dari 92.0. Secara matematis, hal ini dapat dituliskan sebagai

85.0 < rata < 92.0

1 - 23
Tetapi, ekspresi ini tidak dapat dievaluasi oleh unit pembanding, karena unit ini hanya dapat
menangani dua nilai pada satu saat. Apabila kita coba membuat peta evaluasi dari ekspresi ini
untuk melihat bagaimana unit pembanding memrosesnya, akan didapatkan

85.0 < rata < 92.0

85.0 < 89.5 < 92.0

true < 92.0

???

Selama unit pembanding hanya dapat menangani dua nilai pada satu saat, unit ini pertama-
tama akan mengevaluasi dua niali pertama. Hal ini akan menghasilkan ekspresi

true < 92.0

yang sama sekali tidak logis: true sama sekali tidak dapat dihubungkan dengan 92.0.
Untuk menuliskan ekspresi terkondisi ini dalam bentuk yang lebih baik, maka
dibutuhkan metoda lain. Perlu diingat bagaimana pernyataan ini diekspresikan dalam bentuk
kalimat: “85.0 lebih kecil dari atau sama dengan rata dan rata lebih kecil dari 92.0."
Pernyataan ini memiliki dua bagian yang dapat dipisahkan

85.0 lebih kecil atau sama dengan rata

and

rata lebih kecil dari 92.0

Pada kasus ini, and disebut sebagai operator logis, karena (secara logis) apabila ekspresi
pertama benar dan ekspresi kedua benar, maka keseluruhan ekspresi bersifat benar. Karena itu,
agar rata berada diantara 85.0 dan 92.0, kedua ekspresi harus benar. Tetapi, apabila salah
satu /kedua ekspresi salah, maka (secara logis) keseluruhan ekspresi bersifat salah. Ekspresi
diatas dapat ditulis ulang sebagai

(85.0 < rata) and (rata < 92.0)

dalam terminologi operator relasi. Ekspresi ini sekarang dapat dievaluasi oleh unit pembanding
sebagai

1 - 24
(85.0 < rata) and (rata < 92.0)

85.0 < 89.5 and (89.5 < 92.0)

true and (89.5 < 92.0)

true and true

true

Perhatikan pada saat and dieksekusi, unit pembanding tidak "ingat" lagi dua ekspresi yang
sebelumnya, tetapi unit ini telah menghitung dimana kedua ekspresi tersebut bersifat benar.
Selama ekspresi pertama benar dan ekspresi kedua benar maka keseluruhan eksprsi tersebut
benar. Hasil yang dihitung oleh unit pembanding dari

true and true

adalah true.
Bagaimana apabila nilai rata adalah 96.3? Maka peta evaluasinya menjadi

(85.0 < rata) and (rata < 92.0)


(85.0 < 96.3) and (96.3 < 92.0)

true and (96.3 < 92.0)

true and false

false

Apabila paling sedikit nilai pada salah satu sisi dari and bersifat false, maka keseluruhan
ekspresi bersifat false.
____________________________________________________________________________

Contoh diatas menunjukan bagaimana ekspresi terkondisi ganda dapat dibentuk dengan
menggunakan operator logis and: dua ekspresi terkondisi yang digabungkan dengan and akan

1 - 25
dievaluasi sebagai true jika dan hanya jika kedua ekspresi terkondisi tersebut bersifat true.
Apabila salah satu atau keduanya bersifat false, maka keseluruhan ekspresi bersifat false. Hal
ini dapat diperlihatkan secara simbolis dengan menggunakan peta evaluasi. Apabila eks1 dan
eks2 merupakan ekspresi terkondisi, maka akan didapatkan

(eks1) and (eks2) (eks1) and (eks2)

true and true false and false

true false

(eks1) and (eks2) (eks1) and (eks2)

true and false false and true

false false

Ke empat peta evaluasi diatas menggambarkan semua kemungkinan situasi yang dapat
ditangani oleh operator logis and.
Operator logis lainnya yang dapat diproses oleh unit pembanding adalah or. Seringkali
kita tidak menginginkan kedua ekspresi terkondisi tersebut bersifat benar, tetapi mungkin kita
menginginkan hanya salah satu saja yang benar.

____________________________________________________________________________

Contoh 1.10 Misalkan suatu program dirancang untuk memroses catatan pasien untuk
seorang dokter. Dokter tersebut akan menerima suatu pesan yang akan dikirimkan pada para
orang tua yang memiliki anak dengan umur 5 dan 10 tahun dimana waktu untuk imunisasi
seorang anak telah tiba. Selama setiap data anak diproses, maka perlu ditanyakan (dalam
program) apakah umur seorang anak 5 atau 10 tahun? Apabila umur seorang anak 5 atau 10
tahun, maka pesan untuk imunisasi akan dikirimkan. Dalam terminologi ekspresi terkondisi,
dapat dituliskan sebagai

(umur = 5) or (umur = 10)

dimana variabel umur telah dideklarasikan sebelumnya dalam pernyataan variabel dengan cara

1 - 26
variabel
umur: integer

Apabila nilai umur adalah 10 (mis. data seorang anak yang sedang diproses berumur 10 tahun),
maka peta evaluasi untuk ekspresi ini adalah

(umur = 5) or (umur = 10)

(10 = 5) or (10 = 10)

false or (10 = 10)

false or true

true

Unit pembanding mengevaluasi keseluruhan ekspresi sebagai true, karena terdapat paling
sedikit satu dari ekspresi terkondisi sederhana disalah satu sisi or bersifat benar.
Apa yang terjadi apabila umur bernilai 7? Pada kasus ini peta evaluasinya menjadi

(umur = 5) or (umur = 10)

(7 = 5) or (7 = 10)

false or (7 = 10)

false or false

false

Disini, keseluruhan ekspresi dievaluasi sebagai false karena ekspresi terkondisi sederhana
yang pertama dan kedua tidak ada yang benar.
____________________________________________________________________________

Operator logis or dievaluasi setelah ekspresi terkondisi di kedua sisi or terlebih dahulu
dievaluasi. Apabila paling sedikit salah satu dari kedua ekspresi tersebut bersifat benar, maka

1 - 27
keseluruhan ekspresi akan dievaluasi true. Apabila kedua ekspresi dievaluasi sebagai false,
maka keseluruhan ekspresi akan bersifat false.
Apabila operator logis or diaplikasikan pada dua ekspresi terkondisi, maka terdapat empat
situasi yang mungkin terjadi. Apabila ekspresi pada kedua sisi or dievaluasi sebagai true,
maka keseluruhan ekspresi yang dihubungkan oleh or akan bersifat true (sebagai contoh, hal
ini dapat terjadi apabila kita ingin menguji apakah suatu bilangan sama dengan atau lebih
besar dari nol; maka jelas bilangan tersebut harus memenuhi kedua kondisi tersebut). Apabila
ekspresi dikedua sisi or dievaluasi sebagai false, maka keseluruhan ekspresi akan bersifat
false. Yang terakhir, ada dua situasi dimana ekspresi pada salah satu sisi (kanan atau kiri) or
bersifat false, maka keseluruhan ekspresi akan dievaluasi sebagai true. Peta evaluasi dibawah
ini memperlihatkan ke empat situasi diatas.

(eks1) or (eks2) (eks1) or (eks2)

true or true false or false

true false

(eks1) or (eks2) (eks1) or (eks2)

true or false false or true

true true

Operator logis terakhir yang seringkali dibutuhkan adalah not.


____________________________________________________________________________

Contoh 1.11 Dengan menggunakan contoh sebelumnya, misalkan karena suatu alasan
tertentu, surat akan dikirimkan pada semua pasien yang umurnya bukan 5 atau 10 tahun. Maka
untuk setiap data pasien, prosesor akan mengevaluasi ekspresi

not ((umur = 5) or (umur = 10))

Operator logis not ditempatkan dimuka ekspresi yang akan ditolak. Apabila umur dari pasien 7
tahun, maka peta evaluasinya

not((umur = 5) or (umur = 10))

1 - 28
not((7 = 5) or (7 = 10))

not(false or (7 = 10)

not(false or false)

not false

true

Dengan perkataan lain, adalah benar dimana 7 bukan 5 atau 10, sehingga keseluruhan ekspresi
akan dievaluasi sebagai true.
____________________________________________________________________________

Seperti yang ditunjukan pada contoh diatas, operator logis not menolak nilai dari ekspresi
terkondisi yang dihitung. not true adalah (secara logis) false, dan not false adalah true. Peta
evaluasi dari not berbentuk sederhana seperti yang ditunjukan dibawah ini

not(eks) not(eks)

not true not false

false true
Contoh diatas juga menunjukan
kepada kita dimana ekspresi
terkondisi dalam tanda kurung
dapat menampung ekspresi yang
panjang, termasuk operator logis
and, or, dan not. Tetapi ekspresi
terkondisi tersebut diatas sangat
jarang digunakan. Ekspresi
aritmatik juga dapat
dibandingkan.

____________________________________________________________________________

Contoh 1.12 Apabila suatu saat store tampak seperti

1 - 29
x integer y integer 5
7

kita dapat menulis ekspresi

x * y + 2 < 31 + x

yang akan dievaluasi oleh prosesor. Perhatikan dimana sebelum


x*y+2

dan

31 + x

dapat dibandingkan, nilai-nilainya harus dihitung terlebih dahulu. Peta evaluasi untuk ekspresi
diatas adalah

x * y + 2 < 31 + x

5 * 7 + 2 < 31 + 5

35 + 2 < 31 + 5

37 < 31 + 5

37 < 36

false

Pada saat ini, kita dapat membentuk peta urutan proses yang digunakan oleh bahasa
pemrograman dalam mengevaluasi semua ekspresi (lihat Tabel 1-5). Urutan proses diatas pada
dasarnya merupakan urutan yang umum digunakan dalam banyak bahasa pemrograman aktual,
tetapi apabila kita ingin menggunakan suatu bahasa pemrograman tertentu, perhatikan benar
urutan proses yang berlaku.

TABEL 1-5 PETA URUTAN PROSES LENGKAP

1 - 30
1. (,) ekspresi dalam tanda kurung dievaluasi pertama; tanda kurung
terdalam memiliki prioritas.

2. pemangkatan merupakan ekspresi aritmatik dengan prioritas tertinggi.

3. *,/ pengalian dan pembagian memiliki prioritas yang sama.

4. +,- penjumlahan dan pengurangan merupakan operasi aritmatik


dengan prioritas terendah.
5. <,<,> operator relasi dan logis memiliki prioritas sama.
>,=,=

Dari contoh maupun diskusi yang lalu, kita tahu dimana prosesor dapat menangani operasi
terkondisi dengan menggunakan unit pembanding. Pada awal bagian, telah pula ditekankan
bahwa operasi pembandingan merupakan bagian yang sangat penting dalam pemrograman.
Bagaimana menggunakan operasi terkondisi untuk melakukan pembandingan dalam suatu
program ?. Sebenarnya kita dapat menggunakannya dalam berbagai macam cara. Sebagai
contoh, pada Bab 3, kita akan belajar untuk menuliskan pernyataan seperti

if (umur=5) or (umur=10)
then {pernyataan-pernyataan yang akan dieksekusi
apabila kondisinya true} endif

Pernyataan if ini dapat dimengerti dengan mudah. Pada saat prosesor menemui pernyataan if,
maka prosesor pertama-tama akan memerintahkan unit pembanding untuk mengevaluasi
ekspresi terkondisi

(umur=5) or (umur=10)

Apabila evaluasinya true, maka prosesor akan mengeksekusi kelompok pernyataan di


belakang then. Selain itu, apabila hasil evaluasinya false, maka prosesor akan melewati
kelompok pernyataan di belakang then. Pernyataan if merupakan salah satu pernyataan untuk
mengendalikan eksekusi program, dimana akan kita pelajari pada Bab 3. Pernyataan
pengendali memberikan arti, "Apabila kondisi yang dinyatakan bersifat benar, maka kerjakan
kelompok pernyataan tertentu, selain itu lewati kelompok pernyataan tadi". Hal ini
memberikan cara kepada kita dalam mengarahkan prosesor untuk mengeksekusi suatu
kelompok pernyataan tertentu berdasarkan nilai dari variabel program.
Untuk menugaskan suatu nilai ekspresi terkondisi pada suatu variabel dapat pula
digunakan pernyataan penugasan. Tetapi, selama nilai dari ekspresi terkondisi hanya true atau
false, kita tidak dapat menggunakan variabel dengan tipe integer atau riil, karena itu kita
membutuhkan tipe variabel baru yang disebut truth value. Tipe variabel truth value hanya
dapat menyimpan dua nilai: true atau false.

1 - 31
____________________________________________________________________________

Contoh 1.13 Misalkan suatu saat store tampak seperti

umur integer 10
imunisasi truth value

Diasumsikan kita telah melakukan suatu proses yang menugaskan nilai 10 pada umur.
Variabel imunisasi belum terdefinisi. Kedua variabel umur dan imunisasi dinyatakan dalam
pernyataan

variabel
umur : integer
imunisasi : truth value

Apabila prosesor mengeksekusi pernyataan penugasan

imunisasi  (umur=5) or (umur=10)

maka imunisasi akan menyimpan nilai true dan store akan tampak

umur integer 10
imunisasi truth value true

Peta evaluasi dari pernyataan penugasan diatas adalah

imunisasi  (umur=5) or (umur=10)

imunisasi  (10=5) or (10=10)

imunisasi  false or (10=10)

imunisasi  false or true

imunisasi  true

true disimpan pada imunisasi

1 - 32
____________________________________________________________________________

ALAT INPUT DAN OUTPUT

Lihat kembali diagram model komputer terdahulu (Gambar 1.1). Komponen akhir yang akan
didiskusikan adalah perangkat input dan output. Perangkat ini memungkinkan prosesor
berhubungan dengan dunia luar. Nilai-nilai dapat dibaca melalui alat input dan disimpan
dalam sel storage oleh prosesor untuk dapat digunakan dalam perhitungan. Selain itu, nilai
yang berada dalam sel storage, seperti hasil perhitungan yang dilakukan oleh prosesor, dapat
dicetak oleh alat output. Operasi yang dilakukan oleh prosesor pada saat membaca suatu nilai
dari alat input dan menyimpannya dalam store disebut operasi input. Mencetak nilai dari sel
storage pada alat output disebut operasi output.

Alat Input

Pernyataan input mengarahkan prosesor untuk membaca nilai pada alat input dan
menyimpannya dalam lokasi storage.

____________________________________________________________________________

Contoh 1.14 Misalkan prosesor telah mengeksekusi pernyataan

variabel
luas, panjang, lebar : riil

dan menyebabkan store tampak

luas riil panjang riil lebar riil

Pada saat prosesor menghadapi pernyataan

input panjang, lebar

prosesor akan membaca dua nilai dari alat input. Nilai pertama akan ditugaskan pada variabel
panjang dan nilai kedua pada variabel lebar, sehingga apabila

5.3 dan 6.72

merupakan nilai-nilai pada alat input ketika pernyataan input dieksekusi oleh prosesor, maka
store akan tampak

1 - 33
luas riil panjang riil lebar riil
5.3
6.72
Kemudian apabila prosesor mengeksekusi pernyataan

luas  panjang * lebar

variabel luas akan bernilai 35.616 dan store akan tampak

luas riil panjang riil lebar 35.616 riil


5.3
6.72
Pada tahap ini, penggunaan pernyataan input akan sedikit
membingungkan. Tujuan pernyataan ini hanya untuk menugaskan suatu nilai pada sel storage,
apa perbedaannya dengan pernyataan penugasan ?. Perbedaannya sangat penting - pernyataan
input menjadikan program bersifat umum. Sebagai contoh, apabila penulisan program untuk
menghitung luas dilakukan dengan pernyataan

panjang  3.0
lebar  2.5
luas  panjang * lebar

maka program perlu dirubah setiap saat kita ingin menghitung luas persegi empat yang
berbeda ukurannya. Ini berarti kita perlu merubah pernyataan

panjang  3.0
lebar  2.5

dengan pernyataan lain , misalnya

panjang  7.2
lebar  7.1

Ada beberapa alasan mengapa merubah program seperti cara diatas kurang disukai;
membutuhkan waktu, sumber kesalahan manusia, dan yang terpenting adalah karena terdapat
cara lain yang lebih baik.
Perhatikan pada contoh sebelumnya, pada saat kita menggunakan pernyataan

input panjang, lebar


luas  panjang * lebar

1 - 34
Untuk menghitung luas persegi empat dengan panjang 3.0 dan lebar 2.5, kita hanya perlu
memberikan nilai 3.0 dan 2.5 pada alat input pada saat prosesor mengeksekusi program.
Apabila suatu saat ingin dihitung luas persegi empat dengan panjang 7.2 dan lebar 7.1, maka
program yang sama dapat digunakan kembali, tetapi nilai 7.2 dan 7.1 diberikan pada alat input.
Dengan perkataan lain, pernyataan input memungkinkan program kita digunakan untuk
beberapa kumpulan nilai dengan tanpa melakukan modifikasi program. Hal ini membuat
program bersifat
umum.
Selain membuat program bersifat umum, pernyataan input juga berlaku sama dengan
pernyataan penugasan. Apabila suatu nilai ditempatkan pada suatu variabel oleh pernyataan
input, maka nilai tersebut akan tetap dalam sel storage sampai dengan adanya pernyataan
penugasan atau input yang merubah nilai tersebut.

____________________________________________________________________________

Contoh 1.15 Misalkan store diorganisir oleh pernyataan

variabel
kucing, kambing: integer

untuk menghasilkan

kucing integer kambing integer

Kemudian pernyataan

input kambing, kucing

akan menyebabkan prosesor mengambil dua nilai yang diberikan pada alat input dan
menempatkan kedua nilai tersebut pada kambing dan kucing secara berurutan. Apabila kedua
nilai tersebut

5 25

maka setelah pernyataan input dieksekusi, storenya akan tampak

kucing integer kambing 25 integer


5

Selanjutnya, eksekusi dari pernyataan

kucing  kucing - kambing


1 - 35
akan merubah store menjadi

kucing integer kambing 20 integer


5

Eksekusi selanjutnya dari pernyataan

input kambing

akan mengakibatkan prosesor mengambil nilai selanjutnya pada alat input dan
menempatkannya pada kambing. Apabila nilainya 13, maka store akan tampak

kucing integer kambing 20 integer


13
____________________________________________________________________________

Sebagai kesimpulan, pernyataan input memiliki bentuk umum

input variabel1, variabel2, . . ., variabelN

dimana variabel1, variabel2, . . ., variabelN merupakan nama variabel yang telah dinyatakan
sebelumnya pada pernyataan variabel. Pada saat prosesor menghadapi pernyataan input
seperti diatas, prosesor akan mengambil nilai pertama pada alat input dan menyimpannya
dalam variabel1, nilai kedua dalam variabel2, dan seterusnya. Programer bertanggung jawab
atas kecukupan nilai pada alat input dan kesesuaiannya dengan tipe variabel yang akan dibaca.

Alat Output

Pernyataan output memerintahkan prosesor untuk mencetak pesan dan nilai dari suatu variabel
pada alat output. Pada situasi nyata, hal ini satu-satunya cara untuk melihat hasil perhitungan
dari program yang dikembangkan. Selama ini kita seolah-olah dapat melihat nilai variabel
dengan menggambarkan diagram store dan isi dari setiap sel storagenya. Pada komputer nyata,
hal ini tentu saja tidak dapat dilakukan. Biasanya kita hanya menginginkan nilai tertentu saja
yang tampak pada layar komputer ataupun yang dicetak diatas kertas. Pernyataan output
memungkinkan kita untuk melakukan hal tersebut diatas.

____________________________________________________________________________

Contoh 1.16 Misalkan suatu saat store tampak seperti

1 - 36
luas riil panjang riil lebar 7.5 riil
3.0
2.5
Apabila kita ingin mencetak nilai luas, maka digunakan pernyataan

output luas

Prosesor akan mencetak nilai dari sel storage yang bernama luas pada alat output, yaitu

7.5

Apabila kita menginginkan semua nilai dari luas, panjang, dan lebar, maka dapat dituliskan

output panjang, lebar, luas

Hasil cetakannya adalah

3.0 2.5 7.5


__________________________________________________________________________

Bentuk umum dari pernyataan output adalah

output variabel1, variabel2, . . ., variabelN

Hasil cetakan pada alat cetak akibat dari bentuk umum pernyataan output adalah

nilai1 nilai2 . . . nilaiN

dimana nilai1 adalah nilai variabel1, nilai2 dari variabel2, dan nilaiN dari variabelN.
Masih ada satu permasalahan dalam penggunaan pernyataan output diatas. Selama hanya
nilai dari variabel yang dicetak, kita tidak dapat menghubungkannya dengan arti variabel
tersebut. Hasil cetakan

3.0 2.5 7.5

tidak memberikan arti dari nilai tersebut. Mungkin saja kita berpikir bahwa apabila nilai-nilai
tersebut dicetak dengan

output panjang, lebar, luas

maka kita akan mengetahui dimana 3.0 adalah panjang, 2.5 lebar, dan 7.5 adalah luas. Hal ini
benar, tetapi kita harus melihat kembali pada program untuk mengetahui pernyataan yang
1 - 37
mencetak nilai tersebut dan hal ini bukan pekerjaan yang mudah, terlebih lagi apabila terdapat
banyak pernyataan output pada program tersebut.
Kita dapat mencetak hasil dengan cara yang lebih baik - pesan maupun nilai dapat
dicetak.

____________________________________________________________________________

Contoh 1.17 Apabila store tampak seperti

luas riil panjang riil lebar 7.5 riil


3.0
2.5
maka pernyataan

output 'panjang', panjang, ' x lebar', lebar, ' = ', luas

apabila dieksekusi prosesor akan menyebabkan

panjang 3,0 x lebar 2,5 = 7,5

dicetak pada alat output. Pesan diantara tanda ' akan dicetak persis seperti yang tertulis,
sedangkan nama yang tidak diberikan tanda ', akan diperlakukan sebagai variabel sehingga
akan dicetak nilainya.
____________________________________________________________________________

Pernyataan output memiliki bentuk yang lebih umum

output item1, item2, . . ., itemN

dimana setiap item dapat merupakan pesan (kombinasi setiap karakter) yang dituliskan
diantara tanda ', atau nama variabel. Setiap pesan dicetak karakter per karakter, sedangkan
nama variabel akan menghasilkan hasil cetakan dari nilainya.
Perlu diperhatikan dua kesalahan umum dari penggunaan pernyataan output. Kesalahan
pertama berhubungan dengan penggunaan pesan untuk suatu nilai variabel. Banyak orang
menganggap komputer dapat memberikan hubungan antara pesan dengan nilai varibelnya.
Sebagai contoh, pernyataan

output 'panjang', panjang, ' x lebar', lebar, ' = ', luas

dari contoh soal sebelumnya yang digunakan untuk menggambarkan penggunaan pencetakan
pesan. Mungkin kita berpikir bahwa komputer mengerti hubungan antara pesan dengan nama
variabel, dimana hal ini tidak benar. Prosesor hanya akan mencetak setiap item dalam daftar

1 - 38
output dengan tanpa mempedulikan apa arti item tersebut. Pernyataan diatas akan
menghasilkan

panjang 3,0 x lebar 2,5 = 7,5

seperti yang kita lihat terdahulu. Dilain pihak, pernyataan

output 'lebar', panjang, ' x panjang', luas, ' = ', lebar

akan menghasilkan

lebar 3,0 x panjang 7,5 = 2,5

dan

output 'lebar', luas, ' x panjang', lebar', ' = ', panjang

akan menghasilkan

lebar 7,5 x panjang 2,5 = 3,0

Tentu saja hasil ke dua cetakan paling akhir tidak memberikan arti apapun pada kita, tetapi
prosesor mengeksekusi intruksi output dengan tanpa masalah - prosesor mencetak item ke-1,
item ke-2 dan item ke-3 dari daftar output persis seperti yang diperintahkan. Disini perlu
ditekankan: programer bertanggung jawab untuk memberikan instruksi yang berarti dan benar
pada prosesor.
Kesalahan kedua berhubungan dengan isi store setelah pernyataan output dieksekusi.
Pernyataan output tidak menghapus nilai variabel dalam store pada saat mencetaknya,
prosesor hanya mencetak salinan dari setiap nilai. Apabila store tampak seperti

luas riil panjang riil lebar 7.5 riil


3.0
2.5
dan prosesor mengeksekusi pernyataan

output 'panjang', panjang, ' x lebar', lebar, ' = ', luas

dan mencetak

panjang 3,0 x lebar 2,5 = 7,5

pada alat output, store akan tetap tampak seperti

luas riil panjang riil lebar 7.5 riil


3.0
1 - 39
2.5
Sebagai kesimpulan, alat input dan output merupakan satu- satunya hubungan dengan nilai
variabel pada store dan hasil perhitungan program. Suatu nilai dapat dibaca oleh alat input
untuk disimpan pada store dengan menggunakan pernyataan input. Hal ini membuat program
kita berbentuk umum, karena kita dapat menggunakan program yang sama untuk data input
yang berbeda. Pernyataan output digunakan untuk mencetak hasil perhitungan pada alat
output. Sampai saat ini hanya diberikan karakteristik fungsional dari model perangkat input
dan output - penggunaan dalam pembacaan nilai serta pencetakan hasil perhitungan.
Karakteristik pisik dari perangkat ini secara sengaja dihindari, selama terlalu banyak perangkat
yang tersedia. Dari model yang telah dijelaskan, kita harus dapat membentuk ide mengenai apa
yang dapat dikerjakan oleh perangkat tersebut dan bukan bentuk pisiknya. Dalam banyak
kasus, perangkat input sangat berbeda dengan perangkat output, tetapi dalam hal tertentu dapat
merupakan satu unit seperti, terminal komputer.

KESIMPULAN MODEL KOMPUTER

Pada bagian ini telah diuraikan model komputer, dimana komponen utamanya adalah prosesor
yang melaksanakan instruksi sederhana dari programer. Prosesor dapat mengevaluasi ekspresi
aritmatik, penjumlahan, pengurangan, pengalian, pembagian dan pemangkatan, serta dapat
membandingkan dua nilai. Hasil perhitungan dapat disimpan dalam store dengan
menggunakan pernyataan penugasan.
Walaupun model komputer yang diperkenalkan bersifat primitip dan sederhana, hal ini tetap
merupakan gambaran dari segala macam komputer, yang seringkali dikenal sebagai komputer
digital. Dari komputer personal yang murah sampai dengan superkomputer yang mahal,
struktur dasarnya sama, karena itu model komputer yang telah diperkenalkan mencukupi
kebutuhan dasar untuk mengerti pemrograman.

1.3
PROSES PEMROGRAMAN

Tujuan dari uraian model komputer pada bagian sebelumnya adalah untuk menggambarkan
bagaimana sederhananya komputer ditinjau dari kemampuan melaksanakan operasi. Karena
operasi yang dapat dilakukan oleh komputer sangat sederhana, maka program yang
memerintahkan komputer untuk melakukan apa yang dikerjakannya harus ditulis dengan
menggunakan instruksi sederhana. Beberapa instruksi telah diuraikan: pernyataan variabel
memerintahkan prosesor untuk memberi nama pada sel storage agar dapat digunakan
kemudian; pernyataan penugasan memerintahkan prosesor untuk melaksanakan operasi
aritmatik dasar dan operasi pembandingan; pernyataan input mengarahkan prosesor untuk
membaca nilai-nilai dari alat input dan menyimpannya pada sel storage; dan pernyataan
output memerintahkan prosesor untuk mencetak pesan dan nilai variabel pada alat output agar
dapat dibaca oleh manusia. Semua bahasa pemrograman prosedural memiliki instruksi yang

1 - 40
sama dengan intruksi yang telah diuraikan. Pemrograman merupakan proses dari perancangan
urutan instruksi yang menyebabkan prosesor melaksanakan pekerjaan yang diinginkan.

PROGRAM

Berdasarkan instruksi sederhana yang telah dipelajari, agar program dapat melaksanakan suatu
pekerjaan, seperti menghitung daftar gaji dari perusahaan besar ataupun permainan catur,
diperlukan usaha yang besar dalam perancangannya. Faktanya, apabila program besar harus
ditulis sebagai urutan yang sangat panjang dari kumpulan pernyataan penugasan sederhana,
input, dan output, maka hal ini sulit dilakukan. Karena itu bahasa mpl memungkinkan
programer untuk melakukan pengelompokan instruksi dalam sub-bagian program logis atau
rutin yang dikenal sebagai fungsi dan prosedur. Setiap fungsi dan prosedur dapat dirancang
secara terpisah yang kemudian dapat dipanggil dalam satu program besar.
Sebagai contoh, sebuah program untuk menghitung statistik hasil ujian mungkin saja terdiri
dari satu prosedur untuk memasukan daftar nama siswa dan nilai hasil ujian, satu fungsi untuk
menghitung nilai rata-rata kelas, satu fungsi untuk menghitung standard deviasi, prosedur yang
berbeda untuk melakukan pengurutan (sorting) nama siswa dan nilai hasil ujian dalam urutan
numeris berdasarkan nilai, dan satu prosedur terakhir untuk mencetak urutan daftar siswa
dengan nilainya serta nilai rata-rata kelas dan standard deviasinya. Setiap fungsi dan prosedur
diatas merupakan sub-bagian program yang terpisah dan dapat dirancang dengan lebih mudah.
Untuk menggabungkan seluruh fungsi dan prosedur tersebut dalam satu program, dibutuhkan
prosedur inisial yang akan memanggil setiap fungsi dan prosedur secara berurutan agar dapat
menghasilkan statistik ujian yang diinginkan. Nama prosedur inisial digunakan karena
prosedur ini dieksekusi paling awal oleh prosesor sebelum fungsi dan prosedur lain dikerjakan.
Prosedur inisial mengorganisir program agar setiap fungsi dan prosedur lain dalam program
dieksekusi dalam urutan yang benar.

FUNGSI DAN PROSEDUR

Fungsi dan prosedur merupakan fondasi dari suatu program. Apa perbedaan antar mereka ?.
Fungsi memperluas kumpulan operasi bahasa pemrograman, sedangkan prosedur memperluas
kumpulan pernyataan bahasa pemrograman.

Fungsi

Untuk dapat mengerti fungsi dengan lebih baik, perhatikan salah satu fungsi aritmatik yang
disediakan langsung dalam bahasa pemrograman. Penjumlahan merupakan suatu fungsi yang
bertugas untuk mengambil dua nilai dan menghitung jumlahnya. Apabila dituliskan

3+8

akan menghasilkan 11, karena itu sebagai suatu fungsi, penjumlahan memiliki format

1 - 41
+

dimana dapat dipilih dua nilai di sebelah kiri kanannya. Gambarannya tampak seperti nilai x

x+y

y yang diberikan pada fungsi penjumlahan disebut argumen atau


parameter penjumlahan. Untuk setiap dua nilai yang diberikan pada x dan y, hasil jumlahnya
akan dihitung.
Kita seringkali menginginkan suatu fungsi yang jauh lebih rumit dari operator aritmatik
promitip yang tersedia dalam bahasa pemrograman, sebagai contoh, fungsi sum untuk
menerima daftar kumpulan bilangan integer (yang cukup panjang) dan menghitung jumlahnya.
Fungsi ini mungkin berguna untuk melakukan penjumlahan nilai hasil ujian sebagai persiapan
perhitungan nilai rata-rata, untuk menjumlahkan uang masuk dan keluar agar didapatkan
neraca keuangan, dan banyak situasi lainnya.
Suatu fungsi yang menghitung harga rata-rata dari empat bilangan integer merupakan sebuah
contoh yang sederhana. Apabila fungsi ini disebut average4 dan kita inginkan bekerja seperti
fungsi +, maka dapat dikirimkan sembarang empat bilangan integer pada fungsi ini dan
kemudian dihitung harga rata-ratanya. Gambarannya akan tampak

Dikirimkan 4 nilai
Integer

average4

Harga rata-rata dari


4 bilangan

Fungsi average4 dapat digunakan dalam pernyataan seperti

rata  average4(4, 15, 7, 12)

yang akan menghitung harga rata-rata dari empat bilangan, yaitu 4, 15, 7, dan 12, dan
menempatkan hasilnya pada variabel rata. Dapat juga fungsi tersebut digunakan dengan

1 - 42
input a, b, c, d
rata  average4(a, b, c, d)

yang akan menghitung harga rata-rata empat nilai input, a, b, c, dan d serta menyimpan
hasilnya pada variabel rata. Dengan perkataan lain, setiap dirancang fungsi baru, fungsi ini
dapat digunakan seperti fungsi + (sebagai contoh, fungsi tersebut dapat digunakan dalam
ekspresi aritmatik, pernyataan output, serta dalam ekspresi terkondisi).

Prosedur

Perbedaan prosedur dengan fungsi adalah dimana prosedur memperluas kumpulan pernyataan
sedangkan fungsi memperluas kumpulan operasi dalam bahasa pemrograman. Sebagai contoh,
kita menginginkan suatu pernyataan untuk melakukan pengurutan (sorting) suatu daftar nama
dalam urutan alpabetis. Pernyataan ini tidak tersedia dalam bahasa pemrograman karena dalam
komputer tidak disediakan suatu sirkuit elektroniknya, sehingga kita harus merancang suatu
prosedur untuk menangani hal tersebut berdasarkan instruksi sederhana yang tersedia. Sekali
prosedur pengurutan telah dirancang, maka prosedur ini dapat digunakan dalam berbagai
program lainnya.
Contoh lebih sederhana yang berhubungan dengan masalah pengurutan adalah prosedur untuk
menukar (swap) dua nilai: apabila variabel a mengandung nilai 5 dan variabel b mengandung
nilai 10 serta terdapat pernyataan

swap(a,b)

dalam program kita, maka pada saat pernyatan tersebut dieksekusi oleh prosesor, nilai variabel
a menjadi 10 dan nilai variabel b menjadi 5. Selama tidak tersedia sirkuit elektronik dalam
komputer untuk melakukan hal tersebut, maka perlu dikembangkan prosedur swap
berdasarkan instruksi sederhana yang tersedia. Prosedur swap akan mengandung kelompok
pernyataan

temp  x
xy y
 temp

sehingga untuk setiap dua nilai yang dikirimkan pada x dan y, pertama-tama nilai x akan
disimpan pada temp, kemudian nilai y disimpan pada x, dan akhirnya nilai temp disimpan pada
y. Kelompok pernyataan diatas akan saling menukarkan nilai x dan y.
Pernyataan

swap(a,b)

dapat digambarkan

a b

1 - 43
x y

temp  x
xy
y  temp

x y

a b

Perhatikan perbedaan prosedur ini dengan suatu fungsi, dimana fungsi menghitung satu nilai
yang dapat digunakan pada ekspresi aritmatik, ekspresi terkondisi, atau pada pernyataan
output, sedangkan tujuan suatu prosedur, seperti pada swap, tidak untuk menghitung satu nilai
tetapi untuk melakukan suatu pekerjaan yang seringkali merubah parameter yang dikirimkan
pada prosedur tersebut. Perbedaan dasar antara prosedur dan fungsi akan lebih jelas pada saat
dilakukan perancangan program.
Sebagai kesimpulan, proses pemrograman dapat dianggap sebagai strategi pembagian dan
penaklukan. Daripada memecahkan suatu permasalahan besar secara sekaligus, pertamatama
perlu diidentifikasi sub-permasalahan independen yang kemudian dirancang prosedur atau
fungsi untuk menanganinya. Suatu fungsi digunakan apabila suatu sub-permasalahan
membutuhkan perhitungan satu nilai baru, sedangkan prosedur digunakan untuk perubahan
suatu parameter. Prosedur inisial terpisah dibutuhkan untuk mengorganisir pemanggilan fungsi
dan prosedur sehingga keseluruhan permasalahan dapat dipecahkan dengan sempurna.
Prosedur dan fungsi yang telah dikembangkan dapat digunakan untuk memecahkan
permasalahan yang sama pada program lain.

BAHASA PEMROGRAMAN MODEL


(MODEL PROGRAMMING LANGUAGE=MPL)

Agar suatu komputer dapat berguna, kita perlu mempelajari bagaimana merancang suatu
program yang dapat dieksekusi oleh komputer. Instruksi individual bahasa pemrograman
seperti pernyataan variabel, penugasan, input, dan output merupakan bagian yang mudah
dipelajari dari bagaimana membuat program. Bagian yang lebih menantang adalah
mempelajari bagaimana mengkombinasikan instruksi diatas untuk membentuk suatu program
yang benar. Walaupun nama masing-masing instruksi berlainan untuk setiap bahasa
pemrograman, proses perancangan programnya tetap sama tanpa memperdulikan bahasa
pemrograman prosedural yang digunakan.
Mempelajari bahasa pemrograman menjadi kurang penting dibandingkan dengan
belajar bagaimana membuat program, oleh karena itu kita akan menggunakan model
1 - 44
programming laguage (mpl) untuk merancang suatu program. Instruksi yang dikembangkan
pada mpl merepresentasikan fasilitas terakhir yang tersedia pada bahasa pemrograman
prosedural modern. Mpl membebaskan kita dari ketakutan kesalahan penggunaan rincian ejaan
dalam bahasa pemrograman aktual, sehingga kita dapat mengkonsentrasikan diri pada bagian
yang rumit - perancangan program.
Merancang program dalam bahasa mpl berarti membuat kita dengan mudah membuat
programnya dalam berbagai bahasa pemrograman aktual yang ada:

mpl

Basic Algol Fortran Pascal PL/1

Pertama-tama perlu dipikirkan permasalahan yang dihadapi dan merancang program dalam
mpl untuk mengatasi permasalahan tersebut. Setelah rancangan programnya benar, maka
program tersebut perlu diterjemahkan pada bahasa pemrograman prosedural yang tersedia.
Langkahnya adalah sebagai berikut;

rancang terjemahkan program jalankan


program mpl pada bahasa yg program pada dlm
mpl akan digunakan komputer

Dalam mempelajari bahasa pemrograman aktual, kita hanya belajar bagaimana


menterjemahkan saja, dimana hal ini merupakan suatu hal yang mudah.
Sebagai kesimpulan, kegunaan dari mpl adalah sebagai alat bantu dalam merancang program
yang tidak terpaku dalam bentuk tertentu, tidak seperti pada bahasa pemrograman aktual yang
sangat tergantung sekali pada rincian aturan. Dalam merancang suatu program, perlu
dilakukan berdasarkan bahasa pemrograman terstruktur seperti yang dilakukan pada mpl,
tetapi rancangan program dapat dilakukan dalam berbagai bahasa pemrograman yang ada
asalkan tetap mengikuti pola pemrograman terstruktur diatas.
Penggunaan mpl, yang seringkali dikenal sebagai bahasa, dalam merancang program telah
diterima secara meluas, khususnya untuk suatu program besar, sehingga belajar dengan cara
ini akan mempersiapkan kita pada tipe pemrograman praktis dalam dunia nyata.

1 - 45

Anda mungkin juga menyukai