Module: زیر برنامه ها: رویه ها و عملکردها - 1


Problem

8 /11


متغیرهای محلی و جهانی

Theory Click to read/hide

متغیرهای محلی و جهانی
اغلب لازم است از متغیرهای اضافی استفاده شود که فقط در زیربرنامه استفاده می شوند. چنین متغیرهایی محلی (یا محلی) نامیده می شوند و فقط می توانند در زیر برنامه ای که در آن ایجاد شده اند دستکاری شوند.
 
محدوده متغیر محلی بلوک پرانتزی مجعدی است که در آن تعریف شده است.
برنامه اصلی در سی شارپ نیز یک برنامه فرعی است، بنابراین همه متغیرهای اعلام شده در void Main() متغیرهای محلی هستند. ساير برنامه‌هاي فرعي چيزي درباره متغيرهاي محلي ساير برنامه‌ها نمي‌دانند.

بنابراین، می توان دامنه (حوزه) یک متغیر را فقط به زیربرنامه ای که واقعاً مورد نیاز است محدود کرد. در برنامه نویسی به این تکنیکencapsulation  - پنهان کردن متغیر از تغییر آن از بیرون.

اگر لازم باشد متغیری را تعریف کنیم که در هر نقطه از برنامه (در هر زیربرنامه) قابل مشاهده باشد، چنین متغیرهایی خارج از همه زیربرنامه ها اعلام می شوند (برنامه 3 را از جدول زیر ببینید).
چنین متغیرهایی جهانی نامیده می شوند.

در سی شارپ، وقتی برنامه شروع می شود، همه متغیرهای سراسری به طور خودکار روی صفر تنظیم می شوند (متغیرهای بولی مقدار false را می گیرند).

تجزیه و تحلیل سه برنامه: <بدن>
1) در این برنامه متغیر i محلی است. یک متغیر محلی در داخل یک زیربرنامه اعلان می شود. 2) در اینجا، حتی اگر یک متغیر i در برنامه اصلی (با مقدار 7) وجود داشته باشد، یک متغیر محلی جدید i با مقدار 5 ایجاد می شود. 
هنگامی که این برنامه اجرا می شود، مقدار 75 روی صفحه ظاهر می شود.
3) این برنامه دارای یک متغیر سراسری i است. مقدار آن را می توان در داخل زیربرنامه، و در داخل برنامه اصلی تغییر داد.
این رویه با متغیر سراسری i کار می کند و مقدار جدیدی برابر با 2 به آن اختصاص داده می شود. مقدار 2 نمایش داده می شود.
آزمون خلأ استاتیک () {   int i = 5; Console.Write("i"); } آزمون خلأ استاتیک () {   int i = 5;   Console.Write("i"); } استاتیک void Main() { int i = 7;   Console.Write("i");   تست()؛ } با استفاده از سیستم؛ برنامه کلاس { int i; آزمون خلأ استاتیک () {   i = 2; } استاتیک void Main() { تست()؛ Console.Write("i"); } }

Problem

رویه‌ای با پارامتر n بنویسید که یک درخت کریسمس با تاج ارتفاع n را خروجی می‌دهد. برنامه اصلی باید دارای ورودی مقدار باشد. متغیر n و فراخوانی رویه.< br />  
نمونه‌ها
<سر> <بدن>
# ورودی خروجی
1 5 <پیش>     o    اوو   اوووو  اووووو oooooooo