SlideShare une entreprise Scribd logo
1  sur  132
Télécharger pour lire hors ligne
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 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
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
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.
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
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.
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.
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?
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
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
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
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
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
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.
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
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.
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
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
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
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:
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.
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.
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
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--){
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
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
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
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 : truen');
end;
end.
int ketemu = 1;
if(ketemu == 1){
// proses
printf("nilai variabel
ketemu : truen");
}
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
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 :
truen");
} else{
// proses
printf("(else) nilai
variabel ketemu :
falsen");
}
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 :
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 : %dn", 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
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
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 }
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
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)
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 }
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)
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 BIASAn”);
for (b=0; b<3; k++)
for (k=0; k<3; k++)
printf(“x(%d) - %dn”,b,k,x(b) (k));
Modul Pelatihan Junior Programming 36
printf (“nnBENTUK MATRIKSn”);
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]);
}
}
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;
}
}
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<<"nnJumlahnya = "<<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<<"nnJumlahnya = "<<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<<"nnJumlahnya = "<<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:
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<<"nnJumlahnya = "<<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];
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<<"nnSetelah 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
.
.
…
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 pertaman";
masukan(dt1,b1,k1);
cout<<"nMatrik keduan";
masukan(dt2,b1,k1);
jumlah(dt1,dt2,dt3,b1,k1);
clrscr();
cout<<"nMatrik pertaman";
tampilkan(dt1,b1,k1);
cout<<"nMatrik keduan";
tampilkan(dt2,b1,k1);
cout<<"nMatrik hasil penjumlahann";
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.
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
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
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
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.
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;
}
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
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();
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;
}
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
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.
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
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.
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,
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.
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
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;
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
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i
Modul junior gelombang i

Contenu connexe

Tendances

Ebook jaringan komputer II (ccna2)
Ebook jaringan komputer II (ccna2)Ebook jaringan komputer II (ccna2)
Ebook jaringan komputer II (ccna2)Agung Tri Laksono
 
First Time Hacking (Bahasa Indonesia)
First Time Hacking (Bahasa Indonesia)First Time Hacking (Bahasa Indonesia)
First Time Hacking (Bahasa Indonesia)Ade Ismail Isnan
 
Permenpan No 80 Tahun 2012 tentang PEDOMAN TATA NASKAH DINAS INSTANSI PEMERINTAH
Permenpan No 80 Tahun 2012 tentang PEDOMAN TATA NASKAH DINAS INSTANSI PEMERINTAHPermenpan No 80 Tahun 2012 tentang PEDOMAN TATA NASKAH DINAS INSTANSI PEMERINTAH
Permenpan No 80 Tahun 2012 tentang PEDOMAN TATA NASKAH DINAS INSTANSI PEMERINTAHYudhi Aldriand
 
User guide spse 4.3 november 2018
User guide spse 4.3 november 2018User guide spse 4.3 november 2018
User guide spse 4.3 november 2018WENIART
 
Daftar isi dan lampiran
Daftar isi dan lampiranDaftar isi dan lampiran
Daftar isi dan lampiranRezza Adzmi
 
Dani r taufani mengolah data dengan access 2007
Dani r taufani   mengolah data dengan access 2007Dani r taufani   mengolah data dengan access 2007
Dani r taufani mengolah data dengan access 2007Ganek Hakim
 
Joomla 3 dan gantry framework
Joomla 3 dan gantry frameworkJoomla 3 dan gantry framework
Joomla 3 dan gantry frameworkNiko Niko
 
Modul Pengelolaan dan Analisis Data Geospasial - Bina Marga
Modul Pengelolaan dan Analisis Data Geospasial - Bina MargaModul Pengelolaan dan Analisis Data Geospasial - Bina Marga
Modul Pengelolaan dan Analisis Data Geospasial - Bina MargaMgs Zulfikar Rasyidi
 
Draft AD/ART Koperasi Pelangi Ciderum
Draft AD/ART Koperasi Pelangi CiderumDraft AD/ART Koperasi Pelangi Ciderum
Draft AD/ART Koperasi Pelangi CiderumNegeri Pelangi
 
Microsoft excel 2007
Microsoft excel 2007 Microsoft excel 2007
Microsoft excel 2007 hendrobabat
 
Power Train dan Hydraulic Alat Berat
Power Train dan Hydraulic Alat BeratPower Train dan Hydraulic Alat Berat
Power Train dan Hydraulic Alat BeratlombkTBK
 
Analisis Rate of Return Softskill
Analisis Rate of Return SoftskillAnalisis Rate of Return Softskill
Analisis Rate of Return SoftskillHermawan Hermawan
 

Tendances (16)

Ebook jaringan komputer II (ccna2)
Ebook jaringan komputer II (ccna2)Ebook jaringan komputer II (ccna2)
Ebook jaringan komputer II (ccna2)
 
First Time Hacking (Bahasa Indonesia)
First Time Hacking (Bahasa Indonesia)First Time Hacking (Bahasa Indonesia)
First Time Hacking (Bahasa Indonesia)
 
Permenpan No 80 Tahun 2012 tentang PEDOMAN TATA NASKAH DINAS INSTANSI PEMERINTAH
Permenpan No 80 Tahun 2012 tentang PEDOMAN TATA NASKAH DINAS INSTANSI PEMERINTAHPermenpan No 80 Tahun 2012 tentang PEDOMAN TATA NASKAH DINAS INSTANSI PEMERINTAH
Permenpan No 80 Tahun 2012 tentang PEDOMAN TATA NASKAH DINAS INSTANSI PEMERINTAH
 
User guide spse 4.3 november 2018
User guide spse 4.3 november 2018User guide spse 4.3 november 2018
User guide spse 4.3 november 2018
 
Daftar isi dan lampiran
Daftar isi dan lampiranDaftar isi dan lampiran
Daftar isi dan lampiran
 
Dani r taufani mengolah data dengan access 2007
Dani r taufani   mengolah data dengan access 2007Dani r taufani   mengolah data dengan access 2007
Dani r taufani mengolah data dengan access 2007
 
Joomla 3 dan gantry framework
Joomla 3 dan gantry frameworkJoomla 3 dan gantry framework
Joomla 3 dan gantry framework
 
Modul Pengelolaan dan Analisis Data Geospasial - Bina Marga
Modul Pengelolaan dan Analisis Data Geospasial - Bina MargaModul Pengelolaan dan Analisis Data Geospasial - Bina Marga
Modul Pengelolaan dan Analisis Data Geospasial - Bina Marga
 
Daftar isi proposal
Daftar isi proposalDaftar isi proposal
Daftar isi proposal
 
Draft AD/ART Koperasi Pelangi Ciderum
Draft AD/ART Koperasi Pelangi CiderumDraft AD/ART Koperasi Pelangi Ciderum
Draft AD/ART Koperasi Pelangi Ciderum
 
Makalah Time of value
Makalah Time of valueMakalah Time of value
Makalah Time of value
 
X ref auto cad 2007-r2
X ref auto cad 2007-r2X ref auto cad 2007-r2
X ref auto cad 2007-r2
 
Microsoft excel 2007
Microsoft excel 2007 Microsoft excel 2007
Microsoft excel 2007
 
Power Train dan Hydraulic Alat Berat
Power Train dan Hydraulic Alat BeratPower Train dan Hydraulic Alat Berat
Power Train dan Hydraulic Alat Berat
 
Soft skill
Soft skillSoft skill
Soft skill
 
Analisis Rate of Return Softskill
Analisis Rate of Return SoftskillAnalisis Rate of Return Softskill
Analisis Rate of Return Softskill
 

En vedette

Koneksi database mysql dengan netbean
Koneksi database mysql dengan netbeanKoneksi database mysql dengan netbean
Koneksi database mysql dengan netbeanpamulang university
 
Diktat kuliah Algoritma dan Pemograman
Diktat kuliah Algoritma dan PemogramanDiktat kuliah Algoritma dan Pemograman
Diktat kuliah Algoritma dan PemogramanPisca Prasetyo
 
Pengulangan for Algoritma
Pengulangan for AlgoritmaPengulangan for Algoritma
Pengulangan for Algoritmacasnadi
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerLuminary Labs
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 

En vedette (7)

Bab i
Bab iBab i
Bab i
 
Koneksi database mysql dengan netbean
Koneksi database mysql dengan netbeanKoneksi database mysql dengan netbean
Koneksi database mysql dengan netbean
 
Materi 6. perulangan
Materi 6. perulanganMateri 6. perulangan
Materi 6. perulangan
 
Diktat kuliah Algoritma dan Pemograman
Diktat kuliah Algoritma dan PemogramanDiktat kuliah Algoritma dan Pemograman
Diktat kuliah Algoritma dan Pemograman
 
Pengulangan for Algoritma
Pengulangan for AlgoritmaPengulangan for Algoritma
Pengulangan for Algoritma
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

Similaire à Modul junior gelombang i

Swing excerpt
Swing excerptSwing excerpt
Swing excerptmalvicom
 
Swing excerpt
Swing excerptSwing excerpt
Swing excerptezah
 
Petunjuk operasional peb53
Petunjuk operasional peb53Petunjuk operasional peb53
Petunjuk operasional peb53lahuddu76
 
LaTeX InDesign Crative Cloud
LaTeX InDesign Crative Cloud LaTeX InDesign Crative Cloud
LaTeX InDesign Crative Cloud Hirwanto Iwan
 
Daftar isi prog bumdes 2021
Daftar isi prog bumdes 2021Daftar isi prog bumdes 2021
Daftar isi prog bumdes 2021BennyHR1
 
Buku Panduan Aplikasi eKinerja
Buku Panduan Aplikasi eKinerjaBuku Panduan Aplikasi eKinerja
Buku Panduan Aplikasi eKinerjaMuh Saleh
 
laporan kp sipil
laporan kp sipillaporan kp sipil
laporan kp sipilWah You
 
Membuat dokumen la tex edisi 12
Membuat dokumen la tex edisi 12Membuat dokumen la tex edisi 12
Membuat dokumen la tex edisi 12Hirwanto Iwan
 
Modul 5 Lembar Sebar
Modul 5   Lembar SebarModul 5   Lembar Sebar
Modul 5 Lembar SebarAan Solo
 
Laporan akhir pratikum metalurgi fisik kelompok 5
Laporan akhir pratikum metalurgi fisik kelompok 5Laporan akhir pratikum metalurgi fisik kelompok 5
Laporan akhir pratikum metalurgi fisik kelompok 5Arismon Saputra
 
Panduan praktis belajar komputer
Panduan praktis belajar komputerPanduan praktis belajar komputer
Panduan praktis belajar komputerPutuMahendra Wijaya
 
Ka 06.-praktikum-paket-program-aplikasi
Ka 06.-praktikum-paket-program-aplikasiKa 06.-praktikum-paket-program-aplikasi
Ka 06.-praktikum-paket-program-aplikasiAyu Karisma Alfiana
 
Membuat Dokumen LaTeX edisi 13
Membuat Dokumen LaTeX edisi 13Membuat Dokumen LaTeX edisi 13
Membuat Dokumen LaTeX edisi 13Hirwanto Iwan
 
Membuat Dokumen LaTeX Eleventh Edition
Membuat Dokumen LaTeX  Eleventh EditionMembuat Dokumen LaTeX  Eleventh Edition
Membuat Dokumen LaTeX Eleventh EditionHirwanto Iwan
 
Psosk 12-supplement file-management_system
Psosk 12-supplement file-management_systemPsosk 12-supplement file-management_system
Psosk 12-supplement file-management_systemHendriyana Jatnika
 
Software Requirement Spesification
Software Requirement SpesificationSoftware Requirement Spesification
Software Requirement Spesificationwida dwitiayasa
 
Buku Petunjuk Kinerja V.17012023.pdf
Buku Petunjuk Kinerja V.17012023.pdfBuku Petunjuk Kinerja V.17012023.pdf
Buku Petunjuk Kinerja V.17012023.pdfnanangajim
 
Buku Petunjuk Kinerja guru tahun 2023 pdf
Buku Petunjuk Kinerja guru tahun 2023 pdfBuku Petunjuk Kinerja guru tahun 2023 pdf
Buku Petunjuk Kinerja guru tahun 2023 pdfiyuliarthawan87
 
LaTeX InDesign with Smart Diagram Miicrosoft Word 2013
LaTeX InDesign with Smart Diagram Miicrosoft Word 2013LaTeX InDesign with Smart Diagram Miicrosoft Word 2013
LaTeX InDesign with Smart Diagram Miicrosoft Word 2013Hirwanto Iwan
 

Similaire à Modul junior gelombang i (20)

Swing excerpt
Swing excerptSwing excerpt
Swing excerpt
 
Swing excerpt
Swing excerptSwing excerpt
Swing excerpt
 
Petunjuk operasional peb53
Petunjuk operasional peb53Petunjuk operasional peb53
Petunjuk operasional peb53
 
LaTeX InDesign Crative Cloud
LaTeX InDesign Crative Cloud LaTeX InDesign Crative Cloud
LaTeX InDesign Crative Cloud
 
Letech indesign cc
Letech indesign ccLetech indesign cc
Letech indesign cc
 
Daftar isi prog bumdes 2021
Daftar isi prog bumdes 2021Daftar isi prog bumdes 2021
Daftar isi prog bumdes 2021
 
Buku Panduan Aplikasi eKinerja
Buku Panduan Aplikasi eKinerjaBuku Panduan Aplikasi eKinerja
Buku Panduan Aplikasi eKinerja
 
laporan kp sipil
laporan kp sipillaporan kp sipil
laporan kp sipil
 
Membuat dokumen la tex edisi 12
Membuat dokumen la tex edisi 12Membuat dokumen la tex edisi 12
Membuat dokumen la tex edisi 12
 
Modul 5 Lembar Sebar
Modul 5   Lembar SebarModul 5   Lembar Sebar
Modul 5 Lembar Sebar
 
Laporan akhir pratikum metalurgi fisik kelompok 5
Laporan akhir pratikum metalurgi fisik kelompok 5Laporan akhir pratikum metalurgi fisik kelompok 5
Laporan akhir pratikum metalurgi fisik kelompok 5
 
Panduan praktis belajar komputer
Panduan praktis belajar komputerPanduan praktis belajar komputer
Panduan praktis belajar komputer
 
Ka 06.-praktikum-paket-program-aplikasi
Ka 06.-praktikum-paket-program-aplikasiKa 06.-praktikum-paket-program-aplikasi
Ka 06.-praktikum-paket-program-aplikasi
 
Membuat Dokumen LaTeX edisi 13
Membuat Dokumen LaTeX edisi 13Membuat Dokumen LaTeX edisi 13
Membuat Dokumen LaTeX edisi 13
 
Membuat Dokumen LaTeX Eleventh Edition
Membuat Dokumen LaTeX  Eleventh EditionMembuat Dokumen LaTeX  Eleventh Edition
Membuat Dokumen LaTeX Eleventh Edition
 
Psosk 12-supplement file-management_system
Psosk 12-supplement file-management_systemPsosk 12-supplement file-management_system
Psosk 12-supplement file-management_system
 
Software Requirement Spesification
Software Requirement SpesificationSoftware Requirement Spesification
Software Requirement Spesification
 
Buku Petunjuk Kinerja V.17012023.pdf
Buku Petunjuk Kinerja V.17012023.pdfBuku Petunjuk Kinerja V.17012023.pdf
Buku Petunjuk Kinerja V.17012023.pdf
 
Buku Petunjuk Kinerja guru tahun 2023 pdf
Buku Petunjuk Kinerja guru tahun 2023 pdfBuku Petunjuk Kinerja guru tahun 2023 pdf
Buku Petunjuk Kinerja guru tahun 2023 pdf
 
LaTeX InDesign with Smart Diagram Miicrosoft Word 2013
LaTeX InDesign with Smart Diagram Miicrosoft Word 2013LaTeX InDesign with Smart Diagram Miicrosoft Word 2013
LaTeX InDesign with Smart Diagram Miicrosoft Word 2013
 

Dernier

Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfBab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfbibizaenab
 
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajatLatihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajatArfiGraphy
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5ssuserd52993
 
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxRefleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxIrfanAudah1
 
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxTugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxmawan5982
 
tugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajarantugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajarankeicapmaniez
 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfCandraMegawati
 
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAMODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAAndiCoc
 
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxPERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxRizkyPratiwi19
 
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docx
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docxLK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docx
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docxPurmiasih
 
Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1udin100
 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxdpp11tya
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfDimanWr1
 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikaAtiAnggiSupriyati
 
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptArkhaRega1
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMmulyadia43
 
contoh penulisan nomor skl pada surat kelulusan .pptx
contoh penulisan nomor skl pada surat kelulusan  .pptxcontoh penulisan nomor skl pada surat kelulusan  .pptx
contoh penulisan nomor skl pada surat kelulusan .pptxHR MUSLIM
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDmawan5982
 
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docxTugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docxmawan5982
 
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)MustahalMustahal
 

Dernier (20)

Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfBab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
 
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajatLatihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
Latihan Soal bahasa Indonesia untuk anak sekolah sekelas SMP atau pun sederajat
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
 
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxRefleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
 
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxTugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
 
tugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajarantugas karya ilmiah 1 universitas terbuka pembelajaran
tugas karya ilmiah 1 universitas terbuka pembelajaran
 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
 
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAMODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
 
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptxPERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
PERAN PERAWAT DALAM PEMERIKSAAN PENUNJANG.pptx
 
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docx
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docxLK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docx
LK.01._LK_Peta_Pikir modul 1.3_Kel1_NURYANTI_101.docx
 
Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1
 
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
 
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
 
contoh penulisan nomor skl pada surat kelulusan .pptx
contoh penulisan nomor skl pada surat kelulusan  .pptxcontoh penulisan nomor skl pada surat kelulusan  .pptx
contoh penulisan nomor skl pada surat kelulusan .pptx
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SD
 
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docxTugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
Tugas 1 ABK di SD prodi pendidikan guru sekolah dasar.docx
 
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
 

Modul junior gelombang i

  • 1. 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
  • 2. 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
  • 3. 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
  • 4.
  • 5. 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.
  • 6. 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
  • 7. 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.
  • 8. 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.
  • 9. 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?
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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.
  • 16. 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
  • 17. 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.
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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:
  • 22. 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.
  • 23. 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.
  • 24. 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
  • 25. 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--){
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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 : truen'); end; end. int ketemu = 1; if(ketemu == 1){ // proses printf("nilai variabel ketemu : truen"); } 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
  • 30. 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 : truen"); } else{ // proses printf("(else) nilai variabel ketemu : falsen"); }
  • 31. 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 :
  • 32. 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 : %dn", 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
  • 33. 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
  • 34. 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 }
  • 35. 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
  • 36. 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)
  • 37. 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 }
  • 38. 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)
  • 39. 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 BIASAn”); for (b=0; b<3; k++) for (k=0; k<3; k++) printf(“x(%d) - %dn”,b,k,x(b) (k));
  • 40. Modul Pelatihan Junior Programming 36 printf (“nnBENTUK MATRIKSn”); 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]); } }
  • 41. 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; } }
  • 42. 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<<"nnJumlahnya = "<<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<<"nnJumlahnya = "<<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<<"nnJumlahnya = "<<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:
  • 43. 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<<"nnJumlahnya = "<<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];
  • 44. 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<<"nnSetelah 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 . . …
  • 45. 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 pertaman"; masukan(dt1,b1,k1); cout<<"nMatrik keduan"; masukan(dt2,b1,k1); jumlah(dt1,dt2,dt3,b1,k1); clrscr(); cout<<"nMatrik pertaman"; tampilkan(dt1,b1,k1); cout<<"nMatrik keduan"; tampilkan(dt2,b1,k1); cout<<"nMatrik hasil penjumlahann"; 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.
  • 46. 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
  • 47. 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
  • 48. 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
  • 49. 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.
  • 50. 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; }
  • 51. 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
  • 52. 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();
  • 53. 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; }
  • 54. 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
  • 55. 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.
  • 56. 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
  • 57. 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.
  • 58. 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,
  • 59. 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.
  • 60. 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
  • 61. 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;
  • 62. 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