Module: Subrutin: prosedur dan fungsi - 1


Problem

8 /11


Pembolehubah Tempatan dan Global

Theory Click to read/hide

Pembolehubah tempatan dan global
Selalunya perlu menggunakan pembolehubah tambahan yang hanya akan digunakan dalam subrutin. Pembolehubah sedemikian dipanggil setempat (atau setempat) dan hanya boleh dimanipulasi dalam subrutin di mana ia dicipta.
 
Skop pembolehubah setempat ialah blok kurungan kerinting di mana ia diisytiharkan.
Program utama dalam C# juga merupakan subrutin, jadi semua pembolehubah yang diisytiharkan di dalam void Main() ialah pembolehubah setempat. Subrutin lain tidak "tahu" apa-apa tentang pembolehubah tempatan subrutin lain.

Oleh itu, adalah mungkin untuk mengehadkan skop (skop) pembolehubah hanya kepada subrutin di mana ia benar-benar diperlukan. Dalam pengaturcaraan, teknik ini dipanggil enkapsulasi  - menyembunyikan pembolehubah daripada mengubahnya dari luar.

Jika perlu untuk mengisytiharkan pembolehubah yang boleh dilihat di mana-mana dalam atur cara (dalam mana-mana subrutin), maka pembolehubah tersebut diisytiharkan di luar semua subrutin (lihat program 3 daripada jadual di bawah).
Pembolehubah sedemikian dipanggil global.

Dalam C#, apabila program bermula, semua pembolehubah global ditetapkan secara automatik kepada sifar (pembolehubah boolean mengambil nilai palsu).

Analisis tiga program:

Problem

Tulis prosedur dengan parameter n yang mengeluarkan pokok Krismas dengan mahkota ketinggian n. Atur cara utama mesti mengandungi input nilai n pembolehubah dan panggilan prosedur.< br />  
Contoh
1) Dalam atur cara ini, pembolehubah i ialah setempat. Pembolehubah setempat diisytiharkan dalam subrutin. 2) Di sini, walaupun terdapat pembolehubah i dalam atur cara utama (dengan nilai 7), pembolehubah tempatan baharu i dengan nilai 5 akan dicipta. 
Apabila program ini dilaksanakan, nilai 75 akan muncul pada skrin.
3) Program ini mempunyai pembolehubah global i. Nilainya boleh ditukar di dalam subrutin, dan di dalam program utama.
Prosedur ini akan berfungsi dengan pembolehubah global i dan ia akan diberikan nilai baharu bersamaan dengan 2. Nilai 2 dipaparkan.
ujian kekosongan statik() {   int i = 5; Console.Write("i"); } ujian kekosongan statik() {   int i = 5;   Console.Write("i"); } lompang statik Utama() { int i = 7;   Console.Write("i");   ujian(); } menggunakan Sistem; Program kelas { int i; ujian kekosongan statik() {   i = 2; } lompang statik Utama() { ujian(); Console.Write("i"); } }
# Input Output
1 5     o    ooo   ooooo  ooooooo ooooooooo