[Powered by Google Translate] [Рок музиката] [МУЗИКА - "среќни заедно" желките] Дејвид MALAN: Денес, што започнува нашето истражување на основите на компјутерската наука и нашиот вовед, сега, на уметноста на програмирање, на која што е само еден пример. Но во иста насока на решавање на проблемот, знам дека Традиционалните загатка CS50 Денот е утре. Ако не сте уште RSVPed за овој настан, можете да одат на cs50.net/rsvp. Може да донесе тимови од две или три или четири. Ќе се соочат со предизвикот со проблеми како оној што го видов таму на почетокот. Сите нови проблеми оваа година ако се причестија со светите минатата година, и ќе имаат можност потоа да се победи некои чудесната награди. Меѓу нив, на Wii и некои подарок сертификати и слично, и сето тоа додека дружење со CS50 студентите и соучениците и пица и Фејсбук. Па повеќе за тоа утре, ако би сакал. Ова тогаш е CS50, за оние од вас што ни се придруживте за прв пат. И знам дека овој курс е особено решена да добие дека преку овој курс во својот конечен крај, на која точка ќе ќе имаат не само разбирање на овие основите на компјутерската наука, но ќе мора ова е многу практична вештина во собата што потоа може да се врати во свој оддел, без разлика дали тоа е инженерските науки, применета математика, физичките науки, природните науката, или слично. Всушност, она што е толку возбудливо за компјутерски науки овие дена е дека тоа е само така се применуваат за сите видови на полиња. И иако денес, само ќе ја изгребат површината на многу традиционалните програмски јазик познат како Ц, ние ќе наместо погледне во нешто што се нарекува нула, нешто со која што куки љубовна приказна беше спроведен од еден од вашите претходници во изминатите години, да раскажувам приказни, да се создаде игри, да креирате интерактивни уметност, и всушност да почне да ја заврши нашата умовите околу некои од основните конструкции кои придонесуваат за програмирање, но во контекст, како што ќе видиме, тоа е многу помалку страшно, тоа е многу помалку таинствени, отколку што ќе видите пред долго. И реализација, исто така, за оние од вас само ни се приклучи на оваа семестар, фрази на кои завршија предавање во средата, тоа не е толку важно каде ќе заврши во однос на вашиот соученици во оваа класа, но каде што, до крајот на семестар во недела 11, заврши во однос на себе право овој ден. Значи без понатамошно ado, ова е, исто така, вреди да се напомене дека оние кои се помалку удобни, оние некаде помеѓу, се Исто така, од страна на дизајнот на овој курс, не по секоја штета vis-a-vis оние поудобно кои доаѓаат во оваа класа. Како што ќе видите во текот на неколку недели да дојде, имаме различни песни за различните назад позадина, делови за оние помалку удобни, поудобно, оние некаде помеѓу. Како што ќе видите овој викенд и следната недела, две верзии на повеќето проблем поставува во двете стандардни и хакерски издание така дека сите може сами да го изберат по патот со кој можете се најмногу задоволни. Така, денес, ние се нурне во овој програмски јазик наречен нула. Тоа е графички јазик за програмирање, а сепак има истите карактеристики на некои од повисоко ниво јазици ние ќе истражуваат подоцна во текот на семестарот, меѓу нив C и JavaScript и PHP. Но, тоа се случува да ни овозможи да се избегнат некои од одвлекување на вниманието на почетокот на синтаксата, работи како semicolons, загради, и други arcane детали кои, на прв поглед, само не се на сите интелектуално интересни и имаат тенденција да се пат од некои основни разбирање. Во однос на сега поддршка структура напред, реализира ова алатка, CS50 Дискутирај, кои ќе бидат поврзани на курсот веб подоцна денес, е онлајн дискусија на форумот во кои ќе бидат во можност да поставуваат прашања на едни со други и кадар, и тоа е исто така алатка, како што ќе видиме следната недела, дека ќе се користи доста integratedly во работното време, како и. Навистина, работното време започнат во понеделник, и искрено, првиот недела на работното време е прилично низок клуч. Јас не мислам дека ќе најдете гребење сите недостапни. Тоа е прилично очигледен, како што ќе видиме, и уште па што ние ќе ја користите за денес е да ја извадиме некои од основните идеи кои, потоа, се истрае во текот на остатокот на семестарот. Но, почнувајќи од понеделник, во 20:00 преку 23:00 ќе биде работното време во Annenberg над мозокот пауза. Sectioning две ќе почне вечерва, па некаде оваа викенд, одете на cs50.net/section, и ќе биде побарано голем број на прашања. Меѓу нив, како би ја опишале вашата удобност ниво од денес? Нема тешко, брзо правило за тоа кој е во која кофа. Тоа е само вид на нешто што веројатно знаете, ако се меѓу оние помалку удобно или на друг начин. И сега, walkthroughs. Проблемот сет спецификација за оваа недела, како стандардни и хакерски издание слично, е присутен во cs50.net од сега. И ќе видите дека првата од овие изданија, на Standard Edition секоја недела, е придружена со нешто што јавете код можи, на седницата предводена од еден од наставата соработници разбира да ве води низ, да обезбеди совети за, и се фаќате одреден пат кога станува збор за започнување на овие проблеми комплети. Така е и со секоја од овие проблем поставува, ако сте некогаш сакаат за себе каде да започнеме, ќе почнат со овие walkthroughs. И всушност, дозволете ми да се воведе Zamyla Чан, оваа година настава колеги, кои ќе ја предводи секој еден од овие walkthroughs. Zamyla? [Аплауз] ZAMYLA CHAN: О, здраво, секого. Моето име е Zamyla. Јас сум помлад проучување инженеринг во Winthrop куќа. Но, јас се обиде и да се вклопат во што поголем број компјутерски науки курсеви, како што може, кој е зошто јас сум навистина возбуден да се води оваа година walkthroughs. Walkthroughs, за мене, се важен дел од мојот CS50 искуство. Во текот на Walkthrough, за секој п-сет, ќе одиме преку проблемот во собата заедно, изгледа во текот на проблеми, вид на делат нив во податлив каса. Јас ќе ви даде совети, техники, за добивање преку и да започнете. Се надевам дека ќе се видиме сите во walkthroughs. Ако не можете да го направите во лице, а потоа Ве молиме да мелодија во интернет. Дејвид MALAN: Одлично. Ви благодариме, Zamyla. Така сфаќаат дека walkthroughs се, навистина, во петок попладне, но ова е намерно од страна на дизајнот, така што дури и ако не би присуствуваат на класа во петок попладне, видеа ќе бидат до сите побрзо во текот за време на викендот. Така сфаќаат дека cs50.net ќе бидат сите на Zamyla на walkthroughs. И дека има денешниот датум и време, 3:00, Harberd сала, 104. И некои од наставата соработници, исто така, подготвени некои забелешки за вас во отсуство за да ви даде малку перспектива за тоа што нивното искуство кои доаѓаат во и Излегувам на CS50 беше како. Значи, ако ние би можеле да придуши го светла за само еден миг, јас ви даде некои од вработените CS50 е. JACKSON STEINKAMP: Зедов CS50 минатата година како бруцош во падне, и тоа апсолутно разнесе умот. Јас никогаш не презема какви било програмски часови порано, и никогаш не дојде во со било кој компјутерски науки искуство на сите. И само слушнав на зуи за класа и одлучи да ја земе. Јулија MITELMAN: Тоа беше навистина забавно, навистина ангажирање. Јас, сепак, до ден - Јас само неодамна го видам Имам дискета дека Давид ни даде на нашата прва денот на предавањето. Имав висеше на мојот ѕид. Ова е веројатно малку нервозен, но јас обесени во на мојот ѕид во текот на класа како потсетник на тоа како кул е. TRAVIS падови: Тоа е толку срамно. JACKSON STEINKAMP: Компјутерски науки е нешто што треба да се обиде дури и ако не сте еден за традиционалните науки. Тоа е сопственото искуство, а CS50 ќе бидете сигурни дека сте поддржани и преку неа со вистинска армија на TFS. Али NAHM: Го однесов како бруцош, и така сум направил многу на нови пријатели. Јас исто така, доби воведен за да целата оваа концентрација и целата училишна на инженерството, и така јас многу го препорачуваме и добредојдовте на нашата CS50 семејство. Yaniv YACOBY: CS50 само ве учи како да се користи алатки кои се широко достапни. Вие само треба лаптоп, потребен ви е веб прелистувач, и ќе треба да научат да пишуваат дел од кодот, и навистина може да се изгради уредни работи. KAREN Xiao: Тоа е толку кул да се биде во можност да се направи нешто и имаат луѓе го користат и да имаат луѓето го гледаат, а тоа е она што јас навистина сакам за тоа. ТИМ Меклафлин: - чувство на заедништво, мислам дека, во овој Се разбира повеќе од било кој друг разбира Сум се направени досега. Вие не сте само преземање на друг - вие не сте пополнување уште еден услов. Вие не сте само ќе предавања и ќе секција. Но правиш тони работи кои се за сите програмирање и за сите технологија, но тоа не се случи навистина се чувствувам како класа поголемиот дел од времето. TRAVIS падови: И на првиот ден, тие делеа торта, и Бев веднаш продадени. JACOB PRITT: Слободен слатки и пица. ZAMYLA CHAN: - без оглед на вашиот интерес ниво, мислам дека дека CS50, ќе се забавуваат, и ќе бидете интелектуално стимулирани. МАРК GROZEN-Смит: Тоа е секогаш партија во класа, и тоа е забава секоја вечер работат на вашиот п-сет. JACKSON STEINKAMP: Секој пат кога ќе заврши проблемот сет, ќе се чувствувате како да завршите некој проект. МЕЛИСА Niu: Тоа беше Новак година, а јас бев направено шопинг. Имав четири класи подготвена, и јас бев во Annenberg. И јас се судрат во еден пријател, и тој вели, Еј, јас сум шопинг оваа класа наречена CS50, и треба да дојдеш со мене. Заврши тоа земајќи што паѓаат, а по таа класа, јас мислев можеби јас ќе одам да малолетно лице во CS. Но, тука сум, три години подоцна, сè уште студираат компјутерски науката и всушност го прави тоа како голем, и јас сакав секој момент од него. ROB Бауден: Јас немам идеја. Али NAHM: Ајде да видиме. МЕЛИСА Niu: лудост. ЗВУЧНИК 1: Се чувствувам како да ќе биде многу клише. Јас само би рекол, како, неверојатна. Yaniv YACOBY: Пристапност. JACOB PRITT: Слободен слатки и пица. TRAVIS падови: Не можам да одбиеме класа која рацете торта. ТИМ Меклафлин: Енергетски. Vipul SHEKHAWAT: Неопходна. ROB Бауден: Дозволете ми да мислам на одговор. Мислам дека имам нешто. О, Боже. Да, Роб Бауден Моето име, а тоа е CS50. [Аплауз] Дејвид MALAN: Сите во право, па да почнеме да наслика слика на насоката во која можеме да одиме, и ајде да се воведе овој концепт тука познат како pseudocode. Значи pseudocode не е програмирање јазик при себе. Тоа не е ништо технички по себе, но тоа е само вид на општ начин на изразување на себеси прилично прецизно, прилично algorithmically, прилично процедурално, но без да се грижите за тоа што јазикот што го изразува себе внатре Тоа е некој модел на англиски и програмски јазици со кои се случи да биде запознаен, па можеме да почнеме пишувам овој вид на работа како што ние одиме. И всушност, Јосиф, би можел да ти позајми на сцената да биде писарот тука? Сум отишол понапред тука однапред и заборавил да стави на некои чорапи денес, а тоа ќе бидат едни од нашите повеќе смешно примери. Сега, јас ви треба овде. Јас ќе го чорапи дел. Значи тука имаме малку мечокот. Ова е буквално само TextEdit во Мак. Ние не сме всушност ќе пишувам runnable програма, но ние сме само ќе да започне црти од pseudocode базирани на некои од совети ви овозможи да ме тука. Па овде е мојата куп чорапи дома. Јас немам чорапи кога се будам наутро, а ние сега треба да се напише програма, алгоритам на сорти, со која да се добијат овие чорапи на нозе. И на патот, ајде да видиме дали ние патување во текот или средба, некои од идеите што ви се случува да мора да почне размислување за многу посериозно кога програмирање да не би вашите програми не се однесуваат доста како што е планирано. Па јас седнат тука. Имам мојот куп чорапи. Што е првото нешто разумно човечко суштество би правите кога целта е да се стави на пар чорапи? Некој ми даде еден чекор, и само еден чекор. Да? ПУБЛИКАТА: наведнуваат надолу. Дејвид MALAN: наведнуваат надолу, ОК. Чекор два. Чекор два. ПУБЛИКАТА: Трансферот до вашите чорап. Дејвид MALAN: Трансферот до вашите чорап. Океј, па мало двосмисленост тука, и ова е еден од првите пречки што си требал намерно да судрите тука. Тоа е малку двосмислена, па ги собереш вашиот чорап. Добро, ќе ја искористам оваа една, но на компјутер, се реализира во само малку, нема да имаат таков вид на човечки инстинкт само Трансферот на најблискиот. Ние ќе мора да почнат, пред долго, изразувајќи се попрецизно. Добро, така Чекор два е да ги собереш вашиот чорап. Ние ќе го земам. Чекор три. Во грб. ПУБЛИКАТА: најдете соодветен пар. Дејвид MALAN: Најди појавување пар. Океј, па тоа е добро. Морав да изберете оваа чорап. Значи целта е да се најде појавување чорап, сега, но она што значи тоа? А разумно човечко битие, како многу во средата кога јас само знаеја како да се најде Мајк Смит во книгата на телефонот, само вид на отиде со нивните инстинкт. Но, овде, тоа е очигледно ова чорап тука, но на компјутер нема да биде така инстинктивно. А компјутерот ќе има збирка на битови, како што дискутира во средата, а тоа се организирани некако во меморијата. Но поентата е дека компјутерот има само способноста да се погледне на работите едно по едно време, и всушност, дури и ние луѓето - иако таа се чувствува како јас погледна надолу и Сплит секунда подоцна знам каде чорап е, мојот мозок и очите се претпоставува дека се брзо обезмаслен на оние чорапи, а потоа затворена кон една во прашање. Значи, ако ние се сè повеќе и повеќе намерно сега како компјутер, како можам да го најдете на оваа појавување пар? Па, ние треба да iterate. Ние мора да можеби јамки низ овој хаос на чорапите на кат каде што јас се каже нешто како ЗА СЕКОЈ чорап, го земам нагоре, и ако ист облик и големина како и другите, а потоа точка, точка, точка, ние ќе продолжиме приказната. Значи за секој чорап, па јас ги собереш оваа. Јас се провери е ова еднаков на оваа. Тоа не е, па да го ставам настрана страна. Тогаш јас iterate повторно. Дали е ова еден еднакви? Не, тоа не е, па јас го стави настрана. Е ова? Не Оваа? Не, и така натаму. А потоа конечно, се надевам, ќе се судрите со овој чорап тука. Значи, ако тоа е со ист облик, големина, да го земе. И сега, што ќе биде нашиот следен чекор тука? Да? ПУБЛИКАТА: Одредување на право од лево. Дејвид MALAN: Океј, да се идентификува десно и лево, па За среќа, тој вид на работи. А малку симетрична, или јас сум само ги носи тој начин. Добро, па јас идентификувани право. И сега, пред да продолжиш, дозволете ми да истакнам она што Јосиф се прави тука како вид на обучен програмер. Значи, повторно, нема еден начин да се направи ова, надвор, но само нумерирање на линии, Јосиф веќе почна да го направите тоа вид на вовлекување. Всушност, ова е многу честа конвенција во програмирање, при што, кога ќе направи нешто повторлив, looping стил, како ние сме значи со англискиот фраза "за секоја чорап ", на конвенцијата во pseudocode и, како што ќе видиме, нормално програмски јазици, е само алинеја. Хит на просторот бар неколку пати, притиснете TAB или слично, така што вгнездени под "за секоја чорап" е дел од работи кои што треба да направите како резултат на тоа јамка. Значи тоа е сето она што е пренесување на семантички. Сега пак, "Ако е ист облик и големина", на фактот дека "Земи" е требуван понатаму само значи тоа е единственото нешто што треба да направите ако таа состојба, ако таа гранка, која вилушка во патот, е всушност вистина. Па сега тука, ние сме на чекор четири, да се идентификува десно и лево. Сум идентификувани во право. Дај ми Чекор пет. И технички, ние навистина може да се нарече на ЗА СЕКОЈ работа - веројатно ќе треба да нумерира сите линии ако ние ќе го направите тоа. JOSEPH: [Беззвучен] Дејвид MALAN: [Беззвучен]? Океј, во ред, во ред, ќе го направите вашиот начин. Добро, така чекор пет, како ние да ја направат вистинската чорап? Како да ја продолжи следната, тука? Да? ПУБЛИКАТА: Дигни десната нога. Дејвид MALAN: Дигни десната нога, ОК. Чекор шест? Брзо. Да. ПУБЛИКАТА: Најди отворен крај на чорап. Дејвид MALAN: Океј, се најде на отворено крајот на чорап. Толку добро. Значи тука, искрено, многу честа инстинкт само ќе биде стави на правото чорап, но дека премногу е прилично амбивалентна. Освен ако на компјутерот или човекот знае точно што значи тоа, тоа нема да биде да се изврши тоа, па еве, јас сум пронајдени отворањето на акции. Чекор Седум? ПУБЛИКАТА: допир прстите. Дејвид MALAN: допир прсти. Океј, па сега ќе одиме - Добро, јас одам да се земе некои слободи тука. Благодарам. Чекор осум? Стави во чорап. Океј, па сега јас мислам дека ние сме доволно блиску за сортирање на се ова дома. Добро, така што ова оди нагоре. Ќе го земам некои слободи со она што значи тоа, всушност. Стави чорап натаму. Добро, сега чекор девет? ПУБЛИКАТА: Ставете нога долу. Дејвид MALAN: Ви благодарам. Чекор девет, стави нога долу, и сега, ние може да се повтори. Па веројатно, сега можеме да одиме во чекор 10 и велат идентификуваат лево чорап, но тоа е веројатно веќе направено. И така тогаш, јас може да се најде на Повторете ги овие чекори. Но, овој вид моли на прашањето. Пред, за последен пат сакавме да се повторува нешто, ние тоа го правеше iteratively, повторно и повторно, за Секој циклус, така да зборува. Тоа би имало смисла да се користи телефонска линија со цел да се справи со двете на левата и десната чорап? Затоа што се чувствува како овие операции се доста идентични, освен за фактот дека еден започнува тука и еден започнува тука? Дали ние јамка, или само задржи пишување чекори 10 и 11 и 12? ПУБЛИКАТА: јамка. Дејвид MALAN: Океј, па јамка. Јас всушност може да се рече само продолжувам да одам. Значи, зошто е тоа така? Па, ова е всушност првиот од нашите не-очигледно дизајн одлуки, а всушност, еден од параметрите со кои ќе почнат да се оцени, за нас и за вас, квалитетот на програмата е само колку добро дизајниран е тоа. Дали сте го направиле на минимална количина на работа потребен да се одам на работа, на повеќето брзо, или во однос на вашето време или во однос на водење на време на компјутерот? Колку операции е потребно да се изврши? Па веројатно, ова е можност за циклус, бидејќи штом ќе започнете со копирање и вметнување, како Џозеф ефикасно ќе почнете да го правите во моментот, ти си вид на губење на вашето време, и сте се двојно експресивен. Но, во исто време, овие се навистина само два посебни случаи, лево и десно. И додека пред, јас може да има 10 или 20 или повеќе чорапи во еден куп, тоа е дефинитивно има смисла да не имаат 50 линии на код велејќи провери ова чорап, тогаш следниот, тогаш следниот. Еве, тоа е малку помалку очигледни, и јас би предложи што би можеле да одат било начин. Ние или може да го имаат тоа јамка, иако само петелки двапати, или едноставно да копирате и залепите само малку тука за да одам на работа. Но оваа програма е кабриолет, така да се каже. Тоа би можело да има некои грешки, грешки или агол случаи, така да зборува, дека ние навистина не очекуваат. Ништо не беше во ред тоа време, но она што може да се качил во ред додека извршување на оваа програма? ПУБЛИКАТА: Вие не имате било какви чорапи. Дејвид MALAN: Значи не може да има чорапи има она. Па ајде сметаат дека аголот случај. Значи, ако ние би можеле да дојдете назад за чекор еден, па чекор беше еден наведнуваат надолу, така што проверки. Чекор два, ги собереш вашиот чорап, но потоа се пронајде соодветен чорап, идентификуваат право. Ние вид на направени бројни претпоставки, а тоа е, искрено, зошто програмата понекогаш несреќата. Ако, на програмерот, прават одредени претпоставки, како сигурно таму ќе биде чорапи или сигурно таму ќе да биде меморија лево во компјутерот, сигурно таму ќе да бидат диск простор на хард дискот - Па, ако се направат овие претпоставки, и тоа не е, всушност, реалноста, кој знае понекогаш она што на компјутерот случува да се направи? И понекогаш, кога ќе го добиете предење плажа топката или замрзнати Windows или слично, тоа е токму затоа што некои програмерот не очекуваат оние т.н. агол случаи. Што друго би можеле да се качил во ред во оваа програма? Да? ПУБЛИКАТА: Вие немате десната нога и левата нога. Дејвид MALAN: Океј, не може да има и десната нога и левата нога, и така оваа програма не може да биде универзално применливо. Другите? ПУБЛИКАТА: Можеби зедов сирак чорап. Дејвид MALAN: Јас би собрал сирак чорап, па не-појавување чорап дека само нема браќа и сестри, бидејќи јас сум загуби, тоа е растргнат, тоа е во миење уште, или слично. Така што, исто така, не има навистина се ракува. Да? ПУБЛИКАТА: Вие веќе може да има чорапи на. Дејвид MALAN: Јас веќе може да има чорапи на. Јас всушност не се провери. Ако немате чорапи On, потоа продолжи да го стори линија еден и два. И тоа може да се случи. Да заспие со вашите чорапи на и слично, па тоа, исто така, многу разумна агол случај. А можеби и еден друг? Публика: чорап е внатре кон надвор. Дејвид MALAN: Значи чорап е внатре кон надвор, па ние го сторивме нема грешки проверка, во кратки. Ние не провери дали состојбата на светот е како што очекуваме. Ние не провери дали ние всушност се најде она што го барате. И иако ова е вид на смешна пример вклучувајќи чорапи, на крајот на денот, ова е токму вид на начин на размислување треба да имате додека пишувате програми, дури и во гребење, како и во C, во JavaScript, во PHP, затоа што во спротивно, вашите програми ќе ги изложиме на еквивалент на која се врти плажа топката или само родот неточни резултати. Толку многу благодарение тука за да нашите писарот Јосиф. [Аплауз] Дејвид MALAN: Сите во право, па она што е во Всушност, компјутерска програма? Па, ајде да го земеме еден брз поглед на Претставникот еден тука. Значи ова е програма напишана на јазик наречен Ц Ц е прилично стар, овие денови, но многу понови јазици се изградени на врвот на неа. Всушност, PHP, еден од веб-центрични јазици ние ќе користете кон крајот термин е, се има она што се нарекува преведувач, програма со која е напишана во C, но повеќе за тоа во многу недели од сега. Но оваа програма, и тоа е она што значи да се пишува програма, иако многу едноставен. Имаме некои прилично криптичната синтакса тука, но може Веројатно се погоди, дури и ако никогаш не сум програмиран пред, за она оваа програма го прави тоа. Всушност, јас не знам што printf е, но печати сигурно conjures до идејата за печатење нешто. И така да, оваа програма е во крајна линија ќе испечатите зборовите: "Здраво, Светот". Сега, дали имате Mac или PC или Linux компјутер, шансите се, барем ако сте ја превзеле некои слободно достапен софтвер, можете да се пишува програми за свој лаптоп за сосема извесно време сега. На Mac OS, на пример, има оваа програма наречена Терминал кој доаѓа со Mac, тоа е обично во Комуналии папка, и тоа обично започнува црна и бело или црно-бела прозорец во кој имате прашува на кој можете да внесувате команди. Значи ова е всушност потсетува на она што компјутерите се користи за да биде пред графички кориснички интерфејси, GUIs, дојдоа заедно. Сега, во Windows, имаш сличен механизам во форма на командната линија. Но, она што јас ќе одам да направите тука е се отвори, да речеме, TextEdit повторно, па истата програма бевме користење за pseudocode пред еден момент, и јас одам да се оди напред и да пишувам мојата прва програма. Вклучуваат stdio.h, што и да значи, int главната празнина, што и да значи, а потоа во средината тука, printf ("Здраво, свет."). И потоа затворете понуда, затвори paren, запирка. Сега ќе одам да оди напред и само кликнете команда-S. Одам да оди напред и да ги зачувате ова како hello.c, па конвенција во светот на C програмскиот е името на датотеката точка в. Одам да само стави во Домашен директориум Џон Харвард, тука, кликнете на Зачувај, и сега јас ќе одам да си во текот на оваа терминален прозорец, кој повторно е оваа црна и бела линија каде што може да се изврши команди. Можам да ја стартувате програми со пишување на нивното име, а не со двојно кликање икони во вообичаената смисла на зборот. Но, нешто е за C е дека јазикот како C првиот доаѓа во оваа форма, нешто што се нарекува изворен код. Нешто што изгледа малку како англиски јазик, но е дефинитивно помалку како англиски јазик од pseudocode на Јосиф момент пред. Тоа е малку повеќе таинствени. Се чини да се следат некои модели или правила. Фактот дека имам големи загради, semicolons, цитати, агол загради, се чувствува како компјутер излезе со оваа вид на јазикот. Но, ако одам, сега, на овој прозорец за терминал, јас може да работи командата која се случува да конвертирате дека изворниот код е нешто што се нарекува објектен код. Тоа се случува да го конвертирате англиски како синтаксата за нули и оние, исто видови на нулите и ние зборуваше за среда. Сега, јас ќе одам да извршите команда наречен ѕвекот. Повеќе за ова во недели да дојде, но тоа е програма со која може да се конвертира hello.c во целиот куп на нули и единици. Сега, јас сум ја извршите оваа команда. Сум се кандидира ѕвекот, а потоа реков кандидира себе си на оваа датотека наречен hello.c, кои го создадоа момент пред, и ништо не чини да се случи. Но, навистина, ако јас појдов околу мојот домашен директориум, јас ќе ја видите дека ова глупаво име програмата a.out сега постои. Ова е само стандардното име за програмата кога пишувате со C. Ние може да ја замени тоа на крајот, но a.out е името на програмата Јас само претворена во нулите и. И сега дека тоа е оние кои и нули, мојот Мек, во овој случај, или вашиот Windows компјутер, да ги разберам оние битови, оние нулите и. И така, кога јас хит Внесете го гледам "Здраво, свет!" Но, тоа е малку кабриолет. Јас не сосема да се каже "Здраво, свет: воздух: - jharvard." Воздухот е името на мојот компјутер. Jharvard е името на сметка, така што не можам јасно изостави од програмата? Некој вид на линија пауза. Јас не го погоди еквивалент на Enter или на пајтон се врати, и ова е, пак, доказ на фактот дека компјутерите можат да само го направи она што им каже да го стори. И фактот дека јас не му кажете на компјутерот се движат на курсорот на следната линија - Па, тоа е сигурно нема да само го прават тоа надменно за мене. Значи, ако се навратам на моето програма, и велам \ n - Значи \ n, како што наскоро ќе видиме, е начинот на претставуваат чудни нешта како нова линија ликови, работите кои инаку би биле резултат на притискање на копчето Enter. Но, за сега, само знам дека притискање на копчето Enter ќе само бидете нашиот код изгледа чудно, така што светот одлучи, знаеш што, да работи поубава, да се задржи на една линија, да само кажете \ n претставува нова линија. Дозволете ми да resave мојот датотека, вратете се на прозорецот на терминалот, и прегласувањето a.out, Enter. Уште кабриолет, но зошто? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, па јас треба да го прекомпајлирате. Значи да се состави програма само значи претворите од изворот кодот за објектниот код, изворниот код на оние кои и нули. Сега, самиот факт дека јас хит Зачувај во оваа TextEdit нема имајќи на оние нули и единици, затоа што прво треба да се кажете ѕвекот еј, јас сум смени оние линии на код, изворниот код. Вие треба да се регенерира a.out. Ништо не чини да се случи, но во компјутер, на командната линија, така да се каже, кога ништо не се случува, што обично значи се е во ред. Кога нешто не се случи, тоа значи сте збркана, генерално. Па ајде сега одам да a.out, и навистина сега, имам "hello, свет. " И сега, она што за овие нули и единици? Каде што, всушност, се оние? Па, не можам навистина само вид на ѕиркаат низ многу ефективно. Дозволете ми да се отвори TextEdit. Еве a.out. Дозволете ми да оди напред и да ја отворите оваа, а тоа е очигледно она што ми Програмата изгледа. Па јас отвори, не hello.c, но a.out. Но, ова не е всушност она што мојата програма навистина е. Јасно е дека ова е некој вид на азбучен карактери. Не гледам оние кои и нули, но ова е бидејќи a.out е програма. Нулите и - но TextEdit, како што сугерира името, тоа е само како Notepad на Windows, е само текст едитор, па тоа е збунувачки сите оние нули и единици, како иако тие беа, што? ASCII карактери. Па се потсетиме на Среда, ние само што дојде со оваа произволни мапирање на броеви, или битови, да букви од азбука и интерпукциски знаци и симболи и слично. Значи TextEdit, дека тоа е текст едитор е misinterpreting овие модели на нули и оние кои би требало да се печатење зборови, како "Здраво, свет". Тоа им прикажување како ASCII, а тоа е зошто тоа изгледа малку неуредна. Сега, постојат некои совети на коректност тука. Забележите ако јас се нагласи, има навестување на всушност "hello, светот ", па некаде во таа програма е казната напишав. Но, ајде да одиме напред, а сега гледам со различни програма. Ова не е оној што ќе ја користат таа често, но исто така доаѓа со Mac и ќе биде во внатрешноста на CS50 апаратот. Дозволете ми да оди напред и да се отвори со програма наречена XXD. Назад во денот, повеќето програми беа именувани прилично cryptically, и така на трендот продолжува. Но-б значи плукаат оваа програма се издвојува како бинарни. Не го работи. Покажи ми го, како оние кои и нули, а тоа е C програмата ние само го напишал. Сега, јас, како човек тука, јас искрено немам идеја што овие различни модели на нули и единици претставуваат. Назад во денот, јас, со моите удар картички или слично, би всушност треба да се погледне до она што овие различни модели на 01111000, всушност претставуваат. Или уште полошо, јас ќе треба да се направи на удирање или создавањето од овие модели на оние кои и нули. Но, за сега, се на верба дека процесорот, Интел внатре, така да се каже, внатрешноста на сите наши компјутери, овие денови, знае како да се интерпретираат овие нули и единици. А некои нули и единици значи печати. Некои нулите и значи испушти звук. Некои нули и оние значи да внесе корисникот од тастатура. Има сите видови на различни модели, но за среќа, како луѓето, само генерално треба да се грижите за програмирање на оваа прилично високо ниво. И во други CS класи можете да истражувам надолу подлабоко и да бараат на работите како оние нули и единици, или уште други работи уште. Па сега ајде да конвертирате ова. Ајде да се движи многу брзо далеку од Ц и се движи кон нешто малку повеќе утешна, малку повеќе возбудлив, во таа можеме да добиеме назад нашите анимации и звуци и слично јасно ни избега во оваа прилично примитивни интерфејс. Значи ова истата програма во C може да биде претставен сега во овој програмски јазик наречен гребење како што следува. Ова е еквивалент на ова Здраво светот програма напишана во оваа загатка парче стил јазик наречен нула. Па дозволете ми да оди напред и се отвори оваа многу програма. Тоа повторно ја повика нула. Тоа е слободно достапна, а тоа е истото што Започнете денес натаму. Значи ова овде е нула, и тоа е растурени во неколку различни парчиња. На самиот врв во право, имаме т.н. сцена, и навистина, тоа е каде што колачиња врши само малку пред. И за таа фаза се работи вика sprites, ликови, или предмети или лица. Тоа навистина не е важно колку мислите за нив, но тие се програмабилни, подвижни работи, и во овој случај, оваа програма со која нашите студентски напиша има неколку джинджифилово колачиња, неколку кружни колачиња, целиот куп на срца, целиот куп на очила. Поради ова, тој или таа е во состојба да се програмира секоја од овие индивидуални ликови одделно. Сега, она што значи да се програмираат овие ликови? Па, дозволете ми да оди напред и да кликнете на овој левата рака куки и дојдете во текот на горниот лев тука. Во горниот лев агол на мојот екран сега е т.н. скрипти област. Ова е вид на празно чеша, на почетокот, кон која можам drag and drop загатка парчиња кои, искрено, дали токму она што велат тие. На самиот врв на овој магацинот на мозаик парчиња е зборот Кога зелено знаме Кликање, и ако не се забележи порано, начинот на кој јас започнавме куки песната беше кликање, буквално, зелено знаме. Така што мозаик парче во горниот лев има значи кога човечки кликне на зелено знаме, продолжи да го стори следниве работи. Сега, што тие куки продолжи да направам? Јас навистина не знам како да се интерпретираат ова сеуште, но куки очигледно постави жлебот на нула, тогаш тоа чекав три секунди, а потоа го промени своето група на една, тогаш тоа чекаше една секунда, а потоа го промени своето жлебот назад до еден. А потоа тоа всушност изгледа како малку на бубачка, не треба да треба да го промени својот ритам повторно и повторно, освен ако тоа е се менува на друго место, но оваа серија на чекори е она што е диктираат однесувањето на овој колаче. Па ајде всушност дојдете назад и не гледам нешто толку комплексен досега. Дозволете ми да оди напред и да одат во датотеката, Нов, и да добијат чиста чеша. Па сега, јас навистина имаат празен сценариото област, празна сцена, со нашите стандардно самовила нула, а во горниот лев на мојот екран имам палетата на сите нивни достапни мозаик парчиња. И ние не ќе помине низ речиси дека многу од овие работи денес, бидејќи, повторно, повеќето се очигледен, но ние ќе обидете се да ги категоризирате и укажеме на сличностите со овие идни јазици на кои ние ќе се нурне. А во горниот лев тука е првиот Кога зелено знаме Кликање, па нека ме довлечкаат овој овде, одзумирате малку. И ако јас кликнете на зелено знаме, ништо навистина се случува бидејќи Не сум спроведен од секоја логика, секоја изјава така да се каже, да се дека зелено знаме, па да ми се обратите до категории овде. Јас сум моментално во контрола категорија. Јас сум наместо ќе одат надолу кон Гледа категорија, и има еден куп на работи тука, кои велат дека Кажи, Мислам, ја менуваат бојата, Switch костимот. Па можете да направите глупави работи со носии и звуци и слично. Дозволете ми да оди напред и да речеме каже, и сега забележите како што влечете и да го испуштите оваа загатка парче, тоа се случува да сакате да бравата во соодветните форма. Па кога ќе одиме напред и нека одат на мојот глушец, тие заклучуваат заедно, а сега ако одам над тука и кликнете на зелено знаме, мачката се всушност каже здраво, бидејќи тоа е она што е внатре на овој белата кутија. Наскоро ќе видите дека ова белата кутија е она што се нарекува аргумент, или параметар. Тоа е начин на промена на однесувањето на, во овој случај, загатка парче, но ако сакам да кажам точно она што го рече пред, да речеме здраво, свет, јас сега може да се врати овде, кликнете игра, и "Здраво, Светот" е она што го рече. Значи ние сме буквално програмирање сега. Тоа не е сето тоа релевантни за програмата, но барем тоа е малку повеќе привлечни од нешто што изгледа, во прв поглед се допаѓа ова. И ние многу брзо може да се добие сè повеќе и повеќе експресивна бидејќи во гребење, како и во другите јазици, таму е сè видови на извештаи не, само кажете или печатење нешто, но можете да ги правите нештата како да чека, ние едноставно се виде со колачето, некои бројот на секунди. Можете да се пуштаат звуци во околината на гребење само како што можете да во нормални компјутерска програма Пушти звук. Можете да проверите она што се нарекува Булова изрази. Па сега, ајде да почнеме да го додадете во нашата раководство некои терминологија кои, всушност, се однесува на пример дека Јосиф и го направив тука со чорапи. Значи извештаи се само изјавите на факт. Го направите тоа. Директива за самовила, или мене човекот, да се направи нешто. Булова изразување е нешто што има вредност, т.н. логичка вредност, тоа е или нула или еден, лажни или точно, надвор или во, или без да. Не е важно колку мислите дека за тоа, но тоа е бинарни држава. Како Нејт дискутира во видео средата, две различни нешта. Значи во нула, Булова изрази случи да се погледне како овие сини објекти таму, и во овој случај, прашањето ознака значи дека сте поставување на прашање. Е мачка, или самовила, допирање на глувчето? Значи ова е само еден пример на гребење блок што се случува за да ни овозможи да се провери да или не, е на глувчето допирање на самовила на екранот? И ова може да биде корисно ако навистина сакате да ги правите нештата со вашиот глушец. Во прилог на Булова изрази, имаме работи како е на глувчето надолу, па може да се открие дека вид на прашање, како и. Ние можеме да правиме математика ако навистина сакате, и има всушност повеќе привлечни цели за овој отколку само чист од аритметика, како што ќе видиме. Псевдо случајноста и правење на вашата програма се чини дека мислат или се однесуваат поинаку врз основа на некои навидум случајни вредности, и тогаш имаме работи како Булова изрази како и. Значи, ако навистина сакате да се провери две вредности, ќе видиме во Изгребете дека ние всушност може да го тестира дали ова е точно и тоа е точно. На пример, во случај на моите чорапи, би можел да сум на самиот крај поставува прашањето ако не чорап е вклучен и право чорап е вклучено, се повлече. Ти си Сето тоа е направено за денот, така што ќе биде можност за тоа. Значи, да оди напред и да се обидат да го состави некои од овие заедно и оди во неколку примери повеќе релевантни од оваа. Па дозволете ми да оди напред тука и се отворат некои од примерите дека секогаш ќе биде на веб-страницата на курсот, како и, и отвори hello2. Значи во hello2 тука, имаме програма со која го прави неколку работи, но тоа не е го прави тоа како ефикасно како што ние би можеле да. Па еве што вели: "Здраво, свет" за една секунда и потоа чека за една секунда. И тогаш тоа го прави повторно, а потоа прави тоа повторно. Значи, ако јас кликнете на зелено знаме, гребење вели: "Здраво, свет. Здраво, свет. Здраво, свет. "И ова е очигледно кандидат сега за подобрување. Што е маргинално подобрување, се надевам, ние може да сега се направи ако гребење поддржува концептот? Некој вид на јамка. Некој вид на повторување, сега, би било убаво, па да ми всушност се обиде тоа. Дозволете ми, всушност, оди и да се движат ова. Значи известување може да одвои блокови така лесно, како можете да додадете на прикачете ги. Дозволете ми да одат под контрола, дојдете тука, и навистина, има оваа загатка парче тука, Повторете и засекогаш и Засекогаш Ако. Значи има голем број на начини на изразување looping конструкции во нула. На онаа што веројатно сакате тука не е вечно, бидејќи јас само сакате ова да се случи три пати, но веројатно Повторете. Значи, да ме довлечкаат Повторете над тука, drag and drop, и сега наместо да се каже "Здраво, свет" три одделни моменти, дозволете ми да повлечете оваа загатка парче тука. И иако тоа не чини да се вклопи, на програмата е паметен доволно за да се реализира тоа ќе расте да се пополни, па тоа е форми таа материја, а не апсолутна големина. Дозволете ми да го промени повторување до три, а сега пушти ме напред и повлечете Чекај една секунда во таму, како и. Тоа се случува да се прибере како добро, па сега ќе одам да влечете овие момци овде и само да ги фрли далеку, бидејќи јас не им треба повеќе. Дозволете ми да одзумирате и кликнете на зелено знаме сега, и ние имаме истата програма, но, како што предвиде, подобриот дизајниран бидејќи можете да си замислите колку лошо оваа програма ќе добие, секако, естетски, ако мораше да се започнете со копирање и вметнување, копирање и вметнување, или влечење и пуштање на истата ебам работи повторно и повторно. Сега, едноставно велејќи нешта на екранот, печатење на екран, навистина не се сите возбудливи, па ајде отвори трети варијанса тука. И сега, како што ќе видите, ова брзо ќе добиете досадно - [Meow] Дејвид MALAN: - но тоа е исто така еден вид на слатки. [Meow] Дејвид MALAN: Океј, па подобро, а ние сигурно може да го користат исто транзиција на chunking на овој горе во looping структура, но, ајде да се направи поинтересна уште. Дозволете ми да оди напред и да се отвори четвртиот варијанса тука, каде што преземат работите еден чекор понатаму. Па според тоа, глупо иако ова е прво поглед, она што е оваа програма ќе правиме? Тоа ќе meow еднаш. Зошто? Па, еден е, колку што знам, секогаш помалку од две. Нема поим на случајноста тука. Јас сум буквално хард-кодирани еден и два, но тоа е пример сега на всушност користење на Булова изразување. Многу сличен како Џозеф направи во неговата pseudocode, вовлекувањето АКО ќе најдете појавување на чорапи потоа го направите следново, тука имаме израз Ако некој е помалку од две ТОГАШ - и всушност ние дури имаат малку вовлекување, каде пурпурна е малку вовлечен на правото - Тогаш сте ќе да ја играат звук meow. Сега, во овој случај, тоа е секогаш помалку од две, така што ова е вид на отпад на состојба. Но, ние ќе бидеме во можност, како што ќе видиме, да го приклучиш други работи во овие променливи каде еден и два сега сте. Па ајде сега преминете на пример пет од овие неколку hellos и погледнеме во она што оваа програма ќе направи. Па сега, по англиски реченица, како го прави ова Програмата се однесуваат? ПУБЛИКАТА: мјаукања половина од времето. Дејвид MALAN: половина Meow на времето, така што ова е начин на пренесување многу едноставна идеја. И покрај тоа што се случи да биде користење на некои нееднаквости тука во некои бројки, ова е навистина само programmatical начин, на прецизен начин, да се каже ако проблемот доаѓа up глави, одете напред и meow. Или обратно, ако проблемот доаѓа до опашки, не meow. И во овој случај, како ние да го изразат тоа? Ние ќе ги собереш на случаен број од 1 до 10, а ако тоа бројот е помал од 6, оди напред и да meow. И како тоа се овде? Па повторно, забележуваат само влечење и пуштање и работи брави на своето место. Па сега ајде да видиме дали ова случајноста работи. Дозволете ми да оди напред и да кликнете на зелено знаме. [Meow] Дејвид MALAN: Океј. [Meow] Дејвид MALAN: Океј. Океј, добро, па имаме глави, глави, опашки ефективно. Опашки. [Meow] Дејвид MALAN: Глави. [Meow] Дејвид MALAN: Одлично. Тоа секогаш е непријатно кога само статистички ќе добие лоша работи, а тоа е сите глави, а на програмата всушност не работи како што би се надеваме. Но овој пат, таа работеше, а ние се чини дека, ако ние не овој бесконечен број на пати, 50% шанси. Сега повторно не сето тоа интересно, само правење мачки meow, па ајде да видиме ако не можеме да ги унапредат овој малку подалеку тука во верзија шест. Па сега, имаме навистина досадни верзија - [Мјаукања на секои неколку секунди] Дејвид MALAN: - и тоа е она што е познато, воопшто, како бесконечна јамка. Значи бесконечна јамка во овој случај се чувствува лошо. Тоа е дефинитивно ќе почнат да звучи лошо, а сепак бесконечна петелки не се секогаш лоши. Можете да мислам на контекстот во компјутерски програми каде што би всушност сакаат бесконечна јамка? Да? ПУБЛИКАТА: Кога сакате да се провери состојба. Дејвид MALAN: Океј, кога сакате да се задржи проверка на состојба? Како што? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Океј, добро, па ако сте имале некои програмата, некои вид на home automation работа, каде што сакате постојано да Мониторот е нешто случајот. Дали светлата на? Дали светлата на затоа што можеби имате тајмер, и сакате да ги одам, можеби ќе треба да се направи нешто повторно и повторно. И всушност, станува збор за тајмери, секој од вас кои имаат часовници на вашиот компјутер или дигитални часовници, тоа е една бесконечна јамка. Таа продолжува да го надградува времето, бидејќи тоа е постојано проверка и проверка и проверка има времето се менува, и ако е така, о, Боже. На часовникот конечно се промени. Тоа треба прикаже таа вредност за вас. Значи додека поголемиот дел од времето бесконечна петелки се грешка, или барем лоша дизајн одлука, понекогаш тоа го прават имаат вредност. Па, ајде да напредуваат понатаму тука за да hello7. Па сега на програмата ќе добие малку повеќе интерактивни. Дозволете ми да зумирате тука, и повторно, тоа е она што е убаво за гребење. И ние ќе го користат за да бидат јасни, нула, само денес и во Проблемот следната недела во собата. Но, во понеделникот, ние се нурне во C. Во оваа програма тука, го прави тоа, засекогаш, следниве. АКО допирање на глувчето - сега, кој е контекст тука? Па, и информации дека кој е избран овде долу на дното право е мачка, самовила еден, па овие скрипти, ова програма, се однесува на него конкретно. Па ако тоа мачка допирање на глувчето, а потоа тоа се случува да се игра оваа надолу и почекајте две секунди, и потоа повторете реклама nauseum. Па ајде да одиме напред и хит игра. Ништо не се случува, но ако сакам да домашно милениче мачка сега, можам едноставно. [Meow] Дејвид MALAN: симпатична. [Meow] Дејвид MALAN: Океј, помалку досадни, но исто така добива досадна, па ајде оди натаму и да видиме ако не можеме да се инјектираат малку повеќе логика. Тоа беше пример седум. Овде, во пример осум, ние ќе воведе ДРУГО состојба. Толку многу како буквално вилушка во патот, во кој можете да се обратите лево или можете да отидете во право, состојба во програмирање јазик како нула, или како што ќе видиме Ц, може да Ви овозможи да одат во еден правец или на друг преку АКО ДРУГО изградба. Значи буквално, АКО допирање покажувачот на глувчето, ова ќе играат некои звук, друго се случува да се игра оваа други звук, meow. Сега, ако може да заклучиме од името на овие звуци, можете да Веројатно се погоди она што оваа програма е замислена да апелирам до идејата. Оваа мачка слатко задоволство. [Meow] Дејвид MALAN: среќа, но не доста сакал да се допре. [Рика] Дејвид MALAN: Така, сега имаме една мачка кои ќе се развикам. Добро, добро, еден последен пример со мачки тука, и ајде отворен верзија девет од овој овде. Па сега, имаме следната најпознатите досадни звук што можев најде, па ние имаме морж или морски лав тука кој ќе сторете го следново. [ПЕЧАТ кората] Дејвид MALAN: Океј, па тоа ќе оди на се додека не дознаам колку оваа програма работи. Значи ова време, ова животно има две сценарија, и она што е интересно овде е дека овие скрипти се случува да се изврши во паралела. Па затоа тие двајцата почнуваат со еден зелено знаме кликнато, тоа е како одење вака, и двете програми почнат да оперираат тоа еднаш дури и ако тие се looping засекогаш. Така во првите сценариото, имам некои логика. Какви функции кои обезбедуваат таму горе? [ПЕЧАТ кората] ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Ако тоа е она? [ПЕЧАТ кората] ПУБЛИКАТА: Ако пригушени до нула, тоа се случува да се задржи игра звучи. [ПЕЧАТ кората] Дејвид MALAN: Океј, добро. Значи, ако пригушени, што е ова, ова портокал работа е нула, Потоа играат на лавот морето звук и мислите "Ох, Здраво, "за две секунди. Сега, јас не знам што пригушени е, но нула доловува Идејата на лажни или исклучени. Значи, ако пригушени е неточно, па ако не пригушени, да свири звукот. Добро, добро, како да се оневозможи оваа работа? Па, ајде да погледнеме во втората скрипта таму долу. Втората скрипта вели постави пригушени до нула. Забележите тоа е, исто така, портокалова, па што гребење не е тоа бои блокови во истата сенка, ако тоа е вид на логично поврзани. Па само како пригушени до врвот беше портокалова, па се стишува овде споменати во портокалова блок. Но, ова е променлива задачи, па исто како и во алгебра, имаш x и y и z, во програмирање имате променливи, но тие се обично - пауза Ајде за момент и фигура како да се запре оваа лаење. Како да го направам тоа? [ПЕЧАТ кората] Дејвид MALAN: Океј. Тој престана. Во ред. Значи исто како и во алгебра имате променливи x, y и z, но во програмирање, со променливи како x, y и z е генерално намуртен врз, бидејќи тие не се воопшто експресивен. Тие немаат семантичко значење она, така што во повеќето програмски јазици, променливите можат да имаат целосна полноправно имиња или зборови или фрази, како пригушени, да се каже она што го прават. Значи ова второ писмо, исто така, беше слушање засекогаш, и тоа го рече ако клучот, тастатура клучните простор, е притиснато, прашалник. Па таму е состојбата со Булова израз кој е ќе одговорат на прашањето или точно или неточно, тогаш имам внатре од него ако го space копчето е притиснато и АКО пригушени е нула, во собата пригушени до еден, ДРУГО постави пригушени до нула. Значи ова други вилушка во патот, и информации како сум вгнездени двете АКО услови, е начин на проверка е Празно место притисок, бидејќи ако е така, јас или сакаат да одат овој начин или на тој начин. И како можам да инвертен вредноста на пригушени? Јас треба да се провери дали е нула? Ако е така, прават една, друго прават тоа од нула до тоа префрлате нејзините две држави. Добро, така што мораме потоа некои од овие основни конструкции. Имаме Булова изрази, и ќе сфати дека, исто така, тие се не се сите непознати. Всушност, тука е брз екранот на Харвард курсот CS50 шопинг алатка, и секој веб-сајт таму што има обележувачи и капка падови навистина, сето ова време, бил со користење Булова изрази. Во овој случај тука, ако кликнете синхронизирајте до Се разбира поголема или еднаква на 4,5, или истиот до факултет, ти си специфицирање Булова изразување. Покажи ми предмети за кои тој израз е вистина. Или на десно, не е во судир со курсеви сум преземање, ако тоа се проверува, тогаш да, вие сакате да се провери таа состојба, друго што сакате да го игнорира. Значи Булова изрази се вид на сите околу себе, но кога ние ги стави во услови, дали АКО услови, ако Elses, или ние дури и може да се симулира подлабоко нивоа, АКО ДРУГО АКО ДРУГО - па тоа е вид на тројната држава. Можете да отидете на овој начин или на овој начин или на овој начин. Ние може да ги задржи вгнездување на работи кои треба да одат во различни правци. Значи гребење има овие петелки, како Засекогаш. Таа има овие функции како Повторете 10, некои ограничен број на пати. Ние имаме можност сега да го поставите променливи, така што во овој случај Сум прогласи, на пример, променлива наречена чорапи. Сум иницијализира на 0, а тоа е уште една насока би можеле да се преземат се тука со Joseph, при што можеби и јас само да ги пратите на колку чорапи имам на и раскине на програмата кога вредноста што променлива е 2. Тоа ќе биде уште еден начин на вид на генерализирање дека проблем и прави нешто повторно и повторно. Па, ајде да одиме напред и сега се воведе неколку нови работи. Значи оние од вас со претходно програмирање искуство ќе Знаеме дека многу јазици имаат низи, или вектори или листи, и навистина, гребење има нешто како ова, исто така. Значи, да видиме ако не можеме да се работи на следното ниво тука. Ако имам можност, сега, со овие мозаик парчиња да додадете нешто, како збор или број на променлива, можам да почне да се акумулира работи. И ова е всушност прилично односно за нешта како игри, играње на улоги игри каде си вид на шетаат некои фантазијата светот собира нешта, подигање работите, заработуваат поени, или слично. Можеби ќе сакате да ги пратите на некој вид на инвентар, и навистина, тоа е она што еден од нашите поранешни студенти тука не со нешто што се нарекува Fruitcraft RPG. Па дозволете ми да оди напред и се отвори оваа работа тука, како и во Fruitcraft, имаме овој свет се на врвот. Па дозволете ми да оди напред и да кликнете на зелено знаме. Известување во горниот лев е некој вид на инвентар. Тоа е имплементиран во Скреч како што ние ќе го наречеме низа или листа, а сега имаме оваа мала анимација. Значи исто како што започна порано со ова колаче љубовна приказна, и потоа отидоа мачки и морски лавови, сега можеме да имаме работи кои се дури и повеќе интерактивни. И ова малку сино човек, јас може да почне да се движи околу својата малку дома. Така што изгледа како тој доби излез долу тука, па јас сум користење на стрелките клучеви, горе, долу, лево десно. И сега сум надвор, па нека е тоа што имам тука. Изгледа како портокалова, и навистина, штом ќе допре портокалова, станува plopped во мојот инвентар. Ако одам овде на цреши, сега имам нешто друго во мојот инвентар. И сево ова е убаво и слатко, но мислам за тоа, сега, овој се спроведува. Па, имаме овој поим на листа, и тоа е очигледно загатка парче што ќе речеме она што сакате да додадете на него, да додадете портокалова, додадете цреши. Сега, што е ова малку сино човек прави? Па, тој е самовила. И веројатно, портокал и вишни - тие самите беа одвоени sprites. И користење на услови во Булова изрази, студент е веројатно можност да го изразат АКО сини човек е допирање цреши потоа додадете зборот цреши на неговата инвентар, а потоа, исто така, ги кријат цреша самовила. Значи под хауба, има веројатно уште е цреша самовила таму. Штотуку ја кажа да стане ефикасно невидливи. Сега, ако јас се задржи одење над тука, ние исто така може да го направи тоа проксимална работа, каде што ќе можам да појдам и да чита знакот. Значи, ако сини дечко допирање знак, може да имаме овој мислење блок исто како мачка ни прозборел со зборови, здраво, претходно, "Got некои плодови? Доведе до овошје место. "Сите во право, па сега, очигледно, Имам правци. Јас може да оди овде за овошје место, линија до мене со врата. Сега, јас сум тука. Јас може да оди до човекот на шанкот. Тој открива дека сум блиску до него, па тоа не мора да биде сосема идентично допирање, и јас имаат освоено игра. Па ние имаме Fruitcraft RPG. Значи можеме да се прават работите уште повеќе напредни од ова. Ние можеме да додадете звуци. Ние можеме да додадете псевдо случајноста. Ние можеме да додадете комплексност. Дозволете ми да оди напред тука, и наместо да го направите ова од мене, дозволете ми да ви покажеме еден од повеќе софистицирани поднесоци добивме минатата година од одредена некој наречен Блејк. Ние може да има еден волонтер кој е удобно се појавува на камера и е за игра? Како за таму? Ајде нагоре. Добро, така што игра која што треба само знае доброволно да играат - [Аплауз] Дејвид MALAN: - е нешто од недалечното минато нарекува "Frogger". Што е вашето име? RENDA: Renda. Дејвид MALAN: Redna? RENDA: Тоа е како Бренда со б. Дејвид MALAN: Океј, Renda. Давид. Убаво да ви се исполнат. Па овде во "Frogger", а ако ние може да се подигне на обемот само малку, вие сте овој мал зелена жаба на дното. Можете да го користите лево, десно, горе и долу, и вашата цел е да се ја премине улицата, ја премине реката, и допир на Lily влошки на врвот. Aw. Уште една т - повтори, во ред? Да хит станица. Никој не го видовме тоа. [Аплауз] [Аплауз] Дејвид MALAN: Да. Многу добро направено. Одлично, ви благодарам. Така што не беше Frogger. Сега дека знаете што сте добивано и самите во, уште една волонтерска за различни игра поднесени од друг ученик. Сакате да дојдат на се? Што е вашето име? Ричард: Ричард. Дејвид MALAN: Ричард. Сите права, Ричард, ајде до. [Аплауз] Дејвид MALAN: Имате нешто што ќе звучи запознаени наскоро, па тука се вашите инструкции. Така во еден момент, некои мозаик парчиња се случува да дојдете до од екранот кои изгледаат или лево или десно нагоре или надолу. Сте ќе треба да хит на стрелките на таков начин дека тоа одговара на оние мозаик парчиња обидел со на променливи на врвот. Па кога ќе видите на левата стрелка, и линии со левото стрелка, хит на левата стрелка. Може да започне. [Музика - "посилни" Kayne ЗАПАД] Дејвид MALAN: Сите во право, голем аплауз за Ричард. [Аплауз] Дејвид MALAN: Многу добро направено. Ви благодариме. [Аплауз] Дејвид MALAN: Значи забава и, навидум, вид на застрашувачки како тоа може да биде да се спроведе нешто како навидум е софистициран како овој, да сфатат дека студентот не е утврдено и само пишувам ова на сите одеднаш. Наместо тоа, може да се прекине проблем како навидум сложениот како ова во многу помали парчиња, а тоа, исто така, е ќе биде тема. Најлошото нешто што може да направи во писмена форма програма во повеќето било јазик е да се седне, да се навистина возбудени, напишете ја целина проклето нешто, а потоа само се надевам дека таа работи со пат кога ќе завршите со пишување. Наместо тоа, процесот на програмирање треба генерално биде многу намерно, многу повторлив, која само постави многу мали чекори за себе, залак големина парчиња Дали сакате да отхапвам, и така што ќе ги имаат овие разумност проверки, малку пресвртници може да ги исполни. А потоа ќе се изгради на врвот на оние да се создадат повеќе софистицирани работи уште. Така на пример, како би можеле да се обратите за спроведување на играта, како тоа? Па, искрено, јас сигурно ќе почне со само поддршка на еден од клучните во исто време. Ајде само имплементираат поддршка за левата стрелка. Така што студентот имал некако да се создаде во Photoshop, или во Изгребете себе со помош на малку графички уредник, стрелка која изгледа како онаа во горниот лев агол таму, само сивата случаеви. Тогаш ученикот мораше да дознаам што x, y се координираат да стави, каде да го стави во прозорецот. 0, 0 е до тука, па мора да дознаам бројот на пиксели или точки, да се надомести што стрелката од на врвот од екранот. А потоа еднаш тоа е во место, вашата програма всушност не ништо уште, па тогаш треба втор самовила, за пример зелена стрелка тоа е, исто така, посочувајќи лево, а вие тогаш треба да почнете да пишувате некои скрипти за тоа. И ќе забележите, можеби, дека овие работи почнаа да доаѓаат во различни брзини, а боите се во различни локации, а тоа е затоа што на студентот користи малку псевдо случајноста. И од псевдо случајноста, јас само значи изберете број помеѓу нешто и нешто затоа што може да почне да карта работи, како ако бројот е меѓу еден и пет, добро, ајде да се направи нешто зелено. Ако тоа е помеѓу 6 и 10, да се направи мозаик парче црвена наместо тоа. Толку долго колку што имаат начин на генерирање на некои вид на случајноста, тогаш може да се донесуваат одлуки врз основа на таа случајноста. И јас се задржи велејќи псевдо случаен затоа што има малку валкана тајна. Компјутерите не може да излезе со случајни броеви. Тие само може да го направи она што го кажа, бидејќи тие се вештачки уреди. Тие не само може да се погоди голем број како ние луѓето се чувствувам како што можеме. А компјутерот мора да направи нешто математички да апелирам до илузија на математички број, понекогаш со користење на Тековниот ден на време како влез за да пронајдат она што број да се вратат, но повеќе за тоа друг пат. За сега, само знам дека ние може да генерира псевдо случајноста. Така еднаш бев имаат способност за левата стрелка за да започне се појавува во различни времиња и на различни брзини, тогаш Јас може да се врати и да додадете некои од овие АКО услови. Ако ова самовила го допира другиот, а левата стрелка Клучот е притиснато - па три услови во тој случај. Можам да користам тоа и го блокираат можеби, во тој случај - Тогаш сакам да одам напред и зголемување на резултат. И на врвот, имаме резултат, имаме Прекрасно, Кул, добро, и Бу. Па таму е очигледно пет варијабли кои овој ученик користи да ги пратите на овие различни индикатори. Значи во кратки, крајниот резултат е неверојатен. Тоа е забавно, тоа е забавно да се игра, тоа е ангажирање, но тоа не е каде што студентот започна. Тој или таа започна во многу помал сет на чекори. Значи она што се некои други градежни блокови кои можеме ткаат во овие програми? Па, има поинаков концепт во повеќето јазици, Изгребете меѓу нив, познат како теми. Така што компјутер не може да всушност навистина повеќе работи во време, барем не обично. Наместо тоа, компјутерот обично има само еден процесорот, па дури и Иако компјутерите се супер брз и може, затоа, создаде илузија на вршење на повеќе работи одеднаш - проверка на вашата пошта, добивање на инстант порака, печатите документ - навистина, компјутерот е само скокање од печатење на IMing на испраќање, назад и назад и напред и назад толку брзо што ние бавно недоветен луѓето едноставно не сфаќаат дека тоа е всушност водење овие програми малку во исто време. Сега, ова малку бела лага, овие денови бидејќи, во денешно време, многу нашите компјутери се она што се нарекува мулти-кор, така што имаат еден процесор, но повеќе јадра, кој е вид на како има повеќе процесори. И така понекогаш, компјутери навистина може да направи повеќе нешта во исто време, но генерално во рамките на програмата, програми се потпираат на овие нешта наречени теми. Значи темата е вид на како минијатурни програма што може да постои заедно со уште еден минијатурен програма и може да работи во паралела, или барем може да работи под илузија дека тие работи истовремено. Значи гребење поддржува овие нешта наречени теми. Можете да имате повеќе скрипти извршување одеднаш, исто како што не со лав морето, и тоа ни овозможува да всушност тогаш имаат интеракции меѓу овие sprites. Дозволете ми да оди напред тука и се повлече до, да речеме, теми, и игра оваа како што следува. Имаме два sprites, секој од нив ќе видиме има само еден скрипта. И ќе забележите се чини дека некои интелигенција во мачка во овој еден, бидејќи тој е поблиску - [Рика] Дејвид MALAN: - и поблиску до малата птица. Па, како е птица оперативен? Па, ајде да ги разгледаме на птицата во прв план. На птицата скрипта рече кога зелено знаме е кликнато, одете на x еднакво негативни 115 и y е еднаква на 150. Па јас само сфатиле случаен локацијата каде што сакав птица да започне, а јас само го plopped таму стандардно. Потоа засекогаш ако не ја допира мачка, па тоа е друга вид на looping конструкција, но истата идеја, го направите ова повторно и повторно и повторно. Толку долго како што не сме допирање на мачка, се движи три чекори, и ако сте на работ, отскокнување, каде што тоа е вид на рефлексија во смисла билјард. Значи тоа е како птица се движи околу вид на навидум случајно, но тоа е само затоа што тоа е бие надвор на ѕидовите во овој случај. Сега мачка, пак, е вид на изневерување. Мачката, кога зелено знаме е кликнато, да, започнува во некои локација, случајна локација - барем делумно, како на избор случаен зелени блок таму - а потоа засекогаш ако допирање на птица, играат лав звук, а потоа запре скрипта. Значи, кога реков прекине, или излезете пред, има мозаик парче во Скреч дека само ќе го убие на програмата во тоа точка, бидејќи тоа е вид на логично направено. Но во спротивно, тука се забележи она што ќе се случи. Точка кон птицата и се движат еден чекор. Па оваа точка кон птица е вид на предност на мачката има по тоа што е на пат за дома во на подвижни птица, и можеме да сега направи оваа програма сè повеќе и повеќе интересно. Наместо да се движат еден чекор во време на процесорот циклус, по штрајк патарина на ѕвончето, така да се каже, дозволете ми да оди напред и да се движат, да речеме, пет чекори во време како мачка. Кликнете кандидира, и сега тој навистина го утврди брзо. Ако ние двојно ова понатаму до 10 чекори, тој вид на оди право за него. Сега, може да се даде на птица, можеби, малку предност. Ајде да одиме во птицата и да каже наместо движат три чекори, ајде да се движат него 30 чекори. Но тој се уште е фатен на крајот. Па еве, имаме две теми. Тоа е затворен во нула со две сценарија и две sprites, но идејата и на други јазици е тоа што можете да напишете, во суштина, многу програми како оваа и да имаат ги извршувате навистина, или imaginarily, во паралела. Сега, има, исто така, овој концепт во програмирање познат како настани, а тоа е нешто што не ќе видиме во C, јазик познат како C. Ние ќе го гледаат кон крајот семестар во веб програмирање, кога ќе се воведат го вклучите Javascript-и идејата за градење на веб страници, кои се динамични и да комуницирате со корисниците. Значи во овој случај, имаме еден многу едноставен пример на две sprites, момче и девојка, секој од нив имаат нивните теми, но некако овие две се меѓусебно комуницирање по пат на нешто што се нарекува настани. Па дозволете ми да оди напред тука и зумирате на сценариото на момчето, кој изгледа вака. Кога зелено знаме кликнато, засекогаш го направите следново. Ако клучот простор, или на растојание, се притисне, да речеме Marco за две секунди, тоа е чисто естетска на екран, малку говор меур, но потоа се емитува. Значи емитување е уште гребење парче што е претставник на класа на функционалност во програмирање која овозможува различни програми, различни теми, на интер-комуникација, некако испрати пораки, еден до друг. Донесување на парче хартија во класа е вид на ниска технологија еквивалентни. Значи емитува настан. Можам да ја испратите оваа порака, а зборот настан е сосема произволна. Нула понекогаш има овие капка падови, па јас само излезе со случаен збор како настан, бидејќи сега, она што момчето не кога ќе притиснете го копчето е тој емитува овој настан. И ако гледам сега во сценариото на девојката, ја скрипта е супер едноставен, бидејќи сите што треба да направите е да не дејствува кога зелено знаме е кликнато. Таа е наменета за акција, кога таа добива понуда, unquote, "Настан", и во тој момент, таа е слушање тоа за т.н. случај повторно и повторно. Штом таа добива тој случај, таа ќе викне Поло за две секунди. И така ти можеби да заклучиме од овој токму она што следниот резултат ќе биде. Дозволете ми да кликнете на зелено знаме. Ништо не се случува затоа што треба да го направи она што? ПУБЛИКАТА: Празно место. Дејвид MALAN: Празно место. Момчето вели Марко, вели девојката Поло. Но, тоа не е тешко кодирани по себе. Тоа е интер-комуникација помеѓу скрипти, па сега ние имаат способност да се направи дури и повеќе комплексни програми каде овие две се некако интер-комуникација. Значи во она насоки може да се земе ова? Па, во проблем сет 0, навистина, целта е да се се забавуваат со нула. За хакер издание, вие наместо ќе се забавуваат со повеќе софистицирана верзија на гребење наречен BYOB, Изградба на Свој Блокови, но идејата е иста. Вие ќе бидете во можност - Да, тоа беше намерно. Таа дојде од Беркли. BYOB е хакер верзија на ова, но и двете , демографијата, Standard Edition и хакерски издание слично Целта на дофат на раката за следната недела е навистина само да се нурне во длабоко, ја добиете вашата раце валкани со програмирање, и да нешто интересно, направи нешто интерактивни, да нешто уметнички, направи нешто забавно да се, всушност, покаже, така што до крајот на недела, ќе треба некој проект, не само за ваша прва CS50 pset, но ќе има малку нешто што може да покажат во Annenberg да пријатели, па дури и семејството од качувањето до веб МИТ. И така како што реков во средата, ние очекуваме 90% на класата, генерално, да се направи стандардниот изданија. Сфатат дека има, исто така, овој вентил за оние од вас кои инаку би можеле да се најдат себе си малку досадно со основите и навистина сакаат да се нурне во и занает визија веќе имаат со претходно искуство во оваа повеќе пријателски животната средина. Па дозволете ми да се повлече до еден друг пример дека еден од нашите поранешни студенти тука не и кажете малку нешто преку песната. Тоа слично, бидејќи ова драми, размислуваат за тоа како да се обратите за спроведување на оваа програма користејќи токму истите градежни блокови, малку псевдо случајноста, и малку запознаени песна. Ако можеме да се подигне на обемот само малку? [МУЗИКА - "врне мажи" времето GIRLS] Дејвид MALAN: Тоа е тоа за CS50. Ние ќе се видиме в понеделник. [Аплауз]