Pada postingan sebelumnya tidak langsung sudah dipelajari dan diuji coba penggunaan fungsi, akan tetapi beberapa fungsi yang telah disajikan pada bab-bab sebelumnya mengembalikan hanya suatu nilai yang bertipe int. Apabila fungsi yang diciptakan dikehendaki tidak mengembalikan suatu nilai yang bertipe int mungkin bertipe float, double, char dan sebagainya, maka compiler harus diberitahu jenis data yang dikembalikan oleh fungsi tersebut. Sebagai contoh fungsi di bawah ini akan mengembalikan nilai rata-rata dengan menggunakan nilai bertipe float.
#include <stdio.h>
float average_value(int a, int b, int c)
{
return ((a + b + c) / 3.0);
}
void main (void)
{
printf (“The average of 100, 133, and 155 is %f\n”, average_value(100, 133, 155));
}
Variabel Lokal
Compiler C memungkinkan pendeklarasian variabel di dalam fungsi yang dibuat. Variabel semacam ini disebut variabel local penamaan ini disebabkan karena nama dan nilai variabel yang diciptakan hanya dikenal pada fungsi tempat mereka didefinisikan.
Konsep dari variabel local ini dapat dilihat dari contoh program pendek di bawah ini.
#include <stdio.h>
void local_values(void)
{
int a = 1, b = 2, c = 3;
printf (“a contains %d b contains %d c contains %d\n”, a, b, c);
}
void main (void)
{
printf (“a contains %d b contains %d c contains %d\n”, a, b, c);
}
pada program pendek tersebut diatas fungsi local_values mendeklarasikan tiga variabel a, b dan c dan menugaskan angka 1,2 dan 3 ke variabel tersebut. Fungsi main mencoba menampilkan setiap nilai variabel, akan tetapi karena nama variabel tersebut hanya berlaku local untuk fungsi local_values, maka compiler akan menampilkan pesan kesalahan yang menyatakan bahwa symbol a, b, dan c belum didefinisikan.
Setiap kali fungsi local_values dipanggil, Compiler C akan mengalokasikan ruang stack untuk menampung variabel local a, b, c dan setiap kali fungsi tersebut berakhir, ruang stack tersebut dihapuskan, demikian pula nilai-nilai variabel yang tersimpan di dalamnya, sehingga ketika fungsi main akan mencoba menampilkan nilai variabel yang ada pada fungsi local_values dinyatakan belum didefinisikan karena sudah terhapus.
Variabel Global
Seperti yang dipelajari pada sub bab sebelumnya bahwa variabel-variabel local adalah variabel yang didefinisikan di dalam sebuah fungsi yang nama dan kehadirannya hanya diketahui oleh fungsi tersebut. Selain variabel local yang yang telah dipelajari, compiler C juga memungkinkan untuk membuat variabel global yang nama dan kehadirannya diketahui oleh seluruh program yang diciptakan. Untuk memahami variabel global ini perhatikan program pendek di bawah ini.
#include <stdio.h>
int a = 1, b = 2, c = 3; // variabel global
void global_values(void)
{
printf (“a contains %d b contains %d c contains %d\n”, a, b, c);
}
void main (void)
{
global_values();
printf (“a contains %d b contains %d c contains %d\n”, a, b, c);
}
Apabila program tersebut di atas dikompilasi dan dieksekusi, fungsi global_values dan main akan menampilkan nilai variabel global. Perhatikan bahwa variabel tersebut dideklarasikan di luar semua fungsi. Apabila variabel global dideklarasikan semacam ini, semua fungsi di dalam program dapat menggunakan dan mengubah nilai variabel global terebut dengan menyebutkan nama variabel global. . Meskipun variabel global mula-mula terlihat sangat praktis, akan tetapi apabila salah dalam penggunaannya akan menimbulkan kesalahan yang sangat sulit untuk dilacak. Variabel global seringkali membuka kemungkinan munculnya lebih banyak kesalahan dari pada menguntungkan. Karena nilai sebuah variabel global dapat berubah pada lokasi mana saja di dalam program, maka kondisi ini membuat sangat sulit bagi pemrogram lain yang membaca program tersebut.untuk mencari setiap lokasi yang mengubah variabel global tersebut di dalam program , kemungkinan yang terjadi adalah pemrogram lain akan mengubah program tanpa benar-benar memahami dampak yang akan terjadi terhadap variabel global. Sebagai pegangan, fungsi-fungsi seharusnya hanya boleh mengubah variabel yang dilewatkan kepadanya sebagai parameter. dengan cara ini para pemrogram dapat mempelajari prototype fungsi tadi untuk dengan segera menentukan variabel mana yang telah diubah oleh sebuah fungsi. Untuk memahami variabel local dan variabel global cobalah latihan berikut ini dan amati apa yang terjadi.
LATIHAN 1
#include <stdio.h>
int count ; /*global count*/
main()
{
count = 10;
f1();
printf (“count in main() : %d\n”, count);
}
f1()
{
int count ; /*local count */
count = 100;
printf (“count in f1() : %d\n”, count);
}
LATIHAN 2
#include <stdio.h>
main()
{
int m, e;
m = 2;
e = 3;
printf (“ %d to the %d is %d\n”, m, e, power(m, e));
printf (“ 4 to the 5 is %d”, power(4,5));
}
/* Parametrized version of power */
power (int m, int e)
{
int temp;
temp = 1;
for ( ; e>0; e--) temp = temp + m;
return temp;
}
Tidak ada komentar:
Posting Komentar