Struktur Program TEE 2103 Algoritma dan Pemrograman Dosen: Abdillah, MIT Hp: 0853 6581 8665 Email: abdill01@gmail.com Website: www.abdill01.wordpress.com
Tujuan Memahami penggunaan struktur program dalam runtunan komputasi program C.
Struktur Blok Dalam C, fungsi tidak dapat dideklarasikan dalam fungsi lain. Namun variabel dapat dideklarasikan di dalam sebuah fungsi menggunakan struktur blok. Misalnya: if (n > 0) { int i; /* deklarasi variabel baru i */ for (i = 0; i < n; i++) ... } Variabel i yang dideklarasi dalam struktur blok ini menutupi variabel i yang mungkin ada dideklarasikan di luar blok.
Struktur Blok Variabel lokal dan parameter formal juga menyembunyikan variabel eksternal dengan nama yang sama, misalnya: int x; int y; fungsi_f(double x) { double y; } Dalam fungsi f, variabel x yang digunakan adalah parameter formal yang bertipe double, begitu juga variabel y.
Inisialisasi Jika tidak ada inisialisasi secara khusus, maka variabel eksternal dan statis akan diberi nilai awal nol, sedangkan variabel lokal dan register akan diberi nilai awal sebarang. Variabel skalar dapat diinisialisasi ketika dideklarasikan dengan operator = dan ekspresi. int x = 1; char slash = ‘/'; long day = 1000L * 60L * 60L * 24L;
Inisialisasi Inisialisasi variabel eksternal dan statis harus dengan ekspresi konstanta, sedangkan variabel lokal dan register dapat di-inisialisasi dengan ekspresi yang lain. Array di-inisialisasi dengan menambahkan deklarasi dengan sederet nilai dalam tanda kurung dan dipisahkan oleh tanda koma. int days[] = { 31, 28, 31, 30, 31, 30 }
#include <stdio.h> void HitungLuas (float alas, float tinggi); main() { float a = 3.0; float t = 5.0; HitungLuas(a, t); } void HitungLuas(float alas, float tinggi) float luas; luas = (alas*tinggi)/2.0; printf("Luas segitiga adalah = %f",luas);
Fungsi Rekursi Fungsi rekursi adalah suatu fungsi yang memanggil dirinya sendiri. Artinya, dalam fungsi tersebut terdapat suatu baris kode program yang memanggil dirinya sendiri. Proses rekursi tersebut terjadi secara berulang sehingga dalam fungsi rekursif harus diberi suatu kondisi yang dapat mengakhiri proses pengulangan.
Contoh Fungsi Rekursif Misalkan F = faktorial (5)
#include <stdio.h> int Faktorial(int N); main() { int f, n; printf("Masukkan suatu bilangan bulat : "); scanf("%d",&n); f = Faktorial(n); printf("Nilai %d! adalah : %d", n, f); } int Faktorial(int N) int faktorial; if (N<=1) return 1; else { faktorial = N * Faktorial(N-1); return(faktorial);
Preprocessor Preprocessor adalah langkah pertama kompilasi yang terpisah dari program. Dua fitur preprocessor yang telah digunakan adalah #include dan #define. Selain #include dan #define, terdapat fitur lain yakni inklusi file, substitusi makro dan inklusi bersyarat.
Inklusi File Inklusi file digunakan untuk menyertakan file program lain menjadi program yang besar. Bentuk umum inklusi file adalah #include "nama_file" atau #include <nama_file>
Substitusi Makro Bentuk umum substitusi makro adalah #define name replacement text Misalnya: #define max(A, B)((A)>(B) ? (A):(B)) akan mengganti baris x = max(p+q, r+s); menjadi x = ((p+q) > (r+s) ? (p+q) : (r+s));
Inklusi Bersyarat Inklusi bersyarat digunakan untuk mengontrol preprocessing itu sendiri dengan menggunakan statement bersyarat yang dievaluasi selama preprocessing. Inklusi bersyarat mempunyai bentuk #if #defined(nama) ... #endif Ekspresi #defined(nama)bernilai 1 jika nama telah didefinisikan, dan bernilai 0 jika sebaliknya.