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
© Copyright 2024 Paperzz