[MUSIC JOC] 

-Bine! 

Asta este CS50. 

Asta este CS50. 

Asta este CS50. [MUSIC - Iggy AZALEA, "fantezist"] 

Memorie meu preferat din CS50 a fost atunci când m-am dus la Puzzle Day. 

-Probabil Doar de timp petrecut de lucru pe seturi de probleme cu prietenii și oamenii mei care Wold deveni în cele din urmă blockmates mele. 

Meu cel mai bun memorie de la CS50 este Hackathon. -Contravaloarea CS50 Hackathon. 

-Hackathon. 

-Hackathon. -Hackathon. -Contravaloarea Hackathon Rob Bowden. Doar totul despre el. 

[MUSIC - Iggy AZALEA, "fantezist"] 

Memorie meu preferat este atunci când am fost la scenă și am jucat rolul de prestigiu unui nod [? în Linked?] [? Lista de. ?] 

-Când Toți avem spațiu liber Dropbox și David a fost ca, uita-te sub scaunele voastre. Și a fost ca, spațiu pentru toată lumea! 

[MUSIC - Iggy AZALEA, "fantezist"] 

Sfaturi meu pentru orice elev de intrare ar fi fie pentru a lucra într-adevăr pe P-seturi cu prietenii. 

Ore -Office este foarte mult prietenul tău. 

-Asigurați Din plin de experiența dumneavoastră și pentru a îndeplini cât mai mulți oameni ca tine poate. 

Nu fi frică pentru a cere ajutor. -Start- De P-seturi la începutul săptămânii. -Cred Cel mai important lucru este acela de a beneficia de toate resursele care CS50 are. 

-Du A orelor de începutul săptămânii. 

Ceas Categoric pantaloni scurți. 

-Nu Amâna pe dvs. P-seturi. -Asigurați Sigur veți găsi un grup mare de oameni pentru a lucra la P-seturi, cu. Puteți avea o mulțime de distracție și de a lua munca efectuată împreună. 

Nu fi frică să te împinge. Du-te pentru ediția hacker uneori. 

Lucruri -Scrie pe hârtie înainte de atingi vreodată computer. 

-CS50 Este foarte mare la oferind modalități de a obține ajutor. 

Meu un sfat este somn. Are cineva a spus asta? Somn, pentru sigur. Este ușor să nu facă, dar le-ați luat pentru a face acest lucru, cred. 

-I-Ar spune într-adevăr să fie pregătit mental pentru că ai de gând să-l iubesc. [MUSIC - Iggy AZALEA, "fantezist"] 

Asta este CS50. 

Asta este CS50. 

Asta este CS50. [MUSIC - Iggy AZALEA, "fantezist"] 

Asta este CS50. 

[Aplauze] 

David J. MALAN: Deci, asta este CS50 iar acesta este sfârșitul de săptămâna 0. Si asta a fost doar o de personal CS50 lui care Te așteaptă nu numai în secțiunile și orelor de program, dar, De asemenea, acest week-end vin la CS50 Puzzle Day. Ceea ce, din nou, nu este Totul despre programare. Într-adevăr, este de așteptat ca nu va trebui să programa nimic, ci mai degrabă a rezolva problemele cu ajutorul inteligența și prietenii alături de tine. 

Vom fi alături de unii de prietenii nostri de la Facebook-- dacă vă înregistrați aici-- care pentru ultimii ani, de fapt, au scris aceste provocări cu noi. Și astfel, ei vor fi cei în cele din urmă de funcționare puzzle Day. Și așa, va fi contestată cu exact felul de lucruri și problemele pe care oamenii de la Facebook vrea să se gândească. Deci, care este mâine. Inregistreaza-te la cs50.harvard.edu/register. 

Acum, un cuvânt pe un cuplu de personal, în special. Acest lucru aici este Ansel Duff, care este de fapt o dintre co-autorii acestor binar becuri care le-am văzut pe miercuri, în plus față de CS50 propriu Dan Bradley. Ansel Duff a fost, de asemenea, un fost student în anul întâi advisee de-al meu acum 3 ani și de fapt, el chiar a construit acest pupitru. A plecat să o facă științe inginerești și mai mult. Acum, poza lui aici este de fapt Ansel acum 3 ani de la CS50 Hackathon când a împrumutat unul dintre noastre baloane, sa lipit de laptop său, și, pentru următoarele 12 ceva ciudat ore, concentrat pe proiectul sau definitiv, iau pauze doar pentru a deschide saci de bomboane de la Hackathon. 

Dar el a mers pe mai recent a petrece in aceasta vara trecut cu noi, deoarece CS50 pentru personalul său, și Acum, elevii acest semestru, are propria imprimantă 3D. Și într-o coajă de nucă de imprimante 3D este un dispozitiv care arata destul de genul asta. Ai umple cu o bobină de plastic care este topit de către dispozitivul și vă construi lucruri literalmente de la nimic. La fel ca o imprimanta cu jet de cerneală, de a începe scuipa puncte mici de plastic că forma împreună cu forma obiecte întregi. Și astfel Ansel de exemplu, mai devreme în această vară, are un iPhone 5 și a decis că vrea într-adevăr să-l sprijini pe biroul lui. Dar el nu a vrut să du-te afară și cumpere ceva de la magazinul Apple sau altele asemenea, astfel încât el așezat și a început desen ceva. El a luat câteva măsurători cu privire la modul de gros și cât de mare iPhone său a fost, el a atras această imagine aici, el a decis că el a vrut pentru a avea o înclinare de 75 grade așa cum se holba la l pe biroul lui acolo. Apoi sa întors acest lucru, folosind software-ul, intr-un model 3D CAD care sa uitat un pic ceva de genul asta. Și apoi a continuat, în cele din urmă, să-l creeze de fapt. Deci, în fapt, dacă vreunul dintre voi aici, poate într-un rând care pot arunca la, avea an-- acolo avem oameni cu iPhone 5, și aici avem două mai mult. 

Acum, să nu fie mai prejos, de CS50 propriu Cheng Gong, de asemenea, stabilite în această vară pentru a construi destul de câteva lucruri și, de fapt, din motive care sunt încă neclar, a fost lent imprimarea o armată de elefanți cu articularea arme și trunchiuri. Un cuplu de care sunt de fapt aici dacă oricine ar place-- acum un elefant. În regulă,. dar ceea ce Cheng, de asemenea, a făcut pentru noi este că foarte amabil înființat un aparat de fotografiat pentru că elefant, crezi sau nu, ia unele doi și un oră și jumătate pentru a imprima. Chiar standul iPhone a luat o oră și jumătate pentru a imprima. Și ce Cheng a mers mai departe și a făcut a fost înființat un aparat de fotografiat frumos în față de această imprimantă 3D, filmat pentru o oră și o jumătate de design de Ansel tipărită. Am suprapus unele sexy muzica la acesta pentru pentru a vă oferi acest lucru să se uite la modul în care funcționează de imprimare 3D. Și chiar dacă acest este, de fapt, în plastic, dau seama că în cazul în care acesta este un domeniu de interes pentru tine academic, există oameni buni, printre le Jennifer Lewis aici la Școala de Engineering, care sunt de fapt de lucru pe de imprimare 3D obiecte de plastic. Dar chiar, ce mai, materiale biologice pentru a rezolva probleme fiziologice pentru oameni. Dar aici este un pic ceva din CS50. 

[LOUD MECANIC zgomote] David J. MALAN: Nu suna ceva de genul că, în realitate, dar este mult mai rece să-l uit la viteza, si cu acel sunet. 

Acum, miercuri, modul în care am ajuns prima dată aici? Am început să vorbim despre calculator știință și ne-am întrebat ce era. Și este vorba despre o serie de lucruri, și există atât de multe direcții diferite în care vă puteți îndrepta după un curs ca CS50. De fapt, dacă ai luat o acestor ghiduri neoficiale la CS afara, broșura care am furnizat, dacă ești gândire de a lua doar CS50, sau poate face un secundar, sau poate chiar de concentrare în CS, nu răsfoi asta. Și veți vedea o diagramă spre sfârșitul că vă arată mai multe direcții diferite în CS care poti sa te duci pe la. 

Dar pentru ziua de azi, ne vom concentra, din nou, pe într-adevăr unul dintre punctele de vedere fundamentale, poate, în cazul în care aveți intrări la probleme, aveți ieșiri din probleme, și aveți algoritmi cu care să creeze aceste ieșiri din aceste intrări. Și un astfel de exemplu, a fost de Desigur, această carte de telefon aici. Și ne-am folosit ca un exemplu pentru a merge printr-un algoritm care a fost actualizată. Și apoi încă unul a fost corect, dar un pic mai repede. Și apoi un altul care a fost un pic mai dramatic, dar fundamental mai repede. 

Corect, această carte ne-am telefon a pretins a avut aproximativ 1.000 de pagini. Și de câte ori nu-i asa am pentru a rupe cartea de telefon în jumătate pentru a găsi pe cineva ca Mike Smith, la maximum, în 1000 pagină de carte? Deci, 10 sau mai puțin. Și așa o dată am rupt acest lucru în jumătate, sau pur și simplu, mai matur, împărțit în jumătate, e doar 10 de pagini din 1000. Și dacă extrapola, un pic nerealist pentru o carte de telefon, dar dacă această carte de telefon a avut un 4 miliarde de pagini din ea, atât de complet greoi punct de vedere fizic, cât de multe ori vrei sa imparti o 4 miliarde pagină de carte de telefon în jumătate? Deci, este de fapt 32, da sau de a lua. Și numai astfel de 32 de ori, în de 4 miliarde de pagini, se poate veți găsi pe cineva ca Mike Smith. Și asta e eficienta. Asta-i un algoritm bine, îndrăznesc să spun. 

Dar apoi ne-am mutat de la care pentru a încerca să-l oficializeze. Și mi-am propus acest cod pseudocod. Codul pseudocod nu este nimic oficial. Nu e ceva ce memorezi. E doar ceva ce exprima destul de intuitiv folosind limba engleză, sau orice limbă într-adevăr, că transmite ideile tale succint. Dar ceea ce este esențial despre Codul pseudocod este că să încerce să anticipeze toate posibilele cazuri care s-ar putea întâmpla. Și, într-adevăr, în acest pseudocod cod, au existat într-adevăr trei cazuri de fiecare dată când am împărțit cartea de telefon. Mike ar putea fi la stânga. Mike ar putea fi la dreapta. Sau ar putea fi chiar pe pagina sunt. Sau un caz colț al patrulea, ca să spunem așa. Un scenariu rău ar putea fi unul which-- ce se întâmplă? Doar Mike nu e în cartea de telefon, la toate. 

Și când programele crash-- când Mac și software pentru PC care voi alerga pe calculatoarele uneori blochează sau se închide în mod neașteptat, ceea ce înseamnă, în general, că unele programator, unele om ca tine curând, doar greșit și a făcut o greșeală. Poate că nu a anticipat că poate exista nu este Mike Smith în cartea de telefon. Și dacă nu, de fapt scrie cod să se ocupe de situatii de genul asta, în general imprevizibil lucruri se pot întâmpla. Aparatul poate îngheța. Se poate reporni. Programul poate renunta. Și astfel toate acestea prostii care s-ar putea s-au întâlnit în actuala ta viață doar cu ajutorul calculatoarelor, va fi din ce în ce doar explicată prin această intuiție și această înțelegere a ceea ce este de fapt se întâmplă sub capotă. 

Acum să încercăm să aruncăm o privire la o problemă mai generală. Mai degrabă decât să ia participarea într-un loc cum ar fi aceasta, ceea ce ar fi destul de lent pentru a face una, două, trei, patru. Sau poate două, patru, șase, opt. Să ne concentrăm, în schimb, pe cum am putea formaliza algoritmul procesului de pe care le-ar putea lua de participare. Și de-a lungul drum, să începem de a aplica unele nomenclatură că vom folosi astăzi, când suntem de fapt începe programarea într-o limbă. Deci, eu vă dau acum, un videoclip patru minute că ne-am pus împreună cu prietenii noștri de la TED, organizatia. Prin care am furnizat un scenariu și au adus animatori lor să le suporte, și de fapt a creat un 2D animație de ceea ce un algoritm este. Dacă am putea dim luminile. 

[MUSIC JOC] Narator: Ce este un algoritm? În informatică, un algoritm este un set de instrucțiuni rezolvarea unele probleme pas-cu-pas. De obicei, algoritmi sunt executate de calculatoare, dar oamenii au algoritmi de asemenea. De exemplu, cum ar fi te duci despre numărare numărul de persoane intr-o camera? Ei bine, daca esti ca mine, probabil ai punct la fiecare persoană la un moment dat si numara pana la zero. Unu, doi, trei, patru, și așa mai departe. Ei bine, asta e un algoritm. De fapt, hai să încercăm să-l exprime o pic mai mult formal în codul pseudocod. Sintaxă engleză-așa seamana cu un limbaj de programare. 

Să n egal 0. Pentru fiecare persoană în cameră, set n egal cu n plus 1. Cum de a interpreta pseudocod? Ei bine, o linie declară, ca să spunem așa, o variabilă numit n și inițializează valoarea sa la 0 Acest doar înseamnă că, la începând de algoritmul nostru, lucrul cu care suntem numărare are o valoare de 0. La urma urmei, înainte de a începe numărarea nu am numărat încă nimic. Apelarea această variabilă n este doar o convenție. Aș fi putut numit-o cel mai nimic. Acum, linia doi demarks începutul unei bucle, o succesiune de etape care va repeta unele număr de ori. Deci, în exemplul nostru, pasul suntem luare este de numărare de persoane în cameră. Sub linia doi este linie care descrie trei exact cum vom merge de numărare. Amprentei implică faptul că este linia de trei, care se va repeta. Deci, cu codul de pseudocod este spune este că, după incepand de la 0 pentru fiecare persoană în camera vom crește n de 1 Acum este acest algoritm corect? Ei bine, să-bang-ului pe el un pic. 

Funcționează în cazul în care există două persoane în cameră? Să vedem. În conformitate o vom inițializa n la 0. Pentru fiecare dintre aceste două persoane, apoi ne-am incrementa n de 1. Deci, în prima călătorie prin buclă, actualizăm n la 0 la 1. Pe cea de a doua călătorie prin care aceeași buclă, actualizăm n 1-2. Și astfel, prin acest algoritm scop, n este 2, care se potrivește într-adevăr numărul de persoane în cameră. Până în prezent, atât de bine. 

Ce zici de un caz colț, deși? Să presupunem că există 0 persoane în room-- în afară de mine, care-i face numărare. Într-o linie, vom inițializa din nou n la 0. De data aceasta însă, linie trei nu execută deloc deoarece nu există o persoană în cameră. Și așa n rămâne 0, care se potrivește într-adevăr numărul de persoane în cameră. Destul de simplu, nu? Dar de numărare oameni unul la un moment dat este destul de ineficient, de asemenea, nu? Desigur, putem face mai bine. De ce nu conta de două persoane la un moment dat, în loc de numărare unul, doi, trei, patru, cinci, șase, șapte, opt, și așa mai departe. De ce nu conta două, patru, șase, opt, și așa mai departe? Este chiar suna mai repede. Și cu siguranță este. 

Să-și exprime această optimizare în cod pseudocod. Să n egal 0. Pentru fiecare pereche de oameni în cameră, setați n egal cu n plus 2. Destul de schimbare de simplu, nu? Mai degrabă decât să numere oamenii la un moment dat, noi în loc să-i numeri doi la un moment dat. Acest algoritm, astfel, de două ori la fel de repede ca ultimul. Dar este corect? Să vedem. Funcționează în cazul în care există două persoane în cameră? Într-o linie, vom inițializa n la 0. Pentru că o pereche de oameni, apoi ne-am incrementa n de 2. Și așa de acest algoritm capăt n este 2, care se potrivește într-adevăr numărul de persoane în cameră. 

Să presupunem în continuare că există zero, persoane in camera. În conformitate o vom inițializa n la 0. Ca și înainte, linia trei nu totul executa deoarece nu există perechi de oameni în cameră, și așa n rămâne 0. Care într-adevăr se potrivește Numărul de persoane în cameră. Dar dacă există trei persoane în cameră? Cum functioneaza acest tarif algoritm? Să vedem, în linie una, am inițializa n la 0. Pentru o pereche de acei oameni, apoi ne-am incrementa n de 2. Dar atunci ce? Nu există un alt complet pereche de oameni în cameră, astfel încât nu se mai aplică linia doi. Și așa până la sfârșitul acestui algoritm, n este încă 2 care nu este corect. Într-adevăr, acest algoritm, a declarat pentru fi buggy, pentru că are o greșeală. 

Să atac cu unele Noul cod pseudocod. Să n egal 0. Pentru fiecare pereche de oameni în cameră, setați N egal cu n plus 2. În cazul în care o persoană rămâne nepereche, setat N egal cu n plus 1. Pentru a rezolva această problemă special, ne-am introdus în linie cu patru o condiție, altfel cunoscut ca un ramură, care doar execută dacă există o persoană pe care o nu ar putea asocia cu un alt. Iar acum, dacă nu e una, sau trei, sau orice număr impar de persoane în cameră, acest algoritm le va conta acum. Putem face chiar mai bine? Ei bine, am putea conta în câte trei, sau patru labe, sau chiar de cinci și zeci, dar dincolo de asta, o să te un pic dificil să sublinieze. 

La sfârșitul zilei, dacă executate de computere sau oameni, algoritmi sunt doar un set de instrucțiuni cu care pentru a rezolva problemele. Acestea au fost doar trei. Ce problemă ar tine rezolva cu un algoritm? 

David J. MALAN: Deci în mod deliberat, un program foarte simplu, un algoritm foarte simplu, pentru realizarea ceva foarte simplu, numărare Numărul de persoane în cameră. 

Dar să tachineze pe langa unele reprezentantului Caracteristici aici că sunt de fapt Va fi util chiar și atunci când de punere în aplicare cel mai mult complex de software. Deci, de exemplu, în această primă linie, avem ceea ce noi numim variabila, și de la algebra, esti în general familiar folosind x și y și z uneori, și așa mai departe. Dar, în programarea, variabile sunt încă, la sfârșitul zilei, foarte asemănător cu cel. Dar este, probabil, mai simplu de a gândi a unei variabile ca doar un container. Și, de fapt, e un număr de biți implementate într-un fel în hard disk sau în memoria computerului, dar mai mult pe faptul că, în viitor. E doar un container. Și dacă spui ceva ca să n egal 0, bine că e așa de asteptare această sticlă castron aici n, doar un nume arbitrar, și pune nimic în ea inițial. Deci valoarea acestui castron chiar acum este zero. Și, desigur, în cazul în care te percep într-o linie ulterioară, pentru a incrementa de fapt, unele linii de cod, ca și în acest al treilea linie aici, de 1, asta e cum ai spune ceea ce este Valoarea actuală a n, este 0, plus 1, a pus ceva ca o ping pong aici. Acum valoarea acestui variabila este destul de simplu de 1. Și ai putea extrapola foarte repede, dar acum e 2, acum e de 3, și așa mai departe. Deci, asta e tot o variabilă este. Este o piesă de stocare a stoca de fapt, unele date. Pentru moment este o minge de ping-pong. Acolo e un număr. Dar ar putea fi de cuvinte într-o dicționar, cum ar fi verificatorul ortografic Am făcut aluzie la miercuri pentru unul din seturi de probleme anul trecut. 

Acum, o altă idee cheie, care în mod similar este destul de intuitiv mi-ar pretinde, este cea a unei bucle. Și bucla în procesul de numărare toată lumea este, desigur, face același lucru lucru din nou și again-- fie una la un moment sau două la un moment dat. Și vă puteți exprima acest lucru în limba engleză, sau cod pseudocod, în orice număr de moduri, dar folosind acest prepoziție "pentru" este un mod foarte comun de a face asta. Pentru fiecare persoană în cameră, face acest lucru. Din nou și din nou. Iar faptul că este alin, linie de trei, înseamnă doar că ceea ce tu ar trebui să faci este lucrurile care se indentat sub linia doi în sine. Doar o convenție umană, dar unul comun cum vom vedea mai mare efectiv limbaje de programare de nivel. 

Acum pic mai interesant este atunci când vei ajunge într-un caz colț. De exemplu, un colț caz a fost atunci când există erau trei persoane, sau cinci, sau șapte, sau orice număr impar de persoane în cameră, pentru că faci asta de doi câte doi frâne în cele din urmă pentru că o să vă să fi dor de cineva, fie la foarte început sau la sfârșit în funcție de cum o faci. Și așa, acum, am această ramură, sau condiție, în cazul în care o persoană rămâne, apoi mergeți mai departe și se ocupe de asta persoană singuratic care nu au primit asociat cu altcineva. Deci, asta e ceea ce noi numim o condiție, sau o sucursală. 

Cod Acum pseudocod în general poate fi scris pentru a rezolva orice număr de probleme. Și ceea ce am crezut că ne-ar face aici este să ia un moment de a invita să spunem lui CS50 proprii Rob Bowden pe scena a fi insotiti de doi voluntari, care nu au nici o idee despre ceea ce așteaptă. O parte a mers în jos, cât mai curând am spus asta. Cum despre tine pe se încheie aici, haide sus. Și cum despre de mai departe departe, modul cum în spate. Înapoi rând, hai sus cu mâinile sus. Bine, și care e numele tău? 

ANITA: Anita. 

David J. MALAN: Anita. Bine, mă bucur să te cunosc. Permiteți-mi să vă prezint Rob Bowden. Acest lucru este Anita. Și care este numele tau? 

Kiersten: Kiersten 

David J. MALAN: Kiersten. Kiersten, haide sus și întâlni Rob Bowden și Anita. Mă bucur să te cunosc. Kiersten: Mă bucur să te cunosc. David J. MALAN: Bine, Rob. ROB BOWDEN: Mă bucur să te cunosc. David J. MALAN: Anita. Kiersten: Hi Anita. David J. MALAN: Și dumneavoastră mai multe sute de colegii de clasă. Deci, acum lasă-mă să merg mai departe și trage up doar un simplu program aici pe Mac OS, care să mă las jot de fapt, unele note jos. Și dacă vreți să o ia fiecare Poziția la unul dintre aceste școli de acolo, lasă-mă să merg mai departe și începe o listă de cod pseudocod, dacă vreți. Și ceea ce vreau să fac aici, în cele din urmă este de tip pentru tine unele instrucțiuni care ne membri ai publicului sunt de fapt O să recite pentru noi. Lasă-mă să mergeți mai departe și doar schimba acest lucru pentru o listă numerotată pentru a se potrivi ceea ce făceam acolo. Și ceea ce am de gând să fac cu de ajutor, este scrie un program în pseudocod, cu care astia sunt de gând să pună în aplicare o aluna unt și gem. Deci, este, probabil, apropos de arata ceva unii dintre voi s-ar fi văzut pe internet pentru un moment enervant scurt. 

[MUSIC BUCKEWHEAT BOYS, "Unt de arahide  JELLY TIME "] David J. MALAN: OK. Asta e destul de asta. Deci, aici între timp, am o pereche de Google Glasses care vom pune pe CS50 propriu Rob Bowden pentru a vedea lumea prin ochii lui. Și vom face tot posibilul în post de producție a țese de fapt filmul a ceea ce Rob vede acum, în această prelegere real videoclip cu doi nostru voluntari lângă el. Deci, ce am de gând să fac este, eu voi fi dactilografa. Avem scopul de aici scris de fapt un program de cu care să facă, în cele din urmă, o unt de arahide și jeleu de tip sandwich, dar acestea trei sunt de gând să se comporte ca și cum ele sunt calculatoare. Și calculatoare, la sfârșitul zilei, sunt de fapt dispozitive destul de prost. Sunt super-rapid, dar ei pot doar face, literalmente, ceea ce li se spune. Nu poți să spui doar face o aluna unt și gem. Trebuie să-i programeze să facă asta. Trebuie să le spui cu precizie ce să facă, mai puțin lucrurile merg oribil și, sperăm, amuzant strâmb. 

Deci, cu care a spus, avem nevoie de un apel de la public pentru ceea ce ar trebui să-și intensifice o fi, dacă scopul aici este de a face o aluna unt și gem. Da? 

Audiența: [inaudibil] sacul de pâine. David J. MALAN: Deschideți punga de pâine. Deci, dacă cei trei concurenți ar fi dori să continue să facă asta literalmente. Deschideți punga de pâine. 

[Audienta rîzînd] David J. MALAN: Deci, haideți să lucreze la asta. În regulă. Deci pasul doi, cum-- să luăm această continuare. Da, în partea din față. 

Audiența: [inaudibil] pâinea. 

David J. MALAN: Ce-i asta? 

Audiența: Scoateți pâinea. David J. MALAN: Scoateți pâinea. În mod similar succint. Mulțumesc. 

[Aplauze] David J. MALAN: Asta-i tot? OK, deci pasul doi se întâmplă pentru a fi elimina pâinea. Bine, cineva vrea să ne scrie o propoziție mai lungă? Altcineva? Un pic mai mult [neauzit]. Nu, nimic acum. Da? 

Audiența: Locul doi felii unul lângă celălalt. 

David J. MALAN: Locul doi felii unul lângă celălalt. 

[Audienta rîzînd] 

David J. MALAN: Locul doi felii unul lângă celălalt. Pasul patru. Da? 

Audiența: Ia dvs. mână și a stabilit ușor pe partea de sus a capacului unt de arahide. 

[Audienta rîzînd] Audiența: [inaudibil] lângă untul de arahide. David J. MALAN: Ce? Spune că din nou. 

Audiența: Deșurubați capacul și a pus l ușor lângă untul de arahide. 

David J. MALAN: Pune-l ușor lângă untul de arahide. OK, progres. Pasul cinci. Excelent. Da? 

Pick up cuțit. David J. MALAN: Pick up cuțit. OK, pasul șase. Da? 

Audiența: Țineți cuțit de mâner. David J. MALAN: Tine cuțit de mâner. Țineți cuțit de mâner. Pasul șapte. Da? 

Audiența: [inaudibil] cuțit în arahide unt și cât mai puțin afară [neauzit]. 

David J. MALAN: Pune cuțit in-- I auzit "cuțit pus în unt de arahide și să ia cât mai puțin ca posibil. " Apropo, scoateți hârtia mai întâi. Bine, pasul nouă. Pasul nouă. Pasul nouă. Nu am făcut de fapt un sandwich încă. Da? Audiența: Folosind cuțit în unt de arahide, aplica unt de arahide pe pâine spus. 

David J. MALAN: Utilizarea cuțit în unt de arahide, unt de arahide se aplică pe a spus pâine. 

[Audienta rîzînd] David J. MALAN: Toate pas corect 10. Pasul 10. Da? 

Audiența: Gust de arahide unt pentru a asigura calitatea. 

[Audienta rîzînd] David J. MALAN: Pasul 11. Pasul 11. Pasul 11. Haide. Da? Chiar acolo. 

Audiența: alege cu atenție jeleu. 

David J. MALAN: alege cu atenție jeleu. OK, și apoi de altă parte a crescut. Chiar în spatele tău. Da, în albastru. 

Audiența: Bine, scoateți capac din [inaudibil], da, scoate capacul din jeleu. 

[Audienta rîzînd] 

David J. MALAN: De la jeleu. Ha, ha. 

[Audienta rîzînd] David J. MALAN: Și? Audiența: Și abia matura orice [neauzit]. [Audienta rîzînd] Audiența: Desigur, înainte de [auzite], scoateți hârtia din jeleu. David J. MALAN: Scoateți hârtia din jeleu. Pasul 14. Suntem aproape acolo. Da? 

Audiența: Invert sticlă jeleu înainte de toate cade. 

David J. MALAN: Invert jeleu sticlă înainte de jeleu cade. Pasul 15. 

Audiența: Puneți la loc capacul. 

David J. MALAN: Puneți la loc capacul. Pasul 16. Da? 

Audiența: [inaudibil] David J. MALAN: Spune asta din nou. Audiența: Ia capacul de pe jeleu dumneavoastră. David J. MALAN: Off jeleu dumneavoastră. Deci, care întradevăr Oops. Haide. Puneți la loc capacul. Pune cap-- Ai spus scoate capacul din jeleu. Simțiți-vă ca suntem într-un pic de o buclă. Pasul 17. Da? 

Audiența: [inaudibil] David J. MALAN: Spune asta din nou. Audiența: [inaudibil] David J. MALAN: Du-te înapoi la step-- Audiența: [inaudibil] David J. MALAN: Eliminare capac de unt de arahide. Da? 

Audiența: Abandonați toate jeleu pe pâine. 

David J. MALAN: Arunca toate jeleu pe pâine. David J. MALAN: Suntem aproape acolo. Pasul 19. 

Audiența: Îndepărtați excesul de jeleu. 

David J. MALAN: Haha, jeleu. 

[Aplauze] David J. MALAN: De ce nu noi-- încă un pas pentru a lua această casă. Încă un pas și apoi vom servi sandwich-uri. Da? 

Audiența: [inaudibil] 

David J. MALAN: În timp ce orice tip sandwich liniuță Să remains-- lui asta-- mânca. 

[Râsete] 

David J. MALAN: Bine, mulțumesc să voluntarii nostri aici. 

[Aplauze} 

David J. MALAN: Avem ceva frumos despărțire de cadouri pentru fiecare dintre voi. Propria ta unt de arahide, jeleu, și pâine pentru a aduce înapoi acasă. Mulțumesc. 

Kiersten: Mulțumesc. David J. MALAN: [inaudibil] bun venit. [Aplauze] David J. MALAN: Deci, aceasta este, de Desigur, un exemplu ridicol. Corect? Dar nu un fel de dezvăluie modul în care ne oamenii iau doar claritate de la sine. Și faptul am fost vorbesc cu un alt om, el sau ea doar stie ce vrei sa spui. 

Calculatoarele nu sunt de gând să știi ce vrei să spui, chiar atunci când se utilizează, ca suntem pe cale să facem astăzi, programare ceva în Scratch, o povara și picătură, limba puzzle stil bucată. Chiar și proiectat pentru tineri copii, aveți să fie atât de explicit și atât de literal cu ce vrei programul dumneavoastră de a face. Acum în cele din urmă, suntem va fi de programare nu în cod pseudocod, Engleză ca sintaxă, dar cod sau, mai corect, cod sursă. Codul sursă este doar modul fantezie pentru a descrie cod de fapt scrie cu o tastatură care este nu în limba engleză în sine. Este scris în C sau Java sau C ++ sau ceva cum ar fi faptul că, așa cum vom vedea în curând. 

Și, de fapt, doar pentru a speria un puțini dintre voi, la prima vedere, acesta este un program scris într-o limbă numita C. Dar, pentru a ne-o sperie unii dintre voi, veți complet înțeleg ce se întâmplă pe veni lunea viitoare, atunci când se vine vorba de ceva de genul asta. Sincer, aceasta este o limbă mai veche. Este destul de arcane, dar este reprezentativ de o mulțime de limbi în aceste zile că au o mulțime de paranteze și creț bretele si ghilimele și semne punct și virgulă. Și o mulțime de acest lucruri sintactic care nu este la toate interesant punct de vedere intelectual. Într-adevăr, este o distragere totală de la ideile foarte simple care sunt ne mirat în față. Acest program, cum s-ar putea ghici doar, printuri la ecranul computerului cuiva cuvintele "hello world virgulă." Asta este. Deci clar, nu e o mulțime de lucruri care-i stea în calea de unele evidență acolo, dar o să alunece foarte repede departe și să fie complet intuitiv. 

Într-adevăr, ceea ce vom face astăzi se distila acest destul de complex Programul cauta, care din nou va veni să înțeleagă rapid, dar la ceva mult mai simplu. Să spunem doar că ceea ce ne referim. Să desena o imagine a ceea ce ne referim, cu titlu de aceste piese de puzzle aici. 

Deci, aceasta este o programare limbă cunoscută sub numele de Scratch. Acesta a fost dezvoltat de MIT. Și ceea ce veți vedea în problema setat la zero, care va fi lansat mai târziu în seara asta, vom avea de a merge la acest URL aici scratch.mit.edu. Și au un web interfață bazată prin care va scrie primul program. Sau cei dintre voi cu prealabile experiență, două programe, dar într-un mediu care este probabil, un pic nefamiliar și că vă va împinge să creeze ceva folosind acest mediu foarte vizual. 

Acum, ce am de gând să fac aici este deschide programul in sine. Ea există, nu numai ca un browser web, dar, de asemenea, ca o Programul de astfel încât să puteți folosi de fapt dacă nu aveți acces la internet. Și am de gând să fac asta aici, în Sanders, doar în cazul în care Wi-Fi nu coopereze super-bine. Și ceea ce am de gând să faceți este să punct la câteva caracteristici ale acestui program. Deci, să fie clar, eu am doar dublu clic pe pictograma de pe desktop-ul meu, sau echivalent plecat la scratch.mit.edu, și este tras în sus această fereastră. Acesta este un mediu de programare. Este o bucată de software care unii dintre prietenii nostri de la MIT a scris că hai să ne și voi scrie programe într-un limbaj numit Scratch. 

Acum, acest lucru se întâmplă să fie un pisică care, de asemenea, numit Scratch iar aceasta este lumea lui, în care el trăiește. Aceasta este etapa, ca să spunem așa, că dreptunghi pe colțul din stânga sus. Și el nu trebuie să arate ca o pisica. Puteți să-l uite ca nimic și tu poate avea mai multe astfel de sprite, sau caractere, într-un program. Între timp, pe aici din extrema drept, este o ardezie mare gol. Și acest lucru este în cazul în care, într-o clipă, vom începe de programare prin tragere și plasare aceste puzzle grafic piese care sunt corect aici în mijloc. Și există mult mai mulți decât ne vom petrece timpul pe aici în clasă pentru că veți găsi că toate sunt destul de intuitiv. Din nou, este proiectat pentru copii, dar ne-am să-l utilizați pentru a tachineze pe langa unele dintre cele idei fundamentale ale variabilelor, mai rapide, condiții, și, în curând, lucrurile cum ar fi funcții și evenimente și fire și alte lucruri de lux vom ajunge la timp, înainte de a crea de fapt ceva de la zero. Joc de cuvinte destinate. 

Acum, ce am de gând să fac aici este click pe nu mișcare, dar de control. Și acesta este doar un clasificare a aici-- și văd un alt Culoarea set de blocuri. Dar observați câteva cuvinte familiare. "Dacă" și "altfel dacă" și "repeta." Și puteți ghici, probabil, care este o reminiscență a filialei, sau condițiile-am văzut, și chiar construcția looping. Deci avem blocuri similare aici. Dar cel mai interesant unul este cel de aici. Când acest steag verde este apasat, aceasta, pentru cei cu programare prealabilă experiență, este echivalent la o funcție principală. Dar pentru cei nefamiliarizati, aceasta este piesa de puzzle care va lovi cu piciorul începe întreg programul nostru. Aceasta înseamnă, literal, atunci când merg, în această Programul, și faceți clic pe un flag-- verde pe care o puteți vedea aici, în colțul din stânga sus al UI, astfel vedea steagul verde lângă stația de semnul roșu? Când m-am faceți clic pe asta, mea Programul se va rula. Acum, am de gând să fac ceva super-simplu cu Scratch. Am de gând să merg mai departe și du-te la panoul de look aici, unde am o grămadă de piese de puzzle violet, și am de gând să mergeți mai departe și de a face ceva super-simplu ca, spune. Și notificare atunci-- acest text în caseta de alb este editable-- am de gând să spun "Bună ziua lume", la fel ca noi a făcut în acest text versiune în urmă o clipă. Și acum, dacă mă duc și faceți clic pe acest steag verde, m-am programat acum. Nu este o deosebit de program interesant, dar am făcut computerul face ceva. Am început un program și o a făcut ceea ce i-am spus să facă. Acum, eu pot continua să drag and drop mai mult și mai mult din aceste piese de puzzle și ei vor cupla, dar hai palmă unele terminologie pe aici că vom vedea recurente parcursul cursului, și într-adevăr în toată informatică și programarea mai general. 

Acest "spune" bloc, în purpuriu, să doar începe de asteptare o declarație. E ca o declarație de fapt. Faceți acest lucru. Deci, este o categorie de instrucțiuni pe care le s-ar putea alimenta un calculator ca parte a unui program sau a unui algoritm. Și pentru a fi clar, ai probabil luate pentru a acordat pe care le au programe pe computer. Și ei sunt un fel de algoritmi, dar o Programul este într-adevăr o grămadă de algoritmi că unii oameni au scris. Ei ambalate în sus și l-au vândut, astfel încât să, sau au postat pe un site pentru tine pentru a descărca. Deci, un program este doar un grămadă de zerouri și a celor că, într-un fel, oamenii creat. Și aceste modele de zerouri și cele reprezenta lucruri, în cele din urmă, cum ar fi sau "play" salut lume " această muzică "sau" juca acest videoclip " sau "trimite un e-mail." Dar să ne întoarcem la mod mai detaliat ce un program este atunci când, te, scrie-le. 

Iată un alt statement-- "Așteptați o secundă." Nu am folosit acest încă, dar dacă vreau programul meu pentru a întrerupe pentru un moment de a face ceva, eu pot spune acest lucru. Așteaptă o secundă. Acum, o alta ar putea fi "reda sunetul." Deci, acest lucru este unic la zero, se are capacitatea de a rula sunete. Deci, o declarație s-ar putea utilizare este, aici, "play sunet." Între timp, expresie booleană, astfel încât acesta este un cuvânt crescator numit după doar un tip pe nume Mr. Bool, iar acest lucru este tot despre o întrebare. Adevărat sau false-- este mouse-ul jos? O expresie booleană este doar unele expresie în limba engleză care este fie adevărat sau fals. Fie pornit sau oprit. Fie una sau zero. Vă puteți gândi la ea în orice număr de moduri, dar este fie adevărat sau acest fals, în cele din urmă. Deci, "mouse-ul în jos semn de întrebare," că ar fi o expresie booleană. Și vă puteți gândi la alții, poate. De exemplu, "este numărul din stânga mai puțin decât numărul corect? " Aceasta, de asemenea, ar fi o expresie booleană. "Mai puțin de" este o expresie booleană. 

Acesta, de asemenea, "indicatorul mouse-ului se ating." Nu sunt sigur de ce ei a numit-o indicatorul mouse-ului. Aceasta înseamnă doar, este cursorul, este săgeată pe ecran, atingeți pisica, de exemplu. Sau un alt aspect al ecranului. Și este o întrebare, din nou, și care denotă o expresie booleană. Ceva care s-ar putea doresc să utilizeze într-o stare. Deci, vom ajunge la faptul că, în doar o clipă. Puteți "și" lucruri împreună. Deci, dacă doriți să verificați dacă această este cazul și că este cazul, puteți utiliza un "și" bloc de genul asta. Și aici este această condiție. Observați forma mica deschidere în partea de sus a acestei piese de puzzle galben, este o reminiscență a formei că tocmai am văzut în urmă cu o clipă. Fiecare dintre aceste expresii booleene au aceste margini evidențiate pe stânga și dreapta. Și asta pentru că oamenii de la MIT a decis care prin forme transportoare vizual, puteți fel de a ajuta oamenii, studenți și copii deopotrivă, la fel de a umple golurile literalmente. 

Acum, că puzzle-- că deschidere este un pic mai mic, și cum vom vedea în cadrul programului, în Scratch, ea va crește pentru a se potrivi. Se va menține forma, în cele din urmă. Deci, o condiție să vă decideți "Ar trebui să fac ceva sau nu?" O expresie booleană este întrebarea reală pe care îl utilizați pentru a decide să mă duc la la stânga sau să mă duc la dreapta Când mă întâlnesc cu acest așa-numitele răscruce? Puteți avea două ramuri. Dacă ceva este adevărat, nu aceasta, mai du-te în acest fel, sau poti sa faci doar nimic la toate, ca acest bloc implicite. În mod similar, putem cuib aceste lucruri. Deci, dacă doriți să-și tripleze furculiță în rutier, fie a face acest lucru sau acest lucru sau că, poti doar cuib aceste lucruri împreună. Și începe pentru a obține un pic urât, în cele din urmă, pentru sigur, dar logica este în continuare la fel. Puteți citi literalmente acest sus în jos și se spune ce se pret-- dacă acest Este adevărat, face acest lucru, altfel, dacă altceva. 

O bucla nu se mai simplă în Scratch. Pentru totdeauna face următoarele. Acum, nu s-ar putea crede poate face mult pentru că acolo nu e mult spațiu între partea de sus și partea de jos a acestui deschidere piesă de puzzle. Dar veți vedea Scratch este de gând să să crească pentru a se potrivi cât mai multe piese de puzzle cum vrei sa se ghiftui acolo. O altă buclă ar putea fi și-a exprimat cu repeta. Dacă știți în avans, "am vrei sa faci ceva de 10 ori, " vă pot spune doar Scratch de a face ceva de 10 ori. Și, între timp, putem avea variabile. Deci, aici este o una arbitrară, e portocaliu în acest caz, iar acest lucru este un turneu vârtej de vânt. Din nou, veți găsi acest lucru foarte accesibil odată ce începi să indicând și făcând clic. Am numit n mea variabil, dar eu ar fi numit-o tot ce vreau, și eu o setare aici, în acest exemplu arbitrar, la zero. 

Acum, văzând un program de genul salut lumea nu este tot ceea ce convingatoare, Să fapt deschide ceva că un fost student a făcut. Lasă-mă să mergeți mai departe și să se deschidă, de exemplu, acesta aici, pentru care mi-ar placea pentru a avea un voluntar. Bine, cum despre-- să mergem mai departe. Da, haide sus. Care e numele tău? 

ABBY: Abby. David J. MALAN: Abby, haide sus. Te-ai jucat vreodată acest joc înainte? ABBY: Nu David J. MALAN: Bine. David, mă bucur să te cunosc. Vino. Și ceea ce este programarea fundal, dacă este cazul. 

ABBY: Am învățat ceva C ++. David J. MALAN: Ai invatat ceva C ++. Și ceea ce este jocul tau joc de fundal? 

ABBY: Nu prea mult. David J. MALAN: OK, deci vom lua asta. Deci, aici este modul în care jocul va funcționa. Am de gând să merg mai departe și faceți clic pe steagul verde, care este de până aici, la partea din dreapta sus. Acum, predecesorul dumneavoastră în clasa ți-a dat niște instrucțiuni aici. Și într-o clipă ea, spune "de spațiu pentru a începe." Deci, mergeți mai departe și a lovit bara de spațiu. 

COMPUTER GAME: Pikachu. David J. MALAN: Iar scopul este de a prinde alimentare, așa cum este ilustrat aici în partea stângă. Și la [inaudibil] 

[GAME redare a muzicii] 

David J. MALAN: Aww, bine, Vă mulțumesc pentru a juca. Avem aici un pic despărțire cadou pentru tine. Avem CS50 stres minge, dacă doriți să alegeți. Bine, bine să te cunosc. Mulțumesc că ați venit și provocatoare. Deci avem mai multe bile de stres, astfel hai sa facem mai mult un exemplu pentru a motiva. Un voluntar? Bine, ce zici de chiar aici în față. Care e numele tău? 

PHILLIP: Phillip. 

David J. MALAN: Phillip. Hai sus, Phillip. Deci, Phillip va fi contestat cu un alt joc că unul dintre predecesorii dumneavoastră scris ca parte a problemei set de zero, numit cel mai greu joc Ivy. Și vom vedea în doar un clipă ce se înțelege prin aceasta. Phillip, mă bucur să te cunosc. Care este trecutul tău? PHILLIP: făcut o mulțime de codificare. Adoptată un pic de joc, de asemenea. 

David J. MALAN: OK. Am o mulțime de jocuri de noroc, de asemenea. Și ați jucat acest joc înainte? 

PHILLIP: Nu David J. MALAN: Toate Bine, aici vom merge. Am de gând să merg mai departe și faceți clic pe steagul verde. 

[GAME MUSIC] 

[MUSIC MC Hammer, "U NU POATE ATINGE ACEST"] 

PHILLIP: [inaudibil] David J. MALAN: [inaudibil] PHILLIP: [inaudibil] [Razand] [MUSIC MC Hammer, "U NU POATE ATINGE ACEST"] David J. MALAN: [inaudibil] Plug prin ea. PHILLIP: [inaudibil] David J. MALAN: Dă-i drumul. [MUSIC MC Hammer, "U NU POATE ATINGE ACEST"] David J. MALAN: Bine. Felicitări. 

[Aplauze] 

David J. MALAN: Vom mesaj care online, mai târziu, astfel pe care le puteți amâna cu ea, de asemenea. Princeton vine următoare, după care. 

Deci, acum, hai, de fapt continua pentru a începe de la zero, ca să spunem așa, și de a construi de fapt, până la putem tachineze pe langa unele dintre aceste idei și a ajunge la ceva, chiar mai complexă, până la sfârșitul. Am de gând să merg aici și am de gând pentru a merge mai departe și de a crea un nou fișier. Deci, din nou, setul problemă va umbla te prin unele dintre aceste etape. Dar, tot ce am facut a fost sa merg la meniul File și I a spus "noi," atât de mult ca Microsoft Word, sau orice program de genul asta. 

Și să mergem mai departe și ne-am acum-- implementat "Salut" în urmă cu o clipă, dar hai sa facem ceva un pic mai drăguț. Am de gând să meargă până la evenimente. Și am de gând să fac ", atunci când steag verde clic. " Și apoi am de gând să utilizeze, să spunem, o ramură. Așa că am de gând să utilizeze un "dacă" starea. Si observa cum, de îndată ce mă apropii pentru ea, vrea să fixați împreună. Așa că am dat drumul și se fixează împreună. Și acum pot face ceva interesant. Dacă aș derula aici, am de gând pentru a vedea o grămadă de blocuri. Dacă mă duc la "date" - lasă-mă să zoom in-- există ceva despre variabile. Dacă mă duc la "mișcare", puteți se pare că o revenire. Dacă mă duc la "operatori" - oh, acest lucru este interesant, Eu pot alege un număr aleator. Așa că lasă-mă să fac ceva cu doar o oarecare probabilitate, doar pentru că. Am de gând să merg mai departe și trageți această piesă de puzzle, aceasta este faptul că mai puțin de bloc, așa că este doar "Este acest număr mai mic decât unul?" Dar eu nu vreau un cod greu un număr pentru că este destul de inutil. Așa că am de gând să trageți această piesă aici, și observați cum se fixează în, și acum lasă-mă să merg mai departe și spune "dacă numărul care este ales la întâmplare este mai mică de șase, procedați în felul următor. " Acum, de ce mai puțin de șase? Ce probabilitate este aceasta în mod eficient O să-mi dea, doar intuitiv? Aproximativ 50%, corect? Dacă numărul care a ghici aleatoriu între 1 și 10 este mai mic de șase, clar că este unul, doi, trei, patru, sau cinci. Și astfel încât mă va da un 50% probabilitate de ceea ce se întâmplă? 

Ei bine, hai sa facem ceva de genul aceasta, "play miau sunet." Și notificare, din nou, piesa de puzzle crește pentru a se potrivi, atât timp cât se potrivesc formele. Asta este ceea ce este important. Lasă-mă să merg pe la Scratch aici și faceți clic pe "joc". Nu se întâmplă nimic. Este un bug? Nu, nu este necesar. Ar putea fi doar faptul că un a fost aleasă număr mai mare. Deci, hai sa o facem din nou. Nimic. 

[Miau] David J. MALAN: Nu este. [Miau] David J. MALAN: Din nou. Nu 

[Meowing] David J. MALAN: Deci, dacă ai a jucat vreodata un joc, desigur, în cazul în care lucrurile se întâmplă la întâmplare, ca băieții răi vin sau nu vine pe la ecran, sau lucrurile sunt în scădere sau care nu se încadrează, asta e doar pentru că ceva super- simplu ca asta se intampla. Alege un număr aleator, iar în cazul în care este mai mică decât o anumită valoare, poate face acest lucru sau poate face asta. Putem încorpora că într-o condiție. Hai sa facem ceva diferit. 

Permiteți-mi să arunci departe. Puteți scăpa de lucruri de doar trăgând spre stânga și da drumul. Lasă-mă să mergeți mai departe și de a face un bloc pentru totdeauna și de a face foarte repede ceva enervant. Lasă-mă să mergeți mai departe și spune "play miau sunet." Dar eu nu vreau ca acest lucru să fie prea enervant, așa că lasă-mă să iau acest bloc, "Aștepta o secundă" și anunț nu mai e loc pentru ea. Dar dacă te duci destul de aproape, ea vrea să meargă acolo. Asa ca am dat drumul și se va să crească pentru a umple bloc. Deci, acum, aceasta este o buclă. [Meowing] David J. MALAN: Sunt literalmente face acest lucru pentru totdeauna. Din nou și din nou. Aceasta nu este doar de sondare naturale. Lasă-mă să mergeți mai departe și de a schimba acest lucru pentru a nu o secundă, la două secunde și apăsați Enter. Și ce e frumos despre Scratch este pe care le-ar putea programa interactiv. Fa o schimbare, poate lovi Enter sau Redare din nou, și-l va păstra doar merge. Ei bine, acum de ce nu facem ceva un pic mai drăguț? Mai degrabă decât a face totul de la zero, lasă-mă să mergeți mai departe și să se deschidă un avans a făcut o, pe care am pre-copt, numit "Pet Cat." Și vom posta toate aceste fișiere on-line, și problema setat la zero vă va spune cum să le acceseze și deschide-le. Și preaviz, aceasta este destul de simplu. Dar, în prealabil, se pare că am luat o "pentru totdeauna" bloc, așa că am o buclă. Și apoi am luat un "dacă" starea. Am o expresie booleană. 

Deci, în limba engleză, doar uitându-se la aceasta, mai ales dacă nu ați mai programat înainte, doar intuitiv, ceea ce se întâmplă acest lucru pentru a face, acest program? 

[Audienta Chatter] 

David J. MALAN: Dacă animale de companie pisica, pisica se va miau, corect? Pentru că "pentru totdeauna debifarea" este cursorul mouse-ului atinge pisica. Deci, să fie clar, și nu am spus acest lucru înainte, toate acestea puzzle piese și script-ul care le-am combinat in, ca să spunem așa, un script este sinonim cu Programul, într-adevăr, face parte din această pisică. Și motivul pentru care e-- deoarece aviz cum se evidențiază aceeași pisică aici, aici puteți crea o a doua pisică sau de câine sau chiar tot ce vrei grafic. Puteți importa ceva de la Photoshop, sau altele asemenea, și să se integreze ceva, dacă vrea să-l facă pentru un proiect. Și ce veți găsi, în cele din urmă, este că Puteți adăuga script-uri, adăugați puzzle piese, la caractere individuale. Deci, acestea toate fac parte din pisica special. Deci, acum, dacă am merge mai departe și să se joace acest program, nu se întâmplă nimic. Dar se execută. Programul este în acest pentru totdeauna buclă, un fel de așteptare pentru ce să se întâmple? 

[Audienta Chatter] 

David J. MALAN: la animalele de companie pisica. Deci, dacă am muta mouse-ul meu spre lui-- 

[Meowing] 

David J. MALAN: Deci acum Mă mângâi pisica. Între timp, putem avea o ramură dublu. Lasă-mă să mergeți mai departe și deschide până nu pentru animale de companie pisica. Vom posta acest on-line, de asemenea. Acesta este un pic mai mult complex, dar fără a spune puteți ghici, probabil, ceea ce se va întâmpla. 

[Meowing] 

David J. MALAN: Cat este de meowing, timp vechi de mii. Dar acest program este, desigur, numit "Nu Pet Cat," atât de clar, vreau să animalele de companie pisica. 

[ROARING] 

David J. MALAN: Nu pentru animale de companie pisica. Acum, haideți să aruncăm o privire la un alt exemplu aici. Acesta se va numi "Bună, Hi, Hi," din motive care va fi clar, deoarece de îndată ce am rula acest lucru-- 

[SEAL BARKING] David J. MALAN: Foarte ușor de scrie programe Scratch enervant. [SEAL BARKING] David J. MALAN: Acum nu vom mai merge în detaliu, cu toate acestea, dar observa există o serie de caracteristici noi aici. Există o variabilă, numit "dezactivat", și apoi există o grămadă de condiții. Și acum, lasă-mă să doar tu tachineze prin a spune că în cazul în care acest tip devine prea enervant, Eu pot lovi bara de spațiu și el se oprește. Pentru ca rolul jucat de aceste două scripturi este după cum urmează. Una dintre ele este de a face latra la fiecare câteva secunde. Celălalt este doar de așteptare pentru mine a lovit bara de spațiu. Și dacă eu fac lovit bara de spațiu, se va schimba starea acestei variabile, valoarea de această variabilă, care este aparent numit "dezactivat", eu nu am sunat ceva plictisitor ca n, L-am sunat un cuvânt în engleză, "dezactivat". De la 1 la 0 sau 0 la 1. Din adevărat la fals sau fals la adevărat. Și astfel încât să puteți de fapt a se vedea acum, că voi ar putea avea două scripturi, două programe care rulează în același timp, și amândoi s-ar putea sta într-o buclă a face ceva. În așteptare pentru om de a face ceva de genul lovit bara de spațiu. [SEAL BARKING] David J. MALAN: Si acum el e pe drum din nou. [SEAL BARKING] David J. MALAN: Deci, ce altceva am putea face cu aceste exemple? Ei bine, să mergem mai departe și de a face o exemplu cu numărați oi. Vom continua această de-a lungul liniilor aici de-- să deschidem un exemplu de oaie. Și preaviz, la fel ca înainte, aceasta, din fericire, este un pic mai puțin enervant. După ce l-am lovit juca aici-- Oh, nu, asta e enervant. El se va baa cu o oarecare probabilitate. Să jucăm din nou. 

[OAIE BLEETING] David J. MALAN: Singura diferență este ne-am schimbat costumul, ca să spunem așa, și suntem reducerea la jumătate și spune ce că numărul real este. Ei bine, să mergem mai departe și facem un pas mai departe. Și lasă-mă să te tachineze cu o altă caracteristică aici. Să mergem mai departe și să se deschidă un program numit fire. Atât de mult ca tine poate avea un sprite, având mai multe script-uri, puteți avea două sprite, o pasăre în o pisica, fiecare având propriul lor scenariu. Și fiecare dintre ele poate funcționeze simultan. Dacă ați auzit vreodată Cuvântul "multithreading" un calculator este mijloc "multithread" se poate face mai multe lucruri deodată, și, într-adevăr, așa pot zgâria. 

Și acum observa pasărea este un fel de prost. Trebuie doar să faci lucruri la întâmplare, viguros pe ecran. În mod evident, pisica a fost programat a avea un fel de capacități care doresc la domiciliu în pe pasăre, deoarece el mereu spre el. Până în cele din urmă, el prinde pasărea real. Așa că nu voi insista asupra detaliilor aici, dar puteți fel de bucatica de aceleași forme, unele "Dacă" condiții, unele variabile, Poate unele bucle, sunt în cele din urmă a face același lucru. 

Acum, lasă-mă să merg mai departe și deschide up cu totul altceva, sa tachineze unii dintre voi, în special cei mai confortabil, ceea ce se poate face de fapt cu asta. Am de gând să merg mai departe și deschide Button aici. Și aceasta este o super- program simplu, aparent, dar priviți ce se întâmplă când Eu-- Uita-te la ce se întâmplă atunci când am deschis această versiune a acestuia, aici în browser-ul, scratch.mit.edu. Și când am faceți clic pe acest mare și roșu buton, observa ceea ce se întâmplă. Deci, ce se întâmplă aici? Există de fapt o complexitate mult mai întâmplă sub capotă, chiar dacă le-am pus în aplicare aceasta, sau sincer, Dan Bradley a pus în aplicare această așa pur și simplu. El a proiectat un puzzle personalizat Scratch bucată, cunoscut ca o extensie la zgârieturi, el a numit-o Toggle. 

Și ce Toggle face este trimite un mesaj pe internet. Și că mesajul în sine arată un pic criptic. Dar acest lucru, de asemenea, veți înțelege până la sfârșitul termenului. Mesajul el de fapt trimiterea arata ceva de genul asta. E doar text. Cryptic. Veți înțelege de timp avem problema stabilit șapte. E doar trimite un mesaj text pe internet la un server. Și asta server este, în cele din urmă, vorbesc cu acest bec, care are una dintre aceste becuri de lux în ea că, în sine, este vorba la Wi-Fi în rețeaua de aici, în cazul în care un dispozitiv local de jos aici-- și, în cele din urmă, este de fapt cotitură care aprinde și se stinge. Dar putem face mai mult lucruri interesante încă. Observați ce Dan a făcut, de asemenea, pentru noi. El a făcut mai multe sprite, fiecare dintre care are un script de așteptare pentru un clic. Și dacă faceți clic pe roșu, merge roșu. Dacă mă albastru, merge albăstrui. Verde, galben, portocaliu. Și toate acestea se întâmplă de merge cale de ieșire pe internet, înapoi aici la bec, pe și în afara. 

Și dacă poți it-- cred și aceasta este probabil unul din cele mai complexe Scratch Proiectele cineva are implemented-- el a făcut-o, în echitate, într-o zi. Și asta a fost provocarea cu care ne-au aruncat jos Dan când am văzut avem becuri binare, avem Scratch, cum le putem combina? Și, într-adevăr, acest lucru este absolut ceva cineva în această cameră ar putea face prin end-- semestru este el becuri binare reimplemented utilizând aceeași interfață care a fost pe iPad nostru pe miercuri. Așa că acum, dacă am de fapt faceți clic pe plus pe aici, avem unul, doi, trei. Eu pot lovi 16 și porniți care unul pe. 128, și așa mai departe. 

Acum, în cazul în care are numai și cu sufletul la gură mintea ta, ai putea face lucruri mult mai accesibil, nu implică nici un hardware sigur. Doar lucrurile de pe ecran în sine. Și, într-adevăr, ceea ce majoritatea studenților sfârșesc prin a face un fel de joc, unele lucrare artistică, sau un fel de animație interactiv. Și voi spune unul dintre noastre favorite a fost acesta. Și m-am gândit dacă am ar putea dim luminile, vom lua o privire la acest final de Proiect Scratch în concluzie. Dar ceea ce veți ar trebui să păstreze în minte, ca Pot să vă șicana cu un ultim detaliu, secționare va începe săptămâna viitoare. Program de lucru va începe săptămâna viitoare. Problema stabilit vor fi postate la zero CS50.harvard.edu mai târziu astăzi. Și veți fi întâmpinați în problema set la zero a CS50 propriu Zamyla Chan, care ghidează de cele mai multe walkthroughs noastre. Acestea sunt clipuri video încorporate în seturi de probleme care va ține de mână printr-o mulțime a stabilit inițial în sus și prin multe a eventualelor decizii de proiectare. Deci, dacă ați avut vreodată că emoție atunci când iau o temă pentru acasă și întrebam, unde să încep? Ea va avea ca răspuns pentru tine. Și acum, un program de finală de la unul dintre predecesorii dumneavoastră ca răspuns la întrebarea "Ce spune vulpea?" [MUSIC YLVIS, "Ce spune vulpea?] 

YLVIS: (cantand) Dog merge bătătură. Cat merge miau. Bird merge tweet și mouse-ul merge chițăit. Cow merge moo. Frog merge cârâit. Și elefantul merge claxona. Rațe spune vraci și pește merge blub. Și sigiliul se ow ow ow, dar nu e un sunet pe care nimeni nu știe, ce spune vulpea? Și 

David J. MALAN: Asta e pentru CS50. Vă vom vedea la Puzzle Ziua și pe luni. 

[Aplauze] 

[MUSIC YLVIS, "Ce face FOX spune?"] 

Narator: Și acum adânc gânduri, de Daven Farnham. Azi am fost lovit în se confruntă cu o carte de telefon. Confuz, așa cum eu sunt la acasă uitam on-line.