WEBVTT

00:00.110 --> 00:05.390
خب، حالا که سوال را نمایش می‌دهیم، بیایید ورودی کاربر را هم بگیریم و سپس

00:05.390 --> 00:08.210
بررسی کنیم که ورودی کاربر درست است یا خیر.

00:08.300 --> 00:08.720
خوب.

00:08.720 --> 00:13.700
برای این کار باید کمی برنامه‌مان را تغییر دهیم.

00:13.700 --> 00:17.420
اولین چیزی که نیاز داریم، یک متد دیگر است.

00:17.420 --> 00:26.660
private int getUserChoiceپس یک متد دیگر در پایین ایجاد می‌کنم که 
 نام دارد.

00:26.660 --> 00:33.740
ایده این است که این متد انتخاب کاربر را می‌گیرد و مستقیماً به صورت int بازمی‌گرداند.

00:33.740 --> 00:37.640
چون معمولاً چیزی که از کنسول می‌گیریم، یک رشته است.

00:37.640 --> 00:40.640
پس آن را مطابق نیاز تبدیل می‌کنیم.

00:40.640 --> 00:46.910
console.writeپس من به کاربر نمایش می‌دهم با 
 و می‌گویم:

00:46.910 --> 00:49.220
Your answer:

00:49.220 --> 00:54.500
و در پرانتز می‌گویم شماره و یک فاصله خالی، به این صورت.

00:54.500 --> 00:55.970
این چیزی است که می‌خواهم نمایش دهم.

00:55.970 --> 00:57.860
سپس می‌خواهم ورودی کاربر را دریافت کنم.

00:57.860 --> 01:01.580
console.readlineپس ورودی کاربر را می‌گیرم که 
 خواهد بود.

01:01.580 --> 01:07.430
و یک متغیر ایجاد می‌کنم که انتخاب کاربر را ذخیره کند.

01:07.430 --> 01:15.590
و سپس تا زمانی که ورودی کاربر درست نباشد یا عدد مناسبی نباشد که با تعداد گزینه‌ها مطابقت داشته باشد،

01:15.590 --> 01:23.600
این حلقه ادامه خواهد داشت.

01:23.930 --> 01:25.730
همین کار را انجام می‌دهد.while پس این حلقه 

01:25.730 --> 01:26.870
ورودی کاربر را می‌گیرد.

01:26.870 --> 01:32.750
و من می‌گویم تا زمانی که هر چیزی که کاربر وارد کرده است،

01:32.750 --> 01:34.550
... این قسمت کمی پیچیده است.

01:34.550 --> 01:38.990
پس اجازه دهید سریع آن را تایپ کنم: tryParse

01:38.990 --> 01:45.140
و می‌گویم هر چیزی که کاربر وارد کرده و out choice.

01:45.140 --> 01:52.400
پس منظورم این است که تا زمانی که چیزی که کاربر وارد کرده یک عدد باشد...

01:52.400 --> 01:57.800
پس تا زمانی که این درست انجام شد، به اجرای ادامه کد می‌پردازیم.

01:57.800 --> 02:02.570
اما اگر عدد نباشد، دوباره تلاش خواهیم کرد.

02:02.570 --> 02:06.800
پس اگر عدد نبود، به کاربر اطلاع می‌دهیم: لطفاً یک عدد معتبر وارد کنید.

02:06.800 --> 02:11.120
پس چیزی شبیه به «انتخاب نامعتبر» نمایش می‌دهیم.

02:11.120 --> 02:17.150
لطفاً یک عدد بین 1 تا 4 وارد کنید، باشه؟

02:17.150 --> 02:19.640
من اینطور استفاده می‌کنم.

02:19.640 --> 02:21.560
پس به نوعی به صورت کدنویسی سخت مشخص کرده‌ام

02:21.560 --> 02:23.180
چند پاسخ می‌خواهم داشته باشم.

02:23.240 --> 02:26.330
مثلاً چند پاسخ ممکن خواهد بود.

02:26.330 --> 02:29.660
پس می‌گویم کاربر باید چیزی بین 1 تا 4 وارد کند.

02:29.660 --> 02:31.940
پس من همچنین باید این را بررسی کنم.

02:31.940 --> 02:41.510
بنابراین می‌گویم علاوه بر اینکه ورودی یک عدد باشد، همچنین بررسی می‌کنم که انتخاب

02:41.510 --> 02:47.120
کمتر از یک است یا کمتر یا بیشتر از چهار؟

02:47.120 --> 02:53.810
تا زمانی که کاربر چیزی کمتر از یک یا بیشتر از چهار یا غیر عدد وارد کند، پیام انتخاب نامعتبر .

02:53.810 --> 02:58.010
به کاربر نمایش داده می‌شود

02:58.010 --> 03:02.450
و سپس واضح است که من باید دوباره ورودی کنسول را بخوانم.

03:02.450 --> 03:06.470
پس ورودی را بازنویسی می‌کنیم و دوباره بررسی می‌کنیم، زیرا در غیر این صورت همیشه 

03:06.470 --> 03:09.710
فقط ورودی قدیمی را که داشتیم، پردازش می‌کند.

03:09.710 --> 03:12.020
پس از کاربر ورودی جدیدی می‌خواهیم.

03:12.020 --> 03:17.000
و وقتی پاسخ صحیح دریافت شد، انتخاب را بازمی‌گردانیم.

03:17.000 --> 03:20.660
حالا باید یک نکته را روشن کنیم.

03:20.660 --> 03:27.290
این روش کار می‌کند، اما در عمل برنامه‌ای می‌سازیم که کاربر را 

03:27.290 --> 03:31.040
سردرگم می‌کند.

03:31.040 --> 03:32.060
چرا؟  

03:32.060 --> 03:34.310
به این بخش نگاه کنید.

03:34.310 --> 03:40.790
displayQuestionدر متد 
 write I plus one. ما نوشتیم 

03:40.790 --> 03:50.000
این باعث شد پاسخ‌ها همیشه یک شماره جلوتر نمایش داده شوند و ایندکس درست رعایت نشود.

03:50.000 --> 03:56.060
پس وقتی انتخاب کاربر را می‌گیریم، باید یک واحد کم کنیم.

03:56.060 --> 04:02.330
یعنی باید با ایندکس صفر تنظیم کنیم، 

04:02.330 --> 04:07.520
چون اینجا یک واحد اضافه کرده‌ایم.

04:07.520 --> 04:10.250
پس بعد از دریافت انتخاب کاربر، باید یک واحد کم کنیم تا محاسبات درست انجام شود.

04:10.250 --> 04:16.010
بعد از دریافت انتخاب کاربر، می‌توانیم محاسبات را به درستی انجام دهیم.

04:16.010 --> 04:16.790
اوکی


04:16.790 --> 04:18.890
این همان نکته اصلی است.

04:18.890 --> 04:20.090
ایده همین است.

04:20.090 --> 04:30.830
برای آزمایش، از متد get user choice مستقیماً داخل quiz استفاده می‌کنیم و آن را با .

04:30.830 --> 04:33.290
شاخص جواب صحیح سوال مقایسه می‌کنیم

04:33.290 --> 04:42.980
get user choice می‌توانیم بگوییم اگر
بود،question.userCorrectAnswerIndex برابر با

04:42.980 --> 04:43.520
می‌دانیم که کاربر پاسخ درست داده است.

04:43.520 --> 04:47.510
در این صورت،

04:47.510 --> 04:50.570
پیغام "درست" را نمایش می‌دهیم.

04:50.570 --> 04:54.530
در غیر این صورت، پیغام "نادرست" را نمایش می‌دهیم.

04:54.530 --> 04:59.480
بیایید سریع این را اجرا کنیم چون هنوز نتیجه نهایی نیست.

04:59.480 --> 04:59.690
 ببینیم چطور کار می‌کند

05:00.220 --> 05:01.330
اما بیایید فقط امتحانش کنیم.

05:01.330 --> 05:03.610
پس شماره پاسخ خود را وارد کنید.

05:03.610 --> 05:06.640
فرض کنیم می‌دانیم جواب صحیح برلین است.

05:06.640 --> 05:08.740
می‌زنیم.Enterپس عدد ۲ را فشار می‌دهیم و 

05:08.740 --> 05:10.510
و می‌بینید که درست است.

05:10.510 --> 05:14.260
حالا دوباره اجرا می‌کنیم تا ببینیم اگر اشتباه باشد چه می‌شود.

05:14.260 --> 05:17.740
Enterوقتی 
 را برای پاریس می‌زنیم، می‌بینید که اشتباه است.

05:17.740 --> 05:21.970
این هنوز شکل نهایی برنامه ما نخواهد بود، اما من این دو خط را به متد نمایش سؤال اضافه کردم

05:21.970 --> 05:28.060
get user choiceتا بتوانیم سریع بررسی کنیم که متد 
 ما درست کار می‌کند یا نه.

05:28.060 --> 05:29.920
خوب.

05:29.920 --> 05:32.080
این هم پایان این ویدیو است.

05:32.080 --> 05:38.230
در ویدیوی بعدی، طراحی شروع صحیح آزمون را انجام خواهیم داد.

05:38.230 --> 05:38.560
باشه.

05:38.560 --> 05:43.690
به طوری که برنامه فقط یک سؤال نباشد، بلکه بتواند چندین سؤال را

05:43.690 --> 05:45.490
 بعد از هر پاسخ نمایش دهد

05:45.490 --> 05:47.110
و از سؤال بعدی ادامه دهد.

05:47.110 --> 05:48.760
پس در ویدیوی بعدی می‌بینمتان.

