خوش برگشتید.
توی این ویدیو می‌خوام شروع کنیم به ساختن اولین اپلیکیشن کوچیکمون که یه شبیه‌ساز ایستگاه هواشناسی خواهد بود.
شبیه‌ساز.
خب.
پس بیاید بریم جلو و یک برنامه کنسولی بسازیم.
و این بار بذارید اسمش رو بذارم شبیه‌ساز ایستگاه هواشناسی.
من کد رو سمت چپ آماده کردم.
و فکر می‌کنم برای شما سمت راست باشه.
پس هر وقت به اون نگاه می‌کنم فقط برای اینه که تجربه تماشای شما بهتر بشه.
من قرار نیست کل برنامه رو همین‌جوری بداهه بسازم.
قبلاً آماده‌اش کردم و این فقط برای اینه که تجربه یادگیری شما بهتر بشه، چون بعضی وقتا دیدم افراد می‌گن
آره تو فقط داری کد کپی می‌کنی یا هرچی، یا داری کدی می‌نویسی.
که انگار داری از جایی نگاه می‌کنی.
آره، خب این دقیقاً هدفشه.
ایده اینه که شما نباید نگاه کنید به کسی که داره از صفر تقلا می‌کنه تا یه اپلیکیشن بسازه و همیشه
ساختار درست داشته باشه و همه‌چی مرتب باشه، وقتی بحث آموزش میاد، چون آموزش یه چیز کاملاً متفاوتیه.
درسته؟
در مقایسه با فقط ساختن یه اپلیکیشن.
خب، ما قراره این گزینه رو تیک بزنیم.
استفاده نکنیم.Top Level Statements اینکه از
و بیاید این پروژه رو بسازیم.
(namespace) می‌بینید که یه فضای نام به اسم شبیه‌ساز ایستگاه هواشناسی داریم.
این اسم برنامه‌مونه.
و کلاس داخلی Program رو هم داریم به همراه متد استاتیک void main.
پس این پروژه‌ای خواهد بود که قراره کلی چیز مختلف توش استفاده کنیم.
قراره خیلی از آرایه‌ها استفاده کنیم، از مولد اعداد تصادفی، حلقه‌ها.
بعد قراره از متدها هم استفاده کنیم.
یه کار خیلی باحال هم می‌کنیم که بیشترین مقدار داخل یه آرایه رو پیدا کنیم، که خیلی به درد بخوره.
این مهارتیه که باید داشته باشید.
و حتی قراره رشته‌ها رو هم با هم مقایسه کنیم.
پس اینم چیز خوبیه.
این پروژه یه کم بزرگ‌تر خواهد بود، ولی بیاید شروع کنیم به ساختنش.
خب چی نیاز داریم یا ایده کلی برنامه چیه؟
ایده اینه که ما یه سری دما برای تعداد روز مشخص داریم.
یعنی تعداد روزهایی که می‌خوایم هوا رو شبیه‌سازی کنیم وارد می‌کنیم.
و بعد بر اون اساس شبیه‌سازی انجام میشه.
پس توی مورد ما قراره هوا رو دانلود نکنیم.
اون چیزی هست که خیلی بعدتر توی دوره انجام می‌دیم.
اما فعلاً قراره آب‌وهوای تصادفی بسازیم به همراه شرایط آب‌وهوایی تصادفی برای تعداد روزهایی که خودمون مشخص می‌کنیم.
روزهایی که تعریف می‌کنیم.
Main پس داخل متد ، بذارید به کاربر اعلام کنیم که باید یه عدد وارد کنه، یعنی تعداد .
روزهایی که می‌خوایم شبیه‌سازی بشه
و بعد اون عدد رو وارد می‌کنیم.
پس یه متغیر می‌سازیم که تعداد روزها رو بگیره با استفاده از int.Parse(Console.ReadLine).
حالا بر اساس اون قراره دما رو بگیریم.
new int[days] پس یه آرایه دما درست می‌کنیم که برابر باشه.
یعنی به همون تعداد روزهایی که وارد کردیم، همونقدر مقدار داخل آرایه
دما داشته باشیم.
پس در این مرحله ما نمی‌دونیم تعدادش چقدره.
این بستگی داره به چیزی که اینجا وارد می‌کنیم.
بعدش هم می‌خوام شرایط آب‌وهوایی داشته باشم.
پس یه رشته می‌سازم و اسمش رو می‌ذارم conditions.
و اینجا نوع شرایطی که می‌تونیم داشته باشیم رو تعریف می‌کنم.
مثلاً می‌تونه آفتابی باشه.
می‌تونه بارونی باشه.
می‌تونه ابری باشه و مثلاً برفی هم باشه.
این‌ها شرایط مختلف آب‌وهوا هستن.
و یه متغیر دیگه هم قرار می‌دم که شرایط واقعی هر روز — یعنی همون وضعیت‌ها — رو نگه داره.
باشه.
اوکی.
new اینجا از کلیدواژه برای رشته استفاده می‌کنم.
و باز هم از تعداد روزها استفاده می‌کنم.
خب چه اتفاقی داره میفته؟
ما یه رشته داریم که انواع شرایط ممکن رو نگه می‌داره.
و بعد یه رشته داریم که شرایط واقعی هر کدوم از روزها رو نگه می‌داره.
مثلاً دوشنبه آفتابی باشه.
سه‌شنبه بارونی، چهارشنبه ابری.
و پنج‌شنبه برفی.
خب.
پس همه این جزئیات داخل این رشته ذخیره می‌شن، جایی که فقط شرایط آب‌وهوا برای هر روز مشخص رو داریم.
برای یک روز خاص.
پس داریم یه متغیر می‌سازیم که به تعداد روزهایی که کاربر وارد می‌کنه مقدار نگه داره.
خب.
حالا در این مرحله نیاز داریم یه مولد اعداد تصادفی بسازیم.
پس از کلاس Random استفاده می‌کنم و یه متغیر به اسم random درست می‌کنم.
random.
Random و اینجا یه نمونه جدید از کلاس می‌سازم.
random این یعنی شیء الان در دسترس من قرار می‌گیره تا بتونم از متدهاش استفاده کنم.
Random این اجازه می‌ده متدهای رو استفاده کنم.
خوبه.
و بعد می‌خوام داده‌های آب‌وهوا تولید کنم.
پس یه حلقه for می‌زنم: int i = 0؛ تا وقتی i کمتر از تعداد روزهاست؛ i++.
یعنی برای هر تعداد روزی که وارد کردیم.
به همین شکل.
حالا می‌خوام دمای تصادفی و شرایط آب‌وهوایی تصادفی ایجاد کنم.
خب چطوری این کارو بکنیم؟
کافیه بگیم دما در موقعیت i برابر باشه با random.Next.
پس بیاید بگیم اینجا از منفی ده تا مثلاً ۴۰ درجه.
این بازه دمایی‌ایه که می‌تونیم داشته باشیم.
conditions و بعد قراره شرایط آب‌وهوایی رو بگیریم که میشه و داخل براکت‌ها مقداردهی می‌کنیم.
یعنی اینجوری.
اینجا داریم یکی از چهار مقدار مختلفی که تعریف کردیم رو به صورت تصادفی اختصاص می‌دیم.
پس می‌تونیم چیزی بین ۰ تا ۳ استفاده کنیم.
کاری که می‌تونیم اینجا انجام بدیم اینه که بگیم random.Next و داخل پرانتز بنویسیم conditions.Length.
خب اینجا چه اتفاقی میفته؟
خیلی چیزا توی همین خط ترکیب شدن.
اینجا داریم چندین مفهوم مختلفی که تا حالا یاد گرفتیم رو هم‌زمان به کار می‌بریم.
توی یک خط.
for اول از همه یه حلقه داریم، درسته؟
و توی این حلقه for به تعداد روزهایی که وارد کردیم تکرار انجام می‌دیم — فرض کنیم ۵ روز وارد کردیم.
خب.
پس برای اون ۵ روز، کاری که انجام می‌دیم اینه: برای روز اول، توی آرایه دما در ایندکس صفر، یه مقدار تصادفی بین منفی ۱۰ تا ۳۹ درجه ذخیره می‌کنیم.
و بعد برای شرایط آب‌وهوایی در همون موقعیت.
یعنی در ایندکس صفر.
هم مقدار تصادفی قرار می‌دیم.
در ایندکس صفر یکی از اون شرایطی که اینجا داریم رو برمی‌داریم.
پس این آرایه رشته‌ای شامل اون چهار شرایطیه که تعریف کردیم.
و ما یکی از اون شرایط رو به صورت تصادفی انتخاب می‌کنیم.
پس ممکنه اینجوری بشه که برنامه بگه هوا ۳۹ درجه‌ست ولی برفیه! خب.
پس برناممون کاملاً تصادفیه.
ولی خب همینطوریه، درسته؟
پس چیزی که اینجا می‌گیم اینه که یه مقدار تصادفی بگیر از بین تعداد شرایطی که داریم، به این روش.
یعنی اینجوری.
نه اینکه مثلاً بگیم بین صفر تا چهار. می‌تونستیم اینجوری هم بنویسیم: 0, 4.
اینطوری هم مقادیر بین صفر، یک، دو و سه رو بهمون می‌داد.
یکی از اون چهار مقدار رو تصادفی برمی‌داشت.
ولی مشکل اینجاست که اگه بعداً تصمیم بگیریم شرایط آب‌وهوایی بیشتری اضافه کنیم چی؟
یا اگه تصمیم بگیریم شرایط برفی رو حذف کنیم، اون‌وقت برناممون کرش می‌کنه.
اگه اینجا اصلاحش نکنیم.
و مشکل اینه که متوجه هم نمی‌شیم باید اصلاحش کنیم چون کامپایلر هیچ خطایی نشون نمی‌ده.
conditions پس به جای این کار، فقط از طول آرایه استفاده می‌کنیم.
یعنی هر چندتا مقدار داخل اون آرایه باشه، همونقدر انتخاب تصادفی می‌تونیم داشته باشیم.
و به همین اندازه می‌تونیم مقدار تصادفی بگیریم.
تمام.
conditions پس می‌تونیم چهار مقدار تصادفی بگیریم چون طولِ چهار هست چون چهار مقدار داره.
اون شامل آفتابی، بارونی، ابری و برفیه.
و حالا ما فقط یکی از اون مقادیر تصادفی رو انتخاب می‌کنیم.
باشه.
حالا بیاید یه بار اجراش کنیم تا ببینیم چه مقادیری دریافت می‌کنیم.
پس من الان اجراش می‌کنم.
فرض کنیم ما پنج روز وارد می‌کنیم که می‌خوایم شبیه‌سازی بشه.
می‌شیم.for بعد وارد این حلقه
درست.
می‌بینیم که دما در موقعیت i برابر صفر یک مقدار تصادفی می‌گیره.
بعد هم این رشته رو ایجاد می‌کنیم.
در این لحظه همه مقادیر فعلاً صفر هستند.
اجازه بدید این متغیر رو ببینم.
نگاه می‌کنم.temperature روی
روی این یکی کلیک می‌کنم.
می‌بینید برای تکرارِ اول دمای تصادفیِ ۳۱ به دست اومد.
حالا اگه این رو چند بار اجرا کنیم
اول از همه الآن یه وضعیت آب‌وهوایی هم داریم.
و وضعیت آب‌وهوایی اول ابری شد.
حالا چند بار اجراش می‌کنم تا مقادیر رو بگیرم.
می‌بینید دوبار ابری شد و یک بار برفی.
و بعدش بارونی شد.
حالا بذار یک بار دیگه اجرا کنم چون گفتم پنج وضعیت آب‌وهوایی خواهم داشت.
پس دوباره همین روند رو تکرار می‌کنم.
و این هم هست.
می‌بینیم داریم: ابری، ابری، برفی، بارونی، برفی.
پس این‌ها مقادیر تصادفی‌ای هستن که حالا به دست آوردیم.
یعنی به نوعی همون شرایط تصادفی.
و دماهایی که به دست آوردیم عبارتند از: -7، 34، -3، 13 و 14.
حالا البته می‌تونید بگید اگر دما زیر صفر بود، وضعیت رو برفی کنید یا چیزهای شبیه به این.
و اگر زیر صفر نبود اجازه ندید همچین چیزی اتفاق بیافته.
اما این کاریه که خوشحال می‌شم خودتون امتحانش کنید.
باید یه دستور if به کد اضافه کنید و بررسی کنید مقدار تصادفی واقعاً چی بوده.
می‌تونید یا یه متغیر جدا براش بسازید و نگهش دارید و از اون برای چک کردن استفاده کنید،
یا می‌تونید مقدار داخل آرایه رو در همون ایندکس بررسی کنید.
در همون موقعیت. پس هر دو روش درست هستن.
پس این نقطه شروع برنامه‌مون بود.
حالا کاری که می‌خوام بعداً انجام بدم اینه که داده‌های هوا رو نمایش بدم؛
یعنی میانگین دما، بیشترین دما، کمترین دما و شایع‌ترین وضعیت آب‌وهوایی.
پس این چیزیه که در ویدیو بعدی راه‌اندازی می‌کنیم.
پس اونجا می‌بینمتون.