[VIDEO PLAYBACK] [Usa de închidere] [CAR pornirea motorului] [MUSIC JOC] -Moving Chiar de-a lungul, în căutare de vremuri bune și vești bune. Cu prieteni buni, nu se pot pierde. -Acest Ar putea deveni un obicei. Bate -posibilitatea Să doar ajunge si apuca-l. Da! -Together Vom pune mâna. Excursie zgudui -We'll, autobuz, sau taxi galben-l. -Dammit. -Suntem În mișcare de-a lungul dreapta. -Footloose Și fantezie gratuit. -Getting Există jumătate din distracție. Vino să o împărtășească cu mine. -Suntem În mișcare de-a lungul dreapta. -Suntem De gând să împartă sarcina. -Noi Nu au nevoie de o hartă a obține acest spectacol pe drum. Hei Fozzy, vreau să virați la stânga dacă ajunge la o furculiță în drum. -Da domnule. Viraj stânga la bifurcație în drum. Viraj la stânga. -Nu Cred că. -Cruising Dreapta de-a lungul-am găsit luminile de pe autostrada. -Si-Ți de drum sau felul meu. Deci încredere navigare mea. Stele -Movie cu masini ostentative și viața cu partea de sus în jos. -Suntem Storming dealuri mari. Da, furtuna este corect. Ar trebui să fie ninge? Nu, nu cred așa. -Moving Dreapta de-a lungul. -Footloose Și fantezie gratuit. -Esti Gata pentru mare de timp. -Este Pregatit pentru mine? -Moving Dreapta de-a lungul. Mutarea dreapta de-a lungul. Mutarea dreapta de-a lungul. Mutarea dreapta de-a lungul. -Cred Că ar fi mai bine trage peste. -Da domnule. [END PLAYBACK] [Aplauze] David J. MALAN: Aceasta este CS50. Și acesta este sfârșitul săptămânii 0, dar începutul unei frumoase prietenii. Suntem atât de entuziasmat de a fi aici, la Universitatea Yale pentru prima dată, cu nostru prietenul Scaz, și Jason, și Andy. Toate 40 de TF lui CS50 lui și CA e aici la Yale. Și voi toți. Și, de fapt, este probabil timpul sa-- [Aplauze] Deci, chiar dacă de cele mai multe prelegeri va fi într-adevăr în Cambridge în acest an, realitatea este că de proiectare, și foarte mult în mod deliberat în CS50, Eu cred că ne apropiem de punctul de bază tehnologic, pedagogic și, în cazul în care acesta poate fi un învățământ superior de Experiența de a se angaja cu unele cursului de materiale on-line. Într-adevăr, reality-- și dacă cred acest philosophically-- este că prelegeri nu sunt un deosebit mijloace eficiente pentru livrarea informații destul de complex. Desigur peste ora plus deschideri lungi de timp. Și într-adevăr fiecare câteva minutes-- Îmi amintesc eu în college-- te zonei A afară pentru o clipă, e dor de tine un subiect complex, și ai plecat destul de mult pentru următoarele 45 de minute. Iar realitatea este că dacă esti aici, în New Haven sau Cambridge sau dincolo, simplitatea de a avea capacitatea de a întrerupe și derulare înainte, înapoi, hyperlink către conexe Resurse, transcrieri de căutare full text și altele asemenea este o oportunitate care Îndrăznesc să spun pentru studenții noștri on-line dincolo de New Haven, le oferă o oportunitate de Pentru a înțelege cu adevărat Material conceptual pe care le introducă în prelegeri cu atât mai bine. Dar în cele din urmă în CS50, este Experiența studenților este caracterizat atât, mult mai mult de seturi de problema cursului, sau proiecte de programare pe săptămână, The secțiuni de curs a condus de predare semenii, Nightly orele de birou condus de asistenții de curs și de predare semenii, și într-adevăr, cum ar evenimente ca CS50 Puzzle Zi, CS50 lui Hack-un-thon, The CS50 Fair, prânzuri săptămânale, și mult mai mult. Și așa indiferent dacă sunteți aici, în New Haven, sau de tuning de la distanță, astăzi în Cambridge, și vom vedea din nou în curând te, realitatea este aceasta este una și aceeași clasă. Și noi suntem atat de incantati sa aici toate împreună astăzi. Și astfel, la sfârșitul semestrului, dacă aici sau departe, bine sperăm că vă purta cu mândrie, din fericire, și, probabil, cu un pic de relief, cămașa care poartă mărturie pentru a vă a luat CS50. Deci, unde am lăsa pe miercuri? Am luat o privire la gândire de calcul. Și asta e ceea ce am distilată spre informatică lui, cel puțin deocamdata. Dar l-am distilat puțin mai departe în cel puțin trei elemente componente. Intrări, astfel încât ceea ce este problemă încercăm să rezolve? Ieșiri, ceea ce este răspunde suntem în speranța de a obține? Și reprezentarea acolo de. Și nu vom insista aici pe după pe binar, sau chiar ASCII, și altele atât de mult, dar mai degrabă ia acordat pe care le poate reprezenta această informație, deoarece mult mai interesante piese de aceste probleme nu sunt doar intrări și ieșiri, dar algoritmii care merg în rezolvarea acestor probleme. Și s-ar putea retrage de la de altă zi pe care le a luat o destul de tradiționale Conceptul de a privi pe cineva într-o carte de telefon destul de mare, sau mai general digital in aceste zile, doar un set de date foarte mare. O lista de contacte foarte mare, cu o mulțime de nume sortate în ordine alfabetică. Și ne-am dat seama că în timp ce eu ar putea apropia de această problemă, pur și simplu prin utilizarea unui liniar Pagina approach-- de pagină, sau chiar două, la un time-- am realizat că algorithm-- mai intuitiv doar un fel de divizare și cucerirea din nou problema, și din nou, și again-- l înjumătățirea cu fiecare timp, ne-a dat acest rezultat verde. Și e atât de mult mai plat deoarece sugereaza că, chiar și ca această problemă devine mai mare și mai mare, așa cum este cazul acestor zile cu date seturi și reality-- Facebook și Google rezultatele căutării și like-- face algoritmul nostru efectua la fel de eficient cu aceste mușcături mai mari așa cum a făcut chiar și cu muscaturile mici. Acum duce la intrebarea, ce putem de fapt rezolva în mod similar cu acest tip de intuiție? Acest tip de diviziune și cucerire? Ei bine, am putea face ceva ca acest lucru astăzi aici. Am putea lua prezență. Deci, poate ca 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- nu va fi tot atât de eficient. Deci, așteptați, școala primară. 2, 4, 6, 8, 10, 12, 14, 16, 18 și așa mai departe. Dar am putea face un pic mai bine? Sunt destul de sigur eu nu pot face acest lucru de unul singur. Deci, dacă veți umorul ne doar un moment, ne-am adus cu noi un algoritm care este tocmai am primit trei etape, dar nu require-- dacă Nu mind-- noi toți se ridice în picioare, dacă ar fi. Deci, cu noi toți în picioare acum, pas unul dintre acest algoritm este următoarea. Ridică-te și să alocați te numărul 1. Deci, în acest moment, literalmente toată lumea în această cameră sperăm se gandeste la ei înșiși, Cu toate acestea dur, numărul 1. Acum pas a doua a acestui algoritm este O să implice următoarele. Pasul doi, pereche off cu cineva în picioare, adăugați numerele împreună, și adoptă suma ca numarul tau nou. Cec bun-simț rapid. Ce numar este pentru toată lumea gândesc acum? Deci 2, cu excepția, poate, pentru unul, ciudat, persoana singur. Dacă avem un număr impar de oameni în cameră. Deci, o persoană ar putea fi încă numărul 1, e în regulă. Dar pasul trei aici, o de ar trebui să stai jos. Celălalt trebuie să reveniți la pasul doi, și se repetă, dacă ar fi. Deci, dacă încă în picioare, ar trebui să fie printre cei care merg înapoi la pasul doi. Continua. Câțiva oameni încă în picioare. Deci, în cazul în care încă în picioare, pereche cu cineva. Bine, în scădere în jos. Câțiva oameni încă în picioare. Te voi ajuta dacă este nevoie. Amintiți-vă de Takeaway cheie aici este modul în care mult mai rapid acest lucru este decât mine numărare. Deci, să vedem. Pot ajuta. Deci, ce număr sunt încă gândești? Audiența: Sunt la 44. David J. MALAN: 44, așa a merge mai departe și stai jos. Ce număr te gândești de? Audiența: 74. David J. MALAN: 74. Bine, mergeți mai departe și stai jos. Cine altcineva este încă în picioare? 86. Și este cineva încă în picioare? Ce număr? Am auzit 67. Și apoi în top? 32. Oricine altcineva încă în picioare și de gândire a unui număr? Oh bună. Scuze. Revin imediat. 42. Oricine altcineva? Audiența: 47. David J. MALAN: 47. Este cineva încă în picioare care nu a fost inregistrat? Deci numărul final de persoane într-o cameră care are 497 de locuri este-- toate sunt filled-- este 390. Deci, aceasta este mare. Vom discuta în curând noțiunea de o eroare într-un program de calculator. Dar vom reveni la asta înainte de mult timp. Dar, în teorie, ceea ce ar putea s-au întâmplat doar acum? Deci, chiar dacă au existat trei mari pași pentru acest algoritm, fiecare dintre aceste a fost doar un fel de-o singură operație de mare. Și nu a existat acest ciclicitate să-l în care, dacă ați fost încă în picioare, ai continuat drumul de la pasul trei la doi, Pasul trei la doi, pasul trei la doi. Dar ce se întâmplă ținut pe fiecare iterație? Fiecare ciclu de această buclă? Ce se întâmpla în altă parte în cameră? Nu numai acelasi lucru, dar ceea ce se întâmpla la jumătate din tine? A sta jos. Și deci nu în minciuni acest insight, la fel ca exemplul de carte de telefon, în cazul în care jumătate dintre care sunteți sta jos de fiecare dată, problema este de pornire cu 400 de persoane, poate, apoi la 200 de persoane, peste 100 de persoane, apoi 50 de persoane, și așa mai departe. Și așa ne-am Whittle la teorie la doar o singură persoană, gândire din valoarea totală a tuturor. Acum realitate, unele dinamica socială, și unele erori aritmetice ar putea contribui la acest bug final. Dar, în teorie, în timp ce a fost încă de numărare departe, luând câteva zeci trepte, sau sute de pași să vă conta, pentru a număra o cameră plină de 500 sau cam asa ceva de oameni ar fi luat mult mai puține etape, pentru că puteți împărți doar 500 și 1/2 de atâtea ori. Și așa fel ca cu telefonul rezervați exemplu de altă zi, am ceva logaritmică ca să spunem așa, prin care, dacă am fost cu toții operează la unison, și ignorând erori de adiție, ar am au realizat exact acest tip de timpul de funcționare? Acum, pentru a fi corect, un fel de inselat, în că efectul de levier o altă resursă. Întrucât este doar unul de la mine, Am sute de indatorare tine. Dar care ar putea fi declarat a fi un exemplu de procesare paralelă, sau o stare de arta foarte mult în vogă în cazul în care computerele aceste zile au mai multe procesoare, sau mai mult punct de vedere tehnic, mai multe nuclee, și poate face cu adevărat mai multe lucruri în același timp, la fel ca tine Tot ce facem acolo, în paralel. Dar amintesc că ceea ce de asemenea, a făcut miercuri a fost să încerce să captureze această intuiție și formalizarea în codul. Ceva de genul pseudo-cod. Și, de fapt, și sper că veți iartă, e ca si cum 80 de grade aici. Deci, am de gând să ia acest off pentru doar un pic. Ceea ce am crezut că vom face este de tranziție acum la o cerere prin care ne angajăm din nou publicul, dar scrie un program în limba engleză cum ar fi sintaxa, cu care să rezolva această problemă aici. [VIDEO PLAYBACK] Unt de arahide timp jeleu -E. Unt de arahide timp jeleu. Unt de arahide timp jeleu. Way ya! Way ya! Way ya! Way ya! Acum nu te duci! Nu te duci! Nu te duci! Nu te duci! Unt de arahide jeleu! Unt de arahide jeleu! Unt de arahide jeleu! Unt de arahide jeleu! Arahide, unt de arahide jeleu! Unt de arahide jeleu! Unt de arahide jeleu cu o bâtă de baseball. [END PLAYBACK] David J. MALAN: --that video, dar este un pic dependență, dacă nu un pic enervant. Dar pentru a face acest lucru, m-am gândit ce ne-ar faceți este să încercați să scrie un program împreună, pentru care avem nevoie de trei voluntari. Trebuie să fie confortabil pe aparatul de fotografiat și internet. Sam, haide sus. Cămașă violet, chiar aici, haide sus. Și de aici, lasă-mă să du-te un pic mai departe înapoi. Crimson și tricouri albastre, haide sus. Perfect. Haide acum. Hai sus, haide sus. Și care e numele tău? Erica. David, mă bucur să te cunosc. Dacă doriți să luați acest scaun aici. Aceasta este Sam. Care e numele tău? Antonio. Antonio, bucur să te cunosc. Erica și Sam, dacă ai fi dori să aibă un loc aici. Ceea ce am venit pregătiți cu, ca astia sunt descoperirea, este ingredientele cu care să facă un sandwich cu unt de arahide si jeleu. Acum, acest lucru ar putea fi ceva care luați foarte mult de la sine. Dar ne-am dat fiecare din cele trei voluntari here-- doi voluntari și Sam aici, o pâine fiecare, o placă, un cuțit, un borcan de jeleu sau gem, și un borcan de unt de arahide. Și obiectivul la îndemână acum este va fi pentru aceste trei pentru a face un unt de arahide și jeleu de tip sandwich. Dar ceea ce am de gând să faci este așteptăm audience-- deoarece voi toti cu siguranță știu cum să facă acest atât de bine în reality-- sunt de gând să ne furnizați pas cu pas instrucțiunile. Pseudo-cod, dacă vrei. Așa că voi juca rolul de scrib aici. Și am un pic a-do list, și în așa fel încât fiecare dintre voi, o la un moment dat, strigă un potențial instruire, voi scrie-l jos, repeta după cum este necesar. Și apoi voi sunt de gând să facă un sandwich cu unt de arahide și jeleu doar de a face ceea ce se spune. Deci, cred că de voi ca calculatoare. Puteți face doar ceea ce ți se spune. Nu există ipoteze, nici o întrebare. Trebuie doar să o faci. Deci care ar dori să risc major pentru prima instrucțiuni pentru a face un sandwich PBJ? Pe balcon acolo. Audiența: Deschideți punga de pâine. David J. MALAN: deschide sac de pâine, dacă vreți. Deci, să vedem. Să repeta, și de a lua un pic mai precis. Bun mod de a începe, totuși. Pasul doi, altcineva. Acum nimeni nu vrea să se ofere voluntari. Pasul doi, în fața. Audiența: Deschideți interior sac de pâine, de asemenea. David J. MALAN: deschide sac interior de pâine, de asemenea. Mare, am de învățare. Un pic mai precisă. Hai să de lucru. Da, în cămașă verde. Audiența: [inaudibil] David J. MALAN: felii de pâine. Scoateți cu grijă două felii de pâine. Asta e bine. Pasul patru, altcineva? Aici, da? Audiența: [inaudibil] David J. MALAN: Locul pâine pe placa. Pasul cinci? Pasul cinci, da? Audiența: [inaudibil] David J. MALAN: Pe partea de sus de-- Oh, de mână. Pune mâna pe partea de sus de unt de arahide. Este că ceea ce am capul? Audiența: Da, și deșurubați. David J. MALAN: si-- spune din nou. Audiența: [inaudibil] David J. MALAN: și a pus capac lângă unt de arahide. Puneți ușor mâna pe Partea de sus a unt de arahide, și deșurubați, și a pus capacul alături de unt de arahide. OK, pasul șase. Pasul șase, altcineva. Da? Audiența: [inaudibil] David J. MALAN: spune din nou. Audiența: Repetați pasul cinci din nou. David J. MALAN: Și repetați pasul cinci, din nou, care este de gând să creeze un pic de o problemă acum dacă vom face acest lucru pas cu pas. Deci, acum ne întoarcem la pasul cinci. Puneți ușor mâna pe partea de sus de unt de arahide și deșurubați și a pus capac lângă unt de arahide. Apoi apucați unt de arahide și repetați pasul cinci din nou. Așa că vom trece peste asta buclă infinită, dacă vreți. Pasul șapte, altcineva. Da, în spate. Audiența: [inaudibil] David J. MALAN: top --on de alte. Audiența: [inaudibil] David J. MALAN: Pe altă parte, pe de altă parte de sus. Vrei să vii doar aici? Cum am terminat instrucțiunile? Care este restul instrucțiunii? Audiența: Ignorarea partea. David J. MALAN: Ignorarea partea. Să începem de peste. Pasul șapte. Audiența: [inaudibil] David J. MALAN: Prindeți cu opune hand-- acest lucru este bun. Aceasta este, de fapt bun. Audiența: [inaudibil] David J. MALAN: Și jar-- plastic Audiența: [inaudibil] David J. MALAN: Și twist-- Audiența: [inaudibil] David J. MALAN: timp de două secunde. Doar deschide borcanul cu unt de arahide. Sper vei ierta. Deci, să presupunem am ajuns acolo. Deschideți borcan de unt de arahide. [Aplauze] David J. MALAN: Pasul opt, să mergem. Pasul opt, da, în spate. Audiența: [inaudibil] David J. MALAN: Bine. Pasul nouă, da? Audiența: [inaudibil] David J. MALAN: --out de borcanul unt de arahide. Si-- si ce? Audiența: [inaudibil] David J. MALAN: Și a pus cuțit înapoi în unt de arahide. Pasul zece. Pasul zece. Audiența: [inaudibil] David J. MALAN: Pune cuțitul out, iar apoi scoateți sigiliul. Nisa. Pe unt de arahide. Bine, etapa 11. Audiența: [inaudibil] David J. MALAN: OK, calculator gri urmați de calculator albastru sau roșu. Bine. [Aplauze] David J. MALAN: Adu-ne acasă. Cuplu mai multe etape. Ce urmeaza? Etapele 12. Pasul 12. Da? Audiența: Pune una dintre feliile de pâine ușor pe una din mâinile tale. David J. MALAN: Unul din mâinile tale. Și apoi, pasul 13. Da? Audiența: [inaudibil] David J. MALAN: felie de pâine --on. Bine. Destul de bine. Pasul 14, da. Audiența: Undo pas 13. David J. MALAN: Undo pas 13. Să trecem la jeleu. Este un program de 100- pas, dar ne-au la pasul 15. Da. Audiența: [inaudibil] David J. MALAN: 7 prin 13 folosind jeleu, pentru că cei mers atât de bine. Repetați pașii 7 prin 13, folosind jeleu. Deci profite de jumătatea inferioară a borcan jeleu cu o mână pe partea de sus. Pe de altă alta a alte top, ignorând partea, apuce cu mâinile opuse, capacul și vasul de plastic în partea de jos, și răsuciți timp de două secunde. Apoi, deschideți borcanul jeleu. Și, în fine, să încercăm să să ne dea ceva comestibil. Pasul 16. Deci, de ce nu l-am lăsa acolo. Va multumesc foarte mult pentru cele trei voluntari. [Aplauze] Avem un pic CS50 stress în adâncime pentru tine. Acesta a fost de gând să fie un sandviș dar-- Deci, ce a fost punctul de, dincolo de a avea un pic de distracție cu algoritmul? Dar realitatea este că chiar și atunci când te programarea unui calculator, aveți nevoie pentru a fi super precis. La fel de complex sau intimidant ca propriul computer ar putea fi foarte bine pentru tine, la puțin atunci când ceva nu merge bine, realitatea este că este un destul de prost dispozitiv care a fost inventat de noi, oamenii, și poate face doar un subset de ceea ce am do-- uneori cu siguranță faster-- dar nu știe cum pentru a face presupuneri. Ea nu știe cum să fie pe aceeași lungime de undă ca tine. Acesta va face doar cu precizie ceea ce-l spun. Și veți fi lovit, poate, așa cum vom începe scrierea de cod real cu seturi de probleme prima și dincolo, cât de ușor este de a face o presupunere ca om, și nu anticipa am nevoie să se ocupe de acest caz, sau acest caz colț, ca să spunem așa, care ar putea foarte bine apărea în cazul în care, de exemplu, a avut Sam singurul borcan compresibil de jeleu, în timp ce oricine altcineva a avut unele borcane de sticlă ca bine. Deci, înainte de a ne întoarce nostru atenție la unele codul actual, permiteți-mi să introducă capete de aici la Yale curs de. Prietenii noștri Scaz, Andy, și Jason să vină și să spună salut. [Aplauze] SCAZ: Am pierdut temporar Jason. Bună din nou, toată lumea. Numele meu este Scaz. Am fost de predare la Yale din 2001. Și când eu nu sunt de predare, cercetarea mea este în robotică și inteligență artificială. Și anunțul că am astăzi este că, începând într-o câteva săptămâni, vom fi adus unele materiale suplimentare pentru a CS50 pentru a vorbi despre software-ul de informații. Vom vorbi despre modul în care locuri precum Netflix și Hulu poate recomanda filme care ați putea dori să urmăriți. În cazul în care vom vorbi despre modul în care masini-driver mai puțin de fapt locul de muncă. Și vom fi în măsură să sol aceste lucruri în conceptele că sunteți de învățare în această clasă de astăzi. Pentru ca toate aceste lucruri sunt construit pe aceeași fundație. Și asta e ceea ce acest Seria va explora. Deci Abia nerăbdare să vedem mai mult de tine toate, și ai de gând să ajungă la vezi mai mult din noi toți foarte curând. Permiteți-mi să prezint apoi Jason. JASON: Max toată lumea. Numele meu este Jason. M-am dus, din păcate, să Harvard ca un student. Care va să se taie din fluxul real. Și acum sunt aici în calitate de lector în departamentul de informatică. Și mă ajuta alerga cursului cu Scaz, David și Andy. Andy: Hei baieti. Numele meu este Andy. Eu sunt de fapt doar Yale elev pe scena acum. [Aplauze] Sunt în Berkeley College, originar din Solon, Ohio. Și am fost unul dintre acei copii în cazul în care, atunci când am venit la Yale, M-am gândit cu adevărat că nu aș trebuie să se uite la un număr vreodată. Și apoi am realizat că ai nevoie atât știință și QR credite pentru a absolvi. Și așa primavara mea student în anul întâi, am luat o clasa, o CS, intro CS clasa aici la Yale. Am fost ca, acest lucru este ca de fapt destul de cool. Și în timp ce de fapt am ajuns de declarare ca o afacerile globale majore, competențele Am învățat în CS și programarea sunt atât de aplicabile orice domeniu alegeți să faceți. Iar personalul de aici la Yale, am fost atât de greu la locul de muncă să se pregătească pentru voi. Si asteptam cu nerabdare sa vad toate în secțiune și birou ore. Deci da. [Aplauze] David J. MALAN: Mulțumesc. Deci, chiar înainte de a început de clasă, am avut o oportunitate să se plimbe campus cu un telefon mobil și să ia unele selfies în formă videoclip într-adevăr primul meu tur al campusului Yale aici. Și așa ne-am gândit împărtășesc o dur tăiat de exact acest lucru ca Scaz și Andy si Jason mi-a luat prin campus. [VIDEO PLAYBACK] [Sirens] -David. Bun venit la Yale. -Bine ca te vad. -Ma bucur sa te vad. -Putem Merge într-un turneu? -Să Mergem pe un tur. Tur -Road. -Acest Semn a fost acolo pentru un timp. -Whah, CS50. Grăbește-te! Du-te, du-te, du-te, du-te. Ar trebui să [neauzit] Harkness Tower. -Si Am văzut că de câteva ori. [Aplauze] Uite-te de motocicleta! Ahh! Bună Frank. Ce-i treaba, băieți? -Ce mai faci? -Bine ca te vad. Bun venit la video. Nu te purta prea excitat. -Am Dragoste Silliman. Ahh! -E Fost aproximativ trei ore de la Jason a avut înghețată și Nutella. Așa că trebuie să se oprească din nou la Silliman pentru un pic. -Nu E chiar [Inaudibil] totuși, doar faptul că ei o au aici este atât de uimitor. Omule, nu e Nutella la fiecare masa. -Nu A fost anul trecut prea. Da. Spune multe despre Yale până acum. Dar eu acum, că TD acolo. Și care este considerat în afara campusului. -Aici Avem arhitectura gotica. Faimos la nivel mondial. Avem unele arhitectura gotica mai multe. Și construcții, și mai arhitectura gotica. Bună. Acest lucru este în cazul în care avem de ore de birou Marți până joi în Hogwarts, ca [neauzit]. -In regula. Asta e pentru turneu. Suntem la Universitatea Yale lui Facultatea de Drept, în cazul în care prelegere astăzi este pe cale să aibă loc. Să capul,. [END PLAYBACK] David J. MALAN: Și care ne aduce aici, acum. Deci până acum, am fost concentrându-se pe pseudocod, care este această sintaxă limba engleză-ca. Ea nu are nici o specificație prescrisă. Este doar să utilizați unele limbă intuitiv, dacă doresc să explic ceea ce vrei sa faci. Dar să începem acum să tranziție codul, ca majoritatea oamenilor ar spune. Dar mai precis, ceva cunoscut sub numele de cod sursă. Aceasta este limba pe care oamenii scrie că computerele ultimately-- eventual după un numar de steps-- în cele din urmă înțelege astfel încât să știe cum să facă ceva. Că ai văzut o bucatica de acest poate miercuri. Acesta este un exemplu care incredibil, underwhelming atunci când pur și simplu rulați spune "Hello World". Și este scris într-un limbaj numit C, care este foarte asemănătoare sintactic la o mulțime de alte limbi care ar putea să nu știi, dar s-ar putea să fi auzit de cum ar fi Java, și C ++, Python și, și Ruby, și altele asemenea, și într-adevăr, ne vom petrec o mare parte din semestrul folosind C, și apoi spre sfârșitul semestru, bazându-se pe el, și introducerea orice Numărul de alte limbi. Printre ei PHP, JavaScript și, un limbaj de baze de date SQL numit. Dar cu C, ceea ce vom avea această înțelegere de jos în sus de exact cum muncă calculatoare, ceea ce se poate face cu ei, și cum poți rezolva problemele cu atât mai eficient cu această stratificare care am discutat miercuri, și în picioare pe umerii altora. Dar mai multe despre asta pentru a veni. Astăzi ne uităm la un mediu mai simplu, dar un fundamental identice mediu cunoscut sub numele de zero de către prietenii nostri de la MIT Media Lab. Aceasta este o grafică limbaj de programare, Scratch, prin care aveți posibilitatea să glisați and drop lucruri care arata ca piese de puzzle care numai de blocare în cazul în care face sens logic sau programatic să facă acest lucru. Dar o să ne permită să avea o conversație despre toate din aceeași programare fundamentele pe care unii dintre voi să știe deja, că mulți dintre voi s-ar putea să nu știu nimic de fără pentru a obține împotmolit sincer, în intelectual sintaxa neinteresant de punct și virgulă, și paranteze, și citate, și altele asemenea. Toate acestea, mai devreme pe, sunt o distragere a atenției la ce sunt interesante și idei cu adevărat utile. Deci, haideți să aruncăm o rapid privire la mediul aici, astfel încât să știi ce așteaptă. Și, de fapt, printre jocuri pe care le poate juca sunt câteva programe scrise prin CS50 proprii foști elevi. Unul dintre ei, eu, voi fi acesta scris în școală absolvent pentru mine. Dacă aș putea lua un voluntar care e dispus să joace un joc pentru prima dată. Sigur. Haide sus. Care e numele tău? Audiența: Angela. David J. MALAN: Angela, haide sus. Deci, Scratch a fost în afara de cativa ani. Și când am fost în școală absolvent, Am fost cruce înregistrate la MIT, luând profesor Mitchel Resnick de curs de tehnologii educaționale. Și am fost printre prima studenți din lume pentru a efectiv beta încercare Scratch. Și proiectul meu a fost ceea ce Angela acum sa oferit voluntar grațios pentru a juca numit Oscartime. Deci, am de gând să merg mai departe și dublu clic pe pictograma aici. Se va deschide o programare mediu care vom arunca cu capul în curând în. Am de gând să full-screen l pentru Angela, aici. Am de gând să lovit verde pavilion într-o clipă. Și apoi o mulțime de gunoi este de gând să cadă din cer. Și ai de gând să utilizați mouse-ul aici pentru a trage de fapt, și fixați coșul de gunoi în cutii de gunoi Oscar lui. Deci, dacă vrei să mergi mai departe și faceți clic pe steagul verde, jocul va începe. [MUSIC JOC] Oh, îmi place gunoi. Orice murdar sau murdar sau plin de praf. Orice zdrențuită sau putred, sau ruginit. Da, îmi place gunoi. Dacă într-adevăr doriți să vedeți ceva prost, uita-te la asta. Am aici o sneaker care este zdrențuite și uzate. Totul este plin de găuri deține și șireturile sunt rupte. Un cadou de la mama mea ziua în care am născut. Îmi place pentru că it's-- David J. MALAN: --green aceste zile doar fi aruncat totul la gunoi. Și așa mai departe ceea ce a CS50 propriu did-- personal Jordan, care s-ar putea întâlni today-- are de fapt actualizat acest lucru pentru timpurile de astăzi. Și așa să-mi permiteți să se deschidă un remix în schimb pentru Angela. Și vom juca acest loc pentru câteva momente în care acum esti Va trebui să decidă dacă între pentru a arunca ceva la gunoi, sau reciclați sau compost l. Deci, există un pic de presiune pe tine pentru a obține acest drept în fața dumneavoastră pentru a 392 497 colegii de aici în sală, dacă ar fi. [VIDEO PLAYBACK] [MUSIC JOC] Oh Îmi place gunoi. Orice murdar sau murdar sau plin de praf. Orice neregulat sau putred sau ruginite. Da, îmi place gunoi. Dacă într-adevăr doriți să vedeți ceva prost, uita-te la asta. Am aici o sneaker care este zdrențuite și uzate. Totul este plin de găuri și șireturile sunt rupte. Un cadou de la mama mea ziua în care am născut. Îmi place pentru că e gunoi. Oh, îmi place gunoi. Orice murdar, sau murdar, sau praf. Orice neregulat sau putred sau ruginite. Da, îmi place gunoi. Iată câteva lucruri mai putred. Am aici niște newspaper-- [END PLAYBACK] David J. MALAN: --are de fapt compostabile. Dar vă mulțumesc pentru voluntarul nostru, Angela. Avem o minge de stres pentru tine, aici, de asemenea. Așa că vă mulțumesc. Deci, acesta a fost scris de mine. Dar acum, unul câte un fost student real care a implementat acest lucru, care este un joc. Toate în această limbă numit Zero, ne vom în curând că coaja înapoi straturile de. Dar dacă am fi like-- cum despre un alt voluntar? Dreapta. Haide sus. Care e numele tău? Glance? Lance. Lance, haide sus. Îmi pare bine să te cunosc. Vino pe această cale. Deci, aceasta ar putea avea un temă familiar pentru unii dintre voi. Dar veți vedea că prea nu poate fi interactivitate, prin care ai putea fi de fapt Rolul personajului se deplasează în jurul. Îmi pare bine să te cunosc. David. Eu vă dau, Pikachu. Instrucțiuni va despre să vină de pe ecran. Dar, în scurt, ai de gând să doresc să prindă lucruri gustoase, și pentru a evita bombe și alte lucruri. Cu cursoarele în întregime. Deci a lovit bara de spațiu. -Pikachu. David J. MALAN: Catch chestii din stânga, nu prinde chestii pe dreapta. [MUSIC JOC] Deci, o ultima aici. Dacă am putea avea o mai voluntar aici. Ne-am gândit recrea ceva from-- în shirt-- galben de miercuri. Cum te numești? Mary, haide sus Mary. Și amintesc miercuri am introdus noțiunea de binar, și becurile binare. Aceasta este de fapt o acum punerea în aplicare a aceluiași interfață că am avut pe iPad cu lumina bulbi, dar aici prestate digital. Și, mai degrabă decât a face un stres ball-- bucur să te cunosc, David. Am adus o lumină câteva becuri de la Cambridge. Dacă se poate, pe cei clic becuri pentru a le activa și dezactiva, veni cu binar reprezentarea spun 256. Și veți vedea în mijloc, concordanța curent. Astfel încât unul este pe. Deci din stânga bit este pe. MARY: Da, [neauzit] David J. MALAN: Ei bine, așa că avem doar-- oh. Deci aceasta este coloana 128. Deci suntem de până la 128. Trebuie să ajungem la 256. Și puteți joace pe și în afara, nu e mare lucru. Sau puteți lovi că 128 de mai multe ori, dacă doriți. Bine, bine. 24. Da, se apropie. Mai aproape! Oh, ce-i problema atunci? Deci, ce-i problema? Deci, ceea ce avem nevoie pentru a rezolva aceasta problema? Asa ca am nevoie de un alt bit. Și acest lucru este perfect rezonabil în realitate, nu? Dacă doriți să conta din numărul Un, 2, 3 și 4 la 5, 6, 7, 8, 9 să se rostogolească de fapt pe la 10, ești avea nevoie de un pic suplimentar. Deci, haideți să de fapt înapoi aici, și să vină aplice: care a fost în mod evident, menit să fie un set-up. Nu poți face 256 cu doar un bec. Deci, cum despre pur și simplu numărul 50? Number 50. Excelent. O rundă mare de aplauze pentru Maria și ei, de asemenea. Multumesc. Deci, acest topic-- intenționat ca că asta-- va reaparea, de fapt. Cea mai mare valoare pe care le puteți reprezintă cu opt biți, sau un octet, este într-adevăr 256. Dar nu în cazul în care începi numărând de 0, după cum am să țină face de către având toate aceste biți de pe. Dar acum Haideti sa patrundem in activului suport punerea în aplicare a acestui mediu, și tachineze pe langa unele dintre aceste idei. Deci, într-un moment suntem prezenti la o câteva Bazele de programare diferite. Prima dintre care sun declarație. Un fel de verbe, dacă vreți. Acțiuni. Lucruri pe care ar trebui să fie făcut. Și într-un moment veți vedea blocuri care arata ca acest lucru. Spune "Hello World", de exemplu. Sau așteptați o secundă. Sau pentru a juca miau sunet. Și într-adevăr mediul în care vom face acest este numit Scratch. Și dacă am trage în sus Scratch fără preloading orice cod real, haideți să aruncăm o scurtă privire la acest interfață cu utilizatorul, ca să spunem așa. Comenzile cu care interacționează. Pe partea de sus din stânga aici la ecran, sub meniuri, avem scena, ca să spunem așa. Deci, Scratch este ceea ce numim Sprite să. E un personaj. Și el poate fi controlat prin scrierea programelor împotriva lui. Și el va fi capabil să se deplaseze sus și în jos și stânga și la dreapta în acest mediu, nu doar prin mutarea mouse-ul, dar programatic. Pot spune-i de mers pe jos dreapta, jos stânga, în sus, în jos sau altele asemenea. Și pot introduce alte sprite sau caractere, de asemenea. Într-adevăr, pe fundul aici este locul unde veți vedea lista de sprites. În momentul de față, doar am o, dar pot crea mai mult, și vor apărea exact acolo. Deci, dacă înapoi pentru un moment, cum ar fi Oscartime-- de exemplu, Oscar, pe stânga, coșul de gunoi poate, a fost un sprite. Și lucrul în mijloc, reciclare bin, a fost un alt sprite. Și coșul de compost a fost un alt sprite. Și fiecare bucată de gunoi sau reciclabile care a fost care se încadrează din cer este de asemenea un Sprite, fiecare dintre care a fost programat individual. Cum vă programați? Ei bine, aici pe dreapta în partea stângă este zona script-uri. Și acest lucru este în cazul în care putem drag and drop piese de puzzle. Într-o săptămână, se va fi în cazul în care vom scrie cod echivalent cu mai mult de o tastatură, dar pentru astăzi va fi drag and drop piese de puzzle, The palete pentru care poate toți fi găsit aici chiar în mijloc. Într-adevăr, în mijlocul aici există o grămadă categoriilor de puzzle piese sau blocuri. Unul este legat de mișcare, uite, sunet, un creion merge în sus și în jos, date, evenimente de control. Nu este destul de sigur încă ce toate acestea înseamnă, dar veți vedea că le-am fost frumos clasificate. Și pentru a scrie un program în Scratch, să facă exact acest lucru. Am de gând să încep în Evenimente, și trageți asta aici. Când pavilion verde clic. Acum, de ce asta? Ei bine, reamintesc faptul că voluntarii noștri a venit, primul lucru pe care am sau ei au fost dați clic care verde pavilion în colțul din dreapta sus. Și asta înseamnă doar a porni programul. Deci, atunci când acest eveniment se intampla, ce vreau să fac? Am de gând să merg în pare, și am de gând să fac "salut". Și am de gând să schimbe acest lucru și spune ceva de genul "salut Yale." Iar acum am de gând pentru a mări out, faceți clic pe steagul verde, și voila, am scris un program. Nu e tot ce interesant doar încă, dar acest lucru este exact în cazul în care fiecare din cei autor început, ambele cu Pikachu, iar bulbi binare, și Oscartime, și atât de multe mai multe exemple. Începi super-simplu, și apoi începe să strat, și se adaugă la caracteristici și funcționalitate. Deci, ce sunt aceste straturi O să constea din? Ei bine, dincolo de declarații, vom, de asemenea, au lucruri care sunt puțin mai fancily numit Boolean expresii, după cineva pe nume Bool. Și o expresie booleană este pur și simplu un expresie care este fie adevărat sau fals, da sau nu, 1 sau 0. Orice poli opuși de genul asta. Este fie adevărat sau nu. Dar noi, de asemenea, vom vedea cele care s-ar putea arata ca aceasta. Deci, de exemplu, este mouse-ul jos? Sunt un fel de întrebări, dacă vrei. Mouse-ul este fie în jos, adevărat sau nu e, fals. 1 sau 0, dacă vreți, tinde să fie de cartografiere. Adevărat este 1, fals este 0. Ei bine, ceea ce despre mai puțin de asta? Sau cel puțin așa, este mai mică decât această aceasta? Aceasta este o chestiune de felul. Și dacă ai pus doi numere acolo, fie x va fi mai mică de y sau egal cu y, sau mai mare decât y, dar acest bloc vom vedea, este doar O să răspundă la întrebarea, este această mică decât cea? S-ar putea vedea, de asemenea am ceva de genul asta. Indicii mouse-ul atinge. Deci, în Scratch, puteți cere întrebarea, este Sprite atingând cursorul mouse-ului? Cu alte cuvinte, este situându-cursor peste capacul, sau echivalentul? Vom vedea lucrurile Anding împreună. Puteti cere două întrebări, și asigurați-vă că ambii vă dau da sau raspunsuri adevarate înainte luarea unei decizii de a face ceva. Dar atunci cum a face tu a lua decizii? Ei bine, avem aceste conditii. Și am văzut acest lucru în nostru exemplu de cartea de telefon. Privind la stânga sau drept pentru Mike Smith. Și în starea sa face ceva cu potențial, în cazul în care o expresie booleană este adevărată. Și într-adevăr, observăm formele acum. E un substituent acum pe tavan care putem fit-- dacă am înapoi o slide-- care forma. Nu e destul de aceeași dimensiune. Și într-adevăr, veți vedea că Scratch redimensionează lucruri dinamic pentru a se potrivi piese de puzzle, dar forma este ceea ce este important. Acest lucru arata ca că, și într-adevăr este aproximativ aceeași formă că trebuie să se potrivească acolo. Și dacă vrem să facem ceva în acest fel sau în acest fel, în cazul în care altfel, avem acest puzzle piesă în Scratch, de asemenea. Acum, să presupunem că vrei să face dacă, în cazul în care altcineva, sau altceva. Cu alte cuvinte, o cu trei căi furculiță în drum. Ei bine, ce poti sa faci doar uite la asta? Pot să această piesă de puzzle, și nu pare să se potrivească, dar din nou, Scratch va de a re-size frumos pentru noi. Am putea începe să strat aceste lucruri împreună. Deci, acum am un fel de trei- furculiță dacă acest lucru este adevărat, face acest lucru. Altfel, dacă acest alt lucru este adevărat, du-te în acest fel, mai du-te acest alt mod. Iar în Muppet film, furculiță în drum, ca să spunem așa, între Yale sau Stanford, a fost exact că, doar două condiții. Oricum merge în acest fel, mai du-te în acest fel. Ei bine, bucle există și în programare. Si am folosit aceste deja în clasă și în codul pseudocod, și cu siguranță în cele Programele zero pentru totdeauna. Scratch are această piesă de puzzle care va permite doar să faci ceva pentru totdeauna. Și, uneori, vrei de a face ceva pentru totdeauna. Nu este neapărat un bug, e pentru că vrei un ceas să continui, sau un joc ca jocul să continue. Sau puteți specifica un număr finit de trepte, ca și în acest bloc repeta aici, care se va repeta ceva de 10 ori. Putem seta variabile, vom vedea în curând. Și cu variabile, similare în spirit la algebra, cum ar fi X, Y sau, sau z. E ceva simbolic, care poate stoca o valoare, unele bucată de informații, că ați putea dori să-și amintească mai târziu. Cel mai bun exemplu în acest sens ar putea fi un joc în cazul în care aveți un scor, ca în Pikachu. Câte bucăți de tort și fleacuri ai prins? Ei bine, care ar putea fi o variabilă numit scor care începe la 0. Și apoi de fiecare dată când am prins-o bucată de tort sau bomboane, sau altele asemenea, acesta devine crește. Acesta se adaugă la unul la un moment dat. Și stochează astfel o variabilă o bucată de informații de genul asta. Apoi, nu e matrice, și vom veni Înapoi la acestea într-un timp săptămână sau două, dar o serie este un fel de ca un inventar sau un ghiozdan, în interiorul din care se poate pune lucrurile virtuale. Acesta vă permite să stocați mai multe mult de o bucată de informații. Și care ar putea fi utile Dacă în joc, tu esti un fel de mers pe jos în jurul valorii de iau lucrurile. Și poate doriți să le păstrați toate aceste bucăți de tort în jurul valorii de, și nu doar să mănânce le una după alta. Și apoi există o constructie crescator ne vom vin la numit funcții sau proceduri. Și, deși ne vom mai repede de aici, vom vedea că acestea sunt foarte soluție naturală la problemele că vom întâlni. Ca programele noastre începe ce mai mare ne vom începe a observa modele în codul pe care noi scriem, piesele de puzzle suntem drag and drop. Și de îndată ce observați te faci ceva nou și din nou, sau mai rău încă Copierea și lipirea de programare cod care le-ați scris, asta e, probabil, o posibilitatea de a factor în tot ce ține de copiere și lipire, și punerea în ceva numit "funcție". Dar mai mult pe cei din mult mai multe detalii înainte de mult timp. Și apoi există caracteristici chiar crescator. Pentru cei dintre voi mai confortabil, sau de a lua APCS sau echivalent, Scratch sprijină de fapt lucrurile cum ar fi fire și evenimente si mai mult. Deci dau seama că are un plafon destul de ridicat, chiar dacă este de asemenea foarte în linii mari, accesibile oameni care nu au programat înainte. Deci, într-adevăr, haideți să aruncăm o privire la un simplu program sau două. Ne-am uitat deja la modul în care s-ar putea spune salut cu zero. Lasă-mă să merg mai departe și deschide un mic program mai interesant că am scris în avans. Și a numit acest cuiva Pet Cat. Toate aceste programe vor fi disponibil pe site-ul CS50 lui. Într-adevăr, deja acolo. Astfel încât să puteți descărca le, și să se joace cu ei, și cu problema Set 0, care este, de asemenea pe site-ul cursului, te încurajat să se plimbe prin aceste. Și mai mult, avem o Numărul de videoclipuri, mers pe jos prin online, în care am și Echipa CS50 mergem cu adevărat prin fiecare dintre aceste exemple, la o mult ritm mai lent, o forwardable foarte rapid, sau ritmul rebobinabil, astfel încât să puteți merge prin acestea la timpul tău liber, de asemenea. Deci, aici e Scratch pe stânga. Iată un program de la dreapta care le-am deja pre-a făcut. Deci lasă-mă să măriți această. Și ar putea cineva în limba engleză, cunoașterea ceea ce știi, doar de acum cum la modul în care funcționează zero, un fel de spune într-o frază sau propoziție limba engleză, ce acest program aparent nu? Da, în cămașă de culoare portocalie. Audiența: [inaudibil] David J. MALAN: Da, în cazul în care dumneavoastră cursorul este pe Scratch pisica, reda un sunet meowing. Dar observați cum ne exprimăm asta. Există aparent o buclă acolo, pentru totdeauna. Și apoi există o condiție, în cazul în care expresia. Și colectiv, ce cei spui? Aceasta înseamnă acest program este doar întotdeauna de funcționare, și este doar întotdeauna așteaptă și vizionarea și de a asculta pentru mine pentru a muta mouse-ul meu pe pisica. Pentru că de fiecare dată când fac asta, ca propui, o să facă acest lucru. Permiteți-mi să începe programul. Nimic nu pare a fi întâmplă, dar observați cum este evidențiat acum într-o linie galbenă. Asta înseamnă doar rulează. Și pentru că există o pentru totdeauna bucla, se încă în desfășurare. Deci lasă-mă să se mute cursorul peste meu Scratch. [Miau] [miau] Și dacă l-am muta off, [Miau] acum se oprește, dar programul de încă în desfășurare. [Miau] Și astfel, adorabil. [Miau] Deci, haideți să deschidem puțin mai avansat exemplu numit Nu de companie Cat. Și acum să vedem ce se întâmplă aici. [Miau] meowing. Deci, este un pic pe pilot automat, dacă vreți. --pet pisica. Mă întreb de ce. [ROAR] [miau] Deci, cum a făcut acest lucru? Ei bine, puteți fel de motiv prin ea intuitiv, probabil. Dar să ne uităm la codul actual. Deci, din nou, în cazul în care steagul verde se face clic, face acest lucru pentru totdeauna. Ce vrei să faci pentru totdeauna? Ei bine, în cazul în care mouse-ul atinge pointer, apoi juca un sunet care este aparent numit Lion 5, care este în interiorul acestui proiect, altfel juca miau sunet, și apoi așteptați două secunde, astfel încât că nu este meowing fără încetare. De fapt, puteți începe foarte repede pentru tine si colegii de cameră tale enerva. Să elimina acest bloc. Și observați ce e frumos despre Scratch. Lucruri doar un fel de tragere și fixați și de blocare. Deci, din nou, ea creste la umple ceea ce vrei. Dar dacă am elimina acest lucru, și apoi joc a lovit, [COMPUTER blip SOUND] --it un fel de împiedicare peste în sine, pentru că este pur și simplu a face ceea ce vreau să spun. Este spune totdeauna juca acest sunet, dar Nu dau o șansă pentru a termina. Și așa ar fi un bug. Și de aceea am avut acest lucru aici acum. Așa că haideți să începem de fapt de la rămășițe un fel de joc de cuvinte puțin intended-- în care avem acum în mișcare pisica. Deci, am de gând să facă acest lucru pe zbor. Am de gând pentru a mări aici, doar să mă început la evenimente. Și pavilionul verde clic. Și există și alte modalități pentru a porni script-uri. Vom să-l păstrați simplu aici. Iar acum am de gând să merg înainte și du-te sub control. Și din nou, dacă vă uitați în cazul în care lucrurile sunt, doar să faceți clic în jurul valorii de, și, eventual, să le găsi din nou. Deci, vreau să fac totdeauna ce? Vreau să folosesc blocul de mișcare că știu exista, mutați 10 pasi. Deci, haideți să vedem ce se întâmplă aici dacă am juca acest joc. Din fericire aceasta nu merge prea departe. Pot încă un fel de el apuca de coada și trageți-l înapoi. Dar programul este încă în desfășurare, așa că e un fel de luptă mine. Dar că ar fi un fel de frumos dacă am rezolva conditionat acest cod. Deoarece aceasta este not-- de fapt, acest lucru este foarte nu un joc distractiv pentru oricine de orice varsta. Deci, haideți să încercăm să stabilească acest lucru prin având un fel de condiții. Deci, am de gând să merg în De control, și apoi, dacă. Îmi place această idee. Deci, după ce sa mutat 10 pași, lasă-mă să simt if-- unde sunt. Am de gând să merg în Sensing, și apoi se pare că pot merge aici. rând la meciurile forma. Dimensiunea nu, dar e de gând să crească pentru a umple. Și acum acest lucru este un pic meniu. Și acum mouse-ul pointer-- eu nu doresc mouse-ul, vreau margine. Deci Scratch este suficient de inteligent pentru a ști când un Sprite atinge marginea. Ce vreau să-l face de fapt? Lasă-mă să merg mai departe și de a schimba mișcare. Știi ce? Am de gând sa-l întoarcă. Deci, la 15 de grade nu este într-adevăr de gând să mă ajute. Vreau să se întoarcă și du-te în altă parte. Deci, haideți să vedem ce se întâmplă aici, dacă am lovit Joacă acum. OK, un fel de prost căutați, dar se face exact ceea ce am spus. Și se rotește tot Sprite. Acum se pare că pot rezolva asta. Și eu nu știu cum pentru a rezolva acest lucru la prima. Am avut un fel de futz în jurul și a se vedea cel mai bun mod de a face acest lucru. Dar dacă mă duc sa-- să vedem, de mișcare. Oh, am găsit asta. De fapt, Set Stil de rotație. Stânga, dreapta, sau nu roti, sau peste tot în jurul. Și se pare că e ceea ce vreau. Și am de gând să pun acest lucru nu este meu buclă, pentru că nu am nevoie pentru a seta stilul de rotație de mai multe ori. Am de gând pus-o la foarte de sus a acest program astfel încât să se setat o dată, și apoi își amintește. Iar acum am de gând să încerc din nou. Lasă-mă să opresc programul. Și acum că fix asta bug. Deci, eu sunt iterativ îmbunătățirea pe acest lucru. Programul este obtinerea unui pic mai complex și mai mare, dar eu iau copilul pașii ca să spunem așa, și mușcături mici din problema pentru a obține mai bine și mai bine. Dar asta, este un fel de lame. Știi ce? Ar cere cineva cu un foarte bun, voce înspăimântător dori să vină? Cineva cu o voce. Uh, da. Haide sus. În cămașa verde. Deci, se dovedește că e un alt distractiv lucruri, estetica si sunete la fel. Iată miau. Am faceți clic pe fila Sunete. [Miau] E miau. [Miau] [miau] [Miau] --actually ceva înregistrare de propria noastră aici. Deci, haideți să facă exact acest lucru. În loc de a folosi acest sunet pisică, să mergeți mai departe aici, și ceea ce e numele tău? Nick, mă bucur să te cunosc. E David. Deci, într-un moment, am de gând să apăsați pe butonul de înregistrare. Și dacă poți doar tipa in laptop, "Ouch" ca și cum ați tocmai a intrat în perete, care va fi mult mai apreciat. 1, 2. Nick: Ouch! David J. MALAN: Awesome. Și acum se poate face un pic de editare aici. Mergând pentru a scăpa de piese liniștite. Și cred că e bine. Multumesc foarte mult. NICK: Pleasure. David J. MALAN: Am doar redenumit "Ouch" dar acum am de gând să du-te înapoi la scripturile mele. Și există într-adevăr o notificare de sunet aici. Și am de gând să merg mai departe și să se joace Ouch sunet, și am de gând să face asta dacă se atinge numai marginile. Și apoi am de gând să l-au întoarce. Deci, haideți să vedem ce se întâmplă aici. Să mergem ecran complet. [VIDEO PLAYBACK] -Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! [END PLAYBACK] David J. MALAN: Deci iti dai seama că suntem cam norocos. Am de gând să-l aibă mișcare ca 100 pași la un moment dat. Efectul care acum se întâmplă la be-- [COMPUTER Glitch SOUND] Deci în termen de motiv. Deci, o oportunitate de a rafina că în plus, dacă vrem cu adevărat să. Deci, acum să introducă un alt concept. Să-mi intru în unul numit Numărarea Ovine și utilizarea ceva numit variabilă. Aceasta este o oaie adorabil puțin, și Mi-am schimbat costumul său ca să spunem așa. Deci, chiar dacă implicit este un pisica, puteți încărca, puteți desena, poti sa faci orice număr de caractere pe Sprite ta. Iata un program care este de gând să facă ceea ce în limba engleză? Bazat din nou doar pe ceea ce știi acum. Ce se face acest program? Da, o să conteze. Un număr de la un moment dat. Avem aparent au acest set contra. Nu știu ce este, dar poate e un variabil. E doar un container, x sau y. Dar contorul cuvântul este mai descriptiv decât X matematician sau y. Deci, putem folosi cuvinte în limba engleză pentru lucruri. Pentru totdeauna, înseamnă doar continua să faci asta. Spune contra. Acum, în cazul în care a venit asta? Ei bine, se pare că contor este o variabilă. Deci, este doar un alt puzzle piesă am creat în avans. Și chiar dacă se întâmplă să nu fie aceeași formă aici, în mod normal, ai spune ceva de genul salut aici. Puteți trage, de asemenea, o variabilă astfel că asta e ceea ce-i dăm spus. Apoi am așteptați pentru o secundă, am schimba contorul de unul, incrementarea prin adăugarea unui. Astfel încât efectul net este acest oaie numărare adorabil. Deși el însuși de numărare. Acum e foarte repede mergi la a lua plictisitor pentru că el va face acest lucru cu adevărat pentru totdeauna, dar asta e exact ceea ce program de proiectare a prescrie. Să încercăm acum un alt exemplu care foloseste o variabilă. Aceasta unul numit Hi Hi Hi, că se ajunge enervant repede. Acum, aceasta are două scripturi. Și astfel, din nou, vom lua măsuri pentru copii. Am inceput cu ceva super- mici, a adăugat la aceasta, a adăugat la acesta. Acum vreau să fac ceva chiar mai dinamic, așa că vreau să fie de ascultare pentru două lucruri diferite la un moment dat. Deci, pe partea stângă, atunci când pavilion verde se face clic, Am stabilit o variabilă pe care am scris în avans numit dezactivat. Și l-am setat arbitrar la 0. Deci, Scratch nu are adevărată și fals, dar are 0 și 1. Deci, eu pot aproxima aceeași idee. Și apoi pentru totdeauna, în cazul în care bara de spațiu este apăsat, apoi setați variabila la 0. Sau rău. Dacă se apasă Space, și dacă dezactivat, variabila, este 0, apoi setați dezactivat la 1, altceva setat dezactivat la 0. Acest lucru pare un fel de suntem doar fac și desfac muncă. Dar ceea ce este efectul? De fiecare dată când a lovit bara de spațiu, ce se întâmplă cu variabile meu numit dezactivat, în mod logic? Un fel de devine oglindită. Se schimbă de la 0 la 1, sau 1 până la 0. Așa că a luat câteva blocuri să-și exprime asta, dar toate Fac este basculând starea de această variabilă a 0 sau 1, sau 0 sau 1 de fiecare dată când am lovit bara de spațiu. Acum aici, ce-i asta face? Pentru totdeauna, dacă dezactivat este 0, Deci, dacă dezactivat este falsă. Deci, dacă nu e oprit, este semantică acolo, joacă mare leu de sunet, și cred că Hi Hi Hi pentru două secunde, așteptați două secunde. Deci observați acum acestea script-uri sunt efectiv de gând să ruleze în paralel, astfel încât se poate asculta pentru o acțiune, celălalt să ia o decizie pe baza acestei acțiuni. Si se poate face acest lucru pentru totdeauna. [Sea Lion BARKING] [Sea Lion BARKING] Este de gând să facă acest lucru pentru totdeauna și [Sea Lion BARKING] ca tocmai am făcut. Iar acum este încă în desfășurare dar am "dezactivat" jocul. [Sea Lion BARKING] Si asta toate tipul ăsta are acum prea. Să deschidem un alt exemplu aici. Lasă-mă să intru în Evenimente, și acum acest adorabil prea. Dar observați că are două sprites. Deci, nu doar două scripturi cu un sprite, dar două sprites. Și dacă am faceți clic pe tipul albastru ca am au deja, am sa vad ca un program aici că literalmente spune doar acest lucru, atunci când primesc un eveniment, spune "Polo" timp de două secunde. Deci, dacă v-ați jucat vreodată în o piscină, jocul Marco Polo, dacă script-ul tip Orange este nici o indicație, aparent de fiecare dată când a lovit bara de spațiu, ceea ce e tipul portocaliu de gând să faci? El va spune "Marco." Și apoi acest lucru este un bloc nou. Noi nu am văzut acest lucru înainte, dar a difuzat un eveniment. Și am putea spune orice eveniment ne dorim. Vom reveni la acest Poate înainte de mult timp. Dar difuzarea unui eveniment este o modalitate pentru un Sprite pentru a vorbi cu un alt prin în esență, trecerea un mesaj. Nu este un mesaj pe care îl vezi. Nu e ceva vizual. E un fel de mesaj calculator că celălalt este de ascultare pentru. Pentru că, într-adevăr, tipul albastru, rechemare nu are, atunci când pavilion verde clic. El are în schimb, atunci când primesc un eveniment. Când el devine dat această notă în clasă, ca să spunem așa, el ar trebui să spună "Polo." Și astfel efectul net este că atunci când am lovit steagul verde, nu se întâmplă nimic. Dar când am lovit bara de spațiu, spune el "Marco", el răspunde cu "Polo." Dar singura Sprite sunt interacționează cu este cea portocalie. Deci, aceasta este o modalitate de fel de asociate de mesaje între sprites și având le comunice unul cu altul. Acum să ne uităm la o ultimă de aici numit Fire. Si observa acest lucru prin joc el. Deci, acestea sunt două sprites. Pasărea este un fel de zbor în jurul. A viguros. Nu e nici o "Ouch", dar aceeași idee. Dar pisica pare destul de inteligent. Ce este pisica aparent faci? Și așteptați pentru ea. Ce este pisica aparent faci? Nu este vorba doar rigidă. El urma pasărea. Și astfel se pare, există o modalitate cu o combinație de blocuri here-- și să ne uităm la pisica foarte repede. Pentru totdeauna, dacă atinge pasăre, apoi joacă Lion 4, indiferent că este sunetul. Am auzit odată. În caz contrar, punctul spre pasăre, și pentru a muta cu un pas. Acum, faptul că este o pas este ceea ce dă pasărea un pic de un avantaj Inițial, dar dacă am în schimb face acest 10, de exemplu, așa că fiecare iterație a buclei e se deplasează 10 pași de timp. Deci, mai mult spațiu. Să vedem ce se întâmplă atunci. [LION ROAR] Nu toate că mult mai bine. Deci, acum să încercăm să îmbunătățească pe acestea un pic iterativ, și reveni la care noțiune de o funcție. Și într-adevăr unul dintre fundamentale takeaways de design de clasă. Nu doar scrierea programelor care funcționează și că sunt corecte, dar sunt bine proiectat. Si design este mult mai subiectiv, și veți obține mai bine la ea în timp. Dar să luăm unele măsuri pentru copii spre începând cu un program ce funcționează, absolut, dar nu e foarte bine. Nu e foarte bine scrise. Deci, aici este un program care face acest lucru. Tuse, tuse, tuse. Ce face programul arata ca? Se pare corect pentru mine. Este spune canapea pentru o în al doilea rând, atunci așteaptă. Apoi, se spune din nou, apoi așteaptă. Apoi, se spune din nou, apoi așteaptă. Apoi programul implicit se termină, pentru că nu există nici o buclă. Dar de ce este acest program de prost scris un? Chiar dacă nu ați programat înainte? Cum ar fi, ce freaca bine poate aici? Da? Audiența: [inaudibil] David J. MALAN: Exact. Ești repetarea te nou și din nou. Și literal, eu copiat și inserat două dintre aceste blocuri nou și din nou. Și asta e exact genul de bun-simț verifica dacă ar trebui să fie a face. Asteapta un minut. Ar trebui să mă fi cu adevărat face acest lucru? Deci, ce e asta ceea ce este soluție evident poate? Au un fel de buclă. Și nu-mi amintesc destul de ce piesa de puzzle este, dar dacă mă uit la următor iterație aici, într-adevăr, nu e doar pentru totdeauna bucla, există repeta un numar de ori. Și așa am specificat trei. Și acum observați cât de mult mai stricte, cum mult mai succintă acest program este. Și într-un sens, cum mult mai mult de întreținut. Dacă vreau să schimbe cuvântul de la tuse la altceva, ca achoo, ca el strănut. Apoi am schimba într-o singură loc, și nu trei. Deci, acest lucru se simte deja ca ceva mai bine de design. Lasă-mă să tuse în loc deschis 2, al treilea exemplu nostru. Observați ca un om de stiinta de calculator, Am începe numărarea la 0, de obicei. Acum, acest lucru pare un pic înfricoșător la prima, dar efectul este același. Tuse, tuse, tuse. Dar ceea ce pare a fi fundamental nou în partea de sus a programului? Am scos cuvânt. Am scos așteptați. Și ce am conectat în loc? O funcție. Un bloc tuse. Adică, sincer, mi se pare un fel de un idiot dacă nu doar începe cu blocul care este aparent numește "tuse", dacă asta e tot ce vreau să-l fac. Dar care nu există în Scratch. Mai degrabă m-am dus la unul din Paleta numit mai multe blocuri aici, și am trageți acest lucru mare violet aici că îmi permite să definiți o funcție. Acesta, în esență, mi permite crea propriul meu puzzle piesă care poate fi numit orice I doresc, că pot face orice vreau, dar îi dă un nume. Ea dă-mi o bucată nouă, puzzle violet care face acum tot ce am spus să fac. Deci, această piesă violet aici corespunde cu aceasta aici. Și ce face? Se spune tuse pentru o în al doilea rând, și apoi așteaptă. Și acum am un fel de creat propria mea piesa de puzzle personalizat, astfel încât acesta se comportă exact același fel. Așa că am putea face asta. Și într-adevăr, acolo va fi mai mult și mai multe oportunități de modularizare, și pentru stratificarea, complexitate pe unul deasupra celuilalt. Dar această idee de bază, într-adevăr, în problemă a spus 0. Ce ai de gând să fi invitați să facă este pentru a descărca Scratch, sau doar l utilizați pe web, și doar să se distreze cu ea. Vă vom oferi un set de Cerințe, având un sunet, și unele numărul de piese de puzzle. Dar vei face exact acest lucru. Și vei realiza că ai de gând să doresc să ia unele măsuri pentru copii inițial, până programul devine mai multe și mai complexe. Dar având în vedere este aceasta cel mai bun mod am putea face acest lucru? Pot evita acest instinct probabil, pentru a copia și lipi? Dar, înainte de Problemă Set 0, și înainte de a suspenda, am gândit să ia o mai voluntar dacă am putea, pentru un program de finală asta e, probabil, cel mai mult montaj la toate, având în vedere locul de astăzi. Haide jos. Da. Da. Care e numele tău? Uh-oh. Asta e ok. Ambele vin în jos. Și am se va ocupa de acest într-un fel în faptul că următorii zece secunde. Deci, haide jos. Haide jos. Lasă-mă să vin pe aici. Haide. In regula. Să vedem aici. Deci observați foarte repede aici, dacă doriți să vină pe sus. Vom face două runde de acest lucru. Și care e numele tău? SABRINA: Sabrina. David J. MALAN: Sabrina și? YING GEE: Ying Gee. David J. MALAN: Ying Gee. Mă bucur să te cunosc ambele. David. Deci exemplul nostru final este aici numit cel mai greu joc Ivy lui. Și de ce nu ne-am face Nivelul 1, și de ai face Nivelul 2. Și vom vedea cât de departe dincolo de faptul că suntem de fapt merge. Scris de un student anul trecut, remixat de mine astfel încât acest lucru ar merge peste bine în New Haven. Și am să vă dau un joc care va implica mutarea săgețile sus și în jos, și obținerea Yale la linia de sosire. Începem. [VIDEO PLAYBACK] [MUSIC - NFL ON FOX tema cântec] [MUSIC - MC Hammer, "U NU POATE ATINGE  ACEST "] -U Nu poate atinge acest lucru. U nu se poate atinge acest lucru. Nu se poate atinge acest lucru. Mea, mea, mea, muzica mea mă lovește atât de greu, mă face să spun, oh, domnul meu. Vă mulțumim pentru mine cu o binecuvântare minte pentru a rima și două picioare hype. Asta-i bine când știi că ești jos. Un super-homeboy droguri din Oaktown. Și eu cunoscut ca atare și acest o bataie uh, nu te poate atinge. Am spus că Homeboy U nu se poate atinge acest lucru. Da, așa trăim și știi U nu se poate atinge acest lucru. Uită-te în ochii mei, omule. U nu se poate atinge acest lucru. Yo, permiteți-mi să bustul versurile funky. U nu se poate atinge acest lucru. Noi lovituri și pantaloni proaspete. Ai luat așa și tu știi să dansezi. Deci, muta din locul dumneavoastră și de a lua un zbor fată și captura acest beat. În timp ce este de rulare mâna pe pompa un pic bit și să le știu ce se întâmplă. Asa. Asa. Rece într-o misiune atât de trage pe spate. Lasă-i să știe că ești prea mult și aceasta este o mutare uh, nu se pot atinge. Yo, ți-am spus u nu poate atinge acest lucru. De ce stai acolo omule? U nu se poate atinge acest lucru. Yo, sunet în școală Bell, fraiere. U nu se poate atinge acest lucru. Dă-mi un cântec, un ritm ceea ce le face sudoare asta e ceea ce am le da acum. Ei știu când vorbești despre Hammer vorbești despre un spectacol care este exagerat. Și cântăreți strânse sunt transpirație astfel să treacă un microfon. Sau o bandă pentru a afla ce se va lua și acum el va arde topuri. Fie munca legit greu sau s-ar putea la fel de bine renunta. Pentru că știi U nu se poate atinge acest lucru. U nu se poate atinge acest lucru. Break-l jos. Stop. Timp Hammer. Du-te cu fluxul într-o rotire dacă nu se poate trece la acest atunci probabil ești mort. Deci val-vă pe mâini în aerul [neauzit] Acest lucru este pentru un dans câștigător la acest lucru și vei obține mai subțire. Mutați glisați rump dvs. doar pentru un minut să facem tot cucui. Da. U nu se poate atinge acest lucru. U nu se poate atinge acest lucru. Ar fi bine să exagerat băiat U nu se poate atinge acest lucru. Inel înapoi școlii Bell in. Break-l jos. Stop. Timp Hammer David J. MALAN: Asta e pentru CS50! Multumesc mult pentru alături de noi! Ne vedem afară. [END PLAYBACK] [VIDEO PLAYBACK] [MUSIC - "Seinfeld" tema cântec] Hei David. Hei, David. Cum stă treaba? De locuri de muncă Bună, astăzi. Deci te-ai gândit la ce ai de gând să faci pentru glumele afară? Nu, nu am nimic. -Ce If-- ce dacă acest lucru este gluma afară? -cum Ar fi, despachetarea căruțe? -Uh-Huh. Știi, este vorba despre nimic. -Deci Place, nici o poveste, nu conflictelor, nu rezoluția. Nu înțeleg. Despre ce e vorba, atunci? -Nimic. Deci avem în glumă este de aproximativ nimic, și nu avem nici actorii. Cine va fi în acest? -Nu Nu NU. Adică, voi fi în ea. -Vei Fi în ea? Da! Oamenii sunt întotdeauna spun mi că sunt un personaj. Ei bine, vreau să spun, e adevărat. Dar cine altcineva va fi în ea? Nu poate fi doar tu. -Ai Va fi în ea, Gavin, Dan, Dan, Colton, Z'Myla, Alysse, Doug, David, toata lumea. Deci este vorba despre nimic, și toată lumea e în ea? -Absolut nimic. -Acest lucru este ridicol.