[موسیقی] ANDI PENG: این CS50 است، و به دو هفته از بخش خوش آمدید. این است که در واقع در حالی که هفته دو نفر از class-- ما در واقع، هفته اول ما بخش بود. دست ها، که چگونه بسیاری از همه شما هفته گذشته به بخش فوق العاده آمد؟ OK، که OK. این خوب است. چگونه بسیاری از شما را تماشا بخش فوق العاده هفته گذشته؟ باشه. و شما بچه ها خوب بود در مجموعه ای مشکل است؟ بنابراین من قصد دارم به آن را که ما یک دسته از بچه ها واقعا هوشمند در این کلاس و همه چیز خوب خواهد بود. باشه. بنابراین first-- اول، ما فقط رفتن را به طور خلاصه بیش از دستور کار امروز است. ما در مورد تدارکات البته صحبت کنید. بسیاری از شما احتمالا سوال در مورد همه چیز در این دوره اجرا چگونه. ما آنها را پاسخ خواهم داد. ما قصد داریم به اختصار به بیش از حلقه ها در مورد هر یک از شما بچه ها بخش فوق العاده از دست رفته. ما در مورد نقشه برداری ASCII صحبت کنید. ما در مورد آرایه ها صحبت می کنید، توابع، آرگومان های خط فرمان. و در نهایت، آنچه که شما بچه احتمالا همه واقعا می خواهید به اینجا برای یادگیری در مورد، pset2 شما است. ما برخی از ترفندهای خوب باید و راهنمایی برای چگونگی انجام این کار. باشه. همچنین، در مرحله دوم، ما باید بسیاری از آب نبات است. هر کسی که دوست آب نبات، فقط آمده تا اینجا. چنگ زدن به برخی. من یک دسته. ما یک تن در دفتر. من واقعا نمی خواهید به خوردن آب نبات تمام طول روز. شما بچه ها باید تمام آب نبات خوردن، چون من آن را به اینجا آورده برای شما بچه ها. فقط آب نبات بخورند. می شود آب نبات هر بخش وجود دارد. پس اول، من که هستم؟ نام من اندی پنگ است. من سر TA از CS50 در دانشگاه ییل است. و علاوه بر که، من هم خواهد be-- اگر کسی در حال اجرا خود را like-- دوستان، شانه خود را به گریه کردن. اگر شب قبل به دلیل pset خود را، شما هیچ ایده چه خبر است، به من رسید تا. ما با هم شروع همدردی، و غیره. فقط اینکه بدانند من اینجا هستم به عنوان یک منابع برای شما به عنوان خط مقدم در کمک به شما بچه ها بفهمند که چگونه برای حل مشکلات در CS50 و فراتر از آن. ایمیل من andi.peng@yale.edu است. من هم از ارسال یک فرد ایمیل با شماره تلفن من در آن طوری که هر کس نه در اینترنت می توانید شماره تلفن من را ببینید. احساس رایگان به من پاسخ در هر زمان. به طور جدی، گوشی من است معمولا به دست من وصل شده است. من ممکن است پاسخ نمی در عرض چند دقیقه. من ممکن است در عرض چند ساعت پاسخ نمی دهند. اما من می تواند به شما، اگر تضمین شما ایمیل به من، اگر شما با من تماس بگیرید، من متن، من ظرف 24 ساعت پاسخ. اغلب اوقات، من قبل از پاسخ که، چون من درک است که هر کس در برخی از مشکلات، و شما می خواهید پاسخ خود را به سرعت پاسخ داده شود. با این حال، اگر شما پاسخ من 30 دقیقه قبل از آن قطعه است که به علت پنجشنبه night-- شود، اندی، من کمک کند، من started-- من ممکن است به شما که شانه به گریه کردن. اما ممکن است زمان برای فکر کردن در مورد چگونه است که در کنار هم نیست. باشه. اوه. چگونه تماس بروم؟ ما میرویم آنجا. بنابراین در این دوره، ما یک تن از پشتیبانی برای همه. علاوه بر فقط بخش اینجا، که شما هر هفته به صرف 90 دقیقه فوق العاده با من، ما همچنین ساعات اداری داشته باشد. چگونه بسیاری از شما بچه ها در حال حاضر برای کمک به ساعات اداری بوده است؟ عالی. این واقعا خوبی است برای دیدن، چرا که ما یک هیات از بیش از 45 استادیار و CAS آموزش دیده برای این دوره است که اینجا هستید برای کمک به شما بچه ها با psets خود را. دوشنبه آنها در ای آبی سیر برگزار کلاس درس در 17 هیل خانه در اینجا در دانشگاه ییل. سه شنبه و پنج شنبه ها، آنها در عوام برگزار می شود. 8:00-11:00 تقریبا هر روز هفته. بیا، بیرون می آیند. هر گونه مشکل، هیچ problem-- فقط در در آمده است، و سپس ما شما را با آن کمک کند. در مرحله دوم، علاوه بر ساعات اداری و بخش، ما نیز شورت داشته باشد. تا به هر کسی تا کنون دیده یک زن و شوهر از شورت و یا تکمیل فرم سفارش در فیلم در وب سایت؟ باشه. به طوری که آنها واقعا، واقعا مفید است. تولید و دوست داشتنی ما هاروارد تیم بیش از وجود دارد در آن مدرسه تا شمال، آنها فیلم برداری و تولید این فیلم خرید باور نکردنی است. آنها شما را قدم به قدم از طریق چگونه در مورد حل یک مشکل است. اغلب اوقات، اگر شما در حال اشتباه در مورد یک مفهوم ساده، یک مفهوم منحصر به فرد، نگاهی، چرا که ما احتمالا کوتاه بر روی آن در جایی در وب سایت ما. و آن را معمولا یک منبع بزرگ برای زمانی که شما برای اولین بار است نگاه از دست رفته در نحوه رسیدگی به مشکل است. سوم، ما نیز study50 و reference50. بنابراین مطالعه بر روی 50 وب سایت فقط یک لینک است. از آن، من فکر می کنم، study.cs50.net یا چیزی شبیه به آن. فقط آن را گوگل. ما تعداد زیادی از اسلاید آماده شده است. ما تعداد زیادی از شورت و همه چیز از همه walkthroughs-- وارد بسیار زیبا و شسته و رفته برای شما بچه ها همه به مرور، هر مفاهیم که شما در مورد اشتباه است. این احتمالا پوشش داده شود بیش از وجود دارد در study50. Reference50-- مشابه است. در حال حاضر بسیاری از یادداشت های مختلف به آسانی برای اختیار شما در دسترس است. و در آخر، ما باید چه نام CS50 بحث، فروم که در آن، اگر شب قبل شما در حال انجام مشکلات خود، می گویند، شما یک سوال. ورود به CS50 بحث. ارسال درخواست خود را. و پس از آن یکی از hundreds-- شاید، thousands-- از همسالان گرفتن آنلاین این کلاس وارد شوید در. و شاید یه می توانید پاسخ خود را قبل از یک قوطی TA. این در اصل فقط یک انجمن آنلاین است که ما می توانیم تمام استفاده به بحث در مورد مشکلات ما است. که سرد است. باشه. بنابراین مجموعه مسائل. ما در مورد درست در حال ضخامت از مشکل تنظیم دو. بسیاری از ما در حال حاضر در مورد مشکل تلاش یک مجموعه است. ما می دانیم که شاید انتظار برای شب گذشته به انجام pset خود را است باهوش ترین کاری که به انجام در CS50 است. نکات و راهنمایی در اصل برای موفقیت، طیف تنظیمات به عنوان خوانده شده. چگونه بسیاری از شما در حال حاضر خواندن تنظیمات برای pset 2؟ باشه. که مقدار جامد است. من می دانم که شما بچه ها احتمالا به رسمیت شناخته شده در حال حاضر توسط مشخصات واقعا طولانی است. آنها واقعا، واقعا طولانی است. این واقعا سخت به خواندن هر خط که با دقت کلمه به کلمه. شما می خواهید فقط به جایی که خامه ای آن را به شما می گوید برای انجام کاری. من می توانم شما را تضمین کند، این کار را نمی کند. اگر شما این کار، شما احتمالا رفتن به از دست جایی که در آن به شما می گوید چگونه برای شروع یک مشکل یا آن را به شما می گوید چه به نام مشکل شما و یا آن را به شما می گوید، این است که احتمالا بهترین راه برای شروع به انجام مشکل شما. و سپس شما را از دست داده می شود. هنگامی که شما سعی می کنید به خواندن خود را تنظیمات نیمه راه از طریق، بسیاری از مهم information-- که در شما نیست رفتن به قادر به دسترسی واقعا. به طوری که تمام تنظیمات به عنوان خوانده شده. سعی کنید به خواندن کل تنظیمات قبل از اینکه شما به بخش آمده است، چرا که پس از، زمانی که ما بحث در مورد pset، ما همه می توانند یک ایده چه خبر است. در مرحله دوم، این یک مفهوم است که من می خواهم به مرجع بسیاری در سراسر ترم البته. اما در اصل، ما ملاقات در نیمه راه، درست است؟ من، به عنوان TA و جیسون خود را به عنوان دوره بدهید و به عنوان استاد خود را Scaz و دیوید به عنوان استاد خود را و همه از دیگر استادیار دوست داشتنی در این دوره، دستیاران در این course-- ما بهترین های ما را انجام خواهد داد به اطمینان حاصل شود که شما قرار است تا برای موفقیت در این دوره است. ما بخش نگه دارید. ما ساعات اداری برگزار خواهد شد. ما تلفن شما جواب خواهد داد تماس، پاسخ خود را ایمیل، انجام همه چیز را ما می توانیم به مطمئن سوالات خود را پاسخ. با این حال، ما کمک کند بیش از حد. ملاقات با ما را در نیمه راه. اگر شما به ساعات اداری آمده داشتن رفته نیست به بخش، نه دیده سخنرانی، بدون داشتن چه خبر است، مانند، به من کمک کند. من قصد دارم به مانند، خوب، من متاسفم باشد. ممکن است آن زمان به من قرض بدهید که شانه ای برای گریه در، چون من مطمئن هستم که چه می توانم انجام به شما کمک کند اگر شما به حداقل کمک را امتحان کنید خودتان کمی در ابتدا. ملاقات با ما را در نیمه راه. شما می دانید، لطفا آمده آماده برای پاسخ به و آماده تعامل در ماده. این باعث می شود چیزهای بسیار آسان تر برای همه درگیر است. آره، که تقریبا آن. درجه بندی. بنابراین در برنامه درسی، آن را بسیار در عمق مورد چگونه ما درجه. اما در اصل، شکست در این 50٪ از نمره خود را است خواهد بود که psets که دوست داشتنی است، چرا که که در آن شما در حال صرف گسترده اکثر وقت البته خود را در. آزمون ها 40٪ و خود را پروژه نهایی خواهد شد 10٪. وجود خواهد داشت دو آزمون ها در این دوره از ترم. من فکر می کنم زمان و تاریخ هستند همچنین در برنامه درسی ذکر شده است. راه که ما را درجه بندی شود psets خود را این است که ما اساسا چهار ارزش هایی که ما را به هر درجه اختصاص دهید. ما یک مقدار دامنه، صحت، طراحی و سبک. بنابراین همانطور که می بینید، این نوع از ما را فرمول محاسبه psets. سه ما در ترین را وزن به صحت، زیرا بدیهی است مربی تیم خود را باید برای موارد آزمایش که ما می خواهیم آن را برای تست. شما بچه ها همه check50 در اختیار شما. این یک تابع بسیار مفید است که شما می توانید بچه ها همه آپلود کد خود را به سرور ما، که در آن ما آن را برای شما بررسی خواهد کرد. و شما آن را دیده ام چهره frowny، چهره لبخند. آنها واقعا مفید است. لطفا نمی شود دانشجویی که دوست تلاش می کند به hardcode در تمام پاسخ به آنها. من قطعا دیده ام که در آن pset کسی را دیدم تمام ارزش های check50 و آنها فقط سخت in-- اگر کدگذاری این تعداد، چاپ کردن این عدد است. اگر این تعداد، نسخه قابل چاپ کردن این تعداد است. آیا انجام این کار نیست. هر چند از لحاظ فنی حتی check50 درست باشد، راه خود را از حل مشکل این است که درست نیست. پس فقط به مقدار کم استفاده check50. اما همچنین مطمئن شوید که شما را درک چگونگی عملکرد آن، برنامه عملکرد در علاوه بر این به check50، زیرا ما می توانیم هر آزمون نیست مورد ممکن است از check50. ما می شود آزمایش برخی از آنها. طراحی اساسا، چگونه به خوبی طراحی شده کد شما است؟ اگر شما چند کپی چسباندن هستند خط کد بارها و بارها. شاید شما کاملا ندارد بهترین طراحی در کد خود را. شاید زمان برای اضافه کردن که حلقه آن است. اساسا، در اینجا آن را فقط به همه در مورد تلاش برای انجام کد خود را، تلاش برای نوشتن کد خود را به عنوان موثر به که ممکن است به طوری که برنامه خود را اجرا می با بیشترین سرعت ممکن. در نهایت، ما باید سبک. بنابراین سبک نوع از است دلخواه مدت، ذهنی است. من می دانم که ما رسما از یک راهنمای سبک 50 برای CS50، که در آن به شما می گوید، آه شما، باید یک فضای اینجا. شما باید نوع فرمت کد را در این راه. شما باید همه چیز نام این راه. من واقعا نمی مراقبت، در هر سه، چگونه شما انتخاب می کنید به سبک کد خود را، فقط تا زمانی که شما اقامت سازگار است. به عنوان مثال، اگر شما به دوست ترک یک فاصله پس از چهار خود را قبل از چهار حلقه خود را، فقط انجام این کار در هر زمان. هنوز نه از نوع آن انجام دهد. آیا انجام این کار بار دیگر نیست. اگر دوست دارید برای حفظ در اشکال مختلف فضای پرانتز یک روش خاص، فقط همیشه آن را که راه را انجام دهد. هنوز نه از نوع آن را انجام جایی در اینجا و در جایی وجود ندارد. زمانی که ما درجه بندی، این واقعا دشوار است اگر هیچ ایده چگونه شما در حال کد قالب بندی شده خود را، همه چیز حواس پرت و خارج از محل. اگر شما فقط آن را نگه دارید سازگار باشد، آن را بسیار آسان تر برای من به عنوان بیشتر قادر به خواندن کد خود را. آن را بسیار آسان تر برای شما به عنوان یک دانشجوی قادر به از طریق کد خود را نگاه کنید و ببینید که چه چیزی اشتباه است با آن را بریده بریده چرا مسائل وجود دارد. سبک یکی از ساده ترین چیز است شما بچه ها می توانید انجام دهید برای گرفتن نمره کامل است. اساسا، اگر شما فقط مراقبت، اگر شما پنج دقیقه از توجه به کد خود را در هر هفته، شما باید شود گرفتن امتیاز به سبک کامل است. در نهایت، ما باید آنچه را به نام چند برابر از دامنه. Scope-- من می دانم آن بزرگ کلمه، به خصوص در این کلاس است. اما دامنه، که به معنی این است که شما در حال تلاش psets به بهترین توانایی خود را. اگر شما در سه به نوبه خود چهار مشکلات خود و حتی نمی تلاش یکی از آخرین، شما احتمالا رفتن به از دست دادن برخی از نقاط در دامنه. حتی اگر شما فقط شروع مشکل، بهترین کار خود را از طریق آن راه رفتن. حتی اگر آن کار نمی کند، آن را در، چرا که نشان می دهد و نشان می دهد به ما که شما در حال تلاش، که شما مجموعه ای مشکل تلاش به بهترین توانایی خود را. و سپس ما می تواند شما را امتیاز کامل برای دامنه. دامنه است برای زمانی که ما بسیار مهم در مورد پایین ترین نمره قطره pset صحبت کنید. بنابراین در طول این دوره از ترم، شما بچه ها نه psets. و ما در واقع می شود حذف پایین ترین نمره از آن نه اما تنها در صورتی که شما دارای نقاط دامنه کامل. بنابراین اگر شما در یک pset ناقص به نوبه خود، متاسفانه، ما می توانیم که رها نمی کند، چون دامنه خود را امتیاز تکمیل نشده است. بنابراین حتی اگر شما در هفته افتضاح که در آن شما در حال مرگ و شما بیمار هستید یا سگ خود می میرد، گربه خود می میرد، و شما با مشق شب غیرمنتظره، فقط تلاش pset. آیا آن را به بهترین توانایی خود را. اگر آن کار نمی کند، مهم نیست. فقط آن را در تبدیل شود. حداقل ما می توانیم شما برای تلاش اشاره می کند. A برای تلاش در این کلاس است. حداقل کمترین افت نمره برای تلاش. پس آره. که تقریبا آن را. آیا کسی سوالات دور در ما چگونه در کلاس؟ و یا هر یک از این؟ هر یک از این پس far-- بخش، ساعات اداری؟ خنک. باشه. بنابراین این یک موضوع است که هیچ یکی واقعا دوست دارد به بحث در مورد. من واقعا نمی خواهم در مورد آن صحبت کنید. شما بچه ها واقعا نمی خواهید به گوش من در مورد آن صحبت کنید. اما متاسفانه، ما همه باید در مورد آن صحبت کنید. دیوید 20 دقیقه را صرف سخنرانی صحبت کردن در مورد آن است. و این موضوع است صداقت دانشگاهی. بنابراین ما همه در اینجا احتمالا نوشته شده مدتی مقاله در زندگی حرفه ای دانشگاه ییل است. ما احتمالا یک بحث که در آن ما را بدست گفته شده است مقاله ما به خوشه چینی کردن نیست، چون که کار ما نیست. در علم کامپیوتر، ما همان نوع از مفهوم. همه کار که شما را انتخاب و تمام کد که شما ارسال باید کدی که شما نوشته شده است باشد. باید کد که شما را نمی کپی شده از جای دیگری است. باید کد نیست که شما اینترنتی گوگل جستجو کرده و در plopped و شما واقعا نمی دانم اگر آن کار می کند. شما نوع حس دارند آنچه در آن انجام اما نه واقعا. زمانی که در شک، در اصل، آن را فقط معقول باشد. در برنامه درسی ما، ما یک لیست کامل از همه چیز ما می بینیم به عنوان معقول در مقابل معقول نیست. به عنوان مثال، معقول است که شما و دوست شما بحث در مورد آنچه که بهترین راه برای رفتن در مورد منطقی حل یک مشکل. که نسبتا مناسب. چه نخواهد بود معقول و منطقی است اگر شما بچه ها با هم، همان کد تایپ شده، و تبدیل در همان کد. که منطقی نیست. همان چیزی که، نوع مقاله. اگر می خواهید به بحث در مورد با دوستان خود، با سلام، این چیزی است که من می خواهم در مورد ارسال. این مراحل من می خواهم هستند را به نوشتن در مورد آن، بزرگ است. شگفت آوره. لطفا با یکدیگر همکاری می کنند. اگر شما بچه ها شروع نوشتن همین، به نوبه خود در همان مقاله که کمتر OK. بنابراین، هنگامی که در شک، فقط آن را انجام نمی. در اینجا، ما در CS50، ما باید اسکریپت که اجرا به طور خودکار به آزمون نه تنها صحت کد خود را، بلکه منحصر به فرد از کد خود را. پس لطفا ما را در موقعیت قرار داده نشده از نیاز به به EXCOMM ارجاع پرونده خود را. لطفا فقط برای همه، اجازه دهید فقط این تجربه فوق العاده است. همه بهتر یاد می گیرد، همه ما شادتر، و ما همه به راه اندازی موفقیت در این دوره است. چیزی که بسیار منحصر به فرد در مورد این کلاس که من فکر می کنم هر کس باید واقعا توجه به این است که ما چه تاسف نام بند در برنامه درسی است. بنابراین اساسا، در عرض 72 ساعت، اگر شما فکر می کنید چیزی را انجام داده ام شما واقعا مطمئن هستید شد مناسب، لطفا به ما رسیده است. ما به شما قول می دهم که در عرض 72 ساعت ما را به خودمان رسیدگی مورد بدون مراجعه به بالاتر قدرت در دولت. بنابراین اگر شما به من می آیند و می گویند، اندی، هی، من واقعا متاسفم، اما من فکر می کنم یک جفت خط در من وجود دارد کد شب گذشته که من از گوگل، خاموش کردم از پشته سرریز، کپی و جا به جا، و من واقعا، واقعا متاسفم در مورد آن، اجازه دهید من می دانم. لطفا نه تنها اجازه دهید آن را چرک و فقط امیدوارم که من آن را گرفتن. ما آن را گرفتن خواهد شد. فقط به من می آیند. اجازه دهید من می دانم ظرف 72 ساعت. ما یک راه حل را کشف کردن. و ما قول می دهم که ما نمی خواهد برای اشاره مقامات دانشگاه در اصل. پس از آن به نفع شما است فقط با همه صادق باشد در این دوره است. باشه. باشه. بنابراین در حال حاضر، به سرعت قبل از من در حرکت، آیا کسی سوال در مورد تدارکات در چه دوره های ما در حال رفتن برای اجرا، چگونه بخش می رویم برای اجرا، هر یک از آن؟ باشه. آره. مخاطبان: [نامفهوم]؟ ANDI PENG: آره. بنابراین quizzes-- چگونه بسیاری از شما می در بخش دوشنبه / چهارشنبه؟ چگونه بسیاری از شما را در سه شنبه / پنج شنبه؟ OK، پس از آن تقسیم جامد در اینجا. بنابراین راه است که ما اجرا آن را در دانشگاه ییل است که ما در حال رفتن به دو جداگانه quizzes-- یکی برای هر section-- که خواهد شد در طول کلاس گرفته شده است. من فکر می کنم اکتبر، پایان ماه اکتبر، چیزی شبیه به آن، به عنوان یکی از هفته از مسابقه. آره، بنابراین فقط به کلاس می آیند. در روز دوشنبه یا چهارشنبه، شما در مسابقه را می گیرم. در که روز سه شنبه یا پنج شنبه، شما یک مسابقه های مختلف را می گیرم. اما همان مواد پوشش داده خواهد شد. آره. سوال خوبی بود. آره. رسید که در آن ما رفتن به بررسی نمرات ما؟ ANDI PENG: آره. بنابراین من خواهد شد ارسال کردن پست الکترونیکی هر آنچه در هر هفته وقتی آزمونها graded-- یا، با عرض پوزش، که psets می درجه بندی. Psets معمولا تبدیل در ظهر یا جمعه. بنابراین من قول می دهم که من سعی کنید به آنها به شما توسط ظهر جمعه بعد. هر زمان که من کلاس pset، من ارسال خواهد شد یک اطلاع رسانی در کتاب درجه که به شما می گوید نمره خود را می توان مشاهده آنلاین. بنابراین در این هفته، پس از من پایان درجه بندی psets هفته گذشته، شما بچه ها یک ایمیل دریافت کنید اطلاع رسانی به شما می گویم، هی این است که در آن شما به دیدن نمرات خود را بروید. و شما می توانید هر دید شکست از نمرات خود را. شما می توانید نظرات را مشاهده کنید. آه، چیزی سریع نیز. بخش نظرات در بزرگ کتاب جایی است که من احتمالا صرف اکثریت از درجه بندی هم من. بنابراین چیزی که واقعا مهم است که شما بچه ها در حال مشاهده نمرات خود را در psets خود را نه تنها به دنبال در نمره فیزیکی بلکه در نظر گرفتن زمان به واقعا خواندن نظرات من. اغلب که به شما بازخورد به چگونه شما حل یک مشکل. اگر شما نیاز به انجام چیزی کمی بهتر است، انتقاد سازنده معمولا بهترین در آن بخش نظرات داده شده است. پس لطفا، لطفا، من قصد دارم به صرف زمان نوشتن نظر. لطفا، من واقعا آن را درک اگر شما بچه ها آن نظرات را بخوانید. باشه. خنک. خیلی خوب. بنابراین ما می رویم به شروع به صحبت کردن و فقط بررسی سرعت برخی از مواد از هفته صفر فقط بنابراین ما در حال در صفحه سمت راست برای آغاز مشکلات این هفته. بنابراین در حالی که حلقه است از سه نوع از حلقه ما قبلا در این کلاس بحث شده است. در حالی که اساسا یک حلقه است در نحو نوشته که در آن، در حالی که یک شرایط خاص، این کار بارها و بارها، درست است؟ از آن فکر می کنم در این گرافیک در اینجا. شما در حال رفتن برای شروع در نقطه خاص در کد خود را. شما در حال رفتن برای ورود به شرط حلقه if-- من نمی دانم x کمتر از یک است. در صورتی که درست است، شما در حال رفتن برای اجرای بدنه حلقه. و شما در حال رفتن به انجام که دوباره، دوباره، دوباره، و over-- همین دلیل است که آن را به یک loop-- تا شرایط خود می شود نادرست است. بنابراین در این روش، یک حلقه در حالی که یکی از راه های ساده تر است به هر نوع بیماری است که نیاز به تکرار و بیش از بیش و بیش از. فقط مراقب باشید هر زمان که باشد شما در حال نوشتن هر نوع حلقه که شما باید یک شرط خروج به عنوان همچنین به عنوان یک به روز رسانی به هر آنچه در آن است به طوری که حلقه خود را نه تنها اجرا و بیش از بیش بی نهایت. در هر صورت، شما در حال رفتن به خواهید مطمئن شوید که شما در حال تغییر برخی از جنبه های کد خود را و یا در پایان از حلقه فقط مطمئن شوید که شما یک راه پیشرفت به سمت شرایط که شما می خواهید برای دیدار به پایان. آیا این را حس به همه؟ ما فقط نمی خواهم به در این مارپیچ که در آن گرفتار ما در اطراف و در اطراف بروید و هیچ راهی برای شکستن حلقه وجود دارد. و هر حلقه در اصل یک راه انجام این کار. باشه. در مرحله دوم، بسیاری از شما در psets ماریو خود را احتمالا تا به حال به استخدام این نوع از حلقه. آن را به نام حالی که حلقه. اول از همه، هر کسی می تواند به من بگو چه تفاوت بین یک انجام در حالی که حلقه و یک حلقه در حالی که؟ آره. مخاطبان: ساختار do while اجرا می شود در ابتدا [نامفهوم]. ANDI PENG: بله، دقیقا. بنابراین یک در حالی که حلقه همیشه هر چه در داخل انجام دهید، در داخل براکت وجود دارد و آن شرط قبل از چک کردن برای the-- با عرض پوزش، می کند که قبل از کد برای چک کردن وضعیت. و این است که مخصوصا با ما مرتبط در اینجا در این کلاس، به دلیل اینکه اکثر بار ما در حال رفتن به می خواهم به بی درنگ کاربر برای نوعی از ورودی می باشد. و پس از آن، بسته به ورودی آنها به ما بدهد، پس ما می توانیم ارزیابی، آه، آیا ما باید به آنها بی درنگ دوباره؟ بنابراین در ماریو، در صورتی که کاربر به شما داد ارتفاع منفی، برای مثال، شما در حال رفتن به اولین اعلان و انجام هر کاری در داخل است. پس از آن شما در حال رفتن به چک در حالی که. شما می دانید، منفی 1، این است که یک عدد مثبت؟ اگر این طور نیست، من قصد دارم برای رفتن تماس و تکرار و تکرار انجام و تکرار و تکرار تا زمانی که در نهایت شما یک شماره که دوست دارید به من بدهید، که همه ما می توانید در کد ما را استخدام کنند. این بسیار مهم برای اساسا هر ورودی کاربر است. من می توانم شما را تضمین هر زمان در یک pset که در آن ما از شما درخواست به ورودی هر نوع از کد، ما به احتمالا به شما بدهد مورد آزمون که در آن ما رفتن به شما چیزی بد که رفتن به تلاش برای شکستن کد خود را. اگر ما سعی می کنیم به شما بخواهید به یک ورودی عدد صحیح، ما ممکن است فقط شما یک رشته و ببینید که چگونه شما می توانید رسیدگی است. اگر ما از شما درخواست استخدام سن، ما ممکن است شما یک عدد منفی را ببینید که چگونه شما می مسئولیت رسیدگی به این. فقط مطمئن شوید که شما بچه ها در حال آزمایش برای موارد که در آن شما بهترین نیست ورودی، اجازه دهید فقط می گویند. و یک در حالی که حلقه است اغلب بهترین راه برای طراحی کد خود را به طوری که آن را مطابق است که دامنه. باشه. باشه. پس این است که احتمالا بیشتر حلقه های پیچیده از سه که ما تا کنون دیده ام. و به نظر می رسد در ابتدا بسیار ترسناک است. اما من به شما تضمین، هنگامی که شما بچه ها از آن آویزان از نحوه استفاده از یک حلقه، آن را یکی از چیزهایی که مفید ترین، ترین ابزار های مفید در زرادخانه خود را برای حرکت رو به جلو در این کلاس است. بنابراین برای مثال، در ابتدا، ما این بلوک بسیار ساده بود که فقط گفت: تکرار این خاص عبارات تعداد معینی از بار. به هر حال، SAJ-- که Scaz اندی جیسون است. ما اغلب ایمیل های SAJ ما وارد شوید. اگر ما می گویند SAJ، انجام نمی شود اشتباه گرفته شود. که فقط به ما. بنابراین در ابتدا، ما قادر به شد یک بلوک که گفت، تکرار می کنم دوست دارم SAJ! 10 بار. بسیار ساده. منطق پشت آن است که بسیار، بسیار ساده، درست است؟ من می خواهم به اولین بار از طریق اول زمان و، بار دوم ببینید و این که، بار سوم را مشاهده کنید، غیره و به همین ترتیب، تا زمانی که شما به 10 رسید. و راه ما را نشان دهنده است که در کد فقط از طریق یک حلقه ساده برای است. بنابراین، شما در حال رفتن به اعلام متغیر خود را در اینجا، در این مورد، با یک int است. ما قصد داریم به نام آن من. ما قصد داریم به آن را مقداردهی اولیه به 0. و نسخه توقف است رفتن به من کمتر از 10 است. و به روز رسانی است برای رفتن به من + +. و در داخل حلقه، آن را برای اجرای آن را تا در نهایت بازدید از پایان condition-- که در آن مورد، آن را به شکستن حلقه. باید مسائل وجود داشته باشد که شما بچه ها همه نوع از دیده می شود قبل و تا به حال انجام برای مشکل شما مجموعه ای از یک. آیا کسی هر گونه سوال در مورد حلقه در حال حاضر؟ باشه. عالی. باشه. بنابراین برای کسانی که از شما که به عنوان خوانده شده تنظیمات pset برای این هفته می دانیم که ما در حال رفتن به به استخدام چیزی به نام ASCII ASCII و جدول. پس داود در سخنرانی بیش از خلاصه رفت چگونه کامپیوتر essentially-- همه چیز در یک کامپیوتر در کد گذاری باینری، در صفر و آنهایی که. و راهی که کامپیوترها قادر برای ذخیره مقادیر مختلف علاوه بر به صفر و آنهایی که از طریق نقشه برداری هستند تعداد کسانی که به نمایندگی از سایر ارقام و یا شخصیت اساسا دیگر. بنابراین در این مورد، یک ASCII table-- همه آن کند شخصیت نقشه، یا کاراکتر، به اعداد است. به طوری که فایل کد منبع در خود را computer-- آن را می بیند، با سلام، یک دسته از صفر و آنهایی که، صفر و آنهایی که، صفر و آنهایی که. این چیزی است که ذخیره شده در واقعی حافظه از کامپیوتر شما. اما زمانی که ما می خواهیم به انسان برقراری ارتباط با کامپیوتر، ما want-- می گویند، برای مثال، اگر من می خواهم بزرگ A در، من قصد دارم به نیاز به راه از گفتن کامپیوتر، آه، وقتی که من نوع حروف بزرگ A، منظور من این نمایندگی در دودویی. و به این ترتیب راه ما انجام انداخت که یک چیزی به نام دلخواه جدول ASCII، که در آن ما به عنوان انسان، به عنوان برنامه نویسان، چند وقت پیش، ما را خودسرانه تصمیم گرفت که ما قرار بود به اختصاص این تعداد ارزش به این شخصیت. پس شما بچه ها می توانید این آنلاین گوگل. من فکر می کنم یک لینک به آن در شما وجود دارد pset-- فقط یک جدول نقشه ASCII، ASCII جدول. این فقط ترجمه باینری اعداد را به حرف می باشد. و آن را که بسیار است برای مجموعه ای مشکل خود را مفید هر زمان که شما می خواهید محاسبه هر چیزی و یا اگر شما می خواهید برای نشان خاص شخصیت یا اعداد صحیح یا دستکاری شخصیت های خاص. آن را که بسیار است مهم است که تمام می دانم که چگونه به حرکت یک جدول ASCII. بنابراین برای مثال، حروف بزرگ با تعداد 65 ارائه شده است. بزرگ و کوچک یک توسط 97 ارائه شده است. بنابراین این مهم است که بدانید که تفاوت بین این دو ارزش 32 است. اغلب اوقات، اگر شما نیاز به تبدیل از یکی به دیگری، تفاوت 32 است. و نگران نباشید اگر شما مهربان هستید از اشتباه در این در ابتدا. ما بیش از اینکه چگونه ما را استخدام در کد واقعی. باشه. بنابراین برای کسانی که از شما با لپ تاپ است، احساس رایگان به جلو و یک جدول ASCII، چرا که این احتمالا نیاز به شما بچه ها به مرجع چه شخصیت های می باشد. باشه. بنابراین دانستن است که برخی از شخصیت نقشه به شماره های خاص، اگر من به اجرا فقط اولین خط که code-- تابع () printf A، کوچک، منهای حروف بزرگ A. آیا کسی یک حدس در چه خواهد چاپ از روی صفحه نمایش در حال حاضر؟ پس اول از همه، چه حروف کوچک نشان می دهد؟ چه تعداد است که کد گذاری شده در جدول ASCII. متاسف؟ مخاطبان: 97؟ ANDI PENG: 97، بزرگ است. و چه بزرگ A است؟ مخاطبان: 65. ANDI PENG: پس چه 97 منهای 65 است؟ مخاطبان: 32. ANDI PENG: OK. بنابراین چه چیزی شما فکر می کنم بچه ها است که به اتفاق می افتد زمانی که من ورودی که خط از کد به کامپیوتر من؟ مخاطبان: [نامفهوم]. ANDI PENG: با عرض پوزش، صحبت کردن. بدون نگرانی. این بسیار امن است محیط زیست، منهای دوربین. ما همه رفتن to-- هیچ نگرانی. فقط ما همه رفتن به وانمود کنیم آن را فقط به ما در این اتاق سرد. بدون نگرانی. بدون درخواست بیش از حد احمقانه است. بدون پاسخ، پاسخ احمقانه است. من احتمالا رفتن به اشتباه در این دوره از تدریس من بود. به طور جدی، بچه ها، فقط آن را بروز دادن. اعتماد به نفس در خودتان می شود، شما می دانید؟ پس چه بود؟ چه کسی گفت که پاسخ آخرین؟ باشه. فریاد که خوب و روشن است. مخاطبان: 32؟ ANDI PENG: 32. خوب، اجازه دهید این کد را اجرا و ببینید اگر این چیزی است که اتفاق می افتد. باشه. به طوری که شما بچه ها می توانید نوع ببینید، نماد معمولی من راه اندازی در اینجا برای اینکه چگونه ما را استخدام هر نوع برنامه در کامپیوتر ما است. ما باید تابع اصلی ما در داخل تابع اصلی ما است. من فقط رفتن به کپی و این خط از کد وارد کنید. همچنین هنگامی که شما بچه ها مراقب باشید در حال کپی کردن و چسباندن کد. اپراتورهای گاهی اوقات خاص به درستی رب بیش از نه. در آن صورت، منهای ثبت نام در واقع یک خط تیره. و به این ترتیب کامپیوتر آن را انتخاب کنید تا. بنابراین من مجبور به رفتن به عقب و از لحاظ جسمی تکرار است. فقط مراقب باشید در هنگام باشد شما بچه ها انجام می دهند که. باشه. ما قصد داریم برای اجرای این اینجا. بنابراین ما قصد داریم به سی دی به section2 ما است. من این برنامه را asciimath نامیده ام. بنابراین به یاد داشته باشید، زمانی که ما هر اجرا برنامه، ما می خواهیم به اولین آن را کامپایل با اجرای آن از طریق ایجاد کنیم. و پس از آن ما می خواهیم به واقع اجرا برنامه را با اجرای دات بریده بریده. بنابراین ما در حال رفتن به ./asciimath. راست، در آنجا می رویم. و ما می بینیم 32. خوبی انجام می شود. شما شایستگی یک قطعه از آب نبات. آب نبات برای شما. متاسف. خیلی خوب. باشه. بنابراین ما می توانیم به عنوان مثال ما به اینجا بروید. آه، نه. آه. باشه. من فقط رفتن به آن را نگه دارید می خواهم که. باشه. باشه. به طوری که شما بچه ها می توانید ببینید، ما می توانیم انجام بسیاری از چیزهای بسیار جالب است، بسیاری از چیزهای بسیار سرد، بسیاری از همه چیز بسیار پیچیده که شامل کاراکترهای ASCII و اعداد. هنگامی که شما را به خط پنج، که بسیاری به دنبال همراه است. ما قصد داریم به از طریق بخش. در صورت تمایل به، اگر شما می توانید، دلیل آن بر روی کاغذ برای اولین بار در آنچه که باید اتفاق می افتد زمانی شما ورودی چنین رشته ای از ارزش ها. به عنوان مثال، در آن خط گذشته، ما باید z-- که نشان دهنده یک number-- خاص a-- که همچنین نشان دهنده یک برخی از number-- به علاوه 1 modulos 26 به علاوه کوچک. اگر شما بچه ها ادامه مطلب را بخوانید از طریق این، شما می ممکن است یک الگوی در آمده چگونه ما در حال دستکاری کد. من به شدت، به شدت پیشنهاد بعد از همه شما بچه های پیش رو و ورودی به کسانی که در کامپیوتر شما و ببینید که چه نوع شماره در حال بیرون آمدن و استدلال از طریق همین دلیل کسانی که می اتفاق می افتد، چرا که برای psets خود را آن خواهید بود واقعا مهم برای شما به درک چرا همه چیز خاصی اتفاق می افتد. همه این اسلاید آنلاین خواهد بود. بنابراین هیچ نگرانی در مورد تلاش برای از لحاظ جسمی کپی یادداشت. آنلاین همه چیز است. این بخش خود را آنلاین. تمام کد منبع که من در حال اجرا آنلاین خواهد بود. آره. آیا شما هنوز هم یک سوال؟ مخاطبان: modulos چیست؟ ANDI PENG: OK. بنابراین پیمانه یک اپراتور که رفتن به است می تواند بسیار به pset بچه شما مهم اینجا. پس راه که اپراتورهای در C و کار برنامه نویسی است که شما آنچه را به نام نماد تقسیم و نماد مدول، که است که درست مثل علامت درصد. بنابراین در C، زمانی که شما یک عدد صحیح با یک اسلش تقسیم یک عدد صحیح، C تمایل به می خواهید به قطع همه از نقطه اعشاری، به دلیل یک عدد صحیح می خواهد برای تبدیل به یک عدد صحیح. آن را به می خواهم به یک دو با یک دسته از اعشار همه پس از آن. بنابراین اگر من 3 تقسیم بر 2، آن را برای قطع 0.5 و فقط به شما 1 است. بنابراین این چیزی است که به بسیار مراقب باشید از زمانی که شما انجام هر نوع از ریاضی در برنامه نویسی، است که تعداد شما ممکن است اعداد نه که شما، فکر می کردند همین دلیل است که در گرد خود آخرین pset بسیار مهم است. پیمانه به شما می دهد باقی مانده است. بنابراین برای مثال، اگر من 3 پیمانه 2-- تا 3 درصد ثبت نام 2-- آن را به شما باقی مانده از که می دهد. بنابراین 3 تقسیم بر 2 1.5 است. 1 باقی مانده 1 است. آن را به شما 1، را که باقی مانده از آن است. بنابراین، هنگامی که شما بچه ها در حال حرکت از طریق جدول ASCII، پیمانه به پایان خواهد رسید چیزی که بسیار مهم است، و ما بحث در مورد آن بعد از آن. باشه. بنابراین چیزی است که زیبا، بسیار جدید و بسیار منحصر به فرد که ما در این هفته بحث است مفهوم آنچه یک آرایه است. بنابراین آرایه اول است نوع ساختار داده که ما قصد داریم به روبرو می شوند در این کلاس است. همه ساختار داده است برخی از خودسرانه، به معنای واقعی کلمه از چیزهایی مانند ساختار که ما به عنوان برنامه نویسان ایجاد کرده اند، که ما در کد قرار داده ام که ما می تواند شامل تکه های دیگری از کد. بنابراین در این معنا، یک آرایه از آن فکر می کنم به عنوان یک فایل کابینت، که در آن اگر شما برای باز کردن مختلف قفسه های کابینه فایل خود را، شما می توانید چیزهای مختلف دسترسی داشته باشید. در حافظه، یک آرایه فقط انجام همان چیزی که بر روی کامپیوتر شما. شما می توانید ما متفاوت blocks-- دارند آنها indices-- از یک آرایه است. این درست مثل یک بلوک، یک قفسه از حافظه که ما در درون خود ایجاد کرده اید کامپیوتری که شما می توانید ورودی کارهای معینی را در فضاهای مختلف. بنابراین با یک آرایه، شما همیشه به specify-- شما باید برای مشخص اعلام یک آرایه در فرمت های زیر است. شما در حال رفتن به اولین تعیین نوع داده که شما می خواهید برای ایجاد آرایه است. اگر من می خواهم یک آرایه از اعداد صحیح، من رفتن به قرار دادن INT سمت راست وجود دارد. اگر من می خواهم یک آرایه از رشته ها، من قصد دارم به قرار دادن رشته وجود دارد، نام آرایه خود را، و سپس شما در حال رفتن به براکت مربع است. و داخل براکت، شما رفتن به اندازه آرایه خود را. چیزی که واقعا مهم به خاطر داشته باشید که هنگام ایجاد آرایه است که، هنگامی که شما یک ایجاد آرایه، که اندازه نمی توانید تغییر دهید. بنابراین اگر شما می دانید که در حال حاضر شما باید یک آرایه از اندازه 10، شما می دانید که من قصد دارم به 10 سلول داخل و یا 10 شاخص در این آرایه، و آن را هرگز برای گسترش یا کاهش بدون توجه به وجود چیزی است، و که در حال حاضر فقط 10 بلوک از فضای اختصاص داده شده در حافظه خود ذخیره است که می تواند 10 همه چیز از هر آنچه که شما قرار داده ام. بنابراین در این روش، یک نوع داده آرایه، ساختار داده ها این است که یک آرایه بسیار متفاوت از برخی دیگر خواهیم است پوشش بعدا در این دوره است. آره. به عنوان مثال، اگر شما به خواست ایجاد یک آرایه از اندازه 3 که متغیرهای موجود از integer-- آه، با عرض پوزش، از temperature-- و درجه حرارت، از البته، یک عدد صحیح است. بنابراین ما از نوع int ایجاد است، که نوع داده ها از آنچه ما می خواهیم را ذخیره کنید. ما در حال رفتن به به این درجه حرارت به خاطر نامگذاری نامگذاری چیزی است که همه ما درک می کنیم. و ما در حال رفتن به براکت مربع است. و ما می خواهیم سه عدد. بنابراین ما در حال رفتن به قرار دادن سه داخل آن است. چیزی که واقعا مهم است که در ذهن داشته باشیم این است که آرایه ها صفر شدهاند. که بدان معنی است که شما شروع با شاخص 0، و شما را اجرا کنید تا از طریق اندازه آرایه منهای 1. بنابراین برای مثال در اینجا، ما یک آرایه از اندازه 3. آن را قادر برای برگزاری سه مقدار است. اما تعداد themselves-- که تعداد، آرایه، که شاخص، آرایه، 0 طریق 2. پس بچه ها، لازم است واقعا، واقعا مراقب باشید در هنگام شما در حال رفتن را از طریق مشکلات خود را تنظیم کنید و ایجاد هر نوع آرایه، چرا که بسیاری از اوقات آن را واقعا، واقعا آسان فراموش کرد که. من در واقع شاخص ندارد 3، که من در حال حاضر فقط که اول از 2. و اگر شما سعی کنید دسترسی به شاخص سوم، آن را برای رفتن به چه به نام نابودگر تهی. آن را به واقع نه در آرایه وجود دارد. و کامپیوتر می باشد رفتن به دوست دارم. بنابراین مراقب باشید هر زمان که باشد شما دسترسی به همه چیز فقط به اطمینان حاصل شود که شما به یاد داشته که آرایهها zero-نمایه میشود. باشه. بنابراین به عنوان مثال اول است فقط یکی از راه های ایجاد یک آرایه. مثال دوم من زیر فقط یک راه جداگانه است ایجاد آنچه داده است ساختار است که ما فقط وارد است. بنابراین به جای فیزیکی در حال اجرا از طریق و قرار دادن در درجه حرارت از 0 برابر هر، درجه حرارت 1 برابر هر، درجه حرارت 2 برابر هر چیز دیگری، من در واقع فقط به طور مستقیم آن همه در یک خط ایجاد به دمای براکت برابر است. و توجه در این مورد، شما لازم نیست مشخص کنید که چگونه بزرگ آرایه خود را، چرا که کامپیوتر را به از طریق رفتن و دیدن وجود دارد که سه عنصر در آن آکولاد. و آن را به مطمئن شوید، OK، من نیاز به یک مجموعه ای از اندازه 3. شما در حال رفتن به نیاز به ورودی آن را به صورت زیر. و همچنین، آره، که راه. آیا کسی سوال در مورد چگونه ما را آرایه و یا چگونه ساختار یک آرایه کار می کند؟ آره. مخاطبان: [نامفهوم]؟ ANDI PENG: بله، دقیقا. بنابراین اگر شما به اعلام و مقداردهی اولیه از روش زیر آرایه، که راه دوم این است، شما فقط می توانید آن را ترک کنند. و کامپیوتر به طور خودکار می داند که آن نیاز به تعداد بسیاری از عناصر در آن آکولاد، از هم جدا توسط کاما. بنابراین در اینجا آنها 65، 87، 30 را ببینید. بنابراین کامپیوتر می داند، آه، سه اعداد صحیح وجود دارد. من می دانم که برای ایجاد یک نام آرایه درجه حرارت با سه عنصر در آن است. سوال خوبی بود. آره. مخاطبان: آیا ممکن است به ایجاد نمی یک آرایه با انواع مختلف داده ها که می تواند به آن وارد شده؟ به عنوان مثال، با اعداد صحیح [نامفهوم]؟ ANDI PENG: برای اهداف از این کلاس، نه، در حال حاضر. هنگامی که شما یک داده ایجاد ساختار یک آرایه، شما در حال گفتن کامپیوتر، با سلام، من شما نیاز را به خود اختصاص این حد حافظه در هارد کامپیوتر، با هر سلول یک تعداد معینی از بیت. به یاد داشته باشید که ما در هفته به دست صفر که داده های مختلف انواع اندازه های مختلف؟ بنابراین برای مثال، یک رشته یک مقدار متفاوت است از فضا به جز کاراکتر، که یک مقدار متفاوت از فضا است از یک عدد صحیح. و بنابراین اگر شما مشخص نیست و شما ترکیب و مطابقت با چه نوع از متغیرهای شما، کامپیوتر رفتن به بسیار اشتباه گرفته شود. و آن را به دانستن چه مقدار حافظه را به شما بدهد. بنابراین برای اهداف حق در حال حاضر، کامپیوتر می تواند تنها یک نوع از یک آرایه را تشخیص دهد. سوال خوبی بود. باشه. بنابراین به طور طبیعی، سوال دوم ما است، به خوبی، در حال حاضر که ما ایجاد کرده اید آرایه و ما همه این چیزها قرار داده ام در آرایه، چگونه ما رفتن به قادر به دسترسی به آن؟ بنابراین ساختار معمولی که ما همیشه دسترسی به یک آرایه دوست داشتنی ما برای حلقه است. من به شما قول بچه ها که ما خواهید بود دیدن بسیاری از این مرد. اساسا، در هر زمان که شما می خواهید به ورودی ارزش را به یک آرایه و یا می خواهید به آنها دسترسی داشته باشید، بهترین راه برای انجام این کار برای حلقه است، چرا که در یک حلقه for، شما مطمئن شوید که چگونه بسیاری از شما رفتن به خواهید برای اجرا از طریق آرایه، چرا که شما باید یک نسخه توقف، درست است؟ و هر بار اجرا می کنید از طریق، شما می توانید دسترسی یک عنصر از آرایه های مختلف. و همچنین، این به همین دلیل به طور معمول ما ما شروع برای حلقه در 0 ارزش، زیرا هنگامی که شما دسترسی به آرایه ها، شما می توانید شاخص صفر دسترسی داشته باشید. و پس از آن به موازات بسیار خوبی. شما بچه ها ممکن است می خواستم به ارسال برای INT من برابر با 1. من کمتر یا 3 برابر است. اما آن را نمی خواهد کاملا به عنوان کار خوب در اینجا، زیرا شما تنها عناصر از 0، 1، 2 و. و بنابراین اگر شما برای شروع من خود را در عنصر 1، 2، و 3، شما در حال رفتن برای پایان دادن به در حال اجرا خارج از مرزهای آرایه خود را، و به چیزهای بد اتفاق خواهد افتاد. بنابراین من امیدوارم که شما بچه ها دیدن SEGUE چرا در کلاس های قبلی ما به شما بچه ها آموزش شد که چگونه به اجرا و فرمت یک حلقه for راه است که ما بود. به این دلیل، در حال حاضر ما باید انتقال به آرایه ها، شما می توانید به همین دلیل می آورد به دیدن 0 خود بسیار خوبی برای دسترسی به. پس راه ما انجام این کار است that-- من فقط چاپ آن را در اینجا به خاطر از چاپ آن را. اما من حفره یا سوراخ من، کاما از هم. و دسترسی واقعی بخش اتفاق می افتد. نام آرایه دمای نامیده می شد. پس از آن درجه حرارت و i ام عنصر از آرایه. بنابراین به عنوان برای حلقه اجرا می شود از طریق، آن را برای شروع در 0. آن را برای چاپ کردن صفحه اول 0 از این آرایه. سپس آن را به چاپ از عنصر اول. سپس آن را به چاپ از یک ثانیه. و سپس ما در حال رفتن برای شکستن. است همه روشن در چگونه است که اتفاق می افتد؟ عالی. خیلی خوب. بنابراین در اینجا ما یک راه گفت: اگر ما نمی به سخت کد من in-- به عنوان برنامه نویس. من نمی خواستم به واقع از لحاظ جسمی را در هر عنصر منحصر به فرد از این آرایه. اگر من به جای آن می خواست دارای مقادیر ورودی کاربر، بهترین راه برای انجام این کار؟ خوب، در اینجا من ایجاد کرده است این تابع دوست داشتنی، که در آن من می تواند مجموعه ای را اعلام کند. بنابراین اعضای هیات scores-- اجازه دهید فقط می گویند ما می خواهیم به یک آرایه است که نمرات از تمام 18 برگزار شد از دانش آموزان در این بخش است. من فکر می کنم ما باید کمی بیش از 18 بچه ها امروز. اما به خاطر مثال، اجازه دهید فقط فرض کنیم ما تا به حال 18. من یک نمرات نام آرایه با ایجاد نوع int، به دلیل نمرات، البته، اعداد هستند. و من قصد دارم به 18 در براکت مربع، چگونه بسیاری از دانش آموزان به دلیل این که من می خواهم که قادر به ذخیره نمرات از. و راه من می خواهم جمعیت آرایه است که من می خواهم اجرا آن را از طریق یک حلقه for، از البته، با اینکه 0 0 شاخص است. و پس از آن با 18 بودن من توقف نسخه، به دلیل وجود دارد 18 عنصر در آرایه. و سپس من را به انجام تابع () printf، را وارد کنید گل برای student-- YADA بیارزش. هر کسی می تواند به من بگو چرا در اینجا من چاپ من به علاوه 1 و نه من؟ این نوع از ترفند درخواست، نه واقعا. این کار در واقع از لحاظ جسمی نمی در حال اجرا از کد تاثیر می گذارد. آره. مخاطبان: [نامفهوم] 0؟ ANDI PENG: بله، دقیقا. این کمی بی دست و پا می گویند، با سلام، شما دانش آموز 0 در این کلاس است. این کمی عجیب و غریب. بنابراین ما، به عنوان انسان، واقعا نمی خواهم تا از نحوه فکر می کنم فکر می کنم کامپیوتر. بنابراین حتی اگر در کامپیوتر، آن را ذخیره سازی مقادیر در شاخص 0 ام، هنگامی که ما انسان هستیم، ما واقعا نمی دارم به خودمان را به عنوان صفر است. بنابراین، هنگامی که من فقط چاپ که، من قصد دارم به چاپ و اضافه کردن 1 فقط به خاطر وضوح. بنابراین، هنگامی که من نسخه قابل چاپ، من قصد دارم به قادر به چاپ دانشجویان 1 تا 18. این کار در واقع تاثیر نیست در حال اجرا از کد در هر صورت، راه من را چاپ کنید. اما مراقب باشید زمانی که شما در واقع دسترسی به آرایه. هنگامی که می بینید نمرات من، اطلاع قبلی در اینجا من در واقع دسترسی به شاخص 0 و نه 1 به علاوه 0-- یا 1 به علاوه 1، در این مورد، شاخص آن، بنابراین که در واقع روشن است. هر کس نوع OK در این در حال اجرا است از طریق و با هر شاخص من قرار دادن یک مقدار به آرایه و ایجاد یک آرایه با 18 شماره که کاربر در حال رفتن به ورودی. باشه. خنک. باشه. ما در حال حاضر به چیزی که خیلی حرکت مربوط به این قطعه است. من در سخنرانی دانید، David-- با عرض پوزش، شما یک سوال بود؟ رسید می توانید آن را بزرگ؟ ANDI PENG: آره، بنابراین من سعی کردم. اما من نمی دانم. برای برخی از این دلیل، این نسخه از پاورپوینت است که واقعا کار نمی کند به خوبی با صفحه نمایش. بنابراین ما فقط رفتن آن را نگه دارید مثل این. همه این به صورت آنلاین ارسال شده است. بچه ها متاسفم. آره. باشه. بنابراین ما نیز می توانید رشته داشته باشد. بنابراین اگر شما بچه در واقع notice-- من مطمئن شوید راب بیش از این در آن سخنرانی رفت که او did-- یک رشته است که در واقع فقط یک آرایه از شخصیت ها، اگر شما در مورد آن فکر، درست است؟ یک رشته یک نام یا است جمله یا یک کلمه، درست است؟ اگر من به یک رشته به نام ایجاد Andi-- فقط نام من، A-N-D-I. شما از آن به عنوان فقط یک متغیر فکر می کنم. اما در واقع، آن را شکسته را تنها در آرایه ای از کاراکتر. بنابراین آن را به یک شخصیت در یک مقدار آرایه یک ذخیره می شود. آن را به یک شخصیت N ذخیره شده در شاخص دوم و غیره و غیره. بنابراین در چنین راهی، ما در واقع این نوع ساختار مجموعه در مشخصات برای رشته ما است. بنابراین در اینجا، اگر من به ورودی شد کلمه "خوردن" - پس کلمه رشته برابر دریافت رشته. اگر من به ورودی شد کلمه "خوردن" است که از نظر فیزیکی راه است که کامپیوتر من ذخیره سازی این رشته در حافظه من. و اگر من می خواستم از طریق که اجرا و چاپ که out-- بنابراین برای من به برابر صفر، به یاد داشته باشید، در سخنرانی، ما چیزی که تحت پوشش که strlen نامیده می شود، و یا طول رشته. از آنجا که من در واقع نه می دانم که چگونه بزرگ آرایه است از هر inputting-- کاربر برای مثال، من وارد کلمه "خوردن" و من می دانم که سه شخصیت طولانی، درست است؟ بنابراین من می تواند در سه وجود دارد قرار داده و همه چیز خوب خواهد شد. اما اگر چیزی ورودی کاربر را که شماره های مختلف از ارزش است، شما در حال رفتن به نه قادر به واقعا مطمئن شوید که هنگامی که شما برنامه کد خود را. بنابراین راه است که ما رسیدگی به پرونده آزمون مانند این است که ما چیزی نام strlen، است که فقط یک تابع که شما می گوید چه مدت یک رشته است. بنابراین کلمه strlen. کلمه من است را بخورند. N برابر strlen از کلمه است. می تواند کسی به من بگویید چه که ارزش در واقع سمت راست وجود دارد؟ چه n نشان سمت راست در حال حاضر، در این مثال، خوردن اگر من تا به حال؟ مخاطبان: 3. ANDI PENG: 3، دقیقا. بنابراین ما باید برای INT من برابر با صفر، N برابر با 3، در اصل. و من است که برای اجرا تا زمانی که کمتر از 3I ++. و آن را به اصل رفتن از طریق و انجام همان چیزی. آن را برای چاپ کردن هر مقدار و به شما بدهد E-A-T. این فقط دلالت راه های مختلف از نوشتن آن. که برای رفتن به بسیار مفید است. آره. رسید از مزایای قرار دادن چه خبر از n برابر کلمه strlen در داخل است که برای حلقه [نامفهوم]؟ ANDI PENG: آره. بنابراین اگر ... من باید ... می گویند، برای مثال، اگر من به انجام این کار و پس از آن do-- oop-- که در کد من، این امر در واقع انجام مانند همان چیزی که باشد. با این حال، که دیوید توضیح داد آن را در طول سخنرانی، اگر هر کدام از شما بچه ها به یاد داشته باشید، این بود که، به عنوان انسان، به عنوان برنامه نویسان، ما واقعا سعی کنید به برنامه های ما کد به طوری که کامپیوتر ما است به کار به عنوان حداقل ممکن، به طوری که کد ما بسیار کارآمد است. بنابراین اگر من به حال که وجود دارد، چه از طریق حلقه for من اتفاق می افتد این است که من برای اولین بار می خواهم اعلام متغیری به نام من در حال رفتن به 0. من می خواهم به بررسی، آه، strlen از کلمه چیست؟ آه، strlen 3 است. بنابراین من کمتر از سه؟ بله، در آن است. من قصد دارم را اجرا کنند. و پس از آن بار دوم در اطراف حلقه، من قصد دارم به افزایش کنم. من در حال رفتن به یک است. و من در حال رفتن به بررسی، آه، اما آنچه که strlen از کلمه است؟ آه، آن را سه. و به نظر می رسد می کند که نوع بی فایده است، هر زمانی که شما از طریق حلقه اجرا شود، به چک کردن تابع، حتی اگر strlen کلمه در واقع هرگز تغییر می کند؟ پس از آن قدرت فوق العاده برای یک کامپیوتر است. هنگامی که شما شروع به صحبت کردن در مورد چیزهایی که میلیاردها و میلیاردها هستند و میلیاردها مکان طولانی، تصور کنید کامپیوتر شما نیاز به لحاظ جسمی از طریق رفتن و بررسی همه که هر زمان تنها. به همین دلیل، به تنها به خاطر بازده، ما تمایل به تنها این کار، چرا که این راه ما فقط در حال فراخوانی تابع یک بار در آغاز، و هر بار آن را می رود از طریق آن را برای ذخیره ارزش 3 وجود دارد، که شما نمی باید به طور مستمر بررسی در هر زمان. آره. مخاطبان: با عرض پوزش. فقط [نامفهوم]. می تواند شما را از نوع int N برابر strlen قرار داده و که در بالا در خارج از حلقه for به خوبی؟ ANDI PENG: آره. شما می توانید انجام این کار، کاملا. به همین دلیل ما آن را در اینجا است چرا که راه یک حلقه برای کار است که آن را به نام متغیر محلی در مفهوم که همه چیز شما ایجاد داخل حلقه for تنها در داخل از حلقه for وجود دارد. بنابراین تنها متغیر i در آن براکت وجود دارد. و در اینجا متغیر n نیز تنها در آن براکت وجود دارد. بنابراین اگر شما به استفاده از strlen کلمه چند بار به پایین، مطلقا بهترین راه برای انجام این کار می شود آن را اعلام تا بالای بنابراین شما لازم نیست که برای انجام آن یک بار. آره. مخاطبان: چرا شما یک خط جدید پس از درصد دیدن اگر شما می خواهید برای قرار دادن تمام حروف در کنار آن جدا می کنید؟ ANDI PENG: آه، من می خواستم چاپ تمام آنها در هر خط. مهم نیست. آره، آن را به یک قالب است. این سوال خوبی است، هر چند. بله، اگر من می خواستم به چاپ این همه در فقط یک خط، من در فاصله ندارد. باشه. همه خوب است؟ باشه. خنک. بنابراین من فکر می کنم من به اندازه کافی صحبت کردیم. به نوبه خود شما بچه ها را از طریق اجرا کد و به من بگویید که چه چیزی اشتباه است در اینجا. اشکال کجاست؟ به طوری که شما می توانید ببینید، من اعلام یک آرایه جدید از نوع رشته با نام کلاس. و من سام وارد کرده ایم، جس، و کیم به آن است. و من تلاش برای چاپ کردن تمام عناصر آرایه. می توانید کسی به من بگویید چرا این در حال رفتن به من مشکلات را؟ من به شما بچه 10 را ثانیه به این فکر کنید. باشه. آره؟ مخاطبان: آیا مرکز سمت چپ تا 3 برابر یا [نامفهوم]؟ ANDI PENG: درست است. بنابراین چند بار این است که در واقع رفتن را از طریق این حلقه را اجرا کنید؟ مخاطبان: چهار. ANDI PENG: دقیقا. آن را به طریق چهار بار. آن را به اجرا از طریق در 0، 1، 2، و 3، چون عنصر خود من است کمتر یا 3 برابر است. آن را به جلوگیری از زمانی که آن را 2. آن را به نگه داشتن تا زمانی که از آن بازدید 3. و همانطور که می دانیم، تنها سه وجود دارد عناصر آرایه واقعی ما. اگر ما سعی می کنیم برای دسترسی به چهارم عنصر یا شاخص 3، شما در حال رفتن برای ضربه زدن به جایی در حافظه است که وجود ندارد. این نابودگر تهی به نام. هیچ چیز به وجود داشته باشد. کامپیوتر شما است که نمی با تو بسیار خوشحال است. آره. آیا کسی سوال در همین دلیل است که اتفاق می افتد؟ که یک منطقه معمول برای جلوگیری از است. آره. مخاطبان: آیا اولین نیست اسلاید نیز یک رشته از 2؟ ANDI PENG: شماره بنابراین اساسا، هنگامی که شما در حال ساخت یک آرایه، که حق براکت وجود دارد، که همه number-- آن را به شما می گویم این است که چگونه بسیاری از عناصر من. این در واقع گفتن من شاخص از هر چیزی. بنابراین در این مورد، من می دانم من می خواهم به نوشتن با سه مکان، با سه مکان فیزیکی به هر آنچه من می خواهم به نگه دارید. به همین دلیل شماره سه است. با این حال، اگر من می خواستم به واقع آن را دسترسی داشته باشید، اگر من می خواستم به گفتن نیست، تابع () printf تعداد براکت کلاس، پس از آن شما در حال رفتن به واقع قرار داده است شاخص فیزیکی وجود دارد. آره، سوال خوب است. مخاطبان: بنابراین است که فیزیکی صفحه اول تصور می شود [نامفهوم]؟ ANDI PENG: من متاسفم. می توانید صحبت تا کمی؟ مخاطبان: بنابراین شاخص فیزیکی است [نامفهوم] هر یک از جعبه؟ [نامفهوم]؟ ANDI PENG: آره. بنابراین من قصد دارم برای رفتن به حق در اینجا. فکر می کنم از اینجا ببینید. ما مجموعه ای از اندازه 3. سه مکان وجود دارد، مانند، متغیرهایی فیزیکی در اینجا. اما آنها به نام 0، 1، 2 و. بنابراین اگر من می خواستم به آنها دسترسی داشته باشید، راه است که من به آنها دسترسی تابع () printf از هر آنچه که من در اینجا می خواستم است. شما را مجبور به چاپ به نام آن، زیرا پس از آن کامپیوتر می داند، آه، من نیاز به نگاه در این آرایه برای شاخص 0. آره. اما اندازه آن تغییر نمی کند. اندازه 3 است، بدون در نظر گرفتن از اینکه چگونه آنها را برچسب. باشه. همه خوب است؟ مخاطبان: بنابراین هر بار که من [نامفهوم]؟ ANDI PENG: OK. بنابراین در این مورد، ما واقعا نمی وارد شدن به آن در حال حاضر در این دوره است. اما می دانیم که یک string-- من گفت: قبل از، یک رشته است که در اصل آرایه ای از کاراکتر. بنابراین اگر من ایجاد یک آرایه از رشته ها، من از نوع یک آرایه از آرایه از شخصیت های، درست است؟ بنابراین در این مورد، چون من یک آرایه از رشته ها، اگر شما به ورودی یک کلمه واقعا طولانی بود، که هنوز هم طول می کشد تا تنها یک فضا، چرا که از یک رشته است. اما اگر شما به فکر می کنم شخصیت های که آرایه، پس از آن که در نظر گرفتن خیلی بیشتر شخصیت از هر یک از عبارت دیگر هستند. نه واقعا برای در حال حاضر مهم است. اما این فقط به طور کلی چگونه آن را کار می کند. باشه. پس این چیزی من به شما اجازه انجام دهید این است بسیاری در طول این دوره از ترم. من نیاز به استراحت صدای من. شما بچه ها نیاز به تحریک خودتان. بسیاری از شما احتمالا هم اکنون در حال خواب. من وارد تصادفی مشکلات که در آن ما به عنوان یک طبقه و یا شما با یک شریک در کنار شما در حال رفتن به صرف چند دقیقه بحث درباره در مورد چگونه ما را در مورد حل رفتن و یا ایجاد یک برنامه مانند این. بنابراین در حال حاضر، ما می خواهیم برای ایجاد یک program-- ما در حال رفتن به آن upper.c-- که تبدیل یک کلمه کوچک به طبقه بالا حروف بزرگ string--، متاسفم. کلمه در رشته ها، با عرض پوزش، مترادف است. من قصد دارم به آنها را تغییر دهید به یک معنی دارند. آره. نگاهی به چند دقیقه. آن را ندارد به نوشته شده در هر زبان. فقط در کد شبه و یا منطقی که چگونه ما حتی رفتن در مورد انجام چنین مشکل است. آره. [SIDE گفتگو] همچنین متوجه شدم که شما بچه ها can-- من از نوع پیش از این برنامه است. من حدس می زنم من از فقدان حالت ارائه یک مشکل است. اما این خوب است. [SIDE گفتگو] آره، مدیر فروش، بچه ها. بیا آب نبات. بیا آب نبات. آری! [SIDE گفتگو] ANDI PENG: همچنین، آره، من شروع به پرتاب آب نبات در افرادی که سوال را جواب ندهید. بنابراین شما باید تمام سوالات پاسخ دهد. یا من فرض کنید که مردم که جواب سوال. آره، راه دیگری در اطراف. [SIDE گفتگو] مخاطبان: [نامفهوم] ANDI PENG: آره. آره. [SIDE گفتگو] همه حق است، بچه ها. را، مانند، 10 ثانیه است. [SIDE گفتگو] OK، بچه ها. بنابراین قبل از ما شروع به تلاش برای در واقع از لحاظ جسمی نوشتن کد، یک عادت خوب برای توسعه این است که ما به نوع اول از دلیل می خواهید خارج منطقی چگونه ما آن را انجام دهد. شما می خواهید مطمئن شوید، قبل از اینکه شما از لحاظ جسمی شروع به تلاش برای کد در ماریو، که شما را به مطمئن شوید که شما شبه خود را. این است که شما از طریق گرفتن آنچه شما نیاز دارید برای ایجاد، بنابراین که، هنگامی که شما فیزیکی ارسال برنامه های خود را بعد، شما بهتر می توانند برای گرفتن خطاها هستند در کد و مانند آن خود را. بنابراین ما قصد داریم به شروع by-- به زبان انگلیسی، در شبه، آیا کسی می خواهید را به من یک توضیح کلی چگونه ما را در مورد انجام این کار؟ آره. مخاطبان: [نامفهوم]. ANDI PENG: مطمئنا، هیچ نگرانی. رسید می توانید آن را بپرسید و یا از به کسی که برای دریافت رشته 1-- آره، رشته، و بعد-- ANDI PENG: بله، به طوری که این یک شروع خوب است. من شروع به تایپ کردن، با عرض پوزش، به عنوان شما صحبت می کنند. بنابراین-- مخاطبان: --The کوچک اعداد بالاتر، درست است؟ و یا حروف کوچک دارای شماره بالا؟ ANDI PENG: دقیقا. مخاطبان: بنابراین پس از آن ما تفریق 32 از هر [نامفهوم]. ANDI PENG: بزرگ. بنابراین ما از یک مفهوم کلی دارند چگونه به مورد این مشکل کار می کنند. آگاهی از این که ما به نوعی به دست راه فیزیکی است که رشته در حافظه ذخیره می شود، چه شما در حال حاضر می دانم که شما در حال رفتن به احتمالا ارسال به در کد خود را به منظور از طریق رشته حرکت می کند؟ رسید برای حلقه. ANDI PENG: برای حلقه، دقیقا. عالی. بنابراین ما یک نوع عام شبه نوشته شده پایین این نوع از دادن شما اشاره به اینکه چگونه شما در مورد حل مشکل حرکت می کند. حالا که شما این، شما می توانید آن را برای بعد مرجع در زمانی که شما در حال تلاش برای در واقع کد خود را بنویسید. پس ما در واقع می توانید به اینجا بروید. و من یک تابع به نام کردم upper.c-- وجود دارد آن را فقط یک قالب خالی is-- در حال حاضر که شما بچه ها در حال رفتن به به من کمک شکل در مورد نحوه ارسال این خط از code-- خط از کد است. این چند خط از کد خواهید بود. هنگامی که شروع هر نوع از pset خالی، چه اولین چیزی که من نیاز به یاد داشته باشید انجام دهید؟ مخاطبان: [نامفهوم]. ANDI PENG: بله بزرگ. شامل. stdio.h. غالبا این یکی از است اشتباهات مردم آسان ترین خواهد شد زمانی که آنها نوشتن، این است که آنها را فراموش که شامل کتابخانه مهم آنها نیاز دارند. بنابراین اگر این ساعات اداری و شما مانند، من نمی دانم که چرا من کد کار نمی کند. می توانید به من بگویید چرا آن را به کار نمی کند؟ ما قصد داریم به شما می گویند # شامل؟ شما باید آن را # شامل. باشه. بنابراین ما استاندارد I / O را در اینجا. این است که تنها کتابخانه ما قصد داریم به نیاز دارید در اینجا؟ چه چیز دیگری می خواهیم کاری انجام دهید؟ متاسف. کسی که فقط آن را فریاد؟ مخاطبان: [نامفهوم]. ANDI PENG: شما بروید وجود دارد. باشه. و چگونه می توانم در مورد شروع هر نوع رفت از تابع، هر نوع تابع اصلی در برنامه ما؟ اعضای هیات تحریریه اصلی. باشه. چه در داخل قرار داده است من در اینجا؟ اولین چیزی که شما می خواهید به انجام چه خبر؟ اگر ما می خواهیم به یک رشته از کاربر، چه می خواهیم به در این خط اول را انجام دهد؟ با عرض پوزش، شما بچه ها فقط احساس رایگان به صحبت کردن و با صدای بلند. فقط فریاد هر چیز دیگری. مخاطبان: درخواست کاربر را؟ ANDI PENG: چگونه ما انجام این کار؟ Ask-- من رفتن به نوع "درخواست کاربر"؟ مخاطبان: printf است. ANDI PENG: OK. printf است. چه من می خواهم به printf؟ مخاطبان: تایپ چیزی. ANDI PENG: که می خواهم؟ بچه ها، وانمود کنیم من یک کامپیوتر است. از لحاظ فیزیکی من در هر مرحله به که من نیاز به تایپ در اینجا؟ من انجام چیزی اشتباه است؟ باید چیزی است که من تایپ؟ رسید شما به نقل از نیاز دارند. ANDI PENG: من نقل قول نیاز دارید؟ باشه. باشه. رسید و پس از آن خط جدید است. نقطه و ویرگول. ANDI PENG: نقطه و ویرگول؟ باشه. خوب است. رسید و شاید مشخص که شما آن را می خواهم در کوچک؟ ANDI PENG: بزرگ. شما بچه ها به من بخندند فراموش کردن یک نقطه و ویرگول. من به شما تضمین جایی در این دوره از این کلاس، شما فراموش نکنید که به قرار یک نقطه و ویرگول، و آن به شما سه ساعت را به شکل که چرا کد شما کار نمی کند. آن را به همه ما اتفاق افتاده است. این احتمالا به شما اتفاق خواهد افتاد. در یک عادت خوب از با استفاده از سمیکالن. باشه. مخاطبان: آیا شما می خواهید برای انجام بک اسلش در؟ ANDI PENG: حتما. آیا شما می خواهید برای انجام بک اسلش در؟ آری. ANDI PENG: بزرگ. باشه. چه کاری باید انجام دهم؟ مخاطبان: دریافت رشته. ANDI PENG: دریافت رشته است. بنابراین چه چیزی تایپ کنم؟ کسی؟ مخاطبان: رشته ها. ANDI PENG: رشته ها. رسید از GetString. ANDI PENG: کسی، می توانید به من بگویید که در آن این تابع GetString است که از؟ مخاطبان: String.h. ANDI PENG: String.h؟ شما فکر می کنم آن را از string.h نیست. مخاطبان: [نامفهوم]. ANDI PENG: شما بروید وجود دارد. آن را از CS50.h. است اگر شما همیشه در آن یک اشتباه فایل کتابخانه است و یا یک فایل هدر است، گوگل به معنای واقعی کلمه string.h، و من به شما بگویم تمام توابع هستند که در string.h هستند. باشه. بنابراین در حال حاضر که من یک رشته ایجاد کرده اند و من سریع کاربر برای آن، من آن را در یک متغیر ذخیره کرده اید بازدید کنندگان به نام، چه چیزی نیاز دارم در حال حاضر؟ رسید چک کنید اگر آن را در کوچک است. ANDI PENG: با عرض پوزش. رسید چک کنید اگر آن را در کوچک است. ANDI PENG: خوب، اجازه دهید که. چگونه می توانم انجام دهم؟ در واقع، برای اهداف از کلاس در حال حاضر، ما فقط رفتن به فرض کنیم که همه چیز را که ما در حال حاضر در ورودی است کوچک. اگر شما می خواهید به بررسی، شما می توانید فقط یک عبارت شرطی اضافه که بررسی می شود، که از طریق فرار هر عنصر آرایه تک و بررسی می شود اگر آن را بین برخی از ارزش ها. من فراموش کرده ام چه تعداد از مقادیر کوچک هستند. شما می توانید آن نگاه کنید تا در جدول ASCII. اما آره، که یک نقطه واقعا خوب است. اما در حال حاضر، ما فقط رفتن به فرض کنیم که همه رشته ورودی ما در حروف کوچک می باشد. باشه. پس چگونه خواهد بود من در مورد رفتن این مشکل بعدی؟ رسید برای حلقه. ANDI PENG: برای حلقه؟ باشه. به من بگویید چه به تایپ کنید. مخاطبان: اینترنت من برابر با 0. ANDI PENG: OK. مخاطبان: اوه، در واقع، پس از آن شما انجام یک کاما از هم و انجام N برابر strlen. ANDI PENG: چیزی که مهم که من فکر می کنم او در اینجا متوجه این است که ما مجبور به INT N بار دوم ما این است. فقط می دانم که در یک برای حلقه زمانی که شما در حال اعلام کرد: شما در واقع از نوع int از نیاز بار دوم شما یک متغیر را. شما می توانید N strlen می گویند. مخاطبان: از بازدید کنندگان. ANDI PENG: S. باشه. مخاطبان: سپس یک نقطه و ویرگول. ANDI PENG: حتما. رسید و پس از آن [نامفهوم] N. پس از آن من + +. ANDI PENG: بزرگ. خیلی خوب. چه ما در داخل می خواهند این حلقه در حال حاضر؟ به یاد داشته باشید، اگر ما قصد داریم به اجرا از طریق یک رشته و اجرا از طریق یک آرایه، ما می خواهیم به بررسی مسائل را در آن است. چه می خواهیم به نیاز دارید؟ در حال حاضر این نوع از بخشی از مشکل است. هر کسی یک حدس؟ باشه. بنابراین برای اولین بار، ما چگونه حتی دسترسی داشته باشید؟ چگونه ما حتی بررسی برای اولین بار و یا دسترسی به یک عنصر در آرایه؟ چگونه ما انجام این کار؟ نماد استفاده می کنیم برای انجام این کار چیست؟ نام این آرایه آنچه به نام؟ آن را به نام بازدید کنندگان، درست است؟ به یاد داشته باشید، هر رشته است که همیشه یک آرایه. بنابراین براکت من، درست است؟ از آنجا که ارزش فعلی است و یا ارزش شاخص ما در حال چک کردن. و ما قصد داریم به مجموعه ای که برابر to-- ما می خواهیم یک مقدار کوچک، درست است؟ ما می خواهیم که به نوبه خود lower-- با عرض پوزش، ما می خواهیم بزرگ. ما می خواهیم به نوبه خود با حروف کوچک ارزش را به یک بزرگ. و به این ترتیب like-- من متاسفم، اسم شما چیست؟ مخاطبان: هایدی. ANDI PENG: با عرض پوزش. مخاطبان: هایدی. ANDI PENG: هایدی. مانند هایدی گفت در ابتدا، ما احتمالا نیاز به رفتن به the-- ما احتمالا باید به تفریق 32 از هر charc است که، درست است؟ از آنجا که در ASCII جدول، تفاوت بین یک حرف کوچک و حرف بزرگ 32 است. بنابراین، هنگامی که ما در حال انجام این کار، ما احتمالا رفتن به می خواهم به تفریق 32، درست است؟ بنابراین ما در حال رفتن به بازدید کنندگان من. آیا همه درک کنند که چرا من که؟ از آنجا که در حال حاضر، در آرایه، ما در حال چک کردن شاخص 0، درست است؟ و در شاخص 0 از رشته، که برای اولین بار شخصیت است. و است که شخصیت ما در حال رفتن به فرض آن را کوچک. اگر ما می خواهیم آن را به حروف بزرگ، ما به تفریق 32 از ارزش خود را، چرا که در ASCII ما جدول، این که چگونه ما آن را دریافت به بعدی مربوط ارزش است که آن را بزرگ می سازد. آیا همه درک کنند که؟ آره. رسید می توانید هم انجام حروف کوچک minus-- ANDI PENG: آره، به طوری که در واقع واقعا خوب است. من قصد دارم تا دوباره به که سوال پس از ما این کار را. آره. و سپس اگر من می خواهم ببینید که چه خبر است، من احتمالا رفتن به می خواهید برای چاپ، درست است؟ کسی به من بگویید چه چاپ در اینجا. مخاطبان: تابع () printf درصد ج بک اسلش [نامفهوم]. که ارزش [نامفهوم] بازدید کنندگان من است. ANDI PENG: S من، ببخشید؟ مخاطبان: [نامفهوم]. ANDI PENG: من نمی دانم. شما چی فکر میکنید؟ مخاطبان: خوب، من would not من حدس می زنم من نمی bring-- من آن را را در داخل، به دلیل [نامفهوم]. ANDI PENG: آه، شما انجام می شده اند که؟ مخاطبان: آره. ANDI PENG: اجازه دهید آن را راه ترک آن است، و من به همین دلیل بعد توضیح خواهیم داد. به یاد داشته باشید، حتی زمانی که شما یک دارنده محل، شما می خواهید برای قرار دادن پرانتز در اطراف آن. خیلی خوب. بنابراین این باید در اینجا یک تابع جامد باشد. اجازه دهید آن را اجرا کنید و ببینید که اگر آن را کامپایل. را بالا. آه اوه. که به نظر خیلی خوب است. چرا این اتفاق می افتد؟ همانطور که با هر خطا، شما می خواهید برای رفتن تماس و با یکی از اولین شروع، چون به طور معمول باعث یک خطا تعداد زیادی از خطاهای دیگر پس از آن. اینجا ما می بینیم upper.c: 18: 25، که می گوید من در این برنامه به نام upper.c، در خط 18، خطای طور ضمنی اعلام کتابخانه از توابع strlen با نوع اه unassigned--، من نمی دانم آنچه که در پس از آن. همه آن را به من گفتن در حال حاضر است این چیزی است که رفتن در strlen. و کامپیوتر اشتباه است، چرا آن را مانند، من نمی دانم که چه strlen است؟ چه که احتمالا به شما بگویم شما از دست رفته؟ مخاطبان: شما از دست رفته [نامفهوم]. ANDI PENG: حق با شماست. دقیقا. پس این است که آن را مهم است مطمئن شوید که هر تابع شما در استفاده از خود را کد است که با داشتن هدر درست فایل برای کتابخانه، و یا دیگری شما در حال رفتن به گرفتن مقدار زیادی از خطاهای و کد خود را در حال رفتن بدانید که چه چیزی در جریان است. بنابراین ما در حال رفتن به شامل string.h در اینجا. حالا وقتی که ما سعی می کنیم به کامپایل بالا. درست کامپایل. بیایید این برنامه را اجرا کنید. بنابراین چیزی در حروف کوچک تایپ کنید. شما بچه ها چه می خواهید به نوع؟ فریاد از چیزی. همه حق است، چارلی فقط در راه می رفت. ما نام چارلی است را تایپ کنید. چارلی در کوچک. و امیدوارم، امیدوارم، این است رفتن به فریاد و تف چارلی در بزرگ. ماهواره! هر کس درک کنند که چگونه من در مورد حل که رفت؟ راه که من می توانم دستکاری با استفاده از اعداد صحیح برای حل چیزی است که من می خواهم به انجام این کار در رشته ها، به دلیل شخصیت ها و اعداد صحیح می توانید در به همان شیوه به اشاره نقشه برداری ASCII. بنابراین برای رفتن به نقطه خود را، اگر من خواستم برای قرار دادن در اینجا به جای 32 حروف بزرگ منهای فقط مانند کوچک که، که به همان اندازه که کار به عنوان خوب، چرا که به سادگی فقط تفاوت بین این دو مقدار است. اگر من می خواهم به این چارلی again--. وای نه. من فکر می کنم ما راه را اشتباه رفت، آره؟ مخاطبان: [نامفهوم] کوچک. ANDI PENG: شما بروید وجود دارد. بله. و تف به Charly. بنابراین مراقب باشید زمانی که می شود شما در حال کم کردن ارزش به یاد داشته باشید که یکی از بیشتر از دیگری است. به عنوان مثال، تا اینجا من را فراموش کرده که حروف کوچک است که در واقع بیشتر از A. بزرگ بنابراین، هنگامی که من سعی کردم به آنها راه دیگری در تفریق اطراف، من منفی 32 است. و کامپیوتر من مانند بود، من نمی دانم چه چیزی است. این احتمال فقط در برخی از تصادفی ارزش این است که خیلی خوب نیست. و بنابراین مطمئن شوید که شما کم کردن در طول صحیح برای پیدا کردن شخصیت شما می خواهید. باشه. کسی در مورد چگونه ما اشتباه در مورد نوشتن این تابع رفت؟ باشه. پس در واقع، یک تابع در حال حاضر در کتابخانه به نام ctype.h وجود دارد. ctype.h نام کتابخانه می باشد. این تابع است در حال حاضر برای شما نوشته شده است. آن را به بالا نامیده می شود. و به همین ترتیب برای اهداف این pset، شما در حال رفتن برای پیدا کردن که شما واقعا می خواهید به استفاده از بسیاری از توابع موجود در کتابخانه ctype است. به بالا، به کاهش، بالا است، lower-- کسانی که تمام توابع که شما قادر خواهید بود به استفاده از بسیار، بسیار به سرعت در کد خود را که دقیقا همان چیزی است این کار را. ما نوشت: چگونه برای تبدیل یک رشته به حروف بزرگ. اما این است که در واقع کد که کسی دیگری نوشته شده است و شما می توانید دسترسی داشته باشید از طریق یک تابع متفاوت است. آره؟ رسید بنابراین شما فقط کپی کردن یک در وجود دارد و آن را برای هر حرف تنها؟ ANDI PENG: آره، چرا که من نمی در مورد ارزش های مراقبت. من فقط مراقبت که تفاوت بین آنها 32 است، درست است؟ تفاوت بین حروف کوچک B و B بزرگ است 32. و تفاوت بین C و بزرگ C است که همیشه 32. من فقط باید به مورد مراقبت تفاوت بین این دو، چون همه حروف پیروی از الگوی همان، درست است؟ اگر من تفاوت بین یکی از آنها، من می دانم که چه تفاوت بین همه آنها است. سوال خوبی بود. آره. همه خوب است؟ باشه. OOP. باشه. بنابراین مفهوم دیگری که رفتن به بسیار مفید است که شما همچنان به توسعه کد خود را در این ایده این است ایجاد توابع یا انتزاع. بنابراین در حال حاضر، ما همه جبر گرفته شده است. در جبر، شما آموزش داده می شود وجود دارد این است که این چیزی که فوق العاده به نام یک تابع ماشین، که در آن اگر شما ورودی یک نوع شماره، آن را از طریق این تابع اجرا می شود فوق العاده و بیرون میآید خروجی های مختلف، درست است؟ در کد، همین اتفاق می افتد در هر نوع تابع. بنابراین من می تواند از لحاظ جسمی ارسال در بدن من از کد من بیانیه اصلی که در واقع نشانی هر بدن از کد انجام شده است. اما در خارج از آن، من نیز می تواند ارسال بسیاری از توابع مختلف که انجام بسیاری از چیزهای مختلف. به عنوان مثال، ما در حال حاضر شروع به استفاده از برخی از آنها. Printf-- است که یک تابع است که کسی دیگر در حال حاضر نوشته شده است که ما می توانیم در کد ما تماس بگیرید. به upper-- در این مورد، upper-- تابع دیگری است ما نوشته شده است که ما می توانید در کد ما تماس بگیرید. و به این ترتیب من حدس می زنم چرا ما حتی توابع؟ چرا ما فقط آن را با صدای تلپ همه در همان خط از کد؟ این باعث می شود آن را برای همه آسان است. خب، استدلال پشت که است، اول از همه، سازمان. این واقعا آزار دهنده است که از طریق کد کسی و یک تابع مانند printf است. اگر شما بچه ها در واقع می دانستند چه تابع printf مستلزم به نوشتن، آن را، مانند، 1000 خط کد. اگر هر بار که من می خواستم به printf چیزی، من تا به حال 1،000 ارسال خط کد، خواهد بود که واقعا آزار دهنده است به خواندن، درست؟ به همین دلیل است که ما فقط ایجاد این تابع انتزاعی که ما در حال حاضر کسی دیگری در جایی دیگر نوشته شده است. و هر بار که ما نیاز به استفاده از آن در کد ما، ما فقط باید بگویم printf است. و این است که قادر به استفاده از تابع شخص دیگری در کد ما نوشته شده است. این باعث می شود آن را آسان تر سازمانی به خواندن کد. دوم، آن را ساده سازی است. این ساده مراحل ما را به حل مشکل ما. تابع () printf، توابع مانند printf، توابع مانند به بالا تمام چیزهایی که به ما اجازه می دهد تا هستند ساده کد ما را پس از آن آسان تر است. و آخرین چیزی که قابلیت استفاده مجدد است. بنابراین این واقعیت است که ما یک تابع به نام تابع () printf که ما می توانیم بسیاری از پاسخ های مختلف بار و اجازه می دهد تا آن را به قابل استفاده مجدد. اگر من به تابع () printf ارسال، من فقط آن را ارسال کند. تنها در یک مکان است که وجود دارد. اگر من می خواستم آن را دوباره، من می خواهم باید به کپی و چسباندن همه از آن به خط دوم من از کد. به همین دلیل اگر ما یک تابع ایجاد که در خارج از اصلی ما وجود دارد، ما فقط می توانید پاسخ به آن و استفاده مجدد از آن را هر زمان ما نیاز به طوری که آن را بسیار ساده تر برای ما به عنوان برنامه به نوشتن. بنابراین راه است که ما در واقع ارسال یک تابع بسیار مشابه است، درست است؟ این نوع از اولین به عنوان مثال در که ما یک تابع را در یک سبک متفاوت از اعتبار اصلی اعضای هیات ما است. در این مورد، اگر من می خواستم ارسال یک تابع به نام Q، درست است؟ و مقدار int در اینجا است که همه به من گفتن، چه من می خواهم این عمل به بازگشت به من؟ اگر من می خواهم به مکعب یک عدد صحیح، من می خواهم به ورودی. این پارامترها می باشد. من قصد دارم به ورودی یک مقدار از نوع int. و من قصد دارم به بازگشت یکی دیگر از ارزش نوع int است. و در اینجا، به عنوان شما می بینید، همه من انجام است هر ورودی گفتگوی من است به عنوان خروجی و بازگشت آن است. بنابراین تمام این تابع انجام می دهد نوعی از عدد صحیح طول می کشد. این ضرب شده خود را دو بار به طوری که آن را در اثر مکعب. و سپس آن را می گرداند هر چه که خروجی است. بنابراین در این مورد، آن را دو خط از کد است که ما تا به حال به ارسال اضافی. اما اگر ما می خواستیم به پاسخ بر این چندین بار، آن را بسیار آسان تر برای تایپ که خط راست در اینجا است که در مکعب از باید از طریق چندین بار بروید. بنابراین راه است که اساسا هر قالب بندی برای هر نوع تابع در حال رفتن به وجود مثل اینجا است. بنابراین ما باید نام تابع. در این مورد، آن را مکعب نامیده می شود. و ما نام آن را به خاطر مکعب از آن آسان است به یاد داشته باشید. شما می توانید نام آن مربع و آن را در واقع می تواند نبات شود. مهم نیست. فقط یک نام است که شما اختصاص عملکرد خود را. این حق در اینجا، هوشمند، است که نوع پارامتر شما نیاز دارید. پس چه چیزی این تابع نیاز به منظور به کار؟ خوب، آن نیاز به یک ورودی می باشد. من آن را به نام ورودی. شما می توانید هر نامی که می خواهید. اما من نیاز به چیزی از نوع int. آن را در حقیقت برای اجرای هر آنچه در داخل از اینجا، بدن از تابع. و پس از آن نوع بازگشت در اینجا، این int-- تمام آن را به من گفتن است که این تابع این است رفتن به بازگشت به من در نوع int است. بنابراین آن را به در یک int، و آن را به شما از نوع int است. آیا همه درک کنند که چگونه قالب بندی این نوع کار می کند؟ خنک. باشه. بنابراین نمی شود نگران به نظر می رسد اگر این حق انتزاعی کمی در حال حاضر. این چیزی است که ما در مورد صحبت است. ما را در عمیق تر شیرجه رفتن بعد از آن در این دوره است. راه که هر نوع سطح بالاتر انتزاع از این چیزها کار این است که در حافظه، در کامپیوتر شما، همه چیز در این نوع ذخیره شده از پشته، باید بگویم. بنابراین تا در بالای صفحه. من نمی دانم اگر شما بچه ها می تواند که به خوبی ببینید. من سعی کنید به زوم. در اینجا در بالا، ما به متن فیزیکی از آنچه که کامپیوتر interpreting-- است تمام صفر و آنهایی که در کامپیوتر ما وجود داشته باشد. و پس از آن ما را به مقداردهی اولیه داده ها و مقدار دهی نکردن داده ها، آنچه که ما از متغیر های جهانی است. بنابراین متغیرهای است که وجود دارد در تمام برنامه و در سراسر کل خود را، در اصل، کد. هیچ نگرانی اگر شما بچه ها نوع مشخص نیست در این. آن را واقعا مهم حال حاضر نیست. و بعد ما چه به نام یک پشته در پشته. فکر می کنم از یک پشته به معنای واقعی کلمه به عنوان درست مانند یک پشته از همه چیز، یک پشته از مختلف چیزهایی که در بالا تحت فشار قرار دادند هر یک از دیگر که ذخیره های مختلف متغیرها و نحو در کد خود را. و پس از آن در اینجا در پایین، ما باید متغیر های محیط زیست از آنچه شما در حال اجرای در فقط خط کوچک خود را از کد. و ما فقط رفتن به زوم در در بخشی پشته واقعی. بنابراین در اینجا، اگر ما به زوم در تنها بر این منطقه از پشته، این چیزی است که به نظر می رسد. و این در واقع بسیار مهم زمانی که شما بچه در مورد توابع صحبت می کنید، توجه داشته باشید که به دلیل حافظه را از کامپیوتر شما ذخیره سازی متغیرهای و توابع و پارامترهای هر دو خود را عملکرد و متغیرهای اصلی خود را در مکان های مختلف. بنابراین در حال حاضر، اصلی است عملکرد واقعی که شما در حال اجرا در یک کد. شما باید پارامترهای خود را در اینجا ذخیره شده و متغیرهای محلی خود را در اینجا ذخیره می شود. متغیر محلی فقط به این معنی هر متغیر که تنها در آن تابع وجود داشته باشد. و در بالای آن، شما این را عملکرد جداگانه به نام مکعب. شما که پارامترهای است و همچنین کسانی که مردم محلی است. و به همین دلیل شما می توانید در اینجا مشاهده کنید این است که چه اتفاقی می افتد زمانی طول می کشد در یک مکعب ارزش از عملکرد اصلی خود را این است که در واقع آن را کپی کردن که بیش از. بنابراین اگر من می خواستم به مکعب 2 و بازگشت 8، 2 است که در واقع وارد به عنوان یک پارامتر و آن را کپی بیش از به طوری که شما آن را موجود در دو مکان مختلف در حافظه است. و شما باید بسیار مراقب باشید در به یاد آوردن که یکی از آن شما در واقع دستکاری. و به عنوان مثال از آنچه اتفاق افتاده خواهد بود که بسیار، بسیار بد وجود دارد در اینجا ببینید. بنابراین در اینجا، من کردم، در تئوری، یک برنامه در اینجا، یک تابع اصلی که من اعلام یک int x برابر 1. من اعلام یکی دیگر از اعضای هیات y برابر 2. و سپس من آن در حال اجرا از طریق این تابع به نام مبادله، که در آن من فرض کنیم که آن را مبادله دو ارزش. و پس از آن من قصد دارم به آنها را چاپ، درست است؟ این چیزی است که من می خواهم این برنامه را انجام دهد. بنابراین اجازه دهید پایین آمده و نگاهی به. بنابراین اگر من در واقع ارسال نامه های مختلف تابع، به عنوان شما می توانید ببینید، ما باید تابع اصلی ما در اینجا. و بعد ما ما تابع دوم در اینجا. مبادله اعتبار ساقط است. از درجه اعتبار ساقط فقط به این معنی است که آن را رفتن به بازگشت هر چیزی. نام تابع است به نام مبادله، و آن را رفتن به دو متغیر مصرف، اعضای هیات A و اعضای هیات ب، از خود [نامفهوم] تابع. بنابراین اساسا در اینجا، ما عبور x و y به این تابع. و اگر ما به بود ایجاد this-- بنابراین ما می خواهیم برای ایجاد یک مقدار موقت، درست است؟ ما قصد داریم به اختصاص که به یک. و پس از آن است که به حال برابر ب. و B است که به پشت که در آن ارزش های موقتی بود، است که، چرا که وقتی شما می خواهید به مبادله چیز، شما نمی توانید فقط دوست مبادله آنها. شما باید برای حفظ یکی از در اینجا به طوری که آن را به یاد چه چیزی است، چرا که یک بار شما مبادله یک، شما را فراموش کرده ام که ارزش اصلی بود، درست است؟ بنابراین در تئوری، این برنامه باید کار کند، درست است؟ اگر من می خواستم به مبادله دو، آنها باید مبادله. بنابراین اجازه دهید آن را اجرا کنید و ببینید که اگر آن کار می کند. به طوری که شما می توانید ببینید بچه ها، X یک بار 1 و y یک بار 2 بود. و اگر من آن را چاپ کنید، X است که هنوز 1 و y است 2. هوم، این برنامه به نظر نمی رسد به کار راه است که من می خواهم آن را به کار. آیا کسی می خواهید را به یک شات در حدس زدن این که چرا این اتفاق می افتد؟ این است که با راه که همه چیز متفاوت ذخیره شده در مکان های مختلف در حافظه است. باشه. پس شما بچه ها لازم نیست که به نگرانی در بیش از حد در مورد این در حال حاضر. اما می دانم که مکعب های محلی متغیرهای a و b بود، چرا که در اینجا در تابع ما، ما A و B اعلام کرده ام به عنوان متغیر است که وجود دارد در مکعب، که تابع. اما به عنوان شما می توانید، پارامترهای دید که آن را مصرف در در اینجا ذخیره شده بودند. اما ما در واقع نمی بازگشت هر چیزی. ما واقعا در حال تغییر x و y است. ما فقط در حال تغییر بودند A و B. ما x و y به کپی کرده چیزی به نام A و B. اما ما در واقع هرگز دستکاری x و y هستند. آیا شما بچه ها دیدن چگونه است که اتفاق می افتد؟ این است که ما به سادگی آن را کپی کرده ام بیش از، اما ما در واقع نگه داشته است آهنگ از جایی که آنها در حافظه است. و بنابراین در حال حاضر کامپیوتر است که به دنبال، اوه، من اجرای این چیزی که از طریق این تابع دوست داشتنی. اما x و y هنوز x و y. هیچ چیز اتفاق افتاده است آنها به دلیل این واقعیت که این پارامترها و متغیرهای محلی در مختلف ذخیره می شود محل در حافظه. و این یک سطح بالاتر است مفهوم است که ما شروع به دیدن بعدا در این دوره است. اما فقط می دانم که این یک مشکل است که می تواند رخ دهد و ما به شکل از راه در مورد چگونگی مقابله با این بعد از آن در این دوره است. باشه. خیلی خوب. بنابراین آخرین مفهوم ما واقعا به پوشش که رفتن به مفید باشد برای pset این هفته هستند که به نام آرگومان های خط فرمان. بنابراین راب در سخنرانی خود از طریق رفت نوع خلاصه در مورد چگونگی این کار می کنند. اساسا می دانید که زمانی که شما در حال نوشتن مانند یک تابع اصلی، زمانی که ما توابع قبل از در گذشته نوشت، ما اعتبار اصلی اعضای هیات بود. و به همین دلیل ما تا به حال از درجه اعتبار ساقط وجود دارد بود چرا که برنامه های ما نیست نیاز به مقادیر ورودی به اجرا، درست است؟ هنگامی که من فرار ماریو، من لازم نیست به واقع فقط در چیزی تایپ وقتی که من فرار ماریو. من می تواند برای کاربران بعد از تحریک کند. اما این همیشه صدق نمی کند باشد. به عنوان مثال، در این مشکل در هفته مجموعه، شما در حال رفتن به خواسته می شود که در علاوه بر اجرای برنامه خود را، شما در حال رفتن به خواهید برای ورودی چیز خاصی در راست به شما به عنوان را اجرا کنید. بنابراین راه ما انجام است که به نام آرگومان خط فرمان، که مثل این است که یک آرگومان شما می توانید ورودی به طور مستقیم عنوان شما در حال تلاش برای اجرای برنامه خود را. بنابراین نماد برای این آن را بسیار پیچیده، به دنبال، اما واقعا که دشوار. بنابراین اعضای هیات main-- که فقط تابع اصلی خود را. به کاما از هم تعداد آنها براکت ی argv رشته است. پس همه که گفت این است که این argc-- INT همه که گفتن شما است که کسانی که تعداد استدلال کامپیوتر باید انتظار می رود. بنابراین چیزی که واقعا مهم برای پیگیری نام فیزیکی برنامه شما می باشد شمارش به عنوان یکی از کسانی که استدلال. بنابراین اگر من می خواستم به برنامه من اجرا به علاوه یک خط فرمان اضافی استدلال، من در واقع رفتن به دو. تعداد آنها در واقع رفتن به دو. و پس از آن رشته ی argv bracket-- تمام است که انجام می دهند، آن را به من یک دادن آرایه ای از رشته که رفتن به فقط نمایش و ذخیره چه همه کسانی که آرگومان های خط فرمان می باشد. بنابراین برای مثال، اگر من می خواستم به این برنامه، ./copy INFILE outfile، درست است؟ که فقط یک دستور لینوکس معمولی است. آنچه در واقع تعداد آنها است؟ چگونه بسیاری از آرگومان های خط فرمان در واقع در این وجود دارد؟ همه می کند این است که یک کپی از INFILE از نام یک فایل و آن را کپی آن را به یک فایل دیگر، درست است؟ که همه از این انجام شده است. همانطور که می بینید، من انجام آن را در یک خط در واقع بدون نیاز به برنامه است. تعداد آنها ما در این مورد چیست؟ چگونه بسیاری از استدلال داریم؟ مخاطبان: سه؟ ANDI PENG: ما سه، دقیقا. پس از آن بسیار شهودی به فقط فکر می کنم که آن را فقط INFILE و outfile. اما می دانم که نام فیزیکی برنامه شما در حال اجرا شمارش به عنوان یکی. بنابراین در این مورد، تعداد آنها در واقع سه. چگونه در مورد، آنچه ی argv 0 است؟ به یاد داشته باشید، همه از آرگومان های خط فرمان در آرایه ای از رشته ذخیره شده بودند. بنابراین اگر سعی کنید به آن دسترسی داشته باشید، چه می و argv براکت 0 به من بدهید؟ مخاطبان: [نامفهوم]. ANDI PENG: دقیقا. آن را به من نقطه را بریده بریده کپی، چرا که عنصر 0، از اولین عنصر آرایه است. چه ی argv 1؟ مخاطبان: INFILE. ANDI PENG: INFILE، دقیقا. چه ی argv 2؟ مخاطبان: Outfile. ANDI PENG: Outfile. این کمی مشکل است در حال حاضر. شما بچه ها چه فکر می کنم و argv 3 است که به من دادن اگر من سعی کردم برای چاپ که؟ مخاطبان: [نامفهوم]؟ ANDI PENG: آیا شما یک دست تا؟ آره. مخاطبان: یک جایگزین. ANDI PENG: دقیقا. بنابراین در سخنرانی به یاد داشته باشید که ما در پایان یک چیزی مسابقه را داشته به نام نابودگر تهی؟ ما را به این نیز دریافت بیشتر در در کلاس. اما می دانم که در نماد، راه کامپیوتر شما می داند که آن را پایان از آرایه است که آن را چیزی قرار می دهد به نام های پوچ نابودگر یا یک خط تیره صفر است. بنابراین اگر شما سعی می کنید برای دسترسی به ی argv 3، شما در حال رفتن برای ضربه زدن به این فاصله 0. این است که حتی بیشتر از یک درخواست ترفند. چه ی argv 4؟ بنابراین این نابودگر تهی گذشته است، گذشته از مرزهای آرایه است. شما چه فکر میکنید در حال رفتن به اتفاق می افتد زمانی که ما سعی به انجام این کار؟ مخاطبان: [نامفهوم]؟ ANDI PENG: با عرض پوزش. می گویند که کمی بلندتر؟ مخاطبان: [نامفهوم]. ANDI PENG: بله. که نام است منطقه شما به احتمال زیاد دریافت کنید. اما می دانم که ی argv 4-- که شما اجازه می دهد تا برای دسترسی به مکان ها در کامپیوتر شما حافظه است که شما واقعا نباید لمس کردن، به دلیل در حال حاضر شما می دانید چه ی argv است. شما می دانید که آن را مجموعه ای از اندازه 3 است که کپی نقطه، INFILE و outfile. اگر شما سعی کنید برای رفتن تا کنون فراتر از آن که شما در گذشته نابودگر تهی هستید، کامپیوتر شما احتمالا چیزی ذخیره شده در argv 4. و شما واقعا نمی باید اجازه دسترسی به ی argv 4، دلیل این که شما یک فایل کابینه و شما تنها هستید اجازه دسترسی به این سه قفسه. اما اگر شما سعی کنید به راه دور از دسترس قفسه که در آن به شما اجازه داده، شما در حال رفتن به شروع به خراب با چیزهای دیگر در حافظه کامپیوتر شما. که برای رفتن به واقعا، واقعا بد است. بنابراین فقط می دانم که. بسیار مراقب باشید که شما نه تنها به طور تصادفی شروع دسترسی به عناصر آرایه است که در یک در آنچه به شما می خواستم برای ایجاد شد. بله. باشه. بنابراین ما قصد داریم به یکی دیگر از انجام به عنوان مثال در اینجا ترمینال. باشه. بنابراین راب به سرعت در سخنرانی روز دیگر رفت از طریق این مثال، جایی که او حال INT اصلی اعضای هیات ی argv رشته تعداد آنها براکت، که به من گفتن که من رفتن به آرگومان های خط فرمان. او، اگر تعداد آنها برابر با برابر 2-- به یاد داشته باشید، برابر است با برابر معنی مقایسه. اگر آن را برابر با 2، پس از آن من رفتن به چاپ سلام، هر اولین عنصر از آرایه است. چاپ دیگری، سلام جهان. این چیست رفتن به اتفاق می افتد در اصل؟ آیا کسی می تواند فقط در توضیح انگلیسی آنچه این برنامه انجام شده است؟ آره. مخاطبان: اگر کسی تایپ شده در یک دستور و گفت نام و نام خانوادگی خود را، آن را نه فقط چاپ یکی از اولین و می گویند، سلام، هر نام خود را است. ANDI PENG: خوب، اجازه دهید آن را اجرا کنید. بنابراین برای مثال، اگر من به این فایل را خوش آمدید to-- سلام to-- چه چیزی شما را من می خواهم به ورودی. مخاطبان: نام و نام خانوادگی. ANDI PENG: نام و نام خانوادگی؟ فضاهای؟ مخاطبان: آره. ANDI PENG: کسی می تونه به من در حال حاضر، چه تعداد آنها است؟ فقط سمت راست وجود دارد؟ آخ ببخشید. اجازه دهید من به عقب برگردید. چگونه بسیاری از آرگومان های خط فرمان are-- شما بچه ها واقعا می توانید ببینید. اما من سعی کنید به زوم. دارم سعی می کنم. آره، سه وجود دارد، درست است؟ آن را بریده بریده نقطه است سلام، آن اندی، و آن را پنگ. بنابراین چه چیزی شما بچه ها فکر می کنم این برنامه است که به چاپ؟ آه. آه ببخشید. نام اشتباه. آن را چاپ، سلام جهان. آیا کسی می خواهید برای توضیح چرا که اتفاق می افتد؟ آره؟ مخاطبان: [نامفهوم]. ANDI PENG: دقیقا. بنابراین در اینجا، مشروط است، اگر تعداد آنها برابر برابر 2. بنابراین تنها در مورد وجود دارد که دو آرگومان خط فرمان. سپس من قصد دارم به چاپ، سلام، هر آنچه در آن است. اما دیگری، من قصد دارم به چاپ فقط، سلام جهان. بنابراین می کند کسی که می خواهید به عنوان مثال به من بدهید چگونه من قادر خواهد بود تا در واقع آن را به چاپ مقدار و argv 1؟ آنچه که من در اینجا به ورودی. فقط یک چیز، درست است؟ از آنجا که در حال حاضر به نقطه خوش آمدید شمارش به عنوان آرگومان اول. من تنها یک بیشتر داشته باشد. بنابراین نقطه خوش آمدید اگر من فقط اندی. سلام، اندی. آیا همه درک چرا که اتفاق می افتد؟ آره. مخاطبان: بنابراین فضای بین دستور line-- آن [نامفهوم] است؟ ANDI PENG: شماره بنابراین فضا در یک خط فرمان آرگومان، x، به کامپیوتر خود را بگویید که این آغاز یک رشته جدید است. بنابراین رشته ی argv آن here-- فروشگاه تمام دستورات آرگومان های خط خود را در رشته ها. و به این ترتیب فضا در خط فرمان argument-- که می کند این است به شما بگویم، این است که در پایان یک رشته و زمان به حرکت بر روی یکی دیگر از آن است. آره. این بسیار مهم برای pset خود را، چرا که شما هستید رفتن به آزمایش می شود این. بنابراین آیا کسی هر گونه سوال در مورد این؟ باشه خوبه. آره؟ مخاطبان: بنابراین به این دلیل شما را قرار کالک استدلال صحیح به جای [نامفهوم] خواهد بود زمانی که شما می خواهید به نوع اطلاعات اضافی را به [نامفهوم]؟ ANDI PENG: بله، دقیقا. برخی از برنامه های شما نیاز به ورودی یک آرگومان خط فرمان که آن را در عبور می کند و که با استفاده از آن است. آره. مخاطبان: بنابراین اگر [نامفهوم]؟ ANDI PENG: خب، چه چیزی من پس از آن به تغییر در برنامه های من؟ مخاطبان: فقط 3. ANDI PENG: چرا که اتفاق می افتد، فکر می کنید؟ رسید از آنجا که [نامفهوم]. رسید شما می خواهم به 2 [نامفهوم] آن را تغییر دهید. مخاطبان: 1 و 2. ANDI PENG: 1 و 2، دقیقا. بنابراین در این مورد، شما می توانید احتمالا می خواهم به دو تابع () printf statements-- که چاپ و argv 1 و یکی که چاپ و argv 2. اینجا. من در واقع می توانید انجام دهید که سریع واقعی است. وجود دارد که شما بروید. آه. نه کاملا آنچه شما می خواهید. اما اگر شما بچه ها ظرف غذا به اطراف با قالب بندی، آن خواهد آمد. آره. خنک. من می دانم که ما کمی در زمان کوتاه. اما من فقط رفتن را به سرعت صرف چند دقیقه رفتن را از طریق helpful-- رسید شما باید دو دقیقه. ANDI PENG: من دو دقیقه؟ متشکرم. برخی از راهنمایی pset سریع است. بنابراین برای این pset، من به شدت توصیه، مثل من گفت، هر کس به خواندن تنظیمات. شما می شود نوشتن سه یک programs-- نام initials.c، یکی به نام caesar.c، یکی vigenere.c نامیده می شود. برخی نکات مهم که شما بچه ها واقعا می خواهید در mind-- نگه دارید به طوری این تابع وجود دارد نام atoi-- به عنوان من می خواهم به می گویند، یک ترویس. معلوم نیست اگر که در واقع چگونه شما آن را می گویند. اما همه آن را به انجام، آن را وارد. آن را یک رشته به int تبدیل می کند. بنابراین یک نشان دهنده ASCII به من عدد صحیح است. آن را فقط تبدیل ASCII ارزش به عدد صحیح ارزش ها. بنابراین به یاد داشته باشید و argv، آرایه که فروشگاه تمام دستورات خود را خط arguments-- آن همه آنها را ذخیره به عنوان رشته. و بنابراین اگر شما می خواهید قادر به یکی از آنها را تبدیل به یک عدد صحیح، شما در حال رفتن به برای استفاده از این مقدار در اینجا. پیمانه، مثل ما تحت پوشش پیش از آن در کلاس امروز، اجازه می دهد تا شما را به باقی مانده از هر آنچه که شما داشته باشد. بنابراین اگر ما واقعا، واقعا تعداد زیادی در سزار، چه می شود اگر ما پایان از یک رشته از ویژنر؟ چگونه می خواهید قادر برای دریافت کنید که به بسته بندی کردن در اطراف؟ اگر من ضربه Z و من می خواهم آن را به بازگشت به یک، چگونه من رفتن به که به بسته بندی کردن در اطراف؟ احتمالا می خواهید به استفاده از پیمانه در آن وجود دارد در جایی. در مرحله دوم، فهرست اطراف کتابخانه خود را. ctype.h. که یک کتابخانه جدید ما است. شما بسیاری از پیدا واقعا، واقعا isupper functions-- مفید، islower، toupper، tolower، isalpha، و غیره. همه توابع است که بسیار مفید خواهد بود هنگامی که شما تلاش برای کشف کردن، این شخصیت یک حرف کوچک است؟ چگونه این تبدیل کنم رشته را به حروف بزرگ هستند؟ همه این چیزها بسیار خواهد بود، بسیار مفید برای pset خود را. باشه. ساعات اداری امشب ساعت 8:00 تا 11:00 در کلاس درس تیل فردا و همچنین روز چهارشنبه و پنجشنبه شب. ساعات اداری در مشترک می باشد. بسیار به شما پیشنهاد بچه ها همه شروع به کار فورا، چون شما نمی خواهید که به بچه که پنجشنبه شب مشکلات است ارسال pset خود است و مانند، من نمی دانم چه باید بکنید. من شروع، من به پایان رسید، من را مشاهده کنید. سعی کنید به خودتان برخی از اتاق را، چرا که در مشکلات کد همیشه رخ می دهد. شما خواهید مطمئن شوید که شما خودتان را زمان زیادی را قادر برای تکمیل psets. خنک. من اینجا می چسبیدن به اطراف. مخاطبان: آیا این آنلاین در حال حاضر؟ ANDI PENG: من نمی دانم اگر آن را آنلاین در حال حاضر، اما از آن خواهد شد. من اینجا می چسبیدن به اطراف اگر کسی هر گونه سوال در حال حاضر. ممنونم که اومدی.