بسم الله الرحمن الرحیم
سلام...
همونطوری که در جلسه قبل قولش رو داده بودم، در این درس می خوام در مورد محدوده متغیرها ، تبدیل رشته ها به عدد و همچنین ثابت ها، صحبت کنم. در قسمت عملی این درس هم با چندتا از اشیاء دیگر آشنا شویم. البته رسم بر اینه که به اشیائی که روی فرم میگذاریم "کنترل" بگیم، پس از حالا طبق همین رسم پیش خواهیم رفت.
متغیرها علاوه بر اینکه دارای نام، نوع و مقدار اولیه هستند، دارای طول عمر و سطح دسترسی نیز میباشند. با سه تای اولی که آشنایی دارید. اما توی این درس قصد دارم شما رو با طول عمر و سطح دسترسی متغیرها آشنا کنم. شما بعد از آشنایی با این موارد توانایی نوشتن برنامه های بهتری را خواهید داشت.
به محدوده زمانی ایجاد متغیر، تا زمان از بین رفتن آن متغیر، طول عمر متغیر می گویند. (حالا این یعنی چی؟!)
کامپیوترها دو نوع حافظه مهم دارند: عمدا دومی رو اول میگم. 2- حافظه جانبی(مثل هارد دیسک، فلش، دیسک نوری و...) 1- حافظه اصلی (RAM)، این حافظه برعکس حافظه های جانبی ، بصورتی هست که اطلاعات داخلش با قطع شدن برق کامپیوتر، از بین می رود. به اصطلاح حافظه های فرار هستند. متغیرها در داخل این حافظه قرار دارند.
برنامه ها بعد از اجرا شدن در داخل RAM قرار می گیرند. بنابراین وقتی یک برنامه رو ببندیم، اطلاعات آن برنامه از داخل RAM بیرون ریخته می شود. پس متغیرهایی که در اون برنامه تعریف شده اند هم از بین خواهند رفت. البته این بیشترین طول عمری هست که یک متغیر می تونه داشته باشه.
متغیرهای در حالت های خاصی طول عمر کمتری دارند. اینجاست که باید مفهوم Scope رو توضیح بدم. به هر بلوکی از کُد که با علامت } شروع، و با علامت { خاتمه پیدا می کند اسکوپ می گوییم. تصویر زیر بخوبی این مطلب را روشن می کند.
در این شکل بلوک مربوط به حلقه for در کادر شماره 1 قرار دارد و بلوک مربوط به رویداد کلیک Button1 در کادر شماره 2 است. بلوک شماره 1 در داخل بلوک شماره 2 قرار گرفته.
- قانون اول: تمام متغیرهای تعریف شده در هر بلوک، فقط در همان بلوک ، قابل دسترسی هستند. به متغیر نوع صحیح MyVariable که با فلش آبی رنگ مشخص شده، دقت کنید. این متغیر در بیرون بلوک شماره 1 غیرقابل دسترس بوده (فلش قرمز رنگ). بنابراین حتی اگر خودمان اسم این متغیر را تایپ کنیم، زیر آن خط چین قرمز کشیده خواهد شد، که نشانه خطا در برنامه نویسی است.
- قانون دوم: بلوک های داخلی می توانند به متغیرهای بلوک های بیرونی دسترسی داشته باشند. به همین علت متغیر count در داخل بلوک شماره 1 قابل دسترسی بوده و کامپایلر از این کار اشکالی نمی گیرد.
ثابت چیست؟ برخلاف متغیرها، مقدار ذخیره شده در داخل ثابت ها غیرقابل تغییر می باشد. ثابت ها حتما باید در هنگام تعریف شدن ، مقداردهی اولیه شوند. برای تعریف ثابت از کلمه کلیدی const استفاده می کنیم. به مثال های زیر دقت کنید:
const float PI = 3.14f; const int SQUARE_SIDES = 4; const string COUNTRY = "Islamic Republic of Iran (IRI)";
مزیت های استفاده از ثابت ها:
- کد نویسی سریع تر. مثلا اگر قرار باشه جمله Islamic Republic of Iran رو در 20 جای برنامه بنویسیم، در هر 20 جای برنامه به نوشتن COUNTRY اکتفا می کنیم.
- تصحیح سریع کُد: کافیست همانجایی که ثابت را تعریف کرده ایم، مقدار آنرا تغییر دهیم. آن مقدار جدید در هر 20 جای برنامه جایگزین می شود.
تبدیل رشته عددی به عدد واقعی: یکی از مواردی که نیاز به تبدیل رشته عددی به عدد واقعی، وجود دارد، زمانی است که بخواهیم از طریق TextBox یک عدد را از کاربر دریافت کنیم. همانطور که میدانید، متنی را که کاربر در داخل TextBox تایپ می کند، در خاصیت Text مربوط به TextBox ذخیره می شود. اما این خاصیت فقط توانایی ذخیره کردن رشته ها را دارد. برای مثال اگر کاربر عدد 18343 را در داخل TextBox وارد کند، این عدد بصورت رشته "18343" ذخیره خواهد شد. روی رشته ها نمی توانیم عملیات ریاضی انجام دهیم. فقط با عملگر + می توان دو رشته را به چسباند. اینجاست که باید رشته ها رو به عدد تبدیل کنیم. کد زیر رشته عددی موجود در TextBox1 رو به عدد تبدیل کرده و در متغیر عددی num ذخیره می کنه:
int num = Convert.ToInt32(TextBox1.Text);
نکته: باید حتما در TextBox یک عدد وارد شده باشه. وگرنه برنامه با خطا مواجه خواهد شد. البته راهی هم هست که از خطای ناگهانی برنامه جلوگیری کنیم. اما حالا زوده که بگم :)
اما قسمت عملی درس:
یک پروژه جدید بسازید و روی فرم آن کنترل های زیر را قرار دهید:
- یک عدد TextBox
- یک عدد دکمه
- یک عدد ListBox
- یک عدد ProgressBar
- یک عدد Timer (از زیر مجموعه Components پیداش می کنید) - خصوصیت Enabled تایمر رو True کنید. به خصوصیت Interval دقت کنید. بعدا این خصوصیت رو تغییر دهید.
شکل فرم بصورت زیر خواهد شد:
برای دکمه برنامه زیر را بنویسید:
if (textBox1.Text != "") { listBox1.Items.Add(textBox1.Text); }
این کد به این معنی هست که اگر TextBox خالی نبود محتویات آنرا به ListBox اضافه کن! (خطاب به کامپیوتر)
برای تایمر برنامه زیر را بنویسید (روی تایمر دابل کلیک کنید):
progressBar1.Value++; if (progressBar1.Value==100) { Application.Exit(); }
این کد یعنی: مقدار ProgressBar را یکی افزایش بده! اگر مقدار ProgressBar برایر با 100 شد، برنامه را خاتمه بده!
خوب امیدوارم هنوز پر انرژی باشید.
تا اینجای کار تا حدود زیادی با ابزار برنامه نویسی آشنایی پیدا کردید. اما متأسفانه باید بگم هنوز برنامه ای ننوشتیم. تا الآن فقط با مفاهیم اولیه و البته اساسی برنامه نویسی تا حدودی آشنا شدیم. مرحله بعد یه کم نیاز به خلاقیت داره، که مطمئنم کم ندارید.تبریک میگم! شما مرحله خیلی مقدماتی و مقدماتی برنامه نویسی رو گذراندید. ان شاء الله اگر عمری باقی باشه در جلسه آینده با الگوریتم آشنایی پیدا می کنیم.
التماس دعا...