Difuzor: Sunt [neauzit]. Si eu sunt un senior la Leverett House. Am studiu informatică, si eu sunt un TF pentru CS50. Ca un student în anul întâi, nu am mai avea un laptop sau un smartphone. Nu am avut nici o experiență de programare. CS50 a fost cursul cel mai de neuitat, care Mi-am luat la Harvard, pentru că a fost o luptă, dar a fost un adevărat lupta distractiv în același timp. Și am făcut o mulțime de uimitoare, permanent prieteni, și am învățat o mulțime de foarte aptitudini aplicabile. Sunt atât de bucuros că nu am lăsa meu lipsa de fond să fie o scuză pentru mine nu ia CS50. Sunt [inaudibil]. Sunt un senior la Leverett Casa, clasa de 2014. Și am luat CS50. DAVID MALAN: Deci asta este CS50. Acesta este sfârșitul de săptămână la zero. Și amintesc unde am început ultima oară, era cu aceste lămpi, care au fost atat de popular incat ne-am dus și au cumpărat ceva mai mult azi. Deci, eu cred că acest lucru va fi lucru noastre din acest an - lămpi de birou, dacă ți-a venit pe scenă, cel puțin până când vom alerga afară. Dar am folosit aceste rechemare, să introducă elementele de bază de reprezentare a datelor. Avem nevoie de mod de a începe reprezentând Informatiile interiorul unui calculator. Și cel mai simplu mod de a face acest lucru a fost cu un singur ingredient, electricitate. Și cel mai simplu lucru pe care il poti face cu energie electrică este porniți-l și-l. Să fluxul de electroni sau nu. Și folosind cele două state de bază, pe și pe, sau fals și adevărat, sau zero și o, am început să văd că am putea construi în sus, în acest caz, cu lumina bulbi, mai multe numere decât doar zero și unu. Am numărat la fel de mare ca și șapte, de exemplu, ultima dată. Dar tot ce trebuie să faceți este să continuăm să aruncăm mai multe și mai multe becuri la care problema și, într-adevăr, putem reprezenta orice număr pe care le s-ar putea dori, eventual. Ei bine, ne-a trecut repede, apoi pe Miercuri la acest octet de voluntari. 8 biți este ceea ce noi numim, în general, un octet, Deci, aici am avut opt ​​voluntari miercuri, care împreună au fost reprezentând opt biți. Și atunci când mâinile lor au sus, acestea au fost un unul. Și atunci când mâinile lor au fost jos, au existat un zero. Și am avut acești oameni veni pe scena de ce? Ceea ce suntem capabili de a face cu această secvență de biți? Pentru a crea un alfabet. Am fost capabili de a construi pe partea de sus de care lecția anterioară învățat și de fapt începe să facă mai interesant informații care este cel puțin mai mult familiar pentru noi, oamenii. Și acest lucru se întâmplă să fie un recurente Tema întreaga 50, dar, de asemenea, computerul știința în general, această idee de stratificare, în cazul în care, la sfârșitul zi, dacă ați început cu adevărat Noțiuni de bază cu un calculator, da, e zero si unu. Și sub care este doar energie electrică. Dar vom începe foarte repede pentru a lua cele detalii de nivel scăzut pentru acordarea și începe să strat pe partea de sus a trecut lucrat făcut pentru ca noi, în cele din urmă, prin sfârșitul semestrului și, într-adevăr, mai general, ca oameni de stiinta de calculator și programatori, pot face ceva cu adevărat lucruri mai puternic de pârghie de lucru care ne-au făcut și, de asemenea, în picioare pe umerii altora. Acum am trecut de repede miercuri la doar nevoia de a reprezintă informații care doresc de a face ceva cu ea. Deci, ceea ce am defini un algoritm? O serie de instrucțiuni. Deci, este o serie de instrucțiuni, o număr de pași pe care le, un om, sau un calculator, mai tipic, ar executa unul după altul, în scopul de pentru a atinge un scop. Și am avut câteva obiective ultima dată, unul dintre care să număr persoane in camera. Și un alt astfel de exemplu a fost de a găsi Mike Smith într-o carte de telefon. Deci, s-ar putea aminti că am rupt un telefon carte în jumătate față de acest scop în sus găsirea Mike Smith. Scopul pe care vizuală a fost de a demonstrează, din nou, că am fost ruperea literalmente această problemă în jumătate, în jumătate, în jumătate, și foarte repede merge de la, cum ar fi de 1.000 de pagini la doar o singură pagină. Aceia dintre voi care au pierdut acest pe Miercuri, M-am gândit reda câteva fragmente din ceea ce ai pierdut. Să aruncăm o privire. [Redare video] -Acolo mergem. 1500 de pagini, linii curate Nisa, lacrimă legitim. [END redare video] DAVID MALAN: Deci, care a fost miercuri. Noi tranziție, deși, miercuri acum la care doresc să reprezinte algoritmi într-un fel oarecum iarnă, nu doar descrierea lor verbal, dar încercarea de a le exprima în scris sau pe un ecran de computer astfel încât să putem începe să se îmbunătățească, și modifica ei, și, în cele din urmă, de fapt, analiza cât de corect sau cât de repede au fost. Deci, am introdus această noțiune de pseudocod, care, în termeni de nespecialist, este ceea ce? OK, cuvinte. Să mergem puțin mai adânc decât atât. Engleză, sigur, sunt însă spre ce scop? Cuvinte cu care să creeze sau să reprezinte algoritmi. Deci, nu există nici o limbă cunoscută ca pseudocod în lume. Este doar că tu, în limba engleză, sau indiferent de limba vorbita este, folosiți un fel de notație sumară a transmite o idee foarte succint. Dar vom vedea că, cu siguranță, cu un Pseudocod engleză, și se pare că majoritatea limbajelor de programare în sine sunt derivat din limba engleză în sine, vom găsi că există unele standard, moduri de reprezentare a pseudocod și programare, de asemenea, codul. Astfel încât începi să vezi chiar și cele mai simple Exemple de azi, realiza aceste aceleași modele se va repeta săptămâna viitoare. Deci pseudocod a fost un fel de limbă asemănătoare un limbaj de programare. Și primul exemplu am văzut vizual scris a fost acesta. A fost doar un program de trei etape, din care obiectivul a fost de a număra de oameni într-o cameră de cămin pentru că video de miercuri. Dar au existat câteva aspecte interesante acestui program simplu. Și acest lucru va fi temele recurente. Deci, pentru cei care nu sunt familiarizati cu aceasta, unul, am introdus o variabilă. Și, probabil, toată lumea în această cameră este familiarizat cu o variabilă în contextul algebra. Dar aici, în programarea, variabile sunt, o, poate fi numit orice vrem. Am fost folosind n ca un contor. Dar am putea folosi contra cuvânt, sau, după cum veți vedea, cele mai multe orice frază care s-ar putea ca atât timp cât este descriptiv, dar este într-adevăr doar o cutie pentru depozitare. Este o bucată de memorie, un numar de biți, și variază de calculator, cum mulți biți Există care compune că variabila. Dar putem pune valorile în ea. Până acum, ne-am pus numai numere. Dar putem pune cuvinte reale. Putem pune paragrafe. Putem pune imagini - nimic, într-adevăr, putem reprezenta cu zero si unu, putem pune în această noțiune nivel superior a unei variabile. Deci, destul de drept înainte acolo. Și asta e linia unu. Dar am foarte repede mutat de la linie o să facă de fapt ceva cu care variabila. Și în conformitate trei, am actualizat N. Noi incrementat N. Și am putea scrie aceasta orice număr de moduri. Dar poate cel mai evident este doar să spun, setați N egală cu indiferent N este plus 1. Astfel că a fost creșterea noastră. Intre timp, a existat o buclă. Și aceasta, de asemenea, este probabil destul de intuitiv. O buclă este doar ceva într-un program de că se întâmplă din nou și din nou, unele un fel de ciclu. Și aceasta fraza-cheie aici, pentru fiecare, este de fapt foarte frecvente în cea mai mare limbaje de programare, inclusiv cele pe care le vedem în curs. Ori de câte ori veți vedea cuvântul pentru, ea de obicei transmite ideea că o buclă, ceva ciclic, este pe cale să se întâmple. Dar este demn de remarcat faptul unul alte detalii sintactice. Faptul că a treia linie este de fapt, dantelata de care au lovit Bara de spațiu de câteva ori este deliberat. Deoarece convenție umană este de așa natură încât, atunci când faci ceva nou și din nou, într-o buclă, ca început pe linia doi, te liniuță ceva care a aparținut pentru că bucla doar pentru a face clar că e linia trei și nu, de exemplu, Linia de patru sau cinci, dacă au existat linii pentru sau cinci, care sunt parte a acestei bucle. Deci, acest indentare simplu transmite ideea de bază. Așa că am aplicat acest algoritm, acum, la câteva exemple. Și acest lucru, de asemenea, exemplu simplu în lumea reală. Dar o să fie reprezentative pentru cum v-ar merge cu privire la testarea ta propriile programe ce în ce mai complexe. Încercați câteva scenarii, unele reprezentanți intrări, și vezi dacă poți a obține rezultatele dorite. Deci, acest exemplu a avut doi oameni stând în camera de camin. În partea stângă este că același cod pseudo. Și aceasta este o captură de ecran de foarte Ultima etapă de aplicare a acestei Algoritmul a acestor intrări, în cazul în care există au fost două persoane în cameră și, amintesc, așa cum am pas prin liniile de unul, și doi, și trei, și două și trei și făcut - până la sfârșitul anului care algoritmului, am avut într-adevăr numărat cei doi băieți care sunt în cameră. Și apoi am încercat un alt exemplu. Și am spus ce în cazul în care există zero, persoane în cameră? Este acest cod de mai corect? Și într-adevăr a fost. Pur și simplu se întâmplă, astfel încât linia doi și, astfel, linia de trei sau nu va executa. Ei nu vor să se întâmple la toate deoarece acestea sunt pur și simplu nu se aplică în cazul în care nu e zero, persoane în cameră. Dar nu este o afacere mare. Linia unu N inițializată la zero, deci chiar dacă numai o linie de acest Programul de fapt, sfârșește prin a fi util, încă dă răspunsul corect, așa cum indicată de portocaliu zero, în partea de jos. Dar apoi am decis că a fost un fel de algoritm prost. A fost destul de lent. Cu siguranță, eu pot face două, patru, șase, opt, zece, atunci când numărare de oameni într-o cameră. Așa că am optimizat algoritmul, pseudocod, să spunem, acum în linia doi, pentru fiecare pereche de oameni in camera, proceda la, în linie trei, creștere în prin două pe fiecare iterație. Deci, care ar fi lucrat aici pentru această pereche de persoane în cameră. Dar apoi, dacă începi să te gândești acest lucru, și nu ia mult timp pentru a realiza, așteptați un minut aceasta este va rupe, se rupe la ce caz simplu? Dacă există trei persoane în cameră sau, mai general, atunci când există o număr impar de persoane în cameră, inclusiv unul. Ne-ar dor de acea persoană aici, deoarece nu există astfel de perechi. Deci, ne-am adresat repede de schimb introducerea de ce suplimentare constructe de programare la codul de pseudo. Deci o condiție, am sunat ea, sau o sucursală. Și este menit să transmită, vizual, Ideea de ramură, o furculiță în drum unde puteți face acest lucru fie sau, poate, altceva. Și într-adevăr, ne rezolve această problemă prin , adăugând linia 4, prin a spune, într-adevăr la la sfârșit, dacă o persoană rămâne, apoi mergeți mai departe și le socotesc speciale. Deci, un fel de ele caz special, așa de a vorbi, așa că acum ne putem descurca atât un număr par de persoane și un număr impar de persoane. Acum, există un număr de moduri ne-ar fi putut exprima acest lucru. Și sincer, am fi putut fi chiar mai NIT pretentios atunci când a venit vorba de alegerea mea de Limba engleză pentru pseudocod. Dar cel puțin spiritul de Ideea este transmis. Dacă ați dat acest cod de la un prieten care nu este în CS, sau nu a mai luat CS, șansele sunt acestea ar putea da seama, dat trei persoane in camera, cum să conta acei oameni pe în aceste instrucțiuni. Și asta e tot într-adevăr dorim să realizăm cu pseudocod, într-un fel standardiza modul în care vom merge despre idei reprezentând astfel încât să putem începe să facă mult mai complicat lucru încă. Așa că ne duce apoi, în prezent, la codul actual. Vom începe să programați astăzi, deși într-un mediu prietenos. Și apoi am tranziție foarte repede la o sintaxa mai arcane, dar una care veți vedea este fundamental același ca și ideile vor vedea manifestat cu această altă limbă azi. Este doar de gând să se uite un pic diferit. Deci, mai degrabă decât numi doar acest cod, sunt va fi un pic mai precis și spune, de acum înainte, atunci când scrieți un Programul, scrii codul sursă. E un fel de pseudocod. Dar vom vedea că nu e un fel de liber atunci când vine vorba de alegerea cuvintelor pe care le utilizați. Când de programare într-o limbă, ai pentru a folosi cuvintele, frazele, sintaxa, pe care alți oameni au decis reprezintă limba respectivă. Deci, pseudocodes este de până la tine. Un limbaj de programare actuală ca C, așa cum vom vedea în cele din urmă, este standardizate de către alte persoane. Deci, cum putem merge despre scris unele codul sursă? Ei bine, am de gând să merg înainte și de a face acest lucru. Am de gând să merg mai departe și deschide o fereastră de aici. Mai multe despre aceasta săptămâna viitoare. Dar acest lucru este un dispozitiv numit CS50 aparat. Sunt rulează o bucată de software pe mele Mac, desi poti sa faci acelasi lucru pe un calculator Windows, care dă mi iluzia rulează un alt sistem de operare cu totul drept aici într-o fereastră de pe Mac-ul meu. Tocmai am complet este proiectat astfel încât să nu a se vedea de fapt, Mac OS chiar acum. Acesta este un sistem de operare numit Linux. Este foarte popular. Este foarte rapid. Este foarte liber, care a făcut-o foarte convingătoare, în special în lumea comercială. Și mai mult pe faptul că spre sfârșitul semestru atunci când vom folosi Linux destul de un pic pentru programarea web hosting și de site-uri web și proiecte concrete. Deci, acum, știu doar că acest lucru este un desktop care este menit să arate vag familiar pentru Windows și Mac OS. Ea are doar câteva nume diferite și icoane de lucruri. Dar acest lucru este așa-numitul CS50 aparat, o mașină virtuală care, incepand de saptamana viitoare, voi va rula în interiorul unei ferestre pe propriul Mac sau PC. Pentru ziua de azi, am de gând să deschidă mai simplă a programelor. Se numește gedit. Și acesta este doar un editor grafic. E un fel de Microsoft Cuvânt, dar simplu. E un fel de cum ar fi text Editare sau Notepad. E doar un program foarte simplu, cu care să scrie cuvintele pe ecran. Este doar așa se întâmplă că, dacă am salva fișierele pe care le creează atunci când acest program într-o extensie special ca. C, în loc de. doc sau. xls, sau orice esti familiarizat cu, pot de fapt, crea programe care utilizează chiar acest simplu editor de text. Deci, lasă-mă să fac asta. Lasă-mă să merg mai departe și de a salva acest primul dosar ca hello.c. Și din nou, această interfață utilizator va deveni familiar pentru tine repede. Dar pentru acum, eu doar tastând într-un nume de fișier. Am de gând să-l salveze pe Ioan mea Directorul de la Harvard acasa. Și acum am această filă care indică Sunt într-adevăr de editare un fișier numit hello.c. Deci, nimic prea interesant încă. Și acum o să obține destul de criptic. Am de gând să mări, doar asa ca e mai vizibil. Și am de gând să începeți să tastați includă stdio.h, int main, gol, deschis ondulat bretele, unul, doi, trei, patru spații de indentare, print f, pentru imprimare ceva formatat, citatul citat, "Bună ziua, lume" backslash, n, aproape Citat, paranteză închisă, punct și virgulă, intra backspace, backspace, backspace, backspace, închis cret bretele - Am programat. În regulă astfel încât acesta este un simplu super- Programul, într-adevăr, programul care cineva incepe de programare cu. Și tot ce face, pentru toată complexitatea sa, se imprima pe ecran, ghici ce? Bună ziua lume. Dar nu este suficient doar pentru a scrie un program. Deci, aceasta este cod. Acest lucru este codul sursă în un limbaj numit C. Acesta este salvat în prezent în un fișier numit hello.c. Acum, uita-te la partea de jos a ecranului aici. Mai multe despre aceasta, din nou, în săptămânile următoare. Dar asta este ceea ce vom numi o fereastră terminal. Este un intermitent, negru și prompte alb. Este un fel de interfață școală veche la un calculator care, în general, nu utilizați un mouse sau alte elemente grafice. Acesta utilizează doar tastatura. Și eu pot executa comenzi de la acest clipește prompt. Și pentru scopuri de azi, eu sunt doar O să tastați următoarele - să salut. Și că programul, face, este doar o program care, în lumea reală aceste zile, ne-ar faceți clic dublu pe. Dar în această interfață pentru ziua de azi, suntem O să tastați numele de la acest prompt. să salut este literalmente va fă-mă un program numit salut. Și că va face acest lucru uitandu-te pentru un fișier, doar prin implicit, numit hello.c. Se va asuma Vreau un program de C prin natura modul în care acest calculator este configurat. Așa că mergeți mai departe și a lovit intra. Am vedea unele de ieșire criptic, dar acest lucru va deveni prea cunoscut înainte de lung. Acest lucru sa întâmplat pentru a rula un compilator, mai pe care într-o clipă, numit zăngănit. Dar acum, am doar un alt clipește prompt. Și eu pot merge mai departe acum și tastați punct slash, pentru motive neinteresante vom vin înapoi la săptămâna viitoare - Bună ziua. Deci, toate de acest efort până acum doar la scrie mai simplu de programe care, de îndată ce l-am lovit Enter, face asta. Așa că am scris primul meu program. Deci, eu sunt bagi în mod deliberat distracție La acest program foarte simplu pentru un cuplu de motive. Unul, e greu pentru a obține excitat despre a lua o clasă în cazul în care acesta este sfârșitul jocului. Dar mai mult decât atât, există o mulțime de distrageri aici. Prima dată când învăța să program, pentru cei mai putin confortabil, și chiar eu, înapoi în a doua zi, când am văzut așa ceva - pe care le poți de figura care, în regulă, această este într-o lume de imprimare salut. Dar nu e atât de mult distragere a atenției. Există atât de multe sintaxa pe ecran că acesta devine în mod de foarte idei simple, altfel simplu,. Deci, ce vom face astăzi este că suntem O să pun deoparte C și vin Înapoi la care luni. Și am de gând să utilizeze un grafic limbaj de programare numit Scratch. Acesta este un limbaj de programare, pe care am a făcut aluzie la, miercuri, că va pentru a ne permite să facă același fel de lucruri dar închide ochii, pentru ziua de azi, la acolade, parantezele, cu punct și virgulă, și toate acestea stupide distragerile care stau în calea, în aceasta prima zi, de unele de bază, destul de idei interesante. Astfel spre acest scop, am de gând să merg înapoi la desktop-ul meu pe aici și va introduce alternativa la care Programul, care se va arata o ceva lumina aceasta. Așa am de gând să pună în aplicare această aceluiași program azi - două puzzle piese care, atunci când întrepătrunse și clic pe, se va spune la lume, Bună ziua lume. Deci, haideți să mergem de fapt acolo. Așa că am de gând să merg mai departe și deschide un site-ul cunoscut sub numele de scratch.mit.edu. Și acest lucru mi-a va conduce acest site aici. În prealabil, m-am logat în acest site-ul și primele probleme care vă va plimba prin unele dintre aceste etape. Am de gând să merg mai departe și faceți clic pe pe dosarul meu de zero aici. Și acest lucru se întâmplă să-mi arate unele proiecte pe care le-am de fapt, creat în prealabil. Și se pare că acest grafic limbaj de programare nu numai că se va să ne lase programul de glisare și in scadere aceste piese de puzzle, te nu au nevoie de nici un software special. Este totul încorporat într-un browser, astfel pe care le puteți face acest lucru, în teorie, pe computerele chiar acum, așa cum unii dintre voi ar putea fi bine, chiar fără a fi nevoie software-ul ca CS50 aparat, care va veni saptamana viitoare. Așa că am de gând să meargă până la colțul de sus aici și faceți clic pe Creare. Și într-un moment am de gând pentru a obține un gol Ecranul prin care pot începe programare în acest grafic mediul de programare. Dar de data asta, o să fie mult, mult mai simplu de a face de fapt acest lucru. Deci, într-o clipă, atunci când Wi-Fi cooperează, acum avem acest ecran. Deci, un tur rapid verbal, dar îndrăznesc să spun, cu siguranță atunci când vă arunca cu capul în Primul set problemă, veți găsi acest toate foarte accesibilă și destul de intuitiv. Dar haideți să picteze o imagine mentală pentru doar o clipă. Deci, sub acest prompt de salvare spun modificări, esti pe cale de a vedea zero. Acesta este un spirit. Este un personaj. Și el trăiește în ceea ce vom numi o etapă, acest dreptunghi mare alb pe care se poate mișca în sus, jos, stânga, dreapta, și de a face, într-adevăr, alte tipuri de acțiuni. Intre timp, în mijlocul acestui utilizator interfață, avem o grămadă de piese de puzzle. Și veți vedea că ei spun lucruri, cum ar fi deplasa 10 pași, sa transformat 15 de grade, punct într-o anumită direcție. Dar există categorii de blocuri până aici. Deci, dacă mă duc la un aspect, veți vedea că există alte piese de puzzle care se pare că va spune acest lucru cit de salut, de a gândi, de a arăta însuși, se ascundă. Dacă mă duc în jos la Sunete, se dovedește există modalități de a reda sunete ca miau, pentru a opri toate sunetele, să joace un tambur. Deci, pe scurt, există un întreg grămadă de piese de puzzle care vă permit pentru a spune acest pisica, sau orice număr de alte personaje, ce să facă. Dar pentru a face acest lucru se întâmplă tot nevoie pentru a începe de programare. Și această cutie mare alb, sau o cutie gri, pe partea dreapta, acest lucru este în cazul în care Am de gând să trageți de fapt și renunțat la toate aceste piese de puzzle. Acesta este textul meu gol Fereastra echivalent. Așa că am de gând să merg mai departe și faceți clic pe Controlul la mijloc. Sau, mai degrabă, permiteți-mi să încep sub Events. Sub bancă Evenimente, veți observa o câteva lucruri care sunt în mod deliberat curbat pe partea de sus în așa fel încât ei, probabil, nu se intercaleze pe partea de sus a piesele puzzle-ului. Și asta pentru că demarcheze de start a unui program, începutul unei script-ul, ca să spunem așa. Deci, dacă am merge mai departe și trage, atunci când verde steag clic pe aici, și apoi am Vreau aceasta pisica să spun ceva la început. Așa că am de gând să merg în arată panoul. Și am de gând să merg mai departe și apuca salut bloc, și trageți, și picătură, și da drumul, astfel încât acesta automat uneste acolo. Și apoi observați pot faceți clic pe textul. Și eu pot trece peste asta să fie mai specifice cum ar fi, să zicem, salut lume. Și acum avem programul pe care eu pretind este echivalent cu cel mult Programul de arcane Am implementat în C acum o clipă. Dacă mă duc acum la partea stângă, observa nu e un semn de oprire mare și un mare steag verde. Permiteți-mi mări pentru claritate. Și când acum am faceți clic pe acest steag verde, probabil, puteți ghici ce această primă Programul este acum de gând să facă. Deci, nu există, de asemenea, suntem de programare, dar nu suntem de fapt împotmolit în unele dintre aceste sintactică, detalii minut. Dar haideți să încercăm ceva un pic mai interesant. Lasă-mă să intru în dosarul meu de Scratch aici. Și, de fapt, lasă-mă astfel să-mi deschid un program separat aici pentru doar o clipă, Maximizați această fereastră, Deschidere fișier, și am de gând să meargă în de astăzi directorul sursă. Ca întotdeauna, veți găsi, de azi și mai departe, că toate exemplele de astăzi sunt accesibile în interiorul site-ul cursului. Și am de gând să merg mai departe aici și alegeți un pic ceva diferit. Acest unul aici, pentru care Am nevoie de un voluntar. Cine vrea o lampă de birou azi? OK, ce zici de cineva un pic - esti pe final? Vino pe jos. Acum, doriți să participe, sau doar spun începe cu lampa de birou? VANESSA: [inaudibil]. DAVID MALAN: OK. Excelent, ceea ce e numele? Vanessa? David. Îmi pare bine. Asa ca haide sus și Vanessa merge sa preia controlul asupra mea tastatură pentru doar o clipă. Și ce am făcut aici, doar pentru timpul lui binele, așa cum l-am dat seama de Wi-Fi a fost un pic cam lent, Scratch, mediu de programare care suntem utilizarea, poate fi, de asemenea, descărcate și rula pe computerul local. Deci, ceea ce am făcut înainte de curs, în cazul în care se întâmplă, este am descărcat toate fișierele suntem pe cale să se joace cu astfel încât să poată rula un pic mai mult rapid chiar aici pe laptop-ul meu. Deci, de ce acum mă văd o interfață Mac-specifice. Așa că am de gând să merg mai departe și deschide asta. Am de gând să merg mai departe acum și ecran complet fereastra. Și, după cum veți vedea, putem foarte repede, ca acest student a făcut, una dintre predecesorii dumneavoastră, du-te la Salut lume la o mult mai mult mai convingătoare cerere. Deci, aici sunt instrucțiunile. Oh, și avem un alt lucru. M-am gândit că ar fi distractiv, deoarece, în mod normal, vom filma camere de acest fel. M-am gândit că ar fi distractiv dacă, Vanessa, am putea vedea lumea prin ochii tăi. Deci, aici avem o sticlă Google. [Gasps uimit] DAVID MALAN: Vom da numai distanță lămpi de birou azi. [Râsete] Deci, lasă-mă să tac asta. În regulă, deci atingeți acest lucru. OK, sticlă, înregistra un videoclip. Bine, Vanessa? Acum, ca o parte care nu are nimic de de a face cu Scratch, dacă te uiți ușor în sus și la dreapta, veți vedea sticla literal, și ar trebui să vedea-o mică fereastră dreptunghiulară. Ar trebui să vedeți toate colegii dvs. fiind filmat chiar acum? Da. VANESSA: Da. DAVID MALAN: OK. Așa că e bine. Vom lansa acest material mai târziu. Pentru moment, îndreptați-vă atenția la ecranul aici. Și ceea ce predecesorul dumneavoastră a făcut este pune unele instrucțiunile de pe ecran doar prin utilizarea unui program de vopsea. Deci, ai de gând să, într-o clipă, apăsați bara de spațiu pentru a începe. Și apoi unele piese de puzzle se vor pentru a începe să se deplasează în sus pe ecran. Și doriți să lovit tastele săgeată, doar ca în viața reală DDR, în conformitate cu lucruri alinierea cu aceste săgeți. VANESSA: OK. DAVID MALAN: Ai juca acest înainte. VANESSA: Da. DAVID MALAN: Bine, Vanessa, mergeți mai departe și să-l departe. [MUSIC - Kayne West, "puternic"] [Aplauze] DAVID MALAN: Deci, hai acum ia un pas de asta. Deci, în mod clar, că e sfârșitul jocului. Jocul final nu este Salut lume. Dar nu trebuie să facă în mod necesar lucruri care sunt atât de interactiv. Puteți face, de asemenea animație. Deci, de exemplu, un altul de ta succesorii făcut acest program de aici, care spune o poveste mai mult ea are implementat un joc. Așa că lasă-mă să merg mai departe și să se deschidă aici o programul în directorul nostru sursa de același din ziua de azi. Acest apel, și să începem cu, o poveste de dragoste cookie. Și nu pentru a face acest lucru prea academic, dar, cum te uiți la asta, cred că a te care dintre cei simplă conceptele de programare care am vorbit de până acum - variabile, și bucle, și condițiile, am, probabil, predecesorul dumneavoastră folosiți doar să pună în aplicare unele dintre de vizualizări. Vedeți aici. Deci, eu vă dau o poveste de dragoste cookie. [MUSIC - GREEN DAY, "CONCEDIU"] [CRASH] [MUSIC - țestoase, "Fericiți împreună"] DAVID MALAN: Bine, așa că, am avut o poveste de dragoste cookie. Dar chiar și acolo - [Aplauze] DAVID MALAN: Bine, chiar acolo, gândească, ca acele inimi a trecut de la în partea de jos în partea de sus a ecranului, nu a fost de fapt un pic de întâmplare se întâmplă. Și într-adevăr, vom vedea că, chiar și în simplu de medii, cum ar fi Zero, la fel ca în C, poate genera numere aleatoare, sau iluzia de numere aleatoare, astfel că jocul este o mai interesant decât s-ar putea fi dacă ați avut absolut greu tot codificate. În mișcarea pe care le vezi, acolo există un fel de reacție. De îndată ce atinge omul de turta dulce femeie turtă dulce, ea pare să se mute departe. Și astfel, într-adevăr, vă poate pune în aplicare, în cele mai multe limbaje de programare, noțiunea de evenimente, prin care dacă cineva atinge mână de altă parte, care poate declanșa unele din codul sursă pentru de fapt executa. Puteți asculta pentru astfel de lucrurile de pe ecran. Deci, haideți să ia un tur rapid, apoi, de unele dintre elementele constitutive le pot utiliza pentru a realiza unele dintre aceste obiective. Deci, aici este ceea ce vom continuare suna o declarație. O declarație se întâmplă să fie în purpuriu Zero, ceva ca aceasta, dar asta e arbitrar. O declarație este doar o piesă de puzzle sau, în general, o instrucțiune, care spune computer pentru a face ceva, o declarație. Deci, aici este un eșantion simplu. Spune salut lume. Un altul ar putea fi așteptați o secundă. Deci, această piesă de puzzle, care este sprijinit în Scratch, vom lăsa dvs. caractere pauză pentru unele Numărul de secunde. Acest lucru, de asemenea, este doar o afirmație. Aici viitoare, avem un alt mai mult unul interesant, jocul miau sunet, și săgeata mică înseamnă că, în Scratch, aceasta este un meniu vertical. Astfel încât să puteți importa sunete. Puteți înregistra sunete și de a face alte lucruri amuzante în Scratch. Și că, de asemenea, deși, la sfârșitul a doua zi, este doar o afirmație. Dar acum să introducă o mai piesă interesantă, care cunoscut ca o Expresie booleană. Capital B, numit după un tip pe nume Bool. Și o expresie booleană este doar o piesă de puzzle sau, mai general, o bucată de informații, care este fie adevărate sau false - unul sau zero, da sau nu. Deci, este doar unul dintre cei două contrarii. Deci, un astfel de expresie booleană în lumea Scratch arata ca aceasta albastru Piesă de puzzle. Și se pune o întrebare, mouse-ul în jos, și care poate fi fie, de Desigur, adevărat sau fals. Deci, cu această piesă de puzzle în Scratch, Ei bine, va fi capabil de a detecta dacă un puzzle dacă mouse-ul este, de fapt, fiind apăsat de interactie uman cu programul dumneavoastră. Asta e un pic mai abstract, dar cele două cutii albe sunt doar pentru numere. Astfel încât să puteți face lucruri de genul asta număr mai mic decât celelalte? Și dacă da, Scratch va comporta într-un fel sau altul. Asta e un pic mai mult grafic. Este în cazul în care Sprite, în cazul în care pisica, pentru exemplu, este de fapt atingând cursorul mouse-ului. Deci, dacă puțin capul săgeții situându-se peste pisica, atunci această piesa de puzzle va evalua la adevarata. Acesta va fi adevărat, în cazul în care, dacă ați utilizați această expresie booleană, cum vom a se vedea într-o clipă, într-o ramură, puteți fie face acest lucru, sau puteți face asta, mult ca am avut o stare care verificat, există o persoană de familie in camera? Dacă este așa, se adaugă o. În caz contrar, nu vă faceți griji mai mult. Deci, o expresie booleană poate fi, de asemenea, și-ed împreună sau sau-ed împreună. Astfel încât să puteți combina expresii booleene și spun acest lucru și acest lucru trebuie să fie valabil și pentru totul să fie adevărat. Și aici este o mai real exemplu lumea. Dacă ați utilizat CS50 Cursuri pentru a face cursul cumpărături, aceste casete de selectare acolo, unde dacă verificați că caseta de lângă la cursuri, care vor spune, da, doar arată-mi cursuri pentru care Q valoare este de 4,5 sau mai mare. Dacă debifați-l, nu, nu vă faceți griji despre asta. Sau similar, pe dreapta, nu- Conflictul cu cursurile pe care le iau, care este fie adevărat sau fals. Este doar o expresie booleană. Deci, tot acest timp când le-ați folosit site-uri cu casete de selectare, esti doar basculând echivalentul unei Boolean Expresia de pe și în afara. Deci, în ceea ce formă folositi astea? Ei bine, în Scratch, vom vedea într-o clipă că există condiții care arata ca aceasta. Și asta e un fel de sensibil, deoarece mai mult ca și în pseudocod, am indentat un fel de piese de puzzle in forma de U, înseamnă că nimic în interiorul de care U este va executa, sau nu, în funcție de pe unde este. Deci, dacă expresie booleană, apoi ce este în interiorul va fi executat. În același timp, există o dacă / altceva bloc. Deci, dacă doriți o filială, care merge acest fel sau care, Scratch ne dă asta. Și de această logică, acum, chiar dacă această piesa de puzzle este în mod clar prea mic pentru fixarea altceva în interiorul de ea, piesele puzzle-ului zero, acestea sunt doar de gând să crească. Când glisați și să fixați peste ceva, acesta va crește doar pentru a se potrivi orice este ce încerci să faci. Astfel încât să putem lua două din aceste lucruri și face o furculiță drum trei în drum atât de care fie faci asta, sau asta, sau acest alt lucru doar de ei cuiburi în acest mod. Desigur, dacă faci asta mult, ea începe să iasă urât. Dar, la acel moment, tu esti de fapt probabil, nu de programare foarte bine. Și astfel încât va fi recurente Tema, de asemenea, că de stil. Doar cât de bine de fapt, formata codul? Sau cât de bine se pot concepe codul? Dar mai mult pe faptul că, în viitor. Și acum avem bucle. Există o frumoasă buclă pentru totdeauna în Scratch ceea ce înseamnă literalmente că - nu orice ar fi în interiorul acestui nou, și din nou, și din nou. Puteți fi mai concret și spune, face următorul lucru de 10 ori. Puteți folosi, de asemenea, variabile. Puteti veni cu orice nume, în care picatura jos și spune, da-mi un variabilă numită n și stabilit este egal cu o anumită valoare. Și apoi puteți avea funcții. Dar mai mult pe cei care într-o clipă. Lasă-mă să mă întorc la meu Scratch interfață. Și lasă-mă să merg mai departe de data asta. Și să mergem mai departe și să se deschidă, să spunem, un exemplu de la - că este un pic mai interesant. Lasă-mă să merg mai departe, și, de fapt, permiteți-mi să fac eu. Nu am nevoie pentru a deschide aceasta. Lasă-mă să mergeți la File, New. Am de gând să merg la evenimente. Am de gând să merg la atunci când steagul verde clic, și am de gând să merg la sunet. Și am de gând să glisați și să fixați acest piesa de puzzle, juca miau sunet. Este oarba împreună. Și acum, dacă am faceți clic pe steagul verde - [SOUND MEOW] DAVID MALAN: adorabil. OK, deci acum hai sa facem ceva un pic mai logic doar pentru a demonstra că putem, pentru acum. Am de gând pentru a debloca aceasta din acel tip. Am de gând să merg la control. Și am de gând să iau o condiție. Deci, dacă ceva atunci. Deci, asta e cum arată acolo. Așa că am nevoie de o expresie booleană. Și lasă-mă să merg mai departe și spune, lasă-mă să merg la operatori. Am de gând să fac ceva ușor Mathy, doar pentru lovituri. Am de gând să meargă în aici și spune, în cazul în care ceva este mai mică de altceva, mergeți mai departe și de a face ceva. Deci, acum, știți ce, un bloc aleatoriu. Deci observa cum, dacă treceți peste acest lucru aici, care va sari acolo. Deci, acum, notificare, am început să fac ceva deja mai logic interesant. În cazul în care un număr aleator între 1 și 10 este mai mică de, să zicem șase. Dacă aleg șase, care, în esență mijloace, procedați astfel cu 50% probabilitate. E ca flipping o monedă. Acum, eu pot face ceva condiționat. Și că ceva am de gând să faci este să joci sunetul. Așa că acum, când am faceți clic pe ecran pavilion, e ca aruncarea unei monede. [SOUND MEOW] DAVID MALAN: A fost capete sau fleacuri acolo. Să o facem din nou. [SOUND MEOW] DAVID MALAN: Heads din nou. [SOUND MEOW] DAVID MALAN: Heads din nou. Pfiu, OK. Cozi acel moment. Deci 50% din timp, dacă vom face acest lucru infinit de lung, vom primi 50% miauna și tăcerile 50%. Deci, există, doar o clădire de bază bloc, care ne permite să facem asta. Dar aceasta este un fel de plictisitoare pentru care am să păstreze făcând clic pe acel buton. Așa că hai să glisați și arunca toate aceste departe. Dacă le-ați târât la mijloc, se vor șterge doar ei înșiși. Lasă-mă să merg pentru a controla. Lasă-mă să merg la totdeauna. Și de data asta, am de gând să fac ceva minorly enervant. [Râsete] DAVID MALAN: Și lasă-mă să merg înainte și de a face controlul. Așteaptă o secundă, doar așa nu e prea grilaj. [SOUND MEOW] DAVID MALAN: Asta nu e natural. OK. [SOUND MEOW] DAVID MALAN: Și observați ce, frumos despre Scratch, pentru cei dintre voi care au experiență anterioară de programare, te nu trebuie să pornească și să oprească. Nu aveți nevoie pentru a compila. Trebuie doar schimba, iar programul va adapta dinamic. Deci, acest lucru devine o puțin interesant. Dar hai sa-l ia un pas mai departe. Lasă-mă să mergeți mai departe și să scăpa de acest program. [SOUND MEOW] DAVID MALAN: Asta e ceea ce vom apela un bug în Scratch. El nu ar trebui să țină face acel sunet. Așa că am să-i spun să se oprească. Bine, asa ca acum eu sunt merge în - O să MIT știu. Vom merge pe aici pentru totdeauna. Și acum, vreau să fac ceva din nou și din nou. Am de gând să meargă în control. Și să vedem, am de gând să trageți în cazul meu condiție acolo. Deci, observa acum logica. Când steagul verde este apasat, nu ceva pentru totdeauna, dar numai asta ceva în cazul în care acest alt lucru este adevărat. Am de gând să merg la, să spun, simțind. Și am de gând să merg mai departe și alege atinge și plasați-l acolo. Aceasta este o expresie booleană. Și acum, observa, în această scădere meniu în jos, există unele valori predefinite. Deci, eu pot spune, te ating marginea ecranului? Sau te ating cursorul mouse-ului, săgeata de pe ecran? Așa că am de gând să fac asta. Și dacă este așa, atunci am de gând să merg mai departe și să se joace miau sunet. Așa că acum am un fel de au un început de joc - un joc adorabil. [SOUND MEOW] DAVID MALAN: OK, un adorabil, joc buggy. Lasă-mă aștept, să zicem, o secundă acolo. Acum juca din nou, făcând clic steagul verde. [SOUND MEOW] DAVID MALAN: Deci, acum e ca mângâi o pisică. [SOUND MEOW] DAVID MALAN: Bine, acum aceasta l-am făcut în prealabil. Foarte târziu, ea devine un fel de ușor de a face lucruri stupide. Așa că lasă-mă să intru aici. Să spunem, că a fost Pet Cat. Să acum deschis Nu Pet Cat. Acum, dacă vom juca acest unul, puteți ghici, daca esti se uita la ecran - [SOUND MEOW] DAVID MALAN: Acum, dacă am animale de companie pisica [ROAR Lion] DAVID MALAN: Deci, nu, de fapt animale de companie pisica în acest caz. Deci, acum avem doar un exemplu de ramură care merge în două direcții. Acum, lasă-mă să merg mai departe și deschide unul aici. Acesta, de asemenea, printre sursa noastra fișiere de cod pentru a doua zi. Așa că lasă-mă să mă întorc la sursa mea director și du-te în, să aleagă acest tip de aici și vedea ceea ce este diferit. Wow, bine, asa ca acum se face un pic mai complex. Și înainte de a vedea ce tipul ăsta face, haideți să încercăm să deducă, din programul în partea dreaptă. Și acum zero permite în mod clar ne au mai multe script-uri, mai multe programele asociate cu un Sprite, cu un singur caracter, și, aparent, acestea sunt atât de gând să ruleze în lockstep. Deoarece ambele aceste programe începe cu verde atunci când clicuri de pavilion, acesta este aluzie la un subiect mult mai avansate, cu pe care unii dintre voi s-ar putea să fie familiarizat, cunoscut sub numele de filetare, sau multi-threading. Se pare că, pe scurt, calculatoare astăzi se poate face, în esență multiple lucruri deodată. Sau ei pot face un singur lucru la un moment dat atât de rapid că nici nu observă că este de fapt face o lucru la un moment dat. Dar pentru acum, să presupunem că ambele aceste programe se vor executa la același timp. Și notificare, ambii au puzzle pentru totdeauna piese. Astfel încât acestea sunt atât de gând să continua să fie difuzate până când am lovit un semn roșu de stop. Deci, ce au de gând să fac? Pe partea stângă, eu sunt aparent declararea unei variabile numite dezactivat. Deci, eu nu am ceva de genul numi cum ar fi plictisitor N. am numit-o dezactivat această timp pentru a transmite sensurile. Am pus-o la zero. Să ne gândim că sunt false, sau să ne gândim că în calitate de fals. Acum, nu pentru totdeauna următoarele. Dacă este apăsat bara de spațiu tastaturii, apoi, dacă mut este zero, apoi schimba dezactivat la egal unul. Altfel, setați mut la zero. Deci, logic, chiar dacă e un întreg grămadă de piese de puzzle, care e doar că, atunci când am lovit bara de spațiu, Ce trebuie să fac pentru variabila numit oprit? Schimba-l de la unu la zero, sau zero la unu. Asta e tot. Deci, e ca cotitură un comutator de lumină on sau off si amintirea, cu o variabilă, că am făcut asta. Intre timp, pe partea dreaptă, în termeni de nespecialist, ceea ce este scopul script-ul de pe dreapta? STUDENT: Pentru a reda sunetul leu de mare. DAVID MALAN: Pentru a reda sunetul Sea Lion, dacă el nu este dezactivat, prin natura acestei variabile. Deci suntem de partajare de stat, ca să spunem așa, schimbul de informații între aceste două script-uri, deoarece, observa aici, suntem face totdeauna următoarele. Dacă dezactivat este zero, deci, dacă nu este oprit - dacă mut este falsă, atunci joacă acest Lion sunet mare. Și cred că la tine, hi, hi, hi, pentru două secunde, așteptați un moment, și apoi verificați din nou. Deci, dacă mergem acum pe aici, la stânga, unde acest tip este, și a lovit steagul verde, [Mare leu SOUND] DAVID MALAN: La ce punct acest obține într-adevăr enervant? Deoarece acest lucru va merge doar pe totdeauna. Asa ca, uneori, bucle infinite, ca să spunem așa, sunt în mod deliberat. Dar, în acest caz, de îndată ce am a lovit bara de spațiu, el se oprește. Acum, programul nu a renuntat. Este încă în desfășurare în aceste bucle. Dar dacă am obține din nou bara de spațiu - [Mare leu SOUND] DAVID MALAN: Se va alege de unde a lasat el. Deci, există o modalitate pentru noi de a face ceva nou și din nou, dar, ca timp, numai în mod condiționat. Ei bine, în timp ce suntem în acest sens de a face lucruri din nou și din nou, lasă-mă să du-te într-un alt astfel de exemplu aici. Aceasta o vom numi de numărare oi. Și observa ceea ce acest tip face. Este de fapt un pic mai mult ca pseudocod ne-am jucat cu privire Miercuri, prin care el stabilește un contra, cred că de ea este ca N, din nou, la la zero, el are totdeauna următoarele. El spune că valoarea contor pentru o în al doilea rând, așteaptă o secundă, și apoi schimbă contorul cu o unitate. Și în acest context, că doar înseamnă trepte aceasta. Deci, el se adauga la ea. Deci, aceasta este literalmente - nu e chiar ceea ce credem de ca numărare oi. Este oi face numărarea, pentru totdeauna, de la zero. Deci, putem face lucruri similare acolo, în mod logic. Dar acum haideți să încercăm să curățați unele dintre aceste lucruri sus. Lasă-mă să merg mai departe acum într-un simplu de exemplu în cazul în care pisica noastră este doar de gând să începe tuse. În regulă, așa că aici avem tuse 0 - oamenii de stiinta de calculator începe începând de la 0. Deci, aceasta pisica este doar de gând la tuse de trei ori. Și iată cum am implementat asta. Când steagul verde este apasat, tuse, așteaptă, tuse, așteaptă, tuse, așteaptă. Și am făcut acest lucru doar prin glisarea și fixarea piese de puzzle. Sau, dacă începe să se joace cu Scratch, veți vedea ce poate de fapt, duplicat piese, astfel încât să puteți face lucrurile mai rapid, fără tragere și fixarea ad nauseum. Dar noi nu suntem pe calea cea mai bună aici. Deoarece cum îl fac tuse pentru a patra oară? Ei bine, am putea sorta a merge în jos aici. Am putea duplicat și apoi paste această acolo. Cum pot să-l tuse a cincea oară? Ei bine, copiați și inserați din nou. Sau trageți din nou picătură. Și foarte repede, acest program pornește pentru a obține într-adevăr, într-adevăr redundante, foarte lung, dar foarte neinteresant. Dar există o modalitate de a curăța asta. Care este modul evident pentru a curăța asta? OK, deci am putea merge de fapt, într-adevăr afară și, când te-a lovit spațiu bar, l-au tuse. Dar dacă vreau să fac ceva repetitiv, amintim că avem un anumit control construiește. Lasă-mă să mut din Astfel, du-te sub control. Permiteți-mi să fac o repetare, spune, de trei ori. Și acum să-mi fure ceva din aceste piese de puzzle. Lasă-mă să rup asta aici. Permiteți-mi să arunci astea totul. Și acum, am o mai bună program conceput. De ce? Dacă vreau să modificați numărul de ori aceasta pisica tuse, tot ce trebuie să faceți este să schimbați o variabilă, sau o valoare, mai degrabă de la trei, la patru, sau cinci sau șase. Sau am putea face ceva condiționat, chiar, cu spațiu bar, dacă am vrut să. Deci, acesta este un principiu general. Odată ce ați începe copierea și lipirea cod, dacă este în Scratch, sau în C, faci ceva greșit, cel mai probabil. Sau, cel puțin, o dată ce ați depășit unele un număr rezonabil de exemplare și paste, esti, probabil, a face ceva gresit. Dar știi ce? Nu-mi place foarte mult acest lucru. Acest lucru nu este cea mai curata de design. As vrea sa fie o piesa de puzzle numit tuse pentru că atunci nu ar fi trebuie să pună în aplicare acest lucru eu însumi, mod de modă veche, cu au spus, și așteaptă - ceea ce în cazul în care acestea au fost doar un puzzle bucată de tuse. Ei bine, eu pot face de fapt acest lucru. Lasă-mă să merg în mai multe blocuri, faceți clic pe Face un bloc, iar acum am obține acest Fereastra aici. Am de gând să numim acest lucru tuse. Am de gând să merg mai departe și faceți clic pe OK. Și acum notificare, am obține un nou început piesă care este curbat în partea de sus. Și ceea ce am de gând să fac cu acest lucru, eu sunt va fura doar aceste blocuri. Am de gând să le pun aici. Iar acum, cu aceste trei piese, am pus în aplicare ceea ce am de gând pentru a apela un funcția, sau o procedură, sau o parte din s-ar putea, stiu ca o metodă. Mici diferențe între cuvinte. Dar pentru acum, hai să numesc aceasta o funcție. Aceasta este doar o noua piesa de puzzle. Acum este pusă în aplicare ca aceasta. Dar observați că Scratch ne-a dat o reprezentarea fizică care întreg bloca aici. Deci, acum, eu pot trage doar asta aici, spune, se repetă de trei ori, și ce se va întâmpla acum, când mă joc acest script, este doar un singur program se execută la un moment dat. Există doar un singur atunci când steagul verde clic. Dar că blocul violet numit tusea este spune efectiv Scratch, fiecare dată când vedea că piesa de puzzle, de fapt, executa acești pași pe care am se întâmplă să pună în aplicare manual. Deci, asta e un fel de curat. Dar acum, să presupunem că am decis, eu nu fac Vreau aceasta pisica doar pentru tuse. Vreau ca el să fie în măsură sa stranute de asemenea. Ei bine, cum am putea merge despre implementarea stranut? Ei bine, am putea destul de mult face același lucru. Am putea face un alt bloc. Am putea numi acest strănut, faceți clic pe OK. Apoi, aici am putea de fapt, au, lasă-mă să duplicat asta - și acolo e unde ar trebui să se simtă ca și cum esti, probabil, nu face ceva în cel mai bun mod. Am putea spune ceva de genul, achoo, timp de o secundă. Așteaptă o secundă. Acum am un nou bloc numit stranut. Și într-adevăr, nu este. Dar acest lucru, de asemenea, ar trebui să înceapă să se simtă - Poate nu prima săptămână de clasă, dar de-al doilea - doar un pic redundant. În mod evident, există unele redundanță aici. Deci, lasă-mă să propună, în schimb, că am ameliorarea acestei definiții, după cum urmează. Lasă-mă să merg până la meniul meu dosar. Eu nu am de gând să salveze această versiune. Am de gând să merg într-unul din fișierele mele premade aici. Și am de gând să merg mai departe și deschide tuse 2. Ne pare rău că a fost tuse 2. Lasă-mă să merg mai departe și deschide tuse 3, care este acest director sursă. Tuse 3 și observa - Oh, i-am spus povestea în ordine greșită. Permiteți-mi recupera de la această poveste. Poveste pe care am vrut să spun se încheie cu tuse 4 - acolo este. Și ce dacă, în schimb, să definească o piesa de puzzle mai mare numit defini, spun cuvântul de n ori. Stranutul este doar, aparent, în Scratch, achoo. Deci, l-am exprima ca un cuvânt, doar pentru că este constrângere a programului. Și o tuse este [TUSE], dar tuse, C-O-U-G-H. Deci, asta e doar doi cuvinte diferite face, în esență, același lucru. Deci, eu pot face de fapt, un bloc nou ca aceasta. Nu am folosit această opțiune înainte de meniu. Dar, atunci când faceți clic-mi fac Block, puteți alege unele opțiuni. Și vă pot spune că acest bloc de fapt ia unele intrări, altfel cunoscut sub numele de argumente, sau parametri, astfel încât pe care le puteți modifica comportamentul de blocul tău. Deci, ceea ce am făcut acum o clipă a fost Am numit acest bloc Say. Și apoi mi-am spus, este nevoie de un șir de intrare. Și acum observați, în mod implicit, se spune șir 1. Un șir este doar un cuvânt, sau un frază, pentru scopurile noastre. Dar Mă duc să pun niște textul substituent acolo, la fel ca într-un site-ul, atunci când veți vedea numele de utilizator, sau parola, și apoi dispare când începeți să tastați. Asta e tot ce este. Și acum am de gând să adăuga o intrare de număr. Și am de gând să numim această n - dar asta e destul de arbitrar. Și apoi doar o etichetă, doar pentru a face acest bloc un pic mai mult de auto explicativ - ori, asta e ceea ce am făcut. Iar rezultatul final este că primesc un bloc care arata ca aceasta. Și acum observați, eu sunt, folosind un bloc repeta. Dar, mai degrabă decât greu de codificare trei, eu sunt glisare și fixare n acolo, așa că am poate parametrize funcția. Eu pot face această funcție face ceva un număr diferit de ori pe baza această valoare. Si observa, spun, aceasta este ceea ce am făcut aici, dacă am trage cuvânt, pot să spun nu o cuvânt greu codificate, dar indiferent de este trecut în timp de o secundă. Între timp, cum am re-pune în aplicare tuse? Eu definesc în schimb tuse ca spunând tuse n ori. Deci, pe scurt, am de gând prin acest repede, dar ideea de bază este la fel de repede pe măsură ce începe să vedeți în program că, așteptați un minut, am făcut ceva destul de genul asta înainte, pot factor în unele comune funcționalitate? Pot descompune ceea ce fac în câteva idei de bază? Asta e ceea ce facem noi aici. Și am stivuite aceste lucruri, vizual, una peste alta pentru că este o dovadă a că ideea de începând cu binar, merge la ASCII, realizarea programelor grafice, un fel de stratificare idei ce în ce mai complexe pe , unul deasupra celuilalt. Aceeași idee aici. Am început de la zero, de punere în aplicare tuse, apoi tuse realizat este într-adevăr să spun ceva. Deci, lasă-mă în locul implementării Noțiunea de a spune ceva. Și pe deasupra, pot pune în aplicare achoo, sau tuse? Și am putea face mai mult, cum ar variante încă. Deci, de la acest principiu de bază, putem începe să facă ce mai mult programe complexe. Lasă-mă să deschid asta. Putem avea de fapt mai multe sprites interactiunea pe ecran, la o dată. Dacă mă duc în directorul meu sursă și apuca unul numit Fire, amintim că o Firul este doar într-adevăr capacitatea de de două scripturi pentru a rula partea de parte, în același timp. Observați acum, ambele au un spirit pasăre și un sprite pisică, ambele având script-uri proprii. Deci notificare, când am faceți clic pe pisică, am obține aceste script-uri. Când m-am faceți clic pe pasăre, Primesc aceste script-uri. Deci, fiecare dintre ei are propriile programe. Când acum am faceți clic pe steagul verde, observa că ceea ce acest program nu este au pisica, incredibil încet, și alunge pasărea. Dar pisica are avantajul de a avea fost programat în așa fel că indiferent unde pasărea este, pisica merge spre el. Putem juca acest joc mult mai repede. Deci, dacă eu sunt pe pisica, observa că eu sunt cu, să zicem muta unul etape. Hai să-l mute cinci etape, la un timp, deci cinci puncte la un moment dat. Lasă-mă să faceți clic pe joc. [ROAR Lion] DAVID MALAN: Bine, acum putem da într-adevăr pisica avantajul. 10 pasi, la un moment dat. [ROAR Lion] DAVID MALAN: Bine, deci foarte repede, devine un mic avantaj pentru pisica. Dar eu cu mâna mea la unele detalii. Dar motivul pentru care această cale este începe un pic diferit de fiecare dată este că eu fac un pic de dezordine. Sunt de fapt îndreptat pisica într-o direcție diferită, bazată pe unde am ca el să înceapă, astfel încât de fiecare dată de joc, sau animație, este un pic diferit. Acum, permiteți-mi să introducă o alte construi aici. Deci, în acest caz, am avut funcții. Există, de asemenea, va fi o piesa de puzzle cunoscut ca o matrice, sau o listă, care vă permite să stocați mai multe Valorile interiorul unei variabile. Am văzut fire, iar acum există Evenimente. Deci, aici este un eveniment cu acești doi tipi aici. Și dacă am deschide fișierul denumit Evenimente de la exemplele de astăzi, vom vezi un program care arată un pic ca aceasta. Și observa acum acest tip - așa observa Am albastru Muppet clic - el nu numai următoarele. El nu are unul din cei piese de puzzle steagul verde. El are o atunci când am primit eveniment - astfel încât un cuvânt arbitrar. Am tastat de eveniment acolo - el va spune, Polo, timp de două secunde. Deci, aceia dintre voi care sunt familiarizați cu acest joc ar putea ști în cazul în care acest lucru se întâmplă. Dacă am faceți clic pe Muppet Orange, Programul său face acest lucru. Pentru totdeauna, în cazul în care bara de spațiu tastatura suprimat, el va spune, Marco, timp de două secunde pe ecran. Dar el, de asemenea, va folosi acest crescator bloca cunoscut sub numele de difuzare. El va difuza citat citez, "eveniment". Între timp, tipul albastru, amintesc, este ascultare pentru citatul citat, "eveniment". Deci într-un fel, acum, putem avea două sprite interacționează. Și când vom ajunge la programare web, mai târziu, în termen, va fi la fel de acest fi avantajos de a avea site-ul dvs. face ceva, ca răspuns la, pentru exemplu, un clic de tastatură. Așa că lasă-mă să merg mai departe și a lovit bara de spațiu. Orange Tipul spune Marco. Albastru Tipul spune Polo. Dacă fac asta tip nou Orange spune Marco, albastru Tipul spune polo. Așa că haideți să ia acest pas o mai departe. De data aceasta, vom merge, probabil, doar câteva minute aici. Avem - lampă de birou, vino jos. Ai dreptate pe final. OK, poți veni atât de sus. Avem lămpi de birou pentru toată lumea. Haide. Nu știu dacă putem păstra acest gag ridicol sus tot semestrul, totuși. În regulă, haide jos. Și, în același timp, avem Următoarele exemple pentru a trage în sus, doar pentru a accelera lucrurile acum, astfel că avea o manifestare de alta predecesorul tău utilizând aceleasi blocuri de construcție de bază. Care e numele tău? JOHN: John. DAVID MALAN: John. Mă bucur să-mi să vă. Și? SETZ: Setz. DAVID MALAN: Setz, drăguț cu mine te. John, dacă doriți să vină mai întâi, aceasta este o veche școală joc numit Frogger. Puteți utiliza tastatura pentru aceasta, de asemenea. Iar scopul este de a obține în întreaga stradă și apă. [Frogger MUSIC și piese de teatru SOUND] DAVID MALAN: Îmi pare rău, nu lampă de birou pentru tine azi. În regulă, Setz, v-ar ca să vină pe sus? Bine, hai să o facem din nou. SETZ: pot utiliza săgețile? DAVID MALAN: Doar tastele săgeată. Sus, jos, stânga, dreapta. [Frogger MUSIC și piese de teatru SOUND] DAVID MALAN: Le vom numi premii de consolare de azi, apoi, foarte bine făcut. Aici, atât de tine, John și Setz. Felicitări, în regulă. Deci, din nou, ca acest joc joaca, cred despre ceea ce se întâmplă? Unul, există în mod clar o mulțime de mișcare. Dar am văzut cum, cu pisica și exemplu pasăre, modul în care puteți face iluzia de mișcare doar prin mutarea unor numărul de pixeli din nou și din nou. Și dacă aveți un bloc pentru totdeauna, ai putea avea aceste masini face acest lucru pentru totdeauna. Avem capacitatea de a au o întâmplare. Deci, acest joc nu trebuie să fie exact același de fiecare dată. Aceste jurnale, aceste masini, poate porni de la ușor diferite ori, astfel încât Jocul în sine este mult mai interesant cu fiecare joc. Și Între timp, am văzut capacitatea de pentru a asculta bara de spațiu. Dar, în mod clar, în Scratch, poți, de asemenea, ascultați de sus, jos, stânga, dreapta, și într-adevăr orice tastă de pe tastatură. Și puteți face, de asemenea, alte lucruri. Lasă-mă să merg mai departe și du-te inapoi la versiunea web. Lasă-mă să intru în colecția noastră de exemple aici. Și în studioul meu, video, care este, în esență, un folder de pe scratch.mit.edu. Avem versiunile web ale toate aceste proiecte. Și să vedem dacă pot să-mi computerul să coopereze aici. Acest lucru este scris de către unul din prietenii noștri la MIT, numit Mutați Butterfly. Și odată ce aceasta se deschide, aceasta este va folosi de fapt, mai mult de hardware-ul computerului meu. Zero se întâmplă să fie puse în aplicare cu Flash. Flash poate vorbi cu webcam-ul, dacă aveți unul. Deci, dacă am merge mai departe și ecran complet acest aici, faceți clic pe steagul verde, notificare că mesajul de securitate Flash lui se spune, vrei să permite să utilizați webcam-meu? În mod normal, ar trebui să probabil, spun Deny. Dar, în acest caz, vom spune permit. Apoi, am de gând să-i spun Chrome pentru a permite acest lucru, de asemenea. Și acum, într-o clipă, să mă vezi, da, mă. Și dacă mâna mea merge în sus - Am să nu se miște meu cap, în același timp. Există, de asemenea, o reflectare de pe ecran. Haide, mergem - îl puteți muta pe ecran, deoarece există, de asemenea, piese de puzzle - Oh, te știu ce este, este pentru că tu, de asemenea, a se vedea ecran de proiecție în spatele meu. Deci, avem un pic de infinit lucru se întâmplă acolo. În regulă, așa că voi juca aici. Acolo mergem. Deci, există, de asemenea, o piesa de puzzle care spune că, atunci când vezi mișcare sub una dintre cele sprite, puteți să-l merge sus, jos, stânga, dreapta sau altele asemenea. Deci avem un pic de realitate virtuala întâmplă pe aici, de asemenea, tot în cadrul limitele de browser-ul meu, doar aici folosind webcam-meu. Deci, ce-i apoi la orizont. Primul set problemă, după cum veți vedea, sau site-ul va merge on-line mai târziu in seara asta la cs50.net, este destul de mult va fi încheiat deschisă. Și punerea în aplicare a unui proiect Scratch de interes pentru tine, un joc, un interacțiune, ceva artistic, și Challenge-te pentru folosi orice număr din aceste piese de puzzle. Și aceasta poate fi fie interactiv în acest mod. Sau poate fi ceva mai mult în mod deliberat făcut pentru a spune o poveste. Și într-adevăr, că acolo vom ajunge pe Astăzi, cu un ultim exemplu. Lasă-mă să intru în Scratch la nivel local. Lasă-mă să merg mai departe și deschide, și să se joace Ultima program scris de către unul de predecesorii dumneavoastră, și anume să rețină aici. Bun, ridica volumul pentru asta. [Redarea muzicii] NARATOR: La CS50 viitoare, David invită un voluntar pe scenă. DAVID MALAN: Pentru această demonstrație, vom avea nevoie de un voluntar. Vrei să vii pe jos? Care e numele tău? Mutarea pe.