132
DAFTAR ISI UNIT KOMPETENSI.............................................................. Error! Bookmark not defined. ELEMEN KOMPETENSI ........................................................ Error! Bookmark not defined. GARIS-GARIS BESAR POKOK PENGAJARAN ........................ Error! Bookmark not defined. DAFTAR ISI ...................................................................................................................... xxi BAB 1. MENJAGA ETIKA ............................................................................................ 1 1.1 Pendahuluan........................................................................................................... 1 1.2 Ruang Lingkup Etika................................................................................................ 2 1.3 Perlindungan Privaci ............................................................................................... 2 1.3.1 Electronic Surveillance ................................................................................ 5 1. 3.2 Informasi Personal dalam Database............................................................ 5 1.3.3 Kode Dan Kebijakan Privasi ......................................................................... 6 1.3.4 Aspek Privasi Internasional ......................................................................... 7 1.3.5 Proteksi Intellectual Property...................................................................... 8 1.4 Profesi dan Profesionalisme ................................................................................... 9 1.4.1 Ciri khas profesi. ....................................................................................... 10 1.4.2 Tujuan Kode Etik Profesi ............................................................................ 11 BAB 2. PEMROGRAMAN ALGORITMA DASAR ......................................................... 12 2.1 Pendahuluan......................................................................................................... 12 2.2 Definisi Algoritma ................................................................................................. 13 2.3 Definisi Program ................................................................................................... 14 2.4 Variabel, Konstanta, Operator, dan Tipe Data ..................................................... 16 2.5 Pengulangan ......................................................................................................... 19 2.5.1 For .................................................................................................................. 21 2.5.2 While............................................................................................................... 22 2.5.3 Repeat ........................................................................................................... 22 2.6 Percabangan ......................................................................................................... 23 2.6.1 Satu Kondisi ............................................................................................... 25 2.6.2 Dua Kondisi ................................................................................................ 25 2.6.3 If dalam if ................................................................................................... 27 2.6.4 Depend on (dua kondisi atau lebih) .......................................................... 27 2.7 Array (Larik) .......................................................................................................... 28 2.8 Sequential File ...................................................................................................... 31 BAB 3. PEMROGRAMAN ALGORITMA LANJUT ......................................................... 35

Modul junior gelombang i

Embed Size (px)

Citation preview

Page 1: Modul junior gelombang i

DAFTAR ISI

UNIT KOMPETENSI.............................................................. Error! Bookmark not defined.

ELEMEN KOMPETENSI ........................................................ Error! Bookmark not defined.

GARIS-GARIS BESAR POKOK PENGAJARAN ........................ Error! Bookmark not defined.

DAFTAR ISI ...................................................................................................................... xxi

BAB 1. MENJAGA ETIKA ............................................................................................ 1

1.1 Pendahuluan ........................................................................................................... 1

1.2 Ruang Lingkup Etika................................................................................................ 2

1.3 Perlindungan Privaci ............................................................................................... 2

1.3.1 Electronic Surveillance ................................................................................ 5

1. 3.2 Informasi Personal dalam Database ............................................................ 5

1.3.3 Kode Dan Kebijakan Privasi ......................................................................... 6

1.3.4 Aspek Privasi Internasional ......................................................................... 7

1.3.5 Proteksi Intellectual Property ...................................................................... 8

1.4 Profesi dan Profesionalisme ................................................................................... 9

1.4.1 Ciri khas profesi. ....................................................................................... 10

1.4.2 Tujuan Kode Etik Profesi ............................................................................ 11

BAB 2. PEMROGRAMAN ALGORITMA DASAR ......................................................... 12

2.1 Pendahuluan ......................................................................................................... 12

2.2 Definisi Algoritma ................................................................................................. 13

2.3 Definisi Program ................................................................................................... 14

2.4 Variabel, Konstanta, Operator, dan Tipe Data ..................................................... 16

2.5 Pengulangan ......................................................................................................... 19

2.5.1 For .................................................................................................................. 21

2.5.2 While ............................................................................................................... 22

2.5.3 Repeat ........................................................................................................... 22

2.6 Percabangan ......................................................................................................... 23

2.6.1 Satu Kondisi ............................................................................................... 25

2.6.2 Dua Kondisi ................................................................................................ 25

2.6.3 If dalam if ................................................................................................... 27

2.6.4 Depend on (dua kondisi atau lebih) .......................................................... 27

2.7 Array (Larik) .......................................................................................................... 28

2.8 Sequential File ...................................................................................................... 31

BAB 3. PEMROGRAMAN ALGORITMA LANJUT ......................................................... 35

Page 2: Modul junior gelombang i

Modul Pelatihan Junior Programming Page xxii

3.1 Array Multidimensi ............................................................................................... 35

3.2 Deklarasi Array Multidimensi ............................................................................... 35

3.3 Passing Array Multidimensi ke Fungsi .................................................................. 36

3.4 Cara mengisi matriks dan menampilkannya ........................................................ 36

3.5 Operasi Aritmatika pada Matrik Multidimensi .................................................... 37

3.6 Prosedur ............................................................................................................... 42

3.6.1 Deklarasi Prosedure ....................................................................................... 43

3.7 Fungsi .................................................................................................................... 45

3.8 Library Pemrograman Grafik ................................................................................ 47

3.8.1 Konsep Dasar Grafik Komputer ..................................................................... 47

BAB 4. STRUKTUR DATA ........................................................................................... 51

4.1 Program dengan beberapa Tipe Data .................................................................. 51

4.1.1 Penggunaan Record ................................................................................... 51

4.2 Pointer .................................................................................................................. 59

4.3 Pengurutan (Sorting) ............................................................................................ 64

4.4 Link List ................................................................................................................. 71

4.5 Queue ................................................................................................................... 78

4.5.1 Contoh Deklarasi Queue ............................................................................ 78

4.5.2 Contoh Fungsi store................................................................................... 79

4.5.3 Contoh Fungsi Retrieve ............................................................................. 79

4.5.4 Contoh Program queue ............................................................................. 79

4.6 Stack ..................................................................................................................... 81

4.6.1 Contoh Deklarasi stack .............................................................................. 81

4.6.2 Contoh Fungsi push() ................................................................................. 81

4.6.3 Contoh Fungsi pop() .................................................................................. 81

4.6.4 Contoh Program stack ............................................................................... 82

4.7 File ........................................................................................................................ 83

4.7.1 Variabel File ............................................................................................... 83

4.7.2 Membuka File ............................................................................................ 84

BAB 5. MENULIS PROGRAM DASAR ......................................................................... 93

5.1 Alur Pembuatan Program ..................................................................................... 93

5.2 Pengenalan Bahasa JAVA ..................................................................................... 96

5.2.1 Sejarah Singkat .......................................................................................... 96

5.2.2 Fitur Bahasa Java ....................................................................................... 98

5.2.2 Fase-fase Pemrograman Java .................................................................... 99

5.3 Lingkup Pemrograman Java ................................................................................ 100

Page 3: Modul junior gelombang i

Modul Pelatihan Junior Programming Page xxiii

5.3.1 Program pertama Java............................................................................. 101

5.3.2 Menggunakan Text Editor ....................................................................... 101

5.4 Errors .................................................................................................................. 104

5.4.1 Syntax Errors ................................................................................................. 104

5.4.2 Run-time Errors ............................................................................................ 104

BAB 6. DOKUMEN KODE PROGRAM ....................................................................... 105

6.1 Tentang Dokumentasi ........................................................................................ 105

6.2 Macam dokumentasi program .......................................................................... 105

6.2.1 Dokumentasi spesifikasi program ........................................................... 106

6.2.2 Dokumentasi Teknis Program ................................................................. 106

6.2.3 Dokumentasi Penggunaan Program ........................................................ 107

6.3 Tools ................................................................................................................... 108

6.4 Membuat Dokumentasi Fungsi dan Prosedur pada Modul Program ................ 108

BAB 7 . MENGOPERASIKAN APLIKASI BASIS DATA ................................................... 113

7.1 Aplikasi Database pada Java ............................................................................... 113

7.2 Membuat Aplikasi Basis Data ............................................................................. 114

7.3 Membuat Aplikasi dan Modul Basis Data .......................................................... 120

7.3.1 Membuat Database ................................................................................ 120

7.3.2 Membuat New Project ............................................................................ 120

7.3.3 Membuat Koneksi MySQL ....................................................................... 121

7.3.4 Membuat Form Aplikasi .......................................................................... 124

DAFTAR PUSTAKA .......................................................................................................... 128

Page 4: Modul junior gelombang i
Page 5: Modul junior gelombang i

Modul Pelatihan Junior Programming 1

BAB 1. MENJAGA ETIKA

1.1 Pendahuluan

Menurut Kamus Besar Bahasa Indonesia etika adalah:

- Ilmu tentang apa yang baik dan yang buruk, tentang hak dan kewajiban moral,

- Kumpulan asas atau nilai yang berkenaan dengan akhlak,

- Nilai mengenai yang benar dan salah yang dianut masyarakat.

Dari asal usul kata, Etika berasal dari bahasa Yunani “ethos” yang berarti

adat istiadat atau kebiasaan yang baik. Perkembangan etika studi tentang kebiasaan

manusia berdasarkan kesepakatan, menurut ruang dan waktu yang berbeda, yang

menggambarkan perangai manusia dalam kehidupan pada umumnya.

Etika merupakan suatu cabang filosofi yang berkaitan dengan apa saja yang

dipertimbangkan baik dan salah. Ada beberapa definisi mengenai etika antara lain :

- Kode moral dari suatu profesi tertentu

- Standar penyelenggaraan suatu profesi tertentu

- Persetujuan diantara manusia untuk melakukan yang benar dan

menghindari yang salah.

Salah satu yang harus dipahami adalah bahwa apa yang tidak etis tidak

berarti illegal. Dalam lingkungan yang kompleks, definisi benar dan salah tidak selalu

jelas. Juga perbedaan antara illegal dan tidak beretika tidak selalu jelas.

Dengan semakin berkembangnya teknologi informasi telah menciptakan

berbagai situasi etika yang baru. Misal isu sebuah perusahaan yang secara legal

memonitor email pegawai merupakan hal yang kontroversial. Selain itu ada

perbedaan antara etika di perusahaan dengan individu.

Page 6: Modul junior gelombang i

Modul Pelatihan Junior Programming 2

1.2 Ruang Lingkup Etika

Beberapa perusahaan dan organisasi profesi telah mengembangkan kode

etik masing-masing. Kode etik merupakan sekumpulan prinsip yang harus diikuti

sebagai petunjuk bagi karyawan perusahaan atau anggota profesi. Beragamnya

penerapan teknologi informasi dan meningkatnya penggunaan teknologi telah

menimbulkan berbagai variasi isu etika. Suatu usaha untuk mengatur isu tersebut

kedalam suatu ruang lingkup dilakukan oleh R.O. Mason dan kawan-kawan, yang

mengkategorikan isu etika menjadi empat jenis yaitu Privacy, Accuracy, Property,

dan Accessibility.

Tabel 1.1 Kategori isu etika

Isu Privacy Koleksi, penyimpanan, diseminasi informasi individu

Isu Accuracy Authenticity, fidelity, dan akurasi pengumpulan dan pengolahan informasi.

Isu Property Kepemilikan dan nilai informasi (hak cipta intelektual)

Isu Accessibility

Hak untuk mengakses informasi dan pembayaran fee untuk akses informasi tersebut.

1.3 Perlindungan Privaci

Secara umum, privasi adalah hak untuk sendiri dan hak untuk bebas terhadap

gangguan orang yang tidak bertanggung jawab. Privasi informasi adalah hak untuk

menentukan kapan, dan untuk apa diperluas terhadap informasi diri sendiri yang

dapat dikomunikasikan dengan orang lain. Hak ini berlaku untuk individu, kelompok

dan institusi.

Ada 4 hal umum untuk identifikasi empat pernyataan privasi yaitu:

Tabel 1.2 Indentifikasi pernyataan privasi

1 Solitude Pernyataan sendiri, keluar dari interferensi luar

2 Intimacy Pernyataan privasi seseorang yang ingin menikmati dari dunia luar

3 Anonimity Pernyataan bebas dari gangguan eksternal

4 Reserve Mampu untuk mengendalikan informasi mengenai diri sendiri

Page 7: Modul junior gelombang i

Modul Pelatihan Junior Programming 3

Tabel 1.3 Ruang lingkup isu etika

Jenis isu Ruang lingkup Isu Privacy Informasi apa saja mengenai diri sendiri yang sebaiknya menjadi hak individu

? Jenis pelanggaran apa saja bagi seorang pegawai yang mempergunakan hak

kepegawaiannya? Apa saja yang harus disimpan rapat untuk diri sendiri dan tidak diumumkan

ke orang lain? Informasi apa saja mengenai individu yang sebaiknya disimpan dalam

database dan bagaimana mengamankan informasi tersebut?

Isu accuracy Siapa yang bertanggung jawab untuk authenticity, fidelity dan akurasi informasi yang berhasil dikumpulkan?

Bagaimana kita dapat meyakinkan bahwa informasi akan diproses secara benar dan ditampilkan secara akurat kepada pengguna?

Bagaimana kita dapat meyakinkan bahwa kesalahan dalam database, transmisi data, dan pengolahan data adalah kecelakaan dan tidak disengaja.

Siapa yang bisa dipercaya untuk menentukan kesalahan informasi dan dengan cara apa kesalahan tersebut dapat dikompensasi.

Isu Property Siapa yang memiliki informasi? Apa saja yang perlu dipertimbangkan dan besarnya biaya pertukaran

informasi? Bagaimana sebaiknya seseorang menangani software piracy (mengcopy

copyrighted software)? Pada lingkungan yang bagaimana seseorang dapat mempergunakan

proprietary databases? Dapatkah komputer perusahaan dipergunakan untuk keperluan pribadi? Bagaimana sebaiknya para ahli memberikan kontribusi pengetahuannya

untuk membentuk sistem pakar? Bagaimana sebaiknya akses terhadap jalur informasi dialokasikan?

Isu Accessibility Siapa saja yang diijinkan untuk mengakses informasi? Berapa besarnya biaya yang dapat dibebankan untuk mengakses informasi? Bagaimana kemampuan akses komputer yang diberikan kepada pegawai

dibatasi? Siapa saja yang akan diberi peralatan yang diperlukan untuk mengakses

informasi? Informasi apa saja bagi person atau organisasi yang mempunyai hak atau

privilege untuk mendapatkan informasi dalam keadaan apapun dan dengan jaminan keamanan?

Definisi privasi dapat diintepretasikan sangat luas. Akan tetapi ada dua aturan

yang harus diikuti yaitu:

1. Hak privasi adalah tidak absolut. Privasi harus diseimbangkan dengan

keinginan masyarakat.

2. Hak publik untuk mengetahui lebih utama dibandingkan dengan hak privasi

individu.

Page 8: Modul junior gelombang i

Modul Pelatihan Junior Programming 4

Berdasar dua aturan tersebut terlihat mengapa dalam beberapa kasus menjadi

sulit untuk menentukan dan memaksa regulasi privasi. Hak privasi dikenal sampai hari

ini di seluruh Amerika Serikat dan oleh pemerintah Federal.

Tabel 1.4 Representasi Privasi Legislasi Federal terhadap Privasi dan Teknologi Informasi

Legislasi Pernyataan

Freedom of Information Act, 1970

Mengijinkan individu untuk mengakses sebarang informasi mengenai diri sendiri yang disimpan oleh pemerintah federal.

Privacy Act of 1974 Melarang pemerintah untuk mengumpulkan informasi secara rahasia. Informasi yang dikumpulkan harus dipergunakan hanya untuk keperluan tertentu. Informasi dapat digunakan untuk keperluan lainnya dengan ijin dari individu. Individu dapat mengakses dan memperbaiki informasi tersebut.

Right to Financial Privacy Act of 1978

Jaminan keamanan data pada lembaga keuangan. Masyarakat harus diberi pengertian jika pemerintah akan mengakses data tersebut.

Privacy protection Act of 1980 Memberikan proteksi privasi dalam bentuk komputerisasi dan dokumen lainnya.

Cable Communication Act of 1984

Proteksi privasi di TV dan transmisi kabel.

Electronics Communications Privacy Act of 1986

Melarang private citizens untuk mengakses komunikasi data tanpa otorisasi.

Computer Security Act of 1987 Memerlukan keamanan informasi termasuk informasi individu.

Computer Matching and Privacy Act of 1988

Regulasi untuk mencocokkan file komputer oleh pemerintah dan agen federal

Video Privacy Protection Act of 1988

Proteksi privasi pada transmisi gambar

Telephone Consumer Protection Act of 1992

Membatasi praktek telemarketer

Consumer Internet Privacy Protection Act of 1997

Memerlukan prioritas yang tertulis sebelum suatu layanan komputer dapat memberikan informasi dari anggotanya

Social Security Online Privacy Protection of 1997

Membatasi disclosure jumlah Social Security dan informasi yang berkaitan.

Federal Internet Privacy Protection Act of 1997

Melarang agen federal terhadap disclosing data personil melalui internet.

Communication Privacy and Consumer Empowernment Act of 1997

Proteksi hak privasi dalam perdagangan online.

Data Privacy Act of 1997 Membatasi penggunaan secara personil informasi yang bisa diidentifikasi dan regulasi “spamming”

Social Security Information Safeguards Act of 1997

Menghasilkan mekanisme keamanan secara online untuk data Social Security.

Page 9: Modul junior gelombang i

Modul Pelatihan Junior Programming 5

1.3.1 Electronic Surveillance

Menurut American Civil Liberties Union (ACLU). Memonitor pengguna

komputer – electronic surveillance – merupakan sebuah problem utama. ACLU

mengestimasi bahwa jutaan pengguna komputer dimonitor dan kebanyakan tanpa

sepengetahuan pengguna tersebut. Kepegawaian telah melakukan pembatasan

terhadap surveillance kepada pegawai. Meskipun beberapa hal yang berkaitan

dengan legalitas masih diproses, hukum cenderung untuk mendukung hak pegawai

untuk membaca surat elektronik dan dokumen elektronik lainnya. Surveillance juga

berkaitan dengan privasi individu (misalkan melalui personal e-mail), perusahaan,

pemerintahan maupun elemen kriminal.

1. 3.2 Informasi Personal dalam Database

Informasi mengenai individu disimpan dalam beberapa database. Misal, pada

saat anda meminta sambungan telpon baru anda diminta mengisi kuesioner sebanyak

2 halaman. Kuesioner tersebut kemudian dievaluasi dan disimpan dalam database. Ada

beberapa lembaga yang akan menyimpan informasi semacam itu antara lain credit

reporting agencies.

Tempat lain yang menyimpan informasi personal antara lain : bank dan

lembaga keuangan; TV Kabel, Telpon, perusahaan utilitas lainnya; kepegawaian;

apartemen dan perusahaan sewa peralatan; rumah sakit; sekolah dan universitas;

supermarket; penyelenggara retail dan mail-order house; instansi pemerintah (Biro

Sensus, Layanan Pendapatan Daerah); perpustakaan dan perusahaan asuransi. Juga

beberapa kuesioner yang diisi di internet (misal pada saat anda mencoba untuk

memenangkan hadiah) biasanya akan tersimpan dalam database.

Ada beberapa hal yang terkait dengan informasi yang tersimpan dalam

lembaga penyimpan informasi tersebut.

Dalam situasi seperti apa data personal tersebut dapat diberikan?

Tahukah anda dimana data tersebut disimpan?

Apakah data tersebut akurat?

Page 10: Modul junior gelombang i

Modul Pelatihan Junior Programming 6

Dapatkah anda mengubah data yang tidak akurat?

Berapa lama waktu yang diperlukan untuk melakukan perubahan data?

Bagaimana menggunakan data tersebut?

Kepada siapa data tersebut diberikan atau dijual?

Bagaimana keamanan data terhadap orang-orang yang tidak mempunyai

otoritas.

Dengan mempunyai informasi yang tersimpan pada beberapa tempat akan

menyebabkan beberapa informasi menjadi tidak akurat, tidak uptodate dan tidak

aman. Ada beberapa contoh problem yang potensial:

Salah satu kota di New England gagal mendapatkan finansial. Sebuah investigasi yang dilakukan telah menemukan bahwa semua wajib pajak diberi label yang salah yaitu sebagai orang yang gagal membayar pajak property mereka.

Orang yang berpengalaman kesulitan dalam hal finansial atau refinancing home disebabkan keterlambatan atau ketidakakuratan informasi dalam database.

Informasi pribadi seperti status kesehatan atau kondisi seksual dari seseorang dapat berkibat negatif pada saat kontrak, promosi maupun kebijakan personal lainnya.

Database dipergunakan untuk mengkombinasikan mailing list yang berbeda. List semacam itu dapat dijual kepada vendor lainnya, yang kemudian akan menghubungi orang tersebut sebagai pelanggan potensial.

1.3.3 Kode Dan Kebijakan Privasi

Salah satu cara untuk proteksi privasi adalah dengan mengembangkan

kebijakan atau kode privasi yang akan membantu organisasi mencegah legal problem.

Pada beberapa perusahaan, manajemen senior telah mulai untuk memahami bahwa

dengan kemampuan untuk mengkoleksi sejumlah informasi personal pada customer,

klien, dan pegawai mendatangkan suatu obligasi untuk menjamin bahwa informasi

individu adalah diproteksi. Contoh petunjuk kebijakan privasi dapat dilihat pada tabel

1.5.

Tabel 1.5 Petunjuk Kebijakan Privasi – Sebuah contoh

Data collection Data sebaiknya dikumpulkan pada individu hanya untuk keperluan menghasilkan obyektif bisnis yang legitimasi

Data sebaiknya cukup, relevan dan tidak berlebihan sesuai dengan obyektif bisnis

Individu harus memberikan persetujuannya sebelum data mereka dikumpulkan bersamaan. Persetujuan semacam itu diterapkan pada beberapa tindakan individu (misal permohonan kredit, asuransi atau

Page 11: Modul junior gelombang i

Modul Pelatihan Junior Programming 7

kepegawaian)

Data accuracy Data yang sensitif yang dikumpulkan dari individu sebaiknya diverifikasi sebelum dimasukkan ke database

Data sebaiknya akurat dan dimanapun, kapanpun tetap akurat. File tersebut sebaiknya dapat dimanfaatkan supaya individu dapat

menjamin bahwa data tersebut adalah benar. Jika terdapat ketidaksetujuan terhadap keakuratan data, versi individu

sebaiknya diperhatikan dan dimasukkan dengan beberapa perubahan pada file tersebut.

Data confidentiality Prosedur keamanan komputer sebaiknya diimplementasikan untuk memberikan jaminan yang dapat dipertanggungjawab kan terhadap data yang tidak diotorisasi. Keamanan tersebut meliputi kemanan fisik, teknis dan administrasi.

Pihak ketiga sebaiknya tidak diberikan akses terhadap data tanpa sepengetahuan atau ijin individu, kecuali diperlukan oleh hukum.

Perubahan data sebaiknya diperhatikan dan dimaintain selama data tersebut dimaintain.

Data sebaiknya tidak diubah dengan alasan tidak sesuai dengan obyektif bisnis pada saat data tersebut dikumpulkan.

1.3.4 Aspek Privasi Internasional

Ada beberapa perbedaan utama diantara beberapa negara berkaitan dengan

regulasi privasi. Beberapa negara seperti Swedia dan Kanada mempunyai aturan

hukum yang sangat ketat sedangkan beberapa negara tidak terlalu ketat. Contoh: pada

saat ini Itali, Belgia, Spanyol, Portugal dan Perancis hanya mempunyai kebijakan yang

minimal terhadap hak individu untuk mengontrol data personal dalam database

pemerintahan maupun database komersial. Ketidakkonsistenan standar dapat

mengacaukan aliran informasi antar negara dalam komunitas Eropa. Untuk mengatasi

problem tersebut maka Komisi Komunitas Eropa telah memberikan petunjuk untuk

semua negara anggota dengan memberikan hak individu untuk mengakses informasi

diri sendiri dan memperbaiki kesalahan.

Transfer informasi kedalam dan keluar suatu negara tanpa sepengetahuan

otoritas atau individu akan menimbulkan sejumlah isu privasi. Negara hukum mana

yang mempunyai yuridiksi pada saat data yang tersimpan berada pada negara yang

berbeda untuk keperluan proses ulang atau transmisi ulang? Sebagai contoh jika data

ditransmisikan oleh sebuah perusahaan asuransi melalui satelit Amerika ke perusahaan

Page 12: Modul junior gelombang i

Modul Pelatihan Junior Programming 8

di Inggris, hukum privasi negara mana yang mengontrol data dan kapan? Pertanyaan

semacam ini akan menjadi semakin berkembang dan lebih kompleks.

Organisasi kerjasama dan pengembangan ekonomi di Eropa telah memberikan

sekumpulan petunjuk yang dikenal dengan baik untuk proteksi privasi individu pada

era elektronik. Sebuah contoh prinsip yang berkaitan dengan koleksi data adalah

sebagai berikut:

Tabel 1.6 Prinsip-prinsip dalam koleksi data

Collection Limitation Data sebaiknya diperoleh sesuai dengan hukum dan fair; beberapa data yang sangat sensitif sebaiknya tidak dikoleksi secara bersamaan.

Data Quality Data sebaiknya relevan dengan tujuan, akurat, lengkap, dan terkini.

Purpose Specification Tujuan penggunaan data sebaiknya diidentifikasi dan data sebaiknya dihapus jika data tersebut tidak mampu lagi memenuhi tujuan tersebut.

Use Limitation Penggunaan data selain yang diperlukan dilarang, kecuali dengan persetujuan subyek data atau otoritas hukum.

Security Safeguards Agensi sebaiknya membuat prosedur untuk membuat perlindungan terhadap kehilangan data, kerusakan data atau data yang sudah tidak berguna lagi.

Openness Harus mampu untuk memberikan informasi mengenai koleksi, penyimpanan, dan penggunaan data personal.

Individual Participation

Subyek data mempunyai hak untuk mengakses dan mengubah data personal.

1.3.5 Proteksi Intellectual Property

Isu privasi menerima banyak publikasi sebab privasi mempengaruhi

kebanyakan sebarang individu. Sebaliknya isu proteksi intellectual property jarang

didiskusikan karena hanya mempengaruhi beberapa individu dan perusahaan saja.

Intellectual property merupakan intangible property yang diciptakan oleh

individu maupun perusahaan yang diproteksi melalui hukum copyright, trade secret,

dan paten.

Copyright merupakan sebuah jaminan status yang memberikan pencipta karya

intellektual dengan kepemilikan selama 28 tahun (melalui pembaruan ulang

memungkinkan kepemilikan untuk periode yang lebih lama). Pemilik akan mendapat

fee dari seseorang yang ingin mengcopy karyanya. U.S.Federal Computer Software

Page 13: Modul junior gelombang i

Modul Pelatihan Junior Programming 9

Copyright Act (1980) memberikan proteksi kepada source dan object code, tetapi satu

problem adalah adanya ketidak jelasan apa yang harus diproteksi. Sebagai contoh,

konsep dan fungsi yang serupa dan feature umum (seperti menu pull-down, warna

dan icon) tidak diproteksi oleh hukum copyright.

Trade secret adalah kerja intelektual, semacam rencana bisnis, yang

merupakan rahasia perusahaan dan tidak berdasar pada informasi publik. Contohnya

adalah rencana strategis perusahaan. Hukum mengenai trade secret disahkan di

Amerika.

Patent merupakan sebuah dokumen yang menjamin hak eksklusif pemilik atas

sebuah penemuan selama 17 tahun. Ratusan paten yang berhubungan dengan

teknologi informasi telah dilakukan selama bertahun-tahun. Contoh paten yang

berhubungan dengan TI adalah “Metode dan sistem untuk translasi bahasa natural”

dan “Sistem berbasis pakar dan metode untuk mengelola kesalahan event pada

sebuah Local Area Network”. Open Market Corporation mendapatkan beberapa paten

yang berkaitan dengan electronic commerce. Juno menerima paten untuk penampilan

dan update interaktif di internet. Kebanyakan karya intelektual yang berkaitan dengan

TI adalah software. Mengcopy software tanpa membayar pemilik (seperti memberikan

sebuah disk ke teman untuk diinstal di komputernya) merupakan problem utama. Akan

tetapi selain itu juga terdapat beberapa problem lain yang berkaitan dengan hak karya

intelektual.

1.4 Profesi dan Profesionalisme

Profesi adalah Pekerjaan yang memiliki karakteristik tertentu, yakni

pengetahuan dan memiliki status dan prestise dari masyarakat serta memiliki otonomi.

Profesional adalah Seseorang yang memperoleh penghasilan dengan melakukan suatu

kegiatan atau melakukan suatu kegiatan atau mengerjakan sesuatu yang memerlukan

ketrampilan / keahlian khusus serta memiliki semangat pengabdian. (Seseorang yang

melakukan karena hobi atau untuk kesenangan biasa disebut sebagai seorang amatir).

Profesionalisme adalah Suatu paham yang mencitakan dilakukannya kegiatan-kegiatan

kerja tertentu dalam masyarakat, berbekalkan keahlian kerja tertentu dalam

masyarakat, berbekalkan keahlian yang tinggi dan berdasarkan rasa keterpanggilan –

serta ikrar (fateri/profilteri) untuk menerima panggilan tersebut – untuk dengan

Page 14: Modul junior gelombang i

Modul Pelatihan Junior Programming 10

semangat pengabdian selalu siap memberikan pertolongan kepada sesama yang

tengah dirundung kesulitan ditengah gelapnya kehidupan (Wignjosoebroto, 1999).

Biasanya dipahami sebagai suatu kualitas yang wajib dipunyai oleh setiap eksekutif

yang baik. Ciri-ciri profesionalisme:

1. Punya ketrampilan yang tinggi dalam suatu bidang serta kemahiran dalam

menggunakan peralatan tertentu yang diperlukan dalam pelaksanaan tugas

yang bersangkutan dengan bidang tadi

2. Punya ilmu dan pengalaman serta kecerdasan dalam menganalisis suatu

masalah dan peka di dalam membaca situasi cepat dan tepat serta cermat

dalam mengambil keputusan terbaik atas dasar kepekaan

3. Punya sikap berorientasi ke depan sehingga punya kemampuan mengantisipasi

perkembangan lingkungan yang terbentang di hadapannya

4. Punya sikap mandiri berdasarkan keyakinan akan kemampuan pribadi serta

terbuka menyimak dan menghargai pendapat orang lain, namun cermat dalam

memilih yang terbaik bagi diri dan perkembangan pribadinya

1.4.1 Ciri khas profesi.

Menurut Artikel dalam International Encyclopedia of education, ada 10 ciri khas

suatu profesi, yaitu:

1. Suatu bidang pekerjaan yang terorganisir dari jenis intelektual yang terus

berkembang dan diperluas

2. Suatu teknik intelektual

3. Penerapan praktis dari teknik intelektual pada urusan praktis

4. Suatu periode panjang untuk pelatihan dan sertifikasi

5. Beberapa standar dan pernyataan tentang etika yang dapat diselenggarakan

6. Kemampuan untuk kepemimpinan pada profesi sendiri

7. Asosiasi dari anggota profesi yang menjadi suatu kelompok yang erat dengan

kualitas komunikasi yang tinggi antar anggotanya

8. Pengakuan sebagai profesi

9. Perhatian yang profesional terhadap penggunaan yang bertanggung jawab dari

pekerjaan profesi

10. Hubungan yang erat dengan profesi lain

Page 15: Modul junior gelombang i

Modul Pelatihan Junior Programming 11

1.4.2 Tujuan Kode Etik Profesi

Prinsip-prinsip umum yang dirumuskan dalam suatu profesi akan berbeda satu

dengan yang lainnya. Hal ini disebabkan perbedaan adat, kebiasaan, kebudayaan, dan

peranan tenaga ahli profesi yang didefinisikan dalam suatu negara tidak sama. Adapun

yang menjadi tujuan pokok dari rumusan etika yang dituangkan dalam kode etik (Code

of conduct) profesi adalah:

1. Standar-standar etika menjelaskan dan menetapkan tanggung jawab terhadap

klien, institusi, dan masyarakat pada umumnya.

2. Standar-standar etika membantu tenaga ahli profesi dalam menentukan apa

yang harus mereka perbuat kalau mereka menghadapi dilema-dilema etika

dalam pekerjaan.

3. Standar-standar etika membiarkan profesi menjaga reputasi atau nama dan

fungsi-fungsi profesi dalam masyarakat melawan kelakuan-kelakuan yang jahat

dari anggota-anggota tertentu.

4. Standar-standar etika mencerminkan / membayangkan pengharapan moral-

moral dari komunitas, dengan demikian standar-standar etika menjamin bahwa

para anggota profesi akan menaati kitab UU etika (kode etik) profesi dalam

pelayanannya.

5. Standar-standar etika merupakan dasar untuk menjaga kelakuan dan integritas

atau kejujuran dari tenaga ahli profesi.

6. Perlu diketahui bahwa kode etik profesi adalah tidak sama dengan hukum (atau

undang-undang). Seorang ahli profesi yang melanggar kode etik profesi akan

menerima sangsi atau denda dari induk organisasi profesinya.

Page 16: Modul junior gelombang i

Modul Pelatihan Junior Programming 12

BAB 2. PEMROGRAMAN ALGORITMA DASAR

2.1 Pendahuluan

Program/Pemrograman adalah kumpulan instruksi-instruksi tersendiri yang

biasanya disebut source code yang dibuat oleh programmer (pembuat program).

Tabel 2.1 Paradigma Pemrograman

1 Pemrograman Prosedural Berdasarkan urutan-urutan, sekuensial

Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur merupakan kumpulan instruksi yang dikerjakan secara berurutan

Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah diubah.

2 Pemrograman Fungsional Berdasarkan teori fungsi matematika

Fungsi merupakan dasar utama program.

3 Pemrograman Terstruktur Secara berurutan dan terstrukrtur.

Program dapat dibagai-bagi menjadi prosedur dan fungsi.

Contoh: PASCAL dan C

4 Pemrograman Modular Pemrograman ini membentuk banyak modul.

Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri

Sebuah program dapat merupakan kumpulan modul-modul.

Contoh: MODULA-2 atau ADA

5 Pemrograman Berorientasi Obyek

Pemrograman berdasarkan prinsip obyek dimana obyek memiliki data/variabel/property dan method/event/prosedur yang dapat dimanipulasi

Contoh: C++, Object Pascal, dan Java.

6 Pemrograman Berorientasi Fungsi

Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung pada tujuan pembuatan bahasa pemrograman ini.

Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.

7 Pemrograman Deklaratif Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada memecahkan masalah dengan implementasi algoritma.

Contoh: PROLOG

Page 17: Modul junior gelombang i

Modul Pelatihan Junior Programming 13

2.2 Definisi Algoritma

Asal kata Algoritma berasal dari nama Abu Ja’far Mohammed Ibn Musa al-

Khowarizmi, ilmuan Persia yang menulis kitab al jabr w’al-muqabala (rules of

restoration and reduction) sekitar tahun 825 M. Dalam beberapa sumber menuliskan

definisi Algoritma adalah sebagai berikut:

Urutan langkah logis tertentu untuk memecahkan suatu masalah. Yang ditekankan

adalah urutan langkah logis, yang berarti algoritma harus mengikuti suatu urutan

tertentu, tidak boleh melompat-lompat. (Microsoft Press Computer and Internet

Dictionary 1997, 1998)

Alur pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara

tertulis. Yang ditekankan pertama adalah alur pikiran, sehingga algoritma

seseorang dapat juga berbeda dari algoritma orang lain. Sedangkan penekanan

kedua adalah tertulis, yang artinya dapat berupa kalimat, gambar, atau tabel

tertentu. (Dari Algoritma dan Struktur Data dengan C, C++, dan Java oleh Moh

Sjukani).

Contoh Algoritma dalam kehidupan nyata:

o Jika seorang ingin memasak atau membuat kue, baik itu melihat resep ataupun

tidak, pasti akan melakukan suatu langkah-langkah tertentu sehingga

masakannya atau kuenya jadi.

o Jika seseorang ingin mengirim surat kepada kenalannya di tempat lain, langkah

yang harus dilakukan adalah:

Menulis surat

Surat dimasukkan ke dalam amplop tertutup

Amplop ditempeli perangko secukupnya.

Pergi ke Kantor Pos terdekat untuk mengirimkannya.

Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan

berbagai masalah pemrograman, terutama dalam komputasi numeris. Tanpa algoritma

yang dirancang baik maka proses pemrograman akan menjadi salah, rusak, atau

lambat dan tidak efisien.

Page 18: Modul junior gelombang i

Modul Pelatihan Junior Programming 14

Alat yang digunakan untuk membuat program tersebut adalah bahasa

pemrograman. Bahasa pemrograman sangat bermacam-macam: C, C++, Pascal, Java,

C#, Basic, Perl, PHP, ASP, JSP, J#, J++ dan masih banyak bahasa lainnya. Dari berbagai

bahasa pemrograman cara memberikan instruksinya berbeda-beda namun bertujuan

menghasilkan output yang sama.

Kriteria Algoritma Menurut Donald E. Knuth

1. Input, algoritma dapat memiliki nol atau lebih inputan dari luar.

2. Output, algoritma harus memiliki minimal satu buah output keluaran.

3. Definiteness, algoritma memiliki instruksi-instruksi yang jelas dan tidak ambigu.

4. Finiteness, algoritma harus memiliki titik berhenti (stopping role).

5. Effectiveness, algoritma sebisa mungkin harus dapat dilaksanakan dan efektif.

Contoh instruksi yang tidak efektif adalah: A = A + 0 atau A = A * 1

Adapun jenis-jenis Proses Algoritma adalah sebagai berikut:

1. Sequence Process, instruksi dikerjakan secara sekuensial, berurutan.

2. Selection Process, instruksi dikerjakan jika memenuhi kriteria tertentu.

3. Iteration Process, instruksi dikerjakan selama memenuhi suatu kondisi tertentu.

4. Concurrent Process, beberapa instruksi dikerjakan secara bersama.

2.3 Definisi Program

Program adalah kata, ekspresi, pernyataan yang disusun dan dirangkai

menjadi satu kesatuan prosedur yang berupa urutan langkah untuk menyelesaikan

masalah yang diimplementasikan dengan menggunakan bahasa pemrograman

sehingga dapat dieksekusi oleh komputer.

Bahasa Pemrograman adalah prosedur atau tata cara penulisan program.

Sedangkan Pemrograman adalah proses mengimplementasikan urutan langkah untuk

menyelesaikan suatu masalah dengan menggunakan suatu bahasa pemrograman.

Tahapan-tahapan Problem Solving:

1. Memahami / menganalisis masalah

2. Merancang/merumuskan Algoritma

3. Membuat Flowchart

4. Menulis Program

Page 19: Modul junior gelombang i

Modul Pelatihan Junior Programming 15

5. Uji hasil

Program yang baik memiliki standar penilaian:

1. Standar Teknik Pemecahan Masalah

a. Teknik Top-Down

b. Teknik Bottom-Up

2. Standar Penyusunan Program

a. Kebenaran logika dan penulisan

b. Waktu minimum untuk penulisan program

c. Kecepatan maksimum eksekusi program

d. Ekspresi penggunaan memori

e. Kemudahan merawat & mengembangkan program

f. User friendly

g. Portability

h. Pemrograman Modular

3. Standar Perawatan Program

a. Dokumentasi

b. Penulisan Instruksi

4. Standar Prosedur

Tahap-tahap Pemrograman :

I. Fase Problem Solving

II. Fase Implementation

Page 20: Modul junior gelombang i

Modul Pelatihan Junior Programming 16

Fase I Fase II Gambar 2.2 Tahapan Pemrograman

2.4 Variabel, Konstanta, Operator, dan Tipe Data

a. Variabel

Variabel adalah sebuah identifier dimana nilainya dapat diubah-ubah dalam

badan program. Variabel yang akan digunakan dalam program harus didefinisikan dulu

dalam bagian deklarasi bersama tipe data yang akan mengisinya.

Sintaksnya:

Var nama_variabel : tipe_variabel;

Ketentuan untuk penamaan variabel :

1. Nama identifier maksimal 63 karakter, tidak diperkenankan adanya blank

(spasi).

2. Dapat terdiri atas huruf dan angka atau gabungan keduanya serta tanda garis

bawah ('_'). Namun harus didahului oleh huruf.

3. Tidak membedakan antara huruf besar dan huruf kecil.

4. Bukan Reserved Word Identifier.

5. Tidak boleh mengandung karakter yang dipakai untuk operator, seperti : (,),+, -,

*, /, <, >, : , ; dan lain-lain

Analisa Problem

Perancangan Algoritma

Test

Pembuatan

Program

Test

Dokumentasi

Dipakai

Page 21: Modul junior gelombang i

Modul Pelatihan Junior Programming 17

b. Konstanta

Adalah sebuah identifier yang memiliki nilai yang tetap (tidak dapat diubah-

ubah) dalam satu program. Constanta harus didefinisikan terlebih dulu dalam bagian

deklarasi. Penulisan untuk nilai konstanta yang bertipe teks atau string diapit dengan

tanda petik tunggal (‘).

Contoh :

Const Gajiperjam = 5000; Maksimal = 100; c. Operator Dalam melaksanakan proses pengolahan data, Delphi menyediakan berbagai operator,

yaitu :

- Operator assignment ( :=) berfungsi untuk memasukkan suatu nilai data ke dalam

sebuah variabel, dengan bentuk penulisan :

Nama variabel := ekspresi;

Contoh :

Harga := 500; Jumlah:=20; Total:= harga * jumlah; 1. Operator Aritmatika

Tabel 2.1 Operator Aritmatika Operator Fungsi Tipe yang

diproses Tipe hasil proses

* Perkalian Integer,real Integer,real / Pembagian real Integer,real Integer,real + Penjumlahan Integer,real Integer,real - Pengurangan Integer,real Integer,real

Div Pembagian integer Integer Integer Mod Sisa hasil bagi Integer Integer

2. Operator Relasi

Operator relasi, berfungsi untuk membandingkan suatu nilai (ekspresi) dengan nilai (ekspresi) lain yang akan menghasilkan suatu nilai logika (boolean) yaitu true dan false. Kedua data yang dibandingkan harus memiliki tipe data yang sama. Contoh : =, >,<,>=,<=,<> (tidak sama dengan).

3. Operator Logika Operator logika, dibagi dua:

Page 22: Modul junior gelombang i

Modul Pelatihan Junior Programming 18

Tabel 2.3 Operator Bit

Operator Keterangan Tipe Data Tipe Hasil

And Dan Integer Boolean

Or Atau Integer Boolean

Not Tidak Integer Boolean

Xor Exclusive or Integer Boolean

Shl Geser ke kiri Integer Boolean

Shr Geser ke kanan Integer Boolean

Tabel 2.3 Operator Boolean

Operator Keterangan Tipe Data Tipe Hasil And Dan Boolean Boolean Or Atau Boolean Boolean

Not Tidak Boolean Boolean Xor Exclusive or Boolean Boolean

*Operator boolean selalu memberikan hasil true atau false, sedangkan operator bit berhubungan dengan

pergeseran atau pembandingan pada level bit (pada nilai integer).

d. Tipe data

Tipe data adalah pengelompokan data berdasarkan isi dan sifatnya. Dalam

logika kita tipe data adalah jenis dari sesuatu yang dapat dimasukkan ke dalam kotak

kosong yang hanya khusus dibuat untuk jenis benda dengan jenis tertentu.

Tipe data yang biasa digunakan dalam sebuah algoritma dan pemrograman

adalah:

1. String

Biasa digunakan untuk masukan data string ( String merupakan gabungan beberapa

character ).

2. Integer

Merupakan bilangan asli ( 1, 2, 3, 4, ...).

3. Real

Bilangan bulat (berupa pecahan dan integer).

4. Boolean

Digunakan untuk data logika yang berisi true atau false.

5. Character

Digunakan untuk menyatakan karakter satu huruf.

6. Byte

Besar dari type ini hanya 8 bit.

Page 23: Modul junior gelombang i

Modul Pelatihan Junior Programming 19

7. Word

Besar bilangan ini 16 bit.

8. Date and time

Type waktu dan tanggal yang disediakan Delphi

9. Array

Variabel tunggal yang digunakan untuk menyimpan sekumpulan data yang sejenis.

Contoh :

Var x : array[1..8] of longint;

Tabel 2.4 Ragam Tipe Data

Name Description Size* Range* char Character or small integer. 1byte signed: -128 to 127

unsigned: 0 to 255 short int

(short)

Short Integer. 2bytes signed: -32768 to 32767 unsigned: 0 to 65535

int Integer. 4bytes signed: -2147483648 to 2147483647 unsigned: 0 to 4294967295

long int

(long)

Long integer. 4bytes signed: -2147483648 to 2147483647 unsigned: 0 to 4294967295

bool Boolean value. It can take one of two values: true or false.

1byte true or false

float Floating point number. 4bytes 3.4e +/- 38 (7 digits) double Double precision floating point number. 8bytes 1.7e +/- 308 (15 digits)

long double Long double precision floating point number.

8bytes 1.7e +/- 308 (15 digits)

wchar_t Wide character. 2bytes 1 wide character

2.5 Pengulangan

Salah satu kemampuan komputer yang dapat dimanfaatkan adalah mengulang

suatu instruksi, bahkan aksi, secara berulang-ulang dengan peformansi yang sama.

Berbeda dengan manusia yang cenderung melakukan kesalahan jika melakukan hal

yang sama (karena lelah atau bosan), komputer akan melakukan pengulangan dengan

setia sesuai dengan perintah yang diberikan.

Pengulangan terdiri dari dua bagian yaitu:

a. kondisi yang mengakibatkan pengulangan suatu saat berhenti, yang

dinyatakan oleh sebuah ekspresi logik baik secara eksplisit maupun implisit,

b. badan pengulangan, yaitu aksi yang harus diulang selama kondisi yang

ditentukan untuk pengulangan masih dipenuhi.

Page 24: Modul junior gelombang i

Modul Pelatihan Junior Programming 20

Pengulangan harus berhenti, ini yang harus dijamin oleh pemrogram.

Pengulangan yang terus menerus harus dapat dideteksi pemrogram bahkan sebelum

program dieksekusi oleh mesin, berdasarkan invariansi dari badan pengulangan

tersebut. Notasi pengulangan adalah salah satu notasi dasar dalam penulisan algoritma

selain analisis kasus. Namun notasi tersebut hanya akan ada artinya jika dikenakan

terhadap skema tertentu.

Pengulangan mempunyai beberapa bagian yang harus dipenuhi antara lain:

1. Inisialisasi, adalah tahap persiapan membuat kondisi awal sebelum melakukan

pengulangan, misalnya mengisi variabel dengan nilai awal. Tahap ini dilakukan

sebelum memasuki bagian pengulangan.

2. Proses, adalah tahap proses terjadi di dalam bagian pengulangan dimana berisi

semua proses yang perlu dilakukan secara berulang- ulang.

3. Iterasi, adalah terjadi di dalam pengulangan dimana merupakan kondisi

pertambahan agar pengulangan dapat terus berjalan

4. Terminasi/Kondisi Pengulangan Terminasi, adalah kondisi berhenti dari

pengulangan, kondisi berhenti sangat penting dalam pengulangan agar

pengulangan dapat berhenti, tidak menjadi pengulangan yang tanpa henti.

Kondisi pengulangan adalah kondisi yang dipenuhi oleh kondisi jalannya

algoritma untuk masuk ke dalam blok pengulangan.

Pengulangan merupakan salah satu inti dari analisis kasus pada pembuatan

algoritma, sebuah kasus harus dipikirkan penyelesaiannya dengan pemikiran ada

proses atau aksi yang harus dikerjakan secara berulang-ulang agar sebuah kasus

terselesaikan, misalkan membuat sebuah penyelesaian kasus-kasus sebagai berikut:

Tabel 2.5 Bahasa Algoritma Pengulangan

Bahasa Manusia Bahasa Algoritmik

Kasus menuliskan sesuatu ke layar sebanyak 10 kali, maka harus diselesaikan dengan membuat kode pengulangan yang akan dijalankan oleh compiler atau interpreter sebanyak 10 kali dengan aksi yang harus dijalankan adalah menuliskan sesuatu ke layar

i : integer

for i=0 to 10 do

output("sesuatu")

{end for}

Kasus mencari rata-rata dari sepuluh bilangan positif pertama, maka harus diselesaikan dengan membuat kode

i : integer

hasil : integer

hasil <- 0

Page 25: Modul junior gelombang i

Modul Pelatihan Junior Programming 21

pengulangan yang menambahkan bilangan 1 sampai sepuluh dengan menggunakan pengulangan yang dijalankan 10 kali, baru kemudian hasilnya dibagi dengan banyaknya bilangan, misalkan membuat sebuah variabel yang menyimpan nilai awal 0 kemudian setiap dijalankan blok pengulangan dirinya ditambahkan dengan nilai berapa kali pengulangan telah dijalankan, secara logika pada akhir pengulangan variabel ini akan bernilai 1 + 2 + 3 + ..... + 10 baru kemudian dicari rata-ratanya

for i=1 to 10 do

hasil <- hasil + i

{end for}

hasil <- has

il / 10

2.5.1 For

Pengulangan menggunakan for biasanya digunakan untuk pengulangan yang

sudah jelas perlu dilakukan berapa kali, dengan kata lain jumlah pengulangan yang

dibutuhkan sudah diketahui oleh pembuat program.

Deklarasi penggunaan pengulangan for adalah sebagai berikut:

Tabel 2.6 Deklarasi For untuk pengulangan Bahasa Algoritmik Bahasa Pascal Bahasa C

{pengulangan for

positif}

for nama_variabel <-

nilai_awal to

nilai_berhenti do

{proses}

.............

{end for}

/* pengulangan for positif */

for nama_variabel:=nilai_awal

to nilai_berhenti do

begin

// proses

..................

end;

/* pengulangan for

positif */

for(nama_variabel=nilai_

awal;nama_variabel

operator_relasi;nama_var

iabel++){

// proses

...................

}

{pengulangan for

positif}

for i <- 1 to 10 do

{proses}

..............

{end for}

/* pengulangan for positif */

for i:=1 to 10 do

begin

// proses

.................

end;

/* pengulangan for

positif */

for(i=1; i <= 10; i++){

//proses

.................

}

{pengulangan for

negatif}

for nama_variabel <-

nilai_awal downto

nilai_berhenti do

{proses}

...............

{end for}

/* pengulangan for negatif */

for nama_variabel:=nilai_awal

downto nilai_berhenti

do begin

// proses

.................

end;

/* pengulangan for

negatif */

for(nama_variabel=nilai_

awal; nama_variabel

operator nilai_berhenti;

nama_variabel --){

relasi

// proses

.................

}

{pengulangan for

negatif}

for i <- 10 downto 1

/* pengulangan for negatif */

for i:=10 downto 1 do begin

// proses

/* pengulangan for

negatif */

for(i=10; i >= 1; i--){

Page 26: Modul junior gelombang i

Modul Pelatihan Junior Programming 22

do

{proses}

...............

{end for}

.................

end;

//proses

.................

}

2.5.2 While

Pengulangan while biasa digunakan jika jumlah pengulangan tidak diketahui.

Pengulangan while akan melakukan pengulangan selama kondisi pengulangan

terpenuhi. Deklarasi pengulangan while adalah sebagai berikut:

Tabel 2.7 Deklarasi While untuk pengulangan Bahasa Algoritmik Bahasa Pascal Bahasa C

{inisialisasi}

...........

while

kondisi_pengulangan

do

{proses} .

.........

{iterasi}

{end while}

// inisialisasi

.................

while kondisi_pengulangan do

begin

// proses

.............

// iterasi

end;

// inisialisasi

.................

while(kondisi_pengulanga

n){

// proses

.............

// iterasi

}

i : integer

{inisialisasi}

i <- 1

while i ≤ 9 do

{proses}

.............

{iterasi}

i <- i + 1

{end while}

var i : integer;

begin

// inisialisasi

i := 1;

while i <= 9 do

begin

// proses

.............

// iterasi

i := i + 1;

end;

end.

int i;

// inisialisasi

i = 1;

while(i <= 9){

// proses

.............

// iterasi i = i + 1;

}

2.5.3 Repeat

Pengulangan repeat biasa digunakan jika jumlah pengulangan tidak

diketahui, namun berbeda dengan while karena kondisi pengulangan ada di bagian

bawah blok pengulangan. Pengulangan repeat minimal selalu dilakukan sekali karena

kondisi pengulangan ada di bagian bawah, berbeda dengan pengulangan while yang

saat pertama kali masuk blok pengulangan dilakukan pengecekan kondisi pengulangan.

Hal tersebut dapat dianalogikan dengan pada repeat letak dari "pos satpam" yang

Page 27: Modul junior gelombang i

Modul Pelatihan Junior Programming 23

bertugas memeriksa apakah kondisi program memenuhi syarat pengulangan atau tidak

berada di akhir blok pengulangan (dapat dianalogikan berada pada pintu keluar blok).

Deklarasi pengulangan repeat adalah sebagai berikut:

Tabel 2.8 Deklarasi Repeat untuk pengulangan Bahasa Algoritmik Bahasa Pascal Bahasa C

{inisialisasi}

...........

repeat

{proses}

..........

{iterasi}

until

kondisi_terminasi

{ inisialisasi }

...............

repeat

begin

{ proses }

...........

{ iterasi }

end;

until(kondisi_pengulangan

);

// inisialisasi

...............

do{

// proses

...........

// iterasi

}

while(kondisi_pengulanga

n);

i : integer

{inisialisasi}

i <- 1

repeat

{proses}

..........

{iterasi}

i <- i + 1

until (i = 2)

var i : integer;

begin

{ inisialisasi }

i := 1;

repeat

begin

{ proses }

.............

{ iterasi }

i := i + 1;

end;

until(i = 2);

end.

int i;

// inisialisasi

i = 1;

do{

// proses

.............

// iterasi

i = i + 1;

}while(i < 2);

Pada deklarasi pengulangan repeat terdapat perbedaan antara bahasa

algoritmik dan bahasa pemrograman C yaitu pada kondisi pengulangan ("pos satpam").

Pada bahasa algoritmik deklarasinya adalah repeat-until yang berarti lakukan

pengulangan sampai pada kondisi setelah deklarasi until, sedangkan pada bahasa

pemrograman C menggunakan kata kunci do-while yang berarti lakukan

pengulangan selama kondisi setelah deklarasi while, sehingga pada bahasa algoritmik

menggunakan kondisi berhenti dan pada bahasa pemrograman C menggunakan

kondisi diperbolehkan pengulangan dijalankan, tapi pada dasarnya keduanya bertujuan

sama yaitu menentukan kondisi berhenti pengulangan.

2.6 Percabangan

Percabangan if merupakan sebuah blok program yang menyatakan bahwa

sebuah aksi akan dijalankan jika kondisi percabangan dipenuhi jika tidak dipenuhi maka

Page 28: Modul junior gelombang i

Modul Pelatihan Junior Programming 24

aksi tidak akan dijalankan. Percabangan if biasa digunakan untuk mengerjakan aksi

yang memiliki syarat tertentu untuk menjalankannya.

Tabel 2.8 Deklarasi If untuk percabangan Logika Pemikiran Manusia Bahasa Algoritmik

Misal ada sebuah rumah yang hanya mau menerima kotak yang berisi nilai A, B, dan C untuk menyimpulkan bahwa nilai itu merupakan nilai lulus.

nilai : char

input(nilai)

if nilai = 'A' or nilai = 'B' or

nilai = 'C' then

output("lulus")

{end if}

Percabangan merupakan salah satu inti dari analisis kasus pada pembuatan

algoritma, sebuah kasus harus dipikirkan penyelesaiannya dengan pemikiran ada

sebuah syarat dan proses atau aksi yang harus dikerjakan jika syarat tidak terpenuhi

dan jika syarat terpenuhi, misalkan membuat sebuah penyelesaian kasus menyatakan

apakah sebuah bilangan ganjil atau genap, maka dapat dibuat sebuah penyelesaian

sebagai berikut:

Tabel 2.9 Deklarasi If dalam bahasa algoritmik Bahasa Manusia Bahasa Algoritmik

jika sebuah bilangan dibagi dengan 2 (dua) masih sisa 1 (satu) maka merupakan bilangan ganjil

if (bilangan mod 2) = 1 then

output("bilangan ganjil")

{end if}

jika sebuah bilangan dibagi dengan 2 (dua) sisanya adalah 0 (nol) maka merupakan bilangan genap

if (bilangan mod 2) = 0 then

output("bilangan genap")

{end if}

Jika sebuah bilangan dibagi dengan 2 (dua) masih sisa 1 (satu) maka merupakan bilangan ganjil, tapi jika syarat tidak dipenuhi maka merupakan bilangan genap

if (bilangan mod 2) = 1 then

output("bilangan ganjil")

{end if}

else

output("bilangan genap")

{end else}

Jika Nilai A atau B atau C maka boleh masuk rumah

Page 29: Modul junior gelombang i

Modul Pelatihan Junior Programming 25

2.6.1 Satu Kondisi

Blok program if untuk satu kondisi berarti hanya ada sebuah blok aksi yang

akan dikerjakan jika syarat kondisi terpenuhi. Deklarasi percabangan if satu kondisi

adalah sebagai berikut:

Tabel 2.10 Deklarasi If untuk kondisi Bahasa Algoritmik Bahasa Pascal Bahasa C

if kondisi_percabangan

then

{proses}

............

{end if}

if kondisi_percabangan

then

begin

{ proses }

.............

end;

if(kondisi_percabangan){

// proses

.............

}

ketemu : boolean

ketemu <- true

if ketemu = true then

{proses}

output("nilai

variabel ketemu : ",

ketemu)

{end if}

var

ketemu : boolean;

begin

ketemu := true;

if ketemu = true then

begin

{proses}

write('nilai variabel

ketemu : true\n');

end;

end.

int ketemu = 1;

if(ketemu == 1){

// proses

printf("nilai variabel

ketemu : true\n");

}

Deklarasi percabangan berikut :

if ketemu = true then

{proses}

output("nilai variabel ketemu : ", ketemu)

{end if}

berarti ketika eksekusi program sampai pada blok percabangan akan dilakukan

pengecekan nilai variabel ketemu, jika variabel ketemu bernilai true maka aksi

menuliskan nilai variabel ketemu ke layar akan dikerjakan, tapi jika nilai ketemu

adalah false maka aksi menuliskan nilai variabel ketemu ke layar tidak dikerjakan.

2.6.2 Dua Kondisi

Page 30: Modul junior gelombang i

Modul Pelatihan Junior Programming 26

Blok program if-else dipergunakan untuk menyatakan percabangan dua

kondisi dimana ada dua blok aksi yang dipilih untuk dikerjakan jika syarat kondisi aksi

terpenuhi. Saat pembacaan program sampai pada blok if- else maka akan

dilakukan pengecekan terhadap syarat kondisi percabangan yang ada pada deklarasi

if, jika syarat dipenuhi maka yang akan dijalankan adalah aksi yang ada di dalam blok

if, tapi jika syarat tidak dipenuhi maka aksi yang dikerjakan adalah yang ada di dalam

blok else.

Deklarasi percabangan if-else adalah sebagai berikut :

Tabel 2.11 Deklarasi Percabangan If-else Bahasa Algoritmik Bahasa Pascal Bahasa C

if kondisi_percabangan

then

{proses}

............

{end if}

else

{proses}

............

{end else}

if kondisi_percabangan

then

begin

{ proses }

.............

end else{

begin { proses }

.............

end;

if(kondisi_percabangan){

// proses

.............

} else{

// proses

.............

}

ketemu : boolean

ketemu <- false

if ketemu = true then

{proses}

output("(if) nilai

variabel ketemu : ",

ketemu)

{end if}

else

{proses}

output("(else) nilai

variabel ketemu : ",

ketemu)

{end else}

var ketemu : boolean;

begin ketemu = false;

if ketemu = true then begin

{ proses }

write('(if) nilai

variabel ketemu :

true');

end else

begin

{ proses }

write('(else) nilai

variabel ketemu :

false');

end;

end.

int ketemu;

ketemu = 0;

if(ketemu == 1){

// proses

printf("(if) nilai

variabel ketemu :

true\n");

} else{

// proses

printf("(else) nilai

variabel ketemu :

false\n");

}

Page 31: Modul junior gelombang i

Modul Pelatihan Junior Programming 27

2.6.3 If dalam if

Sebuah program mengijinkan blok percabangan if di dalam blok percabangan

lainnya, dan tidak membatasi jenis percabangan apa yang boleh berada di dalam

percabangan lainnya misalnya dalam bahasa algoritmik berikut:

if kondisi_percabangan_1 then

{ proses jika kondisi percabangan 1 terpenuhi }

if kondisi_percabangan_1_1 then

{ proses jika kondisi percabangan 1_1 terpenuhi }

{end if}

if kondisi_percabangan_1_2 then

{ proses jika kondisi percabangan 1_1 terpenuhi atau tidak

terpenuhi dan kondisi percabangan 1_2 terpenuhi }

{end if}

{end if}

else

{ proses jika kondisi percabangan 1 tidak terpenuhi }

{end else}

2.6.4 Depend on (dua kondisi atau lebih)

Percabangan depend on biasa digunakan untuk dua kondisi atau lebih

bergantung pada nilai sebuah variabel, syarat kondisi pada percabangan depend on

biasanya hanya sebuah nilai. Deklarasi percabangan depend on adalah sebagai berikut:

Tabel 2.12 Deklarasi Depend on Bahasa Algoritmik Bahasa Pascal Bahasa C

depend on

(nama_variabel)

nilai_variabel_1 :

aksi_1

break

nilai_variabel_2 :

aksi_2

break

...................

nilai_variabel_n :

aksi_n

case nama_variabel of

nilai_variabel_1 :

begin

aksi_1

end;

nilai_variabel_2 :

begin

aksi_2

end;

.................

nilai_variabel_n :

begin

aksi_n

switch(nama_variabel){

case nilai_variabel_1 :

aksi_1

break;

case nilai_variabel_2 :

aksi_2

break;

.................

case nilai_variabel_n :

Page 32: Modul junior gelombang i

Modul Pelatihan Junior Programming 28

break

default :

aksi_standar break

{end depend on}

end;

else

begin

aksi_standar

end;

end;

aksi_n

break;

default :

aksi_default

break;

}

depend on (hari)

1:

output("hari senin")

break

2:

output("hari selasa")

break

3:

output("hari rabu")

break

..................

7:

output("hari minggu")

break

default :

output("tidak ada hari

ke : ", hari)

break

{end depend on}

case hari of

1:

begin

write('hari senin');

end;

2: begin

write('hari selasa');

end;

3: begin

write('hari rabu');

end; ..................

7: begin

write('hari minggu');

end;

else

begin write('tidak ada hari

ke : ', hari);

end;

end;

switch(hari)

{ case 1 :

printf("hari senin");

break;

case 2 :

printf("hari selasa");

break;

case 3 :

printf("hari rabu");

break;

..................

case 7 :

printf("hari minggu");

break;

default :

printf("tidak ada hari

ke : %d\n", hari);

break;

}

2.7 Array (Larik)

Array secara gambaran pada dunia nyata hampir sama dengan tabel, dimana

tabel adalah sekumpulan elemen yang pada setiap elemennya dapat diakses dengan

indeksnya. Array biasa digunakan untuk menyimpan banyak data dalam sebuah tabel

yang terstruktur. Array merupakan bagian penting dalam penyimpanan data pada

pemrograman, karena alokasi atau pemesanan tempat dalam sebuah array tergantung

dari kebutuhan. Array sangat penting dalam penyimpanan data karena jika array tidak

ada bayangkan saja jika dibutuhkan sepuluh tempat untuk menyimpan sepuluh nilai,

apakah harus dibuat sepuluh buah variabel, bisa jadi dalam pengaksesannya nanti akan

menjadi sangat rumit.

Type array adalah type yang mengacu kepada sebuah atau sekumpulan elemen

melalui indeks. Elemen dari array dapat diakses langsung jika dan hanya jika indeks

terdefinisi (ditentukan harganya dan sesuai dengan domain yang didefinisikan untuk

Page 33: Modul junior gelombang i

Modul Pelatihan Junior Programming 29

indeks tersebut) . Array biasanya disebut juga sebagai tabel, vektor atau larik. Nama

suatu array diasosiasikan dengan banyak nilai elemennya yang disimpan dalam nama

tersebut.

Struktur data ini dipakai untuk merepresentasikan sekumpulan informasi yang

bertype sama, dan disimpan dengan urutan yang sesuai dengan definisi indeks secara

kontigu dalam memori komputer . Karena itu indeks harus suatu type yang mempunyai

keterurutan (ada suksesor dan predesesor), misalnya type integer, karakter.

Jika indeksnya adalah integer, maka keterurutan indeks sesuai dengan urutan

integer (suksesor adalah plus satu, predesesor adalah minus satu) Jika indeksnya

ditentukan sesuai dengan enumerasi (misalnya bertype pada karakter), maka

keterurutan indeks ditentukan sesuai dengan urutan enumerasi.

Contoh deklarasi Array adalah:

KAMUS

TabNamaHari: array [1..7] of string

TabJumlahHari : array [1..12] of integer

type Point : <x:integer, y:integer >

type Indeks : integer [1..10]

TabTitikSurvey : array [Indeks] of Point

TabFREK : array ['A'..'Z'] of integer

Domain :

Domain array sesuai dengan pendefinisian indeks

Domain isi array sesuai dengan jenis array

Konstanta :

Konstanta untuk seluruh array tidak terdefinisi,

Konstanta hanya terdefinisi jika indeks dari array terdefinisi

Cara mengacu sebuah elemen: melalui indeks

TabNamaHarii, jika i terdefinisi

TabNamaHari7

TabJumlahHari3

Contoh Pemakaian Array Kasus-1 : NAMA HARI

Page 34: Modul junior gelombang i

Modul Pelatihan Junior Programming 30

Nama hari dalam minggu akan direpresentasi sebagai array sebagai berikut, dan harus

dituliskan sebuah algoritma yang membaca hari ke berapa [1..7], kemudian menuliskan

nama harinya.

Contoh : Input : 1 Output “Senin” Input : 6 Output “Sabtu”

Program NamaHari

{ Mengisi TabelNamaHari yang akan memungkinkan untuk menuliskan nama

hari : tabulasi eksplisit nama hari berdasarkan indeks HariKe... }

Kamus :

TabelNamaHari : array [1..7] of string

procedure IsiTabHari { mengisi tabel nama hari }

HariKe : integer [1..7] {nomor dari hari}

Algoritma :

IsiTabHari { Contoh pemanfaatan setelah Tabel TabNamaHari terdefinisi

isinya }

Input (HariKe) Output ( TabelNamaHariHariKe)

procedure IsiTabHari

{ mengisi tabel nama hari }

{ I.S : TabNamaHari tak terdefinisi }

{ F.S. : TabNamaHari siap dipakai, semua elemennya [1..7] sudah diisi }

Kamus lokal :

Algoritma :

TabelNamaHari 1 ← “Senin”

TabelNamaHari 2 ← “Selasa”

TabelNamaHari 3 ← “Rabu”

TabelNamaHari 4 ← “Kamis”

TabelNamaHari 5 ← “Jumat”

TabelNamaHari 6 ← “Sabtu”

TabelNamaHari 7 ← “Minggu”

Kasus-2 : TABEL KATA Didefinisikan bahwa kata adalah sebuah type yang menyimpan kata dan panjang katanya. Panjang maksimum sebuah kata adalah 50. Maka dibuat kamus sebagai berikut : KAMUS

constant MaxKata : integer = 50

type Kata : <TabKata: array [1..MaxKata] of character {definisi kata}

Length : integer > {panjang kata }

Page 35: Modul junior gelombang i

Modul Pelatihan Junior Programming 31

Berikut ini adalah prosedur untuk membaca sebuah kata dari keyboard, dan menuliskan kata yang dibaca serta panjangnya ke layar dengan menggunakan kamus umum di atas:

Procedure BacaTulisKata

{I.S. sembarang; F.S : sebuah kata dibaca dan dituliskan kembali di

layar. Jika karakter yang diketikkan melebihi panjang kata maksimum,

pembacaan dihentikan dan pada akhir proses dituliskan pesan. Jika

program terus menerus membaca tanpa menghentikan pembacaan ketika

ukuran array dilampaui, program akan “abort”. Maka jika pengguna

mengetikkan sejumlah karakter yang melebihi kapasitas pendefinisian

tabel TabKata, pembacaan dihentikan. }

Kamus lokal :

K : Kata

cc : character

i : integer

Algoritma :

{ Baca kata huruf demi huruf, pembacaan diakhiri dengan huruf „@‟}

{ skema pemrosesan sekuensial dengan mark, dengan kasus kosong }

input (cc ) {First-Elmt}

K.Length ← 0 {Inisialisasi, harus di sini spy kata “kosong”

terdefinisi}

if (cc = „@‟)then

output (“tidak ada kata yang dibaca”) {Proses-Kasus-Kosong}

else

repeat

K.Length ← K.Length + 1

K.TabKatai ← cc {Proses-Current-Elmt }

input (cc ) {Next-Elmt }

until (cc = „@‟ or K.Length = Maxkata)

{Terminasi }

depend on TabKatai :

cc = „@‟ : output (“Pembacaan kata dihentikan”)

cc = „@‟ : output (“Kata yang dibaca adalah : “)

{ Penulisan kata }

i traversal [1..K.Length]

output (K.TabKatai)

output (“Panjang kata : “, K.Length)

2.8 Sequential File

Sequential file (Arsip sekuensial) adalah sekumpulan rekaman yang disimpan

dalam media penyimpanan sekunder komputer, yang dapat diakses secara sekuensial

mulai dari rekaman pertama sampai dengan rekaman yang terakhir, rekaman per

rekaman secara searah. Rekaman terakhir adalah rekaman fiktif, yang menandai akhir

dari arsip. Pada beberapa implementasi, rekaman fiktif ini disebut sebagai EOF (End Of

File). Arsip sekuensial berasal dari hasil perekaman (penulisan) yang juga dilakukan

rekaman per rekaman.

Setiap rekaman boleh berisi type dasar ataupun type terstruktur yang telah

didefinisikan, setiap rekaman strukturnya sama. Elemen dari rekaman disebut sebagai

Page 36: Modul junior gelombang i

Modul Pelatihan Junior Programming 32

"field", ada field (atau juga sekumpulan field) rekaman yang disebut sebagai "key"

karena kekhususannya dalam proses. Jika key dari setiap rekaman tidak ada yang sama

(unik), maka key menjadi identitas rekaman, dan disebut "primary key".

Setiap rekaman dapat diakses dan dikonsultasi (dibaca) menurut urutannya

dengan pemanggilan primitif akses yang tersedia. Perekaman dapat dilakukan melalui

primitif penulisan. Perhatikan bahwa suatu arsip sekuensial hanya dapat disiapkan

hanya pada salah satu modus operasi: diakses/dibaca, atau ditulis. Dalam definisi arsip

sekuensial, tidak pernah sebuah arsip diproses untuk kedua modus: dibaca dan

sekaligus ditulis. Primitif-primitif tersebut, akan didefinisikan kemudian.

Cara Pendefinisian: type rekaman : <.........> sebuah type terdefinisi untuk setiap rekaman

NamaArsip : SEQFILE of

(*) <nama_rek>: rekaman (

1) <mark>

Dengan catatan bahwa (*) mungkin kosong, 1 rekaman atau lebih.

Domain setiap rekaman : sesuai dengan domain masing-masing rekaman

Konstanta : sebuah rekaman

Primitif akses untuk arsip sekuensial:

procedure ASSIGN (Input NamaArsip, NamaFisik)

{ Arsip sekuensial yang namamnya dikenal di dalam program sebagai NamaArsip,

secara fisik diberi nama NamaFisik

I.S. : sembarang

F.S : Arsip dengan NamaArsip pada program siap dipakai }

Catatan:

Pada beberapa pemroses bahasa, primitif ASSIGN diberikan dalam teks

algoritma, dan dalam beberapa pemroses bahasa pemrograman yang lain diberikan di

luar program (pada Job Control Language). Pada teks algoritma di buku ini, perintah

ASSIGN tidak diberikan di dalam teks algoritma.

MARK Rekaman Terakhir

Rekaman Kedua

Rekaman Pertama Urutan Akses (satu per satu)

Page 37: Modul junior gelombang i

Modul Pelatihan Junior Programming 33

procedure OPEN (Input NamaArsip, <rekaman>)

{ Arsip sekuensial siap dibaca Rekaman pertama yang informasinya ada pada

<rekaman> dapat diakses.

I.S. sembarang

F.S : informasi pada rekaman pertama siap diakses, dengan mengacu kepada

<rekaman>

}

procedure READ (Input NamaArsip, <rekaman>)

{ Rekaman sesudah rekaman yang sedang "Current", yang dapat diakses.

I.S. : <rekaman> bukan merupakan mark, sebut sebagai Current_Rekaman

F.S : Arsip dimajukan satu rekaman, <rekaman> berisi informasi yang

disimpan pada rekaman sesudah Current_Rekaman. Mungkin <rekaman> yang baru

adalah mark

}

procedure CLOSE (Input NamaArsip)

{ Arsip sekuensial s"ditutup", tidak dapat diakses maupun ditulisi lagi.

I.S. : sembarang

F.S : Arsip tidak dapat diproses lagi }

Primitif perekaman untuk arsip sekuensial:

procedure REWRITE (Input/Output NamaArsip)

{ Arsip sekuensial siap untuk direkam.

I.S. : sembarang F.S : Arsip sekuensial yang bernama NamaArsip siap untuk

direkam pada posisi pertamanya

}

procedure WRITE (Input/Output NamaArsip, <rekaman>)

{ Data pada <rekaman> direkam pada posisi aktual arsip. Kemudian posisi

diajukan satu.

I.S. : arsip sekuensial berada pada posisi yang telah siap

menerima rekaman, <rekaman> bukan merupakan MARK.

F.S : <rekaman> direkam pada posisi yang telah disiapkan, arsip

diajukan satu posisi. Jika <rekaman> yang diisikan ke arsip adalah

elemen fiktif yang dimaksudkan sebagai MARK, maka arsip tak dapat

lagi direkami.

Contoh: Sebuah arsip sekuensial berisi data mahasiswa, yang setiap rekamannya memuat data NIM, Nama dan Nilai akhir mahasiswa.. Maka dapat dituliskan:

type rekaman : < NIM:integer, Nama : string, Nilai :integer [0..100]> ArsipMhs : SEQFILE of

(*) RekMhs : rekaman (1) <9999999, '',0>

Domain setiap rekaman : sesuai dengan domain masing-masing rekaman Konstanta : sebuah rekaman, misalnya :

<7473001,'Juliette',95> <8690022,'Laura',80> Cara akses rekaman pertama : OPEN (ArsipMhs, RekMhs) Cara akses : { NIM = 9999999 } READ (ArsipMhs, RekMhs ) Cara menyiapkan untuk direkam:REWRITE (ArsipMhs) Cara mengisi : WRITE (ArsipMhs, RekMhs ) {Harga Current }

Page 38: Modul junior gelombang i

Modul Pelatihan Junior Programming 34

WRITE(ArsipMhs, <7473002,'Davy Rindt',96>) { konstanta } WRITE(ArsipMhs, Rek1) { Rek1 bertype rekaman }

Cara mengisi akhir rekaman : WRITE (ArsipMhs, <9999999,'',0>) {Mark}

Pemrosesan sebuah arsip sekuensial

Jika setiap rekaman harus diproses dengan cara yang sama, pemrosesan arsip

sekuensial dapat dilakukan dengan memakai skema pemrosesan sekuensial dengan

mark.

Contoh : Dibaca sebuah arsip sekuensial bernama

type rekaman : < NIM : integer, ,nilai:integer [0..100] > ArsipMhs: SEQFILE of

(*) RekMhs : rekaman (1) <9999999, 99> Analisis : pemrosesan sekuensial dari elemen arsip sekuensial Model tanpa MARK, jika i adalah deret yang diproses, i bernilai 1,2,3..N

EOP adalah NIM=9999999 First_Elmt : OPEN(ArsipMhs, RekMhs ) Next_Elmt : READ(ArsipMhs, RekMhs)

Proses : membaca arsip sambil menghitung nilai rata-rata mahasiswa

Program NILAIRATA_RATA

{model proses sekuensial dengan mark,

dengan penanganan kasus kosong}:

Kamus:

type rekaman : < NIM : integer, nilai:integer [0..100] >

ArsipMhs : SEQFILE of

(*) RekMhs : rekaman { setiap mahasiswa punya 1 rekaman }

(1) <9999999, 99>

SumNil : integer { jumlah nilai}

JumMhs: integer { jumlah mahasiswa }

Algoritma :

OPEN(ArsipMhs, RekMhs) {First_Elmt}

if (RekMhs.NIM =9999999) then

output ('Arsip kosong')

else

SumNil ← 0 ; JumMhs ← 0 { Inisialisasi }

repeat

SumNil ← Sumnil + RekMhs.nilai; JumMhs ← JumMhs+1

{Proses}

READ(ArsipMhs,RekMhs) {Next_Elmt}

until (RekMhs.NIM=9999999) {EOP}

Output (Sum/JumMhs) {Terminasi}

CLOSE (ArsipMhs)

Page 39: Modul junior gelombang i

Modul Pelatihan Junior Programming 35

BAB 3. PEMROGRAMAN ALGORITMA LANJUT

3.1 Array Multidimensi

Sering kali digambarkan/dianalogikan sebagai sebuah matriks. Jika array

berdimensi satu hanya terdiri dari 1 baris dan banyak kolom, array berdimensi dua

terdiri dari banyak baris dan banyak kolom yang bertipe sama.

Contoh struktur matriks adalah:

Contoh bentuk matriks dengan 3 baris 4 kolom:

Index 0 1 2 3

0 5 20 1 11

1 4 7 67 9

2 9 0 45 3

3.2 Deklarasi Array Multidimensi

tipe_data nama_var_array[batas_baris][batas_kolom];

Contoh:

int matriks[3][4];

int matriks2[3][4] = { {5,20,1,11}, {4,7,67,-9}, {9,0,45,3} };

#include <stdio.h>

#include <conio.h>

int main ()

{

int x(3) (3) = ((1,2,3), (4,5,6), (7,8,9)), b,k;

printf(“BENTUK BIASA\n”);

for (b=0; b<3; k++)

for (k=0; k<3; k++)

printf(“x(%d) - %d\n”,b,k,x(b) (k));

Page 40: Modul junior gelombang i

Modul Pelatihan Junior Programming 36

printf (“\n\nBENTUK MATRIKS\n”);

for (b=0; b<3; b++)

{

for (k=0; k<3; k++)

{

printf(“%d “,x(b) (k));

}

printf(“\n”);

}

getch();

}

3.3 Passing Array Multidimensi ke Fungsi

Jika array digunakan sebagai parameter dalam suatu fungsi, maka passing

parameter adalah sebagai berikut:

int A[][3] atau int (*A)[3]

Contoh:

#include <conio.h>

#include <iostream.h>

void cetak_array(int xi, int xj, int A() (3))

{

cout << “Arr[“ <<xi <<”) (“<<xj <<”)= “<< A[xi] {xj]<< “\n”;

}

int main()

{

int Arr() (3) = ((1,2,3), (4,5,6));

cetak_arry (1,2,Arr);

getch();

}

3.4 Cara mengisi matriks dan menampilkannya

Pengisian matrik sama dengan proses pengisian array satu dimensi,

yang berbeda adalah cara penentuan indeks, yaitu menggunakan nested looping.

Untuk pengisian matrik dapat digunakan fungsi berikut:

Untuk proses menampilkan matrik dapat digunakan fungsi berikut:

void isi_matriks(int MatX[][MATSIZE],int bar, int kol)

{

int i,j;

for(i=0;i<bar;i++)

for(j=0;j<kol;j++){

cout << "Elemen Matriks [“<<i<<”,”<<j;

cin >> MatX[i][j]);

}

}

Page 41: Modul junior gelombang i

Modul Pelatihan Junior Programming 37

3.5 Operasi Aritmatika pada Matrik Multidimensi

Deklarasi Array 1 Dimensi tipe nama_var[max_data]; Contoh: int a[5];

float x[100];

char nama[25];

...

Cara mengakses data bertipe array nama_variabel[alamat] Misal : Array a

27 23 35 46 87 data yang tersimpan di

array

0 1 2 3 4 alamat array (dimulai

dari 0)

a[0] = 27

a[1] = 23

.

.

a[4] = 87

Menginputkan data ke array

Data dapat diinputkan untuk setiap emelen array. Tetapi jika jumlah elemen

array banyak, tentunya cara ini tidak efisien. Oleh karena itu dapat digunakan bantuan

instruksi perulangan untuk input datanya.

Contoh 1: #include <iostream.h>

#include <conio.h>

void cetak_matriks(int MatX[][MATSIZE],int bar,int kol)

{

int i,j;

for(i=0;i<bar;i++){

for(j=0;j<kol;j++)

cout << MatX[i][j]);

cout << endl;

}

}

Page 42: Modul junior gelombang i

Modul Pelatihan Junior Programming 38

main() {

int a[5];

cout<<"Data ke 0 = ";cin>>a[0];

cout<<"Data ke 1 = ";cin>>a[1];

cout<<"Data ke 2 = ";cin>>a[2];

cout<<"Data ke 3 = ";cin>>a[3];

cout<<"Data ke 4 = ";cin>>a[4];

int jumlah;

jumlah=a[0]+a[1]+a[2]+a[3]+a[4];

cout<<"\n\nJumlahnya = "<<jumlah;

getch();

}

Contoh 2: #include <iostream.h>

#include <conio.h>

main() {

int a[5];

int jumlah=0;

for(int i=0;i<5;i++)

{ cout<<"Data ke "<<i<<" = ";cin>>a[i];

jumlah+=a[i];

}

cout<<"\n\nJumlahnya = "<<jumlah;

getch();

}

Tipe array juga dapat digabungkan dengan pointer. Untuk itu kita akan melakukan

perubahan pada contoh 3 menjadi sebagai berikut:

Contoh 3: #include <iostream.h>

#include <conio.h>

main() {

int *a=new int[5];

int jumlah=0;

for(int i=0;i<5;i++)

{ cout<<"Data ke "<<i<<" = ";cin>>a[i];

jumlah+=a[i];

}

cout<<"\n\nJumlahnya = "<<jumlah;

getch();

}

Perhatikan contoh 3 diatas pada pengaksesan datanya. Jika array dideklarasikan

sebagai pointer, maka untuk pengaksesan datanya cukup dituliskan sebagai array.

Tetapi kita tetap bisa menuliskannya sebagai pointer tanpa harus menyertakan alamat

arraynya. Jika demikian maka data akan diambilkan dari data pertama, atau data pada

alamat ke 0.

Sehingga misalkan pada akhir program contoh 3 diatas kita tambahkan

instruksi:

Page 43: Modul junior gelombang i

Modul Pelatihan Junior Programming 39

cout<<"\nData = "<<*a;

atau instuksi :

cout<<"\nData = "<<a[0];

akan mempunyai arti yang sama, data akan diambil dari data pertama (alamat 0). Selain itu untuk input data dan proses penjumlahan, dapat juga dibuat dalam bentuk

fungsi seperti pada contoh 4. Perhatikan pada saat tipe array menjadi parameter

fungsi, jumlah data yang tersimpan dalam array boleh ditulis boleh tidak (optional).

Sehingga bisa ditulis dengan : b[] saja

Contoh 4 : #include <iostream.h>

#include <conio.h>

void input_array(int b[],int n)

{ for(int i=0;i<n;i++)

{ cout<<"Data ke "<<i<<" = ";cin>>b[i]; }

}

int jumlah(int b[],int n)

{ int hasil=0;

for(int i=0;i<n;i++)

hasil+=b[i];

return hasil;

}

main() {

int a[100];

int bd;

cout<<"Masukkan banyaknya data = ";cin>>bd;

input_array(a,bd);

cout<<"\n\nJumlahnya = "<<jumlah(a,bd);

getch();

}

Penggunaan array 1D untuk sorting data

Pada proses berikut ingin akan diurutkan n data yang tersimpan di array dengan

metode Bubble Sort.

Contoh 5: #include <iostream.h>

#include <conio.h>

void masukan(int a[],int n)

{

for(int i=0;i<n;i++)

{ cout<<"Data ke "<<i<<" = ";

cin>>a[i];

Page 44: Modul junior gelombang i

Modul Pelatihan Junior Programming 40

}

}

void urutkan(int a[], int n)

{ int temp;

for(int i=0;i<n;i++)

for(int j=0;j<(n-i);j++)

if (a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

void tampil(int a[], int n)

{

for(int i=0;i<n;i++)

cout<<a[i]<<" ";

}

main() {

int a[100];

int jml;

cout<<"Banyak data = ";cin>>jml;

masukan(a,jml);

urutkan(a,jml);

cout<<"\n\nSetelah diurutkan ";

tampil(a,jml);

getch();

}

Pada contoh program diatas ada tiga fungsi, fungsi pertama digunakan untuk

menginputkan data ke dalam array, fungsi kedua untuk mengurutkan arraynya, dan

fungsi ketiga untuk menampilkan data yang tersimpan di array ke layar.

Array 2 Dimensi Contoh deklarasi :

int a[4][5];

0 1 2 3

0 25 40 26 12

1 6 8 12 5

2 1 3 8 9

3 15 22 13 19

4 0 5 7 15

Mengakses data : a[0][0] = 25

a[0][1] = 40

.

.

Page 45: Modul junior gelombang i

Modul Pelatihan Junior Programming 41

Penggunaan array 2D untuk menjumlahkan dua matrik

Matrik asal adalah a dan b, dijumlahkan dan hasilnya disimpan di matrik c. Syarat agar matrik dapat dijumlahkan adalah keduanya mempunyai ukuran yang sama.

Baris matrik 1 = Baris matrik 2

Kolom matrik 1 = Kolom matrik 2

Contoh 6: #include <iostream.h>

#include <conio.h>

void masukan(int a[10][10],int b,int k)

{ for(int i=0;i<b;i++)

for(int j=0;j<k;j++)

{cout<<"Data ke "<<i<<j<<" = ";cin>>a[i][j]; }

}

void jumlah(int a1[][10],int a2[][10],int a3[][10],int b1,int k1)

{ for(int i=0;i<b1;i++)

for(int j=0;j<k1;j++)

a3[i][j]=a1[i][j]+a2[i][j];

}

void tampilkan(int a[10][10],int b,int k)

{ for(int i=0;i<b;i++)

{ for(int j=0;j<k;j++)

cout<<a[i][j]<<" ";

cout<<"\n";

}

}

main() {

int dt1[10][10],dt2[10][10],dt3[10][10];

int b1,k1;

cout<<"Jumlah baris matrik = ";cin>>b1;

cout<<"Jumlah kolom matrik = ";cin>>k1;

cout<<"\nMatrik pertama\n";

masukan(dt1,b1,k1);

cout<<"\nMatrik kedua\n";

masukan(dt2,b1,k1);

jumlah(dt1,dt2,dt3,b1,k1);

clrscr();

cout<<"\nMatrik pertama\n";

tampilkan(dt1,b1,k1);

cout<<"\nMatrik kedua\n";

tampilkan(dt2,b1,k1);

cout<<"\nMatrik hasil penjumlahan\n";

tampilkan(dt3,b1,k1);

getch();

}

Perhatikan pada saat array 2D menjadi parameter fungsi, jumlah baris boleh

ditulis boleh tidak, tetapi jumlah kolom harus ditulis. Tipe array dapat dikembangkan

menjadi array multidimensi. Misal 3D, 4D, dan sebagainya.

Page 46: Modul junior gelombang i

Modul Pelatihan Junior Programming 42

3.6 Prosedur

Prosedur adalah sebuah blok program tersendiri yang merupakan bagian dari

program lain yang lebih besar. Prosedur dapat dipanggil oleh program utamanya

ataupun oleh prosedur lain yang juga merupakan bagian dari program utamanya

(masih dalam satu kode program). Sebuah program yang memiliki prosedur biasanya

terdiri dari satu atau lebih prosedur dan satu program utama.

Gambar 3.1 Ilustrasi Prosedur pada Kode Program

Orang yang pertama kali belajar memprogram sering kali berpikir kenapa

diperlukan prosedur, kenapa tidak hanya satu program utama saja. Prosedur memiliki

beberapa keuntungan sebagai berikut :

1. Memecah-mecah program menjadi lebih sederhana, misalnya jika diperlukan

proses pencarian berkali-kali jika hanya terdiri dari satu program utama tanpa

prosedur, maka kode program pencarian akan beberapa kali ditulis ulang dan

hasilnya dapat memperbesar ukuran file. Untuk lebih jelasnya dapat dilihat pada

gambar 3.2.

Kode Program

Prosedur

Prosedur

Program Utama

Page 47: Modul junior gelombang i

Modul Pelatihan Junior Programming 43

Gambar 3.2 Perbedaan Penggunaan Prosedur

2. Blok program yang digunakan jelas jika akan digunakan pada program lain, cukup

dengan mengkopi satu prosedur dan meletakkannya pada program lain yang

membutuhkannya dan program lain tersebut tinggal memanggil prosedur tersebut.

3.6.1 Deklarasi Prosedure

Berikut adalah cara mendeklarasikan sebuah prosedur:

Tabel 3.1 Deklarasi Prosedur Bahasa Algoritmik Bahasa Pascal Bahasa C

procedure

nama_prosedur(input:

variabel_input1 :

tipe_data; ......;

variabel_inputn :

tipe_data)

{proses}

..................

{end procedure}

procedure

nama_prosedur(variabel_i

nput1 : tipe_data;

.......; variabel_inputn

: tipe_data);

var {variabel}

begin

{ proses }

......................

end;

void

nama_prosedur(tipe_data

variabel_input1,

......., tipe_data

variabel_inputn){

// proses

....................

} procedure

cariNama(input: nama

: string)

procedure cariNama(nama

: string); var

{variabel}

void cariNama(char

nama[]){

Kode Program

Prosedur Pencarian

Program Utama

Panggil Prosedur Pencarian

Panggil Prosedur Pencarian

Panggil Prosedur Pencarian

Kode Program

Program Utama

Tulis Kode Pencarian

Tulis Kode Pencarian

Tulis Kode Pencarian

Page 48: Modul junior gelombang i

Modul Pelatihan Junior Programming 44

{proses}

...................

{end procedure}

begin

{ proses }

......................

end;

// proses

......................

}

Sedangkan cara memanggil prosedur adalah sebagai berikut:

Tabel 3.2 Memanggil Prosedur Bahasa Algoritmik Bahasa Pascal Bahasa C

nama_prosedur(variabe

l_ masukan) nama_prosedur(variabel

_m asukan); nama_prosedur(variabel

_m asukan); cariNama(nama) cariNama(nama); cariNama(nama);

Untuk bahasa algoritmik, pendeklarasian prosedur ada beberapa macam

sebagai berikut :

Tabel 3.3 Bahasa Algoritmik pemanggilan prosedur Bahasa Algoritmik Keterangan

procedure nama_procedure(input :

nama_variabel : tipe_data) merupakan prosedur yang hanya memiliki variabel sebagai masukan sehingga setelah prosedur dijalankan tidak ada nilai variabel masukan manapun yang berubah, misalnya : procedure tampil(input : a :

Integer)

write("nilai a adalah : ", a)

{end procedure}

selesai prosedur dijalankan, nilai a tidak mengalami perubahan

procedure nama_procedure(output :

nama_variabel : tipe_data) merupakan prosedur yang memiliki variabel masukan, tapi nilai dari variabel masukan mengalami perubahan setelah keluar dari prosedur karena proses dalam prosedur setelah prosedur dijalankan tanpa menggunakan nilai dari variabel masukan, misalnya :

procedure hasil(output : a :

integer)

a <- 2 + 3 {end procedure}

selesai prosedur dijalankan, nilai a mengalami perubahan menjadi 5 hasil dari 2 + 3

procedure nama_procedure(input:

nama_variabel : tipe_data, output

: nama_variabel : tipe_data)

merupakan prosedur yang memiliki variabel masukan yang tidak berubah nilainya dan

Page 49: Modul junior gelombang i

Modul Pelatihan Junior Programming 45

yang berubah nilainya setelah prosedur dijalankan, misalnya:

procedure hasil(input : a :

integer, output : b : integer)

b <- a + 3 {end procedure}

selesai prosedur dijalankan, nilai a tidak mengalami perubahan sedangkan nilai b mengalami perubahan

procedure

nama_procedure(input/output :

nama_variabel : tipe_data)

merupakan prosedur yang memiliki variabel masukan, tapi nilai dari variabel masukan mengalami perubahan karena proses dalam prosedur setelah prosedur dijalankan dengan menggunakan nilai dari variabel masukan, misalnya :

procedure hasil(input/output : a

: integer)

a <- a + 3 {end procedure}

selesai prosedur dijalankan, nilai a mengalami perubahan

3.7 Fungsi

Fungsi adalah sebuah blok program tersendiri yang merupakan bagian dari

program lain yang lebih besar sama halnya dengan prosedur hanya saja fungsi memiliki

hasil keluaran sedangkan prosedur hanya berisi proses. Fungsi dapat dipanggil oleh

program utamanya ataupun oleh prosedur atau fungsi lain yang juga merupakan

bagian dari program utamanya (masih dalam satu kode program).

Sebuah program bisa terdiri dari satu atau lebih prosedur, satu atau lebih

fungsi, dan satu program utama. Fungsi juga memiliki keuntungan- keuntungan seperti

halnya prosedur, hal paling mendasar yang membedakan prosedur dan fungsi adalah

fungsi menghasilkan sebuah keluaran sedangkan prosedur tidak. Pada gambar xxx,

prosedur melakukan proses dan melakukan perubahan nilai di dalam proses yang

dilakukan di dalam prosedur, keluaran atau output yang ada pada deklarasi prosedur

berarti nilai variabel itu akan berubah bergitu prosedur dijalankan sedangkan fungsi

melakukan proses dan perubahan nilai dengan proses di dalam fungsi namun fungsi

menghasilkan nilai keluaran yang dapat ditangkap oleh sebuah variabel.

Page 50: Modul junior gelombang i

Modul Pelatihan Junior Programming 46

Gambar 3.3 Ilustrasi Perbedaan Prosedur dan Fungsi

Berikut adalah cara mendeklarasikan sebuah fungsi pada bahasa

Algoritkmik, bahasa Pemrograman Pascal dan C:

Tabel 3.4 Deklarasi Fungsi Bahasa Algoritmik Bahasa Pascal Bahasa C

function

nama_fungsi(nama_vari

abel_ masukan :

tipe_data)

-> tipe_data_keluaran

{proses}

.....................

...

-> variabel_keluaran

{end function}

function

nama_fungsi(nama_varia

bel_ masukan :

tipe_data) :

tipe_data_keluaran;

var

begin

{ proses }

......................

.....

nama_fungsi :=

variabel_keluaran;

end;

tipe_data_keluaran

nama_fungsi(tipe_d ata

nama_variabel_masu

kan){

// proses

......................

.....

return

variabel_keluaran; }

function

nilaiTerbesar(a :

integer; b : integer,

c : integer)

-> integer

{proses} integer

hasil

.....................

....

-> hasil

{end function

function

nilaiTerbesar(a :

integer; b : integer;

c : integer) :

integer;

var hasil : integer;

begin { proses }

......................

..

nilaiTerbesar :=

hasil;

end;

int nilaiTerbesar(int

a, int b, int c){

// proses int hasil;

......................

..

return hasil;

}

Page 51: Modul junior gelombang i

Modul Pelatihan Junior Programming 47

Sedangkan cara memanggil fungsi adalah sebagai berikut:

Tabel 3.5 Deklarasi memanggil Fungsi Bahasa Algoritmik Bahasa Pascal Bahasa C

nama_variabel <-

nama_fungsi

(variabel_masukan)

nama_variabel :=

nama_fungsi(variabel_mas

ukan);

nama_variabel =

nama_fungsi(variabel_ma

sukan);

maksimum <-

nilaiTerbesar(a, b,

c)

maksimum :=

nilaiTerbesar(a, b, c);

maksimum =

nilaiTerbesar(a, b, c);

Berikut adalah sebuah fungsi yang menghasilkan hasil perkalian dari tiga buah

parameter masukan:

Tabel 3.6 Deklarasi memanggil Fungsi Bahasa Manusia Bahasa Algoritmik

Mendeklarasikan fungsi hasilKali yang menghasilkan nilai hasil perkalian dari tiga buah variabel masukan

function hasilKali(a : integer; b

: integer; c : integer)-> integer

hasil : integer

hasil <- a * b * c

Mendeklarasikan variabel hasil yang nilainya merupakan nilai keluaran fungsi

-> hasil

Mendeklarasikan program utama, mendeklarasikan tiga variabel masukan dan variabel hasil, memanggil fungsi hasilKali serta menampilkannya ke layar

{algoritma utama}

a : integer

b : integer

hasil : integer

a <- 1

b <- 2

c <- 3

hasil <- hasilKali(a, b, c)

output("hasil perkalian : ",

hasil)

{end algoritma utama}

3.8 Library Pemrograman Grafik

3.8.1 Konsep Dasar Grafik Komputer

Grafik Komputer adalah ilmu yang mempelajari rancang bangun berorientasi

geometri yang diaplikasikan pada komputer, biasanya data yang digunakan berbentuk

3 dimensi. Grafik komputer saat ini digunakan untuk virtual reality, animasi & kartun

2D, games, dll.

3.8.2 Sistem koordinat

Pada umunya sistem koordinat yang digunakan dalam dunia nyata

(matematika, fisika, etc) menggunakan sistem koordinat cartesius untuk

Page 52: Modul junior gelombang i

Modul Pelatihan Junior Programming 48

merepresentsikan dunia 2 dimensi (2D). Hal ini tidak berbeda dengan penggunaan

sistem koordinat pada komputer. Namun ada sedikit perbedaan dalam referensi titik

pusat (origin) yang digunakan dan arah dari sumbu-y yang digunakan.

Pada sistem koordinat normal titik pusat (0,0) tampak berada pada bagian

tengah sebuah diagram cartesius diantara perpotongan 4 sumbu. Sedangkan pada

sistem koordinat komputer titik pusat (0,0) terletak pada pojok kiri atas layar monitor

komputer, sehingga titik yang berada pada sumbu –x dan sumbu –y tidak akan tampak

pada layar monitor komputer.

3.8.3 Pixel (picture element)

Layar monitor komputer dibangun (terdiri) dari sekumpulan pixel yang menyala

dan mati untuk memvisualisasikan grafik pada komputer (termasuk teks, citra, dan

lain-lain). Apabila dihubungkan dengan sistem koordinat diatas, maka setiap pixel yang

ada di layar monitor diwakili oleh suatu koordinat, dan layar monitor memiliki resolusi

atau jumlah pixel yang ada di layar.

Sebagai contoh, layar dengan resolusi 320 x 200 akan memiliki total 64000 pixel

di layar, dan setiap pixel itu diwakili oleh sebuah pasangan koordinat x dan y, dimulai

dengan {0,0} sampai dengan {319,199}.

Contoh Grafik dengan Objek 2D

#include<graphics.h> //Wajib

#include<dos.h>

#include<conio.h>

#include<stdio.h>

#include<math.h>

int mulaimodegrafik (const char* pBGIPath )

{

int GraphicDriver;

// Deteksi otomatis driver & mode yang paling optimal untuk

computer ini

int GraphicMode;

detectgraph (&GraphicDriver , &GraphicMode );

// Initialize (mulai) mode grafik dengan menggunakan driver dan

mode yang telah dipilih

// secara otomatis.

initgraph (&GraphicDriver , &GraphicMode , pBGIPath );

// Kembalikan nilai dari graphresult();

return graphresult();

}

void tutupmodegrafik ()

{

// Kembali ke mode teks

closegraph();

Page 53: Modul junior gelombang i

Modul Pelatihan Junior Programming 49

}

void buatLingkaran(int cx, int cy,int r, int c)

{

// Menggunakan optimasi algoritma lingkaran

float s=0.0;

int x,y;

while(s<M_PI_4)

{

x=(float)r*cos(s);

y=(float)r*sin(s);

putpixel(cx+x,cy+y,c);

putpixel(cx+x,cy-y,c);

putpixel(cx-x,cy+y,c);

putpixel(cx-x,cy-y,c);

putpixel(cx+y,cy+x,c);

putpixel(cx+y,cy-x,c);

putpixel(cx-y,cy+x,c);

putpixel(cx-y,cy-x,c);

s+=0.005f;

}

}

int main()

{

// Mulai menggunakan mode grafik

int a;

mulaimodegrafik (“..\\BGI\\”);

// Mulai menggambar disini.

// lingkaran

buatLingkaran(250,260,5,15);

buatLingkaran(300,250,25,20);

buatLingkaran(393,186,50,2);

for(a=1;a<=200;a++)

{

// garis vertikal

putpixel(200,200+a/2,1);

putpixel(220,120+a/3.3,1);

putpixel(260,120+a/9,1);

putpixel(220,220+a/2.5,20);

putpixel(260,220+a/2.5,20);

putpixel(330,200+a/2,1);

putpixel(300,225+a/4,15);

putpixel(380,235+a/3,20);

putpixel(405,235+a/3,20);

// garis horizontal

putpixel(200+a/1.55,200,53);

putpixel(220+a/5,220,20);

putpixel(220+a/5,120,1);

putpixel(275+a/4,250,15);

putpixel(200+a/1.55,300,1);

putpixel(380+a/8,300,20);

// garis diagonal

putpixel(265-a/3,135+a/3,53);

putpixel(265+a/3,135+a/3,53);

delay(10);

}

getch();

tutupmodegrafik();

return 0;

}

Page 54: Modul junior gelombang i

Modul Pelatihan Junior Programming 50

Garis Vertikal

Untuk setiap y dari y1 sampai y2, gambarlah pixel pada posisi x,y dengan warna

c dikarenakan x tidak berubah.

UNTUK y = y1 SAMPAI y2 LONCAT 1 putpixel(x, y, c) ULANGI y.

Garis horizontal

Untuk setiap x dari x1 sampai x2, gambarlah pixel pada posisi x,y dengan warna

c dikarenakan y tidak berubah.

UNTUK x = x1 SAMPAI x2 LONCAT 1 putpixel(x, y, c) ULANGI x.

Garis diagonal

Untuk setiap y dari y1 sampai y2, dan x mulai dari x1 gambarlah pixel pada

posisi x, y dengan warna c.

X = x + 1

X = x1

UNTUK y = y1 SAMPAI y2 LONCAT 1

Putpixel(x, y, c)

X = x + 1

ULANGI y

Atau

Untuk setiap x dari x1 sampai x2, dan y mulai dari y1 gambarlah pixel pada posisi x, y

dengan warna c

Y = y + 1

Y = y1

UNTUK x = x1 SAMPAI x2 LONCAT 1

Putpixel(x, y, c)

Y = y + 1

ULANGI x

Page 55: Modul junior gelombang i

Modul Pelatihan Junior Programming 51

BAB 4. STRUKTUR DATA 4.1 Program dengan beberapa Tipe Data

4.1.1 Penggunaan Record

Record adalah jenis tipe data terstruktur yang berisi beberapa data, yang masing-

masing dapat berlainan tipe.

a. Mendeklarasikan Record

Suatu tipe record dideklarasikan dengan bentuk sebagai berikut :

RECORD

Daftar_field_1 : tipe_1;

Daftar_field_2 : tipe_2;

. . .

daftar_field_n : tipe_n;

END

Masing-masing daftar_field dapat berupa satu atau beberapa nama pengenal

dan masing-masing dinamakan field. Bila daftar_field berisi lebih dari satu field, antar

field perlu dipisahkan dengan koma. Masing-masing tipe dapat berupa tipe data apa

saja termasuk array.

Berikut contoh pendeklarasian record :

Type

RecBarang = Record

Nama : String;

Kualitas : Char;

Harga : LongInt

End;

Var

Barang : RecBarang;

Dengan mendeklarasikan seperti di atas, Barang akan mengandung tiga buah field,

yaitu :

- Nama,

- Kualitas,

- Harga.

Page 56: Modul junior gelombang i

Modul Pelatihan Junior Programming 52

b. Cara Mengakses Field

Field dari suatu record diakses dengan bentuk :

Variabel.field

Sebagai contoh :

Barang.Nama

Berarti “field Nama dari variabel record bernama Barang“.

Contoh penugasan nilai ke field tersebut :

Barang.Nama := ’Kabel Console’;

Dengan cara seperti di atas, field Nama dari record Barang berisi string ’Ubin TISKA

20x20’. Isi dari suatu field ditampilkan dengan menggunakan Write atau Writeln.

Contoh :

Writeln (Barang.Nama);

Merupakan perintah untuk menampilkan isi field Nama dari record Barang.

Contoh program yang memberikan gambaran pendeklarasian record, pengisian

terhadap field-field serta menampilkan isi masing-masing field dapat dilihat di bawah

ini.

Program Rec1;

Uses crt;

Type

RecBarang = Record

Nama : String[25];

Kualitas : Char;

Harga : LongInt

End;

Var

Barang : RecBarang; {variabel bertipe record}

Begin

Clrscr;

{Penugasan nilai terhadap field-field}

Barang.Nama := ’Kabel Console’;

Barang.Kualitas := ’1’;

Barang.Harga := 150000;

{menampilkan isi field}

writeln (’Nama Barang : ’, Barang.Nama);

writeln (’Kualitas : ’, Barang.Kualitas);

writeln (’Harga : ’, Barang.Harga);

Readln

Page 57: Modul junior gelombang i

Modul Pelatihan Junior Programming 53

End.

Hasil program :

Nama Barang : Kabel Console

Kualitas : 1

Harga : 150000

c. Penugasan Antar Record

Jika record R1 dan R2 bertipe sama dan masing-masing memiliki F1, F2, dan F3, maka

penugasan :

R1 := R2;

diperkenankan. Pernyataan di atas merupakan penyederhanaan dari sederetan

pernyataan berikut :

R1.F1 := R2.F1;

R1.F2 := R2.F2;

R1.F3 := R2.F3;

Untuk lebih jelasnya, tulislah program berikut dan cobalah menjalankannya.

Program Rec2;

Uses crt;

Type

RecBarang = Record

Nama : string[25];

Kualitas : car;

Harga : longInt

End;

Var

Barang1, Barang2 : RecBarang; {variabel bertipe record}

Begin

Clrscr;

{penugasan nilai terhadap field-field}

Barang1.Nama := ’Kabel Console’;

Barang1.Kualitas := ’1’;

Barang1.Harga := 150000;

{menyalin record}

Barang2 := Barang1;

Menampilkan isi field}

Writeln (’Nama Barang : ’, Barang2.Nama);

Writeln (’Kualitas : ’, Barang.Kualitas);

Writeln (’Harga : ’, Barang.Harga);

Readln

End.

Page 58: Modul junior gelombang i

Modul Pelatihan Junior Programming 54

Dengan adanya penugasan

Barang2 := Barang1;

maka semua field pada record Barang2 akan berisi recrod Barang1. Hasil dari program

di atas :

Nama Barang : Kabel Console

Kualitas : 1

Harga : 150000

d. Record di Dalam Record

Mungkin saja sebuah record berisi record. Sebagai gambaran hal ini, perhatikan

deklarasi berikut :

RecTanggal = Record

Tanggal,

Bulan,

Tahun :Integer

End;

RecPegawai = Record

Nomor : LongInt;

Nama : String [35];

TglLahir : RecTanggal;

Gaji : LongInt

End;

Tampak bahwa tipe record bernama RecPegawai berisi record yang lain

(RecTanggal). Hal yang menarik yang perlu diperhatikan adalah cara mengakses

field seperti Tanggal, Bulan dan Tahun. Notasi yang diperlukan adalah sebagai berikut.

Nama_variabel.TglLahir.Tanggal

Nama_variabel.TglLahir.Bulan

Nama_variabel.TglLahir.Tahun

Praktekkan program berikut, untuk mencoba pembuatan record dengan bentuk seperti

di atas.

Program Rec3;

Uses crt;

Type

RecTanggal = Record

Tanggal,

Bulan,

Page 59: Modul junior gelombang i

Modul Pelatihan Junior Programming 55

Tahun : Integer

End;

RecPegawai = Record

Nomor : LongInt;

Nama : string [35];

TglLahir : RecTanggal;

Gaji : longInt

End;

Var

DataPeg : RecPegawai; {variabel betipe record}

Begin

Clrscr;

Penugasan nilai terhadap field-fiedl}

DataPeg.Nomor := 891011;

DataPeg.Nama := ’Noorhadi’;

DataPeg.TglLahir.Tanggal := 11;

DataPeg.TglLahir.Bulan := 11;

DataPeg.TglLahir.Tahun := 1971;

DataPeg.Gaji := 1200000;

{menampilkan isi field}

Writeln (’Nama Pegawai : ’, DataPeg.Nama);

Writeln (’Tanggal Lahir : ’, DataPeg.TglLahir.Tanggal,

’/’, DataPeg.TglLahir.Bulan,

’/’, DataPeg.TglLahir.Tahun);

Readln

End.

Hasil dari program di atas adalah sebagai berikut :

Nama Pegawai : Noorhadi

Tanggal Lahir : 11 / 11 / 1971

e. Pernyataan With

Untuk menyederhanakan notasi seperti :

DataPeg.TglLahir.Tanggal

Turbo Pascal menyediakan pernyataan WITH. Bentuk pernyataan ini adalah sebagai

berikut :

With nama_record do

pernyataan

Pada bentuk ini, field-field yang terletak pada bagian pernyataan dapat

disebutkan tanpa perlu menyertakan lagi nama record dan tanda titik. Untuk lebih

jelasnya, perhatikan program berikut yang merupakan alternatif lain dari program di

atas.

Page 60: Modul junior gelombang i

Modul Pelatihan Junior Programming 56

Program Rec4;

Uses crt;

Type

RecBarang = Record

Nama : String [25];

Kualitas : Char;

Harga : LongInt

End;

Var

Barang : RecBarang; {variabel bertipe record}

Begin

Clrscr;

{penugasan nilai terhadap field-field}

With Barang do

Begin

Nama := ’Kabel Console;

Writeln (’Nama Barang : ’, Nama);

Writeln (’Kualitas :’, Kualitas);

Writeln (’Harga :’, Harga);

End;

Readln

End.

Bila suatu record memiliki record lain, pernyataan With dapat diikuti dengan with yang

lain. Sebagai contoh, program di atas ditulis menjadi :

Program Rec5;

Uses crt;

Type

RecTanggal = Record

Tanggal,

Bulan,

Tahun : Integer

End;

RecPegawai = Record

Nomor : LongInt;

Nama : string [35];

TglLahir : RecTanggal;

Gaji : LongInt

End;

Var

DataPeg : RecPegawai; {variabel bertipe record}

Begin

Clrscr;

{Penugasan nilai terhadap field-field}

With DataPeg do

With TglLahir do

Begin

Nomor := 891011;

Nama := ’Noorhadi’;

Tanggal := 11;

Bulan := 11;

Tahun := 1971;

Gaji := 1200000;

End;

{menampilkan isi field}

With DataPeg do

With TglLahir do

Page 61: Modul junior gelombang i

Modul Pelatihan Junior Programming 57

Begin

Writeln (’Nama Pegawai :’, DataPeg.Nama);

Writeln (’Tanggal lahir :’, DataPeg.TglLahir.Tanggal,

’/’, DataPeg.TglLahir.Bulan

’/’, DataPeg.TglLahir.Tahun)

End;

Readln

End.

Pernyataan seperti :

With DataPeg do

With TglLahir do

Dapat ditulis menjadi :

With DataPeg, TglLahir do

dengan antar nama record dipisahkan oleh tanda koma.

Contoh program :

Program Rec6;

Uses crt;

Type

RecTanggal = Record

Tanggal,

Bulan,

Tahun : Integer

End;

RecPegawai = Record

Nomor : LongInt;

Nama : string [35];

TglLahir : RecTanggal;

Gaji : LongInt

End;

Var

DataPeg : RecPegawai; {variabel bertipe record}

Begin

Clrscr;

{Penugasan nilai terhadap field-field}

With DataPeg, TglLahir do

Begin

Nomor := 891011;

Nama := ’Noorhadi’;

Tanggal := 11;

Bulan := 11;

Tahun := 1971;

Gaji := 1200000;

End;

{menampilkan isi field}

With DataPeg, TglLahir do

Begin

Writeln (’Nama Pegawai :’, DataPeg.Nama);

Writeln (’Tanggal lahir :’, DataPeg.TglLahir.Tanggal,

’/’, DataPeg.TglLahir.Bulan

’/’, DataPeg.TglLahir.Tahun)

End;

Page 62: Modul junior gelombang i

Modul Pelatihan Junior Programming 58

Readln

End.

f. Array Record

Elemen suatu array juga bisa berupa record. Sebagai contoh dapat dilihat di

bawah ini.

Const

Jum_Maks = 20;

Type

RecBarang = Record

Nama : String [25];

Kualitas : Char;

Harga : LongInt

End;

TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;

Var

DafBarang : TabelBarang; {array record}

Pada contoh di atas, DafBarang adalah array yang maksimum berisi 20 buah elemen

bertipe record.

Untuk mengakses suatu field, kita perlu menggunakan notasi :

DafBarang [indeks].NamaField

Berikut contoh program Array Record.

Program Rec7;

Uses Crt;

Const

Jum_Maks = 20; {jumlah maksimal jenis baramg}

Type

RecBarang = Record

Nama : string [25];

Kualitas : char;

Harga : longInt

End;

TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;

Var

DafBarang : TabelBarang; {array record}

JumBarang : Integer;

{memasukkan data barang je array DafBarang}

Procedure EntriBarang (Var DafBarang : TabelBarang;

Var JumBarang : Integer);

Var

Indeks : Integer;

Begin

Clrscr;

Write (’Jumlah Barang (Maksimum = 20) :’); Readln (JumBarang);

For Indeks := 1 to JumBarang do

Page 63: Modul junior gelombang i

Modul Pelatihan Junior Programming 59

With Dafbarang [indeks] do

Begin

Clrscr;

Writeln (’Data Barang ’, Indeks, ’ :’);

Write (’Nama :’); Readln (Nama);

Write (’Kualitas :’); Readln (Kualitas);

Write (’Harga :’); Readln (Harga);

Writeln;

End;

End; {akhir EntriBarang}

{menampilkan isi array DafBarang}

Procedure InfoBarang (Var DafBarang : Tabelbarang;

JumBarang : Integer);

Var

Indeks : Integer;

Begin

Clrscr;

Writeln (’NAMA BARANG’:25, ’KUALITAS’:10, ’HARGA’:10);

For Indeks := 1 to JumBarang do

With Dafbarang [Indeks] do

Writeln (Nama : 25, Kualitas : 10, Harga : 8);

End; {Akhir InfoBarang}

Begin

Entribarang (DafBarang, JumBarang);

InfoBarang (DafBarang, JumBarang);

Readln

End.

4.2 Pointer

Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat

memori komputer tertentu. Pointer merupakan variabel level rendah yang dapat

digunakan untuk menunjuk nilai integer, character, float, double, atau single, dan

bahkan tipe-tipe data lain yang didukung oleh bahasa C. Variabel biasa, sifatnya statis

dan sudah pasti, sedangkan pada pointer sifatnya dinamis dan dapat lebih fleksibel.

Variabel pointer yang tidak menunjuk pada nilai apapun berarti memiliki nilai NULL,

dan disebut sebagai dangling pointer karena nilainya tidak diinisialisasi dan tidak dapat

diprediksi.

Pendeklarasian variabel pointer menggunakan tanda * sebelum nama

variabelnya, sedangkan untuk menampilkan nilai yang ditunjuk oleh suatu variabel

pointer, juga digunakan operator * (tanda asterisk). Jika diinginkan untuk menampilkan

alamat tempat penyimpanan nilai yang ditunjuk oleh suatu variabel pointer, digunakan

operator & (tanda ampersand). Pada suatu tipe data array, variabel pointer hanya

perlu menunjuk pada nama variabel arraynya saja tanpa perlu menggunakan tanda

Page 64: Modul junior gelombang i

Modul Pelatihan Junior Programming 60

ampersand, atau menunjuk pada nama variabel array pada indeks yang ke nol nya.

Untuk lebih jelasnya, silahkan lihat contoh berikut:

Pendeklarasian variabel biasa dan pointer:

//variabel biasa

int nilai1 = 4;

float nilai2 = 3.5;

char nama[10] = “anton”; //array of char (string)

//variabel pointer

int *nilai_p1; //dangling pointer

int *nilai_p2 = &nilai1; //menunjuk ke tipe data int

char *nilai_p3 = nama; //menunjuk ke tipe data array of char

char *nilai_p4 = &nama[0];

Ilustrasi Pointer:

Contoh program untuk dicoba:

#include

#include

int main(){

int nilai1 = 4;

int nilai2 = 5;

float nilai3 = 3.5;

char nama[11] = "abcdefghij";

int *nilai_p1 = &nilai1;

int *nilai_p2 = &nilai2;

char *nilai_p4 = nama;

float *nilai_p3= &nilai3;

printf("nilai 1 = %d, alamat1 = %p, ukuran

%d\n",*nilai_p1,&nilai_p1,sizeof(nilai1));

printf("nilai 2 = %d, alamat2 = %p, ukuran

%d\n",*nilai_p2,&nilai_p2,sizeof(nilai2));

printf("nilai 3 = %f, alamat3 = %p, ukuran

%d\n",*nilai_p3,&nilai_p3,sizeof(nilai3));

printf("nilai 4 = %s, alamat4 = %p, ukuran

%d\n",nama,&nilai_p4,sizeof(nama));

getch();

return 0;

}

Operasi pointer:

1. Operasi Pemberian nilai

Contoh 1:

#include

#include

int main(){

float nilai,*p1,*p2;

nilai = 14.54;

printf("nilai = %2.2f, alamatnya %p\n",nilai,&nilai);

p1 = &nilai;

Page 65: Modul junior gelombang i

Modul Pelatihan Junior Programming 61

printf("nilai p1 = %2.2f, p1 menunjuk alamat %p\n",*p1,p1);

//pada awalnya p2 masih dangling pointer

printf("mula-mula nilai p2 = %2.2f, p2 menunjuk alamat %p\n",*p2,p2);

p2 = p1; //operasi pemberian nilai, berarti alamat x2 sama dengan x1

printf("sekarang nilai p2 = %2.2f, p2 menunjuk alamat %p\n",*p2,p2);

getch();

}

Contoh 2:

#include

#include

int main(){

int *p,a=25,b;

//p masih dangling

printf("nilai a = %d di alamat a = %p,\n",a,&a);

printf("nilai p di alamat = %p\n",p);

p = &a;

printf("nilai p = %d di alamat %p\n",*p,p);

//b diisi dengan nilai yang berasal dari nilai

//variabel a yang ditunjuk oleh pointer p

b = *p;

printf("nilai b = %d di alamat %p\n",b,&b);

getch();

}

Contoh 3:

#include

#include

int main(){

int a=25,b=12,t;

int *p,*q;

p = &a;

q = &b;

printf("nilai yang ditunjuk p = %d di alamat %p\n",*p,p);

printf("nilai yang ditunjuk q = %d di alamat %p\n",*q,q);

//Contoh kasus, penukaran nilai 2 variabel dengan pointer

t = *p;

*p = *q;

*q = t;

printf("nilai yang ditunjuk p sekarang = %d di alamat %p\n",*p,p);

printf("nilai yang ditunjuk q sekarang = %d di alamat %p\n",*q,q);

getch();

}

Contoh 4:

#include

#include

int main(){

int a,*p;

p=&a;

*p=25;

printf("nilai a = %d",a);

}

Page 66: Modul junior gelombang i

Modul Pelatihan Junior Programming 62

2. Operasi Aritmatika

#include

#include

int main(){

int a,b=10,*p,*q;

p=&a;

*p=25;

printf("nilai a = %d\n",a);

printf("alamat p = %p\n",p);

q=&b;

printf("alamat q = %p\n",q);

printf("nilai a + b = %d\n",(*p+*q));

//posisi alamat p menjadi bergeser, nilai berubah

p=p+1;

printf("nilai p = %d, alamat = %p\n",*p,&p);

q=q-1;

printf("nilai q = %d, alamat = %p\n",*q,&q);

getch();

}

Pointer pada array 1 dimensi:

#include

#include

int main(){

char S[] = "anton";

char *p;

//cara 1

//langsung menunjuk nama array.

p=S;

for(int i=0;i<5;i++){ printf("%c",*p); p++; } printf("\n"); //cara 2

p=&S[0]; for(int i=0;i<5;i++){ printf("%c",*p); p++; } printf("\n");

//Membalik kalimat p--; for(int i=0;i<5;i++){ printf("%c",*p); p--; }

printf("\n"); getch(); } Pointer pada Struct: #include

#include

typedef struct{

int nim;

int umur;

float ipk;

} Mahasiswa;

Mahasiswa m;

Mahasiswa *p = &m;

int main(){

//struct biasa

m.nim=123;

m.ipk=3.2;

m.umur=23;

printf("nim = %d\n",m.nim);

printf("ipk = %f\n",m.ipk);

printf("umur = %d\n",m.umur);

//struct pointer

p->ipk = 3.5;

p->nim = 321;

p->umur = 32;

printf("nim = %d\n",p->nim);

printf("ipk = %f\n",p->ipk);

Page 67: Modul junior gelombang i

Modul Pelatihan Junior Programming 63

printf("umur = %d\n",p->umur);

//mengacu pada variabel aslinya

printf("nim = %d\n",m.nim);

printf("ipk = %f\n",m.ipk);

printf("umur = %d\n",m.umur);

getch();

}

Pengembangan:

Buatlah sebuah program untuk mengecek apakah suatu kata palindrom atau bukan,

tanpa memperhatikan spasi dan huruf besar/kecilnya. Program dibuat dengan

menggunakan template struct sebagai berikut:

typedef struct{

char elemen[30];

int jml_kata;

} Kata;

Kata kata;

Kata *p_kata=&kata;

Lanjutkanlah program berikut agar hasilnya sesuai dengan soal di atas:

#include

#include

typedef struct{

char elemen[30];

int jml_kata;

} Kata;

Kata kata;

Kata *p_kata=&kata;

int main(){

char kalimat[30];

p_kata->jml_kata=0;

char *p = p_kata->elemen;

printf("Masukkan kata : ");gets(kalimat);

fflush(stdin);

printf("Kalimat : %s\n",kalimat);

for(int i=0;ijml_kata++;

p++;

}

p=p_kata->elemen;

//tampilkan kembali kalimat tersebut

for(int i=0;i<=p_kata->jml_kata;i++){

printf("%c ",*p);

p++;

}

//kembangkan….

getch();

}

Page 68: Modul junior gelombang i

Modul Pelatihan Junior Programming 64

4.3 Pengurutan (Sorting)

a. Definisi Pengurutan (Sorting)

Selain pencarian, pengurutan data merupakan salah satu permasalahan umum

yang juga sering dijumpai dalam pemrograman. Sebagai bukti nyata, tinjaulah metode

pencarian bagi dua di atas yang menuntut kita untuk melakukan pengurutan terlebih

dahulu sebelum kita melakukan pencarian.

Dalam pemrograman, terdapat beberapa metode untuk melakukan pengurutan

data. Namun terdapat 8 (delapan) metode yang umumnya banyak digunakan, yaitu :

1. Bubble Sort

2. Maximum/Minimum Sort

3. Selection Sort

4. Insertion Sort

5. Heap Sort

6. Quick Sort

7. Merge Sort

8. Shell Sort

Pada pembahasan ini, hanya 3 (tiga) metode yang akan dibahas yaitu metode

pengurutan gelembung (bubble sort), pengurutan maksimum/minimum

(maximum/minium sort) dan pengurutan seleksi (selestion sort).

1) Pengurutan Gelembung (Bubble sort)

Menurut sumber yang ada, metode ini diinspirasi oleh adanya gelembung sabun

yang mengapung di atas permukaan air. Hal ini tentunya disebabkan karena berat jenis

gelembung sabun lebih kecil dari berat jenis air. Konsep dari fenomena tersebut

kemudian diterapkan sebagai metode pengurutan data di dalam array. Dalam metode

ini data dengan nilai terkecil akan diapungkan ke posisi teratas, dan sebaliknya data

dengan nilai terbesar akan berada pada posisi terbawah. Sebagai contoh, asumsikan

bahwa kita memiliki array A yang berisi lima buah elemen data, seperti yang tampak di

bawah ini.

25 22 18 20 15

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

Gambar 4.1 Array A sebelum diurutkan dengan metode gelembung

Page 69: Modul junior gelombang i

Modul Pelatihan Junior Programming 65

Di sini kita akan mengurutkan array tersebut secara menaik, yaitu dengan

mengapungkan nilai terkecil ke posisi teratas (paling kiri). Proses ini tentu akan

dilakukan dengan menggunakan pertukaran antar elemen array. Tahapan-tahapan

yang harus dilakukan adalah sebagai berikut.

Tahap 1

Mulai dari A[5] sampai A[2], lakukan perbandingan nilai antara A[k] dan A[k-1] dimana

variabel k mewakili indeks array yang sedang aktif. Apabila nilai A[k] lebih kecil, maka

tukarkan nilai A[k] dengan A[k-1]. Sampai di sini, array tersebut akan menjadi seperti

berikut.

15 25 22 18 20

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

Gambar 4.2 Hasil Pengurutan Array A tahap 1

Tahap 2

Mulai dari A[5] sampai A[3], lakukan proses seperti pada tahap 1 sehingga array akan

menjadi seperti berikut.

15 18 25 22 20

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

Gambar 4.3 Hasil Pengurutan Array A tahap 2

Tahap 3

Mulai dari A[5] sampai A[4], lakukan proses seperti pada tahap 1 dan 2 sehingga array

akan menjadi seperti berikut.

15 18 20 25 22

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

Gambar 4.4 Hasil Pengurutan Array A tahap 3

Tahap 4

Tahap ini merupakan tahap terakhir dimana kita akan melakukan perbandingan

terhadap nilai dari elemen terakhir (A5]) dengan elemen terakhir-1 (A[4]). Apabila nilai

A[5] lebih kecil maka tukarkan nilainya dengan A[4] sehingga array A di atas akan

terurut secara menaik seperti yang tampak di bawah ini.

Page 70: Modul junior gelombang i

Modul Pelatihan Junior Programming 66

15 18 20 22 25

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

Gambar 4.5 Hasil Pengurutan Array A tahap 4

Pada proses yang terjadi di atas tampak jelas bahwa untuk melakukan

pengurutan data dengan lima buah elemen, kita harus melakukan empat tahapan.

Sekarang, apabila proses di atas kita translasikan ke dalam bahasa pascal, maka

hasilnya adalah sebagai berikut.

Var

n, {banyaknya elemen array}

j, k {variabel bantu untuk indeks pengulangan}

temp : integer; {variabel bantu untuk melakukan pertukarannilai}

begin

for j:= 1 to N-1 do begin

for k:= N downto j+1 do begin

if A[k] < A[k-1] then begin

temp := A[k];

A[k] := A[k-1];

A[k-1] := temp;

End;

End;

End;

End;

Untuk lebih memperjelas, coba perhatikan implementasinya di dalam program berikut.

Program UrutGelembung;

Uses crt;

Const

n = 5;

A : array [1 . . n] of integer = (25, 22, 18, 20, 15);

Var

j, k, temp : integer;

begin

clrscr;

{menampilkan data sebelum proses pengurutan}

Writeln(’Data sebelum diurutkan’);

For j := 1 to n do begin

Writeln(’A[’, j,’] = ’, A[j];

End;

Melakukan proses pengurutan data}

For j:= 1 to n-1 do begin

For k:= n downto j+1 do begin

If A[k] < A[k-1] then begin

Temp :=A[k];

A[k] := A[k-1];

Ak-1] := temp;

End;

End;

End;

{Menampilkan data setelah proses pengurutan}

Page 71: Modul junior gelombang i

Modul Pelatihan Junior Programming 67

Writeln;

Writeln (’Data setelah diurutkan’);

For j:= 1 to n do begin

Writeln(’A[’, j, ’] = ’, A[j]);

End;

Readln;

End.

Hasil yang akan diberikan oleh program di atas adalah sebagaii beriku.

Data sebelum diurutkan

25

22

18

20

15

Data setelah diurutkan

15

18

20

22

25

2) Pengurutan Maksimum/Minimum

Dengan metode ini, elemen array dengan nilai maksimum/minimum akan disimpan ke

bagian ujung array (elemen pertama maupun terakshir). Selanjutnya nilai tersebut

akan diisolasi atau diikat dan tidak diikutkan lagi dalam proses selanjutnya. Di sini, kita

hanya akan menggunakan metode maksimum saja dan tidak akan membahas

mengenai metode minimum. Hal ini disebabkan karena konsep yang terdapat pada

metode minimum sama persis dengan metode maksimum. Untuk mempermudah

pembahasan, coba perhatikan kembali array A yang terdapat pada bahasan

sebelumnya.

25 22 18 20 15

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

Gambar 4.6 Array A sebelum diurutkan dengan metode Maksimum/Minimum

Page 72: Modul junior gelombang i

Modul Pelatihan Junior Programming 68

Pada bagian ini kita akan melakukan pengurutan data di dalam array tersebut dengan

menggunakan metode maksimum, di mana kita akan melempar nilai maksimum ke

bagian paling kanan array. Adapun tahapan-tahapan yang perlu dilalui untuk

melakukan hal tersebut adalah sebagai berikut.

Tahap 1

Mulai dari A[1] sampai A[5], cari nilai maksimum dan tukarkan nilainya dengan elemen

terakhir (A[5]) sehingga array akan akan berubah menjadi seperti di bawah ini.

15 22 18 20 25

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

Gambar 4.7 Hasil Pengurutan Array A tahap 1

Sampai di sini, elemen terakhir (A[5]) tidak akan diikutkan lagi ke dalam proses atau

tahap selanjutnya.

Tahap 2

Mulai dari A[1] sampai A[4], cari nilai maksimum dan tukarkan nilainya dengan elemen

terakhir saat ini (A[4]) sehingga array akan akan berubah menjadi seperti di bawah ini.

15 20 18 2 25

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

Gambar 4.8 Hasil Pengurutan Array A tahap 2

Sampai di sini, elemen ke-4 (A[4]) juga tidak akan diikutkan lagi ke dalam proses atau

tahap selanjutnya.

Tahap 3

Mulai dari A[1] sampai A[3], cari nilai maksimum dan tukarkan nilainya dengan elemen

terakhir saat ini (A[3]) sehingga array akan tampak seperti di bawah ini.

15 18 20 22 25

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

Gambar 4.9 Hasil Pengurutan Array A tahap 3

Page 73: Modul junior gelombang i

Modul Pelatihan Junior Programming 69

Sampai di sini, elemen ke-3 (A[3]) juga tidak akan diikutkan lagi ke dalam proses

selanjutnya.

Tahap 4

Tahap terakhir, cari nilai maksimum antara A[1] sampai A[2] dan tukarkan nilainya

dengan elemen A[2]. Untuk kasus ini nilai maksimum terdapat pada A[2] sehingga di

sini benarnya terjadi proses yang seharusnya tidak perlu dilakukan, yaitu menukarkan

nilai A[2] dengan A[2]. Berikut ini bentuk translasi metode di atas ke dalam bahasa

Pascal.

Var

n, {banyaknya elemen array keseluruhan}

x, {banyaknya elemen array yang belum terurut}

j, k, {untuk indeks pengulangan}

maks, {untuk menyimpan nilai maksimal}

imaks, {untuk menyimpan indeks dari elemen yang

menyimpan nilai maksimal}

temp : integer; {variabel bantu untuk proses pertukaran}

begin

x:= n; {mula-mula semua belum terurut}

for j:= 1 to n-1 do begin

maks := A[1];

imaks := 1;

for k:= 2 to x do begin

if(A[k] > maks) then begin

maks := A[k];

imaks := k;

end;

end;

{tukarkan maks dengan A[x]}

Temp := A[x];

A[x] := A[imaks];

A[imaks] := temp;

{ikat elemen terakshir dengan menurunkan nilai x}

x := x – 1;

end;

end;

3) Pengurutan Seleksi

Pengurutan dengan metode seleksi ini bekerja dengan cara memilih salah satu elemen

serta menganggapnya sebagai nilai terkecil. Kemudian nilai tersebut aan dibandingkan

dengan elemen-elemen pada posisi berikutnya. Apabila nilai yang dipilih pertama kali

lebih besar dari nilai elemen pembanding maka tukarkan kedua buah nilai tersebut.

Untuk memperjels pembahasan ini, marilah kita perhatikan kembali array A seperti

pembahasan sebelumnya. Berikut gambarannya.

25 22 18 20 15

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

Page 74: Modul junior gelombang i

Modul Pelatihan Junior Programming 70

Gambar 4.10 Array A sebelum diurutkan dengan metode Seleksi

Tahap 1

Mula-mula, A[1] akan dianggap sebagai nilai terkecil, yaitu dengan cara memasukkan

nilai 1 ke dalam variabel, misalnya dengan nama min. Mulai dari j = min + 1 sampai n

(jumlah elemen array), lakukan perbandingan antara A[j] dengan nilai A[min]. Apabila

nilai dari A[min] > A[j], isikan min = j. Setelah pengulangan selesai, tukarkan nilai

A[min] dan A[1]. Untuk kasus ini, nilai min adalah 5 karena nilai terkecil tersimpan pada

indeks ke-5. hal tersebut akan menyebabkan array A tampak menjadi seperti berikut.

15 22 18 20 15

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

Gambar 4.11 Hasil Pengurutan Array A tahap 1

Tahap 2

Mula-mula, A[2] akan dianggap sebagai nilai terkecil, yaitu dengan cara memasukkan

nilai 2 ke dalam variabel, misalnya dengan nama min. Kemudian sama seperti di atas,

lakukan pengulangan mulai dari j = min + 1 sampai n dan bandingkan setiap nilainya.

Setelah didapatkan nilai min, maka tukarkan A[min] dengan A[2]. Untuk kasus ini, nilai

minimum ditemukan pada indeks ke-3 sehingga min = 3. Tukarkan A[min] dengan A[2]

sehingga array A akan tampak seperti berikut.

15 18 22 20 25

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

Gambar 4.12 Hasil Pengurutan Array A tahap 2

Tahap 3

Mula-mula, A[3] akan dianggap sebagai nilai terkecil, yaitu dengan cara memasukkan

nilai 3 ke dalam variabel min. Kemudian sama seperti di atas, lakukan pengulangan

mulai dari j = min + 1 sampai n dan bandingkan setiap nilainya. Setelah didapatkan

nilai min, maka tukarkan A[min] dengan A[3]. Untuk kasus ini, nilai minimum

ditemukan pada indeks ke-4 sehingga min = 4. Tukarkan A[min] dengan A[4] sehingga

array A akan tampak seperti berikut.

15 18 20 22 25

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

Gambar 5.13 Hasil Pengurutan Array A tahap 3

Page 75: Modul junior gelombang i

Modul Pelatihan Junior Programming 71

Tahap 4

Mula-mula, A[4] akan dianggap sebagai nilai terkecil, yaitu dengan cara memasukkan

nilai 4 ke dalam variabel min. Kemudian sama seperti di atas, lakukan pengulangan

mulai dari j = min + 1 sampai n dan bandingkan setiap nilainya. Setelah didapatkan

nilai min, maka tukarkan A[min] dengan A[4]. Untuk kasus ini, nilai minimum

ditemukan pada indeks ke-4 sehingga min = 4. Tukarkan A[min] dengan A[4] sehingga

array A akan tampak seperti berikut.

15 18 20 22 25

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

Gambar 4.14 Hasil Pengurutan Array A tahap 4

4.4 Link List

Dalam suatu linier list kita dapat melakukan operasi penyisipan atau

penghapusan atas elemen-elemennya pada sembarang posisi. Misalkan ada 1500 item

yang merupakan elemen dari suatu linier list. Jika elemen ke-56 akan kita keluarkan,

maka elemen ke-1 s/d elemen ke-55 tidak akan berubah posisinya pada linier list

tersebut. Tetapi elemen ke–57akan menjadi elemen ke-56, elemen ke-58 akan menjadi

elemen ke-57 dst. Selanjutnya, jika kita sisipkan satu elemen pada posisi setelah

elemen ke-41, maka elemen ke-42 s/d elemen ke-1500 akan berubah posisinya.

Untuk menyatakan keadaan diatas diperlukan suatu konsep yang berbeda

dengan konsep sekuensial sebelumnya. Linked list merupakan suatu cara non-

sekuensial yang digunakan untuk merepresentasikan suatu data. Linked list (one way

list) adalah suatu kumpulan elemen data (yang disebut sebagai node) dimana

urutannya ditentukan oleh suatu pointer.

Setiap elemen (node) dari suatu linked list terdiri atas dua bagian, yaitu:

INFO berisi informasi tentang elemne data yang bersangkutan.

NEXT (link field/next pointer field), berisi alamat dari elemen (node)

selanjutnya yang dituju.

Page 76: Modul junior gelombang i

Modul Pelatihan Junior Programming 72

Berikut ini sebuah contoh linked list yang terdiri atas 4 node:

Info next info next info next info next

Node ke-1 node ke-2 node ke-3 node ke-4

Pada node ke-4 field NEXT–nya berisi NULL , artinya node ke-4 tsb adalah node

terakhir.

Node-node dalam linked list tidak harus selalu digambarkan paralel seperti pada

gambar diatas. Linked list pada contoh diatas dapat pula digambarkan seperti

berikut ini:

Info next

Info next

Info next

Info next

CATATAN :

Ada dua hal yang menjadi kerugian dengan representasi suatu data dengan

linked list ini,

yaitu:

1. Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.

2. Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked

list.

Sedangkan keuntungannya adalah :

1. Jenis data yang berbeda dapat di-link

2. Operasi REMOVE atau INSERT hanya dilakukan dengan mengubah pointer-nya

saja .

OPERASI DASAR PADA LINKED LIST

NULL

Start

null

Page 77: Modul junior gelombang i

Modul Pelatihan Junior Programming 73

Node ke-4

Ada beberapa aturan yang didefinisikan pada operasi didalam linked list yaitu:

Jika P adalah suatu variabel pointer, maka nilainya adalah alamat atau lokasi

dari variabel lain yang dituju.

Operasi yang didefinisikan pada suatu variabel pointer adalah:

1. Test apakah sama dengan NULL

2. Test untuk kesamaan denganvariabel pointer lain

3. Menetapkan sama dengan NULL

4. Menetapkan menuju ke node lain

Notasi yang didefinisikan sehubungan dengan operasi diatas adalah

1. NODE (P), artinya node yang ditunjuk oleh pointer P

2. INFO (P), artinya nilai INFO dari node yang ditunjuk pointer P

3. NEXT (P), artinya hubungan (link) selanjutnya dari node yang ditunjuk oleh

pointer P

Sebagai contoh, perhatikan linked list dibawah ini:

Info next

star Info next info next

node ke-2

node ke-1

node ke-3

Info next

NODE (P) = node yang ditunuk oleh P yaitu node pertama INFO (P) = A NEXT (P) = node kedua INFO (NEXT(NEXT(P))) = C

MENGHAPUS SUATU NODE DARI LINKED LIST (REMOVE)

Untuk menghapus node dalam linked list digunakan procedure FREENODE.

B B

B

A C

DA

null

P

Page 78: Modul junior gelombang i

Modul Pelatihan Junior Programming 74

Jika Q adalah suatu variabel pointer, maka FREENODE (Q) akan menyebabkan

node yang ditunjuk oleh variabel poinnter Q dihapus dalam linked list.

Perhatikan linked list berikut :

Langkah ke-1 :

Q := Next (P)

Info next info next info next

P Q

Info next

…….

Langkah ke-2 :

Next (P) := Next (Q)

Info next

Info next info next info next

Langkah ke-3 :

Freenode (Q)

Procedure Freenode (Q)

(a) Next (Q) := Avail

(b) Info (Q) := Null

(c) Avail := Q

MENYISIPKAN SUATU NODE KEDALAM LINKED LIST

Untuk menyisipkan node dalam linked list digunakan procedure GETNODE

Jika NEW adalah suatu variabel pointer, maka GETNODE (NEW) akan menyebabkan

node yang ditunjuk oleh variabel pointer NEW disisipkan kedalam linked list.

Page 79: Modul junior gelombang i

Modul Pelatihan Junior Programming 75

Perhatikan linked list berikut:

Procedure Getnode (NEW)

If Avail = Null

Then out-of-free-space

(a) else begin

Getnode := Avail

(b) Avail := Next (Avail)

(c) Next (Getnode) := Null;

End;

Algoritma menyisipkan sebuah node :

(a) Getnode (NEW)

(b) Info (NEW) := Name;

(c) Q := Next (P)

(d) Next (P) := NEW

(e) Next (NEW) := Q

Contoh Deklarasi Node:

#include <stdio.h>

#include <stdlib.h>

typedef struct Node {

int elm;

struct Node *next;

} node;

node *start; // kepala linked list

int count; // jumlah node

Kemudian membuat fungsi init(), yaitu membuat kepala linked list. Di sini

terjadi pengalokasian memory secara dinamis untuk start. Kepala linked list ini tidak

masuk dalam hitungan rangkaian.

Contoh Deklarasi init:

void init(void) {

start = malloc(sizeof(node)); // alokasi memori dinamis

if(!start) { // bila alokasi gagal

printf("alokasi gagal..\n");

return; }

start->next = NULL;

count = 0; }

Page 80: Modul junior gelombang i

Modul Pelatihan Junior Programming 76

Alokasi memori dinamis dapat dilakukan dengan fungsi malloc(). Dalam

potongan kode di atas, alokasi memori untuk start adalah sebesar ukuran node.

Berikutnya adalah membuat fungsi insert() yang digunakan untuk menambahkan node

baru dalam rangkaian linked list. Node yang ditambahkan akan selalu diletakkan

di depan node dengan isi lebih besar (urut naik).

Contoh Fungsi Insert:

void insert(int e) {

node *curr;

node *tmp;

curr = malloc(sizeof(node));

if(!curr) {

printf("alokasi gagal..\n");

return; }

curr->elm = e;

// bila list masih kosong

// node diletakkan di awal

if(!start->next) {

start->next = curr;

curr->next = NULL;

} else {

tmp = malloc(sizeof(node));

if(!tmp) {

printf("alokasi gagal..\n");

return;}

// bila list tidak kosong

// lakukan perulangan selama

// isi node berikutnya lebih besar dari

// isi node yang akan dimasukkan

tmp = start;

while(tmp->next && tmp->next->elm <= e) {

tmp = tmp->next; }

curr->next = tmp->next;

tmp->next = curr;}

count++; }

Berikutnya adalah membuat fungsi delete() yang digunakan untuk

menghapus node berdasar isinya.

Contoh Fungsi Delete

void delete(int e) {

node *tmp, *curr;

// jika list kosong

if(!start->next) {

printf("List kosong..\n");

return; }

Page 81: Modul junior gelombang i

Modul Pelatihan Junior Programming 77

tmp = malloc(sizeof(node));

curr = malloc(sizeof(node));

if(!(tmp && curr)) {

printf("alokasi gagal..\n");

return; }

tmp = start; // posisikan tmp di start

// lakukan perulangan selama isi node tidak ketemu

while(tmp->next && tmp->next->elm != e) {

tmp = tmp->next; }

// bila node berikutnya adalah NULL

// tidak tidak ditemukan

if(!tmp->next) {

printf("tidak ada node berisi elemen '%d'..\n", e);

return; }

curr = tmp->next;

tmp->next = curr->next;

free(curr);

count--; }

Kemudian membuat fungsi show() yang digunakan untuk membaca isi linked

list. Pembacaan berdasarkan arah rangkaian.

Contoh Fungsi Show

void show(void) {

node *tmp;

if(!start->next) {

printf("List kosong..\n");

return; }

tmp = malloc(sizeof(node));

if(!tmp) {

printf("alokasi gagal..\n");

return; }

printf("Jumlah: %d\n", count);

printf("Isi : ");

tmp = start;

while(tmp = tmp->next) {

printf("%d ", tmp->elm);

}

printf("\n");}

Terakhir adalah membuat fungsi main() untuk mendemokan operasi –

operasi yang sudah dibuat sebelumnya.

Contoh Fungsi main

int main(void) {

char s[80];

char e[80];

Page 82: Modul junior gelombang i

Modul Pelatihan Junior Programming 78

init();

for(;;) {

system("clear");

printf("Linked List. Jumlah: %d\n", count);

printf("1. Insert\n");

printf("2. Show\n");

printf("3. Delete\n");

printf("4. Exit\n");

printf(" : ");

gets(s);

if(strcmp(s, "") == 0)

break;

switch(*s) {

case '1' :

printf(" Insert: ");

gets(e);

insert(atoi(e));

break;

case '2' :

show();

system("pause");

break;

case '3' :

printf(" Delete: ");

gets(s);

delete(atoi(s));

break;

case '4' :

exit(0);

break;

} }

return 0; }

4.5 Queue

Queue (antrian) dibuat menggunakan array dan dua buah variabel bertipe

integer yang menunjukkan posisi awal dan akhir antrian. Dalam queue terdapat

beberapa fungsi untuk operasi dasar, yaitu store() dan retrieve(). Percobaan kali

ini menerangkan queue dalam potongan – potongan kode program. Langkah

pertama adalah membuat array untuk queue. Dalam kode ini menggunakan asumsi

bahwa queue digunakan untuk tipe data integer saja.

4.5.1 Contoh Deklarasi Queue

int queue[MAX]; // antrian

int spos = 0; // index posisi simpan (store)

int rpos = 0; // index posisi ambil (retrieve)

Index posisi ambil biasanya terletak di awal, dan index posisi simpan terletak di

akhir. Kemudian membuat fungsi store() untuk operasi memasukkan elemen baru ke

Page 83: Modul junior gelombang i

Modul Pelatihan Junior Programming 79

dalam queue. Dalam fungsi ini terdapat pemeriksaan, bila nilai spos sama dengan

atau lebih dari MAX berarti queue sudah penuh.

4.5.2 Contoh Fungsi store

void store(int e) {

if(spos == MAX) {

printf("antrian penuh\n");

return; }

queue[spos++] = e; }

Fungsi yang kedua adalah retrieve() yang digunakan untuk operasi mengambil isi

queue. Fungsi akan mengembalikan nilai elemen antrian pada posisi rpos. Dalam

fungsi ini juga terdapat pemeriksaan bila nilai spos sama dengan rpos berarti queue

kosong.

4.5.3 Contoh Fungsi Retrieve

int qretrieve(void) {

if(rpos == spos) {

printf("antrian kosong\n");

return 0; }

return queue[rpos++]; }

Selain dua fungsi di atas bisa pula ditambahkan dengan fungsi show() untuk

menampilkan isi queue dan fungsi menu() untuk menampilkan daftar menu pilihan.

4.5.4 Contoh Program queue

#include <conio.h>

#include <iostream.h>

#include <string.h>

#define max 20

typedef struct queue // Mendefinisikan queue dengan menggunakan struct

{ int head;

int tail;

char data [15][20]; // menampung 15 data dengan jumlah

string max 20 huruf

}antrian;

queue antri;

void inisialisasi()

{ antri.head = antri.tail = -1;}

int isFull()

{ if (antri.tail==max-1)

return 1;

else

return 0; }

int isEmpty(){

if (antri.tail==-1)

Page 84: Modul junior gelombang i

Modul Pelatihan Junior Programming 80

{ antri.head=-1;

return 1;}

else

return 0; }

void enqueue(char d[20])

{ antri.head=0;

antri.tail++;

strcpy(antri.data[antri.tail],d);

cout<<"\tdata berhasil dimasukkan,tekan sembarang tombol untuk

lanjut !\n\n";}

void dequeue()

{ cout<<"data terambil"<<" "<<antri.data[antri.head]<<endl;

for (int i=antri.head;i<=antri.tail;i++)

strcpy (antri.data[i],antri.data[i+1]);

antri.tail--; }

void clear()

{ antri.head=antri.tail=-1;

cout<<"semua data terhapus.\n";}

void print()

{ for (int i=0;i<=antri.tail;i++)

cout<<"\ntampil data "<<antri.data[i]<<endl<<endl;}

int main()

{ int pil;

inisialisasi();

char dt[20];

do{

cout<<"1. input\n";

cout<<"2. delete\n";

cout<<"3. print\n";

cout<<"4. clear\n";

cout<<"5. exit\n";

cout<<"Pilihan : ";cin>>pil;

switch(pil){

case 1: if(isFull() != 1){

cout<<"Data = ";cin>>dt;

enqueue(dt);}

else

cout<<"\nSudah penuh!\n";

break;

case 2: if(isEmpty() != 1)

dequeue();

else

cout<<"\nMasih kosong!\n";

break;

case 3: if(isEmpty() != 1)

print();

else

cout<<"\nMasih kosong!\n";

break;

case 4: clear();

cout<<"\nSudah kosong!\n";

break; }

getch();}

while(pil != 5);

getch();}

Page 85: Modul junior gelombang i

Modul Pelatihan Junior Programming 81

4.6 Stack

Stack dibuat menggunakan array dan sebuah variabel bertipe integer yang

menunjukkan posisi puncak stack. Dalam stack terdapat beberapa fungsi untuk operasi

dasar, yaitu push() dan pop(). Percobaan kali ini menerangkan stack dalam potongan –

potongan kode program. Langkah pertama adalah membuat array untuk stack. Dalam

kode ini menggunakan asumsi

bahwa stack digunakan untuk tipe data integer saja.

4.6.1 Contoh Deklarasi stack

int stack[MAX]; // array stack

int top; // penunjuk posisi atas stack

Kemudian membuat fungsi push() untuk operasi memasukkan elemen baru ke dalam

stack. Dalam fungsi ini terdapat pemeriksaan, bila nilai top sama dengan atau

lebih dari MAX berarti stack sudah penuh.

4.6.2 Contoh Fungsi push()

void push(int e) {

if(top >= MAX) {

printf("Stack penuh\n");

} else {

stack[top] = e;

top++;

}}

Fungsi yang kedua adalah pop() yang digunakan untuk operasi mengeluarkan isi stack.

Fungsi akan mengembalikan nilai stack paling atas. Dalam fungsi ini juga terdapat

pemeriksaan bila nilai top sama dengan atau kurang dari 0 berarti stack kosong.

4.6.3 Contoh Fungsi pop()

void push(int e) {

if(top >= MAX) {

printf("Stack penuh\n");

} else {

stack[top] = e;

top++;

}}

Page 86: Modul junior gelombang i

Modul Pelatihan Junior Programming 82

Selain dua fungsi di atas bisa pula ditambahkan dengan fungsi show() untuk

menampilkan isi stack dan fungsi menu() untuk menampilkan daftar menu pilihan.

4.6.4 Contoh Program stack

#include <conio.h>

#include <string.h>

#include <iostream.h>

#define MAX_STACK 10

typedef struct stack

{

int top;

char data[10][10];

} tumpuk1;

stack tumpuk;

void inisialisasi(){

tumpuk.top = -1;

}

int IsFull(){

if(tumpuk.top == MAX_STACK-1)

return 1;

else

return 0;

}}

int IsEmpty(){

if(tumpuk.top == -1)

return 1;

else

return 0;}

void Push(char d[10]){

tumpuk.top++;

strcpy(tumpuk.data[tumpuk.top],d);}

void Pop(){

cout<<"\nData yang terambil = "<<tumpuk.data[tumpuk.top]<<endl;

tumpuk.top--;}

void Clear(){

tumpuk.top=-1;}

void TampilStack(){

for(int i=tumpuk.top;i>=0;i--)

{cout<<"Data : "<<tumpuk.data[i]<<endl;}}

int main(){

int pil;

inisialisasi();

char dt[10];

do{

cout<<"1. push\n";

cout<<"2. pop\n";

cout<<"3. print\n";

cout<<"4. clear\n";

Page 87: Modul junior gelombang i

Modul Pelatihan Junior Programming 83

cout<<"5. exit\n";

cout<<"\nPilihan : ";cin>>pil;

switch(pil){

case 1: if(IsFull() != 1){

cout<<"\nData = ";cin>>dt;

cout<<endl;}

else

cout<<"\nSudah penuh!\n";

break;

case 2: if(IsEmpty() != 1)

else

cout<<"\nMasih kosong!\n";

break;

case 3: if(IsEmpty() != 1)

else

cout<<"\nMasih kosong!\n";

break;

case 4: Clear();

cout<<"\nSudah kosong!\n";

break;}

getch(); }

while(pil != 5);

getch();}

4.7 File

Dalam kasus-kasus pemrograman tertentu kita sering disudutkan untuk

menggunakan file sebagai media yang digunakan untuk menyimpan data-data, baik

berupa data input (untuk masukan) maupun sebagai data output (untuk keluaran).

Sebagai contoh, apabila kita menggunakan sistem operasi Microsoft Windows maka

kita akan menemukan file sistem seperti autoexec.bat, config.sys, system.ini dan

lainnya. File tersebut sebenarnya digunakan untuk menyimpan data-data secara

terpisah sehingga nilainya dapat diubah dengan mudah sesuai dengan kebutuhan.

Sebagai seorang programmer, kita tentu dituntut untuk dapat menggunakan

(mengakses) file dari dalam prograam yang kita buat. Berdasarkan prosedur yang ada,

proses pengaksesan file di dalam bahasa Pascal terdiri dari emapt tahap, yaitu :

(a) Menghubungkan file fisik yang akan dibuka atau dibuat dengan variabel file

(b) Membuka file

(c) Melakukan operasi file (membaca atau menulis)

(d) Menutup file

4.7.1 Variabel File

Sebelum file dapat dibuka atau dibuat oleh program, kita harus

menghubungkannya dengan variabel file terlebih dahulu. Variabel file merupakan

peralatan logik yang digunakan sebagai perantara dalm mentransfer atau membaca

Page 88: Modul junior gelombang i

Modul Pelatihan Junior Programming 84

data dari atau ke sebuah file fisik yang tersimpan di dalam disk. Dengan kata lain,

sebenarnya kita tidak secara langsung memanipulasi file fisik tersebut, melainkan

melalui variabel file. Dalam bahasa Pascal, variabel seperti ini dianggap sebagai

variabel biasa yang dideklarasikan dengan tipe file tertentu. Cara yang harus dilakukan

untuk dapat menghubungkan file fisik dengan variabel file adalah dengan

menggunakan prosedur Assign, yang memeiliki bentuk umum sebagai berikut.

Procedure Assign (NamaVariabelFile, NamaFileFisik);

NamaVariabelFile merupakan nama variabel yang sebelumnya harus

dideklarasikan terlebih dahulu, sedangkan NamaFileFisik merupakan nama file

yang akan dibuka atau dibuat. Perlu diperhatikan bahwa nama file tersebut harus

dituliskan secara lengkap beserta lokasi atau path-nya. Sebagai contoh, apabila kita

ingin membuka file dengan nama CONTOH.TXT yang terdapat di dalam direktori COBA

di drive D, maka kode yang harus dituliskan adalah sebagai berikut.

Var

F:TextFile; {mendeklarasikan variabel file denagn nama F}

Begin

Assign (F, ‟D:\COBA\CONTOH.TXT‟);

. . .

end.

Sedangkan apabila file yang akan kita akses berada dalam satu direktori dengan

program (file eksekusi) yang kita buat, maka kita tidak perlu menuliskan lokasi atau

path-nya. Artinya kita hanya perlu untuk menuliskan nama file-nya saja seperti berikut.

Assign (F, ‟ CONTOH.TXT‟);

Pada kode di atas, file CONTOH.TXT akan dihubungkan dengan variabel F.

Selanjutnya yang akan dimanipulasi di dalam program adalah variabel F. Namun karena

variabel tersbut sebenarnya menunjuk ke file fisik, maka setiap perubahan yang terjadi

di dalam variabel F tentu akan mempengaruhi isi dari file CONTOH.TXT.

Hal yang perlu diperhatikan di sini adaalah bahwa walaupun file tersebut sudah

terhubung dengan variabel file, namun file masih dalam keadaan tertutup sehingga

kita perlu membukanya terlebuh dahulu sebelum kita mengakses data yang terdapat di

dalamnya.

4.7.2 Membuka File

Seteleh file tersebut dihubungkan dengan variabel file, maka langkah selanjutnya

yang perlu dilakukan adalah membuka file. Dalam bahasa Pascal, terdapat tiga buah

Page 89: Modul junior gelombang i

Modul Pelatihan Junior Programming 85

prosedur yang dapat digunakan untuk membuka file, yaitu Rewrite, Reset dan

Append.

- Prosedur Rewrite

Prosedur ini digunakan untuk membuka file yang sama sekali belum terdapat di

dalam disk. Artinya, di sini kompiler akan melakukan proses pembuatan file baru

sekaligus membuka file tersebut. Bentuk umum dari prosedur Rewrite adalah sebagai

berikut.

Procedure Rewrite(NamaVariabelFile[:File;

UkuranRecord : Word]);

Bila file yang dibuka berupa file teks, maka file tersebut akan bersifat writeonly

atau tidak dapat dibaca, artinya operasi yang diizinkan untuk file tersebut hanyalah

operasi tulis. UkuranRecord merupakan ekspresi yang bersifat opsional yang hanya

disertakan apabila file yang dibuka merupakan file tanpa tipe. Nilai tersebut akan

digunakan sebagai ukuran record dalam transfer data. Nilai tersebut akan digunakan

sebagai ukuran record dalam transfer data. Apabila dihilangkan, maka UkuranRecord

ini alan dianggap bernilai 128 byte. Untuk lebih memahami penggunaan prosedur ini,

perhatikan contoh program sederhana ini.

Program ContohRewrite;

Var

F : TextFile;

Begin

Assign (F, ’D:\CONTOH.TXT’);

Rewrite (F);

End.

Jalankan program tersebut dan lihatlah drive D pada komputer anda, maka di situ

pasti akan tercipta file baru dengan nama CONTOH.TXT dimana isinya kosong. Apabila

anda bereksperimen untuk membuka filee yang sudah ada sebelumnya dengan

menggunakan prosedur Rewrite maka isi dari file tersebut akan ditimpa dengan isi file

baru. Satu hal lagi yang perlu diperhatikan adalah bahwa etelah pemanggilan prosedur

Rewrite, fungsi EOF (end-of-file) akan selalu menghasilkan nilai true.

- Prosedur Reset

Prosedur ini digunakan untuk membuka file yang sebelumnya sudah ada di dalam

disk. Hal ini bertujuan untuk membaca isi dari file tersebut untuk kemudian

Page 90: Modul junior gelombang i

Modul Pelatihan Junior Programming 86

dimanipilasi sesuai dengan kebutuhan. Perlu sekali untuk diperhatikan bahwa apabila

file yang dibuka merupakan file teks, maka variabel file akan bersifat read only (hanya

dapat dibaca). Berikut ini prototype dari prosedur Reset.

Procedure Reset (NamaVariabelFile [: file; UkuranRecord: word]);

UkuranRecord merupakan ekspresi yang bersifat operaional yang hanya disertakan

apabila file yang dibuka merupakan file tanpa tipe. UkuranRecord sendiri berfungsi

untuk menentukan ukuran record dalam proses transfer data. Apabila nilai tersebut

dihilangkan, maka nilainya akan dianggap 128 byte. Sebagai contoh, kita telah memiliki

file SAMPLE.TXT yang disimpan di rive D dan isinya seperti berikut.

Teknik Pemrograman Pascal

Oleh : Budi Raharjo

Tahun : 2005

Penerbit : INFORMATIKA

Selanjutnya kita ingin membaca isi file tersebut dan ditampilkan di layar monitor,

maka kita dapat menggunakan prosedur Reset seperti yang tampak pada kode berikut.

Program ContohReset;

Uses crt;

Var

F : TextFile;

Teks : string;

Begin

Assign (F, ’D :\SAMPLE.TXT’);

Reset (F);

While not eof (F ) do begin

Readln (F, teks) ; {membaca data dari file dan mengisikannya ke

variabel teks}

Writeln (teks); menampilkan variabel teks ke layar}

Close (F);

Readln;

End.

Sekarang coba jalankan program tersebut dan akan melihat bahwa seluruh isi dari

file SAMPLE.TXT akan ditampilkan di layar monitor. Apabila kita menggunakan

prosedur Reset pada file yang belum terdapat di dalam disk maka kompiler akan

menampilkan pesan kesalahan pada saat program dijalankan.

- Prosedur Append

Prosedur ini digunakan untuk menambahkan isi file yang sebelumnya sudah

terdapat di dalam disk. Isi yang ditambahkan selalu berada pada bagian akhir dari isi

file yang sudah ada sebelumnya. Dalam menggunakan prosedur ini kita tidak perlu

Page 91: Modul junior gelombang i

Modul Pelatihan Junior Programming 87

memanggil prosedur Rewrite maupun reset karena prosedur Append secara otomatis

akan membuka file yang telah dihubungkan dengan variabel file. Namun sebagai

catatan bagi Anda bahwa prosedur Append hanya dapat digunakan apabila file yang

dibuka merupakan file teks. Berikut ini bentuk umum dari prosedur Append.

Procedure Append (NamaVariabelFile: Text ) ;

Apabila anda membuka file teks yang belum ada didalam diks dengan

menggunakan prosedur Append, maka akan terjadi kesalahan pada saat program

sedang berjalan (run-time). Setiap pemanggila prosedur Append, file bersifat write-only

(hanya dapat ditulis) dan posisi file akan diset pada bagian akhir baris file. Untuk dapat

lebih memahaminya, buatlah file teks (*.TXT) dengan program teks editor yang

tersedia, misalnya Notepad, kemudian isikan teks berikut ke dalamnya.

Ini adalah data yang dituliskan pada baris pertama.

Ini adalah data yang dituliskan pada baris pertama.

Sebagai contoh, file tersebut disimpan dengan nama TEST.TXT pada drive D di

dalan direktori COBA. Selanjutnya kita ingin menamnbahkan dua buah baris data ke

dalam file di atas, maka kita dapat melakukannya melalui kode program dibawah ini.

Program ContohAppend;

Uses

Crt;

Var

F: TextFile;

Begin

Assign (F,’D:\COBA\TEST.TXT’) ;

Append (F) ; {Membuka file untuk di tambah isinya}

{Menambahkan data ke dalam file}

writeln (F,’Ini adalah data pertama yang ditambahkan’) ;

writeln (F,’Ini adalah data kedua yang ditambahkan’) ;

close(F) ;

end.

Ini adalah data yang dituliskan pada baris pertama

Ini adalah data yang dituliskan pada baris kedua

Ini adalah data pertama yang ditambahkan

Ini adalah data kedua yang ditambahkan

Memanipulasi Data Dalam File

Setelah Anda mengerti cara untuk mengkaitkan atau menghubungkan file ke

variabel file dan juga bagaimana cara membuka file tersebut maka kini saatnya Anda

mengetahui bagaimana cara memanipulasi data dalam file dari program yang kita

Page 92: Modul junior gelombang i

Modul Pelatihan Junior Programming 88

buat. Untuk melakukan hal tersebut tentu Anda harus memahami dengan benar cara

membaca data dan menuliskan data kedalam file.

- Menulis Data ke Dalam File

Dalam bahasa Pascal, proses penulisan data ke dalam file dapat dilakukan dengan

menggunakan prosedur Write, Writeln maupun BlockWrite. Untuk informasi lebih detil

mengenai masing-masing prosedur tersebut, Anda dapat melihat sub bab di bawah ini.

3) Menggunakan Prosedur Write

Prosedur Write digunakan untuk menuliskan data kedalam file dimana posisi

kursor tidak akan dipindahkan kebaris selanjutnya.

Berikut ini bentuk prototipe dari prosedur Write.

Procedure Write (NamaVariabelFile; VI [ , V2..VN] ) ;

Dimana V1..VN adalah nama variabel yang akan digunakan untuk menyimpan data

yang akan dituliskan. Walaupun demikian, Andajuga dapat menuliskannya secara

langsung tanpa harus menyimpannya terlebih dahulu ke dalam variabel seperti yang

tampak pada kode berikut.

write (F,‟Mencoba menuliskan data ke dalam file‟);

Berdasarkan kode di atas, maka teks tersebut akan dimasukkan atau ditulis ke

dalam file yang telah dihubungkan dengan variabel file F. Untuk lebih memahaminya,

perhatikan contoh program di bawah ini dimana kita akan melakukan penulisan

terhadap file DATA.TXT yang terdapat pada direktori COBA di dalam drive D. Sebagai

catatan bahwa file DATA.TXT ini sebelumnya sudah ada di dalam disk dimana isi dari

file tersebut masih kosong.

Program ContohWrite;

Uses crt;

Var

F : TextFile;

Begin

Assign (F,’D:\COBA\DATA.TXT’);

Reset (F);

Write (F, ’Teknik Pemrograman ’);

Write (F, ’Pascal’);

Close (F);

End.

Jalankan program tersebut dan buka kembali isi dari file DATA.TXT, maka kita akan

melihat bahwa file tersebut sekarang telah berisi teks berikut.

Teknik Pemrograman Pascal

Page 93: Modul junior gelombang i

Modul Pelatihan Junior Programming 89

(1) Menggunakan Prosedur Writeln

Sebenarnya konsep dari prosedur Writeln ini sama dengan prosedur Write di

atas. Perbedaannya, Writeln digunakan untuk menuliskan data per baris. Artinya,

setelah melakukan prosedur Write, prosedur ini akan memindahkan kursor aktif ke

baris selanjutnya. Berikut contoh program yang akan menunjukkan penggunaan

prosedur Writeln yang digunakan untuk menuliskan data ke dalam file.

Program ContohWriteln;

Uses crt;

Var

F : TextFile;

Begin

Assign (F,’D:\COBA\DATA.TXT’);

Reset (F);

Writeln (F, ’Teknik Pemrograman ’);

Writeln (F, ’Pascal’);

Close (F);

End.

Apabila dijalankan, program di atas akan menyebabkan isi file DATA.TXT berubah

menjadi seperti di bawah ini.

Teknik Pemrograman

Pascal

(b) Membaca Data dari File

Untuk membaca data dari dalam file, kita dapat menggunakan prosedur Read,

Readln dan BlockRead.

(1) Menggunakan Prosedur Read

Pada file teks, prosedur ini digunakan untuk membaca data per karakter. Apabila

digunakan pada file bertipe maka prosedur Read akan membaca per elemen data.

Berikut bentuk umumnya.

procedure Read (NamaVariabelFile; V1[, V2 . . VN]);

dimana V1 . . VN adalah nama variabel yang akan digunakan untuk menyimpan data

hasil proses pembacaan.

(2) Menggunakan Prosedur Readln

Cara kerja dari prosedur ini sebenarnya sama dengan prosedur Read, hanya saja

dalam prosedur Readln proses pembacan datanya tidak dilakukan per karakter

melainkan per baris data. Setelah mengeksekusi prosedur Read, maka kursor akan

ditujukkan ke baris selanjutnya. Proses pembacaan data dengan prosedur Readln tentu

Page 94: Modul junior gelombang i

Modul Pelatihan Junior Programming 90

akan membutuhkan waktu yang relatif lebih cepat apabila dibandingkan dengan

prosedur Read karena dilakukan per baris. Hal yang perlu diingat bahwa prosedur

Readln hanya dapat digunakan untuk file teks saja. Bentuk umum dari prosedur Readln

adalah sebagai berikut.

procedure Readln (NamaVariabelFile; V1[, V2 . . VN]);

dimana V1 . . VN adalah nama variabel yang akandigunakan untuk menyimpan data

hasil proses pembacaan.

5) Menutup File

Setelah selesai mengakses file maka sebaiknya kita menutupnya. Untuk keperluan

ini, bahasa Pascal menyediakan prosedur Close. Berikut bentuk umumnya.

procedure close (var F);

dimana F adalah sebuah variabel file yang sebelumnya telah dibuka dengan

menggunakan fungsi Reset, Rewrite maupun Append.

6) Jenis File

Dalam bahasa Pascal, file dibedakan menjadi tiga jenis, yaitu :

(a) File Teks

(b) File Bertipe

(c) File Tanpa Tipe

(a) File Teks

File teks adalah file yang menyimpan data-data dalam bentuk teks. Dalam bahasa

Pascal, file teks ini direpresentasikan dengan tipe Text atau TextFile. Berikut ini contoh

kode untuk mendeklarasikan variabel yang bertipe TextFile.

var

F : TextFile; {mendeklarasikan variabel F bertipe TextFile}

Untuk dapat lebih mengetahui penggunaannya di dalam program, perhatikan contoh

program berikut.

Program FileTeks;

Uses crt;

Var

F : TextFile;

Begin

Assign (F, ‟D:\CONTOH.TXT‟);

Rewrite (F);

Writeln (F, ‟Teknik Pemrograman Pascal‟);

Writeln (F, ‟Oleh : Budi Raharjo‟);

Page 95: Modul junior gelombang i

Modul Pelatihan Junior Programming 91

Writeln (F, ‟Tahun : 2005‟);

Writeln (F, ‟Penerbit : INFORMATIKA Bandung‟);

Close (F);

End.

Di sini kita mengasumsikan bahwa file CONTOH.TXTbelum ada di dalam dirive D,

selanjutnya kita ingin membuat atau menciptakan file tersebut dan mengisikan data

yang berupa teks ke dalamnya. Sekarang jalankan program tersebut dan lihatlah drive

D, maka kita akan menmui file baru dengan nama CONTOH.TXT yang isinya adalah

sebagai berikut.

Teknik Pemrograman Pascal

Oleh : Budi Raharjo

Tahun : 2005

Penerbit : INFORMATIKA Bandung

(b) File Bertipe

File bertipe adalah file yang menampung data dengan tipe data tertentu, seperti

integer, real dan lainnya. Selain tipe data dasar, kita juga dapat mendefinisikan file

bertipe ini dengan tipe data bentukan, misalnya record. Berikut ini bentuk umum

untuk mendeklarasikan variabel file bertipe.

Var

NamaVariabelFile : file of <Tipedata>

Sebagai contoh, apabila kita akan mendeklarasikan variable file yang mengakses

file yang berisi data integer amak kode yang harus dituliskan adalah sebagai berikut.

var

F : file of integer;

Begitu juga apabila file berisi data real, maka kodenya adalah seperti berikut.

var

F : file of real;

Contoh penggunaan file bertipe untuk tipe record adalah sebagai berikut.

Type

Tsiswa = Record

NIM : string [8];

Nama : string [25];

Umur : integer;

Alamat : string [30];

Kota : string [15];

End;

Var

F : file of Tsiswa;

(c) File Tanpa Tipe

Page 96: Modul junior gelombang i

Modul Pelatihan Junior Programming 92

Dalam bahasa Pascal, file tanpa tipe direpresentasikan dengan tipe FILO. File jenis

ini dapat digunakan untuk menyimpan jenis data apa saja, baik teks maupun tipe

lainnya, namun biasanya digunakan untuk menyimpan data-data biner (termasuk file

EXE maupun COM). Berikut bentuk umumnya.

Var

NamaVariabelFile : FILE

Sebagai contoh apabila kita ingin mendeklarasikan variabel F yang akan digunakan

sebagai variabel file tanpa tipe, maka kita harus mendeklarasikannya sebagai berikut.

var

F : FILE

Page 97: Modul junior gelombang i

Modul Pelatihan Junior Programming 93

BAB 5. MENULIS PROGRAM DASAR

5.1 Alur Pembuatan Program

Seorang programmer tidak melakukan pembuatan dan pengkodean program

secara begitu saja, namun mengikuti perencanaan dan metodologi yang terstruktur

yang memisahkan proses suatu aplikasi menjadi beberapa bagian. Berikut ini langkah–

langkah sistematis dasar dalam menyelesaikan permasalahan pemrograman :

1. Mendefinisikan masalah

2. Menganalisa dan membuat rumusan pemecahan masalah

3. Desain Algoritma dan Representasi

4. Pengkodean, Uji Coba dan pembuatan dokumentasi

Untuk memahami langkah dasar dalam pemecahan masalah dalam sebuah

komputer mari kita mendefinisikan sebuah permasalahan yang akan diselesaikan

langkah demi langkah sebagaimana metodologi pemecahan masalah yang akan

dibahas selanjutnya. Masalah yang akan kita selesaikan akan didefinisikan pada bagian

selanjutnya.

a. Mendefinisikan masalah

Seorang programmer umumnya mendapatkan tugas berdasarkan sebuah

permasalahan. Sebelum sebuah program dapat terdesain dengan baik untuk

menyelesaikan beberapa permasalahan, masalah–masalah yang terjadi harus

dapat diketahui dan terdefinisi dengan baik untuk mendapatkan detail persyaratan

input dan output.

Sebuah pendefinisan yang jelas adalah sebagian dari penyelesaian masalah.

Pemrograman komputer mempersyaratkan untuk mendefiniskan program terlebih

dahulu sebelum membuat suatu penyelesaian masalah.

Mari kita definisikan sebuah contoh permasalahan :

”Buatlah sebuah program yang akan menampilkan berapa

kali sebuah nama tampil pada sebuah daftar”

b. Analisa Permasalahan

Page 98: Modul junior gelombang i

Modul Pelatihan Junior Programming 94

Setelah sebuah permasalahan terdefinisi secara memadai, langkah paling ringkas dan

efisien dalam penyelesaian harus dirumuskan. Umumnya, langkah berikutnya meliputi

memecahkan masalah tersebut menjadi beberapa bagian kecil dan ringkas.

Contoh masalah :

Menampilkan jumlah kemunculan sebuah nama pada daftar

Input Terhadap Program :

Daftar Nama, Nama yang akan dicari

Output Dari Program :

Jumlah kemunculan nama yang dicari

c. Desain Algoritma dan Representasi Setelah kita mengetahui dengan baik dan jelas mengenai permasalahan yang ingin

diselesaikan, langkah selanjutnya yaitu membuat rumusan algoritma untuk

menyelesaikan permasalahan. Dalam pemrograman komputer penyelesaian masalah

didefinisikan dalam langkah demi langkah. Algoritma adalah urutan langkah – langkah

logis penyelesaian masalah yang disusun secara sistematis dan logis. Logis merupakan

kunci dari sebuah algoritma. Langkah-langkah dalam algoritma harus logis dan bernilai

benar atau salah.

Algoritma dapat diekpresikan dalam bahasa manusia, menggunakan presentasi grafik

melalui sebuah FlowChart (diagram alir) ataupun melalui PseudoCode yang

menjembatani antara bahasa manusia dengan bahasa pemrograman. Berdasarkan

permasalahan yang terjadi pada bagian sebelumnya, bagaimanakah kita dapat

memberikan solusi penyelesaian secara umum dalam sebuah alur yang dapat dengan

mudah dimengerti?

Mengekspresikan cara penyelesaian melalui bahasa manusia : 1. Tentukan daftar nama

2. Tentukan nama yang akan dicari, anggaplah ini merupakan sebuah kata kunci

3. Bandingkan kata kunci terhadap setiap nama yang terdapat pada daftar

4. Jika kata kunci tersebut sama dengan nama yang terdapat pada daftar,

tambahkan nilai 1 pada hasil perhitungan

Page 99: Modul junior gelombang i

Modul Pelatihan Junior Programming 95

5. Jika seluruh nama telah dibandingkan, tampilkan hasil perhitungan (output)

Mengekspresikan cara penyelesaian melalui FlowChart :

Gambar 5.1 Penyelesaian Program dengan FlowChart

d. Pengkodean, Uji Coba dan Pembuatan Dokumentasi

Setelah membentuk algoritma, maka proses penulisan program dapat dimulai.

Menggunakan algoritma sebagai pedoman, maka kode program dapat ditulis sesuai

bahasa pemrograman yang dipilih. Setelah menyelesaikan seluruh kode program,

langkah selanjutnya yaitu menguji program tersebut apakah telah berfungsi sesuai

tujuannya untuk memberikan suatu solusi untuk menyelesaikan suatu masalah.

Bilamana terjadi kesalahan – kesalahan logika atas program, disebut juga sebagai bugs,

maka kita perlu untuk mengkaji ulang rumusan/algoritma yang telah dibuat, kemudian

memperbaiki implementasi kode program yang mungkin keliru.

Proses ini disebut dengan debugging. Terdapat dua tipe kesalahan (errors) yang

akan dihadapi seorang programmer. Yang pertama adalah compile-time error, dan

yang kedua adalah runtime error. Compile-time errors muncul jika terdapat kesalahan

penulisan kode program. Compiler akan mendeteksi kesalahan yang terjadi sehingga

kode tersebut tidak akan bisa dikompilasi. Terlupakannya penulisan semi-colon (;) pada

akhir sebuah pernyataan program atau kesalahan ejaan pada beberapa perintah dapat

disebut juga sebagai compile–time error.

Compiler tidaklah sempurna sehingga tidak dapat mengidentifikasi seluruh

Page 100: Modul junior gelombang i

Modul Pelatihan Junior Programming 96

kemungkinan kesalahan pada waktu kompilasi. Umumnya kesalahan yang terjadi

adalah kesalahan logika seperti perulangan tanpa akhir. Tipe kesalahan ini disebut

dengan runtime error.

Sebagai contoh, penulisan kode pada program terlihat tanpa kesalahan, namun

pada saat anda menelusuri struktur logika kode tersebut, bagian yang sama pada kode

tereksekusi berulang–ulang tanpa akhir. Pada kasus tersebut compiler tidak cukup

cerdas untuk menangkap kesalahan tipe ini pada saat proses kompilasi. Sehingga saat

program dijalankan, aplikasi atau bahkan keseluruhan komputer mengalami hang

karena mengalami proses perulangan yang tidak berakhir. Contoh lain dari run-time

error adalah perhitungan atas nilai yang salah, kesalahan penetapan kondisi dan lain

sebagainya.

Untuk memudahkan dalam memeriksa suatu kesalahan suatu program ataupun

memahami jalannya program, kita juga perlu membuat suatu dokumentasi dari

program yang dibuat. Dokumentasi tersebut berisi informasi mulai dari tujuan dan

fungsi program, algoritma, serta cara penggunaannya.

5.2 Pengenalan Bahasa JAVA

5.2.1 Sejarah Singkat

Pada 1991, sekelompok insinyur Sun dipimpin oleh Patrick Naughton dan James

Gosling ingin merancang bahasa komputer untuk perangkat konsumer seperti cable TV

Box. Dikarenakan perangkat tersebut tidak memiliki banyak memori, bahasa harus

berukuran kecil dan mengandung kode yang liat. Juga karena manufaktur- manufaktur

berbeda memilih processor yang berbeda pula, maka bahasa harus bebas dari

manufaktur manapun. Proyek diberi nama kode ”Green”.

Kebutuhan untuk fleksibilitas, kecil, liat dan kode yang netral terhadap platform

mengantar tim mempelajari implementasi Pascal yang pernah dicoba. Niklaus Wirth,

pencipta bahasa Pascal telah merancang bahasa portabel yang menghasilkan

intermediate code untuk mesin hipotesis. Mesin ini sering disebut dengan mesin maya

(virtual machine). Kode ini kemudian dapat digunakan di sembarang mesin yang

memiliki interpreter. Proyek Green menggunakan mesin maya untuk mengatasi isu

utama tentang netral terhadap arsitektur mesin.

Page 101: Modul junior gelombang i

Modul Pelatihan Junior Programming 97

Karena orang–orang di proyek Green berbasis C++ dan bukan Pascal maka

kebanyakan sintaks diambil dari C++, serta mengadopsi orientasi objek dan bukan

prosedural. Mulanya bahasa yang diciptakan diberi nama ”Oak” oleh James Gosling

yang mendapat inspirasi dari sebuah pohon yang berada pada seberang kantornya,

namun dikarenakan nama Oak sendiri merupakan nama bahasa pemrograman yang

telah ada sebelumnya, kemudian SUN menggantinya dengan JAVA. Nama JAVA sendiri

terinspirasi pada saat mereka sedang menikmati secangkir kopi di sebuah kedai kopi

yang kemudian dengan tidak sengaja salah satu dari mereka menyebutkan kata JAVA

yang mengandung arti asal bijih kopi. Akhirnya mereka sepakat untuk memberikan

nama bahasa pemrograman tersebut dengan nama Java.

Produk pertama proyek Green adalah Star 7 (*7), sebuah kendali jarak jauh

yang sangat cerdas. Dikarenakan pasar masih belum tertarik dengan produk konsumer

cerdas maka proyek Green harus menemukan pasar lain dari teknologi yang

diciptakan. Pada saat yang sama, implementasi WWW dan Internet sedang mengalami

perkembangan pesat. Di lain pihak, anggota dari proyek Green juga menyadari bahwa

Java dapat digunakan pada pemrograman internet, sehingga penerapan selanjutnya

mengarah menjadi teknologi yang berperan di web.

Java telah mengakomodasi hampir seluruh fitur penting bahasa–bahasa pemrograman

yang ada semenjak perkembangan komputasi modern manusia:

1. Dari SIMULA, bahasa pada tahun 65-an, bahasa yang paling mempengaruhi Java

sekaligus C++. Dari bahasa ini diadopsi bentukan–bentukan dasar dari

pemrograman berorientasi objek.

2. Dari LISP – bahasa tahun 55-an. Diadopsi fasilitas garbage collection, serta

kemampuan untuk meniru generic list processing, meski fasilitas ini jarang yang

memanfaatkannya.

3. Dari Algol – bahasa pada tahun 60-an, diambil struktur kendali yang dimilikinya.

4. Dari C++, diadopsi sintaks,s ebagian semantiks dan exception handling.

5. Dari bahasa Ada, diambil strongly type, dan exception handling.

6. Dari Objective C, diambil fasilitas interface.

7. Dari bahasa SmallTalk, diambil pendekatan single-root class hiérarchie, dimana

object adalah satu kesatuan hirarki pewarisan.

8. Dari bahasa Eiffel, fasilitas assertion yang mulai diterapkan di sebagian JDK

Page 102: Modul junior gelombang i

Modul Pelatihan Junior Programming 98

5.2.2 Fitur Bahasa Java

5.2.2.1 Java Virtual Machine (JVM)

JVM adalah sebuah mesin imajiner (maya) yang bekerja dengan menyerupai

aplikasi pada sebuah mesin nyata. JVM menyediakan spesifikasi hardware dan

platform dimana kompilasi kode Java terjadi. Spesifikasi inilah yang membuat aplikasi

berbasis Java menjadi bebas dari platform manapun karena proses kompilasi

diselesaikan oleh JVM.

Aplikasi program Java diciptakan dengan file teks berekstensi .java. Program ini

dikompilasi menghasilkan satu berkas bytecode berekstensi .class atau lebih. Bytecode

adalah serangkaian instruksi serupa instruksi kode mesin. Perbedaannya adalah kode

mesin harus dijalankan pada sistem komputer dimana kompilasi ditujukan, sementara

bytecode berjalan pada java interpreter yang tersedia di semua platform sistem

komputer dan sistem operasi.

5.2.2.2 Garbage Collection

Banyak bahasa pemrogaman lain yang mengijinkan seorang programmer

mengalokasikan memori pada saat dijalankan. Namun, setelah menggunakan alokasi

memori tersebut, harus terdapat cara untuk menempatkan kembali blok memori

tersebut supaya program lain dapat menggunakannya. Dalam C, C++ dan bahasa

lainnya, adalah programmer yang mutlak bertanggung jawab akan hal ini. Hal ini dapat

menyulitkan bilamana programmer tersebut alpa untuk mengembalikan blok memori

sehingga menyebabkan situasi yang dikenal dengan nama memory leaks.

Program Java melakukan garbage collection yang berarti program tidak perlu

menghapus sendiri objek–objek yang tidak digunakan lagi. Fasilitas ini mengurangi

beban pengelolaan memori oleh programmer dan mengurangi atau mengeliminasi

sumber kesalahan terbesar yang terdapat pada bahasa yang memungkinkan alokasi

dinamis.

5.2.2.3 Code Security

Code Security terimplementasi pada Java melalui penggunaan Java Runtime

Page 103: Modul junior gelombang i

Modul Pelatihan Junior Programming 99

Environment (JRE). Java menggunakan model pengamanan 3 lapis untuk melindungi

sistem dari untrusted Java Code.

1. Lapis Pertama, class-loader menangani pemuatan kelas Java ke runtime interpreter.

Proses ini menyediakan pengamanan dengan memisahkan kelas– kelas yang

berasal dari local disk dengan kelas–kelas yang diambil dari jaringan. Hal ini

membatasi aplikasi Trojan karena kelas–kelas yang berasal dari local disk yang

dimuat terlebih dahulu.

2. Lapis Kedua, bytecode verifier membaca bytecode sebelum dijalankan dan

menjamin bytecode memenuhi aturan–aturan dasar bahasa Java.

3. Lapis Ketiga, manajemen keamanan menangani keamanan tingkat aplikasi dengan

mengendalikan apakah program berhak mengakses sumber daya seperti sistem

file, port jaringan, proses eksternal dan sistem windowing.

Setelah seluruh proses tersebut selesai dijalankan, barulah kode program di eksekusi.

Java juga menyediakan beragam teknik pengamanan lain :

1. Bahasa dirancang untuk mempersulit eksekusi kode perusak. Peniadaan pointer

merupakan langkah besar pengamanan. Java tidak mengenal operasi pointer. Di

tangan programmer handal, operasi pointer merupakan hal yang luar biasa untuk

optimasi dan pembuatan program yang efisien serta mengagumkan. Namun mode

ini dapat menjadi petaka di hadapan programmer jahat. Pointer merupakan sarana

luar biasa untuk pengaksesan tak diotorisasi. Dengan peniadaan operasi pointer,

Java dapat menjadi bahasa yang lebih aman.

2. Java memiliki beberapa pengaman terhadap applet. Untuk mencegah program

bertindak mengganggu media penyimpanan, maka applet tidak diperbolehkan

melakukan open, read ataupun write terhadap berkas secara sembarangan. Karena

Java applet dapat membuka jendela browser yang baru, maka jendela mempunyai

logo Java dan teks identifikasi terhadap jendela yang dibuka. Hal ini mencegah

jendela pop-up menipu sebagai permintaan keterangan username dan password.

5.2.2 Fase-fase Pemrograman Java

Page 104: Modul junior gelombang i

Modul Pelatihan Junior Programming 100

Gambar dibawah ini menjelaskan aliran proses kompilasi dan eksekusi sebuah program

Java :

Gambar 5.2 Aliran Proses Kompilasi pada Program Java

Langkah pertama dalam pembuatan sebuah program berbasis Java adalah

menuliskan kode program pada text editor. Contoh text editor yang dapat digunakan

antara lain : notepad, vi, emacs dan lain sebagainya. Kode program yang dibuat

kemudian tersimpan dalam sebuah berkas berekstensi .java. Setelah membuat dan

menyimpan kode program, kompilasi file yang berisi kode program tersebut dengan

menggunakan Java Compiler. Hasil dari kompilasi berupa berkas bytecode dengan

ekstensi .class. Berkas yang mengandung bytecode tersebut kemudian akan

dikonversikan oleh Java Interpreter menjadi bahasa mesin sesuai dengan jenis dan

platform yang digunakan.

Tabel 5.1 Proses menulis, dan kompilasi, menjalankan Program Java

Proses Tool Hasil

Menulis kode program Text Editor Berkas berekstensi .java

Kompilasi program Java Compiller Berkas berekstensi .class

Menjalankan program Java Interpreter Output

5.3 Lingkup Pemrograman Java

Pada bagian ini, akan dibahas tentang bagaimana menulis, mengkompilasi dan

menjalankan program Java. Terdapat dua cara dalam melakukannya, yang pertama

menggunakan console dan text editor. Sedangkan cara kedua adalah

dengan menggunakan NetBeans yang merupakan Integrated Development

Environment atau yang disebut IDE. Pada akhir pembahasan, diharapkan dapat:

1. Membuat program Java menggunakan text editor dan console dalam Linux

(Ubuntu Dapper)

2. Membedakan antara syntax-errors dan runtime-errors

Page 105: Modul junior gelombang i

Modul Pelatihan Junior Programming 101

3. Membuat program Java menggunakan NetBeans

5.3.1 Program pertama Java

public class Hello {

}

/**

* My first java program

*/

public static void main(String[] args) {

//Menampilkan kata "Hello world" dilayar System.out.println("Hello

world!");

}

}

5.3.2 Menggunakan Text Editor

Langkah 1: Memulai Text Editor

Untuk memulai text editor di Linux , klik pada Applications->Accessories->Text Editor.

Gambar 5.3 Memulai Text Editor

Langkah 2: Membuka Terminal

Untuk membuka terminal di Linux, klik pada Applications-> Accessories-> Terminal.

Gambar 5.4 Membuka Terinal

Langkah 3: Tulislah listing program Java Anda dalam text editor

Page 106: Modul junior gelombang i

Modul Pelatihan Junior Programming 102

Gambar 5,5 Memulai menulis program

Langkah 4: Simpanlah program Java Anda

Program ini akan disimpan dalam file yang bernama ''Hello.java'', dan disimpan dalam

sebuah folder yang bernama MYJAVAPROGRAMS. Untuk membuka Save dialog box,

klik pada File menu yang terdapat pada menubar dan kemudian klik save. Setelah

melakukan instruksi tersebut, dialog box akan tampil seperti gambar dibawah ini.

Gambar 5.6 Proses simpan dokumen kode program

Sekarang, dalam textbox Selection, ketiklah nama file dari program Anda, yaitu

''Hello.java'', kemudian klik pada tombol SAVE. Sekarang Anda telah menyimpan file

Anda, ingatlah cara bagaimana nama frame dapat berubah dari ''Untitled Document 1

(modified) – gedit'' menjadi "Hello.java (~/MYJAVAPROGRAMS) – gedit". Jika Anda

ingin melakukan perubahan pada file Anda, Anda hanya perlu mengeditnya, kemudian

menyimpannya kembali dengan mengklik pada File->Save.

Page 107: Modul junior gelombang i

Modul Pelatihan Junior Programming 103

Langkah 5: Mengkompilasi program Anda

Langkah berikut ini adalah mengkompilasi program Anda. Masuklah ke Terminal

Window yang telah kita buka sebelumnya. Ketika Anda membuka terminal window,

terminal tersebut menampilkan jendela yang disebut sebagai home folder Anda. Untuk

melihat isi dari folder tersebut, ketik ls dan kemudian tekan ENTER. Apa yang akan

Anda temukan adalah daftar file-file dan folder di dalamnya. Disinilah Anda dapat

melihat folder dengan nama "MYJAVAPROGRAMS" yang telah kita buat sebelumnya,

dan merupakan tempat dimana kita menyimpan program Hello.java kita. Kemudian

masuklah ke dalam direktori tersebut. Untuk masuk ke dalam sebuah direktori,

ketiklah perintah : cd [directory name]. Perintah ''cd'' digunakan untuk merubah

direktori. Dalam hal ini, nama dari direktori kita adalah MYJAVAPROGRAM, maka Anda

harus mengetik : cd MYJAVAPROGRAMS.

Untuk mengkompilasi program Java, gunakanlah perintah : javac [filename].

Dalam hal ini, Anda mengetikan perintah : javac Hello.Java.

Gambar 5.7 Proses Kompilasi Kode Program

Selama pengkompilasian, javac menambah file ke dalam disk yang disebut

[filename].class, atau dalam hal ini, Hello.class, yang merupakan kode sebenarnya.

Langkah 6 : Menjalankan Program

Selama proses pengkompilasian, javac menambah file baru kedalam disk yang disebut

[filename].class, dalam hal ini, Hello.class, yang merupakan kode sebenarnya saat ini,

dengan perkiraan tidak ada permasalahan pada saat proses compile (kita akan

menyelidiki dan membahas permasalahan yang ditemukan selama proses compile,

pada bagian berikutnya), berarti telah siap untuk menjalankan program Anda.

Untuk menjalankan program Java Anda, dengan mengetikkan perintah : java

[filename without the extension], maka dalam hal ini, Anda mengetikkan perintah :

Page 108: Modul junior gelombang i

Modul Pelatihan Junior Programming 104

java Hello.

Sekarang Anda dapat melihat di layar bahwa Anda telah menjalankan program

Java pertama Anda, yang menampilkan pesan, ''Hello world!''.

5.4 Errors

Apa yang telah ditunjukan sejauh ini adalah program Java dimana kita tidak

menemukan berbagai masalah dalam proses kompilasi maupun pada saat

menjalankannya. Bagaimanapun juga, hal ini tidak selalu terjadi. Seperti yang telah kita

diskusikan pada bagian pertama dari latihan ini, biasanya kita juga akan menemukan

permasalahan selama proses berlangsung.

Seperti yang telah didiskusikan sebelumnya, ada 2 macam error. Pertama adalah

compile-time error atau yang disebut juga sebagai syntax error. Kedua adalah runtime

errors.

5.4.1 Syntax Errors

Syntax errors biasanya terjadi karena kesalahan penulisan. Mungkin Anda

kekurangan sebuah perintah di Java atau lupa untuk menulis tanda titik-koma pada

akhir pernyataan. Java mencoba untuk mengisolasi error tersebut dengan cara

menunjukkan baris dari kode dan terlebih dahulu menunjuk karakter yang salah dalam

baris tersebut. Bagaimanapun juga, error belum tentu berada pada titik yang ditunjuk.

Kesalahan umum lainnya adalah dalam kapitalisasi, ejaan, penggunaan dari karakter

khusus yang tidak benar , dan penghilangan dari pemberian tanda

baca yang sebenarnya.

5.4.2 Run-time Errors

Run-time error merupakan error yang tidak akan ditampilkan sampai Anda

menjalankan program Anda. Bahkan program yang dikompilasi dengan sukses dapat

menampilkan jawaban yang salah jika programmer belum berpikir sampai struktur dan

proses logis dari program tersebut.

Page 109: Modul junior gelombang i

Modul Pelatihan Junior Programming 105

BAB 6. DOKUMEN KODE PROGRAM

6.1 Tentang Dokumentasi

Salah satu hal yang paling penting ketika seorang programmer melakukan

pengembangan aplikasi program adalah dokumentasi. Pendokumentasian kode

mungkin membosankan, tetapi akan menghidari pemborosan waktu di masa datang.

Dalam sebuah istilah dikatakan bahwa “Jika anda tidak dapat membaca kode anda

sekarang maka anda pasti tidak akan dapat memahaminya setahun mendatang”.

Cara paling sederhana untuk mendokumentasikan kode anda adalah dengan

menggunakan variabel komentar sendiri dibandingkan memberikan nama macam-

macam terhadap variabel anda seperti x, xl dan t, biarkan variabel anda

mendeskripsikan tujuannya sendiri.

Karena program yang telah selesai dibuat belum tentu dapat langsung sempurna,

sesuai dengan yang diperlukan oleh penggunanya. Perlu adanya :

Pengembangan untuk dapat memenuhi keperluan penggunanya.

Terkadang program harus ada perbaikan, jika ternyata pada saat digunakan

ditemukan kesalahan.

Dokumentasi juga berguna untuk menginformasikan tentang proses yang ada

dalam program, sehingga jika ada pertanyaan tentang program yang dibuat memiliki

kemampuan apa saja, kita dapat mengetahui atau menjelaskan berdasarkan

dokumentasi.

Dokumentasi program sangat diperlukan oleh pemilik aplikasi, jika ingin

mengembangkan aplikasinya bukan oleh pengembang yang sama. Pengembang lain

yang diserahi tugas untuk mengembangkan aplikasi dapat dengan cepat mempelajari

dari dokumentasi tersebut.

6.2 Macam dokumentasi program

Macam dokumentasi program adalah sebagai berikut:

Page 110: Modul junior gelombang i

Modul Pelatihan Junior Programming 106

1) Dokumentasi spesifikasi program

2) Dokumentasi teknis program

3) Dokumentasi penggunaan program

6.2.1 Dokumentasi spesifikasi program

Dokumentasi spesifikasi program seharusnya sudah ada sebelum program dibuat.

Dibuat oleh perancang aplikasi (sering kali dibuat oleh analis sistem). Berdasarkan

dokumentasi inilah program dibuat. Dokumentasi spesifikasi program ini dibuat untuk

memberikan panduan tentang logika program yang harus dibuat. Harus ada proses apa

saja, bagaimana flow prosesnya. Pemrogram dapat melakukan coding dengan lebih

mudah.

Akan tetapi, sering terjadi, dokumentasi spesifikasi program tidak dibuatkan oleh

perancang aplikasinya. Perancang aplikasi hanya menjelaskan tentang program,

spesifikasi program yang ada adalah spesifikasi secara lisan. Akibatnya adalah

seringkali program tidak sesuai dengan yang diinginkan, karena pemrogram bekerja

dengan mengandalkan ingatannya, bukan berdasarkan panduan dokumen spesifikasi.

Ketiadaan dokumentasi bisa menyebabkan komunikasi antara perancang aplikasi

dan pemrogram menjadi tidak baik, karena bisa jadi akan ada perselisihan akibat

ketidakjelasan akan apa yang dikerjakannya. Dokumentasi spesifikasi program harus

ada, walaupun secara global. Setidaknya ada informasi tentang poin-poin yang harus

ada dalam program, kemudian bagaimana urutan prosesnya. Dokumentasi spesifikasi

program menjadi pegangan bersama antara perancang, pemrogram, dan penguji.

Untuk memastikan bahwa program yang dibuat sudah sesuai dokumentasi.

6.2.2 Dokumentasi Teknis Program

Dokumentasi kode program, merupakan dokumentasi yang harus ada dalam program,

untuk memberikan penjelasan kepada setiap baris atau pun blok perintah dalam

program. Dokumentasi program diperlukan bagi programmer itu sendiri, untuk dapat

menelusuri logika program. Karena biasanya, pemrogram akan lupa akan alur

programnya sendiri. Apalagi jika sudah lama sudah ditinggalkan, karena mengerjakan

pekerjaan lain. Pada saat harus memperbaiki atau menyempurnakan, programmer

Page 111: Modul junior gelombang i

Modul Pelatihan Junior Programming 107

sering harus mempelajari terlebih dahulu alur programnya sendiri, baru kemudian baru

bisa melakukan modifikasi sesuai dengan yang diinginkan. Dari sisi lain, dokumentasi

juga diperlukan untuk memudahkan untuk memvalidasi apakah program yang telah

dikembangkan, sudah sesuai dengan yang dispesifikasikan atau belum. Proses validasi

ini akan dilakukan oleh tim penguji (validator).

Dokumentasi kode program merupakan pelengkap dokumentasi spesifikasi,

karena menjelaskan bagaimana dari spesifikasi diterjemahkan ke dalam program. Jika

dokumentasi spesifikasi tidak ada maka dokumentasi kode program akan menjadi

dokumentasi yang sangat berharga, karena bukan menjadi dokumen pelengkap tetapi

menjadi dokumentasi utama. Dokumentasi dalam kode program umumnya dilakukan

dengan menuliskan baris-baris komentar dalam kode sumber programnya. Isi dari

dokumentasi kode program, setidaknya terdiri atas:

1. langkah-langkah dalam program untuk menyelesaikan masalah

2. komentar dituliskan pada setiap awal modul atau fungsi,

3. jika mungkin komentar ditulis pada setiap blok program, jika tidak maka ditulis

pada blok-blok yang penting saja. Lebih baik lagi jika setiap baris ada

komentarnya.

4. Informasi tentang siapa yang membuat, kapan pertamakali dibuat, kapan

terakhir diperbaiki, jika mungkin informasi perubahan dari waktu ke waktu

Cara menuliskan komentar harus mengikut kepada cara penulisan yang baku. Jika

menggunakan bahasa pemrograman Java, maka dapat menggunakan format yang

telah ditetapkan oleh javadoc.

6.2.3 Dokumentasi Penggunaan Program

Dokumentasi penggunaan program sangat diperlukan untuk dapat memberitahu

kepada pengguna bagaimana cara menggunakan program yang telah dibuat. Jika tidak

dibuatkan cara menggunakan programnya, dikhawatirkan program menjadi tidak

dapat dipakai, apalagi jika programnya kurang interaktif. Banyak program yang dibuat,

cara pemakaiannya sesuai dengan alur logika pemrogramnya. Bukan berdasarkan alur

logika pengguna program. Karenanya harus dibuatkan dokumentasi cara menggunakan

program, agar pengguna tahu bagaimana cara menggunakan dengan benar.

Page 112: Modul junior gelombang i

Modul Pelatihan Junior Programming 108

6.3 Tools

Jika kita hanya memiliki dokumentasi kode program, maka kita dapat

mengambil dokumentasi dari kode program tersebut untuk menjadi seolah-olah

dokumentasi spesifikasi program. Kita harus menggunakan tools untuk melakukan

pengambilan dokumentasi kode program dengan menggunakan tools.

Agar dokumentasi dalam kode program dapat diambil oleh tools yang akan

digunakan, maka cara penulisan dokumentasi harus mengikuti standar tertentu. Jika

kita menggunakan Java, maka kita dapat menggunakan javadoc untuk mengambil

dokumentasinya. Untuk bahasa pemrograman lain ada juga toolsnya. Masing-masing

memiliki tools yang membantu untuk membuatkan dokumentasi dari dokumentasi

kode program. Beberapa tools yang umum digunakan adalah JavaDoc, DelphiDoc,

DoxyGen.

6.4 Membuat Dokumentasi Fungsi dan Prosedur pada Modul Program

Saat ini pemrogram dapat menggunakan beberapa teknik untuk membuat modul

program utamanya pada pemrograman terstruktur, semua teknik tersebut pemrogram

mencoba untuk menunjukkan kebutuhan input file dan data, kebutuhan output file

dan data, kebutuhan pemrosesan. Atau singkatnya, pemrogram menunjukkan input,

output, dan pemrosesan.

Pada modul pelatihan ini akan direkomendasikan untuk menggunakan Diagram

Hierarchy plus Input-Process-Output (HIPO) atau disingkat IPO yang dikembangkan dan

dipromosikan oleh IBM. Teknik ini sangat luas digunakan pada dokumentasi program

Terstruktur, dan merupakan pilihan terbaik untuk standar dunia industri.

Berikut adalah contoh dari Worksheet dokumentasi modul program dengan

menggunakan Diagram HIPO, sebagai berikut:

Page 113: Modul junior gelombang i

Modul Pelatihan Junior Programming 109

HIPO WORKSHEET

Designer: ________________ Author: _____________________ Date: __________________ Page: ____________of _____________ Diagram ID: ______________ Modul Name: _______________________________________ Description: ____________________

Input Proses Output

Extended Description Extended Description

Notes Notes Ref Ref

Page 114: Modul junior gelombang i

Modul Pelatihan Junior Programming 110

Untuk menciptakan diagram HIPO, terdapat Lima langkah dasar sebagai

berikut:

1. Pertama, Selesaikan format heading,

2. Kedua, Catat kebutuhan Input, Output, dan pemrosesan pada kota input,

output, dan proses,

3. Ketiga dan keempat, indikasikan fungsi dan prosedur modul panggilan dan

modul pemanggil,

4. Kelima, gunakan extended description,

Langkah Ke-1: Menyelesaikan heading

Pada heading dari format HIPO, catat nama pemrogram, nama program, dan

tanggal/date. Jika format yang dibuat memiliki ruang nomor halaman sebaiknya

dikosongkan karena nomor modul akan digunakan untuk menjaga urutan Diagram

HIPO. Maka, untuk nomor modul gunakan nomor yang sudah dibakukan

sebelumnya, Misalkan nomor modul yang mengikuti standar VTOC yaitu kata pisah

yang menggunakan hypen. Maka jika kita memiliki nama modul seperti EDIT

INVENTORY TRANSAKSI menjadi MODUL-INVENTORY-TRANSAKSI.

Langkah Ke-2: Mencatat kebutuhan input, output, dan pemrosesan

Bila pembacaan lengkap, maka anda memulai dokumentasikan modul. Pencatatan

dapat dilakukan oleh pemrogram bisa diawalai dari kebutuhan Input/Output (I/O)

atau memulai dengan langkah pemrosesan tergantung dengan kebutuhan dan

keadaan. Dalam modul level-tinggi, bila kebutuhan I/O jelas, maka anda mungkin

pertama akan mencatat kebutuhan Input dan Output terlebih dahulu baru

selanjutnya membuat daftar pemrosesan yang dibutuhkan. Dalam modul level-

rendah, kebutuhan input dan output biasanya tidak begitu jelas, maka langkah

baiknya jika pemrogram mulai dengan membuat daftar langkah pemrosesan.

Kebutuhan I/O

Dalam sebiuah modul top-level, pemrogram dapat memulai dengan mencatat

file input dan output, karena pemrogram sudah tahu persis tentang alur sistem

ini. Misalkan, untuk program edit-inventory-transction, file input adalah kartu

inventory transaction, dan file tape part-number record. Satu-satunya file

output adalah listing dari inventory transaction.

Page 115: Modul junior gelombang i

Modul Pelatihan Junior Programming 111

Kebutuhan Pemrosesan

Dalam hal mencatat langkah-langkah pemrosesan, pemrogram dapat

menggunakan bahasa yang mudah dipahami seperti bahasa Indonesia ataupun

bahasa sehari-hari sekalipun. Kecuali pada perintah atau sintaks yang native

dari bahasa pemrograman tertentu sebaiknya menggunakan huruf kapital

seperti DO, UNTIL, IF, THEN, ELSE, dan sebagainya.

Langkah Ke-3: Menuliskan nomor modul panggilan

Secara teknis pemrograman, nomor modul akan dipanggil oleh modul yang tercatat

pada kotak pemrosesan. Pada kotak pemrosesan, pemrogram dapat

mengkondisikan modul-modul mana saja yang dapat dipanggil berdasarkan nomor

modul yang ada. Salah satu alasan utama mengapa kita perlu untuk menuliskan

nomor modul tersebut adalah untuk mempermudah dalam hal pemanggilan dan

pencarian terhadap modul tertentu.

Langkah Ke-4: Mendaftar modul pemanggil

Sama halnya dengan langkah Ke-3, pada tahapan ini pemrogram harus dapat

melakukan inisiasi dan mengkondisikan semua modul-modul yang berperan

sebagai modul pemanggil terhadap modul-modul yang lainnya. Disini peranan

pemrogram untuk merincikan peranan fungsi dan prosedur yang ada pada masing-

masing modul sehingga kejelasan peranan fungsi dan prosedur dapat

tergambarkan dengan baik.

Langkah Ke-5: Menggunakan extended description

Bila kebutuhan sebuah modul cukup kompleks, maka format extended description

akan sangat membantu pemrogram. Format extended description ini terdiri dari

daerah untuk mencatat, dan daerah untuk nomor acuan. Oleh kerena itu

pemrogram dapat menggunakanannya untuk segala sesuatu yang diinginkan sesuai

dengan kebutuhan pemrosesan.

Berikut ini adalah contoh dari penerapan dokumentasi modul

pemrograman, sebagai berikut:

Page 116: Modul junior gelombang i

Modul Pelatihan Junior Programming 112

1. DO 280-SEARCH-PART-NUMBER-TABEL

2. IF not FOUND Move ‘N’ to VALID-TRAN-SW Move ‘*’ to mark error field in ITL-LINE

Valid is: ITR-UPDATE-CODE Must be ‘C’ 3 ITR-CUST-ORDER-NO Any data 3 ITR-ORDER-DATE Numeric with ITR-ORDER-DAY day less than 32 3 ITR-ORDER-MONTH month less then 13 ITR-ORDER-YEAR year=current year or Current year -1

HIPO WORKSHEET

Designer: P.No. 111 Author: Alexander Curtis Date: 11/11/2011 Page: 1 of 5 Diagram ID: 234567 Modul Name: EDIT-CODE-1-FIELDS Description: ____________________________

Input Proses Output

Extended Description Extended Description

Notes Notes Ref Ref

FOUND-SW

ITR-RECORD

VALID-TRAN

VALID-TRAN-SW

ITL-LINE

Page 117: Modul junior gelombang i

Modul Pelatihan Junior Programming 113

BAB 7 . MENGOPERASIKAN APLIKASI BASIS DATA

7.1 Aplikasi Database pada Java

Java menyediakan standard API untuk mengakses database yang disebut JDBC

API. Dengan menggunakan ini, para pengembang memungkinkan dapat mengakses

database tanpa memperdulikan vendornya. Para vendor menyediakan implementasi

untuk abstract interfaces yang dijelaskan didalam API. penyediaan tersebut sama

dengan set dari kemampuan koneksi untuk para pengembang.

Berikut ini merupakan class kunci dari JDBC API :

java.sql.Connection – membuat sebuah koneksi dengan database.

Secara abstrak memberikan detail dari bagaimana cara untuk berkomunikasi

dengan database server.

java.sql.DriverManager – mengatur JDBC driver yang digunakan oleh

aplikasi. Pada hubungannya dengan proper driver URL dan proper

authentication, dapat menyediakan aplikasi dengan valid instances dari object

koneksi.

javax.sql.DataSource – memisahkan detail (URL, authentication details)

dari bagaimana untuk memperoleh sebuah koneksi ke database. Merupakan

method terbaru dan yang lebih disukai untuk obtaining Connection objects.

java.sql.Statement – menyediakan method untuk para pengembang

dalam mengeksekusi pernyataan SQL.

java.sql.ResultSet – menyediakan hasil dari sebuah pernyataan SQL.

Objects ini sering dikembalikan dari method yang terletak pada Statement

object.

Ada tujuh langkah dalam menggunakan JDBC:

1. Memuat driver

2. Mendefinisikan URL koneksi

3. Menetapkan koneksi

4. Menciptakan objek Statemen

Page 118: Modul junior gelombang i

Modul Pelatihan Junior Programming 114

5. Mengeksekusi query

6. Memroses hasil

7. Menutup koneksi

Memuat driver

Class.forName(“com.mysql.jdbc.Driver”);

Mendefinisikan URL koneksi

String url = “jdbc:mysql:3306//localhost:/nama_db”;

Menetapkan koneksi

koneksi = DriverManager.getConnection(url,”user”, “password”);

Menciptakan Statement

Statement statement = connection.createStatement();

Mengeksekusi Query

String query = "SELECT * FROM tabel";

ResultSet resultSet = statement.executeQuery(query);

Menutup Koneksi

connection.close();

7.2 Membuat Aplikasi Basis Data

1. Jalankan server MySQL jika belum.

Kalau anda menggunakan bundel AppServ, klik Start All Programs

AppServ Control Server by Service MySQL Start, seperti gambar berikut.

2. Buat database tokobuku

Buka aplikasi MySQL Command Line Client, lewat klik Start All Programs

AppServ MySQL Command Line Client

Masukkan password MySQL (mungkin diisi root)

tulis di prompt: create database tokobuku;

Page 119: Modul junior gelombang i

Modul Pelatihan Junior Programming 115

3. Buat tabel buku

Dari aplikasi MySQL Command Line Client, tulis perintah SQL:

use tokobuku;

create table buku (

id char(3),

pengarang varchar(25),

judul varchar(75),

harga float,

terjual smallint,

stok int

);

4. Mengisi 3 buah record ke tabel buku

Dari aplikasi MySQL Command Line Client, tulis perintah SQL:

o insert into buku values('101', 'Afifa', 'Cara mudah belajar

Java', 35000,0, 15);

o insert into buku values('102', 'Aqila',

'Pemrograman Web dengan Servlet dan JSP', 50000,0, 10);

o insert into buku values('104', 'Budi',

'Tip dan Trik Web dengan Java', 45000,0, 12);

5. Ciptakan project web baru dengan NetBeans, namai dengan Jdbc.

6. Tambahkan library mysql-connector-java_x.x.x-bin.jar ke dalam CLASSPATH

aplikasi.

Dapat dilakukan dengan 2 cara:

a) Secara manual, kopikan librari tersebut ke dalam folder WEB-INF/lib.

b) Melalui Netbeans IDE:

Pada tab Projects, klik kanan pada Libraries, pilih Add JAR/Folder, dan pilih file

library yang akan ditambahkan. Ketika proses Build Project, file tadi akan

dikopikan ke folder WEB-INF/lib oleh Netbeans secara otomatis.

Menguji koneksi DriverManager dalam aplikasi Servlet 7. Buat link dalam file index.jsp:

<h4>Driver Manager</h4>

<a href="ServletDMConnection">Test Koneksi Driver Manager (Servlet)

</a> <br/>

<a href="jspDMConnection.jsp">Test Koneksi Driver Manager (JSP)</a>

<br/>

8. Pada node Source Packages, buat package dengan nama dm.

Page 120: Modul junior gelombang i

Modul Pelatihan Junior Programming 116

9. Pada node Source Packages dm, buat servlet dengan nama

ServletDMConnection, dan isikan kode berikut:

package dm;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.sql.*;

public class ServletDMConnection extends HttpServlet{

Connection theConnection;

private ServletConfig config;

public void init(ServletConfig config)throws ServletException{

this.config=config;

}

public void service (HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

HttpSession session = req.getSession(true);

res.setContentType("text/html");

String url = "jdbc:mysql://localhost/tokobuku";

PrintWriter out = res.getWriter();

out.println("<html><head><title>Daftar Buku</title>");

out.println("</head>");

out.println("<body style=\"text-align:center;\" bgColor=#ececec

text=#004000>");

out.println("<p style=\"font-size:20pt;\">Daftar Buku</P>");

out.println("<table border=\"1\" cellPadding=\"10\" width=\"75%\">");

out.println("<tr align=\"center\">");

out.println("<td>ID</td>");

out.println("<td>Judul</td>");

out.println("<td>Pengarang</td>");

out.println("<td>Harga</td>");

out.println("</tr>");

try{

Class.forName("com.mysql.jdbc.Driver").newInstance();

con = DriverManager.getConnection(url,"root","root");

Statement st=con.createStatement();

ResultSet rs=st.executeQuery("select * from buku");

while(rs.next())

{

out.println();

out.println("<tr>");

out.println("<td>" + rs.getString("id") + "</td>");

out.println("<td>" + rs.getString("judul") + "</td>");

out.println("<td>" + rs.getString("pengarang") + "</td>");

out.println("<td>" + rs.getString("harga") + "</td>");

out.println("</tr>");

}

rs.close();//Close the result set

st.close();//Close statement

con.close(); //Close database Connection

}catch(Exception e){

out.println(e.getMessage());//Print trapped error.

}

out.println("</table></p>");

out.println("</body></html>");

}

@Override

public void destroy(){

}

Page 121: Modul junior gelombang i

Modul Pelatihan Junior Programming 117

}

10. Buka file web.xml, pastikan file berisi konfigurasi berikut.

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<servlet>

<servlet-name>ServletDMConnection</servlet-name>

<servlet-class>dm.ServletDMConnection</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>ServletDMConnection</servlet-name>

<url-pattern>/ServletDMConnection</url-pattern>

</servlet-mapping>

<session-config>

<session-timeout>

30

</session-timeout>

</session-config>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

11. Jalankan aplikasi. Klik link: Test Koneksi Driver Manager (Servlet)

Menguji koneksi DriverManager dalam aplikasi JSP

12. Pada node Web Pages, buat file JSP dengan nama JspDMConnection.jsp

dengan kode seperti berikut.

<%@ page import="java.sql.*" %>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<%

String url = "jdbc:mysql://localhost/tokobuku";

Page 122: Modul junior gelombang i

Modul Pelatihan Junior Programming 118

Connection con = null;

Statement st = null;

ResultSet rs = null;

String id = null;

String pengarang = null;

String judul = null;

String harga = null;

%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-

8">

<title>Daftar Buku</title>

</head>

<body style="text-align:center;" bgColor=#ffff00 text=#0000ff>

<%

try{

Class.forName("com.mysql.jdbc.Driver").newInstance();

con = DriverManager.getConnection(url,"root","root");

st = con.createStatement();

rs =st.executeQuery("select * from buku");

%>

<p style="font-size:20pt;">Daftar Buku</p>

<table border="1" cellPadding="10" width="75%">

<tr>

<td>ID</td>

<td>Judul</td>

<td>Pengarang</td>

<td>Harga</td>

</tr>

<%

while(rs.next()){

id = rs.getString("id");

judul = rs.getString("judul");

pengarang = rs.getString("pengarang");

harga = rs.getString("harga");

%>

<tr style="text-align:left;">

<td><%=id%></td>

<td><%=judul%></td>

<td><%=pengarang%></td>

<td><%=harga%></td>

</tr>

<%

}

rs.close();//Close the result set

st.close();//Close statement

con.close(); //Close database Connection

}catch(Exception e){

out.println(e.getMessage());//Print trapped error.

}

%>

</table>

</body>

</html>

13. Jalankan aplikasi. Klik link: Test Koneksi Driver Manager (JSP)

Page 123: Modul junior gelombang i

Modul Pelatihan Junior Programming 119

Menghapus record

14. Pada node Web Pages, buat file JSP dengan nama hapus.jsp dengan kode

seperti berikut.

<%@ page import="java.sql.*" %>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<%

String url = "jdbc:mysql://localhost/tokobuku";

Connection con = null;

Statement st = null;

int hasil = 0;

String sql = new String();

%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-

8">

<title>Hapus buku</title>

</head>

<body style="text-align:center;" bgColor=#ffff00 text=#0000ff>

<%try{

Class.forName("com.mysql.jdbc.Driver").newInstance();

con = DriverManager.getConnection(url,"root","root");

st = con.createStatement();

sql = "delete from buku where id = '" +

request.getParameter("id") + "'";

out.print(sql);

hasil = st.executeUpdate(sql);

if(hasil != 0) {

out.print("<br/>Berhasil menghapus");

} else {

out.print("<br/>Gagal menghapus");

}

st.close();//Close statement

con.close(); //Close database Connection

}catch(Exception e){

out.println(e.getMessage());//Print trapped error.

}

%>

</body>

</html>

15. Jalankan aplikasi. Tulis pada browser dengan url:

http://localhost:8080/Jdbc/hapus.jsp?id=101

Page 124: Modul junior gelombang i

Modul Pelatihan Junior Programming 120

7.3 Membuat Aplikasi dan Modul Basis Data

Pada modul ini akan dibahas pembuatan sebuah aplikasi sederhana

menggunakan Java yang menggunakan sistem basis data M SQL. Adapun Tabel yang

akan kita buat sekarang adalah tabel MAHASISWA, dimana tabel tersebut memiliki

beberapa kolom, yaitu NIM, NAMA, TANGGAL_LAHIR, JURUSAN dan ALAMAT.

7.3.1 Membuat Database

Sebelum membuat program sederhana ini, hal yang pertama perlu kita buat adalah

database yang akan kita gunakan. Misal kita akan membuat database UNIVERSITAS,

maka kita bisa menggunakan perintah :

CREATE DATABASE UNIVERSITAS;

Setelah membuat database, kita terlebih dahulu perlu membuat tabel MAHASISWA.

Kita dapat menggunakan perintah sebagai berikut untuk membuat tabel MAHASISWA.

CREATE TABLE MAHASISWA(

NIM VARCHAR(8) PRIMARY KEY,

NAMA VARCHAR(50) NOT NULL,

TANGGAL_LAHIR DATE NOT NULL,

JURUSAN VARCHAR(50) NOT NULL,

ALAMAT VARCHAR(500) NOT NULL

);

Sekarang kita sudah punya sebuah tabel dengan nama MAHASISWA. Saatnya kita

lanjutkan membuat project Java-nya menggunakan NetBeans IDE.

7.3.2 Membuat New Project

Sama seperti sebelumnya, untuk membuat sebuah project dalam NetBeans IDE kita

dapat membuatnya menggunakan menu File -> New Project. Setelah itu pilih kategori

Java dan pilih tipe project -nya Java Application.

Page 125: Modul junior gelombang i

Modul Pelatihan Junior Programming 121

Beri nama project dan jangan diceklis c eckbox Create Main Class. Hal ini dikarenakan

kita tidak memerlukan dahulu membuat sebuah Main Class.Setelah itu klik tombol

Finish, sekarang kita telah membuat project Java menggunakan NetBeans IDE.

7.3.3 Membuat Koneksi MySQL

Setelah membuat project, saatnya membuat koneksi ke database UNIVERSITAS yang telah kita

buat sebelumnya. Jadi hal yang pertama kitalakukan adalah menambah driver MySQ ke dalam

project yang telah kita buat. Caranya klik kanan bagian Libraries project yang telah kita buat

lalu pilih Add Library.

Page 126: Modul junior gelombang i

Modul Pelatihan Junior Programming 122

Setelah keluar dialog Add Library, pilih MySQL JDBC Driver lalu klik tombol Add Library

untuk menambahkan MySQL Driver kedalam project. Setelah menambahkan driver

MySQL, sekarang saatnya membuat sebuah kelas yang akan kita gunakan untuk

melakukan koneksi ke database MySQL. Tapi sebelum membuat sebuah kelas, pastikan

kita membuat package dulu,caranya klik kanan bagian Source project yang telah kita

buat lalu pilih Ne -> Other.

Setelah keluar dialog Ne File, pilih kategori Java dan jenis file Java Package. Klik Next untuk

melanjutkan membuat package.

Setelah itu beri nama packagenya, misal program .universitas, setelah itu klik Finish

untuk membuat package-nya. Setelah membuat package program .universitas,

sekarang kita buat sebuah kelas untuk melakukan koneksi ke MySQL. Caranya klik

kanan package program .universitas lalu pilih Next -> Other.

Page 127: Modul junior gelombang i

Modul Pelatihan Junior Programming 123

Pilih kategori Java dan tipe filenya Java Class, setelah itu klik tombol Next untuk

melanjutkan membuat sebuah kelas.

Sekarang, saatnya melakukan proses pengkodean. Pertama buat sebuah variabel static

yang bertipe java.sql.Connection, kita menggunakan static agar nanti aplikasi dapat

mengakses koneksi secara langsung tanpa harus membuat object KoneksiDatabase.

package program.universitas;

import java.sql.Connection;

public class KoneksiDatabase {

private static Connection koneksi;

}

Setelah itu buat sebuah metode static getKoneksi(), metode ini digunakan untuk

mendapatkan koneksi itu sendiri.

package program.universitas;

import java.sql.Connection;

public class KoneksiDatabase {

private static Connection koneksi;

public static Connection getKoneksi() { return koneksi;

}

}

Sekarang untuk mengambil koneksi kita dapat langsung menggunakan petintah

Page 128: Modul junior gelombang i

Modul Pelatihan Junior Programming 124

KoneksiDatabase.getKoneksi(), namun pastinya jika kita melakukan hal itu akan terjadi

error. Tentu karena pada kelas KoneksiDatabase tersebut kita belum membuat

koneksinya, jadi sebelum return koneksi, pada metode getKoneksi() seharusnya kita

cek dulu apakah koneksi-nya null, jika null, maka kita deklarasikan sebuah koneksi yang

baru.

package program.universitas;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class KoneksiDatabase { private static Connection koneksi;

public static Connection getKoneksi() {

// cek apakah koneksi null if (koneksi == null) {

try { String url = "jdbc:mysql://khannedy.server:3306/UNIVERSITAS";

String user = "echo"; String password = "xxxxx";

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

koneksi = DriverManager.getConnection(url, user,

password);

} catch (SQLException t) { System.out.println("Error Membuat

Koneksi");

}

} return koneksi;

}

}

7.3.4 Membuat Form Aplikasi

Pada program, kita tidak akan membuat program berbasis terminal (command line)

lagi, tapi kita akan membuat aplikasi berbasis GUI. Dalam java teknologi untuk

membuat program berbasis GUI disebut Java Swing. Sekarang untuk membuat sebuah

Form, kita harus membuat JFrame, caranya dengan klik kanan package program

universitas, lalu pilih New -> Other.

Page 129: Modul junior gelombang i

Modul Pelatihan Junior Programming 125

Pilih kategori Swing GUI Forms dan pilih tipe file JFrame Form. Lalu klik Next untuk

melanjutkan membuat Form.

Beri nama Form tersebut, misal dengan nama Form, dengan begitu maka NetBeans akan

membuatkan sebuah kelas dengan nama Form yang merupakan turunan dari kelas JFrame,

dimana kelas JFrame ini merupakan kelas Java Swing. Sekarang kita dapat melihat GUI builder

pada editor NetBeans dan disebelah kanannya terdapat Pallete yang merupakan komponen-

komponen GUI yang ada di Java danProperties yang merupakan editor atribut-atribut

komponen yang kita klik pada GUI Builder.

Untuk menambahkan komponen-komponen GUI lainnya, kita cukup mengklik dan

mendrag salah satu komponen yang ada dalam Pallete ke dalam Form. Misal kita klik

dan drag sebuah Label dari Pallete.

Page 130: Modul junior gelombang i

Modul Pelatihan Junior Programming 126

Untuk mengubah tulisan pada Label, kita dapat mengklik label teresbut, lalu lihat pada

bagian Properties. Ubah atribut text, misa menjadi NIM, Nama, Tanggal Lahir, Jurusan

dan Alamat. Setelah itu klik dan drag tiga buat Text Field yang ada dipallete ke Form,

gunakan Text Field untuk Nim, Nama dan Jurusan. Untuk Tanggal Lahir dan Alamat kita

tidak menggunakanText Field, hal ini dikarenakan Tanggal Lahir memerlukan inputan

berupa tanggal sedangkan Text Field hanya mendukung teks (string), sedangkan untuk

Alamat, biasanya isi alamat itu panjang, sehingga lebih tidak cocok menggunakan Text

Field, karena Text Field hanya mendukung satu baris. Dengan demikian, untuk Tanggal

Lahir kita akan menggunakan Formatted Field, tinggal kita klik dan drag Formatted

Field dari Palette ke dalam Form.

Dan untuk Alamat, gunakan komponen Text Area. Text Area hampir mirip dengan Text

Field, namun mendukung lebih dari satu baris. Untuk mengosongkan isi tulisan pada

NIM, Nama, Tanggal Lahir dan Jurusan, kosongkan atribut text pada setiap komponen

pada Properties-nya.

Page 131: Modul junior gelombang i

Modul Pelatihan Junior Programming 127

Setelah itu, sekarang saatnya kita mengubah setiap nama variabel komponenya, misal

untuk Text Field NIM kita beri nama variabelnya dengan nama inputNim, untuk Text

Field Nama dengan nama inputNama dan seterusnya, caranya dengan mengklik kanan

komponennya lalu pilih menu Change Variable Name. Untuk melihat seluruh nama

variabelnya, kita dapat melihatnya pada bagian Inspector di sebelah kiri bawah Form

NetBeans.

Page 132: Modul junior gelombang i

Modul Pelatihan Junior Programming 128

DAFTAR PUSTAKA

Java Education Network Indonesia. Pengenalan Pemrograman. Jardiknas. 2007.

Kadir, Abdul. Pengenalan Algoritma. Andi Publisher. 2013.

Khanedy, Eko. Membuat Aplikasi Sederhana dengan Java. Modul. 2010.

Kristanto, Andri. Algoritma dan Pemrograman dengan C++. Graha Ilmu. 2010.

Kusuma, YM. Algoritma Pemrograman C++ Dalam Ilustrasi. Jasakom. 2011.

Liem, Inggriani. Diktat Kuliah Dasar Pemrograman, Kelompok Keahlian Rekayasa

Perangkat Lunak dan Data, Institut Teknologi Bandung. 2007.

Ngoen, Thompson. Algoritma dan Struktur Data Pengurutan Dan Pencarian. Mitra

Wacana Media. 2011.

Rosa AS, dkk. Modul Pembelajaran Algoritma dan Pemrograman. Modul. 2010.

Siswanto. Algoritma dan Pemrograman Non Linear dengan Java. Graha Ilmu. 2011.

Sjukani, Moh. Struktur Data. Mitra Wacana Media. 2012.

Suarga. Algoritma dan Pemrograman. Andi Offset. 2012.

Sukamto, Rosa. Diktat Kuliah Algoritma dan Pemrograman I. Program Ilmu Komputer

Universitas Pendidikan Indonesia. 2010.