Pemrograman Dasar
1
I. PENDAHULUAN I.1 Lingkungan Komputasi 1. Aplikasi pemakai, yaitu identifikasi kebutuhan yang ditentukan oleh perangkat lunak aplikasi yang menggunakan komputer 2. Perangkat keras komputer, yaitu tersedianya teknologi perangkat keras untuk menjalankan program aplikasi 3. Perangkat lunak komputer, yaitu pengembangan prosedur dengan menggunakan teknologi yang ada untuk mengimplementasikan program aplikasi
1 Pengguna Aplikasi
Translasi Bahasa
Penyajian Data Sistem Operasi
2
3 Perangkat Lunak
Instruksi
Perangkat Keras
Gambar 1.1 Konvergensi antara kebutuhan dan dua bagian teknologi komputasi.
Pemrograman Dasar
2
Translasi/kompilasi bahasa (seperti Pascal, C, Basic, Fortran), memberi fasilitas pada programer untuk mengimplementasikan program aplikasi. Daerah ini merupakan antarmuka antara pengguna dengan sistem. Translator atau kompiler untuk bahasa pemrograman tertentu akan mengubah statemen-statemen dari pemrogram menjadi informasi yang dapat dimengerti oleh komputer. Instruksi komputer merupakan antarmuka antara perumusan perangkat lunak program aplikasi dan perangkat keras komputer. Komputer menggunakan instruksi tersebut untuk mendefinisikan urutan operasi yang akan dieksekusi. Penyajian Data membentuk antarmuka antara program aplikasi dan komputer. Daerah irisan dari ketiga lingkaran menyatakan sistem operasi. Sistem operasi ini yang akan mengkoor-dinasi interaksi program, mengatur kerja dari perangkat lunak dan perangkat keras yang bervariasi, serta operasi dari unit masukan/keluaran. Komputer merupakan salah satu produk teknologi tinggi yang dapat melakukan hampir semua pekerjaan diberbagai disiplin ilmu, tetapi komputer hanya akan merupakan barang mati tanpa adanya bahasa pemrograman untuk menggambarkan apa yang kita kerjakan, sistem bilangan untuk mendukung komputasi, dan matematika untuk menggambarkan prosedur komputasi yang kita kerjakan.
I.2 Perkembangan Bahasa Komputer - Suatu bahasa pemrograman dapat dilihat dari tiga sudut pandang, yaitu : 1. Dari tingkat kecanggihannya 2. Dari jenis aplikasinya 3. Dari Metode kerjanya
I.2.1 Dari Tingkat Kecanggihannya. Dari tingkat kecanggihannya, bahasa pemrograman dapat digolongkan berdasarkan generasi pembuatan bahasa tersebut.
Pemrograman Dasar
3
I.2.1.1 Bahasa Generasi Pertama (1’st GL) : Bahasa Mesin.
- Merupakan bahasa pemrograman yang dibuat untuk pertama kali
-
-
pada awal dikembangkannya komputer elektronik pertama, yaitu ENIAC (Electronic Numerical Integrator and Calculator) pada tahun 1945 oleh Mauchly and Eckert. Bahasa pemrograman ini menggunakan kode-kode biner, yaitu 0 dan 1, yang sesuai dengan basis dasar transistor (relai) yaitu kondisi “On” diwakili dengan angka 1, dan kondisi “Off” diwakili dengan angka 0. Contoh : 011001001001001101001 Bahasa mesin sangat berorientasi pada perangkat keras komputer (machine oriented ), sehingga untuk dapat menyusun program dalam bahasa mesin, seseorang harus mengerti karakteristik perangkat keras komputer yang dihadapinya. Menyusun program dalam bahasa mesin sangat rumit dan memerlukan waktu lama, serta tidak mudah dihapalkan, karena hanya instruksinya panjang dan hanya berupa angka-angka 0 dan 1. Untuk lebih memperpendek penulisan program, maka mulai diperkenalkan basis bilangan selain biner, yaitu bilangan basis 8 (Oktal) dan bilangan basis 16 (Heksadesimal).
I.2.1.2 Bahasa Generasi Kedua (2’nd GL = Low Level Language) : Bahasa Assembly.
- Bahasa ini merupakan penyempurnaan bahasa generasi pertama, terutama untuk mempermudah pemrogram dalam menghapalkan instruksi program serta memperpendek instruksi program. - Bahasa assembly sudah mulai memasukkan unsur kata bahasa inggris dalam instruksinya, meskipun dalam bentuk singkat. - Bahasa ini masih bersifat machine dependent, yaitu penulisan instruksinya harus disesuaikan dengan tipe perangkat keras komputer yang digunakan. - Penulisan bahasa assembly sudah jauh lebih mudah dibanding dengan bahasa mesin, namun masih terlalu sulit bagi orang awam yang tidak memahami perangkat keras komputer, karena beberapa variabel masih mengacu pada register, alamat memori maupun alamat port I/O. I.2.1.2 Bahasa Generasi Ketiga (3’rd GL = high level language) : Bahasa aras tinggi.
- Bahasa ini merupakan pengembangan lebih lanjut dari bahasa assembly dengan memasukkan lebih banyak unsur kata yang sering
Pemrograman Dasar
-
-
-
-
4
digunakan dalam percakapan sehari-hari serta mempunyai sintaksis yang lebih baik. Bahasa aras tinggi ini muncul sekitar tahun 1950 oleh suatu tim kecil dari pabrik IBM yang dipimpin oleh John Backus yang berhasil mengembangkan bahasa pemrograman yang dapat ditulis oleh seorang awam yang tidak mengenal perangkat keras komputer. Bahasa aras tinggi ini disebut dengan FORTRAN, singkatan dari FORmula TRANslator, yang sudah bersifat machine independent. Kemudian disusul dengan munculnya bahasa pemrograman aras tinggi yang lain seperti: BASIC, COBOL, PL/1, PASCAL, ALGOL, PROLOG, C, dan lain sebagainya. Pada bahasa aras tinggi pemrosesan program oleh komputer umumnya melalui tahap-tahap berikut ini. Tahap 1: COMPILATION. Pada tahap ini program akan diterjemahkan oleh COMPILER kedalam bahasa mesin, karena sebenarnya prosesor hanya dapat mengerti instruksi dalam bahasa mesin saja. COMPILER adalah suatu perangkat lunak yang berfungsi untuk menterjemahkan bahasa aras tinggi menjadi bahasa mesin. Tahap 2: LINK. Tahap ini diperlukan karena program dalam bahasa mesin yang telah diterjemahkan tadi masih perlu dilengkapi dengan data-data tentang karakteristik mesin, serta mungkin memerlukan fungsi-fungsi pustaka standard yang sudah disediakan oleh bahasa pemrograman. Linker berfungsi untuk menghubungkan program yang ditulis yang telah diubah dalam bahasa mesin dengan fungsi-fungsi pustaka yang digunakan serta informasi-informasi tentang karakteristik mesin yang digunakan. Tahap 3. EXECUTION. Pada tahap ini program akan diproses oleh mesin sehingga menghasilkan keluaran seperti yang dikehendaki pemrogram. Dengan menggunakan bahasa pemrograman aras tinggi ini maka pemrogram dapat mengkonsentrasikan diri pada pemecahan masalah, sehingga waktunya tidak habis tersita untuk mempelajari karaktersitik komputer yang digunakan.
I.2.1.2 Bahasa Generasi Keempat (4’th GL) : Bahasa Deklaratif.
- Sekitar tahun 1980 para ahli berhasil mengembangkan bahasa pemrograman generasi keempat (fourth generation language = 4’th GL). - Bahasa pemrograman ini jauh lebih mudah ditulis, bahkan oleh orang yang sangat awam dengan dunia komputer, karena instruksinya sudah sangat mendekati dengan bahasa percakapan sehari-hari. - Contoh bahasa pemrogramannya adalah: o LIST NAMA, ALAMAT, NILAI FOR NILAI > 7
Pemrograman Dasar
5
- Dengan satu baris instruksi saja sudah dapat menghasilkan keluaran seperti yang dikehendaki pemrogram, yang jika ditulis dengan bahasa generasi sebelumnya mungkin membutuhkan lebih dari sepuluh baris instruksi. - Contoh bahasa generasi keempat adalah bahasa DBASE. I.2.2 Bahasa Pemrograman Aplikasi Menurut jenis bidang aplikasinya, bahasa pemrograman dapat dikelompokkan sebagai berikut: I.2.2.1 Aplikasi Sains
- Aplikasi sains ini dapat dikarakterisasi dengan proses manipulasi angka dan array. - Bentuk tata bahasanya banyak menggunakan notasi-notasi matematika. Program mengolah bilangan yang relatif tidak terlalu banyak, namun proses perhitungan yang harus dilakukan banyak dan panjang tahapannya. - Pada aplikasi sains sangat diperlukan ketelitian dan kecepatan proses perhitungan. - Bahasa yang umum dipakai untuk aplikasi sains antara lain adalah C, Pascal, FORTRAN, Basic, dan lain-lain. 1.2.2.2 Aplikasi Pengolah Data.
- Aplikasi komputer di bidang bisnis dan administrasi dapat dimasukkan sebagai pengolahan data untuk membuat, mencatat, memelihara dan melaporkan data-data yang terekam dalam komputer. - Bahasa jenis ini mendukung dalam pemakaian dibidang manajemen keuangan, administrasi, penggajian, penjualan, inventori, dan lainlain. - Biasanya kemampuan utama bahasa jenis ini adalah kecepatan dalam menemukan data pada suatu basis data yang tersimpan di unit penyimpan magnetis maupun optis dalam sistem komputer. - Bahasa yang termasuk kelompok ini antara lain COCOL, DBASE, RPG (Report Program Generator). I.2.2.3 Aplikasi Pengolahan Teks.
- Pengolahan teks adalah proses manipulasi tulisan bahasa yang dipergunakan sehari-hari dan bukan bilangan-bilangan yang biasa diproses oleh komputer.
Pemrograman Dasar
6
- Paket aplikasi pengolah kata seperti wordprocessor dibuat dengan bantuan bahasa jenis ini. - Yang termasuk bahasa jenis ini adalah C, SNOBOL, dan lain-lain. I.2.2.4 Aplikasi Kecerdasan Buatan
- Aplikasi kecerdasan buatan adalah suatu usaha untuk membuat komputer dapat menyusun suatu proses yang bertingkah laku mirip kecerdasan manusia. - Aplikasinya antara lain adalah pada pembuatan aplikasi untuk permainan (game), robot, dan sistem pakar (expert system). - Bahasa yang dipakai untuk aplikasi jenis ini adalah LISP dan PROLOG. I.2.2.5 Aplikasi Pemrograman Sistem
- Aplikasi pemrograman sistem adalah pembuatan program untuk keperluan sistem internal komputernya sendiri - Program aplikasi sistem ini seperti aplikasi pengantara (interface) antara komputer dan berbagai perangkat peripheral sekitar, seperti printer, telepon, modem, dan lain-lain dengan operator yang menjalankannya. - Bahasa yang digunakan untuk aplikasi ini seperti bahasa C, Modula-2 dan lain sebagainya. I.3 Evaluasi Bahasa Pemrograman Bahasa-bahasa pemrograman masing-masing mempunyai kelebihan dan kekurangan. Untuk dapat mengetahui kelebihan dan kekurangan suatu bahasa pemrograman ada beberapa kriteria yang perlu diperhatikan, sebagai berikut: 1. Ekspresifitas 2. Dapat didefinisikan dengan baik 3. Tipe data dan strukturnya 4. Modularitasnya 5. Fasilitas input outputnya 6. Portabilitasnya 7. Efisiensi 8. Mudah dipelajari 9. bersifat umum
Pemrograman Dasar
7
I.4 Penyajian Informasi Dalam perkembangannya, matematika dan ilmu turunannya dalam merumuskan dan menerangkan tentang suatu ilmu pengetahuan menggunakan : - Sistem bilangan yang mendukung perhitungan numeris - Abjad dan bahasa yang memungkinkan kita untuk menerangkan dan merekam apa yang telah kita kerjakan. Demikian pula dalam komputasi, komputer tidak dapat langsung menggunakan baik abjad maupun sistem bilangan yang kita pergunakan. Komputer digital hanya dapat mengenal dua keadaan, yang setara dengan bilangan biner 0 dan 1. Setiap simbol dalam abjad perlu disandikan ke dalam sandi runtun digit biner (bit) dan menggunakan sistem bilangan biner untuk semua komputasi.
I.4.1 Penyajian Runtun Dalam teori komputasi, himpunan merupakan salah satu konsep penting dan sering digunakan. Pada aplikasi-aplikasi khusus sering dibutuhkan suatu penyajian yang mempunyai dua karakteristik yang membedakannya dengan himpunan, yaitu - urutan dari elemen-elemennya mempunyai nilai yang penting - elemen-elemennya tidak perlu dibedakan
y .
(xi,yi)
. x
Gambar 1.2. Contoh data yang membutuhkan penyajian urutan pasangan.
Pemrograman Dasar
8
Setiap titik harus diidentifikasikan sebagai pasangan bilangan xi dan yi , dengan xi dan yi adalah nilai yang urut sepanjang sumbu grafik. Dalam hal ini penyajian himpunan tidak dapat digunakan karena: Tidak dapat menentukan suatu urutan (titik {6,5} akan dianggap sama dengan titik {5,6}). Perulangan akan diabaikan (Titik {4,4} akan direduksi menjadi {4}). Perlu digunakan suatu struktur bilangan baru yang disebut pasangan berurutan <x,y>, dengan x adalah komponen pertama dan y komponen kedua dari pasangan tersebut.
I.4.2 Simbol, abjad, dan string
Dalam mengembangkan suatu penyajian informasi yang baru, maka perlu ditentukan lebih dulu elemen-elemen yang menjadi anggotanya. Elemen-elemen ini disebut simbol. Himpunan dari simbol-simbol disebut abjad.
Simbol-simbol dari suatu abjad biasanya disusun dalam suatu urutan yang tetap, dan mempunyai nilai relatif antara simbol satu dengan simbol yang lain.
Simbol-simbol dari suatu abjad biasanya disusun dalam suatu urutan yang tetap, dan mempunyai nilai relatif antara simbol satu dengan simbol yang lain.
Himpunan karakter yang digunakan pada komputer disandikan dengan kode ASCII. Urutan atau runtun dari beberapa simbol yang terbatas dari suatu abjad disebut string. String dapat dihubungkan untuk membentuk string yang baru. Misalnya S = Danau dan T = Toba, maka operasi S ∪ T = DanauToba.
I.4.3 Penyajian Abjad Pada Komputer Perlu diperhatikan Simbol spesifik apa (abjad, numeris, matematis, ...) yang akan disertakan. Bagaimana simbol tersebut harus diurutkan. Apakah setiap simbol akan disajikan dengan jumlah bit sandi yang sama.
Pemrograman Dasar
9
Terdapat dua sandi yang sangat dominan, yaitu : 1. ASCII (American Standard Code for Information Interchange). 2. EBCDIC (Extended Binary-Coded Decimal Interchange Code) Sandi ASCII dikembangkan oleh American National Standard Institute (ANSI) sebagai bagian dari program standarisasi Industri. EBCDIC dikembangkan oleh IBM untuk 360 seri komputernya. byte 1
bit
byte 2
....
byte n
byte kata
Gambar 1.3. Format penyimpanan informasi pada komputer.
I.4.4 Penyajian Bilangan pada Komputer Bilangan Bulat Tak-bertanda (unsigned integers) - Tipe bilangan ini tidak mengenal bilangan negatif atau pecahan. - Dapat terdiri atas lebih dari satu basis atau radix . merupakan basis dari sistem bilangan - Faktor bobot dengan besar pangkatnya ditentukan oleh posisinya. - Bilangan desimal mempunyai anggota {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. 1983 = 1 . 103 + 9 . 102 + 8 . 101 + 3 . 100 -
Dalam teknik komputasi sistem bilangan yang umum digunakan adalah sistem bilangan basis 2 (sistem biner), basis 8 (sistem oktal), dan sistem bilangan basis 16 (heksadesimal).
Pemrograman Dasar 10 -
-
Sistem biner hanya terdiri atas angka 1 dan 0, dan posisi angka menunjukkan faktor bobotnya, yaitu besar pangkat dari 2. 100110 = 1 . 25 + 0 . 24 + 0 . 23 + 1 . 22 + 1 . 21 + 0 . 20 = 38 (desimal)
sistem bilangan Oktal yang mempunyai anggota { 0, 1, 2, 3, 4, 5, 6, 7}. - Bilangan terbesar adalah 7, dan jika ingin merepresentasikan bilangan yang lebih besar dari 7 maka digunakan angka 1, 2 dan seterusnya didepannya tergantung dari bobotnya, yang dalam hal ini adalah besarnya pangkat dari bilangan dasarnya, yaitu bilangan 8. - Bilangan 145 (oktal) dapat diuraikan menjadi : -
1453 = 1 . 83 + 4 . 82 + 5 . 81 + 3 . 80 = 811 (desimal) - Sistem dasar komputasi komputer menggunakan sistem biner, sehingga dalam proses pengolahannya sistem oktal perlu dikonversi dulu menjadi sistem biner. - Karena 8 = 23 , berarti mempunyai tiga posisi dalam basis dua, maka setiap digit atau posisi dari sistem oktal dapat diwakili oleh tiga digit sistem biner. Misalnya untuk contoh di atas, jika dikonversikan ke sistem biner akan menjadi : 1453 jika diuraikan per digitnya : 1= 001 4=100 5=101 3= 011 maka 1453 = 0 0 1 1 0 0 1 0 1 0 1 1 = 1 100 101 011 - Sistem bilangan Heksadesimal mempunyai 16 anggota bilangan yang terdiri atas sepuluh anggota bilangan desimal ditambah dengan 5 huruf untuk menggantikan bilangan ke-10, 11, 12, 13, 14, dan ke-15. - Anggota bilangan heksa secara lengkap adalah {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}. Pada basis 16 ini maka
Pemrograman Dasar 11
jumlah bilangan terbesar dalam satu digit atau posisi adalah F atau 15. - Misalkan bilangan 1B56 ingin dijadikan bilangan desimal, maka dapat diuraikan sebagai berikut : 1B56 = 1 . 163 + 10 . 162 + 5 . 161 + 6 . 160 = 6998 (desimal) - Karena basis dari bilangan heksadesimal adalah 16 = 24, berarti terdiri atas empat digit (posisi bobot) dari bilangan biner, maka untuk mengkonversi bilangan heksa menjadi biner dapat dilakukan per digit (posisi angka) dimana satu digit dari bilangan heksa diwakili oleh empat digit biner. - Untuk contoh di atas, jika diuraikan per digit : 1B56 : 1= 0001 B= 1011 5= 0101 6= 0110 maka 1B56 (heksa) = 1 1011 0101 0110 - Hal ini berlaku juga untuk sebaliknya, yaitu jika bilangan biner ingin dikonversikan menjadi bilangan oktal atau heksadesimal, maka konversi dapat dilakukan tiap 3 digit untuk oktal dan tiap 4 digit untuk heksadesimal. Tabel
1.
Sistem Bilangan Heksadesimal.
BINE R 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
Biner,
Desimal,
DESIMA OKTAL HEKSADESIMA L L 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 10 8 9 11 9 10 12 A 11 13 B 12 14 C 13 15 D 14 16 E 15 17 F
Oktal,
dan
Pemrograman Dasar 12
I.4.5 Bilangan Bulat Bertanda (Sign-magnitude) Dalam perhitungan sering diperlukan tidak hanya bilangan bulat positif, tetapi juga yang bernilai negatif, sehingga perlu dipikirkan bagaimana menyajikan tanda pada bilangan. Dalam hal ini terdapat dua cara penandaan bilangan yang umum dipakai, yaitu sign-magnitude, dan komplemen. -
-
-
-
-
Sign-magnitude, dengan menambahkan tanda “+” atau “-” didepan magnitude bilangan tersebut (Biasanya tanda + boleh tidak ditulis). Pada metoda komplemen bilangan negatif dapat dipandang sebagai bilangan positif yang dikurangi fungsi dari bilangan dasarnya (radixnya). Sebagai contoh, misalkan kita ingin menampilkan suatu bilangan desimal pada rentang [-4999, +5000]. Bilangan negatif - 2348 akan disajikan oleh S = (10000 + (2348)) = 7652 Bilangan 7652 tidak maksudkan sebagai bilangan tuju ribu enam ratus lima puluh dua, tetapi menyatakan bilangan 7562 10000 = - 2348. Dari pembahasan di atas mungkin timbul pertanyaan, bagaimana orang bisa menginterpretasikan sembarang bilangan, karena semuanya positif. Jika bilangan berada pada rentang [0, 5000], maka bilangan tersebut adalah bilangan positif, tetapi jika berada pada rentang [5001, 9999] maka merupakan bilangan negatif, dan untuk mengetahui nilai aktualnya harus dikurangkan dari 10000.
I.4.6 Bilangan Floating-Point Pada bilangan bulat (integer) baik yang bertanda maupun yang tidak, letak titik radiks (titik desimal pada bilangan desimal) selalu berada pada bagian kanan dari angka bobot terkecil (Least Significant Bit = LSB). Komputer juga mengenal bilangan-bilangan yang mempunyai komponen pecahan (fractional) atau angka di belakang titik pada bilangan desimal. Pada tipe bilangan ini, titik radiks dapat diletakkan di sembarang posisi dari angka-angka dalam bilangan tersebut, sehingga seakan-akan dapat mengambang (float).
Pemrograman Dasar 13
Cara penulisan bilangan floating-point , misal suatu bilangan S dalam basis B, dapat ditulis sebagai : S = 0.s-1 s-2 . . . s-n X BE Digit dan eksponen kemungkinan dapat berubah selama konversi. Misalnya pada pembulatan bilangan 0.999 x 104 menjadi tiga digit akan memberikan bilangan 0.100 x 105. Secara umum bilangan di atas dapat ditulis kembali menjadi : S = 0.t-1 t-2 . . . t-m X BF Dengan F = g h-1 . . . g1 g0 maka bilangan floating point diatas dapat ditulis sebagai dua bagian, yaitu bagian pecahan dan bagian eksponennya : S = 0.t-1 t-2 . . . t-n X BE ∪ gh-1 . . . g1 g0 = 0.t-1 t-2 . . . t-n X BE gh-1 . . . g1 g0 Misal bilangan 12345.6789 ingin dijadikan 8 digit pecahan dengan 2 digit eksponen, maka langkah-langkahnya adalah sebagai berikut : 1. 2. 3. 4. 5.
Transformasikan ke bentuk pecahan S = 0.123456789 x 105 Atur panjang pecahan menjadi 8digit S = 0.12345679 x 105. Tentukan nilai eksponen F = 5. Ubah eksponen menjadi dua digit F = 05 Hasil akhir menjadi S = 1234567905
Representasi dari bagian pecahan (dalam contoh 12345679) biasa disebut sebagai Mantisa, dan representasi dari bagian eksponen (05) disebut karakteristik atau eksponen.
Pemrograman Dasar 14
I.5 Representasi Galat Secara umum galat yang mungkin terjadi adalah : Galat pengukuran; terjadi jika metoda atau piranti yang digunakan untuk mendapatkan data tidak akurat. Galat ini bergantung pada metoda dan tipe instrumen yang digunakan untuk pengukuran Galat penskalaan; terjadi jika sistem bilangan yang digunakan tidak dapat benar-benar mewakili masingmasing nilai data Galat pemotongan dan pembulatan; terjadi jika panjang kata yang digunakan tidak cukup panjang untuk menyimpan angka bilangan yang diinginkan.