download

T0616
ALGORITMA DAN PEMROGRAMAN
(13)
SUBANDIJO
UNIVERSITAS BINA NUSANTARA
FAKULTAS ILMU KOMPUTER
JAKARTA, 2005
7/11/2017
T0616 - Algoritma dan Pemrograman
1
PREPROCESSOR DIRECTIVE
• KOLEKSI PERNYATAAN KHUSUS, DISEBUT
DIRECTIVE, YANG DIEKSEKUSI DI AWAL
KOMPILASI.
• INSTRUKSI UNTUK KOMPILATOR, BUKAN UNTUK
MIKRO PROSESOR.
• DI AWALI DENGAN SIMBOL ‘#’
• DAPAT DILETAKKAN DISEMBARANG LOKASI,
BIASANYA PALING ATAS SEBELUM MAIN().
• CONTOH A.L. #define, #include, #if, #endif, #ifdef,
#ifndef, #undef, #else.
7/11/2017
T0616 - Algoritma dan Pemrograman
2
#define
• UNTUK MEMBERI NAMA SUATU KONSTANTA.
• FUNGSINYA UNTUK MEMPERJELAS KETERBACAAN SUATU PROGRAM.
• SINTAKS
• #define IDENTIFIER teks
• CONTOH
• #define PI 3.14159
• #define kursorKanan “\x1B[C”
7/11/2017
T0616 - Algoritma dan Pemrograman
3
MAKRO
(1)
• IDENTIFIER TUNGGAL YANG SETARA DENGAN
EKSPRESI, PERNYATAAN ATAU SEKELOMPOK
PERNYATAAN. DALAM HAL INI MAKRO MIRIP
FUNGSI.
• DIDEFINISIKAN MENGGUNAKAN #define.
• UMUMNYA DILETAKKAN DI AWAL PROGRAM
SEBELUM DEFINISI FUNGSI YANG PERTAMA.
• LINGKUPNYA MULAI DARI POSISI IA DIDEFINISIKAN SAMPAI AKHIR PROGRAM.
• MAKRO YANG DIDEFINISIKAN DI SUATU
PROGRAM TIDAK DIKENAL DI PROGRAM LAIN.
7/11/2017
T0616 - Algoritma dan Pemrograman
4
MAKRO
(2)
• CONTOH1
#define ERROR printf(“\nError”)
…
if(nilai > 100) ERROR
• CONTOH2
#define LUAS panjang * lebar
main() {
int panjang, lebar;
printf(“\nPanjang =“); scanf(“%d”, &panjang);
printf(“\nLebar =“); scanf(“%d”, &lebar);
printf(“\nLuas
=%d“, LUAS);
}
7/11/2017
T0616 - Algoritma dan Pemrograman
5
MAKRO
(3)
• MAKRO BOLEH MEMPUNYAI ARGUMEN. UNTUK
KEAMANAN LETAKKAN
TANDA KURUNG DISEKITAR MAKRO YANG MEMPUNYAI ARGUMEN.
• #define SUM(x,y) (x+y)
...
jawab2 = 10 * SUM(3,4);
• #define SUM(x,y) x+y
….
Jawab1 = 10 * sum(3,4)
• #define PRODUCT(x,y)(x*y)
…
jawab3 = PRODUCT(2+3,4);
70
34
7/11/2017
T0616 - Algoritma dan Pemrograman
14
6
MAKRO VS FUNGSI
• TUGAS MAKRO SEDERHANA KARENA TIDAK
SEMUA KOMPILATOR C MEMPUNYAI UTILITAS
UNTUK MAKRO MULTI BARIS.
• TUGAS FUNGSI BISA RUMIT KARENA FUNGSI
BISA TERDIRI DARI BANYAK PERNYATAAN YANG
PERLU DIEKSEKUSI.
D
7/11/2017
T0616 - Algoritma dan Pemrograman
7
MAKRO MULTI BARIS
#define LOOP(n) for(brs=1; brs<=n; brs++) {
for(i=1; i<=n; i++) putchar(‘ ‘);
for(i=1; i<=2*brs-1; i++) putchar(‘x‘);\
printf(“\n”);
\
}

main() {
int i, n, brs;
 
printf(“\nBanyak baris “); scanf(“%d”, &n);
  
printf(“\n”);
   
LOOP(n);
n=4
}
7/11/2017
T0616 - Algoritma dan Pemrograman
\
\
8
#IF, #ELIF, #ELSE, #ENDIF
• KOMPILASI PROGRAM SUMBER KONDISIONAL.
• KERAP DIGUNAKAN BERSAMA-SAMA DENGAN
#DEFINE UNTUK MENENTUKAN APAKAH
KONSTANTA SIMBOLIK ATAU IDENTIFIER MAKRO
TELAH DIDEFINISIKAN ATAU BELUM.
#if defined(FOREGROUND)
#define BACKGROUND
#elif
#define FOREGROUND 0
#define BACKGROUND 7
7/11/2017
T0616 - Algoritma dan Pemrograman
9
#IF, #ELIF, #ELSE, #ENDIF
• EKUIVALEN DENGAN
#ifdef FOREGROUND
#define BACKGROUND
#elif
#define FOREGROUND 0
#define BACKGROUND 7
• #IFDEF EKUIVALEN DENGAN #IF DEFINED()
• #IFNDEF EKUIVALEN DENGAN #IF !DEFINED()
• #ELIF EKUIVALEN DENGAN KLAUSA ELSE-IF.
7/11/2017
T0616 - Algoritma dan Pemrograman
10
CONTOH
#if BACKGROUND == 7
#define FOREGROUND 0
#elif BACKGROUND == 6
#define FOREGROUND 1
#else
#define FOREGROUND 6
#endif
#undef: MENEGASI EFEK #define
#undef BACKGROUND
7/11/2017
T0616 - Algoritma dan Pemrograman
11
#INCLUDE
• MENYISIPKAN BERKAS KE BERKAS LAIN.
• BERKAS
• C STANDAR FILE
<NAMA_FILE.H>
• USER DEFINED FILE“NAMA_FILE.H”
• MISALKAN FILE LUAS.H BERISI MAKRO-MAKRO:
• #DEFINE PI 3.14159
• #DEFINE LUAS_LING(JARI2)(PI*JARI2*JARI*)
• #DEFINE
LUAS_SG4(PANJANG,LEBAR)(PANJANG*LEBAR)
• #DEFINE LUAS_SG3(ALAS,TINGGI)(ALAS*TINGGI/2)
• UNTUK MEMAKAI MEREKA, TULIS
• #INCLUDE “LUAS.H”
7/11/2017
T0616 - Algoritma dan Pemrograman
12
C STANDARD FILE
• ISINYA ADALAH DEFINISI FUNGSI DAN MAKRO.
• DIKELOMPOKKAN DI DIREKTORI #INCLUDE
YANG ANTARA LAIN MEMUAT BERKAS-BERKAS
STDIO.H, MATH.H, CONIO.H, TIME.H, DOS.H DLL.
• FUNGSI KEPUSTAKAAN C TIDAK LAIN ADALAH
MAKRO YANG DIDEFINISIKAN DI STANDARD
FILE.
7/11/2017
T0616 - Algoritma dan Pemrograman
13
C STANDARD FILE
• FILE STDIO.H A.L. BERISI DEFINISI-DEFINISI
• #DEFINE GETCHAR() GETC(STDIN)
• #DEFINE PUTCHAR() PUTC(STDIO)
7/11/2017
T0616 - Algoritma dan Pemrograman
14
THE END
“...ALL YOU NEED IS LOVE…”
7/11/2017
T0616 - Algoritma dan Pemrograman
15