[Powered by Google Translate] [ROCK MUSIC] [MUSIC - "Happy Together" želvy] DAVID Malan: Dnes, začneme náš průzkum základy počítačové vědy a naší zavedení, Nyní, na umění programování, z nichž je to jen jeden příklad. Ale ve stejném duchu řešení problému, vím, že CS50 tradiční Puzzle den je zítra. Pokud jste dosud RSVPed pro tuto akci, můžete přejít na cs50.net/rsvp. Můžete si přinést týmy dvou nebo tři nebo čtyři. Ty budou mít za úkol s problémy, jako je ten, který viděl tam na začátku. Všechny nové problémy v tomto roce, pokud jste si vzala loni, a vy bude mít šanci pak vyhrát nějaké pohádkové ceny. Mezi nimi, Wii a některé dárkové poukázky a podobné výrobky, to vše při visí ven s CS50 studenty a spolužáky a pizza a Facebook. Takže o tom až zítra, pokud byste chtěli. To je tedy CS50, pro ty z vás, k nám na poprvé. A vím, že tento kurz je zvláště určena dostat si prostřednictvím tohoto předmětu k jeho konečnému, na kterém místě tě budou mít nejen pochopení těchto základy počítačové vědy, ale budete mít Tento velmi praktické dovednosti soubor, který pak můžete vzít zpět do vlastní oddělení, ať už je to technické vědy, aplikovaná matematika, fyzikální vědy, přírodní vědy, nebo podobně. Opravdu, co je tak vzrušující o počítačové vědě těchto dny je to, že je tak použitelná pro všechny druhy polí. A i když dnes, budeme jen poškrábat povrch velmi tradiční programovací jazyk známý jako C, sejdeme se místo se podívat na něco, co nazývá Scratch, něco s které tato cookie love story byl proveden jeden z vašich předchůdci v minulých letech, vyprávět příběhy, vytvářet hry, vytvořit interaktivní umění, a skutečně začít balit OUR mysl kolem některé ze základních pojmů, které základem programování, ale v kontextu, jak uvidíte, že je to mnohem méně děsivé, že je mnohem méně tajemný, než uvidíte zanedlouho. A uvědomit si, taky, pro ty z vás, jen se k nám tento semestr, věty, na kterých jsme skončily středeční přednášku, to není tak důležité, kde jste skončili ve vztahu k vašemu spolužáci v této třídě, ale pokud vy, od semestr konce v týdnu 11, skončit ve vztahu k sobě přímo v tento den. Takže bez dalších okolků, je to také stojí za zmínku, že ty méně pohodlné, jsou někde mezi, jsou také tím, že návrh tohoto kurzu, není na újmu naproti sobě ty pohodlnější přichází do této třídy. Jak uvidíte v průběhu příštích týdnech, máme různé dráhy pro různorodé zadní pozadí, profily pro ty, méně pohodlné, mnohem pohodlnější, ty někde mezi. Jak uvidíte tento víkend a příští týden ve dvou variantách většina problémových sady v obou standardním a hacker vydání tak že všichni mohou self-vybrat na cestě, se kterou jsou nejvíce pohodlné. Takže dnes jsme se ponořit do tohoto programování jazyk volal Scratch. Je to grafický programovací jazyk, a přesto má Stejné vlastnosti některých jazycích vyšší úrovně budeme prozkoumat později v semestru, mezi nimi C a JavaScript a PHP. Ale bude to, které nám umožní vyhnout se některým z rozptylování brzy na syntaxe, věci jako středníky, závorky, a další tajemné detaily, které na první pohled, prostě nejsou vůbec intelektuálně zajímavé a mají tendenci být ve cesta z nějakého základního porozumění. Pokud jde o nyní nosné konstrukce před sebou, si uvědomil, nástroj, CS50 Diskuze, který bude propojen na kurz je webové stránky ještě dnes, je on-line diskusní fórum v které budete moci klást otázky navzájem a zaměstnanců, a je to také nástroj, jak uvidíme příští týden, že budeme používat poměrně integratedly v úřední hodiny také. Opravdu, úřední hodiny začíná v pondělí, a upřímně řečeno, první týden úředních hodin je poměrně nízká klíč. Já si nemyslím, že zjistíte Scratch všechno nepřístupná. Je to spíše intuitivní, jak uvidíme, a tak co budeme používat pro dnes je aby část základní myšlenky, že bude, pak přetrvávají po celou dobu Zbytek semestru. Ale od pondělí v 20:00 prostřednictvím 23:00 bude úřední hodiny v Annenberg přes mozku přestávce. Krájení dva budou začínat dnes večer, takže někdy to víkend, přejděte na cs50.net/section, a budete se položil řadu otázek. Mezi nimi, jak byste popsat vaše úroveň pohodlí jako dnes? Není těžké, rychlé pravidlo, kdo je v které vědro. Je to jen jedna z těch věcí, které už asi víte, pokud jste patří k těm méně pohodlný nebo jinak. A teď, návody. Problém set specifikace pro tento týden, a to jak standardní a hacker vydání podobně, je on-line na cs50.net již nyní. A uvidíte, že první z těchto vydáních, Standard Edition každý týden, je doprovázen něčím, co volat kód návod, zasedání vedl o jednoho z Samozřejmě je výuka chlapi, aby vás, poskytují tipy na, a vám se stanoví zvláštní cestu, pokud jde zahájením těchto problematických sady. Takže s každou z těchto problémů zapadne, pokud jste někdy chtěl pro sebe, kde mám začít, začnete s nimi návody. A ve skutečnosti, dovolte mi představit Zamyla Chan, tento Letošní učení chlapík, který bude probíhat každý jeden z těchto návody. Zamyla? [APPLAUSE] ZAMYLA CHAN: Oh, ahoj, všichni. Mé jméno je Zamyla. Jsem junior studuje inženýrství v Winthrop domě. Ale snažím a hodí se do co nejvíce předmětů počítačové vědy jako já mohou, což je důvod, proč jsem opravdu nadšený, že se vede tento Letošní návody. Průchody, pro mne, bylo podstatnou součástí mého CS50 zkušenosti. Během návodu, pro každou p-set, půjdeme přes problém sestavit, podívej se na problémy, druh rozdělit je do zvládnutelných kousnutí. Dám vám tipy, techniky, pro získání prostřednictvím a jak začít. Doufám, že se vám všem na návody. Pokud nemůžete dělat to osobně, a pak prosím naladit on-line. DAVID Malan: Výborný. Děkuji, Zamyla. Takže si uvědomit, že návody jsou skutečně, v pátek odpoledne, ale je to záměrně design tak, že i když bych raději navštěvovat třídy v pátek odpoledne budou videa být až všechny rychleji než víkend. Takže si uvědomit, že cs50.net bude všechno Zamyla je návody. A že je dnešní datum a čas, 15:00, Harberd Hall, 104. A některé z výukových chlapíků byly také připraveny některé poznámky, pro vás v nepřítomnosti, aby vám trochu perspektiva jako k čemu jejich zkušenosti přichází do a jít ven CS50 byl rád. Takže pokud bychom mohli ztlumit světla pro malou chvíli, dám vám některé zaměstnanců CS50 je. JACKSON STEINKAMP: Vzal jsem CS50 loni jako nováček v pádu, a to naprosto mi vyrazil dech. Nikdy jsem brát žádné programátorské třídy dříve, a nikdy přišel s jakoukoli informatiky zkušenosti vůbec. A právě, já jsem slyšel hlášky o třídě a rozhodl se vzít ji. JULIA MITELMAN: Bylo to opravdu zábavné, opravdu poutavé. I přesto, k tomuto dni - Nedávno jsem viděl, že jsem tu disketu David nám dal na našem prvním dnem přednášky. Jsem pověsil na zeď. To je asi trochu hloupý, ale já jsem se držel na mém stěna v třídě jako připomínka toho, jak v pohodě to bylo. TRAVIS DOWNS: Je to tak trapné. JACKSON STEINKAMP: Počítačová věda je něco, co by se měli snažit, i když nejste jeden pro tradiční vědy. Je to jeho vlastní zkušenosti, a CS50 se ujistěte, že jste podporována i přes to s jeho skutečným armádou TFS. ALI NAHM: Vzal jsem to jako nováček, a tak jsem udělal hodně nových přátel. Také jsem dostal představen celý tento koncentraci a Celá škola inženýrství, a tak vřele doporučuji a vítám vás na naší CS50 rodině. Yaniv YACOBY: CS50 jen vás naučí, jak používat nástroje které jsou široce dostupné. Potřebujete k tomu jen notebook, budete potřebovat webový prohlížeč, a vy Potřebujeme se naučit psát nějaký kód, a můžete opravdu stavět elegantní věci. KAREN XIAO: Je to prostě tak cool být schopný dělat něco a lidé používat a mít lidé to vidí, a to to, co jsem opravdu rád o tom. TIM McLaughlin: - smysl pro komunitu, myslím, v tomto Kurz více než kterýkoliv jiný Samozřejmě, že jsem si vzal tak daleko. Nejste jen s jinou - nejste plnění další požadavek. Nejste jen tak na přednášky a jít do sekce. Ale děláte spoustu věcí, které jsou všechny informace o programování a vše o technologii, ale to není opravdu pocit třídy většinu času. Travis DOWNS: A na první den, že rozdávali dort, a Byl jsem okamžitě prodal. JACOB Pritt: Free cukroví a pizza. ZAMYLA CHAN: - bez ohledu na vaše zájmem, myslím, že že CS50, budete se bavit, a budete mít intelektuálně stimulován. MARK GROZEN-SMITH: Je to vždy osoba ve třídě, a to strana každou noc pracovali na p-set. JACKSON STEINKAMP: Pokaždé, když dokončíte problému sadu, můžete bude pocit, že jste dokončil projekt. MELISSA NIU: Byl to první rok, a já jsem byl udělal nakupování. Měla jsem čtyři třídy připraven, a já jsem byl v Annenberg. A já narazit na přítele, a on říká, hej, já jsem nakupovat tato třída nazývá CS50, a měli byste jít se mnou. Skončil přičemž to ten pád, a po této třídy, jsem Myslel budu moll v CS. Ale tady jsem, o tři roky později, stále studuje počítač věda a vlastně dělá to jako major, a miloval jsem každou moment to. ROB BOWDEN: Nemám tušení. ALI NAHM: Pojďme se podívat,. MELISSA NIU: Craziness. SPEAKER 1: Mám pocit, že bych byl velmi klišé. Já bych jen říct, jako, úžasné. Yaniv YACOBY: Dostupnost. JACOB Pritt: Free cukroví a pizza. TRAVIS DOWNS: Nelze zapnout stanoví třídu, která rozdává dort. TIM McLaughlin: Energetic. Vipul Shekhawat: Essential. ROB BOWDEN: Nech mě přemýšlet o odpověď. Myslím, že něco mám. Oh, bože. Jo, jmenuji se Rob Bowden, a to je CS50. [APPLAUSE] DAVID Malan: Dobře, takže pojďme začít malovat obraz směru, ve kterém můžeme jít, a pojďme představit tento pojem zde známý jako pseudokódu. Takže pseudokód není programovací Jazyk sám pro sebe. Není to nic technického sobě, ale je to prostě tak nějak obecně způsob, jak vyjádřit sám sebe docela přesně, docela algoritmicky, docela procesně, ale bez se museli starat o to, co jazyk, to vyjádřit yourself in Je to nějaký model angličtiny a programovacích jazyků s které se stalo, aby se seznámili, takže můžeme začít psaní takové věci, jak jsme jít. A ve skutečnosti, Joseph, můžu si půjčit vás na jevišti se písař tady? Já jsem šel napřed sem předem a zapomněl dát na některých ponožky dnes, a to bude mezi naše více směšné příklady. Teď tě potřebuju tady. Udělám ponožky část. Takže tu máme trochu poznámkový blok. To je doslova TextEdit v systému Mac. Nejsme vlastně bude psát Runnable program, ale jsme jen tak začít skicování z pseudokódu na bázi na některé z rady, kterou poskytnete mi tady. Takže tady je můj hromadu ponožek doma. Nemám žádné ponožky na to, kdy jsem se probudila ráno, a nyní je třeba napsat program, algoritmus druhů, s nimiž aby se tyto ponožky na nohou. A po cestě, uvidíme, jestli budeme zakopnout, nebo v případě, některé z myšlenek, které budete muset začít přemýšlet o mnohem vážněji při programování lest vaše programy se nechovají docela, jak bylo zamýšleno. Tak jsem si sednout tady. Mám svůj hromadu ponožek. Co je první věc, kterou rozumný člověk by , když cílem je kladen na páru ponožek? Někdo mi o jeden krok, a pouze jeden krok. Jo? Diváků: sehnout. DAVID Malan: Bend dolů, Dobře. Krok dva. Krok dva. PUBLIKUM: Zvedněte ponožku. DAVID Malan: Zvedněte ponožku. Dobře, tak malý, dvojznačnost zde, a to je jeden z prvních kamenem úrazu, že bychom měli záměrně setkat zde. Je to trochu nejasné, takže vyzvednout ponožku. Dobře, vezmu tenhle, ale počítač, realizovat jen bit, nebude mít tento druh lidský instinkt jen vybrat nejbližší. Budeme muset začít, zanedlouho, vyjadřující sami přesněji. Dobře, takže druhý krok je vyzvednout ponožku. Bereme to. Krok tři. V zadní části. PUBLIKUM: Najdi si pár. DAVID Malan: nalézt odpovídající dvojice. Dobře, tak to je dobrý. Musel jsem si vybrat tuto ponožku. Takže cílem je najít odpovídající ponožku, teď, ale to, co to znamená? Rozumné lidské bytosti, stejně jako ve středu, kdy jsem věděl, jak najít Mike Smith v telefonním seznamu, tak nějak šel s jejich instinkt. Ale tady, je to samozřejmě tato ponožka tady, ale počítač je nebude tak instinktivní. Počítač bude mít sbírku bitů, jako my diskutovali ve středu, a to jsou organizovány nějak v paměti. Jde o to, že počítač má pouze schopnost dívat se na věci, jeden po druhém, a ve skutečnosti, i my lidé - i když to cítí, jako bych se podíval dolů a rozdělení sekundu později Vím, kde ponožka je, můj mozek a moje oči pravděpodobně se rychle sbírat těchto ponožek, a pak se západkou na jedné se jedná. Takže pokud budeme všichni mnohem promyšlenější nyní jako počítač, Jak mohu toto odpovídající pár? No, musíme iterovat. Musíme snad smyčce během tohoto nepořádek ponožky na patro níž jsem říct něco jako PRO KAŽDÝ ponožka, si to up, a je-li stejný tvar a velikost jako ten druhý, PAK dot, dot, dot, budeme pokračovat v příběhu. Takže pro každého ponožky, takže jsem vyzvednout tenhle. I zkontrolovat je to rovna této jedné. Není to, tak jsem si dal stranou stranu. Pak jsem iterovat znovu. Je to jedna rovná? Ne, to ne, tak jsem to dal stranou. Je to jeden? Ne. Tenhle? No, a tak dále. A pak konečně, doufejme, že se setkám tuto ponožku zde. Takže jestli je to stejný tvar, velikost, vezměte si ji. A teď, co by být náš příští krok tady? Jo? PUBLIKUM: Určete P zleva. DAVID Malan: Dobře, identifikovat vpravo a vlevo, tak naštěstí, že druh práce. Trochu symetrická, nebo jsem jen nosit jim tímto způsobem. Dobře, tak jsem identifikoval právo. A teď, než budeme pokračovat, dovolte mi, abych poukázat na to, co Joseph je dělal sem jako jakési veršované programátora. Takže znovu, není jeden způsob, jak to udělat, ale více než jen číslování linek, Joseph už začal dělat to druh odsazení. Opravdu, toto je velmi častý konvence v programování, kdy, když děláte něco iterativní, looping styl, as jsme z čehož vyplývá, s anglickým výrazem "PRO KAŽDÉHO ponožka, "konvenci v pseudokódu, a jak uvidíme, normální programovací jazyky, je jen odrážky. Hit mezerníku několikrát, narazí na klávesu Tab nebo podobně, tak, aby vnořené pod "PRO KAŽDÝ ponožka" je kus věcí, které musíte udělat, v důsledku tohoto smyčky. Tak to je všechno, co dopravní sémanticky. Nyní mezitím, "Jestli je to stejný tvar a velikost," Skutečnost, že "Take it" je členité dále jen znamená, že to je jediná věc, kterou byste měli udělat, pokud tuto podmínku, pokud je větev, která rozcestí, je ve skutečnosti pravdivý. Takže teď tady, jsme v kroku čtyři, identifikovat vpravo a vlevo. Identifikoval jsem pravdu. Dejte mi krok pět. A technicky, můžeme opravdu říkat PRO KAŽDÉHO věc - asi byste měli očíslovat všechny linky, pokud budeme dělat to. JOSEPH: [Neslyšitelné] DAVID Malan: [Neslyšitelné]? Dobře, dobře, uděláme to po svém. Dobře, takže krok pět, jak to děláme správnou ponožku? Jak budeme postupovat dál, tady? Ano? PUBLIKUM: Zvedněte pravou nohu. DAVID Malan: Zvedněte pravou nohu, Dobře. Krok šest? Rychle. Jo. PUBLIKUM: Najít otevřený konec ponožky. DAVID Malan: Dobře, najít otevřený konec ponožky. Tak dobře. Tak tady, upřímně, by velmi časté instinkt být jen kladen na pravém ponožky, ale i to je docela nejednoznačná. Není-li počítač nebo člověk přesně ví, co to znamená, to nebude provádět, takže tady, mám Buďte otevření populace. Krok sedm? PUBLIKUM: Dotkněte se prsty. DAVID Malan: Dotykové prsty. Dobře, takže teď jdeme - Dobře, budu se některé svobody zde. Díky. Krok osmý? Dejte na ponožce. Dobře, takže teď jsem, že jsme dost blízko, aby nějak přijmout tenhle doma. Dobře, tak to jde nahoru. Vezmu některé svobody s tím, co to znamená, skutečně. Dejte ponožku na. Dobře, teď kroku devět? PUBLIKUM: Dejte nohu dolů. DAVID Malan: Děkuji. Krok devět, dal nohu dolů, a teď, můžeme opakovat. Takže pravděpodobně, můžeme nyní přejít do kroku 10 a říct identifikovat vlevo ponožky, ale to je pravděpodobně už udělal. A pak se mohu nějak opakujte tyto kroky. Ale tento druh vyvolává otázku. Před, v poslední době jsme chtěli zopakovat něco, my udělal iterativně, znovu a znovu, FOR Každá smyčka tak mluvit. By mělo smysl používat smyčku, aby se zvládnout i levou a pravou ponožku? Vzhledem k tomu, že se cítí, jako jsou tyto operace jsou do značné míry totožné, s výjimkou toho, že se vychází zde a jeden Zde začíná? My smyčku, nebo budeme jen držet psaní kroky 10, 11 a 12? Diváků: Loop. DAVID Malan: Dobře, tak smyčka. Vlastně jsem mohla říct jen dál. Tak proč je tomu tak? No, to je ve skutečnosti první náš non-zřejmé rozhodnutí o návrhu, a ve skutečnosti, jeden z metrik, s nimiž začneme hodnotit, pro sebe a pro vás, Kvalita programu je to, jak dobře navržen to je. Už jste udělal minimální množství práce potřebné k si práci nejrychleji, ať už jde o váš čas nebo, pokud jde o počítače se systémem době? Kolik operací dělá to trvá spustit? Takže pravděpodobně, je to příležitost pro smyčce, protože jakmile začnu kopírování a vkládání, jako Josef účinně by začít dělat v okamžiku, jsi trochu plýtvání čas, a vy jste byl dvakrát expresivní. Ale zároveň, to jsou opravdu jen dvě speciální případy, vlevo a vpravo. A vzhledem k tomu dříve, mohl jsem mít 10 nebo 20 nebo více ponožky v hromada, to určitě dává smysl, že nemá 50 řádků Kód říká zjistit tuto ponožku, pak další jeden, pak další. Tady je to trochu méně zřejmé, a já bych navrhl že bychom mohli jít buď cestou. Mohli bychom mít buď tu smyčku, ačkoli to jen smyčky dvakrát, nebo můžeme jednoduše zkopírujte a vložte jen trochu právě proto, aby svou práci. Ale tento program je buggy, abych tak řekl. To by mohlo mít nějaké chyby, chyby nebo rohové případy, tak mluví, že jsme se opravdu předvídat. Nic se stalo tentokrát, ale co by mohlo být špatně Při provádění tohoto programu? PUBLIKUM: Nemáte žádné ponožky. DAVID Malan: Takže tam mohl být žádné ponožky tam vůbec. Takže pojďme se domnívají, že rohový případ. Takže pokud bychom se posunout zpět ke kroku jedna, takže krok jeden byl sklonit, takže sedí. Krok dva, vyzvednout si ponožku, ale pak zjistíte, odpovídající ponožky, identifikovat pravdu. Jsme trochu dělal spoustu předpokladů, a to je, upřímně řečeno, proč program, někdy selhání. Pokud, programátor, dělali určité předpoklady, jako jsou určitě tam to bude ponožky nebo jistě tam to být paměť ponechána v počítači, určitě tam děje být na disku vlevo na pevném disku - No, když uděláte tyto předpoklady, a to není, ve skutečnosti, reality, kdo ví, někdy to, co počítač je dělat? A někdy, když se dostanete na otáčející plážový míč nebo zmrazené Windows nebo podobné, že je to právě proto, že některé Programátor nepředpokládal ty takzvané rohové případy. Co jiného by mohlo jít špatně v tomto programu? Jo? PUBLIKUM: Vy nemáte pravou nohu a levou nohu. DAVID Malan: Dobře, nemusí mít oba pravou nohu a levou nohu, a tak tento program nemusí být všeobecně použitelné. Ostatní? PUBLIKUM: Možná jste zvedl osiřelého ponožku. DAVID Malan: Možná jsem zvedl osiřelého ponožku, tak non-matching ponožky, které právě nemá žádné sourozence, protože jsem ztratil, je roztrhaný to, že je to v praní stále, nebo podobně. Takže, i tak nebylo manipulováno. Jo? PUBLIKUM: Možná již ponožky. DAVID Malan: Možná již ponožky. Nechtěl jsem vlastně zjistit. POKUD nemáte ponožky, pak pokračujte k tomu linka jedna a dva. A to by se mohlo stát. Můžete usínat s vaší pokožky na a podobně, tak taky, velmi rozumné koutek případ. A možná ještě jedna? PUBLIKUM: ponožka je naruby. DAVID Malan: Takže ponožka je naruby, takže jsme udělali žádnou chybu kontrolu, v krátkosti. Nechtěli jsme zkontrolovat, zda stav světa je, jak očekáváme. Nechtěli jsme zkontrolovat, zda jsme skutečně našli to, co jsme hledali. A i když je to jakýsi směšný příklad zahrnující ponožky, na konci dne, to je přesně druh myšlení je třeba mít při psaní programů, iv Scratch, stejně jako v C, v JavaScriptu, v PHP, protože jinak budou vaše programy vykazují ekvivalent této předení nafukovací míč, nebo jen výnos nepřesné výsledky. Takže díky moc tady na našem písaře Josefa. [APPLAUSE] DAVID Malan: Dobře, tak co je v Skutečnost, počítačový program? No, pojďme se rychle podíval na Zástupce jeden tady. Tak to je program napsaný v jazyce nazvaném C. C je poměrně staré těchto dnech, ale mnoho novější jazyky jsou postaveny na vrcholu toho. Vskutku, PHP, jeden z web-centrických jazyků budeme použít k termínu ke konci, sám o sobě má, co se nazývá tlumočníka, program, který je napsán v jazyce C, ale o tom více v mnoha týdnů od této chvíle. Ale tento program, a to je to, co to znamená psát program, byť velmi jednoduchý. Máme nějaké docela tajemné syntaxi zde, ale můžete asi tušíte, i když jste nikdy naprogramovat před, co tento program dělá. Opravdu, já nevím, co printf je, ale tisk rozhodně vyvolává myšlenku tisku něco. A tak ano, tento program je v konečném důsledku bude tisknout slova "Hello, world". Nyní, ať máte Mac nebo PC nebo počítači se systémem Linux, kursy jsou, alespoň pokud jste si stáhli nějaký volně k dispozici software, mohli jste se psát programy na vlastní laptop pro docela nějaký čas. V systému Mac OS, například, tam je to program s názvem Terminál, který je dodáván s Mac, která je obvykle ve vašem Utilities, a to obecně otevře černá a bílá nebo bílá a černá okna, ve kterém jste výzvou, na kterou můžete psát příkazy. Takže je to vlastně připomíná to, co počítače bylo před grafickým uživatelským rozhraní, GUI, přišel. Nyní, ve Windows, máte podobný mechanismus v podobě z příkazového řádku. Ale co budu dělat, je zde otevřít, řekněme, TextEdit znovu, takže tentýž program, který jsme používali pro pseudokód před chvílí, a já jdu dál a napsat můj první program. Patří stdio.h, ať to znamená cokoliv, int main void, ať to znamená cokoliv, a pak ve středu zde, printf ("hello, world."). A pak zavřít citace, zavřít závorka, středník. Teď budu pokračovat a prostě hit Command-S. Jdu jít dopředu a uložit jako hello.c, takže úmluva svět programování C je název souboru dot c. Jdu jen dát v domovském adresáři Johna z Harvardu, zde, klepněte na tlačítko Uložit, a teď jdu projít k tomuto okno terminálu, což je opět tato černá a bílá řádku kde mohu provádět příkazy. Mohu spouštět programy zadáním své jméno, ne Dvojitým kliknutím ikony v obvyklém slova smyslu. Ale věc je o C, je, že jazyk jako C první přichází v této podobě, něco, co nazývá zdrojový kód. Něco, co vypadá trochu jako angličtině, ale je rozhodně méně jako angličtina než pseudokód Josefův Před chvílí. Je to trochu tajemné. Zdá se, že následovat některé vzory nebo pravidla. Skutečnost, že mám složené závorky, středníky, citace, úhel šle, cítí jako počítač přišel s tímto druh jazyka. Ale když půjdu, teď, na tomto terminálu, lze spustit příkaz, který se bude konvertovat, že zdrojový kód je něco, co nazývá objektový kód. To bude konvertovat English-jako syntax na nuly a ty, stejné druhy nul a jedniček my mluvil o středu. Teď, jdu spustit příkaz s názvem zvonění. Více o tomto v příštích týdnech, ale je to program s které mohu převést hello.c na celou partou nul a jedniček. Teď jsem spuštění tohoto příkazu. Jsem běžet řinčet, a pak jsem řekl běžet sám na tento soubor volal hello.c, které jsem vytvořil před chvílí, a nic Zdá se, že se stalo. Ale opravdu, když jsem vystrčil kolem mého domovského adresáře, bych vidět že tento hloupě názvem programu a.out nyní existuje. To je jen výchozí název programu, při psaní C. Můžeme přepsat to nakonec, ale a.out je název programu, který jsem právě přeměněn nul a jedniček. A teď, že je to nul a jedniček, můj Mac, v tomto případě, nebo Vaše PC s Windows, můžete pochopit ty kousky, ty nul a jedniček. A tak, když jsem narazila Enter, vidím "hello, world!" Ale je to trochu buggy. Nechtěl jsem docela řekl "ahoj, svět: vzduch: -! Jharvard." Vzduch je jméno mého počítače. Jharvard je název účtu, takže to, co jsem jasně vynechat z programu? Nějaký zalomením řádku. Nechtěl jsem narazila na ekvivalent Zadejte nebo návratu vozíku, a to je, opět, svědčí o tom, že počítače mohou jen to, co řeknete, aby dělali. A skutečnost, že jsem neřekl počítač přesunout kurzor na další řádek - dobře, to určitě nebude jen to opovážlivě pro mě. Takže když jsem se vrátit do svého programu, a já říkám, \ n - Takže \ n, jak brzy uvidíte, je způsob, jak představuje divné věci, jako znaky nového řádku, věci, která by jinak byla výsledkem bít klávesy Enter. Ale teď, jen vím, že bít klávesy Enter by jen aby náš kód vypadat divně, tak se svět rozhodl, víš co, aby věci hezčí, aby ji udrželi na jednom řádku, pojďme jen říct, \ n představuje nový řádek. Dovolte mi, abych znovu uložit svůj soubor, přejděte zpět do okna terminálu, a re-run a.out, Enter. Přesto buggy, ale proč? PUBLIKUM: [Neslyšitelné] DAVID Malan: Jo, tak jsem třeba překompilovat ho. Takže sestavit program znamená jen převést ze zdroje kód objektového kódu, zdrojovém kódu nul a jedniček. Nyní, pouhá skutečnost, že jsem narazila Uložit v tomto TextEdit nemá ložiska na těchto nul a jedniček, protože jsem nejprve tell zvonění hey, změnil jsem ty řádky kódu, zdrojový kód. Musíte regenerovat a.out. Nic Zdá se, že se stalo, ale v počítači, Na příkazovém řádku, tak mluvit, když se nic neděje, to obvykle znamená všechno je v pořádku. Když se něco stane, znamená to, že jste zpackal, obecně. Takže pojďme se teď jít do a.out, a opravdu, mám teď "hello, svět. " A teď, co o těchto nul a jedniček? Je-li v tom, jsou ty? No, nemůžu opravdu jen trochu poke kolem velmi efektivně. Dovolte mi, abych otevřít TextEdit. Tady je a.out. Nech mě jít dál a to otevřít, a to je zřejmě to, co my Program vypadá. Tak jsem otevřel, ne hello.c, ale a.out. Ale to je vlastně to, co můj program je opravdu. Je zřejmé, je to nějaký druh abecedních znaků. Nevidím žádné nul a jedniček, ale je to protože a.out je program. Nul a jedniček - ale TextEdit, jak název napovídá, je to stejně jako Notepad ve Windows, je jen textový editor, takže je to matoucí všech těchto nul a jedniček as ačkoli oni byli, co? ASCII znaky. Takže připomínají ve středu, právě jsme přišli s tímto svévolné mapování čísel, nebo kousky, na dopisy abeceda a interpunkční symboly a podobně. Takže TextEdit, že je to textový editor je interpretací ty vzory nul a jedniček, které mají být tisk slova, jako "Hello, world". Je to jejich zobrazení jako ASCII, a to je důvod, proč to vypadá trochu chaotický. Nyní, tam jsou některé náznaky správnosti v zde. Všimněte si, když jsem zdůraznit, že je náznak skutečně "hello, svět, "tak někde v tomto programu je věta, kterou jsem napsal. Ale pojďme dál a nyní vidí s jiným programem. Toto není jeden budeme používat, že často, ale také přichází s Mac a bude uvnitř CS50 zařízení. Nech mě jít napřed a otevřete s programem s názvem xxd. Zpět v den, byla většina programů jmenoval poměrně záhadně, a tak tento trend pokračuje. Ale-b znamená vyplivnout tento program tak, jak binární. Nespouštějte jej. Zobrazení mi to jako nul a jedniček, a to je C program, který jsme právě napsali. Teď, já, jako člověk tady, upřímně nemám ponětí, co Tyto různé vzory nul a jedniček představují. Zpět v den, jsem s mými děrné štítky nebo podobné výrobky, by skutečně se podívat do jaké tyto různé vzory 01111000, ve skutečnosti představují. Nebo ještě hůř, potřeboval bych udělat děrování nebo vytvoření z těchto vzorů nul a jedniček. Ale teď, se na základě víry, že CPU, Intel Inside, tak mluvit, uvnitř všech našich počítačů v těchto dnech, ví jak interpretovat tyto nul a jedniček. A některé nuly a jedničky znamenají tisk. Některé nul a jedniček znamená hrát zvuk. Některé nuly a jedničky znamená vzít si uživatelský vstup z klávesnice. Je tu všechny druhy různých vzorů, ale naštěstí, jako lidé, pouze obecně muset starat o programování v Tento poměrně vyšší úroveň. A v jiných třídách CS můžete ponořit hlouběji a podívat se u věcí jako ty nul a jedniček, nebo ještě jiné věci stále. Tak teď pojďme změnit toto. Pojďme velmi rychle pryč od C a přestěhovat se do něčeho na trochu víc uklidňující, trochu víc vzrušující, v tom, že můžeme dostat zpět naše animace a zvuky a podobně, které jasně uniklo nám v této docela primitivní rozhraní. Takže to stejný program v jazyce C mohou být reprezentovány nyní v této programovací jazyk nazvaný Scratch takto. To je ekvivalent tohoto Hello World program napsaný v Tento kousek skládačky styl jazyka nazývá Scratch. Tak nech mě jít napřed a otevřít tuto velmi programu. Je to zase jen Scratch. Je volně k dispozici, a to je totéž jsme začal dnes na. Tak tohle je Scratch, a to se rozdělila na několik různé kusy. Na velmi pravém horním rohu, máme tzv. fáze, a opravdu, že je místo, kde jsou cookies provádí jen trochu dříve. A na jevišti se věci jen přízraky, znaky, nebo objekty, nebo subjekty. To není opravdu jedno, jak si o nich myslíte, ale jsou programovatelné, pohyblivé věci, a v tomto případě se jedná program, který naše student psal má několik perníku cookies, pár kruhových cookie, celá banda srdce, celá banda brýlí. Z tohoto důvodu se nebo je schopen programovat každý z nich Jednotlivé postavy samostatně. Teď, co to znamená naprogramovat tyto znaky? No, nechte mě jít napřed a klikněte na levé straně cookie a přejděte přes nahoru doleva zde. V levém horním rohu mé obrazovce je nyní tzv. skripty oblast. To je druh nepopsaným listem, zpočátku, na které mohu drag and drop puzzle kousky, které, upřímně, dělat přesně to, co říkají. Na vrcholu tohoto zásobníku dílků je slovo Když Green Flag klepnutí, a pokud jste si nevšiml dříve, jak jsem začal, že cookie píseň byla kliknutí, doslova, zelená vlajka. Takže skládačky vlevo nahoře tam znamená, když lidských kliknutí zelená vlajka, pokračoval dělat následující věci. A teď, co se jim cookie pokračovat dělat? Já opravdu nevím, jak interpretovat to ještě, ale cookie zřejmě nastavit její drážky na nulu, pak to čekal tři sekundy, pak to změnilo jeho skupinu s jedním, pak to čekal druhý, pak se to změnilo jeho groove zpátky do jednoho. A pak to skutečně vypadá jako trochu chybu, by neměly muset změnit své drážky znovu a znovu, pokud je to měněn jinde, ale tato série kroků je to, co je diktovat chování tohoto konkrétního souboru cookie. Takže pojďme skutečně posunout zpět a nedívat se na něco tak docela složitý ještě. Nech mě jít napřed a jít do souboru, Nový, a získat čistý štít. Takže teď, jsem opravdu bude mít prázdnou skript prostor, prázdné jeviště, s naším výchozím sprite nuly, a v levé horní části Na obrazovce mám paletu všech jejich K dispozici dílky. A nebudeme procházet téměř, že mnoho z těchto věcí dnes, protože, opět, většina jsou samo-vysvětlující, ale my snaží roztřídit je a poukázat na podobnosti s těmito budoucími jazyky, na které budeme potápět. A vlevo nahoře tady je první Když Zelená vlajka klepnutí, tak ať mi přetáhnout sem, oddálit trochu. A když jsem klikněte na zelenou vlajkou, nic se opravdu děje, protože Nemám připojen žádnou logiku, prohlášení tak mluvit, že zelená vlajka, tak nechte mě jít do Kategorie sem. Jsem v současné době v Ovládacích kategorii. Já místo toho jít do toho, jak vypadá kategorii, a je tu celá parta věcí zde, že Say Say, Zamyslete se, měnit barvu, spínače kostým. Takže si můžete udělat hloupé věci s kostýmy a zvuky a podobně. Nech mě jít dopředu a jen říct Say, a teď zjistíte, jak jsem přetáhnout a odstranit tento kousek skládačky, to bude chtít, aby zapadla do odpovídajícího tvaru. Takže když jsem se do toho pusťte a pustil mé myši, uzavřou společně, a teď když půjdu sem a klepněte na zelenou vlajkou, kočka se ve skutečnosti pozdravit, protože to je to, co je uvnitř tohoto bílém poli. Brzy budeme vidět, že bílý box je to, co se nazývá argument, nebo parametr. Je to způsob změny chování, v tomto případě, skládačky, ale pokud chci říct, co přesně jsem řekl před, řekněme hello, world, teď mohu vrátit sem, Klepněte na tlačítko Přehrát a "hello, world" je to, co je řekl. Takže jsme se doslova programování nyní. Není to, že přesvědčivé programu, nejméně však je to trochu závažnější, než něco, co vypadá, na první pohled, jako je tento. A můžeme velmi rychle dostat všechny výraznější protože v Scratch, stejně jako v jiných jazycích, tam je všechno druhy výkazů, a to nejen Say nebo tisk něco, ale můžete dělat věci, jako je čekání, jak jsme právě viděli s cookie, některé počet sekund. Můžete přehrávat zvuky v prostředí Scratch jen jako můžete v běžném počítačovém programu přehrávání zvuku. Můžete zjistit, co se nazývá booleovských výrazů. Takže teď, pojďme začít se přidat k našemu nástrojů některé terminologie že se ve skutečnosti týká příkladu, že Joseph a já udělal Zde se ponožek. Takže tvrzení jsou jen vylíčením skutečnosti,. Udělej to. Směrnice pro skřítka, nebo mě člověk, něco udělat. Booleovský výraz je něco, co má hodnotu, tzv. pravdivostní hodnota, která je buď nula nebo jedna, nepravdivé nebo pravda, zapnutí nebo vypnutí, ne nebo ano. Nezáleží jak si myslíte, že o tom, ale je to binární stav. Jak Nate projednán ve videu středeční, dva různé věci. Takže v Scratch, Booleovské výrazy stane se podívat jako jsou tyto modré objekty zde, v tomto případě, je otázka Značka znamená, že se ptáte na otázku. Je kočka, nebo sprite, dotýká myši? Takže to je jen jeden příklad z Scratch bloku, co se děje které nám umožní zjistit ano nebo ne, je myš dotýká sprite na obrazovce? A to může být užitečné, pokud si opravdu chcete dělat věci s myší. Kromě logických výrazů, máme věci jako je myš dolů, takže můžete zjistit, že druh otázka, jak dobře. Můžeme to udělat matematiku, pokud si opravdu chcete, a tam je ve skutečnosti více přesvědčivé použití pro toto, než jen ryzí aritmetický, jak uvidíme. Pseudo náhodnosti a aby si program, si zřejmě myslí, nebo se chovají různě v závislosti na některých zdánlivě náhodných hodnot, a pak máme takové věci booleovských výrazů jako AND. Takže pokud opravdu chcete zkontrolovat dvě hodnoty, uvidíme v Stírací, že můžeme skutečně vyzkoušet, zda se jedná pravdivé a je to pravda. Například, v případě, že mé ponožky, mohl jsem na velmi end zeptal na otázku, zda levý ponožka je zapnutý a pravé ponožka je na, ukončete. Tomto kroku na den, takže by bylo příležitost pro to. Tak pojďme do toho a zkuste se dát některé z nich společně a jít do pár příkladů více přesvědčivé než tenhle. Tak nech mě jít napřed sem a otevřít některé z příkladů že bude vždy o průběhu stránkách stejně, a otevřít hello2. Takže v hello2 zde, máme program, který to dělá málo věci, ale to nedělá to tak účinně, jak bychom mohli. Tak tady to říká "Hello, world" po dobu jedné sekundy a pak čeká pro druhé. A pak to udělá znovu, a pak se to znovu. Takže když jsem klikněte na zelenou vlajkou, Scratch říká "Hello, world. Hello, world. Hello, world. "A to je samozřejmě kandidát nyní zlepšení. Co je marginální zlepšení, doufejme, můžeme nyní udělat, pokud Scratch podporuje koncept? Nějaký druh smyčky. Nějaký opakování, nyní, by bylo hezké, tak ať mi vlastně to zkusit. Dovolte mi, abych skutečně jít a pohybovat to. Takže oznámení lze oddělit bloky tak snadno, jak si můžete přidat do připevněte je. Nech mě jít pod kontrolou, přejděte sem, a opravdu, tam je to kousek skládačky tady, opakování a Forever a Forever Pokud. Takže tam je několik způsobů, jak vyjádřit cyklickou konstrukce v Scratch. Ten, který jsem pravděpodobně chtít tady není navždy, protože jsem jen Chci aby se to stalo třikrát, ale pravděpodobně Opakovat. Dovolte mi tedy přetáhnout Opakovat tady, přetáhněte ji, a Nyní místo toho řekl "Hello, world", tři samostatné krát, dovolte mi, abych přetáhněte tento kousek skládačky tady. A i když se to nezdá, aby se vešly, program inteligentní dost si uvědomit, že bude růst vyplnit, takže je to tvary, které záležitost a ne absolutní velikost. Dovolte mi, abych změnit opakování na tři, a teď nech mě jít dopředu a přetáhněte Počkejte One Second tam také. Bude to snap v také, a tak teď budu táhnout tito lidé sem a jen házet je pryč, protože jsem nepotřebují už. Dovolte mi, abych oddálit a klikněte na zelenou vlajkou nyní, a my máme stejný program, ale jak jsem předpovídal před, lépe navrženy, protože si dokážete představit, jak špatně je tento program by si jistě esteticky, pokud byste měli kdo kopírování a vkládání, kopírování a vkládání, nebo přetažením stejné zatraceně věci znovu a znovu. Nyní, prostě říkat věci na obrazovce, tisk na obrazovce, opravdu všechno, není to vzrušující, takže se pojďme otevřít třetí rozptyl zde. A teď, jak uvidíte, tohle se rychle dostat otravné - [Meow] DAVID Malan: -, ale je to také trochu roztomilý. [Meow] DAVID Malan: Dobře, tak lépe, a můžeme samozřejmě použít, aby Stejný přechod Chunking to až do opakování struktura, ale pojďme dělat to více zajímavější stále. Nech mě jít napřed a otevřít čtvrtiny rozptyl tady, kde jsem brát věci o krok dál. Tak podle tohoto, hloupé i když je to na první pohled, co se tento program bude dělat? Bude to meow jednou. Proč? No, jeden je, pokud vím, vždy menší než dva. Není pojem náhodnosti zde. Já jsem doslova pevně jedna a dvě, ale to je Příkladem nyní skutečně používat logický výraz. Podobně jako jako Joseph dělal v jeho pseudokódu, odsazení KDYŽ najdete odpovídající ponožky proveďte následující, zde máme výraz Jestliže jeden je menší než dva pak - a ve skutečnosti budeme mít i trochu odsazení, kde je fialová mírně odsazena doprava - Pak budete hrát zvuku mňau. Nyní, v tomto případě, že je vždy menší než dva, takže tento je tak trochu plýtvání stavu. Ale budeme moci, jak uvidíme, připojit jiné věci do Tyto zástupné symboly, kde jedna a dvě nyní jsou. Takže pojďme se nyní postupně například pět těchto několika pozdravy a pohled na to, co tento program to udělá. Takže teď, v anglické větě, jak to se program chová? PUBLIKUM: Meows polovinu času. DAVID Malan: Mňau je polovina času, takže to je způsob, jak dopravu velmi jednoduchý nápad. I když jsme se náhodou používat některé nerovnosti zde v některých čísel, to je ve skutečnosti jen programový způsobem, přesný způsob, jak říct když se mince přijde hlavy, jít dopředu a mňau. Nebo naopak, když se mince přijde ocasy, ne mňau. A v tomto případě, jak jsme vyjádřit, že? Budeme si vybrat náhodné číslo od 1 do 10, a pokud to číslo je menší než 6, jděte do toho a mňau. A jak se to sem dostat? No opět si všimněte, jen přetažením a věci nezapadne na místo. Takže teď uvidíme, jestli to náhoda funguje. Nech mě jít dál a klepněte na zelenou vlajkou. [Meow] DAVID Malan: Dobře. [Meow] DAVID Malan: Dobře. Dobře, dobře, tak my jsme dostali hlavy, hlavy, ocasy efektivně. Tails. [Meow] DAVID Malan: Heads. [Meow] DAVID Malan: Výborný. Je to vždy nepříjemné, když jen statisticky dostanete špatný běh, a to všechny hlavy, a program ve skutečnosti není fungovat, jak byste doufali. Ale tentokrát to fungovalo, a zdá se, že mají-li jsme Tento nekonečný počet opakování, 50% šance. Teď znovu, ne všichni, že zajímavé, jen aby kočky meow, takže uvidíme, jestli nemůžeme postoupit tento kousek dál zde ve verzi šest. Takže teď máme opravdu nepříjemný verzi - [MEOWS každých pár vteřin] DAVID Malan: - a to je to, co je známo, obecné, as nekonečné smyčky. Takže nekonečné smyčky v tomto případě cítí špatně. Je to určitě bude, kdo znít špatně, a přesto nekonečný smyčky nejsou vždy špatné. Může si myslíte, že kontext, v počítačových programů, kde byste vlastně chceme nekonečnou smyčku? Jo? PUBLIKUM: Chcete-li zkontrolovat stav. DAVID Malan: Dobře, když chcete zachovat kontrolu podmínku? Jako co? PUBLIKUM: [Neslyšitelné] DAVID Malan: Dobře, dobře, takže pokud jste měli nějaký program, někteří Takové věci domácí automatizace, kde chcete neustále Monitor je něco případ. Jsou světla na? Jsou světla na, protože možná budete mít časovač, a Chcete, aby šli pryč, možná budete muset něco udělat znovu a znovu. A ve skutečnosti, když už mluvíme o časovačů, každý z vás, kteří se hodiny na vašem počítači nebo digitální hodinky, to je nekonečné smyčky. Nadále aktualizovat čas, protože je to stále kontrola a kontrola a kontrola má čas změnit, a pokud ano, oh, můj bože. Hodiny se konečně změnila. Je třeba zobrazit tuto hodnotu pro vás. Takže vzhledem k tomu, většinu času nekonečné smyčky jsou chybou, nebo alespoň špatnou designu rozhodnutí, jindy mají svou hodnotu. Dobře, pojďme postoupit dále zde hello7. Takže teď bude program trochu více interaktivní. Dovolte mi, abych přiblížíte tu, a znovu, to je to, co je hezké o Scratch. A budeme používat to, aby bylo jasno, Scratch, právě dnes a do příští týden je problém nastavit. Ale v pondělí, jsme se ponořit do C. V tomto programu zde, to dělá, navždy, následující. POKUD dotyku myši - teď, kdo je souvislosti tady? No, a všimněte si, že kdo je vybrán tady dole právo je kočka, sprite, takže jsou tyto skripty, tento Program, platí pro něj konkrétně. Takže pokud ta kočka se dotýká myši, pak to bude hrát tuto dolů a vyčkejte dvě sekundy, a opakujte ad nauseum. Tak pojďme do toho a hit hru. Nic se nestane, ale pokud chci pohladit cat teď, mohu jen. [Meow] DAVID Malan: Rozkošný. [Meow] DAVID Malan: Dobře, méně obtěžující, ale také zmatní, tak pojďme dál a uvidíme, jestli nemůžeme aplikovat trochu více logiky. To bylo například sedm. Zde v příkladu osm, budeme zavést ELSE podmínku. Tolik jako doslovný rozcestí, ve kterém můžete jít vlevo nebo můžete jít rovnou, stav v programování jazyk jako Scratch, nebo jak uvidíme C, vám umožní jít v jednom směru nebo jiný přes If Else konstrukce. Takže doslova, POKUD dotýkat myši, tato bude hrát nějaký zvuk, ELSE, že to bude hrát ten druhý zvuk, mňau. Nyní, pokud můžete odvodit z názvu těchto zvuků, můžete asi tušíte, co tento program je určen pro vykouzlit myšlenka. Tato kočka je meowing šťastně. [Meow] DAVID Malan: Naštěstí, ale není Docela se mi líbí, aby se dotkl. [Řve] DAVID Malan: Takže teď máme kočku, která bude křičet na tebe. Dobře, dobře, poslední příklad s kočkami zde, a Pojďme otevřená verze devět tady. Takže teď máme další nejotravnější zvuk, že jsem mohl najít, takže máme mrože nebo lachtan zde, kdo bude proveďte následující. [SEAL kůra] DAVID Malan: Dobře, takže to bude pokračovat, dokud se přijít na to, jak tento program funguje. Takže tentokrát, to zvíře má dva skripty, a to, co je Zajímavé je, že tyto skripty budou provádět paralelně. Tak proto, že oba začít s jedním zelené vlajky na něj kliknete, je to jako jít takhle, a oba programy rozběhnou ji jednou, i když jsou to smyčky navždy. Takže v horní skriptu, mám nějakou logiku. Jaké funkce, které poskytují tam? [SEAL kůra] PUBLIKUM: [Neslyšitelné] DAVID Malan: Pokud je to, co? [SEAL kůra] PUBLIKUM: Pokud ztlumen na nulu, bude to hrát dál zvuk. [SEAL kůra] DAVID Malan: Dobře, dobře. Takže pokud tlumené, co to je, to oranžová věc je nulová, POTOM hrát lachtan zvuk a že "Oh, ahoj, "po dobu dvou sekund. Teď, já nevím, co je ztlumen, ale nulové vyvolává Myšlenka false nebo vypnout. Takže pokud ztlumen je nepravdivé, tak pokud není vypnut, udržet přehrávání zvuku. Dobře, dobře, jak jsme se zakázat tuto věc? No, pojďme se podívat na druhém skript tam dole. Druhý skript říká nastavena ztlumen na nulu. Všimněte si, že je to také oranžová, takže to, co dělá, je to Scratch barvy bloky ve stejném odstínu, pokud je to něco logicky souvisí. Takže stejně jako tlumené až nahoru byla oranžová, tak je ztlumen tady je uvedeno v oranžové bloku. Ale to je jen variabilní úkoly, takže stejně jako v algebra, máte X a Y a Z, v programování máte proměnné, ale oni jsou obecně - Vraťme se na chvíli zastavit a postava jak k zastavení tohoto štěkání. Jak to mám udělat? [SEAL kůra] DAVID Malan: Dobře. Přestalo to. Dobře. Takže stejně jako v algebře máte proměnné x, y, a z, ale v programování, které mají proměnné, jako x, y, a z obecně odsuzován, protože to není vůbec výrazný. Nemají sémantický význam vůbec, tak ve většině programovací jazyky, mohou proměnné mají plné plnohodnotné jména nebo slova nebo fráze, ztlumen rád, říci co dělají. Takže toto Druhý skript také poslouchal navždy, a řekl Pokud klíč, klávesnice klíč Space, je lisované, otazník. Takže tam je to stav s logický výraz, který je bude odpovědět na otázku, jak pravdivě, nebo false, pak jsem do ní, že si místo stisknutí tlačítka A POKUD ztlumen je nula, nastavte ztlumen na jednu, ELSE nastavit ztlumen na nulu. Takže ten druhý rozcestí, a všimněte si, jak jsem se vnořené dvě, pokud podmínky, je způsob kontroly je Space Bar stisknutí, protože pokud ano, jsem buď chci jít tuto tak či onak. A jak mám obrátit hodnotu ztlumen? Musím zjistit, je to nula? Pokud ano, je to jedna, jinak aby bylo nula až tedy přepínat jeho dva stavy. Dobře, takže máme pak některé z těchto základních konstrukty. Máme booleovských výrazů, a uvědomit si, taky, jsou není všechno, že neznámé. Ve skutečnosti, tady je rychlý screenshot samozřejmě Harvard je CS50 nákupní nástroj, a všechny webové stránky, které tam má zaškrtávací políčka a pokles sestřelí opravdu, celou tu dobu, byly pomocí Booleovské výrazy. V tomto případě zde, pokud kliknete na zaškrtávací políčko vedle Předmět větší než nebo rovno 4,5, nebo stejné vedle fakulty, jste s uvedením logický výraz. Ukaž mi kurzy, pro které tento výraz je pravdivý. Nebo doprava, není v rozporu s kurzy proč jsem přičemž, pokud je to, pak ano, chcete zkontrolovat tato podmínka, jinak budete chtít ignorovat. Takže Booleovské výrazy jsou trochu všude kolem, ale když dáme je do podmínek, ať už pokud to podmínky, POKUD Elses, nebo dokonce můžeme simulovat hlouběji úrovních, pokud ELSE If Else - tak to je něco jako ternární stavu. Můžete jít tudy nebo tento způsob, nebo tento způsob. Můžeme si ponechat hnízdění věci jít různými směry. Tak Scratch má tyto smyčky, jako Forever. To má tyto funkce, jako je Repeat 10, některé konečný počet, kolikrát chcete. Máme schopnost nyní nastavit proměnné, takže v tomto případě se Já jsem prohlásil, například proměnnou s názvem ponožky. Jsem inicializovány na 0, a to je další směr mohli jsme vzít tady s Josefem, čímž jsem možná jen sledovat, kolik ponožky mám na a ukončit program při této proměnné je hodnota 2. To by byl jiný způsob, jak řadit z zevšeobecňovat, že problém a dělat něco znovu a znovu. No, pojďme dál a nyní představuje pár nových věcí. Takže ti z vás s předchozím programování zkušeností bude vím, že mnoho jazyků má pole, nebo vektorů nebo seznamy, a opravdu, Scratch má něco takového taky. Tak uvidíme, jestli se nám podaří nebrat věci na další úroveň zde. Pokud budu mít možnost, nyní s těmito puzzle kousky na přidat něco, jako slovo nebo číslo, do proměnné, mohu začít hromadit věci. A to je vlastně docela apropos pro věci, jako jsou hry, hry na hrdiny, kde jste druh chodí některé fantasy svět sbírání věcí, vyzvednutí věci, sbírat body, nebo podobně. Možná budete chtít sledovat nějakého druhu zásob, a opravdu, že to, co jeden z našich bývalých studentů zde dělal s něco, co nazývá Fruitcraft RPG. Tak nech mě jít napřed a otevřít tuto věc tady, a ve Fruitcraft, máme tento svět se na vrcholu. Tak nech mě jít napřed a klikněte na zelenou vlajkou. Oznámení vlevo nahoře je nějaký druh zásob. To je realizován v Scratch jako to, co budeme říkat pole nebo seznamu, a teď máme tuto malou animaci. Takže stejně jako jsme začali dříve s tímto příběhem cookie lásky, a pak jsme postoupili k koček a lachtanů, teď můžeme mít věci, které jsou ještě více interaktivní. A tento malý modrý kluk, mohu začít pohybovat jeho málo domů zde. Takže to vypadá, že má k výjezdu sem, takže jsem pomocí se šipkami, nahoru, dolů, vlevo, vpravo. A teď jsem mimo, tak ať je to, co jsem se sem dostal. Vypadá to jako pomeranč, a opravdu, jakmile jsem se dotknout oranžová, dostane se svalil do svého inventáře. Když jdu sem na třešně, teď mám něco jiný v mém inventáři. A to je hezké a roztomilé, ale přemýšlet o tom, jak teď, to je realizován. No, máme tento pojem v seznamu, a to je zřejmě skládačky, že stačí říct, co chcete přidat na to, přidat oranžová, přidejte třešně. A teď, co je to malý modrý chlap dělá? No, on je to skřítek. A pravděpodobně, oranžové a třešně - oni sami byli oddělené skřítky. A pomocí podmínek v logických výrazů, Student byl pravděpodobně schopen vyjádřit POKUD modré chlap je dotýkají třešně Potom přidejte slovo třešně na jeho zásob, a pak také skrýt třešňový sprite. Takže pod kapotou, tam pravděpodobně ještě je třešeň sprite tam. Právě jsme řekli, aby se stal skutečně neviditelný. Teď, když jsem jít dál tady, můžeme provést také proximální věc, kde bych mohl jít a číst znamení. Takže pokud blue chlap dotýká znamení, můžeme mít to říká blok stejně jako kočka k nám promluvil ve slovech, ahoj, dříve, "Got některé druhy ovoce? Přineste ho na ovoce místo. "Dobře, takže teď, zdá se, Mám instrukce. Můžu jít sem na ovoce místo, srovnejte abych se s dveřmi. Teď jsem tady. Můžu jít až k muži na přepážce. On zjistí, že jsem se k němu, tak to nemusí být docela stejně dojemné, a já jsem vyhrál hru. Tak tady to máme Fruitcraft RPG. Takže můžeme dělat věci ještě pokročilejší, než tohle. Můžeme přidat zvuky. Můžeme přidat pseudo náhodnost. Můžeme přidat složitost. Nech mě jít napřed tady, a spíše než dělat to sám, dovolte mi, abych vám ukázat jeden z více sofistikovaných podání jsme v loňském roce z určitého někoho jménem Blake. Můžeme mít jednoho dobrovolníka, který je pohodlný objevit na fotoaparát a je pro hraní her? Jak asi tady? Pojď nahoru. Dobře, takže hra, která jste právě nevědomky dobrovolně hrát - [APPLAUSE] DAVID Malan: - je něco, co z dávných dob tzv. "Frogger." Jaké je vaše jméno? Renda: Renda. DAVID Malan: Redna? Renda: Je to jako Brenda s b.. DAVID Malan: Dobře, Renda. David. Rád Vás vidím. Takže tady v "Frogger", a pokud bychom mohli zvýšit objem jen trochu, jste tento malý zelená žába na dně. Můžete použít vlevo, vpravo, nahoru a dolů, a vaším cílem je, aby přes ulici, přes řeku, a klepněte na lilie podložky v horní části. Aw. One More t - redo, dobře? Pojďme hit stop. Nikdo neviděl, že. [APPLAUSE] [APPLAUSE] DAVID Malan: Jo. Velmi dobře. Skvělé, děkuji. Tak, že došlo Frogger. Nyní, když víte, co jste dostal sami do, ještě jeden dobrovolník pro různé Hra nám jiným studentem. Chcete-li jít nahoru? Jak se jmenujete? RICHARD: Richard. DAVID Malan: Richard. Dobře, Richard, pojď nahoru. [APPLAUSE] DAVID Malan: Máte něco, co bude znít obeznámeni brzy, takže tady jsou vaše instrukce. Takže ve chvíli, některé dílky budou posouvat nahoru na obrazovce, která vypadají buď vlevo nebo vpravo nahoru nebo dolů. Budeš muset zasáhnout šipkou takovým způsobem, že odpovídá těmto dílků čekajících s zástupné symboly v horní. Takže když vidíte šipka vlevo, a to linky s levou arrow, udeřil na šipku doleva. Můžete začít. [MUSIC - "silnější" Kayne West] DAVID Malan: Dobře, velký potlesk pro Richarda. [APPLAUSE] DAVID Malan: Velmi dobrá práce. Děkuju. [APPLAUSE] DAVID Malan: Tak zábavné a, zdánlivě, druh zastrašující jak by mohla být na realizaci něco jako zdánlivě sofistikované jako to, uvědomit si, že student nebyly stanoveny a jen psát to všechno najednou. Spíše, můžete rozebrat problém jako zdánlivě složité protože to v mnohem menší kousky, a to je také bude tématem. Nejhorší věc, kterou můžete udělat při psaní programu ve většině jakékoli jazyk je, aby se posadili, se opravdu vzrušená, napište Celá ta zatracená věc, a pak už jen doufat, že to funguje Čas, který se dokončení psaní. Spíše by proces plánování obecně být velmi úmyslné, velmi iterativní, kdy stačí nastavit velmi malé kroky pro sebe, bite-size kousky chceš ukousnout, a tak, že máte tyto zdravý rozum kontroly, malé milníky můžete setkat. A pak budete stavět na vrcholu těch vytvořit více sofistikované věci stále. Tak například, jak by jsme jít o , kterým se provádí hru jako je tento? No, upřímně řečeno, určitě bych začít tím, že právě podporuje jedno tlačítko najednou. Řekněme, implementovat podporu pro levé šipky. Takže student měl nějak vytvořit v Photoshopu, nebo v Scratch se pomocí malé grafický editor, k arrow klíč, který vypadá jako ten nahoře vlevo, jen tam šedý zástupný symbol. Pak student měl zjistit, co se x, y koordinovat dát, kam to dát v okně. 0, 0 je tady, takže budete muset přijít na řadu pixelů, nebo tečky, k vyrovnání ten šíp z v horní části obrazovky. A pak ještě jednou, že je v místě, váš program není ve skutečnosti dělat něco ještě, takže potom je třeba druhý sprite, pro instance zelená šipka, která je také ukazující vlevo, a vy pak je třeba začít psát nějaké skripty pro něj. A jste si všimli, možná, že tyto věci začali přicházet na při různých rychlostech, a barvy byly v různých místa, a to proto, že se student používá trochu pseudo náhodnost. A tím pseudo náhodnosti, jsem jen říct, vybrat číslo mezi něčím a něco, protože můžete začít mapě věci, jako když číslo je mezi jedním a pět, dobře, pojďme se věc zelené. Pokud je to mezi 6 a 10, pojďme se na kousek skládačky červená místo. Tak dlouho, jak máte způsob generování nějaký náhodnost, můžete pak učinit rozhodnutí na základě toho náhodnost. A já si říkají pseudo náhodný, protože tam je trochu špinavé tajemství. Počítače nemůže přijít s náhodnými čísly. Mohou dělat pouze to, co se jim řekne, protože jsou umělá zařízení. Nemohou jen hádat číslo jako my, lidé, pocit, že můžeme. Počítač musí něco udělat matematický vykouzlit iluze matematické čísla, někdy používat aktuální den času jako vstup do zjišťuje, co Číslo vrátit, ale o tom až jindy. Pro tuto chvíli, jen vím, že můžeme vytvořit pseudo náhodnost. Takže jakmile jsem tu možnost pro levé šipky pro spuštění objevit v různých časech a na různých rychlostech, a pak Můžu se vrátit a přidat některé z nich, jestliže podmínky. Pokud tento sprite se dotýká druhou a levá šipka bylo stisknuto tlačítko - takže tři podmínky uvedené v tomto případě. Mohu použít, že a blokovat možná, v tomto případě - Pak chci jít dál a zvyšovat skóre. A nahoře, máme skóre, máme Awesome, Cool, Good, a Boo. Takže tam to prý pěti proměnných, které tento student slouží ke sledování těchto různých metrik. Takže ve zkratce, konečný výsledek je úžasný. Je to zábava, je to zábava hrát, je to poutavé, ale to není kde student začal. On nebo ona začala při mnohem menší sadu kroků. Takže jaké jsou některé další stavební bloky, které můžeme vazba do těchto programů? No, tam je to jiné pojetí ve většině jazyků, Stírací mezi nimi, známý jako závity. Takže počítač vlastně není opravdu více věcí na Doba, alespoň ne obvykle. Spíše, počítač má obvykle jen jeden procesor, a dokonce i i když počítače jsou velmi rychlé a může proto, vytvořit iluzi dělat více věcí najednou - kontrola pošty, jak se okamžitě zpráva, tisku dokumentu - Opravdu, počítač je jen skákání z tisku až IMing k odesílání e-mailů, zpátky a zpátky a tam a zpátky tak rychle, že jsme pomalé nechápavý lidé prostě neuvědomují, že je to vlastně běží Tyto programy trochu v čase. Nyní, to trochu bílé ležet v těchto dnech, protože v dnešní době, mnoho našich počítačů je to, co se nazývá multi-core, takže mají jeden procesor, ale více jader, což je něco jako s více procesory. A tak někdy, mohou počítače skutečně dělat více věcí v době, ale obecně v rámci programu, programy spoléhají na tyto věci zvané vlákna. Takže vlákno je něco jako miniaturní programu, které mohou existují vedle jiného miniaturní programu a může spustit paralelně, nebo alespoň může běžet v iluzi, že že běží současně. Tak Scratch podporuje tyto věci zvané vlákna. Můžete mít více skriptů vykonávající najednou, stejně jako my udělal se lvem moře, a to nám umožňuje skutečně pak interakce mezi těmito skřítky. Nech mě jít napřed sem a vytáhnout, řekněme, vlákna, a hrát to následujícím způsobem. Máme dva přízraky, z nichž každý uvidíme má jen jeden scénář. A zjistíte, že se zdá být nějaký inteligence kočka v této jedné, protože on je stále blíž - [Řve] DAVID Malan: - a blíže k ptáčka. Tak, jak je pták létá? No, pojďme se podívat na ptáka jako první. Pták skript řekl po klepnutí zelená vlajka, jděte do adresáře X rovná záporné 115 a y se rovná 150. Tak jsem přišel na to, náhodné místo, kde jsem chtěl pták začít, a já jen svalil ho tam ve výchozím nastavení. Pak Forever POKUD nedotýkají kočku, tak to je jiná druh konstrukce cyklu, ale stejný nápad, udělat to znovu a znovu a znovu. Tak dlouho, jak jste se nedotýká kočku, přesuňte tři kroky, a pokud jste na hraně, odrazit, kde je to trochu odraz ve smyslu billiard. Tak to je, jak se pták pohybuje druhu zdánlivě náhodně, ale je to jen proto, že je to se odrazil stěny v tomto případě. Nyní kočka, mezitím, je tak trochu podvádění. Kočka, po klepnutí zelená vlajka, ano, začíná v určité místo, náhodné umístění - alespoň částečně dle pick náhodné zelená blok tam - a potom Forever KDYŽ dotyku ptáka, hrát lev zvuk, a pak se zastaví skript. Takže když jsem řekl ukončit, nebo ukončit dříve, tam je puzzle kus Scratch, že bude jen tak zabít program se na to bodu, protože je to trochu logicky udělat. Ale jinak, tady, všimněte si, co se bude dít. Bod k ptáka a o krok. Takže tento bod k pták je tak trochu výhodu kočky má v tom, že je to naváděcí v na pohyblivou ptáka, a můžeme Nyní, aby tento program all zajímavější. Místo přesunutí o jeden krok v době, za cyklus procesoru, za stávka mýtné na zvonku, abych tak řekl, nech mě jít napřed a pohybovat, řekněme, pět kroků najednou jako kočka. Klepněte na tlačítko Spustit, a teď opravdu ho najde rychle. Pokud bychom zdvojnásobit to dále 10 kroků, je trochu jde právo na něj. Nyní můžeme dát ptáka, možná, trochu výhodu. Pojďme na ptáka a řekl místo pohybu tři kroky, pojďme ho 30 kroků. Ale stále byl chycen na konci. Takže tady máme dvě vlákna. Je uvězněn v Scratch se dvěma skripty a dva skřítci, ale myšlenka v jiných jazycích je to, že můžete napsat, v podstatě, příliš mnoho programů, jako je tento, a mají je běh skutečně, nebo pomyslně, paralelně. Nyní, tam je také tento koncept v programování známý jako události, a to je něco, co jsme se neviděli v C, se jazyk známý jako C. Uvidíme ji na konci semestru programování pro web, kdy jsme představili JavaScript a Pojem stránek stavebních webových které jsou dynamické a vzájemně s uživateli. Takže v tomto případě je nutné velmi jednoduchý příklad dvou skřítci, chlapec a dívka, z nichž každý má své příslušné nitě, ale nějak tyto dva jsou vzájemně komunikovat prostřednictvím ze dne něco jako akce. Tak nech mě jít napřed sem a přiblížit na chlapcově skriptu, která vypadá takto. Když zelená vlajka kliknutí navždy proveďte následující. Pokud klíč Space, nebo Space Bar, je stisknuto, říkají Marco po dobu dvou sekund, to je čistě estetického na obrazovce, trochu speech bubble, ale pak vysílat. Takže vysílání je další Scratch kus, který je zástupce třídy funkčnosti v programování , který umožňuje různé programy, různé nitě, pohřbít-komunikovat, nějak poslat zprávy, jeden pro druhého. Předávání kus papíru ve třídě je něco jako nízká tech ekvivalentní. Takže vysílat událost. Mohu poslat tuto zprávu, a slovo akce je zcela libovolné. Scratch někdy má tyto vržených sestřelí, tak jsem jen přišel s náhodným slovem, jako událost, protože teď, co chlapec dělá když jsem stiskněte tlačítko je, že vysílá tuto událost. A když jsem se podívat teď na dívčině skriptu, její skript je super jednoduché, protože vše, co musí udělat, je nemůže jednat, pokud zelená vlajka je klepnutí. Ona je navržen tak, aby při akci, kdy se dostane citovat, unquote, "Akce", a na tom místě, ona poslouchá proto tzv. událost znovu a znovu. Jakmile se dostane tuto událost, si to bude křičet Polo po dobu dvou sekund. A tak si můžete snad vyvodit z tohoto přesně to, co další výsledek bude. Dovolte mi, abych klikněte na zelenou vlajkou. Nic se nestane, protože musím dělat co? Diváků: Space Bar. DAVID Malan: Space Bar. Chlapec říká Marco, dívka říká Polo. Ale to není pevně dáno samo o sobě. To je vzájemné komunikace mezi skripty, takže nyní mají schopnost učinit ještě složitější programy, kde tyto dva jsou tak nějak vzájemně komunikujících. Takže to, co směry můžeme vzít? No, problém souboru 0, opravdu, je cílem bavte se s Scratch. Pro hackera vydání, budete místo toho bavit s více sofistikovanější verze Scratch tzv. BYOB, Build Vaše vlastní bloky, ale myšlenka je stejná. Budete moci - Ano, to bylo úmyslné. Přišlo to z Berkeley. BYOB je hacker vydání verze, ale jak demografie, Standard Edition a Hacker vydání podobný, cílem při ruce pro nadcházející týden je opravdu jen do toho ponořit hluboká, dostat své špinavé ruce s programováním, a aby něco zajímavého, aby se něco interaktivní, aby něco umělecké, udělat něco zábavnější skutečně prokázat, takže do konce týdne, budete mít projekt, nejen pro své první CS50 PSet, ale budete mít Něco málo, že můžete předvést v Annenberg na přátelé, nebo dokonce rodinné podle nahrát na webové stránky MIT. A tak, jak jsem řekl ve středu očekáváme 90% třídy, obecně, k tomu standardní edice. Uvědomte si, že je tu i tato zásuvka pro ty z vás, kteří by jinak najít si trochu nudit se základy a opravdu chcete ponořit a řemesla vizi jste již mít s předchozím pozadí v to více přátelský prostředí. Dovolte mi tedy vytáhnout jeden další příklad, že jeden z náš bývalý Studenti zde udělal a říct něco málo přes písně. , Který podobně, jako to hraje, myslím, že o tom, jak jít o provádění tohoto programu pomocí přesně tytéž stavební bloky, trochu pseudo náhodnosti, a trochu známé písně. Pokud bychom mohli zvýšit objem jen trochu? [MUSIC - "Prší muži" The Weather GIRLS] DAVID Malan: To je to pro CS50. Uvidíme se v pondělí. [APPLAUSE]