[Музички] ЈАСОН Hirschhorn: Во ред, сите. Добредојде во вториот дел. Ова е CS50, нашите многу прв супер секција. Како што сите знаеме, следната недела редовни делници ќе започне, но оваа недела ние сме сите заедно. Постои себе. Моето име е Џејсон. Јас сум професор по компјутерски науки. Имаме Анди, кој е на чело на ТА CS50. И Scaz, професорот Брајан Scassellati, тој е професор по компјутерски науки. Ние сме на CS50 шефовите на Јеил. Секогаш може да се е-мејл ни heads@cs50.yale.edu. Ние ќе бидеме на предавањата. Ние ќе бидеме во работното време. Ако има некогаш нешто што може да направи за вас, нешто што треба, се чувствуваат слободни да допрат до нас. Па што ќе правиме денес? Или пред тоа, што е доаѓа оваа недела? Па канцеларија часа се понеделник, вторник, Среда и четврток, 8:00-11:00. Има еден распоред на веб-сајтот. Делови, како што рековме, почнуваат следната недела. И ќе дознаеш што оваа недела време вашиот дел е, кој ден е, и кои се твоите ТА е. Проблем Постави 1 се должи во четврток во пладне, во петок на пладне со крајот на денот. Да, може да има девет доцна дена. А има и девет проблем сетови. И може да се користи само еден доцна дневно по проблемот сет. Да, всушност, сите проблеми множества се должи петокот на пладне. Тоа е се. Сите дека деталите се на наставната програма. Секој петок, имаме ручеци. Ние сакаме да се направи овој голем Курсот се чувствуваат малку помали. Па вие сте добредојдени да RSVP. Бесплатен ручек со колеги соучениците на персоналот. cs50.yale.edu/rsvp. Сите овие работи кои Имам на екранот, и повеќе, можете да најдете cs50.yale.edu или cs50.harvard.edu, ако одите на Харвард и се гледа овој онлајн. Исто така и на оние веб-сајтови, постојат еден тон на ресурси за вас. Секој предавање не само што има видео од предавањето, но, исто така, забележува. Некој ќе се види на предавање и да се забележува за вас. Така да само да се плати внимание за време на предавања, или можете да го користите на нивните забелешки / нашите белешки за да се дополни вашата белешки. Постојат слајдови онлајн. Изворот code-- сето Дејвид оди во текот на предавањето, или Scaz оди преку предавање, дека изворниот код е достапен онлајн како и, како што е како јас, спомнат видеа. Делови, исто така, сите ќе се снима. Сите оние слајдови ќе бидат достапни. Сето тоа законик ќе бидат достапни за вас. Постојат шорцеви на веб-сајтот каде што Членови на персоналот CS50 трошат пет до 10 минути одење преку темите за вас. Некои од оние кои веќе сте проблем се среќаваат во сетови. Работното време, како што рековме, во понеделник преку четврток, 8:00-11:00. CS50 Студија е фантастичен ресурс. Постојат проблеми пракса, мостра слајдови, познати грешки дека студентите сакаат да наиде на, за секоја тема во суштина ние ќе бидат опфатени во овој курс. И, конечно, на овој слајд во најмала рака, Reference50 кој ви дава информации на сите функции C некогаш би можеле да се надеваат дека можеби за употреба и многу, многу повеќе. Повторно, кои точка точка точка на на дното на екранот е да се покаже дека има дури и повеќе ресурси за овие две интернет страници: cs50.yale.edu, cs50.harvard.edu. Значи, она што правиме денес? Па, прво јас ќе одам да се даде ќе се погледне на ресурси. Веќе не оној. Погледне во нас. Сега, ние ќе треба да се премине типови на податоци и операторите во В. Анди тогаш ќе дојде до тука и одиме во текот на библиотеките во C, printf () функција со која веќе сте познати или брзо ќе стане многу познато. И ти исто така ќе одам во текот conditionals и петелки. А потоа, конечно, Scaz ќе одиме во текот проект на CS50. Ако не сте го потонаа во веќе во Проблем Постави 1, како и начинот на користење на терминал и корисни команди а потоа да ви даде некои демо снимки и кодирање пракса во проект на CS50. Пред јас да се фрламе во овој Содржината на оваа страна, Дали некој има било какви прашања досега? Одлично. ВО РЕД. Менување на брзините. [МЕНУВАЊЕ брзини] Тоа беше мене менувањето запчаници во прирачник автомобил. Па типови на податоци во C, вие не само да имаат променлива x и таа да биде на линија 10, цел број, а можеби и број 1, на линија 20, децимален број 10.5, а потоа и неколку линии подоцна стринг, сакам CS50. Во C, променливи може да биде само една работа, а само една работа. И така треба да им се даде типови. И од оваа страна, ние имаат листа на видови. Постојат знаци, кои отстои карактери. Па тоа е една буква А, Б, Ц, Д. Тоа може да биде и просторот, или кои можат, исто така, да биде нова линија карактер. Постојат цели броеви, кои се само броеви, целата numbers-- или цели броеви rather-- но без децимали. За децимали, имаме броеви со подвижна запирка. Броеви со подвижна запирка се броеви со децимали. Потоа, тука се копнее, кои се суштина веќе цели броеви. Ќе забележите дека долго е 8 со оглед на int е 4. Јас ќе дојдеме до тоа во една секунда. Тоа е затоа што копнее да се сместат дури повеќе цели броеви од еден цел број може да се сместат. Двојно е долго плови. И, конечно, имаме низа, која е еден вид што веројатно сте го користеле порано. Ако вклучиш хаштагот # includeCS50.h во вашиот изворен фајл, тогаш можете да го користите стринг тип. Тоа не е, всушност, се вградени во В. Постојат неколку други видови, како и. Но овие се главните оние со која ќе се користи и да се сретне. C е, повторно ги спомнав, секој што variable-- може да биде само еден тип и само еден тип. Тоа е затоа што C е статично отчукува јазик, што е спротивно да се динамички отчукува јазици каде што ако се создаде променлива можете да го промените тоа што се чуваат во тоа како ви одат на во вашата програма. Овде оддесно страна, имам различни големини од овие типови на податоци во бајти. Па еден лик е 1 бајт. Тоа е 8 бита. А тоа значи, бидејќи 8 битови има осум 0-ти и 1S. Видовме оние демонстрации во првата недела, со што бинарни светилки. Со 8 бита или 1 бајт, можеме да претставуваат броеви од 0 до 255. Право. Ако сите 8 бита се 0, тоа е 0. Ако првиот бит е 1, кој е број една, и така натаму, па сè до 255. А тоа е зошто за ликовите можеш во суштина до 255 од нив, но тоа не е доволно за да се покријат сите ликовите ние треба да ги користите. Целите броеви, може да имате 0 и тогаш имате 2 до 32 минус 1. Тие се како многу опции имаш за цели броеви. За долго, имате 0 на 2 до 64 минус 1. Па имате многу, многу, повеќе опции за копнее. Жици, тоа е знак прашалник бидејќи тоа е cliffhanger за подоцна. Је. Би можел да кажам секого на работ на своите места, како што е тоа знак прашалник? Тоа е cliffhanger. Ние на крајот ќе ги покрие со големина на жици и се зборува повеќе за жици. Поради низа е всушност еден од обука тркала ќе стави на во овој Се разбира на почетокот и потоа ги тргнеме подоцна на, бидејќи жиците во C се всушност покажувачи до карактер низи. Но, повторно, тоа е cliffhanger за подоцна. Пред да се пресели на било какви прашања, коментари, се однесува за овој слајд? ВО РЕД. Јас мора да биде фантастичен explainer. Исто така, кога сте програмирање, сте ќе треба да ги користат овие оператори. Навистина едноставни знаци дека може да се направи едноставна операции, со кои ти си веројатно веќе многу познато. На пример, на десната страна страна, гледаме додадете. За да додадете, вие само направете знакот плус. И така може да имаат две променливи x и y. Можете да го направите x + y во вашиот код. Можеби сакате to-- велиш имаат број 7 и 3, сакате да ја зачувате кој во променлива наречена Вкупно еден. Можете да го направите за типот int, простор Сè на сè, името на променливата, = 7 + 3; Што ќе се таа продавница во сума? Некој? Ако имав во збирот = 7 + 3. Она што ќе бидат зачувани во сума? Можете само да го викне. ПУБЛИКАТА: 10. ЈАСОН Hirschhorn: 10! Тоа е точно. А како е во износ = 7-3, Јас само ги користат тие цртичка знак. Она што се случува да се чуваат? ПУБЛИКАТА: 4. ЈАСОН Hirschhorn: 4. Сумата е веројатно во ред за името таа променлива, но 4 ќе бидат складирани. Да се ​​размножуваат во C, користете малку Ѕвезда карактер, кои не ги користите на х. Да се ​​подели, користете Напаѓач Не црта симбол на поделбата. И да modulo, користете го знакот за процент. Па да речеме сакам да го видам int z = 7% 3, што ќе бидат зачувани во z? Значи, тоа е во суштина прашуваат што се modulo направам? Дали некој знае што прави modulo? Је. y 4. ЗВУЧНИЦИ 1: Тоа е остатокот. ЈАСОН Hirschhorn: Тоа е остатокот кога ќе се подели. Значи 7 поделено со 3 е 2 остатокот 1. Па 1 ќе бидат складирани. Што направи одземање, но тоа е како тоа функционира. Тоа е она што на операторот на modulo прави. Таа ги зема бројот што го дели со друг број и се враќа на вас остатокот. Значи, повторно, 7% 3 ти дава 1, бидејќи 7 поделено со 3 е 2 остатокот 1, и се враќа на остатокот. Она што за да се вратиме до еден чекор кон таа поделба знак. Ако сум го правела 7 / поделено со 3 прави некој знае што тој ќе се врати? ЗВУЧНИЦИ 2: 2. ЈАСОН Hirschhorn: Зошто 2 а не 2.333? ЗВУЧНИЦИ 2: Мислам дека тоа намалување на надвор по цел број. ЈАСОН Hirschhorn: Значи тоа е точно. Во C, ако се направи поделба на два цели броја 7 поделено со 3, го добива одговорот кој во овој случај 2,3333 засекогаш и утврди дека на децимална точка и рифови се исклучи по децималната и тоа само ќе се враќа 2. Па ако сум го правела 8 поделено со 3. Кои, всушност, знаеме што да се врати 2.666, но тоа рифови се исклучени во децималниот, сето тоа truncates, и само се враќа на вас 2. Така 6 поделено со 3, 7 поделени за 3, 8 поделено со 3, сите ќе се врати за вас 2. Дали некој знае, или се погоди, за тоа како би можел да се всушност целосниот одговор ако сакам дека децимални? Је. Само напред. ЗВУЧНИЦИ 3: Употреба плови? ЈАСОН Hirschhorn: Што сакаш да кажеш? ЗВУЧНИЦИ 3: Затоа што се вели во плови по броеви [Беззвучен] ЈАСОН Hirschhorn: Добро. Значи, тоа е точно. 7 е цел број. Но, ако сакав да се претвори дека во голем број со подвижна запирка, Јас ќе мора да ги чувате дека како 7.0, бидејќи компјутерот е навистина stupid-- видовме дека со example-- ФБ и Ј тоа ќе го стори само точно она што ви го кажам. Па ако напишете 7, мислам дека тоа е цел број. Ако напишете 7.0, иако ние знаеме тие работи се еднакви, тоа го третира дека како подвижна запирка број. Значи, ако сте направиле 7,0 поделени за 3, или поделен со 3,0, што би рекол, во ред, сега ние сме се занимаваат со плови. Јас ќе се вратам на вас 2.333333 засекогаш. Но навистина не засекогаш, бидејќи како што видовме, исто така, во предавањето, овие броеви со подвижна запирка не се сосема прецизни. Па ако не го сакаат тоа децимални, или дел од таа децимални, тогаш ќе мора да use-- еден од нив мора да биде децимален број и на компјутерот треба да се разбере дека ова е подвижна запирка сте кои се занимаваат со тоа, не е цел број. Било какви прашања на таа табела на десна страна, досега? Или левата страна, вашиот лево, левата страна. Је. ЗВУЧНИЦИ 4: Право. За само како редовни цели броеви, што би write-- ќе треба да се напише се плови? ЈАСОН Hirschhorn: Да така. Па, ако сакате да се создаде променлива која е подвижна запирка, што треба да се каже плови z еднаква нешто. ЗВУЧНИЦИ 4: Во ред. ЈАСОН Hirschhorn: Но, ако сакав да направи 7 поделено со 3 и се дека децималниот, Јас би го направил плови z = 7,0 / 3,0; и што ќе ми даде на подвижна запирка број. ЗВУЧНИЦИ 4: Во ред. ЈАСОН Hirschhorn: Ако го сторив нешто како int z = 7 / за 3, што ќе ми даде цел број, затоа што тие се сите цели броеви. Дали тоа има смисла? ЗВУЧНИЦИ 4: Да. ЈАСОН Hirschhorn: Во ред. Одлично. Било какви други прашања во врска со тоа на маса? Навистина? Јас сум толку возбуден. ВО РЕД. Па некои други работи што ќе се користи, Честопати во услови или петелки, се овие видови на operators-- овие видови на Булова изрази. И како што видовме, == е она што ги користите за да се провери дали две работи се еднакви. Па еве јас сум проверка ако x == y, ајде повторно се претпостави дека x е 7 и y е 3. Значи, ако сум го напишала 7 == 3, што дека ќе се врати во мене? Вистински или лажни е тоа така? ПУБЛИКАТА: Неточно. ЈАСОН Hirschhorn: Во ред. Се чувствувам како сите може да се добие оваа. Значи, секој, што би било тоа да се врати? ПУБЛИКАТА: Неточно. ЈАСОН Hirschhorn: Лажни. Одлично. 7 не еднакви 3. Значи 7 == 3 ќе се врати лажни. Ти не мора да не се еднакви знак, па ако јас проверуваат 7! = 3, кој што ќе се вратат? ПУБЛИКАТА: Точно. ЈАСОН Hirschhorn: Точно. Одличен. Некој беше многу решителна во грбот и го цениме тоа. Тогаш може да има помалку од операторот, помалку од или еднакво на операторот, поголема од операторот, поголема од или еднакво на операторот. Па уште еден разумност провери. Ако имав 7 е поголема од или еднакво на 3. Што би било тоа да се врати? ПУБЛИКАТА: Точно. ЈАСОН Hirschhorn: Точно. Да. Дека задната соба, задната страна од просторијата, фантастично. Можете да ги комбинирате овие изрази, ако сакате, како и, со логички и која е && Или логички или кој се || ||. Па сега можете да ги тестираат две работите together-- смешно е што? Зошто е тоа смешно? Па ако сакам, можам да кажам е 7 поголема од 3 и 2 е помалку од 4? Па, ако е поголема 7 од 3, тоа е вистина. 2 е помалку од 4, тоа е вистина. Значи целата оваа работа ќе се врати вистина. Ако јас тестирани 7 е поголем од 3 and-- Јас сум само подигање на случајни броеви here-- 4 е помалку од 2, добро, тоа е неточно. Толку вистински и лажни направи лажни. И можете да одите и да се комбинираат како многу услови заедно како што би сакале. Дали некој има било какви прашања, коментари, проблеми досега? И гледам некои од вас преземање на слики на мене на екранот, што јас го цениме. Се надевам дека, тоа не е Snapchat. Се надевам дека, тоа е за вашите белешки. Но, сите овие се случува да бидат достапни на интернет. Значи, вие не мора да го се земе слики на ова. Како што веќе напоменав, сè ќе бидат достапни онлајн за вас. ВО РЕД. Јас сум за да се добие надвор од сцената, така и никого сакам да кажам нешто пред да се случи? Прашања? [Interposing ГЛАСОВИ] ЈАСОН Hirschhorn: Ах, да престане. Вие момци се премногу убаво. ВО РЕД. Одам да означите надвор. Ајде да одиме. АНДИ Пенг: Ние ќе се направи непријатна микрофон промени сега. ЈАСОН Hirschhorn: Јас сум случува да се земе овој исклучи. АНДИ Пенг: цениме поддршката, момци. Можеш ли да ме слушнеш? Добро е тоа? Совршен. Убава. Дозволете ми да навивам дека во. ВО РЕД. Значи, јас сум за да се направи како џин информации шутнат на вас момци во моментов. И воопшто не се грижи ако сте не по секоја мала линија на она што Јас сум за да ви покаже. Како Џејсон рече, сè е целосно онлајн. Само ние си оди за да се обиде да се воведе сите да концептите покриени во некои од овие слајдови. Па само да го следат заедно. Не се грижи, ако не го разбирам сè; Меѓутоа, ако во било која точка да се чувствувате изгубени, се подигне вашиот рака, ќе престанеме да, не се грижи. Кул. Па мислам дека нешто што Давид има веќе споменати во вид на предавања и Џејсон е вид на алудираше до денес е она што библиотека е. Па во програмирање, имаме овие работи вика библиотеки. Каде што, во суштина, сите тие се е само збир на функции, што е во суштина само кодот што е веќе се напишани од страна на некој друг што можеме сите користат во рамките на нашите програми. Па како не нормален библиотека работа, нели? Ќе влезете вратата на библиотеката. Ги имате сите овие книги може да се повлече и можете да имате пристап до информации во рамките на тие книги. Истото во програмирање. Имаш библиотека која веќе се напишани од други луѓе. И начинот на кој што може да се, како програмер или студент, може да се добие пристап до таа библиотека е преку хаштагот # Include. На пример, во C ние имаат три C-- најмногу најчесто се користи три стандардни C libraries-- на влезно / излезни библиотека, стрингот библиотека, и математика библиотека. Па во рамките на вашиот прв Двојката проблем сетови, тие ќе бидат на три дека сте првенствено користење. Па како Дејвид веќе објаснето во предавањето, стандардот I / O library, или стандардни влезно / излезни библиотека го прави токму тоа. Тоа ви овозможува, во вашиот код, за да го внесете ништо од корисникот и излез кој на екранот, во суштина тоа печатење на екран. И така секој пат кога ќе го користите која било функција, на пример на printf функцијата () која ние ќе треба да се оди во текот на следниот слајд, бидете сигурни дека за да го вклучите стандардот I / O библиотеката или на друго место нема да се да биде во можност да се користи функцијата на printf (). Затоа што вие, како програмер всушност никогаш не напишал таа функција, ти си само со користење на некој код друг рок свој код. Дали тоа има смисла сите? Кул. А потоа ние во суштина се добие излез библиотеката string.h и math.h библиотека, .h само означува библиотека, други библиотеки дека ќе крајот да се користи во рок вашиот код. Сепак, за целите на на оваа библиотека, ние, исто така, have-- на овој class-- ние исто така имаат она што се нарекува библиотека CS50, cs50.h, каде што, за вашиот прегледници создадоа многу важни и корисни функции. Така што вие како програмер може да piggyback исклучување она што ние веќе напишано, така што оваа функција е на располагање на вас за ваша употреба. Јас ќе се покриваат неколку функции најчесто се користи, но се знае дека ова се сите googleable онлајн. Се чувствуваат слободни, се повлече до CS50 библиотека и тогаш ќе мора сите функции таму. Је. ЗВУЧНИЦИ 5: Значи, ако не беа Користење на софтвер кој е предвидено до нас од страна класата, го прави тоа значи дека ќе треба да го преземете и да се најде оваа хедер датотека самите себе и да се каже на компјутерот каде што е тоа? АНДИ Пенг: големо прашање. Токму така. Па тоа е како ако не сте физички присутни во библиотека, не постои начин за да го всушност, оди и пристап до неа. Па истото со програмирање во C, можете Мора да бидете сигурни дека сте користење на нашата апаратот затоа библиотеката е веќе инкорпорирани во него. А потоа кога ќе хаштагот # Include, библиотеката е таму. Је. Добро прашање. Секој добар? Кул. Во ред. Па ние ќе се погоди, Во суштина, она што е првата функција која Ние како програмери се ќе треба да се користи во рок од нашиот код. Ова се нарекува () функцијата на printf. Значи, printf () функцијата, како што сум веќе реков во последниот слајд, се вклучени во стандардната I / O, стандарден влез / излез, библиотека. Така бидете сигурни дека она што ќе го using-- ох, дозволете ми да го дофати ласерски pointer-- кога сте со користење на () функцијата на printf, што треба да се вклучат на стандардот I / O библиотеката или на друго место, кога ќе се собере, ви се случува да добиете грешка затоа што компјутерот ќе биде како, ох, не знам каде printf () е, вие не ќе ми кажеш каде printf () е. Добро printf () е вклучена во стандард на I / O, па кога ќе го користите printf () бидете сигурни дека да се има линија над вашиот код. Така на пример, printf () тука е функција. Таа го испечатите нешто внатре во загради на корисникот. Некој би сакал да се земе прободе во она што оваа линија код во право тука се случува да се печати? Според тоа, одговорот е на екранот. Некој? VERDI: на дното. АНДИ Пенг: Верди, зошто не одиш напред и да каже целата изјава? VERDI: Здраво, моето име е Анди, и јас сум 20 години. АНДИ Пенг: Ах, прекрасна. Значи во оваа линија ние ќе треба да испечатите, Здраво, моето име е Анди, и јас сум 20 години, кои е всушност вистинска изјава. Синтакса. Па неколку реченички прашања кои вие момци сакате да бидете сигурни дека знаете. Цитати. Двојни наводници кажам компјутер што се внатре се случува да се печатат. Сè што во внатрешноста конзерва само да биде како точно можете да ја напишете, освен за најчесто на крајот, ние се случува да сакаат да се вклучат на hash-- ох sorry-- цртичка n. Па цртичка n. Сака ли некој да претпоставете во она што го прави за да нашите код кој? Је. ЗВУЧНИЦИ 6: ја става на нова линија. АНДИ Пенг: Токму така. Така што сите тоа не е им овозможи на она што се случува По ова, по оваа изјава, за да бидат испечатени на нова линија. Така што, кога сте пишување вашиот код не случајно се работи закачени за крајот тоа што вие не сакате. Што се добива уредно печатени една линија а потоа ќе почнеме на следната линија. Дали некој се сеќавам она што запирка прави кога сме кодирање? Је. ЗВУЧНИЦИ 7: Изјава. АНДИ Пенг: Жал ми е? ЗВУЧНИЦИ 7: Дали го завршите изјава? АНДИ Пенг: Да. Така што во C, или било кој програмски јазик, точка-запирка означува крајот на програмирање на линија. Така на пример, на англиски јазик се користи период да се каже, о ова е крајот на реченицата. Во програмирање, иста работа, имаме запирка за означување на крајот на линијата. Честопати, кога сте почнуваат да се програмира, ќе можеме да согледаме заборавајте да внесете точка и запирка а потоа ќе се обидат да се кандидира на вашиот код и тоа не функционира. А ти си како, Ах, јас не знам зошто, тоа треба да се работи. Шансите се дека најверојатно заборавиле запирка или заграда или нешто некаде. Значи, тоа е важно да се запамети. Кул. Добро, кревање раце, како многу луѓе тука имаат некогаш земени АП компјутерски науки или програмира во Јава пред тоа, некогаш? ВО РЕД. Убава. Дека нема да се применуваат тогаш, но во Јава, можете имаат нешто што се нарекува System.out.println која не постои во C. Па во C, секогаш кога ќе сакате да го додадете во променливи во се што сакаш да се печати, има на специфични синтакса ние ќе треба да се користи. Што се вика на placeholding-- суштина ние додадете променливи во место на цел број или променлива дека ние сакаме да се печати. Така што вие момци можат да се види што сме вклучени нова глава библиотека датотека. Библиотека на CS50. А се содржани во рамките на тој CS50 библиотека е заедничка функција ќе биде со користење на во нашиот курс наречен GetInt (). Дали некој сака да земе прободе во што веројатно може да се прави GetInt (). ПУБЛИКАТА: [Беззвучен] АНДИ Пенг: Жал ми е. Не можев да те слушам. Maddie, никого. Maddie: Ах, тоа го поттикнува ви за цел број. АНДИ Пенг: Токму така. Затоа оваа функција, уште функција која е веќе е напишана од некој друг дека ние може да се повикаат сега. Сето тоа е што е во доменот на вас, на корисникот, за да го внесете што сакате како код работи и тоа продавници whatever-- во овој случај ние сме GetInt () - ИНГ, па тоа значи дека ние сме добивање на цел број. И ние ќе треба да се сместат тоа во друга цел број дека ние сме само се нарекува возраст. Кои имаат смисла за сите? Кул. Па сега дека ние сме чуваат овој број, дека ние сме поттикнати од страна на корисникот, во оваа променлива, ние сме создадена од тип int наречен возраст, можеме да одиме напред и место дека во нашата printf () функција. Па синтаксата обично за printf () е дека каде и во вашиот вистински физички линија сакате да ја вклучуваат таа цел број, да го направите тоа симбол право, таму, знакот за процент, со тип на променлива, што сакате. Значи во овој случај возраст е цел број. Значи сте ќе треба да се вклучат % i, бидејќи тоа е цел број. А потоа и по својата изјава, си оди да се направи запирка и името на променливата. Па еве, ние ќе треба да се печати надвор, Здраво, моето име е Анди, и јас сум празно години. Hashta-- или, sorry--, возраст со што и јас влез. Значи, ако јас се да го внесете 20 за мојот GetInt () овде, тоа ќе се печати на иста работа. Но, ако сакав да го внесете нешто друго, како можеби 40 или 45, тогаш ќе се види дека се гледа соодветно во кодот. Значи ова е пример на нешто во кое тоа отпечатоци надвор и гледа кон вас, како и ако тоа е иста работа, но под хаубата на компјутерот има всушност многу различни работи што се случуваат. Кул. Во ред. Па што ако ние сакаме повеќе променливи? Прилично лесно. Исто нешто. Ние исто така имаме нова функција тука се нарекува GetString (), исто така се вклучени во рамките на библиотеката CS50, дека сите тоа го прави е да го извести корисникот за серија, која е само збир на знаци, па како казна или како име. Значи во овој случај, ќе имаме два променливи% s за низа и% i за цел број. И ние ќе треба да се следат дека од страна на две променливи ние сакаш да бидат застапени, во цел дека тие се појавуваат во реченицата. Така на пример, името ми е празно, сакам име таму, па јас ќе одам да го содржи името на прво место. А потоа и потоа, сакам возраст, сакаат да имаат возраст секунда. И така, ако сакав да влез, Здраво, Моето име Анди, и јас сум 20 години. Ако јас внесуваат Анди и 20, иста работа ќе се печати; Меѓутоа, сега имаме две чуваат варијабли на името, како и Инт. Је. ЗВУЧНИЦИ 8: Дали тоа ќе биде во можност да се кандидира, ако е вклучен име и возраст на крајот од тоа? АНДИ Пенг: Да. Тоа е навистина добро прашање. Па скратам приказната, бр. Бидејќи името и age-- што видот на променливата е името? ЗВУЧНИЦИ 8: Стринг. АНДИ Пенг: И што тип на променлива е возраст? ЗВУЧНИЦИ 8: Integer. АНДИ Пенг: Значи тука имаме случаеви за низа и цел број, нели? Значи, ако сте во ситуација да го вклучите овие, компјутерот не се случува да се знае. Тоа се случува да се провери за стринг, и ако се обидете да го даде на int, тоа се случува да биде како чекај Јас сум збунет, можете ми рече дека треба да биде доделување меморија за int. И токму тука, кога дека очекува цел број и можете да го даде името и низа наместо тоа, тоа е, исто така, се случува да биде многу збунувачки, тоа нема да се работи токму онака како што е потребно. Па еве, именување и синтаксата е многу важно за водење код. Секој добар? Је. Maddie. Maddie: Еве, јас знам што сум погледна во примери во класа, каде што побара она што е вашата возраст, што е вашето име. Тука, дека ќе биде тоа doesn't-- ако ние требаше да се кандидира на овој законик, тоа не ќе побара за тоа? Но, ќе само внесување два броја а потоа тоа ќе се кандидира, како тоа? АНДИ Пенг: Да, точно. Значи, ако си сакал за тоа да дисплеј, ве молиме внесете ја вашата возраст, можете само да додадете printf () функцијата која вели, ве молиме внесете ја вашата возраст, над неа. Тоа е добро прашање. Је. ЗВУЧНИЦИ 9: Значи, веќе ќе биде вклучени во GetInt () [Беззвучен]. АНДИ Пенг: Не, тоа не е всушност. Значи сето ова не е само поттикнува празен екран на корисникот за да го внесете нешто. Ако го сакаат тоа, ако сакате тоа да се печати на нешто што кажува на корисникот, како, Те молам дај ми на вашата возраст, тогаш ќе мора да printf (), кои себе. Затоа што секој го користи ова функција за различни работи, ќе може да се чување на возраста, ќе може да се чување на адреса, ќе може да се складирање на телефонски броеви. И така тоа е навистина до лицето го користи вашиот момци ' за она што го сакате тоа да се каже. Је. ЗВУЧНИК 10: Значи, само за да се разјаснат, каде правиш внесување на име и возраст така што се појавува на местото на% s? АНДИ Пенг: Како и во на корисникот? ЗВУЧНИК 10: Да, како и како да направам направи it-- каде можам да се стави Анди, и каде можам да се стави 20? АНДИ Пенг: Да. Значи, ако сте во ситуација да всушност работат на овој законик, Јас не сум, всушност, водење на код, ова е само тука во моментов. Ако јас да се кандидира на кодот, јас би компајлирање на кодот, се направи датотека, кандидира на кодот, и тогаш би само да биде на две места за мене да го влез. Је. Вие момци ќе видите кога ќе се играат околу со кодот себе. Ред ние ќе треба да се движи во следниот дел од она што ние ќе се покриваат денес. Ние ќе треба да одат над она што условно извештаи се. Значи, ако вие момци се сеќавам и да се потсетиме од предавањето, условно извештаи, сите тие се збир од инструкции за компјутер во што ако некој услов е вистина, ќе се изврши на кодот внатрешноста на таа состојба. Значи во суштина Scratch-- големата тема од денес е дека вие момци имаат веќе сите увидоа логиката зад сето дека ние сме ги покриваат. И сите што го правиме е преведување нешто тоа беше многу интуитивен во Нула, и е тешко за кодирање во синтаксата ќе биде со користење на за класата во која е В. Па логично, сето ова беше блок е тоа што дел од кодот во право таму. Је. ВО РЕД. Ние, исто така, влезе во друго место ако ... изјава која е само дополнителен слој на сложеност на изјавата ако каде што компјутерот зема се погледне на овој и гледа, ако оваа состојба е точно, дали што и во внатрешноста на овие две загради, else-- толку вид како стандардно ако тоа не ги исполнува condition-- направите тоа. Тоа е како крстопат на патот. Ако надвор врне, да го ставам на дожд јакна, друго ништо друго не ми се стави на дожд јакна. Дали таа логика се направи смисла на сите? Кул. Во ред. Па како хард пример на ова што ние ќе ја видите во C е ако сакав да се создаде променлива наречена домашна часа. И ако домашна часа е помалку од пет, велам Животот е голема. Тоа е прекрасно. Сепак, велат Борбата е real-- што е она што сите на овој понеделник попладне науката Хил се веројатно го правам во право now-- ПУБЛИКАТА: [се смее] АНДИ Пенг: Тие начин би, ти благодарам за тоа. Начинот на кој ние би hardcode ова во C е if-- да претпоставиме ние веќе имаат променлива од тип int нарекува домашна работа часа во право тука. Ако домашна часа е помал од пет printf (), Животот е голема. Се сеќавам задржи / n, бидејќи сакате нова линија после. Друго печати, Борбата е реално. Дали сите се разбере како Јас transitioned од овој блок во овој блок од код? Кул. Во ред. Па сега ние си оди за да ја погледнете повеќе извештаи Ако целосно. Значи, да се преземе Целта на оваа програма беше ние го извести корисникот за еден степен. Ние брза користење GetInt () за одделение, и тие влезни вредност, и сакате да се прикаже каков вид на одделение ги добија. Значи, ако јас се да дизајн програма, јас значи обично во сите нашите очи, 90-100 е A, 80-90 е Б, и така натаму и така натаму. Она што е во ред со оваа дел од кодот кој тоа не е прави она што го сакате тоа да се направи. Је. ЗВУЧНИК 11: тие имаат пониски граници, но тие немаат горни граници. АНДИ Пенг: Токму така. Дали сите се слушне она што рече таа? Таму се случува да биде горниот граници, но не пониско граници. Жал ми е, обратно, долните граници, нема горна граница. Па би сакал да земе прободе во велејќи она што ќе биде отпечатена на овој екран ако јас се да се кандидира овој код. ЗВУЧНИК 11: грешка? АНДИ Пенг: грешка? Голема погоди, не е во ред. Дали некој има друга прободе? Да, Арон. Арон: Ако се стави во нешто поголема од 90, тоа ќе се прикажат сите оценки го добив. Тоа ќе покаже добив A, ви доби Б, имаш еден В. АНДИ Пенг: Да. Тоа е точно. Значи, тоа би било прекрасно. Сепак, тие се меѓусебно ексклузивни, си мислам. Ако јас да го стартувате овој дел од кодот. А потоа и да речеме, јас внесуваат одделение на 95. 95 па сега се чуваат во ИНТ наречен одделение. И така Ц е јазикот што води до врвот до дното, па затоа се случува секогаш периодот до дното. Па затоа се случува да дојдат тука, да се прочита ако степен е поголема од или еднаква на 90, printf () сте ја добиле А. Велики, се имаат 95 години, кој е поголем од 90. Тоа се случува да се печати, Добив А. Тоа се случува да ги погледне во овој ако, тоа се случува каже, добро 95 е исто така повеќе од 80, тоа се случува да се печати можете, исто така, се здобија со Got Б извичник, и така натаму и така натаму. Така што сите можеме да видиме, ова е честа грешка што може да се случи кога сме пишување на код за да внимавате. Секој, било прашања во врска со зошто тоа се случува? Одлично. ВО РЕД. Па, како да го надминете овој, е очигледно претставува логично прашање. Па, имаме овие убави работи вика ако друго, ако друго ако друго извештаи. Па можете да видите, ако сакаше да се промени тој проблем, си сакал да го прават секој на услови меѓусебно се исклучуваат, сакаш да додадете друг ... ако соопштението. И овие од разбира мислам на нив како скали, или како скалила за ladder-- можете да додадете како многу од овие што вие сакаат за што повеќе услови, како сакате. Па еве, ако јас се внесуваат градус да биде 95. Ако одделение е поголем од 95, printf (), добив А. Велики. Тоа се случува да се види на друго место ако ... и тоа се случува да се знае, О, не, Јас веќе извршена првата друго. Јас know-- или првиот if-- знам дека Јас не мора да се погледне во која било од овие бидејќи еден од нив веќе е вистина. Па затоа се случува да се кандидира од врвот надолу. Штом првиот е точно, тогаш тоа се случува да го прескокнете над сите останати на друго место ... IFS. Дали тоа има смисла? Значи, на овој начин имаш различни нивоа на проверка и штом еден од нив е false, Останатите се, исто така, тие нема ни да се провери. Кул. Во ред. Значи ова е пример за еден поинаков вид условна изјава гледаме поретко, но ќе ги видиме и да ги искористиме. И тие се често повеќе ефикасен за одредени случаи. Па ние имаме она што се нарекува изјава гајтан. Па пред да покриени што е на друго место изјава, една ако ... друго изјава. Тука, ние се она што се наречена прекинувач извештаи. Па кога ги користиме прекинувач извештаи е клучот? Така во соопштението switch можете обично, обично, вие всушност може само внесување броеви за вашиот променлива која сте одјавувањето. Значи, ако јас сакав да се провери да се види ако одреден number-- на пример оценка, ако добив 90. Сакам тоа да се види дали тоа е А, Б, или В. би можел да има случај тука. Сепак, случајот има да биде уште една константа. Па во оваа смисла, изјава прекинувачот може само проверете за еднаквост на два броја. Тоа не се провери за било што друго. Па тоа е нешто да се биде многу внимателни кога ќе го користите овој. Па еве, ако сакав да се провери да се види ако моето одделение од 90 години е еднаква на 90 или 80 или 70 или 60 години, а за печатење го соодветното одделение, Ќе бидам во можност да се напише дека во изјавата на прекинувачот. Па затоа се случува да дојде тука, проверете е оваа цел број еднаков на оваа постојана? Ако не, тоа се случува да го прескокнете. Дали е еднаква на постојана две, и така натаму и така натаму, додека не го погоди дифолт, ако никој од нив не се еднакви. Штом еден од нив е поставен да биде еднаква, тоа се случува да го направите тоа линија на кодот и пауза. Што значи дека ќе ја достигне таа се кандидира, се скрши, и само целосно прескокнете на дното на код. Па во таа смисла на вид на функции како ако друго, ако друго, ако изјавата. Значи тука е бетон пример за вас момци. Па ајде да претпоставиме дека сакам да создаде променлива наречена година основана. И јас сакам да го извести корисникот за да го внесете година во која е основана во нивното училиште. За да можам да се создаде изјава прекинувач тука. И да речеме, јас внесување 1.636. Овој код тука се случува да се види прекинувач година основана што е еднакво на 1636 година. Тоа се случува да се види случај 1636, о тие се еднакви, printf () не треба да ви биде во тоа училиште на север? Бидејќи претпоставуваме тие не оди тука ако одат на Харвард, се скрши и да го прескокнете до крајот. Ако јас да се влезни 1701 година, кој Претпоставувам дека сите од нас би го влез, тоа ќе го прескокнете овој случај, доаѓаат сведува на две случај кој е 1701 година, и печатење Добредојдовте на Јеил! Се скрши, го прескокнете до крајот. Бидејќи најверојатно се одвиваат на овој курс онлајн во кој case-- страшни добредојден да Yale-- тоа се случува да одат на Стандардно печатење, Здраво интернет! И се кршат. Је. ЗВУЧНИК 12: Дали можете да го користите на друго место наместо на стандардната таму? АНДИ Пенг: Не, бидејќи начин што целата оваа функција прекинувачот е изградена, можете синтакса треба да се користи случај е случај стандардно. Тоа е како на друго ако ако, ова еден случај тоа е случај стандардно. Је. ЗВУЧНИК 13: Вие можеби веќе го рече ова, но може да има повеќе од два случаи? АНДИ Пенг: Да, би можеле имате како многу случаи, како сакате. Сфатете го тоа како само се допаѓа бескрајно додавање на. ЗВУЧНИК 14: Ако вклучен 1701 со 1636 година, тоа навистина не го прават право разликата? Тоа е само ќе треба да се проверува за тоа. АНДИ Пенг: Тоа е навистина добро прашање. А ние ќе ги допре ова подоцна, но само знам дека е прекинувачот изјава е infinitely-- тоа е поефикасен од него и ако друго, ако поради тоа што работи со користење на различни тип на функција која ви дозволува, во суштина, да се само скокнете директно до случај треба да биде во. Је. ЗВУЧНИК 14: Кул. Благодарам. АНДИ Пенг: Да ЗВУЧНИК 14: и не би можел направи случаи како и е поголема. АНДИ Пенг: Не Значи, тоа е она што се ограничување за изјава прекинувач е дека имате да се има само константи, само цели броеви. Је. ВО РЕД. Така што ова е нешто што можете момци ќе се судрите со многу поретко на, но јас само сакав да се воведе во случајот. Имаме тука што е нарекува троичен оператор. Каде што во суштина, тоа е исто како на Ако изјавата собрани во една линија. Еве, јас ќе одам кон следната линија, следно, бидејќи тоа е полесно да се види. Значи, сите ние го видел ова, нели? Ова е прилично лесно да се следат. Ако сакав да се направи една променлива наречена стринг именуван ОК, доколку одреден број Давам тоа е помалку од 100, јас сакате да го доделите ниско на стринг, друго што сакате да го доделите на високо ниво. Ова овде е тоа точно истото оние осум линии на код се прави. Значи тука сакам да се создаде стринг променлива. И ова е состојба сум проверка, ако бројот е помал од 100, тогаш може да се додели на вредноста на ниско ниво, друго назначи вредноста на високо ниво. Овие слајдови ќе биде онлајн, без грижи ако вие момци не го добивате ова долу. Ова е само на поедноставен начин, повеќе ефикасен начин на пишување на код. ВО РЕД. Па сега ние ќе треба да внесете она, за повеќето луѓе се како многу, многу збунувачки нешто да се размислува за тоа во прв план. Делот на јамка. Така, денес, ние се случува да се зборува за три типа на петелки. Ние ќе треба да се започне со време јамка, тогаш зборуваме за една направите додека јамка, а потоа зборува за за петелки. Значи во суштина, за повеќе визуелните ученици таму, имаме, во суштина, графички опис на она што додека јамка прави. Па во програмирање, ќе почнат и да влезат во јамка во одреден момент. Да проверите состојба. А ако условот е исполнет, ќе се изврши код во внатрешноста. И ќе се врати околу и да се провери. Ако ова е вистина ви остане во трчање овој код наоколу и да се врти во јамка. Но, втората дека состојбата станува лажни, ви се случува да се пробие и да се стави крај на јамка. И ова е во основа синтакса ви се случува да го користите. Додека некој услов е точно го направите ова, ако тоа не е точно, си оди за да го прескокнете до крајот и се движи напред со вашата програма. ВО РЕД. Дали некој има еден пример за тоа што потенцијално може да се случи ако се обидам да ја извршите оваа парче код? Патем, тоа е Scaz SAJ--, Анди, Jason-- ќе потпише нашите пораки, Љубов, Saj. Кои сме ние. ВО РЕД. Некој има еден пример, или да има идеја за тоа што ова ќе печати? Вид на трик прашање. Па еве, се сеќаваш на состојба ние сме проверка за е додека е вистина. Така, додека ова е вистина, тоа е случува да се печати, сакам Saj! Дали има некој момент во кој сите ние би промените оваа да ништо не е така? Не, во ред? Па овде, имаме се сретнал што е веројатно ќе треба да се прислушување многу вашите програми, со бесконечна јамка. Ќе најдете дека ако стартувате овој дел од кодот, тоа е само ќе да се задржи печатење, сакам Saj! Додека ние го цениме поддршката, ние не сакаме вашите компјутери да се сруши затоа што задржи печатење сакам Saj! Затоа ве молам, ве молам, избегне бесконечна јамка затоа што никогаш не се случува да се оцени на false и никогаш не си оди да го напушти јамка. И ви се случува да го да бидат вовлечени во засекогаш. Кул. ВО РЕД. Вториот вид на јамка ние ќе зборуваме за денес е направите додека јамка, направете додека јамка. И тоа се нарекува направите додека јамка бидејќи ќе треба да не се прави и некое време. Така што ова е прилично слична на време јамка, но малку поинаква. Еве, ви се случува да се направи што и во внатрешноста на оваа додека некој услов е вистина. Значи, ако јас се C и на компјутер сум трчаат овој дел од кодот, Јас ги погледне на врвот. Одам на C, велам направи ова нешто. А потоа и да се провери, а оваа Точно е, морам да го повтори. Но, иако ова е неточно, Јас тогаш се оди напред и никогаш не се врати во тоа јамка повторно. Може некој да земе прободе во што е разликата помеѓу овој циклус и оној што го само ја погледна беше практично. Је. ЗВУЧНИК 15: Состојбата доаѓа откако наместо порано? АНДИ Пенг: Токму така. Па, таа рече дека состојбата доаѓа по него, не пред тоа. На крајот на краиштата, разликата помеѓу оваа и циклус, додека е тоа што вие сте само ќе се направи што и во внатрешноста на оваа, без оглед на дали или не вашата состојба е вистина, а потоа и да се провери состојбата. Значи во овој случај, вие сте always-- на овој начин, ти си секогаш си сигурен она што е внатре трае најмалку еднаш пред контрола да се види ако сакате тоа да се кандидира повторно. И тука е пример од кога ќе ја користите. Така на пример, ако сакав да се има променлива од тип int навеле возраста, и јас сакам да го извести корисникот за нивната возраст, Одам да се направи printf () Колку години имаш? возраст = GetInt (), која се прашува корисникот. И некои луѓе ќе бидат навистина досадно. И да не сакате на грешки во вашиот програма на некој внесување како, ох сум негативен 4 години или whatever. Во кој случај, ако тие направат тоа, ова го оценува да точно, што значи дека ќе одам да се мора да продолжи да оди напред и да правиш ова. Така што ова се случува да се задржи повторно прашува корисникот да ви даде како вистински возраст број и тоа е ќе продолжи да оди напред и redoing тоа се додека не ви даде вистинска возраст поголем од еден, или не е нула. Така трага, трага. Ова ќе биде многу, многу корисни за една од вашите pset проблеми. Је. ЗВУЧНИК 16: Whoops, жал. АНДИ Пенг: Да. ЗВУЧНИК 16: Дали постојат, а не да биде кретену, but-- АНДИ Пенг: Не се грижи. ЗВУЧНИК 16: --are таму различни правила тука, или не сте само да заборавите да се стави цитат? АНДИ Пенг: О, да. За жал, тоа е сосема ми е лошо. Што дефинитивно било би требало да биде еден цитат. Добар улов. Дека не би се кандидира. ВО РЕД. Па последниот тип на јамка ќе разговараме за и, во крајна линија, вид на повеќето комплекс е за телефонска линија. Не грижете се ако не Знаеш што значи тоа. Тоа е прилично збунувачки на прв. Ние ќе одиме во текот на пример. Сето она што се случува во за телефонска линија е дека имате три извештаи дека си оди за да се вклучат. Така и за одредена работа, ти си случува да се иницијализира со променлива. Ви се случува да додадете услов да која овој циклус ќе продолжи да работи. И тогаш, на крајот на јамка, си оди за да се освежат. Можете да го обновите на променливата што сакате да ги пратите. Па ние обично користат за јамки за кога ќе сакате да се кандидира еден циклус по одредена сума на време и ние веќе знаеме, О сакам овој циклус да се изврши како 10 пати, тогаш можете do-- јас ќе одам над пример на следната страница. Па еве на пример, во нула, ако сакаше нешто да се повторува 10 пати, Се што требаше да кажам беше: Повторете 10 пати сакам Saj! што е повеќе прифатлива знак на поддршка за нас наместо бесконечна јамка. Тука, како ќе се транзиција на C и запишување што е за int-- јас ќе одам да се создаде или декларирате променлива од тип int i име. Одам да се иницијализира тоа да се 0, така што i = 0; и тоа ќе биде мојата состојба. Па јас е помал од 10. А потоа на end-- на последната изјава сте случува да имаат е ажурирање на Што се случува со променливата i на крајот од вашиот за телефонска линија. Така, тоа е вид на збунувачки, бидејќи различни делови од оваа линија се случуваат во различни типови на јамка. Но, јас ќе одам во текот на pseudocode пример за тоа а можеби и се објасни ова само малку подобро. Значи тука. Тоа е циклус кој го видоа. Pseudocode во суштина, она што што се случува во оваа програма, Прв пат сум создавањето Јас, се иницијализира на 0. Јас сум проверка за да види дали е помалку од 10, во кој случај прв пат е бидејќи 0 е помалку од 10. Така јамка се случува да се кандидира. А потоа јас ќе одам да се печати ја оваа линија. А потоа на крајот на оваа линија, право тука, јас ќе одам да направите прираст јас, јас ++, сето она што значи е што ја зголемува по еден. Па јас сега е 1. Поради тоа што некогаш беше 0, ако јас прираст тоа е, тоа е сега 1. А потоа јас ќе одам да се вратиш на почетокот на јамка и јас се провери состојбата. Состојба се уште е вистина? Да, 1 е уште помалку од 10. Па затоа се случува да се печати ова, повторно, оди, а потоа јас прираст, и проверете состојбата континуирано, континуирано, додека на крајот се до точка каде што е 10. Ви се случува да се печати ја оваа 10 пати а потоа јас ќе се изедначи 10. Си оди за да се провери состојбата. Е 10 помалку од 10? Не, тоа не е точна. Така, овој циклус не се случува да се кандидира, тоа се случува да се скрши, и ви се случува да го продолжи со вашиот код. Така што вие момци да видите, ова е навистина одличен пример на јамка можете да програма во која работи за одреден износ од пати. Секој еден јасен? Је. ЗВУЧНИК 17: Како за зголемување експоненцијално, тоа е различни кодирање? АНДИ Пенг: Вие can-- ќе одиме над ова во следниот слајд. Добро прашање. Е anyone-- пред да се пресели on-- некој воопшто збунет, бидејќи ова е навистина тежок концепт. Не се грижи, ако you're-- ОК. Кул. Во ред. Само општо слајд. Ова додека јамка прави иста работа за телефонска линија беше. Тоа е само напишано поинаку. Вие момци можат да се внимателно слајдови во својата погодност подоцна. Но, само знам дека има повеќе начин на пишување на истото да се случи со различни петелки. ВО РЕД. Значи, сега ќе го добиеме во прашање на она што ако имаме јамка внатрешноста на јамка. Ние сме добивање во вистински Основање тип работи тука. Кога ќе сакаат да се прават работите на повеќе Времето во внатрешноста на други работи кои ги прават работите повеќе пати, ќе сакаат она што се нарекува вгнездени за телефонска линија. За оние од вас кои први го гледаат ова и се многу збунети, сите што го правиме тука е да се има за телефонска линија, каде што имаме променлива на ред. Но во него, ние исто така имаме уште една за телефонска линија на променлива наречена една колона. И Силно препорачуваме на сите вас кои се збунети прво да се задржи track-- подготви ова, се подготви ова. Не обидувај се да се само причина низ него, подготви ја. Во вашата глава, на ова парче хартија, или што, пишуваат ред, ги пратите на она ред е еднаква. Пишувам колумна, да ги пратите на она што е еднакво на колоната. И да ги пратите на она што е печатење со секое повторување. Секој повторување на овој циклус, секој повторување на тоа поголемо јамка, задржи само по логиката. И јас ви гарантирам, ќе ви се допадне она што го гледате, бидејќи тоа е исто така многу се применува за вашиот проблем сетови. Кул. Во ред. Значи најважно дека вие момци се веројатно сите размислување за тоа токму сега, се вашиот проблем Постави 1s, што се должи четврток / петок. Water.c во вашата програма, алудираат ви се случува да имаат да го извести корисникот за влез. Во рамките на вашиот mario.c програма ви се случува да имаат да се користи за вгнездени јамка, која е за телефонска линија во внатрешноста на за телефонска линија, да се печати блок на пирамида, во суштина како што Марио има да скокаат преку. А потоа и во внатрешноста на вашиот greedy-- или можеби Прават промени, ако некој од вас момци слушнала that-- ви се случува да треба да бидат многу Внимавајте на првиот вредности со подвижна запирка. Се сеќавам лебдечки децимали и цели броеви не се иста работа. Ги пратите на кој е кој. И ви се случува да се користи условно извештаи, како и. Добро, последно нешто. Имам остави неколку минути. Стил. Така што ова е нешто што не се всушност, влијае на ефикасноста, или вистинските работи на вашиот код. Сепак, тоа ни ефекти како вашиот одделение, како и вашите читатели. Тоа ефекти себе, ако сте се обидува да најде проблемот. Тоа ефекти на читливост на вашиот код. Па стил, како и кога ќе се обидуваш да се стил есеј за англиски јазик, ако немале став, имате се што вид на измешани заедно на една линија, тоа го прави навистина тешко за секого да ја прочитате вашата есеј, дури и ако вашите поени се логички звук. Истото во програмирање. Ќе може да има нејасни ужасно Scaz код кој ќе ги покрие, и се уште може да работи и да функционира. Но, за нас, како вашата прекрасна TAS, кој ќе биде за читање и оценување на вашите PSets, тоа не е многу убаво. Затоа ве молам, за доброто од нас и себе си, кога се обидувате да го поправи проблем во вашиот код, а ти се обидуваш да читај свој код, бидете Дали сте сигурни дека да се следат некои конвенции дека ние ќе треба да се премине. Значи прво. Им даде на вашиот променливи осмислени имиња. Ако сакате да ја запази цел број наречен возраст, ве молиме да го именува возраст. Не го именува висина. Кога ќе се обидуваш да се чување на возраст во висина, тоа го прави сето она многу збунувачки за нас. Ние не сакаме да се мешаат. Не ви се допаѓа да се мешаат. Никој не сака да се меша. Ако си оди за да се направи нешто, го именува нешто значајно. Меѓутоа, во за телефонска линија, една карактер променливи се обично добро. А за телефонска линија, ако сакате само јас, и ј, к, само се чувствуваат слободни да го направи тоа. Конзистентна иницијализација. Значи она што значи тоа? Тоа значи дека технички, теоретски, можете да иницира и да се создаде повеќе променливи на иста линија. Така на пример, можам да се создаде цел број наречен scaz_age, и број наречен andi_age = 20, и цел број наречен jason_age на иста линија. И јас исто така може да се додели само еден од нив, а не на другите да вредности. Бараме од вас немојте да го направите тоа. Бидејќи тука сте во основа создадена три променливи, но само еден од нив всушност, има вредност. И тогаш кога сме обидува да го прочитате вашиот код, или ако сте се обидува да се поправи проблем во вашиот код, тоа е многу збунувачки да се следат. Па само за својата читливост, за нашите читливост, не го прават тоа. Конзистентна големите загради. Некои луѓе како да се стави нивната големи загради во различни места. Тоа навистина не е важно. Само бидете сигурни дека сте доследни во вашата сопствен код за тоа каде сакате да ги стави. Конзистентна проред. Ако се стави простор по за телефонска линија, секогаш го правам тоа. Не само како вид на го направи тоа На некои места, не го прават тоа во другите. Само да биде конзистентна. Второ, ако некој би сакал да се внимателно Стил Водич на CS50, ние официјално да има водич стил кој сите овие конвенции ти го кажува, плус повеќе. Тоа е онлајн. Тоа е како cs50.net/style или нешто слично. Можете да го Google. Конзистентност е клучна. Па не се грижи што другите луѓе го прават, само бидете сигурни дека сте доследни во рамките на својата код. Секој имате било какви прашања во врска со тоа? Је. ЗВУЧНИК 18: Значи правилна работа да се направи со иницијализација е само имаат сите нив во посебна линија, е дека она што си ти што зборуваш? АНДИ Пенг: Па јас ретко се случи ова. Но, ако си сакал да, ако си сакал да бидам како заштеда на простор во вашиот код, или што и да, можете да го направите тоа. Ве молиме да се само не се иницијализира едно нешто, а не на другите. Значи, ако сакате да се направи scaz_age int, int andi_age, int jason_age, тоа е во ред. Само не се иницијализира еден а не на другите е за сите. Прашања? Во ред. Одам да се помине надвор од микрофон, и ласерски покажувач, и диригентската палка на Scaz во овој момент. Ова е непријатно. Еве го. Брајан SCASSELLATI: Ви благодарам. Како е тоа за звук? Звукот е добар? . Одличен. ВО РЕД. Значи, Здраво на сите. Одам да се обиде да работат преку практичен пример со вас. И ние ќе треба да се користи е CS50 развој на животната средина, што се нарекува на интегрирана развојна околина. И сте виделе ова демонстрираа во предавањето. Проблем и во собата 1, ти си ќе имаат можност да го користат, и се позанимавам со тоа, и да се навикне на тоа, затоа што ние ќе треба да го користам па сè до крајот на семестарот. Така што во овој ИРО, се она што изгледа како многу традиционални прелистувачот на датотеки во текот на една страна. Имаш еден дел до врвот каде одите за да ја видите вашиот изворен код, вашата Cfile, кодот што ќе пишувам. И долу на дното, ќе има терминален прозорец која ќе биде со користење на двете компајлирате вашиот програмата и да се кандидира или изврши вашата програма. ВО РЕД. Па само да ни даде малку основа, во кој терминал, си оди за да биде преку сет од команди кои се стандард во текот на команди повеќето од Unix или Linux системи. И така, ако некогаш сте се користи било каква форма на Unix, Убунту, или било која од други вкусови, овие се случува да изгледа познато. Ако не сте, не се грижи. Нема ништо комплицирано за нив. Тие се само со користење на различни синтакса, различно именување конвенција отколку што сум видел. Така да се листа од датотеките во одреден директориум, тие се случува да се користи команда наречен ls, или листата. Ако сакате да се види сè со сите детали, што ќе го користите командната линија расправија со ls -l. И тоа ќе ви покажам се што во повеќе детали, вклучувајќи ги и дозволите за датотеката. За да го смените именик, ќе ја користите командата cd. И ќе бидете во можност да го промени директориумот и да одат во вашиот домашен директориум. Тоа е само ЦД со сите себе, CD со две точки ќе ви се врати до еден нивото на претходните директориум. И исто така можете ЦД на поддиректориум со впишување на CD и името на тој поддиректориум. Можете исто така да креирате нови директориуми. И ние ќе треба да одиме преку ова во само една минута. Туку само да се стави се што е на екранот. Така што ќе може да ги види. Вие исто така ќе имаат можност да се манипулира со датотеки директно од командната линија. Вие ќе бидете во можност да ги копирате, да ги преместите, или да ги отстрани, што е, ефикасно, да ги избришеш. ИРО на CS50 ви дава целосна силата на аргументите на командната линија. А тоа значи дека исто така можете да направи многу опасни работи. ВО РЕД. На пример, можете да се отстрани, или што е бриши, датотека без да сака за потврда. И може дури да се отстрани recursively-- тоа е цртичка r flag-- цела поддиректориум и сите на неговата содржина. ВО РЕД. Тие се наведени во црвена затоа што треба да се размислува "Опасност" секој пат кога ќе видите тие работи. ВО РЕД. Во ред. Сега, конечно, работите кои се ќе биде навистина вредни за вас, постојат неколку добри трикови да знаете како сте навигацијата преку овој терминален прозорец. Прво, можете да го исчистите екранот на било кое време со само пишете во јасна. И ви се случува да се види ми го направи тоа доста често. Можете исто така да само приказ текстот на датотека преку внесување на повеќе, а потоа името на датотеката. Тогаш ќе бидат во можност да дојдете назад и назад со што само со празно место и стрелките на тастатурата. Ако имаш, како што направивме денеска во предавањето, програма која се извршува постојано во бесконечна јамка, можете може да го запре таа програма од извршување со впишување на контрола, кој е држење контрола-C. И можеби ќе треба да се направи ова повеќе пати. Компјутерот добива далеку понапред од вас. И ти понекогаш треба да се го даде неколку обиди пред тоа, всушност, ќе се дојде преку. Вие исто така ќе бидат во можност да вид преку командите која што ја внесе со користење на клуч, Копче со стрелка, а потоа и на стрелката надолу клуч. И она што е најкорисен е наместо на пишување од долги имиња на датотеки, ќе бидете во можност да го користите јазичиња автокомплетирање неколку упатства. Сега ние ќе треба да се демонстрира сите оние во само една секунда. Значи, ако не се сеќавам нив, не се грижи. Тоа се работи дека ќе земам и да го користите како што одиме понатаму. ВО РЕД. Па во C-- разлика Scratch-- Ц е компајлирана јазик. Тоа значи дека ние ќе треба да се земе еден извор file-- тоа е текстот што го пишувате, командите што ви пишувам, printf () извештаи, петелките, сè што else-- и ние ќе да се земе дека датотека и да го предаде на програма наречена компајлерот. Потоа компајлерот ќе потрае дека текстот што сте го напишале и го преведе на бинарни инструкции дека вашиот компјутер е всушност, се случува употреба. Тоа се вика на објектот или извршна датотека. Ако се погледне во оваа датотека, си оди за да го видиш кодот кој што сте го напишале. Ако се погледне во оваа датотека, си оди за да го видиш случајна секвенца од знаци кои не прават смисла она. Тоа е затоа што тоа е бинарно. Тоа не е наменета за вас да биде за читање. Сепак, секој пат кога ќе сакате да го работи нешто, што ви се случува да се работи е овој објект датотека. Значи, кога ќе се работи со овие датотеки, ќе запише датотека во В. Ние тогаш ќе се компајлира, со користење на команда како шминка која ќе се повика на компајлерот ѕвекот за јазик C. И дека ќе се произведуваат на објект поднесе, како надвор, или во овој случај, името, моето досие, дека јас сум се стави во. Во ред. Значи, да се, всушност, се обиде ова. Па дојдов со еден пример за она што сакав да се обиде. И една од работите кои ме фасцинира е анимација. Па ние ќе се обидеме да се направи малку анимација користејќи само ASCII карактери. Ликови можеме да се печати лесно сега. Значи тука е мојот најдобар обид во создавање на за вас анимација на зајаче трчање преку високата трева. Ене го. ВО РЕД. Па тој не е водење уште, но тој е стои таму во високата трева. Сега, ако јас се аниматор, во старото училиште верзија на анимација, она што можам ќе стори се што ќе произведе слика на овој зајаче во тревата. А потоа ќе се произведуваат друг picture-- друг она што се нарекува cell-- дека беше зајаче само малку се помести. А потоа една третина оној кој имал зајаче се пресели малку понатаму. И јас би се произведе цела секвенца на овие клетки. Некои каде зајаче е завршена излез на левата страна. А потоа се движи полека, еден од еден кон средината. А потоа од средината во текот на правото. И ако би бил тогаш, навистина среќа, можев да го стави заедно и јас би можеле да ги анимира. И таму е мојата зајаче се протега низ трева. Тоа е мојата голема PowerPoint трик за тој ден. ВО РЕД. Па ова е добра како што добива. ВО РЕД. Значи, еве уште еднаш, тука е нашата зајаче се протега низ трева. ЗВУЧНИК 19: Повторно. Брајан SCASSELLATI: Еден повеќе време, во ред. Има вашиот зајаче. ВО РЕД. Така, денес она што ние ќе да направите е да одиме да се обиде да го автоматизирате процесот за производство на овие клетки. Ние нема да ги прилично се дојде до точка на се во можност да ги стави сите заедно. Но, ние ќе треба да се обиде да го автоматизирате процесот на генерирање на оваа низа. И тоа е дел од она што анимација денес е како. Што е, вие не мора да се прават работите со цртање се од рака. Ние ги користиме на компјутерот за да се автоматизира делови на тој процес. ВО РЕД. Па дозволете ми да ги префрлиме сега на нашите CS50 ИРО. И јас се создаде за us-- и нека ме зумирате тука малку bit-- сум креиравте за нас почетна точка. Секој пат кога бараме од вас да седат долу и да пишува дел од кодот, она што ние навистина ќе побара од вас да го стори се бараме да се реши проблемот. И начинот на кој што треба се размислува за тоа дека е, почнувајќи со некои едноставно дел од тоа решение. А потоа се изгради надвор од тој дел. И тоа е она што ние ќе треба да се направи денес. Така, наместо да се обидува на сите одеднаш да пишуваат на целиот куп на код кој е случува да произведат оние 10 анимација клетки, ние ќе треба да се започне, наместо со еден дел што работи. А потоа ние ќе се изгради малку околу тоа и малку повеќе и малку повеќе. Сега добра работа во врска решавање на проблемите на овој начин е дека тоа ќе ви овозможи да започнете секогаш со нешто што знаеш работи и да се воведе еден постепена промена. И тоа е одличен начин да научат како да се кодира, бидејќи секој пат кога ќе се направи промена, ќе видите што влијанието што го има. ВО РЕД. Значи тука е нашата почетна точка. ВО РЕД. Па на почетокот од моето досие, Јас сум хаш #included stdio.h. Тоа е, така што може да се добие printf () функцијата, за да работат. Јас тогаш имам мојата главна функција. И тоа се 'уште изгледа малку arcane или нејасни за некои од вас. Во ред е. Сите што го кажува е дека главната функција зема Нема arguments-- неважечки средства ништо во В И се враќа по конвенција цел број. Главната секогаш се враќа цел број, обично код зборувам нешта мина добро или не одат добро. ВО РЕД. Но, главната мора да го имаат тоа формираат за нас во моментов. Јас тогаш се стави во три линии на код. И заедно со секоја линија на код, јас сум се стави коментар. Сега, една од работите кои Ќе инсистираме на тоа што го правите, и тоа е толку важен програмирање пракса, е секогаш да се коментира вашиот код. Секогаш да се запишам во Англиски коментар нешто кој мислите дека на кодот е треба да прави. На тој начин, подоцна, кога ќе се врати на тоа, може да се погледне во него, а вие може да се каже, ох, јас се сеќавам што сум обидувајќи се да се направи со ова. Или кога ТА седнува пред вас да се се обиде да ви помогнат на работното време, тие може да се погледне на овој и да одам, да видиме што ќе се обидуваат да се направи, но наместо тоа, ова е што навистина се случува. ВО РЕД. Па имам три дела на мојот код, Одам да се прво на сите за печатење некои точки на почетокот. Тогаш јас ќе се печати од мојата исклучително фенси зајаче. А потоа некои малку точки на крајот. И овие три печати извештаи треба изгледа познато за вас во овој момент. Сето она што јас го правам во секој од нив е дека сум печатење на низа од карактери. Нема вклучени променливи. Сè што е само рамни. ВО РЕД. Значи, ако јас се памети сега да ми terminal-- ајде да видиме дали може да се добие овој назад out-- а јас ќе одам да напишеш јасна повторно. ЗВУЧНИК 20: Дали ние ги користиме на двојно коса црта да коментира? Брајан SCASSELLATI: Може користете double-- да. Има повеќе начини за остават коментари во C. Еден начин е да се користи двојно коса црта. Од друга е да се користи на коса и ѕвезда а потоа ја затвори со ѕвезда и коса црта. Во ред. Прво на сите, јас ќе одам да започнете со навигација околу тука. Значи, ако јас одам да ми домашен директориум, Се променив директориуми таму, Одам да се погледне и да видиме што е во тој директориум, ЛС, наведете надвор. Одам да видам што сум добив две поддиректориуми. Да се ​​направи ова малку поголем тука, така што сите ние може да се види тоа. Јас може да се види дека јас сум добив две поддиректориуми. Јас ќе го промени директориумот да се оди во просторот. А јас ќе одам само да напишеш надвор дел од неа, а потоа само кликнете на јазичето. И тоа ќе го доврши за мене. Фенси. Јас ќе погледнеше во просторот. И токму сега, јас сум работат на SuperSection кои ги учиме во моментов. Па јас ќе одам во таа листа. И, конечно, да се погледне и да видиме. А имам таа датотека bunny.c. Сите права па да ми јасно уште еднаш. А јас ќе одам да now-- повторно сум уште престојуваат во тој директориум и тоа ми кажува дека сум во дека SuperSection директориум. Одам да се оди напред и да ја направам мојата програма зајаче. И таа команда, направи Bunny, додека звучи малку чудно, исто така, се повикува на ѕвекот компајлерот. И тоа се произведени за ме излез кој е извршна funny-- една извршна датотека наречена зајаче. ВО РЕД. Можам тогаш, и ова звучи уште полошо, се изврши зајаче. ВО РЕД. И да видиме што тоа го прави. ВО РЕД. Тоа е малку на она што јас го очекував. Јас имам мојата зајаче слика во таму, но јас вид на сето тоа сакав само по себе. Што да пропуштите? ЗВУЧНИК 21: Slash l или црта n. Брајан SCASSELLATI: Слеш n. ВО РЕД. Значи, да се вратиме овде. А јас ќе излезе од тоа. И јас ќе се вратам во оваа. И ајде да ги разгледаме сега од мојата главна функција овде. Значи она што треба да направам? Сакам да се стави крај на линијата. Па јас ќе се стави во коментар. Јас ќе се стави во printf (). И она што треба да се стави во? / n. ВО РЕД. Што треба да се стави крај на тоа со? Запирка. Во ред. Сега, една од навистина најважно е да бидете сигурни секој пат кога ќе се направи промена во вашиот код, што ќе го спаси. Ако не сте го зачувале вашиот код, ти си ќе забележите една мала ѕвезда, таму горе. И ви вели дека ѕвездата не сте ги снимиле овој код. Ако јас го компајлирате токму сега, тоа не е ќе се одрази на тие промени, затоа што на компајлерот изгледа на датотека тоа е на дискот, а не на датотеката која е отворете го во вашиот уредник. Во ред. Па ајде да го спаси, а потоа ќе одиме право на долу тука, се врати надвор. Слезе на мојот терминал. И ајде да се расчисти просторот повторно. И ние може да се оди напред и еден повеќе време ја направиме нашата зајаче програма. И извршување на зајаче. Кои не работат или. Ред коса црта. Па ако се погледне во она што јас го имам, јас се стави / n во таму, но јас имаа погрешна коса црта. Сето она што вашиот компјутер прави е многу експлицитен. ВО РЕД? Една мала грешка на интерпункциски знаци и ненадејно да не добие она што го сакате. Во ред. Па ајде одзумирање повторно. Ние ќе се вратам. И го направи тој многу брзо да се поправи. Ние ќе се стави на правото коса црта во. Ние ќе го спаси. Ние ќе се вратите во. Поради некоја причина, тоа не е да се биде среќен, но ајде да одиме напред и ние ќе се вратиме на терминалот тука. Го расчистат. Ние ќе зумирате. И уште еднаш, ние ќе се направи Bunny. И сега секако, тоа функционира. Ура. ВО РЕД. Значи, да се обидат да се направи ова малку повеќе воопшто. Ајде да видиме дали наместо само печатење на еден одреден период, ајде да видиме дали може да се направи ова така што можеме да ги добиете сите од 10 на оние анимирани слики дека сакаме да имаме. Значи, повторно, да се земе овој чекор во исто време. Ајде прво да го генерализира, а не така што можам да направам сите рамки, но јас правам некој рамка што би можеле да сакаат. Значи она што е разликата помеѓу рамки? Е зајаче истото? ПУБЛИКАТА: Да. Брајан SCASSELLATI: Да. Која е разликата? ПУБЛИКАТА: Позиција. Брајан SCASSELLATI: Нејзината позиција, нели? И како можам да ги контролираат своите позиција? Колку точки Јас сум ставање на почетокот и како многу точки Јас сум ставање на крај. Па морав пет на почеток и пет на крајот. Ајде да го замени тоа со пет за телефонска линија. ВО РЕД. А јас ќе одам да се создаде за јамка сега што се случува да се каже, Одам да се печати некои број на точки на почетокот. Одам да се користи променлива. Да речеме, за тоа како јас како шанкот во мојот циклус. А јас ќе одам да го пријават до врвот. А потоа и во за телефонска линија Јас треба да направите три работи. Првото нешто што треба да направите е јас треба да се иницијализира i. Што треба да се иницијализира го за да започнете да биде? 0. ВО РЕД. Тогаш јас треба да се каже, што е условот за раскинување? Кога треба да се запре? И тоа како многу точки да се направи сакате да се печати на овој? ПУБЛИКАТА: Пет. Брајан SCASSELLATI: Пет повторно? Како за, ајде да направиме нешто различни, ние го сторивме пет. Ајде да покажеме дека тоа е различно. ЗВУЧНИК 22: Двајца. Брајан SCASSELLATI: Двајца. ВО РЕД. Па ако сакам две точки, што треба да се стави во оваа ситуација? ПУБЛИКАТА: Три. Брајан SCASSELLATI: Три. ВО РЕД. Колку пати е дека случува да одат преку? Што се случува да поминат низ три пати, 0, 1, 2, нели? Добро, ајде да се вратиме до два. Сега ќе добие две точки. И она што сакам да го стори секој кога одам преку телефонска линија? Што треба да се промени секој пат кога ќе одат преку? ЗВУЧНИК 23: Додади точка. Брајан SCASSELLATI: Морам да продолжувам да одам. Одам да додадете точка. Одам да се печати една точка, секој пат низ јамката. Но, колку сум јас држејќи ги пратите на тоа како многу пати сум бил преку телефонска линија? Јас сум со користење ли, дека променлива, што шанкот. Така што секој пат низ, јас ќе одам за зголемување на шалтер по еден. Сега, тоа е иста за мене како вели i = i + 1. Во ред е. Можам да го направам that-- Ми се допаѓа стенографија, па јас ќе одам да се каже јас ++. ВО РЕД. Ајде да го прават истото овде долу на дното. Јас само вид на направи оној. Одам да ви момци нека направите тоа еден целосно. Во ред. Значи она што треба да го пишувам тука? Еве го мојот за телефонска линија. Одам да се направи printf (), а јас ќе одам да се направи тоа, така што јас само се печати една точка на таа дното. Што треба да се напише во внатрешноста на оваа за телефонска линија сега? Па, прв од сите што променливи треба да го користам? ЗВУЧНИК 24: j. Брајан SCASSELLATI: можам да ги искористам ѕ. Може ли да користам истиот? Може ли да користам ли повторно? Је. Тоа е во ред, бидејќи е дека јас сум со користење до тука, Јас не им се потребни при повторно Се фаќате за оваа точка. Значи она што треба да се иницијализира јас во моментов? ЗВУЧНИК 25: 10. Брајан SCASSELLATI: 0. Што треба да се провери? Колку точки ми треба сега на крајот ако имам две точки од почеток? Ми треба осум на крајот, така што јас треба да се провери, јас помалку than-- ПУБЛИКАТА: седум, осум, девет. Брајан SCASSELLATI: слушнав седум. Слушнав осум. И чув девет. ВО РЕД. Па сите ние сме во право ball-- Џејсон вели 10. ВО РЕД. Ако ми требаше две точки за првиот, колку I-- и ми треба осум точки за последните one-- ставив два погоре, што треба да се стави долу? ПУБЛИКАТА: Осум. Брајан SCASSELLATI: Осум. Затоа што ќе брои нула преку седум. И тоа е осум пати преку телефонска линија. ВО РЕД. И она што јас треба да направите на крајот? ПУБЛИКАТА: i ++. Брајан SCASSELLATI: i ++. Во ред. Па тоа е во потрага прилично добро таму. Ајде да ја обидат и да видиме што тоа го прави. ВО РЕД. Па ние ќе треба да ја зачувате. Убаво и зачувани. Ќе одзумирање. Ние ќе се обидеме овде во терминал. Ние ќе зумирате. Упс. Ние ќе, уште еднаш, направи нашата зајаче програма. И да оди напред и да се изврши зајаче. И таму е. Па има нашата зајаче. Каде што има две точки на почетокот и осум точки на крајот. Сите уште со мене? ВО РЕД. Па ние го изгради. Изградивме една зајаче, еден одреден период. Сега ние сме во можност да генерализира дека да се изгради повеќе, различни видови на рамки. Сега ајде да одиме напред, и да имаат тоа генерира не само една рамка, но ајде да генерира 10 рамки, каде што полека направи зајаче се движат сите пат низ поле. Во ред. Ајде да се вратиме. И ќе се обидеме сега. Значи она што навистина треба да се промени оваа ситуација? Што ми е потребно да се промени? ЗВУЧНИК 26: Прво треба да се промена на бројот на точки максимум на почетокот. Затоа што ако ние сме прави 10 точки, тоа се случува да треба да се нагоре на скалата. Брајан SCASSELLATI: Да. Па сега имам тоа вид на hardwired секогаш да направите две точки на почетокот и секогаш се осум точки на крајот. Сакам да се изгради уште еден циклус, нели? Затоа што не сакаат да изгради само еден зајаче сликата, Сакам да се изгради 10 зајаче слики. Значи ми треба да се изгради уште еден циклус, и како што оди преку тој циклус, Сакам да се промени колку точки печатам на почетокот и како многу точки да печатам на крајот, врз основа на кои циклус преку телефонска линија Јас сум во. Во ред. Значи, да се добие уште еден шалтер. Некој рече дека пред да ј, па ние ќе се направи уште една ѕ. И сега, ние ќе треба да изгради уште еден за телефонска линија. Она што се случува во внатрешноста на тој циклус? Овој материјал треба да оди во внатрешноста на јамка, нели? Зајаче имаат се да се оди во внатрешноста на јамка? Дали ми е потребен зајаче во секоја од овие 10 слики? ПУБЛИКАТА: Ух-нели. Брајан SCASSELLATI: Да. Сакам зајаче во секоја од 10 слики, нели? Како за на точки во На крајот, не ми треба тоа? ВО РЕД. Па јас ќе одам да се вовлекува сите од нив. Одам да се нагласат сите ова, а јас ќе одам да се погоди таб. И што се случува да им помогнам на сите во текот на малку, така што тоа е лесно за мене да се види она што е во јамка. А потоа јас ќе ја завршите. Да речеме. ВО РЕД? Сега, во овој циклус, кој Јас сум building-- Whoops, направат тој да можете да see-- Јас имам мојата контра ѕ. Јас ќе ја започна во 0. Колку пати сакам да поминат низ овој циклус? ПУБЛИКАТА: 10 пати. Брајан SCASSELLATI: 10 пати. Значи она што број треба да го ставам овде? ПУБЛИКАТА: 9, 10. Брајан SCASSELLATI: 9, 10, некој е мора да се каже 11, нели? Сакав две точки пред и јас се стави помалку од 2. Сакав осум точки, Ја ставив јас помалку од 8. Сега сакам да се оди преку 10 пати, па да го ставам ѕ помалку than-- ПУБЛИКАТА: 10. Брајан SCASSELLATI: 10. Таму ќе одиме. И што да правам на крајот на s? ++, Зголемување ја. ВО РЕД. Сега, тука е слабо дел, што е ќе се случи токму сега, ако го направам тоа? Одам да се печати 10 слики? ЗВУЧНИК 27: Мислам дека сите тие ќе бидат исти. Брајан SCASSELLATI: тие ќе сите да бидат исти, право? Бидејќи сите од нив се уште се случува да се стави две точки на почетокот. Но, јас не ги сакаат да има две точки на почетокот. Колку точки правам сакам на почетокот? ПУБЛИКАТА: Менување. Брајан SCASSELLATI: јас сакате тоа да се промени, нели? Значи она што го имам тука тоа се менува секој пат јамка оди преку? ПУБЛИКАТА: број на точки, Ј. Брајан SCASSELLATI: ј, бројот на точки. За да можам да ја промените оваа да биде ѕ. Прв пат преку јамка, што е тоа ќе биде? Она што можам да поставам J за да на прв? ПУБЛИКАТА: 0. Брајан SCASSELLATI: Значи колку пати сум јас ќе го направите ова? 0. По втор пат преку телефонска линија, на J ќе биде 1 затоа што јас го прираст. Колку точки сум јас ќе ја печати? 1. По трет пат преку телефонска линија, колку точки сум јас ќе ја печати? ПУБЛИКАТА: Три. Брајан SCASSELLATI: j ќе биде 3. Колку точки сум јас ќе ја печати? Ох извинете, j ќе биде 2. Колку точки сум јас ќе ја печати? ПУБЛИКАТА: 2. Брајан SCASSELLATI: 2. Добро, така што јас ќе одам да се задржи што ја зголемува како што одиме понатаму. Како за долу? Она што се случува овде? Не сакам 8 секогаш на крајот веќе? ЗВУЧНИК 28: 10. Брајан SCASSELLATI: Сакам 10 точки? Сакам тоа да се промени, исто така. Па како не сакам тоа да се промени? ПУБЛИКАТА: [Беззвучен]. Брајан SCASSELLATI: Па, ако имаат пет точки на почетокот, колку точка е да стигнам на крајот? ПУБЛИКАТА: Пет. Брајан SCASSELLATI: Ако имам шест точки на почетокот, Колку можам да добијам на крајот? ПУБЛИКАТА: Четири години. Брајан SCASSELLATI: Ако го добив седум точки на почетокот, Колку можам да добијам на крајот? ПУБЛИКАТА: Три. Брајан SCASSELLATI: Ако сум доби ѕ точки на почетокот, Колку можам да добијам на крајот? 10-ѕ. ВО РЕД. Значи, да се обиде тоа. Па јас ќе одам да се спаси нашата зајаче програма. Уште еднаш ќе ја намалите. Ќе одиме до нашите терминал. Ние ќе го тргнат. И да зумирате. Ние ќе ги направиме нашите зајаче програмата, повторно. И ние ќе го изврши. Ух-ах. Се одржи на, ајде да ја намалите. Никако не можев да се добие 10 слики? Па, колку bunnies гледам таму горе? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Добив 10 слики. Дали тие се сите исти? ПУБЛИКАТА: Да. Бр Брајан SCASSELLATI: Не Дека првиот, зајаче е далеку од левата страна. И овде, на зајаче е далеку од ЗВУЧНИК 29: Токму така. Брајан SCASSELLATI: Значи, она што не заборавам да направам? ЗВУЧНИК 30: Започнете нова линија. Брајан SCASSELLATI: Заборавив за да започнете нова линија, повторно. Истата грешка што го правеа и досега. Добро, ајде да одиме да го поправите тоа. Сега, јас сум сепак се искачи на кодот таму да се направи нова линија. Зошто не работи? ЗВУЧНИК 31: Тоа не е во внатрешноста на јамка. Брајан SCASSELLATI: О, тоа не е во внатрешноста на јамка. Тоа е точно. Тоа е надвор седи тука. И за телефонска линија е сè што го пишува во текстот. Па јас ќе одам да се движат ова во внатрешноста на за телефонска линија. А јас ќе јазиче пред него да покажуваат дека тоа е во право место. И сега, ние ќе го зачувате повторно. Ние ќе ја намалите. Ние ќе ги префрлиме на нашиот терминал. Зумирај. Ние ќе го преправат зајаче нашата програма. И сега, сега ние го добивме нашиот 10 слики. [Плескање] Брајан SCASSELLATI: Во ред. So. Тука е нашата за вгнездени јамки. Ние бевме во можност да се генерираат во внатрешниот циклус колку точки сакав да се печати на почетокот, на крајот. И надворешниот циклус контролирани колку рамки бев градење. Почнавме со еден малку јадрото на проблемот, и ние изградена надвор од таа точка. Во ред. Да направиме уште еден чекор. Дали сте подготвени? Има една работа во оваа земја каде ние сме всушност вид на доби повеќе комплексност отколку што треба. Ајде да ги разгледаме. Па во нашата зајаче програма, ако јас одзумирате тука, Јас всушност се направи некои од истите работа повторно и повторно. Што да правам тоа е вид на истото се повторува два пати? ЗВУЧНИК 32: Печатење на точки. Брајан SCASSELLATI: Да Јас печати оние точки двапати. Навистина, јас треба да имаат овој коментар овде долу. Јас печати некои точки во почетокот, па се тука. И јас тогаш печати некои точки на крајот. И јас се вид на иста работа. Она што се случува да се започне кои работат на и во наредните неколку недели е да се биде во можност да ги преземат тие блокови на кодот кој ние ги користиме, одново и одново, и преку процес наречен апстракција, ние ќе треба да ги извлече и ги пишувам еднаш, така што можеме да потоа повторна употреба нив одново и одново. Значи, да се обидат тоа. Подготвени? Ние ќе треба да се земе овој блок од код. А јас ќе одам да го земам од таму. А јас ќе одам да define-- одредување на дното, Одам да се напише нова функција. Тоа не се случува да се врати ништо. А јас ќе одам да го наречеме printDots. Тоа се случува да се земе една аргумент, цел број кој howManyDots вели дека треба да се печати. И сега наместо печатење ѕ точки, јас ќе печати кажам howManyDots јас треба да се печати. И има еден мал проблем овде. Некој знае што е тоа? Што имам дека е се наведени овде тоа не е дефинирана? ПУБЛИКАТА: [Беззвучен] Брајан SCASSELLATI: Па како многу точки се дефинира, па се тука, но јас сум со користење дека променливата i. Па јас ќе одам да се земе дека променливата i а јас ќе одам да го дефинираат долу тука наместо тоа. Па сега тоа се случува да stay-- Упс, доби големи букви врз somehow-- сум случува да го задржи ли долу тука. Па сега, тука е моето мало функција или под-рутина, и тој вели: колку точки сум јас ќе ја печати? И тоа ќе поминат низ овој циклус и да ги испечатите и одново и одново. Тогаш јас може да го менува мојата програма до тука. И што јас го нарекувам таа функција? printDots. Па јас ќе се јавам printDots. Колку точки, сакам да се печати прв пат пред зајаче? ПУБЛИКАТА: j. Брајан SCASSELLATI: j. Колку точки, сакам да се печати на крајот, по зајаче? 10-ѕ. И има едно нешто јас сум недостасува. Како што можете да забележите во предавање и денес, ние ќе треба да се изјасни printDots горе да се даде на прототип. ВО РЕД. Значи она што го направив е Пробав да изолира дека повторно се користи дел од кодот дека јас го направив, одново и одново. И јас сум се обидел да го вадите, така што сите на кои се наоѓаат на едно место. На тој начин, ако имам грешка некаде, Јас само треба да го поправите на едно место. Во ред. Па ајде да го спаси. И ајде да се уверите дека работи. Па ајде да одиме надвор. Ќе одиме повторно на нашите терминал. Ние ќе зумирате. Ние ќе се направи овој процес зајаче. Ох. И тоа е ми даде предупредување. Што е тоа да ми каже? И во која било од овие пати, вие секогаш сакате за да дојдете до самиот прв error-- сега на овој, Имам само уште еден. Тоа ми кажува во bunny.c, on-line 8, колона 9, има еден проблем. Таа вели дека, сте прогласи овој променливата i и не сте го користеле. Сега нормално, тоа е не од најлошите грешки. Тоа е лесна да се поправам. И всушност, може да се вратите назад во. Можеме да се вратиме на Bunny. И во овој случај, сите ние треба да направите е да се ослободи од I, бидејќи ние не сме користење Јас во главната повеќе. Ние сме само да го користите во рамките на нашите под-рутина. Значи, да се спаси. Ние ќе се вратам. И да зумирате. Ќе уште еднаш направи зајаче. И таму повторно се нашите 10 слики. ВО РЕД. Секое време си даде на procedure-- Да. ЗВУЧНИК 33: Имам a-- Јас сум збунет. Може да ви се врати на код? Брајан SCASSELLATI: Да. ЗВУЧНИК 33: Значи, кога ќе го напишал вашиот прототип, можете аргумент сето тоа име беше наречен howMany? Но, below-- Брајан SCASSELLATI: О, да. ЗВУЧНИК 33: ги --called нешто различни, јас не ги разбирам. Брајан SCASSELLATI: Зошто тие се различни. Значи тоа е големо прашање. Значи, прашањето е, до тука, напишав howMany, и долу, напишав howManyDots. Причината е тоа што во вашиот прототип, тоа всушност не е обрнувајќи внимание на имиња кои сте ставање во. Сите што е навистина се грижи за е дека тоа е цел број. Таа сака да знае форма на она што сте пуштање во. Сега stylistically-- oops-- она ​​што треба направите, е Ми се допаѓа да се направат овие натпревар. ВО РЕД. Затоа што тоа ќе биде тоа го задржи полесно за мене да се запамети. Но, тоа беше моја грешка Да. ЗВУЧНИК 34: И така за Прототипот на работа, само пишување таа линија, пишување на прототип, им овозможува на таа функција која доаѓа веднаш под него да се оди до крај и добивање што значи тоа? Брајан SCASSELLATI: Што тоа значи е кога на компајлерот поминува, тоа оди од врвот на Вашиот код на дното. И она што оваа е прототип, е во основа тоа ветување. Таа вели дека, таму се случува да биде функција дефинирана некаде. Тоа се случува да биде наречен printDots. И тоа се случува да се земе еден аргумент кој ќе биде цел број и тоа се случува да се врати ништо, празнина тип. ВО РЕД. Јас ветувам дека ќе ви се случува да се биде дефинира некаде по патот. Но, секој пат кога ќе видите кои, како што можете да одат надолу па сè до крајот на мојот Главната функција, сакам можете да постапуваме како функција кој трае цел број еден влез. И така, кога на компајлерот оди надолу преку ова, што го гледа тоа ветување. А кога тоа добива надолу, продолжува да се, и натаму ќе се случува, го пронајде прв пат printDots се споменува. И тој вели: Ох, ти си дава мене ова ѕ. ѕ е цел број. Па ти ми вети дека ќе да биде цел број и дека е во право. Во ред е. А потоа конечно, долу на самото дно, Пред да стигнам до крајот на мојот податотека, јас го исполни ветувањето ми и јас го дефинираат. ВО РЕД? ЗВУЧНИК 35: Значи, тоа saves-- на Програмата ќе се спаси празни места дека тоа се навраќа и пополнува на крајот? Брајан SCASSELLATI: Тоа не е во врска со распределбата на меморија. Тоа е всушност само за тоа што тип Ве очекуваме да се види. Треба оваа работа има еден аргумент, или пет аргументи? Треба да биде тоа цели броеви со оглед на тоа, или жици? Тоа е се што е во потрага да направите е да се провери, ќе ме на давање право вид на аргумент. ВО РЕД? Во ред. Дозволете ми да ве остават со еден друг малку да се погледне. ASCII уметност не е одличен модел на анимација, како што е денес. Но, некои луѓе се разбира се работи а тие да се поттикнат до нивните крајности. Ова е, како што покажува Дејвид во предавањето, дел од кодот дека во никој случај не обидете се да си се дуплираат. Затоа што тоа е страшно стилски. Всушност, тој е дизајниран да биде како што е тешко како е можно да се прочита. ВО РЕД. Значи, да се направи повторно, да зумирате тука. Одам да одиме одма промена директориум. Одам да се оди до една ниво, се враќам на работен простор. Тогаш јас ќе го промени директориумот во оваа Друго што сум ги создал. И ова е на Меѓународната Криење на C Програмирање натпревар. Нечитлив значи толку тешко како е можно да се разбере. Затоа ве молам, не се плаши, ако се погледне во ова и да си одат, не можам да го прочитате тоа. Тоа е поентата на тоа. ВО РЕД? Но, ние имаме овој прекрасна програма што сум случува да се погледне во повеќе од само пишете. И ајде да видам дали можам да одзумирате само малку, па можете да ја види И ова е програмата. Тоа е именуван endo.c. И тоа изгледа како оваа кофа со вид на буквите Ф-Л-У-И-Г во неа. Ова е всушност програма. Текстот е пишуван во повеќето непознати начин на кој авторите може да можеби го напише. Но, тоа е прекрасен малку парче што генерира модел на динамиката на течноста. И така ние се случува да се даде тој модел инпут изгледа вака, на staired постави на контејнери со некои течности, некои течност, на врвот. И ние ќе го симулира она што се случува со неа. Па јас ќе се јавам на таа функција, ендо. А јас ќе и ја даде таа влезна датотека што сум ги имал. И таму е нашата олицетворение на ASCII уметност. А со полно течност динамика симулатор работи во само неколку линии на код. Сега она што е всушност навистина прекрасно за оваа мала програма е тоа што сакам да го запреме сега, па јас ќе одам да го користите она команда? ПУБЛИКАТА: контрола-C. Брајан SCASSELLATI: Контрола-C. ВО РЕД. Па јас ќе го користат за контрола-C. С Тоа ќе го спречи тоа. Јас ќе се расчисти повторно. И сега ќе одам да се повика на програма, извршување на програмата, самата користење како влез. И ќе видиме динамичен течноста симулација на топење. ВО РЕД. Ве молиме, не дозволувајте тоа програмата биде нешто што вие збунува. Тоа е само за да може да се стави крај на нешто кул и интересно. ВО РЕД. Најдоброто од среќа со вашиот проблем сета. Ние ќе бидеме среќни да одговориме прашања по класа. Благодарение многу, момци.