Anda di halaman 1dari 25

BAB I

PENDAHULUAN

A. DESKRIPSI JUDUL

Modul Algoritma Pemrograman Tingkat Lajut digunakan untuk pengenalan


pembelajaran algoritma pemrograman untuk siswa tingkat X jurusan
Rekayasa Perangkat Lunak. Dalam modul ini juga dijelaskan penggunaan
bahasa pemrograman C . modul ini telah disesuaikan dengan Silabus dan RPP
semester gasal tingkat X , dimana kompetensi dasar yang harus dikuasi juga
dipaparkan dalam modul ini.

Modul ini digunakan sebagai bahan ajar untuk menguasai kompetensi


Menerapkan Algoritma Pemrograman Tingkat Lanjut.

Dengan menguasai modul ini siswa diharapkan mampu menguasai


kompetensi Menerapkan Algoritma Pemrograman Tingkat Lanjut.

B. PRASYARAT

Modul Algoritma Pemrograman Tingkat Lanjut merupakan modul lanjutan


pembelajaran maka membutuhkan persyaratan modul yang lain atau
kemampuan lain yang harus dimiliki peserta diklat sebelum mempelajari
modul ini yaitu modul Dasar Algoritma Pemrograman.

C. PETUNJUK PENGGUNAAN MODUL

1. Petunjuk bagi siswa


Siswa diharapkan dapat berperan aktif dan berinteraksi dengan sumber
belajar yang dapat digunakan, karena itu harus memperhatikan hal-hal
sebagai berikut :

a. Langkah-langkah belajar yang ditempuh

1) Persiapkan alat bantu berupa komputer!


2) Bacalah dengan seksama uraian materi pada setiap kegiatan belajar!
3) Cermatilah langkah-langkah kerja pada setiap kegiatan belajar sebelum
mengerjakan, bila belum jelas tanyakan pada instruktur!
4) Jangan menghidupkan komputer sebelum disetujui oleh instruktur!
5) Rapikan komputer yang telah digunakan!

b. Perlengkapan yang Harus Dipersiapkan

Guna menunjang keselamatan dan kelancaran tugas/ pekerjaan yang harus


dilakukan, maka persiapkanlah seluruh perlengkapan yang diperlukan.
Beberapa perlengkapan yang harus dipersiapkan adalah: Alat tulis

c. Hasil Pelatihan

Peserta diklat mampu membuat program dalam bahasa bahasa C dengan


merancang algoritma terlebih dahulu dan jika diperlukan menggunakan
flowchart untuk membantu dalam pembuatan algoritma yang kompleks.
2. Peran Guru

Guru yang akan mengajarkan modul ini hendaknya mempersiapkan diri


sebaik-baiknya yaitu mencakup aspek strategi pemelajaran, penguasaan
materi, pemilihan metode, alat bantu media pemelajaran dan perangkat
evaluasi.

1
Guru harus menyiapkan rancangan strategi pemelajaran yang mampu
mewujudkan peserta diklat terlibat aktif dalam proses pencapaian/
penguasaan kompetensi yang telah diprogramkan. Penyusunan rancangan
strategi pemelajaran mengacu pada kriteria unjuk kerja (KUK) pada setiap
subkompetensi yang ada dalam GBPP.

D. TUJUAN AKHIR

Peserta diklat dapat membuat algoritma, flowchart dan program untuk


solusi penyelesaian masalah secara komputasi.
E. Kompetensi

KOMPETENSI MATERI
INDIKATOR KEGIATAN PEMBELAJARAN PENILAIAN
DASAR PEMBELAJARAN
 Algoritma array dimensi  Konsep array  Menjelaskan konsep array  Test tertulis
1. Menjelaskan
prinsip array
satu dimesi satu dimensi satu  Praktek
 Algoritma array dimensi  Konsep array  Menjelaskan konsep array
dua dimensi dua dimensi dua

 Algoritma program  Prosedur dan  Menjelaskan pendeklarasian  Praktek


2. Menggunakan
dibuat dengan fungsi prosedur
prosedur dan
fungsi
menggunakan  Membuat contoh program
prosedur dijelaskan pemanggilan prosedur
dengan kreatif dan  Menjelaskan pendeklarasian
mandiri fungsi
 Algoritma program  Membuat contoh program
dibuat dengan pemanggilan fungsi
menggunakan fungsi
dijelaskan dengan
kreatif dan mandiri
 Algoritma program
dibuat dengan
mengguankan
prosedur dan fungsi
dijelaskan dengan
kreatif dan mandiri

 Algoritma pencarian  Konsep sequence  Menjelaskan dan  Praktek


3. Algoritma
data dengan teknik search memberikan contoh teknik
teknik
Searching dan
sequence search  Konsep buble sort searching dengan sequence
dijelaskan dengan search
Sorting
kreaktif dan mandiri  Menjelaskan dan
Algoritma pengurutan memberikan contoh teknik
data dengan dengan buble sort
teknik buble sort
dijelaskan dengan
kreatif dan mandiri
 Menggunakan library
grafik dalam bahasa  Menjelaskan dan
4. Menggunakan  Praktek
pemrograman C++  Library grafik C memberiakn contoh
library grafik
dengan kreatif dan penggunaan library grafik
mandiri

2
BAB II
KEGIATAN BELAJAR

A. Kegiatan Belajar 1

a. Kompetensi Dasar: Menjelaskan Prinsip Array

b. Alokasi Waktu : 4 x 45 menit

c. Tujuan Kegiatan Pemelajaran

Setelah mempelajari kegiatan belajar ini siswa dapat memahami prinsip


array, dan mampu menerapkannya dalama algoritma pemrograman.

d. Uraian Materi

1) Pengertian Array

Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam
urutan tertentu yang menggunakan nama yang sama. Letak atau posisi
dari elemen array ditunjukkan oleh suatu index. Dilihat dari dimensinya
array dapat dibagi menjadi Array dimensi satu, array dimensi dua dan array
multi-dimensi.

2) Array Dimensi Satu

 Setiap elemen array dapat diakses melalui indeks.


 Indeks array secara default dimulai dari 0.
 Deklarasi Array
Bentuk umum :
Tipe_array nama_array[ukuran];
Contoh :
int nilai[5];
Nilai[0] Nilai[1] Nilai[2] Nilai[3] Nilai[4]
70 80 82 60 75

Contoh program
/* Program untuk menginput nilai 10 mahasiswa ke dalam
array satu dimensi */
#include “stdio.h”
#include “conio.h”
void main()
{ int index, nilai[10];
clrscr();
/* input nilai siswa */
printf(“Input nilai 10 siswa : “);
for(index=0; index < 10; index++)
{ printf(“Siswa %i : “, index+1);
scanf(“%i”, &nilai[index]);
}
/* tampilkan nilai siswa */
printf(“Nilai siswa yang telah diinput”);
for(index=0; index < 10; index++)
{ printf(“%5.0i”, nilai[index]);
}
getch();
}

Contoh aplikasi array satu dimensi


/* Program untuk menentukan jurusan & jenjang mahasiswa
berdasarkan NIM*/

3
#include “stdio.h”
#include “conio.h”
#include “string.h”
void main()
{ char jurusan[25], jenjang[10], nim[10], nama[20];
crlscr();
printf(“Masukkan nama Anda : “); gets(nama);
printf(“Masukkan NIM Anda : “); gets(nim);
/***** cari jurusan *****/
switch(nim[2])
{ case ‘1’ : strcpy(jurusan, “Teknik Informatika”);
break;
case ‘2’ : strcpy(jurusan, “Sistem Informasi”);
break;
case ‘3’ : strcpy(jurusan, “Teknik Komputer”);
break;
case ‘4’ : strcpy(jurusan, “Komputerisasi
Akuntansi”);
break;
default : printf(“Anda salah memasukkan NIM. Coba
periksa lagi !”);
break;
}
/***** cari jenjang *****/
if(nim[4] == ‘5’)
{ strcpy(jenjang, “Strata-1”);
}
else
{ if(nim[4] == ‘3’)
strcpy(jenjang,”Diploma-3”);
}
else
printf(“ANda salah memasukkan NIM. Coba periksa
lagi !”);
}
/***** tampilkan data mahasiswa *****/
printf(“ << Data Mahasiswa Universitas Budi Luhur
>>“);
printf(“Nama : %s”, nama);
printf(“NIM : %s”, nim);
printf(“Jurusan : %s”, jurusan);
printf(“Jenjang : %s”, jenjang);
getch();
}

3) Array Dimensi Dua

 Array dua dimensi merupakan array yang terdiri dari m buah baris dan n
buah kolom.
 Bentuknya dapat berupa matriks atau tabel.
 Deklarasi array :
Tipe_array nama_array[baris][kolom];
Contoh :
Int X[3][4];
X[0][0] X[0][1] X[0][2]
X[1][0] X[1][1] X[1][2]
X[2][0] X[2][1] X[2][2]
X[3][0] X[3][1] X[3][2]

 Cara mengakses array :

4
Untuk mengakses array, misalnya kita ingin mengisi elemen array baris 2
kolom 3 dengan 10 maka perintahnya adalah sbb : X[1][2] = 10;

 Untuk mengisi dan menampilkan isi elemen array ada dua cara yaitu :
♦ Row Major Order (secara baris per baris)
♦ Column Major Order (secara kolom per kolom)
Contoh Program

/* Program menginput nilai(bilangan) ke dalam array


dimensi dua dan menampilkannya */
#include “stdio.h”
#include “conio.h”
void main()
{ int baris, kolom, matriks[4][3];
crlscr();
// Input elemen array secara Row Major Order
printf(“Input elemen Array : \n“);
for(baris=0; baris<4; baris++)
{ for(kolom=0; kolom<3; kolom++)
{ printf(“matriks[%i][%i]”, baris+1, kolom+1);
scanf(“%i”, &matriks[baris][kolom]);
}
printf(“\n”);
}
// Tampilkan elemen Array secara Row Major Order
printf(“Isi array : \n”);
for(baris=0; baris<4; baris++)
{ for(kolom=0; kolom<3; kolom++)
{ printf(“%i”, &matriks[baris][kolom]);
}
printf(“\n”);
}
getch();
}

Gambar 1. Flowchart input matrik 4x3

4) Penilaian

5
Teknik Bentuk Instrumen Instrumen Score
Penilaian

Aspek Kognitif Daftar pertanyaan 1. Buatlah algoritma dan flowchart untuk 35


(tes tertulis) menyimpan nama-nama siswa dalam
array. Kemudian nama-nama siswa
terebut ditampilkan dilayar

Aspek Membuat program 1. Buatlah program dari soal no 1 (tertulis) 65


psikomotorik dengan bahasa C
(Praktek)
Total score 100

B. Kegiatan Belajar 2

a. Kompetensi Dasar : Menggunakan Prosedur dan Fungsi

b. Alokasi Waktu : 4 x 45 menit

c. Tujuan Kegiatan Pemelajaran

Setelah mempelajari kegiatan belajar ini siswa dapat memahami


penggunaan fungsi dan prosedur dan menerpkannya dalam pemrograman
modular.

d. Uraian Materi

1) Pengertian 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 Turbo C dan fungsi yang didefinisikan atau dibuat oleh
programmer.

2) Membuat Fungsi

a) Deklarasi fungsi
Sebelum digunakan (dipanggil), suatu fungsi harus dideklarasikan dan
didefinisikan terlebih dahulu. Bentuk umum pendeklarasian fungsi adalah :
tipe_fungsi nama_fungsi(parameter_fungsi);
Sedangkan bentuk umum pendefinisian fungsi adalah :
Tipe_fungsi nama_fungsi(parameter_fungsi)
{ statement
statement
………...
………...
}

b) Hal-hal yang perlu diperhatikan dalam membuat fungsi


 Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungis
dengan nilai keluaran bertipe integer.

6
 Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka
diperlukan pendefinisian penentu tipe fungsi.
 Untuk fungsi yang tidak mempunyai nilai keluaran maka dimasukkan ke
dalam tipe void
 Pernyataan yang diberikan untuk memberikan nilai akhir fungsi berupa
pernyataan return.
 Suatu fungsi dapat menghasilkan nilai balik bagi fungsi pemanggilnya.

Cara membuat fungsi

cara memanggil fungsi

c) Parameter

 Parameter Formal adalah variabel yang ada pada daftar parameter dalam
definisi fungsi.
 Parameter Aktual adalah variabel (parameter) yang dipakai dalam
pemanggilan fungsi.
Dalam contoh program pertambahan di atas parameter formal terdapat
pada pendefinisisan
fungsi :
float tambah(float x, float y) //parameter formal
{ return (a+b);

7
}
Sedangkan parameter aktual terdapat pada pemanggilan fungsi :
void main()
{ ……………
…………..
c = tambah(a, b); //parameter aktual
…………..
}

d) Cara Melewatkan Parameter

Cara melewatkan suatu parameter dalam Bahasa C ada dua cara yaitu :
 Pemanggilan Secara Nilai (Call by Value)
 Call by value akan menyalin nilai dari parameter aktual ke parameter
formal.
 Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat
memori letak dari datanya.
 Fungsi yang menerima kiriman nilai akan menyimpannya di alamat
terpisah dari nilai aslinya yang digunakan oleh bagian program yang
memanggil fungsi.
 Perubahan nilai di fungsi (parameter formal) tidak akan merubah nilai
asli di bagian program yang memanggilnya.
 Pengiriman parameter secara nilai adalah pengiriman searah, yaitu dari
bagian program yang memanggil fungsi ke fungsi yang dipanggil.
 Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak
hanya untuk sebuah variabel, elemen array atau konstanta saja.

Contoh
#include “stdio.h”
#include “conio.h”
void tukar(int x, int y); /* pendeklarasian fungsi */
void main()
{ int a,b;
clrscr();
a = 15;
b = 10;
printf(“Nilai sebelum pemanggilan fungsi\n”);
printf(“a = %i b = %i\n\n”, a, b); // a dan b sebelum
pemanggilan fungsi
tukar(a,b); /* pemanggilan fungsi tukar() */
printf(“Nilai setelah pemanggilan fungsi\n”);
printf(“a = %i b = %i\n\n”, a, b); // a dan b setelah
pemanggilan fungsi
getch();
}
void tukar(int x, int y) /* Pendefinisian fungsi tukar()
*/
{ int z; /* variabel sementara */
z = x;
x = y;
y = z;
printf(“Nilai di akhir fungsi tukar()\n”);
printf(“x = %i y = %i\n\n”, x, y);
}

 Pemanggilan Secara Referensi (Call by Reference)


 Pemanggilan secara Referensi merupakan upaya untuk melewatkan
alamat dari suatu variabel ke dalam fungsi.
 Yang dikirimkan ke fungsi adalah alamat letak dari nilai datanya, bukan
nilai datanya.

8
 Fungsi yang menerima kiriman alamat ini makan menggunakan alamat
yang sama untuk mendapatkan nilai datanya.
 Perubahan nilai di fungsi akan merubah nilai asli di bagian program
yang memanggil fungsi.
 Pengiriman parameter secara referensi adalah pengiriman dua arah,
yaitu dari fungsi pemanggil ke fungsi yang dipanggil dan juga
sebaliknya.
 Pengiriman secara acuan tidak dapat bdilakukan untuk suatu
ungkapan.

Contoh program
#include “stdio.h”
#include “conio.h”
void tukar(int *px, int *py);
void main()
{ int a,b;
clrscr();
a = 15;
b = 10;
printf(“Nilai sebelum pemanggilan fungsi\n”);
printf(“a = %i b = %i\n\n”, a, b);
tukar(&a,&b); /* parameter alamat a dan alamat b
*/
printf(“Nilai setelah pemanggilan fungsi\n”);
printf(“a = %i b = %i\n\n”, a, b);
getch();
}
void tukar(int *px, int *py)
{ int z; /* variabel sementara */
z = *px;
*px = *py;
*py = z;
printf(“Nilai di akhir fungsi tukar()\n”);
printf(“*px = %i *py = %i\n\n”, *px, *py);
}

e) Penggolongan Variabel berdasarkan Kelas Penyimpanan (Storage


Class)

 Variabel lokal
Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi.
Sifat-sifat variabel lokal :
 Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan
lenyap ketika proses eksekusi terhadap fungsi berakhir.
 Hanya dikenal oleh fungsi tempat variabel dideklarasikan
 Tidak ada inisialisasi secara otomatis (saat variabel diciptakan nilainya
random).
 Dideklarasikan dengan menambahkan kata “auto” (opsional).
 Variabel global (eksternal)
Variabel global (eksternal) adalah variabel yang dideklarasikan di luar
fungsi.
Sifat-sifat variabel global :
 Dikenal (dapat diakses) oleh semua fungsi.
 Jika tidak diberi nilai awal secara otomatis berisi nilai nol.
 Dideklarasikan dengan menambahkan kata “extern” (opsional).

Contoh program
#include “stdio.h”
#include “conio.h”
void tampil(void);

9
int i = 25; /* variabel global */
void main()
{ clrscr();
printf(“Nilai variabel i dalam fungsi main() adalah
%i\n\n”, i);
tampil();
i = i * 4; /* nilai i yang dikali 4 adalah 25 (global)
bukan 10 */
printf(“\nNilai variabel i dalam fungsi main()
sekarang adalah %i\n\n”, i);
getch();
}
void tampil(void)
{ int i = 10; /* variabel lokal */
printf(“Nilai variabel i dalam fungsi tampil() adalah
%i\n\n”, i);
}

3) Prosedur

Modul program yang mengerjakan tugas / aktivitas yang spesifik dan


menghasilkan suatu efek netto. Suatu efek netto diketahui dengan
membandingkan keadaan awal dan keadaan akhir pada pelaksanaan
sebuah prosedur. Prosedur adalah fungsi yang tidak mengembalikan nilai
apapun. Karena itu, return value untuk prosedur adalah void, (yang artinya
‘kosong’).

a) Mendifinisikan prosedur

 Menuliskan nama prosedur


 Mendeklarasikan nama-nama konstanta, peubah dan tipe ( jika ada ).
 Menjabarkan rangkaian yang dilakukan.

b) Struktur prosedur

 Bagian Judul ( header ).


Terdiri atas Nama prosedur dan deklarasi parameter ( jika ada ).
 Bagian deklarasi.
Untuk mengumumkan nama-nama.
 Bagian deskripsi.
Disebut juga badan prosedur

Setiap prosedur mempunyai nama yang unik. Nama prosedur sebaiknya


diawali dengan kata kerja karena prosedur berisi suatu aktivitas, misalnya
HitungLuas, Tukar, CariMaks, Inisialisasi, AktifkanMenu, dan lain
sebagainya.

c) Cara mendefinisikan prosedur

10
d) Cara memanggil prosedur

Cara memanggil prosedur di program utama


DEKLARASI
Procedure namaprosedur
DESKRIPSI
Namaprosedur

Contoh

4) Penilaian
Teknik Bentuk Instrumen Instrumen Score
Penilaian

11
Aspek Kognitif Daftar pertanyaan Buatlah algoritma menentukan benda 40
(tes tertulis) padat, cair dan uap dengan stardar nilai
suhu kurang dari 0 derajat celcius adalah
padat, antara 0 sampai 100 derajat celcius
adalah cair. Diatas 100 derajat celcius
adalah uap. Masing-nmasing kondisi di
panggil dari fungsi

Aspek Membuat program Buatlah program dari soal tertulis 60


psikomotorik dengan bahasa C+
(Praktek) +

Total score 100

C. Kegiatan Belajar 3

a. Kompetensi Dasar : Algoritma Teknik Searching dan Sorting

b. Alokasi Waktu : 4 x 45 menit

c. Tujuan Kegiatan Pemelajaran

Setelah mempelajari kegiatan belajar ini siswa dapat memahami dan


membuat algortima serching dan sorting.

d. Uraian Materi

1) Sequential Search

Algoritma sequential search adalah salah satu algoritma yang


digunakan untuk memecahkan masalah pencarian data pada suatu data
larik/array. Cara kerja dari algoritma ini adalah dengan menelusuri elemen-
elemen array dari awal sampai akhir, dimana data tidak perlu diurutkan
terlebih dahulu. Kemungkinan terbaik(best case) dari algoritma ini adalah
jika data yang dicari berada pada elemen array yang terdepan sehingga
waktu yang dibutuhkan untuk pencarian data semakin singkat. Sebaliknya,
akan mencapai kondisi terburuk(wors case) apabila data yang dicari berada
pada elemen akhir.berikut contoh programnya

/* algoritma sequential search untuk isi array */


void isidata(int data[3], int n);
void caridata(int data[3], int n, int x);

#include <stdio.h>
main()
{
/*kamus*/
int dataku[3], jumlah, cari;
jumlah = 3;

/* algoritma */
clrscr();
isidata(dataku,jumlah);
printf("\n input data yang dicari = ");
scanf("%d",&cari);
caridata(dataku, jumlah, cari);

getch();
}

12
void isidata(int data[3],int n)
{
/* kamus lokal */
int i=0;

/* algoritma */
for(i=0; i<n; i++)
{
printf("\n input data ke %d = ",i);
scanf("%d",&data[i]);
}
}

void caridata(int data[3], int n, int x)


{
/*kamus lokal */
int j=0;

/*algoritma */
for(j=0;j<n;j++)
{
if(data[j]==x)
{
printf("\n data ditemukan di index ke %d
",j);
}
}
}
2) Buble sort
Diberi nama “Bubble” karena proses pengurutan secara berangsur angsur
bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar
dari sebuah gelas bersoda. Bubble Sort mengurutkan data dengan cara
membandingkan elemen sekarang dengan elemen berikutnya.Jika elemen
sekarang lebih besardari elemen berikutnya maka kedua elemen tersebut
ditukar (untuk pengurutan ascending). Jika elemen sekarang lebih kecildari
elemen berikutnya, maka kedua elemen tersebut ditukar (untuk pengurutan
descending).Algoritma ini seolah-olah menggeser satu per satu elemen dari
kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya. Ketika satu
proses telah selesai, maka bubble sort akan mengulangi proses,
demikianseterusnya. Bubble sort berhenti jika seluruh array telah diperiksa
dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan
yang telah diinginkan.
Contoh pengurutan data yang dilakukan dengan metode Bubble Sort sebagai
berikut:
Proses 1:
22 10 15 3 8 2
22 10 15 3 2 8
22 10 15 2 3 8
22 10 2 15 3 8
22 2 10 15 3 8
2 22 10 15 3 8

13
Pengecekan dimulai dari data yang paling akhir, kemudian dibandingkan
dengan data di depannya, jika data di depannya lebih besar maka akan
ditukar.
Proses 2:
2 22 10 15 3 8
2 22 10 15 3 8
2 22 10 3 15 8
2 22 3 10 15 8
2 3 22 10 15 8
Pengecekan dilakukan sampai dengan data ke-2 karena data pertama pastis
udah paling kecil.
Proses 3:
2 3 22 10 15 8
3 2 3 22 10 8 15
2 3 22 8 10 15
2 3 8 22 10 15
Proses 4:
2 3 8 22 10 15
2 3 8 22 10 15
2 3 8 10 22 15
Proses 5:
2 3 8 10 22 15
2 3 8 10 15 22
Pengurutan berhenti.

3) Penilaian
Teknik Bentuk Instrumen Instrumen Score
Penilaian

Aspek Membuat program 1. Buatlah program pencarian suatu 50


psikomotorik dengan bahasa C bilangan yang diinputkan oleh user dari
(Praktek) sebuah array yang sudah diinputkan
sebelumnya dengan menggunakan
teknik sequence search
2. Buatlah program mengurutkan bilangan 50
secara increment dari array bilangan
yang sudah diinputkan sebelumnya
dengan menggunakan teknik buble sort
Total score 100

D. Kegiatan Belajar 4

a. Kompetensi Dasar : Menggunakan Library Grafik

b. Alokasi Waktu : 4 x 45 menit

14
c. Tujuan Kegiatan Pemelajaran

Setelah mempelajari kegiatan belajar ini siswa dapat memahami dan


menggunakan library grafik.

d. Uraian Materi

1) Grafik dalam bahasa C

Ada dua syarat utama untuk memulai pemrograman grafik, yaitu meng-
include-kan file header <graphics.h> dan melakukan proses inisialisasi
mode grafik yang digunakan oleh komputer. Untuk inisialisasi mode grafik
digunakan perintah initgraph() yang ada di file header graphics.h. Format
umum dari perintah ini adalah :

initgraph(graphdriver, graphmode, direktori_bgi)

Variabel graphdriver digunakan untuk menyimpan nilai driver grafis yang


ditentukan berdasarkan kartu grafik yang digunakan. Variabel graphmode
digunakan untuk menyimpan nilai mode grafis, sedangkan direktori_bgi
adalah tempat file .bgi yang digunakan dalam pemrograman grafik. Contoh
listing program berikut ini akan menggambarkan persegi panjang dengan
diagonal yang menutupi layar.

Contoh program
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
int Xmax, Ymax;
int GraphDriver,GraphMode,ErrorCode;
main()
{
GraphDriver = DETECT;
initgraph( &GraphDriver, &GraphMode,
"c:\\tc" );
ErrorCode = graphresult();
if( ErrorCode != grOk ){
printf(" Graphics System Error: %s\n",
grapherrormsg( ErrorCode ) );
exit( 1 );
}
Xmax = getmaxx();
Ymax = getmaxy();
rectangle(0,0,Xmax,Ymax);
line(0,0,Xmax,Ymax);
line(0,Ymax,Xmax,0);
getch();
closegraph();
return 0;
}

Program diatas dimulai dengan inisialisasi variabel GraphDriver = DETECT.


Perintah ini berarti program meminta autodeteksi, sehingga Turbo C secara
langsung akan mencocokkan driver dan mode grafik yang terdeteksi.
Proses berikutnya adalah inisialisasi mode grafik dengan perintah :
initgraph( &GraphDriver, &GraphMode, "c:\\tc" ); melalui perintah ini Turbo
C akan menginisialisasi kartu grafik yang telah terdeteksi, kemudian
kompiler akan menemukan dan memasukkan graphic-driver (file dengan
akhiran .bgi). Begitu nama driver ditemukan, maka driver akan menangani
rincian antara program grafik dengan perangkat keras. Jika ternyata driver
grafik tidak dapat ditemukan, maka initgraph tidak akan dapat membuat

15
grafik apapun. Karena itu perintah ErrorCode = graphresult(); digunakan
untuk mengembalikan nilai inisialisasi grafik. Jika nilai yang dikembalikan 0
(grOK) maka kita dapat memulai program grafik. Jika tidak, maka kita
harus memuat listing berikut untuk mendeteksi kesalahan pada inisialisasi
grafik.
if( ErrorCode != grOk ){
printf(" Graphics System Error: %s\n",
grapherrormsg( ErrorCode )
);
exit( 1 );
}

Setelah proses inisialisasi berhasil dilakukan, maka kita dapat mulai

membuat grafik yang diinginkan. Pixel pada layar dinomori mulai dari

sudut kiri atas layar (0, 0) sampai dengan sudut kanan bawah (getmaxx(),

getmaxy).

Perintah untuk menggambar persegi panjang adalah


rectangle(x1,y1,x2,y2); dimana x1 dan y1 adalah koordinat sudut kiri atas
dari persegi panjang, dan x2, y2 adalah sudut kanan bawah dari persegi
panjang. Sedangkan perintah line(x1,y1,x2,y2); digunakan untuk
menggambar garis dari koordinat (x1,y1) sampai koordinat (x2,y2). Jika
program selesai dilakukan maka kita harus memanggil fungsi closegraph();
untuk menutup mode grafik.

2) Fungsi-fungsi grafik pada Turbo C

Dengan menggunakan format program seperti contoh sebelumnya, kita


dapat membuat gambar-gambar lain menggunakan fungsi-fungsi gambar
yang disediakan oleh turbo C, diantaranya adalah :

a) Garis

Untuk menggambar garis digunakan fungsi line(x1,y1,x2,y2) yang berarti


penggambaran garis dimulai dari koordinat awal (x1, y1) sampai koordinat
akhir (x2,y2). Perintah lain untuk menggambar garis adalah lineto(x,y) dan
linerel(dx,dy). Untuk menggunakan kedua perintah tersebut, kita harus
mengerti terlebih dahulu konsep CP (Current Position) yang berarti posisi
saat ini. Pada saat pertama kali memanggil fungsi lineto(x,y) dan
linerel(dx,dy)CP terletak pada posisi koordinat (0,0) sehingga garis akan
digambar dari posisi (0,0) sampai posisi (x,y) pada perintah lineto() dan

16
posisi (dx,dy) pada perintah linerel(), selanjutnya CP akan diperbaharui
pada titik akhir penggambaran garis.

Pada awal pemanggilan kedua perintah tersebut memang memiliki


persamaan, yaitu menggambar garis dari posisi (0,0) sampai ke posisi pada
parameter perintah. Perbedaanya adalah saat CP diperbaharui pada posisi
akhir penggambaran garis (xCP,yCP).

Jika kita menggunakan fungsi lineto(x,y)maka garis akan digambar dari


(xCP,yCP) sampai koordinat (x,y), kemudian CP akan diperbaharui pada
posisi (x,y). Pada penggunaan perintah linerel(dx,dy), garis akan
digambarkan dari koordinat (xCP,yCP) sampai koordinat (xCP+dx ,
yCP+dy). Turbo C juga menyediakan bentuk-bentuk garis yang dapat diatur
dengan perintah setlinestyle(tipe_garis, pola_garis, tebal_garis). Nilai untuk
tipe garis diberikan dalam tabel berikut ini :

Nilai untuk pola garis diabaikan sehingga kita dapat mengisikan nilai nol
(0). Sedangkan ketebalan garis memiliki pilihan nilai sebagai berikut :

Penggunaan perintah ini dapat dilakukan dengan langsung mengisikan tipe


garis, atau dengan nomornya saja. Jadi perintah :

Setlinestyle(center_line,0,thick_width) sama dengan

Setlinestyle(2,0,3)

b) Segi empat

Untuk menggambar segi empat, digunakan perintah rectangle(x1,y1,x2,y2),


dimana x1 dan y1 adalah koordinat sudut kiri atas dari persegi panjang,
dan x2, y2 adalah sudut kanan bawah dari persegi panjang. Perintah lain
untuk menggambar segiempat adalah bar(x1,y1,x2,y2). Perbedaan kedua
perintah ini terletak pada pewarnaan (akan dijelaskan pada bagian warna
grafik)

c) Lingkaran

Untuk menggambar lingkaran digunakan perintah circle(x,y,radius) dimana


(x,y) adalah koordinat titik pusat lingkaran, sedangkan radius adalah jari-
jari lingkaran.

d) Ellips

Untuk menggambar elips digunakan perintah ellipse(x,y,alpha,beta,rx,ry)


dimana (x,y) adalah koordinat titik pusat elips, alpha adalah sudut awal
ellipse, beta adalah sudut akhir ellipse, rx adalah jari-jari ellipse yang
sejajar dengan sumbu x, ry adalah jari-jari ellipse yang sejajar dengan
sumbu y. Ellips akan digambarkan tertutup atau terbuka sesuai dengan nilai

17
alpha dan beta-nya, jika ellips ingin digambar tertutup maka alpha harus
diisi dengan 0, dan beta harus diisi dengan 360. perintah ellipse() juga
dapat digunakan untuk menggambar lingkaran yaitu dengan mengisi nilai
alpha = 0, beta = 360 dan rx = ry.

Jika ingin menggambarkan ellipse dengan pola isian warna, digunakan


perintah fillellipse(x,y,rx,ry) dimana (x,y) adalah koordinat titik pusat
ellipse, rx jari-jari terpanjang ellipse, dan ry jari-jari terpendek ellipse.
Parameter alpha dan beta memang tidak terdapat pada perintah ini, karena
ellipse akan diisi pola isian warna maka ellipse harus digambar tertutup
dengan kata lain nilai alpha selalu 0 dan beta selalu 360 sehingga tidak
perlu dituliskan. Pola isian warna akan dibahas berikutnya.

Contoh program menggunakan fungsi gambar diberikan pada listing berikut


ini :
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
main()
{
int x,y;
int GraphDriver,GraphMode,ErrorCode;
GraphDriver = DETECT;
initgraph( &GraphDriver, &GraphMode,
"c:\\tc" );
ErrorCode = graphresult();
if( ErrorCode != grOk ){
printf(" Graphics System Error: %s\n",
grapherrormsg( ErrorCode ) );
exit( 1 );
}
x=getmaxx();
y=getmaxy();
rectangle(x/4,y/4,3*x/4,3*y/4);
line(x/4,y/4,3*x/4,3*y/4);
line(3*x/4,y/4,x/4,3*y/4);
circle(x/2,y/2,200);
getch();
closegraph();
return 0;
}

Hasil eksekusi program diatas ditunjukkan oleh gambar berikut :

18
e) Warna pada pola grafik

Perintah-perintah yang berhubungan dengan pola dan warna diantaranya :

 Setcolor()

Perintah setcolor() berfungsi untuk menentukan warna gambar yang


aktif. Sintaks dari perintah ini adalah setcolor(nomor_warna). Contoh, jika
kita menuliskan perintah: setcolor(1); rectangle(50,50,120,100); berarti
kita menggambarkan segiempat dengan warna border

 Setbkcolor()

Perintah setbkcolor() berfungsi untuk mengatur warna background layar.


Sintaks dari perintah ini adalah setbkcolor(nomor_warna). Contoh, untuk
membuat background berwarna kuning digunakan perintah
setbkcolor(14).

 Floodfllid()

Sintaks dari perintah ini adalah floodfill(x, y, warna_border). Perintah


floodfill() berfungsi untuk mengisi suatu wilayah dari posisi (x,y) sampai
warna border yang sudah ditentukan. Contohnya, perintah
floodfill(100,50,4)digunakan untuk mengisi warna dari posisi koordinat
(100,50) sampai ditemukan warna border merah.

 Setfillstyle()

Perintah setfillstyle() berfungsi untuk mengatur warna dan pola isian.


Sintaks dari perintah ini adalah setfillstyle(nomor_pola, nomor_warna).
Jenis-jenis pola isian diberikan oleh tabel berikut :

19
3) Teks dalam mode grafik

Untuk menampilkan teks dalam mode grafis digunakan perintah


outextxy(x,y,str), dimana (x,y) adalah koordinat awal penulisan teks dan str
adalah teks yang akan dituliskan. Fungsi outtextxy akan selalu menuliskan
teks berdasarkan koordinat tetapi tidak memperbaharui CP (Current
Position)

Fungsi lain untuk menuliskan teks adalah perintah outtext(str). Fungsi


outtext() akan menuliskan teks dari posisi(0,0) saat pemanggilan pertama,
kemudian memperbaharui CP pada pemanggilan berikutnya berdasarkan
posisi CP sebelumnya. Untuk mengatur jenis dan ukuran font, digunakan
perintah settextstyle(). Sintaks dari perintah ini adalah:

settextstyle(jenis, arah, ukuran)

Jenis-jenis font yang dapat digunakan dalam bahasa C diberikan dalam

tabel berikut ini :

Arah penulisan tabel terdiri dari dua jenis yaitu dari kiri ke kanan atau dari
atas ke bawah. Parameter arah diberikan dalam tabel berikut ini :

Sedangkan ukuran font ditentukan dari nilai 1 sampai 10. Angka 1


menggambarkan teks dengan ukuran huruf 8x8 pixel, 2 adalah 16x16
pixel demikian seterusnya.Contoh bentuk dari jenis-jenis font diatas dapat
dilihat berikut ini :

20
Berikut ini akan diberikan contoh listing program yang menampilkan teks
dan grafik :
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
int x,y;
int GraphDriver,GraphMode,ErrorCode;
main()
{
GraphDriver = DETECT;
initgraph( &GraphDriver, &GraphMode,
"c:\\tc" );
ErrorCode = graphresult();
if( ErrorCode != grOk ){
printf(" Graphics System Error: %s\n",
grapherrormsg( ErrorCode ) );
exit( 1 );
}
settextstyle(3,0,4);
outtextxy(25,50,"HAI FRIEND,");
outtextxy(25, 100,"NAMA SAYA MR. SMILE");
x = getmaxx()/2;
y = getmaxy()/2;
bar(x-75,y-50,x+75,y+100);
setcolor(0);
setfillstyle(9,14);
fillellipse(x,y+25,60,60);
setfillstyle(10,0);
fillellipse(x-25,y+10,5,5);
fillellipse(x+25,y+10,5,5);

21
setcolor(0);
setlinestyle(0,0,3);
ellipse(x,y+40,180,360,20,10);
getch();
closegraph();
return 0;
}

4) Penilaian

Buatlah tampilan seperti dibawah ini

SMK TELEKOMUNIKASI
TUNAS HARAPAN

KAB. SEMARANG

22
BAB III
EVALUASI

A. PERTANYAAN
1. Buatlah program fungsi untuk menjumlah 2 buah matrik
dengan ordo 3x3
2. Dari soal no.1 buatlah algoritma untuk mencari posisi
dari isi matrik

B. KRITERIA KELULUSAN
Skor
Aspek Bobot Nilai Keterangan
(1-100)
Soal 1 4 Syarat lulus
nilai minimal
Soal 2 4
75 dan skor
Ketepatan waktu 2 setiap aspek
minimal 75
Nilai Akhir

Kategori kelulusan:
70 – 79 : Memenuhi kriteria mininal. Dapat bekerja dengan bimbingan.
80 – 89 : Memenuhi kriteria minimal. Dapat bekerja tanpa bimbingan.
90 – 100 : Di atas kriteria minimal. Dapat bekerja tanpa bimbingan.

23
BAB IV
PENUTUP

Setelah menyelesaikan modul ini dan mengerjakan semua tugas serta evaluasi
maka berdasarkan kriteria penilaian, siswa dapat dinyatakan lulus/ tidak lulus.
Apabila dinyatakan lulus maka dapat melanjutkan ke modul berikutnya sesuai
dengan alur peta kududukan modul, sedangkan apabila dinyatakan tidak lulus
maka peserta diklat harus mengulang modul ini dan tidak diperkenankan
mengambil modul selanjutnya.

oooOooo

24
DAFTAR PUSTAKA

Hartanto, Budi. (2003). Pembuatan Program C Secara Mudah. . Andi Offset.


Yogyakarta

Hendrowati, Retno & Hariyanto, Bambang. (2000). Logika Matematika.


Informatika. Bandung

Kadir, abdul. (2001). Pemrograman Dasar Turbo C. Andi Offset. Yogyakarta

Munir, Rinaldi. (1999). Algoritma dan Pemrograman dalam Bahasa Pascal


dan C. Informatika. Bandung

Santosa, Insap. (1992). Struktur Data Menggunakan Turbo Pascal 6.0.


Andi Offset. Yogyakarta

Sanjaya, Dwi. (2001). Struktur Data di Planet Pascal. J&J Learning.


Yogyakarta
http://ilmukomputer.com

25

Anda mungkin juga menyukai