Gambar 1. Tampilan Layar Sebuah Program Animasi

dokumen-dokumen yang mirip
Lecture Notes Algoritma dan Pemrograman

ALGORITMA & PEMROGRAMAN II ARRAY

Lecture Notes Algoritma dan Pemrograman

Bahasa C melengkapi fasilitas modular dengan menggunakan fungsi pada setiap SubProgram. Contoh pembagian program menjadi beberapa subprogram.

KONTROL ALIR PERULANGAN

PENGENALAN BAHASA C DAN C++

ALGORITMA (2) Mengupas Kentang

PRAKTIKUM 6 PENGULANGAN PROSES 2

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :

FUNCTION (FUNGSI) LOGO. Pendidikan Teknik Elektronika FT UNY. Muh. Izzuddin Mahali, M.Cs.

MENAMPILKAN HASIL Operasi Keluaran (Output)

Algoritma & Pemrograman #3

Bahasa C. Dosen : Dhamayanti

Algoritma Pemrograman. Fery Updi,M.Kom

1. Mempelajari konsep dasar array, array ganda, pengiriman array ke fungsi dan string 2. Membuat program menggunakan array, array ganda

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

Konsep Pemrograman. Bab 7. Fungsi1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

Fungsi, Parameter, Rekursi

BAB VI BAHASA C Pendahuluan

Achmad Solichin.

BAB IV PENGULANGAN PROSES

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK AMIKOM YOGYAKARTA

Algoritma Pemrograman. Fery Updi,M.Kom

MODUL I PENGENALAN IDE C++, ALGORITMA DAN PEMROGRAMAN

Dasar Pemrograman. Visual Studio Program C++ Sederhana. Yoannita, S.Kom.

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

Struktur Program Bahasa C

Konsep Dasar Pemrograman Dan Pengenalan C++

Algoritma dan Pemrograman

PENGENALAN BAHASA C. Praktikum 3

Pernyataan FOR Pernyataan WHILE Pernyataan REPEAT. Dewi Sartika,M.Kom

Sejarah Singkat C adalah bahasa pemrograman yang dikembangkan oleh Dennis Ritchi dan KenThompson pada tahun 1972, C merupakan perbaikan dar bahasa B y

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e

1 - Bahasa Pemrograman

OPERASI PERNYATAAN KONDISI

Kurikulum Qt. { Basic OOP } Chapter 4. Function

Rosihan Ari Yuana, S.Si, M.Kom Lisensi Dokumen: BAB I. PENDAHULUAN C++ Oleh:

PROSEDUR DAN FUNGSI (PROCEDURE & FUNCTION)

Bab 9 Pointer. 9.1 Pendeklarasian pointer

Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs.

BAB II TEORI DASAR. Gambar 1 Kurva untuk interpolasi linier. Sehingga diperoleh persamaan dari interpolasi linier sebagai berikut :

BAB 4 PENGENALAN BAHASA C

ALGORITHM 7 C++ Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com

Pemetaan Area (Mapping) Sederhana Implementation with C/C++

Bahasa C-M6 By Jamilah, Skom 1

PEMROGRAMAN TERSTRUKTUR OLEH : IR. H. SIRAIT, MT

Fungsi 1. Ekohariadi FT Unesa

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Review: Algoritme dan Program 12/29/2011. Algoritme dan Pemrograman. Review: Bagaimana memecahkan masalah dengan komputer?????

Bab 2. Dasar-Dasar Pemrograman C

BAHASA PEMROGRAMAN C

BAB 1 KONSEP DASAR BAHASA C

Sekilas C DAN C++ DISUSUN OLEH. Sebuah bahasa, yaitu: 1. Bahasaa tingkat tinggi. High. dapat. lunak

A. TUJUAN 1. Menjelaskan tentang prinsip dasar fungsi. 2. Menjelaskan tentang.parameter formal dan parameter aktual

MODUL 1 PENGENALAN PROGRAM C++ DAN PERNYATAAN MASUKAN-KELUARAN

Tipe Data, Variabel, Input/Output

MODUL 5 APLIKASI DISPLAY LCD

Struct Lanjutan: Studi Kasus

Pada bahasa pemrograman C++, dapat dibuat program dengan beberapa sub-program sesuai dengan keinginan dengan menggunakan fungsi.

UMMU KALSUM UNIVERSITAS GUNADARMA

Kurikulum Qt. Chapter 4 Function. Fungsi

STRUKTUR DASAR PEMROGRAMAN

KONSEP DASAR PROGRAM BAHASA C

BAB III ANALISIS, ALGORITMA, DAN CONTOH PENERAPAN

MODUL 1 STANDAR INPUT DAN OUTPUT

Konsep Pemrograman. Bab 13. Pointer 3. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

MODUL IV OPERASI DASAR MASUKAN DAN KELUARAN

Pengulangan. Overview. Tujuan. 1.1 Konsep Pengulangan

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

Fungsi : Dasar Fungsi

Bahasa Pemrograman Sejarah singkat C++ Struktur program C++ Yoannita

Modul V Pemrograman Bahasa C ( bagian II )

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

PEMBUATAN PUSTAKA TURBO/BORLAND C UNTUK GCC DENGAN MENERAPKAN KONSEP PEMROGRAM MODUL BANYAK. Intisari

MODULAR (FUNGSI)

IT234 - Algoritma dan Struktur Data. Ramos Somya

Modul 1 Dasar Dasar Bahasa Pemrograman C

PENGENALAN PROGRAM C++

BAB III PERINTAH INPUT OUTPUT

POINTER DASAR PEMROGRAMAN

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM. telah dijelaskan pada bab sebelumnya. Analisis yang dilakukan bertujuan untuk

Algoritme dan Pemrograman

PRAKTIKUM 1 ALGORITMA & PEMROGRAMAN. 1. Mengenal C/C++

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

PEMROGRAMAN DAN METODE NUMERIK Semester 2/ 2 sks/ MFF 1024

dilakukan oleh bahasa mesin dapat dilakukan oleh C dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C dalam pemakainnya memerlukan

POINTER II. Oleh : Mike Yuliana PENS-ITS

Chapter 1 KONSEP DASAR C

PRAKTIKUM 12 POINTER 2

Algoritme dan Pemrograman

Dosen : Dede Kurniadi, S.Kom.,M.Kom HP :

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

Fungsi DASAR PEMROGRAMAN

LAPORAN PRAKTIKUM RESMI QUEUE

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

Chapter 4 Counting Repetition

Aplikasi Rekursif dalam Analisis Sintaks Program

BAB I PENGENALAN BAHASA C

Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN

Algoritma Pemrograman 2B (Pemrograman C++)

Transkripsi:

Menggambar Kotak (Ed. 2) 1/6 Lecture Notes Algoritma dan Pemrograman Menggambar Kotak Thompson Susabda Ngoen Di dalam penulisan program adakalanya kita perlu menggambar kotak (bingkai segi empat) di layar komputer agar tampilan menjadi lebih indah. Compiler yang digunakan harus mempunyai function-function untuk mengatur posisi cursor di layar komputer, seperti gotoxy() yang didefinisikan di berkas header conio.h pada compiler Turbo C++ 3.0 dan Borland C++ 3.1. IDE Dev-C++ juga mempunyai function ini di berkas header conio2.h. A. Koordinat Titik Gambar 1. Tampilan Layar Sebuah Program Animasi Data apa yang kita perlukan agar kotak tersebut bisa digambar? Ya, koordinat kotak tersebut. Sebuah kotak mempunyai empat titik. Berapa titik koordinat yang diperlukan? Keempat titik? Dua titik saja? Dua titik yang mana? atas dan kiri bawah? Misalkan keempat titik kotak kita beri nama A, B, C, dan D. Misalkan kolom kiri kotak adalah x1, kolom kanan kotak adalah x2, baris atas kotak adalah y1, dan baris bawah kotak adalah y2. Dengan demikian titik A berkoordinat x1, y1; titik B berkoordinat x2, y1; titik C berkoordinat x2, y2; dan titik D berkoordinat x1, y2. Gambar 2. Koordinat Kotak Jika koordinat yang diambil adalah titik A dan B maka kita mendapat data x1, x2, dan y1, sebanyak 3 data, tidak ada data y2. Jika koordinat yang diambil adalah titik A dan D maka

Menggambar Kotak (Ed. 2) 2/6 kita mendapat data x1, y1, dan y2, sebanyak 3 data, tidak ada data x2. Jika koordinat yang diambil adalah titik-titik diagonal A dan C maka kita mendapat data x1, y1, x2, y2. Sama halnya jika kita menggunakan koordinat titik B dan D maka kita mendapat data x1, y1, x2, y2. Jadi data yang diperlukan adalah koordinat kedua titik diagonal. B. Cara Pertama Kotak ini terdiri atas 8 bagian: karakter kiri atas (a), garis horisontal atas (b), karakter kanan atas (c), garis vertikal kanan (d), karakter kanan bawah (e), garis horisontal bawah (f), karakter kanan bawah (g), dan garis vertikal kiri (h). Gambar 3. Komponen Kotak Hal yang harus diingat adalah bahwa cursor yang berada di koordinat (x, y) setelah mencetak satu karakter akan pindah ke koordinat (x+1, y). Jika posisi cursor saat pencatakan berada di kolom 80, maka cursor akan pindah ke kolom satu baris berikutnya. Pada cara pertama kita menggambar kotak dengan urutan searah putaran jarum jam mulai dari pojok kiri atas: a, b, c, d, e, f, g, dan h. a adalah (karakter ASCII berkode 201) pada koordinat (x1, y1) b adalah sejumlah potongan garis horisontal (karakter ASCII berkode 205) pada koordinat (x1+1, y1), (x1+2, y1), sampai dengan (x2-1, y1). c adalah (karakter ASCII berkode 187) pada koordinat (x2, y1). d adalah sejumlah potongan garis vertikal (karakter ASCII berkode 186) pada koordinat (x2, y1+1), (x2, y1+2), sampai dengan (x2, y2-1). e adalah ( karakter ASCII berkode 188) pada koordinat (x2, y2). f adalah sejumlah potongan garis horisontal pada koordinat (x1+1, y2), (x1+2, y2), sampai dengan (x2-1, y2). g h adalah (karakter ASCII berkode 200) pada koordinat (x1, y2). adalah sejumlah potongan garis vertikal pada koordinat (x1, y1+1), (x1, y1+2), sampai dengan (x1, y2-1). Karakter kiri atas dicetaka dengan instruksi gotoxy(x1, y1); printf("%c",201); /*** a ***/ Setelah selesai mencetak a cursor berada di koordinat (x1+1, y1). Ini adalah koordinat awal untuk mencetak b. Jadi posisi cursor sudah tepat dan tidak perlu diatur kembali dengan gotoxy( ). Pada saat mencetak b posisi baris selalu berada di y1 sedangkan posisi kolom berubah-ubah mulai dari x1+1 ke kanan sampai dengan x2-1. Posisi kolom ini yang perlu dikendalian misalnya dengan variabel i. for (i = x1 + 1; i <= x2-1; i++) /*** b ***/ printf("%c", 205);

Menggambar Kotak (Ed. 2) 3/6 Setelah selesai mencetak b cursor berada pada koordinat (x2, y1), tepat di koordinat untuk mencetak c. Jadi c dapat langsung dicetak tanpa harus terlebih dahulu memindahkan cursor. printf("%c", 187); /*** c ***/ Setelah selesai mencetak c cursor berada pada koordinat (x2+1, y1). Ini bukan posisi awal untuk mencetak garis vertikal d yang berada pada koordinat (x2, y1+1). Hal lain yang perlu diperhatikan adalah setelah mencetak satu ruas garis vertikal cursor pindah ke kolom di sebelah kanannya sedangkan ruas garis vertikal berikutnya harus berada tepat di bawah ruas garis vertikal yang telah dicetak. Artinya posisi kolom harus selalu berada pada x2 sedangkan setiap selesai mencetak satu ruas garis cursor berada pada posisi kolom x2+1. Oleh karena itu sebelum mencetak setiap ruas garis vertikal, cursor harus dipindahkan dulu ke kolom x2. Posisi baris ruas garis berubah-ubah mulai dari y1+1 sampai dengan y2-1. Posisi baris ini perlu divariabelkan, misalnya dikendalian oleh pencacah i. for (i = y1 + 1; i <= y2-1; i++) { /*** d ***/ gotoxy(x2, i); printf("%c", 186); Sebelum mencetak e pindahkan cursor ke posisi (x2, y2). gotoxy(x2, y2); printf("%c", 188); /*** e ***/ Garis horisontal f dapat dicetak dari arah kanan ke kiri atau dari kiri ke kanan. Misalkan kita mencetaknya dari kanan ke kiri. Ruas garis ini selalu berada pada baris y2 sedangkan kolomnya berubah-ubah mulai dari x2-1, x2-2, mundur terus sampai kolom x1+1. Kendalikan posisi kolom dengan sebuah pencacah. for(i = x2-1; i >= x1 + 1; i--) { /*** f ***/ gotoxy(i, y2); printf("%c", 205); Karakter g harus dicetak pada koordinat (x1, y2) sedangkan saat ini cursor berada di koordinat (x1+1, y2). Oleh karena itu cursor perlu dipindahkan sebelum mencetak. gotoxy(x1, y2); printf("%c", 200); /*** g ***/ Pencetakan garis vertikal h mirip dengan pencetakan garis vertikal d, cursor harus diatur setiap kali seruas garis dicetak. for (i = y2-1; i >= y1 + 1; i--) { /*** h ***/ gotoxy(x1, i); printf("%c", 186); Kedelapan bagian ini kita gabung menjadi Program 1. 1 2 3 4 5 6 7 8 9 10 11 12 13 # include <stdio.h> # include <conio2.h> int main() { int x1, y1, x2, y2, i; Program 1. Menggambar Kotak (A) scanf("%d %d %d %d", &x1, &y1, &x2, &y2); gotoxy(x1, y1); printf("%c",201); /* a */ for (i = x1 + 1; i < x2; i++) printf("%c", 205); /* b */ printf("%c", 187); /* c */ for (i = y1 + 1; i < y2; i++) { /* d */ gotoxy(x2, i); printf("%c", 186);

Menggambar Kotak (Ed. 2) 4/6 14 15 16 17 18 19 20 21 22 23 gotoxy(x2, y2); printf("%c", 188); /* e */ for(i = x2-1; i > x1; i--) { /* f */ gotoxy(i, y2); printf("%c", 205); gotoxy(x1, y2); printf("%c", 200); /* g */ for (i = y2-1; i > y1; i--) { /* h */ gotoxy(x1, i); printf("%c", 186); return 0; C. Cara Kedua Pada cara ini urutan pencetakan karakter pembentuk kotak tidak runut, yang penting kotaknya jadi. Jika diperhatikan ternyata ada kemiripan pencetakan garis b dan f. Perbedaannya hanya pada posisi baris. Demikian juga dengan kemiripan pencetakan garis vertikal d dan h. Perbedaannya hanya pada posisi kolom. Jadi apabila yang dipentingkan adalah hasil akhir maka urutan pencetakan dapat diubah agar program lebih efisien. Urutan pencetakan adalah a, c, e, g, b dan f, d dan h. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # include <stdio.h> # include <conio2.h> int main() { int x1, y1, x2, y2, i; Program 2. Menggambar Kotak (B) scanf("%d %d %d %d", &x1, &y1, &x2, &y2); gotoxy(x1, y1); printf("%c", 201); /* a */ gotoxy(x2, y1); printf("%c", 187); /* c */ gotoxy(x2, y2); printf("%c", 188); /* e */ gotoxy(x1, y2); printf("%c", 200); /* g */ for (i = x1 + 1; i < x2; i++) { gotoxy(i, y1); printf("%c", 205); /* b */ gotoxy(i, y2); printf("%c", 205); /* f */ for (i = y1 + 1; i < y2; i++) { gotoxy(x2, i); printf("%c", 186); /* d */ gotoxy(x1, i); printf("%c", 186); /* h */ return 0; D. Kotak Berbagai Bentuk Garis Pada kedua contoh di atas karakter pembentuk kotak adalah garis ganda. Selain bentuk garis ganda mungkin ada baiknya jika program kita bisa mengakomodasi pencetakan kotak dengan bentuk garis lain. Instruksi-instruksi pencetakan kotak kita jadikan sebuah function dengan parameter: 1) koordinat kiri atas, 2) koordinat kanan bawah, 3) kode bentuk garis. Parameter ketiga ada kode bentuk garis, bukan kedelapan karakter pembentuk kotak. Hal ini dilakukan agar mudah bagi instruksi yang memanggil function ini, cukup kirimkan kode kotaknya. Bentuk garis kotak ada empat jenis seperti ditunjukkan Tabel 1. Karakter pembentuk garis horizontal atas dan bawah sama. Karakter pembentuk garis vertikal kiri dan kanan sama. Walaupun demikian kita menggunakan larik delapan karakter untuk memudahkan membayang bentuk karakter yang dimaksud.

Menggambar Kotak (Ed. 2) 5/6 Tabel 1. Berbagai Bentuk Garis Kotak Kode Kotak Bentuk Atas Atas Kanan Atas Kode ASCII Karakter Kanan Bawah Bawah Bawah 1 218 196 191 179 217 196 192 179 2 213 205 184 179 190 205 212 179 3 214 196 183 186 189 196 211 186 4 201 205 187 186 188 205 200 186 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 # include <stdio.h> # include <conio2.h> Program 3. Menggambar Kotak (C) void kotak (int x1, int y1, int x2, int y2, int kode) { char kar[8]; int i; switch(kode) { case 1: kar[0] = 218; kar[1] = 196; kar[2] = 191; kar[3] = 179; kar[4] = 217; kar[5] = 196; kar[6] = 192; kar[7] = 179; break; case 2: kar[0] = 213; kar[1] = 205; kar[2] = 184; kar[3] = 179; kar[4] = 190; kar[5] = 205; kar[6] = 212; kar[7] = 179; break; case 3: kar[0] = 214; kar[1] = 196; kar[2] = 183; kar[3] = 186; kar[4] = 189; kar[5] = 196; kar[6] = 211; kar[7] = 186; break; case 4: kar[0] = 201; kar[1] = 205; kar[2] = 187; kar[3] = 186; kar[4] = 188; kar[5] = 205; kar[6] = 200; kar[7] = 186; gotoxy(x1, y1); putchar(kar[0]); /* a */ gotoxy(x2, y1); putchar(kar[2]); /* c */ gotoxy(x2, y2); putchar(kar[4]); /* e */ gotoxy(x1, y2); putchar(kar[6]); /* g */ for (i = x1 + 1; i < x2; i++) { gotoxy(i, y1); putchar(kar[1]); /* b */ gotoxy(i, y2); putchar(kar[5]); /* f */ for (i = y1 + 1; i < y2; i++) { gotoxy(x2, i); putchar(kar[3]); /* d */ gotoxy(x1, i); putchar(kar[7]); /* h */ int main() { int x1, y1, x2, y2, kode; scanf("%d %d %d %d %d", &x1, &y1, &x2, &y2, &kode); kotak (x1, y1, x2, y2, kode); return 0;

Menggambar Kotak (Ed. 2) 6/6 2 3 30 10 2 SOAL LATIHAN 1. Tulis function untuk menampilkan kotak dengan urutan yang simetri: kiri tengah atas, kanan tengah atas, kiri tengah bawah, kanan tengah bawah berakhir di tengah kiri dan kanan. 2. Tulis function untuk menampilkan kotak dengan membentuk serangkaian kotak berukuran lebih kecil tapi proporsional dengan ukuran kotak yang diinginkan seperti diilustrasikan gambar di bawah ini. Ketika menggambar kotak berikutnya hapus kotak sebelumnya. Semua kotak-kotak tersebut mempunyai koordinat kiri atas yang sama seperti diilustrasikan gambar di bawah ini.