[MUZICĂ] Acest lucru este CS50-- la Harvard Introducerea Universității la intelectual întreprinderile de informatică și arta de programare. Și numele meu este David Malan, și Mă gândeam în dimineața asta, au trecut uimitor de 20 de ani de azi de când am trecut a stat în cazul în care voi face acum. Era 1996. Am fost anul doi, și am fost de a lua CS50 pentru prima dată. Si nu am mai ajuns la nervul să-l ia mine în primul an, în parte din cauza timpului. știința calculatoarelor pentru mine a fost ca un fel de, meh. Am fost un pic de un tocilar în creștere în sus, dar nu am făcut-o într-adevăr au nici un intelectual interesul pentru ceea ce a apărut să fie doar o grămadă de oameni de programare, tot timpul. Si m-am speriat să fiu sincer. Cursul calculator și știința mai mult în general, a avut și într-o oarecare măsură, încă mai are această reputație de un domeniu feriți-vă, în cazul în care numai pentru că atât de mulți dintre noi nu sunt familiarizați cu ea și sigur de ea. Și, într-adevăr nu a fost până când am efectuat cumpărături această clasă că anul doi fall-- și chiar și atunci, m-am înscris doar deoarece professor-- una dintre primele mele mentori, Brian Kernighan acum la Princeton-- mi-a permis să ia treci clasa eșuează. Și într-adevăr, de aceea astăzi permitem și să încurajeze elevii să ia această clasă saturată / UnSat. Și numai atunci, de sfârșitul semestrului am dat seama cum ar fi, wow, acest lucru nu a fost un astfel de câmp necunoscut. Într-adevăr, aceasta a fost o domeniu foarte abilitare, si mai tulburator, mai ales ulterior, așa cum am urmat cursuri Artă dramatică și 101 Latină A și apoi, eventual, arheologie școală grad, am începe cu adevărat Ca să vezi intersecții din acest domeniu, calculator știință, cu umaniste, științe naturale, arte, medicina, și altele asemenea. Și astfel, asta e doar asa îngrijite despre știința calculatoarelor în cele din urmă, după cum sperăm că veți see-- este aplicabilitatea sa la aceste alte domenii, și cum poți ia unele dintre astăzi și semestru idei și abilități practice înapoi la propriul domeniu, și de fapt, a explora această intersecție a artelor liberale și a științelor. Așa că 73% dintre voi, dacă ultima dată an este orice indicație, nu au luat niciodată un curs CS, înainte. Așa că, dacă, la fel ca mine, esti simt un pic speriat, sau sincer nu ești într-adevăr sigur de ce ești chiar aici. Poate că tocmai ați urmat unele prieteni peste Sanders chiar acum. Asta e total bine. Scopul aici este de a cârlig vă și să vă asigur că, dacă te uiți la la stânga și la dreapta, vei vedea colegii de clasă cu ca experiență puțin sau la fel de mult pe care le-ar putea avea. Și într-adevăr, vom împărtăși unele statistici mai târziu astăzi Cu privire la ce datele demografice ale clasa de obicei arata. Și, după cum a adăugat reassurance-- și acest lucru ne-am înseamnă de când am preluat cursul câțiva ani în ago-- Programa cursului este astea-- că ceea ce în cele din urmă aspecte în acest curs nu este atât de mult în cazul în care ajungi până în raport cu colegii, dar, în cazul în care vă în săptămâna 11, sfârșitul fișierului semestru, sfârșesc în raport cu tine în săptămâna 0, care este în cazul în care ne aflăm astăzi aici. Și acest lucru este ceea ce am realizat atâția ani în urmă. Și știu că o mulțime de clase spun acest lucru, dar este valabil mai ales în știința calculatoarelor. La sfârșitul zilei, acest câmp nu este familiar așa cum a fost pentru mine și ar putea fi pentru tine, este într-adevăr doar despre rezolvarea problemelor. Și, ca atare, ea are această aplicabilitatea pentru a obține alte domenii. Și, de fapt, dacă am încercat pentru a distila ceea ce înseamnă acest lucru, aceasta este rezolvarea problemelor în esența ei, îndrăznesc să spun. Nu e așa de input-- orice ar fi este că încerci să o rezolve. Nu există ieșire, care este, sperăm soluția la această problemă. Și apoi, după cum ne-ar spune în informatică, există această casetă negru în dispozitivul de mijloc pe care nu neapărat trebuie să aibă grijă de modul în care funcționează. Te în cele din urmă s-ar putea punerea în aplicare a ceea ce este în interiorul acea cutie. Dar, pentru scopurile de astăzi și mai mult în general, în viață, îți pasă este că aceste probleme se rezolve. Și ce acest curs este în cele din urmă este de a explora despre intersecția aceste intrări și ieșiri, și aceste așa-numitele algoritmi, după cum vom vedea în curând, că punerea în aplicare a ceea ce este dedesubt acolo, capota. Dar, aceste intrări și aceste outputs-- Ce înseamnă asta de fapt? Ei bine, la sfârșitul zilei, avem nevoie un mod de reprezentare a informațiilor. Acest lucru este valabil mai ales într-un calculator, care la fel de fantezie și complexe cum s-ar putea părea, este un dispozitiv destul de prost. Este nevoie de electricity-- dacă de la un cablu sau o baterie ca input-- și apoi produce unele Răspunsurile preprogramed pe ecran. Dar, cum putem obține de la începe să termine acolo? Ei bine, ceea ce este o problemă care trebuie rezolvată? Ei bine, poate că am putea, la începutul oricărui semestru, încercați să luați prezență într-o cameră ca asta. Așa că am putea face ca unul, doi, trei. Sau poate, dacă am făcut-o pentru a păstra un fel de cale ferată de myself-- pentru a ține evidența lucruri-- Aș putea alerga repede din degete. Așa că s-ar putea face doar hash o marks-- persoană, două, trei, patru, cinci, șase, șapte, opt. Iar noi toți avem, probabil, făcut acest lucru, fie pe mâini sau pe o bucată de hârtie. Și acest lucru este de fapt doar ceva numit notation-- unar în cazul în care, dacă aveți doar o singură literă în alfabetul, unul sau hash marca, în acest caz, pentru fiecare de intrare pe care doriți să conta, aveți nevoie pentru a pune jos unul dintre acestea letters-- una dintre aceste semne. In regula. Asta e tot fin și bun și nu tot atât de complicat. Dar, computerele nu sunt toate că mult mai complicat. Intr-adevar, cele mai multe dintre voi, probabil, știu, chiar dacă nu ați cu adevărat a considerat ceea ce înseamnă, că calculatoare să înțeleagă numai zerouri și ones-- sistemul binar așa-numitele. Noi oamenii, prin contrast, sunt atât de mult mai sofisticate în măsura în care așa cum înțelegem prin zerouri nouari. Dar, chiar dacă binare este, la început vedere, nu toate familiar, se pare că e la fel ca sistemele și ideile pe care le știm deja. Deci, de exemplu, ia în considerare acest lucru. Aceasta este doar o secvență de simboluri. Și, voi toți, atunci când se uite la ea, probabil cred că 123-- nimic într-adevăr interesant acolo. Dar de ce este acest număr, 123? Acestea sunt doar pe Glyphs screen-- doar modele că cineva ar fi putut desenat sau scris. Dar, dacă ești ca mine, probabil, amintiți-vă de la școală clasa că există un fel de coloane sau locuri aici. Acolo e locul celei a lui, iar locul zece și o sută locul lui. Iar motivul pentru care acest lucru este 123 și nu doar un model de trei simboluri se datorează faptului că, desigur, dacă ne au unul în locul sutelor, tu faci matematica de 100 de ori unul, și apoi două în loc a zece. Deci, asta e de 10 ori mai 2, și apoi trei în locul cel și asta e de 1 de ori 3. Iar atunci când adăugați toți cei în sus, de Desigur, veți obține 100, plus 20, plus 3. Așa că am început cu doar un model din symbols-- unui alphabet-- dar apoi am trasat un sens pe prin intermediul acestor coloane. Ei bine, se pare că computerele nu sunt cu adevărat tot ce diferit de tine și de mine. Dar, în loc să folosească puteri de 10, astfel încât să speak-- 1, 10, 100, 1000, 10.000 loc și așa mai departe forth-- ei de fapt folosesc doar puteri de 2-- astfel încât unul, 2, 4, și apoi dacă am pus mai multe cifre, 8, 16, 32, 64, 128, și așa mai departe. Și, astfel încât acesta este modul în care un calculator ar reprezenta numărul 0, la fel ca noi oamenii. 0, 0, 0-- și, probabil, puteți ghici ce model de zero-uri și altele, în cazul în care un calculator poate doar vorbesc 0 sau 1-- ce model va reprezenta numărul pe oamenii stiu ca 1? Yeah-- 0, 0, 1. In regula. Așa că 0, 0, 1 este modul în care ne reprezentăm 1, astfel încât s-ar putea fi înclinat atunci pentru a reprezenta numărul 2, dacă aveți locul patru și locul doi lui ca un singur loc, s-ar putea spune, bine, dacă am fi avut un 1 în locul celei a lui, iar acum vrem să conta până la 2, s-ar putea a face acest lucru și se lasă acest lucru să fie un zero. Dar, desigur, acest lucru nu este modul în care sistemul zecimal funcționează fie. Dacă ați pus o cifră în aceste două coloane, ai să faci aritmetică. Deci, ce număr am făcut-o accidental reprezintă pur și simplu? Deci este de 3, pentru că de 2 ori 1 plus 1 1 ori, desigur, ne dă trei. Deci, acest lucru ar fi doi. Bitul fel de flips, ca să spunem așa, ca 0 devine una, la fel ca un 9 roluri peste și devine 0 când transportați 1. Acest lucru, atunci ar fi trei, desigur. Four-- un alt lucru interesant se întâmplă, unde cei rostogolească și transportați 1, ca să spunem așa. Deci, acest lucru, desigur, este de 4. Dar dacă te repede acum inainte, ceea ce este cel mai mare număr merge să fie faptul că un calculator poate reprezenta? Deci, e doar șapte, în acest caz, nu? Pentru că ai una din cele patru, una din cele două, una în cea. Deci, asta e 4 plus 2 plus 1. Astfel că vă oferă șapte. Și într-adevăr, aceasta ar par la prima vedere că computerele pot conta nu este mai mare decât aceasta. Dar acest lucru, desigur, nu este adevărat. Ce fac oamenii atunci când vrem pentru a conta mai mare decât 999 cum ar fi? Transporta doar una și doar se adaugă o a patra cifră la stânga. Și așa, într-adevăr am putut. Am putea avea un opt lui locul și locul al 16-lea a lui, și locul de 32, 64 au, 128-- și tu poate păstra doar merge mai departe până la infinit. Deci, aceste zerouri și ones-- așa-numitul system-- binar sunt ceea ce un om de știință de calculator ar suna în general, un pic, sau o cifră binară. Dar acum, cum putem lua de la concept sau grafica acestor lucruri la un calculator real? Se pare că ne sar peste un pas aici. Ei bine, singura intrare la sfârșitul anului a doua zi, la laptop-ul meu aici este acest flux de energie electrică. Chiar dacă a fost o lungă timp de când te-ai gândit sau nu sa gândit niciodată despre cum functioneaza electricitatea, există electroni care curge sau afară, și asta e genul meu de intrare. Așa că, dacă asta e tot ce suntem obtinerea ca intrare aici, ce putem face cu aceste informații? Ei bine, ne-am putea gândi la un zero doar o absență de energie electrică. Nimic nu este flowinw, nimic nu este în mișcare, nu se întâmplă nimic. Asta e doar implicit state-- zero. Dar dacă există curge de energie electrică, de ce nu am doar în mod arbitrar, dar la nivel global în mod constant, numesc asta unul. Așa că, pur și simplu prin a avea nici o putere, avem, da putere zero, avem, da nici o putere de putere Unu. Și, în acest fel, folosind ceva mai mult fizic sau electronic vom începe să pună în aplicare această noțiune de ceva fiind fie unul sau zero. Intr-adevar, am putea face acest lucru aici. Nu asa ca aici, am trei, dar opt becuri, fiecare dintre acestea are propriul comutator. Și, așa că, dacă am vrut să reprezinte numărul șapte aici, S-ar putea activa aceste trei becuri. Și într-adevăr, în interiorul computerul meu este milioane de oameni, miliarde de lucruri care sunt doar mai mică decât cea, numite tranzistori, switch-uri, pe care tocmai l-ați activa și dezactiva. Deci, acestea sunt relativ big-- comutatoare big-- în interiorul laptop-- meu sunt multe, multe, multe, mai multe switch-uri. Dar, tot ce fac este exact that-- rândul său, ceva, întoarce ceva off. Și, ca atare, un computer poate reprezenta, cu acele milioane sau miliarde de tranzistori, loturi și o mulțime de zero-uri și altele. Și nu există alte componente hardware, totuși, că vă permite să stocați informații pe termen lung, astfel încât, atunci când trageți conectați, nu-l pierd. Dar asta este o poveste pentru o altă zi. Deci, ce putem face cu acești biți? Am putea doar să ia presiunea de pe mine-- ar putea cineva vrea să vină aici și să ofere un demo? Am văzut prima dată această mână. Care e numele tău? Maday: Maday. DAVID MALAN: Maday, vino sus. Încântat de cunoştinţă. Maday: Mă bucur să te cunosc. DAVID MALAN: Vino în acest fel. Nu va trebui să-ți buza în sus. In regula. Deci, aici, avem, notice-- unul, two-- vom edita că out-- una, două, patru, opt, 16, 32, 64, 128. Acest lucru este în mod deliberat. Există opt biți aici-- binar zero digits-- și cele. Și un pic este o unitate utilă de measure-- nu la fel de utilă o unitate de măsură pe sine. De obicei, doriți cel puțin opt dintre aceste lucruri, a.k.a. un octet. Așa că avem un octet de biți aici. Așa că, dacă am vrut să te provoc, de exemplu, enumerând, în binar, această valoare aici-- 42. Vrei să ia o lovitură de cuțit la asta? Maday: [inaudibil]. DAVID MALAN: Da, trebuie doar să împingeți mici comutatoare alb în față. Și tu vrei să scrie din 42, și puse la bătaie este acest stres CS50 dacă te pasă asta. In regula. Așa că ai 32. Vom avea nevoie de 42. Deci asta e un opt, așa că e 40. Si excellent-- foarte bine făcut. Mulțumesc. [APLAUZE] In regula. Așa că avem mai o minge de stres. Hai să facem asta încă o dată, dacă am putea. Un alt voluntar? stres sferic liber, minge de stres gratuit. O.K. Aici, în mijloc, vrei să vii? In regula. Stiu. Acolo mergem. Astfel încât numerele de vin pe jos aici--. Cum te numești? DAVEY: Davey. DAVID MALAN: Davey. O.K. Vino, Davey. Încântat de cunoştinţă. Și ce vom ai spell-- dacă ai putea persista acolo pentru doar un singur moment-- este numărul 50. Dar, dar, dar, dar, dar, acestea sunt magneți de școală de grad pentru un motiv. Tocmai am primit un pic mai greu, bine? Nu există încă opt. In regula. Deci, ce avem acolo? Avem 32. Frumos. 32, plus 16 ne oferă 48-- atât de aproape. Și minunat. Felicitări pentru Davey, de asemenea. [APLAUZE] In regula. Deci, putem face acest lucru toată ziua, și nu devine tot atât de mult mai mult interesant și mai provocator. Dar asta e cu adevărat point-- este modul relativ simplu este, la sfârșitul zilei, ce calculator nu pentru a stoca informații, pentru a stoca intrări și în cele din urmă stoca sau reprezintă acele ieșiri. Dar, numere singure nu sunt tot ceea ce interesant. Așa că oamenii, în urmă cu câțiva ani, a hotărât, știi ce? Ar fi frumos dacă computerele nu erau doar calculatoare pentru aritmetică operațiuni, dar, de fapt, ar putea face lucruri cum ar fi procesare de text, sau e-mail, sau încarnări mai moderne acestor tipuri de tehnologii. Și așa lumea a decis în mod arbitrar, dar universal, că, dacă doriți să stocați capital litera A într-un computer, știi ce? Hai doar cu toții de acord pentru a stoca unele model de zero-uri și ones-- bits-- că în cele din urmă reprezintă numărul zecimal 65. Ne vom doar cu toții de acord cu asta. 66 ar reprezenta B, 67 ar reprezenta C, și există ciorchini de alte modele de zero-uri și altele, sau numere care stau la baza, care ar reprezenta alte scrisori încă. Așa că, dacă ai un fel de mental absorbi acest lucru pentru un moment, Am pus în mod deliberat de la A I, în cazul în care Ha 72 și I este 73. În cazul în care un computer, apoi, în contextul un program de procesare de text sau un e-mail, a dezvăluit sub capota pentru a avea aceste modele de model bits-- de biți reprezentând 72, apoi 73, apoi 33-- ce s-ar putea vraja asta în acel program? Așa că hi, și apoi ceva. Noi nu știm în mod necesar, dar într-adevăr, 33-- nu pe graficul earlier-- a fost pur și simplu un punct de exclamare. Așa că 72 era H, 73 este I, 33 se întâmplă să fie un punct de exclamare încă. Dar asta e tot fin și bun, și, de fapt, în zilele noastre, mai degrabă decât utilizați doar șapte sau opt biți, datorită ceva numit Unicode, spre deosebire la ascii înapoi în a doua zi, noi de fapt, poate reprezenta chiar mai mult personaje interesante decât doar aceste limba engleză originală părtinitoare litere. Dar, de asemenea, putem reprezenta chiar lucruri cum ar fi culori. neater Dacă v-ați auzit vreodată acronimul RGB, roșu, verde, albastru, care înseamnă doar că un calculator foloseste de obicei trei seturi de bits-- unele număr de biți care reprezintă un număr pentru cât de mult roșu pe care doriți, un alt set de biți pentru cât de mult verde pe care doriți, și un alt număr stabilit pentru cât de mult albastru dorit. Deci, un număr mare înseamnă o mulțime de număr roșu, mic înseamnă că nici un roșu. Și, astfel încât acestea sunt un fel de valori de mijloc aici. Așa că dă-mi niște roșii, da-mi ceva verde, și dă-mi un pic de albastru. Și, dacă se amestecă aceste trei nuanțe de culoare împreună, în acest caz, veți obține această nuanță întunecos de galben sau maro. Dar, acel model de opt plus opt plus eight--, astfel 24 bits-- la stânga la dreapta, este modul in care un calculator ar reprezenta culoarea respectivă. Acum, acesta este doar un punct pe un ecran. Dacă te uiți foarte aproape la televizorul tau calculator, veți vedea puncte sau pixeli. Și, dacă aveți o întreagă rețea de pixeli, pe orizontală și pe verticală, Aveti imagini. Și apoi, dacă luați o imagine și apoi se spală arată-te o altă imagine, o alta imagine, o altă imagine, o altă imagine, foarte repede, ai avea, bineînțeles, filme. Și așa am început să observăm unde. Am început cu aceste zerouri și cele. Am lucrat de acolo în zecimal numere, cum le reprezintă. Acum avem litere ale alfabetului. Dar, în alte contexte, așteptați, putem folosi alte câteva biți și culori reprezintă. De îndată ce aveți la dispoziție capacitatea de a reprezenta culorile, aveți capacitatea de a reprezenta fotografii și gif-uri animate și alte astfel de caractere de pe ecran. Iar când ai o grămadă de imagini care zboară către om dintr-o dată, se pare ca imagini în mișcare, și astfel încât să obțineți clipuri video, de asemenea. Deci, folosind aceste foarte Primitive simplu face noi au modul de reprezentare în cele din urmă toate aceste forme de media. Si ne-am abstras din nou și din nou și din nou, până când vom obține de la cel mai scăzut nivel la acest cel mai înalt nivel. Astfel că ne dă această idee generală de abstracție. Dar, am început aici. Aici acum, am putea reprezintă într-un calculator intrările noastre cu zero-uri și altele, ieșirile noastre în zero-uri și altele, dar ce se întâmplă în interiorul cutiei? Asta e în cazul în care computerul știința devine interesantă. Asta e în cazul în care vă aduce de fapt tau minți proprii să le suporte pentru a rezolva problemele. Noi putem prevedea acum, pentru Restul semestrului, da. Știu cum funcționează binar. Îmi amintesc cum Ascii sau Unicode-- de cartografiere a letters-- lucrări. Și se află cu siguranță motivul pentru care noi ar putea reprezenta roșu și verde și albastru, și reprezintă multimedia, de asemenea. Dar acest lucru este lucruri interesante. Aceasta este ceea ce face ca cineva capabilă să rezolve probleme. Și într-o astfel de problemă ne place să facem, într-adevăr, este de a lua de prezență, sau a face acest lucru în mod algoritmic. Și din nou, aș putea face asta. S-ar putea face unul, doi, trei, patru cinci, șase, șapte, opt și nouă. Și aș putea scrie în jos pentru a ține evidența acesteia. Dar asta e doar cum mi-ar reprezintă informația. Sau aș putea face acest lucru faster-- doi, patru, șase, opt, zece, 12, 14, 16, 18, 20, 22-- se simte ca de două ori la fel de repede, dar este încă va lua o mulțime de timp. Dar, se pare, dacă ne folosim încă un alt resource-- și într-adevăr calculatoare aceste zile au mai multe procesoare sau creier. Se pare ca computerele pot face o mulțime de lucruri dintr-o dată, și într-adevăr, noi, în această cameră, ar putea reprezenta exact acest lucru. Deci, e un pic social incomode, dar dacă ar fi umorul ma pentru doar un proces în trei etape, să mi toată lumea, în loc acolo doar să se ridice în picioare pentru un moment. Ridica-te. Deci, gândiți să le număr astfel încât toată lumea în Unu această cameră, cu excepția persoanelor care nu au obligă, se gândesc numărul unu. Așadar, acesta este numărul tău chiar acum. Acesta este primul pas, sau ca om de știință de calculator sau de un programator s-ar face în mod obișnuit, vom merge pentru a începe numărarea de la zero. În cazul în care cel mai mic număr putem reprezintă cu acele becuri este zero, prin doar lăsându-le toate off, aș putea la fel de bine doar începe numărarea de la zero în loc de unul. Și astfel, asta oamenii de știință de calculator fac. Așa că un pas de zero, stand up și gândiți-vă la numărul unu. Următorul pas este de astea-- pereche off cu cineva în picioare și adăugați numerele împreună. Extraordinar. Astfel încât în ​​acest moment în timp, literalmente toată lumea participă se gândește la numărul 2, cu excepția pentru o singură persoană ciudată dacă avem un număr impar de persoane în cameră. Și acum al treilea pas aici va să fie astea-- unul dintre voi ar trebui să stai jos. Unul dintre voi ar trebui să stai jos, și dacă sunteți încă în picioare, du-te înapoi la pasul unu. In regula. In regula. Astfel încât tot mai mulți oameni ar trebui să fie așezat în jos. Observați că acest lucru a indus un loop-- un fel de ciclu. Unii dintre voi ar trebui să fie stângaci blocat, merge înainte și înapoi între primul pas și doi, unu și doi, unu și doi. Asta e ok. Primul nostru bug. Ne vom ocupa de asta. In regula. Lasă-mă să încerc să impulsioneze lucrurile. Teoretic, numai o singură persoană este în picioare ca toată lumea continuă să se împărți câte doi. Dar, lasă-mă să accelereze lucrurile cu oamenii încă în picioare. Ce număr te gândești? 46. O.K. Du-te și stai jos. Voi sunt încă în picioare. Cine e încă în picioare? Ce număr te gândești? O.K. Așa că ne vom întoarce la tine. In spate? Ce este asta? 22. OK altcineva da sus top--? 34. O.K. Aici pe right-- mea aici? 132, foarte frumos. 22? O.K. Și cine e încă în picioare? Aici? 46, foarte frumos. 72. Nu pot bloca mult mai mult timp. Da? 30, frumos. Aici? 23? 23. Și cred că asta e toată lumea cu excepția voi, nici o presiune. Oh, așteptați. 28? Doar opt. O.K. Doar opt. Aici jos? 30. 23. 24. 18. Aceasta este cea mai proastă implementare din acest algoritm vreodată. O.K. Așa că oricine altcineva? Oricine altcineva? O.K. Încă una. 16? O.K. 16. In regula. Așa că, dacă n-am ratat pe nimeni în strălucirea aici, atunci când am lovit Enter, vom vedea, algoritmic Numărul total de persoane Sanders. Pentru că, din nou, este ca și cum toată lumea așa cum ați așezat, a trecut numărul tău off la altcineva, altcineva, la altcineva, astfel că, în teorie, în cele din urmă, doar unul ciudat persoană ar trebui să fie lăsată în picioare. Dar asta e bine. Am accelerat lucrurile manual. Este deosebit de greu pentru a vedea în acest spațiu special. Și numărul total de persoane credem că există aici este 546. Numărul total am fost predat de semenii didactice, care a făcut-vechiul mod lent școală, a fost de 820. [RAZAND] [APLAUZE] Asta e ok. Așa că cu siguranță, atunci, există aceste bug-uri. Și asta e bine. Și așa cred că din nou pe acest prima dată când ceva scrieți nu funcționează în mod necesar. Acest lucru sa întâmplat cu mine aici. Dar, hai acum ia în considerare modul în care am putea aplică aceeași idee la ceva v-ar fi văzut mai înainte, care este această veche tehnologie aici-- școală o carte de telefon foarte mare. Și să presupunem că această carte de telefon are 1000 de pagini și 1.000 de nume și numere în ordine alfabetică în interiorul acestuia. Ei bine, am putea aplica un fel de un anunț similar idee la această problemă foarte fizică, doar folosind mine. Am doar un fel de inselat prin mobilizarea pe toți cu o mulțime și o mulțime de diferite procesoare sau creierul executa unele algoritm. Dar, dacă e doar un pic vechi mine, eu pot încă pârghie aceeași esență a unei idei de divizare și de a cuceri această problemă din nou și din nou, prin care jumătate din voi, jumatate dintre voi, jumatate din voi, jumatate dintre voi, teoretic, ținut ședinței în jos, până când am rămas, teoretic, cu doar o singură persoană. Deci, în această școală veche technology-- noi nu facem au nevoie de acest map-- această tehnologie de școală veche, am putea începe căutarea pentru cineva ca Mike Smith, o pagină la un moment dat. Și văd că nu, Mike nu e aici. Sunt încă în secțiunea A. În cele din urmă, am găsit eu în secțiunea B. Și acest lucru este un algorithm-- pas-cu-pas instrucțiuni. Se începe de la pagina de început și unul la un moment dat, uita-te pentru Mike Smith. Este aceasta correct-- această algoritm sau o abordare? Da, e corect. În cazul în care Mike e aici, în cele din urmă O să ajung la el. Dar nu este eficient. Este, evident, foarte lent. Deci, eu pot pârghie de aceeași twosies abordare. Pot să fac un fel de două, patru, șase, opt, 10, 12. Este de două ori mai repede. Mă duc să ajung la Mike mai repede dacă el e acolo. Este corect? Da, dar am auzit nici un little--. Acum am auzit un nr. Da. E un bug potențial. Poate că Mike devine doar accidental prins între două pagini, pentru că eu sunt de zbor prin acest lucru de două la un moment dat. Așa că, cel puțin avem nevoie de ceva un fel de fix condiționată. Trebuie să spun, hei, dacă am lovit pe cineva a cărui Numele începe cu un T în loc de un S, Mai bine dublu înapoi cel puțin o pagină. Așa că buggy la început, dar fixabil. Dar nici unul dintre noi nu vor să caute Mike Smith, printr-un telefon de 1.000 de pagini puteți rezerva o singură pagină la un moment dat. Ce este o persoană normală de gând să faci? Ai de gând să meargă la S, dacă ai ști în cazul în care S. S-ar putea merge aproximativ la mijloc sau ușor înclinată spre sfârșitul anului. Și mă uit în jos aici și Sunt în secțiunea M. Dar ce știi despre această problemă acum, că noi nu știm în mod necesar înainte de cu noi toți doar de numărare pe noi înșine echivalent? Ei bine, Mike este în mod clar întâmplă să fie în această jumătate din carte dacă e deloc aici pentru că sortate. Și, astfel încât să puteți dramatically-- foarte [Trăgîndu] Stiu. [APLAUZE] Este de fapt foarte ușor dacă ai făcut-o în jos a coloanei vertebrale acolo. Dar vă puteți arunca apoi jumătate din problema imediat. Acum, am rămas cu același problem-- găsi Mike Smith într-un telefon book-- dar acum cartea de telefon începe la M și se duce la Z, dar este pe jumătate la fel de mare. Dar aceasta este ceea ce este impresionant. La fel ca în teorie, voi, atunci când ai stat cu toții în jos doar jumătate de la un moment dat, problema a primit o jumătate la fel de mare, pe jumătate la fel de mare, din nou și din nou. Așa a devenit această problemă aceeași problemă, dar pe jumătate la fel de mare. Acum este o problemă de 250 pagini. De îndată ce îmi dau seama, oh, eu sunt în secțiunea T accidental. Am mers prea departe. Pot să arunc acea jumătate din cartea de telefon departe. Acum, eu sunt în jos într-un sfert din problema. Si se poate repeta, repeta, se repetă până când, în teorie, tu ești a plecat cu doar o singură pagină. Iar dacă Mike este pe acea pagină, Pot rezolva acum această problemă. Dar, cât de repede am rezolvat? În primul caz, mi-a luat ca poate că 1.000 pași pentru a găsi Mike Smith. S-ar putea fi luat mine-- Am luat cartea de telefon și am început să caut o singură pagină la un moment dat, și Mike s-ar putea fi de 1.000 de pagini mai târziu. A doua abordare poate mă ia 500 de pași, pentru că eu sunt zboară prin intermediul a două la un moment dat. Iar a treia abordare, deși, este deosebit de puternic. Dar, să ia în considerare ceea ce de fapt a făcut cu această a treia abordare. O să am ceea ce eu voi numi doar aceste declarații aici, câte unul la un moment dat. Ridica o carte de telefon. Deschide la mijlocul cărții de telefon. Uită-te la nume. Și apoi lucrurile devin un pic mai mult intelectual interesant, dacă încă mai simplu. În cazul în care Smith se numără printre numele de pe pagina curentă, apoi face ceva în mod condiționat. E ca o furculiță în drum. Sună-Mike. În cazul în care Mike este printre numele pe acea pagină, numită Mike. Dar nu numai linia de patru, dacă linia copac, dacă vreți, este adevărat. Răspunsul la această întrebare este da. Altfel, dacă Smith este mai devreme în book-- cu alte cuvinte, dacă sunt în secțiunea M și caut pe cineva care să la stânga, atunci ce ar trebui să fac este ceva foarte asemănător. Apoi ar trebui să deschidă la mijloc din jumătatea din stânga a cărții. Așa că du-te la stânga, și apoi du-te înapoi la pasul doi. Uită-te la numele de acolo. Deci, cu alte cuvinte, face același lucru, dar pe o problemă care a fost redus la jumătate. Știi ce altceva? În cazul în care Smith este mai târziu în carte bazat pe pagina mă uit, deschis la mijlocul de jumătate din dreapta a cărții și apoi du-te înapoi din nou la pasul doi, else-- există oa patra posibilitate aici. Mike fie aici, fie la stânga sau la dreapta sau nu acolo. Și aici mai bine considera acest lucru. Și, de fapt, dacă ați avut vreodată computerul dvs. doar accident de pe tine, care este uneori, dar nu întotdeauna, rezultat doar un programator uman nu realizând, oh trage, există de fapt, acest al patrulea scenariu. Și, dacă nu scrie cod să se ocupe de acest scenariu, uneori, nu știi ce s-ar putea face computerul. Și, într-adevăr, un program s-ar putea prăbuși. Dar, în acest caz, m-am gândit cu privire la aceasta, și am spus, altfel renunț, pentru că este a patra logic scenariu posibil. Acum, hai să adăugați unele de vocabular asa ca am pot începe să arunce în jurul valorii de termeni care altfel sunt destul de intuitiv. Toate lucrurile pe care le-am am doar evidențiat în galben aici, Eu doar merg la funcții sau proceduri. Sunt doar un fel de acțiuni. Deci, pick up, deschis, uita-te la, cerere, deschis, deschis, quit-- acestea sunt doar acțiuni, sau vom le numesc mai mult formal, funcții. Între timp, acum în galben, Am evidențiat lucruri that-- hai să începem de asteptare le condiții sau ramuri. Acestea sunt puncte de decizie, în cazul s-ar putea merge în acest fel, în acest fel, sau o altă direcție, încă. Astfel încât acestea vor fi condiții. Și acum asta e un pic columbofil. Să numim aceste întrebări expresii booleene, după cineva cu un ultim nume Bool. Și o expresie booleană este doar ceva că este fie adevărat, fie fals, da sau nu. Așa că e întrebarea a cărei tine răspuns grijă, astfel încât să se într-o stare face un decision-- primi înapoi un răspuns, și apoi du-te la stânga sau la dreapta, sau ceva de genul altceva cu totul. Și apoi în cele din urmă, acestea Liniile aici-- du-te înapoi la pasul doi, du-te înapoi la pasul two-- am putea pune în aplicare această idee în diferite moduri. Și apoi aceia dintre voi cu Experiența de programare s-ar fi făcut sau pot imagina făcând acest lucru în mod diferit. Dar, pentru scopurile de astăzi, este doar ideea că contează. Aceasta induce ce vom numi în general un loop-- un fel de ciclu, deoarece asta mă face să fac ceva din nou. Așa că acum, să ia în considerare doar cât de bun este acest algoritm. Este corect. În cazul în care Mike în carte, este unul dintre cei patru scenarios-- din nou și din nou și din nou, îl vom găsi. Dar, cât de bun este? Ei bine, nu avem să fie prea formal aici. Dar, hai să complot ceva, x și y, pentru a obține un sentiment de forma acestei probleme. Pe axa x este aici dimensiunea problemei mele. Și au o axa y aici va fi timp pentru a rezolva. Deci, poate că acest lucru este numărul de pagini. Poate că acest lucru este de secunde sau pagina turns-- indiferent. Cu toate acestea pe care doriți să conta este ce această imagine va reprezenta. Și acest prim algoritm, voi pentru a descrie ca doar o linie dreaptă. În cazul în care există n pagini în cartea de telefon, atunci ar putea să mă ia cât mai multe ca n pași pentru a găsi Mike. În cazul în care Verizon sau compania de telefonie adaugă mai multe pagini de anul viitor, ar putea să mă ia una mai step-- una mai unitate de timp pentru a găsi Mike. Deci, există doar acesta, pentru a un anumit raport. Este o pantă linie dreaptă. Între timp, această a doua algorithm-- dacă sunt merge doi la time-- doi, patru, șase, opt sau double-- trecând prin paginile de două ori la un moment dat, două la un moment dat, este încă în linie dreaptă. Acum exista o una-doi raport, dar doar un pic mai mic. Așa că, dacă există atât de multe pagini pe grafic aici, în galben, care ar putea să-mi ia acest lucru mulți pași sau secunde, în caz contrar, o să mă ia de două ori mai multe pe linia roșie. Dar linia verde este MENIUL reală. Aceasta este ceea ce noi, în general, apelați un jurnal logorithm-- n, unde n este numărul de pagini. Dar este forma care contează astăzi, pentru că nu avem să se gândească chiar despre puncte complot. Gândiți-vă la un scenariu extrem. Să presupunem că mâine Verizon dublează numărul de pagini din cartea de telefon, de la 1000 la 2000. In primul algoritm, am ar putea să pierdeți un plus de 1.000 pași în căutarea pentru Mike, doar pentru că Verizon dublat dimensiunea cărții. A doua algorithm-- s-ar putea ia-mi un plus de 500 de pași. mai mult de 1.000 de pagini, mă duc două la un time-- mai mult de 500 de pași pentru a găsi Mike. Dar acest lucru al treilea algoritm este un fel de magic. Verizon dublează numărul de pagini de la 1.000 la 2.000, dar câți mai mulți pași nu ia-mă să caut Mike? Este doar un singur, pentru că eu pot doar rupe cartea de telefon mai mult de o dată dintr-o problemă 2000 pagina unui 1.000 problemă pagină, și voila. Am luat o muscatura masivă din ea. Și dacă te duci într-adevăr extremă, să presupunem că agenda telefonică companie a avut ceva nebunesc o carte de telefon 4 miliarde de pagini. Ei bine, câți pași s-ar putea lua pentru a găsi Mike Smith într-un 4 miliarde Pagina de telefon de carte? Este un număr mare, dar doar 4 miliarde 2000000000 la un miliard pentru a 500 milioane de euro, 250 million-- încă sună ca un număr mare, dar eu sunt foarte repede obtinerea la valori mai mici. Și, de fapt, dacă eu fac matematica Bine, eu pot împărți doar 4 miliarde de aproximativ 32 de ori înainte de I a lua în jos la doar unul. Așa că, dacă cartea de telefon au fost 4 miliarde de pagini lung, nu e mare. În termen de câteva secunde, poate 32 secunde, aș putea să-l împartă în jumătate și în cele din urmă găsi Mike sau ajung la concluzia ca nu e acolo. Și asta e esența unui algorithm-- un algoritm bun. Și asta e unul din obiectivele unei clase ca aceasta, încearcă să dau seama cum fac rezolva problema nu doar corect, ca intotdeauna am stiut cum sa o fac una pagină la un time-- dar corect și bine. Cum fac un design bun soluții la problemele? Așa că hai să luăm un moment aici și ai da un sens acum din CS50 cursului itself-- introduce membri ai personalului câteva curs de. Chiar înainte de a 2:00, vom să ia o scurtă pauză astfel încât aceia dintre voi care sunt pot cumpărături rață afară și să ia o uita-te la o altă clasă și urmăriți restul on-line. Dar, pentru moment, permiteți-mi să introducă CS50, clasa în sine, și în special în ceea ce este nou. Așa că primăvara trecută, noi a petrecut destul de un pic de time-- Personalul cursului și Eu-- gândire despre ce este vrem CS50 să fie, și merge înapoi la prima principii, ca să spunem așa, să ia în considerare ceea ce este dorim acest curs să arate ca și să fie cum ar fi pentru studenții săi. Și așa cum veți vedea în problema set zero, precum și, o invitație să aruncăm o privire la faptul că URL-ul care rezumă unele dintre motivațiile din spatele următoarele caracteristici ale toamna 2016. Deci, după cum este posibil să fi spicuite din TL: handout DR, Programa de astăzi, cât și din catalog Desigur, acest an în CS50, te doar de așteptat să participe today-- atât de locuri de muncă bine done-- și ultima prelegere în 21 noiembrie. Și tu ești binevenită, dar nu este de așteptat să participe la aceste cursuri în mijloc, pentru că ceea ce facem în acest an, este de fotografiere în timp real materialul cursului. Așa că totul va rămâne curente și încorporate cele mai bune ca can-- evenimente curente și conversații ca oamenii s-ar putea fie având în industrie din mondială, dar ceea ce face ca materialul disponibile, ca urmare, chiar earlier-- complet cu transcrieri text complet și de căutare și pentru link-uri către alte resurse. Și într-adevăr, am fost acordarea de ceva timp și noi credem acum acest lucru, pe care o putem crea, digital, o mai captivantă, o mai convingătoare experiență educațională, în opoziție pentru a aduna aici circa 23 de ori în persoană, auzind pe cineva ca mine pur și simplu vorbim despre știința calculatoarelor, spre deosebire de angajarea mai activ. Așa că veți vedea în programa cursului o schiță a semestrului aici, alături atunci când prelegeri vor să fie filmat, la care ești Bine ai venit, dar nu este de așteptat, și atunci când acestea vor să fie lansat pe site-ul cursului. Și ce vom face aici Miercuri începând cu săptămâna viitoare, este mult mai intim, cu numai acei oameni care doresc să participe, este așa-numita plimbare prin, unde am și capetele ale cursului va face de fapt lucrurile un pic mai intim aici în orchestră secțiune, încă mai au unele tehnologii și se plimbe prin set de probleme săptămâna curente, și vă oferă particularly-- dacă printre cei mai comfortable-- cu atât mai mult orientare pe care le-ar putea dori sau au nevoie pentru provocarea săptămânii. Și, în mod similar, pentru cei care nu pot participa la cei în persoană, nu e mare. Vor fi conduse în mod similar prin unul dintre personalul superior cursului, Zamalya, aceeași oportunitate încorporat în problema ei înșiși seturi. Problemă stabilește acest an va fi lansat în zilele de vineri și nu se mai face șapte zile mai târziu, dar 10 zile later-- în mod deliberat suprapunere cu fiecare problemă set, pentru a se potrivi mai bine, sperăm, și refluxul flux în programele de student, în special atunci când midterms sau atletism sau cadre universitare sau extracurriculars tind să vină și să plece mai ales la mijlocul-semestru. Asta ar trebui să vă dea un pic mai mult marjă de apreciere pentru a stabili dacă aveți față încărcați săptămână cu CS50 sau încărcare din spate l pe următorul week-end în loc. Asa ca uita-te pentru a programa cursului aici pentru orarul acestora. Și veți observa prea printre schimbările în acest an, pentru cei mai familiarizați cu Programarea în trecut, vom începe semestrul ca vom astăzi în Scratch, se concentreze în special asupra limbii numit C, și apoi nu tranziție PHP, dar într-un limbaj numit Python spre sfârșitul semestrului în contextul programării web, împreună cu SQL și JavaScript, HTML, CSS, și totuși mai mult. Și, într-un răspuns la un FAQ, este într-adevăr cazul că CS nu este la fel de înfricoșător ca și eu o dată a crezut că a fost, dar este la fel de mult de lucru așa cum am auzit că ar putea fi. Dar aceasta este spune că aici sunt unele Statisticile din toamna anului 2015 corp student, prin care liniile orizontale albastre reprezintă numărul mediu de ore raportat. Și veți vedea o medie de șase până la 10 la 16, poate 12-- sau așa și așa mai departe, dar cu variație ridicată să fie clar. Si astfel dau seama că nu există nu numai elevii mai confortabil și mai puțin confortabil în curs, ci un suport corespunzător structura pentru a obține acei studenți prin semestru cu succes. Într-adevăr, într-un răspuns la un FAQ, ar trebui să luați CS50 ca un prim an? Absolut. Și, de fapt, eu nu regret nu au găsit calea mea sau a găsit un nou câmp primul an, de asemenea. Și ar trebui să luați CS50 cu alte cursuri, cu siguranță, ca well-- și sfaturi generale am putea da studenților, că CS50 e, probabil, nu genul de clasă sau de clasă intro că ar trebui să luați cu trei altele sau alte patru clase set-p. Dar, dacă luați alte două p-set clase, altceva, și CS50, absolut ușor de gestionat. Am avut mulți elevi în făcut acest lucru destul de singur cu succes. Și pentru a te spre asta termina cu succes linia, are curs au sections-- trasee diferite pentru studenți mai puțin confortabil, mai confortabil, și undeva între, astfel încât în ​​timpul cursului Primul set problemă, vi se va cere să le descrie. Iar dacă sunteți printre cei mai puțin confortabil, este genul de lucru pe care pur și simplu mai degrabă știi. Și într-adevăr, că a fost în creștere demografică în CS50 pentru destul de câțiva ani. Ca de toamna trecuta pentru exemplu, 58% din clasa s-au descris ca fiind printre cei mai puțin confortabile, cu 9% printre cei mai confortabil, și apoi alți studenți acolo, în roșu care descriu ei înșiși ca undeva intre. Și veți vedea aici subiectele de ansamblu și programul de secțiuni, toate acestea sunt oferite în persoană, în în timp real, cu curs Personalul uimitor de semenii didactice și asistenți Desigur, unii dintre ei te vei întâlni în doar o clipă. Secțiunile însele, după cum veți vedea, se va să fie de luni și marți și miercuri, astfel încât să permită să se scufunde după angajarea, în cazul în care acest lucru alege, în curs prelegere la începutul săptămânii. Și apoi ore de birou, care cu siguranță, cu fiecare an care trece, au fost nu mai puțin de un provocare pentru curs. Și în acest an, nu suntem de planificare numai să dețină birou hours-- unul pe unul oportunități de ajutor pentru studenți în zilele de miercuri joi si duminica, ultima dintre aceste fiind în după-amiaza de proiectare pentru a reduce unele dintre stres care invariabil apare noaptea târziu p-settting cu un termen looming-- dar orele de birou vor fi, de asemenea, oferite în zilele de luni și marți și Miercuri și vineri și sâmbătă, mulțumită prietenilor noștri de la HSA. CS50 are acum propriul spațiu pentru studenții și personalul CS50, vârful 67 Mount Auburn Street, chiar acolo, în Harvard Square. Viziunea pentru care este că CS50 lui TFS și CAs pe tot parcursul săptămânii, destul de mult în cea mai mare zile, va fi acolo pentru sprijin. Așa că, dacă ai niște întrebare pe un set de p- sau te simți un pic blocat sau un pic confuz, și naiba, ai o oră sau o jumătate de oră între clase, mai ales în square-- poate pop și au răspuns la această întrebare a avea acea confuzie clarified-- foarte mult în spiritul, sunteți familiarizat, de matematica departament propriu centru întrebări de matematică, dar destul de mult în jurul valorii de ceas pe [? Gcal?], Pe care o vom posta on-line. Tutoring este de asemenea disponibil pentru cei care studenți, liber de curs personalul propriu, dacă doriți mai intim unu la unu, sau numai doi sau trei colegi, de lucru cu unul dintre membrii personalului cursului. Și într-adevăr, acestea sunt doar aici unii dintre membrii personalului cursului, câțiva dintre care vă veți întâlni în doar o clipă. De fapt, lui CS50 proprii colegi de predare cap, și desigur cap asistent, și preceptor, ar putea veni pe sus, să permită ei să spună salut. [APLAUZE] VORBITOR 1: [inaudibil]. [APLAUZE] VORBITOR 2: [inaudibil]. [APLAUZE] VORBITOR 3: [inaudibil]. [APLAUZE] DAVID MALAN: Și ne permite să aduce la bord doi dintre lui CS50 cele mai personalul de conducere, Rob și Zamayla, de asemenea. [APLAUZE] Într-adevăr, atât Rob și Zamayla au fost cu noi atât de mult timp, că am fost în stare pentru a intra în arhivele lui CS50 și pentru a găsi acest lucru foarte SD imagini de ele participante pe scena ei înșiși în urmă cu câțiva ani. ROB: [inaudibil]. [APLAUZE] ZAMAYLA: [inaudibil] [APLAUZE] David MALAN: Vă mulțumesc. Deci, în plus față de acestea membrii echipei aici, CS50 are o echipa de aproape 100 membri ai personalului, toti acestia vor fi disponibile pentru secțiunile și orele de birou și multe altele. Și, după cum spune Rob prea, acest lucru este cea mai importantă revizuire din CS50 în cei 10 ani care Am fost în [inaudibil]. [Inaudibil] sa concentrat în special în asigurarea unei structuri de sprijin, tundere departe o mulțime de cea mai mare parte, care a fost acumulat în 10 ani evoluția de iterative pe seturi de probleme ale cursului. Așa că în acest an, nu numai în clasă, dar De asemenea, sub forma problemei cursului seturi, ar trebui să găsească lucruri să fie mai simplificat, tuns, mult mai ușor de gestionat decât în ultimii ani, așa cum am vărsat o parte din bagajul pe care-i dezvoltat de natura anului în evoluție după an și recapitularea. Așa că noi și îmbunătățite, începe astăzi. Vei întâlni unele mai multe din Personalul curs în [inaudibil] la 2:30, în cazul în care ne-am servi, ca o tradiție, tort. E un tort pic mai mult decât atât, dar tu vei Erin se întâlnesc și Tobias și încă altele. Dați-mi voie să vă dau un tur înainte de a auzi de la unii dintre ceilalți membri ai personalului în clasa a ceea ce așteaptă de asemenea. De fapt, vom începe întotdeauna CS50 lui semestru vine sâmbătă, cu ceea ce se numește Ziua CS50 puzzle. Nu are nimic de-a face cu informatică per se, dar cu privire la problema rezolvarea mai general. Și, dacă aleg să ia parte, pe unele dintre invitatii, ar putea să fi văzut ușă a scăzut sau pe scenă aici, este o oportunitate în echipe de doi sau trei sau patru, pentru a participa pentru puzzle-uri și pizza iar premiile și more-- această sâmbătă, Stay tuned pentru mai mult. Veți găsi, de asemenea, că fiecare Vineri, la foc și gheață, nu CS50 aduce un întregul grup de elevi la masa de prânz, pentru a face o mare clasa se simt mai intim, și, în general, să reunească absolventii si prieteni din industrie pentru a vorbi despre ceea ce le-au fost de până la, deoarece a absolvit. În mod similar, în acest an, va vom inaugura prima vreodată CS50 50 codare contest-- un mid-semestru posibilitatea de a permite tuturor pe un opt în bază, pentru a avea un provocarea de inteligența împotriva colegilor, din nou, în echipe de câte doi sau trei sau patru, folosind doar acea programare savvy pe care apoi au sub centura după doar șase sau șapte săptămâni ale clasei și participante în acest tip de competiție online-- dacă doriți să vă perfecționa propriul abilități tot mai mult în această provocare. La sfârșitul semestrului este așa-numitul CS50 Hackathon-- o oportunitate care începe la ora 7:00 PM se termină la 07:00, și de-a lungul drum 12 ore de seară, în care să se scufunde în project-- final al cursului o oportunitate de a proiecta și să pună în aplicare cele mai multe ceva de interes pentru a vă cu predare îndrumarea colegilor lui. În jurul valorii de 9:00 vom face în mod tipic servi pizza, 01:00, Philippe, și puțini dintre noi care sunt încă treaz la ora 5:00 dimineața, sunt de transfer de la bussed în jos drumul spre IHOP pentru micul dejun. Și apoi câteva zile mai târziu este așa-numitul CS50 fare-- un capăt de expoziție semestru celebrare a cât de departe atât de multe din CS50 studenți au venit de la săptămâna zero, tot drumul pana in saptamana, și ținând cont de faptul că 73% dintre cei colegii de clasă și a ta acest an au luat niciodată o clasă de CS, înainte. De fapt, la reemphasize la fel de mult, aici este mai mult câteva fețe din personalul CS50 lui. VORBITOR 4: [inaudibil]. VORBITOR 5: [inaudibil]. VORBITOR 6: [inaudibil]. VORBITOR 7: [inaudibil]. DIFUZOR 8: [inaudibil] VORBITOR 9: [inaudibil]. VORBITOR 4: [inaudibil]. VORBITOR 10: [inaudibil]. VORBITOR 11: [inaudibil]. VORBITOR 12: [inaudibil]. VORBITOR 13: [inaudibil] VORBITOR 14: [inaudibil]. VORBITOR 13: [inaudibil]. VORBITOR 15: [inaudibil] VORBITOR 16: [inaudibil]. VORBITOR 11: [inaudibil] VORBITOR 5: [inaudibil]. DAVID MALAN: O parte din echipa sunt ele însele cumpărături clase. Dar, dacă acei membri personalului CS50 sunt aici, ar putea veni pe sus pentru un moment. CS50 lui TFS și CAs și [? personal?] Membrii aici-- acestea sunt doar câteva din cel faces-- căruia tocmai ați a văzut, și câteva other-- și alte câteva încă. De ce nu am merge mai departe și să permită voi o pauză de cinci minute. În cazul în care aveți nevoie pentru a te apleca la clase de magazin, e în regulă. Și, în cinci minute, vom relua, luând o privire la primul rămășițe limbii noastre de programare, să îndeplinească Personalul cursului de aici ceva mai mult, și în cele din urmă să se concentreze la problema setată la zero. Așa că vom fi din nou în cinci minute. [APLAUZE] In regula. Așa că ne-am întors. Și, în restul de nostru timp astăzi, obiectivul este la nivel terenul de joc în ceea ce privește o anumită terminologie, în ceea ce privește anumite idei. Pentru că, într-adevăr, conform unele dintre graficele anterioare, acolo va fi o serie de niveluri de experiență în clasă, unii dintre ai căror studenți au luate unele de programare, înainte, unii dintre ei nu au. Și așa, cu această primă problemă set și cu această primă limbă avem o oportunitate de a începe să ia acordat după ziua de azi unele de vocabular și idee comună. Si vom face acest lucru prin intermediul Primul languages-- cursului în plus față de C și Python și JavaScript și SQL și HTML și CSS, ne vom concentra inițial și doar pentru problema setată la zero pe acest limbaj grafic, numit Zero, dezvoltat de MIT Media Lab pe drum, pentru a ajuta studenți și copii, în special se exprima algorithmically-- într-un mod mai coerent cu ceea ce am putea numi gândire de calcul. Și este un limbaj util, deoarece foarte repede săptămâna viitoare într-o saptamana, facem trecerea la o mai limba tradițională și arcane numit C, care este pur textuală. Utilizați numai tastatura în pentru a scrie instrucțiuni ca acestea, pe ecran. Dar, chiar dacă ați mai văzut niciodată un limbaj de programare, înainte, în doar uitându-se la acest lucru, fie că este vorba totul criptic, puteți ghici, probabil că probabil, imprimă Hello World. Dar există o mulțime de deasupra capului sintactic acolo. Există, hash ciudat simbol sau hash tag-ul de top în sus. Nu există paranteze unghiulare, unele paranteze, acolade, semi-colon-- există doar atât de mult vizual sintaxă care devine în mod. Vom începe cursul cu Zgârietură, astfel încât pentru a obține trecut toate de cei intelectual distracții neinteresante, și să se concentreze în schimb pe idei. De fapt, aceasta poate fi înainte. Acest lucru, pentru aceasta, săptămână va fi după. Acest lucru, în acest grafic Scratch limba, este modul în care v-ar pune în aplicare aceeași program-- un program care, atunci când executați, pur și simplu spune Bună ziua lume. Și ce e frumos despre Scratch este că este această programare grafică mediu care utilizează piese de puzzle sau blocuri, că doar interblocare împreună dacă are sens logic să facă acest lucru. Si cu Scratch poate dezvolta animații și jocuri interactive și artă, precum și orice număr de lucruri care s-ar putea imagina în propria ta minte, și le pune în aplicare prin simpla glisare și fixare piese de puzzle. Și într-adevăr, vom avea capacitatea să-și exprime unele dintre aceleași idei că am menționat doar un moment Acum, în contextul lui Mike Smith și căutarea lucruri pe un telefon book-- cum ar fi funcții, doar acțiuni, lucruri cum ar fi buclele care fac lucruri din nou și din nou, variabile, care este ceva ce vom introduce, dar este familiar, probabil, de la algebra-- doar un fel de înlocuitor pentru a stoca o anumită valoare pe care s-ar putea au nevoie de expresii booleene later--, în cazul în care cei care nu da sau adevărat întrebări false de dinainte. Condițiile sunt acele furci în cadrul road-- acele ramuri ca să spunem așa. Și apoi există unele crescatorul caracteristici, vom vedea chiar și astăzi, numitele tablouri și fire și evenimente, pe care le vom revedea apoi peste timp în diferite limbi. Dar, Scratch ne permite pentru a explora toate acestea. Deci, aici, în Scratch, acest purpuriu bloc este ceea ce este în mod tipic o funcție va arăta. Această piesă de puzzle violet, care are unele cuvânt cum ar fi spus, care este acțiunea, și apoi s-ar putea avea un argument sau un parameter-- un anumit fel de acest gen de particularizare ceea ce face acel bloc astfel încât nu este pre-determinată de MIT ceea ce spune acest bloc violet. De fapt, veți vedea într-un moment că eu sunt în măsură să tastați cuvinte precum lumi salut, sau salut David, sau salut Zamayla, sau ce vreau eu, în argumentul în acest puzzle piece-- caseta de alb Acolo. Între timp, dacă vreau o buclă, vom a se vedea că există piese de puzzle, care uita-te un pic de portocale ca asta. Și forma lor un fel de sugerează că ceva se întâmplă din nou și din nou într-un ciclu. Deci, dacă am înfășurați un salut bloc mondial spun cu un bloc pentru totdeauna în Scratch, este doar de gând să păstreze spune salut lumea pentru totdeauna, destul de literalmente. În același timp, există un alt tipul de buclă în Scratch că vom see-- o repetare block-- în cazul în care, în cazul în care știe în avans cât de multe ori doriți bucla pentru a executa un număr finit de ori în tine fact-- poate specifica faptul că prin tastarea într-un număr sau chiar conectarea într-o variabilă, cum ar fi x sau y după cum vom vedea. De fapt, variabile cum ar fi i în acest caz, care este un nume comun pentru variabilă întreagă care doar stochează un number-- un număr întreg ar putea fi, pentru a utiliza acest bloc portocaliu aici pentru a setați o variabilă ca am la zero. Iată un exemplu în verde a unui expresie boolean în Scratch. Chiar daca acest lucru arata ca o matematica formulă, inegalitățile matematice ca aceasta într-adevăr sunt expresii booleene. Acest lucru este adevărat sau fals. I este mai mic de 50. Este fie un da sau nu un răspuns sau un răspuns adevărat sau fals. Si noi vom numi în general aceste expresii booleene. Și nu trebuie să fie de 50. Acesta poate fi mai mic de x y, mai mare decât y, egală cu y-- orice număr de alte întrebări ar putea fi întrebat. Acum, la prima vedere, acest lucru ar putea arata dintr-o dată destul de îndrăzneț aici, și este. Dar conceptul înțelept, este destul de familiar de mai înainte. Dacă x este mai mic decât y, decât, să spunem la fel de mult. Altfel daca x este mai mare decât y, atunci spune la fel de mult. Altfel spus x este egal cu y. Așa că avem un exemplu există oa treia scenario-- singura possibility-- treia x este fie mai mare, mai mic sau egal cu. Așa că avem o furculiță cu trei căi în drum. Și observați ce e cool Scratch aici--, s-ar părea, are doar un singur puzzle piesă, în acest caz, în cazul în care blocul altceva. Și totuși, că s-ar părea să vă implice poate au doar o furculiță cu două căi în drum. Puteți merge, la stânga sau la dreapta, dar ce zici de asta al treilea scenariu? Ce se întâmplă dacă x este egal cu y? Nu e mare lucru. Ia-o singură piesă de puzzle, a pus altul in interiorul ei pentru a crea echivalentul semantic de cazul în care, în cazul în care altfel, else-- și acum au furculita cu trei cai în drum. Și, după cum vom observa, piese de puzzle la zero poate fi întins și să crească, așa ca să se ghiftui mai multe lucruri în ele. Tu nu trebuie să se potrivească totul în dimensiunea sa implicită. Acest lucru este ceva ce ne vom a se vedea în curând se numește o matrice. E ca un list-- o cale de stocarea mai multor bucăți de informații într-o variabilă, nu doar un număr. Acestea vom vedea un reprezentant al ceva numit multi-threading. De fapt, toate dvs. Mac-uri și PC-uri în aceste zile suport multi-threading, ceea ce înseamnă că puteți literalmente a face mai multe lucruri la un moment dat. Puteți avea Microsoft Word sus în prim-plan, lucru pe unele eseu. S-ar putea avea un browser în deschiderea de fundal G-mail sau Facebook sau altele asemenea. Calculatorul dumneavoastră poate face mai multe lucruri astăzi, pentru că este multi-threaded, și programele pe care le sunt în special, sunt, de asemenea, multi-thread. Există lucruri numite evenimente ca bine în lumea Scratch, și apoi există o cale prea, pentru a face propriile noastre piese de puzzle personalizat în cazul în care lucrurile nu există de fapt, în avans. Așa că să motiveze acest lucru, după cum urmează. în urmă cu câțiva ani, când am descoperită pentru prima dată la zgârieturi, când am fost de fapt un student la MIT, noi ne-au primit sarcina de a face temele. Si eu implemented-- care, în retrospectivă, a fost o decizie foarte proastă, deoarece este cântecul cel mai enervant din lume pentru a asculta timp de opt ore în timp ce lucrează pe homework-- ta dar ceva am sunat la Oscar Time, care este, probabil, un cântec familiar. CS50s proprii Jordan Hayashi, unul dintre mai mulți membri ai personalului nostru în vârstă, a modernizat-o pentru 2015 și acum 2016, din moment ce înapoi în ziua, Am avut totul merge doar în Oscar coș de gunoi. Acum sprijinim reciclare și compostare. Dar pentru a picta imaginea din ceea ce putem face aici și de a motiva unele dintre exemplele de nivel inferior, am putea obține un alt voluntar să vină doar pe sus și să se joace pentru prima mea temă pentru acasă vreodată? Hai sus. Care e numele tău? HENRY: Henry. DAVID MALAN: Henry, vino sus. Hai sus. Cap de nici un fel, și veți vedea într-un moment, Mă duc să merg mai departe și a lovit pavilion verde în mâna dreaptă sus colt, ceea ce înseamnă că du-te. Pictograma mic semn de oprire va spune stop, și că atunci când porniți și se va opri programul. Încântat de cunoştinţă. In regula. Așa că vom vedea instrucțiunile pe ecran în doar un moment. Si tocmai de acest joc pentru câteva seconds-- încredere în mine, noi nu vom dori să joace tot drumul spre end-- vă va obține un sentiment de ceea ce face programul. Și, mai mult decât să se concentreze doar pe Henry fiind bune sau rele la acest joc, se concentreze și cum a fost pus în aplicare de mine inițial și apoi de Jordan. Cu alte cuvinte, în cazul în care sunt variabilele? Unde sunt buclele? În cazul în care sunt funcțiile? Și vom vedea dacă nu vedem cele de sub capota. Doar faceți clic și trageți coșul de gunoi la coșul corespunzător. [MUZICĂ] In regula. Asta e foarte bine. De ce nu l-am opri acolo. Mulțumesc. Felicitări pentru Henry. Mulțumesc. [APLAUZE] Imaginați-vă că programul de depanare. Dacă există o problemă cu două în song--, dar acest lucru minute Ce se întâmplă aici cu adevărat? La fel de complicat cum s-ar putea încep să par pentru a obține în timp, într-adevăr, mai mult lucrurile au început să cadă, Ce este interesant despre acest tip de example-- și vom vedea câteva others-- este că, dacă uite dincolo de complexitatea sau gradul de complexitate al jocului, există o clădire foarte simplu blocuri care play-- toate acestea, daca le distila celor blocuri de construcție, sunt foarte accesibile și implementabil ei înșiși. De exemplu, este a fost ceva timp, dar eu sunt destul de sigur ce inițial am făcut când ceea ce face acest joc pentru prima dată am fost complet la fel ca tergiversat. Nu m-am concentra deloc la logica sau piesele puzzle-ului, M-am concentrat asupra grafica si constatare prima stradă și coșul de gunoi și toate astea. Dar, cei care au fost solicitate ingrediente la început. Și odată ce am terminat și procrastinating care stabilește cadrul general, Am decis, lasă-mă să fac un singur bucată de gunoi cad din cer. Și vom vedea Scratch sprijină lucruri numite de caractere sprites--, care pot au costume diferite, pe atât ei arata diferit. Și, așa că am pus un coș de gunoi Costumul pe o astfel de sprite. Si eu doar nevoie să cadă din cer. Și așa se pare, zgârieturi, la fel ca cele mai multe limbaje de programare, suportă numere aleatoare sau numere aleatoare pseudocod punct de vedere tehnic, astfel încât prin tragere și dropping anumite piese de puzzle, Am fost în stare să aibă coșul de gunoi provin de la stânga la început. Și apoi data viitoare a căzut, de la dreapta și apoi de la mijloc. Și, tot jocul a fost doar au gunoi care se încadrează din cer. Nu ai putea indica la ea sau să faceți clic pe ea. Nu ai putut deschide coș de gunoi. Nu a putut face nimic. Dar a fost un pas copil spre viziunea mea finală. Și după aceea, eu de fapt pus în aplicare un fel de detectare, astfel încât, dacă ați făcut clic și trageți pe bucata de gunoi peste coșul de gunoi, Oscar capacul s-ar deschide și închide. Nimic nu s-ar întâmpla la coșul de gunoi, dar cel puțin capacul s-ar deschide și închide. Așa că verificați apoi, pasul doi din doi. Și acest lucru este ceea ce se întâmplă să fie cheie în ambele problemă set de zero și în programarea în general, este de să ia aceste măsuri foarte deliberate pentru copii. Pentru că nu numai că vă permite se simt sincer realizat mult mai mult quickly-- că este vorba cel mai rău lucru din lume pentru a încerca să pună în aplicare toate Oscar Time, apoi ore mai târziu, a lovit steagul verde, și nimic nu funcționează cum era de așteptat pentru că în cazul în care tu faci chiar încep să depanare sau depanarea acestui program? Este pur și simplu copleșitoare. Și îmbrățișând astfel încât într-adevăr această idee de a lua din nou pași steps-- pentru copii și again-- construirea ceva care este, în cele din urmă, într-adevăr impresionant și complex, dar la început, nu este aproape la fel de mult acest lucru. De fapt, hai să facem acest lucru. Lasă-mă să merg mai departe în sine si-- răzuibile există pe web la Scratch.MIT.edu, și vi se va spune ca mult din nou în problemă set zero, caietul de sarcini care este deja pe site-ul CS50 lui. Dar aceasta este ceea ce este în sine Scratch. Și există într-adevăr doar trei domenii principale. In partea de sus din stânga acolo este așa-numita etapă. Acest lucru este zero. Costumul implicit este o pisica. Și aceasta este lumea dreptunghiulară pe care le puteți move-- în sus, în jos, la stânga, drept și alte lucruri. În mijloc aici sunt categoriile noastre sau paleti noastre de piese de puzzle, și culori diferite înseamnă lucruri diferite. Și dacă te traistă în jurul valorii, veți vedea lucruri cum ar fi bucle și condiții și variabile și alte ingrediente. Și apoi aici este zona script-uri. Acest lucru este în cazul în care eu pot drag and drop aceste piese de puzzle pentru a face lucruri. Așa că hai să facem un astfel de lucru. Lasă-mă să merg mai departe si-- și eu știu unde este. Așa că voi să faceți clic imediat pe în cazul în care știu că lucrurile sunt gata să fie, dar indicând și făcând clic și în jurul poking sunt inevitabile. Deci, atunci când steagul verde a făcut clic, Ce vreau să fac? Voi face asta. Am de gând să trageți acest puzzle violet bucată, spun salut timp de două secunde, și lasă-mă mări. Si voi schimba acest lucru să fie ceea ce vreau să be-- Salut lume timp de două secunde, este bine. Acum, am de gând să faceți clic pe pavilion verde, sau dacă eu chiar vreau, Pot să-l pe ecran complet și apoi vin înapoi. Acesta va păstra doar totul într-o singură fereastră. Green World salut flag--. In regula. Nu tot ceea ce interesant. Așa că lasă-mă să merg mai departe și fac acest lucru. Lasă-mă să încerc alta. Atunci când steagul verde clicked-- lui lasa a face ceva de genul un sunet. Și observați că din caseta gratuit veți obține un sunet pisică, așa cum este sprite implicit. Deci, acum lasă-mă să merg mai departe și a lovit steagul verde acum. [Meowing] Aw. Asta e adorabil. Sunt de programare. Deci, ce am făcut? Acesta este echivalentul unui program. Este, evident, foarte simplu. Nu a fost într-adevăr să ia tot atât de mult efort și MIT a făcut cea mai mare parte munca, dar am numit-o funcție. Am folosit o funcție. Am făcut o acțiune, folosind doar că unul mov piesă de puzzle. Ei bine, dacă vreau să fac trei miauna într-un rând? Lasă-mă să merg mai departe și fac doi și trei. Și observați că, atunci când mutați în apropiere o piesă de puzzle, apare o linie pic de culoare albă un fel de magnetic, și se va fixa împreună când eliberați. Hai să vedem ce se întâmplă aici. [Meowing] E o eroare. Am auzit doar un singur miau. De ce s-ar putea să fie asta? Da? Da. Noi nu-l aud într-adevăr, dar asta e bună intuiție. Toți se joacă în același timp. De ce? Ei bine, computerul este doar merge să facă ceea ce îi spun să facă. Așa că, dacă spui tu, un sunet de redare, reda sunet, reda un sunet, dar nu-ți spun să joace până la ai terminat, juca până când ai terminat, aceasta va sufla prin programul foarte repede și de a face numai ceea ce îi spun să facă. Așa că am nevoie de fapt să se stabilească acest lucru în câteva moduri. Aș putea face doar acest lucru, a scăpa de asta. Lasă-mă să încercați acest alt puzzle piece-- juca miau sunet până la făcut, și apoi trageți-trei acestea și faceți clic pe Redare. [Meowing] Nu e cu adevărat very-- mulțumesc Tu-- foarte natural. Deci, de ce nu lasa Eu-- mă du-te pentru a controla aici. Frumos. Așteptați o secundă, iar acum lasă-mă să mă întorc la sunete și sunet de redare până la făcut, și apoi lasă-mă să aștepte o secundă. Și apoi lasă-mă să merg și să obțină unul mai mult sunet, și aici vom merge. [Meowing] Un pic mai natural, dar acest lucru nu este foarte eficient. La fel ca am fost obtinerea plictisit, toate să fie l pe scurt, făcând clic și înapoi și duplicarea într-adevăr work-- mea destul de mult copierea și lipirea. Într-adevăr, dacă am control a făcut clic dreapta sau a dat clic, Aș putea fi pur și simplu copiate și lipite. Ce ar fi mai bine construi de a utiliza? Ce idee de mai înainte? Da, deci o buclă. Și, de fapt, dacă ne-am înțepat în jurul valorii de, am putea găsi exact asta. Lasă-mă să merg la evenimente sau mai degrabă de control. Așa că repeat-- eu nu fac doresc ca acesta să fie de 10 ori. Asta se întâmplă pentru a obține enervant rapid. Dar, voi repeta de trei ori. Lasă-mă să mă întorc la sunet și reda sunetul până când se face. Lasă-mă să mă întorc la Control și doar așteptați o secundă. Și observați, s-ar putea cred că nu se potrivește, dar, din nou, dacă magnetic l-ați lăsa anticipate în loc, aceasta va crește pentru a umple. Ce-o joacă acum? [Meowing] O.K. Frumos. Și acest lucru este ceea ce s-ar fi numit un program care este, de asemenea, corect. Ea de trei ori în mod echitabil meowed în mod natural, dar este mai bine proiectat. Sunt folosind mai puțin de concediere. N-am copia și lipi ceva. Am folosit doar o idee mai bună. Acum, acest lucru nu este încă tot interesant cu Scratch nu face orice. Așa că hai să facem altceva în schimb. Hai să facem ceva pentru totdeauna. Si tu ce știi? Propunerea pare interesant. Hai să-l mute 10 pași și a lovit joacă acum. O.K. Ei bine, putem trage un fel de l înapoi, și el este încă rulează pentru că el face asta pentru totdeauna. Deci bucla face ceea ce spune să facă, dar acest lucru nu este tot ceea ce interesant. Sa o facem. Permiteți-mi să adaug un bloc de control, și de a folosi un singur dintre aceste condiții pentru prima dată. Deci, se va deplasa 10 steps-- 10 puncte, 10 pixeli pe screen-- atunci va pune această întrebare. Dacă ceva este adevărat, atunci facem ceva în interiorul acestui bloc. Deci, se pare că are un senzor de ansamblu buchet de expressions-- boolean întrebări ale □ da □ nu sau adevărat fals form-- lasă-mă să fac asta. În cazul în care touching-- și apoi există acest mic drop-jos meniu. Pot să-l parameterize. În cazul în care atinge edge-- lui lasa face ceva de genul asta. Așa că, dacă atinge edge-- lasă-mă să mă întorc la mișcare. Și de ce nu ne-am rândul său, în jurul valorii de 180 de grade? In regula. Așa că pentru totdeauna, mutați 10 pași. Dacă sunteți de a atinge margine, rândul său, la 180 de grade. Și asta nu e sfârșitul programului pentru că ești într-un bloc pentru totdeauna, așa că va merge din nou și din nou și din nou și din nou. Așa că hai să vedem ce se întâmplă. O.K. Un pic de trăsură pentru două persoane, dar un fel de rece. Și noi putem adăuga la unele lucruri stupide această care nu sunt tot ceea ce intelectual interesant. Dar, dacă am lovit acest mic microfon button-- aoleu. Lasă-mă să curețe asta. Lasă-mă să consolideze acest lucru ca ei s-ar spune la televizor. Curăță, Salvare, acum du-te până la script-uri. Și acum, lasă-mă să merg să sune. Permiteți-mi să dau un nume. O să sun acest aoleu. Iar acum joaca aoleu sunet. Remarcati apare în mic meniu vertical. Sa vedem. [Ouch] [RAZAND] Dar putem schimba t lui pe zbor. Putem fi de două ori mai enervant. [Ouch] Sau, dacă o vom face ca și 1.000 de pași la o time-- O.K. Așa că vom părăsi acel unul singur. Deci, din nou, construirea I blocks-- a început cu ceva foarte simplu, și apoi am adăugat o caracteristică, a adăugat o caracteristică, a adăugat o funcție. Si eu nu mai trebuie să vă faceți griji cu privire la modul în care prima dintre aceste caracteristici a fost pus în aplicare după cum am continua să strat lucruri pe partea de sus. Așa că, de fapt, lasă-mă să fac încă o aici. Lasă-mă să merg mai departe și să deschidă un fișier care Am adus în avans, numit de oaie. Deci are un ușor diferit caracter care arata ca acest lucru. Și lasă-mă să văd dacă nu pot face ceva folosind un contor în acest case-- o variabilă așa-numitele. Mă duc să merg mai departe și sub Events-- lasă-mă să-un steag verde a făcut clic. Atunci lasă-mă să merg la date, pe care știu de la doar joc în jurul valorii de mai înainte, este în cazul în care variabilele sunt. Si voi merge mai departe și trageți acest lucru. Deci, o variabilă numită contor și Am de gând să-l inițializa la zero. Pot să-l numesc anything-- x sau y sau z--, dar în programare, de asteptare ceva într-un semantically mod util, cum ar fi contra, care descrie ceea ce este, este un mult mai ușor de citit codul mai târziu. Lasă-mă să merg mai departe și a obține un bloc pentru totdeauna aici. Și lasă-mă să merg la aspectul pagina și de a face un bloc Say. Dar ceea ce e cool despre variabile este I nu trebuie să tastați doar în ceva cum ar fi Bună ziua lume, pe care le-am deja făcut, pot merge în schimb de date și trageți variabila mea, și chiar Nu deși forma nu destul arata ca aceasta ar trebui să se potrivească, va crește pentru a umple. Și eu voi spune doar contorul pentru un singur spoiler-- second-- el va conta. O să-l spunem pentru o secundă. Apoi am de gând să merg și au să-l aștepte pentru o secundă, așa că nu contează prea repede. Și apoi în cele din urmă, schimbați contra prin Unu cu alte cuvinte, incrementa contorul de către unul valoare suplimentară și de a face acest lucru pentru totdeauna. Asa ca oile prea, ca un programator, contează de la 0. Și, dacă așteptăm suficient de mult timp, el va face acest lucru pentru totdeauna. Dar asta nu e chiar adevărat, pentru că De fapt, așa cum vom descoperi în prima săptămână, numere întregi și mai multe calculatoare în general, au doar un punct de vedere tehnic finite-- bine, mai degrabă calculatoare, atunci când ele reprezintă numere întregi, au doar un număr finit de biți. Acele becuri acolo poate conta doar atât de mare înainte de a fi de becuri. Și un calculator de asemenea, are doar memorie atât de mult, are atât de multe tranzistori, astfel că poate conta doar atât de mare. Deci, se dovedește că oile, Cred că, pot conta la 2 miliarde sau ceva destul de mare. Așa că noi nu vom așteptați pentru ca acest lucru să se întâmple. Dar, în cele din urmă unele bug se va întâmpla care poate avea o lume foarte reală ramificații. Dar, dincolo de oi, care doar introduce o variabilă. Să mergem mai departe și să se deschidă ceva ce am făcut în avans numit aici Pet Cat-- Pet Cat aici. Și observați aici este câteva blocuri, dar atunci când steagul verde a făcut clic, fac pentru totdeauna următoarele. Dacă sunteți de a atinge mouse-ul pointer--, astfel încât cursorul de pe ecran, play arrow-- miau sunet și apoi așteptați două secunde. Și chiar face asta pentru totdeauna. Doar așteaptă în mod constant pentru a vedea dacă pointer-- în cazul în care pisica atinge indicatorul. Așa că am lovit joc. Nu se întâmplă nimic. Dar, așa cum am muta cursorul peste pisica, [Meowing] Și, dacă am muta departe, nu petting pisica mai. Așa că unele logica condiționată imbricate în interiorul unei bucle. Ce zici de acest exemplu, în mod deliberat numita Nu Pet Cat? Ce-i asta o să fac? [Meowing] De ce ar trebui să nu animalele de companie pisica? [Meowing] O.K. Deci, acesta este un exemplu de dacă altcineva. Este un punct de decizie și pentru că stă în bucla, ambele sunt obtinerea verificate. E adevărat? E adevărat? E adevărat? E adevărat? Și în cele din urmă, unul dintre cei care urmează să se aplice și astfel încât să fie auziți miau sau urletul leului în acest caz. Ei bine, hai să facem unul puțin mai fantezie pe care am făcut în avans too-- fire. Deci, un fir este doar unul lucru pe care un calculator poate face. Deci, un program multi-thread este un program de care pot face mai multe lucruri în același timp. Și toate aceste exemple până în prezent au avut doar un singur script, astfel încât să speak-- un program de genul asta aici. Dar, observați acest program are două sprite, două caractere. Una dintre ele este o pasăre. Una dintre ele este o pisică. Și observați când fac clic pe acestea în jos stânga, fiecare dintre ele au propriile lor scripturi sau programe asociate acestora. Și ambele celor programe, aviz, începe cu clicked-- pavilion verde atunci când să ne uităm la cat-- când steagul verde a făcut clic. Și așa, într-adevăr, atunci când am lovit juca acum, două lucruri se va întâmpla la o dată. Pisica și pasărea sunt ambele O să funcționeze simultan pentru a crea acest efect. Si s-ar putea imagina ce se întâmplă. E o buclă și pasărea iar pisica sunt într-o buclă. Pasărea este la fel ca și viguros Am fost înainte când am spus aoleu. Dar pisica are în mod clar un avantaj. Există un alt bloc de detecție care arată pisica în mod deliberat la pasărea în acest caz aici. Așa că am putea să tachineze în afară, prin căutarea prin aceste blocuri, ceea ce se întâmplă. Dar ingredientul cheie aici este una. Pasărea, astfel încât acest joc nu este complet boring-- sau acest animation-- pornește de la o direcție aleatoare. Și computerul este cules un număr cuprins între 90 și 180 în esență, astfel încât este un ușor diferite de animație de fiecare dată. Și apoi observați aici, în cazul în care pisica atinge pasărea, atunci juca leul patru sound-- hohote. Dar, între timp în păsării paleta, avem acest lucru. Pentru totdeauna, în cazul în care nu atinge pisica, doar păstrați în mișcare trei pași. Și apoi aici este o altă piesă de puzzle. Dacă vă aflați pe margine, saritura. Așa că pasărea este doar un fel de minding propria afacere, doar care zboară în jurul și viguros, și este într-adevăr pisica care a avut logica condiționată pentru a determina dacă ar fi prins pasărea. In regula. Așa că hai să facem încă o aici, aceasta fiind numită Hi Hi Hi. Si asta aici doar ca nu acest lucru într-o buclă pentru totdeauna. Dar, notice-- cum ne oprim acest program foarte enervant? A lovit bara de spațiu. Pentru că dacă eu fac asta, program-- mâna stângă observați că este în mod constant listening-- este presa spațiu-cheie. Dacă bara de spațiu presat, și dacă da, ce face? Face o tehnica foarte frecvente. Aceasta stabilește o variabilă egală cu o anumită valoare. Dar este acea valoare comutã. [? Așa că aspectul?] bazat pe I shape-- au o variabilă pe care am a scris în prealabil numit Suprimată, care spune pur și simplu da sau nu. Este sunetul dezactivat sau nu? Adevărat sau fals? Și observați, eu spun astea-- dacă mut este zero, apoi se schimba la unul, altfel setați mut-l la zero. Deci Flip doar valoarea de la zero la unu. Aș putea avea done-- schimba la două la trei si de trei din două sau patru la aproximativ cinci și patru la șase. Dar nu contează ce numere pe care le folosesc, atâta timp cât am păstra schimbarea este opusul. Si cel mai orice programator ar fi pur și simplu alege zero și fals și adevărat Unu, off și on-- pentru a reprezenta acest lucru. Și acest lucru este încă în desfășurare. Dacă aș fi lovit din nou bara de spațiu [SEAL SUNĂ] Programul este încă în desfășurare. Pentru că există acest alt scenariu care spune, nu pentru totdeauna următoarele. Dacă variabila este egal cu sunetul dezactivat zero-- așa că, dacă nu sunteți dezactivat sunetul este logic-- dacă este fals sau nu, apoi reda sunetul, pentru că nu ești dezactivat. Ar trebui să joace sunetul și apoi cred că hi hi hi timp de două secunde și apoi așteptați, și fă-o din nou și din nou și din nou. Și, în acest fel avem o cale pentru oameni sa-- pentru programe pentru a interacționa. Și ei nu trebuie să să fie la fel de datat ca și altele. De fapt, poking around-- nici un joc de cuvinte intended-- cineva a petrecut o mare cantitate de timp pe internet de punere în aplicare PokemonGo în Scratch. Este chiar și tu geolocates în Cambridge sau Allston aici. Așa că, dacă doriți să vedeți prea ceea ce oamenii se poate face este astea-- meniu foarte elegant. Faceți clic pe aici. Acest lucru este cu mine tastele săgeată mele acum. Mă duc să merg după asta. Clic. Și acum faceți clic pe PokeBall. Vreau să spun, cred că ești ar trebui să faceți clic pe PokeBall. In regula. Așa că am făcut asta. Pot să merg aici. Iar această persoană a implementat unele mai multe PokeBalls peste aici-- trei PokeBalls. Vom posta un link către această online, astfel încât să puteți juca. Dar observați există doar unele blocuri de construcție de bază. Se pare mult mai arătos și este. Acest lucru este impresionant și mai mult decât ne-ar tipic se așteaptă, cu siguranță pentru problema setată la zero. Nu am nici o idee despre cât de mult timp această persoană a petrecut on-line. Dar totul e doar o buclă. E un joc de sunet. E un fel de buclă pentru a asculta dacă eu sunt lovind pe săgeata în sus sau în jos săgeată sau la stânga și la dreapta, și apoi, dacă este așa, se mișcă acesta un numar de pixeli. Și apoi, dacă fac clic pe un alt spiriduș, există un fel de condiție, dacă există. Da, acest lucru devine prea intens. Mergem să se oprească. Este toate aceste blocuri de construcție de bază. Nu există alte ingrediente alte decât cele pe care le-am uitat la deja. Și totuși, aici, lasă-mă să fac un singur set final de exemple care pictează o imagine prea din ceea ce se poate face aici. Iata un program foarte simplu doar face astea-- tuse, tuse, tuse. Și se bazează doar pe ceea ce ne-am uitat la până acum, în cazul în care este evident oportunitate de îmbunătățire. Acest program este corect. De trei ori ea tușește, care este ceea ce am intenționat. Dar este prost pus în aplicare. Este prost proiectat. De ce? Da. Nu este o buclă. Și nu e atât de mult că nu este o buclă, este că există o mulțime de concediere. Acolo este copiat și cod lipite, ca să spunem așa. Și soluția probabil este într-adevăr, o buclă. Așa că lasă-mă să merg mai departe și îmbunătățească acest lucru. Si voi trage peste astea aici. Lasă-mă să merg mai departe și a obține o repetare bloc, schimba acest lucru la trei. Mă duc să arunc unele dintre aceste blocuri. Și veți observa că e destul de intuitiv. Glisați și drop și lucruri apar și dispar în cele din urmă. Și eu pot trage doar asta aici, și acum am o versiune mai curată încă. Dar știi ce? Nu există această oportunitate acum pentru abstraction-- pentru a începe să definească noul vocabular MIT nu a anticipat. Acolo așteptăm și repetați și pentru totdeauna și în cazul în care, dar ce se întâmplă dacă doresc să introducă tuse cuvânt ca un bloc? Ce se întâmplă dacă vreau o piesă de puzzle al cărui scop în viață este să tuse? Ei bine, să ne uităm la această versiune aici, pe care am făcut după cum urmează. Magic, am creat acest puzzle piesă aici, care Scratch vă permite să faceți. Și, într-adevăr, C și Python și JavaScript sunt va permite să faci acest lucru, de asemenea. Aveți posibilitatea să creați personalizat piese pe care le numiti ceea ce vrei. In acest caz, tusea se simte ca o definiție rezonabilă. Și apoi cu aceste piese în jos aici se poate defini ce înseamnă. Am târât și a scăzut de la această paletă aici-- mai mult blocks-- acest mare violet bloc, în cazul în care am scris în cazul tusei ca numele noii mele piese de puzzle. Și apoi eu spun orice moment un utilizator numește această nouă piesă de puzzle tuse, face un cuvânt de spus și o așteptați. Și așa până aici, în blocul meu se repetă, Pot să tuse doar de trei ori. Și aș argumenta, în special dacă acum vă ascundeți acest detaliu. Cui îi pasă cum este pus în aplicare tuse? Tot ce-mi pasă ca programator pe care le pot tuse. Nu-mi pasă cum spun este pus în aplicare. Am grijă ca pisica poate spune ceva. Nu pot abstract departe că detaliile și se concentreze doar pe ceea ce este pe ecran aici. Dar eu pot lua acest lucru cu un pas mai departe. Observați că aici, am implementat bucla de trei ori. Dar dacă în loc să iau această versiune? Și dacă în schimb în această versiune aici, Eu doar schimba piesa de puzzle meu pentru a lua un argument și de intrare în sine? Iar acea intrare poate fi un număr similar de trei. Deci acum, dacă eu scriu un program de și vreau pisica la tuse, Pot să spun de fapt puzzle piesă de câte ori la tuse, pentru că în partea de jos aici, crescatorul versiune a acestor piese de puzzle personalizat îmi permite să se precizeze că tuse de fapt, ia o input-- ia un argument de genul asta. Si tu ce știi? Poate îmi dau seama, așteptați un minut. Tusea este same-- este fundamental aceeași idee ca și strănutul. Este doar un alt cuvânt de pe ecran. Nu pot abstractiza în continuare și să pună în aplicare această versiune finală a unui tuse, care la prima vedere este mult mai complex în căutarea. Dar observați ce am făcut. Acum am generalized-- genericized really-- această piesă de puzzle să fie numit spun cuvânt de n ori. Și acum am două noi piese de puzzle aici jos definesc tuse de n ori. Și ce face funcția de tuse? Ce face piesa mea de puzzle personalizat? Doar numește blocul să zicem, care trece în cuvântul vreau să spun, care trece în numărul de ori vreau să spun. Pentru că acum pot să pună în aplicare trage pe nas spunând pur și simplu achoo, în acest caz, unele de mai multe ori. Și, așa că eu sunt stratificarea și stratificarea. Și din nou, cheia aici nu este modul în care l-am pus în aplicare, dar faptul că, dacă eu doar literalmente muta acestea de pe ecran, uite cât de simplu în cazul în care nu destul de programul meu arata acum. Pentru că ea face ce spune, am abstras departe ceea ce se află în interiorul acea cutie neagră. se întâmplă să fie o cutie mov aici, dar m-am împiedicat departe ce e înăuntru pentru că nu-mi pasă cum funcționează. doar îmi pasă acum că funcționează. Și într-adevăr, în problema set de zero, acest lucru este exact un fel de stratificarea idei pe care le veți au posibilitatea de a explora. Este exact oportunitatea de a se aplice tehnici de rezolvare a problemelor, la ceea ce este, probabil, o mediu necunoscut. Și, dacă nu ați programat înainte sau programată, veți găsi că există un pic ceva în acest mediu pentru toată lumea. Si cu problema set una în timp de o săptămână, vom fi transitioned la focalizare pe un limbaj de nivel superior numit C-- sau mai degrabă o mai mică limbaj de nivel numit C-- asta e chiar mai mult puternic, chiar dacă este un pic mai criptic la prima vedere. Si vei realiza pe TL astăzi: DR, că această problemă are un set mai scurt fereastra de timp decât cele viitoare, pur și simplu pentru că ar trebui să-l găsească în mod echitabil accesibil. Și să nu vă faceți griji dacă adăugați clasa târziu. Ne vom aborda asta înainte de mult timp. Și, înainte de a se suspenda pentru tort, hai termina cu doar un aspect de două minute la ceea ce vă așteaptă aici, în CS50. [MUZICĂ] In regula. Asta e pentru CS50. Ne vedem în curând. Calup este acum servită. [MUZICĂ] VORBITOR 17: Ai auzit a unui sabatic, Șef? VORBITOR 18: Poate că există mai mult sub capota.