30
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 1

Modul Algoritma Lanjut

Embed Size (px)

Citation preview

BAB IPENDAHULUAN

A. DESKRIPSI JUDUL

Modul Algoritma Pemrograman Tingkat Lajut digunakan untukpengenalan pembelajaran algoritma pemrograman untuk siswatingkat X jurusan Rekayasa Perangkat Lunak. Dalam modulini juga dijelaskan penggunaan bahasa pemrograman C .modul ini telah disesuaikan dengan Silabus dan RPPsemester gasal tingkat X , dimana kompetensi dasar yangharus dikuasi juga dipaparkan dalam modul ini.

Modul ini digunakan sebagai bahan ajar untuk menguasaikompetensi Menerapkan Algoritma Pemrograman TingkatLanjut.

Dengan menguasai modul ini siswa diharapkan mampumenguasai kompetensi Menerapkan Algoritma PemrogramanTingkat Lanjut.

B. PRASYARAT

Modul Algoritma Pemrograman Tingkat Lanjut merupakanmodul lanjutan pembelajaran maka membutuhkan persyaratanmodul yang lain atau kemampuan lain yang harus dimilikipeserta diklat sebelum mempelajari modul ini yaitu modulDasar Algoritma Pemrograman.

C. PETUNJUK PENGGUNAAN MODUL

1. Petunjuk bagi siswaSiswa diharapkan dapat berperan aktif dan berinteraksidengan sumber belajar yang dapat digunakan, karena ituharus 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 tanyakanpada instruktur!

4) Jangan menghidupkan komputer sebelum disetujui olehinstruktur!

5) Rapikan komputer yang telah digunakan!

b. Perlengkapan yang Harus Dipersiapkan

Guna menunjang keselamatan dan kelancaran tugas/pekerjaan yang harus dilakukan, maka persiapkanlahseluruh perlengkapan yang diperlukan. Beberapaperlengkapan yang harus dipersiapkan adalah: Alat tulis

1

c. Hasil Pelatihan

Peserta diklat mampu membuat program dalam bahasa bahasaC dengan merancang algoritma terlebih dahulu dan jikadiperlukan menggunakan flowchart untuk membantu dalampembuatan algoritma yang kompleks.

2. Peran Guru

Guru yang akan mengajarkan modul ini hendaknyamempersiapkan diri sebaik-baiknya yaitu mencakup aspekstrategi pemelajaran, penguasaan materi, pemilihanmetode, alat bantu media pemelajaran dan perangkatevaluasi.

Guru harus menyiapkan rancangan strategi pemelajaran yangmampu mewujudkan peserta diklat terlibat aktif dalamproses pencapaian/ penguasaan kompetensi yang telahdiprogramkan. Penyusunan rancangan strategi pemelajaranmengacu pada kriteria unjuk kerja (KUK) pada setiapsubkompetensi yang ada dalam GBPP.

D. TUJUAN AKHIR

Peserta diklat dapat membuat algoritma, flowchartdan program untuk solusi penyelesaian masalah secarakomputasi.

E. Kompetensi

KOMPETENSIDASAR INDIKATOR MATERI

PEMBELAJARAN KEGIATAN PEMBELAJARAN PENILAIAN

1. Menjelaskan prinsip array

Algoritma array dimensi satu

Algoritma array dimensi dua

Konsep array dimesi satu

Konsep array dimensi dua

Menjelaskan konsep array dimensi satu

Menjelaskan konsep array dimensi dua

Test tertulis

Praktek

2. Menggunakan prosedurdan fungsi

Algoritma programdibuat dengan menggunakan prosedur dijelaskan dengankreatif dan mandiri

Algoritma programdibuat dengan menggunakan fungsi dijelaskandengan kreatif dan mandiri

Algoritma programdibuat dengan mengguankan prosedur dan fungsi dijelaskan

Prosedur dan fungsi

Menjelaskan pendeklarasian prosedur

Membuat contoh programpemanggilan prosedur

Menjelaskan pendeklarasian fungsi

Membuat contoh programpemanggilan fungsi

Praktek

2

dengan kreatif dan mandiri

3. Algoritma teknik Searching dan Sorting

Algoritma pencarian data dengan teknik sequence search dijelaskan dengankreaktif dan mandiriAlgoritma pengurutan data dengan dengan teknik buble sortdijelaskan dengankreatif dan mandiri

Konsep sequence search

Konsep buble sort

Menjelaskan dan memberikan contoh teknik searching dengan sequence search

Menjelaskan dan memberikan contoh teknik buble sort

Praktek

4. Menggunakan library grafik

Menggunakan library grafik dalam bahasa pemrograman C++ dengan kreatif dan mandiri

Library grafik C

Menjelaskan dan memberiakn contoh penggunaan library grafik

Praktek

BAB IIKEGIATAN 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 dapatmemahami prinsip array, dan mampu menerapkannya dalamaalgoritma pemrograman.

d. Uraian Materi

1) Pengertian Array

Array merupakan kumpulan dari nilai-nilai data yangbertipe sama dalam urutan tertentu yang menggunakannama yang sama. Letak atau posisi dari elemen array

3

ditunjukkan oleh suatu index. Dilihat dari dimensinyaarray dapat dibagi menjadi Array dimensi satu, arraydimensi 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 dalamarray satu dimensi */#include “stdio.h”#include “conio.h”void main(){ int index, nilai[10];clrscr();/* input nilai mahasiswa */printf(“Input nilai 10 mahasiswa : “);for(index=0; index < 10; index++){ printf(“Mahasiswa %i : “, index+1);scanf(“%i”, &nilai[index]);}/* tampilkan nilai mahasiswa */printf(“Nilai mahasiswa 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 mahasiswaberdasarkan NIM*/

#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])

4

{ 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”);}elseprintf(“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 mbuah 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]

5

Cara mengakses array :Untuk mengakses array, misalnya kita ingin mengisielemen array baris 2 kolom 3 dengan 10 makaperintahnya adalah sbb : X[1][2] = 10;

Untuk mengisi dan menampilkan isi elemen array ada duacara yaitu :

♦ Row Major Order (secara baris per baris)♦ Column Major Order (secara kolom per kolom)

Contoh Program

/* Program menginput nilai(bilangan) ke dalam arraydimensi dua dan menampilkannya */#include “stdio.h”#include “conio.h”void main(){ int baris, kolom, matriks[4][3];

crlscr();// Input elemen array secara Row Major Orderprintf(“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 Orderprintf(“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

6

4) Penilaian

TeknikPenilaian

BentukInstrumen

Instrumen Score

Aspek Kognitif (tes tertulis)

Daftar pertanyaan

1. Buatlah algoritma dan flowchart untuk menyimpan nama-nama siswa dalam array. Kemudian nama-nama siswa terebut ditampilkan dilayar

35

Aspek psikomotorik(Praktek)

Membuat program denganbahasa C

1. Buatlah program dari soal no 1 (tertulis)

65

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 dapatmemahami penggunaan fungsi dan prosedur danmenerpkannya dalam pemrograman modular.

d. Uraian Materi

1) Pengertian Fungsi

Fungsi merupakan suatu bagian dari program yangdimaksudkan untuk mengerjakan suatu tugas tertentu dan

7

letaknya terpisah dari program yang memanggilnya.Fungsi merupakan elemen utama dalam bahasa C karenabahasa C sendiri terbentuk dari kumpulan fungsi-fungsi.Dalam setiap program bahasa C, minimal terdapat satufungsi yaitu fungsi main(). Fungsi banyak diterapkandalam program-program C yang terstruktur. Keuntunganpenggunaan fungsi dalam program yaitu program akanmemiliki struktur yang jelas (mempunyai readabilityyang tinggi) dan juga akan menghindari penulisan bagianprogram yang sama. Dalam bahasa C fungsi dapat dibagimenjadi dua, yaitu fungsi pustaka atau fungsi yangtelah tersedia dalam Turbo C dan fungsi yangdidefinisikan atau dibuat oleh programmer.

2) Membuat Fungsi

a) Deklarasi fungsiSebelum digunakan (dipanggil), suatu fungsi harusdideklarasikan 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 dianggapsebagai fungis dengan nilai keluaran bertipe integer.

Untuk fungsi yang memiliki keluaran bertipe bukaninteger, maka diperlukan pendefinisian penentu tipefungsi.

Untuk fungsi yang tidak mempunyai nilai keluaran makadimasukkan ke dalam tipe void Pernyataan yang diberikan untuk memberikan nilai

akhir fungsi berupa pernyataan return. Suatu fungsi dapat menghasilkan nilai balik bagifungsi pemanggilnya.

Cara membuat fungsi

8

cara memanggil fungsi

c) Parameter

Parameter Formal adalah variabel yang ada pada daftarparameter dalam definisi fungsi.

Parameter Aktual adalah variabel (parameter) yangdipakai dalam pemanggilan fungsi.

Dalam contoh program pertambahan di atas parameterformal terdapat pada pendefinisisanfungsi :float tambah(float x, float y) //parameter formal{ return (a+b);}Sedangkan parameter aktual terdapat pada pemanggilan fungsi :void main(){ ………………………..

9

c = tambah(a, b); //parameter aktual…………..}

d) Cara Melewatkan Parameter

Cara melewatkan suatu parameter dalam Bahasa C ada duacara yaitu : Pemanggilan Secara Nilai (Call by Value)

Call by value akan menyalin nilai dari parameteraktual ke parameter formal.

Yang dikirimkan ke fungsi adalah nilai daridatanya, bukan alamat memori letak dari datanya.

Fungsi yang menerima kiriman nilai akan menyimpannyadi alamat terpisah dari nilai aslinya yang digunakanoleh bagian program yang memanggil fungsi.

Perubahan nilai di fungsi (parameter formal) tidakakan merubah nilai asli di bagian program yangmemanggilnya.

Pengiriman parameter secara nilai adalah pengirimansearah, yaitu dari bagian program yang memanggilfungsi ke fungsi yang dipanggil.

Pengiriman suatu nilai dapat dilakukan untuk suatuungkapan, tidak hanya untuk sebuah variabel, elemenarray 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 fungsitukar(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 fungsigetch();

}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);

10

}

Pemanggilan Secara Referensi (Call by Reference) Pemanggilan secara Referensi merupakan upaya untuk

melewatkan alamat dari suatu variabel ke dalamfungsi.

Yang dikirimkan ke fungsi adalah alamat letak darinilai datanya, bukan nilai datanya.

Fungsi yang menerima kiriman alamat ini makanmenggunakan alamat yang sama untuk mendapatkan nilaidatanya.

Perubahan nilai di fungsi akan merubah nilai asli dibagian program yang memanggil fungsi.

Pengiriman parameter secara referensi adalahpengiriman dua arah, yaitu dari fungsi pemanggil kefungsi yang dipanggil dan juga sebaliknya.

Pengiriman secara acuan tidak dapat bdilakukan untuksuatu 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 lokalVariabel lokal adalah variabel yang dideklarasikan di

dalam fungsi.

11

Sifat-sifat variabel lokal : Secara otomatis akan diciptakan ketika fungsi

dipanggil dan akan lenyap ketika proses eksekusiterhadap fungsi berakhir.

Hanya dikenal oleh fungsi tempat variabeldideklarasikan

Tidak ada inisialisasi secara otomatis (saatvariabel diciptakan nilainya random).

Dideklarasikan dengan menambahkan kata “auto”(opsional).

Variabel global (eksternal)Variabel global (eksternal) adalah variabel yangdideklarasikan 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);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 yangspesifik dan menghasilkan suatu efek netto. Suatu efeknetto diketahui dengan membandingkan keadaan awal dankeadaan akhir pada pelaksanaan sebuah prosedur. Proseduradalah fungsi yang tidak mengembalikan nilai apapun.Karena itu, return value untuk prosedur adalah void,(yang artinya ‘kosong’).

a) Mendifinisikan prosedur

12

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 prosedursebaiknya diawali dengan kata kerja karena prosedurberisi suatu aktivitas, misalnya HitungLuas, Tukar,CariMaks, Inisialisasi, AktifkanMenu, dan lainsebagainya.

c) Cara mendefinisikan prosedur

d) Cara memanggil prosedur

Cara memanggil prosedur di program utamaDEKLARASIProcedure namaprosedur

DESKRIPSINamaprosedur

Contoh

13

4) PenilaianTeknik

PenilaianBentuk

InstrumenInstrumen Score

Aspek Kognitif (tes tertulis)

Daftar pertanyaan

Buatlah algoritma menentukan benda padat, cair dan uap denganstardar nilai suhu kurang dari 0derajat celcius adalah padat, antara 0 sampai 100 derajat celcius adalah cair. Diatas 100 derajat celcius adalah uap. Masing-nmasing kondisi di panggil dari fungsi

40

Aspek psikomotorik(Praktek)

Membuat program denganbahasa C++

Buatlah program dari soal tertulis

60

Total score 100

C. Kegiatan Belajar 3

a. Kompetensi Dasar : Algoritma Teknik Searching dan Sorting

b. Alokasi Waktu : 4 x 45 menit

14

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 algoritmayang digunakan untuk memecahkan masalah pencarian datapada suatu data larik/array. Cara kerja dari algoritmaini adalah dengan menelusuri elemen-elemen array dariawal sampai akhir, dimana data tidak perlu diurutkanterlebih dahulu. Kemungkinan terbaik(best case) darialgoritma ini adalah jika data yang dicari berada padaelemen array yang terdepan sehingga waktu yangdibutuhkan untuk pencarian data semakin singkat.Sebaliknya, akan mencapai kondisi terburuk(wors case)apabila data yang dicari berada pada elemenakhir.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();}

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

  /* algoritma */  for(i=0; i<n; i++)

15

  {    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 sortDiberi nama “Bubble” karena proses pengurutan secaraberangsur angsur bergerak/berpindah ke posisinyayang tepat, seperti gelembung yang keluar darisebuah gelas bersoda. Bubble Sort mengurutkan datadengan cara membandingkan elemen sekarang denganelemen berikutnya.Jika elemen sekarang lebihbesardari elemen berikutnya maka kedua elementersebut ditukar (untuk pengurutan ascending). Jikaelemen sekarang lebih kecildari elemen berikutnya,maka kedua elemen tersebut ditukar (untukpengurutan descending).Algoritma ini seolah-olahmenggeser satu per satu elemen dari kanan ke kiriatau kiri ke kanan, tergantung jenis pengurutannya.Ketika satu proses telah selesai, maka bubble sortakan mengulangi proses, demikianseterusnya. Bubblesort berhenti jika seluruh array telah diperiksadan 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

16

22 10 15 2 3 8

22 10 2 15 3 8

22 2 10 15 3 8

2 22 10 15 3 8

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) PenilaianTeknik

PenilaianBentuk

InstrumenInstrumen Score

17

Aspek psikomotorik(Praktek)

Membuat program denganbahasa C

1. Buatlah program pencarian suatu bilangan yang diinputkan oleh user dari sebuah array yang sudah diinputkan sebelumnya dengan menggunakan teknik sequence search

2. Buatlah program mengurutkan bilangan secara increment dari array bilangan yang sudah diinputkan sebelumnya dengan menggunakan teknik buble sort

50

50

Total score 100

D. Kegiatan Belajar 4

a. Kompetensi Dasar : Menggunakan Library Grafik

b. Alokasi Waktu : 4 x 45 menit

c. Tujuan Kegiatan Pemelajaran

Setelah mempelajari kegiatan belajar ini siswa dapatmemahami 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> danmelakukan proses inisialisasi mode grafik yang digunakanoleh komputer. Untuk inisialisasi mode grafik digunakanperintah initgraph() yang ada di file header graphics.h.Format umum dari perintah ini adalah :

initgraph(graphdriver, graphmode, direktori_bgi)

Variabel graphdriver digunakan untuk menyimpan nilaidriver grafis yang ditentukan berdasarkan kartu grafikyang digunakan. Variabel graphmode digunakan untukmenyimpan nilai mode grafis, sedangkan direktori_bgiadalah tempat file .bgi yang digunakan dalam pemrogramangrafik. Contoh listing program berikut ini akanmenggambarkan persegi panjang dengan diagonal yangmenutupi layar.

Contoh program#include<stdio.h>#include<conio.h>#include<graphics.h>int Xmax, Ymax;int GraphDriver,GraphMode,ErrorCode;

18

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 variabelGraphDriver = DETECT. Perintah ini berarti programmeminta autodeteksi, sehingga Turbo C secara langsungakan mencocokkan driver dan mode grafik yang terdeteksi.Proses berikutnya adalah inisialisasi mode grafik denganperintah : initgraph( &GraphDriver, &GraphMode, "c:\\tc"); melalui perintah ini Turbo C akan menginisialisasikartu grafik yang telah terdeteksi, kemudian kompilerakan menemukan dan memasukkan graphic-driver (filedengan akhiran .bgi). Begitu nama driver ditemukan, makadriver akan menangani rincian antara program grafikdengan perangkat keras. Jika ternyata driver grafiktidak dapat ditemukan, maka initgraph tidak akan dapatmembuat grafik apapun. Karena itu perintah ErrorCode =graphresult(); digunakan untuk mengembalikan nilaiinisialisasi grafik. Jika nilai yang dikembalikan 0(grOK) maka kita dapat memulai program grafik. Jikatidak, maka kita harus memuat listing berikut untukmendeteksi kesalahan pada inisialisasi grafik.

if( ErrorCode != grOk ){

printf(" Graphics System Error: %s\n",

grapherrormsg( ErrorCode )

);

exit( 1 );

}

19

Setelah proses inisialisasi berhasil dilakukan, makakita dapat mulai

membuat grafik yang diinginkan. Pixel pada layardinomori mulai dari

sudut kiri atas layar (0, 0) sampai dengan sudut kananbawah (getmaxx(),

getmaxy).

Perintah untuk menggambar persegi panjang adalahrectangle(x1,y1,x2,y2); dimana x1 dan y1 adalahkoordinat sudut kiri atas dari persegi panjang, dan x2,y2 adalah sudut kanan bawah dari persegi panjang.Sedangkan perintah line(x1,y1,x2,y2); digunakan untukmenggambar garis dari koordinat (x1,y1) sampai koordinat(x2,y2). Jika program selesai dilakukan maka kita harusmemanggil fungsi closegraph(); untuk menutup modegrafik.

2) Fungsi-fungsi grafik pada Turbo C

Dengan menggunakan format program seperti contohsebelumnya, kita dapat membuat gambar-gambar lainmenggunakan fungsi-fungsi gambar yang disediakan olehturbo C, diantaranya adalah :

a) Garis

Untuk menggambar garis digunakan fungsiline(x1,y1,x2,y2) yang berarti penggambaran garisdimulai dari koordinat awal (x1, y1) sampai koordinatakhir (x2,y2). Perintah lain untuk menggambar garisadalah lineto(x,y) dan linerel(dx,dy). Untuk menggunakankedua perintah tersebut, kita harus mengerti terlebihdahulu konsep CP (Current Position) yang berarti posisisaat ini. Pada saat pertama kali memanggil fungsilineto(x,y) dan linerel(dx,dy)CP terletak pada posisikoordinat (0,0) sehingga garis akan digambar dari posisi(0,0) sampai posisi (x,y) pada perintah lineto() danposisi (dx,dy) pada perintah linerel(), selanjutnya CPakan diperbaharui pada titik akhir penggambaran garis.

20

Pada awal pemanggilan kedua perintah tersebut memangmemiliki persamaan, yaitu menggambar garis dari posisi(0,0) sampai ke posisi pada parameter perintah.Perbedaanya adalah saat CP diperbaharui pada posisiakhir penggambaran garis (xCP,yCP).

Jika kita menggunakan fungsi lineto(x,y)maka garis akandigambar dari (xCP,yCP) sampai koordinat (x,y), kemudianCP akan diperbaharui pada posisi (x,y). Pada penggunaanperintah linerel(dx,dy), garis akan digambarkan darikoordinat (xCP,yCP) sampai koordinat (xCP+dx , yCP+dy).Turbo C juga menyediakan bentuk-bentuk garis yang dapatdiatur dengan perintah setlinestyle(tipe_garis,pola_garis, tebal_garis). Nilai untuk tipe garisdiberikan 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

21

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 adalahjari-jari ellipse yang sejajar dengan sumbu y. Ellips akan digambarkan tertutup atau terbuka sesuai dengan nilai alpha dan beta-nya, jika ellips ingin digambar tertutup maka alpha harus diisi dengan 0, dan beta harusdiisi 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-jariterpanjang ellipse, dan ry jari-jari terpendek ellipse. Parameter alpha dan beta memang tidak terdapat pada perintah ini, karena ellipse akan diisi pola isian warnamaka 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",

22

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 :

e) Warna pada pola grafik

23

Perintah-perintah yang berhubungan dengan pola dan warnadiantaranya :

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 warnadan pola isian. Sintaks dari perintah ini adalah setfillstyle(nomor_pola, nomor_warna). Jenis-jenis pola isian diberikan oleh tabel berikut :

3) Teks dalam mode grafik

Untuk menampilkan teks dalam mode grafis digunakanperintah outextxy(x,y,str), dimana (x,y) adalah

24

koordinat awal penulisan teks dan str adalah teks yangakan dituliskan. Fungsi outtextxy akan selalu menuliskanteks berdasarkan koordinat tetapi tidak memperbaharui CP(Current Position)

Fungsi lain untuk menuliskan teks adalah perintahouttext(str). Fungsi outtext() akan menuliskan teks dariposisi(0,0) saat pemanggilan pertama, kemudianmemperbaharui CP pada pemanggilan berikutnya berdasarkanposisi CP sebelumnya. Untuk mengatur jenis dan ukuranfont, digunakan perintah settextstyle(). Sintaks dariperintah ini adalah:

settextstyle(jenis, arah, ukuran)

Jenis-jenis font yang dapat digunakan dalam bahasa Cdiberikan dalam

tabel berikut ini :

Arah penulisan tabel terdiri dari dua jenis yaitu darikiri ke kanan atau dari atas ke bawah. Parameter arahdiberikan dalam tabel berikut ini :

Sedangkan ukuran font ditentukan dari nilai 1 sampai10. Angka 1 menggambarkan teks dengan ukuran huruf 8x8pixel, 2 adalah 16x16 pixel demikian seterusnya.Contohbentuk dari jenis-jenis font diatas dapat dilihatberikut ini :

Berikut ini akan diberikan contoh listing program yangmenampilkan teks dan grafik :

25

#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);

setcolor(0);

setlinestyle(0,0,3);

ellipse(x,y+40,180,360,20,10);

getch();

26

closegraph();

return 0;

}

4) Penilaian

Buatlah tampilan seperti dibawah ini

27

SMK TELEKOMUNIKASITUNAS HARAPAN

KAB. SEMARANG

BAB IIIEVALUASI

A. PERTANYAAN 1. Buatlah program fungsi untuk menjumlah 2

buah matrik dengan ordo 3x32. Dari soal no.1 buatlah algoritma untuk

mencari posisi dari isi matrik

B. KRITERIA KELULUSAN

AspekSkor

(1-100)Bobot Nilai Keterangan

Soal 1 4 Syarat lulus nilai minimal 75dan skor setiap aspek minimal 75

Soal 2 4Ketepatan waktu 2

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.

28

BAB IVPENUTUP

Setelah menyelesaikan modul ini dan mengerjakan semua tugasserta evaluasi maka berdasarkan kriteria penilaian, siswadapat dinyatakan lulus/ tidak lulus. Apabila dinyatakanlulus maka dapat melanjutkan ke modul berikutnya sesuaidengan alur peta kududukan modul, sedangkan apabiladinyatakan tidak lulus maka peserta diklat harus mengulangmodul ini dan tidak diperkenankan mengambil modulselanjutnya.

oooOooo

29

DAFTAR PUSTAKA

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

Hendrowati, Retno & Hariyanto, Bambang. (2000). LogikaMatematika. Informatika. Bandung

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

Munir, Rinaldi. (1999). Algoritma dan Pemrograman dalam BahasaPascal dan C. Informatika. Bandung

Santosa, Insap. (1992). Struktur Data Menggunakan Turbo Pascal6.0. Andi Offset. Yogyakarta

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

http://ilmukomputer.com

30