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