Blog

Tugas UTS BSI Semester 2 CPP

Your code like nature

Assalammu’alaikum Wr. Wb

Hallooo Brads….

Selamat Pagi, Selamat Siang, Selamat Sore, dan Selamat Malam, buat sobat semua yg sedang membaca postingan qte yang satu ini, mudah-mudahan postingan qte yang satu ini bisa bermanfaat buat para sobat semua penggemar dunia programmer whuhahah…..aamiin 🙂

Ok sob, dipostingan qte kali ini, qte akan memberikan salah satu contoh Source Code bahasa pemrograman C++ tentang Registry dan Interupsi sob, Postingan qte ini juga, qte tujukan untuk Tugas Matkul Algoritma Pemrograman II di BSI, guna memenuhi Nilai UTS sob…aamiin.

Damn and Wooow Apa itu registry dan interupsi ??? whuhahah, yaaah perintah-perintah aneh pada komputer sob, utamanya pada microprocessor, dengan mempelajari registry, interupsi dan kawan-kawannya, salah satu contohnya kita bisa dengan mudah mengatur tampilan layar suatu komputer… WoooWOoow contoh yang lainnya sob, kalian pasti tahu kan software-software seperti Cheat Engine, GL-Tools yaaaaa kaya software-software pendukung buat System gitu, nah salah satu bahasa pemrograman yang digunakan untuk membangunnya adalah bahasa C/C++ sob, kok bisaaaa…????? bisa lah sob, soalnya bahasa C merupakan bahasa pemrograman tingkat menengah, artinya C ini bisa dipahami oleh manusia dan juga mesin, terus kalau C++ apa bang qte???? kalau C++ ini adalah bahasa yang dikembangkan dari bahasa C, dan juga sudah mendukung OOP (Object Oriented Programming) dengan kata lain, C++ ini merupakan Bahasa Pemrograman Multi Paradigma, mangkanya cocok bagi pemula yang ingin terjun ke dunia programmer…Ohiya sob, qte menggunakan Borland C++ dalam mempelajari bahasa ini, selain tuntutan kampus, juga mudah mencari reverensi tentang Borland C++ di mang google sob,… Ok sob, langsung saja di sedot dan di cerna Source Codenya…..whuhahahah

Source Code dibawah ini qte ngambil dari Modul Algoritma Pemrograman II BSI, Contoh 9, sebenarnya kata kk asdos yg cantik dan baik hati 😀 itu, pilihnya dari contoh 1-7, namun qte pilih contoh sembilan supaya mencegah agar tidak sama dengan teman-teman qte yang lainnya, dan juga contoh 9 ini, sebenarnya sama saja seperti contoh 8, 7, 6 dan yang lainnya, cuman bedanya di contoh source code 9 ini, digunakan untuk membaca karakter, warna karakter yang sudah dicetak pada posisi kurso, selain itu ada tambahannya bisa mencetak symbol, bingkai, tabel dan aksara-aksara yunani, naaaaah,….  ko bisa sih mencetak bingkai, tabel, symbol dan aksara yunani…??? nah loh hayoooh knapa bisaaa????, 😀 ya bisa sob, karena di contoh 9 ini untuk mencetak itu semua menggunakan ASCII Extended Character Set (Set Karakter ASCII perluasan), yaitu karakter ASCII dengan kode atau nomor urut 128 sampai dengan 255 desimal, lebih jelasnya apa itu  ASCII Extended Character Set langsung aja sobat qte semua bisa download Modulnya atau cari-cari di mang google dan mang youtube untuk dipelajari,…. Mantaab jibah 😀  ohiya untuk reverensi lainnya, bisa tuh sobat qte kunjungi blog-blog temen qte, mantab-mantab lah hehehe 😀

Ini dia Source Codenya :

#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>

#define VIDEO_INT 0x10
#define UCHAR unsigned char

void setMode(UCHAR mode);
void getCursorPos(UCHAR *y, UCHAR *x);
void setCursorPos(UCHAR y, UCHAR x);
void writeChar(UCHAR letter, UCHAR attr);
void writeString(UCHAR *str, UCHAR attr);

int main(void){

   UCHAR baris, kolom;
   UCHAR pilih;
   satu:
   setMode(3); // menggunakan mode  layar ke 3
   setCursorPos(4, 4); // membaca posisi kursor
   writeChar(213, 0x17); // membuat bingkai dengan symbol
   setCursorPos(5, 74);
   writeChar(184, 0x17);
   setCursorPos(20, 4);
   writeChar(192, 0x17);
   setCursorPos(20, 74);
   writeChar(217, 0x17);

   for (baris = 5; baris < 20; baris++){

      setCursorPos(baris, 4);
      writeChar(179, 0x17);
      setCursorPos(baris, 74);
      writeChar(179, 0x17);
   }

   for (kolom = 5; kolom < 74; kolom++){

      setCursorPos(4, kolom);
      writeChar(205, 0x17);
      setCursorPos(20, kolom);
      writeChar(196, 0x17);
   }

   setCursorPos(4, 28);
   writeChar(181, 0x17);
   setCursorPos(4, 29);
   writeString("FORM CETAK INFORMASI", 0x4f);
   setCursorPos(4, 49);
   writeChar(198, 0x17);

   for (baris = 5; baris < 20; baris++){

   	for (kolom = 5; kolom < 74; kolom++){

      	setCursorPos(baris, kolom);
        writeChar(0x20, 0x1e);
      }
   }

   setCursorPos(12, 25);
   writeString("Cetak Informasi (Y/T)? [ ]", 0x1e);

   for (;;){

      setCursorPos(12, 49);
      pilih = getch();
      writeChar(pilih, 0x1e);
      getch();

      if ((pilih == 'Y') || (pilih == 'y')){
      	clrscr();
        setMode(3);
   	setCursorPos(4, 4);
   	writeChar(213, 0x17);
   	setCursorPos(4, 74);
   	writeChar(184, 0x17);
   	setCursorPos(20, 4);
   	writeChar(192, 0x17);
   	setCursorPos(20, 74);
   	writeChar(217, 0x17);

   	for (baris = 5; baris < 20; baris++){
  	    setCursorPos(baris, 4);
      	    writeChar(179, 0x17);
      	    setCursorPos(baris, 74);
      	    writeChar(179, 0x17);
   	}

   	for (kolom = 5; kolom < 74; kolom++){

   	    setCursorPos(4, kolom);
      	    writeChar(205, 0x17);
      	    setCursorPos(20, kolom);
      	    writeChar(196, 0x17);
   	}

	setCursorPos(4, 28);
	writeChar(181, 0x17);
 	setCursorPos(4, 29);
   	writeString("IDENTITAS MAHASISWA BSI", 0x4f); // huruf hexa 0x4f untuk warna string merah
   	setCursorPos(4, 52);
   	writeChar(198, 0x17);

   	for (baris = 5; baris < 20; baris++){
   	    for (kolom = 5; kolom < 74; kolom++){

      		setCursorPos(baris, kolom);
        	writeChar(0x20, 0x1e);
      	    }
   	}

   	setCursorPos(11, 25); // membaca kursor untuk mencetak string
   	writeString("NAMA   : M. Fadilah Akbar", 0x1e);
        setCursorPos(12, 25);
        writeString("NIM    : 13161032", 0x1e);
        setCursorPos(13, 25);
        writeString("KELAS  : 13.2A.07", 0x1e);

        setCursorPos(15, 25);
   	writeString("Tutup (Y/T)? [ ]", 0x1e);

   	for (;;){

   	   setCursorPos(15, 39);
      	   pilih = getch();
	   writeChar(pilih, 0x1e);
           getch();

      	   if ((pilih == 'Y') || (pilih == 'y'))
         	break;
           else
            	goto satu;
        }
        
	return EXIT_SUCCESS;
        
	}else
      	        break;
   }
}

void setMode(UCHAR mode){ // Mengubah mode tampilan layar

   asm mov ah, 0x00; // Register AH = 0
   asm mov al, mode; // Register AL = mode
   asm int VIDEO_INT // Lakukan interupsi

   return;
}

void getCursorPos(UCHAR *y, UCHAR *x){ // Baca posisi 20 kursor
   UCHAR row, col;

   asm mov ah, 0x03; // Register AH = 3 heksadesimal
   asm mov bh, 0x00; // Register BH = 0 heksadesimal
   asm int VIDEO_INT; // interupsi
   asm mov row, dh; // Salin register DH ke row
   asm mov col, dl; // Salin register DL ke col

   *y = row; *x = col; // Salin row ke y, col ke x

   return;
}

void setCursorPos(UCHAR y, UCHAR x){ // Memindahkan Posisi kursor

   asm mov ah, 0x02; // Register AH = 2 heksadesimal
   asm mov bh, 0x00; // Register BH = 0 heksadesimal
   asm mov dh, y; // Register DH = letak baris
   asm mov dl, x; // Register DL = letak kolom
   asm int VIDEO_INT; // Lakukan interupsi

   return;
}

void writeChar(UCHAR letter, UCHAR attr){ // Mencetak huruf

   asm mov ah, 0x09; // Register AH = 9 heksadesimal
   asm mov al, letter; // Register AL = huruf
   asm mov bh, 0x00; // Register BH = 0 heksadesimal
   asm mov bl, attr; // Register BL = warna huruf
   asm mov ch, 0x00; // Register CH dan CL menentukan pencetakan
   asm mov cl, 0x01;
   asm int VIDEO_INT; // interupsi

   return;
}

void writeString(UCHAR *str, UCHAR attr){ // Mencetak string
   UCHAR x, y;

   getCursorPos(&y, &x); // Simpan posisi kursor

   for (; *str != '\0'; str++){ // Loop sampai ditemukan NULL
   	if (x > 79){ // Jika sudah sampai kolom
      		y++; x = 0; // ke-80, pindah baris dan pindah ke kolom ke-1
        }

      setCursorPos(y, x++); // Pindahkan posisi kursor
      writeChar(*str, attr); // Cetak per karakter
   }

   return;
}

Dan ini dia SS dari Source Code di atas setelah dijalankan…

fadil

fadil2

Ok Sob, pada Source Code diatas qte hanya mengubah posisi judul pada bingkainya, terus merubah warna background Stringnya, menambahkan mode layar yang sama yaitu set mode 3, jadi ada 2 mode layar dengan set mode 3, juga menambahkan sedikit String, posisi baris, dan kolom di layarnya untuk mencetak informasi identitas qte, dan satu lagi qte mengubah posisi karakter yang sudah dicetak pada posisi baris dan kolomnya jadi posisinya pas di tengah, lebih jelasnya qte juga melenggkapi dengan komen di scriptnya, gmana? Gmana? Gmana ??? ……. Cincai kan heheheh 😀

Yosh Sob, Sekian dulu artikel qte kali ini, mudah-mudahan menjadi inspirasi buat kita semua yang membaca postingan qte yg satu ini, ohiya sob, mohon maaf bila ada kesalahan pada postingan qte ini, sebuah kritik dan saran sangat berharga bagi qte,… jangan lupa sob untuk Comment and Share..

Selamat Menjalankan Aktivitas, Selamat Beristirahat, dan selamat Tidur,….. Salam di postingan qte selanjutnya  ya sob, aamiin… dan Salam Gapleh sob 😀

Wassalammu’alaikum Wr. Wb