Didalam penyusunan suatu makro ada beberapa hal yang perlu dipelajari adalah:
A. Preprocessor Directives
Preprocessor directive merupakan suatu perintah yang termasuk kedalam program, tetapi bukanlah instruksi dari program itu sendiri, tetapi untuk preprocessor. Preprocessor ini dijalankan secara otomatis oleh kompiler, ketika didalam proses penterjemahan (Compile) program berlangsung, didalamnya membuat nilai pembuktian pertama dan menterjemahkancode program didalam kode objek. Didalam penggunaan preprocessor directive selalu dimulai dengan tanda : #
Ada beberapa preprocessor directive, diantaranya adalah:
1.) # define
Digunakan untuk mendefinisikan suatu nilai tertentu kepada suatu nama
konstanta. Bentuk umum dari preprocessor directive
#define ini adalah:
#define nama_konstanta teks
Dalam pendeklarasian preprocessor directive #define, Nama_Konstanta sebaiknya ditulis dengan menggunakan huruf besar, guna untuk membedakannya dengan nama_variabel. Sedangkan Teks merupakan suatu nilai yang diberikan pada
nama_konstanta. Teks dapat berupa:
• Numerik contoh: #define PI 3.14
• Karakter contoh: #define HURUF ‘B’
• String contoh: #define JABATAN “INSTRUCTOR”
• Pernyataan contoh: #define CETAK (“Borland C++”)
• Fungsi Sederhana contoh: #define LUAS_KUBUS (n*n)
Setelah #define ditentukan didalam program cukup dituliskan
nama_konstantanya saja. # define akan mengganti semua nama konstanta tadi
dengan teksnya sebelum proses kompilasi dimulai.
Contoh 1 :
/* ----------------------------------- */
/* Program Penggunaan #define */
/* ------------------------------------ */
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#define PI 3.141592
#define L(n) PI*n*n
main( )
{
clrscr();
cout<<"Luas Lingkaran dengan : "<<endl;
cout<<"Jari-jari = 5 adalah "<<L(5)<<endl;
cout<<"Jari-jari = 10 adalah "<<L(10)<<endl;
getche( );
}
Contoh 2 :
/* ----------------------------------- */
/* Program Penggunaan #define */
/* ----------------------------------- */
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#define awal {
#define akhir }
#define mulai() main()
#define cetak cout
#define masuk cin
#define hapus() clrscr()
#define tahan() getch()
#define LS_KUBUS (sisi*sisi)
mulai( )
awal
int sisi, ls_kubus;
hapus( );
cetak<<"Program Penggunaan #define"<<endl;
cetak<<"Masukkan Nilai Sisi Kubus = ";
masuk>>sisi;
ls_kubus = LS_KUBUS;
cetak<<"Luas Kubus adalah : "<<ls_kubus;
tahan( );
akhir
2.) # include
Preprocessor
#include telah dibahas pada bab sebelumnya, yaitu berfungsi untuk memasukkan atau menyertakan file-file header kedalam program yang akan dibuat. Dalam penulisan
#include ada dua bentuk penulisan :
#include "nama_file_header"
atau
#include <nama_file_header>
Pada bentuk penulisan #include mempunyai arti yang berbeda, yaitu:
• #include "nama_file_header"
“Pertama kali compiler akan mencari file header yang disebutkan pada directori yang sedang aktif dan apa bila tidak ditemukan akan mencari pada directori dimana file header tersebut berada “.
• #include <nama_file_header>
“Pertama kali compiler akan mencari file header yang disebutkan pada directori yang ada file headernya, kecuali pada directori yang sedang aktif.
3.) # if - #endif
Preprocessor
#if -
#endif digunakan untuk mengkompilasi jika pernyataan kondisi pada
#if bernilai benar, jika tidak maka, diabaikan. Pernyataan kondisi berupa ekspresi konstanta yang dideklarasikan dengan
#define.
Benuk Penulisan :
#if ekspresi-konstanta
penyataan;
#endif
Contoh :
/***********************
Penggunaan #if - #endif
***********************/
#include <conio.h>
#include <stdio.h>
#define N 4
main( )
{
#if N > 0
printf("Lebih Besar dari Nol");
#endif
getch( );
}
4.) # if - #else - #endif
Preprocessor
#if -
#else -
#endif digunakan untuk mengkompilasi jika pernyataan kondisi pada
#if bernilai benar, jika
#if bernilai salah maka, pernyataan
#else dikompilasi. Pernyataan kondisi berupa ekspresi konstanta yang dideklarasikan
dengan
#define.
Bentuk Penulisan :
#if ekspresi-konstanta
Penyataan-1;
#else
Penyataan-2;
#endif
Contoh :
/******************************
Penggunaan #if - #else - #endif
******************************/
#define N -4
main( )
{
#if N > 0
printf("Lebih Besar dari Nol");
#else
printf("Lebih Kecil dari Nol");
#endif
}
5.) # elif
Preprocessor
#elif digunakan untuk mengkompilasi dari pernyataan bertingkat. Dalam hal ini
#elif sama halnya seperti
#elseif, merupakan kombinasi dari
#if dan
#else. Perintah dijalankan sesuai dengan kondisi yang telah ditentukan, Hasil hanya dapat dijalankan sesuai dengan ketentuan yang benar. Bentuk
#elif diikuti oleh ekspresi-konstanta.
Bentuk Penulisan :
#if ekspresi-konstanta-1
Penyataan-1;
#elif ekspresi-konstanta-2
Penyataan-2;
# elif ekspresi-konstanta-n
Penyataan-n;
#endif
Contoh :
/*****************
Penggunaan #elif
******************/
#define N 12
main( )
{
#if N > 10
printf("Lebih Besar dari Sepuluh");
#elif N == 10
printf("Sama Dengan Sepuluh ");
#else N < 10
printf("Lebih Kecil dari Sepuluh");
#endif
}
6.) #undef
Preprocessor
#undef digunakan untuk menghilangkan nilai yang telah didefiniskan dari daftar definisi.
Contoh :
/****************
Penggunaan #undef
*****************/
#include<iostream.h>
#define LEBAR_MAKS 100
#if LEBAR_MAKS>200
#undef LEBAR_MAKS //--> menghilangkan LEBAR_MAKS
#define LEBAR_MAKS 200
#elsif LEBAR_MAKS <50
#undef LEBAR_MAKS //--> menghilangkan LEBAR_MAKS
#define LEBAR_MAKS 50
#else
#undef LEBAR_MAKS //--> menghilangkan LEBAR_MAKS
#define LEBAR_MAKS 50
#endif
main( )
{
char str[LEBAR_MAKS];
cout<<LEBAR_MAKS;
}
7.) # ifdef - # ifndef
Preprocessor
#ifdef dan
#ifendef memberikan bagian dari program yang akan dikompile, hal ini dapat dilakukan jika sudah konstanta didefiniskan pada bagian
#define, hal ini merupakan parameter yang khusus yang harus terdefinisi.
Benuk umum penulisan sebagai berikut:
#ifdef
nama-konstanta pernyataan;
#endif
Penjelasan:
Jika nama-konstanta terdefinisi maka, pernyataan akan dijalankan, jika nama-konstanta tidak terdefinisi maka, pernyataan akan diabaikan.
Contoh :
//--> Penggunaan #ifdef dan #ifndef
#include<iostream.h>
#define ANAK1 "ILHAM"
#define ANAK2 "HADIANSYAH"
main( )
{
#ifdef ANAK1
cout<<"Pagi ini "<<ANAK1<<" pergi Kesekolah";
#else
#ifndef ANAK2
cout<<"Hari ini "<<ANAK1<<" "<<ANAK2;
cout<<" pergi Kesekolah";
#else
cout<<"Pagi ini "<<ANAK2<<"pergi Kesekolah";
#endif
#endif
getche();
}
B. Pembuatan File Header
File Header adalah suatu file dengan akhiran
.h . File ini sebenarnya berisikan deklarasi fungsi dan definisi konstanta. Selain file-file header standar yang disediakan oleh C++, kita dapat juga membuat file header sediri, dengan cara yang sama seperti membuat file editor. Yang harus diperhatikan pada saat menyimpan file header yang telah dibuat harus digunakan akhiran
.h .
Berikut contoh file header standar yang disediakan oleh Borland C++ :
/* types.h
Types for dealing with time.
Copyright (c) Borland International 1987,1988
All Rights Reserved.
*/
#ifndef TIME_T
#define TIME_T
typedef long time_t;
#endif
Sebagai latihan berikut ini akan dibuatkan suatu file header sendiri yang akan digunakan pada file editor.
Buatlah program file header dibawah ini, kemudian simpan dengan nama :
atur.h,
pada folder kerja anda folder include.
Contoh 1 :
/* atur.h
contoh pembuatan file header untuk
pengaturan.
*/
#define awal {
#define akhir }
#define mulai( ) main( )
#define cetak cout
#define tampil cprintf
#define masuk scanf
#define hapus( ) clrscr( )
#define jika if
#define warna textcolor
#define tahan getche( )
Setelah disimpan pada direktori
C:\BC5\INCLUDE\... , selanjutnya Compile file
atur.h.
Buatlah program dibawah ini, kemudian gunakan file header yang sudah anda buat dan simpan dengan nama : sendiri.cpp
Contoh 2 :
/* ---------------------------------- */
/* program dengan file header sendiri */
/* ---------------------------------- */
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include"atur.h"
mulai( )
awal
int a, b, c;
hapus( );
warna(4);
tampil("\nPROGRAM PENJUMLAHAN\n");
cout<<endl;
cout<<"Masukkan Nilai A = ";
cin>>a;
cout<<"Masukkan Nilai B = ";
cin>>b;
c=a+b;
cout<<"Hasil dari "<<a<<" + "<<b<<" = "<<c;
tahan;
akhir