Membuat program yang mudah dimengerti dan mudah dirawat (maintainance) oleh
manusia.
Mengutamakan kesederhanaan.
Menggunakan 3 struktur / bentuk kontrol, yaitu :
1. SEQUENCE (Urutan statemen dalam program).
2. SELECTION (Pemilihan satu dari beberapa alternatif).
3. REPETITION (Pengulangan / looping).
Dalam bahasa C,
4.1. FUNGSI
Solusi masalah dunia nyata biasanya memerlukan program yang jauh lebih besar dari
pada program yang telah kita bahasa sejauh ini.
Program yang besar sebaiknya terdiri dari satuan-satuan yang lebih kecil atau modul-
modul, supaya lebih mudah dikelola.
Modul- modul program C berbentuk FUNGSI.
Program C biasanya merupakan kombinasi dari fungsi-fungsi baru yang ditulis oleh
programmer dan fungsi-fungsi yang telah tersedia dalam C-standard library.
printf dan scanf adalah contoh fungsi-fungsi dari C-standard library yang sering kita
gunakan.
Program yang telah kita bahas sejauh ini terdiri dari hanya satu fungsi, yaitu fungsi
main yang memanggil fungsi-fungsi dari C-standard library.
Programmer dapat membuat fungsi sesuai dengan kebutuhannya.
Konsep Pemrograman 34
Bentuk umum penulisan definisi suatu fungsi :
tipe-hasil nama-fungsi (deklarasi parameter)
{
deklarasi-deklarasi
statemen-statemen
}
main()
{
int x;
for (x=1; x <= 10; x++)
printf("%d ", pangkat(2,x));
printf("\n");
return 0;
}
/* --------------------------------
* Definisi fungsi pangkat :
* pokok dipangkatkan n, n >= 0
* --------------------------------*/
hasil = 1;
for (b=1; b <= n; ++b)
hasil *= pokok;
return hasil;
}
OUTPUT :
Konsep Pemrograman 35
Function-prototype (prototipe fungsi) memberitahu kompilator mengenai :
1. tipe dari hasil yang dikembalikan fungsi kepada pemanggilnya.
2. jumlah parameter, tipe parameter, dan urutan parameter yang harus
diberikan kepada fungsi oleh pemanggilnya.
Prototipe fungsi dipakai oleh kompilator untuk melakukan validasi terhadap function-
call (pemanggilan fungsi). Dengan demikian, kompilator dapat membantu
programmer dalam menangkap kesalahan-kesalahan dalam program.
Prototipe fungsi seharusnya diletakkan sebelum fungsi itu digunakan (dipanggil)
Nama fungsi harus berupa suatu identifier yang sahih. Nama fungsi sebaiknya
mencerminkan tugas yang dilakukan oleh fungsi tersebut.
Return-type (tipe hasil) dari suatu fungsi menyatakan tipe hasil yang dikembalikan
fungsi kepada pemanggilnya.
Tipe hasil void menyatakan bahwa fungsi tidak mengembalikan apa-apa.
Tipe hasil yang tidak ditulis dianggap (default-nya) oleh kompilator sebagai
int.
Deklarasi parameter void menyatakan bahwa fungsi itu tidak membutuhkan
parameter.
Semua variabel yang dideklarasikan dalam fungsi adalah variabel lokal, artinya hanya
diketahui (bisa diakses) dalam fungsi tersebut.
- Semua parameter fungsi juga bersifat lokal
- Jadi, dua fungsi boleh mempunyai parameter / variabel lokal dengan
nama yang sama, tanpa terjadi konflik.
Function-body merupakan suatu block (yaitu deklarasi dan statemen dalam sepasang
tanda kurung kurawal).
Konsep Pemrograman 36
- Jika fungsi mengembalikan suatu hasil, pelaksanaan statemen return
ekspresi; mengakhiri fungsi dan mengembalikan nilai dari ekspresi
kepada pemanggil.
Parameter-parameter fungsi yang tertera pada definisi fungsi juga disebut sebagai
argumen-argumen formal.
Pada waktu fungsi dipanggil, argumen-argumen yang diberikan kepada fungsi disebut
argumen-argumen aktual.
Dalam C, semua argumen fungsi disalurkan secara pindah nilai (by value) . Artinya,
fungsi yang dipanggil itu diberikan salinan dari nilai argumen aktualnya. Jadi
variabel dari pemanggil yang menjadi argumen aktual dari suatu fungsi tidak dapat
diubah oleh fungsi itu.
Dalam contoh program tadi, variabel x yang menjadi argumen aktual dari fungsi
pangkat tidak dapat diubah oleh fungsi pangkat tersebut. Salinan dari nilai x
diberikan kepada argumen formal n (dapat dipikirkan seperti assignment n = x).
Meskipun n diubah dalam fungsi pangkat, perubahan ini tidak mempengaruhi x.
Pemanggilan fungsi (function call) dengan mekanisme di atas disebut dengan call by
value.
Definisi untuk fungsi pangkat itu dapat juga ditulis menjadi :
/* --------------------------------
Konsep Pemrograman 37
* Versi ringkas dari fungsi pangkat
* pokok dipangkatkan n, n >= 0
* --------------------------------*/
Pemanggilan fungsi dengan mekanisme lain, yaitu call by reference akan dibahas
nanti pada saat pembahsan tentang pointer. Dalam call by reference, variabel dari
pemanggil (caller) dapat diubah oleh fungsi.
main()
{
int n = 3, jumlah;
printf("%d\n", n); /* cetak 3 */
jumlah = hitung_jumlah(n);
printf("%d\n", n); /* cetak 3 */
printf("%d\n", jumlah); /* cetak 6 */
return 0;
}
/* -----------------------------------------
* Menjumlahkan integer 1 s/d n; n >=1
* ------------------------------------------*/
int hitung_jumlah(int n)
{
int hasil = 0;
Konsep Pemrograman 38
return hasil;
ANSI C menyediakan tiga tipe untuk bilangan floating-point : float, double dan long
double
Jumlah byte yang dibutuhkan untuk menyimpan suatu objek (misalnya variabel, tipe,
dsb) dalam memori dapat ditentukan dengan menggunakan operator unary sizeof.
sizeof(char) bernilai 1; ini berarti satu variabel bertipe char memerlukan memori
sebanyak 1 byte.
Jumlah byte untuk tipe-tipe dasar, meskipun bergantung pada mesin komputer /
kompilator ybs, dalam ANSI C memenuhi hubungan sbb :
sizeof(char) = 1
sizeof(short) sizeof(int) sizeof(long)
Konsep Pemrograman 39
sizeof(signed) sizeof(unsigned) sizeof(int)
sizeof(float) sizeof(double) sizeof(long double)
sizeof(int) bernilai 2
sizeof(long) bernilai 4
sizeof(float) bernilai 4
sizeof(double) bernilai 8
main()
{
printf("Jumlah byte untuk tipe-tipe dasar.\n");
printf(" char :%3d\n", sizeof(char));
printf(" short :%3d\n", sizeof(short));
printf(" int :%3d\n", sizeof(int));
printf(" long :%3d\n", sizeof(long));
printf(" unsigned :%3d\n", sizeof(unsigned));
printf(" float :%3d\n", sizeof(float));
printf(" double :%3d\n", sizeof(double));
printf("long double :%3d\n", sizeof(long double));
return 0;
}
Konsep Pemrograman 40
#include <stdio.h>
#include <math.h>
main()
{
double x;
printf("\n%s\n%s\n",
"Kalkulasi akar kuadrat dari x",
"-----");
printf("Input x : ");
scanf("%lf", &x);
if (x >= 0.0)
printf("\n%22s%21.15e\n%22s%21.15e\n",
"x = ",x,
"akar kuadrat dari x = ", sqrt(x));
else
printf("\nMaaf, input harus non negatif.\n");
return 0;
}
Outputnya :
Konsep Pemrograman 41
Untuk scanf :
Konsep Pemrograman 42