1 00:00:00,000 --> 00:00:03,388 >> [عزف الموسيقى] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG لويد: حسنا. 4 00:00:06,020 --> 00:00:07,680 العمل مع واحد المتغيرات هي متعة جميلة. 5 00:00:07,680 --> 00:00:09,500 ولكن ماذا لو اننا نريد ان نعمل مع الكثير من المتغيرات، 6 00:00:09,500 --> 00:00:12,760 لكننا لا نريد أن يكون مجموعة من أسماء مختلفة تحلق حولها رمز لنا؟ 7 00:00:12,760 --> 00:00:15,980 في هذه الحالة، هي المصفوفات سوف يأتي في متناول اليدين حقا. 8 00:00:15,980 --> 00:00:19,510 المصفوفات هي البيانات الأساسية حقا هيكل لأي لغة البرمجة 9 00:00:19,510 --> 00:00:20,260 التي ستستخدمها. 10 00:00:20,260 --> 00:00:24,450 وانهم حقا ومفيدة حقا، بشكل خاص، كما سنرى، في CS 50. 11 00:00:24,450 --> 00:00:27,870 >> نحن نستخدم المصفوفات لعقد قيم نفس نوع البيانات 12 00:00:27,870 --> 00:00:29,830 في مواقع الذاكرة القريبة. 13 00:00:29,830 --> 00:00:32,430 وهذا هو القول، انها طريقة ما في وسعنا مجموعة 14 00:00:32,430 --> 00:00:35,430 مجموعة من الأعداد الصحيحة معا في الذاكرة أو مجموعة من الأحرف 15 00:00:35,430 --> 00:00:38,270 أو تعوم في الذاكرة حقا قريبة من بعضها البعض والعمل 16 00:00:38,270 --> 00:00:41,930 معهم دون الحاجة لإعطاء كل اسم واحد فريدة من نوعها، والتي يمكن 17 00:00:41,930 --> 00:00:44,500 الحصول على مرهقة بعد قليل. 18 00:00:44,500 --> 00:00:48,130 >> الآن، طريقة واحدة للمقايسة صفائف غير أن نفكر آخر في منطقتك 19 00:00:48,130 --> 00:00:49,000 مكتب لثانية واحدة. 20 00:00:49,000 --> 00:00:51,820 لذلك الابتعاد عن البرمجة وعادل تغمض عينيك 21 00:00:51,820 --> 00:00:54,120 وتصور في عقلك مكتب البريد المحلي. 22 00:00:54,120 --> 00:00:57,160 عادة، في معظم آخر المكاتب، وهناك مصرف كبير 23 00:00:57,160 --> 00:01:00,490 وصناديق البريد على الحائط. 24 00:01:00,490 --> 00:01:03,510 >> مجموعة هي كتلة عملاقة من الذاكرة القريبة، 25 00:01:03,510 --> 00:01:06,120 بنفس الطريقة التي البريد البنك في مكتب البريد الخاص بك 26 00:01:06,120 --> 00:01:11,230 هو مساحة كبيرة على جدار مكتب البريد. 27 00:01:11,230 --> 00:01:15,750 وقد تم تقسيم المصفوفات داخل صغيرة، تماثل كتل الحجم من الفضاء، 28 00:01:15,750 --> 00:01:19,930 كل منها يسمى عنصر، في بنفس الطريقة التي جدار آخر 29 00:01:19,930 --> 00:01:23,840 وقد تم تقسيم المكتب إلى صغيرة، تماثل كتل الحجم من الفضاء، 30 00:01:23,840 --> 00:01:27,560 وهو ما نسميه صندوق بريد. 31 00:01:27,560 --> 00:01:31,650 كل عنصر من عناصر المصفوفة يمكن تخزين كمية معينة من البيانات، 32 00:01:31,650 --> 00:01:37,540 كما أن كل صندوق بريد قادر عقد كمية معينة من البريد. 33 00:01:37,540 --> 00:01:41,540 >> ما يمكن تخزينها في كل عنصر من عناصر مجموعة هي المتغيرات من نفس البيانات 34 00:01:41,540 --> 00:01:45,300 نوع، مثل صحيح أو حرف، فقط كما هو الحال في صناديق البريد الخاص بك، 35 00:01:45,300 --> 00:01:47,300 أنت يمكن أن يصلح الأمور فقط من نفس النوع، 36 00:01:47,300 --> 00:01:50,430 مثل الرسائل أو الطرود الصغيرة. 37 00:01:50,430 --> 00:01:55,050 وأخيرا، يمكننا الوصول إلى كل عنصر من عناصر مجموعة مباشرة عن طريق الرقم القياسي، 38 00:01:55,050 --> 00:01:59,770 كما يمكننا الوصول إلى مكتب البريد لدينا مربع من خلال معرفة رقم صندوق البريد ل. 39 00:01:59,770 --> 00:02:02,750 نأمل أن القياس يساعدك على الحصول على رأسك 40 00:02:02,750 --> 00:02:05,540 حول فكرة صفائف من قبل تشابه إلى شيء آخر 41 00:02:05,540 --> 00:02:08,400 أنك ربما مألوفة بالفعل مع. 42 00:02:08,400 --> 00:02:13,182 >> في C وعناصر المصفوفة هي فهرستها بدءا من 0، وليس من 1. 43 00:02:13,182 --> 00:02:14,390 وهذا هو المهم حقا. 44 00:02:14,390 --> 00:02:18,530 وفي الواقع، وهذا هو السبب في أننا، في CS 50، ولماذا علماء الكمبيوتر في كثير من الأحيان 45 00:02:18,530 --> 00:02:22,150 سوف عد من 0، هو بسبب مجموعة C في 46 00:02:22,150 --> 00:02:24,660 الفهرسة، الذي يبدأ دائما عند 0. 47 00:02:24,660 --> 00:02:28,730 إذا كان الأمر كذلك مجموعة تتكون من عناصر ن، العنصر الأول من تلك مجموعة 48 00:02:28,730 --> 00:02:32,960 يقع في الفهرس 0، و العنصر الأخير للصفيف 49 00:02:32,960 --> 00:02:36,610 يقع في مؤشر ن ناقص 1. 50 00:02:36,610 --> 00:02:43,160 مرة أخرى، إذا كان هناك عناصر ن في موقعنا مجموعة، المؤشر الأخير هو ن ناقص 1. 51 00:02:43,160 --> 00:02:46,820 >> إذا كان الأمر كذلك مجموعة لديها 50 عناصر، و يقع العنصر الأول في الفهرس 0، 52 00:02:46,820 --> 00:02:51,060 والعنصر الأخير يقع في مؤشر 49. 53 00:02:51,060 --> 00:02:53,940 لسوء الحظ، أو لحسن الحظ، حسب وجهة نظرك، 54 00:02:53,940 --> 00:02:56,170 C هو متساهل جدا هنا. 55 00:02:56,170 --> 00:02:59,480 انها لن تمنعك من الخروج من حدود مجموعة الخاصة بك. 56 00:02:59,480 --> 00:03:03,080 هل يمكن الوصول إلى ناقص 3 عنصر من مجموعة الخاصة بك 57 00:03:03,080 --> 00:03:07,400 أو العنصر ال59 من مجموعة الخاص بك، إذا مجموعة لديه 50 عناصر فقط. 58 00:03:07,400 --> 00:03:11,060 انها لن توقف البرنامج من تجميع، ولكن في وقت التشغيل، 59 00:03:11,060 --> 00:03:14,350 كنت قد واجهت خطأ تجزئة اللعين 60 00:03:14,350 --> 00:03:17,460 إذا كنت تبدأ في الوصول إلى الذاكرة هذا هو خارج حدود ما 61 00:03:17,460 --> 00:03:19,260 هل سألت البرنامج لإعطائك. 62 00:03:19,260 --> 00:03:21,250 لذلك كن حذرا. 63 00:03:21,250 --> 00:03:23,120 >> ماذا مجموعة إعلان تبدو وكأنها؟ 64 00:03:23,120 --> 00:03:26,940 كيف يمكننا رمز مجموعة إلى حيز الوجود وكأننا رمز أي متغير آخر؟ 65 00:03:26,940 --> 00:03:31,250 هناك ثلاثة أجزاء لمجموعة declaration-- نوع، اسم، 66 00:03:31,250 --> 00:03:31,880 والحجم. 67 00:03:31,880 --> 00:03:34,088 وهذا مشابه جدا ل تعريف متغير، التي 68 00:03:34,088 --> 00:03:36,970 هو مجرد نوع واسم، العنصر حجم يجري 69 00:03:36,970 --> 00:03:39,860 حالة خاصة بالنسبة للمجموعة، لأننا الحصول على حفنة منهم 70 00:03:39,860 --> 00:03:41,830 في نفس الوقت. 71 00:03:41,830 --> 00:03:45,560 >> لذلك النوع هو نوع المتغير الذي تريد كل عنصر من عناصر المصفوفة أن يكون. 72 00:03:45,560 --> 00:03:47,150 هل تريد أن مجموعة من الأعداد الصحيحة؟ 73 00:03:47,150 --> 00:03:49,010 ثم، يجب أن يكون نوع البيانات INT. 74 00:03:49,010 --> 00:03:51,760 هل تريد أن تكون مجموعة من الزوجي أو العوامات؟ 75 00:03:51,760 --> 00:03:54,545 يجب أن يكون نوع بيانات مزدوج أو تطفو. 76 00:03:54,545 --> 00:03:56,420 الاسم هو ما كنت تريد الاتصال به مجموعة الخاصة بك. 77 00:03:56,420 --> 00:04:00,970 ماذا تريد أن تسمي هذا العملاق بنك صحيحة أو العوامات أو حرف 78 00:04:00,970 --> 00:04:03,250 أو الزوجي، أو أيا كان أن يكون لك؟ 79 00:04:03,250 --> 00:04:04,700 ماذا تريد أن نسميها؟ 80 00:04:04,700 --> 00:04:06,110 جميلة النفس التفسيرية. 81 00:04:06,110 --> 00:04:08,610 >> وأخيرا، وحجم، والذي يذهب داخل الأقواس المعقوفة، 82 00:04:08,610 --> 00:04:12,180 هو عدد العناصر تفعل مثل مجموعة الخاصة بك لاحتواء. 83 00:04:12,180 --> 00:04:13,530 كم عدد الأعداد الصحيحة تريد؟ 84 00:04:13,530 --> 00:04:15,570 كم عدد يطفو تريد؟ 85 00:04:15,570 --> 00:04:19,070 >> هكذا على سبيل المثال، كثافة العمليات درجات الطالب 40. 86 00:04:19,070 --> 00:04:26,020 هذا تعلن مجموعة تسمى الطلاب الدرجات، والذي يتألف من 40 الأعداد الصحيحة. 87 00:04:26,020 --> 00:04:28,180 جميلة النفس التفسيرية، وآمل. 88 00:04:28,180 --> 00:04:29,330 وهنا مثال آخر. 89 00:04:29,330 --> 00:04:31,560 أسعار القائمة مزدوجة 8. 90 00:04:31,560 --> 00:04:34,610 وهذا يخلق مجموعة تسمى أسعار القائمة، التي تتألف 91 00:04:34,610 --> 00:04:38,300 من الغرفة في الذاكرة لمدة ثمانية أضعاف. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> إذا كنت تعتقد أن كل عنصر من صفيف نوع من نوع البيانات، 94 00:04:45,750 --> 00:04:49,860 ذلك على سبيل المثال، عنصر واحد من مجموعة من نوع int، بنفس الطريقة التي 95 00:04:49,860 --> 00:04:52,770 قد يعتقد أي دولة أخرى متغير من نوع int، 96 00:04:52,770 --> 00:04:56,440 جميع العمليات المألوفة التي نحن نوقشت سابقا في عمليات 97 00:04:56,440 --> 00:04:58,270 الفيديو سوف يكون له معنى. 98 00:04:58,270 --> 00:05:01,620 حتى هنا، يمكننا أن تعلن مجموعة من القيم المنطقية دعا Truthtable، 99 00:05:01,620 --> 00:05:05,590 والذي يتكون من غرفة لمدة 10 القيم المنطقية. 100 00:05:05,590 --> 00:05:09,650 >> وبعد ذلك، تماما مثل نتمكن من تعيين فقط قيمة أي متغير آخر من نوع 101 00:05:09,650 --> 00:05:13,470 منطقية، يمكن أن نقول شيئا مثل Truthtable قوس مربع 102 00:05:13,470 --> 00:05:18,040 2، وهي الطريقة التي تبين لنا، أي عنصر من الجدول الحقيقة؟ 103 00:05:18,040 --> 00:05:20,350 العنصر الثالث لل جدول الحقيقة، لأن تذكر، 104 00:05:20,350 --> 00:05:21,800 نحن العد من 0. 105 00:05:21,800 --> 00:05:25,690 لذلك هذه هي الطريقة التي تدل على العنصر الثالث في جدول الحقيقة. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 يساوي كاذبة، تماما مثل يمكننا أن declare-- 107 00:05:28,680 --> 00:05:33,560 أو أننا يمكن تعيين، بدلا من ذلك، أي نوع منطقية متغير لتكون كاذبة. 108 00:05:33,560 --> 00:05:35,050 >> يمكننا أيضا استخدامه في الظروف. 109 00:05:35,050 --> 00:05:39,000 إذا (truthtable 7 == صحيح)، وهذا يعني، 110 00:05:39,000 --> 00:05:42,370 إذا كان العنصر الثامن من Truthtable غير صحيح، 111 00:05:42,370 --> 00:05:46,760 ربما نحن نريد لطباعة رسالة للمستخدم، printf ("TRUE! ن") ؛. 112 00:05:46,760 --> 00:05:50,290 ما يجعلنا نقول Truthtable 10 يساوي صحيح، أليس كذلك؟ 113 00:05:50,290 --> 00:05:53,590 حسنا، أستطيع، لكنه جميلة خطورة تذكر ل، 114 00:05:53,590 --> 00:05:56,260 لدينا مجموعة من 10 القيم المنطقية. 115 00:05:56,260 --> 00:06:02,340 وبالتالي فإن أعلى مؤشر على أن وقد أعطى مترجم لنا هو 9. 116 00:06:02,340 --> 00:06:06,010 >> وهذا البرنامج ترجمة، ولكن إذا كان هناك شيء آخر في الذاكرة 117 00:06:06,010 --> 00:06:09,110 موجود حيث كنا نتوقع Truthtable 10 للذهاب، 118 00:06:09,110 --> 00:06:13,980 نحن يمكن أن تعاني تجزئة الخطأ. نحن قد تفلت من العقاب، ولكن بصفة عامة، 119 00:06:13,980 --> 00:06:14,710 خطير جدا. 120 00:06:14,710 --> 00:06:19,759 ذلك ما أفعله هنا هو C القانوني، ولكن ليس بالضرورة أفضل الخطوة. 121 00:06:19,759 --> 00:06:22,300 الآن، عندما تقوم بتعريف و تهيئة مجموعة في وقت واحد، 122 00:06:22,300 --> 00:06:23,960 هناك في الواقع جميلة تركيب خاص لك 123 00:06:23,960 --> 00:06:26,250 يمكن استخدامها لملء مجموعة مع القيم انطلاق لها. 124 00:06:26,250 --> 00:06:30,130 فإنه يمكن الحصول على مرهقة ل أعلن مجموعة من حجم 100، 125 00:06:30,130 --> 00:06:33,430 ومن ثم يجب أن أقول، العنصر 0 يساوي هذا. العنصر 1 يساوي ذلك؛ 126 00:06:33,430 --> 00:06:34,850 العنصر 2 يساوي ذلك. 127 00:06:34,850 --> 00:06:36,370 ما هي النقطة، أليس كذلك؟ 128 00:06:36,370 --> 00:06:39,470 >> اذا كان مجموعة صغيرة، كنت يمكن أن تفعل شيئا من هذا القبيل. 129 00:06:39,470 --> 00:06:44,360 منطقي truthtable 3 يساوي مفتوحة متعرج ثم فاصلة 130 00:06:44,360 --> 00:06:48,060 فصل قائمة العناصر ان كنت تريد أن تضع في المصفوفة. 131 00:06:48,060 --> 00:06:50,520 ثم أغلق مجعد هدفين منقوطة. 132 00:06:50,520 --> 00:06:53,910 وهذا يخلق مجموعة من حجم ثلاثة دعا Truthtable، 133 00:06:53,910 --> 00:06:56,090 مع العناصر كاذبة، صحيح، وصحيح. 134 00:06:56,090 --> 00:06:59,270 وفي الواقع، فإن مثيل جملة لدي هنا 135 00:06:59,270 --> 00:07:03,350 بالضبط نفس تفعل الفردي تركيب عنصر أدناه. 136 00:07:03,350 --> 00:07:09,380 هذه الطرق اثنين من الترميز شأنه إنتاج مجموعة نفسها بالضبط. 137 00:07:09,380 --> 00:07:11,740 >> وبالمثل، فإننا لا يمكن تكرار على جميع العناصر 138 00:07:11,740 --> 00:07:15,400 صفيف باستخدام حلقة، والتي، في الواقع، هو يوصى بشدة 139 00:07:15,400 --> 00:07:16,790 في المنزل ممارسة الرياضة. 140 00:07:16,790 --> 00:07:20,720 كيف يمكنك إنشاء صفيف 100 الأعداد الصحيحة، حيث 141 00:07:20,720 --> 00:07:23,477 كل عنصر من المصفوفة هو مؤشره؟ 142 00:07:23,477 --> 00:07:26,560 هكذا على سبيل المثال، لدينا مجموعة من 100 الأعداد الصحيحة، والعنصر الأول، 143 00:07:26,560 --> 00:07:27,790 نحن نريد ان نضع 0. 144 00:07:27,790 --> 00:07:29,810 في العنصر الثاني، نحن نريد ان نضع 1. 145 00:07:29,810 --> 00:07:33,319 في العنصر الثالث، نريد لوضع 2؛ وهلم جرا وهلم جرا. 146 00:07:33,319 --> 00:07:35,360 هذا هو حقا جيدة في المنزل ممارسة لفعل ذلك. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> هنا، لا يبدو كما تغيرت كثيرا. 149 00:07:40,220 --> 00:07:44,170 ولكن لاحظ أن في فترة ما بين بين قوسين معقوفين، وهذه المرة، 150 00:07:44,170 --> 00:07:45,830 لقد حذفت في الواقع الرقم. 151 00:07:45,830 --> 00:07:48,000 إذا كنت تستخدم هذا جدا مثيل خاص 152 00:07:48,000 --> 00:07:50,380 الجملة لخلق مجموعة، كنت لا فعلا 153 00:07:50,380 --> 00:07:53,491 تحتاج إلى الإشارة إلى حجم من مجموعة مسبقا. 154 00:07:53,491 --> 00:07:55,740 المترجم ذكي بما فيه الكفاية لمعرفة ان كنت فعلا 155 00:07:55,740 --> 00:07:58,980 تريد مجموعة من حجم 3، لأنك وضعت ثلاثة عناصر 156 00:07:58,980 --> 00:08:00,640 إلى يمين علامة المساواة. 157 00:08:00,640 --> 00:08:04,140 إذا كنت قد وضعت أربعة، فإنه سيتعين عليها منحك جدول الحقيقة من حجم الأربعة؛ 158 00:08:04,140 --> 00:08:06,270 وهلم جرا وهلم جرا. 159 00:08:06,270 --> 00:08:09,380 >> لا تقتصر صفائف إلى واحد البعد، وهو بارد جدا. 160 00:08:09,380 --> 00:08:12,000 هل يمكن أن يكون في الواقع أكبر عدد ممكن المحددات الجانب كما يحلو لك. 161 00:08:12,000 --> 00:08:16,470 هكذا على سبيل المثال، إذا كنت ترغب في إنشاء لوحة لعبة حربية، والتي، 162 00:08:16,470 --> 00:08:20,910 إذا كنت من أي وقت مضى لعبت، هي اللعبة التي هي لعبت مع أوتاد على 10 بنسبة 10 شبكة، 163 00:08:20,910 --> 00:08:22,450 هل يمكن إنشاء مجموعة من هذا القبيل. 164 00:08:22,450 --> 00:08:26,030 هل يمكن أن نقول منطقية بارجة ساحة قوس 10 165 00:08:26,030 --> 00:08:29,590 مغلق مربع مربع قوس قوس 10 أغلق قوس مربع. 166 00:08:29,590 --> 00:08:32,710 >> وبعد ذلك، يمكنك اختيار ل تفسير هذا في عقلك و10 167 00:08:32,710 --> 00:08:35,576 قبل 10 شبكة من الخلايا. 168 00:08:35,576 --> 00:08:37,409 الآن، في الواقع، في الذاكرة، هل حقا فقط 169 00:08:37,409 --> 00:08:42,440 يبقى العنصر 100، صفيف الأبعاد واحد. 170 00:08:42,440 --> 00:08:46,070 وهذا، في الواقع، ينطبق على إذا كنت لدينا ثلاثة أبعاد أو أربعة أو خمسة. 171 00:08:46,070 --> 00:08:49,420 حقا فقط لا تتضاعف جميع indices-- 172 00:08:49,420 --> 00:08:51,130 أو كل من حجم specifiers-- معا، 173 00:08:51,130 --> 00:08:53,480 وكنت مجرد الحصول على الأبعاد واحد مجموعة من هذا الحجم. 174 00:08:53,480 --> 00:08:57,090 >> ولكن من حيث التنظيم و التصور والإدراك البشري، 175 00:08:57,090 --> 00:08:59,240 يمكن أن يكون أسهل بكثير للعمل مع شبكة 176 00:08:59,240 --> 00:09:02,980 إذا كنت تعمل على لعبة مثل تيك تاك تو أو سفينة حربية، 177 00:09:02,980 --> 00:09:05,179 أو شيء من هذا القبيل. 178 00:09:05,179 --> 00:09:06,970 انها التجريد كبير، بدلا من الاضطرار 179 00:09:06,970 --> 00:09:09,340 للتفكير في تيك تاك تو مجلس كخط تسعة 180 00:09:09,340 --> 00:09:13,810 الساحات أو حربية المجلس كخط من 100 الساحات. 181 00:09:13,810 --> 00:09:16,010 A 10 بنسبة 10 شبكة أو ثلاثة قبل ثلاثة الشبكة هو على الارجح 182 00:09:16,010 --> 00:09:17,225 الكثير أكثر سهولة لإدراكه. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> الآن، في الواقع شيئا مهم حول المصفوفات. 185 00:09:22,280 --> 00:09:25,950 يمكننا أن نتعامل مع كل فرد عنصر من المصفوفة كمتغير. 186 00:09:25,950 --> 00:09:27,700 رأينا أنه في وقت سابق عندما كنا تعيين 187 00:09:27,700 --> 00:09:32,240 القيمة الحقيقية لبعض القيم المنطقية أو اختبارها في الشرطية. 188 00:09:32,240 --> 00:09:35,960 ولكن لا يمكننا علاج كامل صفائف أنفسهم المتغيرات. 189 00:09:35,960 --> 00:09:41,760 لا يمكننا، على سبيل المثال، تعيين مجموعة واحدة إلى مجموعة أخرى باستخدام الاحالة 190 00:09:41,760 --> 00:09:42,930 المشغل. 191 00:09:42,930 --> 00:09:44,640 انها ليست C. القانوني 192 00:09:44,640 --> 00:09:47,920 >> إذا كنا نريد أن، على ما example-- يمكن أن نفعله في هذا المثال 193 00:09:47,920 --> 00:09:50,200 سيكون لنسخ مجموعة إلى أخرى. 194 00:09:50,200 --> 00:09:53,810 إذا كنا نريد أن نفعل ذلك، ونحن في الواقع تحتاج إلى استخدام حلقة لنسخ أكثر 195 00:09:53,810 --> 00:09:56,550 كل عنصر على حدة واحدة في وقت واحد. 196 00:09:56,550 --> 00:09:58,700 وأنا أعلم أنه قليلا تستغرق وقتا طويلا. 197 00:09:58,700 --> 00:10:04,022 >> هكذا على سبيل المثال، إذا كان لدينا هذه زوجين من الأسطر من التعليمات البرمجية، فإن هذا العمل؟ 198 00:10:04,022 --> 00:10:05,230 حسنا، لا، لن، أليس كذلك؟ 199 00:10:05,230 --> 00:10:07,860 لأننا نحاول تعيين الغذاء إلى شريط. 200 00:10:07,860 --> 00:10:09,860 هذا ليس الذهاب إلى العمل، لأنه صفيف، 201 00:10:09,860 --> 00:10:13,130 وصفنا فقط أن هذا ليس C. القانوني 202 00:10:13,130 --> 00:10:15,580 >> بدلا من ذلك، إذا كنا نريد أن نسخ محتويات الطعام 203 00:10:15,580 --> 00:10:18,070 في شريط، وهو ما نحن نحاول القيام به هنا، 204 00:10:18,070 --> 00:10:19,970 نحن في حاجة الى جملة من هذا القبيل. 205 00:10:19,970 --> 00:10:24,170 لدينا للحلقة أن يذهب من J تساوي 0 إلى 5، 206 00:10:24,170 --> 00:10:28,390 ونحن زيادة J على كل التكرار حلقة وعناصر تعيين من هذا القبيل. 207 00:10:28,390 --> 00:10:33,360 هذا من شأنه أن يؤدي إلى شريط أيضا كونها واحدة، اثنان، ثلاثة، أربعة، خمسة، 208 00:10:33,360 --> 00:10:36,730 ولكن علينا أن نفعل ذلك هذا جدا بطيئة عنصر على حدة العنصر الطريق، 209 00:10:36,730 --> 00:10:40,009 بدلا من مجرد نسخ مجموعة بأكملها. 210 00:10:40,009 --> 00:10:42,050 في البرمجة الأخرى لغات، منها أكثر حداثة، 211 00:10:42,050 --> 00:10:45,610 يمكنك، في الواقع، لا مجرد بهذه البساطة يساوي بناء الجملة. 212 00:10:45,610 --> 00:10:49,620 لكن C، للأسف، نحن لا يسمح للقيام بذلك. 213 00:10:49,620 --> 00:10:52,026 >> الآن، هناك واحد آخر شيء أريد أن أذكر 214 00:10:52,026 --> 00:10:54,650 حول المصفوفات التي يمكن أن يكون قليلا صعبة بعض الشيء في المرة الأولى التي 215 00:10:54,650 --> 00:10:55,990 العمل معهم. 216 00:10:55,990 --> 00:10:59,860 ناقشنا في شريط فيديو حول نطاق متغير، 217 00:10:59,860 --> 00:11:04,940 أن معظم المتغيرات في C، عند استدعاء منهم في وظائف، يتم تمرير من حيث القيمة. 218 00:11:04,940 --> 00:11:08,620 هل تذكر ما يعنيه لتمرير شيء من حيث القيمة؟ 219 00:11:08,620 --> 00:11:12,570 وهذا يعني أننا نحقق نسخة من المتغير الذي يتم تمريره في. 220 00:11:12,570 --> 00:11:16,290 وظيفة المستدعي، وظيفة ان تلقي المتغير، 221 00:11:16,290 --> 00:11:17,730 لا تحصل على المتغير نفسه. 222 00:11:17,730 --> 00:11:20,850 فإنه يحصل بمفردها المحلية نسخة منه للعمل مع. 223 00:11:20,850 --> 00:11:24,070 >> المصفوفات، بطبيعة الحال، لا لا تتبع هذه القاعدة. 224 00:11:24,070 --> 00:11:27,600 بدلا من ذلك، ما نسميه هذا يمر بالرجوع. 225 00:11:27,600 --> 00:11:31,360 المستدعى الواقع لا تلقي مجموعة. 226 00:11:31,360 --> 00:11:34,207 أنها لا تلقي لها النسخة المحلية الخاصة بها. 227 00:11:34,207 --> 00:11:36,040 وإذا كنت تفكر في ذلك، وهذا الأمر يبدو معقولا تماما. 228 00:11:36,040 --> 00:11:39,750 إذا صفائف كبيرة حقا، فإنه يأخذ الكثير من الوقت والجهد 229 00:11:39,750 --> 00:11:44,470 لجعل نسخة من مجموعة من 100 أو 1000 أو 10000 العناصر، 230 00:11:44,470 --> 00:11:48,290 أنه لا يستحق ذلك ل تعمل للحصول على نسخة منه، 231 00:11:48,290 --> 00:11:51,037 القيام ببعض العمل معها، ومن ثم مجرد القيام به مع نسخة. 232 00:11:51,037 --> 00:11:53,120 أنها لا تحتاج إلى أن يكون كان التسكع بعد الآن. 233 00:11:53,120 --> 00:11:54,710 >> لأن المصفوفات هي بعض ضخمة ومرهقة، 234 00:11:54,710 --> 00:11:56,001 نحن فقط تمريرها حسب المرجع. 235 00:11:56,001 --> 00:12:01,210 ونحن على ثقة من أن وظيفة فقط ل، لا كسر أي شيء. 236 00:12:01,210 --> 00:12:03,010 لذلك لا تحصل في الواقع مجموعة. 237 00:12:03,010 --> 00:12:05,290 انها لا تحصل على نسختها المحلية الخاصة بها. 238 00:12:05,290 --> 00:12:07,170 >> فماذا يعني هذا، ثم، عندما المستدعى 239 00:12:07,170 --> 00:12:08,970 تعالج عناصر المصفوفة؟ 240 00:12:08,970 --> 00:12:10,780 ما يحدث؟ 241 00:12:10,780 --> 00:12:13,210 في الوقت الراهن، ونحن سوف يتستر على ماذا بالضبط هذا 242 00:12:13,210 --> 00:12:15,320 يحدث، لماذا المصفوفات يتم تمرير بالرجوع 243 00:12:15,320 --> 00:12:17,810 وكل شيء يتم تمريرها من حيث القيمة. 244 00:12:17,810 --> 00:12:20,470 لكنني أعدكم، ونحن سوف العودة وتعطيك الجواب 245 00:12:20,470 --> 00:12:23,750 لهذا في شريط فيديو في وقت لاحق. 246 00:12:23,750 --> 00:12:28,110 >> هنا واحد أكثر ممارسة لك قبل أن يختتم الأمور على المصفوفات. 247 00:12:28,110 --> 00:12:31,400 باقة من التعليمات البرمجية هنا، وهذا هو لا سيما اسلوب جيد، 248 00:12:31,400 --> 00:12:33,400 فقط لأنني سوف تجعل هذا التحذير. 249 00:12:33,400 --> 00:12:36,660 لا يوجد تعليقات هنا، وهو شكل سيء جدا. 250 00:12:36,660 --> 00:12:39,750 ولكن هذا فقط لأنني أريد أن أكون قادرة على احتواء كل شيء على الشاشة. 251 00:12:39,750 --> 00:12:44,360 >> في الجزء العلوي، يمكنك أن ترى أن لدي إعلانين وظيفة لمجموعة مجموعة 252 00:12:44,360 --> 00:12:45,820 ووضع الباحث. 253 00:12:45,820 --> 00:12:49,680 مجموعة مجموعة على ما يبدو يأخذ مجموعة أربعة أعداد صحيحة كمدخل لها. 254 00:12:49,680 --> 00:12:52,767 ومجموعة الباحث يأخذ على ما يبدو عدد صحيح واحد كمدخل لها. 255 00:12:52,767 --> 00:12:54,350 ولكن كلا منهم لم يكن لديك الانتاج. 256 00:12:54,350 --> 00:12:57,689 الإخراج، وعودة اكتب، كل واحد باطل. 257 00:12:57,689 --> 00:12:59,480 في منزل لدينا بضعة أسطر من التعليمات البرمجية. 258 00:12:59,480 --> 00:13:02,730 نعلن متغير عدد صحيح دعا وتعيين القيمة 10. 259 00:13:02,730 --> 00:13:07,080 نعلن مجموعة من أربعة أعداد صحيحة دعا B وتعيين العناصر 0، 1، 260 00:13:07,080 --> 00:13:08,730 2، و 3، على التوالي. 261 00:13:08,730 --> 00:13:12,190 ثم، لدينا دعوة لضبط كثافة العمليات ودعوة لضبط مجموعة. 262 00:13:12,190 --> 00:13:15,910 تعاريف مجموعة مجموعة ومجموعة الباحث هي الأسفل، في الجزء السفلي. 263 00:13:15,910 --> 00:13:17,640 >> وهكذا، مرة أخرى، وأنا أسألك هذا السؤال. 264 00:13:17,640 --> 00:13:20,770 ما يحصل طباعتها هنا في نهاية الرئيسي؟ 265 00:13:20,770 --> 00:13:23,020 هناك عمود المطبوعة. أنا طبع عددين. 266 00:13:23,020 --> 00:13:28,010 أنا طبع محتويات ألف و محتويات B ساحة قوس 0. 267 00:13:28,010 --> 00:13:29,880 وقفة الفيديو هنا واتخاذ دقيقة. 268 00:13:29,880 --> 00:13:35,482 يمكنك معرفة ما هو هذا وظيفة طباعة في نهاية المطاف؟ 269 00:13:35,482 --> 00:13:38,190 نأمل، إذا كنت أذكر الفرق بين النجاح من حيث القيمة 270 00:13:38,190 --> 00:13:41,680 ويمر بالرجوع، وهذا كانت المشكلة ليست صعبة جدا بالنسبة لك. 271 00:13:41,680 --> 00:13:44,130 والجواب تفعل وقد وجدت غير ذلك. 272 00:13:44,130 --> 00:13:47,660 إذا لم تكن متأكدا حقا ل لماذا كان هذا هو الحال، تأخذ ثانية، 273 00:13:47,660 --> 00:13:50,620 أعود، ومراجعة ما كنت فقط مناقشة حول تمرير المصفوفات 274 00:13:50,620 --> 00:13:53,450 بالإشارة، مقابل تمرير المتغيرات الأخرى من حيث القيمة، 275 00:13:53,450 --> 00:13:56,680 ونأمل، وأنها سوف تجعل أكثر قليلا معنى. 276 00:13:56,680 --> 00:13:59,760 >> أنا دوغ ويد، وهذا هو CS50. 277 00:13:59,760 --> 00:14:01,467