-->

Konsep Scope pada Pemrograman C



Disini kita akan mempelajari tentang Scope. Sesuai katanya, Scope berarti ruang lingkup.
Scope terbagi jadi dua, global dan local.

Langsung saja ke contoh.

#include <stdio.h>

int glb = 5;

void tambah()
{
int x = glb + 5;
printf("x = %d\n", x);
}

int main()
{
tambah();
return 0;
}

Compile & run, maka outputnya akan begini.

Deskripsi:
Program tersebut memiliki sebuah variabel global glb  dan sebuah variabel lokal x. Variabel glb bersifat global karena 1. Tidak berada di dalam main atau sub-program, 2. Variabel tersebut dapat diakses pada sub-program manapun, contohnya dapat dipakai untuk ditampilkan pada sub-program tambah(). Sedangkan bersifat lokal karena hanya dapat diakses pada sub-program tambah() dan tidak dapat diakses pada sub-program yang lain, jika "memaksa" ingin menampilkan nilai x pada main() seperti ini.

int main()
{
tambah();
printf("nilai x = %d", x);
return 0;
}

maka program tersebut akan error: 'x' undeclared (first use in this function).

Lalu, gimana caranya kita "bermain" dengan konsep Scope ini? Caranya adalah dengan menggunakan pointer. Perhatikan kode berikut.

#include <stdio.h>

void tukar(int x, int y)
{
int temp = x;
x = y;
y = temp;
}

int main()
{
int a = 5;
int b = 7;

printf("a = %d\n", a);
printf("b = %d\n", b);

tukar(a, b);
printf("..Setelah penukaran..\n");

printf("a = %d\n", a);
printf("b = %d\n", b);
}

Program tersebut menukarkan angka pada variabel a dan b, tapi penukaran tidak terjadi, karena fungsi penukaran hanya bersifat lokal pada sub-program tukar().


Tapi, jika kodenya kita ubah sedikit tanpa menggunakan sub-program seperti ini.

#include <stdio.h>

int main()
{
int a = 5;
int b = 7;

printf("a = %d\n", a);
printf("b = %d\n", b);

int temp = a;
a = b;
b = temp;
printf("..Setelah penukaran..\n");

printf("a = %d\n", a);
printf("b = %d\n", b);
}

maka penukaran pun terjadi.


Supaya kita dapat membuat fungsi penukaran yang dapat digunakan pada fungsi yang lain(dalam kasus ini main()), maka kita dapat menggunakan pointer seperti ini.

#include <stdio.h>

void tukar(int* x, int* y)
{
int temp = *x;
*x = *y;
*y = temp;
}

int main()
{
int a = 5;
int b = 7;

printf("a = %d\n", a);
printf("b = %d\n", b);

tukar(&a, &b);
printf("..Setelah penukaran..\n");

printf("a = %d\n", a);
printf("b = %d\n", b);
}

Magic happens! penukaran pun terjadi.

Itu dapat terjadi karena kita bukan menaruh nilai variabel a dan b pada parameter fungsi tukar(), tapi kita menaruh alamat memori variabel a dan b. Lalu nilai pada alamat memori a dan b tersebut akan di-load pada main().

Here is our conclusion in picture!

0 Response to "Konsep Scope pada Pemrograman C"

Post a Comment

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel