Rabu, 22 Juni 2016

pertemuan 1

A.    Pembuatan Project dan Kode Program
Untuk bisa membuat program menggunakan fungsi int86(...) dan teknik inline assembly, maka kode program C++ yang akan dibuat harus merupakan bagian dari sebuah project file, tidak bisa hanya sebuah file kode sumber saja.

1.      Klik menu File pada menu bar, kemudian pilih dan klik menu New dan pilih menu Project, maka akan muncul jendela New Target
2.      Klik tombol Browse untuk menentukan nama file dan lokasi penyimpanan project.
3.      Ketikan nama project pada textbox File name dan klik tombol Open. Textbox Project Path and Name pada jendela New Target akan berisi nama direktori dimana project disimpan dan Target Name akan berisi nama project.
4.      Pada listbox Target Type pilihlah Application (.exe).
5.       Pada combo box Platform pilihlah DOS (Standard).
6.       Pada combo box Target Model pilihlah Small.
7.      Berilah tanda cek pada check box Class Library.
8.       Pada radio button Math Support pilihlah sesuai dengan kondisi
9.      Kosongkan semua check box pada pilihan Libraries.
10.  Klik tombol OK untuk mulai membuat program. Borland C++ 5.02 akan menampilkan Project Window.
11.  Pada Project Window terdapat node nama project (berakhiran .exe) dan node kode program (berakhiran .cpp) dibawah node nama project. Klik kanan pada node kode.
12.  Borland C++ 5.02 akan memunculkan Edit Window seperti diperlihatkan pada gambar I.5. Pada Edit Window inilah kode program mulai diketikan.
13.  Untuk menutup project dapat dilakukan dengan memilih menu Project dari menu bar kemudian pilih submenu Close Project.
14.  Untuk membuka kembali file project yang sudah ada dapat dilakukan dengan memilih menu Project dari menu bar dan memilih menu Open Project, maka akan ditampilkan jendela Open Project File seperti gambar I.6 berikut ini.
15.  Untuk membuka project, kliklah nama file project dari listbox File Name dan klik tombol OK.


B.     Memanggil Interupsi BIOS atau DOS Menggunakan Fungsi int86
Borland C++ 5.02 menyediakan sebuah fungsi untuk menjalankan interupsi BIOS atau DOS, yaitu fungsi int86. Nama fungsi ini dideklarasikan di file header dos.h, berikut ini adalah sintaks dari fungsi int86:
      int int86(int nomor, union REGS *inregs,
   union REGS *outregs)
Keterangan:
int nomor, nomor interupsi yang akan dijalankan.
union REGS *inregs, representasi register pada mikroprosesor yang berisi nilai yang akan digunakan untuk menjalankan interupsi.
union REGS *outregs, representasi register pada mikroprosesor setelah interupsi dijalankan.

Pada fungsi int86, parameter nomor bertipe integer dan dikirimkan secara nilai (by value), sedangkan parameter inregs dan outregs merupakan tipe data union REGS yang telah didefinisikan pada header dos.h dan dikirimkan secara acuan (by reference). Diharapkan pembaca telah memahami tipe data union dan struktur serta pengiriman parameter secara acuan atau secara nilai. Fungsi int86 mengembalikan nilai bertipe integer dari register AX setelah interupsi dijalankan. Tipe data union REGS yang didefinisikan pada file header dos.h merupakan union yang terdiri dari struktur WORDREGS dan BYTEREGS. Berikut ini adalah deklarasi union REGS pada file header dos.h:
Contoh 1:
#include
#include
#include

#define VIDEO_INT 0x10 // BIOS Video Interrupt

int main(void)
{
union REGS in, out; // Deklarasi variabel

in.h.ah = 0x09; // AH = 9 heksadesimal
in.h.al = 'A'; // AL = 41 heksadesimal, huruf A
in.h.bh = 0x00; // BH = 0, halaman video
in.h.bl = 0x07; // BL = 7, warna huruf dan dasar
in.h.ch = 0x00; // CH dan CL menentukan banyak
in.h.cl = 0x01; // huruf yang akan dicetak

clrscr();
int86(VIDEO_INT, &in, &out);
getch();

return EXIT_SUCCESS;
}




Baris 1 sampai baris 3 pada program diatas merupakan penentuan header yang akan digunakan, yaitu conio.h, dos.h dan stdlib.h. Header conio.h digunakan karena pada baris 18 kita akan menggunakan fungsi clrscr dan pada baris 20 kita akan menggunakan fungsi getch. Header dos.h digunakan karena pada baris 9 kita mendeklarasikan variabel in dan out menggunakan tipe union REGS serta pada baris 19 kita akan memanggil fungsi int86. Header stdlib.h digunakan karena pada baris 22 kita akan menggunakan nilai konstanta EXIT_SUCCESS.
Pada baris 5 kita mendeklarasikan konstanta dengan nama VIDEO_INT yang bernilai 10 heksadesimal. Konstanta ini digunakan saat memanggil fungsi video int86 untuk menjalankan interupsi 10 heksadesimal servis 9 heksadesimal. Cobalah untuk mengganti nilai pada in.h.bl dari yang semula 0x07 menjadi nilai lain, misalnya 0x0a, 0x09 atau 0x04 kemudian jalankan program. Apa yang terjadi?
Pada contoh diatas variabel yang digunakan bernama in dan out. Perhatikanlah cara memberikan nilai pada variabel in yang merupakan union REGS pada baris 11 sampai baris 16. Pada contoh diatas in.h.ah, atau in.h.al dan sebagainya berarti memberikan nilai union REGS pada struktur BYTEREGS dengan nama h dan field ah atau al yang bertipe unsigned character.

C.    Memanggil Interupsi BIOS dan DOS Menggunakan Teknik Inline Assembly

Teknik inline assembly adalah teknik menuliskan kode-kode bahasa assembly diantara kode-kode bahasa pemrograman yang lain seperti Pascal dan C/C++. Tidak semua kompilator memiliki kemampuan mengkompilasi kode inline assembly, Borland C++ dan Turbo C/C++ memiliki kemampuan ini. Cara menggunakan teknik inline assembly pada Borland C++ 5.02 adalah dengan menggunakan kata cadangan asm dan diikuti oleh kode program bahasa assembly serta diakhiri dengan tanda semicolon/titik koma (;). Berikut sintaks penggunaan kata kunci asm:

Contoh 2:

#include
#include
#include

#define VIDEO_INT 0x10 // BIOS Video Interrupt

int main(void)
{
clrscr();

asm mov ah, 0x09; // AH = 9 heks.
asm mov al, 0x41; // AL = 41 heks., huruf A
asm mov bh, 0x00; // BH = 0 heks., halaman layar
asm mov bl, 0x07; // BL = 7 heks., warna huruf
asm mov ch, 0x00; // CH dan CL menentukan banyak
asm mov cl, 0x01; // huruf yang akan dicetak
asm int VIDEO_INT; // Interupsi BIOS 10h

getch();
return EXIT_SUCCESS;
}

Perhatikanlah baris 11 sampai dengan baris 16! Instruksi mov ah, 0x09 artinya menyimpan nilai 9 heksadesimal kedalam register AH. Demikian juga dengan instruksi mov bh, 0x00 atau mov cl, 0x01. Dalam pemrograman bahasa assembly opcode mov digunakan untuk memberikan nilai kedalam suatu operand, dalam hal ini register AH, AL, BH, BL dan sebagainya. Kemudian amati pula baris 17. Pada baris 17 instruksi int VIDEO_INT bukan berarti mendeklarasikan variabel VIDEO_INT dengan tipe data integer, melainkan menjalankan interupsi yang nilai interupsinya disimpan dalam konstanta VIDEO_INT, yaitu 10

0x10 atau 10 heksadesimal. Dalam pemrograman bahasa assembly opcode int digunakan untuk menjalankan interupsi sesuai dengan nomor interupsi sesudah kata kunci int.

Rabu, 06 Januari 2016

Pointer




Pointer


Merupakan  sebuah  variabel  yang  berisi  alamat  dari  variabel  lain.  Suatu
pointer  dimaksudkan  untuk  menunjukan  ke  suatu  alamat  memori  sehingga  alamat
dari suatu variabel dapat diketahui dengan mudah.

a. Operator Pointer
Terdapat dua macam operator pointer yang disediakanoleh Borland C++:
1. Operator dereference ( & )
2. Operator reference ( * )

1.) Operator Dereference ( & )
Didalam  mendeklarasikan  suatu  variabel  harus  pada  lokasi  yang  pasti didalam  penggantian memori.Pada  umumnya  kita  tidak  dapat  menentukan  dimana variabel akan ditempatkan Terkadang secara otomatisdilakukan oleh kompiler dan sistem  operasi  yang  sedang  aktif,  tetapi  sesekali  sistem  operasi  akan  memberikan banyak  alamat  yang  kita  tidak  mengetahui  dimana  variabel  ditempatkan.  Hal  ini dapat dilakukan dengan memberikan suatu identifier  “&” (ampersand sign)  didepan nama variabel, operator ini biasa disebut dengan “address of” atau operator alamat. Dengan  menggunakan  operator  dereference  (  &  )  ini,  suatu  variabel  akan menghasilkan alamat lokasi memori.
Sebagai  contoh  ILHAM  ditempatkan  pada  memori  dengan alamat 0x0012ff88 dan dideklarasikan sebagai berikut:

ILHAM = 75;
AMIR = ILHAM;  // AMIR sama dengan ILHAM (75)
RAKA = &ILHAM;  // RAKA sama dengan Address Of ILHAM (0x0012ff88)

2.) Operator Reference ( * ) 
Dengan menggunakan operator anda dapat mengakses secara langsung nilai 
yamg  terdapat  didalam  variabel  yang  berpointer,  hal ini  dapat  dilakukan  dengan 
menambahkan identifier asterisk ( * ), agar dapat menterjemahkan nilai sebenarnya 
dari suatu variabel. Operator ini biasa disebut dengan “value pointed by”. 
Dengan menggunakan operator reference ( * ) ini, menghasilkan nilai  yang 
berada pada suatu alamat memori 
Sebagai contoh ILHAM ditempatkan pada memori denganalamat 65524 dan 
dideklarasikan sebagai berikut: 
ILHAM = 75; 
RAKA = &ILHAM;  // RAKA sama dengan Address Of ILHAM (0x0012ff88) 
RAFLI = *RAKA;  // RAFLI sama dengan value pointed by RAKA(75) 

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheCwB4Ff_DY-5w8vLrCbjZxfyultlYMjirP5hD2WWIpBLIPiVp-8D6EborBl5PhccLyly1VBC0Wfj3ARGjvGHEBtY3ykHQ0AZOBJ8Q3zSML1CEntdjjjoPm4ur5oqLXVuVAk4PdW3-l5Bf/s400/Capture.PNG

B.  Deklarasi Pointer Pada Konstanta 
Suatu  pointer  dapat  dideklarasikan  secara  konstanta atau  secara  tetap  tidak dapat diubah. Untuk mendeklarasikan pointer secara  konstanta dengan memberikan kata const didepan nama konstanta. 
Bentuk penulisan:
tipe_data * const nama_konstanta;
Contoh :
//----------------------------------//
//Pendeklarasian Pointer Konstanta //
//----------------------------------//
#include
#include
#include
void main( )
{
char *const nama = "Borland C++";
clrscr( );
cout<<"Nama Program = "< nama = "Visual C++";
cout<<"Nama Program = "< getch( );
Pada  program  diatas,  terdapat  kesalahan  dan  tidak  dapat  dijalankan,  penyebabnya pada  pernyataan  nama  =  "Borland  C++";.  Karena  variabel  nama,  merupakan pointer  konstanta,  yaitu  tidak  dapat diubah-ubah.  Pesan  Kesalahan  Yang  Tampil adalah:
Cannot modify a const object
Error Message yang akan dihasilkan, dari program contoh-1 diatas adalah:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCYsotkzMOhJKwz8cWvZ81DjOCuLvcCCxgMkBuNNugZeTWEvHsOVDgzz8ZFEuNruEWc_YA5Za4VurrxmVBjYvOqDyX4Ts5oU3s9aWXECsDprlR2F9Fy8-xhrNHS7p8PPU7MG94Dtpwksez/s400/Capture.PNG

C. Deklarasi Pointer Pada Variabel 
Karena keakhlian dari pointer untuk menunjuk secaralangsung kesuatu nilai, memeriksa  satu  persatu  data  yang  memiliki  pointer  pada  saat  variabel  tersebut pertama kali dideklarasikan. 
Bentuk penulisan: 
tipe_data *nama_variabel; 
Contoh 1:
//-------------------------------//
//Penggunaan Pointer Dereference //
//-------------------------------//
#include
#include
#include
main( )
{
int ilham, amir, *raka;
clrscr( );
ilham = 75;
amir = ilham;
raka = &ilham;
cout<<"Nilai ILHAM = "< cout<<"Nilai AMIR = "< cout<<"Nilai RAKA = "< getch();
Contoh 2 :
//-----------------------------//
//Penggunaan Pointer Reference //
//-----------------------------//
#include
#include
#include
main( )
{
int ilham, *raka, rafli;
clrscr( );
ilham = 75;
raka = &ilham;
rafli = *raka;
cout<<"Nilai ILHAM = "< cout<<"Nilai RAKA = "< cout<<"Nilai RAFLI = "< getch( );
}  
D.  Pointer Pada Pointer
Tidak  terbatas  menunjuk  alamat  dari  suatu  variabel, pointer  dapat  pula menunjuk  ke  pointer  lainnya.  Didalam  pendeklarasianya,  hanya  menambahkan pointer reference ( * ) pada variabel yang akan ditunjuk.
Sebagai contoh :
char ilham;
char *raka;  //pointer ke variabel
char **amir;  //pointer pada pointer
ilham = '75';
raka = &ilham;
amir = &raka;  
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoyHUD_r5MVsacGbfKBXFKv12_ThQ1BjRVBrMW5BbZTxnNPG25tK1hzt7Gg6ZY35AeyictqxvIAoxWxNHYBonsAGYoqSFYOs6WHxJRznx3dXq0zH9a57yydZ_3mgo5X4lxAjlEIWYBEnBe/s400/Capture.PNG

Contoh : 
// -----------------------------//
//Penggunaan Pointer to Pointer //
//------------------------------//
#include
#include
#include
main()
{
int ilham;
int *raka; //pointer ke variabel
int **amir; //pointer pada pointer
clrscr( );
ilham = 75;
cout<<"Nilai ILHAM = "< //-> Penugasan Ke Alamat Memori
raka = &ilham;
amir = &raka;
cout<<"Nilai RAKA Hasil Mengakses ILHAM = ";
cout<<*raka< cout<<"Nilai AMIR Hasil Mengakses ILHAM = ";
cout<<**amir< getch( );

E. Pointer pada Array
Konsep Array diantaranya adalah banyak loncatan dari pointer satu ke pointer yang lain. karena secara internal array juga menyatakan alamat, yaitu pengenal array sama  dengan  alamat  pada  elemen  pertama,  pada  array. Sebagai  contoh  sederhana dapat anda lihat pada contoh program berikut:

Contoh :
//------------------------------//
//Penggunaan Pointer to Array //
//------------------------------//
#include
#include
#include
main( )
{
int i;
int nilai[5];
int *ptrnilai;
ptrnilai = nilai;
for(i=1;i<=5;i++)
{
cout<<"Masukan Nilai Pertama = ";
cin>>nilai[i];
}
cout< cout<<"Hasil Pengaksesan Elemen Array Lewat";
cout<<"Pointer";
cout< for(i=1;i<=5;i++)
{
cout<<"Elemen "< cout<<", Menempati Alamat Memori = ";
cout<<&ptrnilai[i];
cout< }
getche( );
}
F. Pointer pada String
Pointer pada string dapat anda lihat pada contoh program berikut:

Contoh :
/* ------------------- */
/* Pointer pada String */
/* ------------------- */
#include
#include
main( )
{
char band_metal[ ] = "SEPULTURA";
char *band_punk = "RANCID";
cout<<"Nama Band Metal = "< cout<<"Nama Band Punk = "< band_punk+=3; //menambah nilai penunjuk / pointer
cout<<"Nama Band Metal = "< cout<<"Nama Band Punk = "< getche( );
}
Pada program diatas, terdapat perubahan nilai pointer band_punk , yang di tunjukkan oleh penambahan nilai pointer pada band_punk+=3, secara default, pembacaan dilakukan mulai dari pointer pertama, karena sudah terjadi penambahan dengan 3, maka pembacaan berpindah ke alamat ke.4, sehingga tercetak kata CID.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIAfKmlrXFk97udUYGWAFjAVDawQxG97ySMDHznRY2dP7v9l7vZkQ5RF0hQvvZdWm3sO_chLf2-BQLe0qMQKV7OjPUqaREQPCYS3hd5JKjxf6Emdgq3FHcXoJ33Ib1kjxtQ2lV6Zu08VvO/s320/Capture.PNG

Minggu, 20 Desember 2015

Pengenalan Bahasa C++

Pengenalan Bahasa C++
1.Sejarah Singkat

Sekilas Perkembangan Bahasa C

Bahasa C dikembangken di Bell lab pada tahun 1972 ditulis pertama
kali oleh Brian W. Kernighan dan Denies M. Ricthie merupakan bahasa
turunan atau pengembangan dari bahasa B yang ditulis oleh Ken Thompson
pada tahun 1970 yang diturunkan oleh bahasa sebelumnya, yaitu BCL.
Bahasa C, pada awalnya dirancang sebagai bahasa pemrograman yang
dioperasikan pada sistem operasi UNIX.
Bahasa C merupakan bahasa pemrograman tingkat menengah yaitu
diantara bahasa tinggat rendah dan tingkat tinggi yang biasa disebut dengan
Bahasa Tingkat Menengah. Bahasa C mempunyai banyak kemampuan yang
sering digunakan diantaranya kemampuan untuk membuat perangkat lunak,
misalnya dBASE, Word Star dan lain-lain.
1. Sekilas Tentang C++
Pada tahun 1980 seorang ahli yang bernama Bjarne Stroustrup
mengembangkan beberapa hal dari bahasa C yang dinamakan “C with
Classes” yang pada mulanya disebut “a better C” dan berganti nama pada
tahun 1983 menjadi C++ oleh Rick Mascitti, dibuat di Laboratorium Bell,
AT&T.
Pada C++ ditambahkan konsep-konsep baru seperti class dengan sifatsifatnya
yang disebut dengan Object Oriented Programming (OOP), yang
mempunyai tujuan utamanya adalah membantu dan mengelola program yang
besar dan kompleks
2. Perbedaan Antara Bahasa C Dengan C++
Bahasa C merupakan bahasa pemrograman prosedural, di mana
penyelesaian atas suatu masalah dilakukan dengan membagi-bagi masalah
tersebut ke dalam sub-sub masalah yang lebih kecil. Sedangkan C++
merupakan bahasa pemrograman yang memiliki sifat Object Oriented
Programming (OOP). Untuk menyelesaikan masalah, C++ melakukan
langkah pertama dengan mendefinisikan class-class yang merupakan a.-class
yang dibuat sebelumnya sebagai abstraksi dari objek-objek fisik. Class
tersebut berisi keadaan objek, anggota-anggotanya, dan kemampuan dari
objeknya. Setelah beberapa class dibuat, masalah dipecahkan menggunakan
class.

2. Pengenalan IDE Borland C++

IDE merupakan singkatan dari Integrated Development Environment,
merupakan Lembar kerja terpadu untuk pengembangan program. IDE dari Borland
C++, dapat digunakan untuk:
1. Menulis Naskah Program.
2. Mengkompilasi Program ( Compile )
3. Melakukan Pengujian Program ( Debugging )
4. Mengaitkan Object dan Library ke Program ( Linking )
5. Menjalankan Program ( Running )


IDE pada Borland C++, terbagi menjadi 4 (empat) bagian, yaitu:

a. Baris Menu ( Menu Bar )
Menu utama terdiri dari; File, Edit, Search, Run, Compile, Debug, Project,
Options, Window dan Help.
b. Baris Peralatan (Tools Bar)
Baris yang menampilkan shortcuts (icons) untuk mempermudah pengguna dalam
pembuatan program-program C++, seperti icon open, save, compiler, run dan lainlain.
c. Jendela Editor
Tempat untuk pengetikan program dan membuat program. Jika pertama kali anda
membuat program, nama file jendela editor adalah NONAME00.CPP
d. Jendela Message
Tempat untuk menampilkan pesan-pesan pada proses kompilasi dan link program.
Jika ada kesalahan sintax program maupun varibel dan objek, maka akan
diberikan pesan kesalahannya yang kemudian dapat didouble klik pada pesan
tersebut untuk mendapatkan petunjuk di baris yang mana terdapat kesalahannya.
e. Baris Status (Status Bar)
Baris yang akan menampilkan keterangan-keterangan pada saat mengaktifkan
menu bar dan sub menu serta keterangan-keterangan lain (seperti petunjuk baris

dan kolom, waktu yang sedang berjalan).

Struktur Program C++

Struktur program C++, sama seperti struktur program C yang terdahulu.
Struktur program C++ terdiri sejumlah blok fungsi, setiap fungsi terdiri dari satu atau
beberapa pernyataan yang melaksanakan tugas tertentu.

Bentuk Umum:
  #include
main()
{
pernyataan
getch();
}
Penjelasan :
1. #include merupakan preprocessor pada C++ untuk
pemanggilan file header yang memuat beberapa perintah-perintah dari C++
(contoh, apabila ingin menggunakan perintah cout maka harus menggunakan
file header iostream.h)
2. main( ) merupakan awal mula dari blok program utama
3. tanda { dan } sebagai punctuator yang awal blok program hingga akhir blok
program
4. cout merupakan perintah keluaran pada C++
5. getch( ); apabila ditempatkan sebelum funtuator }, maka berfungsi sebagai

penahan dari tampilan hasil

Cara Membuat File Editor
File Editor merupakan file kode program yang dapat dikompilasi, kemudian
dijalankan untuk menampilkan hasilnya yang mempunyai ekstensi file .CPP.
Cara mengaktifkannya : Klik Menu>File > Klik New Text Edit 
Menyimpan File Editor
Setelah selesai mengetikan naskah program yang baru pada jendela Text Edit,
maka selanjutnya disimpan dengan cara :
a. Kik Menu File Save
b. Menekan HotKey Ctrl + KS.
Menterjemahkan Program
Proses Compile merupakan suatu proses menterjemahkan program dari
bahasa manusia kedalam bahasa yang dimengerti oleh komputer yaitu bahasa mesin,
yaitu dengan cara :
a. Kik Menu Debug Compile

b. Menekan HotKey Alt + F9



 

Copyright @ 2013 Fakih Komputer.