WEBVTT

00:00.110 --> 00:01.070
خوش برگشتید.

00:01.070 --> 00:07.880
توی این ویدیو می‌خوام شروع کنیم به ساختن اولین اپلیکیشن کوچیکمون که یه شبیه‌ساز ایستگاه هواشناسی خواهد بود.

00:07.880 --> 00:08.810
شبیه‌ساز.

00:08.810 --> 00:09.260
خب.

00:09.260 --> 00:12.770
پس بیاید بریم جلو و یک برنامه کنسولی بسازیم.

00:12.770 --> 00:19.670
و این بار بذارید اسمش رو بذارم شبیه‌ساز ایستگاه هواشناسی.

00:19.670 --> 00:22.190
من کد رو سمت چپ آماده کردم.

00:22.490 --> 00:24.830
و فکر می‌کنم برای شما سمت راست باشه.

00:24.830 --> 00:31.730
پس هر وقت به اون نگاه می‌کنم فقط برای اینه که تجربه تماشای شما بهتر بشه.

00:31.730 --> 00:36.890
من قرار نیست کل برنامه رو همین‌جوری بداهه بسازم.

00:36.890 --> 00:41.480
قبلاً آماده‌اش کردم و این فقط برای اینه که تجربه یادگیری شما بهتر بشه، چون بعضی وقتا دیدم افراد می‌گن

00:41.480 --> 00:45.890
آره تو فقط داری کد کپی می‌کنی یا هرچی، یا داری کدی می‌نویسی.

00:45.890 --> 00:47.780
که انگار داری از جایی نگاه می‌کنی.

00:47.780 --> 00:49.370
آره، خب این دقیقاً هدفشه.

00:49.370 --> 00:56.060
ایده اینه که شما نباید نگاه کنید به کسی که داره از صفر تقلا می‌کنه تا یه اپلیکیشن بسازه و همیشه

00:56.060 --> 01:01.430
ساختار درست داشته باشه و همه‌چی مرتب باشه، وقتی بحث آموزش میاد، چون آموزش یه چیز کاملاً متفاوتیه.

01:01.610 --> 01:02.420
درسته؟

01:02.420 --> 01:04.220
در مقایسه با فقط ساختن یه اپلیکیشن.

01:04.220 --> 01:07.340
خب، ما قراره این گزینه رو تیک بزنیم.

01:07.340 --> 01:09.050
استفاده نکنیم.Top Level Statements اینکه از 

01:09.050 --> 01:11.810
و بیاید این پروژه رو بسازیم.

01:11.810 --> 01:14.480
(namespace) می‌بینید که یه فضای نام 
 به اسم شبیه‌ساز ایستگاه هواشناسی داریم.

01:14.480 --> 01:15.590
این اسم برنامه‌مونه.

01:15.590 --> 01:20.690
و کلاس داخلی Program رو هم داریم به همراه متد استاتیک void main.

01:20.690 --> 01:24.710
پس این پروژه‌ای خواهد بود که قراره کلی چیز مختلف توش استفاده کنیم.

01:24.710 --> 01:30.590
قراره خیلی از آرایه‌ها استفاده کنیم، از مولد اعداد تصادفی، حلقه‌ها.

01:30.590 --> 01:32.780
بعد قراره از متدها هم استفاده کنیم.

01:32.780 --> 01:39.710
یه کار خیلی باحال هم می‌کنیم که بیشترین مقدار داخل یه آرایه رو پیدا کنیم، که خیلی به درد بخوره.

01:39.710 --> 01:41.840
این مهارتیه که باید داشته باشید.

01:41.840 --> 01:43.880
و حتی قراره رشته‌ها رو هم با هم مقایسه کنیم.

01:43.880 --> 01:48.590
پس اینم چیز خوبیه.

01:48.590 --> 01:50.000
این پروژه یه کم بزرگ‌تر خواهد بود، ولی بیاید شروع کنیم به ساختنش.

01:50.000 --> 01:55.430
خب چی نیاز داریم یا ایده کلی برنامه چیه؟

01:55.430 --> 01:58.760
ایده اینه که ما یه سری دما برای تعداد روز مشخص داریم.

01:58.760 --> 02:03.890
یعنی تعداد روزهایی که می‌خوایم هوا رو شبیه‌سازی کنیم وارد می‌کنیم.

02:03.890 --> 02:08.000
و بعد بر اون اساس شبیه‌سازی انجام میشه.

02:08.000 --> 02:10.010
پس توی مورد ما قراره هوا رو دانلود نکنیم.

02:10.010 --> 02:11.780
اون چیزی هست که خیلی بعدتر توی دوره انجام می‌دیم.

02:11.780 --> 02:17.420
اما فعلاً قراره آب‌وهوای تصادفی بسازیم به همراه شرایط آب‌وهوایی تصادفی برای تعداد روزهایی که خودمون مشخص می‌کنیم.

02:17.420 --> 02:18.740
روزهایی که تعریف می‌کنیم.

02:18.740 --> 02:26.750
Main پس داخل متد 
، بذارید به کاربر اعلام کنیم که باید یه عدد وارد کنه، یعنی تعداد .

02:26.750 --> 02:32.090
روزهایی که می‌خوایم شبیه‌سازی بشه

02:32.090 --> 02:33.680
و بعد اون عدد رو وارد می‌کنیم.

02:33.680 --> 02:40.430
پس یه متغیر می‌سازیم که تعداد روزها رو بگیره با استفاده از int.Parse(Console.ReadLine).

02:40.430 --> 02:45.170
حالا بر اساس اون قراره دما رو بگیریم.

02:45.170 --> 02:49.310
new int[days]  پس یه آرایه دما درست می‌کنیم که برابر 
باشه.


02:49.310 --> 02:56.900
یعنی به همون تعداد روزهایی که وارد کردیم، همونقدر مقدار داخل آرایه 

02:56.900 --> 02:57.560
دما داشته باشیم.

02:57.560 --> 02:59.900
پس در این مرحله ما نمی‌دونیم تعدادش چقدره.

02:59.900 --> 03:01.970
این بستگی داره به چیزی که اینجا وارد می‌کنیم.

03:01.970 --> 03:05.450
بعدش هم می‌خوام شرایط آب‌وهوایی داشته باشم.

03:05.450 --> 03:09.110
پس یه رشته می‌سازم و اسمش رو می‌ذارم 
conditions.

03:09.110 --> 03:13.370
و اینجا نوع شرایطی که می‌تونیم داشته باشیم رو تعریف می‌کنم.

03:13.370 --> 03:14.510
مثلاً می‌تونه آفتابی باشه.

03:14.510 --> 03:15.710
می‌تونه بارونی باشه.

03:15.710 --> 03:20.090
می‌تونه ابری باشه و مثلاً برفی هم باشه.

03:20.090 --> 03:22.520
این‌ها شرایط مختلف آب‌وهوا هستن.

03:22.520 --> 03:31.190
و یه متغیر دیگه هم قرار می‌دم که شرایط واقعی هر روز — یعنی همون وضعیت‌ها — رو نگه داره.

03:31.190 --> 03:32.210
باشه.

03:32.240 --> 03:32.660
اوکی.

03:32.660 --> 03:36.020
new اینجا از کلیدواژه 
 برای رشته استفاده می‌کنم.

03:36.020 --> 03:40.010
و باز هم از تعداد روزها استفاده می‌کنم.

03:40.010 --> 03:41.540
خب چه اتفاقی داره میفته؟

03:41.540 --> 03:48.680
ما یه رشته داریم که انواع شرایط ممکن رو نگه می‌داره.

03:48.680 --> 03:55.190
و بعد یه رشته داریم که شرایط واقعی هر کدوم از روزها رو نگه می‌داره.

03:55.190 --> 03:57.680
مثلاً دوشنبه آفتابی باشه.

03:57.680 --> 04:01.070
سه‌شنبه بارونی، چهارشنبه ابری.

04:01.070 --> 04:02.570
و پنج‌شنبه برفی.

04:02.570 --> 04:02.900
خب.

04:02.900 --> 04:12.500
پس همه این جزئیات داخل این رشته ذخیره می‌شن، جایی که فقط شرایط آب‌وهوا برای هر روز مشخص رو داریم.

04:12.500 --> 04:13.520
برای یک روز خاص.

04:13.520 --> 04:19.550
پس داریم یه متغیر می‌سازیم که به تعداد روزهایی که کاربر وارد می‌کنه مقدار نگه داره.

04:19.580 --> 04:20.360
خب.

04:20.360 --> 04:25.190
حالا در این مرحله نیاز داریم یه مولد اعداد تصادفی بسازیم.

04:25.190 --> 04:31.520
پس از کلاس Random استفاده می‌کنم و یه متغیر به اسم random درست می‌کنم.

04:31.520 --> 04:32.300
random.

04:32.300 --> 04:39.080
Random و اینجا یه نمونه جدید از کلاس 
 می‌سازم.

04:39.080 --> 04:45.230
random این یعنی شیء 
 الان در دسترس من قرار می‌گیره تا بتونم از متدهاش استفاده کنم.

04:45.230 --> 04:47.300
Random این اجازه می‌ده متدهای 
 رو استفاده کنم.

04:47.300 --> 04:47.870
خوبه.

04:47.870 --> 04:50.660
و بعد می‌خوام داده‌های آب‌وهوا تولید کنم.

04:50.660 --> 04:57.710
پس یه حلقه for می‌زنم: int i = 0؛ تا وقتی i کمتر از تعداد روزهاست؛ i++.

04:57.710 --> 04:59.600
یعنی برای هر تعداد روزی که وارد کردیم.

04:59.720 --> 05:00.860
به همین شکل.

05:00.860 --> 05:07.310
حالا می‌خوام دمای تصادفی و شرایط آب‌وهوایی تصادفی ایجاد کنم.

05:07.310 --> 05:08.840
خب چطوری این کارو بکنیم؟

05:08.840 --> 05:14.930
کافیه بگیم دما در موقعیت i برابر باشه با 
random.Next.

05:14.930 --> 05:20.300
پس بیاید بگیم اینجا از منفی ده تا مثلاً ۴۰ درجه.

05:20.300 --> 05:22.190
این بازه دمایی‌ایه که می‌تونیم داشته باشیم.

05:22.190 --> 05:30.740
conditions و بعد قراره شرایط آب‌وهوایی رو بگیریم که میشه 
 و داخل براکت‌ها مقداردهی می‌کنیم.

05:30.740 --> 05:32.000
یعنی اینجوری.

05:32.000 --> 05:37.970
اینجا داریم یکی از چهار مقدار مختلفی که تعریف کردیم رو به صورت تصادفی اختصاص می‌دیم.

05:37.970 --> 05:40.820
پس می‌تونیم چیزی بین ۰ تا ۳ استفاده کنیم.

05:40.820 --> 05:50.720
کاری که می‌تونیم اینجا انجام بدیم اینه که بگیم random.Next و داخل پرانتز بنویسیم conditions.Length.

05:50.720 --> 05:51.980
خب اینجا چه اتفاقی میفته؟

05:51.980 --> 05:53.660
خیلی چیزا توی همین خط ترکیب شدن.

05:53.660 --> 05:58.910
اینجا داریم چندین مفهوم مختلفی که تا حالا یاد گرفتیم رو هم‌زمان به کار می‌بریم.

05:58.910 --> 05:59.420
توی یک خط.

05:59.420 --> 06:01.880
for اول از همه یه حلقه 
 داریم، درسته؟

06:01.880 --> 06:07.640
و توی این حلقه for به تعداد روزهایی که وارد کردیم تکرار انجام می‌دیم — فرض کنیم ۵ روز وارد کردیم.

06:07.640 --> 06:08.120
خب.

06:08.120 --> 06:15.920
پس برای اون ۵ روز، کاری که انجام می‌دیم اینه: برای روز اول، توی آرایه دما در ایندکس صفر، یه مقدار تصادفی بین منفی ۱۰ تا ۳۹ درجه ذخیره می‌کنیم.

06:15.920 --> 06:22.610
و بعد برای شرایط آب‌وهوایی در همون موقعیت.

06:22.610 --> 06:26.360
یعنی در ایندکس صفر.

06:26.360 --> 06:27.770
هم مقدار تصادفی قرار می‌دیم.

06:27.770 --> 06:32.360
در ایندکس صفر یکی از اون شرایطی که اینجا داریم رو برمی‌داریم.

06:32.360 --> 06:36.560
پس این آرایه رشته‌ای شامل اون چهار شرایطیه که تعریف کردیم.

06:36.560 --> 06:39.560
و ما یکی از اون شرایط رو به صورت تصادفی انتخاب می‌کنیم.

06:39.560 --> 06:47.000
پس ممکنه اینجوری بشه که برنامه بگه هوا ۳۹ درجه‌ست ولی برفیه! خب.

06:47.000 --> 06:49.220
پس برناممون کاملاً تصادفیه.

06:49.220 --> 06:50.870
ولی خب همینطوریه، درسته؟

06:50.870 --> 06:59.270
پس چیزی که اینجا می‌گیم اینه که یه مقدار تصادفی بگیر از بین تعداد شرایطی که داریم، به این روش.

06:59.270 --> 07:00.080
یعنی اینجوری.

07:00.080 --> 07:07.670
نه اینکه مثلاً بگیم بین صفر تا چهار. می‌تونستیم اینجوری هم بنویسیم: 0, 4.

07:07.700 --> 07:12.950
اینطوری هم مقادیر بین صفر، یک، دو و سه رو بهمون می‌داد.

07:12.950 --> 07:17.060
یکی از اون چهار مقدار رو تصادفی برمی‌داشت.

07:17.060 --> 07:23.000
ولی مشکل اینجاست که اگه بعداً تصمیم بگیریم شرایط آب‌وهوایی بیشتری اضافه کنیم چی؟

07:23.000 --> 07:23.390
یا اگه تصمیم بگیریم شرایط برفی رو حذف کنیم، اون‌وقت برناممون کرش می‌کنه.

07:23.390 --> 07:28.700
اگه اینجا اصلاحش نکنیم.

07:28.700 --> 07:30.380
و مشکل اینه که متوجه هم نمی‌شیم باید اصلاحش کنیم چون کامپایلر هیچ خطایی نشون نمی‌ده.

07:30.380 --> 07:36.020
conditions پس به جای این کار، فقط از طول آرایه 
 استفاده می‌کنیم.

07:36.020 --> 07:41.240
یعنی هر چندتا مقدار داخل اون آرایه باشه، همونقدر انتخاب تصادفی می‌تونیم داشته باشیم.

07:41.240 --> 07:49.820
و به همین اندازه می‌تونیم مقدار تصادفی بگیریم.

07:49.820 --> 07:50.240
تمام.

07:50.240 --> 07:57.770
conditions پس می‌تونیم چهار مقدار تصادفی بگیریم چون طولِ 
 چهار هست چون چهار مقدار داره.

07:57.770 --> 08:00.260
اون شامل آفتابی، بارونی، ابری و برفیه.

08:00.260 --> 08:03.620
و حالا ما فقط یکی از اون مقادیر تصادفی رو انتخاب می‌کنیم.

08:03.620 --> 08:04.400
باشه.

08:04.400 --> 08:11.120
حالا بیاید یه بار اجراش کنیم تا ببینیم چه مقادیری دریافت می‌کنیم.

08:11.120 --> 08:14.120
پس من الان اجراش می‌کنم.

08:14.120 --> 08:17.390
فرض کنیم ما پنج روز وارد می‌کنیم که می‌خوایم شبیه‌سازی بشه.

08:17.390 --> 08:20.600
می‌شیم.for بعد وارد این حلقه 

08:20.780 --> 08:21.380
درست.

08:21.380 --> 08:28.130
می‌بینیم که دما در موقعیت i برابر صفر یک مقدار تصادفی می‌گیره.

08:28.130 --> 08:32.600
بعد هم این رشته رو ایجاد می‌کنیم.

08:32.600 --> 08:34.610
در این لحظه همه مقادیر فعلاً صفر هستند.

08:34.610 --> 08:35.990
اجازه بدید این متغیر رو ببینم.

08:36.020 --> 08:37.310
نگاه می‌کنم.temperature روی 

08:37.310 --> 08:38.270
روی این یکی کلیک می‌کنم.

08:38.270 --> 08:42.590
می‌بینید برای تکرارِ اول دمای تصادفیِ ۳۱ به دست اومد.

08:42.590 --> 08:45.560
حالا اگه این رو چند بار اجرا کنیم

08:45.560 --> 08:48.080
اول از همه الآن یه وضعیت آب‌وهوایی هم داریم.

08:48.080 --> 08:50.750
و وضعیت آب‌وهوایی اول ابری شد.

08:50.750 --> 08:55.250
حالا چند بار اجراش می‌کنم تا مقادیر رو بگیرم.

08:55.250 --> 08:57.380
می‌بینید دوبار ابری شد و یک بار برفی.

08:57.380 --> 08:58.550
و بعدش بارونی شد.

08:58.550 --> 09:04.550
حالا بذار یک بار دیگه اجرا کنم چون گفتم پنج وضعیت آب‌وهوایی خواهم داشت.

09:04.550 --> 09:07.220
پس دوباره همین روند رو تکرار می‌کنم.

09:07.220 --> 09:08.900
و این هم هست.

09:08.900 --> 09:13.010
می‌بینیم داریم: ابری، ابری، برفی، بارونی، برفی.

09:13.010 --> 09:17.630
پس این‌ها مقادیر تصادفی‌ای هستن که حالا به دست آوردیم.

09:17.630 --> 09:20.450
یعنی به نوعی همون شرایط تصادفی.

09:20.450 --> 09:27.500
و دماهایی که به دست آوردیم عبارتند از: -7، 34، -3، 13 و 14.

09:27.500 --> 09:34.970
حالا البته می‌تونید بگید اگر دما زیر صفر بود، وضعیت رو برفی کنید یا چیزهای شبیه به این.

09:34.970 --> 09:35.780
و اگر زیر صفر نبود اجازه ندید همچین چیزی اتفاق بیافته.

09:35.780 --> 09:39.380
اما این کاریه که خوشحال می‌شم خودتون امتحانش کنید.

09:39.380 --> 09:43.280
باید یه دستور if به کد اضافه کنید و بررسی کنید مقدار تصادفی واقعاً چی بوده.

09:43.280 --> 09:49.760
می‌تونید یا یه متغیر جدا براش بسازید و نگهش دارید و از اون برای چک کردن استفاده کنید،

09:49.760 --> 09:55.220
یا می‌تونید مقدار داخل آرایه رو در همون ایندکس بررسی کنید.

09:55.220 --> 09:59.450
در همون موقعیت. پس هر دو روش درست هستن.

09:59.590 --> 10:01.450
پس این نقطه شروع برنامه‌مون بود.

10:01.450 --> 10:04.870
حالا کاری که می‌خوام بعداً انجام بدم اینه که داده‌های هوا رو نمایش بدم؛

10:04.870 --> 10:10.840
یعنی میانگین دما، بیشترین دما، کمترین دما و شایع‌ترین وضعیت آب‌وهوایی.

10:10.840 --> 10:15.250
پس این چیزیه که در ویدیو بعدی راه‌اندازی می‌کنیم.

10:15.250 --> 10:19.090
پس اونجا می‌بینمتون.
