WEBVTT

00:00.110 --> 00:00.890
دوباره خوش اومدی.

00:00.890 --> 00:07.850
توی این ویدیو می‌خوایم از structها استفاده کنیم تا یه پروژه کوچیک بسازیم و درواقع struct مربوط به point که قبلاً ساختیم رو بهترش کنیم

00:07.850 --> 00:13.250
با اضافه کردن یه method که بتونه فاصله بین دو نقطه رو حساب کنه.

00:13.250 --> 00:17.600
اما قبل از اینکه این کار رو بکنیم، یه چیز دیگه هست که تو ویدیو قبل نگفتم و می‌خوام الان اضافه‌اش کنم،

00:17.600 --> 00:23.120
اونم اینه که معمولاً توی structها مرسومه که اون‌ها رو immutable بسازیم، یعنی فیلدها رو به صورت read only تعریف کنیم و فقط get accessor داشته باشیم.

00:23.120 --> 00:25.730
و setter نداشته باشیم.

00:25.730 --> 00:32.640
خب، یعنی الان می‌خوام propertyهای اصلی‌م رو اینطوری تنظیم کنم.

00:32.640 --> 00:36.960
و مطمئن شم که setterها حذف شدن.

00:36.960 --> 00:39.150
یعنی فقط getter دارم.

00:39.180 --> 00:39.780
خب.

00:39.780 --> 00:45.390
در نتیجه، مشخصه که این کدی که اینجا دارم دیگه کار نمی‌کنه.

00:45.390 --> 00:53.460
پس باید مطمئن شم که مقادیر رو مستقیماً موقع مقداردهی اولیه تنظیم کنم.

00:53.460 --> 01:00.620
اینجا مثلاً new point دو، می‌تونه بشه 20 و 30. خب.

01:00.620 --> 01:03.530
حالا چطور این دو تا method جالب رو اضافه کنیم؟

01:03.530 --> 01:06.890
اولین کاری که کمک زیادی می‌کنه اینه که همه‌چیز رو double کنیم.

01:06.890 --> 01:12.830
چون وقتی داری تفاوت یا فاصله حساب می‌کنی، معمولاً عددها صحیح درنمیان یا خیلی به ندرت صحیح می‌شن.

01:12.830 --> 01:14.030
پس بهتره double باشن.

01:14.030 --> 01:21.390
پس مطمئن می‌شیم که همه چی double باشه و بقیه قسمت‌ها همون‌طور باقی بمونه.

01:21.870 --> 01:31.470
حالا یه method می‌نویسیم به اسم public double DistanceTo که یه point به عنوان ورودی می‌گیره.

01:31.470 --> 01:32.520
و اسمش رو می‌ذارم other، باشه؟

01:32.520 --> 01:35.130
و این method قراره برگردونه...

01:35.130 --> 01:39.120
خب درواقع بیشتر از فقط x لازمه، IDE حرف خوبی زد ولی کافی نیست.

01:39.120 --> 01:44.510
پس یه متغیر می‌سازم double dx که برابر باشه با other.x منهای x خودش و یه double dy،

01:44.510 --> 01:55.940
که برابر باشه با other.y منهای y خودش.

01:55.940 --> 02:06.230
و نتیجه می‌شه ریشه دومِ حاصل جمع مربع این دوتا. یعنی از math.sqrt استفاده می‌کنیم برای dx*dx به اضافه dy*dy.

02:06.230 --> 02:06.990
خب.

02:06.990 --> 02:12.300
اگه مطمئن نیستی اینجا چی شد، فاصله بین دو نقطه همون طول خطیه که اون دو نقطه رو توی یه صفحه به هم وصل می‌کنه.

02:12.300 --> 02:15.300
فرمولش معمولاً اینطوریه که فاصله بین دو نقطه برابر با...

02:15.300 --> 02:18.900
ریشه دوم مجموع مربع تفاضل مختصات‌های اون‌هاست.

02:18.900 --> 02:21.510
پس داریم توی ریشه دوم جمع دو مقدار.

02:21.510 --> 02:22.200
اون دو مقدار چی‌ان؟

02:22.200 --> 02:26.730
اولی مربّع فاصله محور xهاست.

02:26.730 --> 02:27.780
یعنی x1 منهای x2.

02:27.780 --> 02:33.110
و دومی فاصله محور yهاست، یعنی y2 منهای y1، اونم به توان دو.

02:33.110 --> 02:44.120
و از جمع این دوتا، ریشه دوم می‌گیریم که همون فاصله می‌شه.

02:44.120 --> 02:52.700
این چیزیه که فکر کنم توی ریاضی نهم یا هشتم یا شاید دهم یاد می‌دن.

02:52.700 --> 02:57.180
البته بستگی داره کجای دنیا زندگی می‌کنی و چه نوع مدرسه‌ای میری.

02:57.180 --> 02:57.900
توی آلمان مثلاً سه نوع مدرسه هست.

02:57.900 --> 03:02.010
تو Hauptschule فک کنم می‌رسن بهش توی نهم، اگه اصلاً برسن.

03:02.010 --> 03:03.450
ولی توی Gymnasium احتمالاً زودتر یادش می‌دن، مثلاً هشتم.

03:03.450 --> 03:07.560
شاید حتی زودتر. دقیق نمی‌دونم، یه همچین چیزی.

03:07.560 --> 03:11.490
پس اینطوری فاصله حساب می‌شه. حالا بریم ببینیم چطوری استفاده‌اش کنیم.

03:11.490 --> 03:18.630
فرض کن بخوایم فاصله بین P1 و P2 رو ببینیم.

03:18.630 --> 03:23.120
پس یه متغیر double به اسم distance می‌سازیم و مقدارش رو می‌ذاریم برابر با p1.DistanceTo(p2).

03:23.150 --> 03:31.730
خب.

03:31.760 --> 03:32.480
و حالا فقط می‌نویسیمش روی Console.

03:32.480 --> 03:36.110
می‌گیم "فاصله بین نقاط" و بعد مقدار distance.

03:36.110 --> 03:46.170
و یه چیزی که تا حالا ندیدیم اینه که می‌خوام فقط دو رقم بعد از ممیز نمایش داده بشه.

03:46.170 --> 03:47.550
ببینیم چه شکلی درمیاد.

03:47.550 --> 03:50.970
می‌بینی که فاصله اینجا شده 14.14.

03:50.970 --> 03:54.060
اگه دقت کنی، فاصله روی محور x دهه و روی محور y هم ده.

03:54.060 --> 04:05.850
ده به توان دو می‌شه صد، جمعشون می‌شه دویست.

04:05.850 --> 04:11.420
و ریشه دوم دویست می‌شه همون حدود 14.14.

04:11.420 --> 04:13.580
احتمالاً این عدد رو قبلاً دیدی چون همون ریشه دوم دوئه.

04:13.580 --> 04:15.950
یعنی 1.414.

04:15.950 --> 04:17.900
خب.

04:17.900 --> 04:21.140
حالا می‌تونیم از عددهای پیچیده‌تر هم استفاده کنیم.

04:21.140 --> 04:29.840
بیاین P3 رو حذف کنیم، ولی ایده کلی همونه.

04:29.840 --> 04:31.220
شاید از خودت بپرسی F2 یعنی چی.

04:31.220 --> 04:35.160
درواقع یعنی float با دو رقم بعد از ممیز.

04:35.400 --> 04:36.840
داریم می‌گیم بعد از ممیز دو رقم نشون بده.

04:36.840 --> 04:39.750
می‌تونم بذارمش روی سه تا رقم.

04:39.750 --> 04:50.220
اون‌وقت می‌بینیم مقدار دقیق‌تر می‌شه، مثلاً 14.142.

04:50.220 --> 04:52.440
یعنی داریم نزدیک‌تر می‌شیم به مقدار واقعی ریشه دوم.

04:52.470 --> 04:56.520
می‌تونی بگی خب من جزئیات بیشتری می‌خوام، بذار تا پنج رقم.

04:56.520 --> 04:59.180
اون‌وقت می‌شه 14.14214 بعد از ممیز.

04:59.180 --> 05:06.050
یعنی پنج رقم بعد از ممیز.

05:06.050 --> 05:10.610
خب، اینم از مثال کوچیک ما که بهمون اجازه می‌ده فاصله بین دو نقطه رو حساب کنیم.

05:10.610 --> 05:17.630
دیگه همین بود کل ماجرا.

05:17.630 --> 05:19.280
خب، اینم از این ویدیو.

05:19.280 --> 05:21.500
توی ویدیو بعدی می‌بینمت.
