[Powered by Google Translate] [Muzica rock] [MUSIC - "fericiți împreună" Testoasele] DAVID MALAN: Astăzi, vom începe explorarea noastră a fundamentale ale informaticii și introducerea noastră, acum, la arta de programare, dintre care faptul că este doar un exemplu. Dar, în aceeași ordine de idei de rezolvare a problemelor, știu că Ziua lui CS50 Puzzle tradițională este mâine. Dacă nu ați încă am RSVP pentru acest eveniment, puteti merge la cs50.net/rsvp. Puteți aduce echipe de câte doi sau trei sau patru. Veți fi contestată cu probleme, cum ar fi cea pe care o am văzut acolo la început. Toate problemele noi în acest an, dacă împărtășit anul trecut, și tu va avea o șansă de a câștiga, apoi câteva premii fabuloase. Printre ei, un Wii și unele, cum ar fi certificatele de cadou și, toate în timp ce agățat cu studenții și colegii CS50 și pizza și Facebook. Deci, mai mult pe faptul că mâine, dacă doriți. Acest lucru este atunci CS50, pentru cei dintre voi alături de noi pentru prima dată. Și știu că acest curs este deosebit de determinat pentru a obține tine prin acest curs până la sfârșitul său final, moment în care va avea nu numai o înțelegere a acestor fundamentale ale științei calculator, dar va avea acest set de aptitudini foarte practic pe care le poate lua apoi înapoi la departament propriu, fie că este vorba științe inginerești, matematici aplicate, științele fizice, naturale știință, sau similar. Într-adevăr, ceea ce este atât de interesant despre știință de calculator aceste de zile este faptul că acesta este doar atât de aplicabilă tot felul de domenii. Și chiar dacă astăzi, vom zgâria doar suprafața unui limbaj de programare foarte tradițional cunoscut sub numele de C, vă vom în loc să se uite la ceva numit Scratch, ceva cu care acest poveste de dragoste cookie a fost pus în aplicare de către unul dintre dvs. predecesorii în ultimii ani, să spună povești, pentru a crea jocuri, pentru a crea artă interactivă, precum și pentru a începe efectiv să-și încheie nostru mințile în jurul unele dintre constructe fundamentale care stau la baza de programare, dar într-un context, după cum veți vedea, asta e mult mai puțin înfricoșător, care este mult mai puțin arcane, decât veți vedea înainte de timp. Și dau seama, de asemenea, pentru cei dintre voi doar alaturi de noi acest semestru, frazele pe care am terminat prelegerea de miercuri, nu este atât de important în cazul în care va ajunge relativ la dvs. colegii din această clasă, dar în cazul în care, până la sfârșitul semestrului lui în săptămâna 11, ajung relativ la tine chiar în ziua de azi. Deci, fără alte formalități, acesta este, de asemenea, demn de remarcat faptul că cei mai puțin confortabile, cele undeva la mijloc, sunt De asemenea, prin proiectarea acestui curs, nu cu orice dezavantaj vis-a-vis de cele mai confortabile vin în această clasă. După cum veți vedea în următoarele săptămâni să vină, avem diferite piese de fundal spate disparate, secțiuni pentru cei mai putin confortabil, mai confortabil, cele undeva între. După cum veți vedea în acest weekend și săptămâna viitoare, două versiuni ale cele mai multe seturi de probleme, atât în ​​ediția standard, și așa hacker pe care le toți pot auto-selecta jos calea cu care sunt cele mai confortabile. Așa că astăzi, am arunca cu capul în această programare limbaj numit Scratch. Este un limbaj de programare grafică, și totuși are aceleași caracteristici ale unora dintre limbile nivel mai ridicat vom explora mai târziu în semestrul, printre care și C JavaScript și PHP. Dar o să ne permită să evite unele dintre distrageri de timpuriu de sintaxă, lucruri cum ar fi punct și virgulă, paranteze, și alte detalii arcane că, la prima vedere, nu sunt doar la toate intelectual interesant și au tendința de a obține, în drumul de la o înțelegere fundamentală. În ceea ce privește structura de sprijin acum înainte, a realizat acest instrument, CS50 Discuta, care va fi legat în cursul lui site-ul mai târziu astăzi, este un forum de discuții online, în care vei fi capabil de a pune întrebări unul de celălalt și personal, și este, de asemenea, un instrument, după cum vom vedea săptămâna viitoare, pe care le vom folosi destul de integratedly în orelor de serviciu, precum și. Într-adevăr, orelor de program începe luni, și, sincer, prima săptămâni de ore de birou este cheia destul de scăzută. Nu cred că veți găsi tot ce Scratch inaccesibile. E destul de auto-explicative, după cum vom vedea, și așa mai departe ceea ce vom folosi pentru astăzi este de a extrage o parte din idei fundamentale care vor, apoi, de-a lungul persistă restul semestrului. Dar începând de luni, la 8:00 PM prin intermediul 23:00 va fi orelor de serviciu în Annenberg peste pauza de creier. Secționarea doi vor începe în această seară, așa cândva această week-end, du-te la cs50.net/section, și veți se cere o serie de întrebări. Printre ei, cum ați descrie dvs. nivelul de confort ca de azi? Nu e nici o regulă greu, rapid cu privire la cine e în care găleată. E doar un fel de lucru pe care știi, probabil, dacă sunt printre cei mai puțin confortabil sau în alt mod. Și acum, walkthroughs. Setul caietul de sarcini problemă pentru această săptămână, atât standard, și ediția hacker deopotrivă, este online la cs50.net ca de acum. Și veți vedea că prima dintre aceste ediții, Versiunea standard în fiecare săptămână, este însoțită de ceva ce am apela un walkthrough cod, o sesiune condusă de unul dintre colegii de curs de predare pentru a vă ghida prin, furnizează sfaturi cu privire la, și veți obține pe o cale special atunci când vine vorba de de a începe aceste seturi de probleme. Deci, cu fiecare dintre aceste probleme seturi, daca esti vreodata doresc pentru tine în cazul în care încep, începe cu aceste walkthroughs. Și, de fapt, permiteți-mi să introducă Zamyla Chan, această coleg de an de predare, care va conduce fiecare unul dintre aceste walkthroughs. Zamyla? [Aplauze] ZAMYLA CHAN: Oh, bună, toată lumea. Numele meu este Zamyla. Sunt o inginerie junior studiază în Winthrop House. Dar am încerca și în formă în cât mai multe cursuri de informatică ca am poate, motiv pentru care eu sunt foarte incantata sa fie conduce această an walkthroughs. Walkthroughs, pentru mine, au fost o parte esențială a CS50 meu experiență. În timpul walkthrough, pentru fiecare p-set, vom trece prin problema stabilit împreună, uita-te peste problemele, un fel de împărțiți-le în sus, în mușcăturile de gestionat. Îți dau sfaturi, tehnici, pentru a obține Noțiuni de bază și prin intermediul. Sper să vă văd pe toți la walkthroughs. Dacă nu se poate face în persoană, atunci vă rugăm să ton în on-line. DAVID MALAN: Excelent. Mulțumesc, Zamyla. Deci dau seama că walkthroughs sunt, într-adevăr, într-o vineri dupa-amiaza, dar acest lucru este în mod deliberat de proiectare, astfel încât chiar daca nu ar participa mai degrabă de clasă pe o zi de vineri după-amiază, videoclipuri vor fi tot mai repede peste week-end. Deci dau seama că cs50.net va fi tot a lui Zamyla walkthroughs. Și că nu există data de astăzi și ora, 3:00 PM, Harberd Hall, 104. Și unii dintre semenii didactice au, de asemenea, pregătite unele remarci pentru tine, în contumacie pentru a vă oferi un pic de perspectiva a ceea ce experiența lor și intrarea în ies din CS50 a fost ca. Deci, dacă am putea dim luminile pentru o clipă, îți dau unii dintre angajații CS50 lui. JACKSON Steinkamp: Am luat CS50 anul trecut, ca un boboc în cădea, și a suflat absolut mintea mea. Nu am avut niciodata luat nici un fel de programare înainte de clase, și niciodată nu a venit cu nici o stiinta calculatoarelor experiență la toate. Și doar, am auzit noutăți despre clasa și a decis să-l ia. JULIA MITELMAN: A fost foarte distractiv, foarte angajarea. Eu încă, la această zi - Tocmai am vazut am dischetă care ne-a dat lui David în prima noastră zi de curs. Aș fi atârnat pe peretele meu. Aceasta este, probabil, un pic tocilar, dar am atârnat în pe pagina mea perete în timpul clasei ca un memento de cât de mișto a fost. TRAVIS DOWNS: E atât de jenant. JACKSON Steinkamp: Computer știința este ceva ce Ar trebui să încercați chiar daca nu esti unul pentru științele tradiționale. E propria sa experiență, și CS50 va asigurați-vă că sunteți sprijinite bine prin ea, cu armata sa veritabila de TFS. ALI NAHM: l-am luat ca un boboc, și așa am făcut o mulțime de prieteni noi. De asemenea, am fost introdus la această concentrare în întregime și întregii școli de inginerie, și așa am foarte recomanda și vă urez bun venit în familia noastră CS50. Yaniv YACOBY: CS50 doar te învață cum să utilizeze instrumentele care sunt accesibile pe scară largă. Ai nevoie doar de un laptop, aveți nevoie de un browser web, și tu Trebuie să învețe să scrie un cod, și puteți construi cu adevărat lucruri îngrijite. KAREN XIAO: E atat de cool pentru a fi în măsură să facă ceva și au oamenii o folosesc și să-l văd oameni, și asta e ceea ce am place foarte mult despre asta. TIM McLaughlin: - un sentiment de comunitate, cred că, în acest mai mult decât orice alt curs le-am luat până acum desigur. Nu te lua doar un alt - nu te umple o altă cerință. Tu nu esti doar de gând să merg la cursuri și secțiune. Dar ce te faci de tone de lucruri care sunt toate despre programare și totul despre tehnologie, dar aceasta nu Chiar simt ca o clasă cele mai multe ori. DOWNS Travis: Și în prima zi, au înmânat tort, și Am fost imediat vândut. JACOB PRITT: bomboane gratuit și pizza. ZAMYLA CHAN: - indiferent de nivelul de interes, cred că CS50, te vei distra, și veți fi intelectual stimulat. MARK GROZEN-SMITH: Este întotdeauna o petrecere în clasă, și este o petrecere în fiecare noapte de lucru pe dumneavoastră p-set. JACKSON Steinkamp: De fiecare dată când termin un set de probleme, vă se vor simți ca și cum ai terminat un proiect. MELISSA NIU: A fost primul an de facultate, și am fost făcut cumpărături. Am avut patru clase gata mele, și am fost în Annenberg. Și am ciocni într-un prieten, iar el spune, hei, eu sunt la cumpărături această clasă numit CS50, și tu ar trebui să vină cu mine. Sfârșit a lua-o ca toamna, iar dupa acea clasă, am gândit că am de gând să minore în CS. Dar iată-mă, trei ani mai târziu, încă studiază calculator știință și de fapt, o fac ca o mare, și am iubit fiecare moment de ea. ROB BOWDEN: Nu am nici o idee. ALI NAHM: Să vedem. MELISSA NIU: Nebunia. DIFUZOR 1: Mă simt ca și cum mi-ar fi foarte clișeu. Aș spune doar, ca, minunat. Yaniv YACOBY: Accesibilitate. JACOB PRITT: bomboane gratuit și pizza. TRAVIS DOWNS: Nu se poate refuza o clasa care mainile tort. TIM McLaughlin: energetica. Vipul Shekhawat: esențială. ROB BOWDEN: Lasă-mă să gândesc la un răspuns. Cred că am găsit ceva. Oh, Doamne. Da, numele meu e Rob Bowden, iar acest lucru este CS50. [Aplauze] DAVID MALAN: În regulă, așa că hai să încep să picteze o imagine de direcția în care putem merge, și să introducă acest concept cunoscut sub numele de aici, pseudocod. Deci pseudocod nu este o programare limba în sine. Nu e nimic tehnic în sine, dar e doar un fel de modul general de a te exprima destul de precis, destul de algoritmic, destul de procedural, dar fără având să vă faceți griji cu privire la ceea ce limba te exprima te inch E un model de limba engleză și limbaje de programare, cu care se întâmplă să fie familiarizați, astfel încât să putem începe scris acest fel de lucruri ca vom merge. Și, de fapt, Iosif, aș putea să te împrumuta până pe scenă pentru a fi scrib aici? Am plecat înainte aici, în avans și uitat să afișezi pe unele șosete astăzi, iar acest lucru va fi printre noi mai mult exemple ridicole. Acum, am nevoie de tine aici. Voi face parte șosete. Deci, aici avem un pic de notițe. Aceasta este literalmente doar TextEdit într-un Mac. Noi nu suntem de fapt de gând să scrie un program de runnable, dar suntem doar de gând să înceapă schița pe bază de pseudocod pe unele dintre sfat le furnizați la mine aici. Deci, aici este meu gramada șosete la domiciliu. Nu am nici ciorapi pe când mă trezesc dimineața, iar noi acum Trebuie să scrie un program, un algoritm de felul, cu care pentru a obține aceste șosete pe picioarele mele. Și de-a lungul drum, hai sa vedem daca putem excursie de peste, sau se confruntă, unele dintre ideile pe care ai de gând să aibă de a începe gândesc mult mai în serios atunci când programarea ca nu cumva programele nu se comporta la fel de destinat. Așa că stau aici. Am gramada mea de șosete. Care e primul lucru pe care o ființă umană ar fi rezonabil fac atunci când scopul este de a pune pe o pereche de șosete? Cineva să-mi dai un pas, și numai un pas. Da? PUBLICUL: Apleacă jos. DAVID MALAN: aplecați, Ok. Pasul doi. Pasul doi. PUBLICUL: Ridică șosete ta. DAVID MALAN: Ridică șosete ta. Bine, ambiguitate atat de usoara aici, și aceasta este una dintre primele pietre de poticnire pe care suntem ar trebui să în mod deliberat întâlni aici. E un pic cam ambiguu, astfel încât până ia șosetele dumneavoastră. Bine, voi lua asta, dar un calculator, realizat în doar o bit, nu este de gând să aibă acest fel de instinct uman la doar alege cel mai apropiat. Vom avea să înceapă, înainte de mult timp, exprimându- ne mai exact. În regulă, deci pasul doi este ridica ciorap ta. Ne vom lua. Pasul trei. În spate. PUBLICUL: Găsiți o pereche de potrivire. DAVID MALAN: Găsiți pereche de potrivire. Ok, deci asta e bine. Am avut de a alege acest ciorap. Deci, scopul este de a găsi o șosetă de potrivire, acum, dar ceea ce înseamnă asta? Un om rezonabil fiind, la fel ca miercuri, când am știut cum să găsească Mike Smith într-o carte de telefon, doar un fel de a plecat cu instinctul lor. Dar aici, e evident asta șosete aici, dar un computer nu va fi atât de instinctiv. Un computer este de gând să aibă o colecție de biți, așa cum am discutat, miercuri, și acestea sunt organizat într-un fel în memorie. Dar ideea este că un computer are doar capacitatea de să se uite la lucrurile unul câte unul, și, de fapt, chiar am oameni - chiar dacă se simte ca și cum m-am uitat în jos și o ruptură secundă mai târziu Știu unde este șosete, creierul meu și ochii mei probabil ai o rapidă degresat a acestor șosete, și apoi fixat pe cel în cauză. Deci, dacă am fi mai deliberată acum ca un computer, cum pot că acest pereche? Ei bine, trebuie să itera. Trebuie să probabil bucla peste mizeria asta de șosete pe podea prin care spun ceva de genul PENTRU FIECARE ciorap, îl iau în sus, și dacă aceeași formă și mărime ca și celălalt, ATUNCI dot, dot, dot, vom continua povestea. Deci, pentru fiecare ciorap, așa că am ridica asta. Am verificat este egală cu această asta. Nu e, așa că am pus deoparte partea. Apoi am repeta din nou. Este acest egal unul? Nu, nu e, așa că am pus-o deoparte. Este aceasta? Nu. Acesta? Nu, și așa mai departe. Și apoi în cele din urmă, sper, voi întâlni acest ciorap aici. Deci, dacă e aceeași formă, dimensiune, ia-o. Și acum, ce-ar fi următorul nostru pas aici? Da? PUBLICUL: Identificarea dreapta la stânga. DAVID MALAN: Bine, să identifice dreapta și la stânga, așa din fericire, acest tip de lucrări. Un pic simetric, sau tocmai am purtat-le în acest fel. În regulă, așa că am identificat corect. Și acum, înainte de a continua, permiteți-mi să subliniez ceea ce lui Iosif făcut aici, ca un fel de programator versat. Deci, din nou, nu e singura cale de a face acest, dar dincolo de doar numerotarea liniilor, Joseph a început deja să facă acest lucru un fel de indentare. Într-adevăr, aceasta este o convenție foarte frecvente în programare, prin care, atunci când faci ceva iterativ, looping stil, așa cum suntem ceea ce presupune cu sintagma engleză "PENTRU FIECARE ciorap, "convenția în pseudocod și, după cum vom vedea, limbi normale de programare, este la doar liniuță. A lovit bara de spațiu de câteva ori, a lovit tasta Tab sau similare, astfel încât imbricate sub "PENTRU FIECARE ciorap" este bucata de lucruri de care aveți nevoie pentru a face ca un rezultat al acestei bucla. Deci, asta e tot ce-a de transport semantic. Acum Între timp, "Dacă e aceeași formă și mărime," faptul că "Ia-l" este indentat în continuare înseamnă doar asta e singurul lucru pe care ar trebui să faceți în cazul în care această condiție, în cazul în care ramură, care furculiță în drum, este de fapt adevărat. Deci, acum aici, suntem la pasul patru, să identifice dreapta și la stânga. Am identificat drept. Dă-mi pasul cinci. Și punct de vedere tehnic, am putea numi cu adevarat pentru fiecare lucru - ar trebui să numeroteze, probabil, în cazul în care toate liniile vom face acest lucru. JOSEPH: [inaudibil] DAVID MALAN: [inaudibil]? Bine, bine, bine, vom face cum vrei tu. În regulă, deci pasul cinci, cum facem șosete corect? Cum procedăm viitoare, aici? Da? PUBLICUL: Ridicați piciorul drept. DAVID MALAN: Ridicați piciorul drept, Ok. Pasul șase? Rapid. Da. PUBLICUL: Găsiți un capăt deschis al șosete. DAVID MALAN: Bine, găsiți capătul deschis al șosete. Atât de bun. Deci, aici, sincer, un instinct foarte comun ar fi doar pus pe ciorap dreapta, dar asta este destul de ambiguu. Cu excepția cazului în computer sau umană știe exact ce înseamnă asta, nu va fi de a executa că, așa aici, am găsit deschiderea stocului. Pasul șapte? PUBLICUL: Atingeți degetele de la picioare. DAVID MALAN: degetele de la picioare Touch. Ok, deci acum mergem - În regulă, mă duc să iau niște libertăți aici. Multumesc. Pasul opt? Pune pe ciorap. Ok, deci acum, cred că suntem destul de aproape pentru a sorta de ia aceasta la domiciliu. În regulă, deci asta se duce în sus. Voi lua niște libertăți cu ceea ce înseamnă, de fapt. Pune soseta pe. În regulă, acum pasul nouă? PUBLICUL: Pune piciorul jos. DAVID MALAN: Mulțumesc. Pasul nouă, pune piciorul jos, iar acum, putem repeta. Deci probabil, putem merge acum în pasul 10 si spun identifica a plecat ciorap, dar asta e, probabil deja făcut. Și așa, atunci, pot sorta a repeta acești pași. Dar acest tip de întrebare ridică. Înainte de a, ultima dată când am vrut să repete ceva, am a făcut-o iterativ, din nou și din nou, A pentru Fiecare buclă ca să spunem așa. Ar avea sens pentru a utiliza o buclă, în scopul de a gestiona atât stânga și dreapta șosete? Pentru că se simte ca și cum aceste operațiuni sunt destul de mult identice, cu excepția faptului că unul începe aici și unul Începe aici? Avem bucla, sau se poate menține la doar câțiva pași de scris 10 și 11 și 12? PUBLICUL: Buclă. DAVID MALAN: Ok, deci bucla. Eu de fapt ar fi putut spune doar continui. Deci, de ce este acest caz? Ei bine, aceasta este de fapt primul nostru non-evidente deciziile de design, și, de fapt, una dintre valorile cu care vom începe să evalueze, pentru noi înșine și pentru tine, Calitatea unui program este doar cât de bine conceput este. Ați făcut cantitatea minimă de muncă necesară pentru a a face o treabă mai repede, fie din punct de vedere de timp sau în termeni de timp a calculatorului de alergare? Câte operații durează să execute? Deci, fără îndoială, aceasta este o oportunitate pentru o buclă, deoarece de îndată ce am începe copierea și lipirea, ca Joseph eficient ar începe să faci într-o clipă, tu ești un fel de pierde dvs. timp, și ești de două ori expresiv. Dar, în același timp, acestea sunt într-adevăr numai două specială cazuri, la stânga și la dreapta. Și întrucât înainte, am putea avea 10 sau 20 sau mai multe șosete în o gramada, ea face cu siguranță sens a nu avea 50 de linii de Codul spunând verifica acest ciorap, apoi următoarea, apoi pe următorul. Uite, e un pic mai puțin evidentă, și aș propus că am putea merge, fie un fel. Am putea avea, fie că bucla, deși numai bucle de două ori, sau am putea copia pur și simplu și să lipiți doar un pic aici, în scopul de a face o treabă. Dar acest program este buggy, ca să spunem așa. S-ar putea avea unele greșeli, erori, sau cazuri de colț, astfel încât să Vorbim, pe care nu am anticipat într-adevăr. Nimic nu a mers greșit de data asta, dar ce-ar fi putut mers prost în timp ce executa acest program? PUBLICUL: Nu aveți nici o șosete. DAVID MALAN: Deci, ar putea exista nici un fel de sosete acolo. Deci, haideți să considerăm acest caz colț. Deci, dacă am putea derula înapoi la pasul unu, pasul astfel unul a fost îndoiți în jos, astfel încât să se verifică. Etapa a doua, ridica ciorap, dar apoi găsiți șosete de potrivire, identifică drept. Am un fel de făcut o grămadă de ipoteze, iar acest lucru este, sincer, de ce programul prăbuși uneori. Dacă vă, programator, s-au făcut anumite ipoteze, cum ar fi va exista cu siguranță va fi cu siguranta acolo șosete sau se întâmplă pentru a fi lăsat în memoria calculatorului, cu siguranta acolo se întâmplă să fie lăsat spațiu pe disc pe hard disk - Ei bine, dacă faci aceste ipoteze, și că nu e, în fapt, realitatea, cine știe ce, uneori, computerului de gând să faci? Și, uneori, atunci când vei ajunge mingea plajă filare sau Windows sau congelate cum ar fi, e tocmai pentru că unele programator nu a anticipat aceste cazuri, așa-numitele colț. Ce altceva ar fi putut greșit la acest program? Da? PUBLICUL: Nu aveți un picior drept si un picior stang. DAVID MALAN: Bine, nu poate avea atât un picior drept și o piciorul stâng, și astfel acest program ar putea să nu fie universal aplicabil. Altele? PUBLICUL: S-ar putea fi preluat de un ciorap orfan. DAVID MALAN: S-ar putea fi luat un ciorap orfan, asa ca o non-potrivire șosete, care are doar nu frați pentru că am pierdut-o, e rupt, e în continuare spălare, sau ca. Așa că, de asemenea, nu a fost într-adevăr manipulate. Da? PUBLICUL: S-ar putea avea deja șosete pe. DAVID MALAN: S-ar putea avea deja șosete pe. Nu am verifica de fapt. DACĂ nu aveți șosete pe, continuați apoi să facă linia unu și doi. Și asta ar putea întâmpla. Ai adormi cu șosete dvs. pe și cum ar fi, astfel că, de asemenea, un caz colt foarte rezonabil. Și poate că celălalt? PUBLICUL: ciorap este pe dos. DAVID MALAN: Deci, șosete este pe dos, așa că am făcut nicio eroare verificarea, pe scurt. Noi nu am verifica dacă starea lumii este ca ne asteptam. Noi nu am verifica dacă am găsit ceea ce de fapt căutăm. Și chiar dacă acest lucru este un fel de exemplu ridicol care implică șosete, la sfârșitul zilei, acest lucru este exact un fel de stare de spirit, trebuie să aveți în timp ce scrierea de programe, chiar și în Scratch, precum și în C, în JavaScript, în PHP, pentru că altfel, programele vor expune echivalent din minge de plajă filare sau a randamentului doar rezultate inexacte. Deci, de multe mulțumiri aici pentru a cărturarului Iosif nostru. [Aplauze] DAVID MALAN: În regulă, deci ceea ce este, în fapt, un program de calculator? Ei bine, haideți să aruncăm o privire rapidă la un Reprezentantul unul aici. Deci, acesta este un program scris într-un limbaj numit C. C este limbile destul de vechi in aceste zile, dar multe sunt construite noi pe partea de sus a acesteia. Într-adevăr, PHP, una dintre limbile de web-centrice vom folosesc spre sfarsitul lui termen, în sine are ceea ce se numește un interpret, un program care este scris în C, dar mai mult pe faptul că în multe saptamani de acum. Dar acest program, iar acest lucru este ceea ce înseamnă să scrie o Programul, deși unul foarte simplu. Avem unele destul de criptic sintaxa aici, dar puteți probabil că, chiar dacă nu ați programat înainte, ceea ce acest program nu. Într-adevăr, nu știu ce este printf, dar cu siguranță imprima evocă ideea de imprimare ceva. Și așa da, acest program este în cele din urmă de gând să imprima cuvintele "Hello, World". Acum, dacă aveți un Mac sau un PC sau un computer Linux, cote sunt, cel puțin în cazul în care ați descărcat unele primare software-ul disponibil, ai fi putut fi scris de programe pe laptop propriu de ceva timp acum. Pe Mac OS, de exemplu, e un program numit Terminal care vine cu un Mac, care este, de obicei, în ta Folderul Utilities, și se deschide, în general, un negru și alb sau o fereastră alb și negru, la care aveți o prompt la care puteți introduce comenzi. Deci, aceasta este de fapt o reminiscență a ceea ce computerele folosit pentru a fi înainte de grafică de utilizator interfețe GUI, de-a lungul a venit,. Acum, în Windows, aveți un mecanism similar în formă din promptul de comandă. Dar ce am de gând să fac aici este deschis în sus, să zicem, TextEdit din nou, astfel încât același program am fost folosiți pentru pseudocod un moment în urmă, și am de gând să merg mai departe și scrie program de prima mea. Include stdio.h, orice ar insemna asta, int main nule, orice ar insemna asta, și apoi în mijloc aici, printf ("Hello, World".). Și apoi închide oferta, aproape paren, punct și virgulă. Acum am de gând să merg mai departe și a lovit doar Command-S. Mă duc pentru a merge mai departe și de a salva acest lucru ca hello.c, astfel încât convenția de la lumea de programare C este numele fișierului punct c.. Mă duc să pun doar în directorul Ioan Harvard, aici, faceți clic pe Salvare, iar acum am de gând să merg pe la această fereastră de terminal, care din nou este acest prompt în alb și negru unde pot executa comenzi. Eu pot rula programe prin tastarea numelui lor, nu prin dublu-clic pe pictogramele în sensul obișnuit. Dar chestia este despre C este faptul că o limbă ca prima C vine în această formă, ceva numit codul sursă. Ceva care arată un pic ca limba engleză, dar este cu siguranță mai puțin ca în engleză decât un pseudocod lui Iosif clipă în urmă. E un pic mai mult arcane. Se pare să urmeze anumite tipare sau reguli. Faptul că am acolade, punct și virgulă, Citate, bretele unghi, se simte ca un computer a venit cu această un fel de limbaj. Dar dacă Mă duc, acum, la această fereastră terminal, eu pot rula un comandă care va converti codul sursă, care este ceva numit cod obiect. Asta se întâmplă pentru a converti Traducere engleză-ca sintaxa pentru a zerouri și cele, aceleași tipuri de zerouri și cele noi a vorbit despre miercuri. Acum, am de gând să rulați o comandă numită zăngănit. Mai multe despre acest lucru în următoarele săptămâni să vină, dar e un program cu pe care eu pot converti hello.c într-o grămadă de zero-uri și unu. Acum, am rula această comandă. Am alerga zăngănit, și apoi i-am spus executați te la acest fișier numit hello.c, pe care am creat-o clipă în urmă, și nimic nu pare să se întâmple. Dar, într-adevăr, dacă am bagat în jurul valorii de directorul meu home, mi-ar vedea că acest program de stupid numit a.out acum există. Acesta este doar numele implicit pentru un program pentru scrierea în C. Putem trece peste asta în cele din urmă, dar este a.out numele programului am transformat în zerouri și cele. Și acum că zerouri sale și cele, Mac-ul meu, în acest caz, sau PC-ul Windows, pot înțelege acele biti, aceste zero și unu. Și așa că atunci când l-am lovit Enter, eu văd "Bună ziua, lume!" Dar e un pic buggy. N-am spus destul de "Bună ziua, lume: aer: -! Jharvard." Aerul este numele calculatorului meu. Jharvard e numele contului, astfel încât ceea ce am în mod clar omite din program? Un fel de sfârșit de linie. Nu am lovit echivalentul Enter sau retur de car, și acest lucru este, din nou, marturie a faptului că computerele pot doar fac ceea ce le spui sa faca. Și faptul că nu am spus calculatorul muta cursorul la următoarea linie - Ei bine, cu siguranță nu este de gând să o fac pur și simplu îndrăzneală pentru mine. Așa că, dacă mă duc înapoi la programul meu, iar eu spun \ n - Deci \ n, așa cum vom vedea în curând, este modul de reprezentând lucruri ciudate, cum ar fi caractere de linie noi, lucruri care altfel ar fi rezultatul apăsarea tastei Enter. Dar pentru acum, știu doar că lovind tasta Enter ar doar face codul nostru arata ciudat, asa ca lumea a hotărât, știi ceea ce, pentru a păstra lucrurile mai frumoasa, să-l păstrați pe o singură linie, hai să spun doar \ n reprezintă o linie nouă. Lasă-mă să resalvați dosarul meu, du-te înapoi la fereastra terminalului, și Re-run a.out, Enter. Totusi buggy, dar de ce? PUBLICUL: [inaudibil] DAVID MALAN: Da, așa că am nevoie să-l recompilați. Deci, pentru a compila un program înseamnă doar converti l de la sursa cod obiect codul codul sursă, să zerouri și cele. Acum, simplul fapt că l-am lovit Salvare în acest TextEdit nu are nici o poartă cu privire la aceste zero și unu, deoarece am mai întâi trebuie să tell zăngănit hei, m-am schimbat acele linii de cod, codul sursă. Ai nevoie de a regenera a.out. Nimic nu pare să se fi întâmplat, dar într-un calculator, la o linie de comandă, ca să spunem așa, atunci când nu se întâmplă nimic, faptul că, de obicei, înseamnă totul este bine. Atunci când ceva se întâmplă, înseamnă Ai stricat, în general. Așa că hai să mergem acum la a.out, și într-adevăr acum, am "Bună ziua, lume. " Și acum, ce zici de zero-uri și unu aceste? În cazul în care, în fapt, sunt alea? Ei bine, eu nu pot cu adevărat doar un fel de poke în jurul valorii de foarte în mod eficient. Lasă-mă să deschid TextEdit. Iată a.out. Lasă-mă să mergeți mai departe și deschide acest, și aceasta este ceea ce în aparență meu Programul pare. Așa că am deschis, nu hello.c, dar a.out. Dar acest lucru nu este de fapt ceea ce este într-adevăr programul meu. În mod evident, acest lucru este un fel de caractere alfabetice. Nu văd nici un zero-uri și unu, dar acest lucru este deoarece este un program de a.out. Zerouri și cele - dar TextEdit, după cum sugerează și numele, este la fel ca Notepad pe Windows, este doar un editor de text, deci este confuz toate aceste zero și unu ca deși acestea au fost, ce? Caractere ASCII. Deci, amintesc de miercuri, am venit cu această cartografiere arbitrară de numere, sau biți, la scrisorile de alfabetul și semne de punctuație și cum ar fi. Deci TextEdit, că este un editor de text este interpretarea greșită a acele modele de zerouri și cele care ar trebui să fie Cuvinte de imprimare, cum ar fi "Bună ziua, lume." E le afișează ca ASCII, și de aceea se pare un pic murdar. Acum, există unele indicii de corectitudine aici. Observați dacă aș sublinia, există un indiciu de fapt "Bună ziua, lume ", astfel încât undeva în program este teză am scris. Dar să mergem mai departe și acum vedea cu un alt program. Acest lucru nu este cel pe care îl vom folosi ca de multe ori, dar, de asemenea, vine cu un Mac și va fi în interiorul aparatului de CS50. Lasă-mă să merg mai departe și să deschideți cu un program numit XXD. Înapoi în zi, majoritatea programelor au fost numiți destul de criptic, și astfel tendința continuă. Dar-b înseamnă scuipe acest program ca binar. Nu-l rulați. Afișa pentru mine, ca și cele zerouri, iar acest lucru este C programa tocmai am scris. Acum, eu, ca un om aici, nu am nici o idee ce sincer aceste modele diferite de zero-uri și unu reprezintă. Înapoi în zi, eu, cu cartele perforate mei sau similare, ar fi de fapt, trebuie să te uiți la ceea ce aceste modele diferite de 01111000, reprezintă, de fapt. Sau mai rău, mi-ar trebui să fac perforare sau creare dintre aceste modele de zero și unu. Dar pentru acum, să ia pe credința că un procesor, Intel interior, astfel încât să vorbească, în interiorul toate computerele noastre în aceste zile, știe cum să interpreteze aceste zerouri și cele. Și unele zero și unu înseamnă de imprimare. Unele zero și unu înseamnă reda un sunet. Unele zerouri și cele înseamnă să ia datele introduse de utilizator de la tastatură. Există tot felul de modele diferite, dar noi din fericire, ca oameni, în general, trebuie doar să vă faceți griji cu privire la programarea la acest lucru destul de ridicat nivel. Și în alte clase CS poate te infiltrezi mai adanc jos și căutați la aceste lucruri cum ar fi zero și unu, sau încă alte lucruri încă. Deci, acum să transforme acest lucru. Să se misca foarte repede departe de C și de a trece la ceva un puțin mai reconfortant, un pic mai interesant, în care ne putem întoarce animații și sunete noastre si de genul asta în mod clar ne-au scăpat în acest destul de primitiv interfață. Deci, acest program aceeași în C poate fi reprezentat acum în acest limbaj de programare numit Scratch, după cum urmează. Aceasta este echivalent cu a acestui program Salut lume scris în această piesă de puzzle stil de limbaj numit Scratch. Așa că lasă-mă să mergeți mai departe și să se deschidă acest program foarte. Se numește din nou Scratch. E liber la dispoziție, iar acest lucru este același lucru am a inceput astazi pe. Deci, asta este aici Scratch, și este rupt în sus, în câteva piese diferite. La dreapta foarte sus, avem etapa așa-numitul, și într-adevăr, că e în cazul în care cookie-urile efectuat doar un pic în urmă. Și pe această etapă sunt lucruri numite sprite, caractere, sau obiecte, sau entități. Nu contează cu adevărat modul în care vă gândiți la ele, dar ele sunt lucruri programabile, mobile, și, în acest caz, această program care studentul nostru scris are un cuplu de turtă dulce cookie-uri, un cuplu de cookie-uri circulare, o grămadă de inimi, o grămadă de ochelari de vedere. Din aceasta cauza, el sau ea este în măsură să programeze fiecare dintre cei caractere individuale separat. Acum, ce înseamnă să programați aceste personaje? Ei bine, lasă-mă să mergeți mai departe și faceți clic pe acest cookie mâna stângă și defilați pe la stânga sus aici. În stânga sus a ecranului meu este acum așa-numita zonă de script-uri. Aceasta este un fel de tabula rasa, inițial, pe care pot glisați și fixați piese de puzzle, care, sincer, împrejurimi exact ceea ce spun ei. La foarte de sus a acestui teanc de piese de puzzle este cuvântul Când Steag Verde clic, iar dacă nu ai observat înainte, modul în care am început să melodia asta cookie a fost clic, literalmente, un verde pavilion. Așa că piesa de puzzle din stanga sus acolo înseamnă că atunci când clicuri umane steagul verde, a procedat pentru a face următoarele lucruri. Acum, ce au cookie proceda să facă? Nu știu cu adevărat cum să interpreteze acest lucru încă, dar cookie stabilit aparent canelură la zero, apoi a asteptat trei secunde, apoi a schimbat grupul său la una, apoi așteptat un al doilea, apoi a schimbat său inapoi la un canal. Și apoi acest fapt arata ca un pic de un bug, nu ar trebui să Trebuie să schimbăm canalul său nou și din nou dacă nu e fiind schimbat în altă parte, dar această serie de pasi este ceea ce-i dicta comportamentul acestui cookie special. Deci, haideți să derulați de fapt, înapoi, și nu uita-te la ceva destul de atât de complexă încă. Lasă-mă să mergeți mai departe și du-te la File, New, și a obține o tabula rasa. Deci, acum, într-adevăr, am un script de zonă goală, o scenă goală, nostru implicit Scratch Sprite, iar la stânga sus pe ecranul meu nu am palet a tuturor acestora piese de puzzle disponibile. Și nu ne va trece prin aproape că multe din aceste lucruri astăzi, deoarece, din nou, cele mai multe sunt auto-explicative, dar vom încerca să le clasifice și subliniază asemănările cu aceste limbi viitoare la care ne vom scufunda. Și în stânga sus aici este prima dată când Steag Verde clic, asa ca lasa-mi trage peste asta aici, micșora un pic. Și dacă fac clic pe steagul verde, nimic nu se întâmplă cu adevărat, deoarece Nu am atasat nici logică, nici o declarație de ca să spunem așa, să faptul că steagul verde, asa ca lasa-ma sa plec pana la categorii de aici. Eu sunt în prezent în categoria de control. Mă duc în loc să meargă în jos la categoria Aspect, și există o grămadă de lucruri aici pe care Say Say, Gândiți-vă, schimbare de culoare, costum Comutare. Astfel încât să puteți face lucruri stupide cu costume și sunete și similare. Lasă-mă să merg mai departe și spun doar Say, iar acum observăm cum am trageți și plasați această piesă de puzzle, o să vrei să dispozitivul de blocare în forma corespunzătoare. Așa că atunci când am merge mai departe și să meargă de mouse-ul meu, ei bloca împreună, și acum, dacă mă duc aici și faceți clic pe steagul verde, pisica are, de fapt, spune salut pentru că asta e ceea ce se află în interiorul din această casetă albă. Vom vedea în curând că această casetă de alb este ceea ce se numește un argument, sau un parametru. E un mod de a schimba comportamentul, în acest caz, o puzzle bucată, dar dacă vreau să spun exact ceea ce am spus înainte, Say Hello, lume, eu pot merge acum din nou aici, faceți clic pe joc, si "Hello, World", este ceea ce a spus. Deci, noi suntem literalmente programare acum. Nu e tot ce convingatoare a unui program, dar cel puțin e ceva mai mult decât convingătoare care arată, la prima vedere, ca aceasta. Și putem obține foarte repede tot mai expresiv deoarece în Scratch, ca și în alte limbi, nu e tot felul de declarații, nu spune doar imprimare sau ceva, dar poti sa faci lucruri cum ar fi de așteptare, după cum tocmai am văzut cu cookie, un numar de secunde. Puteți juca sunete în mediul de Scratch doar ca tine poate într-un joc normal de calculator program de sunet. Puteți verifica ceea ce se numesc expresii booleene. Deci, acum, hai să începem să le adăugați la set de instrumente noastră unele terminologia că de fapt se referă la exemplul pe care Iosif și am făcut aici, cu șosete. Deci declarații sunt doar declarații de fapt. Face acest lucru. O directivă pentru sprite, sau mi-uman, de a face ceva. O expresie booleană este ceva care are o valoare, un așa-numita valoare de adevăr, care e fie un zero sau unul, sau falsă adevărat, în afara sau pe, sau nu da. Nu conteaza foarte mult cum crezi de acest lucru, dar este o binar de stat. Așa cum sa discutat în Nate filme de miercuri, doi lucruri diferite. Deci, în Scratch, expresii booleene se întâmplă să uite ca aceste obiecte albastre aici, și, în acest caz, întrebarea Marca implică faptul că sunteți a pune o întrebare. Este pisica, sau sprite, atingând cursorul mouse-ului? Deci, acesta este doar un exemplu al unui bloc Scratch care va pentru a ne permite să verifice da sau nu, este mouse-ul atinge Sprite pe ecran? Și acest lucru poate fi util în cazul în care tu de fapt vrei să faci lucruri cu mouse-ul. În plus față de expresii booleene, avem lucruri cum ar fi mouse-ul este jos, astfel încât să puteți detecta acest tip de îndoială, de asemenea. Putem face matematică, dacă chiar vrei, și nu e utilizări de fapt mai convingătoare pentru acest lucru decât doar pura de aritmetică, după cum vom vedea. Pseudo aleatoriu și de a face programul tau par să se gândească sau să se comporte diferit pe baza unor valori aparent aleatorii, și apoi avem lucruri, cum ar fi expresii booleene, cum ar fi ȘI. Deci, dacă doriți să verificați, de fapt două valori, vom vedea în Scratch că putem testa de fapt, în cazul în care acest lucru este adevărat și acest lucru este adevărat. De exemplu, în cazul de șosete mele, am fi putut la foarte sfârșitul întrebat întrebarea dacă șosete stânga și la dreapta este pe ciorap este pe, demisia. Ești terminat pentru a doua zi, astfel că ar fi o oportunitate pentru asta. Așa că hai să mergem mai departe și să încerce să adune unele dintre acestea, împreună și du-te într-un cuplu de exemple mai mult convingătoare decât aceasta. Așa că lasă-mă să mergeți mai departe și să se deschidă aici unele din exemplele de mai , care va fi întotdeauna pe site-ul cursului, precum și, deschide hello2. Deci, în hello2 aici, avem un program care face câteva lucruri, dar nu o face la fel de eficient ca am putea. Deci, aici se spune "Hello, World" pentru o secundă și apoi așteaptă pentru o secundă. Și apoi o face din nou, și apoi face-o din nou. Deci, dacă am clic pe steagul verde, Scratch spune "Bună ziua, lume. Bună ziua, lume. Bună ziua, lume. "Și aceasta este în mod evident candidat acum îmbunătățire. Care este îmbunătățirea marginală, sperăm, putem acum face dacă Scratch sprijină conceptul de? Un fel de buclă. Un fel de repetiție, acum, ar fi frumos, asa ca lasa-ma încercați de fapt asta. Lasă-mă să merg de fapt, și pentru a muta acest lucru. Deci, se poate desprinde Notă blocuri fel de ușor ca puteți adăuga la atașați-le. Lasă-mă să merg în control, defilați în jos aici, și într-adevăr, există această piesă de puzzle aici, Repetare și pentru totdeauna și În cazul în care pentru totdeauna. Deci, există un număr de moduri de a exprima constructe buclă în Scratch. L-am dori, probabil, aici nu este pentru totdeauna, deoarece am doar doriți să se întâmple acest de trei ori, dar, probabil, Repetare. Așa că lasă-mă să trageți repetă aici, glisați și fixați-l, și acum, în loc de a spune "Hello, World", de trei ori separate, lasă-mă să trageți această piesă de puzzle aici. Și chiar dacă nu pare să se potrivească, programul este inteligent suficient pentru a realiza aceasta va creste pentru a umple, așa că e forme care contează, și nu mărimea absolută. Lasă-mă să schimbați repetiție la trei, iar acum lasă-mă să merg înainte și trageți Asteapta o secunda acolo, de asemenea. Se va fixa în cât de bine, si asa ca acum am de gând să trageți tipii ăștia de aici și doar să le arunce pentru că am nu au nevoie de ele mai. Lasă-mă să micșorați și faceți clic pe steagul verde acum, și ne-am același program, dar, așa cum am prezis înainte, mai bine concepute pentru că vă puteți imagina cât de rău acest program ar obține, cu siguranță punct de vedere estetic, dacă ar trebui să începe copierea și lipirea, copierea și lipirea, sau glisare și fixare aceleași lucruri naibii din nou și din nou. Acum, pur și simplu, spunând chestii pe ecran, imprimare pentru a ecran, într-adevăr, nu tot ceea ce interesant, deci hai să deschidă un varianța treia aici. Și acum, după cum veți vedea, asta va ajunge rapid enervant - [MEOW] DAVID MALAN: - dar este, de asemenea, un fel de drăguț. [MEOW] DAVID MALAN: Ok, asa ca e bine, si putem folosi cu siguranță că tranziție același chunking asta într-un looping Structura, dar să-l facem mai interesant încă. Lasă-mă să mergeți mai departe și de a deschide o variație patra aici, unde am ia lucrurile un pas mai departe. Deci, în funcție de acest lucru, deși acest lucru este o prostie la prima ochire, ceea ce este acest program de gând să faci? O să miau dată. De ce? Ei bine, unul este, în măsura în care știu, întotdeauna mai puțin decât două. Nu e nici noțiunea de dezordine aici. Am literalmente hard-coded unu și doi, dar acest lucru este o exemplu acum de fapt, folosind o expresie booleană. De mult ca și Iosif a făcut în pseudocod său, indentarea dacă veți găsi șosete de potrivire face atunci următor, aici avem o expresie dacă unul este mai mică de două ATUNCI - și, de fapt, avem chiar și un pic de indentare, în cazul în care este ușor violet indentat la dreapta - Atunci ai de gând să joci miau sunet. Acum, în acest caz, că una este întotdeauna mai mic de doi, astfel încât acest este un fel de o pierdere de o condiție. Dar vom fi capabili, după cum vom vedea, să conectați alte lucruri în aceste substituenți în cazul în care una și două sunt acum. Deci, haideți să avanseze acum la exemplul cinci dintre acestea mai multe hellos și Uită-te la ceea ce acest program se va face. Așa că acum, într-o propoziție limba engleză, cum face acest lucru Programul se comporta? PUBLICUL: miauna jumatate din timp. DAVID MALAN: jumătate Miau de timp, astfel încât acesta este un mod de a transmițând o idee foarte simpla. Chiar dacă se întâmplă să fie folosirea unor inegalități aici în unele numere, aceasta este de fapt doar o programatic Astfel, un mod precis, de a spune dacă moneda vine capete, du-te înainte și miau. Sau invers, în cazul în care moneda vine cozi, nu miau. Și în acest caz, cum ne exprimăm asta? Vom alege un număr aleatoriu din 1 la 10, și în cazul în care Numărul este mai mic de 6, mergeți mai departe și miau. Și cum a ajuns asta aici? Ei bine, din nou, observați doar glisare și fixare și lucrurile oarba în loc. Deci, acum să vedem dacă această dezordine functioneaza. Lasă-mă să mergeți mai departe și faceți clic pe steagul verde. [MEOW] DAVID MALAN: Ok. [MEOW] DAVID MALAN: Ok. Bine, bine, deci avem capete, capete, cozi în mod eficient. Tails. [MEOW] DAVID MALAN: șefii. [MEOW] DAVID MALAN: Excelent. Întotdeauna e ciudat atunci când doar statistic, ai un prost a alerga, și e toate capetele, iar programul de fapt, nu lucra ca ai spera. Dar de data asta, el a lucrat, și am par să aibă, dacă am făcut-o acest număr un infinit de ori, 50% cote. Acum, din nou, nu tot ceea ce interesant, făcând doar pisici miau, așa că hai să vedem dacă nu putem avansa acest bit o continuare aici, în versiunea șase. Deci, acum, avem varianta foarte enervant - [Miauna la fiecare câteva secunde] DAVID MALAN: - și aceasta este ceea ce se numește, generală, ca o infinit buclă. Deci bucla infinită, în acest caz, se simte rău. Este cu siguranta va începe de sondare de rău, și totuși infinit buclele nu sunt întotdeauna rele. Puteți să vă gândiți de contextul în programele de calculator în cazul în care te-ai dori de fapt, o buclă infinită? Da? PUBLICUL: Atunci când doriți să verificați o condiție. DAVID MALAN: Bine, atunci când doriți să păstrați o stare de verificare? Ca ce? PUBLICUL: [inaudibil] DAVID MALAN: Bine, bine, asa ca daca ai avut un anumit program, unii un fel de lucru de automatizare a casei, în cazul în care doriți să mod constant monitor este ceva cazul. Sunt luminile de la? Sunt luminile aprinse, deoarece poate aveți un cronometru, și doriți să le să plece, s-ar putea nevoie pentru a face ceva din nou și din nou. Și, de fapt, vorbind de cronometre, oricare dintre voi care s-au ceasurile de pe computer sau de ceasuri digitale, care este un infinit buclă. Ea continuă să actualizeze timp, deoarece este în mod constant verificarea și controlul și verificarea are timp sa schimbat, și dacă da, oh, Doamne. Ceasul e în cele din urmă sa schimbat. Este nevoie de afișa acea valoare pentru tine. Deci, întrucât de cele mai multe bucle infinite de timp sunt o greșeală, sau cel puțin o decizie de design slabă, uneori o fac au valoarea lor. Ei bine, hai să avanseze în continuare aici pentru a hello7. Deci, acum programul va primi un pic mai interactiv. Lasă-mă să zoom in aici, și, din nou, aceasta este ceea ce e frumos despre Scratch. Și vom folosi pentru a fi clar, Scratch, doar astăzi și în Problema săptămâna viitoare stabilite. Dar luni, vom arunca cu capul în C. În acest program de aici, o face, pentru totdeauna, următorul. DACĂ atinge cursorul mouse-ului - acum, cine e Contextul aici? Ei bine, și observați că cine este selectat aici la partea de jos drept este pisica, sprite unul, astfel încât aceste script-uri, acest lucru Programul, se aplică în mod specific la el. Deci, în cazul în care pisica atinge cursorul mouse-ului, apoi se va pentru a juca acest jos și așteptați două secunde, și apoi repetați nauseum anunț. Așa că hai să mergem mai departe și a lovit joc. Nu se întâmplă nimic, dar dacă vreau să mângâi pisica acum, pur și simplu, nu pot. [MEOW] DAVID MALAN: Adorabil. [MEOW] DAVID MALAN: Bine, mai putin enervant, dar, de asemenea, devine plictisitoare, așa că hai să mergem mai departe și să vedem dacă nu putem injecta o logica pic mai mult. Asta a fost de exemplu șapte ani. Aici, în exemplul opt, vom introducă o condiție ELSE. Atât de mult ca o furculiță literală în drum, în care puteți merge stânga sau poti sa te duci drept, o condiție într-o programare cum ar fi limba Scratch, sau ca vom vedea C, vă poate permite să du-te într-o direcție sau alta printr-un FI ELSE construi. Deci destul de literalmente, DACĂ atinge indicatorul mouse-ului, acest va juca un sunet, altfel va juca acest alt sunet, miau. Acum, dacă poți deduce din numele acestor sunete, puteți ghici ce, probabil, acest program este menit sa evoce ideea de. Aceasta pisica este meowing fericit. [MEOW] DAVID MALAN: fericire, dar nu destul de place să fie atins. [Hohote] DAVID MALAN: Deci, acum avem o pisica, care va țipa la tine. În regulă, ei bine, un exemplu ultima cu pisici aici, și Să versiune open nouă a acestui aici. Deci, acum, avem sunetul următoarea cea mai enervant că am putut găsi, așa că avem o morsă sau leu de mare aici care va procedați în felul următor. [SCOARTA SEAL] DAVID MALAN: Ok, deci acest lucru va continua până când îți dai seama cât de acest program de lucrări. Deci acest timp, acest animal are două scenarii, și ceea ce este interesant aici este faptul că aceste scripturi sunt de gând să execute în paralel. Deci, pentru că ambele au început cu un singur clic steagul verde, e ca si cum merg așa, și ambele programe începe să ruleze aceasta o dată, chiar dacă acestea sunt looping pentru totdeauna. Deci, în scenariul de sus, am o anumită logică. Ce caracteristici are, care oferă acolo sus? [SCOARTA SEAL] PUBLICUL: [inaudibil] DAVID MALAN: Dacă e ce? [SCOARTA SEAL] PUBLICUL: Dacă mute la zero, se va păstra joc suna. [SCOARTA SEAL] DAVID MALAN: Bine, bine. Deci, dacă sunetul oprit, orice ar fi asta, chestia asta portocaliu este zero, Apoi juca sunetul leu de mare și cred că "Oh, hi, "timp de două secunde. Acum, eu nu știu ce este dezactivat, dar zero, evocă Ideea de fals sau off. Deci, dacă mut este falsă, așa că, dacă nu suprimate, să continui să joci sunet. În regulă, ei bine, cum putem dezactiva chestia asta? Ei bine, să ne uităm la două script-ul acolo. Scriptul doilea spune setat mute la zero. Observă că e, de asemenea, de portocale, astfel încât ceea ce se Scratch este culori blocuri în aceeași nuanță, dacă e un fel de logic legate. Deci, la fel ca și partea de sus până mut a fost portocalie, deci este dezactivat aici menționate în bloc portocaliu. Dar aceasta este o variabilă sarcini, astfel încât la fel ca în algebră, ai x și y și z, în programarea aveți variabile, dar sunt, în general, - Să ne pauză pentru un moment și dau seama cum pentru a opri această lătratul. Cum să fac asta? [SCOARTA SEAL] DAVID MALAN: Ok. Sa oprit. Bine. Deci, la fel ca și în algebra aveți variabile x, y, și z, dar în programare, având în variabile, cum ar fi x, y, și z este, în general, frowned, deoarece acestea nu sunt deloc expresiv. Ei nu au nici un fel de sens semantic, astfel încât în ​​cele mai multe limbaje de programare, variabilele pot avea deplină nume de sine stătătoare sau cuvinte sau fraze, cum ar fi suprimate, să spun ceea ce fac ei. Deci, acest script doilea, de asemenea, a fost ascultat pentru totdeauna, și a zis: în cazul în care cheia, tasta Space tastatura, este apăsat, semn de întrebare. Deci, există o condiție, cu o expresie booleană care este de gând să răspundă la o întrebare, fie sincer sau false, atunci am interiorul-l dacă tasta este apăsată și spațiul DACĂ mut este zero, setați mut la unul, ELSE stabilit mut la zero. Deci, acest furculita alt drum, și cum Am Notă imbricat doua, daca condiții, este o modalitate de verificare este Apăsat Space Bar pentru că dacă este așa, eu vreau să merg fie această un fel sau așa. Și cum am inversa valoarea dezactivat? Trebuie să verific este zero? Dacă este așa, îl face unul, face altceva, la zero pentru a comuta, prin urmare, cele două state. În regulă, așa că avem atunci unele dintre aceste fundamentale constructe. Avem expresii booleene, și realizează, de asemenea, acestea sunt Nu tot ceea ce nefamiliare. De fapt, aici e un screenshot rapid al lui desigur Harvard CS50 instrument de cumpărături, precum și orice site-ul de acolo, care are căsuțele și coborâșuri picătură într-adevăr au, în tot acest timp, a fost folosind Expresii booleene. În acest caz aici, dacă faceți clic pe caseta de selectare de lângă mai mare sau egală cu 4,5, sau lângă același curs facultate, te specificând o expresie booleană. Arată-mi cursuri pentru care această expresie este adevarata. Sau la dreapta, nu intră în conflict cu cursuri eu sunt luând, în cazul în care este bifată, atunci da, vă doriți să verificați această condiție, altceva ce doriti sa-l ignore. Deci, expresii booleene sunt un fel de toate în jurul valorii de, dar când le punem în condiții, dacă cazul în care condițiile, IF Elses, sau putem simula chiar mai nivelurile, DACĂ ELSE IF ELSE - asa ca asta e un fel de stat ternar. Puteți merge în acest fel sau acest fel sau în acest fel. Putem păstra lucrurile să meargă cuibăresc în direcții diferite. Deci, Scratch are aceste bucle, cum ar fi pentru totdeauna. Ea are aceste caracteristici, cum ar fi Repetare 10, unele număr finit de ori. Avem capacitatea de a stabili acum variabile, astfel încât în ​​acest caz, Am declarat, de exemplu, o variabilă numită șosete. Am inițializat la 0, și asta e încă o altă direcție am fi putut luat aici cu Iosif, care poate am ține evidența doar de cât de multe șosete am pornit și rezilieze program atunci când valoarea pe care variabila este 2. Asta ar fi un alt mod de a fel de generalizare, care problemă și de a face ceva nou și din nou. Ei bine, hai să mergem mai departe și să introducă acum câteva lucruri noi. Deci, aceia dintre voi cu experiență anterioară de programare va fi știu că o mulțime de limbi au tablouri sau vectori, sau liste, și într-adevăr, Scratch are ceva de genul asta, de asemenea. Deci, hai sa vedem daca nu putem lua lucrurile la nivelul următor aici. Dacă am abilitatea, acum, cu aceste piese de puzzle pentru adăuga ceva, cum ar fi un cuvânt sau număr, într-o variabilă, pot începe să se acumuleze lucruri. Și aceasta este, de fapt destul de apropos de lucruri, cum ar fi jocuri, role-playing jocuri în cazul în care sunteți un fel de mers pe jos în jurul valorii de o lume fantastică de colectare lucruri, iau lucrurile, câștiga puncte, sau ca. S-ar putea dori pentru a urmări un fel de inventar, precum și într-adevăr, asta e ceea ce-unul din studenții noștri foști aici făcut-o cu ceva numit Fruitcraft RPG. Așa că lasă-mă să mergeți mai departe și să se deschidă acest lucru aici, și în Fruitcraft, avem această lume până în partea de sus. Așa că lasă-mă să mergeți mai departe și faceți clic pe steagul verde. Comunicarea din stanga sus este un fel de inventar. Asta puse în aplicare în Scratch ca ceea ce vom numi o matrice sau o listă, iar acum avem această mică animație. Deci, la fel cum am început mai devreme, cu această poveste de dragoste cookie, și apoi am avansat la pisici si lei de mare, acum putem avea lucruri care sunt chiar mai interactiv. Și tipul ăsta mic albastru, pot începe să se miște în jurul valorii de sale acasă puțin aici. Deci, se pare ca el are o ieșire aici, așa că eu sunt cu ajutorul tastele săgeți, sus, jos, stanga dreapta. Și acum sunt în afara, asa ca lasa-i ce am ajuns aici. Se pare ca o portocală, și, într-adevăr, de îndată ce ating portocaliu, acesta devine plopped în inventarul meu. Dacă mă duc pe aici la cireșe, acum am ceva altceva in inventar mea. Și asta este tot frumos și drăguț, dar gandeste-te cum, acum, acest este pusă în aplicare. Ei bine, avem această noțiune de o listă, și că este aparent o piesa de puzzle pe care le spune doar ceea ce vrei să-l adăugați, adăugați portocaliu, adauga cireșe. Acum, ceea ce este acest tip mic albastru faci? Ei bine, el e un sprite. Și probabil, portocaliu și cireșe - ei înșiși erau sprites separate. Și folosind condițiile în expresii booleene, de elev a fost, probabil, în măsură să-și exprime dacă tipul este albastru cireșe ating apoi adăugați cireșe sugerate său inventar, și apoi ascunde, de asemenea, sprite cireșe. Deci, sub capota, nu există, probabil, încă mai este o cireașă Sprite acolo. Tocmai am spus-o pentru a deveni invizibil în mod eficient. Acum, dacă am ține de mers pe jos de aici, putem face, de asemenea, acest lucru proximală, unde pot merge și să citească semnul. Deci, dacă tip albastru atinge semn, putem avea acest bloc Say la fel ca pisica ne-a vorbit în cuvinte, Buna, ziua, mai devreme, "Got unele fructe? Adu-l la locul de fructe "Bine, asa ca acum, se pare., Am directii mele. Eu pot merge aici la locul de fructe, aliniați eu te cu ușa. Acum, eu sunt aici. Eu pot merge până la omul de la tejghea. El detectează că sunt aproape de el, așa că nu trebuie să fie destul de identic atinge, și am câștigat jocul. Deci nu avem Fruitcraft RPG. Deci, putem face lucruri chiar mai avansate decat aceasta. Putem adăuga sunete. Putem adăuga dezordine pseudo. Putem adauga complexitate. Lasă-mă să merg mai departe aici, și mai degrabă decât face acest lucru singur, lasă-mă să-ți arăt unul dintre argumentele mai sofisticate am primit anul trecut de la un anume cineva pe nume Blake. Putem avea un voluntar care este confortabil figurează pe aparat de fotografiat și este de până pentru a juca un joc? Ce zici acolo? Vino sus. În regulă, deci joc pe care îl avea doar necunoștință oferit voluntar pentru a juca - [Aplauze] DAVID MALAN: - este ceva de odinioară numit "Frogger". Care este numele tau? Renda: Renda. DAVID MALAN: Redna? Renda: E ca Brenda cu un b. DAVID MALAN: Bine, Renda. David. Îmi pare bine. Deci, aici, în "Frogger", și dacă am putea ridica volumul doar un pic, ești acest mic broasca verde pe partea de jos. Aveți posibilitatea să utilizați la stânga, dreapta, în sus și în jos, și de obiectivul dvs. este de a traversa strada, traversa râul, și atingeți plăcuțele de crin în partea de sus. AW. One t mai mult - reface, în regulă? Să oprire hit. Nimeni nu a văzut asta. [Aplauze] [Aplauze] DAVID MALAN: Da. Foarte bine făcut. Excelent, multumesc. Astfel încât nu a fost Frogger. Acum, că știți ce ați ajuns în voi înșivă, voluntar una pentru un alt Joc prezentat de un alt elev. Vrei să vii pe sus? Care e numele tău? RICHARD: Richard. DAVID MALAN: Richard. În regulă, Richard, vino sus. [Aplauze] DAVID MALAN: Ai ceva care să sune familiar în curând, așa că aici sunt instrucțiunile dumneavoastră. Deci, într-un moment, unele piese de puzzle sunt de gând pentru a defila în sus de ecran care arata, fie a plecat sau la dreapta în sus sau în jos. Ai de gând să aibă de a lovi tastele săgeată într-un mod că acesta corespunde acestor piese de puzzle cu captuseala substituenții de la partea de sus. Deci, când veți vedea o săgeată la stânga, și se aliniază cu stânga săgeată, a lovit săgeata stânga. Puteti incepe. [MUSIC - "puternic" Kayne West] DAVID MALAN: Pe tot parcursul dreptul, mare de aplauze pentru Richard. [Aplauze] DAVID MALAN: Foarte bine făcut. Mulțumesc. [Aplauze] DAVID MALAN: distracție Minimal, aparent, un fel de intimidarea cum ar fi să pună în aplicare ceva la fel de aparent sofisticat ca aceasta, realizăm că studentul nu a stabilit si scrie asta pe toate odată. Mai degrabă, se poate rupe în jos ca o problemă aparent complexă deoarece acest lucru în bucăți mai mici, iar acest lucru, de asemenea, este O să fie o temă. Cel mai rau lucru care le puteți face în scris, un program în aproape orice limba este de a sta jos, pentru a primi cu adevărat excitat, scrie Toată chestia naibii, și apoi sperăm că acesta acționează prin timp ce ați terminat de scris. Mai degrabă, procesul de programare ar trebui să, în general, fi foarte deliberată, foarte iterativ, prin care tocmai l-ați set pași foarte mici pentru voi înșivă, bucăți mici vrei sa mușca, și așa că aveți aceste sanity verificări, repere mici poti intalni. Și apoi să se bazeze pe partea de sus a celor pentru a crea mai mult lucruri sofisticate încă. Deci, de exemplu, cum am putea să meargă despre de punere în aplicare un joc in genul asta? Ei bine, sincer, aș începe cu siguranță doar prin sprijinirea o cheie la un moment dat. Să pună în aplicare doar de sprijin pentru săgeata stânga. Deci, studentul a trebuit să creeze într-un fel în Photoshop, sau în Scratch sine folosind editorul grafic mic, o tasta săgeată care arată ca cel de la partea din stânga sus acolo, pur și simplu gri substituent. Apoi, studentul a trebuit să dau seama ce x, y coordonează la pune-l, în cazul în care să-l pună în fereastra. 0, 0 este aici, deci va trebui să dau seama de numărul pixeli sau puncte, pentru a compensa faptul că, de la săgeată partea de sus a ecranului. Și apoi, o dată care este în loc, programul nu face de fapt face încă nimic, asa ca ai nevoie, atunci un sprite de altă parte, pentru exemplu, o săgeată verde, care, de asemenea, spre stânga, și tu apoi trebuie să înceapă să scrie unele script-uri pentru el. Și tu observi, probabil, că aceste lucruri au început să vin la viteze diferite, iar culorile au fost în diferite locații, și asta pentru că studentul a folosit un pic de pseudo-aleatoriu. Și de dezordine pseudo, vreau să spun doar alegeți un număr între ceva și ceva, deoarece puteți începe să lucruri harta, cum ar fi în cazul în care numărul este între unu și cinci, ei bine, hai să facem chestia verde. Dacă e între 6 și 10, hai să facem piesa de puzzle roșu în loc. Atâta timp cât aveți o modalitate de a genera un fel de aleatoriu, puteți face apoi decizii pe baza acelei aleatoriu. Și I a păstra pseudo aleatoare spun că există o mic secret murdar. Computerele nu pot veni cu numere aleatoare. Ei pot face doar ceea ce li se spune, deoarece sunt om dispozitive. Ele nu pot ghici doar un numar ca noi, oamenii, simt ca putem. Un computer are de a face ceva matematic pentru a evoca iluzie a numărului matematic, uneori folosind ziua curentă de timp, ca o contribuție la imaginind ceea ce numărul să se întoarcă, dar mai mult pe altă dată. Pentru moment, doar știi că putem genera dezordine pseudo. Deci, odată ce am capacitatea de săgeată stânga pentru a începe apar în momente diferite și cu viteze diferite, atunci Pot să mă întorc și se adaugă unele dintre acestea dacă condițiile. Dacă această Sprite atinge celălalt, și săgeata stânga tasta a fost apăsată - astfel trei condiții, în acest caz. Eu pot folosi ca si bloca, probabil, în acest caz - Apoi vreau să merg mai departe și incrementa scorul. Iar la partea de sus, avem un scor, avem Awesome, Rece, este bun, și Boo. Deci, nu e aparent cinci variabile care acest student folosit pentru a ține evidența acestor valori diferite. Deci, pe scurt, rezultatul final este uimitor. E distractiv, e distractiv să joci, e angajarea, dar acest lucru nu este în cazul în care studentul a început. El sau ea a început la un set mult mai mic de pași. Deci, ce sunt câteva blocuri de constructii alte pe care le putem țese în aceste programe? Ei bine, e un alt concept în cele mai multe limbi, Scratch printre ei, cunoscut sub numele de fire. Deci, un calculator nu poate de fapt face cu adevărat mai multe lucruri de la o timp, cel puțin nu de obicei. Mai degrabă, un calculator are, în general, doar un singur procesor, și chiar deși calculatoarele sunt super rapid și pot, prin urmare, a crea iluzia de a face mai multe lucruri în același timp - verificarea e-mail-ul tău, obtinerea-o clipă mesaj, imprimarea unui document - într-adevăr, un calculator este doar sărind de la imprimare la mesageria instant la email, înapoi și înapoi și înainte și înapoi atât de repede ca noi oamenii lente minte pur și simplu nu-și dau seama că e de fapt care rulează aceste programe un pic la un moment dat. Acum, acest bit o de un alb se află în aceste zile, deoarece, în prezent, multe noastre calculatoarele sunt ceea ce se numesc multi-core, astfel încât să au un procesor, ci mai multe nuclee, care este un fel de având în mai multe procesoare. Și astfel, uneori, computerele pot face cu adevărat mai multe lucruri la un moment dat, dar, în general, în cadrul unui program, programele de se bazează pe aceste lucruri numite fire. Deci, un fir este ca un fel de program de miniatură care poate există alături de un alt program in miniatura si pot rula în paralel, sau cel puțin se poate rula sub iluzia că ei execută simultan. Deci, Scratch susține aceste lucruri numite fire. Puteți avea mai multe scripturi de executare, la o dată, la fel cum am făcut-o cu leul de mare, iar acest fapt ne permite să apoi au interacțiunile dintre aceste sprites. Lasă-mă să merg mai departe aici și trageți în sus, să zicem, fire, și juca acest după cum urmează. Avem două sprite, fiecare dintre aceștia vom vedea are doar un singur script. Și ai observat se pare că există unele informații în pisică în aceasta pentru că el se apropie - [Hohote] DAVID MALAN: - si mai aproape de pasăre mică. Deci, cum este pasărea de operare? Ei bine, haideți să aruncăm o privire la prima pasare. Scriptul pasăre a spus atunci când se face clic pe steagul verde, du-te la x este egal cu 115 și negativ y este egal cu 150. Asa ca am dat seama de o locație aleatorie în cazul în care mi-am dorit pasăre pentru a începe, și eu l-plopped acolo în mod implicit. Atunci pentru totdeauna, dacă nu atinge pisica, astfel încât acesta este un alt un fel de construct looping, dar aceeași idee, fac acest lucru din nou și din nou și din nou. Atâta timp cât nu te atinge pisica, a muta trei etape, și daca esti pe margine, saritura, în cazul în care este un fel de reflecție în sensul de biliard. Deci asta e modul în care pasărea este în mișcare în jurul valorii de un fel de aparent aleator, dar e doar pentru că e cade pe pereții în acest caz. Acum pisica, între timp, este un fel de înșelăciune. Pisică, atunci când se face clic pe steagul verde, da, începe în locații, o locație aleatoare - cel puțin în parte ca pe murături Blocul aleatoare verde acolo - și apoi pentru totdeauna, dacă atingerea pasăre, reda sunetul leu, și se va opri apoi script-ul. Asa ca atunci cand am spus termina, sau pentru a ieși înainte, e un puzzle piesă în Scratch, care va ucide doar programul de la acea punctul pentru că e un fel de logic făcut. Dar altfel, aici, observați ce se va întâmpla. Punctul spre pasăre și pentru a trece cu un pas. Deci, acest punct față de pasăre este un fel de un avantaj pisica are in care e localizare pe pasăre în mișcare, și putem acum face acest program tot mai interesant. În loc de mișcare cu un pas la un moment dat pe ciclu de procesor, pe grevă de taxare de clopot, ca să spunem așa, lasă-mă să merg mai departe și mutați, să zicem, cinci etape, la un moment, ca pisica. Faceți clic pe Executare, iar acum el chiar îl găsește repede. Dacă vom dubla acest lucru în continuare la 10 pasi, e cam merge drept pentru el. Acum, putem da pasăre, probabil, un pic de un avantaj. Să mergem la păsări și spune în loc de a muta trei etape, hai să-l mutați 30 de etape. Dar el încă a fost prins în sfârșit. Deci, aici, avem două fire. Este încarcerat în Scratch cu două scripturi și două sprite, dar ideea in alte limbi este că puteți scrie, în esență, prea multe programe, cum ar fi acest lucru și au executați-le cu adevărat, sau imaginar, în paralel. Acum, există, de asemenea, acest concept în programare cunoscut sub numele de evenimente, și acest lucru este ceva ce nu vom vedea în C, Limba cunoscut sub numele de C. Vom vedea spre sfarsitul semestrului lui în programare web, atunci când vom introduce JavaScript și Noțiunea de pagini web de construcție care sunt dinamice și de a interacționa cu utilizatorii. Deci, în acest caz, avem un exemplu foarte simplu de două sprite, băiat și fată, fiecare dintre care au normele lor fire, dar cumva aceste două sunt inter-comunicarea prin intermediul de ceva numit evenimente. Așa că lasă-mă să merg mai departe aici și mări în script-ul baiatului, care arata ca acest lucru. Când steagul verde clic, faceți totdeauna următor. Dacă spațiul tasta, sau Space Bar, este apăsat, spune Marco timp de două secunde, în care e pur estetic pe ecran, un balon mic discurs, dar a difuzat apoi. Deci, este o altă piesă de difuzare Scratch asta e reprezentant al unei clase de funcționalitate în programare care permite diferite programe, fire diferite, inter-comunica, pentru a trimite cumva mesaje, unul la altul. Trece o bucată de hârtie în clasa este un fel de tehnologie scăzută echivalentă. Difuzat atât de eveniment. Eu pot trimite acest mesaj, iar evenimentul cuvântul este complet arbitrară. Scratch are, uneori, aceste coborâșuri picătură, așa că am venit cu un cuvânt aleatoare ca eveniment, deoarece acum, ceea ce face băiatul atunci când am apăsați tasta e difuzează acest eveniment. Și dacă mă uit acum la scenariul fetei, script-ul ei este super-simplu pentru că tot ce trebuie să facă, nu se acționează atunci când steagul verde se face clic. Ea este conceput pentru a acțiunii, atunci când ea primește oferta, citatul, "Eveniment", și în acel moment, ea a asculta, prin urmare, pentru eveniment așa-numitul nou și din nou. De îndată ce primește acest caz, ea va striga Polo timp de două secunde. Și așa se poate deduce, probabil, din această exact ceea ce rezultatul următor va fi. Lasă-mă să faceți clic pe steagul verde. Nimic nu se întâmplă pentru că am nevoie să fac ce? PUBLICUL: Space Bar. DAVID MALAN: Space Bar. Boy spune Marco, spune fata Polo. Dar asta nu e greu codificate în sine. Asta e inter-comunicare între scripturilor, asa ca acum am au capacitatea de a face programe mai complexe în cazul în care aceste două sunt oarecum inter-comunicare. Deci, în ceea ce directii putem lua asta? Ei bine, în set de probleme 0, într-adevăr, obiectivul este de a sa te distrezi cu Scratch. Pentru ediția hacker, vei avea loc de distracție, cu o mai Versiunea sofisticată a Scratch numit BYOB, Build Blocurile de proprii, dar ideea este aceeași. Veți putea - Da, asta a fost deliberat. A venit de la Berkeley. BYOB este versiunea ediție hacker de acest lucru, dar ambele demografice, ediția standard și ediția hacker deopotrivă, obiectiv la îndemână pentru săptămâna următoare este de fapt doar să se scufunde în adânc, ia-ți mâinile murdare cu programarea, și să facă ceva interesant, faci ceva interactiv, fac ceva artistic, face ceva distractiv de a efectiv să demonstreze, astfel încât până la sfârșitul săptămânii, vei avea un proiect, nu numai pentru prima ta CS50 PSET, dar vei avea un ceva pe care le puteți scoate în evidență în Annenberg a prieteni sau chiar de familie prin încărcarea acestuia pe site-ul MIT. Și așa cum am spus, miercuri, ne așteptăm ca 90% din clasa, în general, pentru a face edițiile standard. Dau seama că există, de asemenea, această piață de desfacere pentru cei dintre voi care în caz contrar ar putea găsi te un pic plictisit cu elementele de bază și doresc cu adevărat să se scufunde într-o viziune și ambarcațiunile de tine deja au cu fundal anterior în acest mai prietenos mediu. Așa că lasă-mă să trag în sus cu un alt exemplu că unul dintre fostul nostru studentii de aici a făcut și spune ceva prin cântec. Că în mod similar, deoarece aceasta joacă, gândiți-vă cum te duci despre punere în aplicare a acestui program folosind exact același acestea blocuri, un pic de dezordine, și o pseudo- biți de cântec familiar. Dacă am putea ridica volumul doar un pic? [MUSIC - "Ploua MEN" Fetele METEO] DAVID MALAN: Asta e. pentru CS50. Vă vom vedea pe luni. [Aplauze]