در این مطلب، ویدئو نمودارهای حافظه در پایتون با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:22:34
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,880 –> 00:00:03,360
همانطور که برنامه های ما پیچیده
2
00:00:03,360 –> 00:00:05,440
تر می شوند،
3
00:00:05,440 –> 00:00:06,720
پیگیری تمام جزئیات آنها
4
00:00:06,720 –> 00:00:08,960
در ذهنمان دشوارتر می شود، زیرا ما شروع به داشتن توابع زیادی می
5
00:00:08,960 –> 00:00:10,400
کنیم، برخی از آن توابع،
6
00:00:10,400 –> 00:00:12,000
توابع دیگری را فراخوانی می کنند که توابع دیگر را فراخوانی می
7
00:00:12,000 –> 00:00:13,280
کنند و آن توابع
8
00:00:13,280 –> 00:00:13,920
برمی گردند
9
00:00:13,920 –> 00:00:15,519
و برمی گردند و ما باید ردیابی کنید
10
00:00:15,519 –> 00:00:16,960
که به کجا باید برگردیم هر بار
11
00:00:16,960 –> 00:00:19,680
که جزئیات زیادی وجود دارد که
12
00:00:19,680 –> 00:00:21,439
صراحتاً برای انسان ها غیرممکن است که
13
00:00:21,439 –> 00:00:23,039
وقتی برنامه های ما به اندازه کافی پیچیده شوند، آنها را پیگیری کنند،
14
00:00:23,039 –> 00:00:25,279
بنابراین کاری که می
15
00:00:25,279 –> 00:00:27,119
خواهیم انجام دهیم، تکنیکی
16
00:00:27,119 –> 00:00:29,119
برای ردیابی خود یاد می گیریم. برنامه ها با دست
17
00:00:29,119 –> 00:00:31,920
در تلاش برای درک دقیق نحوه
18
00:00:31,920 –> 00:00:33,840
نمایش برنامه ما در حافظه
19
00:00:33,840 –> 00:00:36,880
زیر سرپوش و در انجام این کار به
20
00:00:36,880 –> 00:00:37,360
21
00:00:37,360 –> 00:00:38,640
ما کمک می کنند تا جزئیات خود را پیگیری کنیم،
22
00:00:38,640 –> 00:00:40,719
بنابراین
23
00:00:40,719 –> 00:00:43,200
نحوه ارزیابی یک برنامه بستگی به
24
00:00:43,200 –> 00:00:44,000
25
00:00:44,000 –> 00:00:45,920
پیروی سیستماتیک از قوانینی دارد که زبان ما از
26
00:00:45,920 –> 00:00:47,680
آنها پیروی می کند. بنابراین این به ما کمک می کند
27
00:00:47,680 –> 00:00:48,800
قوانین را
28
00:00:48,800 –> 00:00:51,280
با تمرین
29
00:00:51,280 –> 00:00:52,239
خودمان یاد بگیریم
30
00:00:52,239 –> 00:00:54,000
و برخی از قوانین تعجب آور هستند، بنابراین انجام
31
00:00:54,000 –> 00:00:55,440
این کار به صورت دستی به شما کمک می کند تا بهتر عمل کنید.
32
00:00:55,440 –> 00:00:56,239
درک کنید
33
00:00:56,239 –> 00:00:58,160
و
34
00:00:58,160 –> 00:01:00,079
در شرایط خاص کمتر از آنچه که می خواهید شگفت زده خواهید شد
35
00:01:00,079 –> 00:01:01,840
اگر سعی نکنید و یاد نگیرید که چگونه
36
00:01:01,840 –> 00:01:04,000
این مرحله به مرحله عمل می کند،
37
00:01:04,000 –> 00:01:05,840
زیرا برنامه های شما در حال
38
00:01:05,840 –> 00:01:07,439
ارزیابی هستند، بخش های متحرک زیادی وجود دارد که
39
00:01:07,439 –> 00:01:08,960
دقیقاً خط فعلی کد چیست؟
40
00:01:08,960 –> 00:01:10,400
دنباله فراخوانی های تابع که شما را به
41
00:01:10,400 –> 00:01:11,520
این نقطه رساند که در حال حاضر
42
00:01:11,520 –> 00:01:12,880
نام همه متغیرها و
43
00:01:12,880 –> 00:01:14,240
مقادیر آنها چیست، فقط جزئیات زیادی وجود دارد
44
00:01:14,240 –> 00:01:15,920
وقتی برنامه های غیر پیش پا افتاده
45
00:01:15,920 –> 00:01:17,040
46
00:01:17,040 –> 00:01:18,479
برای انسان ها داریم، بسیار بیشتر از آن است که بتوانیم
47
00:01:18,479 –> 00:01:20,799
نگه داریم. پیگیری اما خبر خوب این است
48
00:01:20,799 –> 00:01:22,240
که ما نمودارهایی را در جیب خود خواهیم داشت
49
00:01:22,240 –> 00:01:24,720
تا این جزئیات را پیگیری
50
00:01:24,720 –> 00:01:26,479
کنیم و بهتر بفهمیم
51
00:01:26,479 –> 00:01:27,920
چه اتفاقی در حال رخ دادن است،
52
00:01:27,920 –> 00:01:28,880
بنابراین میخواهم
53
00:01:28,880 –> 00:01:31,200
وقتی
54
00:01:31,200 –> 00:01:33,600
به وضعیت برنامهای فکر میکنیم از اصطلاحات صحبت کنم. از
55
00:01:33,600 –> 00:01:34,960
مقادیر آن در حافظه،
56
00:01:34,960 –> 00:01:36,799
بنابراین وقتی به محیط یک برنامه فکر می کنیم، مقادیر یا محتویات
57
00:01:36,799 –> 00:01:38,079
موجود در حافظه
58
00:01:38,079 –> 00:01:39,840
چیست
59
00:01:39,840 –> 00:01:41,119
و من از این اصطلاح کمی
60
00:01:41,119 –> 00:01:42,320
متفاوت با آنچه در الگوی بنیادی فکر می کنیم استفاده می کنم
61
00:01:42,320 –> 00:01:44,720
62
00:01:44,720 –> 00:01:46,320
. اجرای داخل
63
00:01:46,320 –> 00:01:48,560
یک محیط به خوبی در داخل یک برنامه
64
00:01:48,560 –> 00:01:50,560
یک برنامه نیز محیط کوچک خود را
65
00:01:50,560 –> 00:01:53,040
دارد و در داخل محیط برنامه
66
00:01:53,040 –> 00:01:54,079
چیزی که می گوییم
67
00:01:54,079 –> 00:01:55,840
محیط برنامه ها نام
68
00:01:55,840 –> 00:01:57,280
هایی است که در برنامه خود داریم
69
00:01:57,280 –> 00:01:59,119
و آنها به آن ملزم هستند. حافظه یا
70
00:01:59,119 –> 00:02:01,360
حالتی که آنها به آن متصل هستند،
71
00:02:01,360 –> 00:02:03,200
بنابراین یک نمودار محیطی قرار است
72
00:02:03,200 –> 00:02:04,560
هر دوی این موارد را ردیابی کند،
73
00:02:04,560 –> 00:02:07,200
هم وضعیت همه ارزشهای ما و
74
00:02:07,200 –> 00:02:07,680
75
00:02:07,680 –> 00:02:09,679
هم محیطی
76
00:02:09,679 –> 00:02:11,599
که نامها چیست و چگونه به
77
00:02:11,599 –> 00:02:12,879
78
00:02:12,879 –> 00:02:14,400
ارزشهای ما متصل میشوند. نحوه
79
00:02:14,400 –> 00:02:16,959
پردازش فراخوانیهای تابع را پیگیری
80
00:02:16,959 –> 00:02:20,640
میکنیم، ما این کار را انجام میدهیم، زیرا بسیار کمک میکند
81
00:02:20,640 –> 00:02:22,840
و من در
82
00:02:22,840 –> 00:02:25,120
سال تحصیلی 2018-2019 زمانی که برای اولین بار
83
00:02:25,120 –> 00:02:26,239
شروع به تمرین آنها کردیم و
84
00:02:26,239 –> 00:02:28,080
آنها را در
85
00:02:28,080 –> 00:02:28,879
دانشآموزانی که
86
00:02:28,879 –> 00:02:30,879
در دوره نهایی از آنها استفاده میکردند، منحرف شدم. امتحان برای
87
00:02:30,879 –> 00:02:32,480
سوالاتی که نیازی به آن
88
00:02:32,480 –> 00:02:34,160
نداشتیم، به عقب برگشتیم و نگاه کردیم و دیدیم کسانی
89
00:02:34,160 –> 00:02:36,000
که سعی کرده اند از نمودار محیطی استفاده کنند
90
00:02:36,000 –> 00:02:38,640
در مقایسه با کسانی که انجام نداده اند 50، آنها
91
00:02:38,640 –> 00:02:39,200
50
92
00:02:39,200 –> 00:02:40,640
کمتر احتمال دارد که در qu خطا داشته باشند.
93
00:02:40,640 –> 00:02:42,160
مقالههایی که از دانشآموزان خواستهایم
94
00:02:42,160 –> 00:02:43,360
از طریق
95
00:02:43,360 –> 00:02:46,480
نحوه عملکرد برخی برنامهها ردیابی کنند،
96
00:02:46,480 –> 00:02:48,720
چیز دیگری که نمودارهای محیطی انجام میدهند
97
00:02:48,720 –> 00:02:50,800
یا نمودارهای حافظه که میشنوید از
98
00:02:50,800 –> 00:02:51,840
هر دوی این اصطلاحات تا حدودی
99
00:02:51,840 –> 00:02:53,280
100
00:02:53,280 –> 00:02:56,560
به جای هم استفاده میکنیم، زیرا آنها به ایجاد زمینه برای
101
00:02:56,560 –> 00:02:58,480
ایدههای پیچیدهتر کمک میکنند.
102
00:02:58,480 –> 00:02:59,920
بعداً در این دوره با آنها مواجه خواهیم شد
103
00:02:59,920 –> 00:03:01,920
و
104
00:03:01,920 –> 00:03:03,519
وقتی اصول مکانیک را در زیر سرپوش داشته باشیم، درک آن ایدههای پیچیده بسیار آسانتر میشود،
105
00:03:03,519 –> 00:03:04,400
106
00:03:04,400 –> 00:03:06,560
107
00:03:06,560 –> 00:03:08,319
ایدههای خاصی مانند بازگشت (Recursion) که
108
00:03:08,319 –> 00:03:10,480
توانایی یک تابع برای فراخوانی خود
109
00:03:10,480 –> 00:03:12,879
است، کاملاً شگفتانگیز است، زمانی که شما این کار را نکنید. واقعاً
110
00:03:12,879 –> 00:03:13,680
111
00:03:13,680 –> 00:03:15,599
مدلی برای نحوه کارکرد این کار و
112
00:03:15,599 –> 00:03:17,200
نحوه پیگیری آن داریم،
113
00:03:17,200 –> 00:03:18,879
اما با نمودارهایمان
114
00:03:18,879 –> 00:03:20,480
راه حل بهتری در آنجا خواهیم داشت، بنابراین زمانی که
115
00:03:20,480 –> 00:03:21,120
اکنون برای
116
00:03:21,120 –> 00:03:23,760
یادگیری اینها سرمایه گذاری می کنیم، سود زیادی را به همراه خواهد داشت،
117
00:03:23,760 –> 00:03:25,760
زیرا سعی می کنیم موضوعات پیچیده تری را یاد بگیریم
118
00:03:25,760 –> 00:03:27,519
. در آینده ای نزدیک، بنابراین
119
00:03:27,519 –> 00:03:29,440
نمودار محیطی چگونه
120
00:03:29,440 –> 00:03:31,280
به نظر می رسد، دو بخش از آن تشکیل خواهد شد و
121
00:03:31,280 –> 00:03:33,360
ما یکی را می بینیم که دارای عناصری است که
122
00:03:33,360 –> 00:03:35,280
امروز در مورد آن بحث نخواهیم کرد، اما به آن خواهیم
123
00:03:35,280 –> 00:03:37,200
رسید در یک نمودار محیطی دو بخش وجود دارد
124
00:03:37,200 –> 00:03:38,879
یا دو ناحیه از
125
00:03:38,879 –> 00:03:40,480
حافظه که معمولاً نگران آن
126
00:03:40,480 –> 00:03:41,599
127
00:03:41,599 –> 00:03:43,360
هستیم، پشته فراخوانی شامل
128
00:03:43,360 –> 00:03:44,799
توابعی است که ما با آنها کار می کنیم در
129
00:03:44,799 –> 00:03:46,080
متغیرهای آنها
130
00:03:46,080 –> 00:03:49,280
و پشته حاوی چیزی است که ما
131
00:03:49,280 –> 00:03:49,599
132
00:03:49,599 –> 00:03:51,599
اشیاء یا اشیاء می نامیم. انواع مرجع از جمله
133
00:03:51,599 –> 00:03:54,080
تعاریف تابع ما از جمله
134
00:03:54,080 –> 00:03:56,239
لیست رشته ها و مواردی از این قبیل
135
00:03:56,239 –> 00:03:57,519
بسیار خوب است، بنابراین ما برمی گردیم و
136
00:03:57,519 –> 00:03:59,200
این مناطق را با عمق بیشتری در یک لحظه مورد بحث قرار می
137
00:03:59,200 –> 00:04:01,519
138
00:04:01,519 –> 00:04:03,280
دهیم و زمانی که به سمت استفاده از اشیاء پیچیده تر حرکت می کنیم، زمان بیشتری را روی پشته صرف می کنیم.
139
00:04:03,280 –> 00:04:04,560
140
00:04:04,560 –> 00:04:06,879
مانند لیست
141
00:04:06,879 –> 00:04:09,040
هایی که می توانند مقادیر زیادی از هر نوع را به
142
00:04:09,040 –> 00:04:10,560
درستی ذخیره کنند، آنها دنباله ای مانند یک رشته
143
00:04:10,560 –> 00:04:11,920
به عنوان یک دنباله هستند، اما به ما اجازه می دهند
144
00:04:11,920 –> 00:04:12,879
چیزهایی را که
145
00:04:12,879 –> 00:04:15,840
بزرگتر از کاراکترها هستند در یک ترتیب متوالی ذخیره
146
00:04:15,840 –> 00:04:17,199
147
00:04:17,199 –> 00:04:19,680
148
00:04:20,639 –> 00:04:22,079
کنیم. ما تقریباً در حال
149
00:04:22,079 –> 00:04:24,080
تقریب چیزی هستیم که واقعاً در پشت صحنه اتفاق میافتد،
150
00:04:24,080 –> 00:04:26,080
جزئیاتی وجود دارد که در حال
151
00:04:26,080 –> 00:04:27,600
پنهان کردن آنها هستیم، مواردی وجود دارد که دستمان
152
00:04:27,600 –> 00:04:28,000
153
00:04:28,000 –> 00:04:29,840
را تکان میدهیم و به نوعی از نزدیک نگاه نمیکنیم
154
00:04:29,840 –> 00:04:31,280
یا خیلی نزدیک فکر نمیکنیم.
155
00:04:31,280 –> 00:04:32,080
156
00:04:32,080 –> 00:04:33,840
همانطور که به سفر علم کامپیوتر خود ادامه
157
00:04:33,840 –> 00:04:35,600
می دهید، برخی از آن چیزها را کشف خواهید کرد،
158
00:04:35,600 –> 00:04:36,320
159
00:04:36,320 –> 00:04:38,320
اما ما سعی می کنیم سطحی از
160
00:04:38,320 –> 00:04:40,720
انتزاع را انتخاب کنیم
161
00:04:40,720 –> 00:04:42,639
که برای درک بهتر نحوه عملکرد
162
00:04:42,639 –> 00:04:44,240
برنامه های ما در
163
00:04:44,240 –> 00:04:46,479
واقع خوب باشد، بنابراین بیایید این
164
00:04:46,479 –> 00:04:47,919
مثال خاص را تصور کنیم.
165
00:04:47,919 –> 00:04:50,320
ما دو تابع داریم که به
166
00:04:50,320 –> 00:04:51,120
دنبال آن
167
00:04:51,120 –> 00:04:53,360
یک فراخوانی به main تعریف شده است، بنابراین تابع اول
168
00:04:53,360 –> 00:04:55,199
اصلی است و توجه داشته باشید که نوع برگشتی
169
00:04:55,199 –> 00:04:56,240
ندارد،
170
00:04:56,240 –> 00:04:59,199
بنابراین یک رویه است و تابع دوم
171
00:04:59,199 –> 00:04:59,759
172
00:04:59,759 –> 00:05:02,639
f است و دارای یک پارامتر و یک
173
00:05:02,639 –> 00:05:03,759
نوع بازگشتی int است.
174
00:05:03,759 –> 00:05:06,000
و سپس فراخوانی به main در خط 12 رخ می دهد
175
00:05:06,000 –> 00:05:07,039
.
176
00:05:07,039 –> 00:05:08,960
اکنون همانطور که قبلاً به طور معمول
177
00:05:08,960 –> 00:05:10,639
در یک برنامه پایتون نگاه
178
00:05:10,639 –> 00:05:12,400
کردیم، باید یک عبارت if را در اینجا داشته باشیم مانند
179
00:05:12,400 –> 00:05:16,000
if and then double underscore name
180
00:05:16,000 –> 00:05:18,800
underscore نام برابر است و سپس
181
00:05:18,800 –> 00:05:20,000
underscore اصلی
182
00:05:20,000 –> 00:05:23,280
سمت راست است بنابراین این اصطلاح در پایتون برای
183
00:05:23,280 –> 00:05:25,360
ساختن برنامه ای که هم به عنوان یک
184
00:05:25,360 –> 00:05:27,039
برنامه قابل اجرا است، بلکه می توانید
185
00:05:27,039 –> 00:05:28,800
توابع آن را وارد کنید و به
186
00:05:28,800 –> 00:05:30,240
طور خودکار شروع به اجرا نمی کند،
187
00:05:30,240 –> 00:05:32,639
ما معمولاً از آن اصطلاح استفاده می کنیم، اما
188
00:05:32,639 –> 00:05:33,520
او ما میگوییم بسیار
189
00:05:33,520 –> 00:05:35,039
خوب، هرگز فرض
190
00:05:35,039 –> 00:05:36,160
نمیکنیم که شما این توابع را در
191
00:05:36,160 –> 00:05:37,120
جای دیگری وارد میکنید،
192
00:05:37,120 –> 00:05:38,639
بنابراین از آن اصطلاح استفاده نمیکنیم و
193
00:05:38,639 –> 00:05:40,320
این واقعاً برای سادهسازی
194
00:05:40,320 –> 00:05:40,880
195
00:05:40,880 –> 00:05:42,800
مثال ردیابی ما در اینجا است، بنابراین ما فقط میخواهیم
196
00:05:42,800 –> 00:05:44,560
هنگامی که به خط 12 رسیدیم main را فراخوانی
197
00:05:44,560 –> 00:05:46,080
کنید، بنابراین ما می خواهیم
198
00:05:46,080 –> 00:05:47,840
این مثال را با استفاده از
199
00:05:47,840 –> 00:05:48,960
نمودار محیطی
200
00:05:48,960 –> 00:05:51,680
گام به گام ردیابی کنیم و کاری که انجام می دهیم این است که
201
00:05:51,680 –> 00:05:53,759
یاد می گیریم چگونه یک فریم برای اصلی
202
00:05:53,759 –> 00:05:55,600
ایجاد کنیم، برخی از آنها را ایجاد خواهیم کرد. متغیرهای محلی
203
00:05:55,600 –> 00:05:57,120
را یاد می گیریم که چگونه یک تابع
204
00:05:57,120 –> 00:06:00,160
و این نوع چیزها را فراخوانی
205
00:06:00,160 –> 00:06:02,000
کنیم، بنابراین کاری که می خواهیم انجام دهیم این است که مستقیماً
206
00:06:02,000 –> 00:06:04,080
به آن بپریم و برای این اسلایدها از
207
00:06:04,080 –> 00:06:06,000
پس زمینه سفید استفاده می کنم تا اگر می خواهید خودتان
208
00:06:06,000 –> 00:06:07,919
تمرین کنید میتوانید این اسلاید مثال را چاپ کنید
209
00:06:07,919 –> 00:06:09,919
210
00:06:09,919 –> 00:06:12,960
و شروع به ردیابی آن روی کاغذ کنید،
211
00:06:12,960 –> 00:06:15,520
در غیر این صورت، اگر این اسلاید را چاپ کنید،
212
00:06:15,520 –> 00:06:16,479
213
00:06:16,479 –> 00:06:18,160
توصیه میکنم همراه با مداد و کاغذ دنبال کنید
214
00:06:18,160 –> 00:06:20,960
و در واقع هر مرحله را بنویسید،
215
00:06:20,960 –> 00:06:23,520
بنابراین وقتی یک ماژول پایتون ارزیابی میکند، ما
216
00:06:23,520 –> 00:06:25,120
از بالا شروع میکنیم
217
00:06:25,120 –> 00:06:27,680
و برای که ارزیابی ماژول داده شده ما
218
00:06:27,680 –> 00:06:30,400
فرض می کنیم من که گلوبالهای ما خالی
219
00:06:30,400 –> 00:06:33,919
هستند، در واقع چیزهای رزرو شده خاصی
220
00:06:33,919 –> 00:06:35,520
در اینجا تنظیم شدهاند که پایتون
221
00:06:35,520 –> 00:06:36,560
در پسزمینه انجام میدهد، مانند
222
00:06:36,560 –> 00:06:38,560
متغیر نام خط دوگانه ما و
223
00:06:38,560 –> 00:06:39,759
برخی چیزهای خاص دیگر،
224
00:06:39,759 –> 00:06:42,160
اما آنها مختص پایتون هستند و
225
00:06:42,160 –> 00:06:43,840
ما نگران نخواهیم بود. در مورد تلاش برای
226
00:06:43,840 –> 00:06:44,639
نشان دادن آنها
227
00:06:44,639 –> 00:06:47,280
در این نمودارها بسیار خوب است، بنابراین
228
00:06:47,280 –> 00:06:48,880
برخی داخلی های داخلی دیگر مانند برخی از توابع
229
00:06:48,880 –> 00:06:50,720
وجود دارد که مانند
230
00:06:50,720 –> 00:06:52,240
چاپ از قبل در این مرحله از نظر فنی تعریف شده است،
231
00:06:52,240 –> 00:06:53,680
اما ما
232
00:06:53,680 –> 00:06:55,280
نگران داخلی ها نیستیم، بلکه فقط تمرکز کرده ایم. در مورد
233
00:06:55,280 –> 00:06:56,880
آنچه که برای برنامه ما مهم است، به
234
00:06:56,880 –> 00:06:58,560
ویژه
235
00:06:58,560 –> 00:07:00,400
هنگامی که با یک تعریف تابع
236
00:07:00,400 –> 00:07:03,440
مواجه می شویم، نام آن را می گیریم
237
00:07:03,440 –> 00:07:06,639
و نام آن را در هر جایی که در حال حاضر فریم فعلی خود در پشته هستیم، نام آن را به جریان خود متصل
238
00:07:06,639 –> 00:07:09,120
می کنیم
239
00:07:09,120 –> 00:07:11,039
، بنابراین
240
00:07:11,039 –> 00:07:14,400
آن را یک فریم می نامیم و هر فریم دارای یک فریم
241
00:07:14,400 –> 00:07:16,880
است. a uh دارای زمینه ای است
242
00:07:16,880 –> 00:07:18,479
که در این قاب با آن مرتبط است، این فریم فریم globals
243
00:07:18,479 –> 00:07:19,360
است
244
00:07:19,360 –> 00:07:21,520
و در داخل فریم هر نامی
245
00:07:21,520 –> 00:07:23,039
که تعریف می کنیم مانند هر تابعی که
246
00:07:23,039 –> 00:07:23,440
تعریف
247
00:07:23,440 –> 00:07:25,599
می کنیم در اینجا محدود می شود. اگر باید
248
00:07:25,599 –> 00:07:27,599
ثابت های نامگذاری شده را پیدا می کردیم، آنها
249
00:07:27,599 –> 00:07:28,880
نیز در اینجا مقید می شوند و در مثال آینده به این موضوع نگاه می
250
00:07:28,880 –> 00:07:30,960
کنیم که در
251
00:07:30,960 –> 00:07:33,520
اینجا داریم این
252
00:07:33,520 –> 00:07:34,000
تابع اصلی را
253
00:07:34,000 –> 00:07:37,199
که به آن مقید شده ایم تعریف می کنیم و فعلاً داریم
254
00:07:37,199 –> 00:07:38,479
می رویم برای
255
00:07:38,479 –> 00:07:41,120
نشان دادن تعریف این
256
00:07:41,120 –> 00:07:41,759
تابع
257
00:07:41,759 –> 00:07:44,639
به این صورت که می گوییم در یک کادر روی پشته می نویسیم
258
00:07:44,639 –> 00:07:45,759
و سپس آن را
259
00:07:45,759 –> 00:07:48,960
برای تابع برچسب fn می زنیم و سپس آن را خطوط یک
260
00:07:48,960 –> 00:07:50,639
تا چهار قرار می دهیم، بنابراین اگر می خواستیم
261
00:07:50,639 –> 00:07:51,919
262
00:07:51,919 –> 00:07:55,039
بفهمیم که این چه کار می کند این شی چیست؟
263
00:07:55,039 –> 00:07:56,960
روی پشته در واقع به خوبی اشاره دارد، این
264
00:07:56,960 –> 00:07:58,639
تابعی است که در خطوط یک تا چهار تعریف شده است
265
00:07:58,639 –> 00:07:59,520
266
00:07:59,520 –> 00:08:02,879
که اینها بسیار عالی هستند، بنابراین
267
00:08:02,879 –> 00:08:04,560
ما این تعریف تابع اصلی را داریم و بنابراین
268
00:08:04,560 –> 00:08:06,000
اکنون نام main
269
00:08:06,000 –> 00:08:07,919
در برنامه ما معنی دارد، ما
270
00:08:07,919 –> 00:08:10,840
آن را تعریف کردیم و ما آن را تعریف کردیم. ve آن را به درستی مقید کرد،
271
00:08:10,840 –> 00:08:13,520
همان چیزی که با f راست
272
00:08:13,520 –> 00:08:14,960
تفاوتی بین این دو چیز وجود ندارد، ما
273
00:08:14,960 –> 00:08:16,479
تابعی به نام f تعریف می کنیم، بنابراین اکنون
274
00:08:16,479 –> 00:08:17,120
تابع
275
00:08:17,120 –> 00:08:19,520
اکنون نام f به این
276
00:08:19,520 –> 00:08:20,800
تعریف
277
00:08:20,800 –> 00:08:23,120
تابع که از خطوط هفت تا نه را باز می کند، کاملاً
278
00:08:23,120 –> 00:08:25,120
درست است، بنابراین اکنون اگر از آن استفاده کنیم نام
279
00:08:25,120 –> 00:08:26,960
f بعد در حرفه ای ما gram ما می دانیم که
280
00:08:26,960 –> 00:08:28,400
ما در مورد این تابع صحبت می کنیم
281
00:08:28,400 –> 00:08:31,919
که در خطوط 7 تا 9 تعریف شده است.
282
00:08:31,919 –> 00:08:34,159
اتفاق بعدی که بعد از
283
00:08:34,159 –> 00:08:36,320
خواندن این دو تعریف رخ می دهد و به یاد داشته باشید
284
00:08:36,320 –> 00:08:37,760
که ما در واقع آن
285
00:08:37,760 –> 00:08:40,320
توابع را هنوز در خط 12 فراخوانی نکرده ایم و وقتی به آن
286
00:08:40,320 –> 00:08:41,200
می رسیم هستیم. خط
287
00:08:41,200 –> 00:08:43,839
12 اما در این مرحله ما فقط
288
00:08:43,839 –> 00:08:45,040
این تعاریف را ارزیابی کردیم، بنابراین این
289
00:08:45,040 –> 00:08:46,720
دستور العمل ها را برای برنامه های فرعی
290
00:08:46,720 –> 00:08:49,440
در پشته خود ذخیره کرده ایم
291
00:08:49,440 –> 00:08:51,279
و زمانی که
292
00:08:51,279 –> 00:08:53,200
به این فراخوانی به اصلی
293
00:08:53,200 –> 00:08:56,240
می رسیم، آنها به نام های موجود در پشته فراخوانی متصل می شوند. اصلی است آیا
294
00:08:56,240 –> 00:08:57,279
ما حتی می دانیم که اصلی
295
00:08:57,279 –> 00:08:59,360
چیست و بنابراین باید از فرآیندی
296
00:08:59,360 –> 00:09:01,279
به نام وضوح نام استفاده کنیم
297
00:09:01,279 –> 00:09:02,720
و با وضوح نام می گوییم بیایید به
298
00:09:02,720 –> 00:09:05,279
فریم فعلی خود در پشته نگاه کنیم
299
00:09:05,279 –> 00:09:07,920
و همه می دانیم که جهانی ها تنها
300
00:09:07,920 –> 00:09:09,120
فریم روی پشته است. «به
301
00:09:09,120 –> 00:09:09,600
302
00:09:09,600 –> 00:09:13,040
درستی به جهانیها نگاه
303
00:09:16,000 –> 00:09:18,560
میکنیم و میپرسیم آیا نام اصلی در
304
00:09:18,560 –> 00:09:20,480
جهانیها یافت میشود و بله در جهانیها یافت میشود
305
00:09:20,480 –> 00:09:23,120
و به تابعی که
306
00:09:23,120 –> 00:09:24,399
307
00:09:24,399 –> 00:09:26,399
در خطوط یک تا چهار به سمت راست تعریف شده است، محدود میشود، بنابراین
308
00:09:26,399 –> 00:09:27,920
این تابعی است که به آن اشاره
309
00:09:27,920 –> 00:09:29,440
میکنیم و ما بدان که چون نام کاملاً
310
00:09:29,440 –> 00:09:32,160
با آن مرتبط شده است،
311
00:09:32,160 –> 00:09:34,560
بنابراین کار بعدی که ما
312
00:09:34,560 –> 00:09:36,480
در یک سؤال در اینجا انجام خواهیم داد، قبل از
313
00:09:36,480 –> 00:09:37,600
اینکه به این فراخوانی تابع وارد شویم، اجازه دهید
314
00:09:37,600 –> 00:09:38,640
به یک موضوع
315
00:09:38,640 –> 00:09:40,240
بپردازیم که چرا این فراخوانی های تابع را به
316
00:09:40,240 –> 00:09:42,160
اصلی داریم در در پایان برنامه های ما و
317
00:09:42,160 –> 00:09:43,440
این حتی در مثال هشت توپی
318
00:09:43,440 –> 00:09:44,880
که در آن اگر نام
319
00:09:44,880 –> 00:09:45,680
برابر با main است
320
00:09:45,680 –> 00:09:48,160
و سپس main را به خوبی فراخوانی می کنیم نیز صادق بود، به دلیل این
321
00:09:48,160 –> 00:09:49,920
پدیده دقیقاً که ما نیاز
322
00:09:49,920 –> 00:09:51,680
به تعریف این نام ها
323
00:09:51,680 –> 00:09:53,279
داریم، باید توابع خود را تعریف کنیم.
324
00:09:53,279 –> 00:09:54,959
قبل از اینکه واقعاً برویم و شروع به
325
00:09:54,959 –> 00:09:57,680
ارزیابی عملکرد اصلی خود کنیم،
326
00:09:57,680 –> 00:10:00,560
اگر این فراخوانی را به main up بالای
327
00:10:00,560 –> 00:10:02,560
تعریف
328
00:10:02,560 –> 00:10:04,320
درست می نوشتیم، برنامه
329
00:10:04,320 –> 00:10:05,680
ابتدا قبل از رسیدن به تعریف، این را ارزیابی می کرد
330
00:10:05,680 –> 00:10:06,560
331
00:10:06,560 –> 00:10:08,800
و نام main
332
00:10:08,800 –> 00:10:10,160
به هیچ چیز در پشته فراخوانی محدود نمی شد. و
333
00:10:10,160 –> 00:10:11,279
ممکن بود یک خطای تفکیک نام داشته باشیم،
334
00:10:11,279 –> 00:10:13,040
بنابراین دلیل
335
00:10:13,040 –> 00:10:15,600
اینکه ما فراخوانی اصلی را در انتهای
336
00:10:15,600 –> 00:10:19,440
آن قرار می دهیم این است
337
00:10:19,440 –> 00:10:21,120
که بتوانیم قبل از ارزیابی درست، توابع خود را تعریف کنیم.
338
00:10:21,120 –> 00:10:23,279
وقتی به یک فراخوانی تابع می رسیم چه اتفاقی می افتد
339
00:10:23,279 –> 00:10:24,800
و
340
00:10:24,800 –> 00:10:26,720
این مهمترین مجموعه مراحل برای این
341
00:10:26,720 –> 00:10:28,000
ویدیو است
342
00:10:28,000 –> 00:10:29,200
که دو بار
343
00:10:29,200 –> 00:10:31,040
آن را می بینیم زیرا تابع f را نیز صدا می زنیم،
344
00:10:31,040 –> 00:10:33,040
بنابراین وقتی به یک فراخوانی تابع رسیدید ابتدا
345
00:10:33,040 –> 00:10:35,040
بررسی کنید که آیا این تابع حتی وجود دارد
346
00:10:35,040 –> 00:10:37,040
و مطمئناً این کار را انجام داده است، پس کاری که
347
00:10:37,040 –> 00:10:38,240
میخواهیم انجام دهیم این است که
348
00:10:38,240 –> 00:10:38,880
یک فریم
349
00:10:38,880 –> 00:10:40,399
به پشته تماس خود اضافه میکنیم، بنابراین کاری که در
350
00:10:40,399 –> 00:10:42,480
اینجا انجام میدهیم این است که این فریم را اضافه
351
00:10:42,480 –> 00:10:43,839
میکنیم و فریم را
352
00:10:43,839 –> 00:10:45,200
هر نامی که تابع بود برچسب گذاری می کنیم، بنابراین در
353
00:10:45,200 –> 00:10:47,040
این مورد اصلی بود،
354
00:10:47,040 –> 00:10:48,880
ما در آدرس برگشتی می نویسیم
355
00:10:48,880 –> 00:10:50,800
که خط کدی
356
00:10:50,800 –> 00:10:52,880
است که فراخوانی تابع در سمت راست ارزیابی می شود،
357