بسم الله الرحمن الرحیم
سلام دوستان عزیز...
همونطوری که در جلسه قبل گفتم، یکی از شاخصه هایی که به برنامه هوشمندی میده اینه که برنامه توانایی این رو داشته باشه که در شرایط مختلف تصمیم های مناسبی بگیره. چندتا مثال هم زدم. مثلا گفتم شما اگر گرسنه شوید سراغ غذا می روید. اگر بخواهید برنامه نویسی یاد بگیرید به باترفلای سر میزنید و... در جلسه قبل روش ساختن متغیر رشته ای رو هم یاد گرفتیم. در این درس ساختار شرطی "if" رو براتون تا حدودی شرح میدم. همچنین در این درس با عملگرها و عملوندها و عبارت ها آشنا خواهیم شد و از آنها در یک برنامه ساده اما خیلی هوشمندانه تر از برنامه های قبل استفاده می کنیم.
قبل از هرچیز اجازه دهید تا در مورد عملگر ، عملوند و عبارت صحبت کنیم. در برنامه نویسی، برخی از جملات هستند که نمی توانیم به آنها بگوییم "دستور" اما برای ما عمل خاصی رو انجام می دهند. خود این جملات از بخش هایی تشکیل شده اند که توضیح میدم. به این جملات ، "عبارت" یا Expression می گوییم.
عبارت ها از دو بخش عملوند و عملگر تشکیل شده اند. به شکل زیر دقت کنید:
در این شکل عملگرها رو با چهارضلعی های آبی مشخص کرده ام و عملوندها را با چهارضلعی های قرمز.
عملگر ها هامانطور که از اسمشون مشخصه، یه عمل خاصی رو بر روی عملوند ها انجام می دهند. در برنامه نویسی سی شارپ دو نوع عملگر وجود دارد، یگانی یا دوتایی! عملگرهای یگانی فقط روی یک عملوند اعمال می شود. مانند عملگر ( - ) در عبارت بالا. در عبارت بالا بقیه عملگرها دوتایی هستند. البته عملگر ( - ) می تواند بصورت دوتایی هم استفاده شود.
عملوند ها می توانند عدد، متغیر و یا از توابع ریاضی و غیر ریاضی باشند.
نکته مهمی که باید توجه داشته باشید اینه که عبارت ها را می توان ساده کرد. بطوری که در نهایت به یک عدد یا رشته و یا... می رسیم. برای مثال در عبارت بالا اگر فرض کنیم که مقدار متغیر a برابر با 5 باشد، این عبارت با عدد ( 6- ) مساوی است. خوب بگذریم :)
در برنامه نویسی سی شارپ عملگر های مختلفی وجود دارد که در زیر مهمترین آنها را مشاهده میکنید:
عملگرهای ریاضی یا محاسباتی :
- عملگر جمع ( + )
- تفریق ( - )
- تقسیم ( / )
- باقیمانده تقسیم ( % )
- ضرب ( * )
- عملگر کوچکتر ( > )
- بزرگتر ( < )
- کوچکتر مساوی ( => )
- بزرگتر مساوی ( =< )
- تساوی ( == )
- نامساوی یا مخالف ( =! )
- و ( && )
- یا ( || )
- نقیض ( ! )
- 25%5 برابر با 0 است. یعنی باقیمانده تقسیم 25 بر 5 مساوی با 0 است. البته تقسیم صحیح، نه اعشاری!
- 10%3 برابر با 1 است.
- 17%5 برابر با 2 است.
- 23.5 < 12 برابر با false است. (غلط)
- 20 == (2*10) برابر با true است. (درست)
- ((13 * 2) > 7) && (12 =< 4) برابر با false است.
- && به این صورت کار می کنه که اگر دوطرفش true باشه، نتیجه عبارتش true خواهد شد و در غیر اینصورت نتیجه عبارت false میشه. مثلا اگر به عبارت بالا دقت کنید نتیجه (13 * 2 ) > 7 برابر true هست، اما 12 =< 4 برابر false هست. بنابر این کل عبارت برابر false خواهد بود.
- || هم به این شکل کار می کنه که اگر هر دو طرفش false باشه، نتیجه عبارتش بصورت false ارزیابی میشه و در غیر اینصورت نتیجه عبارت false هست.
- عملگر نقیض ( ! ) ، نتیجه عبارت جلوی خودش را برعکس می کند. مثلا نتیجه عبارت (4>1)! برابر با false است.
b = "Salam " + "Donya!" ;
در متغیر b رشته !Salam Donya ذخیره خواهد شد.
m = (2 * 3) + 1 ;
در متغیر m عدد 7 ذخیره خواهد شد.
k = ((2 + 1) == (9 / 3))
در متغیر k چیزی که ذخیره خواهد شد، true است.
هوففففف... واقعا خداقوت. من که خسته شدم، شما رو نمیدونم.
اینهمه گفتم و گفتم تا مقدمه چینی کنم برای هوشمندانه تر کردن برنامه هایی که می نویسیم. ما در همه برنامه هایی که می نویسیم از قوانین بالا استفاده می کنیم. اما این قوانین به تنهایی برنامه ما رو هوشمند نمی کنند! بلکه استفاده از اون ها در جاهای خاصی از برنامه باعث هوشمندی برنامه خواهد شد.
یکی از ساختارهای برنامه نویسی خیلی مهم برای این منظور ساختار شرطی است. بصورت زیر:
if ( Conditional_Expression ){
Commands set
}
در ساختار شرطی بالا شما بجای Conditional_Expression یک عبارتی که نتیجه آن true یا false است قرار می دهید. این ساختار درصورتی که نتیجه عبارت مربوطه true باشد، مجموعه دستورات داخل بلوک خود را اجرا می کند. دقت کنید، فقط در صورت true بودن عبارت! بجای Commands set می توانید هر تعداد دستور که خواستید بنویسید. حتی می توانید در این قسمت دوباره ساختار شرطی قرار دهید که در آن صورت یک ساختار شرطی تو در تو (nested) خواهیم داشت.
این ساختار مهم شرطی رو می تونیم پیشرفته تر هم بکنیم:
if ( Conditional_Expression ){
Commands set 1
} else {
Commands set 2
}
در این ساختار در صورت true بودن عبارت، مجموعه دستورات 1 اجرا می شود و در غیر اینصورت مجموعه دستورات 2 اجرا می شود. ساختار شرطی بالا رو می تونیم پیشرفته تر هم بکنیم. ساختار پایین رو ملاحضه کنید:
if ( Conditional_Expression 1 ){
Commands set 1
} else if ( Conditional_Expression 2 ) {
Commands set 2
} else if ( Conditional_Expression 3 ) {
Commands set 3
} else if ( Conditional_Expression n ) {
Commands set n
} else {
Commands set n+1
}
در این ساختار اول نتیجه عبارت 1 بررسی می شود؛ درصورت true بودن مجموعه دستورات 1 اجرا می شود. اگر نتیجه false باشد، نتیجه عبارت 2 بررسی شده و در صورت true بودن مجموعه دستورات 2 اجرا می شوند. اگر نتیجه false باشد... . قسمت else آخرین مرحله ای هست که اجرا می شود، اما فقط درصورت false بودن عبارت های قبلی!
شما در ساختار شرطی بالا به هر تعدادی که بخواهید می توانید از else if استفاده کنید. اما فقط یک else می توانید داشته باشید.
به نظر من این درس از مهمترین درس هایی است که تا حالا یاد گرفته اید. حتی شاید دروس بعدی هم به درجه اهمیت این درس نباشند. پس مطالبی که گفتیم رو خوب و دقیق یاد بگیرید. هر سوالی که در مورد مطالب گفته شده دارید بپرسید. هر سوالی!
حالا که مطالب رو بخوبی یاد گرفتید، بریم تا از ایم مطالب استفاده کنیم.
در این جلسه می خواهیم برنامه ای بنویسیم که از ساختار شرطی در آن استفاده شده باشد. البته در این برنامه از همه نکاتی که در این درس یاد گرفتید ، استفاده نمی کنیم. اما مطمئنا در درس های بعدی حتما از مطالب این درس بصورت عملی استفاده خواهیم کرد. به جرأت میتوان گفت با یادگیری این درس نیمی از برنامه نویسی را فرا گرفته اید.
- یک پروژه جدید بسازید.
- روی فرم پروژه موارد زیر را قرار دهید: (شکل نهایی برنامه بصورت زیر خواهد شد. شما هم سعی کنید اشیاء رو به همین ترتیب قرار بدید یا اینکه مرتب تر و بهتر...)
- دو عدد TextBox . خاصیت Name آنها را به txtName و txtFamily تغییر دهید.
- دو عدد Label . خاصیت Text آنها را یکی "نام" و دیگری "نام خانوادگی" قرار دهید.
- دو عدد RadioButton . خاصیت Name آنها را به rdoMale و rdoFamily تغییر دهید.
- یک عدد Button .
- روی دکمه دابل کلیک کنید تا بتوانید برای آن برنامه بنویسید. برنامه ای که در هنگام دابل کلیک کردن روی دکمه در بلوک Button1_Click می نویسید، در هنگام کلیک شدن روی دکمه اجرا میشه. (جهت یاد آوری)
- کد زیر رو در بلوک مربوطه بنویسید. (بعد از دابل کلیک کردن روی دکمه؛ در محل مکان نمای صفحه کلید. مکان نمای صفحه کلید در میان کد برنامه در حال چشمک زدن است)
if (rdoMale.Checked == true) { MessageBox.Show("سلام آقای " + txtName.Text + " " + txtFamily.Text + ".\n به درس هفتم خوش آمدید."); }else{ MessageBox.Show("سلام خانم " + txtName.Text + " " + txtFamily.Text + ".\n به درس هفتم خوش آمدید."); }
تعجب نکنید! حتی یک دستور رو هم می تونید بشکنید و در چند خط بنویسید. به برنامه بالا دقت کنید که چطور دستور MessageBox.Show رو در چند خط نوشتم. البته عملگر + در این دستور کار چسباندن رشته ها (متن ها) به هم رو انجام میده! نه اینکه حتما اگر بخواهیم ادامه دستور رو در خط بعد بنویسیم مجبور باشیم علامت + رو بنویسم.
می دونم که خیلی از دستور MessageBox.Show داریم استفاده می کنیم. ولی مجبوریم! اما نگران نباشید. بزودی با دستورهای جدید و جالب دیگه ای هم آشنا خواهید شد.
با ما باشید...