PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik...

60
PEMROGRAMAN TEKNIK Tujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik : Langkah-langkah yang kita lakukan dalam memberikan intruksi kepada komputer untuk memecahkan masalah terutama di bidang teknik. Komputer adalah mesin digital, maka hanya mengenal kondisi ada arus listrik (=1) atau tidak (=0). Bahasa pemrograman yang menggunakan singkatan kata disebut “bahasa assembly”, singkatan ini dikenal dengan mnemonic code”. “Assembler” disebut perangkat lunak yang mengkonversikan perintah-perintah assembly ke dalam bahasa mesin. Langkah-langkah dalam pemrograman teknik : 1. Mendefinisikan masalah, tentukan masalahnya seperti apa, kemudian apa saja yang harus dipecahkan dengan komputer, dengan kata lain apa masukkannya dan bagaimana keluarannya. 2. Menentukan solusi, adalah mencari jalan bagaimana masalah tersebut diselesaikan, apabila permasalahan terlalu kompleks, biasanya harus membaginya ke dalam beberapa modul kecil agar lebih mudah diselesaikan. 3. Memilih algoritma, adalah menentukan algoritma yang dipakai untuk memecahkan masalah, bila pemilihan algoritma yang salah akan menyebabkan program memiliki unjuk kerja yang kurang baik. 4. Menulis program, gunanya untuk memecahkan masalah yang diberikan. 5. Menguji program, adalah apakah program berhasil dikompilasi dengan baik ?. Kemudian pengujian berikutnya apakah program dapat menampilkan keluaran yang diinginkan ?. 6. Menulis dokumentasi, menuliskan atau menambahkan komentar pada setiap baris program atau setiap beberapa baris program yang menjelaskan kegunaan dari suatu pernyataan.

Transcript of PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik...

Page 1: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

PEMROGRAMAN TEKNIK

Tujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat”

Pemrograman Teknik : Langkah-langkah yang kita lakukan dalam memberikan intruksi kepada komputer untuk memecahkan masalah terutama di bidang teknik.

Komputer adalah mesin digital, maka hanya mengenal kondisi ada arus listrik (=1) atau tidak (=0).

Bahasa pemrograman yang menggunakan singkatan kata disebut “bahasa assembly”, singkatan ini dikenal dengan “mnemonic code”.

“Assembler” disebut perangkat lunak yang mengkonversikan perintah-perintah assembly ke dalam bahasa mesin.

Langkah-langkah dalam pemrograman teknik :1. Mendefinisikan masalah, tentukan masalahnya seperti apa, kemudian apa

saja yang harus dipecahkan dengan komputer, dengan kata lain apa masukkannya dan bagaimana keluarannya.

2. Menentukan solusi, adalah mencari jalan bagaimana masalah tersebut diselesaikan, apabila permasalahan terlalu kompleks, biasanya harus membaginya ke dalam beberapa modul kecil agar lebih mudah diselesaikan.

3. Memilih algoritma, adalah menentukan algoritma yang dipakai untuk memecahkan masalah, bila pemilihan algoritma yang salah akan menyebabkan program memiliki unjuk kerja yang kurang baik.

4. Menulis program, gunanya untuk memecahkan masalah yang diberikan.5. Menguji program, adalah apakah program berhasil dikompilasi dengan

baik ?. Kemudian pengujian berikutnya apakah program dapat menampilkan keluaran yang diinginkan ?.

6. Menulis dokumentasi, menuliskan atau menambahkan komentar pada setiap baris program atau setiap beberapa baris program yang menjelaskan kegunaan dari suatu pernyataan.

7. Merawat program, langkah ini dilakukan setelah program selesai dibuat dan sesudah digunakan dengan hasil yang sesuai keinginan, hal yang paling sering terjadi adalah munculnya “bug” yang sebelumnya tidak terdeteksi.

TIPE DATA

Tipe data berguna untuk menentukan nilai yang dapat disimpan variabel tersebut dan operator-operator apa yang dapat dikenakan padanya.

Ada 6 kelompok tipe data (biasanya pada Turbo Pascal 7), yaitu :1. Tipe sederhana, tipe ini dibagi lagi menjadi beberapa dua tipe, yaitu :

a. Tipe ordinal, tipe ini sendiri masih dibagi menjadi beberapa tipe, yaitu : Tipe bilangan bulat. Tipe boolean. Tipe karakter. Tipe terbilang. Tipe sub-jangkauan

b. Tipe real2. Tipe string, yaitu sekumpulan karakter.

Page 2: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

3. Tipe terstruktur, tipe ini dibagi lagi menjadi lima tipe, yaitu :a. Tipe larik.b. Tipe rekaman.c. Tipe objek. d. Tipe himpunan.e. Tipe berkas.

4. Tipe pointer.5. Tipe prosedural.6. Tipe objek.

1). Tipe bilangan bulat :digunakan untuk menyimpan bilangan bulat.

Tabel macam-macam tipe bilangan bulat pada Pascal.Tipe Jangkauan Ukuran

Shortint 128…127 8 bitInteger -32768…32767 16 bitLongint -2147483648…2147483647 32 bitByte 0…255 8 bitWord 0…65535 16 bit

Contoh : Dua pernyataan berikut ini masing-masing mendeklarasikan dua variabel bertipe integer, yaitu x dan y, serta satu variabel bertipe word, yaitu z.

var x,y : integer ; z : word ;

Untuk memberi nilai pada tipe bilangan bulat, digunakan basis desimal maupun heksadesimal. Pemberian nilai dalam basis heksadesimal dilakukan dengan menambahkan $ di depan bilangannya.Contoh :

x := 16 ; { dengan desimal } x := $0A ; { dengan heksadesimal }

2). Tipe boolean :adalah tipe yang hanya dapat bernilai benar atau salah.

Macam-macam tipe boolean pada Turbo Pascal 7.0.Tipe Data Ukuran

Boolean 1 byteByteBool 1 byteWordBool 2 byte (1 word)LongBool 4 byte (2 word)

Pada Turbo Pascal versi sebelumnya hanya ada 1 macam tipe boolean, yaitu Boolean saja. Dari empat tipe data pada tabel, yang sering digunakan adalah tipe Boolean, sedangkan ketiga tipe data diatas hanya untuk kompatibilitas dengan pemrograman Windows.Contoh : Pernyataan berikut ini mendeklarasikan sebuah variabel bertipe boolean dengan nama b1.

var b1 : boolean ;

Ada dua macam nilai yang dapat diberikan pada tipe boolean, yaitu true dan false.Contoh :

b1 := true ;b2 := false ;

3). Tipe karakter : digunakan untuk menyimpan data alfa numerik, seperti ‘A’, ‘Z’, ‘@’, ‘$’, ’1’,

’9’, dsb., tipe ini dideklarasikan dengan kata kunci char.

Page 3: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Contoh : var ch : char ;

Beberapa cara untuk memberi nilai pada variabel bertipe karakter, yaitu :a) Menuliskan karakter di dalam tanda petik tunggal.

Contoh : ch := ‘A’ ;

b) Menuliskan tanda # diikuti dengan nomor ASCII dari karakter yang diinginkan.Contoh :

ch := #56 ; (sama artinya dengan ch := ‘A’ ; )c) Mengkonversikan nomor ASCII ke karakter menggunakan fungsi chr.

Contoh : ch := chr ( 56 ) ; (sama artinya dengan ch := ‘A’ ; )

Kebalikan dari fungsi chr adalah ord, yang digunakan untuk mengembalikan nomor ASCII dari suatu karakter.Contoh :

x := ord ( ‘A’ ) ; ( x akan bernilai 56 ; )

4). Tipe sub-jangkauan :adalah tipe yang memungkinkan mendeklarasikan tipe yang berada pada

jangkauan tertentu, misalnya dari 1 sampai dengan 100.Pendeklarasian dilakukan dengan menuliskan batas atas dan batas bawah dari jangkauannya.Contoh : Tipe Bulan pertahun yang memiliki jangkauan dari 1 sampai 12.

type Bulan = 1 .. 12 ;

Bila mempunyai variabel bertipe Bulan, maka : var Maret : Bulan ;

Sehingga tidak dapat memberikan nilai kurang dari 1 atau lebih dari 12.Contoh :

Maret = 3 ;

5). Tipe terbilang : adalah suatu tipe yang memungkinkan memberi nama pada beberapa nilai

tertentu.Contoh :

type TipeHari = ( Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu ) ;

Memberi nama Minggu pada 0, Senin pada 1 dan seterusnya.Dengan pendeklarasian TipeHari seperti contoh, maka tidak perlu menggunakan angka 0, 1, sampai dengan 6 untuk mepresentasikan hari.Bila mempunyai variabel Hari yang bertipe TipeHari, contohnya :

var Hari : TipeHari ;

Maka dapat dituliskan dengan pernyataan berikut : Hari := Minggu ; Hari := Senin ;

6). Tipe real : digunakan untuk menyimpan bilangan real (nyata).

Macam-macam tipe real pada Pascal Tipe Data Jangkauan Digit penting UkuranReal 2.9*10-39 … 1.7*1038 11 - 12 6 byteSingle 1.5*10-45 … 3.4*1038 7 - 8 4 byte

Page 4: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Double 5.0*10-324 … 1.7*10308 15 - 16 8 byteExtended 3.4*10-4932 … 1.1*104932 19 - 20 10 byteComp -2-63+1… 263-1 19 - 20 8 byte

Contoh (dua pernyataan yang masing-masing mendeklarasikan dua variabel bertipe real, yaitu x dan y, dan 1 variabel bertipe double yaitu z) :

var x, y : real ; z : double ;

Pemberian nilai pada tipe ini dapat dilakukan dengan dua cara, yaitu :a) Menuliskan nilai dengan tanda titik tanpa eksponen,

Contoh : x := 123.45 ;

b) Menuliskan nilai dengan eksponen, Contoh :

x := 1.2345E+2 ;

7). Tipe string : digunakan untuk menyimpan data yang berupa untaian karakter dan untuk

mendeklarasikannya digunakan kata kunci string.

Contoh : var kalimat : string ;

Pemberian nilai dilakukan dengan meletakkan untaian karakter di antara tanda petik tunggal, misal :

kalimat := ‘Turbo pascal 7.0’ ;Pemberian nilai yang mengandung karakter ‘ pada suatu string, tulislah karakter ‘ sebanyak dua kali, misal :

kalimat := ‘Don’t smoke’ ;

8). Tipe larik : yaitu pendeklarasian kumpulan variabel yang bertipe sama dengan

mengikuti bentuk umum berikut :var nama_larik : array [ batas_bawah …batas_atas ] of tipe_larik ;

Jika ingin membuat delapan varabel bertipe longint, tanpa menggunakan larik maka kemungkinan mendeklarasikan variabel tersebut dengan cara berikut :

var a1, a2, a3, a4, a5, a6, a7, a8 : longint ;

Maka dengan larik dapat disederhanakan deklarasi kedelapan variabel, menjadi :

var a: array [ 1…8 ] of longint ;

Dengan pendeklarasian ini, seolah-olah kita mempunyai delapan variabel, yaitu a [ 1 ], a [ 2 ], a [ 3 ], a [ 4 ], a [ 5 ], a [ 6 ], a [ 7 ], dan a [ 8 ]. Contoh :

a [ 1 ] := 10 ;a [ 2 ] := 5 ;

Indeks larik tidak harus dimulai dari 1, tapi dapat dimulai dari angka berapapun, contoh :

var A: array [ 5…10 ] of longint ;

Mendeklarasikan larik dengan indeks mulai dari 5 sampai dengan 10, maka elemen-elemen larik menjadi a [ 5 ], a [ 6 ], a [ 7 ], a [ 8 ], a [ 9 ], dan a [ 10 ].Dapat juga mendeklarasikan larik multi dimensi, yaitu larik yang memiliki dimensi lebih dari satu, sebagai contoh :

Page 5: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

var A: array [ 1…5, 1…5 ] of longint ;

Mendeklarasikan larik dua dimensi berukuran 5x5 sama dengan mempunyai 25 elemen, yaitu :

1 2 3 4 5A [ 1 , 1 ] A [ 1 , 2 ] A [ 1 , 3 ] A [ 1 , 4 ] A [ 1 , 5 ]A [ 2 , 1 ] A [ 2 , 2 ] A [ 2 , 3 ] A [ 2 , 4 ] A [ 2 , 5 ]A [ 3 , 1 ] A [ 3 , 2 ] A [ 3 , 3 ] A [ 3 , 4 ] A [ 3 , 5 ]A [ 4 , 1 ] A [ 4 , 2 ] A [ 4 , 3 ] A [ 4 , 4 ] A [ 4 , 5 ]A [ 5 , 1 ] A [ 5 , 2 ] A [ 5 , 3 ] A [ 5 , 4 ] A [ 5 , 5 ]

9). Tipe rekaman : adalah tipe yang dapat menggabungkan beberapa variabel yang tipenya

tidak harus sama, untuk mendeklarasikannya digunakan kata kunci record.

Contoh : type

TKaryawan = record Nama : string ;Alamat : string ;Gaji : longint ;

end ;Pemberian nilai pada variabel bertipe rekaman dilakukan dengan menyebutkan nama variabel rekaman diikuti tanda titik dan variabel di dalam rekaman, contoh jika terdapat variabel Karyawan yang bertipe TKaryawan :

var Karyawan :TKaryawan ;

Sehingga dapat ditulis pernyataan sebagai berikut :Karyawan.Nama := ‘Badu’ ;Karyawan.Alamat := ‘Yogya’ ;Karyawan.Gaji := 10000 ;

10). Tipe himpunan : digunakan untuk menyimpan kumpulan nilai yang disebut juga anggota

himpunan, yang bertipe sama.Contoh :

typeHimpunanKarakter : set of char ;

Pendeklarasian tipe HimpunanKarakter sebagai himpunan dari karakter.Contoh variabel yang dideklarasikan berdasarkan tipe tersebut :

varVokal : HimpunanKarakter ;Huruf : HimpunanKarakter ;

Pemberian nilai dilakukan dengan menuliskan anggota himpunan dalam kurung siku ([ dan ]), contohnya :

Vokal := [ ‘A’, ‘I’, ‘U’, ‘E’, ‘O’ ] ; Huruf := [ ‘A’…’ Z’ ] ;

11). Tipe pointer :adalah variabel yang menunjuk lokasi memori tertentu, pendeklarasian

dilakukan dengan cara yang hampir sama dengan pendeklarasian variabel biasa hanya bedanya harus menambahkan tanda ^ di depan tipe pointer.

Contoh : var

P1 : ^integer ;P2 : ^double ;

1

5432

Page 6: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Bila ada dua buah variabel bertipe integer dan double, seperti berikut :var

I : integer ;D : double ;

Sehingga kita dapat menugaskan P1 agar menunjuk I dan P2 agar menunjuk D, maka pernyataannya sebagai berikut :

P1 : @ I ;P2 : @ D;

Karena P1 menunjuk pada alamat I, bila kita mengubah nilai pada alamat tersebut nilai I juga akan beruah, sebagai contoh pernyataannya :

P1^ := 100 ;Pernyataan diatas sama artinya dengan I := 100, demikian juga bila kita menuliskan pernyataan :

P2^ := 123.456 ;Maka nilai D juga akan berubah menjadi 123.456.Selain menugaskan pointer untuk menunjuk variabel lain, bisa juga menugaskan untuk menunjuk lokasi memori tertentu dengan pasangan fungsi New dan Dispose.

Fungsi New akan mengalokasikan tempat di memori yang nantinya ditunjuk oleh sebuah pointer, sebaliknya prosedur Dispose akan mendealokasikan memori agar nantinya dapat digunakan untuk keperluan lain, sebagai contoh jika kita mempunyai deklarasi pointer seperti ini :

P1 : ^integer ;Maka kita dapat mengalokasikan memori dengan pernyataan berikut :

new (P1) ;Setelah pointer digunakan, kita harus mendelokasikannya, seperti pada pernyataan berikut :

dispose (P1) ;Sebelum kita mengalokasikan memori untuk sebuah pointer, kita harus tahu kemana pointer tersebut menunjuk, sama seperti variabel biasa, pointer akan menunjukkan lokasi acak di memori, tapi bila kita ingin sebuah pointer tidak menunjuk ke mana-mana, berilah bilai nil, contohnya :

P := nil ;

MACAM-MACAM OPERATOR

Pada dasarnya ada 7 macam operator pada Pascal, yaitu :

Macam-macam operator :

Page 7: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

1. Operator pemberian nilai.2. Operator aritmatika.3. Operator pemanipulasi bit.4. Operator boolean.5. Operator pembanding.6. Operator himpunan.7. Operator string.

1). Operator pemberian nilai : adalah operator yang paling sering digunakan, pada Pascal dilakukan

menggunakan tanda :=, bukan tanda =.Contoh :

A := 12 ; { untuk tipe bilangan bulat }B := ‘Hallo’ ; { untuk tipe string }C := 3.14 ; { untuk tipe real }D := [ 3, 4, 5 ] ; { untuk tipe himpunan }

2). Operator aritmatika :adalah operator yang hanya dapat dikenakan pada operan bertipe bilangan

bulat atau bilangan real.Pascal mengenal 2 macam operator aritmatik yaitu tunggal dan biner, yang membedakannya adalah terletak pada jumlah operan.Operator aritmatik tunggal operan yang digunakan hanya satu, sedangkan operator aritmatik biner operan yang digunakan berjumlah 2 atau lebih.

Tabel operator aritmatik tunggalOperator Operasi Tipe Operan Tipe Hasil

+ Identitas (tanda hasil operasi sama dengan tanda operan)

Bilangan Bulat

Bilangan Real

Bilangan Bulat

Bilangan Real

- Invers (tanda hasil operasi adalah lawan dari tanda operan)

Bilangan Bulat

Bilangan Real

Bilangan Bulat

Bilangan Real

Contoh pengunaan operator aritmatik tunggal : x := - y ; { nilai x sama dengan invers nilai y }

Tabel operator aritmatik binerOperator Operasi Tipe Operan Tipe Hasil

+ Penjumlahan Bilangan BulatBilangan Real

Bilangan BulatBilangan Real

- Pengurangan Bilangan BulatBilangan Real

Bilangan BulatBilangan Real

* Perkalian Bilangan BulatBilangan Real

Bilangan BulatBilangan Real

/ Pembagian Bilangan BulatBilangan Real

Bilangan RealBilangan Real

div Pembagian bilangan bulat Bilangan Bulat Bilangan Bulatmod Sisa pembagian (modulus) Bilangan Bulat Bilangan Bulat

Contoh pengunaan operator aritmatik biner :x := y + z ;x := a – b – c – d ;x := 5 * 9 * 3.14 ;x := a / b ;x := a + b – c * d ;x := 10 div 2 ;x := i mod j ;

Pada Pascal ada dua macam pembagian, yang pertama adalah pembagian dengan operator / (pembagian ini selalu menghasilkan bilangan real), sedang yang kedua dengan operator div (pembagian ini selalu menhasilkan bilangan bulat dan operannya juga selalu bilangan bulat).

Page 8: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

3). Operator pemanipulasi bit :adalah operasi yang berhubungan dengan pemanipulasian bit pada operan,

misal menggeser bit kekanan, memutar bit kekiri, dsb.Operasi ini hanya dapat dikenakan pada operan bertipe bilangan bulat dan hasil operasinya juga selalu bilangan bulat.

Tabel operator pemanipulasian bitOperator Operasi

not Inversand Logika andor Logika orxor Logika xorshl Penggeseran bit ke kirishr Penggeseran bit ke kanan

Operator and, or, dan xor mengevaluasi masing-masing bit pada operan-operannya, pada operator and, jika bit dari kedua operan bernilai 1 maka bit hasil operasinya juga bernilai 1, jika tidak bit hasil operasinya bernilai 0.Contoh :

x := 1 and 0 ; { x = 0 }Pada operator or, jika bit dari kedua operan mempunyai nilai 0 maka bit hasil operasinya juga bernilai 0, jika tidak bit hasil operasinya berniali 1.Contoh :

x := 1 or 0 ; { x = 1 }Operator xor akan mengembalikan 1 jika salah satu bit bernilai 1 dan yang lain benilai 0. Jika tidak hasil operasinya bernilai 0.Contoh :

x := 1 xor 0 ; { x = 1 }Operator not membalik bit-bit operannya. Jika operannya berniali 1 hasilnya adaah 0,. Sebaliknya jika operannya bernilai 0 hasilnya adalah 1.

Tabel hasil operator not and, or, dan xor berbagai kombinasi bitA B not A not B A and B A or B A xor B0 0 1 1 0 0 00 1 1 0 0 1 11 0 0 1 0 1 11 1 0 0 1 1 0

Operator shl dan shr masing-masing digunakan untuk menggeser bit-bit operannya ke kiri atau ke kanan.Contoh :

x := y shl 2 ; { bit-bit pada variabel y digeser ke kiri sejauh 2 bit }a := b shr 5 ; { bit-bit pada variabel b digeser ke kanan sejauh 5 bit }

4). Operator boolean :adalah operator yang dikenakan hanya pada operan bertipe boolean, tentu

saja tipe operan dan tipe hasil operasinya adalah boolean.

Tabel operator booleanOperator Operasi

not negasiand logika andor logika or

xor logika xorOperator and, akan mengembalikan true jika semua operan bernilai true, dan mengembalikan false jika salah satu operan bernilai false.Contoh :

a := true and fase ; { a = false }

Page 9: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Pada operator or, akan mengembalikan true jika salah satu operan bernilai true, dan mengembalikan false jika semua operan bernilai false.Contoh :

a := true or fase ; { a = true }Operator xor jika dikenakan pada dua operan, akan mengembalikan true apabila satu operan bernilai true (dan operan lain bernilai false), dan mengembalikan false jika kedua operan bernilai true atau bernilai false.Contoh :

a := true xor false ; { a = true }Operator not hanya dapat dikenakan pada sebuah operan, operator ini akan mengembalikan true jika operannya false dan sebaliknya.

Tabel hasil operator not and, or, dan xor dengan kombinasi kondisiA B not A not B A and B A or B A xor B

false false true true false false falsefalse true true false false true truetrue false false true false true truetrue true false false true true false

5). Operator pembanding : yaitu operator untuk membandingkan 2 buah operan, hasil dari operator

adalah data bertipe boolean yang menunjukkan hasil pembandingan bernilai benar atau salah.

Tabel operator pembandingOperator Operasi Tipe Operan

= Sama dengan Tipe sederhana, pointer, himpunan, string<> Tidak sama dengan Tipe sederhana, pointer, himpunan, string< Kurang dari Tipe sederhana, string> Lebih dari Tipe sederhana, string

<= Kurang dari atau sama dengan Tipe sederhana, string>= Lebih dari atau sama dengan Tipe sederhana, string<= Subset dari Tipe himpunan>= Superset dari Tipe himpunan

Pada kolom ketiga, tipe operan adalah jenis operan yang dapat dikenai operator pembanding.Contoh :

a := 5 = 6 ; { a = false, karena 5 tidak sama dengan 6 }a := 5 <> 6 ; { a = true }a := 5 < 6 ; { a = true }a := ( 3 < 4 ) and ( 5 > 6 ) ; { a = false, karena 5 < 6 }a := ( 4<= 4 ) or ( 5 > 6 ) ; { a = true }a := ( 4 >= 4 ) and ( 5 >= 5 ) ; { a = true }

6). Operator himpunan : adalah operator yang hanya digunakan pada tipe himpunan.

Tabel operator himpunanOperator Operasi

+ Union- Selisih* Interseksiin Anggota dari

Sebagai contoh : A := B + C ;Artinya menggabungkan semua anggota himpunan B dan C ke dalam A. Jika A, B, dan C bertipe set of char dan nilai A, dan B masing-masing adalah [ ‘A’ , ‘B’ ] dan [ ‘C’ ], maka variabel C akan bernilai [ ‘A’, ‘B’, ‘C’ ].

Page 10: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Contoh lainnya: D := C - B ; { D = [ ‘A’, ‘B’ ] } E := C * B ; { D = [ ‘C’ ] }

7). Operator string : adalah operator yang digunakan untuk menggabungkan 2 atau lebih operan

string menjadi sebuah string yang lebih panjang, simbolnya adalah operator penjumlahan (+).

Contoh : S := ‘Turbo’ + ‘Pascal’ ; { sama artinya dengan S := ‘ Turbo Pascal’ ; }

Derajat Operator adalah suatu konsep yang muncul disebabkan adanya macam-macam operator.

Kegunaan dari derajat operator adalah menentukan operator mana yang harus dikerjakan lebih dahulu dan operator mana yang terakhir dikerjakan.

Sebagai contoh : x := 2 + 3 * 4 ; akan menghasilkan 14 (=2 + 12 ) atau 20 (= 5 * 4 ) ?

Tabel derajat operatorOperator Derajat@ not Tertinggi

* / div mod as and shl shr+ - or xor

= <> < > <= >= ln Terendah

Dari tabel nampak bahwa hasil dari pernyataan 2 + 3 * 4 adalah 14, hal ini disebabkan operator perkalian memiliki derajat lebih tinggi daripada operator penjumlahan, akibatnya operasi 3 * 4 harus dikerjakan dahulu baru kemudian dijumlah dengan 2.

Bila diinginkan sebuah operasi dikerjakan terlebih dahulu, maka letakkan operasi tersebut di dalam tanda kurung.

Contoh : x := ( 2 + 3 ) * 4 ; Maka nilai x bukan lagi 14 akan tetapi 20, hal ini dikarenakan operasi ( 2 + 3 ) diletakkan di dalam kurung, jadi harus dikerjakan terlebih dahulu.

PERCABANGAN

Salah satu bagian dari pemrograman yang paling sederhana, karena dalam suatu bentuk pemrograman akan mempunyai beberapa pilihan atau harus memilih salah satu dari dua algoritma.

Pernyataan dalam percabangan memungkinkan suatu pernyataan dieksekusi hanya jika suatu kondisi terpenuhi atau tidak terpenuhi.

1). Pernyataan if..else : adalah suatu pernyataan yang digunakan untuk menguji suatu kondisi.

Bila kondisi yang diuji terpenuhi, program akan menjalankan pernyataan-pernyataan tertentu, dan bila kondisi yang diuji salah, program akan menjalankan pernyataan-pernyataan lain.Bentuk umum pernyataannya :

if kondisi thenbegin { pernyataan-pernyataan yang dijalankan jika kondisi terpenuhi }end ;

Page 11: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

elsebegin { pernyataan-pernyataan yang dijalankan jika kondisi TIDAK

terpenuhi }end ;

kondisi sendiri merupakan suatu ekspresi bertipe boolean, yang artinya hanya dapat bernilai benar (true) atau salah (false).

Contoh:

if ( x > 0 ) then writeln ( ‘ x bilangan positif ’ )else writeln ( ‘ x BUKAN bilangan positif ’ )

Program ini akan menuliskan ‘ x bilangan positif ’ jika variabel x lebih besar daripada 0 dan menuliskan ‘ x BUKAN bilangan positif ’ jika variabel x lebih kecil atau sama dengan 0.

Pernyataan if..else tidak diletakkan di antara kata kunci begin dan end, kita tidak perlu menambahkan dua kata kunci ini jika pernyataan yang dituliskan hanya satu baris saja.

Bila tidak ingin mengerjakan sesuatu jika kondisi yang ditentukan tidak terpenuhi, dapat ditulis pernyataan if tanpa else, contoh :

if ( x < 0 ) then x := -x ;

Program tersebut jika x adalah bilangan negatif, nilainya akan dibuat menjadi positif dan jika x adalah bilangan positif, nilainya tidak berubah.

2). Pernyataan if..else if :Kadangkala pada kasus tertentu harus meletakkan pernyataan if lain setelah else.Contohnya sebagai berikut :

if ( x > 0 ) then writeln ( ‘ x bilangan positif ’ )else if ( x < 0 ) then writeln ( ‘ x bilangan negatif ’ )else writeln ( ‘ x adalah nol ‘ ) ;

Pada contoh, pertama-tama program mengecek nilai x lebih besar daripada 0 atau tidak, bila kondisi terpenuhi, program akan menulis ‘ x bilangan positif ‘. Sebaliknya bila tidak terpenuhi, program akan menjalankan pernyataan if kedua untuk mengecek nilai x lebih kecil daripada 0 atau tidak, jika kondisi ini terpenuhi, maka program akan menulis ‘ x bilangan negatif ‘ dan bila tidak terpenuhi, maka program akan menulis ‘ x adalah nol ‘.

3). Pernyataan case :digunakan untuk menyederhanakan konstruksi if..else if yang terlalu

banyak.Sebagai contoh, program berikut :

if ( x = 0 ) then writeln ( ‘ x bernilai 0 ’ )

else if ( x = 1 ) then writeln ( ‘ x bernilai 1 ’ )else if ( x = 2 ) then writeln ( ‘ x bernilai 2 ’ )else if ( x = 3 ) then writeln ( ‘ x bernilai 3 ’ )else

Page 12: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

writeln ( ‘ x TIDAK bernilai 0, 1, 2, ataupun 3 ’ ) ;Program diatas dapat diganti menjadi lebih ringkas dan mudah dibaca dengan program berikut :

case x of 0 : writeln ( ‘ x bernilai 0 ’ ) ; 1 : writeln ( ‘ x bernilai 1 ’ ) ; 2 : writeln ( ‘ x bernilai 2 ’ ) ; 3 : writeln ( ‘ x bernilai 3 ’ ) ;else writeln ( ‘ x TIDAK bernilai 0, 1, 2, ataupun 3 ’ ) ;end ;

Dapat disimpulkan bahwa walaupun hasil dari kedua program tersebut sama akan tetapi penulisan case lebih mudah dibaca.

PENGULANGANDigunakan untuk menjalankan satu atau beberapa pernyataan sebanyak beberapa kali, dengan kata lain pengulangan memungkinkan kita menjalankan beberapa pernyataan hanya dengan menuliskan pernyataan tersebut satu kali saja.

1). Pernyataan for :adalah pernyataan yang digunakan pada saat kita sudah mengetahui

berapa kali kita akan mengulang satu atau beberapa pernyataan, pernyataan ini sering digunakan.

Bentuk umumnya :

for pencacah := nilai_awal to nilai_akhir dobegin { pernyataan - pernyataan yang akan diulang } end ;

Bagian yang berisi pernyataan-pernyataan yang harus diulang sering disebut juga kalang (loop).Contoh berikut ini adalah program yang akan menuliskan string ‘TEKNIK ELEKTRO UAD’ sebanyak 5 kali :

for x := 1 to 5 do writeln ( ‘TEKNIK ELEKTRO UAD’ ) ;

Penulisan banyaknya tampilan dapat juga ditulis dimulai dengan nilai yang besar dan diakhiri dengan nilai yang kecil, hanya kata to diganti dengan down to.Contoh :

for x := 7 downto 3 do writeln ( ‘TEKNIK ELEKTRO UAD’ ) ;

2). Pernyataan for Bersarang :Dapat pula dituliskan pernyataan for di dalam pernyataan for, konstruksi semacam ini sering disebut pernyataan for Bersarang.

for x := 1 to 3 do for y := 1 to 2 do writeln ( x, ‘ ’ y ) ;

Kalang for yang luar (variabel pencacah x) akan menjalankan kalang yang dalam (variabel pencacah y) sebanyak 3 kali, dan pada setiap pengulangan dilayar akan ditulis nilai x dan y.

1 11 22 12 23 1

Page 13: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

3 2maka pada saat x bernilai 1, y akan diulang sebanyak 2 kali, jadi pada layar akan tertulis 1 1 dan 1 2. Demikian juga pada saat x bernilai 2, y akan diulang sebanyak 2 kali, jadi pada layar akan tertulis 2 1 dan 2 2, dan seterusnya dengan hal yang sama.

3). Pernyataan while : adalah pernyataan yang digunakan bila kita belum mengetahui pasti berapa banyak pernyataan-pernyataan yang diulang, berakhirnya pengulangan ini ditentukan oleh suatu kondisi.Bila sudah tidak terpenuhi maka pengulangan akan berakhir, dengan kata lain, selama kondisi masih terpenuhi, pengulangan akan terus dilakukan. Bentuk umumnya :

while kondisi dobegin { pernyataan - pernyataan yang akan diulang } end ;

kondisi sendiri merupakan suatu ekspresi boolean, yang artinya hanya dapat bernilai benar (true) atau salah (false).Contohnya :

while ( x > 0 ) dobegin x := x - 1 ; y := y - 1 ;end ;

Program ini akan mengulang dua pernyataan (x := x – 1) dan (y := y – 1) selama nilai x masih positif.

4). Pernyataan repeat ..until :Pernyataan ini hampir sama dengan pernyataan pengulangan while, dan biasanya digunakan bila jumlah pengulangan belum dapat ditentukan pada saat program ditulis.

Perbedaannya terletak pada posisi pengecekan kondisi (jika pada while, kondisi dicek pada awal kalang sedang repeat..until, kondisi dicek pada akhir kalang).Perbedaan yang lainnya, while mengulang pernyataan selama kondisi masih terpenuhi, sedang pada repeat..until mengulang pernyataan selama kondisi belum terpenuhi.

Bentuk umumnya :

repeat { pernyataan - pernyataan yang akan diulang } until kondisi ;

Contohnya :

repeatx := x - 1 ;y := y - 1 ;until ( x <= 0 ) ;

Program ini akan mengulang dua pernyataan (x := x – 1) dan (y := y – 1) hingga nilai x lebih kecil atau sama dengan 0.

5). Pernyataan break dan continue : Bila kita ingin menghentikan proses pengulangan di tengah eksekusi digunakan pernyataan break.Pernyataan break dapat juga digunakan pada pernyataan for, while, maupun repeat..until.

Page 14: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Contoh :

x := 0 ;while ( x >= 0 ) dobegin x := x + 1 ; if ( x > 100 ) then break ; end ;

Kalang pada contoh diatas sepertinya tidak akan pernah berakhir karena x selalu ditambah 1, padahal kondisi yang harus dipenuhi adalah (x >= 0), namun bila dijalankan setelah nilai x lebih besar daripada 100, pengulangan akan berhenti (hal ini disebabkan adanya pernyataan break).

Bentuk pernyataan khusus lain yang digunakan pada pengulangan adalah pernyataan continue. Pernyataan ini digunakan untuk mengembalikan aliran program ke pengujian kondisi pengulangan (dengan kata lain pernyataan-pernyataan di bawah continue akan diabaikan).Contoh :

for i := 0 to 100 dobegin

if ( ( i mod 3 ) < > 0 ) then continue ; writeln ( i ) ;end ;

Program ini akan menuliskan semua bilangan kelipatan 3 yang kurang dari 100, hal ini dikarenakan pada saat nilai pencacah pengulangan tidak habis dibagi 3, program memanggil pernyataan continue, akibatnya pernyataan writeln ( i ) tidak dipanggil.

Pernyataan break dan continue dapat juga digunakan pada pernyataan pengulangan bersarang (baik for, while maupun repeat..until), namun pada pernyataan bersarang, pernyataan break dan continue akan menghentikan atau melanjutkan kalang paling dalam.

Contoh-contoh soal dari tipe data dan macam-macam operator

1. Berapakah nilai variabel z pada program ini ?

var x, y, z : byte ;

Page 15: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

begin x := 10 ; y := 30 ; z := x * y ;end ;

Jawab : 44

2. Berapakah nilai variabel C, D, dan E pada program ini ?

var A, B : set of char ; C, D, E : set of char ;begin A := [ ‘A’, ‘B’, ‘C’, ‘D’, ‘E’ ] ; B := [ ‘D’, ‘E’, ‘F’, ‘G’ ] ; C := A + B ; D := A - B ; E := A * B ;end ;

Jawab :C = [ ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’ ] , D = [ ‘A’, ‘B’, ‘C’ ], E = [ ‘D’, ‘E’ ]

3. Tulislah program untuk memformat tampilan bilangan bulat sehingga terdapat tambahan ‘0’ apabila jumlah digit dari bilangan tersebut kurang dari digit maksimum.Sebagai contoh, jika ditentukan digit maksimum adalah 3, maka 1 harus ditulis ‘001’, 83 harus ditulis ‘083’.Contoh lain, jika ditentukan digit maksimum adalah 5, maka 15 harus ditulis ‘00015’, 623 harus ditulis ‘00623’, dan seterusnya.Masukkan dari program ini adalah dua bilangan bulat yaitu nilai yang akan diformat dan lebar pemformatan.Keluaran dari program ini adalah string hasil pemformatan.

Jawab :Pertama-tama, masukkan berupa bilangan bulat harus dikonversikan ke string, setelah itu di depan string tersebut disisipkan karakter ‘0’ yang panjangnya sama dengan digit maksimum dikurangi panjang string. Secara umum, algoritma ini dapat ditulis sebagai berikut :1. Masukkan angka, digit.2. temp ¬ angka setelah dikonversikan ke string.3. hasil ¬ untaian karakter ‘0’ sebanyak digit - length (temp).4. hasil ¬ hasil + temp5. Tulis hasil.Program berikut ini adalah contoh pemformatan bilangan bulat :

var angka : integer ; digit : byte ; temp : string ; hasil : string ;begin write ( ‘ Masukkan angka : ‘ ) ; readln ( angka ) ; write ( ‘ Masukkan jumlah digit maksimum : ‘ ) ; readln ( digit ) ; hasil := ‘’ ; string ( angka, temp ) ; if ( digit > length ( temp ) ) then begin fillchar ( hasil [ 1 ] , digit - length ( temp ) , ‘0’ ) ; hasil [ 0 ] := chr ( digit - length ( temp ) ) ; end ; hasil := hasil + temp ;

Page 16: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

writeln ( ‘ Hasil pemformatan : ‘, hasil ) ;end ;

Nampak bahwa pemrograman diatas menggunakan prosedur fillchar untuk mengisi variabel hasil dengan untaian karakter ‘0’ sebanyak digit - length (temp).Nampak pula bahwa program diatas mengeset panjang variabel hasil, dengan cara memberikan panjang string tersebut pada hasil [ 0 ].

Keluaran program diatas adalah sebagai berikut :

Masukkan angka : 283Masukkan jumlah digit maksimum : 5Hasil pemformatan : 00283

Masukkan angka : 4957Masukkan jumlah digit maksimum : 7Hasil pemformatan : 0004957

4. Berapakah nilai x, y, dan z pada program ini ?

var a, b, c : integer ; x, y, z : integer ;begin a := 4 ; b := 7 ; c := 10 ; x := a + ( b shl 2 ) * c ; y := c * b mod a ; z := ( b shl a ) div c ;end ;

JAWAB : x = 284; y = 2; z = 11.

5. Berapakah nilai x dan y pada program ini ?

var a, b, c : integer ; x, y : integer ;begin a := 3 ; b := 4 ; c := 5 ; x := a and b or c ; y := a or ( b shr 2 ) or ( c shl 1) ;end ;

JAWAB : x = 5; y = 11.

6. Tulislah program untuk menampilkan jumlah hari, jam, menit, dan detik dari masukkan yang berupa lamanya waktu dalam detik.

JAWAB :Untuk menentukan algoritma penghitungan hari, jam, menit dan detik, misal masukkan yang diberikan adalah 100.000 detik, maka langkah-langkah perhitungan tersebut dapat dituliskan sbb :1. Banyaknya hari = 100.000 / (60*60*24) = 100.000 / 86.400 = 1 hari.2. Banyaknya jam = (100.000 – 1 * 86.400) / (60*60) = 13.600 / 3.600 = 3

jam.3. Banyaknya menit = (13.600 – 3 * 3.600) / 60 = 2.800 / 60 = 46 menit.4. Banyaknya detik = (2.800 – 46 * 60) = 2.800 – 2.760 = 40 detik.

Page 17: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Berdasarkan contoh diatas, dapat dituliskan algoritma pencarian hari, jam, menit, dan detik adalah sbb :1. Masukkan detik.2. hr ¬ detik / 86400.3. detik ¬ detik – hr * 86400.4. jm ¬ detik / 3600.5. detik ¬ detik – jm * 3600.6. mn ¬ detik / 60.7. detik ¬ detik – mn * 60.8. dt ¬ detik.9. Tulis hr, jm, mn, dt.Program berikut ini adalah salah satu contoh program perhitungan hari, jam, menit, detik :

const SatuHari = 60 * 60 * 24 ;var detik : longint ; hr, jm, mn, dt : integer ; begin

write ( ‘ Masukkan waktu ( detik ) : ‘ ) ;readln ( detik ) ;writeln ( detik, ‘ detik terdiri dari : ‘ ) ;

hr := detik div SatuHari ;detik := detik - hr * SatuHari ;

jm := detik div 3600 ;detik := detik - jm * 3600 ;

mn := detik div 60 ;dt := detik - mn * 60 ;

writeln ( hr, ‘ hari ‘ ) ;writeln ( jm, ‘ jam ‘ ) ;writeln ( mn, ‘ menit ‘ ) ;writeln ( dt, ‘ detik ‘ ) ;

end ;

Keluaran program di atas adalah sbb :

Masukkan waktu ( detik ) : 100000100000 detik terdiri dari :1 hari3 jam46 menit40 detik

Masukkan waktu ( detik ) : 36003600 detik terdiri dari :0 hari1 jam0 menit0 detik

Contoh-contoh soal dari percabangan dan pengulangan

1. Tulislah program yang menampilkan ‘Genap’ jika suatu bilangan adalah bilangan genap atau ‘Ganjil’ jika bilangan tersebut adalah bilangan ganjil.Masukkan program ini adalah bilangan bulat, yaitu X, dimana 0 £ X £ 65535.

Page 18: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

0

6

3

1

24

5

Keluaran dari program ini adalah ‘Bilangan genap’ atau ‘Bilangan ganjil’.

JAWAB :Suatu bilangan dikatakan bilangan genap jika habis dibagi 2, dengan demikian algoritma pengecekan bilangan genap atau ganjil dapat dituliskan sbb :1. Masukkan X.2. Jika (X habis dibagi 2) maka kerjakan baris 3, jika tidak kerjakan baris 4.3. Tulis ‘Bilangan genap’, selesai.4. Tulis ‘Bilangan ganjil’.

Berikut ini adalah contoh program untuk mengecek suatu bilangan termasuk bilangan ganjil atau bilangan genap :

varX : word ;

beginwrite ( ‘ Masukkan suatu bilangan : ‘ ) ;readln ( X ) ;if ( X mod 2 = 0 ) then writeln ( ‘ Bilangan genap ’ )else writeln ( ‘ Bilangan ganjil ’ )

end ;

Keluaran dari program di atas adalah sbb :

Masukkan suatu bilangan : 5Bilangan ganjil

Masukkan suatu bilangan : 16Bilangan genap

2. [Penampil Tujuh Segmen] Tulislah program untuk menampilkan bilangan bulat satu digit dalam format penampil tujuh segmen (seven segmen display). Hanya untuk menampilkan satu digit saja. Gunakan karakter ‘ ½ ‘ dan ‘ ¾ ‘ untuk menggambar penampil tujuh segmen tersebut :

Masukkan dari program ini adalah satu digit angka dengan tipe char.Keluaran dari program ini adalah tampilan tujuh segmen dari satu digit angka tersebut.

JAWAB :Sebelum membuat program penampil tujuh segmen, mula-mula harus memberi nomor pada masing-masing segmen (terserah memberi nomor seperti apa), biasanya yang standar dalam pemberian penomoran penampil tujuh segmen sbb :Segmen pertama adalah segmen paling atas,Segmen kedua adalah segmen sebelah kanan atas,dan seterusnya.Langkah berikutnya adalah membuat konstanta bertipe byte yang mewakilkan angka 0 sampai dengan 9.Bit-bit pada masing-masing konstanta menunjukkan nyala atau tidaknya suatu segmen.Sebagai contoh, bit pertama menyatakan nyala tidaknya segmen paling atas, bit kedua menyatakan nyala tidaknya segmen kanan atas, dst.

Page 19: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Dengan demikian, untuk angka 0 akan diperoleh kombinasi bit-bit sebagai berikut : 0011 1111 (=$3F), artinya hanya segmen bagian tengah saja yang tidak menyala.Berikut ini adalah daftar kombinasi bit selengkapnya untuk angka 0 sampai dengan 9 : 0 ® 0011 1111 ® $3F 1 ® 0000 0110 ® $06 2 ® 0101 1011 ® $5B 3 ® 0100 1111 ® $4F 4 ® 0110 0110 ® $66 5 ® 0110 1101 ® $6D 6 ® 0111 1101 ® $7D 7 ® 0000 0111 ® $07 8 ® 0111 1111 ® $8F 9 ® 0110 1111 ® $6F

Program berikut ini adalah contoh penampil tujuh segmen untuk satu digit angka :

const OnOff : array [ 0..9 ] of byte = ( $3F, $06, $5B, $4F, $66, $6D, $7D, $07, $8F, $6F ) ;

var digit : char ; angka : byte ; i : byte ;begin write ( ‘ Masukkan satu digit angka : ‘ ) ; readln ( digit ) ; angka := ord ( digit ) - $30 ; if ( digit >= ‘ 0 ’ ) and ( digit <= ‘ 9 ’ ) then begin if ( OnOff [angka] and 1 = 1 ) then

writeln ( ‘ ¾ ‘ ) else

writeln ; if ( OnOff [angka] and ( 1 shl 5 ) < > 0 ) then

write ( ‘½‘ ) else

write ( ‘ ‘ ) ;

if ( OnOff [angka] and ( 1 shl 1 ) < > 0 ) thenwriteln ( ‘½‘ )

elsewriteln ;

if ( OnOff [angka] and ( 1 shl 6 ) < > 0 ) thenwriteln ( ‘ ¾ ‘ )

elsewriteln ;

if ( OnOff [angka] and ( 1 shl 4 ) < > 0 ) thenwrite ( ‘½‘ )

elsewrite ( ‘ ‘ ) ;

if ( OnOff [angka] and ( 1 shl 2 ) < > 0 ) thenwriteln ( ‘½‘ )

elsewriteln ;

Page 20: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

if ( OnOff [angka] and ( 1 shl 3 ) < > 0 ) thenwriteln ( ‘ ¾ ‘ ) ;

end ; else

writeln ( ‘ Yang Anda masukkan bukan angka ‘ ) ;end ;

Keluaran program diatas adalah sbb :

Masukkan satu digit angka : 5

Masukkan satu digit angka : kYang Anda masukkan bukan angka

3. [Rata-rata dan Standar Deviasi]Tulislah program untuk mencari rata-rata dan standar deviasi dari sekumpulan data yang dimasukkan pengguna.Masukkan dari program ini adalah satu bilangan bulat yang menyatakan jumlah data (= N) serta bilangan real sejumlah N.Keluaran dari program ini adalah rata-rata dan standar deviasi dari masukkan di atas.

JAWAB :Rumus mencari rata-rata dari data Xi yang berjumlah N adalah sbb :

Rumus mencari standar deviasi dari data Xi, yang berjumlah N adalah sbb :

Dengan demikian algoritma pencarian rata-rata untuk data X [ i ] yang berjumlah N dapat dituliskan sebagai berikut :1. jumlah ¬ 0.0.2. i ¬ 1.3. Selama (i <= N) kerjakan baris 4 dan 5.4. jumlah ¬ jumlah + X [ i ].5. i ¬ i + 1.6. rata ¬ jumlah / N.7. tulis rata.

Algoritma pencarian standar deviasi dapat dituliskan sebagai berikut :1. jumlah ¬ 0.0.2. i ¬ 1.3. Selama (i <= N) kerjakan baris 4 dan 5.4. jumlah ¬ jumlah + sqr (rata - X [ i ]).5. i ¬ i + 1.6. sd ¬ sqrt (jumlah / (N – 1 )).7. tulis sd.

Berikut ini adalah contoh program untuk menghitung rata-rata dan standar deviasi :

Page 21: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

constMax = 100 ;

varN : integer ;X : array [ 1..Max ] of real ;i : integer ;jumlah : real ;rata, sd : real ;

beginwrite ( ‘ Masukkan jumlah data : ‘ ) ;readln ( N ) ;jumlah := 0.0 ;for i := 1 to N do ;begin write ( ‘X [ ‘, i, ‘ ] = ‘ ) ; readln ( X [ i ] ) ; jumlah := jumlah + X [ i ] ;end ;rata-rata := jumlah / N ;jumlah := 0.0 ;for i := 1 to N do jumlah := jumlah + sqr ( rata - X [ i ] ) ;

sd := sqrt ( jumlah / ( N – 1 ) ) ;writeln ( ‘ Rata-rata : ‘, rata : 1 : 3 ) ;writeln ( ‘ Standar Deviasi : ‘, sd : 1 : 3 ) ;

end ;

Keluaran program di atas adalah sebagai berikut :

Masukkan jumlah data : 8X [ 1 ] = 7X [ 2 ] = 10X [ 3 ] = 9X [ 4 ] = 4X [ 5 ] = 5X [ 6 ] = 6X [ 7 ] = 8X [ 8 ] = 9Rata-rata : 7.250Standar Deviasi : 2.121

4. [Konversi Basis Bilangan]Tulislah program untuk mengkonversikan bilangan dalam format desimal menjadi bilangan dalam format biner.Masukkan dari program ini adalah bilangan bulat dalam format desimal.Keluaran dari program ini adalah string yang merupakan pengkonversian masukkan ke format biner.

JAWAB :Pengkonversian bilangan dalam format desimal ke biner dapat dilakukan dengan membagi bilangan tersebut dengan 2 sampai tidak dapat dibagi lagi.Sebagai contoh, 12 dapat dikonversikan ke format biner dengan cara berikut :12 / 2 = 6 sisa 06 / 2 = 3 sisa 03 / 2 = 1 sisa 11 / 2 = 0 sisa 1Jadi 12 = 1100b.

Berikut ini adalah contoh lain, yaitu 123.123 / 2 = 61 sisa 161 / 2 = 30 sisa 1

Page 22: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

30 / 2 = 15 sisa 015 / 2 = 7 sisa 17 / 2 = 3 sisa 13 / 2 = 1 sisa 11 / 2 = 0 sisa 1Jadi 123 = 0111 1011b.

Untuk kebalikannya, yaitu dari format biner ke format desimal dapat dilakukan dengan mengalikan masing-masing bit dengan 2n.Contoh :

1100b = (1 * 23) + (1 * 22) + (0 * 21) + (0 * 20) = 8 + 4 + 0 + 0 = 12.

0111 1011b = (0 * 27) + (1 * 26) + (1 * 25) + (1 * 24) + (1 * 23) + (0 * 22) + (1 * 21) + (1 * 20) = 0 + 64 + 32 + 16 + 8 + 2 + 1 = 123.

Dari contoh-contoh diatas dapat disimpulkan algoritma pengkonversian bilangan desimal ke biner adalah sebagai berikut :1. Masukkan x.2. xb ¬ ‘’.3. sisa ¬ 0.4. Kerjakan baris 4 sampai dengan 7 sampai ( x = 0 ).5. sisa ¬ x mod 2.6. x ¬ x div 2.7. xb ¬ hasil pengkonversian (sisa) ke string + xb.

Berikut ini adalah contoh program untuk mengkonversikan bilangan desimal ke biner :

varx : integer ;sisa : integer ;xb : string ;

beginwrite ( ‘ Masukkan x : ‘ ) ;readln ( x ) ;write ( ‘ x dalam format biner : ‘ ) ;

xb := ‘’ ;sisa := 0 ;repeat

sisa := x mod 2 ;x := x div 2 ;xb := chr ( sisa + $30 ) + xb ;

until ( x = 0 ) ;

writeln ( xb ) ;end ;

Keluaran program di atas adalah sebagai berikut : Masukkan x : 123x dalam format biner : 1111011

Masukkan x : 255x dalam format biner : 11111111

Masukkan x : 32767x dalam format biner : 111111111111111

Masukkan x : 204x dalam format biner : 11001100

Page 23: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

SUBRUTIN

Pada PASCAL ada 2 macam subrutin yaitu : 1. Prosedur.2. Fungsi.

Page 24: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Persamaannya : Digunakan untuk melaksanakan tugas tertentu.Perbedaannya : Pada prosedur tidak mengembalikan suatu nilai setelah

dipanggil, sedang pada fungsi selalu mengembalikan suatu nilai setelah dipanggil.

Subrutin diperlukan, karena dalam program yang besar, akan lebih baik jika tugas tertentu dilakukan oleh Subrutin tertentu, sehingga program menjadi lebih mudah dibaca dan pelacakan kesalahan program juga menjadi lebih mudah.Contoh :

begin BacaData ; ProsesData ; TulisHasil ;end ;

Apabila terjadi kesalahan dalam pembacaan data maka fokuskan pada BacaData, jika terjadi kesalahan dalam penulisan hasil maka fokuskan pada TulisHasil, dst.

Sintaks penulisan “prosedur” secara umum :procedur nama_prosedur ( parameter 1; parameter 2; … )begin { pernyataan-pernyataan }end ;

Sintaks penulisan “fungsi” secara umum :function nama_fungsi ( parameter 1; parameter 2; … ) :tipe_kembalianbegin { pernyataan-pernyataan }end ;

nama_prosedur dan nama_fungsi merupakan nama yang diberikan ke prosedur dan fungsi.

tipe_kembalian adalah tipe data dari nilai yang dikembalikan oleh fungsi. parameter 1; parameter 2; … merupakan informasi yang diberikan ke

prosedur dan fungsi.

Contoh :

a. Sebuah prosedur dengan nama Prosedurku :

procedure Prosedurku ;begin { pernyataan-pernyataan }end ;

b. Sebuah fungsi dengan nama fungsiku :

function Fungsiku : integer ;begin { pernyataan-pernyataan }end ;

contoh diatas masih belum memiliki parameter.

Contoh Subrutin dengan parameter (penentuan tipe parameter sesuai dengan maksud pemrograman).

procedure Coba ( S: string ) ;begin

{ pernyataan-pernyataan }end ;

Bila prosedur atau fungsi memerlukan beberapa parameter, masing-masing parameter dipisahkan dengan titik koma.Contoh :

Page 25: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

procedure Cobalagi ( S: string ; X: integer ) ;begin

{ pernyataan-pernyataan }end ;

Parameter dengan tipe sama, cukup tulis tipe satu kali saja tetapi masing-masing parameter dipisahkan dengan tanda koma.Contoh :

function Lagilagicoba ( i , j : longint ) : longint ;begin

{ pernyataan-pernyataan }end ;

Fungsi diatas memerlukan dua parameter bertipe longint , yaitu i dan j, serta mempunyai tipe kembalian longint.Untuk mengembalikan nilai pada suatu fungsi, beri nilai pada variabel yang bernama sama dengan nama fungsinya.Sebagai contoh untuk Lagilagicoba dapat dituliskan sebagai berikut :

function Lagilagicoba ( i , j : longint ) : longint ;begin

Lagilagicoba := i + j ;end ;

Pemanggilan sebuah prosedur atau fungsi dilakukan dengan menyebutkan namanya.Contoh :

Prosedurku ;Bila ada parameter, letakkan parameter di dalam tanda ( ).Contoh :

Coba ( ‘ PASCAL’ ) ;artinya memanggil prosedur Coba dengan parameter ‘ PASCAL’.Contoh lain :

Cobalagi ( ‘ PASCAL’ , 100 ) ;Untuk menangkap nilai kembalian dari sebuah fungsi, maka harus tersedia variabel.Contoh :

X := Lagilagicoba ( 2, 5 ) ;Dalam melewatkan parameter ke sebuah prosedur atau fungsi dapat dengan nilai atau dengan referensi. Jika dengan nilai maka Subrutin yang dipanggil tidak dapat mengubah

nilainya. Jika dengan referensi maka Subrutin yang dipanggil dapat mengubah

nilainya, dengan menambah kata kunci var di depan nama parameter.Contoh :

procedure Coba ( var i , j : longint ) ;begin i := 100 ; j := 200 ;end ;

(nilai parameter i dan j diubah menjadi 100 dan 200, jika var hilang, maka nilai parameter i dan j tidak akan berubah setelah prosedur Coba dipanggil, jadi i dan j hanya akan bernilai 100 dan 200 pada prosedur Coba saja).

Di dalam maupun diluar dari suatu prosedur atau fungsi, dapat dideklarasikan suatu tipe, variabel, atau konstanta yang bersifat lokal, dengan demikian sifatnya global.Contoh :

var

Page 26: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Global : integer ;

procedure Coba ;var Lokal : integer :beginend ;

REKURSI

Rekursi adalah kemampuan suatu rutin untuk memanggil dirinya sendiri.Jadi Rekursi memungkinkan memanggil suatu prosedur dari dalam prosedur itu sendiri.Rekursi diperlukan karena ada beberapa kasus yang akan jauh lebih mudah diselesaikan, namun hal itu kadang-kadang harus mengorbankan efisiensi dan kecepatan, selain itu masalah yang sering muncul yaitu eksekusi yang tidak pernah berhenti, akibatnya memori bertumpuk akan habis (bottle neck) dan komputer menjadi “HANG”.

Contoh-contoh Rekursi (fungsi yang dapat diubah ke bentuk Rekursi ) :

a) Faktorial : (fungsi ffaktorial dari bilangan bulat positif ‘n’)

Bentuknya : n! = n.(n - 1)! , jika n > 1n! = 1, jika n = 0, 1Contoh :

4! = 4 . 3!4! = 4 . 3. 2!4! = 4 . 3. 2. 1!4! = 4 . 3 . 2 . 14! = 24

Perhitungan faktorial dengan menggunakan proses pengulangan hasilnya lebih efisien dibandingkan dengan Rekursi.Contoh fungsi penghitung faktorial :

function Faktorial ( n : byte ) : longint ; begin if ( n = 0 ) or ( n = 1 ) then

Faktorial := 1 else

Faktorial := n * Faktorial ( n – 1 ) ; end ;

Pada baris pertama dari fungsi diatas, nilai ‘n‘ dicek apakah sama dengan 0 atau 1. Jika ya, maka fungsi mengembalikan nilai 1. Jika tidak, fungsi mengembalikan nilai n * Faktorial ( n – 1 ) ; hal inilah letak proses Rekursi itu, yaitu fungsi Faktorial memanggil dirinya sendiri tetapi dengan parameter ( n – 1 ).

Untuk memahami bagaimana proses Rekursi berlangsung, tambahkan 2 pernyataan untuk menulis nilai ‘n’, seperti contoh berikut :

function Faktorial ( n : byte ) : longint ;begin writeln ( ‘ Atas : ‘, n ) ; if ( n = 0 ) or ( n = 1 ) then Faktorial := 1 else Faktorial := n * Faktorial ( n – 1 ) ; writeln ( ‘ Bawah ‘ , n ) ;end ;

Untuk nilai n = 3, maka fungsi diatas akan menampilkan keluaran sebagai berikut :

Atas : 3

Page 27: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Atas : 2Atas : 1Bawah 1Bawah 2Bawah 3

Diagram aliran prosesnya :

Faktorial (3) 3 * 2 = 6

3 * Faktorial (2) 2 * 1 = 2

2 * Faktorial (1) 1

Proses dimulai dari sebelah kiri, yaitu pemanggilan fungsi Faktorial (3), fungsi ini kemudian melakukan proses Rekursi dengan memanggil fungsi Faktorial (2), dst. Hasil akhir proses ada di sebelah kanan, mulai dari kembalian Faktorial (1), yaitu 1, kembalian Faktorial (2), yaitu 2, dst.

b) Bilangan Fibonacci :Bentuknya : fn = fn-1 + fn-2 ; untuk n > 1

f0 = 0f1 = 1

Berikut ini adalah barisan bilangan Fibonacci mulai dari n =1,

1 1 2 3 5 8 13 21 …Contoh untuk n = 3, proses perhitungan Fibonacci dapat dilakukan sbb :

f3 = f2 + f1 f3 = (f1 + f0) + f1

f3 = (1 + 0) + 1f3 = 2

Contoh fungsi penghitung bilangan Fibonacci dalam bahasa PASCAL :

function Fibonacci ( n : byte ) : longint ;begin if ( n = 0 ) then Fibonacci := 0 else if ( n = 1 ) then Fibonacci := 1 else Fibonacci := Fibonacci ( n – 1 ) + Fibonacci ( n – 2 ) ;end ;

Diagram aliran prosesnya :

Faktorial (3)

Faktorial (2)

Faktorial (1)

Fibonacci (3)

Fibonacci (2) Fibonacci

Fibonacci (1)Fibonacci (0)

Page 28: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Jumlah pemanggilan fungsi Fibonacci akan bertambah secara eksponensial.Contoh :

Untuk n = 2 yaitu hanya terjadi 2 kali pemanggilan fungsi Fibonacci. Untuk n = 3 yaitu hanya terjadi 4 kali pemanggilan fungsi Fibonacci. Untuk n = 4 yaitu hanya terjadi 8 kali pemanggilan fungsi Fibonacci. dst.Hal inilah yang menyebabkan mengapa Rekursi dalam banyak kasus tidak lebih efisien dibandingkan dengan program yang menggunakan pengulangan.

c) Faktor Persekutuan Terbesar :Prinsipnya yaitu membagi dua bilangan bulat terus-menerus hingga sisa

pembagiannya adalah 0.Contoh fungsinya :

function FPB ( m, n : integer ) : integer ;begin if ( m = 0 ) then FPB := n else if ( m < n ) then FPB := FPB ( n, m ) else FPB := FPB ( m mod n, n ) ;end ;

Contoh proses pencarian FPB untuk 228 dan 90 :

Pertama-tama, terjadi pemanggilan fungsi FPB (228 , 90), karena m > n, maka terjadi pemanggilan fungsi FPB (228 mod 90 , 90) atau FPB (48 , 90).Karena m < n, maka terjadi pemanggilan fungsi FPB (90 , 48). Demikian seterusnya hingga pemanggilan fungsi FPB (0 , 6), yang artinya proses selesai karena m bernilai 0, dengan demikian FPB yang dicari sama dengan n atau 6.

PENGURUTAN

Algoritma pengurutan adalah algoritma untuk meletakkan kumpulan elemen data ke dalam urutan tertentu, berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen.

FPB ( 228 , 90 ) m > n

FPB ( 48 , 90 )

FPB ( 90 , 48 )

FPB ( 0 , 6 )

FPB ( 42 , 48 )

FPB ( 42 , 6 )

FPB ( 48 , 42 )

FPB ( 6 , 42 )

m < n

m > n

m < n

m > n

m < n

m > n

m = 0

Page 29: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Tujuannya adalah mengatur sekumpulan data menurut urutan tertentu, misalnya urut naik atau urut turun, agar data tersebut dapat dilihat dengan mudah.

Metode pengurutan data biasanya dipakai untuk pengurutan data pada larik dan berkas (file), akan tetapi pada pengurutan data berkas (file) biasanya diperlukan jika kapasitas memori terbatas sehingga pengurutan data larik tidak memungkinkan.

Pada beberapa metode pengurutan, akan ditemukan pemanggilan prosedur “Tukar”, yang berguna menukar isi dua variabel.Contohnya :

procedure Tukar ( var Data1, Data2 : word ) ;var Temp : word ;begin Temp := Data1 ; Data1 := Data2 ; Data2 := Temp ;end ;

Contoh pengurutan data (bilangan bulat berjumlah sembilan), yaitu:

12 35 9 11 3 17 23 15 31

Data diatas akan diurutkan menjadi urut naik, maka data tersebut tersusun sbb:

3 9 11 12 15 17 23 31 35

Dua hal yang biasa dipakai untuk menilai baik tidaknya suatu metode pengurutan adalah, yang pertama sebagai jumlah pembandingan yang dilakukan atau sering disingkat dengan simbol C, yang kedua sebagai jumlah penukaran atau penggeseran data yang dilakukan atau sering disingkat dengan simbol M.

Metode pengurutan ada 6 macam, yaitu :1. Penyisipan langsung ( straight insertion sort )2. Penyisipan biner ( binary insertion sort )3. Seleksi ( selection sort )4. Gelembung ( bubble sort )5. Shell ( Shell sort )6. Quick ( Quick sort )

1) Metode penyisipan langsung :Metode ini hampir sama dengan mengurutkan kartu pada saat kita bermain kartu.Proses pengurutan (urut naik) dengan metode ini adalah :Data dicek satu per satu mulai dari yang kedua hingga yang terakhir, apabila ditemukan data yang lebih kecil daripada data sebelumya, maka data tersebut disisipkan pada posisi yang sesuai.

Algoritmanya :1. i ¬ 2.2. Selama ( i <= N ) kerjakan baris 3 sampai dengan 10.3. x ¬ Data [ i ].4. Data [ 0 ] ¬ x.5. j ¬ i -1.6. Selama ( x < Data [ j ] ) kerjakan baris 7 dan 8.7. Data [ j + 1 ] ¬ Data [ j ].8. j ¬ j - 1.9. Data [ j + 1 ] ¬ x.10. i ¬ i + 1.

Prosesnya :

Iterasi Data [1] Data [2] Data [3] Data [4] Data [5] Data [6] Data [7] Data [8] Data [9]

Page 30: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Awal 12 35 9 11 3 17 23 15 31i = 2 12 35 9 11 3 17 23 15 31i = 3 12 35 9 11 3 17 23 15 31i = 4 9 12 35 11 3 17 23 15 31i = 5 9 11 12 35 3 17 23 15 31i = 6 3 9 11 12 35 17 23 15 31i = 7 3 9 11 12 17 35 23 15 31i = 8 3 9 11 12 17 23 35 15 31i = 9 3 9 11 12 15 17 23 35 31Akhir 3 9 11 12 15 17 23 31 35

Diperlukannya Data [ 0 ], untuk menghindari jika data yang sedang dipindahkan lebih kecil daripada Data [ 1 ]. Apabila tidak ada Data [ 0 ], maka kondisi ( x < Data [ j ] ) akan selalu terpenuhi, artinya kalang ( loop) tidak akan pernah berhenti.Contoh prosedur yang menggunakan penyisipan langsung (urut naik) :

procedure MPL ;var i, j, x : word ;begin for i := 2 to N do begin

x := Data [ i ] ; Data [ 0 ] := x ; j := i - 1 ;

while ( x < Data [ j ] ) do begin Data [ j + 1 ] := Data [ j ] ; dec ( j ) ; end ; Data [ j + 1 ] := x ;

end ; end ;Dari algoritma dan program di atas, dapat disimpulkan bahwa jumlah pembanding (= C) dan penggeseran (= M) untuk metode penyisipan langsung bergantung pada keadaan data.Berikut ini adalah jumlah pembanding minimum rata-rata, dan maksimum untuk metode penyisipan langsung.

Cmin = N – 1

Crata-rata =

Cmax =

Jumlah pembanding minimum terjadi jika data sudah dalam keadaan urut , sebaliknya jumlah pembanding maksimum terjadi jika data dalam keadaan urut terbalik.Cara menghitung Cmin adalah dengan melihat kalang paling luar, yaitu i (pengulangan dimulai dari 2 sampai dengan N atau sama dengan N – 1).Cara menghitung Cmax adalah dengan menganggap bahwa selalu terjadi penggeseran, kalang while..do di atas akan melakukan pengulangan dari i sampai dengan 0 (kenapa 0 tidak 1, karema data dalam keadaan urut turun), bila hal ini dilakukan selama N – 1 kali, berarti Cmax adalah jumlah dari deret aritmatik 2, 3, 4, …, N. ( perlu diingat bahwa jumlah deret

aritmatik 2, 3, 4, …, N adalah . (2 + N).

Cara menghitung Crata-rata adalah dengan menjumlahkan Cmin dengan Cmax

kemudian membaginya dengan 2.

Page 31: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Untuk jumlah penggeseran minimum, rata-rata, dan maksimum untuk metode penyisipan langsung adalah :

Mmin = 2. (N – 1)

Mrata-rata =

mmax =

2) Metode penyisipan biner :Metode ini merupakan pengembangan dari metode penyisipan langsung, idenya didasarkan pada kenyataan bahwa saat akan menggeser data ke-i, data ke-1 sampai dengan I – 1 yang sebenarnya sudah dalam keadaan urut.Sebagai contoh, untuk kasus diatas yaitu pada saat i = 8, data yang akan dipindahkan adalah 15, sedang data di sebelah kiri 15 adalah sbb :

3 9 11 12 17 23 35

Pertama-tama dicari data pada posisi paling tengah di antara data diatas, data yang terletak di tengah adalah data keempat, yaitu 12. Karena 12 < 15, maka 15 akan diletakkan disisi kanan 12, oleh karena itu proses pencarian dilanjutkan lagi tetapi untuk data berikut :

17 23 35

Dari hasil ini, didapat data tengahnya adalah data 23, karena 15 < 23 berarti 15 harus diletakkan disisi kiri 23, proses dilanjutkan kembali tetapi kali ini dengan data yang hanya berjumlah 1, yaitu 17 saja, karena 17 > 15, maka 15 harus diletakkan tepat di sebelah kiri 17.

Algoritmanya :1. i ¬ 2.2. Selama ( i <= N ) kerjakan baris 3 sampai dengan 14.3. x ¬ Data [ i ].4. l ¬ 1.5. r ¬ i - 1.6. Selama ( l <= r ) kerjakan baris 7 dan 8.7. m ¬ (l + r) / 2.8. Jika ( x < Data [ m ]) maka r ¬ m - 1, jika tidak l ¬ m + 1.9. j ¬ i - 1.10.Selama ( j >= l ) kerjakan baris 11 dan 12.11.A [ j + 1 ] ¬ A [ j ].12. j ¬ j - 1.13.Data [ l ] ¬ x.14. i ¬ i + 1.

Contoh prosedur yang menggunakan metode penyisipan biner (urut naik) :

procedure BIS ;var i, j, x : word ; l, r, m : word ;begin for i := 2 to N do begin

x := Data [ i ] ;l := 1 ;r := i – 1 ;while ( l <= r ) dobegin

m := (l + r ) div 2 ;if (x < Data [ m ]) then

Page 32: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

r := m – 1else

l := m + 1 ; end ; for j := i – 1 down to 1 do Data [ j + 1 ] := data [ j ] ;

Data [ l ] := x ;end ;

end ;Dari algoritma dan program di atas, dapat disimpulkan bahwa jumlah penggeseran (= M) untuk metode penyisipan biner sama dengan penyisipan langsung, yang berbeda adalah jumlah pembanding (= C) yang dilakukan. Jumlah pembanding untuk metode penyisipan biner adalah.

C =

3) Metode seleksi :Metode yang melakukan pengurutan dengan mencari data yang terkecil kemudian menukarkannya dengan data yang digunakan sebagai acuan atau yang sering disebut pivot.

Proses pengurutan (urut naik) dengan metode ini adalah :Mula-mula dilakukan pengulangan dari 1 sampai dengan (N – 1), pada setiap pengulangan dicari data yang paling kecil di antara data ke-(i + 1) sampai dengan data terakhir (= N), data terkecil ini kemudian ditukarkan dengan pivot, yaitu data ke-i, yang tentu saja, apabila data terkecil tersebut lebih besar daripada data ke-i, proses penukaran tidak perlu dilakukan.

Algoritmanya :1. i ¬ 1.2. Selama ( i <= N -1 ) kerjakan baris 3 sampai dengan 9.3. k ¬ i .4. j ¬ i +1.5. Selama ( j <= N ) kerjakan baris 6 dan 7.6. Jika (Data [ k ] > Data [ j ]) maka k ¬ j.7. j ¬ j + 1 .8. Tukar Data [ i ] dengan Data [ k ].9. i ¬ i + 1.

Contoh prosedur yang menggunakan metode seleksi (urut naik) :

procedure MS ;var i, j, k : word ;begin for i := 1 to N - 1 do begin

k := i ;

for j := i + 1 to N doif (Data [ k ] > Data [ j ]) then

k := j ;

Tukar (Data [ i ], Data [ k ]);end ;

end ;Prosesnya :

Iterasi Data [1] Data [2] Data [3] Data [4] Data [5] Data [6] Data [7] Data [8] Data [9]

Awal 12 35 9 11 3 17 23 15 31i = 1 12 35 9 11 3 17 23 15 31

Page 33: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

i = 2 3 35 9 11 12 17 23 15 31i = 3 3 9 35 11 12 17 23 15 31i = 4 3 9 11 35 12 17 23 15 31i = 5 3 9 11 12 35 17 23 15 31i = 6 3 9 11 12 15 17 23 35 31i = 7 3 9 11 12 15 17 23 35 31i = 8 3 9 11 12 15 17 23 35 31Akhir 3 9 11 12 15 17 23 31 35

Dari algoritma dan program di atas, dapat disimpulkan bahwa jumlah pembanding (= C) untuk metode seleksi adalah sebagai berikut :

Cmax =

Jumlah penukaran (= M) yang dilakukan untuk metode seleksi tergantung pada keadaan datanya.Jumlah penukaran minimum dan maksimum untuk metode seleksi adalah :

Mmin = 3. (N – 1)

mmax = + 3. (N – 1)

Jumlah penukaran minimum terjadi bila data sudah dalam keadaan urut, sebaliknya jumlah penukaran maksimum terjadi bila data dalam keadaan urut terbalik.

4) Metode gelembung :Metode ini disebut juga dengan metode penukaran (exchange sort) yang

mengurutkan data dengan cara membandingkan masing-masing data, kemudian dilakukan penukaran jika perlu.

Proses pada metode ini dilakukan menggunakan dua kalang (loop), yaitu pertama melakukan pengulangan dari 2 sampai dengan N – 1 (misalkan dengan variabel i),sedangkan yang kedua dari N sampai dengan i (misalkan dengan variabel j).

Pada masing-masing pengulangan, data ke (j – 1) dibandingkan dengan data ke-j, bila data ke (j – 1) lebih besar daripada data ke-j, kedua data ini ditukar.

Algoritmanya :1. i ¬ 2.2. Selama ( i <= N -1 ) kerjakan baris 3 sampai dengan 7.3. j ¬ N .4. Selama ( j >= i ) kerjakan baris 5 sampai dengan 7.5. Jika (Data [ j – 1 ] > Data [ j ]) maka tukar Data [ j – 1 ].6. j ¬ j - 1 .7. i ¬ i + 1 .

Prosesnya :

Iterasi Data [1] Data [2] Data [3] Data [4] Data [5] Data [6] Data [7] Data [8] Data [9]

Awal 12 35 9 11 3 17 23 15 31i = 2 12 35 9 11 3 17 23 15 31j = 9 12 35 9 11 3 17 23 15 31j = 8 12 35 9 11 3 17 23 15 31

Page 34: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

j = 7 12 35 9 11 3 17 15 23 31j = 6 12 35 9 11 3 15 17 23 31j = 5 12 35 9 11 3 15 17 23 31j = 4 12 35 9 3 11 15 17 23 31j = 3 12 35 3 9 11 15 17 23 31j = 2 12 3 35 9 11 15 17 23 31i = 3 3 12 35 9 11 15 17 23 31j = 4 3 12 35 9 11 15 17 23 31j = 3 3 12 9 35 11 15 17 23 31

i = 4 3 9 12 35 11 15 17 23 31j = 5 3 9 12 35 11 15 17 23 31

i = 5 3 9 12 11 35 15 17 23 31j = 6 3 9 12 11 35 15 17 23 31

i = 6 3 9 12 11 15 35 17 23 31j = 7 3 9 12 11 15 35 17 23 31

i = 7 3 9 12 11 15 17 35 23 31j = 8 3 9 12 11 15 17 35 23 31

i = 8 3 9 12 11 15 17 23 35 31j = 9 3 9 12 11 15 17 23 35 31

Akhir 3 9 11 12 15 17 23 31 35

Contoh prosedur yang menggunakan metode gelembung (urut naik) :

procedure MG ;var i, j : word ;begin for i := 2 to N - 1 do for j := N down to i do begin

if (Data [ j – 1 ] > Data [ j ]) then Tukar (Data [ j – 1 ], Data [ j ]); end ;end ;

Dari algoritma dan program di atas, dapat disimpulkan bahwa jumlah pembanding (= C) pada metode gelembung selalu konstan, yaitu :

C =

Jumlah penukaran data pada metode gelembung tergantung keadaan data.Mmin = 0

Mrata-rata =

mmax =

Jumlah pembanding dan penggeseran minimum terjadi jika data sudah dalam keadaan urut, sebaliknya jumlah pembanding dan penggeseran maksimum terjadi jika data dalam keadaan urut terbalik.

5) Metode shell : Metode ini sering disebut juga metode pertambahan menurun, metode ini

mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak tertentu, kemudian dilakukan penukaran jika diperlukan.

Page 35: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Proses pengurutannya, pertama-tama adalah menentukan jarak mula-mula dari data yang akan dibandingkan, yaitu N/2, setelah itu, dilakukan pengulangan 1 sampai dengan N/2. Pada masing-masing pengulangan dilakukan pembandingan antara data ke-j dengan data ke-(j + N/2). Apabila data ke-j lebih besar daripada data ke-(j + N/2) maka kedua data tersebut ditukar. Pengulangan dari 1 sampai dengan N/2 ini dilakukan sampai semua data ke-j selalu lebih kecil daripada data ke-(j + N/2).

Pada proses berikutnya, digunakan jarak (N/2)/2 atau N/4. Kemudian dilakukan pengulangan dari 1 sampai dengan (N – N/4) atau 3N/4. Pada masing-masing pengulangan dilakukan pembandingan antara data ke-j dengan data ke-(j + N/4). Apabila diperlukan, kedua data tersebut ditukar. Pengulangan dari 1 sampai 3N/4 ini dilakukan sampai semua data ke-j lebih kecil daripada data ke-(j + N/4).Pada proses berikutnya, digunakan jarak (N/4)/2 atau N/8, demikian seterusnya sampai jarak yang digunakan adalah 1.Algoritmanya :1. Lompat ¬ 2.2. Selama ( Lompat > 1 ) kerjakan baris 3 sampai dengan 9.3. Lompat ¬ Lompat/2. Sudah ¬ false .4. Kerjakan baris 4 sampai dengan 8 sampai (Sudah = true).5. Sudah ¬ true.6. j ¬ 1 .7. Selama ( j <= N - Lompat ) kerjakan baris 8 dan 9.8. Jika (Data [ j ] > Data [ j + Lompat ]) maka tukar Data [ j ], Data [ j +

Lompat ], Sudah ¬ false.9. j ¬ j + 1.

Prosesnya :

Iterasi Data [1] Data [2] Data [3] Data [4] Data [5] Data [6] Data [7] Data [8] Data [9]

Awal 12 35 9 11 3 17 23 15 31jarak = 4 12 35 9 11 3 17 23 15 31

j = 1 12 35 9 11 3 17 23 15 31j = 2 3 35 9 11 12 17 23 15 31

jarak = 2 3 17 9 11 12 35 23 15 31j = 2 3 17 9 11 12 35 23 15 31j = 6 3 11 9 17 12 35 23 15 31

jarak = 2 3 11 9 17 12 15 23 35 31j = 4 3 11 9 17 12 15 23 35 31

jarak = 1 3 11 9 15 12 17 23 35 31j = 2 3 11 9 15 12 17 23 35 31i = 4 3 9 11 15 12 17 23 35 31j = 8 3 9 11 12 15 17 23 35 31

Akhir 3 9 11 12 15 17 23 31 35

Contoh prosedur yang menggunakan metode shell (urut naik) :

procedure SS ;var Sudah : boolean ; Lompat, i, j : word ;begin Lompat := N ; while (Lompat > 1) do begin

Lompat := Lompat div 2 ;

repeat Sudah := true ;

Page 36: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

for j := 1 to N – Lompat do begin

i := j + Lompat ;if (data [ j ] > Data [ i ]) thenbegin

Tukar (Data [ j ], Data [ i ]) ; Sudah := false ; end ;

end ;until Sudah ;

end ;end ;

6) Metode quick :Metode ini sering disebut juga dengan metode partisi, karena jarak dari

kedua elemen yang ditukarkan dibuat cukup besar dengan tujuan untuk mempertinggi efektivitasnya, hal ini mengingat metode gelembung yang menggunakan jarak cukup dekat ternyata kurang efektif.

Proses pengurutannya, pertama-tama dipilih data tertentu yang dinamakan pivot, misalnya x. Pivot ini harus diletakkan pada posisi ke-j sedemikian hingga data antara 1 sampai dengan (j – 1) lebih kecil daripada x, sedangkan data pada posisi ke-(j + 1) sampai dengan N lebih besar daripada x. Cara pengaturannya adalah menukarkan data diantara posisi 1 sampai dengan (j – 1) yang lebih besar daripada x dengan data diantara posisi (j + 1) sampai dengan N yang lebih kecl daripada x.

Algoritmanya :1. x ¬ Data [ (L + R) / 2].2. i ¬ L .3. j ¬ R.4. Selama ( i <= j ) kerjakan baris 5 sampai dengan 12.5. Selama (Data [ i ] < x) kerjakan i ¬ i + 1.6. Selama (Data [ j ] < x) kerjakan j ¬ j + 1.7. Jika (i <= j) maka kerjakan baris 8 sampai dengan 10, jika tidak kerjakan

baris 11.8. Tukar Data [ i ] dengan Data [ j ].9. i ¬ i + 1.10. j ¬ j + 1.11. Jika (L < j) kerjakan lagi baris 1 dengan R = j.12. Jika (i < R) kerjakan lagi baris 1 dengan L = i.

Contoh prosedur yang menggunakan metode quick (urut naik) :

procedure MQ (L, R : word) ;var i, j, x : WORD ;begin{$S-} x := Data [(L + R) div 2 ] ; i := L ; j := R ; while (I <= j) do begin

while (Data [ i ] < x) do inc ( i ) ;while (Data [ j ] > x) do dec ( j ) ; if ( i <= j ) then begin Tukar (Data [ i ], Data [ j ]) ;

Page 37: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

inc ( i ) ; dec ( j ) ; end ;

end ; if (L < j) then

QS (L, j) ; if (i < R) then

QS (i, R) ;{$S+}end ;

Prosesnya :

Iterasi Data [1] Data [2] Data [3] Data [4] Data [5] Data [6] Data [7] Data [8] Data [9]

Awal 12 35 9 11 3 17 23 15 31L = 1R = 9 12 35 9 11 3 17 23 15 31

L = 1R = 4 3 35 9 11 12 17 23 15 31

L = 1R = 3 3 11 9 35 12 17 23 15 31

L = 2R = 9 3 9 11 35 12 17 23 15 31

L = 5R = 9 3 9 11 12 35 17 23 15 31

L = 6R = 9 3 9 11 12 15 17 23 35 31

L = 8R = 9 3 9 11 12 15 17 23 35 31

Akhir 3 9 11 12 15 17 23 31 35

7) Penggabungan :Metode ini digunakan pada pengurutan berkas, yang prinsipnya adalah mula-mula diberikan dua kumpulan data yang sudah dalam keadaan urut. Kedua kumpulan data tersebut harus dijadikan satu tabel sehingga dalam keadaan urut.Sebagai contoh, kumpulan data pertama, misalkan T1 sebagai berikut :

3 11 12 23 31

Sedangkan kumpulan data kedua, misalkanT2 sebagai berikut :

9 15 17 35

Proses penggabungan ini, mula-mula diambil data pertama dari T1, yaitu 3, dan data pertama dari T2, yaitu 9. Data ini dibandingkan, kemudian yang lebih kecil diletakkan sebagai data pertama dari hasil pengurutan, misalkan T3. Jadi T3 akan memiliki satu data, yaitu 3. Data yang lebih besar, yaitu 9, kemudian dibandingkan dengan data kedua dari T1, yaitu 11. Karena lebih kecil, maka 9 diletakkan sebagai data kedua dari T3. Demikian seterusnya sehingga didapat hasil sebagai berikut :

3 9 11 12 15 17 23 31 35

Algoritmanya : (J1 dan J2 masing-masing adalah jumlah data pada T1 dan T2, sedangkan J3 nantinya adalah jumlah data pada T3 yang tidak lain sama dengan J1+ J2)

1. i ¬ 1.2. j ¬ 1.3. J3 ¬ 1.4. Kerjakan baris 5 sampai dengan 7 sampai (i > J1) atau (j > J2).

Page 38: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

5. J3 ¬ J3 +1.6. Jika (T1 [ j ] < T2 [ j ]) maka T3 [ J3 ] ¬ T1 [ i ], i ¬ i + 1.7. Jika (T1 [ j ] >= T2 [ j ]) maka T3 [ J3 ] ¬ T2 [ j ], j ¬ j + 1.8. Jika (i > J1) maka kerjakan baris 9, jika tidak kerjakan baris 15.9. i ¬ j.10. Selama (i <= J2) kerjakan baris 11 sampai dengan 13.11. J3 ¬ J3 + 1.12. T3 [ J3 ] ¬ T2 [ i ].13. i ¬ i + 1.14. Selesai15. j ¬ 1.16. Selama (j <= J1) kerjakan baris 17 sampai dengan 19.17. J3 ¬ J3 + 1.18. T3 [ J3 ] ¬ T1[ j ].19. j ¬ j + 1.Contoh prosedur penggabungan dua kumpulan data yang sudah dalam keadaan urut :

procedure MergeSort (T1, T2 : Larik ; J1, J2 : integer ; var T3 : Larik ; var J3 : integer) ;

vari, j : integer ;

begini := 1 ;j := 1 ;J3 := 0 ;

repeatinc ( J3 ) ;if ( T1 [ i ] < T2 [ j ] ) thenbegin

T3 [ J3 ] := T1 { i ] ;inc ( i ) ;

endelsebegin

T3 [ J3 ] := T2 [ j ] ;inc ( j ) ;

end ;until ( i > J1 ) or ( j > J2 ) ;

if ( i > J1) thenbegin

for i := j to J2 dobegin

inc ( J3 ) ;T3 [ J3 ] := T2 [ i ] ;

end ;end ;

if ( j > J2) thenbegin

for j := i to J1 dobegin

inc ( J3 ) ;T3 [ j3 ] := T1 [ j ] ;

end ;end ;

end ;

8) Pengurutan berkas :Pengurutan berkas dilakukan apabila jumlah memori terbatas sehingga tidak semua data dapat ditampung dalam memori.

Page 39: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

Prinsipnya menggunakan metode penggabungan, yaitu data tersebut dibagi menjadi beberapa bagian sehingga tiap bagian dapat disimpan dalam memori. Masing-masing bagian ini sering disebut run. Masing-masing run kemudian diurutkan menggunakan salah satu metode. Setelah semua run dalam keadaan urut, dilakukan proses penggabungan terhadap dua run. Proses ini dilakukan terus menerus sampai semua data terurutkan.

Contohnya, bila terdapat data berjumlah 1000, sedangkan memori hanya dapat menyimpan maksimum 250 data. Dari kriteria ini dapat dihitung bahwa kita harus membagi data tersebut menjadi 4 run, yaitu x1…250, x251…500, x501…750, x751…1000. Proses penggabungan ini menggunakan metode penggabungan.

Langkah pertama adalah mengurutkan masing-masing run tersebut, setelah itu dilakukan penggabungan antara dua run, yang pertama adalah x1…250, dengan x251…500, yang kedua adalah x501…750, dengan x751…1000.

Hasil dari langkah ini adalah x1…500, x501…1000, sudah dalam keadaan urut, langkah terakhir adalah menggabungkan x1…500, dengan x501…1000, sehingga semua data menjadi dalam keadaan urut.

Dengan algoritma yang sama, untuk data sejumlah 1750, kita dapat melakukan proses pengurutan berkas dengan cara sebagai berikut :

x1…250 x251…500 x501…750 x751…1000 x1001…1250 x1251…1500 x1501…1750

x1…500 x501…1000 x1001…1500 x1501…1750

x1…1000 x1001…1750

x1…1750 Nampak bahwa proses dilakukan untuk tiap 2 run, oleh karena itu proses ini sering disebut juga balanced 2-way mergesort.

PENCARIAN

Metode pencarian ada 2 macam, yaitu :1. Pencarian sekuensial (sequential search).2. Pencarian biner (binary search).

Perbedaan dari dua metode ini terletak pada keadaan data. Pencarian sekuensial digunakan apabila data dalam keadaan acak atau tidak terurut,

Page 40: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

sebaliknya pencarian biner digunakan pada data yang sudah dalam keadaan urut.

1) Metode pencarian sekuensial :Metode ini sering disebut pencarian linear yang menggunakan priinsip, yaitu

data yang ada dibandingkan satu per-satu secara berurutan dengan yang dicari.

Pada dasarnya , pencarian ini hanya melakukan pengulangan dari 1 sampai dengan jumlah data. Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari. Apabila sama, berarti data telah ditemukan, sebaliknya apabila sampai akhir pengulangan tidak ada yang sama berarti tidak ada data.

Algoritma :1. i ¬ 1.2. ketemu ¬ false.3. Selama (tidak ketemu) dan ( i <= N ) kerjakan baris 4.4. Jika (Data [ i ] = x) maka ketemu ¬ true, jika tidak i ¬ i + 1.5. Jika (ketemu) maka i adalah indeks dari data yang dicari, jika tidak,

data tidak ditemukan.

Contoh fungsi untuk mencari data menggunakan pencarian sekuensial :

Function sequential search ( x : word) : integer ;var

i : byte ;ketemu : boolean ;

beginketemu : false ;i := 1 ;while (tidak ketemu) and ( i <= N ) dobegin

if (Data [ i ] = x) thenketemu : false ;

elseinc ( i ) ;

end ;

if (ketemu) thensequential search := i

elsesequential search := -1 ;

end ;Fungsi diatas akan mengembalikan indeks dari data yang dicari, bila data tidak ditemukan maka yang dikembalikan adalah –1.

2) Pencarian biner :Pencarian biner dapat dilakukan apabila data sudah dalam keadaan urut. Dengan kata lain, bila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan. Prinsip pencarian biner, mula-mula diambil posisi awal = 1 dan posisi akhir = N, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data tengah. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah –1. Jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah +1. Demikian seterusnya sampai data tengah sama dengan yang dicari.

Contoh :Misalkan kita ingin mencari nilai 17 pada sekumpulan data berikut :

3 9 11 12 15 17 23 31 35

Page 41: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

awal tengah akhir

Mula-mula dicari data tengah, dengan rumus (1 + 9) / 2 = 5, berarti data tengah adalah data ke-5, yaitu 15. Data yang dicari, yaitu 17, dibandingkan dengan data tengah ini, karena 17 > 15 maka proses dilanjutkan tetapi kali ini posisi awal dianggap sama dengan posisi tengah + 1 atau 6.

3 9 11 12 15 17 23 31 35

awal tengah akhir

Data tengah yang baru didapat dengan rumus (6 + 9) / 2 = 7, berarti data tengah yang baru adalah data ke-7, yaitu 23. Data yang dicari, yaitu 17, dibandingkan dengan data tengah ini, karena 17 < 23 maka proses dilanjutkan tetapi kali ini posisi akhir dianggap sama dengan posisi tengah yaitu –1 atau 6.

3 9 11 12 15 17 23 31 35

awal = akhir

Data tengah yang baru didapat dengan rumus (6 + 6) / 2 = 6, berarti data tengah yang baru adalah data ke-6, yaitu 17. Data yang dicari dibandingkan dengan data tengah ini dan ternyata sama, jadi data ditemukan pada indeks ke-6.

Bagaimana bila data yang dicari tidak ada, misalnya16 ?. Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar daripada posisi akhir, jika posisi awal sudah lebih besar daripada posisi akhir berarti data tidak ditemukan.

Prosesnya jika data tidak ada (nilai 16), prosesnya hampir sama dengan pencarian nilai 17, tetapi setelah posisi awal = posisi akhir = 6, proses masih dilanjutkan lagi dengan posisi awal = 6 dan posisi akhir = 5.

3 9 11 12 15 17 23 31 35

akhir awal

Nampak bahwa posisi awal lebih besar daripada posisi akhir, yang artinya data tidak ditemukan.

Algoritmanya :1. l ¬ 1.2. r ¬ N.3. ketemu ¬ false.4. Selama (l <= r) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8.5. m ¬ (l + r) / 2.6. Jika (Data [ m ] = x) maka ketemu ¬ true.7. Jika (x < Data [ m ]) maka r ¬ m - 1.8. Jika (x > Data [ m ]) maka l ¬ m + 1.9. Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak,

data tidak ditemukan.

Contoh fungsi untuk mencari data menggunakan pencarian biner :

function Binarysearch ( x : word) : integer ;var

l, r, m : word ;ketemu : boolean ;

beginl := 1 ;r := N ;

Page 42: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

ketemu : false ;while (l <= r) and ( tidak ketemu) dobegin

m := (l + r) div 2 ;if (Data [ m ] = x) then ketemu : true ;else if ( x < Data [ m ] ) then

r := m - 1 ;else l := m + 1 ;

end ;

if (ketemu) then Binarysearch := melse Binarysearch := -1 ;

end ;

Fungsi diatas akan mengembalikan indeks dari data yang dicari, apabila data tidak tidak ditemukan, maka yang dikembalikan adalah –1.Jumlah pembandingan (= C) minimum pada pencarian biner adalah 1 kali, yaitu apabila data yang dicari tepat berada di tengah-tengah, jumlah pembandingan maksimum yang dilakukan dengan pencarian biner dapat dicari dengan menggunakan rumus logaritma, yaitu :

C = 2 log (N)

PEMROGRAMAN BERORIENTASI OBJEK(Object Oriented Programming = OOP)

Setiap objek memiliki memiliki 2 elemen yaitu “data” dan “metode”.

Pada dunia pemrograman “data” dapat dianalogikan dengan variabel, sedang “metode” dapat dianalogikan dengan prosedur atau fungsi, ada beberapa pemrograman menyebut dengan “metode” istilah “kode”.

“data” dapat diartikan sebagai sesuatu yang menentukan karakteristik sebuah objek, misalnya ; “saya mempunyai data seperti mata, hidung, tangan, dsb” atau “mobil mempunyai data seperti roda, rem, mesin, dsb”.

“metode” dapat diartikan sebagai aksi terhadap data, misalnya ; “ saya mempunyai metode menutup mata, melambaikan tangan, dsb” atau “mobil mempunyai metode seperti belok ke kanan, mengerem, dsb”.

Ada yang masih berkaitan dengan objek yaitu “kelas”, yang merupakan struktur umum dari objek-objek tertentu, misal ; “saya dan anda termasuk dari “kelas” manusia” atau “ mobil termasuk dalam “kelas” kendaraan bermotor”.

Jadi analoginya dalam pemrograman, adalah :Tipe data adalah “kelas”, sedangkan variabel yang didefinisikan berdasarkan tipe data tersebut adalah objek.Sebagai contoh : “jika kita mendefinisikan berarti kita menginstansiasi objek “x” dari kelas integer”.

MENCIPTAKAN KELAS dan OBJEK

Untuk mendeklarasikan “kelas” pada TURBO PASCAL digunakan kata kunci object.Sintaks pendeklarasian “kelas” adalah :

type nama_kelas = object { deklaraasi data dan metode }

Page 43: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

end ;Parameter nama_kelas adalah nama yang kita berikan untuk “kelas”, aturan pemberian nama kelas sama dengan pemberian nama variabel.Pada dasarnya data dalam kelas adalah variabel sedangkan metode dalam kelas adalah prosedur atau fungsi, dengan demikian pendeklarasian data dan metode dapat dilakukan sama seperti pendeklarasian variabel dan prosedur atau fungsi biasa.

Contoh pendeklarasian kelas untuk menyimpan koordinat titik di layar :

type Titik = object x, y : integer ;end ;

Jadi kita dapat menginstansiasi objek dari kelas Titik dengan pernyataan sbb :

begin x := 0 ; y := 0 ;end ;

Pemanggilan konstruktor dan destruktor juga dilakukan dengan cara sama seperti metode biasa,Contoh :

A.Init ;A.Done ;

Setiap bahasa pemrograman berorientasi objek HARUS mendukung 3 konsep dasar, yaitu :

1. Pengkapsulan (encapsulation)2. Pewarisan (inherintance).3. Polimorfisme (polymorphism).

1). Pengkapsulan :Konsepnya adalah penggabungan data dan metode ke dalam satu

kesatuan yang disebut “kelas”, serta mengandung penyembunyian informasi.

Contoh :

“kelas mobil mempunyai metode menyalakan mesin”.

(sebagai pengendara mobil, kita tidak perlu tahu bagaimana kerja metode menyalakan mesin dan kita juga tidak tahu data apa saja yang terlibat pada metode menyalakan mesin, akan tetapi tahunya adalah memutar kunci dan mesin menyala).

Pada TURBO PASCAL yang berhubungan dengan penyembunyian informasi yaitu “kontrol akses (access control)”. “Kontrol akses” memungkinkan kita membatasi hak akses “kelas” atau “fungsi” lain terhadap “data” dan “metode” dari suatu kelas.

Ada dua kata kunci pada TURBO PASCAL yang berhubungan dengan “Kontrol akses” yaitu “public” dan “private”. Kontrol akses “public” berarti anggota kelas tersebut hanya dapat diakses dari kelas atau prosedur lain, sedang “private” berarti anggota kelas tersebut hanya dapat diakses dari kelas atau prosedur pada unit yang sama.

Bentuk deklarasi kelasnya secara umum dapat ditulis sebagai beikut :

typeTitik = objectprivate

{ Data dan metode yang bersifat private }public

{ Data dan metode yang bersifat umum }end ;

Page 44: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

2). Pewarisan : Konsepnya adalah memungkinkan untuk membuat “kelas” baru yang

memiliki data dan metode dari “kelas” lain, tetapi juga memiliki data dan metode sendiri.

Contoh :

“kelas binatang bisa diturunkan menjadi kelas mamalia”.

Kelas mamalia memiliki beberapa data dari kelas binatang, misalnya alat pernapasan, alat pencernaan, dsb.

Kelas mamalia juga memiliki beberapa metode dari kelas binatang, misalnya makan, tidur, dsb.

Meskipun demikian, kelas mamalia juga memiliki data dan metode sendiri yang tidak dimiliki kelas binatang lain, misalnya mamalia memiliki metode menyusui.

Pada Pemrograman Berorientasi Objek (OOP), binatang disebut “kelas dasar (base class)” atau “kelas induk (parent class)”, sedang mamalia disebut “kelas turunan (derived class)” atau “kelas anak (child class)”.

Pewarisan kelas pada TURBO PASCAL dilakukan dengan sintaks berikut :

type kelas_anak = object ( kelas_induk ) { data dan metode kelas anak }end ;

Sebagai contoh, berikut ini adalah kelas Lingkaran yang diturunkan dari kelas Titik :

type Lingkaran = object ( Titik ) r : real ;end ;

(kelas Lingkaran mewarisi semua data dan metode kelas Titik, yang berarti kelas Lingkaran juga mempunyai data x dan y, disamping itu, kelas Lingkaran juga menambahkan data baru, yaitu r).

3). Polimorfisme (banyak bentuk) :Konsepnya adalah dua kelas yang diturunkan dari satu kelas mempunyai

metode yang sama tetapi implementasinya berbeda.Contoh :

“kelas” kerbau mempunyai metode berjalan, “kelas” kera juga mempunyai metode berjalan, tetapi cara berjalannya tidak sama.

Berarti kelas-kelas yang diturunkan dari satu “kelas dasar” dapat mempunyai metode yang bernama sama tetapi definisinya berbeda (disebut juga metode virtual).Untuk menyatakan suatu metode adalah metode virtual, tambahkan kata kunci virtual, contoh :

typeTitik = objectprivatex, y : integer ;

publicconstructor Init ;destructor Done ;procedure Gambar ; virtual ;

Page 45: PEMROGRAMAN TEKNIK · Web viewTujuan : “Agar mahasiswa dapat memahami dan membuat program teknik untuk interfacing perangkat elektronika yang akan dibuat” Pemrograman Teknik:

end ;Lingkaran = object ( Titik )private

r : real ;public

constructor Init ;destructor Done ;procedure Gambar ; virtual ;

end ;

Metode Gambar pada “kelas” Titik dan Lingkaran diatas bersifat virtual, artinya implementasi metode tersebut dapat berbeda tergantung “kelasnya”.Sebagai contoh, implementasi metode Titik.Gambar mungkin sbb :

procedure Titik.Gambar ;begin writeln ( ‘ Titik digambar ’ ) ;end ;

Sedangkan implementasi metode Lingkaran.Gambar mungkin sbb :

procedure Lingkaran.Gambar ;begin writeln ( ‘ Lingkaran digambar ’ ) ;end ;

Untuk memperjelas kegunaan metode virtual, tambahkan sebuah metode pada “kelas” Titik, misalnya dengan nama Coba, contohnya :

procedure Titik.Coba ;begin Gambar ;end ;

Jika ingin membuat metode virtual, sebaiknya menambahkan pengarah berikut pada awal program {$R+}, tujuannya adalah untuk mengantisipasi kelupaan memanggil kostruktor sebelum memanggil metode virtual, bila saat memanggil metode virtual sebelum konstruktor dipanggil, biasanya TURBO PASCAL akan HANG.