گاما رو نصب کن!

اعلان ها
اعلان جدیدی وجود ندارد!
کاربر جدید

جستجو

میتونی لایو بذاری!
درحال دریافت اطلاعات ...

درسنامه آموزشی تولید محتوای الکترونیک و برنامه سازی کلاس دهم شبکه و نرم افزار رایانه با پاسخ پودمان 5: حل مسایل شرطی

آخرین ویرایش: 10:29   1400/07/17 13233 گزارش خطا

واحد یادگیری 9 (شایستگی کار با عملگرهای ریاضی، مقایسه‌ای و منطقی)

آیا تا به حال پی‌برده‌اید

- عملگرهای ریاضی در زبان برنامه‌نویسی سی‌‌شارپ چگونه نمایش داده می‌شوند؟
- چگونه عبارات ریاضی و مقایسه‌ای محاسبه می‌شوند؟
- حاصل یک عبارت مقایسه‌ای از چه نوعی است؟
- در یک عبارت محاسباتی اولویت انواع عملگرها نسبت به یکدیگر چگونه است؟
- کدام عملگر ریاضی می‌تواند روی داده‌های غیر عددی نیز عمل کند؟

هدف از این واحد شایستگی به کار گیری انواع عملگرها برای ایجاد عبارات محاسباتی در برنامه و محاسبه مقدار یک عبارت محاسباتی با توجه به اولویت عملگرها است.

استاندارد عملکرد

با استفاده از دانش ریاضی و شناخت انواع عملگرها و اولویت آن‌ها نسبت به یکدیگر در زبان برنامه‌نویسی، عبارات محاسباتی ایجاد و نتیجه آن‌ها را محاسبه کرده، خطاهای احتمالی آن را برطرف کند.

یکی از کاربردهای اولیه رایانه، انجام عملیات ریاضی و مقایسه‌ای است. در زبان‌های برنامه‌نویسی برای انجام این عملیات از عبارت (expression) استفاده می‌شود. به عبارت result=5+6 دقت کنید.

یک عبارت حداقل از یک عملگر (operator) و یک یا چند عملوند (operand) تشکیل شده است.

به اعدادی مانند 5 و 6 و متغیر result که یک عملگر روی آن‌ها عملی را انجام می‌دهد، عملوند می‌گویند.
به علامت‌هایی مانند علامت + و = که بیانگر انجام یک عمل روی متغیرها و داده‌ها هستند، عملگر می‌گویند.
هر عبارت دارای حاصل و نتیجه‌ای است که می‌تواند به یک متغیر انتساب داده شود.

کنجکاوی (صفحهٔ 215 کتاب درسی)

 

متغیر result از چه نوعی می‌تواند باشد؟

زبان #C از زبان‌های سطح بالاست و از عملگر + برای جمع و عملگر = برای انتساب استفاده می‌کند.

فعالیت کارگاهی (صفحهٔ 215 کتاب درسی)

 

در جدول 1 عملوندها و عملگرهای عبارات محاسباتی را مشخص کنید.

عبارت عملگر عملوند
5-    
7-13+12    
a-b*2    

می‌توان حاصل عبارت را با متد Write یا WriteLine به‌صورت مستقیم در خروجی نمایش داد.

Console.WriteLine(6+5);

کنجکاوی (صفحهٔ 216 کتاب درسی)

 

دستور زیر چه مقداری را روی صفحه نمایش نشان می‌دهد؟

Console.WriteLine(6+5);

 

عملگرهای محاسباتی

در زبان‌های برنامه‌نویسی برای انجام عملیات ریاضی پایه شامل جمع، تفریق، ضرب و تقسیم عملگرهایی وجود دارد. جدول 2 این عملگرها را در زبان سی‌شارپ نشان می‌دهد.

فعالیت کارگاهی (صفحهٔ 216 کتاب درسی)

 

جدول 2 را تکمیل کنید.

جدول 2- عملگرهای محاسباتی در سی‌شارپ

عملگر عملکرد مثال نتیجه
- قرینه 5-  
* ضرب 6*20  
/ تقسیم 4/25  
٪ باقی‌مانده تقسیم 6٪20  
+ جمع 3+20  
- تفریق 3-20  

به عملگرهایی مانند عملگر قرینه که به یک عملوند نیاز دارند، عملگرهای یکتایی (Unary) و به عملگرهایی مانند عملگرهای + و * و / که به دو عملوند نیاز دارند، عملگرهای دوتایی (Binary) می‌گویند.

کارگاه 1 (عملگر تقسیم/)

بُعد خانوار از جمله شاخص‌های با اهمیت یک کشور است که نشان‌دهنده میانگین تعداد افراد یک خانواده در آن کشور است. می‌خواهیم با توجه به آمار سال 90 کشورمان، برنامه‌ای بنویسیم که جمعیت مردم ایران و تعداد خانوار را دریافت کرده، بعد خانوار را در ایران نمایش دهد.

1- پروژه جدید به نام ConsloePopulation ایجاد کنید.

2- کد زیر را در متد Main بنویسید.

Console.WriteLine("------ family size in IRAN ------");
Console.WriteLine("Enter Population:");
long populate = long.Parse(Console.ReadLine());
Console.WriteLine("Enter number of family :");
long numFamily = long.Parse( Console.ReadLine() ) ;
float familySize = populate / numFamily;
Console.WriteLine("family size in IRAN: {0}",  familySize);

3- برنامه را با مقادیر داده شده در جدول اجرا کرده، آن را تکمیل کنید.

سال جمعیت تعداد خانوار خروجی جواب شما
90 (کشور) 75149669 21185647    
90 (کاشان) 323371 95314    
90 (فارس) 93941 24765    

آیا خروجی برنامه با جواب شما برای بعد خانوار، یکسان است؟

نتیجه عملگر تقسیم با توجه به نوع عملوندهایش می‌تواند صحیح و یا اعشاری باشد. اگر حداقل یکی از عملوندهای عملگر تقسیم، از نوع داده اعشاری باشد، نتیجه عبارت، عدد اعشاری و در غیر این صورت عدد صحیح است.

4- برای حل مشکل برنامه، عبارت محاسبه familySize را به‌صورت زیر تغییر دهید:

float familySize = (float) populate / numFamily;

5- برنامه را دوباره اجرا کرده، جدول زیر را تکمیل کنید.

سال جمعیت تعداد خانوار خروجی جواب شما
90 (کشور) 75149669 21185647    
90 (زادگاه شما)        
90 (استان همسایه)        

6- آمار جمعیت زادگاه خود و استان همسایه را از آمار سال 90 در جدول بالا قرار داده، بعد خانوار را در دو شهر با هم مقایسه کنید.

کنجکاوی (صفحهٔ 218 کتاب درسی)

 

برای حل مشکل برنامه، چه روش‌های دیگری پیشنهاد می‌کنید؟

فعالیت منزل (صفحهٔ 218 کتاب درسی)

 

- برنامه‌ای بنویسید که سن شما را از ورودی خوانده، تعیین کند چند ماه، چند روز و چند ساعت از عمر شما می‌گذرد؟
- در برنامه بالا سن دریافتی را 7 برابر کرده، حاصل را 1443 برابر کنید و نتیجه را نمایش دهید. نتیجه را با سن دریافتی مقایسه کنید.
- برنامه را برای سن برادر، خواهر و یا هم‌کلاسی خود دوباره اجرا کنید.
- برنامه‌ای بنویسید که مدت زمان لازم برای انجام این فعالیت را برحسب ثانیه دریافت کند و تعیین کند چند دقیقه و ثانیه برای انجام این فعالیت فرصت دارید؟

برداشت (صفحهٔ 218 کتاب درسی)

 

آنچه آموختم:

1- .............
2- ............
3- ...........

اولویت‌بندی عملگرهای محاسباتی

نتیجه محاسبه عبارت زیر چیست؟

3+2×103+2×10

این عبارت دارای دو عملگر + و ×× است .کدام عملیات اول انجام می‌شود؟ 2 حالت وجود دارد.

الف) ابتدا جمع و بعد عملگر ضرب انجام شود که نتیجه 50 خواهد بود.

31+22×101)3+2=52)5×10=50

ب) ابتدا ضرب و سپس جمع انجام شود که نتیجه 23 خواهد بود.

32+21×101)2×10=202)3+20=23

فعالیت کارگاهی (صفحهٔ 218 کتاب درسی)

 

- برنامه‌ای بنویسید که حاصل عبارت 3+2×10 را نمایش دهد. کدام یک از نتایج بالا نمایش داده می‌شود؟
- در برنامه بالا عبارت (3+2)×10 را جایگزین کنید و نتیجه را بنویسید.

جدول 3 اولویت عملگرهای محاسباتی را نشان می‌دهد. چنانچه چند عملگر اولویت یکسانی داشته باشند، عملگرها به ترتیب از چپ به راست انجام می‌شوند و به آن "شرکت‌پذیری چپ" می‌گویند.

جدول 3- اولویت عملگرهای محاسباتی

اولویت عملگر نوع عملگر
1 - یکتایی
2 * دوتایی
/
٪
3 + دوتایی
-

فعالیت کارگاهی (صفحهٔ 219 کتاب درسی)

 

با توجه به جدول اولویت‌ها در سی‌شارپ (جدول 3)، جدول زیر را تکمیل کرده، اولویت عملگرها را تعیین کنید.

شرح عبارت عبارت ریاضی معادل در #C مقدار متغیرها نتیجه عبارت
محاسبه دلتا برای حل معادله درجه 2 Δ=b24ac Delta=b1×b442×a3×c b=2
a=1
c=1
 
میانگین سه عدد   (a+b+c)/3    
محاسبه حقوق خالص با کسر بیمه 3 درصد        
تعداد گروه‌های سه نفره در کارگاه با توجه به تعداد هنرجویان        
محاسبه معدل هنرجو با توجه به تعداد واحدهای هر درس        

کنجکاوی (صفحهٔ 219 کتاب درسی)

 

در تبدیل یک عبارت ریاضی به معادل آن در سی‌شارپ، درج پرانتز در چه مواقعی ضروری است؟

کارگاه 2 (تغییر اولویت عملگرها) 

می‌خواهیم برای فروشگاهی که دارای اجناس تخفیف‌دار است، برنامه‌ای بنویسیم. 3 کالای اولی که خریداری شده، دارای تخفیف 10 درصد و تخفیف کالای چهارم 70 درصد است. برنامه‌ای بنویسید که قیمت قبل از تخفیف 4 کالا را از ورودی دریافت کرده، مبلغ تخفیف را محاسبه کند.

1- پروژه جدیدی به نام ConsoleDiscount ایجاد کنید.

2- قطعه کد زیر برای دریافت قیمت کالاها از ورودی است. آن را تکمیل کنید.

Console.WriteLine (" ------ Final Price------");

//Get the First Price
Console.Write("\ nEnter Price1:");
float price1 = .................................;

//Get the Second Price
Console.Write("\ nEnter Price2:");
float price2 = ...............................;

//Get the Third Price
Console.Write("\ nEnter Price3:");
float price3 = ……………………………………………………………….;

//Get the fourth Price
Console.Write("\ nEnter Price4:");
float price4 = ………………………………………………..;

3- دستورات زیر مبلغ نهایی را محاسبه کرده، نمایش می‌دهد. این دستورات را به کدهای قبلی اضافه کنید.

// Calculate the Discount
float discount = price1 + price2 + price3 * 10 / 100 + price4 * 70 / 100;
Console.Write("\n *** final Discount = " + discount);

4- با استفاده از مقادیر جدول زیر میزان تخفیف را محاسبه کنید، سپس برنامه را اجرا کرده، این مقادیر را به عنوان ورودی برنامه استفاده کنید.

قیمت کالا 1 قیمت کالا 2 قیمت کالا 3 قیمت کالا 4 میزان تخفیف خروجی برنامه
200 300 100 500    

آیا خروجی برنامه با نتیجه‌ای که شما محاسبه کرده‌اید، یکسان است؟
نتیجه محاسبه اشتباه است. دلیل رخ دادن چنین خطایی چیست؟

به خطاهایی که در اثر اشتباه برنامه‌نویس در طراحی الگوریتم ایجاد می‌شود، خطاهای منطقی (Logic Error) می‌گویند. در صورت وجود این خطاها برنامه اجرا می‌شود ولی نتیجه اجرای برنامه، نتیجه مطلوب نیست.

5- خطای منطقی برنامه را برطرف کنید.

6- پس از برطرف کردن خطای منطقی، برنامه را با مقادیر جدول اجرا کنید.

قیمت کالا 1 قیمت کالا 2 قیمت کالا 3 قیمت کالا 4 میزان تخفیف خروجی برنامه
150 100 420 230    

7- برنامه را تغییر دهید تا علاوه بر میزان تخفیف، میزان مبلغی را که باید بپردازیم، هم نمایش دهد.

8- برنامه بالا را برای درصدهای متفاوت تخفیف مطابق جدول زیر تغییر دهید و برنامه را اجرا کنید.

تخفیف کالای اول تخفیف کالای دوم تخفیف کالای سوم تخفیف کالای چهارم
٪10 ٪15 ٪10 ٪65

9- کد برنامه را طوری تغییر دهید تا میزان تخفیف کالاها را نیز از ورودی دریافت کند.

10- در دستورات Console.Write در کد برنامه از ابتدای رشته n\ را برداشته، برنامه را اجرا کرده، خروجی برنامه را با خروجی مرحله قبل مقایسه کنید.

در زبان #C برای نشان دادن برخی نویسه‌ها و یا عملکردهای خاص در یک رشته از دنباله‌های فرار (Escape Sequences) استفاده می‌شود. دنباله فرار، یک دنباله معنی‌دار از نویسه‌هاست که با نویسه \ شروع می‌شود. این دنباله در یک رشته معنای دیگری غیر از آنچه که در ظاهر دیده می‌شود پیدا می‌کند. در جدول 4 برخی دنباله‌های معنی دار آمده است.

جدول 4- عملکرد برخی دنباله‌های فرار

دنباله معنی‌دار عملکرد دنباله
a\ ایجاد یک بوق هشدار (Alarm)
b\ حذف یک کاراکتر (Backspace)
r\ بازگشت به ابتدای خط (Carriage Return)
n\ ایجاد یک خط خالی (New Line)
t\ ایجاد یک Tab فاصله افقی (Tab)
'\ ایجاد یک تک کوتیشن
"\ ایجاد یک دابل کوتیشن
\\ ایجاد یک \ (Backslash)

فعالیت کارگاهی (صفحهٔ 222 کتاب درسی)

 

با کمک دنباله t\ و ایجاد یک Tab فاصله می‌توان ستون‌های یک جدول متنی را زیر هم تراز کرد. جدول زیر را در خروجی یک برنامه ایجاد کنید.

پژوهش (صفحهٔ 222 کتاب درسی)

 

درمورد انواع خطاها در برنامه‌نویسی تحقیق کنید.

فعالیت کارگاهی (صفحهٔ 222 کتاب درسی)

 

کارمند اداره‌ای هرماه 5 درصد از حقوق خود را به سازمان حمایت از کودکان کار اهدا می‌کند. با فرض اینکه از حقوق این شخص هرماه 10 درصد مالیات و 7 درصد بیمه کسر شود، برنامه‌ای بنویسید که حقوق شخص را پس از کسر مالیات، بیمه و مبلغ اهدایی نمایش دهد.

کلاس Math

آیا قابلیت محاسبه عبارت‌های مثلثاتی با عملگرهای محاسباتی وجود دارد؟
آیا با عملگرهای محاسباتی می‌توانید محیط میدان شهر (2πr) را محاسبه کنید؟
آیا با عملگرهای محاسباتی می‌توانید حجم یک ظرف کره‌ای شکل (43πr3) و جذر یک عدد (n) را محاسبه کنید؟

برای محاسبه عبارت‌های ریاضی، نظیر عبارت‌های بالا از متدهای کلاس Math استفاده می‌شود. با نوشتن Math در سی‌شارپ و درج نقطه، فهرست متدهای این کلاس و عملکرد متد، نوع خروجی و ورودی‌های آن دیده می‌شود (شکل 1).

شکل 1- ویژگی‌ها و متدهای کلاس Math
شکل 1- ویژگی‌ها و متدهای کلاس Math

عدد π که در ریاضیات کاربرد فراوان دارد، یکی از ویژگی‌های کلاس Math است و به‌صورت Math.PI در کدنویسی استفاده می‌شود.

فعالیت کارگاهی (صفحهٔ 223 کتاب درسی)

 

با استفاده از راهنمای سی‌شارپ جدول 5 را تکمیل کنید.

جدول 5- برخی متدهای کلاس Math

نام متد شرح متد نوع داده ورودی نوع داده خروجی معادل ریاضی معادل سی‌شارپ پاسخ عبارت
Pow مقدار عدد به توان را برمی‌گرداند. double double 25 Math.Pow(2,5)  
Sqrt ریشه دوم (جذر) عدد را برمی‌گرداند.     9 Math.Sqrt(9)  
Round عدد را با توجه به تعداد اعشار گرد می‌کند.     گرد گردن عدد 5/619 تا 2 رقم اعشار Math.Round(5.619,2)  

با استفاده از متدهای کلاس Math معادل سی‌شارپ عبارات ریاضی زیر را بنویسید.

x1=b+b24ac2aV=43πr3

کارگاه 3 (به کارگیری متدهای کلاس Math)

شهرداری قصد دارد در شهر یک بوستان دارای فواره آب و نگارخانه کوچک ایجاد کند. می‌خواهیم تعداد کاشی و سرامیک مورد نیاز برای کاشی کاری این فضاها را محاسبه کنیم.

1- پروژه‌ای با نام MathProject ایجاد کنید.

2- قطعه کد زیر را برای محاسبه محیط حوض دایره‌ای فواره تکمیل کنید و در متد Main بنویسید.

// input radius of the circle
Console.Write("Enter the radius in meter: ");
int radius = ....................................

// Calculate circle environment
double env = 2 * Math.PI * radius;

// display circle environment
..........................................

3- قطعه کدی بنویسید که با دریافت مساحت فضای مربع شکل نگارخانه، اندازه اضلاع آن را مشخص کند.

4- با توجه به اضلاع نگارخانه مرحله 3 دستوراتی به برنامه اضافه کنید که تعداد سرامیک با ابعاد 30×60 سانتی‌متر را برای فرش کردن نگارخانه محاسبه کند.

5- با توجه به محیط حوض فواره به ارتفاع 30 سانتی‌متر، دستوراتی به برنامه اضافه کنید که تعداد کاشی 15×15 سانتی‌متر برای پوشاندن دیواره حوض را نمایش دهد.

برداشت (صفحهٔ 224 کتاب درسی)

 

آنچه آموختم:

1- ......................
2- .....................
3- ....................

عملگرهای انتساب

از جمله عملگرهای زبان‌های برنامه‌نویسی عملگر انتساب است. به عبارات زیر توجه کنید: در این عبارت، مقدار سمت راست (Y) در متغیر سمت چپ (X) قرار می‌گیرد.

در این عبارت مراحل زیر به ترتیب اجرا می‌شود:

1- متغیر Z با 0 مقداردهی می‌شود.
2- متغیر Y با مقدار متغیر Z مقداردهی می‌شود.
3- متغیر X با مقدار متغیر Y مقداردهی می‌شود.

فعالیت کارگاهی (صفحهٔ 225 کتاب درسی)

 

عملگرهای دو عبارت X=Y=Z و X+Y+Z را اولویت‌بندی کرده، با هم مقایسه کنید.

علاوه بر عملگر انتساب = عملگرهای انتساب دیگری نیز وجود دارند. با توجه به مقادیر متغیرهای X و Y جدول 6 را تکمیل کنید.

int X = 10, Y = 3;

جدول 6- عملگرهای انتساب

عبارت معادل نتیجه X
X += Y; X = X + Y; 13
X ˗ = Y; X = X ˗ Y;  
X *= Y; X = X * Y;  
X /= Y; X = X / Y;  
X %= Y; X = X % Y;  

فعالیت گروهی (صفحهٔ 226 کتاب درسی)

 

به کمک هم گروه خود برنامه‌ای بنویسید که عددی از ورودی دریافت کرده، به ترتیب عملیات زیر را انجام دهد و خروجی نهایی را چاپ کند.
1- عدد ورودی را در 2 ضرب کند.
2- حاصل را در 5 ضرب کند.
3- حاصل را با عدد 10 جمع کند.
4- حاصل را بر 10 تقسیم کند.
5- از حاصل، عدد یک را کم کند.
6- حاصل را نمایش دهد.
7- برنامه را با ورودی‌های مختلف اجرا کنید. خروجی برنامه با عدد ورودی چه ارتباطی دارد؟

عملگرهای افزایشی - کاهشی

به عملگرهای یکتایی (plusplus)++ و (minusminus) که به‌‌ترتیب برای افزایش و کاهش مقدار یک متغیر به اندازه یک واحد به کار می‌روند، عملگرهای افزایشی - کاهشی می‌گوییم (جدول 7).

جدول 7 (عملگرهای افزایشی - کاهشی)

عملگر نام عملگر مثال عبارت معادل
++ افزایشی ++X
X++
X = X + 1
-- کاهشی X--
--X
X = X – 1

کارگاه 4 (عملگرهای افزایشی - کاهشی) 

برنامه‌ای بنویسید که تعداد هنرجویان دو کلاس 101 و 102 را دریافت کند و پس از انتقال یکی از هنرجویان از کلاس 101 به کلاس 102 تعداد هنرجویان دو کلاس را نمایش دهد.

1- پروژه جدیدی با نام Students Count ایجاد کنید.

2- دستورات زیر را در متد Main بنویسید.

int count101, count102;

Console.Write("Enter count of student class 101:");
count101 = int.Parse (Console.ReadLine());
Console.Write("Enter count of student class 102:");
count102 = int.Parse (Console.ReadLine());
Console.WriteLine("count of students class 101={0} ", count101--);
Console.WriteLine("count101={0} ", count101);
Console.WriteLine("count of students class 102={0} ",  count102++);
Console.WriteLine("count102={0} ", count102);

3- برنامه را اجرا کرده، خروجی برنامه را بنویسید.

آیا خروجی برنامه تعداد هنرجویان دو کلاس را به درستی نشان می‌دهد؟

4- قسمت نمایش تعداد هنرجویان کلاس را مطابق کد زیر تغییر دهید و برنامه را دوباره اجرا کنید.

Console.WriteLine("count of students class 101={0} ", --count101);
Console.WriteLine(" count of students class 102={0} ", ++count102);

آیا خروجی برنامه تعداد هنرجویان دو کلاس را به درستی نشان می‌دهد؟
آیا مقدار متغیرها تغییرکرده است و به درستی نمایش داده می‌شود؟

5- در برنامه به جای عملگرهای افزایشی - کاهشی، معادل آن‌ها را قرار دهید و برنامه را اجرا کنید.

اگر عملگر افزایشی - کاهشی در یک عبارت یا دستور بعد از متغیر به کار رود، ابتدا متغیر با مقدار فعلی در محاسبات شرکت می‌کند؛ سپس مقدار متغیر یک واحد اضافه کم می‌شود.

Console.WriteLine("count of students class 101={0} ", count101--);

دستور بالا معادل دو دستور زیر است.

Console.WriteLine("count of students class 101={0} ", count101);
count101--;

اگر عملگر افزایشی - کاهشی در یک عبارت یا دستور قبل از متغیر به کار رود، ابتدا مقدار متغیر یک واحد اضافه کم شده و متغیر با مقدار جدید در محاسبات بعدی شرکت می‌کند.

Console.WriteLine("count of students class 101={0} ", --count101);

دستور بالا معادل دو دستور زیر است.

--count101;
Console.WriteLine("count of students class 101={0} ", count101);

فعالیت گروهی (صفحهٔ 229 کتاب درسی)

 

- به کمک هم گروه خود معادل دستورات زیر را بنویسید.

Console.WriteLine("count of students class 102={0} ", count102++);
Console.WriteLine("count of students class 102={0} ", ++count102);

- با توجه به قطعه کد زیر و تغییرات متغیرهای x و y جدول را تکمیل کنید.

int x = 12, y = -12;
Console.WriteLine ("x={0} y={1}", x++, ++y);
Console.WriteLine ("x={0} y={1}", --x, ++y);
y = ++x;
x = y--;
Console.WriteLine ("x={0} y={1}", x, y);
x y خروجی برنامه
     
     
     
     
     

عملگر الحاق دو رشته

به قطعه کد زیر توجه کنید. عملگر + علاوه براینکه یک عملگر محاسباتی است، عملگر رشته‌ای هم محسوب می‌شود. اگر حداقل یکی از عملوندهای عملگر + از نوع string باشد، این عملگر به عنوان عملگر الحاق دو رشته عمل می‌کند.

int a=5+7;
string s = "ali" + "reza";
string count = "count of pencil : " + 100;

فعالیت کارگاهی (صفحهٔ 230 کتاب درسی)

 

در یک برنامه قطعه کد بالا را نوشته، محتوای متغیرهای s , a و count را نمایش دهید.

نتیجه این دستورها چیست؟
به قطعه کد زیر توجه کنید.

string s = "ali";
s += "reza";
Console.WriteLine(s);

این قطعه کد را در متد Main بنویسید و برنامه را اجرا کنید. از خروجی برنامه چه نتیجه‌ای می‌گیرید؟

فعالیت کارگاهی (صفحهٔ 231 کتاب درسی)

 

برنامه‌ای بنویسید که نام و نام خانوادگی را به صورت جداگانه از ورودی دریافت کند، سپس نام و نام خانوادگی را با استفاده از:
- عملگر الحاق دو رشته در یک متغیر ذخیره کرده، نمایش دهد.
- عملگر انتساب الحاق دو رشته در یک متغیر ذخیره کرده، نمایش دهد.

برداشت (صفحهٔ 231 کتاب درسی)

 

آنچه آموختم:

1- ..................
2- .................
3- ................

عملگرهای مقایسه‌ای

رتبه اول کلاس شما چه کسی است؟ بیشترین نمره فعالیت کارگاهی را چه کسی کسب کرده است؟ میزان سرانه آب مصرفی در ایران در مقایسه با سایر کشورها چگونه است؟ در زندگی روزمره با سؤالات بسیار زیادی از این قبیل روبه‌رو هستیم که پاسخ به آن‌ها نیاز به انجام عمل مقایسه دارد. در زبان‌های برنامه‌نویسی از عملگرهای مقایسه‌ای برای انجام عمل مقایسه استفاده می‌شود (جدول 8).

جدول 8- عملگرهای مقایسه‌ای
جدول 8- عملگرهای مقایسه‌ای

به عباراتی که شامل عملگرهای مقایسه‌ای هستند یک عبارت منطقی می‌گویند که بیان کننده یک شرط است. جواب شرط یا نتیجه یک عبارت منطقی، در صورت درستی true و درصورت نادرستی false است. حاصل عبارت‌های منطقی را می‌توان در خروجی نمایش داد.

Console.WriteLine("flag = {0}", a > 10);

کنجکاوی (صفحهٔ 232 کتاب درسی)

 

نتیجه عبارت منطقی در چه نوع متغیری ذخیره می‌شود؟
متغیر flag از چه نوعی است؟ 

flag = a > 10;

کارگاه 5 (عملگرهای مقایسه‌ای) 

در خبرنامه شرکت آب و فاضلاب کشور آمده است: متوسط سرانه مصرف آب در بخش خانگی در ایران به طور متوسط 190 لیتر در روز به ازای هر نفر و در دنیا 135 تا 140 لیتر است. این خبر نشان می‌دهد مردم کشور ما نسبت به متوسط مردم دنیا مصرف بالاتری دارند. می‌خواهیم برنامه‌ای بنویسیم که سرانه مصرف آب در ایران را با سرانه مصرف آب در دنیا مقایسه کند.

1- پروژه جدیدی با نام WaterConsumption ایجاد کنید. 

2- دستورات زیر را در متد Main بنویسید.

int iranWater = 190;
Console.WriteLine(" The average consumption in IRAN -> " + iranWater);

int worldWater = 135;
Console.WriteLine(" The average consumption in WORLD -> " + worldWater);

//آیا سرانه مصرف آب در ایران بیشتر است
Console.WriteLine(" Is iranWater > worldWater: {0}",  iranWater > worldWater);

3- برنامه را اجرا کرده، خروجی آن را بنویسید.

کارگاه 6 (عملگرهای منطقی) 

می‌خواهیم برنامه‌ای بنویسیم که عدم قبولی یک هنرجو را با نمایش false به علت گرفتن نمره 7 نشان دهد.

1- پروژه‌ای با نام Failure ایجاد کنید.

2- کد زیر را در متد Main بنویسید.

bool flag = false;
int score = 7;
Console.WriteLine("score = {0}", score);
Console.WriteLine("is student passed:{0}, is score=7:{1}", flag= =true, score= =7);

3- با هم‌گروهی خود در مورد خروجی این برنامه بحث کنید.

4- برنامه را اجرا کنید.

عملگر = عمل انتساب را انجام می‌دهد. عبارت a=b برای مقداردهی متغیر a با مقدار متغیر b استفاده می‌شود، درحالی که عبارت a==b بیان می‌کند که "آیا a و b مساوی هستند؟" و نتیجه این عبارت true یا false است.

فعالیت کارگاهی (صفحهٔ 233 کتاب درسی)

 

با توجه به مقادیر متغیرها جدول زیر را تکمیل کنید.

int a = 5, failed = 9, passed = 15;
عبارت منطقی نتیجه
passed >=12  
failed +2 < passed -a  
passed != 20  
failed == passed –a  

کارگاه 7 (اشکال‌زدایی عبارات (Debugging)) 

می‌خواهیم عددی را دریافت کرده، محاسبات زیر را انجام دهیم.
- افزایش یک واحد به ورودی
- 5 برابر کردن نتیجه قبل
- کاهش یک واحد از نتیجه قبل
- نصف کردن نتیجه آخر

1- پروژه‌ای با نام Debug1 ایجاد کنید.

2- کد زیر را در متد Main بنویسید.

int num1;
Console.WriteLine("Enter num1 : ");
num1 = int.Parse (Console.ReadLine() ) ;
num1++;
num1*5;
--num1;
num1 / 2;
Console.WriteLine("num1={0} ", num1);
Console.ReadKey() ;

3- برنامه را با استفاده از کلید F6 ترجمه کنید.

4- خطاهای این برنامه و علت رخ دادن آن‌ها را در جدولی که مشابه پنجره لیست خطا در VS طراحی شده، بنویسید.

علت خطا شماره ردیف
     
     

کارگاه 8 (اشکال‌زدایی در رشته‌ها) 

1- پروژه‌ای با نام Debug2 ایجاد کنید.

2- کد زیر را در متد Main بنویسید.

bool result = true;
Console.WriteLine(result > 0);
string s1 = "Ali";
string s2 = "Reza";
s1 += s2;
s1 = s1 - s2;
float f = 100 - s1;
s1 = -s1;

3- برنامه را با استفاده از کلید F6 ترجمه کنید.

4- خطاهای این برنامه و علت رخ دادن آن‌ها را در جدول زیر بنویسید.

علت شماره ستون شماره خط خطا شماره ردیف
         
         
         

کارگاه 9 (اشکال‌زدایی خطای تقسیم بر صفر) 

فرد خَیّری تعدادی دفترچه به یک مؤسسه خیریه اهدا کرده است. می‌خواهیم برنامه‌ای بنویسیم که تعداد دفترچه‌ها و تعداد بچه‌های این مؤسسه را از ورودی دریافت کرده، تعیین کند به هریک از بچه‌ها چند دفترچه تعلق می‌گیرد.

1- پروژه‌ای با نام Debug3 ایجاد کنید.

2- کد زیر را در متد Main بنویسید.

int booklet, children;
Console.WriteLine("Enter number of booklet : ");
booklet = int.Parse (Console.ReadLine() ) ;
Console.WriteLine("Enter number of children : ");
children = int.Parse (Console.ReadLine() ) ;
int count = booklet / children;
Console.WriteLine("count={0} ", count);
Console.ReadKey();

3- برنامه را اجرا کنید.

تعداد دفترچه‌ها و بچه‌های مؤسسه را مطابق جدول زیر وارد کرده، جدول را تکمیل کنید.

تعداد دفترچه‌ها تعداد بچه‌ها خروجی
500 200  
200 0  

4- خطاهای این برنامه و علت رخ دادن آن را در کادر زیر بنویسید.

تفاوت خطای این کارگاه با خطای کارگاه 7 و 8 چیست؟

خطا علت
   

برداشت (صفحهٔ 236 کتاب درسی)

 

آنچه آموختم:

1- ....................
2- ...................
3- ..................

عملگرهای منطقی

آیا در بین دوستان شما افراد کمتر از 15 سال و بزرگ‌تر از 20 سال وجود دارد؟ آیا معدل سال گذشته شما بین 12 و 17 است؟ آیا شرایط لازم برای حضور هنرجویان در اردو فراهم است؟

در مسائلی از این قبیل با عملیات منطقی روبه‌رو هستیم و تصمیم نهایی ما به تر یکب شرط‌ها بستگی دارد. برای ترکیب عملگرهای مقایسه‌ای می‌توان از عملگرهای منطقی استفاده کرد. عبارتی که شامل عملگرهای منطقی باشد یک عبارت منطقی است.

فعالیت کارگاهی (صفحهٔ 237 کتاب درسی)

 

با هم‌گروهی خود پویانمایی عملگرهای منطقی را مشاهده کنید و خلاصه‌ای از برداشت خود را در سه خط بنویسید.

*1- 
2- 
3- 

کارگاه 10 (عملگر منطقی &&) 

عملگر منطقی && دو عملوند دارد. در جدول 9 نتیجه اجرای عملگر && براساس حالت‌های مختلف عملوندهای آن آمده است.

جدول 9- عملگر منطقی &&
جدول 9- عملگر منطقی &&

رمز قفل یک چمدان مسافرتی 25 است. می‌خواهیم برنامه‌ای بنویسیم که باز شدن قفل را شبیه‌سازی کند. ارقام رمز را جداگانه از ورودی دریافت می‌کنیم.

1- پروژه‌ای با نام Lock ایجاد کنید.

2- قطعه کد زیر را در متد Main وارد کنید.

byte x, y;
y = byte.Parse (Console.ReadLine());
x = byte.Parse (Console.ReadLine());
Console.WriteLine(( x == 2) && (y == 5));

در صورتی که خروجی true باشد، قفل باز می‌شود.

3- برنامه را با مقادیر متفاوت برای x و y اجرا کرده، جدول را تکمیل کنید.

x y خروجی
3 5  
2 4  
    true
    false

کنجکاوی (صفحهٔ 238 کتاب درسی)

 

- عبارت منطقی بنویسید که درستی عدد ورودی که شماره یک ماه سال است را بررسی کند؟
- حاصل عبارت زیر در چه صورتی true است؟

X < 14\& \& X > 10

فعالیت کارگاهی (صفحهٔ 238 کتاب درسی)

 

جدول زیر را تکمیل کنید.

شرح عبارت منطقی اولویت‌بندی مقدار نتیجه
نمره هنرجو بین 0 تا 20 است. score >=0 && score<=20 score >=0 && score<=20 score=13  
score=26  
شرط ثبت نام در همایش نمره بالای 12 و معدل بالای 14 است.        
   
هوا ابری نباشد و نمره هنرجو بالای 15 باشد.        
   

کارگاه 11 (عملگر منطقی ||) 

قفل چمدان مسافرتی کارگاه 10 خراب شده است و درصورت درست بودن حداقل یکی از ارقام رمز هم باز می‌شود. می‌خواهیم برنامه‌ای بنویسیم که باز شدن قفل را در این وضعیت شبیه‌سازی کند. ارقام رمز را جداگانه از ورودی دریافت می‌کنیم.

عملگر منطقی || دو عملوند دارد. در جدول 10 نتیجه اجرای عملگر || براساس حالت‌های مختلف عملوندهای آن آمده است.

جدول 10- عملگر منطقی ||
جدول 10- عملگر منطقی ||

1- پروژه‌ای با نام Bad Lock ایجاد کنید توجه داشته باشید که رمز قفل همان 25 است.

2- قطعه کد زیر را در متد Main بنویسید.

byte x, y;
y = byte.Parse (Console.ReadLine());
x = byte.Parse (Console.ReadLine());
Console.WriteLine ((x==2) || (y==5));

3- برنامه را با مقادیر متفاوت برای x و y اجرا کرده، جدول را تکمیل کنید.

x y خروجی
2 4  
3 4  
    true
    false

کنجکاوی (صفحهٔ 239 کتاب درسی)

 

- عبارت منطقی بنویسید که نشان دهد عدد ورودی در محدودۀ مجاز برای نمره هنرجو نیست.
- حاصل عبارت زیر در چه صورتی true است؟

X > 14||X < 10

فعالیت کارگاهی (صفحهٔ 240 کتاب درسی)

 

جدول زیر را تکمیل کنید.

شرح عبارت منطقی اولویت‌بندی مقدار نتیجه
عدد ورودی در محدوده شماره روزهای یک ماه نیست. months<1||months>31 months1<13||months2>31 months = 5  
شرط ثبت نام در همایش معدل بالای 17 یا قبولی در آزمون ورودی     months = 40  
هوا ابری باشد یا نمره هنرجو کمتر از 15 باشد.        

کارگاه 12 (عملگر منطقی !) 

مدیریت هنرستان تصمیم گرفته است اگر هوا مناسب باشد، هنرجویان را به اردو ببرد. می‌خواهیم برنامه‌ای بنویسیم که وضعیت هوا را از ورودی دریافت کند و وضعیت رفتن به اردو را تعیین کند.

1- پروژه‌ای با نام WeatherCamp ایجاد کنید.

2- قطعه کد زیر را در متد Main بنویسید.

string weather;
Console.WriteLine(" weather:");
weather = Console.ReadLine();
Console.WriteLine("weather is not cloudy: {0}", weather != "cloudy");

3- برنامه را اجرا کرده، جدول زیر را تکمیل کنید.

وضعیت هوا خروجی
cloudy  
sunny  

عملگر منطقی ! یک عملوند دارد. در جدول 11 نتیجه اجرای عملگر ! براساس حالت‌های مختلف عملوند آن آمده است.

جدول 11- عملگر منطقی !
جدول 11- عملگر منطقی !

فعالیت کارگاهی (صفحهٔ 241 کتاب درسی)

 

جدول زیر را تکمیل کنید.

شرح عبارت منطقی اولویت‌بندی مقدار نتیجه
شماره فصل نیست !(no>=1&&no<=4) 4!(no>1=1&3&no<2=4) no=2  
هوا ابری است یا هنرجو نمره قبولی نگرفته است. (بین 12 تا 20)        
معادله درجه 2 ریشه مضاعف دارد یا ریشه ندارد.        

کنجکاوی (صفحهٔ 241 کتاب درسی)

 

کدام‌یک از عملگرهای منطقی یکتایی و کدام دوتایی هستند؟
یکتایی ....................
دوتایی ......................

فعالیت منزل (صفحهٔ 242 کتاب درسی)

 

- در برنامه‌ای سن و اندازه قد دو نفر دریافت می‌شود. برای هر کدام از مسائل زیر شرط مناسب بنویسید.
الف) آیا این دو نفر هم سن و هم قد هستند؟
ب) آیا این دو نفر هم سن یا هم قد هستند؟

- از کارمندی که بالای یک میلیون حقوق می‌گیرد و کمتر از 3 فرزند دارد، مالیات کسر می‌شود. برنامه‌ای بنویسید که با دریافت حقوق و تعداد فرزندان با نمایش true یا false نشان دهد که آیا از این کارمند مالیات کسر می‌شود؟

- اگر کاربری با نام کاربری "admin" و گذرواژه "Pass123" داشته باشیم. برنامه‌ای بنویسید که نام کاربری و گذرواژه را دریافت کند و صحت آن‌ها را با نمایش true یا false نمایش دهد.

4- خروجی قطعه برنامه‌های زیر را بررسی کنید.

الف)

Console.Write("Enter num1:");
int num1 = int.Parse( Console.ReadLine() );
Console.Write("Enter num2:");
int num2 = int.Parse( Console.ReadLine() );
Console.WriteLine(" {0} greater than{ 2} < { 1 }", num1, num2, num1 > num2);
Console.WriteLine(" {0} less than { 2} < { 1 }", num1, num2, num1 < num2);
Console.WriteLine(" {0} equal to { 2} < { 1 }", num1, num2, num1 == num2);
Console.WriteLine("{0} not equal to { 2} < { 1 }", num1, num2, num1 != num2);

ب) 

Console.WriteLine("Enter an integer:");
int myInt = int.Parse( Console.ReadLine() ) ;
bool isLessThan10 = myInt < 10;
bool isBetween0And5 = (0 <= myInt) && (myInt <= 5);
Console.WriteLine("Integer less than 10? {0}", isLessThan10);
Console.WriteLine("Integer between 0 and 5? {0}", isBetween0And5);

برداشت (صفحهٔ 243 کتاب درسی)

 

آنچه آموختم:

1- ...................
2- ..................
3- .................

واحد یادگیری 10 (شایستگی کار با ساختار شرطی)

آیا تا به حال پی‌بردده‌اید

- در زبان سی‌شارپ چند نوع ساختار شرطی وجود دارد؟
- چگونه می‌توان ساختار if - else ساده را کدنویسی کرد؟
- چگونه می‌توان ifهای تو درتو را با دستورات کمتری بازنویسی کرد؟
- چگونه می‌توان برخی ساختارهای شرطی if را با switch بازنویسی کرد؟

هدف از این شایستگی تشخیص نیاز به استفاده از ساختار شرط در برنامه و به کارگیری ساختارهای شرطی و کنترل خطاهای آن است.

استاندارد عملکرد

با استفاده از دانش ساختارهای شرطی و نوع داده شمارشی، چگونگی عملکرد ساختارهای شرطی در الگوریتم برنامه را تحلیل و آن را با استفاده از انواع داده شمارشی و دستورات شرطی بنویسید.

از دوران کودکی تاکنون سؤالات زیادی داشتیم که با اگر شروع می‌شد و مسیر زندگی انسان را مشخص می‌کرد.
اگر دوچرخه داشتم، چه می‌شد؟
اگر دیپلم گرفته بودم؛
اگر دانشجو بودم؛
بعضی از این اگرها دور از دسترس و برخی دیگر دست یافتنی است و هنگامی که اتفاق می‌افتد؛ اکثر انسان‌ها در تعقیب اگرهای دیگرند.
مثلاً اگر دوچرخه داشتم، چه می‌شد؟ اگر دوچرخه داشتم می‌گفتم اگر می‌توانستم برای دوچرخه‌ام زنگ بخرم چه می‌شد؟ بعد از آن در این فکر بودم که اگر در تیم دوچرخه سواری منطقه عضو می‌شدم و .....
در اینجا می‌خواهیم برای اگرها برنامه بنویسیم.

فعالیت گروهی (صفحهٔ 246 کتاب درسی)

 

به کمک هم‌گروهی خود اگرهای کتاب دانش فنی پایه را در جدول زیر وارد کنید.

ردیف عنوان شرط درست بودن شرط نادرست بودن شرط
1 تفکیک زباله اگر زباله خشک باشد در سطل مخصوص زباله خشک قرار بده -
2 خرید کالا     خرید نکردن
3 بازی سنگ، کاغذ، قیچی      
4        
5        

در برخی از مسائل اگرها ساده نیست و شامل چندین شرط است.

در این بخش می‌خواهیم یکی از اگر‌های اولیه کودکی را تبدیل به یک قطعه کد کنیم.
«اگر دوچرخه داشتم بازی می‌کردم».

if (x == "bicycle")
Console.WriteLine("Playing");

در قطعه کد بالا متغیر x نشان‌دهنده نوع وسیله‌ای است که داریم.

با همین اگر ساده توانستیم یک قطعه کد کوچک بنویسیم. همان‌طور که مشاهده می‌کنید واژه اگر در زبان برنامه‌نویسی به if تبدیل شد.

کنجکاوی (صفحهٔ 247 کتاب درسی)

 

در قطعه کد بالا نوع متغیر x چیست؟

فعالیت کارگاهی (صفحهٔ 247 کتاب درسی)

 

دو روندنمای زیر را با هم مقایسه کرده و تعیین کنید کدام مناسب مسئله بالا است.

شکل 2- ساختار دستور if
شکل 2- ساختار دستور if

کارگاه 1 (دستور شرطی ساده) 

می‌خواهیم برنامه‌ای بنویسیم که مزایای دو روش پرداخت قبوض آب و برق را مشخص کند:
* مراجعه به بانک: پرداخت قبوض
* استفاده از پرداخت الکترونیکی: پرداخت قبوض، کاهش ترافیک

1- پروژه‌ای با نام EPayment ایجاد کنید.

2- کد زیر را در متد Main وارد کنید.

Console.WriteLine("Enter your choice // 1 or 2");
byte x = byte.Parse( Console.ReadLine() );
if (x==1)
Console.WriteLine("Pay bills");
if (x==2)
{
    Console.WriteLine("Pay bills");
    Console.WriteLine("reduction of traffic ");
}

3- برنامه را اجرا کرده و نتایج آن را مشاهده کنید.

4- بعد از پرانتز if دوم یک ; قرار داده، نتیجه را با نتیجه مرحله قبل مقایسه کنید.

5- بلاک شرط دوم را بردارید و برنامه را اجرا کنید و نتیجه را با نتیجه مرحله 3 مقایسه کنید.

فعالیت کارگاهی (صفحهٔ 248 کتاب درسی)

 

با توجه به شکل مزایای دیگر پرداخت الکترونیکی قبوض را به کد اضافه کنید.

کارگاه 2 (ساختار شرطی if - else) 

می‌خواهیم قسمتی از برنامه هدایت یک خودروی بدون سرنشین را برای عبور از چراغ قرمز طراحی کنیم.

1- پروژه جدیدی با نام VCondition ایجاد کنید.

2- برنامه زیر را کامل کرده، در متد Main بنویسید.

if (light== "red")
     vehicle Condition = "stop";
else
     vehicle Condition = "move";
Console.WriteLine(vehicleCondition);

3- کدام یک از روندنماهای شکل 1 مناسب این برنامه است؟

4- روندنمای این برنامه را رسم کنید.

5- برنامه را به صورت زیر تغییر دهید.

اگر چراغ قرمز بود، ابتدا ماشین ترمز (break) کرده، سپس متوقف شود؛ در غیر این صورت با زدن یک بوق حرکت کند.

فعالیت کارگاهی (صفحهٔ 249 کتاب درسی)

 

برنامه‌ای بنویسید که میزان سوخت موجود در یک خودرو را از ورودی خوانده، اگر کمتر از 5 لیتر بود پیام مناسب با رنگ قرمز و در غیراین صورت پیام مناسب دیگری با رنگ سبز نمایش دهد.

کارگاه 3 (بلاک در ساختار شرطی if) 

می‌خواهیم برنامه‌ای طراحی کنیم تا با دریافت یک رشته برای زوج یا فرد بودن روزهای هفته، برنامه بعدازظهرهای علی را تعیین کند.

روز 15 تا 16:30 17 تا 18:30 18:40 تا 19 19:15 تا 20:45
روزهای شنبه - دوشنبه - چهارشنبه انجام تکالیف روزانه باشگاه ورزشی فریضه نماز کلاس #C
روزهای یکشنبه - سه‌شنبه - پنج‌شنبه انجام تکالیف روزانه کلاس زبان انگلیسی فریضه نماز سرزدن به پدربزرگ

1- پروژه جدیدی با نام Week ایجاد کنید.

2- کد زیر را در متد Main بنویسید.

آیا برنامه خطا دارد؟

string day = Console.ReadLine();

if (day == "odd")  // condition true
{
    Console.WriteLine("Studying");
    Console.WriteLine("English class");
    Console.WriteLine("Say praying");
    Console.WriteLine("Visit Grand");
}

if (day == "Even")   //condition true
{
    Console.WriteLine("Studying");
    Console.WriteLine("gym");
    Console.WriteLine("Say praying");
    Console.WriteLine("c# programming Class ");
}

3- خروجی برنامه در صورتی که ورودی «even» باشد، چیست؟

4- خروجی برنامه در صورتی که ورودی «odd» باشد، چیست؟

دلیل اشتراک پاسخ در مراحل 3 و 4 چیست؟

5- خطای برنامه را رفع کنید.

اگرخروجی برنامه نادرست است با توجه به آنچه قبلاً آموختید نوع خطا را مشخص کنید و مشکل برنامه را برطرف کنید.

آیا می‌توان برنامه را با ساختار if - else نوشت؟

فعالیت منزل (صفحهٔ 250 کتاب درسی)

 

برنامه‌ای بنویسید که مدت زمان تقریبی انتظار در صف بانک را با شرایط زیر به دست آورد.
برنامه باید شماره آخرین نفر ورودی به بانک، شماره آخرین نفری که در حال انجام کار است و تعداد باجه‌های فعال را دریافت کند. تعداد باجه‌های فعال، باید بیشتر از صفر باشد.
فرض کنید میانگین مدت زمان لازم برای انجام کار هر نفر در باجه معادل 2 دقیقه باشد.

کارگاه 4 (اجرای گام‌به‌گام if - else) 

در یک اداره 24 طبقه، 2 دستگاه آسانسور، مخصوص طبقات زوج و فرد و یک نفر جهت راهنمایی مراجعان وجود دارد که با پرسش از افراد، آسانسور مناسب را مشخص می‌کند. می‌خواهیم با هدف مکانیزه کردن قسمتی از تشکیلات ساختمانی از یک برنامه کمک بگیریم تا با وارد کردن شماره طبقه، آسانسور مناسب را مشخص کند. آسانسور A مخصوص طبقات فرد و آسانسور B مخصوص طبقات زوج است.

1- پروژه جدیدی با نام ChElevator ایجاد کنید.

2- کد زیر را در Main وارد کنید.

Console.WriteLine("Enter the floor");
int floor = int.Parse( Console.ReadLine() );
if (floor % 2 == 0 )
  Console.WriteLine("Elevator A");
else
  Console.WriteLine("Elevator B");

3- اگر مراجعه کننده به طور سهوی عدد 34 را وارد کند خروجی برنامه چیست؟

4- برنامه را طوری تغییر دهید تا درصورتی که کاربر عددی خارج از محدوده تعداد طبقات وارد کرد پیام مناسبی چاپ شود.

5- خروجی برنامه را با مقادیر روبه‌رو Trace کنید.

خروجی floor
  10
  25
  6-
  5.2
  floor13

کارگاه 5 (عملگر سه‌تایی) 

می‌خواهیم برنامه‌ای بنویسیم تا با دریافت سن فرد تعیین کند آیا صلاحیت دریافت گواهی‌نامه رانندگی دارد؟

1- پروژه جدیدی با نام DLicence ایجاد کنید.

اگر سن فرد مساوی یا بزرگ‌تر از 18 سال باشد می‌تواند در آزمون رانندگی شرکت کند و در غیراین صورت این امکان وجود ندارد. در نتیجه باید با استفاده از یک دستور شرطی، سن بررسی شود.

2- کد زیر را تکمیل کنید و در متد Main وارد کنید.

if (age >= 18)
  status = "Allowed";
else
  status = "Not Allowed";
Console.WriteLine(status);

3- خروجی برنامه را با مقادیر زیر Trace کنید.

خروجی age
  20
  18
  10

4- متغیرهای age و status را اعلان کنید.

5- به جای کد قبلی، کد زیر را وارد کنید.

Console.WriteLine("How old are you?");
int age = int.Parse( Console.ReadLine() );
string s;
s = (age >= 18 ? "Allowed" : " Not Allowed");
Console.WriteLine (s);

6- خروجی برنامه را در دوحالت مقایسه کنید.

شکل 3- عملگر سه‌تایی
شکل 3- عملگر سه‌تایی

در برخی موارد که دستور شرطی، از یک دستور، برای بخش else و if استفاده می‌کند؛ می‌توان از عملگر سه‌تایی (ternary) به‌صورت زیر استفاده کرد. هنگامی که شرط درست باشد خروجی این عملگر حاصل دستور 1 و هنگامی که شرط نادرست باشد، حاصل دستور 2 است (شکل 3).

7- برنامه را با ورودی twenty اجرا کنید. چه خطاهای رخ می‌دهد؟ چرا؟

8- مدیریت خطا انجام دهید.

دستور زیر را جایگزین خط دوم کد مرحله 5 کنید.

bool result = in.TryParse( Console.Readline() , out int age);

برنامه را با ورودی twenty اجرا کنید. آیا خروجی برنامه درست است؟

متد TryParse همانند متد Parse رشته ورودی را به عدد تبدیل می‌کند ولی موفقیت یا عدم موفقیت عمل تبدیل را در خروجی از نوع داده منطقی (bool) تعیین می‌کند.

در کد بالا در صورت وارد کردن عدد، رشته به عدد تبدیل شده در متغیر age (ورودی دوم متد TryParse) قرار داده می‌شود و متغیر result با true مقداردهی می‌شود ولی اگر ورودی عدد نباشد متغیر age با صفر و متغیر result با false مقداردهی می‌شوند.

با استفاده از متد Tryparse از بروز خطا در برنامه به خاطر ورود اطلاعات نادرست جلوگیری کردیم ولی خروجی برنامه درست نیست.

9- برنامه را اصلاح کنید.

Console.WriteLine(" How old are you");
bool result = int.TryParse ( Console.ReadLine() , out int age);
if (result)
{
     string s = (age = 18 ? "Allowed" : "Not Allowed");
     Console.WriteLine(s);
}

برنامه را با ورودی twenty اجرا کنید. نتیجه را با مرحله قبل مقایسه کنید.
برنامه را تکمیل کنید تا در صورت وارد کردن مقادیر غیر عددی پیام مناسب نمایش داده شود.

فعالیت کارگاهی (صفحهٔ 253 کتاب درسی)

 

دو مورد از کارگاه های قبل که قابلیت استفاده از عملگر سه تایی را دارند، بازنویسی کنید.

برداشت (صفحهٔ 253 کتاب درسی)

 

آنچه آموختم:

1- .............................
2- ............................
3- ...........................

کارگاه 6 (عبارت شرطی تودرتو) 

می‌خواهیم برنامه‌ای بنویسیم که کاربر معتبر برای ورود به سیستم را مشخص کند.

نام کاربری معتبر: reza
گذرواژه صحیح: 123456

1- پروژه جدیدی با نام UserPass ایجاد کنید.

2- کد زیر را در متد Main وارد کنید.

Console.WriteLine("Enter your user name");
string user = Console.ReadLine();
Console.WriteLine("Enter your password");
string pass = Console.ReadLine();
if (user == "reza")
if (pass == "123456")
  Console.WriteLine("Welcome " + user);
else
  Console.WriteLine("The password is incorrect");
else
  Console.WriteLine("Unkown user");
Console.ReadKey() ;

3- با توجه به برنامه جدول زیر را تکمیل کنید.

دستور شرط
                                                          اگر نام کاربری و گذرواژه صحیح است؛
  اگر نام کاربری صحیح است و گذرواژه صحیح نیست.
  اگر نام کاربری صحیح نیست؛

کنجکاوی (صفحهٔ 256 کتاب درسی)

 

- چرا هیچ‌کدام از ifها بلاک {} ندارند؟
- هر کدام از elseها مربوط به کدام if است؟ به کمک هنرآموز خود روش کلی برای این مسئله ارائه دهید.

شکل 4- ساختارهای شرطی در یک نگاه
شکل 4- ساختارهای شرطی در یک نگاه

فعالیت گروهی (صفحهٔ 256 کتاب درسی)

 

با کمک هم‌گروهی خود، برای روندنمای زیر یک مسئله طراحی کنید. می‌توانید از موارد شکل 5 ایده بگیرید.
* داشتن شرایط مختلف برای استخدام در شرکت برنامه‌نویسی
* عیب‌یابی کامپیوتر
* ثبت نام دانشگاه
* کنترل کیفیت یک محصول غذایی

شکل 5- ساختار شرطی تودرتو
شکل 5- ساختار شرطی تودرتو

عبارات شرطی تودرتو و عملگرهای منطقی

عبارات شرطی تودرتو را می‌توان با استفاده از عملگرهای منطقی ساده‌تر و خواناتر نوشت. اما به‌کار بردن آن‌ها دقت زیادی لازم دارد.

کارگاه 7 (عبارات شرطی با عملگرهای منطقی)

می‌خواهیم با استفاده از نرم‌افزار پیش‌بینی هوا امکان بازدید هنرجویان از نمایشگاه کتاب را در فصل بهار بررسی کنیم.

ردیف دما هوا امکان برگزاری
1 بیشتر از 19 درجه

عالی
2 بیشتر از 19 درجه

خوب
3 کمتر از 19 درجه

مناسب
4 کمتر از 19 درجه

غیرممکن

1- پروژه جدیدی با نام Weather ایجاد کنید.

2- متغیرهای مورد نیاز برنامه را اعلان کنید.

Console.WriteLine("Enter the air temperature");
int temp = int.Parse(Console.ReadLine()) ;
Console.WriteLine("Enter the weather conditions: sunny /cloudy / partly cloudy/ rainy");
string condition = Console.ReadLine() ;

3- برای ردیف 1 جدول، قطعه کد زیر را وارد کنید.

if (temp > 19)
  if (condition == "sunny")
    Console.WriteLine("Excellent");

4- برنامه را اجرا کرده، ورودی‌هایی به برنامه بدهید که پیام Excellent را نمایش دهد.

5- کد زیر را جایگزین خطوط بالا کنید.

if ((temp > 19)&& (condition == "sunny"))
  Console.WriteLine("Excellent");

6- برنامه را دوباره اجرا کرده، نتایج را مقایسه کنید.

7- کد ردیف 2 جدول را با استفاده از عملگرهای منطقی بنویسید.

8- کد زیر را برای ردیف 3 جدول به برنامه اضافه کرده، سپس برنامه را اجرا و نتیجه را یادداشت کنید.

if (temp < 19)
{
  if (condition == "sunny")
   Console.WriteLine("suitable");
  if (condition == "partly cloudy ")
Console.WriteLine("suitable");
}

9- به کمک هنرآموز خود کد این مرحله را با استفاده از عملگرهای منطقی بازنویسی کرده، سپس نتیجه را با کد قبلی مقایسه کنید.

10- کد ردیف 4 جدول را با عملگرهای منطقی به برنامه اضافه کنید.

فعالیت کارگاهی (صفحهٔ 285 کتاب درسی)

 

برنامه را طوری بازنویسی کنید که اگر کاربر در ردیف 3 و 4 دمای کمتر از 8 درجه وارد کرد؛ برگزاری اردو غیرممکن شود.

کارگاه 8 (مرتب‌سازی) 

می‌خواهیم سن 3 نفر را از ورودی بخوانیم و از بزرگ به کوچک مرتب کنیم.

1- پروژه جدیدی با نام Sort ایجاد کنید.

2- برنامه زیر را تکمیل کرده، در متد Main وارد کنید.

if ((a > b) && (a > c))
  if (b > c)
    Console.WriteLine("{0} {1} {2}", a, b, c);
  else
    Console.WriteLine("{0} {1} {2}", a, c, b);

else if ((b > a) && (b > c))
        if (a > c)
           Console.WriteLine("{0} {1} {2}", b, a, c);
      else
           Console.WriteLine("{0} {1} {2}", b, c, a);

else if ((c > a) && (c > b))
        if (a > b)
           Console.WriteLine("{0} {1} {2}", c, a, b);
        else
           Console.WriteLine("{0} {1} {2}", c, b, a);

3- نوع مناسب برای متغیرهای c و b و a چیست؟

4- برنامه را طوری تغییر دهید تا صحت داده‌ها نیز بررسی شود.

صحت داده‌ها: سن نباید منفی و از 110 بیشتر باشد.

فعالیت گروهی (صفحهٔ 259 کتاب درسی)

 

به کمک هم‌گروهی خود سعی کنید برنامه را با طرح و نقشه دیگری بنویسید.

فعالیت منزل (صفحهٔ 259 کتاب درسی)

 

- برنامه‌ای بنویسید که در انتخابات شورای دانش‌آموزی مدرسه، نفر برتر را از بین 4 نفر شرکت‌کننده در انتخابات تعیین کند. برنامه باید با دریافت 4 عدد که مشخص کننده تعداد آرای هر نفر است، نفری که بیشترین رأی را به خود اختصاص داده معین کند.
- برنامه‌ای بنویسید که نفر برتر مسابقات دوی 100 متر کلاس را تعیین کند. در این برنامه باید با دریافت زمان 4 شرکت کننده برحسب ثانیه، نفر اول مشخص شود.

کارگاه 9 (ترکیب عبارات منطقی، محاسباتی و شرطی) 

می‌‌‌‌‌‌خواهیم برنامه‌ای بنویسیم که با دریافت سه عدد c و b و a مشخص کند آیا این سه عدد می‌توانند اضلاع یک مثلث باشند؟

روش اول: برای حل مسئله، از قضیۀ حمار در هندسه استفاده می‌کنیم. این قضیه بیان می‌کند که در هر مثلث مجموع هر دو ضلع از ضلع دیگر بزرگ‌تر است. برای مثال سعی کنید مثلثی با ابعاد 1 و 2 و 20 ترسیم کنید. چنین مثلثی وجود ندارد. زیرا هرگز دو ضلع 1 و 2 به هم نخواهند رسید. مطابق قضیه حمار، مجموع دو ضلع باید از ضلع سوم بزرگ‌تر باشد که در این مثال 2+1>20 نیست.

زمانی که داده‌های ورودی از سه شرط (a+b>c,a+c>b,b+c>a) به‌درستی عبور کنند، به خروجی true می‌رسیم و اگر در هر نقطه از مسیر منحرف شوند؛ خروجی false خواهد بود. برای این کار به متغیری (count) نیاز داریم که در مسیر حرکت به سوی مقصد، تعداد شرط‌هایی را که به‌درستی از آن عبور می‌کنیم؛ بشمارد و هر وقت تعداد شمارش‌شده به عدد 3 رسید؛ خروجی true شود.

1- پروژه جدیدی با نام Triangle ایجاد کنید.

2- برنامه زیر را تکمیل کرده و در متد Main بنویسید.

int count = 0;
if (b + c > a) count++;
if (a + c > b) count++;
if (a + b > c) count++;
if (count = = 3)
  Console.WriteLine(true);
else
  Console.WriteLine(false);

3- برنامه را با 3 مقدار ورودی اجرا کنید.

if (a + b <= c)
  Console.WriteLine(false);
else if (a + c <= b)
  Console.WriteLine(false);
else if (b + c <= a)
  Console.WriteLine(false);
else
  Console.WriteLine(true);

روش دوم: می‌توانیم از شرط تودرتو استفاده کنیم.
در این حالت true را در چهارمین دستور قرار می‌دهیم، زیرا تنها زمانی دستور چهارم اجرا می‌شود که دستورهای یک تا سه اجرا نشده باشند. در این ساختار شرطی، دیگر نیازی به شمارنده نیست.

4- برنامه را اجرا کنید و نتایج را با کد قبلی مقایسه کنید.

روش سوم: در این روش از عملگرهای منطقی استفاده می‌کنیم.

Console.WriteLine(a + b > c && a + c > b && b + c > a);

اگر به عملگر && دقت کنید؛ متوجه می‌شوید که خروجی این عملگر زمانی true است که همه عملوندهای آن true باشد.

5- برنامه را اجرا کرده، نتایج را دوباره با مراحل قبل مقایسه کنید.

فعالیت کارگاهی (صفحهٔ 261 کتاب درسی)

 

- الگوریتم و روندنمای 3 روش بالا را کشیده و با هم مقایسه کنید. به نظر شما کدام روش بهتر است؟ چرا؟
- روش سوم را با استفاده از عملگر || بنویسید (از هنرآموز خود کمک بگیرید).

فعالیت منزل (صفحهٔ 261 کتاب درسی)

 

با توجه به کارگاه 10 صفحۀ 237 برنامه‌ای بنویسید که با دریافت 2 عدد x و y به‌عنوان رمز قفل شکلی مشابه زیر ترسیم کند.

برداشت (صفحهٔ 261 کتاب درسی)

 

آنچه آموختم:

1- ...................
2- ..................
3- .................

کارگاه 10 (تبدیل if به Switch) 

می‌خواهیم برنامه‌ای بنویسیم که با دریافت یک فصل، ماه‌های آن را تعیین کند.

1- پروژه جدیدی با نام Season ایجاد کنید.

2- قطعه کد زیر را تکمیل کرده، در متد Main بنویسید.

if (season= ="Bahar")
  Console.WriteLine("Farvardin, Ordibehesht, Khordad");
else if (season= ="Tabestan")
  Console.WriteLine("Tir, Mordad, Shahrivar");
else if (season= ="Paeiz")
  Console.WriteLine("Mehr, Aban, Azar");
else if(season= ="Zemestan")
  Console.WriteLine("Dey, Bahman, Esfand");
else
Console.WriteLine("Season Wrong");

3- برنامه را اجرا و خروجی را مشاهده کنید.

برنامه ساده است اما نکته قابل‌توجه در این برنامه بررسی عبارت season در چندین حالت است. در زبان سی‌شارپ می‌توان برای بررسی حالت‌های مختلف یک عبارت از دستور switch استفاده کرد. ساختار این دستور به‌صورت زیر است:

شکل کلی دستور switch

اگر حاصل یا مقدار عبارت برابر مقدار 1 بود دستور 1 انجام شده و با دستور break از ساختار خارج می‌شود.
اگر برابر مقدار 2 بود دستور 2 انجام شده، با دستور break از ساختار خارج می‌شود (برای بقیه مقادیر نیز همین روش اجرا می‌شود).
.
.
.
در نهایت، در صورتی که حاصل برابر هیچ یک از مقادیر نباشد دستور 4 (default) انجام می‌شود و با دستور break از ساختار خارج می‌شود.
(عبارت) switch
}
مقدار 1 case
; دستور 1   
;break    
مقدار 2 case
;دستور 2   
;break    
:مقدار 3 case
;دستور 3   
;break    
;دستور 4   
;break    
{

4- برنامه زیر را جایگزین برنامه قبلی کرده، برخی دستورات ناقص را تکمیل کنید.

string season ;
Console.Write("Enter Season:");
season = Console.ReadLine() ;
switch (season)
{
 case "Bahar":
  Console.WriteLine("Farvardin, Ordibehesht, Khordad");
  break;
 case "Tabestan":
  Console.WriteLine("Tir, Mordad, Shahrivar");
  break;
 case " Paeiz ":
ــــــــــــــــــــــــــــــــــــــ
ــــــــــ
 case "Zemestan":
ــــــــــــــــــــــــــــــــــــــ
  break;
 default:
   Console.WriteLine("Season Wrong");
ــــــــــ
}

5- برنامه را اجرا و نتایج را با کد قبلی مقایسه کنید.

کارگاه 11 (ساختار switch) 

می‌خواهیم برنامه‌ای بنویسیم که با دریافت شماره دانش‌آموزی و تعیین رقم سمت راست آن، شماره یک کارگاه از کارگاه‌های قبلی را برای ارائه در کلاس به او اختصاص دهد.

برای جدا کردن رقم سمت راست یک عدد صحیح می‌‌‌‌توانیم باقی مانده تقسیم عدد بر 10 را محاسبه کنیم.

کنجکاوی (صفحهٔ 264 کتاب درسی)

 

تفاوت عدد و رقم چیست؟

1- پروژه جدیدی با نام IdSudent ایجاد کنید.

2- کد زیر را در متد Main وارد کنید. حالت‌های 3 تا 8 را مطابق جدول تکلیف، کدنویسی کنید.

long x = long.Parse(Console.ReadLine()) ;
x = x % 10;
switch (x)
{
case 1:
  Console.WriteLine("5");
  break;
case 2:
  Console.WriteLine("3");
  break;
ــــــــــ
case 9:
  Console.WriteLine("7");
  break;
case 0:
  Console.WriteLine("9");
  break;
}

3- در برنامه بالا default استفاده نشده است، آیا برنامه خطا دارد؟

4- برنامه قبل را با ساختار if بازنویسی کنید و هر دو برنامه را با هم مقایسه کنید.

5- مدیریت خطا انجام دهید.

هنگام اجرا به جای عدد ورودی، یک رشته وارد کنید. خطاهای حاصل را ترجمه کنید.
با تغییر کد از خطا جلو گیری کنید.

6- برنامه را اجرا و شماره تمرین خود را یادداشت کنید.

شماره تمرین خود را در کلاس اعلام کرده، هم‌گروهی احتمالی خود را پیدا کنید. گروه‌ها باید برنامه اختصاصی خود را در کلاس با شیوه‌ای خلاقانه شرح دهند.

فیلم را مشاهده کرده و برداشت را تکمیل کنید.

برداشت (صفحهٔ 265 کتاب درسی)

 

آنچه آموختم:

1- ...............
2- ..............
3- .............

فعالیت منزل (صفحهٔ 265 کتاب درسی)

 

برنامه‌ای بنویسید که با انتخاب نام میوه‌های جدول زیر خواص آن‌ها را نمایش دهد. اگر میوه در فهرست نبود پیام مناسبی نمایش دهد.

ردیف میوه خواص
1

ضد سرطان، خون ساز، درمان ضعف
2

تصفیه کننده خون، ضد سرطان
3

تب بر، ضد نرمی استخوان
4

کاهش کلسترول خون، کمک به سلامت لثه
5

تنظیم فشار خون، مقوی مغز، شادابی پوست
6

کاهش وزن، بهبود سردرد و معده درد

کارگاه 12 (ایجاد فهرست در کنسول) 

می‌خواهیم برنامه‌ای بنویسیم که یک فهرست رنگ تولید کند، تا با انتخاب هر یک از نویسه‌های زیر به وسیله کاربر، صفحه نمایش تغییر رنگ دهد.

1- پروژه جدیدی به نام MenuColor ایجاد کنید.

2- برنامه زیر را در متد Main وارد کنید و بخش‌های ناقص برنامه را تکمیل کنید.

شکل 6- فهرست رنگ‌ها بر اساس انتخاب نویسه
شکل 6- فهرست رنگ‌ها بر اساس انتخاب نویسه
Console.WriteLine("What’s your favorite color?");
Console.WriteLine("[r] red");
Console.WriteLine("[g] green");
Console.WriteLine("[b] blue");
Console.WriteLine("[w] white");
Console.WriteLine("[y] yellow");
Console.Write(" Enter your choice: ");

char choice = char.Parse(Console.ReadLine()) ;

switch (choice)
{
  case ' r ':
   Console.BackgroundColor = ConsoleColor.Red;
   Console.Clear() ;
   break;
   case ' g ':
   ـــــــــ
   ـــــــــ
   ـــــــــ
  case ' b ':
   Console.BackgroundColor = ConsoleColor.Blue;
   Console.Clear() ;
   break;
  default:
   ـــــــــ
   ـــــــــ
   ـــــــــ
}

3- برای نویسه g و w و y برنامه را تکمیل کنید.

4- با ورودی‌های مختلف برنامه را اجرا کنید.

5- یک نویسه خارج از فهرست تعیین شده به عنوان ورودی بدهید. صفحه نمایش چه رنگی می‌شود؟

6- کد برنامه را طوری تکمیل کنید که فهرست رنگ مانند شکل 5 درصفحه نمایش دیده شود.

7- به فهرست برنامه امکان انتخاب رنگ قلم صفحه نمایش را هم اضافه کنید.

کارگاه 13 (جزئیات دستور switch و شرط منطقی ||) 

می‌خواهیم برنامه‌ای بنویسیم که با دریافت نام یک دستگاه کامپیوتری نوع ورودی، خروجی و یا ورودی و خروجی بودن آن‌ها را اعلام کند.

1- پروژه جدیدی با نام IODevice ایجاد کنید.

2- برنامه زیر را در متد Main وارد کنید.

Console.WriteLine("enter your device");
string x = Console.ReadLine() ;
switch (x)
{
case "keyborad":
case "Mouse":
case "Scanner":
  Console.WriteLine("{0} is input device ",x);
  break;
case "Monitor":
case "Printer":
case "Headphone":
  Console.WriteLine("{0} is output device ",x);
  break;
case "Modem":
case "Network card":
case "Audio Card":
  Console.WriteLine("{0} is Both Input–OutPut Devices ", x);
  break;
default:
  Console.WriteLine("unknown");
  break;
}

3- برنامه را اجرا کنید.

4- قابلیت شناسایی دستگاه‌های بیشتری را برای برنامه فراهم کنید.

انواع داده شمارشی (Enumeration)

می‌خواهیم برنامه‌ای بنویسیم که روزهای هفته را براساس شماره روز نگهداری کند؛ بنابراین لازم است تعداد هفت ثابت به صورت زیر تعریف کنیم:

const int Sunday = 0;
const int Monday = 1;
const int Tuesday = 2;
const int Wednesday = 3;
const int Thursday = 4;
const int Friday = 5;
const int Saturday = 6;

آیا در این روش امکان انجام عملیات محاسباتی روی ثابت‌ها برای به دست آوردن نام دیگر وجود دارد؟ برای مثال می‌توان به یک ثابت دو واحد اضافه کرد و نام دو روز بعد را به دست آورد؟

برای بالا بردن خوانایی می‌توانیم از نوع داده شمارشی استفاده کنیم. نوع داده شمارشی مجموعه‌ای از چند نام دلخواه است که اجازه می‌دهد به جای اعداد ثابت و بی معنی، از واژه‌های با معنی استفاده کنیم.

در زبان سی‌شارپ انواع داده شمارشی آماده بسیاری تعریف شده است. در جدول زیر اسامی برخی از داده‌های شمارشی را می‌بینید:

نوع داده شمارشی DayOfWeek شامل اسامی هفت روز هفته با شماره 0 تا 6 است.

DayOfWeek.
                     *Friday
                     *Monday
                     *Saturday
                     *Sunday
                     *Thursday
                     *Tuesday
                     *Wednesday

شکل کلی دسترسی به اعضای نوع داده شمارشی

نام عضو. نوع داده شمارشی

DayOfWeek.Monday

به کد تغییر رنگ زمینه کنسول توجه کنید:

Console.BackgroundColor = ConsoleColor.Blue;

اعلان متغیری از نوع داده شمارشی را به صورت زیر انجام می‌دهیم.

نام متغیر        نوع داده شمارشی;
DayOfWeek               day ;

متغیر day از نوع داده شمارشی DayOfWeek است و می‌تواند با یکی از اعضای این نوع داده شمارشی به‌صورت زیر مقداردهی شود.

مقدار = نام متغیر;
day = DayOfWeek.Friday;

کارگاه 14 (داده شمارشی رنگ‌ها) 

می‌خواهیم برنامه‌ای بنویسیم که اسامی 16 رنگ اصلی را نمایش دهد.

1- پروژه جدیدی به نام Colors ایجاد کنید.

2- دستورات زیر را در متد Main بنویسید.

ConsoleColor c = ConsoleColor.Blue;
Console.BackgroundColor = c + 3;
Console.Clear() ;

3- برنامه را اجرا کرده، خروجی را مشاهده کنید.

4- دستورات زیر را به مرحله 2 اضافه کنید.

c + = 1;
Console.ForegroundColor = c;
Console.WriteLine (c);

5- دستوراتی اضافه کنید که نام هر 16 رنگ را با همان رنگ زمینه نمایش دهد.

6- کد زیر را بنویسید تا شماره رنگ Green در نوع داده شمارشی ConsoleColor را نمایش دهد.

Console.WriteLine ((int) ConsoleColor.Green);

در نوع داده شمارشی برای دسترسی به عدد صحیح هر یک از عضوهای آن، از تبدیل صریح برای تبدیل نوع داده شمارشی به عدد به صورت زیر استفاده می‌‌‌کنیم:

(int) نام عضو. نوع داده شمارشی

فعالیت کارگاهی (صفحهٔ 269 کتاب درسی)

 

برنامه‌ای بنویسید که شماره تمام رنگ‌های نوع داده شمارشی ConsoleColor را با همان رنگ نمایش دهد.

فعالیت منزل (صفحهٔ 270 کتاب درسی)

 

با استفاده از نوع داده شمارشی DayOfWeek برنامه‌ای بنویسید که اسامی روزهای هفته را همراه با شماره روز نمایش دهد.

تعریف نوع داده شمارشی

در زبان سی‌شارپ، برنامه‌نویس می‌تواند نوع داده شمارشی جدیدی به وسیلۀ کلید واژه enum به‌صورت زیر تعریف کند.

enum نام دلخواه
     }
فهرستی از نام‌ها
     {

محل تعریف نوع داده شمارشی معمولاً خارج از کلاس و در فضای نام است. روش نام‌گذاری نوع داده شمارشی روش پاسکال است. در فهرست نام‌ها، هر نام با علامت کاما (,) از نام دیگر جدا می‌شود.

در مثال زیر نوع داده شمارشی MontOfYear برای نام ماه‌های سال میلادی به صورت خلاصه تعریف شده است:

enum MontOfYear
{
Jan, Feb, Mar, Apr, May, Jun, Aug, Sep, Oct, Nov, Dec
}

هریک از اعضای نوع داده شمارشی معادل یک عدد صحیح ثابت است. این اعداد به‌طور پیش فرض از عدد صفر شروع شده و به‌‌ترتیب یک واحد اضافه می‌شوند. البته می‌توان عدد دیگری را به نام‌ها اختصاص داد.

در مثال زیر نوع داده شمارشی Fasl برای اسامی فصل‌های سال تعریف شده است.

enum Fasl
{
 Bahar = 1,
 Tabestan,
 Paeez,
 Zemestan
}

در این تعریف Bahar معادل با عدد یک و Tabestan برابر دو است.

کنجکاوی (صفحهٔ 270 کتاب درسی)

 

در نوع داده شمارشی Fasl نام Zemestan معادل با چه عددی است؟

کارگاه 15 (اعلان نوع داده شمارشی) 

می‌خواهیم برنامه‌ای بنویسیم که شماره یک فصل را از ورودی دریافت کرده، اسامی ماه‌های آن را نمایش دهد.

1- پروژه جدیدی به نام Fasl ایجاد کنید.

2- نوع داده شمارشی Season را خارج از کلاس Program و در فضای نام اعلان کنید.

برای افزایش خوانایی برنامه، پیشنهاد می‌شود هنگام اعلان نوع داده شمارشی، مقدار عددی هر عضو نوشته شود.

enum Season
          {
            Winter = 1,
            Spring = 2,
            Summer = 3,
            Fall = 4
          }

3- دستورات زیر را برای دریافت شماره فصل و تبدیل شماره به نام فصل، در متد Main بنویسید.

Console.Write ("Enter the Season number (1-4): ");
int no = int.Parse (Console.ReadLine ( ) );
Season fasl = (Season) no;

4- دستور switch را به همراه تمامی caseهای آن بنویسید.

برای نوشتن دستور switch به کمک کدهای کوتاه (Code Snippets) عبارت sw را نوشته (1) و دوبار کلید Tab را بزنید (2). به جای عبارت switch-on داخل پرانتز، نام متغیر شمارشی یعنی fasl نوشته و دوبار Enter را بزنید (3).

5- برای بررسی صحت ورودی دستورات مناسب به برنامه اضافه کنید.

اگر شماره وارده در محدوده مجاز نباشد، پیام مناسب نمایش داده شود.

فعالیت کارگاهی (صفحهٔ 272 کتاب درسی)

 

- کدام یک از دستورات مقداردهی قطعه کد زیر نادرست است؟ خطای آن‌ها چیست؟

DayOfWeek day;
day = Monday;
day = DayOf Week.Wednesday;
Console.WriteLine (day);
day = 5;
day = (DayOfWeek) 0;
Console.WriteLine (day);
Console.WriteLine ((int) day);

- دستوراتی که خطا دارد را حذف کرده، کد را در متد Main نوشته و اجرا کنید.

فعالیت منزل (صفحهٔ 272 کتاب درسی)

 

برای میزان تحصیلات ولی هنرجو نوع داده شمارشی تعریف کنید. برنامه‌ای بنویسید که شماره معادل مدارک تحصیلی را نمایش دهد.