Lompat ke konten Lompat ke sidebar Lompat ke footer

Aturan Penggunaan Scope Bahasa C dan Fungsinya

Scope dari sebuah identifier adalah bagian dari program dimana identifier mungkin secara langsung dapat diakses. Pada bahasa C, semua identifier adalah scope lexical atau static. Aturan scope pada bahasa C dapat ditutupi melalui dua kategori, yaitu:


Sebelum mempelajari materi tentang Atran Penggunaan Scope Bahasa C dan Fungsinya, terlebih dahulu pelajari materi tentang: Token Bahasa C dan Cara Penggunaannya, Keyword Variabel Bahasa C dan Fungsinya, dan Scope Variabel Bahasa C dan Fungsinya.

Pemahaman yang baik tentang aturan penggunaan scope dalam Bahasa C sangat penting untuk memastikan pengembangan program yang bersih, efisien, dan mudah dimengerti. Artikel ini akan menjelaskan aturan-aturan tersebut dan bagaimana caranya memengaruhi struktur dan perilaku kode dalam Bahasa C.

satu,
 scope global: dapat diakses dimanapun pada program.
  • /* filename: file1.c */ int a; int main(void) {a = 2;}
  • /* filename: file2.c */ /* Ketika file terhubung dengan file1.c, */ /* maka fungsi dari file tersebut dapat diakses oleh a */ extern int a; int myfun() {a = 2;}

Catatan: Untuk membatasi akses pada file yang saat ini digunakan, variabel global dapat ditandai dengan static.

dua, block scope: sebuah block adalah sekumpulan dari statement tertutup dengan yang berada dalam tanda kurung {}. Sebuah block mungkin saja bersarang pada bahasa C. Sebuah deklarasi variabel pada block dapat diakses hanya dalam block dan semua inner block dari block tersebut, tetapi tidak dapat diakses dari luar block.

Jika Inner block Memiliki Penamaan yang Sama dengan Nama Block

Jika inner block mendeklarasikan sebuah variabel dengan nama yang sama sebagai nama deklarasi variabel oleh block outer, maka visibilitas dari block outer berakhir pada } deklarasi inner block.

Contoh:

/* Aturan Scope pada Bahasa C */

#include<stdio.h>

 

int main()

{

{

 

int x = 10, y = 20;

{

 

// Blok terluar mengandung

// deklarasi dari x dan y,

// sehingga statement yang

// mengikutinya bernilai valid

// dan mencetak nilai 10 dan 20

printf("x = %d, y = %d\n", x, y);

{

 

// variabel y dideklarasikan

// ulang, sehingga blok terluar y

// tidak dapat diakses di dalam

// blok atau scope

int y = 40;

 

x++; // Mengubah variabel blok

// luar x dengan nilai 11

 

y++; // Mengubah nilai variabel y

// pada blok ini menjadi 41

 

printf("x = %d, y = %d\n", x, y);

}

 

// Statement ini hanya mengakses

// variabel blok terluar

printf("x = %d, y = %d\n", x, y);

}

}

 

return 0;

}

Output:
x = 10, y = 20
x = 11, y = 41
x = 11, y = 20

Jika Fungsi dan Parameter Diteruskan ke Fungsi

Sebuah fungsi adalah merupakan sebuah block. Parameter dan variabel lokal lainnya dari sebuah fungsi mengikuti aturan scope pada block yang sama.

Variabel dari Block Diakses dalam Block Subsequent Lainnya

Jawabannya tidak dapat, sebuah deklarasi variabel dalam sebuah block dapat diakses di dalam block dan semua inner block dari block itu sendiri. Contohnya, perhatikan program yang menghasilkan compiler error berikut ini.

Contoh:

/* Aturan Scope pada bahasa C */

int main()

{

{int x = 10;}

 

{printf("%d", x); // Error: variabel

// x tidak dapat diakses pada blok ini

}

 

return 0;

}

Error:
prog.c: In function 'main':
prog.c:8:15: error: 'x' undeclared (first use in this function)
printf("%d", x); // Error: x is not accessible here
^
prog.c:8:15: note: each undeclared identifier is
reported only once for each function it appears in

Latihan, perkirakan hasil keluaran atau output program berikut ini.

Contoh:

/* Aturan Scope pada Bahasa C */

#include<stdio.h>

int main()

{

int x=1,y=2,z=3;

 

printf(" x = %d, y = %d, z ="

" %d \n", x, y, z);

 

{

int x = 10;

float y = 20;

printf(" x = %d, y = %f, z ="

" %d \n", x, y, z);

 

{

int z = 100;

printf(" x = %d, y = %f, z ="

" %d \n", x, y, z);

}

 

}

 

return 0;

}

Output:
 x = 1, y = 2, z = 3
 x = 10, y = 20.000000, z = 3
 x = 10, y = 20.000000, z = 100

Baca Juga:

Aturan Dasar Scope

Berikut diperlihatkan beberapa bentuk aturan dasar scope dari penggunaan Bahasa C.

Deklarasi Variabel: Variabel harus dideklarasikan sebelum digunakan. Deklarasi ini mencakup jenis data variabel dan nama variabel. Tempat deklarasi akan menentukan scope variabel tersebut.

Contoh:

int main() {

// Deklarasi variabel lokal


int angka;

return 0;

}


Aturan Penamaan: Nama variabel harus unik di dalam scope tertentu. Tidak boleh ada dua variabel dengan nama yang sama di dalam satu blok kode atau fungsi.

Contoh:

int main() {

int x;


if (1) {

int x; // Kesalahan, nama

// variabel x sudah digunakan

}

return 0;

}


Aturan Tentang Block Scope

Berikut dijelaskan tentang aturan tentang penggunaan block scope pada bahasa C.

Variabel dalam Block Scope: Variabel yang dideklarasikan dalam suatu blok kode hanya dapat diakses di dalam blok tersebut. Ini mencakup blok kode di dalam fungsi, pengendali alur, atau bahkan di dalam blok kode lain.

Contoh:

int main() {

int a = 5;


if (a > 0) {

// Variabel b hanya

// dapat diakses di dalam

// blok ini

int b = 10;

}

// b tidak dapat diakses

// di sini

return 0;

}


Scope Variabel dalam For Loop: Variabel yang dideklarasikan dalam ekspresi inisialisasi for hanya dapat diakses di dalam loop tersebut. Setelah loop selesai, variabel tersebut tidak dapat diakses lagi.

Contoh:

for (int i = 0; i < 5; i++

{

// Variabel i hanya dapat

// diakses di dalam loop ini

}

// i tidak dapat diakses

// di sini


Aturan Tentang Function Scope

Berikut dijelaskan tentang aturan penggunaan function scope pada bahasa C.

Variabel sebagai Parameter: Variabel yang digunakan sebagai parameter dalam fungsi hanya dapat diakses di dalam tubuh fungsi tersebut.

Contoh:

void fungsi(int x) {

// Variabel x hanya dapat

// diakses di dalam fungsi

// ini

}

// x tidak dapat diakses

// di sini


Variabel Lokal dalam Fungsi: Variabel yang dideklarasikan di dalam fungsi tanpa menjadi parameter hanya dapat diakses di dalam fungsi tersebut.

Contoh:

int fungsi() {

// Variabel lokal hanya dapat

// diakses di dalam fungsi ini

int y = 20;

return 0;

}

// y tidak dapat diakses

// di sini


Aturan Penggunaan Variabel Global

Berikut dijelaskan tentang aturan penggunaan variabel global pada Bahasa C.

Variabel dengan Global Scope: Variabel yang dideklarasikan di luar fungsi-fungsi memiliki global scope dan dapat diakses dari seluruh bagian program. Penggunaan variabel global harus diperhatikan karena dapat menyebabkan kompleksitas dan masalah yang sulit diidentifikasi.

Contoh:

// Variabel global

int globalVar = 10;


int main() {

// Variabel global dapat

// diakses di dalam fungsi

// main

printf("Nilai variabel global: %d\n", globalVar);

return 0;

}


Aturan Penggunaan Static dalam Scope

Berikut dijelaskan tentang aturan penggunaan Static dalam Scope pada penggunaan Bahasa C.

Variabel Static: Variabel dengan kata kunci static memiliki scope yang sama seperti variabel lokal, tetapi akan tetap ada di dalam memori selama program berjalan. Ini dapat berguna untuk mempertahankan nilai variabel di antara pemanggilan fungsi.

Contoh:

int fungsi() {

// Variabel static tetap

// ada di memori

static int counter = 0;

counter++;

return counter;

}


Aturan Penggunaan Nested Scope

Berikut dijelaskan tentang aturan penggunaan nested Scope pada Bahasa C.

Scope Bertingkat: Ketika terdapat blok kode di dalam blok kode lain (nested), variabel di dalam blok yang lebih dalam dapat mengakses variabel di luar blok. Namun, sebaliknya tidak berlaku.

Contoh:

int main() {

int a = 5;

if (a > 0) {

// Variabel a dapat diakses

// di dalam blok ini

int b = 10;

}

// Variabel b tidak dapat

// diakses di sini

return 0;

}


Kesimpulan

Aturan penggunaan scope dalam Bahasa C membentuk dasar dari struktur kode yang terorganisir dan dapat dimengerti. Dengan memahami aturan-aturan ini, pengembang dapat menghindari konflik nama, memanfaatkan modularitas kode, dan mengelola variabel dengan efisien. Pemahaman yang baik tentang scope sangat penting dalam pengembangan perangkat lunak yang handal dan mudah dipelihara.

Referensi Tambahan:

Artikel ini didedikasikan kepada: Achmad Rangga Bagus Ro'Uf Pradana, Achvirilia Eka Hastuti, Agung Pranoto, Aisyah Harum, dan Amalia Ayu Rizkiani.

6 komentar untuk "Aturan Penggunaan Scope Bahasa C dan Fungsinya"

  1. Apa yang dimaksud dengan variabel lokal?

    BalasHapus
    Balasan
    1. Variabel lokal hanya dapat diakses pada Scope itu sendiri atau pada fungsi itu sendiri. Jika ada akses lain dari luar Scope atau fungsi maka akan bernilai invalid.

      Variabel lokal dibuat ketika kontrok mencapai suatu Scope atau fungsi yang mengandung variabel lokan dan kemudian dihilangkan setelah keluar dari Scope atau fungsi tersebut.

      Hapus
  2. Apa yang dimaksud dengan variabel global.

    BalasHapus
    Balasan
    1. Kebalikan dari variabel lokal, variabel global membuat isi dari Scope atau fungsi dapat diakses dari luar Scope atau fungsi itu sendiri dan tidak akan menyebabkan error atau invalid pada program.

      Hapus
  3. Secara sederhana, bagaimana aturan Scope membatasi akses pada bahasa pemrograman?

    BalasHapus
    Balasan
    1. Aturan Scope menentukan bagian mana dari suatu program atau item data yang dapat mengakses pada Scope yang telah dibatasi atau telah ditentukan.

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -