[موسیقی] داگ لوید: بسیار خوب. کار را تنها با متغیرهای بسیار سرگرم کننده است. اما اگر ما می خواهیم به کار با تعداد زیادی از متغیرها، اما ما نمی خواهید به یک دسته از نام های مختلف پرواز در اطراف کد ما؟ در این مورد، آرایه ها رفتن به می آیند در واقعا مفید است. آرایه داده بنیادی ساختار برای هر زبان برنامه نویسی که شما استفاده خواهد کرد. و آنها واقعا، واقعا مفید هستند، به ویژه، همانطور که خواهیم دید، در CS 50. ما با استفاده از آرایه به برگزاری مقدار از انواع داده های مشابه در مکان های حافظه به هم پیوسته. است که می گویند، آن را یک راهی که ما می توانید گروه یک دسته از اعداد صحیح با هم در حافظه و یا یک دسته از شخصیت و یا شناور در حافظه واقعا نزدیک به هم و کار با آنها را بدون نیاز به هر یک نام منحصر به فرد خود را، که می پس از در حالی که کمی دست و پا گیر. در حال حاضر، یک راه برای قیاس آرایه است که در مورد پست محلی خود فکر می کنم دفتر برای یک ثانیه. بنابراین دور قدم از برنامه نویسی و فقط چشمانت را ببند و تجسم در ذهن شما دفتر پست محلی خود را. معمولا، در اکثر پست دفاتر، یک بانک بزرگ وجود دارد جعبه های اداره پست بر روی دیوار. یک آرایه یک بلوک غول پیکر است حافظه به هم پیوسته، راه همان است که یک پست الکترونیکی بانک در اداره پست خود را یک فضای بزرگ در است دیوار اداره پست. آرایه به کوچک تقسیم شده است، عینا بلوک های اندازه از فضا، هر یک از آنها است که به نام یک عنصر، در راه همان است که دیوار از پست دفتر شده است را به کوچک تقسیم، عینا بلوک های اندازه از فضا، که ما یک جعبه PO. هر عنصر از آرایه می تواند ذخیره یک مقدار مشخصی از داده ها، فقط به عنوان هر یک از جعبه اداره پست قادر است برای نگهداری یک مقدار مشخصی از ایمیل. آنچه می تواند در هر یک از عناصر ذخیره شده آرایه متغیر از داده های مشابه است نوع، مانند int و یا کاراکتر، فقط مانند در صندوق پستی خود را، شما تنها می توانید متناسب با همه چیز از یک نوع مشابه، مانند نامه یا بسته های کوچک است. در نهایت، ما می توانید هر عنصر از دسترسی آرایه به طور مستقیم توسط عدد شاخص، فقط به عنوان ما می توانیم اداره پست ما دسترسی جعبه با دانستن شماره صندوق پستی خود را. امیدوارم، که قیاس کمک می کند تا سر خود را به شما اطراف این ایده از آرایه های analogizing به چیز دیگری که شما احتمالا می در حال حاضر آشنا با. در C، عناصر یک آرایه هستند نمایه شروع از 0، نه از 1. و این است که واقعا مهم است. و در واقع، این است که چرا ما در CS 50، و به همین دلیل اغلب دانشمندان کامپیوتر از 0 شمارش است، به دلیل آرایه C است نمایه سازی، که همیشه در 0 شروع می شود. بنابراین اگر یک آرایه متشکل از عناصر N، عنصر اول که آرایه است که در شاخص 0 واقع شده، و آخرین عنصر از آرایه در شاخص N منهای 1 واقع شده است. باز هم، اگر n عنصر در آن وجود دارد ما آرایه، آخرین شاخص N منهای 1 است. بنابراین اگر آرایه ما دارای 50 عناصر، عنصر اول است که در شاخص 0 واقع، و آخرین عنصر در شاخص 49 واقع شده است. متاسفانه یا خوشبختانه، بسته به دیدگاه خود را، C در اینجا بسیار ملایم است. این شما را از جلوگیری نمی کند خارج از مرزهای آرایه خود را رفتن. شما می توانید از منهای دسترسی 3 عنصر از آرایه خود را و یا عنصر 59 از آرایه خود را، اگر آرایه تو فقط 50 عنصر است. آن را برنامه خود را از متوقف نمی تدوین، اما در زمان اجرا، شما ممکن است یک برخورد گسل تقسیم بندی مخوف اگر شما شروع به دسترسی به حافظه که در خارج از مرزهای چه شما برنامه خود را به شما داده ام. به طوری که مراقب باشید. چه آرایه ای اعلامیه نگاه می کنید؟ چگونه کد ما یک آرایه را به وجود ما هر متغیر دیگر کد؟ از سه بخش وجود دارد به یک آرایه declaration-- یک نوع، نام، و یک اندازه. این است که بسیار شبیه به یک تعریف متغیر، که فقط یک نوع و یک اسم است، عنصر اندازه بودن مورد خاص برای یک آرایه، چرا که ما در حال گرفتن یک دسته از آنها همزمان. بنابراین نوع چه نوع متغیر است شما می خواهید هر عنصر از آرایه می شود. آن را می خواهم به آرایه ای از اعداد صحیح؟ پس از آن، نوع داده های خود را باید از نوع int است. آیا شما می خواهید آن را به یک مجموعه ای از دو برابر و یا شناور. نوع داده باید دو برابر باشد یا شناور. نام شما چیست می خواهید تماس بگیرید آرایه خود را. شما چه می خواهید به نام این غول بانک از اعداد صحیح یا شناور و یا کاراکتر و یا دو برابر، و یا هر دارید؟ شما چه می خواهید به آن پاسخ؟ توضیحی زیبا. در نهایت، اندازه، می رود که داخل براکت مربع، چگونه بسیاری از عناصر است که شما می توانید مانند آرایه خود را به باشد. چگونه بسیاری از اعداد صحیح می خواهید؟ چگونه بسیاری از شناور می خواهید؟ بنابراین برای مثال، اعضای هیات نمرات دانش آموز 40. این اعلام یک آرایه به نام دانشجو نمرات، که متشکل از 40 عدد صحیح. توضیحی زیبا، امیدوارم. در اینجا یک مثال دیگر. قیمت منوی دو 8. این باعث ایجاد یک آرایه به نام قیمت منو، که شامل از اتاق در حافظه برای هشت دو برابر است. اگر شما فکر می کنم از هر عنصر آرایه ای از نوع داده از نوع، بنابراین برای مثال، یک عنصر از یک آرایه از نوع int، به همان شیوه شما را از هر فکر می کنم متغیر از نوع int، تمام عملیات آشنا که ما پیش از این در عملیات مورد بحث ویدیو حس را. بنابراین در اینجا، ما می تواند یک آرایه اعلام از Booleans می نام Truthtable، که متشکل از 10 اتاق برای Booleans می. و پس از آن، درست مثل ما فقط می تواند اختصاص یک مقدار را به هر متغیر دیگر از نوع بولی، ما می تواند چیزی می گویند مانند براکت Truthtable 2، این است که چگونه ما نشان می دهد، کدام عنصر جدول درستی؟ عنصر سوم از جدول حقیقت، چرا که به یاد داشته باشید، ما در حال شمارش از 0. بنابراین این که چگونه ما نشان می دهد سومین عنصر از جدول درستی. Truthtable 2 برابر کاذب، درست مثل ما می تواند declare-- و یا ما می تواند اختصاص دهید، نه، هر متغیر نوع داده منطقی اشتباه است. ما همچنین می توانید آن را در شرایط استفاده کنید. اگر (truthtable 7 == درست است)، است که می گویند، اگر عنصر هشتم از Truthtable درست است، شاید ما می خواهید برای چاپ یک پیام به کاربر، تابع () printf ("TRUE! N")؛ که باعث می شود ما می گویند Truthtable 10 برابر است، درست است؟ خوب، من می توانم، اما آن را بسیار خطرناک است، زیرا به یاد داشته باشید، ما یک آرایه از 10 Booleans می. به طوری که بالاترین شاخص که کامپایلر به ما داده است 9 است. این برنامه کامپایل، اما اگر چیز دیگری در حافظه وجود دارد که در آن ما انتظار Truthtable 10 برای رفتن، ما می تواند یک گسل تقسیم رنج می برند. ما ممکن است دور با آن، اما به طور کلی، بسیار خطرناک است. پس چه من در اینجا انجام C قانونی است، اما نه لزوما بهترین حرکت کند. حالا، وقتی شما اعلام و مقداردهی اولیه آرایه ای به طور همزمان، در واقع وجود دارد بسیار نحو خاص است که شما می توانید استفاده کنید برای پر کردن آرایه با ارزش شروع آن است. این می تواند دست و پا گیر برای به دست آوردن آرایه اندازه 100، و پس از آن باید بگویم، عنصر 0 این برابر. عنصر 1 این برابر. عنصر 2 برابر است. نقطه چیست، درست است؟ اگر آن را به یک آرایه های کوچک، شما چیزی شبیه به این است. بولی truthtable 3 برابر باز آکولاد و سپس کاما جدا کردن لیستی از عناصر که شما می خواهید در آرایه قرار دهید. پس از آن نقطه و ویرگول آکولاد را ببندید. این باعث ایجاد یک مجموعه ای از اندازه سه نام Truthtable، با عناصر نادرست، درست است، و درست است. و در واقع، نمونه نحو من در اینجا است دقیقا همان انجام نحو عنصر منحصر به فرد زیر کلیک کنید. این دو روش از برنامه نویسی را تولید همان آرایه دقیق. به طور مشابه، ما می تواند تکرار بیش از همه از عناصر از یک آرایه با استفاده از یک حلقه، که، در واقع، بسیار شدت توصیه می شود در خانه ورزش. چگونه یک آرایه را ایجاد می کنید از 100 اعداد صحیح، که در آن هر عنصر از آرایه شاخص های آن است؟ بنابراین برای مثال، ما باید یک آرایه از 100 اعداد صحیح، و در عنصر اول، ما می خواهیم به قرار دادن 0. در عنصر دوم، ما می خواهیم به قرار دادن 1. در عنصر سوم، ما می خواهیم برای قرار دادن 2؛ و غیره و غیره. که واقعا خوب در خانه ورزش برای انجام این کار. در اینجا، به نظر نمی مانند بیش از حد تغییر کرده است. اما توجه کنید که در بین براکت، این زمان، من در واقع حذف کرده ام تعداد. اگر شما در حال استفاده از این مسئله نمونه های ویژه نحو برای ایجاد یک آرایه، شما در واقع نمی نیاز به نشان دادن سایز از آرایه از قبل. کامپایلر به اندازه کافی هوشمند است می دانم که شما در واقع می خواهید یک آرایه از اندازه 3، چون شما را سه عنصر در سمت راست علامت مساوی. اگر چهار قرار داده بود، آن را با توجه به شما یک جدول حقیقت اندازه چهار. و غیره و غیره. آرایه ها به یک محدود نمی بعد، که بسیار سرد است. شما در واقع می تواند به عنوان بسیاری از specifiers در سمت به عنوان شما می خواهید. بنابراین برای مثال، اگر شما می خواهید برای ایجاد یک هیئت مدیره برای بازی جنگی، که، اگر شما تا به حال بازی، یک بازی است که است با گیره بر روی 10 با 10 شبکه بازی، شما می توانید از یک آرایه مثل این ایجاد کنید. شما می توانید بولی می گویند جنگی مربع براکت 10 بسته های مربع مستطیلی براکت براکت براکت بسته 10 مربع است. و پس از آن، شما می توانید انتخاب کنید به تفسیر این را در ذهن خود را به عنوان یک 10 با 10 شبکه از سلول. در حال حاضر، در واقع، در حافظه، واقعا فقط باقی می ماند یک عنصر 100، آرایه تک بعدی. و این، در واقع، می رود برای اگر شما سه بعد یا چهار یا پنج. این واقعا فقط می کند ضرب همه از indices-- یا همه از اندازه specifiers-- با هم، و شما فقط یک یک بعدی مجموعه ای از که اندازه. اما از نظر سازمان و تجسم و درک انسان، می توان آن را بسیار ساده تر برای کار با یک شبکه اگر شما در حال کار بر روی یک بازی مانند تیک تاک پا و یا جنگی، یا چیزی شبیه به آن. این یک انتزاع بزرگ است، به جای داشتن در مورد یک تیک تاک پا فکر می کنم هیئت مدیره به عنوان یک خط از نه مربع و یا یک هیئت مدیره کشتی جنگی به عنوان یک خط از 100 مربع است. 10 با 10 شبکه و یا یک سه توسط سه شبکه است که احتمالا بسیاری آسان تر به درک. در حال حاضر، چیزی واقعا در مورد آرایه مهم است. ما می توانیم هر فرد درمان عنصر از آرایه به عنوان یک متغیر است. ما که قبلا دیدم هنگامی که ما اختصاص شد ارزش واقعی به Booleans می خاصی و یا آزمایش آنها را در شرطی. اما ما می توانیم کل درمان نیست به عنوان متغیرهای آرایه خود را دارند. ما نمی توانیم، برای مثال، اختصاص یک آرایه به یک آرایه با استفاده از انتساب اپراتور. آن را قانونی نمی C. اگر ما به، می خواهم برای example-- چه ما را در این مثال انجام می شود برای کپی کردن یک آرایه را به دیگری. اگر ما می خواهیم به انجام این کار، ما در واقع نیاز به استفاده از یک حلقه برای کپی کردن بیش از هر عنصر منحصر به فرد در یک زمان. من می دانم که زمان کمی مصرف است. بنابراین برای مثال، اگر ما این چند حال خط کد، که این کار؟ خب، نه، آن را، درست است؟ از آنجا که ما در حال تلاش برای اختصاص دادن غذا به نوار. که رفتن به کار، چرا که آن را یک آرایه، و ما فقط توصیف که که قانونی C. نیست در عوض، اگر ما می خواهیم کپی مطالب از مواد غذایی را در نوار، آن چیزی است که ما در حال تلاش برای انجام در اینجا، ما می خواهیم یک نحو مثل این نیاز دارند. ما یک حلقه for است که می رود از J برابر با 0 تا 5 است، و ما افزایش J در هر تکرار از حلقه و عناصر اختصاص شبیه به آن. این در نوار نتیجه هم یکی، دو، سه، چهار، پنج، اما ما باید به آن این کار بسیار آهسته عنصر توسط عنصر راه، به جای تنها کپی کردن کامل آرایه. در برنامه نویسی دیگر زبان، آنهایی که مدرن تر، شما می توانید، در واقع، انجام درست که ساده برابر نحو. اما C، متاسفانه، ما مجاز به انجام این کار. در حال حاضر، یکی دیگر وجود دارد چیزی که من می خواهم به ذکر در مورد آرایه که می تواند یک کمی کمی مشکل اولین بار شما کار با آنها. ما در یک ویدیو مورد بحث در مورد دامنه متغیر، که اکثر متغیرها در C، هنگامی که شما پاسخ آنها در توابع، توسط ارزش منتقل می شود. آیا شما به یاد داشته باشید آنچه در آن به معنی به تصویب چیزی با ارزش؟ این بدان معنی است که ما در حال ساخت یک کپی از متغیر که در حال در گذشت. تابع پذیرنده، تابع که دریافت متغیر، کند خود متغیر نیست. این می شود محلی خود را دارد کپی از آن برای کار با. آرایه ها، البته، انجام این قاعده پیروی نمی کنند. در عوض، آنچه ما این با ارجاع عبور. پذیرنده واقع را دریافت آرایه. آن دریافت نمی آن کپی محلی خود از آن. و اگر شما فکر می کنم در مورد آن، این را حس می کند. اگر آرایه واقعا بزرگ هستند، آن زمان و تلاش بسیار زیادی طول می کشد برای ایجاد یک کپی از آرایه ای از 100 یا 1،000 یا 10،000 عناصر، که آن را به ارزش آن را برای یک نیست عمل به دریافت یک کپی از آن، انجام برخی از کار با آن، و پس از آن فقط با کپی انجام شود؛ لازم نیست به آن را حلق آویز در اطراف دیگر. از آنجا که برخی از آرایه بزرگ و سنگین، ما فقط آنها را با مرجع منتقل می کند. ما فقط اعتماد که تابع به، هیچ چیز را پاره کند. پس از آن در واقع آرایه را دریافت کنید. آن کپی محلی خود را از آن دریافت کنید. بنابراین به چه معنی است، سپس، هنگامی که پذیرنده دستکاری عناصر آرایه؟ چه اتفاقی می افتد؟ در حال حاضر، ما براق بیش از این که چرا دقیقا اتفاق می افتد، به همین دلیل آرایه توسط مرجع تصویب و هر چیز دیگری است با مقدار منتقل. اما من به شما قول، ما بازگشت و شما پاسخ می دهد این در یک ویدیو بعد. در اینجا یکی بیشتر ورزش برای شما قبل از ما بسته بندی همه چیز در آرایه ها. دسته از کد اینجا، که به خصوص سبک خوب، فقط من که نکته است. هیچ نظری در اینجا وجود دارد، را که در شکل خیلی بد است. اما آن را فقط به این دلیل من می خواستم به قادر به جا همه چیز بر روی صفحه نمایش. در بالا، شما می توانید ببینید که من آن را دو اظهارنامه تابع برای مجموعه ای از آرایه و مجموعه ای از نوع int است. مجموعه ای آرایه ظاهرا طول می کشد یک آرایه از چهار عدد صحیح را به عنوان ورودی آن است. و مجموعه ای از نوع int ظاهرا طول می کشد تنها یک عدد صحیح به عنوان ورودی آن است. اما هر دو آنها یک خروجی ندارد. خروجی، بازگشت تایپ می کنید، از هر یک از درجه اعتبار ساقط است. در اصلی، ما یک چند خط کد. ما یک متغیر عدد صحیح اعلام به نام و اختصاص آن ارزش 10. ما اعلام می کنیم مجموعه ای از چهار عدد صحیح به نام B و اختصاص عناصر 0، 1، 2 و 3 بود. پس از آن، ما باید یک تماس به مجموعه int و یک تماس به مجموعه آرایه. تعاریف آرایه تعیین و تنظیم INT پایین هستند، در پایین. و به این ترتیب، دوباره، من به شما این سوال را بپرسید. چه می شود چاپ در اینجا در پایان از اصلی؟ یک دگروال چاپی وجود دارد. من هستم چاپ کردن دو عدد صحیح. من چاپ کردن محتویات یک و محتویات B مربع براکت 0. مکث ویدیو اینجا و یک دقیقه. شما می توانید کشف کردن آنچه که این تابع را در پایان نسخه قابل چاپ؟ امیدوارم، اگر شما به یاد تمایز بین ارزش های عبور و عبور از مرجع، این مشکل این بود برای شما بیش از حد روی حیله و تزویر است. و پاسخ شما را پیدا کرده اند این است. اگر شما واقعا مطمئن نیست به چرا که این مورد، یک دوم، رفتن به عقب، بررسی آنچه من فقط بحث در مورد آرایه های عبور توسط مرجع، در مقابل عبور سایر متغیرها با ارزش، و امیدوارم، آن را به حس کمی بیشتر. من داگ لوید هستم، و این CS50 است.