1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
1
00:00:00,000 --> 00:00:05,587

2
00:00:05,587 --> 00:00:07,670
DOUG لويد: إذا كنت قد رأيت
الفيديو على العودية،

3
00:00:07,670 --> 00:00:10,170
قد يكون العملية برمتها
بدا السحرية قليلا.

4
00:00:10,170 --> 00:00:10,930
كيف تعمل؟

5
00:00:10,930 --> 00:00:15,010
كيف وظائف يعرفون أنهم
في حاجة إلى الانتظار والانتظار لقيمة أخرى

6
00:00:15,010 --> 00:00:19,150
للعودة من وظيفة مختلفة
دعوة من أجل الحصول على النتيجة التي نريدها؟

7
00:00:19,150 --> 00:00:22,550
>> حسنا، والسبب يعمل هذا لأن
من ما يعرف باسم مكدس الاستدعاءات.

8
00:00:22,550 --> 00:00:26,360
عند استدعاء الدالة،
يحدد نظام جانبا مساحة في الذاكرة

9
00:00:26,360 --> 00:00:28,120
لذلك وظيفة للقيام بعملها.

10
00:00:28,120 --> 00:00:31,720
ونحن نطلق على هذه أجزاء من الذاكرة التي
يتم تخصيص لكل وظيفة

11
00:00:31,720 --> 00:00:35,670
استدعاء إطار مكدس أو إطار وظيفة.

12
00:00:35,670 --> 00:00:38,290
وكما قد تتوقع،
هذه الأطر كومة

13
00:00:38,290 --> 00:00:41,000
يعيش على الجزء كومة من الذاكرة.

14
00:00:41,000 --> 00:00:43,960

15
00:00:43,960 --> 00:00:47,540
>> أكثر من وظيفة واحدة إطار مكدس
يمكن أن توجد في الذاكرة في وقت معين.

16
00:00:47,540 --> 00:00:51,240
إذا يدعو الرئيسي وظيفة الخطوة،
ويدعو حركة الاتجاه،

17
00:00:51,240 --> 00:00:54,460
جميع الوظائف الثلاث الإطارات المفتوحة.

18
00:00:54,460 --> 00:00:57,350
لكنهم لا جميعا الإطارات النشطة.

19
00:00:57,350 --> 00:00:59,410
يتم ترتيب هذه الأطر في كومة.

20
00:00:59,410 --> 00:01:01,820
والإطار من
دعا مؤخرا

21
00:01:01,820 --> 00:01:04,390
الوظيفة هي دائما على قمة المكدس.

22
00:01:04,390 --> 00:01:07,150
وهذا هو دائما الإطار النشط.

23
00:01:07,150 --> 00:01:10,420
هناك في الواقع سوى واحد من أي وقت مضى
وظيفة هذا نشطة في وقت واحد.

24
00:01:10,420 --> 00:01:12,420
انها واحدة على رأس المكدس.

25
00:01:12,420 --> 00:01:17,620
>> عندما تدعو وظيفة أخرى
وظيفة، فإنه نوع من يضغط وقفة.

26
00:01:17,620 --> 00:01:20,590
انها نوع من قيد الانتظار، والانتظار.

27
00:01:20,590 --> 00:01:24,050
ويتم الضغط إطار مكدس أخرى
إلى المكدس على أعلى من ذلك.

28
00:01:24,050 --> 00:01:26,150
وأن يصبح الإطار النشط.

29
00:01:26,150 --> 00:01:28,600
والإطار فورا
أقل من ذلك يحتاج الى الانتظار

30
00:01:28,600 --> 00:01:33,560
حتى أنه مرة أخرى الإطار النشط
قبل أن تتمكن من استئناف عملها.

31
00:01:33,560 --> 00:01:35,870
عندما الوظيفة
كاملة وانها فعلت،

32
00:01:35,870 --> 00:01:37,720
وبرزت إطاره إيقاف المكدس.

33
00:01:37,720 --> 00:01:38,950
هذا المصطلح.

34
00:01:38,950 --> 00:01:41,110
والإطار فورا
أقل من ذلك، كما أسلفت،

35
00:01:41,110 --> 00:01:42,880
يصبح الإطار النشط الجديد.

36
00:01:42,880 --> 00:01:45,960
>> وإذا كان يدعو وظيفة أخرى،
انها سوف توقف مرة أخرى.

37
00:01:45,960 --> 00:01:49,290
سوف إطار مكدس تلك الوظيفة الجديدة
يتم دفعها على الجزء العلوي من المكدس.

38
00:01:49,290 --> 00:01:50,650
انها سوف تقوم بعملها.

39
00:01:50,650 --> 00:01:52,100
قد البوب ​​التراجع.

40
00:01:52,100 --> 00:01:55,630
وظيفة أخرى
دون أن تتمكن من استئناف مرة أخرى.

41
00:01:55,630 --> 00:02:00,080
>> لذلك دعونا نذهب من خلال هذا مرة أخرى، وتبحث
على فكرة وظيفة عاملية

42
00:02:00,080 --> 00:02:03,070
أننا المحددة في
العودية الفيديو لرؤية

43
00:02:03,070 --> 00:02:07,770
بالضبط كيف السحر وراء هذا
تتخذ عملية متكررة مكان.

44
00:02:07,770 --> 00:02:09,870
لذلك هذا هو ملف لدينا كامل، أليس كذلك؟

45
00:02:09,870 --> 00:02:14,000
حددنا اثنين
functions-- الرئيسية والواقع.

46
00:02:14,000 --> 00:02:15,980
وكما يمكن أن نتوقع،
أي برنامج C يسير

47
00:02:15,980 --> 00:02:18,470
أن تبدأ في السطر الأول من الصفحة الرئيسية.

48
00:02:18,470 --> 00:02:21,660
>> لذلك نحن خلق إطار مكدس جديد للرئيسية.

49
00:02:21,660 --> 00:02:23,320
وانها سوف تبدأ تشغيل.

50
00:02:23,320 --> 00:02:25,270
دعوات الرئيسية printf.

51
00:02:25,270 --> 00:02:29,390
وprintf هو الذهاب الى
طباعة مضروب 5.

52
00:02:29,390 --> 00:02:31,440
كذلك، فإنه لا يعرف
ما مضروب 5 غير،

53
00:02:31,440 --> 00:02:35,620
وحتى هذه الدعوة بالفعل
اعتمادا على استدعاء دالة أخرى.

54
00:02:35,620 --> 00:02:37,270
لذا الرئيسي هو الذهاب الى وقفة حق هناك.

55
00:02:37,270 --> 00:02:39,103
أنا ستعمل ترك لها
السهم هناك حق، لون

56
00:02:39,103 --> 00:02:41,360
انها نفس لون
كومة الإطار على حق،

57
00:02:41,360 --> 00:02:47,720
للإشارة إلى أن الرئيسي هو الذهاب الى تجميد
هنا في حين يسمى مضروب 5.

58
00:02:47,720 --> 00:02:49,300
>> لذلك مضروب من 5 يسمى.

59
00:02:49,300 --> 00:02:53,160
وانها سوف تبدأ في غاية
ابتداء من وظيفة عاملية.

60
00:02:53,160 --> 00:02:55,440
فإنه يسأل السؤال أنا يساوي 1؟

61
00:02:55,440 --> 00:02:56,810
هو 5 يساوي 1؟

62
00:02:56,810 --> 00:02:57,410
حسنا، لا.

63
00:02:57,410 --> 00:03:01,110
لذلك سيكون النزول إلى
في آخر جزء، وعودة n مرة

64
00:03:01,110 --> 00:03:02,990
مضروب ن ناقص 1.

65
00:03:02,990 --> 00:03:03,490
حسنا.

66
00:03:03,490 --> 00:03:07,070
>> وحتى الآن، مضروب 5 هو
اعتمادا على مكالمة أخرى

67
00:03:07,070 --> 00:03:09,740
لمضروب، ويمر
في 4 كمعلمة.

68
00:03:09,740 --> 00:03:14,210
وهكذا مضروب
5 الإطار، أن الإطار الأحمر،

69
00:03:14,210 --> 00:03:17,160
هو الذهاب الى تجميد هناك حق
في هذا الخط أشرت

70
00:03:17,160 --> 00:03:21,914
وانتظر مضروب 4 لإنهاء
ما يتعين عليها القيام به حتى ذلك الحين

71
00:03:21,914 --> 00:03:23,330
يمكن أن تصبح الإطار النشط مرة أخرى.

72
00:03:23,330 --> 00:03:26,890
>> لذلك مضروب 4 يبدأ في
بداية مضروب.

73
00:03:26,890 --> 00:03:28,556
هو 4 يساوي 1؟

74
00:03:28,556 --> 00:03:30,180
لا، لذلك سيفعل نفس الشيء.

75
00:03:30,180 --> 00:03:31,590
انها سوف تنخفض فرع آخر.

76
00:03:31,590 --> 00:03:33,240
انها سوف نصل الى ذلك سطر من التعليمات البرمجية.

77
00:03:33,240 --> 00:03:35,710
حسنا، أنا ذاهب إلى العودة أربع مرات.

78
00:03:35,710 --> 00:03:41,270
أوه، مضروب 3-- ذلك مضروب
4 يعتمد على مضروب 3 التشطيب.

79
00:03:41,270 --> 00:03:43,055
>> وذلك يحتاج إلى استدعاء مضروب 3.

80
00:03:43,055 --> 00:03:45,180
وهذا ما ستعمل من خلال الذهاب
نفس العملية مرة أخرى.

81
00:03:45,180 --> 00:03:48,200
وهي تبدأ من خلال يحصل هنا.

82
00:03:48,200 --> 00:03:50,980
مضروب 3 يتوقف
على مضروب 1.

83
00:03:50,980 --> 00:03:53,750
مضروب حتى من 2 يبدأ، يحصل هنا.

84
00:03:53,750 --> 00:03:56,310
ذلك يعتمد على مضروب 1.

85
00:03:56,310 --> 00:03:57,430
مضروب 1 يبدأ.

86
00:03:57,430 --> 00:03:57,650
>> حسنا.

87
00:03:57,650 --> 00:03:59,775
وحتى الآن، نحن نحصل على
مثيرة للاهتمام في مكان ما، أليس كذلك؟

88
00:03:59,775 --> 00:04:02,190
وحتى الآن، 1 يساوي 1.

89
00:04:02,190 --> 00:04:05,130
وهكذا نعود 1.

90
00:04:05,130 --> 00:04:06,770
في هذه المرحلة، ونحن يعودون.

91
00:04:06,770 --> 00:04:07,880
انها فعلت وظيفة.

92
00:04:07,880 --> 00:04:11,140
انها is-- السلوك هناك
أي شيء آخر لذلك يجب القيام به،

93
00:04:11,140 --> 00:04:17,006
وهكذا إطار مكدس ل
مضروب 1 دفعها باتجاه آخر.

94
00:04:17,006 --> 00:04:17,589
انتهى.

95
00:04:17,589 --> 00:04:19,480
عادت 1.

96
00:04:19,480 --> 00:04:23,370
والآن، مضروب 2، الذي
إن الإطار الفور تحتها

97
00:04:23,370 --> 00:04:26,160
في المكدس، يصبح الإطار النشط.

98
00:04:26,160 --> 00:04:29,030
>> ويمكن أن تلتقط
بالضبط النقطة التي توقفت عندها.

99
00:04:29,030 --> 00:04:32,240
انها في انتظار لمضروب
من 1 إلى إنهاء عملها.

100
00:04:32,240 --> 00:04:33,610
انتهى الآن عليه.

101
00:04:33,610 --> 00:04:35,510
وهكذا نحن هنا.

102
00:04:35,510 --> 00:04:38,080
>> مضروب 1 إرجاع قيمة من 1.

103
00:04:38,080 --> 00:04:42,430
مضروب حتى من 2 علبة
ويقول العودة 2 مرات 1.

104
00:04:42,430 --> 00:04:43,680
يتم الآن عملها.

105
00:04:43,680 --> 00:04:49,110
لقد رجعت إلى 2 مضروب
3، الذي كان ينتظر.

106
00:04:49,110 --> 00:04:53,370
مضروب 3 هو الآن في الإطار العلوي،
الإطار النشط في المكدس.

107
00:04:53,370 --> 00:04:58,617
وهكذا تقول، حسنا، حسنا، أنا ذاهب
للعودة 3 مرات 2، وهو 6.

108
00:04:58,617 --> 00:05:00,700
وانا ذاهب لإعطاء هذا
القيمة إلى مضروب

109
00:05:00,700 --> 00:05:03,430
4، الذي كان ينتظر مني.

110
00:05:03,430 --> 00:05:04,500
انتهيت.

111
00:05:04,500 --> 00:05:09,410
مضروب 3 الملوثات العضوية الثابتة إيقاف المكدس، و
مضروب 4 هي الآن الإطار النشط.

112
00:05:09,410 --> 00:05:13,510
>> 4 تقول، حسنا، أنا ذاهب إلى العودة 4 مرات
مضروب 3، الذي كان ستة.

113
00:05:13,510 --> 00:05:15,980
وكان ذلك من قيمة
مضروب 3 إرجاعها.

114
00:05:15,980 --> 00:05:19,010
وحتى 4 مرات 6 هو 24.

115
00:05:19,010 --> 00:05:20,990
وانا ذاهب لتمرير
أن يعود إلى مضروب

116
00:05:20,990 --> 00:05:23,160
من 5، الذي كان ينتظر مني.

117
00:05:23,160 --> 00:05:25,270
مضروب 5 هو الآن في إطار النشط.

118
00:05:25,270 --> 00:05:30,700
انها تسير في العودة 5 مرات
مضروب 4-- 5 مرات 24، أو 120--

119
00:05:30,700 --> 00:05:32,722
وتعطي هذه القيمة
العودة الى الرئيسية، التي لديها

120
00:05:32,722 --> 00:05:35,680
في انتظار بصبر جدا ل
منذ وقت طويل في الجزء السفلي من المكدس.

121
00:05:35,680 --> 00:05:36,640
>> انها حيث بدأت.

122
00:05:36,640 --> 00:05:37,670
جعلت هذه الدعوة.

123
00:05:37,670 --> 00:05:39,400
اتخذت عدة إطارات أكثر في الأعلى.

124
00:05:39,400 --> 00:05:41,890
فمن الآن مرة أخرى في أعلى المكدس.

125
00:05:41,890 --> 00:05:43,450
إنها إطار النشط.

126
00:05:43,450 --> 00:05:47,810
هكذا الرئيسية حصلت على قيمة 120
العودة من مضروب 5.

127
00:05:47,810 --> 00:05:50,750
انها في انتظار ل
طباعة تلك القيمة.

128
00:05:50,750 --> 00:05:51,657
ثم انها فعلت.

129
00:05:51,657 --> 00:05:53,240
ليس هناك مزيد من الأسطر من التعليمات البرمجية في الرئيسية.

130
00:05:53,240 --> 00:05:56,800
لذلك الإطار الرئيسي للملوثات العضوية الثابتة قبالة
المكدس، ونحن القيام به.

131
00:05:56,800 --> 00:05:58,992
>> وهذه هي الطريقة التي تعمل العودية.

132
00:05:58,992 --> 00:06:00,200
هذه هي الطريقة التي تعمل إطارات المكدس.

133
00:06:00,200 --> 00:06:03,120
تلك المكالمات وظيفة
ما حدث في السابق

134
00:06:03,120 --> 00:06:06,620
ليست سوى على وقفة، والانتظار
لالمكالمات اللاحقة

135
00:06:06,620 --> 00:06:12,050
لإنهاء بحيث أنها يمكن أن تصبح نشطة
تأطير وإنهاء ما يتعين عليهم القيام به.

136
00:06:12,050 --> 00:06:13,060
>> أنا دوغ ويد.

137
00:06:13,060 --> 00:06:14,880
هذا هو CS50.

138
00:06:14,880 --> 00:06:16,580