[Powered by Google Translate] [ROCK MUSIC] [MUSIC - "щастливи заедно" костенурките] Дейвид Малан: Днес, ние започваме проучването ни основите на компютърната наука и въвеждането си, сега, изкуството на програмирането, на които това е само един пример. Но в същия дух за решаване на проблеми, знаят, че Традиционен пъзел CS50 ден е утре. Ако все още не сте RSVPed за това събитие, можете да отидете cs50.net/rsvp. Вие може да донесе на отбора на две, три или четири. Ще бъде оспорено с проблеми, като те видях там в началото. Всички нови проблеми тази година, ако отпих миналата година, и вие ще имате шанс да спечелите някои приказни награди. Сред тях, Wii и някои сертификати за подаръци и други подобни, и всичко това докато излиза с CS50 студенти и съученици и пица и Facebook. Така повече, че утре, ако искате. Тогава това е CS50, за тези от вас, се присъедини към нас за за първи път. И знайте, че този курс е особено твърдо решени да се вас чрез този курс за края, при която вие ще има не само разбиране на тези основи на компютърните науки, но вие ще имате този много практичен набор от умения, които може да вземе обратно собствения си отдел, независимо дали става дума инженерните науки, приложна математика, физически науки, естествени науката, или нещо подобно. Всъщност, това, което е толкова вълнуващо за компютърни науки тези дни е, че тя е толкова приложима към всички видове полета. И въпреки че днес, ние само ще надраскат повърхността на много традиционен език за програмиране, известен като C, ние ще вместо да разгледаме нещо, наречено Scratch, нещо с тази история бисквитка любов е изпълнена от един от вашите предшественици през последните години, за да разкажат истории, за създаване на игри, за създаване на интерактивно изкуство, а реално да започне да приключи нашата умове около някои от основните конструкции, които основата за програмиране, но в контекст, както ще видите, че е много по-страшно, това е много по-малко тайнствена, отколкото ще видим не след дълго. И осъзнаваш, за тези от вас, просто се присъедини към нас семестър, фрази, на които ние, приключващи на лекция в сряда, това не е толкова важно къде в крайна сметка спрямо си съученици в този клас, но къде ти, до края на семестъра в 11-та седмица, в крайна сметка по отношение на себе си точно в този ден. Така че без повече приказки, това е също да се отбележи, че по-малко удобни, тези, които са някъде по средата, също така, по дизайн на този курс, а не в неблагоприятно положение по отношение на онези по-удобно влизането в този клас. Както ще видите през идните седмици, имаме различни песни за коренно различни обратно фон, раздели за тези по-удобни, по-удобни, тези някъде между тях. Както ще видите тази събота и неделя, както и през следващата седмица, две версии на повечето комплекти проблем в двата стандарта и хакер издание, така че всички вие може самостоятелно да изберете по пътя, с която можете са най-удобни. Така че днес, ние се потопите в този програмен език, наречен Scratch. Това е графичен език за програмиране, и все пак има същите характеристики на някои от по-високите езици ниво ние ще проучи по-късно през семестъра, сред тях C и JavaScript и PHP. Но това ще ни позволи да се избегнат някои от отвличане на вниманието в началото на синтаксиса, нещата като точка и запетая, скоби, и други тайнствени детайли, които на пръв поглед, просто не са изобщо интелектуално интересни и са склонни да се начин от някои фундаментално разбиране. По отношение на структурата за подкрепа напред, осъзнах, че това инструмент, CS50 обсъждане, което ще бъде свързано на курса уебсайт по-късно днес, е онлайн дискусионен форум в която ще бъде в състояние да задават въпроси един от друг и персонал, и тя също е инструмент, както ще видим следващата седмица, , че ще използваме доста integratedly в работното време, както добре. Всъщност, работно време започва в понеделник, и честно казано, първо седмица на работно време е доста нисък ключ. Аз не мисля, че ще намерите Scratch всичко, което недостъпни. Това е доста очевидно, както ще видим, и какво от това Ще го използваме за днес е да се извлече някои от основните идеи, които ще продължават да съществуват в целия останалата част от семестъра. Но след понеделник, в 20:00 чрез 23:00 ще бъде работно време в Annenberg над мозъка почивка. Секциониране двамата ще започне тази вечер, така че по някое време тази уикенд, отидете на cs50.net/section, и вие ще се зададе редица въпроси. Сред тях, как бихте описали вашия ниво на комфорт от днес? Не е трудно, бързо правило, както от хората, в които кофа. Това е просто вид на нещо, което вероятно знаете, ако сте са сред тези, които са по-удобни или по друг начин. И сега, за сваляне. Спецификация проблем в стаята за тази седмица, както стандарт , така и хакерски издание е на линия както на cs50.net, сега. И ще видите, че първият от тези издания, стандартното издание всяка седмица, е придружена от нещо наричаме репетиция код, сесия, водена от един от най- курс на преподаване стипендианти, за да ви преведе през, осигуряват съвети за да получите определен път, когато става въпрос започване на наборите тези проблемни. Така че с всеки един от тези проблемни определя, ако сте някога искат за себе си, откъде да започна, да започнете с тях за сваляне. И в действителност, позволете ми да Ви представим Zamyla Чан, това преподаване на годината човек, който ще бъде водещ всеки един от тези сваляне. Zamyla? Аплодисменти] ZAMYLA CHAN: О, здрасти, всички. Моето име е Zamyla. Аз съм младши учи инженерство в Winthrop House. Но се опитвам и се вписват в колкото се може повече курсове по компютърни науки като мен може, поради което аз съм много развълнувана да бъде водещ година на сваляне. За сваляне, за мен, са съществена част от моя CS50 опит. По време на репетиция, за всеки р-ние ще мине през проблема заедно, погледнете проблемите, вид на разделете ги в управляеми ухапвания. Аз ще ви дам съвети, техники, за да се и започването на работа. Надявам се да ви видя всички в сваляне. Ако не можете да го направи лично, а след това моля, направете мелодия в онлайн. Дейвид Малан: Отлично. Благодаря ви, Zamyla. Така че осъзнават, че за сваляне са, наистина, в петък следобед, но това е умишлено от дизайн, така че дори и ако предпочитате да не присъства клас в петък следобед, видеоклипове ще бъдат още по-бързо през през уикенда. Така че осъзнават, че cs50.net ще бъде на Zamyla за сваляне. И че има днешна дата и време, 15:00, Harberd зала 104. И някои от учебните сътрудници също са готови някои забележки за вас в задочно, за да ви дам малко от гледна точка на техния опит и от CS50 беше. Така че, ако бихме могли да намаляване на осветлението само за миг, аз ви дам някои от персонала CS50. JACKSON STEINKAMP: Взех CS50 миналата година като първокурсник в падне и абсолютно взривиха съзнанието ми. Аз никога не са приемали класове преди програмиране, и никога да не дойде с всеки компютър наука опит на всички. И точно, чух шумотевица около класа и реши да го вземе. Юлия MITELMAN: Беше наистина забавно, наистина ангажиране. Аз все още, на този ден - Аз просто наскоро видях дискета, която Давид ни даде на първия ден на лекцията. Бях го окачи на стената ми. Това е може би малко изперкал, но аз на моя висеше стена по време на класа като напомняне за това колко е готино. Травис падения: Това е толкова неудобно. JACKSON STEINKAMP: Компютърни науки е нещо, което трябва да се опита, дори ако не сте един за традиционните науки. Това е собствения си опит, и CS50 ще се уверете, че сте и чрез него с истинска армия от TFS. ALI NAHM: го взе като първокурсник, и така съм много нови приятели. Аз също се запознават с цялата тази концентрация и цялото училище на инженерството, и така аз силно го препоръчвам и да ви приветствам с добре дошли CS50 нашето семейство. Янив YACOBY: CS50 просто ни учи как да се използват инструменти , които са широко достъпни. Ти просто се нуждаят от лаптоп, се нуждаят от уеб браузър, и ви трябва да се научат да пишат някакъв код, и наистина може да се изгради кокетни неща. KAREN Xiao: Това е толкова готино да бъде в състояние да направи нещо и има хора, които да го използвате и хората го виждат, и това е , което наистина обичам за това. ТИМ Маклафлин: - чувство за общност, мисля, че в това разбира се, повече от всеки друг Разбира се, че предприетите досега. Ти не си просто като друг - не сте попълване друго изискване. Вие не сте просто ще лекции и ще секция. Но правиш тон на неща, които са за програмиране и за технология, но тя не наистина се чувствам като един клас по-голямата част от времето. Травис падения: И на първия ден, те раздаваха торта, и Бях незабавно продадени. JACOB PRITT: Безплатен бонбони и пица. ZAMYLA CHAN: - независимо от нивото на интереса Ви, мисля, че CS50, ще се забавляват и ще бъде интелектуално стимулирани. MARK GROZEN-Смит: Това е винаги страна в клас, и това е купон всяка вечер работи на п-в стаята. JACKSON STEINKAMP: Всеки път, когато завърши проблем набор, ще се почувствате сякаш сте завършен проект. MELISSA NIU: Това беше първата година, и бях готов пазаруване. Имах моите четири класа готови, и аз бях в Аненберг. И аз се удрят в един приятел, и той казва, хей, аз пазаруване този клас, наречен CS50, трябва да дойдеш с мен. В крайна сметка да го приемате, които попадат, и след този клас, помислих, че може би аз ще съм на по-малки в CS. Но тук съм, три години по-късно, все още учи компютър науката и действително го правят като основен, и аз обичам всеки миг от него. ROB BOWDEN: Нямам представа. ALI NAHM: Да видим. MELISSA NIU: лудост. SPEAKER 1: Имам чувството, че щях да бъда много клише. Предпочитам просто да кажа, харесва, страхотно. Янив YACOBY: Достъпност. JACOB PRITT: Безплатен бонбони и пица. Травис падения: Не мога да включа клас, който раздава торта. ТИМ Маклафлин: енергични. Vipul SHEKHAWAT: Essential. ROB BOWDEN: Нека ме мислят за отговор. Мисля, че имам нещо. О, Господи. Да, името ми е Роб Боудън, а това е CS50. Аплодисменти] Дейвид Малан: Добре, така че нека започнем да нарисувам картина на посоката, в която можем да отидем и да се въведе тази концепция тук известен като pseudocode. Така че pseudocode не е програмен език към себе си. Това не е нищо техническа сама по себе си, но това е просто нещо като общ начин да изразиш себе си доста точно, доста алгоритмично, по-скоро процедурно, но без се налага да се притеснявате за какъв език сте изразяване себе си инча Това е някакъв модел на английски и езиците за програмиране с , които се случи да бъде запознат, така че можем да започнем написването на този вид на нещо като отидем. И в действителност, Йосиф, бих могъл да ви заеме на сцената, за да бъде писар тук? Съм отишъл напред тук предварително и забравил да сложи на някои чорапи днес, и това ще бъде сред нашите най- абсурдни примери. Сега, имам нужда от теб тук. Ще направя чорапи част. Така че тук имаме малко подложка нулата. Това е буквално TextEdit в Mac. Ние не сме всъщност се случва да напишете изпълнима програма, но ние просто ще започне скициране pseudocode базирана на някои от съвета, която предоставяте на мен тук. Така че тук ми е купчина чорапи у дома. Аз нямам чорапи, когато се събудя сутрин, а ние сега трябва да се напише програма, алгоритъм на видове, с които за да получите тези чорапи на краката си. И по пътя, нека да видим дали можем да се спъне или срещнете, някои от идеите, че започваш да се наложи да започне мисли за много по-сериозно, когато програмиране да не би вашите програми не се държат доста по предназначение. Така че седни тук. Имам купчина чорапи. Какво е първото нещо, което разумен човек би направя, когато целта е да се сложи по един чифт чорапи? Някой да ми даде една стъпка, и само една стъпка. Да? АУДИТОРИЯ: Наведи се. Дейвид Малан: Наведи се, добре. Втора стъпка. Втора стъпка. АУДИТОРИЯ: Вземете си чорап. Дейвид Малан: Вземете си чорап. Добре, така че леко двусмислие тук, и това е една от първите пречки, че ние би трябвало да умишлено срещнете тук. Това е малко двусмислен, така че изберете си чорап. Добре, аз ще взема този, но с компютър, реализира само за малко, няма да имат този вид човешки инстинкт само изберете най-близкия. Ще трябва да започнем, не след дълго, изразявайки себе си по-прецизно. Добре, втората стъпка е да изберете си чорап. Ние ще го взема. Стъпка три. В гърба. АУДИТОРИЯ: Намери съвпадение на двойка. Дейвид Малан: Намери съвпадение на двойка. Добре, така че това е добре. Аз трябваше да избирам този чорап. Така че целта е да се намери съвпадение чорап, сега, но това, което означава това? Разумен човек, който много прилича на сряда, когато аз просто знаеше как да се намери на Майк Смит в телефонния указател, просто вид отиде с инстинктите си. Но тук, това е очевидно това чорап тук, но на компютъра няма да бъде толкова инстинктивна. Компютърът ще има колекция от бита, тъй като ние обсъден в сряда, а това са организирана по някакъв начин в паметта. Но въпросът е, че компютърът разполага само с възможността да погледнем на нещата едно по едно, а в действителност, дори и ние хората - въпреки че тя се чувства като погледна надолу и раздвоен секунда по-късно, че знам къде е чорап, мозъкът ми и очите ми вероятно е бърз обезмаслено на тези чорапи, и след това захапва на този въпрос. Така че, ако бъдем по-съзнателно сега като компютър, Как мога да намеря това съвпадение на двойка? Е, ние имаме, за да превъртите. Имаме може би контур над тази бъркотия чорапи на етаж, с което аз да кажа нещо подобно ЗА ВСЯКА чорап, вдигни И ако същата форма и размери като другия, тогава точка, точка, точка, ние ще продължим историята. Така че за всеки чорап, така че вземете тази. Да проверя, това е равна на тази. Не е, така че остави страна. Тогава обхождане отново. Този равен? Не, не е, така че аз го оставим настрана. Е това? Не. Този ли? Не, и така нататък. И накрая, надявам се, ще се сблъскате с този чорап тук. Така че, ако това е същата форма, размер, вземете го. И сега, какво ще бъде следващата ни стъпка? Да? ПУБЛИКАТА: Определяне на дясно от ляво. Дейвид Малан: Добре, да се идентифицират наляво и надясно, така че За щастие, този вид на строителните работи. Малко симетрични, или току-що ги носи по този начин. Добре, така че аз съм намираха правилен. И сега, преди да продължим, искам да отбележа, Йосиф правиш тук като вид подкован програмист. Така че отново няма никой начин за това, но след само номерацията на линиите, Джоузеф вече е започнала да се направи това вид на вдлъбнатина. В действителност, това е много често срещана конвенция в програмирането, , при която, когато правиш нещо повтарящ се, примка стил, тъй като намеквате с английската фраза "За всеки чорап "Конвенцията в pseudocode и, както ще видим, нормални езици за програмиране, е просто да тире. Хит бар пространство на няколко пъти удари Tab ключ или нещо подобно, така че вложени под "ЗА ВСЕКИ чорап" е парче неща, които трябва да направите, като в резултат на тази линия. Така че това е всичко, което е предаване на семантично. Сега, междувременно, "Ако това е същата форма и размер," факта, че "Take" е разчленена допълнително просто означава, това е единственото нещо, което трябва да направите, ако това условие, ако този клон, разклонение на пътя, в действителност е вярно. Така че сега тук, ние сме на стъпка четири, да се идентифицират наляво и надясно. Съм идентифицирани право. Дай ми стъпка пет. И технически, наистина бихме могли да се обадите За всяко нещо - вероятно ще трябва да изброи всички редове, ако е отиваме да направите това. JOSEPH: недоловим] Дейвид Малан: недоловим? Добре, добре, добре, ние ще го направим по твоя начин. Добре, така че стъпка пет, как да го направим правото чорап? Как да се процедира при следващото тук? Да? ПУБЛИКАТА: Вдигнете десния крак. Дейвид Малан: Вдигнете десния крак, Добре. Стъпка шест? Бързо. Да. ПУБЛИКАТА: Намерете отворения край на чорапа. Дейвид Малан: Добре, отворения край на чорапа. Толкова добре. Така че тук, честно казано, много често инстинкт да бъде само на десния чорап, но това също е доста неясно. Освен компютъра или човек знае какво точно означава това, това няма да бъде да се изпълни това, така че тук, имам откриването на запаса. Стъпка седем? ПУБЛИКАТА: Докоснете пръстите на краката. Дейвид Малан: Touch пръстите. Добре, сега отиваме - Добре, аз ще съм тук да се вземат някои свободи. Благодаря. Стъпка осем? Поставете върху чорап. Добре, сега аз, мисля, че сме достатъчно близо, за да сортирате вземат това у дома. Добре, така че това върви нагоре. Ще взема някои свободи какво означава всъщност. Поставете чорап. Добре, сега стъпка девет? ПУБЛИКАТА: Сложете крак. Дейвид Малан: Благодаря ви. Стъпка девет, крак, и сега, можем да повторим. Така че, вероятно, ние вече могат да отидат в стъпка 10 и казват идентифицира левия чорап, но това е вероятно вече направено. И така, аз да сортирате повторете тези стъпки. Но този вид повдига въпроса. Преди последния път, когато исках да повторя нещо, ние го итеративно, отново и отново, за Всеки цикъл, така да се каже. Би ли имало смисъл да се използва една линия, за да се справят двете на ляво и на дясно чорап? Защото тя се чувства като тези операции са доста много идентични с изключение на факта, че човек започва тук, и един започва тук? Ли верига, или просто продължаваме писане стъпки 10, 11 и 12? ПУБЛИКАТА: Loop. Дейвид Малан: Добре, така че контур. Аз всъщност би могъл да каже, просто продължавай. Така че, защо това е така? Е, това е всъщност първият на нашата не-очевиден дизайнерски решения, и в действителност, един от показателите, с които ние ще започнем да се оцени, за себе си и за вас, е колко добре проектирана, че е качеството на програмата. Направили ли сте минималния размер на работата, необходима за да си свършите работата най-бързо, както по отношение на времето си или по отношение на времето за работа на компютъра? Колко операции е необходимо да се изпълни? Така че, може би, това е една възможност за една линия, защото веднага след като започнете копиране и поставяне, както Иосиф ефективно ще започнете да правите в момента, вие сте вид си губите време, и сте двойно изразителен. Но в същото време, те наистина са само две специални случаи, наляво и надясно. Като има предвид, че и преди, че може да има 10 или 20 или повече чорапи в купчина, то определено има смисъл, а не да има 50 линии на код казва проверите този чорап, след това на следващия, след това на следващия. Ето, това е малко по-малко очевидни, и аз ще предложи че можем да отидем така или иначе. Бихме могли да имат тази линия, въпреки че само контури два пъти, или бихме могли просто да копирате и поставите само малко тук, за да си свършите работата. Но тази програма е бъгав, така да се каже. Тя може да има някои грешки, грешки, или ъгъл случаи, така да се се каже, че ние всъщност не се предвидят. Нищо не се обърка този път, но какво би могло да се обърка по време на изпълнение на тази програма? АУДИТОРИЯ: Вие нямате никакви чорапи. Дейвид Малан: Така че не може да има чорапи, каквато. Така че нека да разгледаме този случай ъгъл. Така че, ако бихме могли да превъртате назад до първата стъпка, така че първата стъпка е наведе, така че проверките. Втора стъпка, вземете си чорап, но след това намери съвпадение чорап, идентифицират прав. Ние цял куп предположения, и това е, честно казано, защо програмата понякога катастрофата. Ако сте програмист, са направили някои предположения, като сигурни, че ще бъде чорапи или сте сигурни, че ще ходи да бъде памет, в компютъра, със сигурност ще да бъде диск останало свободно място на твърдия диск - Е, ако правите тези предположения, и това не е, в действителност, реалност, кой знае понякога какво компютъра смяташ да правиш? И понякога, когато получите въртяща се топка плажа или замразени Windows или нещо подобно, това е именно защото някои програмист не е очаквала тези така наречени ъгъл случаи. Какво друго би могло да се обърка в тази програма? Да? АУДИТОРИЯ: Вие не разполагате с десния крак и левия крак. Дейвид Малан: Добре, не може да има и на десния крак и левия крак, и така тази програма не може да бъде универсално приложимо. Други? АУДИТОРИЯ: Може да се качват сирак чорап. Дейвид Малан: може би щях да вдигна сирак чорап, така че несходни чорап, че просто все още няма братя и сестри, защото съм я е изгубил, е разкъсан, това е в прането все още, или други подобни. Така че, не е наистина са обработени. Да? АУДИТОРИЯ: Може би вече имате чорапи. Дейвид Малан: може би съм вече имат чорапи. Аз всъщност не проверите. Ако не го направите има чорапи, след това продължете да се направи ред една и две. И това може да се случи. Заспиват с чорапите и други подобни, така че , че твърде много разумна ъгъл случай. И може би един друг? ПУБЛИКАТА: чорап е отвътре навън. Дейвид Малан: Така чорап е отвътре навън, така че ние не грешка проверка, по-кратко. Ние не проверите дали състоянието на света е, както ние очакваме. Ние не проверите дали намерихме това, което търсим. И въпреки, че това е вид смешен пример участието на чорапи, в края на деня, това е точно нещо в начина на мислене, трябва да имате докато пишете програми, дори и в Scratch, както и в C, JavaScript, PHP, защото в противен случай, вашите програми ще бъдат представени еквивалентна на тази предене плажна топка или просто да се даде неточни резултати. Толкова много благодаря тук, за да ни писар Йосиф. Аплодисменти] Дейвид Малан: Добре, така че това, което е в Всъщност, една компютърна програма? Е, нека хвърлим един бърз поглед към представител тук. Така че това е програма, написана на език, наречен C. C доста стари тези дни, но много от по-новите езици са изградени в началото на това. Всъщност, PHP, един от уеб-ориентирани езици, които ще към края план, се е това, което се нарича преводач, програма, която е написана на C, но повече за това в продължение на много седмици, считано от сега. Но тази програма, и това е, какво означава да се напише програма, макар и много прост. Ние имаме някои доста загадъчен синтаксис, но можете да предположите, дори ако никога не сте програмирани преди, какво прави тази програма. Всъщност, аз не знам какво ФОРМАТ е, но отпечатате сигурност внушава идеята за отпечатване нещо. И така да е, тази програма е в крайна сметка да отпечатате думите "Здравей, свят". Сега, дали имате Mac или PC или Linux компютър, коефициенти , най-малко, ако сте изтеглили някои свободно наличен софтуер, бихте могли да пише програми за собствения си лаптоп от доста време. На Mac OS, например, я има тази програма, наречена Терминал, който идва с Mac, това е обикновено в Utilities папка, и като цяло се отваря черен и бял или бял и черен прозорец, в който имате подкани, в който можете да въвеждате команди. Така че това е действително напомня на това, което компютри преди да бъдат графичен потребителски интерфейси, GUIs, дойде. Сега, в Windows, може да има подобен механизъм под формата от командния ред. Но това, което аз отивам да правя тук е отворен, нека да кажем, TextEdit отново, така че същата програма са използвали за pseudocode преди малко, и аз отивам да вървим напред и напишете първата си програма. Включете stdio.h, каквото и да означава, вътр основната невалидни, каквото и да означава, и след това в средата тук, ФОРМАТ ("Здравей, свят".). И след това затворете цитирам, близо скоба, точка и запетая. Сега отивам да вървим напред и удари само Command-S. Отивам да вървим напред и освен това като hello.c, така че конвенцията в в света на програмирането на C е името на файла точка в. Отивам да съм сложил в директорията на Джон Харвард, тук, щракнете върху Запиши, а сега аз ще отида на това терминален прозорец, което отново е тази черна и бяла ред къде мога да изпълнява команди. Мога да стартирате програми, като напишете името си, а не от двукратно щракване върху иконите в общоприетия смисъл на думата. Но това, което е около C е, че език като C първи в тази форма, нещо, наречено изходния код. Нещо, което изглежда малко като английски, но е определено по-малко като английски от pseudocode Йосиф преди малко. Това е малко по-тайнствена. Изглежда, да се следват някои модели или правила. Фактът, че имам фигурни скоби, точка и запетая, цитати, ъглови скоби, се чувства като компютър дойде с тази вид език. Но ако отида сега, това терминален прозорец, може да работи команда, която ще конвертирате, че изходния код е нещо, наречено обектен код. Това ще да конвертирате английски като синтаксис, за да нули и такива, същите сортове от нули и единици ние говорихме за сряда. Сега, аз отивам да стартирате команда, наречен звъня. Повече за това в следващите седмици да дойде, но това е програма с което мога да конвертирате hello.c в куп от нули и единици. Сега, аз стартирайте тази команда. Аз тичам звъня, а след това каза, че се работи по това досие нарича hello.c, което съм създал преди малко, и нищо не изглежда да се случи. Но наистина, ако мушкам около дома ми директория, ще видите че това глупаво име програма a.out сега съществува. Това е просто име по подразбиране за програма, когато пишете с C. Ние може да замени това в крайна сметка, но a.out е името на програмата, аз просто превърнати в нули и единици. И сега, че това е нули и единици, моя Mac, в този случай, или вашия компютър с Windows, може да разбере тези битове, тези нули и единици. И така, когато ударих Въведете виждам "Здравей, свят!" Но това е малко бъги. Не съм съвсем казват "Здравей, свят: въздух: - jharvard". Въздухът е името на моя компютър. Jharvard е името на акаунта, така че това, което е ясно пропуснат от програмата? Някакъв нов ред. Не е уцелил еквивалент на Въведете или връщане, и това отново е доказателство за факта, че компютрите могат да само това, което ви казвам тях да направят. А фактът, че не казах на компютъра преместите курсора на следващия ред - добре, това със сигурност не е просто ще го направя надменно за мен. Така че, ако се върнем към моята програма, и аз казвам \ N - Така \ N, тъй като ние скоро ще видите, е начинът на странни неща като символ за нов ред, неща които иначе биха били резултат от удря въведете ключ. Но за сега, просто знам, че удря Enter ключ само нашия код изглежда странно, така че светът реши, нали знаеш какво, за да пазят нещата хубава, за да я държи на един ред, нека да само да кажа \ N представлява нов ред. Нека запазете файла ми, върнете се в терминален прозорец и повторно a.out Enter. Все още бъги, но защо? ПУБЛИКАТА: недоловим] Дейвид Малан: Да, така че аз трябва да го компилирате. Така че, за да се състави програма, просто означава, че превръщат от източник код, за да обектен код, изходен код на нули и единици. Сега, самият факт, че ударих Запиши в тази TextEdit не е на тези нули и единици, защото първо трябва да сигнално звъня хей, аз съм се променил тези редове код, изходния код. Трябва да се регенерира a.out. Не се появява нищо да се случи, но в един компютър, в командния ред, така да се каже, когато нищо не се случва, това обикновено означава, всичко е наред. Когато нещо се случи, това означава, побъркани, като цяло. Така че нека сега да a.out, а всъщност и сега, имам "Здравей, света. " И сега, какво да кажем за тези нули и единици? В случаите, когато в действителност са тези? Е, аз наистина не може просто вид на мушка около много ефективно. Нека отворят TextEdit. Ето a.out. Нека вървим напред и отворете това, и това е очевидно това, което ми програмата изглежда. Така че аз съм отворен, не hello.c, но a.out. Но това всъщност не е това, което наистина е моята програма. Ясно е, че това е някакъв вид букви от азбуката. Виждам нули и такива, но това е защото a.out е програма. Нули и единици, но TextEdit, както подсказва и името, това е само, като Notepad на Windows, е просто текстов редактор, така че е объркващо всички тези нули и единици, както че те са били, какво? ASCII символи. Така че се припомни в сряда, ние просто дойде с тази произволно картографиране на номера, или бита на писмата на азбука и символи, препинателни знаци и други подобни. Така TextEdit, че това е текстов редактор е погрешно тълкуване тези модели от нули и единици, които се очаква да бъдат печат думи, като "Hello, World". Показването им ASCII, и затова тя изглежда малко разхвърлян. Сега, има някои съвети на коректност тук. Забележете, ако аз се подчертае, има намек за действително "Здравей, света ", така че някъде в тази програма изречението, което написах. Но нека вървим напред и сега виждам с друга програма. Това не е една, ние ще използваме, че често, но тя също така идва с на Mac и ще бъде в рамките на CS50 уред. Позволете ми да отида напред и да се отвори с една програма, наречена XXD. Обратно, в деня, повечето програми са наречени доста загадъчно, и така тази тенденция продължава. Но б означава, плюе тази програма като двойна. Не го стартирате. Покажи мен като нули и единици, и това е C програмирате ние просто пише. Сега, аз, като човек тук, аз честно казано нямам идея какво представляват тези различни модели от нули и единици. Обратно, в деня, аз с перфокарти или други подобни, би всъщност трябва да погледнем какви са тези различни модели на 01111000, всъщност представляват. Или по-лошо, ще трябва да направи пробиване или създаването от тези модели от нули и единици. Но за сега, на вярата, че CPU, Intel Inside, така че да се каже, вътре в нашите компютри тези дни, знае как да интерпретира тези нули и единици. А някои нули и единици означават печат. Някои от нули и единици означава възпроизведе звука. Някои от нули и единици означава въвеждане от потребителя на клавиатурата. Има всички видове различни модели, но за щастие, като хора, само по принцип трябва да се тревожи за програмиране тази доста по-високо ниво. И в други класове CS може да се рови надолу дълбоко и да потърсите неща като тези нули и единици, или още други неща, все пак. Така че сега да промениш това. Да се ​​движат много бързо от C и да се премести нещо малко по-вкусно, малко по-вълнуващо, в това анимации и звуци и други подобни, че можем да се върнем явно ни е избягал в тази доста примитивно интерфейс. Така че това една и съща програма в C могат да бъдат представени сега в тази език за програмиране, наречен Scratch, както следва. Това е еквивалентът на този здравей свят програма, написана на този пъзел език парче стил наречен Scratch. Така че нека да вървим напред и да се отворят тази програма. Той отново призова Scratch. Това е свободно достъпен, и това е едно и също нещо, ние стартира днес. Така че това тук е Scratch, и е разделена на няколко различни парчета. На най-горния десен ъгъл, ние имаме т.нар. Етап и наистина, това е мястото, където бисквитките извършва само преди малко. И на този етап са нещата, наречени спрайтове, герои или предмети или лица. Всъщност няма значение как мислиш за тях, но те са програмируеми, движими вещи, и в този случай, това програма, която пише нашият студент има двойка на натруфен "бисквитки", няколко кръгли бисквитки, цял куп сърца, цял куп очила. Поради това, той или тя е в състояние да програмирате всяко едно от тези отделните герои поотделно. Сега, какво означава да програмирате тези символи? Е, нека да вървим напред и кликнете върху тази лявата ръка бисквитка и преминете към горния ляв тук. В горния ляв ъгъл на екрана си, сега е така наречените скриптове площ. Това е нещо като на празен лист, първоначално, върху която мога влачите и пускате пъзел парчета, които, честно казано, не точно това, което казват. В самото начало на тази купчина от парчета от пъзел е думата При щракване Зелен флаг, и ако не сте забелязали преди, начина, по който аз започнах тази бисквитка песен кликване, буквално, зелен флаг. Така че пъзела в горния ляв означава, че когато кликвания на зелен флаг, се пристъпва към следните неща. Сега, това, което са бисквитка пристъпя да направя? Аз наистина не знам как да се тълкува това все още, но бисквитка очевидно си бразда до нула, след това го чакаше три секунди, а след това го променя своята група, а след това го Изчака секунда, след това го промени Groove Обратно към едно. И тогава това всъщност прилича малко на бъг, не бива да трябва да промени своята бразда отново и отново, освен ако не е се променя другаде, но тази поредица от стъпки, е това, което е диктува поведението на тази бисквитка. Така че нека да превъртате назад, а не търсите нещо чак толкова сложни, все още. Позволете ми да отида напред и да отидете на File, New, и да получите чисто. Така че сега, аз наистина имат празно място скрипт, празна сцена, Scratch подразбиране спрайт, и в горния ляв на екрана си имам палета на всички техни наличните парчета от пъзел. И ние няма да мине през почти, че много от тези неща днес, защото, отново, най-много са очевидно, но ние ще опитайте да ги категоризирате и изтъкват приликите с тези бъдещи езици, на които ние ще се потопите. И в горния ляв тук е първият Когато Зелен флаг щракване, така че нека ме завлече това тук, намалите малко. И ако щракнете върху зеления флаг, всъщност нищо не се случва, защото Не са приложени никаква логика, всяко изявление, така да се каже, за да че зеленият флаг, така че да ме пусне до категории тук. Аз съм в момента в контролния категория. Аз вместо да отида до Изглежда категория, и тук има цял куп неща, които казват Кажете, Мисли, променя цвета си, костюми Switch. Така че можете да направите глупави неща с костюми и звуци и други подобни. Нека вървим напред и само Say Say, а сега забележите, като плъзнете и пуснете това парче пъзел, той ще иска да засуче в съответната форма. Така че, когато отида напред и пусна на моя мишката, те се заключват заедно, а сега ако отида тук и щракнете върху зеленото знаме, котката е в действителност кажа здрасти, защото това, което е вътре на тази бяла кутия. Скоро ще видите, че това е това, което се нарича "бяла кутия аргумент или параметър. Това е начин на промяна на поведението на, в този случай, пъзела, но ако искам да кажа точно това, което казах преди, Say Hello, света, вече може да се върне тук, щракнете върху игра, и "Здравей, свят" е това, което каза. Така че ние буквално програмиране. Това не е всичко, което непреодолими на програмата, но най-малко това е малко по-привлекателно, отколкото нещо, което изглежда, пръв поглед, като тази. И ние можем много бързо да получите още по-изразителен защото в Scratch, както и на други езици, има всички видове отчети, не просто да кажем или отпечатване нещо, но можете да направите неща, като чакане, както току-що видяхме с бисквитка, известен брой секунди. Можете да играете звуци в околната среда на надраскване като се може по-нормален звук за игра на компютърна програма. Можете да проверите какво се наричат ​​булеви изрази. Така че сега, нека да започнем да добавите към нашия инструментариум някои терминология че всъщност се отнася до примера, че Йосиф и аз го направих тук с чорапи. Така че твърдения са само фактически констатации. Направете това. Директивата за спрайт, или ме човека, да направим нещо. Булев израз е нещо, което има стойност, стойността на така наречената истина, че е или нула или един, невярна или вярно, изключване или не или да. Няма значение как мислиш за това, но това е двоичен състояние. Тъй като Нейт обсъдиха във видео в сряда, две различни неща. Така че в Scratch, булеви изрази се случи да гледам като тези сини обекти тук, и в този случай, въпросът марка означава, че сте задаване на въпрос. Котка или спрайт, докосване на показалеца на мишката? Така че това е само един пример на Scratch блок, който ще да ни позволи да проверим "да" или "не", е на мишката да докосвате Спрайт на екрана? И това може да бъде полезно, ако действително искат да правят неща с мишката. В допълнение към булеви изрази, имаме неща като е на мишката надолу, така че може да открие този вид поставят под въпрос, както добре. Ние можем да направим математика, ако искате, и има всъщност по-непреодолими употреби за това, отколкото просто чисто аритметика, както ще видим. Псевдо случайността и вашата програма да мислят или се държат по различен начин, въз основа на някои привидно произволни стойности, и след това имаме неща като булеви изрази като "И". Така че, ако наистина искате да проверите две стойности, ще видим в Scratch, че ние действително може да проверите дали това е вярно и това е вярно. Например, в случай на чорапите ми, мога да съм в самия край зададе въпроса, ако е на левия чорап и десния чорап е, напусна. Всички сте прави за ден, така че ще бъде възможност за това. Така че нека да вървим напред и да се опитват да сглобят някои от тях заедно и отивам в няколко примера убедителна от това. Така че нека да вървим напред тук и да се отворят някои от примерите , че винаги ще бъде на сайта на курса, както и отвори hello2. Така че в hello2 тук, ние имаме програма, която прави няколко неща, но това не е толкова ефективно, колкото бихме могли. Така че тук се казва "Здравей, свят" за една секунда и след това чака за секунда. И тогава го прави отново, и след това го прави отново. Така че, ако щракнете върху зеления флаг, Scratch казва "Здравей, свят. Здравей, свят. Здравей, свят. "И това е очевидно кандидат сега за подобрение. Каква е леко подобрение, надявам се, можем да сега ако Scratch подкрепя идеята? Някакъв вид на линията. Някои видове на повторение, сега, би било хубаво, така че позволете ми да всъщност се опитват. Нека отида и да се премести. Така предупреждение може да се отделят блокове толкова лесно, колкото можете да добавите към свържете ги. Нека отида под контрол, превъртете надолу тук, и наистина, има този пъзел парче тук, Повторение и завинаги и Завинаги Ако Така че има няколко начина за изразяване на примка конструкции Scratch. , Вероятно искате, не е вечно, защото аз само искам това да се случи три пъти, но най-вероятно се повтаря. Така че нека да ме завлече Повторете тук, плъзнете и да го пуснете и сега вместо да каже "Hello, World" три пъти, нека ме завлече това парче пъзел тук. И въпреки че това не изглежда да се поберат, програмата е умен достатъчно, за да осъзная, че ще нарасне до запълване, така че това е форми, които имат значение, а не на абсолютния размер. Нека ме промени повторение на три, а сега ме пусна напред и плъзнете Изчакайте една секунда там, както и. Това ще да щракне, както добре, така че сега аз отивам да плъзнете тези момчета тук и просто да ги изхвърляте, защото аз не се нуждаят от тях повече. Нека я увеличите и натиснете зеленото знаме сега, и ние имаме същата програма, но, както прогнозира преди, по-добре , защото можете да си представите колко е зле тази програма ще получите, разбира се естетически, ако трябваше да копиране и поставяне, копиране и поставяне, или плъзгане и пускане на същите дяволски неща отново и отново. Сега, просто казва неща на екрана, печат на екран, не всичко наистина е толкова вълнуващо, така че нека отворим трето вариации тук. И сега, както ще видите, това бързо ще ви подразни - [Мяу] Дейвид Малан: - но тя също е вид сладко. [Мяу] Дейвид Малан: Добре, толкова по-добре, и ние със сигурност може да използва тази същия преход от трясък в примка структура, но нека да е по-интересно, все още. Нека вървим напред и да се отворят 1/4 вариация тук, където съм вземе нещата една стъпка по-нататък. Така че, според това, глупаво въпреки че това е първата поглед, каква е тази програма ще правиш? Това ще мяу веднъж. Защо? Е, едно е, доколкото знам, винаги е по-малко от две. Не е понятието за случайност. Аз бях буквално хард-кодиран с една и две, но това е Например сега при реално използване на булев израз. Много прилича както Иосиф в неговата pseudocode, вдлъбнатина, ако намерите еднакви чорапи и след това направете следното, тук имаме израз Ако някой е по-малко от два, тогава - и в действителност дори имат малко вдлъбнатина където лилаво е леко отстъп надясно - Тогава започваш да играе на звука мяу. Сега, в този случай, че едната е винаги по-малко от два, така че това е вид загуба на състояние. Но ние ще бъдем в състояние, както ще видим, за да включите други неща в тези контейнери, в които една и две. Така че нека сега преминете към Например пет от тези няколко 'Здравей!' и поглед към това, което тази програма ще направи. Така че сега, в изречение на английски, как прави това програма се държат? АУДИТОРИЯ: Meows половината от времето. Дейвид Малан: 1/2 Мяу от времето, така че това е начин на предаване на една много проста идея. Макар и да се случи да се използват някои неравенства тук в някои цифри, това наистина е само programmatical начин, прецизен начин, че ако монетата идва глави, отидете напред и мяу. Или обратно, ако монетата идва опашки, не мяу. И в този случай, как ние изразяваме това? Ще изберете произволно число от 1 до 10, а ако това брой е по-малко от 6, давай напред и мяу. И как влезе тук? Отново добре, забележете, просто плъзгане и пускане и неща ключалки на място. Така че нека сега да видим дали тази случайност работи. Нека отида напред и кликнете върху зеленото знаме. [Мяу] Дейвид Малан: Добре. [Мяу] Дейвид Малан: Добре. Добре, добре, така че имаме глави, главите, опашките ефективно. Опашки. [Мяу] Дейвид Малан: ръководители. [Мяу] Дейвид Малан: Отлично. Той винаги е неловко, когато само статистически ли, ставам лош тичат и всички глави, и програмата всъщност не работи както вие ще се надявам. Но този път, той е работил и като че ли имаме, ако сме направили безкраен брой пъти, 50% коефициент. Сега пак не всичко, което интересно, просто котки мяу, така че нека да видим дали не можем да преминете това малко по-нататък тук във версия шест. Така че сега, имаме наистина досадно версия - [MEOWS на всеки няколко секунди] Дейвид Малан: - и това е, което е известно, като цяло, като безкраен цикъл. Така безкраен цикъл, в този случай се чувства зле. Това определено ще започне да звучи лошо, и все пак безкрайно вериги не винаги са лоши. Сещате ли се вписва в контекста на компютърни програми, където бихте всъщност искат безкраен цикъл? Да? ПУБЛИКАТА: Когато искате да проверите състоянието. Дейвид Малан: Добре, когато искате да продължите да следите състояние? Като какво? ПУБЛИКАТА: недоловим] Дейвид Малан: Добре, добре, така че ако сте имали някаква програма, някои вид на нещо, автоматизация на дома, където искате постоянно да монитора е нещо по случая. Са светлините? Са светлините, защото може би имате таймер, и искате да отидете, може би трябва да се направи нещо отново и отново. И в действителност, говорейки на таймери, някой от вас, които са часовника на вашия компютър или дигитални часовници, това е безкраен цикъл. Тя продължава да актуализира часа, защото тя е постоянно проверка и проверка и проверка на времето се промени, и ако е така, о, Боже мой. Часовникът е окончателно променен. Тя трябва да покаже тази стойност за вас. И докато повечето от време безкрайни цикли са грешка, или най-малкото лошо решение за дизайн, понякога го правят имат своята стойност. Е, нека по-нататъшен напредък тук, за да hello7. Така че сега програмата ще се получи малко по-интерактивни. Нека я увеличите тук, и отново, това е, което е хубаво около нулата. И ние ще го използвате, за да бъде ясно, Scratch, само днес и в постави проблема следващата седмица. Но в понеделник, ние се потопите в C. В тази програма тук, го прави, завинаги, следното: Ако пипат показалеца на мишката - сега, кой е контекст тук? Е, и забележете, че който е избран тук в дъното право е котката, спрайт, така че тези скриптове, това програма, се отнася за него конкретно. Така че, ако тази котка е докосване на показалеца на мишката, а след това ще за да играете тази и изчакайте две секунди, и след това повторете nauseum реклама. Така че нека да вървим напред и удари игра. Нищо не се случва, но ако искам да домашни любимци котка сега, мога просто. [Мяу] Дейвид Малан: очарователни. [Мяу] Дейвид Малан: Добре, по-малко досадно, но също така получава тъпа, така че нека да се движат и да видим дали не можем да се инжектира малко повече логика. Това беше пример седем. Тук, в пример осем, ние ще въведе ELSE състояние. Толкова много прилича буквално разклонение на пътя, в който можете да отидете наляво или можете да отидете право, състояние, в програмирането език като Scratch, или както ще видим, може да ви позволи да отидете в една или друга посока чрез АКО ОЩЕ изграждане. Така че, съвсем буквално, ако докосване показалеца на мишката, това ще играе някакъв звук, иначе ще играе този друг звук, мяу. Сега, ако може да се направи извод от името на тези звуци, можете да се досещате какво тази програма е предназначена да апелирам нагоре идеята. Тази котка и мяуче щастливо. [Мяу] Дейвид Малан: И заживели щастливо, но не доста искали да бъдат докосвани. [Рев] Дейвид Малан: Така че сега ние имаме котка, който ще ти крещя. Добре, добре, един последен пример с котки тук, и нека откритата версия девет от това тук. Така че сега, ние имаме следващата най-дразнещия звук, че мога да , така че ние имаме морж или морски лъв тук кой ще направете следното. [SEAL КОРА] Дейвид Малан: Добре, така че това ще продължи, докато не разбера как тази програма работи. Така че този път, това животно има две азбуки, и това, което е Интересното тук е, че тези скриптове ще изпълни паралелно. Така че, тъй като и двете старт с един зелен флаг кликнали, това е като да отидеш по този начин, и двете програми започват да я пуснете веднъж, дори ако те са примка завинаги. Така че в горния скрипт, имам някаква логика. Какви функции, които осигуряват там? [SEAL КОРА] ПУБЛИКАТА: недоловим] Дейвид Малан: Ако това е какво? [SEAL КОРА] АУДИТОРИЯ: Ако заглушен до нула, това ще да продължа да играя звучи. [SEAL КОРА] Дейвид Малан: Добре, добре. Така че, ако заглушен, каквото и да е, това оранжево нещо е нула, След това играе морски лъв звук и си мисля "О, Здравейте, "за две секунди. Сега, аз не знам какво заглушен, но нула внушава идея на невярна или изключване. Така че, ако заглушен е фалшива, така че, ако не е заглушен, продължа да играя на звука. Добре, добре, как да се забрани това нещо? Е, нека да погледнем на втория скрипт там. Вторият сценарий казва заглушен до нула. Забележете, това е също оранжево, така че това, което Scratch се е цветове блокове в същия нюанс, ако това е вид на логически свързани. Така че просто, като заглушава отгоре е оранжево, така че тук е изключен посочени в оранжево блок. Но това е променлива задачи, така че просто искал алгебра, имате х и у и Z, в програмирането имате променливи, но те са като цяло - нека пауза за момент и да разбера как да се спре този лай. Как мога да направя това? [SEAL КОРА] Дейвид Малан: Добре. Спря. Добре. Така че просто по алгебра имате променливи X, Y и Z, но в програмиране, като променливи, като например X, Y и Z е те гледат накриво, защото те не са изобщо изразителен. Те нямат каквото и да било семантично значение, така че в най- програмни езици, променливите могат да имат пълно пълноправни имена или думи или фрази, като заглушен, да кажем, това, което те правят. Така че тази втора скрипт също слушаше завинаги, и тя каза, ако ключа, Space клавиш от клавиатурата, е натиснат, въпросителен знак. Така че има състояние с булев израз, който е ще отговори на въпрос вярно или невярно, тогава вътре в него, ако е натиснат клавиша за интервал И Ако заглушен е нула, заглушен до един, в противен заглушен до нула. Така че това разклонение на пътя, и забележете как съм вложени две, ако условията, е начин за проверка е Space Bar натисна, защото ако това е така, или искате да отидете този един или друг начин. И как мога да се обръща стойността на заглушен? Трябва да проверя е нула? Ако е така, го превръщат в един, друг да го направи нула до следователно превключвате неговите две държави. Добре, така че ние имаме някои от тези фундаментални конструкции. Имаме булеви изрази, и да реализират също, те са не всички непознати. В действителност, тук е бърз скрийншот от Харвардския курса CS50 търговски инструмент, и всеки сайт там, че има квадратчетата и капка спадове наистина, през цялото това време, използва Булеви изрази. В този случай, ако щракнете върху квадратчето за отметка до разбира се, по-голяма или равна на 4,5, или една и съща до факултет, се посочва булев израз. Покажи ми курсове, за които този израз е истина. Или надясно, не е в противоречие с курсове съм като, ако това се проверява, тогава отговорът е "да", вие искате да проверите това условие, друго, което искате да го игнорирате. Така булеви изрази са нещо на всички около, но когато Слагаме ги в условия, дали ако условията, АКО Иначе, или дори може да се симулира по-дълбоко нива, АКО Иначе, ако друго - така че това е нещо на трикомпонентна състояние. Можете да отидете по този начин или по този начин или по този начин. Можем да поддържаме гнездене неща, които трябва да отидат в различни посоки. Така че Scratch има тези вериги, сякаш завинаги. Той има тези функции, като Повторете 10, някои краен брой пъти. Ние имаме възможност за задаване на променливи, така че в този случай Съм заявил, например, променлива наречена чорапи. Съм инициализира с 0, и това е още една посока бихме могли да са тук с Йосиф, с което може би аз просто да следите колко чорапи имам и прекратява програмата, когато стойността на тази променлива е 2. Това би било друг начин на сортиране за обобщаване, че проблема и прави нещо отново и отново. Е, да вървим напред и сега се въведат няколко нови неща. Така че тези от вас, с предварително програмиране опит знаем, че много езици имат масиви, или вектори или списъци и наистина, Scratch има нещо подобно, също. Така че нека да видим, ако не можем да вземе нещата до следващото ниво. Ако имам възможност, сега, с тези парчета пъзел добавите нещо, като дума или номер на променлива, не мога да започват да се натрупват нещата. И това всъщност е доста уместен за неща като игри, ролеви игри, където ще си вид се разхождат някои фентъзи свят, събиране на неща, бране на нещата, печелите точки, или нещо подобно. Може би искате да следите на някакъв вид на опис и наистина, това е един от нашите бивши ученици тук направихме с нещо, наречено Fruitcraft RPG. Така че нека да вървим напред и да се отворят това нещо тук, и в Fruitcraft, ние имаме този свят най-отгоре. Така че нека да отида напред и кликнете върху зеленото знаме. Известие горе в ляво е някакъв вид на опис. Това се осъществява в Scratch, тъй като това, което ще се обадя масив или списък, а сега имаме малко анимация. Така че просто ние започнахме по-рано с тази история за любовта на бисквитка, и след това напредна до котки и морски лъвове, сега ние можем да имаме неща, които са още по-интерактивен. И тази малка синя човек, аз може да започне да се придвижват си малък дом тук. Така че изглежда така, сякаш има изход тук, така че аз съм с помощта клавишите стрелки, нагоре, надолу, наляво надясно. И сега съм навън, така че нека е това, което имам тук. Прилича на портокал, и наистина, веднага след като се докоснете оранжево, той се цопнала в моя списък. Ако отида тук, за да черешите, сега аз имам нещо друго в моя списък. А всичко това е хубаво и сладко, но мисля за това как, сега, това се изпълнява. Е, ние имаме тази идея на списък, и това е очевидно парче пъзел, който просто кажете какво искате да добавите към него, добавете портокал, череши. Сега, това, което е тази малка синя човек прави? Е, той е спрайт. И вероятно, оранжево и череши - самите те са отделни спрайтове. И с условията в булеви изрази, студент вероятно е бил в състояние да изразят Ако синьо човек е докосват череши и след това добавите думата череши, за да си инвентара и после също така да скриете череша спрайт. Така че под предния капак, вероятно все още е череша спрайт. Току-що го казах да се превърне в ефективно невидим. Сега, ако спирай тук, можем да направим това проксимална нещо, където мога да отида и прочети знака. Така че, ако син човек докосва знак, можем да имаме този блок Say точно като котка ни говори с думи, здравей, по-рано, "Got някои плодове? Принеси на плодове място. "Добре, така че сега, както изглежда, Аз имам посоки. Мога да отида тук до мястото на плодове, да се подредят с вратата. Сега, аз съм тук. Мога да отида на човека на гишето. Той открива, че съм близо до него, така че не трябва да бъдат доста идентично докосване, и аз спечелих играта. Така че ние имаме Fruitcraft RPG. Така че можем да направим нещата още по-напреднали от това. Можем да добавим звуци. Можем да добавим псевдо случайността. Можем да добавим сложност. Нека вървим напред тук, и вместо да направя това сам, Нека ви покажа един от по-сложни становища имаме миналата година от определен човек на име Блейк. Можем ли да имаме един доброволец, който е удобно да се показва на камера и е за игра на игра? Какво ще кажете за там? Хайде нагоре. Добре, така че играта, че имате само несъзнателно доброволно избра да играе - Аплодисменти] Дейвид Малан: - е нещо от недалечното минало, наречена "Frogger." Как ти е името? Renda: Renda. Дейвид Малан: Redna? Renda: Това е като Бренда с б. Дейвид Малан: Добре, Renda. Дейвид. Приятно ми е да се запознаем. Така че тук в "Frogger," и ако можем да усилвате звука малко, вие сте този малък зелена жаба на дъното. Можете да използвате, надясно, нагоре и надолу, и целта ви е да пресече улицата, пресече реката, и докосването на лилия подложки най-отгоре. Оу. Още един тон - ремонтирам, нали? Нека хит спирка. Никой не видя това. Аплодисменти] Аплодисменти] Дейвид Малан: Да. Много добре направено. Отлично, благодаря ви. Така че имаше Frogger. Сега, че знаете какво сте намерила в себе си, още един доброволец за различен играта предоставени от друг студент. Искаш ли да дойде? Как ти е името? Ричард: Ричард. Дейвид Малан: Ричард. Добре, Ричард, качвай се. Аплодисменти] Дейвид Малан: Вие имате нещо, което ще прозвучи запознати скоро, така че тук са инструкциите. Така че в момента, някои парчета пъзел ще да се придвижите нагоре от екрана, които изглеждат вляво или надясно, нагоре или надолу. Вие ще трябва да удари клавишите със стрелки, по такъв начин, че то да съответства на тези парчета от пъзел, които се редят на опашка контейнери на върха. Така че, когато видите стрелка наляво и тя линии с левия стрелка, удари лявата стрелка. Може да започне. [MUSIC - "силен" Kayne WEST] Дейвид Малан: Добре, големи аплодисменти за Ричард. Аплодисменти] Дейвид Малан: Много добре направено. Благодаря. Аплодисменти] Дейвид Малан: толкова забавно и, на пръв поглед, нещо смущаваща, тъй като това може да се приложи нещо като привидно сложни, тъй като това, да разбере, че студентът не и просто напишете всичко това едновременно. Вместо това, можете да съборят проблем, тъй като на пръв поглед сложна , тъй като това в много по-малки парчета, а това също е ще бъде тема. Най-лошото нещо, което можете да направите в написването на програмата в почти всички език е да седне, наистина се вълнувам, напишете цялото проклето нещо, и след това просто се надявам, че тя работи с път, когато приключите с писането. -Скоро процеса на програмиране по принцип трябва бъде много съзнателно, много повтарящ се, с което просто определят много малки стъпки за себе си, хапки иска да отхапе, и така, че имате тези здравия разум проверки, малки жалони, които могат да се срещнат. И тогава ще се изгради на върха на тези, за да се създадат повече сложни неща все още. Така например, как бихме могли да отида за прилагане на игра като тази? Ами, честно казано, аз със сигурност ще започне само с издръжка на един клавиш във времето. Нека просто осъществяване на подпомагането за лявата стрелка. Така студентът имал по някакъв начин да създадете в Photoshop, или в Scratch себе си с помощта на малък графичен редактор, стрелка, която прилича на тази в ляво там, просто сив контейнер. Тогава ученикът трябваше да разбера какво X, Y координира да я тури, където да го поставите в прозореца. 0, 0 е тук, така че трябва да разбера броя на пиксели или точки, за да се компенсира тази стрела от горната част на екрана. И тогава веднъж, че е на мястото, програмата ви не всъщност направи нищо все още, така че след това се нуждае от втора спрайт, например зелена стрелка, която също сочеща наляво, и вие След това трябва да започнете да пишете някои скриптове за него. И забележите, може би, че тези неща започнаха да идват различни скорости и в различни цветове места, и това е така, защото студентът използва малко псевдо случайността. И от псевдо случайността, аз просто означава, изберете номер между нещо и нещо, защото можете да започне да картата неща, като, ако броят им е между една и пет, добре, нека да направим нещо зелено. Ако е между 6 и 10, нека направим парче пъзел червено. Така че стига да има начин за генериране на някакъв вид случайността, могат да вземат решения на базата на това случайността. И аз продължавам да казват псевдо случаен, защото има малка мръсна тайна. Компютърът не може да излезе с произволни числа. Те могат само да правят това, което сме казали, защото те са изкуствени устройства. Те не могат просто предполагам като ние, хората, се чувствам като можем. Компютърът трябва да се направи нещо математически, за да призовават илюзия на математическото число, понякога с помощта на текущия ден от време, като принос към разберете какво номер, за да се върне, но повече за това друг път. За сега, просто знам, че ние може да генерира псевдо случайността. Така че след като имам възможност за лявата стрелка, за да започнете се появяват по различно време и при различни скорости, а след това Мога да се върна и да добавите някои от тях, ако условията. Ако това Спрайт докосва другия, и стрелката за наляво е натиснат бутон - така на три условия в този случай. Мога да използвам тази и блок може би, в този случай - След това искам да вървим напред и да увеличите резултата. И на върха, имаме резултат, ние имаме Страхотно, Cool, Good, и Бу. Така че има очевидно пет променливи, че този студент използва, за да следите на тези различни показатели. Така че в краткосрочен, крайният резултат е невероятно. Това е забавно, че е забавно да се играе, ангажиране, но това не е когато студентът започна. Той или тя започна в много по-малък набор от стъпки. Така че какви са някои други градивни елементи, които можем тъкат в тези програми? Е, там има друга концепция в повечето езици, Изтъркайте сред тях, известен като теми. Така компютър всъщност не може да се направи няколко неща време, не по-малко от обикновено. Напротив, компютър като цяло има само един процесор, и дори че компютрите са супер бързо и, следователно, създават илюзията да прави няколко неща наведнъж - проверка на пощата си, миг съобщение, отпечатване на документ - наистина, компютърът е просто скача от печат, за да IMing електронна поща, назад и назад и назад и толкова бързо напред, че ние бавно загряващ хора просто не осъзнават, че всъщност движение на тези програми малко в даден момент. Сега, това е малко бяла лъжа тези дни, защото в днешно време, много нашите компютри са това, което се нарича многоядрени, така че има един процесор, но няколко ядра, която е нещо като с няколко процесора. И така понякога, компютри наистина може да направи няколко неща в даден момент, но като цяло в рамките на програмата, програми разчитат на тези неща, наречени теми. Така че нишката е нещо като миниатюрна програма, която може съществуват успоредно друг миниатюрен програма и може да работи паралелно, или най-малко може да работи с илюзията, че те едновременно. Така че Scratch подкрепя тези неща, наречени теми. Можете да имате няколко скриптове, изпълнявани наведнъж, ние просто с морски лъв, и това ни позволява действително да след това има взаимодействия между тези спрайтове. Нека вървим напред тук и издърпайте нагоре, нека кажем, конци и играете тази, както следва. Имаме две спрайтове, всеки от които ще видим има само един сценарий. И забележите, изглежда има някаква интелигентност в котка в това, защото той е все по-близо - [Рев] Дейвид Малан: - и по-близо до малката птица. Е, как е операционната птицата? Е, нека хвърлим един поглед към птицата първо. Птицата скрипт каза, че когато се кликне върху зеленото знаме, отидете на х се равнява на отрицателна 115 и у равнява на 150. Така че аз просто реших, произволно място, където исках птица да започне, и аз просто го пльосна там по подразбиране. Тогава завинаги, ако не докосва котка, така че това е по-различно вид на примка конструкт, а същата идея, това отново и отново и отново. Така че, стига да не докосвате котка, се движат три стъпки, и ако сте на ръба, скача, където това е нещо като отражение в смисъл, билярд. Ето как птицата се движи вид на пръв поглед случайно, но това е само, защото това е подскачащи стените в този случай. Сега котка, междувременно, е вид измама. Котка, когато се кликне върху зеленото знаме, да, започва в някакво място, на произволно място - поне отчасти по мотика случаен зелен блок там - и то завинаги, ако докосване на птицата, възпроизвеждане на звука лъв, и след това спира скрипт. Така че, когато казах, прекрати, или да излезете преди, има пъзел Scratch, че просто ще убие програмата на точка, защото това е вид логично направи. Но иначе, тук, забележете, какво ще се случи. Точка към птиците и да се премести с една стъпка. Така че този момент към птицата е вид предимство на котката има в това, че е насочване на движещия птица, и ние можем да направи тази програма още по-интересно. Вместо да се движат една стъпка по време на цикъла на процесора, на удари звън на камбаната, така да се каже, нека вървим напред и се движат, да речем, пет стъпала наведнъж като котка. Щракнете върху Изпълни, а сега той наистина го намира бързо. Ако удвои до 10 стъпки, вид отива точно за него. Сега ние можем да дадем на птицата, може би малко предимство. Нека да отидем до птицата и да каже, вместо да се движи на три стъпки, нека да преминем него 30 стъпки. Но той все пак попадна в крайна сметка. Така че тук имаме две теми. Хвърлен в самото начало с две азбуки и две спрайтове, но идеята на други езици е, че можете да пишете по същество, твърде много програми като тази и имат наистина ги управляват, или въображаемо, паралелно. Сега, има и тази концепция в програмиране, познато като събития, и това е нещо, което няма да видите в C, език, известен като C. ние ще го видим към края на семестъра от уеб програмиране, когато ще се въведе JavaScript и идеята за изграждане на уеб страници, които са динамични и да си взаимодействат с потребителите. Така че в този случай, ние имаме един много прост пример на две спрайтове, момче и момиче, всеки от които имат съответната теми, но някак си тези две са взаимно общуване чрез на нещо, наречено събития. Така че нека да вървим напред тук и да се фокусирам върху сценария на момчето, който изглежда по този начин. При зелен флаг кликнали, завинаги направете следното. Ако ключът Space, или бар пространство се притиска, да речем Марко в продължение на две секунди, това е чисто естетически екран, малко балонче за реч, но след това излъчва. Така че предаването е друг Scratch парче, което е представител на класа на функционалност в програмирането , която позволява на различни програми, различни нишки, -комуникират по някакъв начин да изпрати съобщения един на друг. Приемане на парче хартия в клас е нещо на ниска технологии еквивалент. Така че излъчва събитие. Мога да изпратя това съобщение, а събитието дума е напълно произволно. Scratch понякога има тези капки спадове, така че аз просто дойде с произволна дума като събитие, защото сега, това, което момчето не прави когато натиснете клавиша е той излъчва това събитие. И ако погледнем в сценария на момичето, си сценарий е супер просто, защото всичко, което трябва да направи, не се действа, когато зеленото знаме е кликнал. Тя е предназначена за действие, когато тя получава оферта, край на цитата, "Събитие", и в този момент, тя слуша, следователно, за т. нар. събитие отново и отново. Веднага след като тя получава този случай, тя ще да крещи Поло за две секунди. И така, вие може би да се направи извод от това какво точно следващия резултат ще бъде. Позволете ми да щракнете върху зеления флаг. Нищо не се случва, защото имам нужда да правя това? АУДИТОРИЯ: Space Bar. Дейвид Малан: Space бар. Момче казва Марко, момиче казва Polo. Но това не е трудно кодирани по себе си. Това е между комуникацията между скриптове, така че сега имат способността да се направи още по-сложни програми, където тези две са някак между общуването. Така че, в каква посока да вземем това? Е, в проблем набор 0, наистина, целта е да се да се забавляват с устойчиво на надраскване. За хакер издание, ще вместо да се забавляват с по- усъвършенствана версия на Scratch BYOB Build Вашите собствени блокове, но идеята е същата. Вие ще бъдете в състояние - Да, това е било умишлено. Той дойде от Бъркли. BYOB е версията хакер издание на тази, но и двете демографията, стандартно издание и издание хакер, така, гол в ръката за следващата седмица е много просто да се потопите в дълбоко, да си цапат ръцете с програмиране, и да нещо интересно, нещо интерактивно, нещо артистично, нещо забавно да всъщност докаже, така че до края на седмицата, ще имате проект, не само за първото CS50 pset, но ще има малко нещо, което можете да покажете в Annenberg приятели или дори семейството си, като го качите на сайта на Масачузетския технологичен институт. И така, както казах в сряда, ние очакваме 90% от класа, обикновено, за да се направи стандартните издания. Осъзнайте, че има и този пазар за тези от вас, които в противен случай биха могли да намерят себе си малко отегчен с основите и наистина искате да се потопите в и занаятчийски видение, което вече с предварително фон в тази по-приятелски околната среда. Така че, остави ме да извадя един друг пример, че един от бившият ни студентите тук и да разкаже малко нещо чрез песен. Това същия начин, както това играе, мисля за това как да отида за осъществяването на тази програма се използват точно същите тези градивните блокове, малко на псевдо случайността, и малко позната песен. Ако можехме да усилвате звука само малко? [MUSIC - "Това е Raining Men" The Weather Girls] Дейвид Малан: Това е за CS50. Ще се видим в понеделник. Аплодисменти]