Upload
lukmanulhakim-almamalik
View
1.022
Download
4
Embed Size (px)
Citation preview
MATERI PELATIHAN BERBASIS KOMPETENSI
SEKTOR TEKNOLOGI INFORMASI DAN
KOMUNIKASI
MEMBUAT ALGORITMA
PEMROGRAMAN LANJUT
TIK.PR02.002.01
BUKU INFORMASI
DEPARTEMEN TENAGA KERJA DAN TRANSMIGRASI R.I.
DIREKTORAT JENDERAL PEMBINAAN PELATIHAN DAN PRODUKTIVITAS
Jl. Jend. Gatot Subroto Kav.51 Lt.7.B Jakarta Selatan
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 2 dari 77
DAFTAR ISI
Daftar Isi
2
BAB I PENGANTAR
4
1.1. Konsep Dasar Pelatihan Berbasis Kompetensi
4
1.2. Penjelasan Modul
4
1.3. Pengakuan Kompetensi Terkini (RCC)
7
1.4. Pengertian-pengertian Istilah
8
BAB II STANDAR KOMPETENSI
10
2.1. Peta Paket Pelatihan
10
2.2. Pengertian Unit Standar
10
2.3. Unit Kompetensi yang Dipelajari
11
2.3.1. Judul Unit ............................................................................
11
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 3 dari 77
2.3.2. Kode Unit ............................................................................
11
2.3.3. Deskripsi Unit ............................................................................
11
2.3.4. Elemen Kompetensi ............................................................................
11
2.3.5. Kriteria Unjuk Kerja ............................................................................
11
2.3.6. Batasan Variabel ............................................................................
13
2.3.7. Panduan Penilaian ............................................................................
13
2.3.8. Kompetensi Kunci ............................................................................
15
BAB III STRATEGI DAN METODE PELATIHAN
17
3.1. Strategi Pelatihan
17
3.2. Metode Pelatihan
17
BAB IV MATERI UNIT KOMPETENSI
18
4.1 Tujuan Instruksional Umum ............................................................... 18
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 4 dari 77
4.2 Tujuan Instruksional Khuisus ............................................................. 18
4.3 Penggunaan Array Multi Dimensi........................................................ 19
4.3.1 Pengenalan array multi dimensi ................................................
19
4.3.2 Array 2 dimensi (Matriks) .........................................................
19
4.3.2.1 Deklarasi matriks 2 dimensi .......................................... ..
20
4.3.2.2 Memberikan dan membaca nilai dari matriks 2 dimensi ......
20
4.3.2.3 Mengubah isi dari matriks n dimensi...................................
22
4.3.2.4 Penerapan matriks 2 dimensi ...........................................
23
4.3.2.5 Penjumlahan matriks 2 dimensi ........................................
23
4.3.2.6 Pengurangan matriks 2 dimensi........................................
24
4.3.3 Array matriks 3 dimensi............................................................
25
4.3.3.1 Deklarasi array 3 dimensi ................................................
25
4.3.3.2 Memberikan dan membaca nilai dari matriks 3 dimensi .....
27
4.3.3.3 Melakukan inisialisasi matriks 3 dimensi ...........................
27
4.3.3.4 Memberikan nilai secara langsung ...................................
27
4.3.3.5 Mengubah isi dari matriks 3 dimensi ................................
29
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 5 dari 77
4.4 Penggunaan Prosedur dan Fungsi ....................................................
33
4.4.1 Apa itu file library .....................................................................
34
4.4.1.1 Fungsi operasi string .......................................................
34
4.4.1.2 Fungsi operasi karakter ....................................................
35
4.4.1.3 Fungsi operasi matematika ...............................................
36
4.4.2 Membuat fungsi sendiri .............................................................
38
4.4.3 Parameter formal dan parameter aktual ......................................
40
4.4.4 Cara melewatkan parameter ......................................................
41
4.4.5 Variabel Lokal ...........................................................................
42
4.4.5.1 Sifat - sifat variabel lokal ....................................................
42
4.4.6 Variabel Global ...........................................................................
42
4.4.6.1 Sifat - sifat variabel global ...................................................
42
4.4.7 Variabel Statis ............................................................................
43
4.4.7.1 Sifat - sifat variabel statis ...................................................
43
4.4.8 Variabel Register ........................................................................
43
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 6 dari 77
4.4.8.1 Sifat - sifat variabel register .................................................
43
4.5 Pemrograman Grafik ........................................................................
46
4.5.1 Fungsi - fungsi pada proses inisialisasi modus grafis ......................
47
4.5.2 Fungsi - fungsi penting dalam memanipulasi obyek grafis ..............
50
4.5.3 Fungsi - fungsi penting untuk membuat obyek 2 dimensi ...............
52
4.5.4 Contoh - contoh program : ..........................................................
56
4.6 Pengenalan Obyek 3 Dimensi ............................................................
63
4.7 Pengenalan Terhadap Obyek Open GL ...............................................
64
4.7.1 Pengelompokkan fungsi ..............................................................
65
4.7.2 Proses inisialisasi Open GL ..........................................................
66
4.7.3 Fungsi dasar obyek Open GL .......................................................
67
4.7.4 Proses kompilasi program Open GL .............................................
68
4.7.5 Algoritma animasi sederhana ......................................................
68
BAB V SUMBER-SUMBER YANG DIPERLUKAN UNTUK PENCAPAIAN
KOMPETENSI
72
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 7 dari 77
5.1. Sumber Daya Manusia
72
5.2. Sumber-sumber Perpustakaan
72
5.3. Daftar Peralatan/Mesin dan Bahan
73
DAFTAR PUSTAKA
74
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 8 dari 77
BAB I
PENGANTAR
1.1. Konsep Dasar Pelatihan Berbasis Kompetensi
• Apakah pelatihan berdasarkan kompetensi?
Pelatihan berdasarkan kompetensi adalah pelatihan yang memperhatikan
pengetahuan, keterampilan dan sikap yang diperlukan di tempat kerja agar dapat
melakukan pekerjaan dengan kompeten. Standar Kompetensi dijelaskan oleh
Kriteria Unjuk Kerja.
• Apakah artinya menjadi kompeten ditempat kerja?
Jika Anda kompeten dalam pekerjaan tertentu, Anda memiliki seluruh
keterampilan, pengetahuan dan sikap yang perlu untuk ditampilkan secara
efektif ditempat kerja, sesuai dengan standar yang telah disetujui.
1.2. Penjelasan Modul
Modul ini dikonsep agar dapat digunakan pada proses Pelatihan
Konvensional/Klasikal dan Pelatihan Individual/Mandiri. Yang dimaksud dengan
Pelatihan Konvensional/Klasikal, yaitu pelatihan yang dilakukan dengan
melibatkan bantuan seorang pembimbing atau guru seperti proses belajar
mengajar sebagaimana biasanya dimana materi hampir sepenuhnya dijelaskan
dan disampaikan pelatih/pembimbing yang bersangkutan.
Sedangkan yang dimaksud dengan Pelatihan Mandiri/Individual adalah
pelatihan yang dilakukan secara mandiri oleh peserta sendiri berdasarkan materi
dan sumber-sumber informasi dan pengetahuan yang bersangkutan. Pelatihan
mandiri cenderung lebih menekankan pada kemauan belajar peserta itu sendiri.
Singkatnya pelatihan ini dilaksanakan peserta dengan menambahkan unsur-
unsur atau sumber-sumber yang diperlukan baik dengan usahanya sendiri
maupun melalui bantuan dari pelatih.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 9 dari 77
1.2.1 Desain Modul
Modul ini didisain untuk dapat digunakan pada Pelatihan Klasikal dan Pelatihan
Individual/mandiri :
• Pelatihan klasikal adalah pelatihan yang disampaiakan oleh seorang pelatih.
• Pelatihan individual/mandiri adalah pelatihan yang dilaksanakan oleh peserta
dengan menambahkan unsur-unsur/sumber-sumber yang diperlukan dengan
bantuan dari pelatih.
1.2.2. Isi Modul
Modul ini terdiri dari 3 bagian, antara lain sebagai berikut:a. Buku Informasi
Buku informasi ini adalah sumber pelatihan untuk pelatih maupun peserta
pelatihan.
b. Buku Kerja
Buku kerja ini harus digunakan oleh peserta pelatihan untuk mencatat setiap
pertanyaan dan kegiatan praktik baik dalam Pelatihan Klasikal maupun
Pelatihan Individual / mandiri.
Buku ini diberikan kepada peserta pelatihan dan berisi :
Kegiatan-kegiatan yang akan membantu peserta pelatihan untuk
mempelajari dan memahami informasi.
• Kegiatan pemeriksaan yang digunakan untuk memonitor pencapaian
keterampilan peserta pelatihan.
• Kegiatan penilaian untuk menilai kemampuan peserta pelatihan dalam
melaksanakan praktik kerja.
c. Buku Penilaian
Buku penilaian ini digunakan oleh pelatih untuk menilai jawaban dan
tanggapan peserta pelatihan pada Buku Kerja dan berisi :
• Kegiatan-kegiatan yang dilakukan oleh peserta pelatihan sebagai
pernyataan keterampilan.
• Metode-metode yang disarankan dalam proses penilaian keterampilan
peserta pelatihan.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 10 dari 77
• Sumber-sumber yang digunakan oleh peserta pelatihan untuk mencapai
keterampilan.
• Semua jawaban pada setiap pertanyaan yang diisikan pada Buku Kerja.
• Petunjuk bagi pelatih untuk menilai setiap kegiatan praktik.
• Catatan pencapaian keterampilan peserta pelatihan.
1.2.3. Pelaksanaan Modul
Pada pelatihan klasikal, pelatih akan :
• Menyediakan Buku Informasi yang dapat digunakan peserta pelatihan
sebagai sumber pelatihan.
• Menyediakan salinan Buku Kerja kepada setiap peserta pelatihan.
• Menggunakan Buku Informasi sebagai sumber utama dalam
penyelenggaraan pelatihan.
• Memastikan setiap peserta pelatihan memberikan jawaban / tanggapan
dan menuliskan hasil tugas praktiknya pada Buku Kerja.
Pada Pelatihan individual / mandiri, peserta pelatihan akan :
• Menggunakan Buku Informasi sebagai sumber utama pelatihan.
• Menyelesaikan setiap kegiatan yang terdapat pada buku Kerja.
• Memberikan jawaban pada Buku Kerja.
• Mengisikan hasil tugas praktik pada Buku Kerja.
• Memiliki tanggapan-tanggapan dan hasil penilaian oleh pelatih.
1.3Pengakuan Kompetensi Terkini (RCC)
• Apakah Pengakuan Kompetensi Terkini (Recognition of Current
Competency).
Jika Anda telah memiliki pengetahuan dan keterampilan yang diperlukan
untuk elemen unit kompetensi tertentu, Anda dapat mengajukan
pengakuan kompetensi terkini (RCC). Berarti Anda tidak akan
dipersyaratkan untuk belajar kembali.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 11 dari 77
• Anda mungkin sudah memiliki pengetahuan dan keterampilan, karena
Anda telah :
a. Bekerja dalam suatu pekerjaan yang memerlukan suatu pengetahuan dan
keterampilan yang sama atau
b. Berpartisipasi dalam pelatihan yang mempelajari kompetensi yang sama
atau
c. Mempunyai pengalaman lainnya yang mengajarkan pengetahuan dan
keterampilan yang sama.
1.4Pengertian-pengertian Istilah
Profesi
Profesi adalah suatu bidang pekerjaan yang menuntut sikap, pengetahuan
serta keterampilan/keahlian kerja tertentu yang diperoleh dari proses
pendidikan, pelatihan serta pengalaman kerja atau penguasaan sekumpulan
kompetensi tertentu yang dituntut oleh suatu pekerjaan/jabatan.
Standardisasi
Standardisasi adalah proses merumuskan, menetapkan serta menerapkan
suatu standar tertentu.
Penilaian / Uji Kompetensi
Penilaian atau Uji Kompetensi adalah proses pengumpulan bukti melalui
perencanaan, pelaksanaan dan peninjauan ulang (review) penilaian serta
keputusan mengenai apakah kompetensi sudah tercapai dengan
membandingkan bukti-bukti yang dikumpulkan terhadap standar yang
dipersyaratkan.
Pelatihan
Pelatihan adalah proses pembelajaran yang dilaksanakan untuk mencapai
suatu kompetensi tertentu dimana materi, metode dan fasilitas pelatihan
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 12 dari 77
serta lingkungan belajar yang ada terfokus kepada pencapaian unjuk kerja
pada kompetensi yang dipelajari.
Kompetensi
Kompetensi adalah kemampuan seseorang untuk menunjukkan aspek sikap,
pengetahuan dan keterampilan serta penerapan dari ketiga aspek tersebut
ditempat kerja untuk mwncapai unjuk kerja yang ditetapkan.
Standar Kompetensi
Standar kompetensi adalah standar yang ditampilkan dalam istilah-istilah hasil
serta memiliki format standar yang terdiri dari judul unit, deskripsi unit,
elemen kompetensi, kriteria unjuk kerja, ruang lingkup serta pedoman bukti.
Sertifikat Kompetensi
Adalah pengakuan tertulis atas penguasaan suatu kompetensi tertentu
kepada seseorang yang dinyatakan kompeten yang diberikan oleh Lembaga
Sertifikasi Profesi.
Sertifikasi Kompetensi
Adalah proses penerbitan sertifikat kompetensi melalui proses penilaian / uji
kompetensi.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 13 dari 77
BAB II
STANDAR KOMPETENSI
2.1. Peta Paket Pelatihan
Modul yang sedang Anda pelajari ini adalah untuk mencapai satu unit
kompetensi, yang termasuk dalam satu paket pelatihan, yang terdiri atas
unit-unit kompetensi berikut:
2.1.1. TIK.OP02.002.01 Membuat Algoritma Pemrograman
Lanjut.
2.1.2. TIK.OP02.003.01A Mengoperasikan Sistem Operasi Microsoft
Windows.
2.1.3. TIK.OP02.001.01 Mengoperasikan komputer personal yang
berdiri sendiri ( PC Stand Alone )
2.2. Pengertian Unit Standar Kompetensi
Apakah Standar Kompetensi?
Setiap Standar Kompetensi menentukan :
a. Pengetahuan dan keterampilan yang diperlukan untuk mencapai
kompetensi.
b. Standar yang diperlukan untuk mendemonstrasikan kompetensi.
c. Kondisi dimana kompetensi dicapai.
Apa yang akan Anda pelajari dari Unit Kompetensi ini?
Anda akan mempelajari tentang Algoritma Pemrograman lanjut.
Berapa lama Unit Kompetensi ini dapat diselesaikan?
Pada sistem pelatihan berdasarkan kompetensi, fokusnya ada pada
pencapaian kompetensi, bukan pada lamanya waktu. Namun diharapkan
pelatihan ini dapat dilaksanakan dalam jangka waktu tiga sampai tujuh hari.
Pelatihan ini dijutukan bagi semua user terutama yang tugasnya berkaitan
dengan programming, seperti operator, programmer, staff support, dan staff
admin.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 14 dari 77
Berapa banyak/kesempatan yang Anda miliki untuk mencapai
kompetensi?
Jika Anda belum mencapai kompetensi pada usaha/kesempatan pertama,
Pelatih Anda akan mengatur rencana pelatihan dengan Anda. Rencana ini
akan memberikan Anda kesempatan kembali untuk meningkatkan level
kompetensi Anda sesuai dengan level yang diperlukan.
Jumlah maksimum usaha/kesempatan yang disarankan adalah 3 (tiga) kali.
2.3. Unit Kompetensi yang Dipelajari
Dalam sistem pelatihan, Standar Kompetensi diharapkan menjadi panduan
bagi peserta pelatihan untuk dapat :
• mengidentifikasikan apa yang harus dikerjakan peserta pelatihan.
• memeriksa kemajuan peserta pelatihan.
• menyakinkan bahwa semua elemen (sub-kompetensi) dan criteria unjuk
kerja telah dimasukkan dalam pelatihan dan penilaian.
KODE UNIT : TIK.PR02.002.01
JUDUL UNIT : Membuat Algoritma Pemrograman Lanjut
DESKRIPSI UNIT :
Unit ini menentukan kompetensi yang diperlukan untuk mempelajari algoritma yang
akan diterapkan pada program, tidak tergantung bahasa pemrograman yang akan
digunakan. Algoritma pemrograman merupakan materi dasar yang harus dikuasai
oleh setiap programer. Untuk tingkat lanjut ini ditekankan kepada penguasaan array
multi dimensi, pemakaian prosedur dan fungsi serta pemanfaatan grafik.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 15 dari 77
ELEMEN KOMPETENSI KRITERIA UNJUK KERJA
1 Menggunakan Array Multi
Dimensi
1.1 Algoritma array multi dimensi dibuat dan
dijelaskan.
1.2 Matrik 2D, 3D dibuat dalam bentuk
penjumlahan, pengurangan, perkalian dsb.
1.3 Algoritma pembacaan, pengisian,
pengubahan dan penghapusan data dalam
array multi dimensi dibuat dan ditunjukkan.
2 Menggunakan prosedur
dan fungsi 2.1 Algoritma program dibuat dengan prosedur
2.2 Algoritma program dibuat dengan fungsi.
2.3 Algoritma program dibuat dengan prosedur
dan fungsi.
3 Menggunakan library
pemrograman grafik
3.1 Algoritma program dibuat dengan library
berbasis grafik.
3.2 Algoritma pemrograman dengan grafik
(gambar sederhana) berbentuk 2D dan 3D
dibuat.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 16 dari 77
3.3 Algoritma pemrograman animasi dibuat
dengan grafik (gambar sederhana).
BATASAN VARIABEL
1. Unit ini berlaku untuk seluruh sektor teknologi informasi dan komunikasi.
2. Menjaga etika bersifat internal pada bidang teknologi informasi dan komunikasi.
PANDUAN PENILAIAN
1. Pengetahuan dan keterampilan penunjang untuk
mendemontrasikan kompetensi, memerlukan bukti keterampilan
dan pengetahuan di bidang berikut ini :
1.1 Pengetahuan dasar :
1.1.1 Matematika dasar dan matematika logika
1.1.2 Flowchart dan dasar pemrograman
1.2 Keterampilan dasar
Mengoperasikan sistem komputer
2. Konteks penilaian
Kompetensi harus diujikan di tempat kerja atau di tempat lain secara teori
dengan kondisi kerja sesuai dengan keadaan normal.
3. Aspek penting penilaian
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 17 dari 77
Aspek yang harus diperhatikan:
3.1 Kemampuan mengidentifikasi varian dan invarian yang berlaku umum
pada pemrograman.
3.2 Kemampuan mengidentifikasi alur logika pemrograman sekuensial dan
membuat algoritma.
3.3 Kemampuan mengidentifikasi pengelolaan array pada program.
3.4 Kemampuan menyimpan program ke dalam media penyimpanan.
3.5 Kemampuan membuat program membaca dan menulis data ke dalam
file secara sekuensial dan indeks.
4. Kaitan dengan unit-unit lainnya
4.1 Unit ini didukung oleh pengetahuan dan keterampilan dalam unit-unit
kompetensi yang berkaitan dengan dasar-dasar teknologi informasi.
4.1.1 Mengoperasikan PC dan system informasi
4.1.2 TIK.PR02.001.01 Membuat Algoritma Pemrograman Dasar
4.2 Pengembangan pelatihan untuk memenuhi persyaratan dalam unit ini
perlu dilakukan dengan hati-hati. Untuk pelatihan pra kejuruan umum,
institusi harus menyediakan pelatihan yang mempertimbangkan
serangkaian konteks industri seutuhnya tanpa bias terhadap sektor
tertentu. Batasan variabel akan membantu dalam hal ini. Untuk sektor
tertentu/khusus, pelatihan harus disesuaikan untuk memenuhi
kebutuhan sektor tersebut.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 18 dari 77
Kompetensi Kunci
No Kompetensi Kunci Dalam Unit ini Tingkat1 Mengumpulkan, mengorganisir dan menganalisa informasi 12 Mengkomunikasikan ide-ide dan informasi 13 Merencanakan dan mengorganisir aktivitas-aktivitas 14 Bekerja dengan orang lain dan kelompok 15 Menggunakan ide-ide dan teknik matematika 26 Memecahkan masalah 17 Menggunakan teknologi 1
BAB III
STRATEGI DAN METODE PELATIHAN
3.1. Strategi Pelatihan
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 19 dari 77
Belajar dalam suatu sistem Berdasarkan Kompetensi berbeda dengan yang
sedang “diajarkan” di kelas oleh Pelatih. Pada sistem ini Anda akan bertanggung
jawab terhadap belajar Anda sendiri, artinya bahwa Anda perlu merencanakan
belajar Anda dengan Pelatih dan kemudian melaksanakannya dengan tekun sesuai
dengan rencana yang telah dibuat.
Persiapan/perencanaan
a. Membaca bahan/materi yang telah diidentifikasi dalam setiap tahap belajar
dengan tujuan mendapatkan tinjauan umum mengenai isi proses belajar Anda.
b. Membuat catatan terhadap apa yang telah dibaca.
c. Memikirkan bagaimana pengetahuan baru yang diperoleh berhubungan dengan
pengetahuan dan pengalaman yang telah Anda miliki.
d. Merencanakan aplikasi praktik pengetahuan dan keterampilan Anda.
Permulaan dari proses pembelajaran
a. Mencoba mengerjakan seluruh pertanyaan dan tugas praktik yang terdapat pada
tahap belajar.
b. Merevisi dan meninjau materi belajar agar dapat menggabungkan pengetahuan
Anda.
Pengamatan terhadap tugas praktik
a. Mengamati keterampilan praktik yang didemonstrasikan oleh Pelatih atau orang
yang telah berpengalaman lainnya.
b. Mengajukan pertanyaan kepada Pelatih tentang konsep sulit yang Anda
temukan.
Implementasi
a. Menerapkan pelatihan kerja yang aman.
b. Mengamati indicator kemajuan personal melalui kegiatan praktik.
c. Mempraktikkan keterampilan baru yang telah Anda peroleh.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 20 dari 77
Penilaian
Melaksanakan tugas penilaian untuk penyelesaian belajar Anda.
3.2. Metode Pelatihan
Terdapat tiga prinsip metode belajar yang dapat digunakan. Dalam beberapa
kasus, kombinasi metode belajar mungkin dapat digunakan.
Belajar secara mandiri
Belajar secara mandiri membolehkan Anda untuk belajar secara individual, sesuai
dengan kecepatan belajarnya masing-masing. Meskipun proses belajar dilaksanakan
secara bebas, Anda disarankan untuk menemui Pelatih setiap saat untuk
mengkonfirmasikan kemajuan dan mengatasi kesulitan belajar.
Belajar Berkelompok
Belajar berkelompok memungkinkan peserta untuk dating bersama secara teratur
dan berpartisipasi dalam sesi belajar berkelompok. Walaupun proses belajar memiliki
prinsip sesuai dengan kecepatan belajar masing-masing, sesi kelompok memberikan
interaksi antar peserta, Pelatih dan pakar/ahli dari tempat kerja.
Belajar terstruktur
Belajar terstruktur meliputi sesi pertemuan kelas secara formal yang dilaksanakan
oleh Pelatih atau ahli lainnya. Sesi belajar ini umumnya mencakup topic tertentu.
BAB IV
MATERI UNIT KOMPETENSI
MEMBUAT ALGORITMA PEMROGRAMAN LANJUT
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 21 dari 77
4.1 Tujuan Instruksional Umum
o Siswa mampu mempelajari lanjutan dari Algoritma dan Pemrograman
dasar
o Siswa mampu memahami tentang array lebih lanjut
o Siswa mampu menguasai tentang prosedur dan fungsi
o Siswa mampu mengetahui fungsi – fungsi matematika, pengolahan
kalimat dan grafik.
o Siswa dapat mengetahui dasar – dasar dalam pemrograman grafis.
o Siswa dapat mengetahui pemrograman tingkat lanjut menggunakan
Open GL.
4.2 Tujuan Instruksional Khusus
o Siswa dapat mengetahui seberapa pentingnya Algoritma Pemrograman
lanjut dalam mempelajari pemrograman.
o Siswa dapat mengetahui tentang array multidimensi.
o Siswa dapat dapat mengetahui tentang operasi matrik.
o Siswa dapat mengetahui tentang bagaimana membuat prosedur dan
fungsi sendiri.
o Siswa dapat mengetahui fungsi – fungsi yang penting dalam
matematika, pengolahan kalimat dan grafis.
o Siswa dapat menguasai dasar – dasar dalam pemrograman grafis.
o Siswa dapat mengetahui dasar dan penerapan program Open GL dalam
pengelolaan grafis tingkat lanjut.
Apa itu Algoritma Pemrograman Lanjut ?
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 22 dari 77
Algoritma Pemrograman lanjut merupakan pembahasan – pembahasan lanjutan
mengenai dasar – dasar pemrograman dan memperkenalkan pembaca kepada
topik – topik lanjutan yang belum dibahas pada Algortma Pemrograman dasar.
Topik – topik itu meliputi : Penggunaan array multi dimensi, penggunaan prosedur
dan fungsi dan dasar – dasar pemrograman grafik. Seluruh contoh dan
pembahasan ini akan menggunakan bahasap pemrograman Turbo C.
4.3 Penggunaan Array Multi Dimensi.
4.3.1 Pengenalan Array Multi Dimensi
Array multi dimensi pada dasarnya merupakan sebuah struktur data array biasa,
seperti halnya struktur array 1 dimensi. Perbedaannya terletak pada
kemampuan menyimpan elemen data yang lebih banyak daripada array 1
dimensi. Semakin besar jumlah dimensi yang terkandug, semakin banyak data
yang dapat disimpan dalam struktur array tersebut. Pemilihan penggunaa array
1 dimensi atau array muti dimensi hendaknya disesuaikan dengan permasalahan
yang ada, karena tidak semua permasalahan dapat diselesaikan dengan array 1
dimensi dan begitu pula sebaliknya.
4.3.2 Array 2 Dimensi (Matriks)
Array 2 dimensi atau biasa disebut juga sebagai matriks merupakan sekumpulan
informasi yang setiap elemennya diacu dengan menggunakan 2 buah indeks
( yang biasanya dinotasikan dengan baris dan kolom).
Karakteristik array 2 dimensi secara umum adalah :
- Kumpulan elemen bertipe sama.
- Setiap elemen dapat diakses secara acak, jika indeks (baris dan kolomnya)
sudah diketahui.
- Merupakan struktur data statis, jika jumlah elemenya terlah ditentukan di
awalnya maka tidak dapat dirubah selama pelaksanaan program.
4.3.2.1 Deklarasi Matriks 2 Dimensi
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 23 dari 77
Tipe_data nama_matriks[elemen_baris][elemen_kolom]
Contoh :
int jumlah_lulusan[2][2];
Tipe data struktur array 2 dimensi dapat berupa integer, float, booelan, dll.
Penamaan matriks harus memperhatikan ketentuan penamaan variabel.
Elemen baris menyatakan maksimal elemen baris matriks.
Elemen kolom menyatakan maksimlam elemen kolom matriks.
4.3.2.2 Memberikan dan membaca nilai dari matriks n dimensi.
Metode yang digunakan untuk memberikan nilai pada matriks 2 dimensi atau n
dimensi memiliki kesamaan, terdapat 2 cara yang dapat digunakan yaitu :
o Melakukan inisialisasi matrriks
Inisialisasi matriks berarti memberikan nilai pada setiap elemen ketika matriks
tersebut dideklarasikan. Metode ini hanya bisa dilakukan ketika kita sudah
mengetahui nilai yang hendak dimasukkan kedalam setiap elemen data dari
matriks.
Contoh :
Int a[2][3] = { {1,2,3} , {4,5,6}}
Tanda kurva pertama menunjukkan baris pertama dimana didalamnya terdapat
3 elemen (1,2,3) dan kurva kedua menunjukkan baris kedua dimana terdapat 3
elemen juga (4,5,6).
o Memberikan nilai secara langsung (assignment)
0 10 Jumlah_lulusa[0][0] Jumlah_lulusa[0][1]1 Jumlah_lulusa[1][0] Jumlah_lulusa[1][1]
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 24 dari 77
Memberikan nilai secara langsung kepada matriks sama dengan memberikan
nilai secara langsung kepda sebuah variabel, yang membedakan adalah dalam
memberikan nilai kepada sebuah matriks kita harus mengetahui secara pasti
indeks baris dan kolomnya terlebih dahulu.
Contoh :
Jumlah_lulusan[0][0] = 100; // memberikan data pada elemen baris ke 0,
kolom ke 0.
Hal yang harus diperhatikan dalam pemberian nilai ke dalam sebuah matriks
adalah indeks, kesalahan dalam pemberian indeks akan mengakibatkan
pemberian data pada elemen yang salah ataupun akan mengakibatkan program
error ( ini terjadi apabila indeks yang dituju lebih dari indeks maksimal yang
telah ditetapkan sebelumnya).
Contoh :
int a[2][2]; // mendeklarasikan matriks array 2 dimensi, sebanyak 4 elemen.
a[1][1] = 100; // benar. Akan memasukkan data ke elemen baris ke 1 dan
kolom ke 1.
A[3][2] = 20; // akan meberikan error pada program, karena elemen baris ke 3
tidak pernah didefinisikan sebelumnya.
o Melalui piranti masukan (keyboard ataupun file)
Memberikan nilai kepada matriks array dapat dilakukan juga melalui keyboard
secara langsung ataupun dengan membaca isi dari sebuah file. Metode yang
digunakan pada setiap bahasa pemrograman berbeda – beda.
Contoh :
Program akan mengisi matriks 2 dimensi dengan menginput langsung dari
keyboard dan langsung menampilkan ke standar output (layar monitor).
#include <stdio.h>
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 25 dari 77
void main(){
int a[2][2];
int baris, kolom;
// meminta inputan matriks melalui keyboard.
for(baris=0; baris< 2; baris++){
for (kolom=0;kolom < 2; kolom++){
scanf(“%d”,&a[baris][kolom]); // meminta inputan dari keyboard dan langsung
memasukkan ke dalam tiap elemen matriks.
}}
// menampilkan isi dari elemen matriks ke layar.
for(baris=0; baris< 2; baris++){
for (kolom=0;kolom < 2; kolom++){
printf(“%d”,a[baris][kolo]);
// menampilkan setiap elemen matriks ke layar.
}}}
4.3.2.3 Mengubah isi dari matriks 2 Dimensi
Pada dasarnya matriks n dimensi dapat kita lakukan manipulasi pada setiap
elemen datanya, tapi kita tidak dapat menghapus isi dari elemen matriks
tersebut. Metode yang digunakan untuk melakukan manipulasi / pengubahan isi
dari elemen matriks tersebut sama dengan cara untuk memberikan nilai secara
langsung (assignment). Elemen matriks yang telah didefinisikan pada deklarasi
awal tidak dapat dirubah ataupun dihapus saat program berjalan (ingat
karakteristik bahwa array bersifat statis).
Contoh :
int a[2][2]; // deklarasi matriks dengan 4 elemen.
a[0][0] = 100; // memberi nilai 100 pada elemen (0,0).
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 26 dari 77
A[0][0] = 150; // merubah isi dari elemen (0,0) menjadi 150.
4.3.2.4 Penerapan Matriks 2 Dimensi.
Penerapan matriks 2 dimensi sangat banyak, biasanya digunakan untuk
perhitungan matematika ataupun sebagai dasar pemrograman linier. Berikut
akan diberikan contoh operasi matematika berupa penjumlahan dan
pengurangan matriks 2 dimensi.
4.3.2.5 Penjumlahan Matriks 2 Dimensi
Menjumlahkan 2 buah matriks A + B akan menghasilkan matriks baru C.
Operasi penjumlahan baru dapat dilakukan apabila ukuran dari matriks A dan B
sama dan seluruh elemen telah terisi nilai tertentu.
C[i,j] = A [i,j] + B[i,j] untuk setiap i dan j tertentu.
A = [ [2,2], [3,3] ]
B = [ [3,3] , [2,2] ]
C = A + B
C = [ [5,5], [5,5] ]
Pada dasarnya setiap elemen pada baris dan kolom tertentu akan dijumlahkan
pada matriks lain pada elemen baris dan kolom tertentu.
Contoh program :
#include <stdio.h>
void main(){
int a[2][2] = { {1,2}, {3,4}};
int b[2][2] = {{5,6}, {7,8}};
int c[2][2];
int baris, kolom;
for(baris = 0; baris <2; baris++){
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 27 dari 77
for(kolom = 0; kolom <2; kolom++){
c[baris][kolom] = a[baris][kolom] + b[baris][kolom];} // menjumlahkan
matriks.
}
for(baris = 0; baris <2; baris++){
for(kolom = 0; kolom <2; kolom++){
printf(“%d”,c[baris][kolom]); // menampilkan matriks hasil penjumlahan.
}}}
4.3.2.6 Pengurangan Matriks 2 Dimensi
Mengurangkan 2 buah matriks A + B akan menghasilkan matriks baru C.
Operasi penjumlahan baru dapat dilakukan apabila ukuran dari matriks A dan B
sama dan seluruh elemen telah terisi nilai tertentu.
C[i,j] = A [i,j] - B[i,j] untuk setiap i dan j tertentu.
A = [ [5,5], [6,6] ]
B = [ [3,3] , [2,2] ]
C = A – B
C = [ [2,2], [4,4] ]
Pada dasarnya setiap elemen pada baris dan kolom tertentu akan dikurangkan
pada matriks lain pada elemen baris dan kolom tertentu.
Contoh program :
#include <stdio.h>
void main(){
int a[2][2] = { {1,2}, {3,4}};
int b[2][2] = {{5,6}, {7,8}};
int c[2][2];
int baris, kolom;
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 28 dari 77
for(baris = 0; baris <2; baris++){
for(kolom = 0; kolom <2; kolom++){
c[baris][kolom] = b[baris][kolom] - a[baris][kolom];}
// mengurangkan matriks. }
for(baris = 0; baris <2; baris++){
for(kolom = 0; kolom <2; kolom++){
printf(“%d”,c[baris][kolom]); // menampilkan matriks hasil penjumlahan.
}}}
4.3.3 Array Matriks 3 Dimensi
Pada dasarnya matriks array 3 dimensi memiliki kesamaan dalam hal
karakteristik dan aturan – aturan pemberian nilai, pengubahan nilai. Hal yang
harus diperhatikan adalah gambaran dari sebuah matriks array 3 dimensi yang
berbeda dengan array 1 dimensi ataupun matriks array 2 dimensi. Matriks array
3 dimensi bisa digambarkan seperti gambar 3 dimensi dan memang lebih
banyak dipergunakan sebagai dasar perhitungan matematika pemrograman
grafis yang menggunakan bentuk 3 dimensi.
4.3.3.1 Deklarasi Array 3 Dimensi
Tipe_data nama_matriks [elemen baris][elemen kolom][elemen detil_kolom];
Tipe data dapat berupa integer, float, boolean atau tipe data dasar lainnya.
Nama matriks disesuaikan dengan aturan penamaan variabel.
Elemen baris menunjukkan maksimal elemen baris matriks.
Elemen kolom menunjukkan maksimal elemen kolom matriks.
Elemen detil kolom menunjukkan maksimal elemen detil dari setiap kolom
matriks.
Contoh :
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 29 dari 77
Int a[2][2][2];
Baris/ Kolom 0 10 Lihat tabel 1.1 Lihat tabel 1.21 Lihat tabel 1.3 Lihat tabel 1.4
Pada matriks 3 dimensi memungkinkan untuk menyimpan elemen data pada
setiap kolom dari matriks. Sehingga bentuknya menjadi seperti ini.
Tabel 1.1
Pada matriks (0,0)
Indeks = 0
Nilai = 10
Indeks = 1
Nilai = 20
Tabel 1.2
Pada matriks (0,1)
Indeks = 0
Nilai = 30
Indeks = 1
Nilai = 40
Tabel 1.3
Pada matriks (1,0)
Indeks = 0
Nilai = 50
Indeks = 1
Nilai = 60
Tabel 1.4
Pada matriks (1,1)
Indeks = 0
Nlai = 70
Indeks = 1
Nilai = 80
Pada tabel – tabel diatas terlihat jelas bahwa penyimpanan data dilakukan pada
elemen detil dari setiap elemen baris dan kolom.
4.3.3.2 Memberikan dan membaca nilai dari matriks n dimensi.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 30 dari 77
Metode yang digunakan untuk memberikan nilai pada matriks 3 dimensi
memiliki kesamaan dengan matriks 2 dimensi ataupun dengan array 1 dimensi.
Terdapat 3 metode yang dapat digunakan, antara lain :
4.3.3.3 Melakukan Inisialisasi Matriks 3 Dimensi
Inisialisasi matriks berarti memberikan nilai pada setiap elemen ketika matriks
tersebut dideklarasikan. Metode ini hanya bisa dilakukan ketika kita sudah
mengetahui nilai yang hendak dimasukkan kedalam setiap elemen data dari
matriks.
Contoh :
Int a[2][2][2] = {
{ baris pertama
{1,2}, elemen baris pertama, kolom pertama
{3,4} elemen baris pertama, kolom kedua
},
{ baris kedua
{5,6}, elemen baris kedua, kolom pertama
{7,8} elemen baris kedua, kolom kedua
}}
Pada contoh diatas dijabarkan keberadaan nilai pada setiap indeks baris dan
kolom tertentu.
4.3.3.4 Memberikan nilai secara langsung (assignment)
Memberikan nilai secara langsung kepada matriks sama dengan memberikan
nilai secara langsung kepda sebuah variabel, yang membedakan adalah dalam
memberikan nilai kepada sebuah matriks kita harus mengetahui secara pasti
indeks baris dan kolomnya terlebih dahulu.
Contoh :
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 31 dari 77
Int a[2][2][2];
A[0[0][0] = 100; // memberikan nilai pada detil kolom dari indeks baris pertama
dan kolom pertama.
Hal yang harus diperhatikan dalam pemberian nilai ke dalam sebuah matriks
adalah indeks, kesalahan dalam pemberian indeks akan mengakibatkan
pemberian data pada elemen yang salah ataupun akan mengakibatkan program
error ( ini terjadi apabila indeks yang dituju lebih dari indeks maksimal yang
telah ditetapkan sebelumnya).
Contoh :
int a[2][2][2]; // mendeklarasikan matriks array 2 dimensi, sebanyak 4 elemen.
a[1][1][1] = 100; // benar. Akan memasukkan data ke elemen baris ke 1 dan
kolom ke 1.
A[3][2][1] = 20; // akan meberikan error pada program, karena elemen baris ke
3 tidak pernah didefinisikan sebelumnya.
o Melalui piranti masukan (keyboard ataupun file)
Memberikan nilai kepada matriks array dapat dilakukan juga melalui keyboard
secara langsung ataupun dengan membaca isi dari sebuah file. Metode yang
digunakan pada setiap bahasa pemrograman berbeda – beda.
Contoh :
Program akan mengisi matriks 3 dimensi dengan menginput langsung dari
keyboard dan langsung menampilkan ke standar output (layar monitor).
#include <stdio.h>
void main(){
int a[2][2][2];
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 32 dari 77
int baris, kolom,detil_kolom;
// meminta inputan matriks melalui keyboard.
for(baris=0; baris< 2; baris++){
for (kolom=0;kolom < 2; kolom++){
for(detil_kolom=0; detil_kolom <2; detil_kolom++){
scanf(“%d”,&a[baris][kolom][detil_kolom]); // meminta inputan dari keyboard
dan langsung memasukkan ke dalam tiap elemen matriks.
}}}
// menampilkan isi dari elemen matriks ke layar.
for(baris=0; baris< 2; baris++){
for (kolom=0;kolom < 2; kolom++){
for(detil_kolom=0; detil_kolom <2; detil_kolom++){
printf(“%d”,a[baris][kolom][detil_kolom]);
// menampilkan setiap elemen matriks ke layar.
}}}}
4.3.3.5 Mengubah isi dari matriks 3 Dimensi
Pada dasarnya matriks n dimensi dapat kita lakukan manipulasi pada setiap
elemen datanya, tapi kita tidak dapat menghapus isi dari elemen matriks
tersebut. Metode yang digunakan untuk melakukan manipulasi / pengubahan isi
dari elemen matriks tersebut sama dengan cara untuk memberikan nilai secara
langsung (assignment). Elemen matriks yang telah didefinisikan pada deklarasi
awal tidak dapat dirubah ataupun dihapus saat program berjalan (ingat
karakteristik bahwa array bersifat statis).
Contoh :
int a[2][2][2]; // deklarasi matriks dengan 4 elemen.
a[0][0][0] = 100; // memberi nilai 100 pada elemen (0,0).
A[0][0][0] = 150; // merubah isi dari elemen (0,0) menjadi 150.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 33 dari 77
o Penerapan Matriks 3 Dimensi.
Penerapan matriks 3 dimensi biasanya digunakan sebagai dasar perhitungan
pemrograman grafis 3 dimensi, karena dari struktur datanya memang
memenuhi kapasitas untuk menyimpan elemen data yang lebih besar daripada
matriks 2 dimensi. Berikut akan diberikan contoh operasi penjumlahan dan
pengurangan dari matriks 3 dimensi.
o Penjumlahan Matriks 3 Dimensi
Menjumlahkan 3 buah matriks A + B akan menghasilkan matriks baru C.
Operasi penjumlahan baru dapat dilakukan apabila ukuran dari matriks A dan B
sama dan seluruh elemen telah terisi nilai tertentu.
C[i,j,k] = A [i,,kj] + B[i,j,k] untuk setiap i, j dan k tertentu.
A = [ [ [2,2], [3,3] ] , [ [4,4],[5,5] ] ]
B = [ [ [3,3], [2,2] ] , [ [5,5],[4,4] ] ]
C = A + B
C = [ [ [5,5], [5,5] ] , [ [9,9],[9,9] ] ]
Pada dasarnya setiap detil elemen pada baris dan kolom tertentu akan
dijumlahkan dengan detil elemen baris dan kolom tertentu dari matriks lain.
Contoh program :
#include <stdio.h>
void main(){
int a[2][2][2] = {
{{1,2}, {3,4}} ,
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 34 dari 77
{{5,6}, {7,8}} ,
};
int b[2][2][2] = {
{{1,2}, {3,4}} ,
{{5,6}, {7,8}} ,
};
int c[2][2[2]];
int baris, kolom, detil_kolom;
for(baris = 0; baris <2; baris++){
for(kolom = 0; kolom <2; kolom++){
for(detil_kolom = 0; detil_kolom <2; detil_kolom++){
c[baris][kolom][detil_kolom] = a[baris][kolom][detil_kolom] + b[baris][kolom]
[detil_kolom];
// menjumlahkan matriks.
}}}
// menampilkan hasil penjumlahan ke layar.
for(baris = 0; baris <2; baris++){
for(kolom = 0; kolom <2; kolom++){
for(detil_kolom = 0; detil_kolom <2; detil_kolom++){
printf(“%d”,c[baris][kolom][detil_kolom]);
// menampilkan matriks hasil penjumlahan.
}}}
// akhir program.
}
o Pengurangan Matriks 3 Dimensi
Mengurangkan 2 buah matriks A + B akan menghasilkan matriks baru C.
Operasi penjumlahan baru dapat dilakukan apabila ukuran dari matriks A dan B
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 35 dari 77
sama dan seluruh elemen telah terisi nilai tertentu.
C[i,j,k] = A [i,,kj] + B[i,j,k] untuk setiap i, j dan k tertentu.
A = [ [ [5,5], [6,6] ] , [ [7,7],[8,8] ] ]
B = [ [ [3,3], [2,2] ] , [ [5,5],[4,4] ] ]
C = A - B
C = [ [ [2,2], [4,4] ] , [ [2,2],[4,4] ] ]
Pada dasarnya setiap detil elemen pada baris dan kolom tertentu akan
dikurangkan dengan detil elemen baris dan kolom tertentu dari matriks lain.
Contoh program :
#include <stdio.h>
void main(){
int a[2][2][2] = {
{{8,8}, {9,9}} ,
{{7,7}, {20,12}} ,
};
int b[2][2][2] = {
{{1,2}, {3,4}} ,
{{5,6}, {7,8}} ,
};
int c[2][2[2]];
int baris, kolom, detil_kolom;
for(baris = 0; baris <2; baris++){
for(kolom = 0; kolom <2; kolom++){
for(detil_kolom = 0; detil_kolom <2; detil_kolom++){
c[baris][kolom][detil_kolom] = a[baris][kolom][detil_kolom] - b[baris][kolom]
[detil_kolom];
// mengurangkan matriks.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 36 dari 77
}}}
// menampilkan hasil pengurangan ke layar.
for(baris = 0; baris <2; baris++){
for(kolom = 0; kolom <2; kolom++){
for(detil_kolom = 0; detil_kolom <2; detil_kolom++){
printf(“%d”,c[baris][kolom][detil_kolom]);
// menampilkan matriks hasil pengurangan.
}}}
// akhir program.
}
4.4 Penggunaan Prosedur dan Fungsi.
Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk
mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang
memanggilnya. Fungsi merupakan elemen utama dalam bahasa C karena bahasa
C sendiri terbentuk dari kumpulan fungsi-fungsi. Dalam setiap program bahasa C,
minimal terdapat satu fungsi yaitu fungsi main(). Fungsi banyak diterapkan
dalam program-program C yang terstruktur. Keuntungan penggunaan fungsi
dalam program yaitu program akan memiliki struktur yang jelas (mempunyai
readability yang tinggi) dan juga akan menghindari penulisan bagian program
yang sama. Dalam bahasa C fungsi dapat dibagi menjadi dua, yaitu fungsi
pustaka atau fungsi yang telah tersedia dalam bahasa C dan fungsi yang
didefinisikan atau dibuat oleh programmer. Sebelum mengenal lebih lanjut
mengenai fungsi , ada baikinya kita mempelajari sedikit tentang file library.
4.4.1 Apa itu File Library ?
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 37 dari 77
File library adalah file yang telah disediakan pada masing – masing bahasa
pemrograman yang didalamnya memuat fungsi – fungsi yang dapat digunakan
untuk membantu pemrogram dalam menyusun kode program. Dalam setiap
bahasa pemrograman biasanya menyediakan file library lebih dari satu.
Pengetahuan terhadap fle library ini sangat penting, karena biasanya setiap
bahasa pemrograman mengelompokkan fungsi – fungsi tersebut ke dalam file
library tertentu berdasarkan fungsionalitasnya.
Contoh :
File library stiring.h pada bahasa C, didalamnya terdapat fungsi – fungsi yang
digunakan untuk melakukan manipulasi string.
File library math.h pada bahasa C, didalamnya terdapat fungsi – fungsi yang
digunakan untuk melakukan operasi matematika.
Dan banyak lagi file – file library, tergantung dari bahasa pemrograman yang
digunakan.
4.4.1.1 Fungsi Operasi String (tersimpan dalam header file
“string.h”)
. strcpy()
Berfungsi untuk menyalin suatu string asal ke variable string tujuan.
Bentuk umum : strcpy(var_tujuan, string_asal);
. strlen()
berfungsi untuk memperoleh jumlah karakter dari suatu string.
Bentuk umum : strlen(string);
. strcat()
Digunakan untuk menambahkan string sumber ke bagian akhir dari string
tujuan.
Bentuk umum : strcat(tujuan, sumber);
. strupr()
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 38 dari 77
Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf
capital.
Bentuk umum : strupr(string);
strlwr()
Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf
kecil semua.
Bentuk umum : strlwr(string);
. strcmp()
Digunakan untuk membandingkan dua buah string.
Hasil dari fungsi ini bertipe integer dengan nilai :
(a) Negative, jika string pertama kurang dari string kedua.
(b) Nol, jika string pertama sama dengan string kedua
(c) Positif, jika string pertama lebih besar dari string kedua.
Bentuk umum : strcmp(string1, string2);
4.4.1.2 Fungsi Operasi Karakter (tersimpan dalam header
“ctype.h”)
. islower()
Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter
merupakan huruf kecil.
Bentuk umum : islower(char);
. isupper()
Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter
merupakan huruf kapital.
Bentuk umum : isupper(char);
. isdigit()
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 39 dari 77
Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter
merupakan sebuah digit.
Bentuk umum : isdigit(char);
. tolower()
Fungsi akan mengubah huruf capital menjadi huruf kecil.
Bentuk umum : tolower(char);
. toupper()
Fungsi akan mengubah huruf kecil menjadi huruf kapital.
Bentuk umum : toupper(char);
4.4.1.3 Fungsi Operasi Matematik (tersimpan dalam header
“math.h” dan “stdlib.h”)
. sqrt()
Digunakan untuk menghitung akar dari sebuah bilangan.
Bentuk umum : sqrt(bilangan);
. pow()
Digunakan untuk menghitung pemangkatan suatu bilangan.
Bentuk umum : pow(bilangan, pangkat);
. sin(), cos(), tan()
Masing-masing digunakan untuk menghitung nilai sinus, cosinus dan
tangens dari suatu sudut.
Bentuk umum :
sin(sudut);
cos(sudut);
tan(sudut);
. atof()
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 40 dari 77
Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe
double.
Bentuk umum : atof(char x);
. atoi()
Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe
integer.
Bentuk umum : atoi(char x);
. div()
Digunakan untuk menghitung hasil pembagian dan sisa pembagian.
Bentuk umum : div_t div(int x, int y)
Strukturnya :
typedef struct
{ int qout; // hasil pembagian
int rem // sisa pembagian
} div_t;
. max()
Digunakan untuk menentukan nilai maksimal dari dua buah bilangan.
Bentuk umum : max(bilangan1, bilangan2);
. min()
Digunakan untuk menentukan bilangan terkecil dari dua buah bilangan.
Bentuk umum : min(bilangan1, bilangan2);
4.4.2 Membuat fungsi sendiri
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 41 dari 77
Meskipun hampit setiap bahasa pemrograman telah menyediakan berbagai
macam fungsi sesuai dengan kegunaannya, pada implementasinya pemrogram
harus memiliki kemampuan untuk mendefisinikan fungsi sendiri. Berikut akan
dijelaskan keuntungan yang diperoleh dengan memecah bagian kode program ke
dalam fungsi – fungsi kecil.
- Sebuah program berisikan sekumpulan instruksi logis yang dieksekusi
berdasarkan urutan, dalam penulisan program yang besar ada kemungkinan
baris – baris kode program yang berulang. Dengan menggunakan fungsi,
maka perulangan kode ini tidak perlu terjadi.
- Pemakaian fungsi dapat menyederhanakan penulisan kode program dan
mempengaruhi terhadap ukuran file dari program yang dihasilkan.
- Pemakaina fungsi dapat memudahkan proses debug (pemeriksaan) ketika
terjadi kesalahan pada kode program.
- Pemakaian fungsi dapat memudahkan pemrogram ketika mengembangkan
program yang lain, dan tidak perlu menuliskan kode program untuk sebuah
masalah yang sama.
- Pemakaian fungsi dapat meningkatkan efisiensi waktu pengembangan
program.
Pada dasarnya fungsi dibagi menjadi 2, yaitu :
- Fungsi
Fungsi adalah sebuah modul yang berisi sekumpulan kode program yang
disusun untuk sebuah tujuan tertentu. Fungsi akan mengembalikan sebuah
nilai tertentu kepada pemanggilnya.
Deklarasi Fungsi
Sebelum digunakan (dipanggil), suatu fungsi harus dideklarasikan dan
didefinisikan terlebih dahulu. Bentuk umum pendeklarasian fungsi adalah :
tipe_fungsi nama_fungsi(parameter_fungsi);
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 42 dari 77
Sedangkan bentuk umum pendefinisian fungsi adalah :
Tipe_fungsi nama_fungsi(parameter_fungsi)
{
statement
statement
………...
………...
return nilai_tertentu
}
Hal-hal yang perlu diperhatikan dalam penggunaan fungsi :
1. Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungsi
dengan nilai keluaran bertipe integer.
2. Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka
diperlukan pendefinisian penentu tipe fungsi.
3. Untuk fungsi yang tidak mempunyai nilai keluaran maka dimasukkan ke
dalam tipe void
4. Pernyataan yang diberikan untuk memberikan nilai akhir fungsi berupa
pernyataan return.
5. Suatu fungsi dapat menghasilkan nilai balik bagi fungsi pemanggilnya.
- Prosedur
Pada dasarnya sebuah modul juga berisi sekumpulan kode program yang
disusun untuk sebuah tujuan tertentu, yang membedakan dengan fungsi
adalah prosedur tidak mengembalikan nilai kepada pemanggilnya. Prosedur
hanya menjalankan sekumpulan instruksi tanpa mengembalikan nilai apapun.
Deklarasi Prosedur
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 43 dari 77
Sebelum digunakan (dipanggil), suatu prosedur harus dideklarasikan dan
didefinisikan terlebih dahulu. Bentuk umum pendeklarasian prosedur adalah :
void nama_prosedur(parameter_prosedur);
Pada pendeklarasian prosedur ditambahkan kata kunci void, yang berarti
tidak mengembalikan nilai apapun kepada pemanggilnya.
Sedangkan bentuk umum pendefinisian prosedur adalah :
void nama_prosedur(parameter_prosedur)
{
statement
statement
………...
………...
}
4.4.3 Parameter Formal dan Parameter Aktual
1. Parameter Formal adalah variabel yang ada pada daftar parameter
dalam
definisi fungsi.
2. Parameter Aktual adalah variabel (parameter) yang dipakai dalam
pemanggilan fungsi.
4.4.4 Cara Melewatkan Parameter
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 44 dari 77
Cara melewatkan suatu parameter dalam Bahasa C ada dua cara yaitu :
1. Pemanggilan Secara Nilai (Call by Value)
o Call by value akan menyalin nilai dari parameter aktual ke parameter
formal
o Yang dikirimkan ke fungsi / prosedur adalah nilai dari datanya, bukan
alamat
memori letak dari datanya.
o Fungsi / prosedur yang menerima kiriman nilai akan menyimpannya
alamat terpisah dari nilai aslinya yang digunakan oleh bagian program
yang memanggil fungsi / prosedur.
o Perubahan nilai di fungsi / prosedur (parameter formal) tidak akan
merubah nilai asli di bagian program yang memanggilnya.
o Pengiriman parameter secara nilai adalah pengiriman searah, yaitu
dari bagian program yang memanggil fungsi / prosedur ke fungsi /
prosedur yang dipanggil.
o Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak
hanya untuk sebuah variabel, elemen array atau konstanta saja.
2. Secara Referensi (Call by Reference)
o Pemanggilan secara Referensi merupakan upaya untuk melewatkan
alamat dari suatu variabel ke dalam fungsi / prosedur.
o Yang dikirimkan ke fungsi / prosedur adalah alamat letak dari nilai
datanya, bukan nilai datanya.
o Fungsi / prosedur yang menerima kiriman alamat ini makan
menggunakan alamat yang sama untuk mendapatkan nilai datanya.
o Perubahan nilai di fungsi / prosedur akan merubah nilai asli di bagian
program yang memanggil fungsi / prosedur.
o Pengiriman parameter secara referensi adalah pengiriman dua arah,
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 45 dari 77
yaitu dari fungsi / prosedur pemanggil ke fungsi / proisedur yang
dipanggil dan juga sebaliknya.
o Pengiriman secara acuan tidak dapat bdilakukan untuk suatu
ungkapan.
Penggolongan Variabel berdasarkan Kelas Penyimpanan (Storage
Class)
Ketika mempelajari tentang metode untuk melewatkan parameter ke dalam
fungsi / prosedur, hendaknya kita juga mengetahui jenis – jenis variabel
dengan ruang lingkupnya masing – masing.
4.4.5 Variabel lokal
Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi / prosedur
tertentu dan hanya berlaku pada fungsi / prosedur tersebut..
4.4.5.1 Sifat-sifat variabel lokal :
o Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan
lenyap ketika proses eksekusi terhadap fungsi berakhir.
o Hanya dikenal oleh fungsi tempat variabel dideklarasikan.
o Tidak ada inisialisasi secara otomatis (saat variabel diciptakan
nilainya random).
o Dideklarasikan dengan menambahkan kata “auto” (opsional).
4.4.6 Variabel global (eksternal)
Variabel global (eksternal) adalah variabel yang dideklarasikan di luar
fungsi.
4.4.6.1 Sifat-sifat variabel global :
o Dikenal (dapat diakses) oleh semua fungsi.
o Jika tidak diberi nilai awal secara otomatis berisi nilai nol.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 46 dari 77
o Dideklarasikan dengan menambahkan kata “extern” (opsional).
4.4.7 Variabel Statis
Variabel statis adalah variabel yang nilainya tetap dan bisa berupa variabel
lokal (internal) dan variabel global (eksternal).
4.4.7.1 Sifat-sifat variabel statis :
o Jika bersifat internal (lokal), maka variabel hanya dikenal oleh fungsi
tempat variabel dideklarasikan.
o Jika bersifat eksternal (global), maka variabel dapat dipergunakan
oleh semua fungsi yang terletak pada program yang sama.
o Nilai variabel statis tidak akan hilang walau eksekusi terhadap fungsi
telah berakhir.
o Inisialisasi hanya perlu dilakukan sekali saja, yaitu pada saat fungsi
dipanggil pertama kali.
o Jika tidak diberi nilai awal secara otomatis berisi nilai nol.
o Dideklarasikan dengan menambahkan kata “static”.
4.4.8 Variabel Register
Variabel Register adalah variabel yang nilainya disimpan dalam resister dan
bukan dalam memori RAM.
4.4.8.1 Sifat-sifat variabel register :
o Hanya dapat diterapkan pada variabel lokal yang bertipe int dan
char.
o Digunakan untuk mengendalikan proses perulangan (looping).
o Proses perulangan akan lebih cepat karena variabel register memiliki
kecepatan yang lebih tinggi dibandingkan variabel biasa.
o Dideklarasikan dengan menambahkan kata “register”.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 47 dari 77
Contoh 1.1
Program akan mendefinisikan sebuah fungsi untuk menghitung nilai akhir ujian
berdasarkan rumus perhitungan : Nilai akhir = (nilai ujian * 3) / 4. Hasil
perhitungan akan ditampilkan pada fungsi pemanggilnya.
#include <stdio.h>
int hitung_nilai(int nilai){
int n_akhir;
n_akhir = (nilai*3)/4;
return n_akhir;
}
void main(){
int nilai, n_akhir;
scanf(“%d”,&nilai); // meminta inputan nilai akhir dari keyboard.
n_akhir = hitung_nilai(nilai);
// memanggil fungsi hitung nilai dan menampung hasil kembaliannya.
printf(“Nilai akhir adalah : %d”, n_akhir); // mencetak hasil ke layer monitor.
}
Hal yang harus diperhatikan adalah antara variabel n_akhir pada void main
dengan variabel n_akhir dari fungsi hitung nilai memang memiliki kesamaan,
namun secara pengalokasian di dalam memori sudah berbeda. Variabel n_akhir
menjadi variabel lokal pada fungsi nya masing – masing.
Contoh 1.2
Program akan mendefisinikan sebuah prosedur untuk menuliskan hasil inputan
array dari keyboard ke layer. Prosedur akan melewatkan paramter by value.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 48 dari 77
#include <stdio.h>
void tampil(int data[]){
for(int baris=0; baris < 5; baris++){
printf(“%d”,data[baris]);
}}
void main(){
int data[5];
for(int baris = 0; baris < 5; baris++){
scanf(“%d”, &data[baris]);
}
tampil(data);
// mengirimkan nilai dari variabel array data ke prosedur tampil.
// tidak menerima nilai kembalian dari prosedur tampil.
}
Hal yang harus diperhatikan, meskipun pada void main mengrimkan paramerer
bernama data ke dalam prosedur tampil yang diterima oleh sebuah variabel
bernama data juga, pada prinsipnya kedua pihak memiliki alokasi yang berbeda
di memori computer meskipun memiliki nama yang sama. Nama variabel
pengirim dan penerima tidak harus sama, penyamaan nama hanya digunakan
untuk mempermudah penulisan kode program saja.
Contoh 1.3
Program akan melewatkan parameter by reference, dimana akan merubah nilai
sebuah variabel dari prosedur lain.
#include <stdio.h>
void ubah_nilai(int &nilai){
nilai = 100; // mengubah nilai dari pointer nilai menjadi 100.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 49 dari 77
}
void main(){
int a = 10;
printf(“Nilai a adalah : %d”,a);
// sebelum dirubah nilainya dalam prosedur ubah nilai.
Ubah_nilai(a);
// mengirimkan alamat dari variabel a ke prosedur ubah nilai.
printf(“Nilai a sekarang : %d”, a);
// nilai a sekarang sudah berubah menjadi 100.
}
4.5 Pemrograman Grafik.
Grafik komputer adalah gambar atau grafik yang dihasilkan oleh komputer.
Teknik-teknik yang dipelajari dalam grafik komputer adalah teknik-teknik
bagaimana membuat atau menciptakan gambar menggunakan komputer. Ada
perbedaan yang sangat mendasar antara foto dan gambar, yaitu pada foto
semua detail obyek terlihat sedangkan pada gambar (baik itu gambar manusia
atau gambar komputer) tidak dapat memperlihatkan semua detail yang ada
tetapi hanya detail-detail yang dianggap penting dalam menunjukkan pola suatu
gambar. Grafik komputer merupakan perangkat (tool) dasar yang digunakan
untuk membuat gambar dengan komputer. Dengan menggunakan perangkat
ini, penciptaan gambar dapat dilakukan bahkan dimudahkan dengan
menggunakan komputer
Program atau tool yang digunakan untuk menciptakan atau memanipulasi
gambar / foto sudah sangat banyak, mulai dari Adobe Photoshop, Corel Draw,
Adobe Image Ready, dll. Pada pembahasan ini tidak akan membahas mengenai
program atau tool tersebut, melainkan akan membahas mengenai dasar
pemrograman grafik menggunakan bahasa pemrograman Turbo C.
File library yang digunakan
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 50 dari 77
Fle library yang memuat fungsi – fungsi dalam operasi pemgrograman grafik di
kompiler turbo C adalah : graphics.h.
File tersebut harus dimuat terlebih dahulu pada tubuh program ketika hendak
memulai menulis program. Berikut akan dijelaskan beberapa fungsi – fungsi yang
penting dalam pemrograman grafik di Turbo C.
4.5.1 Fungsi – fungsi penting pada proses inisialisasi modus
grafis.
- void initgraph (int far * graphdriver, int far * graphmode, char far *
pathtodriver)
Untuk menjalankan sistem kepada modus grafik, prosedur initgraph harus
dipanggil terlebih dahulu. Prosedur ini akan memanggil driver grafik dari
tempat penyimpanan tertentu ataupun menvalidasi dari driver yang telah
diregister di dalam sistem dan kemudian menjalankan sistem pada modus
grafik. Selain itu, initgraph juga melakukan pengaturan ulang terhadap
pengaturan grafik kembali ke pengaturan awal.
Berikut adalah kegunaan dari setiap parameter pada prosedur initgraph :
• int far *graphdriver, ini akan mendeskripsikan driver grafis yang
akan digunakan ke dalam sistem nantinya.
• int far *graphmode, ini akan mendeskripsikan modus grafik yang
digunakan. Apabila nilai dari graphmode = DETECT, maka akan
membawa sistem kepada resolusi maksimal yang memungkinkan.
(Disarankan untuk memberikan nilai DETECT pada parameter
graphmode, dimaksudkan agar sistem langsung menyesuaikan diri
dengan kondisi resolusi maksimal).
• char far *pathtodriver, ini akan mendeskripsikan jalur dari driver
yang akan dimuat ke dalam sistem. File driver yang akan dicari
berkestensi (.BGI), dan apabila nilainya kosong maka pencarian akan
dilakukan pada direktori yang aktif saat ini.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 51 dari 77
- void far closegraph(void)
Prosedur ini digunakan untuk mengembalikan modus grafik kepada kondisi
sebelum pemanggilan prosedut initgraph(), dan seluruh alokasi memori yang
diakibatkan penggunaan modus grafik tersebut akan dilepaskan dan modus
sistem kembali ke modus teks.
- void far detechgraph(int far * graphdriver, int far * graphmode)
Prosedur ini digunakan untuk mendeteksi adaptor grafik yang terinstall pada
sistem kita, apabila tidak ada adaptor grafik yang terinstall pada komputer
kita maka akan menampilkan pesan kesalahan. Prosedur ini berfungsi untuk
melihat kapasitas maksimal yang dimiliki oleh sistem grafis kita.
- int registerbgidriver(void (*driver)(void))
Fungsi ini digunakan untuk melakukan registrasi terhadap driver grafis yang
akan digunakan. File driver dapat secara langsung dimuat dari media
penyimpanan ataupun dilakukan koversi terlebih dahulu ke dalam file (.OBJ)
menggunakan (BINOBJ.exe). Apabila proses registrasi berhasil, maka akan
mengembalikan nilai positif dan apabila gagal maka akan mengembalikan
nilai
negatif. Setelah proses registrasi berhasil, maka initgraph dapat memanggil
sebagai driver yang teregister di dalam sistem.
- int fat graphresult(void)
Fungsi ini akan mengembalikan nilai yang dihasilkan dari setiap operasi
grafikyang dilakukan. Fungsi ini hanya akan berisi 2 kemungkinan, pertama
adalah operasi grafis berhasil dilakukan dan kedua adalah operasi grafis gagal
dilakukan. Nilai kesalaahan yang dimuat mulai dari -18 hingga 0, dimana
pada setiap nilai tersebut memiliki jenis kesalahan sendiri – sendiri.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 52 dari 77
Kode Konstanta Pesan Kesalahan0 grOk Tidak ada kesalahan-1 grNoInitGraph (BGI) driver tidak terinstall-2 grNoDetected Perangkat grafis tidak ada-3 grFileNotFound File driver tidak ditemukan-4 grInvalidDriver File driver tidak valid-5 grNoLoadMem Memori tidak cukup-6 grNoScanMem Memori tidak cukup untuk scan fill-7 grNoFloodMem Memori tidak cukup untuk flood
fill-8 grFontNofFound File huruf tidak ada-9 grNoFontMem Memori tidak cukup load huruf-10 grInvalidMode Modus grafis tidak valid
-11 grError Grafis error-12 grIOError Grafis I/O error-13 grInvalidFont File huruf tidak valid-14 grInvalidFontNum Nomor huruf tidak valid
-15 grInvalidDeviceNum Nomor devicde tidak valid-18 grInvalidVersion Versi tidak valid
Pada implementasinya fungsi – fungsi yang digunakan untuk melakukan
inisialisasi modus grafis cukup banyak, beberapa contoh prosedur diatas adalah
prosedur yang paling sering digunakan dan sudah mampu untuk melakukan
manipulasi grafis atapun merubah sistem dari modus teks ke dalam modus
grafis. Untuk lebih jelasnya, silahkan melihat tutorial atau dokumentaso setiap
bahasa pemrograman.
4.5.2 Fungsi – fungsi penting dalam memanipulasi obyek grafis.
- void far setcolor(int color)
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 53 dari 77
Prosedur yang digunakan untuk melakukan editing terhadap warna dari
sistem grafis yang dipakai. Warna yang dirubah hanya warna tulisan ataupun
obyek saja.
- int far getcolor(void)
Fungsi yang digunakan untuk memperoleh warna yang aktif saat ini. Nilai
yang dihasilkan berupa nilai integer, dimana setiap nilai intereger tersebut
memiliki arti warna tertentu.
- void far setbkcolor(int color)
Prosedur yang digunakan untuk melakukan manipulasi warna backround dari
sebuah obyek atau tulisan.
- int far getbkcolo(void)
Fungsi yang digunakan untuk memperoleh warna background dari sebuah
obyek atau tulisan.
- int far getmaxcolor(void)
Fungsi yang digunakan untuk memperoleh maksimal warna yang dapat
digunakan / dilewatkan oleh prosedur setcolor atau setbkcolor. Setiap driver
grafis tertentu memiliki kapasitas yang berbeda – beda. Sebagai contoh :
Pada driver 256K EGA memiliki maksimal warna 15, yang berarti setcolor
dapat melewatkan parameter nilai dari 0 sampai 15, sedangkan pada driver
CGA (Hercules Monochrome Adapter) akan mengembalikan nilai 1.
- int far getmaxx(void)
Fungsi ini mengembalikan nilai maksimum dari kordinat x dari sistem. Nilai
maksimum dari kordinat ini tergantung dari driver dan modus grafik system.
- int far getmaxy(void)
Fungsi ini mengembalikan nilai maksimum dari kordinat y dari sistem. Nilai
maksimum dari kordinat ini tergantung dari driver dan modus grafik sistem.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 54 dari 77
- int far getx(void)
Fungsi ini akan mengembalikan nilai kordinat x berdasarkan posisi relative
kursor saat itu.
- int far gety(void)
Fungsi ini akan mengembalikan nilai kordinat y berdasarkan posisi relative
kursor saat itu.
- void far setlinestyle(int linestyle, unsigned upattern, int thickness)
Prosedur ini digunakan untuk melakukan pengaturan terhadap bentuk, jenis
dan ketebalan dari garis lurus. Garis ini seringkali digunakan dalam membuat
bentuk 2 dimensi seperti : garis lurus, rectangle, busur, lingkaran dan bentuk
polygon. Terdapat 3 buah parameter, antara lain :
• int linestyle, mendeskripsikan jenis dari garis.
• unsigned upattern, mendeskripsikan bentuk dari garis.
• int thickness, mendeskripsikan ketebalan dari garis.
- void settextjustify (int horiz, int vertz)
Prosedur ini digunakan untuk meletakkan sebuah string / kalimat berada
pada posisi relatif terhadap batas horisontal (batas kiri layar) dan vertikal
(batas atas layar).
Pada implementasinya, kita dapat melakukan pengesetan ulang terhadap
posisi relatif terhadap layar, seperti halnya posisi horisontal (LEFT_TEXT,
CENTER_TEXT, RIGHT_TEXT) dan vertikal (BOTTOM_TEXT, CENTER_TEXT,
TOP_TEXT). Prosedur ini hanya bekerja pada modus grafis dan tidak bekerja
pada modus teks.
- void outtextxy(int x, int y, char * text)
Prosedut outtextxy digunakan untuk menuliskan kalimat pada kordinat
tertentu menggunakan modus grafis. Terdapat 3 parameter, antara lain :
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 55 dari 77
• int x, akan mendeskripsikan nilai kordinat x.
• int y, akan mendeskripsikan nilai kordinat y.
• char * teks, berupa kalimat / string yang ingin dituliskan.
- void settextstyle( int font, int direction, int charsize)
Prosedur ini digunakan untuk melakukan pengesetan terhadap ukuran dan
jenis huruf yang digunakan pada modus grafis. Prosedur ini hanya berfungsi
pada modus grafis saja dan tidak pada modus teks. Terdapat 3 parameter,
antara lain :
• int font, akan mendeskripsikan jenis huruf yang digunakan. Terdapat 5
jenis huruf, yaiut : standar, sans_serif, gothic, triplex dan small font.
• Int direction, akan mendeskripsikan bagaimana sebuah kalimat aqkan
dituliskan ke dalam layar. Terdapat 2 parameter, yaitu : HORIZ_DIR
dan VERT_DIR. Dimana HORIZ_DIR akan menuliskan dari kiri ke
kanan, dan VERT_DIR akan menuliskan dari bawah ke atas.
• Int charsize, akan mendeskripsikan ukuran dari sebuah tulisan.
Rentang nilai dari 0 hingga 10 kali ukuran huruf biasa.
Pada implementasinya, untuk memanipulasi tampilan obyek atau tulisan pada
modus grafis terdapat cukup banyak fungsi – fungsinya. Pembahasan diatas
mengacu pada fungsi – fungsi yang sering digunakan dan untuk lebih
lengkapnya silahkan melihat tutorial / dokumentasi setiap bahasa
pemrograman.
4.5.3 Fungsi – fungsi penting untuk membuat obyek 2 Dimensi
- void far line( int x1, int y1, int x2, int y2)
Prosedur ini akan menggabarkan garis linier / lurus dari titik kordinat (x1,y1)
hingga titik kordinat (x2,y2) berdasarkan warna yang aktif saat itu.
Pengubahan warna dapat dilakukan dengan menggunakan prosesur
setcolor(int color).
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 56 dari 77
- void far linerel(int dx, int dy)
Prosedur ini akan menggambarkan garis linier / lurus dari posisi saat ini
hingga jarak relative horisontal yang ditentukan dalam dx dan jarak relative
vertikal yang ditentukan dalam dy.
- void far lineto (int x, int y)
Prosedur ini akan menggambarkan garis lurus / linier dari posisi saat ini
hingga kordinat yang dituju yang didefinisikan dalam nilai x dan y. Setelah itu
posisi kursor akan dipindah ke kordinat (x,y).
- void far ellipse(int x, int y, int stangle, int endangle,int xradius, int
yradius)
Prosedur ini digunakan untuk menggambar busur elips berdasarkan warna
yang aktif saat itu. Terdapat 6 buah parameter, antara lain :
• int x, ini sebagai pusat kordinat x penggambaran.
• int y, ini sebagai pusak kordinat y penggambaran.
• int stangle, sebagai sudut awal (dalam derajat)
• int endangle, sebagai sudut akhir (dalam derajat)
• int xradius, sebagai diameter horizontal dari elips yang digambar.
• Int yradius,sebagai diameter vertikal dari elips yang digambar.
- void far fillellipse(int x, int y,int xradius, int yradius)
Prosedur ini digunakan untuk menggambar busur elips dan mengisi elips
tersebut menggunakan warna dan metode pengisian yang telah diatur
sebelumnya menggunakan prosedur setfilltype(). Terdapat 4 buah parameter,
antara lain :
• int x, ini sebagai pusat kordinat x penggambaran.
• int y, ini sebagai pusak kordinat y penggambaran.
• int xradius, sebagai diameter horizontal dari elips yang digambar.
• Int yradius,sebagai diameter vertikal dari elips yang digambar.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 57 dari 77
- void far arc(int x, int y, int stangle, int endangle, int radius)
Prosedur ini digunakan untuk menggambarkan bentuk busur. Terdapat 5
buah parameter, antara lain :
• int x, ini sebagai pusat kordinat x penggambaran.
• int y, ini sebagai pusak kordinat y penggambaran.
• int stangle, sebagai sudut awal (dalam derajat)
• int endangle, sebagai sudut akhir (dalam derajat)
• int radius, sebagai diameter dari busur yang akan digambar.
- void far circle(int x, int y, int radius)
Prosedur ini digunakan untuk menggambarkan bentuk lingkaran. Terdapat 3
buah parameter, antara lain :
• int x, ini sebagai pusat kordinat x penggambaran.
• int y, ini sebagai pusak kordinat y penggambaran.
• int radius, sebagai diameter dari busur yang akan digambar.
- void far rectangle(int left, int top, int right, int bottom)
Prosedur ini digunakan untuk menggambar bentuk rectangle (bentuk bujur
sangkar dengan siku berbentuk sedikit elips). Terdapat 4 buah parameter,
antara lain :
• int top, menunjukkan kordinat x dari ujung kiri atas.
• Int left, menunjukkan kordinat y dari ujung kiri atas.
• Int right, menunjukkan kordinat x dari ujung kanan bawah.
• Int bottom, menunjukkan kordinat y dari ujung kanan bawah.
Prosedur akan menggambarkan sesuai dengan warna dan bentuk garis yang
telah didefinisikan sebelumnya.
- void far drawpoly(int numpoints, int far *polypoints)
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 58 dari 77
Prosedur ini digunakan untuk menggambar bentuk polygon menggunakan
bentuk garis dan warna yang telah didefinisikan sebelumnya. Terdapat 2
buah parameter, antara lain :
• int numpoints, mendeskripsikan jumlah titik yang ada.
• Int far *polypoints, mendeskripsikan sekumpulan pasangan titik yang
digunakan sebagai titik kordinat dari bentuk polygon. Jumlah pasangan
titik ini = 2 X jumlah titik (numpoints). Setiap pasang titik
medeskripsikan kordinat (x,y) dari bentuk polygon.
- void far fillpoly(int numpoints, int far *polypoints)
Prosedur ini sama persis dengan prosedur drawpoly diatas, perbedaannya
adalah prosedur ini akan mengisi bentuk polygon dengan warna dan model
pengisian yang telah didefinisikan sebelumnya. Penjelasan mengenai tiap
parameter, sama dengan penjelasan pada prosedur drawpoly.
- void far pieslice(int x, int y, int stangle, int endangle, int radius)
Prosedur ini digunakan untuk menggambarkan bentuk diagram pie. Terdapat
5 buah parameter, antara lain :
• int x, ini sebagai pusat kordinat x penggambaran.
• int y, ini sebagai pusak kordinat y penggambaran.
• int stangle, sebagai sudut awal (dalam derajat)
• int endangle, sebagai sudut akhir (dalam derajat)
• int radius, sebagai diameter dari busur yang akan digambar.
Perbedaan antara arc dengan pieslice adalah pada bentuk ini akan dilakukan
pengisian warna. Warna yang diisikan sesuai pengaturan warna melalui
prosedur setfillstyle().
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 59 dari 77
4.5.4 Contoh – contoh program :
Contoh 1.1
Program mendaftarkan driver grafis EGAVGA ke dalam sistem.
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;
errorcode = registerbgidriver(EGAVGA_driver);
/*apabila registrasi gagal */
if (errorcode < 0) {
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
}
/* initialisasi graphics*/
initgraph(&gdriver, &gmode, "");
/* memeriksa apakah inisialisasi grafis berhasil*/
errorcode = graphresult();
if (errorcode != grOk) /* an error occurred */ {
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* terminate with an error code */
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 60 dari 77
}
Contoh 1.2
Program membuka modus grafis dan menggambarkan garis sederhana
kemudian mengembalikan ke modus teks.
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
/* auto detect */
int gdriver = DETECT, gmode, errorcode;
// inisialisasi modus grafis.
initgraph(&gdriver, &gmode, "");
errorcode = graphresult(); // melihat apakah modus grafis berhasil di load.
if (errorcode != grOk) { // gagal inisialisasi modus grafis.
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* program terminasi dengan ada error */
}
line(0, 0, getmaxx(), getmaxy()); // menggambar garis sederhana.
closegraph(); // mengembalikan ke modus teks.
return 0; // program terminasi tanpa ada error.
}
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 61 dari 77
Contoh 1.3
Program untuk menuliskan teks ke dalam modus grafis pada posisi kordinat
(50,50).
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void){
/*auto detect */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
/* inisialisasi modus grafis*/
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
// memeriksa apakah berhasil meload modus grafis.
if (errorcode != grOk) { // apabila terjadi kegagalan.
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* program di terminasi dengan ada kesalahan */ }
midx =50;
midy = 50;
outtextxy(midx, midy, "Testing Sederhana"); // menulis pada kordinat
(50,50)
closegraph(); // kembali ke modus teks.
return 0; /* program di terminasi tanpa ada kesalahan */
}
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 62 dari 77
Contoh 1.4
Program untuk menggambar garis lurus dari kordinat (10,20) hingga (30,50)
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
/* auto detect */
int gdriver = DETECT, gmode, errorcode;
// inisialisasi modus grafis.
initgraph(&gdriver, &gmode, "");
errorcode = graphresult(); // melihat apakah modus grafis berhasil di load.
if (errorcode != grOk) { // gagal inisialisasi modus grafis.
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* program terminasi dengan ada error */
}
line(10,20, 30, 50); // menggambar garis sederhana.
closegraph(); // mengembalikan ke modus teks.
return 0; // program terminasi tanpa ada error.
}
Contoh 1.5
Program untuk menggambar lingkaran pada kordinat (20,20) dengan radius 50.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 63 dari 77
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void){
/* Auto Detect */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int radius = 100;
/* inisialisasi ke modus grafis */
initgraph(&gdriver, &gmode, "")
errorcode = graphresult(); // melihat apakah berhasil meload modus grafis.
if (errorcode != grOk) { // terdapat kegagalan dalam meload modus grafis.
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* program di terminasi dengan ada kesalahan */
}
midx = getmaxx() / 2;
midy = getmaxy() / 2;
setcolor(getmaxcolor()); // atur warna sistem.
circle(midx, midy, radius); // mengammbar bentuk lingkaran.
closegraph(); // mengembalikan ke modus teks.
return 0; /* program di terminasi dengan ada kesalahan */
}
Contoh 1.6
Program untuk menggambarkan bentuk rectangle pada kordinat (10,10) dan
(50,100).
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 64 dari 77
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void){
/* Auto Detect */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
int radius = 100;
/* inisialisasi ke modus grafis */
initgraph(&gdriver, &gmode, "")
errorcode = graphresult();
// melihat apakah berhasil meload modus grafis.
if (errorcode != grOk) { // terdapat kegagalan dalam meload modus grafis.
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* program di terminasi dengan ada kesalahan */
}
left = getmaxx() / 2 - 50;
top = getmaxy() / 2 - 50;
right = getmaxx() / 2 + 50;
bottom = getmaxy() / 2 + 50;
rectangle(left,top,right,bottom); // menggambar bentuk rectangle.
closegraph(); // mengembalikan ke modus teks.
return 0; /* program di terminasi dengan ada kesalahan */ }
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 65 dari 77
Contoh 1.7
Program untuk menggambar bentuk poligon dengan 5 titik. Masing – masing
titik kordinat akan digambarkan langsung di dalam program.
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
/* auto detect */
int gdriver = DETECT, gmode, errorcode;
int maxx, maxy;
/* array verteks dari poligon */
int poly[10];
initgraph(&gdriver, &gmode, ""); // inisialisaasi modus grafis.
errorcode = graphresult(); // melihat apakah modus grafis berhasil di load.
if (errorcode != grOk) { // terjadi kegagalan dama load modus grafis.
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); // program diterminasi dengan ada keslahan.
}
maxx = getmaxx();
maxy = getmaxy();
poly[0] = 20; /* verteks pertama */
poly[1] = maxy / 2;
poly[2] = maxx - 20; /* kedua */
poly[3] = 20;
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 66 dari 77
poly[4] = maxx - 50; /* ketiga */
poly[5] = maxy - 20;
poly[6] = maxx / 2; /*keempat */
poly[7] = maxy / 2;
poly[8] = poly[0]; /* kelima = akhir penutur = verteks awal */
poly[9] = poly[1];
drawpoly(5, poly); // menggambar bentuki poligon.
closegraph(); // mengembalikan ke modus teks.
return 0; // program diterminasi tanpa ada kesalahan.
}
4.6 Pengenalan Obyek 3 Dimensi
Pemrograman grafis selau tidak pernah dari obyek 3 Dimensi, karena dewasa ini
penggunaan obyek 3 dimensi semakin bervariatif. Mulai dari game console,
game online, film animasi hingga dunia periklanan. Program dan tool – tool
yang digunakan untuk membuat obyek 3 dimensi juga semakin bervariatif,
mulai dari openGL, 3D Studio Max, Maya dan lain sebagainya. Pada
pembahasan ini kita akan mempelajari dasar – dasar dalam pemrograman
obyek 3 Dimensi.
Objek 3 dimensi adalah sebuah model struktur data yang menyatakan suatu
gambar 3D dibentuk dan disusun. Objek 3D didefinisikan dengan :
• Objek 3D adalah sekumpulan titik-titik 3D (x,y,z) yang membentuk luasan-
luasan (face) yang digabungkan menjadi satu kesatuan.
• Face adalah gabungan titik-titik yang membentuk luasan tertentu atau
sering dinamakan dengan sisi. Dari definisi ini, dapat dikatakan bahwa
objek 3D merupakan kumpulan titik-titik dan kumpulan face yang
merupakan susunan dari titik-titik yang ditentukan. Seperti gambar
kubus, kubus terdiri dari 8 titik dan 6 sisi/face. Dimana face merupakan
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 67 dari 77
polygon atau kumpulan titik-titik yang disusun urutannya. Dalam kubus,
facenya semua berupa bujur sangkar dengan 4 titik.
Pada dasarnya sebuah obyek 3D terdiri dari elemen – elemen dasar, antara lain :
• Point
Point adalah sebuah titik yang digunakan untuk membangun obyek.
Setiap titik dalam obyek 3D memiliki nilai dalam x, y, z .
• Polyline
Polyline adalah sebuah fungsi yang dibentuk dari beberapa garis yang
saling berhubungan dan membentuk sebuh kurva yang terbuka
• Polygon
Polygon adalah suatu fungsi yang mirip dengan polyline hanya saja
hasilnya adalah kurva tertutup, sedangkan polyline hasilnya kurva terbuka.
• Filled Polygon (Face)
Filled Polygon adalah sebuah polygon yang bagian dalamnya diwarnai
atau dipenuhi dengan sebuah warna tertentu. Filled polygon biasanya
digunakan sebagai face dari pembentukan obyek 3D.
• Gradate Polygon
Gradate polygon adalah sebuah polygon yang bagian dalamnya memiliki
warna – warna yang bergradasi dari satu warna ke warna yang lain.
4.7 Pengenalan Terhadap Program OpenGL
Pada pembuatan obyek 3D, kita tidak dapat membuat dengan metode yang kita
gunakan untuk membuat obyek 2D. Meski pada dasarnya sebuah obyek 3D
adalah sekumpulan titik – titik (point) yang terhubung satu sama lain. Untuk
menghasilkan sebuah obyek 3D yang baik maka kita akan mempelajari tentang
dasar – dasar penerapan program openGL.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 68 dari 77
OpenGL adalah software (perangkat lunak) interface perangkat keras grafik.
Interface ini terdiri dari sekitar 150 command atau perintah yang berbeda yang
bisa digunakan untuk menentukan objek dan operasi yang dibutuhkan untuk
menghasilkan aplikasi tiga dimensi yang interaktif. OpenGL didesain untuk
memperlancar, diimplementasikan pada banyak jenis perangkat keras yang
berbeda.
OpenGL tidak menyediakan command (perintah) untuk menggambarkan model
dari objek tiga dimensi, kita harus membangun model yang diinginkan dari satu
set kecil dari geometri seperti titik, garis, dan poligon.
Library yang menyediakan fitur ini tentunya bisa dibuat dengan OpenGL.
The OpenGL Utility Library (GLU) menyediakan beberapa fitur modeling, seperti
permukaan kuadrik, kurva, dan bentuk-bentuk lainnya. GLU adalah bagian
standar dari setiap implementasi OpenGL. OpenGL memiliki lebih dari 200 fungsi.
4.7.1 Fungsi tersebut bisa dikelompokkan menjadi :
• Fungsi primitif, menentukan elemen yang bisa menghasilkan gambar di
layar. Fungsi ini terdiri dari 2 jenis, yaitu primitive geometric seperti
polygon (segi banyak) yang bisa dibuatmenjadi dua, tiga, atau empat
dimensi, dan primitif gambar seperti bitmaps.
• Fungsi atribut, mengontrol tampilan dari primitif. Fungsi ini menentukan
warna, jenis garis, properti material, sumber cahaya, dan tekstur.
• Fungsi pandangan, menentukan properti kamera. OpenGL menyediakan
sebuah virtual kamera yang bisa diposisikan dan diorientasikan relatif ke
obyek yang ditentukan dengan fungsi primitif. Lensa kamera juga bisa
dikendalikan sehingga bisa dihasilkan sudut yang lebar dan pandangan
telefoto (jarak jauh).
• Fungsi windowing, fungsi ini mengendalikan windows pada layar dan
penggunaan dari mouse dan keyboard.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 69 dari 77
• Fungsi kontrol, menghidupkan macam-macam fitur OpenGL.
Fungsi-fungsi OpenGL dimuat didalam 2 library yang disebut dengan gl
dan glu (atau GL dan GLU). Library yang pertama, adalah fungsi utama
dari OpenGL, berisi semua fungsi OpenGL yang dibutuhkan sedangkan
yang kedua, the openGL Utility Llibrary (GLU) memuat fungsi yang ditulis
menggunakan fungsi dari library utama dan sangat membantu bagi
pengguna. Fungsi utama mempunyai nama yang diawali dengan “gl”
seperti “glVertex3f()”, sedangkan fungsi didalam GLU mempunyai nama
yang diawali dengan “glu” seperti “gluOrtho2D()”.
4.7.2 Proses Instalasi OpenGL
Pada pembahasan kali ini, kita akan menggunakan sistem operasi Linux Debian
sebagai system operasi dasar dimana program OpenGl berjalan. Pembahasan ini
tidak menjelaskan secara detil cara untuk melakukan instalasi system operasi
Linux (dapat melihat materi instalasi linux). Berikut akan dijelakan bagaimana
melakukan instalasi program OpenGL pada sistem operasi linux.
Untuk melakukan kompilasi dari program OpenGL yang dibuat, diharapkan
melakukan instalasi terhadap compiler C (gcc) dengan langkah –langkah sebagai
berikut :
• Instal kompiler C (gcc) dengan mengetik :
# apt-get install gcc-3.4
• Instal paket library yang dibutuhkan bahasa pemrograman C dan OpenGL
# apt-get install libc6 libc6-dev
# apt-get install freeglut3 freeglut3-dev
# apt-get install libglut3 libglut3-dev
# apt-get install xlibmesa-gl xlibmesa-gl-dev
# apt-get install xlibmesa-glu xlibmesa-glu-dev
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 70 dari 77
Untuk menulis program C atau OpenGL di dalam system operasi linux, anda tidak
memerlukan editor khusus. Anda bias menggunakan editor biasa semacam
kwrite atau editor vi atau vim. Secara teknis sintak – sintak yang digunakan
sama dengan bahasa C.
4.7.3 Program dasar dari OpenGL terdiri dari 2 fungsi yaitu :
• Fungsi main()
Fungsi main berfungsi untuk inisialisasi OpenGL.
• Fungsi display()
Fungsi display berfungsi untuk menetukan grafik yang akan ditampilkan
dalam window.
Contoh 1.8
Program membuat sebuah kotak putih dengan latar layer kotak hitam.
#include<GL/glut.h>
void display(){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f(0.5, 0.5);
glVertex2f(0.5, -0.5);
glEnd();
glFlush();
}
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 71 dari 77
int main(int argc, char** argv){
glutInit(&argc, argv);
glutCreateWindow(“simple”);
glutDisplayFunc(display);
glutMainLoop();
}
4.7.4 Proses Kompilasi Program OpenGL
Proses kompilasi program OpenGl tergantung pada sistem operasi yang
digunakan, karen pada pembahasan ini kita mengasumsikan menggunakan
sistem operasi Linux Debian, maka contoh yang diberikan ini berdasarkan
sistem operasi linux.
gcc nama_file.c –o nama_file –lglut –lGLU –lGL –lX11 –lm
Untuk penjelasan lebih lanjut mengenai fungsi – fungsi yang terkandung dalam
program OpenGl, silahkan mencari dokumentasi atau tutorial tentang
pemrograman OpenGL lebih lanjut. Pembahasan ini tidak dimaksudkan untuk
mengupas program OpenGL dengan detail, namun lebih ditujukan untuk
mengenalkan dasar – dasar pemrograman obyek 3D dan pengenalan dasar
program OpenGL.
4.7.5 Algoritma Animasi Sederhana
Animasi pada dasarnya adalah membuat objek seolah-olah bergerak sehingga
terjadi pergerakan yang membuat mata kita memandangnya sebagai sebuah
kesatuan utuh. Padahal dibalik itu, animasi dibuat berdasarkan pada bagian
-bagian tertentu (terpisah) dan baru kemudian akan disatukan untuk
mendapatkan pergerakan yang sempurna. Pada dasarnya animasi adalah proses
sebuah obyek bergerak dari satu posis ke posii yang lain dalam hitungan
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 72 dari 77
interval waktu tertentu. Obyek yang digerakkan dapat berupa obyek 2D, obyek
3D atau bahkan sebuah tulisan sederhana. Dewasa ini telah banyak
berkembang program – program atau tool yang digunakan untuk membuat
program animasi antara lain : Macromedia Flash, Studio 3D Max, Maya, Adobe
Image Ready atau bahkan menggunakan program OpenGl yang telah sedikit
kita bahas diatas.
Berikut akan diberikan contoh sederhana animasi obyek 2D menggunakan
bahasa pemrograman C.
Contoh 1.9
Program membuat tulisan dalam modus grafis bergerak ke kanan dengan
interval waktu sebanyak 200 mili sekon, dan program akan terus bergerak
hingga pengguna menekan tombol apapun dari keyboard. Ketika tulisan
mencapai batas kanan dari layar maka tulisan akan kembali ke kordinat awal.
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void){
/*auto detect */
int gdriver = DETECT, gmode, errorcode;
int midx, midy;
/* inisialisasi modus grafis*/
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
// memeriksa apakah berhasil meload modus grafis.
if (errorcode != grOk) { // apabila terjadi kegagalan.
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 73 dari 77
getch();
exit(1); } /* program di terminasi dengan ada kesalahan */
midx =50;
midy = 50;
while (!kbhit()){ // lakukan perulangna hingga ada penekanan keyboard.
outtextxy(midx, midy, "Hello");
delay(200);
// menahan selama 200 mili sekon sebelum melanjutkan ke instruksi
selanjutnya
outtextxy(midx, midy, " "); // menghapus tulisan yang lama.
midx+=10; // menambah jumlah kordinat x sebanyak 10 titk.
// jika sudah mencapai ujung dari layar.
if (midx == (getmaxx() – 5)){ // karena tulisan hello panjangnya 5.
midx = 50; // kembali ke posisi awal.
}
} // akhir tubuh perulangan.
closegraph(); // kembali ke modus teks.
return 0; /* program di terminasi tanpa ada kesalahan */
}
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 74 dari 77
BAB V
SUMBER-SUMBER YANG DIPERLUKAN
UNTUK PENCAPAIAN KOMPETENSI
5.1. Sumber Daya Manusia
Pelatih
Pelatih Anda dipilih karena dia telah berpengalaman. Peran Pelatih adalah untuk :
a. Membantu Anda untuk merencanakan proses belajar.
b. Membimbing Anda melalui tugas-tugas pelatihan yang dijelaskan dalam tahap
belajar.
c. Membantu Anda untuk memahami konsep dan praktik baru dan untuk
menjawab pertanyaan Anda mengenai proses belajar Anda.
d. Membantu Anda untuk menentukan dan mengakses sumber tambahan lain yang
Anda perlukan untuk belajar Anda.
e. Mengorganisir kegiatan belajar kelompok jika diperlukan.
f. Merencanakan seorang ahli dari tempat kerja untuk membantu jika diperlukan.
Penilai
Penilai Anda melaksanakan program pelatihan terstruktur untuk penilaian di tempat
kerja. Penilai akan :
a. Melaksanakan penilaian apabila Anda telah siap dan merencanakan proses
belajar dan penilaian selanjutnya dengan Anda.
b. Menjelaskan kepada Anda mengenai bagian yang perlu untuk diperbaiki dan
merundingkan rencana pelatihan selanjutnya dengan Anda.
c. Mencatat pencapaian / perolehan Anda.
Teman kerja/sesama peserta pelatihan
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 75 dari 77
Teman kerja Anda/sesama peserta pelatihan juga merupakan sumber dukungan dan
bantuan. Anda juga dapat mendiskusikan proses belajar dengan mereka.
Pendekatan ini akan menjadi suatu yang berharga dalam membangun semangat tim
dalam lingkungan belajar/kerja Anda dan dapat meningkatkan pengalaman belajar
Anda.
5.2. Sumber-sumber Perpustakaan
Pengertian sumber-sumber adalah material yang menjadi pendukung proses
pembelajaran ketika peserta pelatihan sedang menggunakan Pedoman Belajar ini.
Sumber-sumber tersebut dapat meliputi :
1. Buku referensi dari perusahan
2. Lembar kerja
3. Gambar
4. Contoh tugas kerja
5. Rekaman dalam bentuk kaset, video, film dan lain-lain.
Ada beberapa sumber yang disebutkan dalam pedoman belajar ini untuk membantu
peserta pelatihan mencapai unjuk kerja yang tercakup pada suatu unit kompetensi.
Prinsip-prinsip dalam CBT mendorong kefleksibilitasan dari penggunaan sumber-
sumber yang terbaik dalam suatu unit kompetensi tertentu, dengan mengijinkan
peserta untuk menggunakan sumber-sumber alternative lain yang lebih baik atau
jika ternyata sumber-sumber yang direkomendasikan dalam pedoman belajar ini
tidak tersedia/tidak ada.
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 76 dari 77
5.3. Daftar Peralatan/Mesin dan Bahan
1. Judul/Nama Pelatihan : Algoritma dan Pemrograman Lanjut
2. Kode Program Pelatihan : TIK.PR02.002.01
NOUNIT
KOMPETENSIKODE UNIT
DAFTAR
PERALATAN
DAFTAR
BAHANKETERANGAN
1. Algoritma dan
Pemrograman
Lanjut
TIK.PR02.002.01 - Unit PC
(Personal
Computer)
dengan CD
drive dan Hard
Disk.
- PC dengan
sistem operasi
Windows XP
- Keyboard dan
mouse
- RAM dengan
ukuran yang
sesuai dengan
kebutuhan.
- Program
Borland C++
3.1
-Program
Borland C+
+ 3.1.
-Buku
informasi
tentang
Algoritma
Pemrogram
an Lanjut,
Pemrogram
an grafis.
-
Materi Pelatihan Berbasis KompetensiSektor Telematika Sub Sektor Programmer Komputer
Kode ModulTIK.PR02.001.01
Judul Modul: Membuat Algoritma Pemrograman LanjutBuku Informasi Versi: 01-09-2007 Halaman: 77 dari 77
DAFTAR PUSTAKA
• Website:
• http://www.ilmukomputer.com
• http://devnet.com
• http://www.codeguru.com
• http://id.wikipedia.org