[VIDEO PREDVAJANJE] [CAR DOOR roleta] [CAR zagonom motorja] [Predvaja glasba] -Moving Pravica skupaj v iskanju dobrih časih in dobre novice. Z dobrimi prijatelji, ne moreš izgubiti. -To Lahko postane navada. -Opportunity Udarci Poglejmo samo dosegla ven in jo zgrabi. Ja! -Together Jo bomo nab. -We'll Hitch hike, avtobusom ali rumeno je kabina. -Dammit. -We're Premika desno skupaj. -Footloose In fancy brezplačno. -Getting Je pol zabave. Pridite jo delite z mano. -We're Premika desno skupaj. -We're Dogaja, da delijo breme. -Ne Potrebujem karto do dobili ta show na cesti. Hej Fozzy, želim si, da zavijete levo če prideš do razpotja. -Da, gospod. Zavijte levo na razcepu ceste. Zavijemo levo. -Ne Verjamem, da je. -Cruising Pravico skupaj smo ugotovili, lučke na avtocesti. In svojo pot ali na svoj način. Torej zaupam mojo navigacijo. -Movie Zvezde z neokusen avtomobilov in življenje z vrha navzdol. -We're Napad velike hribe. Ja, nevihta je prav. Je treba sneži? Ne, jaz ne mislim tako. -Moving Desno skupaj. -Footloose In fancy brezplačno. -You're Pripravljeno za veliko časa. To -je pripravljen za mene? -Moving Desno skupaj. Premikanje desno skupaj. Premikanje desno skupaj. Premikanje desno skupaj. -Mislim, Da boste bolje ustaviš. -Da, gospod. [END PREDVAJANJE] [Aplavz] DAVID J. Malan: To je CS50. In to je konec tedna 0, vendar začetek čudovitega prijateljstva. Mi smo tako navdušeni, da so tukaj na univerzi Yale za zelo prvič z našimi prijatelj Scaz in Jason in Andy. Vse 40 CS50 je TF-ih in CA je tukaj na univerzi Yale. In vse vas. In v resnici, je verjetno čas to-- [Aplavz] Torej, čeprav je večina predavanj bo dejansko v Cambridgeu v letošnjem letu, dejstvo pa je, da je po svoji zasnovi in zelo namerno v CS50, Mislim da smo bliža točko tehnološko in pedagoško, kjer je lahko boljša izobrazbena izkušnje, da sodelujejo z nekaterimi materialne spletu tečaja je. Dejansko je reality-- in če menim to philosophically-- je, da predavanja niso posebej učinkovito sredstvo za zagotavljanje precej zapleteno informacij. Zagotovo več kot eno uro plus dolgi razponi časa. In res vsak nekaj minutes-- Sem se spomnim v college-- vam cono ven za trenutek, ste zamudili nekaj kompleksno temo, in ste šli precej v naslednjih 45 minutah. In realnost je, da, ali ste tukaj v New Haven ali Cambridgeu ali tistega, preprostost ob sposobnost, da se ustavite in hitro naprej, previjanje, hiperpovezave do povezanih viri, iskanje Celotno besedilo prepisi in podobno, je priložnost, da Upam si reči, za naše spletne študente tudi izven New Haven, jim nudi priložnost res dojeti konceptualno gradivo, ki smo pri predavanjih uvesti vse bolje. Ampak v končni fazi v CS50, je izkušnje učenčevo je označen tako, toliko bolj s problemskih sklopov predmeta je, ali tedenskega programiranja projektov, odseki seveda je s poučevanjem vodil fantje so nočne uradnih ur, ki jih pod vodstvom pomočnikov tečaj in poučevanje fantje, in res kot prireditve, kot CS50 Puzzle Dan, CS50 je Hack-a-thon je CS50 Sejem, tedenska kosila, in še veliko več. In tako, ali ste tukaj v New Haven, ali tuning v od daleč, danes v Cambridgeu, in vas bomo kmalu spet vidimo, dejstvo pa je, da je to ena in ista razred. In mi smo tako veseli, da tu vse skupaj danes. In tako na koncu semestra, ali tu ali daleč, dobro upajmo, da nosite ponosno, veselo, in morda z malo reliefa, majica, ki priča da vas je upošteval CS50. Torej, kje smo zapustili v sredo? Vzeli smo si na računalniška razmišljanje. In to je v smeri, kar smo destilirali računalništvo reče, vsaj za zdaj. Ampak mi je malo nadaljnji destilaciji vsaj tri komponente elementi. Vhodi, kaj je Problem smo poskušali rešiti? Izhodi, kaj je odgovoriti upamo, da bomo dobili? In zastopanje tam od. In ne bomo se zadrževala ko na binarnem ali celo ASCII, in podobno toliko, vendar precej samoumevno, da bomo lahko predstavljajo te informacije, ker so veliko bolj zanimivih delov od teh problemov niso le vhodi in izhodi, vendar so algoritmi da gredo v reševanje teh problemov. In morda spomnite iz drugi dan, ki smo je precej tradicionalna Koncept je videti nekoga V dokaj velikem imeniku ali bolj splošno digitalno teh dneh, samo zelo velik nabor podatkov. Res velik seznam stikov, s veliko imen po abecedi razporejene. In smo ugotovili, da je, medtem ko sem mogoče približati ta problem preprosto z linearno approach-- stran za stranjo, ali celo dve je na time-- smo ugotovili, da je bolj intuitiven algorithm-- nekako delitve in osvajanju problem znova in znova, in again-- ga prepolovitev s seboj Tokrat nam je dal to zeleno rezultat. In to je toliko laskati ker predlaga da tudi kot ta problem dobi večji in večji, kot je to primer v teh dneh s podatki kompleti in reality-- Facebook in Google rezultati iskanja in like-- počne naš algoritem opravljajo enako učinkovito s temi večjimi piki kot je to storila tudi pri manjših ugrizov. Zdaj se postavlja vprašanje, kaj Lahko smo dejansko rešili podobno s tovrstno intuicijo? Takšna delitev in osvajanju? No, lahko naredimo nekaj kot je ta danes tukaj. Mi bi lahko prisotnost. Mogoče kot 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- ne bo vse, da bo učinkovita. Torej, počakajte, osnovni šoli. 2, 4, 6, 8, 10, 12, 14, 16, 18 in tako naprej. Ampak lahko naredimo malo bolje? Prepričan sem, da ne morem to narediti sam. Torej, če boste humor nas za samo Trenutek, smo pripeljali z nami algoritem, ki je pravkar dobil tri korake, vendar pa require-- če vas ne mind-- vse nas vstane, če bi. Torej, z vsemi nami stoji, korak eden od tem algoritmu je naslednji. Stand up in dodelite sami številka 1. Tako da na tej točki v času, dobesedno vsi v tej sobi upajmo, da je razmišljanje, da zase, Vendar nerodno, število 1. Sedaj korak dva tega algoritma bo vključevalo naslednje. Dvostopenjski, par off z nekom stoji, dodajte vaše številke skupaj, in sprejme vsoto kot svojo novo številko. Preverjanje Quick sanity. Koliko je vsakdo razmišljal zdaj? Torej 2, razen morda za eno, nerodno, osamljena oseba. Če imamo liho število ljudi v sobi. Torej ena oseba lahko še vedno številka 1, da je v redu. Ampak korak tri tukaj, ena od morate usesti. Druga bi morala iti nazaj v korak dva, in ponavljam, če bi. Torej, če še vedno stoji, morate biti med tistimi, ki gredo nazaj na drugi korak. Nadaljuj. Nekaj ​​ljudi še vedno stoji. Torej, če še vedno stoji, seznanite se z nekom. Vredu, zmanjševanje navzdol. Nekaj ​​ljudi še vedno stoji. Bom pomagal, če bo to potrebno. Zapomni ključno takeaway tukaj, je, kako veliko hitreje, to je od mene štetje. Torej, poglejmo. Jaz lahko pomagam. Torej, kaj več so Še vedno razmišljate? OBČINSTVO: Jaz sem pri 44. DAVID J. Malan: 44, tako da greš naprej in se usedem. Kaj več si v mislih? OBČINSTVO: 74. DAVID J. Malan: 74. Vse je v redu, pojdi in sedi. Kdo je še vedno stoji? 86. In je kdo drug še vedno stoji? Katero številko? Slišal sem 67. In potem na vrhu? 32. Kdorkoli drug, še vedno stoji in razmišljal o številnih? Oh, hi. Žal mi je. Takoj bom nazaj. 42. Še kdo drug? OBČINSTVO: 47. DAVID J. Malan: 47. Je še kdo še vedno stoji Kdo še ni bilo prešteti? Torej končno število oseb v sobi ki ima 497 sedežev is-- od katerih so vsi so filled-- je 390. Torej, to je super. Kmalu bomo razpravljali o pojmu za napake v računalniškem programu. Vendar bomo prišli nazaj, da je pred dolgo. Ampak v teoriji, kaj bi lahko se je zgodilo šele zdaj? Torej, čeprav je bilo v treh velikih korakov do tega algoritma, vsak od teh je bila le vrsta enega velikega delovanja. In tam je bil ta cikličnost z njo s tem, da če ste bili še vedno stoji, vas bo ohranil iz treh korak za dva, Tretji korak na dva, korak tri na dva. Toda kaj hranijo dogaja na vsaki ponovitvi? Vsak cikel te zanke? Kaj se je dogajalo drugje v prostoru? Ne samo, da je ista stvar, ampak kaj se je dogajalo do polovice vas? Sedel. In tako je v laži ta vpogled, podobno kot na primer telefonskega imenika, s tem, da če se polovica od vas sedel vsakič, problem se začenja z morda 400 ljudi, nato pa do 200 ljudi, od 100 ljudi, nato 50 ljudi, in tako naprej. In tako smo whittle določa Teorija na samo eno osebo, razmišljanje celotne vrednosti vseh. Zdaj resničnost, nekatere socialne dinamike, in nekateri aritmetične napake lahko prispevajo k temu končnemu bug. Toda v teoriji, medtem ko I je še vedno štejemo stran, ob nekaj deset koraki, ali sto korakov da sami štetje, štetje Polna soba 500 ali tako ljudi bi bilo treba sprejeti veliko manj korakov, ker lahko razdeli le 500 in 1/2 tolikokrat. In zato tako kot s telefonom Rezervirajte primer drugi dan, pa imamo nekaj logaritemsko tako rekoč, pri čemer, če smo bili vsi delujejo v sozvočju, in ignorirajo adicijske napake, bi mi so dosegli točno da nekako čas teče? Zdaj pa, da je pošteno, vrsta goljufal, v da sem vzvodom drug vir. Ker je to samo ena od mene, Jaz vzvodom stotine vas. Ampak, da bi lahko rekel, da je Primer paralelno procesiranje, ali stanje umetnosti zelo v modi kjer računalniki v teh dneh imajo več procesorjev ali več tehnično, bolj več jedra, in lahko resnično naredite multipla stvari naenkrat, podobno kot tebi vsi delamo tam, vzporedno. Vendar pa opozarjajo, da tisto, kar smo storil tudi v sredo smo poskušali ujeti to intuicijo in ga formalizirati v kodi. Nekaj ​​takega kot psevdo-kodo. In v resnici, in upam, da boste odpusti, to je kot 80 stopinj v tukaj. Tako da bom, da to off za samo malo. Kaj Mislil sem, da bi naredil, je prehod Sedaj do uporabne pri čemer smo spet vključijo občinstvo, ampak napisati program v angleščini podobno sintakso, s katerimi bi rešili ta problem tukaj. [VIDEO PREDVAJANJE] -To Arašidovo maslo čas žele. Arašidovo maslo čas žele. Arašidovo maslo čas žele. Way ya! Way ya! Way ya! Way ya! Zdaj pa greš! Izvolite! Izvolite! Izvolite! Arašidovo maslo žele! Arašidovo maslo žele! Arašidovo maslo žele! Arašidovo maslo žele! Peanut, jelly arašidovo maslo! Arašidovo maslo žele! Arašidovo maslo žele z baseball kijem. [END PREDVAJANJE] DAVID J. Malan: --that video, vendar je malo zasvoji, če ne bit siten. Ampak za to, sem mislil, kaj bi storiti je, da poskusite napisati program skupaj, za kar smo potrebovali tri prostovoljce. Morajo biti udobna na kamero in internet. Sam, pridi gor. Vijolična majica, tukaj, pridi gor. In od tukaj, pusti me iti malo dlje nazaj. Crimson in modre majice, pridi gor. Popolna. Dajmo zdaj. Pridi gor, pridi gor. In kako ti je ime? Erica. David, lepo, da sva se spoznala. Če želite, da bo ta sedež tukaj. To je Sam. Kako ti je ime? Antonio. Antonio, lepo, da sva se spoznala. Erica in Sam, če bi radi imajo sedež tukaj. Kaj smo prišli pripravljeni z, saj ti fantje so odkrivanje, je sestavine, s katerimi naj bi arašidovo maslo in žele sendvič. Zdaj to lahko bilo nekaj, kar ste vzeli zelo samoumevno. Vendar smo glede na vsak od naših treh prostovoljcev here-- dva prostovoljca in Sam tu, A štruce kruha vsak, krožnik, nož, kozarec žele ali marmelado, in kozarec arašidovega masla. In cilj pri roki zdaj bo za te tri narediti arašidovo maslo in žele sendvič. Ampak, kaj bomo storili, je pričakovati, audience-- od vseh vas zagotovo vem, kako to storiti to tako dobro v reality-- se dogaja, da nam posredujete korak za korakom navodila. Psevdo-koda, če hočete. Torej bom igral vlogo pisar tukaj. In imam malo seznama opravil, in tako kot vsak od vas, enega po enega, kliče potencial poučni, bom zapisati, da postopek po potrebi ponovite. In potem vidva bosta morala arašidovo maslo in žele sendvič le s tem, kar ste povedali. Tako da mislim o sebi kot računalniki. To lahko storite le to, kar ste povedali. Ni predpostavke, brez vprašanj. Vi šele potreba, da to storite. Torej, kdo bi rad ogrožala prvo navodila za izdelavo PBJ sendvič? Na balkonu tam. OBČINSTVO: Odprite vrečko kruha. DAVID J. Malan: Odprite vrečko kruha, če hočete. Torej, poglejmo. Oglejmo Ponovil, in dobili malo bolj natančno. Dober način za začetek, čeprav. Korak dva, nekdo drug. Zdaj nihče ne želi prostovoljno. Drugi korak, pred. OBČINSTVO: Odprite notranja vrečko kruha, kot tudi. DAVID J. Malan: Odprite notranja vreča kruha, kot tudi. Great, učimo. Malo bolj natančno. Pojdimo to delo. Da, v zeleni srajci. OBČINSTVO: [neslišno] DAVID J. Malan: Rezine kruha. Nežno odstrani dve rezini kruha. To je dobro. Korak štiri, nekdo drug? Tukaj, kajne? OBČINSTVO: [neslišno] DAVID J. Malan: Kraj kruh na tablici. Peti korak? Korak pet, ja? OBČINSTVO: [neslišno] DAVID J. Malan: Na vrhu of-- oh, roko. Postavite roko na vrhu arašidovega masla. Je to tisto, kar sem glavo? OBČINSTVO: Ja, in odvijte. DAVID J. Malan: in-- ponavljal. OBČINSTVO: [neslišno] DAVID J. Malan: In dal pokrov poleg kikirikijevo maslo. Rahlo položite roko na top arašidovega masla, in odvijte, in dal pokrov poleg kikirikijevo maslo. OK, šestim korakom. Korak šest, nekdo drug. Ja? OBČINSTVO: [neslišno] DAVID J. Malan: Ponovi. OBČINSTVO: Ponovite korak pet znova. DAVID J. Malan: In ponovite korak pet, ki bo vzpostavila bit problem Zdaj, če delamo to korak za korakom. Torej, zdaj gremo nazaj na korak pet. Rahlo položite roko na vrh arašidovega masla in odvijte in čaka pokrov poleg kikirikijevo maslo. Nato primite arašidovo maslo in ponovite korak pet. Torej bomo razveljavili, da neskončna zanka, če hočete. Korak sedem, nekdo drug. Ja, v hrbtu. OBČINSTVO: [neslišno] DAVID J. Malan: --on vrh drugega. OBČINSTVO: [neslišno] DAVID J. Malan: Na drugi strani pa na nasprotni vrhu. Želite pravkar prišel sem gor? Kako končati navodila? Kaj je ostalo od pouka? OBČINSTVO: Ignoriranje ta del. DAVID J. Malan: Ignoriranje ta del. Začnimo znova. Sedmi korak. OBČINSTVO: [neslišno] DAVID J. Malan: Primite z nasprotovanje hand-- to je dobro. To je dejansko dobro. OBČINSTVO: [neslišno] DAVID J. Malan: In plastična jar-- OBČINSTVO: [neslišno] DAVID J. Malan: In twist-- OBČINSTVO: [neslišno] DAVID J. Malan: Za dve sekundi. Samo odpreti kozarec s kikirikijevim maslom. Upam, da si bom odpustil. Torej, kaj je domnevati, da imamo tam. Odprite kozarec s kikirikijevim maslom. [Aplavz] DAVID J. Malan: Korak osem, pojdimo. Korak osem, ja, v hrbtu. OBČINSTVO: [neslišno] DAVID J. Malan: Dobro. Korak devet, ja? OBČINSTVO: [neslišno] DAVID J. Malan: --out od jar arašidovo maslo. In-- in kaj? OBČINSTVO: [neslišno] DAVID J. Malan: In dal nož nazaj v arašidovo maslo. Deset korak. Deset korak. OBČINSTVO: [neslišno] DAVID J. Malan: Put nož ven, in nato odstranite pečat. Lepo. Off arašidovo maslo. Vredu, korak 11. OBČINSTVO: [neslišno] DAVID J. Malan: OK, siva računalnik sledite modro ali rdečo računalnik. Dobro. [Aplavz] DAVID J. Malan: Pripeljite nam domov. Par korakov. Kaj je naslednje? Koraki 12. 12. korak. Ja? OBČINSTVO: Put eno rezine kruh nežno na enem od vaših rokah. DAVID J. Malan: Ena vaših rokah. In potem, 13 korak. Ja? OBČINSTVO: [neslišno] DAVID J. Malan: --on rezina kruha. Dobro. Precej dobro. Korak 14, ja. OBČINSTVO: Razveljavi korak 13. DAVID J. Malan: Razveljavi korak 13. Pojdimo na žele. To je 100- korak program, vendar pa sva bili na korak 15. Ja. OBČINSTVO: [neslišno] DAVID J. Malan: 7 do 13, ob uporabi žele, ker tisti je šel tako dobro. Ponovite korake od 7 do 13, z uporabo žele. Torej dojeti spodnjo polovico jelly jar z eno roko na vrhu. Po drugi strani pa od drugi top, ignoriranje tisti del, primite z nasprotnimi rokami, pokrov in plastični kozarec na dnu, in zasuk za dve sekundi. Nato odprite žele kozarec. In nenazadnje, poskusimo nam kaj užitnega. 16. korak. Torej, zakaj ne bomo ga pustiti tam. Najlepša hvala za naši trije prostovoljci. [Aplavz] Imamo malo CS50 stres žogo za vas. Gre, da je bila sendvič ampak-- pa kaj je točka, ki presegajo imajo malo zabave s algoritma? Ampak dejstvo je, da tudi, ko ste programiranje računalnika, morate biti super natančno. Kot kompleks ali zastraševalno kot svoj računalnik bi bilo zelo dobro za vas, na Vsaj ko gre kaj narobe, Realnost je, da je precej neumna Naprava, ki je izumil nas ljudi, in lahko storite le podmnožica tisto, kar smo do-- včasih gotovo faster-- vendar pa ne vem, kako za predpostavke. Ne vem, kako, da se na isti valovni dolžini kot ti. To bo le naredil prav kaj ti je povedal. In boš udaril, morda, kot smo začeli pisanje dejansko kodo s Prvi problem kompleti in tistega, kako enostavno je, da bi predpostavka kot človek, in ne predvidevati moram ravnati da je tako, ali da kotna primer, tako rekoč, da bi lahko zelo dobro nastane, če za imeli primer Sam edini stisne kozarec marmelade, medtem vsi ostali imeli nekaj steklenih kozarcev, kot je dobro. Torej, preden se obrnemo naše pozornost do neke dejanske kode, dovolite mi, da uvede glave seveda je tukaj na univerzi Yale. Naši prijatelji Scaz, Andy, in Jason, da pridejo gor in pozdravi. [Aplavz] SCAZ: Izgubili smo Jasona začasno. Živjo spet, vsi. Moje ime je Scaz. Sem bil poučevanje na univerzi Yale leta 2001. In ko nisem učil, moje raziskave je v robotiki in umetna inteligenca. In napoved, da imam danes je, da se začne v nekaj tednih bomo prinašali nekateri dodatni material CS50 govoriti o inteligence programske opreme. Bomo govorili o tem, kako mestih, kot so Netflix in Hulu lahko priporoči filme, ki boste morda želeli gledati. Kjer bomo govorili o tem, kako voznik manj avtomobilov dejansko delajo. In bomo lahko zemlja te stvari v koncepte da se učite V tem razredu danes. Ker vse te stvari so zgrajen na isti temelj. In to je tisto, kar ta Serija bo raziskala. Tako da sem res videti pričakujem več od vas vse, in boste dobili videti več od vseh nas zelo kmalu. Naj potem uvedejo Jason. JASON: Pozdravljeni vsi. Moje ime je Jason. Jaz žal šla Harvard kot Undergrad. To se dogaja, da se zmanjšanje od dejanskega toka. In zdaj sem tu kot predavatelj oddelek za računalništvo. In sem pomagal zagnati potek z Scaz, David in Andy. ANDY: Hej fantje. Moje ime je Andy. Jaz sem pravzaprav edini Yale študent na odru prav zdaj. [Aplavz] Sem v Berkeley College, prvotno iz Solon, Ohio. In jaz sem bil eden tistih otrok kjer je, ko sem prišel na Yale, Res sem mislil, da mi ne bi nikoli morali pogledati na številnih nikoli več. In potem sem ugotovil, da si je potrebno tako znanost in QR krediti diplomiral. In tako je moj novinec pomlad, sem razred, CS, intro CS razred tukaj na univerzi Yale. Bil sem kot, da je to všeč pravzaprav zelo kul. In ko sem dejansko končal razglasitvi Kot globalni zadeve velik, spretnosti Naučil sem se v CS in programiranje so tako uporabljajo za katero koli področje odločite, da boste storili. In osebje tukaj na univerzi Yale, smo bili tako na trdo delo pripraviti za vas. In se veselimo, da vidim vse v strokovnih in drugih uradnih ur. Torej, ja. [Aplavz] DAVID J. Malan: Hvala. Torej, tik pred razred začel, smo imeli priložnost hoditi okrog kampusu s mobilni telefon in se nekateri selfies v video obliki res moja prva turneja Yale kampusu tukaj. In zato smo menili, da bi delili groba Kroj točno to kot Scaz in Andy in Jason me je okoli kampusa. [VIDEO PREDVAJANJE] [Sirene] -David. -Dobrodošli Na Yale. -Lepo te je videti. -Lepo te je videti. -Ali Lahko gremo na turnejo? -Naj Gremo na turnejo. -Road Turnejo. -Ta Znak je bil tam za nekaj časa. -Whah, CS50. -Hurry! Gremo, gremo, gremo, gremo. Moral bi [neslišno] Harkness Tower. In smo videli, da nekajkrat. [Aplavz] Poglej, ven na kolo! Ahh! Hi Frank. Kaj je gor, fantje? -Kako si? -Lepo te je videti. -Dobrodošli Na video. Ne delujejo preveč navdušena. -I Ljubezen Silliman. Ahh! -To Je bilo približno tri ure, saj Jason je imel sladoled in Nutella. Torej morava ustaviti nazaj Silliman za malo. -To Ni niti [neslišno] še, samo dejstvo, da ga imamo tukaj, je tako neverjetno. Stari, tam je Nutella pri vsakem obroku. Lani -Ni bilo preveč. Ja. -tell veliko o Yale doslej. Ampak jaz zdaj, da je TD tam. In to velja off kampusu. -Here Imamo gotske arhitekture. Svetovno znana. Imamo nekaj več gotske arhitekture. In gradbeništvo, in več gotska arhitektura. Hi. To je, če smo ob uradnih ur Ob torkih skozi četrtkih v Hogwarts, kot [neslišno]. -V redu. To je to za turnejo. Smo na Yale University je Law School, kjer je današnje predavanje je na tem, da poteka. Vrnimo v. [END PREDVAJANJE] DAVID J. Malan: In ki nam zdaj prinaša tukaj. Torej tako daleč, da smo bili s poudarkom na psevdokoda, ki je to angleščina podobno sintakso. To nima predpisane specifikacije. To je samo vi uporabljate nekatere intuitivno jezik, če vas želim, da pojasni, kaj želite storiti. Ampak začnimo zdaj na prehodu na kodo, kot bi večina ljudi pravijo. Ampak bolj natančno, kaj znan kot izvorne kode. To je jezik, da ljudje pisati, da računalniki ultimately-- po možnosti po določenem številu steps-- končno razume tako da vem, kako nekaj narediti. Da ste videli pogled to morda v sredo. To je primer, da je neverjetno, underwhelming ko zaženete preprosto reče "Zdravo svet." In to je napisano v jeziku, ki se imenuje C, kar je skladenjsko zelo podobna na veliko drugih jezikih ki morda ne vedo, vendar bi lahko slišali, kot so Java, in C ++ in Python in Ruby, in podobno, in dejansko, bomo preživijo veliko semestra uporabo C, in nato proti koncu semester, ki temelji na tem, in uvajanje koli število drugih jezikih. Med njimi PHP in JavaScript, jezik, podatkovno bazo, imenovano SQL. Ampak s C, kaj bomo imeli to razumevanje spodaj navzgor točno, kako računalniki delo, Kaj lahko naredite z njimi, in kako lahko reši težave toliko bolj učinkovito s tem layering, da smo razpravljali v sredo, in položaja na ramena drugih. Ampak več o tem, da pridejo. Danes gledamo na preprostejši okolje, ampak v bistvu enaka Okolje znan kot Scratch ga naši prijatelji na MIT Media Lab. To je grafična programski jezik, Scratch, s katerim lahko povlečete in spustite stvari, ki izgledal kosov sestavljanke, ki le interlock če naredi logična ali programski občutek, da to storijo. Ampak to se dogaja, da nam omogočajo, da imajo pogovor o vsem iste programiranja osnove, da nekateri od vas Morda že veste, da mnogi od vas morda ne vedo ničesar, ne da bi ob da se bogged odkrito, v intelektualno nezanimiv sintaksa podpičji, in oklepaji in navaja, in podobno. Vse to, zgodnje na, so moteča s tem, kar so zanimive in resnično uporabne ideje. Torej, vzemimo na hitro pogled na okolje tukaj, tako da boste vedeli, kaj čaka. In dejansko med igrah lahko igrajo so napisani nekateri programi ga CS50 lastnih nekdanjih študentov. Eden od njih, sam, bom to ena napisana v podiplomski šoli za mene. Če lahko vzamem enega prostovoljca kdo je pripravljen igrati igra za zelo prvič. Sure. Pridi gor. Kako ti je ime? OBČINSTVO: Angela. DAVID J. Malan: Angela, pridi gor. Torej je Scratch bilo ven za nekaj let. In ko sem bil v podiplomski šoli, Bil sem navzkrižno registrirane na MIT, ob profesor Mitchel Resnick je Seveda na izobraževalnih tehnologij. In smo bili med zelo prvi študentov v svetu dejansko beta Test Scratch. In moj projekt je bilo tisto, Angela je zdaj milostno javil Če želite igrati imenuje Oscartime. Tako da sem šel naprej in dvakrat kliknite na ikono tukaj. To se dogaja, da odprejo programiranje okolje, da bomo kmalu potopite v. Jaz grem v celozaslonskem načinu je za Angelo, tukaj. Bom udaril zeleno zastavo v samo trenutek. In potem cel kup smeti se dogaja, da pade z neba. In boste uporabili miško tukaj dejansko povleci in spusti smeti v smeti pločevinke Oscar je. Torej, če želite, da gredo naprej in kliknite zelena zastava, se igra začne. [Predvaja glasba] Oh, obožujem smeti. Karkoli umazan ali Umazan ali prašno. Karkoli raztrgan ali gnilo, ali zarjaveli. Yes, I love smeti. Če ste prepričani, da želite videti nekaj trashy, poglej to. Tukaj imam zavezat da je raztrgano in obrabljena. To je vse polno lukenj ima in čipke so raztrgana. Darilo od moje mame dan, ko sem bil rojen. Všeč mi je, ker it's-- DAVID J. Malan: --green teh dneh tik se meče vse v smeti. In kaj eno CS50 lastno did-- osebje Jordan, ki ste morda izpolnjujejo today-- ima dejansko posodobljena to za današnje čase. In zato mi dovolite, da odprejo remix namesto za Angelo. In bomo to igral namesto za nekaj trenutkov, kjer zdaj si bodo morali odločiti med tem, ali vrgel nekaj v smeti, ali reciklirati ali kompostirati. Tako da je malo pritisk na vas, da bi dobili ta pravica pred vaš 392 do 497 sošolci tukaj v dvorani, če bi. [VIDEO PREDVAJANJE] [Predvaja glasba] Oh ljubim smeti. Karkoli umazan ali Umazan ali prašno. Karkoli raztrgan ali gnilo ali zarjaveli. Yes, I love smeti. Če ste prepričani, da želite videti nekaj trashy, poglej to. Tukaj imam zavezat da je raztrgano in obrabljena. To je vse polno lukenj in čipke so raztrgana. Darilo od moje mame dan, ko sem bil rojen. Všeč mi je, ker je smeti. Oh, obožujem smeti. Karkoli umazan ali Umazan ali prašna. Karkoli raztrgan ali gnilo ali zarjaveli. Yes, I love smeti. Tukaj je nekaj bolj gnilo stvari. Tukaj imam nekaj newspaper-- [END PREDVAJANJE] DAVID J. Malan: --are dejansko kompostirati. Ampak hvala za naše prostovoljce, Angela. Imamo stres žogo za vas, tudi tukaj. Torej, hvala. Torej je bil to eden napisal jaz. Zdaj pa eden z dejanskim nekdanji študent kdo je to izvajal, kar je igra. Vse v tem jeziku imenuje Scratch, da bomo kmalu olupimo nazaj plasti. Ampak, če bi mi like-- kako približno en prostovoljec? Prav. Pridi gor. Kako ti je ime? Glance? Lance. Lance, pridi gor. Me veseli. Pridite na ta način. Torej, morda je to ena ima Tema seznanjeni z nekaterimi od vas. Ampak boste videli tudi, da ne more biti interaktivnost, s katerim bi ga lahko dejansko biti Vloga značaja gibljejo okoli. Me veseli. David. Vam dam, Pikachu. Navodila bodo o zapustiti na zaslonu. Ampak na kratko, si boste želijo ujeti okusne stvari, in se izognili bombe in druge stvari. Z puščice povsemmedicinskih. Torej hit preslednico. -Pikachu. DAVID J. Malan: Catch stvari na levi strani, ne ujamejo stvari na desni strani. [Predvaja glasba] Torej ena zadnja tukaj. Če bi lahko imamo eno več prostovoljec tukaj. Mislili smo, da bi ponovno nekaj from-- v rumenem shirt-- od srede. Kako ti je ime? Mary, pridi gor Marije. In spomnimo sredo smo uvedli pojem binarne in binarne žarnice. To je dejansko zdaj izvedba istega vmesnika da smo imeli na iPad z lučjo žarnice, ampak tu digitalno opravljene. In namesto da narediš stres ball-- Me veseli, David. Pripeljali smo nekaj svetlobe čebulice iz Cambridgea. Če lahko, s klikom na tiste Žarnice, da jih vklop in izklop, dohiteti binarni zastopanje pravijo 256. In boste videli v srednji, trenutna ujemajo. Tako, da je eden je on. Zato je skrajni levi bit vklopljen. MARY: Ja, [neslišno] DAVID J. Malan: No, tako da imamo just-- oh. Torej je to stolpec 128. Tako da smo do 128. Moramo priti do 256. In lahko Lemiti na in off, no big deal. Ali lahko zadeti, da je 128 večkrat, če hočeš. Dobro, dobro. 24. Ja, vse bližje. Bližje! Oh, kaj je problem potem? Torej, kaj je problem? Torej, kaj moramo rešili ta problem? Zato moramo še malo. In to popolnoma smiselno v resnici, kajne? Če želite, da računajo od števila 1 do 2 do 3 do 4 do 5, 6, 7, 8, 9 dejansko prevračanje do 10, ste bodo potrebovali dodaten bit. Torej Dovolite dejansko nazaj tukaj, in prišli do with--, da je bil očitno mišljeno, da bo set up. Ne, ne moreš narediti 256 s samo žarnico. Torej, kaj pa zgolj številko 50? Številka 50. Odlično. Velik aplavz Mary in njen kot tudi. Hvala. Torej, to topic-- namerno kot da was-- bo dejansko ponovile. Največja vrednost, ki jo lahko predstavljajo z osem bitov, ali en bajt, je res 256. Ampak ne, če začnete šteto od 0, saj smo Zdi se, da delaš s tem, vseh teh bitov off. Ampak zdaj pa se potopite v osnovni Izvajanje tem okolju in draži narazen nekatere od teh idej. Torej, v trenutku, ko smo na tem, da vidijo nekaj različnih programskih temeljev. Prvi izmed katerih bomo poklical izjavo. Nekako glagolov, če hočete. Dejanja. Stvari, ki jih je treba storiti. In v trenutku boste videli bloki, ki izgledajo kot to. Reči "zdravo svet", na primer. Ali počakati eno sekundo. Ali igrajo zvoka mijav. In res je okolje, v ki bomo to početje se imenuje praske. In če potegnem gor praske brez zategovalnik nikakršne dejanske kode, Vzemimo hiter pogled na to uporabniški vmesnik, tako rekoč. Kontrole, s katerimi sodelujemo. Na vrhu sem ostal izmed zaslon, pod meniji, imamo fazo, tako rekoč. Torej Scratch je tisto, kar pokličem Sprite. To je znak. In se je mogoče nadzorovati z pisanje programov zoper njega. In ne boste mogli premikati gor in dol in levo in desno v tem okolju, ne samo s premikanjem miš, ampak načrtno. Jaz lahko povem, hodi desno, sprehod levo, gor, dol ali podobno. In jaz lahko uvede drugo sprites ali znakov, kot tudi. Dejansko je na dnu tukaj je, če boste videli svoj seznam sprites. V tem trenutku sem samo še ena, vendar sem lahko ustvarite več, in jih bomo pojavi natanko tam dol. Torej, če ste nazaj za trenutek, kot je Oscartime-- primer, Oscar, na levi, smeti lahko, je sprite. In stvar v sredini je recikliranje smeti, je bil še en sprite. In kompost bin je bil še en sprite. In vsak kos smeti ali za recikliranje da je padel z neba je tudi Sprite, od katerih vsaka je bil programiran posamično. Kako ste programirati? No, tukaj na desni z stran je površina skriptov. In to je, če bomo lahko povleci in spusti kosov sestavljanke. V tednu, da se dogaja, da se kjer smo enakovredno pisanje kode z več od tipkovnice, ampak danes pa bomo povlečete in spustite kosov sestavljanke je palete, za katere lahko vsi najdete tukaj prav na sredini. Dejansko je v sredini tu je cel kup kategorij sestavljanke kosi ali bloki. Ena je povezana s pobudo, poglej, zvok, pero gredo gor in dol, podatkov, nadzor nad dogodki. Ne čisto prepričani, da še kaj vse to pomeni, vendar pa boste videli, da oni bilo lepo kategorizirana. In napisati program v Scratch, kaj je naredil točno to. Jaz grem, da začnete pod Dogodki in povlecite tole tukaj. Ko je zelena zastava kliknili. Zdaj zakaj je to ena? Tudi opozarjajo, da naše prostovoljce je prišel gor, prva stvar, ki sem ali pa jim je bilo, kliknite, da zelena zastavo v zgornjem desnem kotu. In to samo pomeni, da zaženete program. Torej, ko se ta dogodek zgodi, kaj hočem narediti? Jaz bom šel pod Looks, in jaz bom naredil "pozdravi". In bom to spremeniti in reči nekaj podobnega "Hello Yale." In zdaj bom za povečavo ven, kliknite na zeleno zastavo, in voila, sem napisal program. To pa še ni vse, da je razburljivo samo še, vendar je to je točno tam, kjer je vsak tistih, avtor začel, tako z Pikachu in binarnih žarnice, in Oscartime, in tako veliko več primerov. Začnete super enostavno, in potem začneš plast, in dodamo na funkcije in funkcionalnost. Torej, kaj so te plasti bo sestavljen iz? No, poleg izjav, bom tudi mi imajo stvari, ki so malo bolj fancily imenujemo Logični izrazi, ko nekoga z imenom Bool. In logično izraz je preprosto izraz, ki je bodisi resnična ali neresnična, da ali ne, 1 ali 0. Vsa polarni nasprotji, kot je ta. To je bodisi resnična ali ne. Vendar smo tudi videli tisti, ki bi lahko izgledala takole. Tako, na primer, je miška dol? Oni so vrste vprašanj, če hočete. Miška je bodisi navzdol, res ali ni, napačna. 1 ali 0, če hočete, kaže, da je preslikava. Res je 1, false 0. No, kaj pa manj kot to? Ali tako, je to manj kot to? To je vprašanje z menoj. In če si dal dva Številke v tam, bodisi X se dogaja, da je manj kot y ali enako y ali večja od y, vendar je to blok, da bomo videli, je samo bo odgovoriti na vprašanje, je ta krajši od tega? Bomo morda videli tudi nekaj takega. Dotik kazalci miške. Torej v nič, lahko prosite Vprašanje, ali je Sprite dotika miškin kazalec? Z drugimi besedami, je kazalec Lebdenje čez kapo, ali enakovredno? Bomo videli, operatorji AND stvari skupaj. Lahko vprašam dve vprašanji, in se prepričajte, da sta oba daš yes ali prave odgovore pred sprejemanju odločitev, da narediš nekaj. Ampak potem kako si lahko odločitev? No, imamo te pogoje. In to smo videli v našem Primer imeniku. Če pogledamo na levo ali pravica Mike Smith. In v stanju, ki jih narediti nekaj potencialno če je logični izraz res. In res, opazili oblik zdaj. Tam je to placeholder zdaj v zgornjem delu, kjer bomo lahko fit-- če sem nazaj eno slide-- tej obliki. To ni povsem enake velikosti. In res, boste videli, da Scratch spremeni velikost stvari dinamično da se prilega kosov sestavljanke, ki pa oblika je tisto, kar je pomembno. Ta stvar izgleda da, in res je približno enako obliko da bi morala biti prilagojena tam. In če hočemo narediti nekaj Na ta način ali na ta način, če je ali pa, imamo te uganke kos v Scratch kot dobro. Sedaj predpostavimo, da je želel storiti, če else if, ali kaj drugega. Z drugimi besedami, tripotni odcepu. No, kaj lahko storite samo s pogledom ošine to? Lahko vzamem ta kos sestavljanke, in se ne zdi, da se prilega, ampak spet, se nič dogaja ponovno velikosti lepo za nas. Sem lahko začel sloju te stvari skupaj. Torej, zdaj imam tri-način vilice, če je to res, to storite. Drugega, če je to druga stvar je res, gredo v to smer, drugače gredo to drugo smer. In v The Muppet Movie je odcepu, tako rekoč med Yale ali Stanford, je bil točno to, le dva pogoja. Ali gredo v to smer, sicer gredo v to smer. No, zankami obstajajo tudi pri programiranju. In smo uporabili ti že v razred in v psevdokoda kodo, in zagotovo v tistih, Praskam programi vedno. Scratch je ta kos sestavljanke, ki bo samo vam nekaj storiti večno. In včasih si želim narediti nekaj za večno. To ni nujno napako, to je ker želite ura nadaljuj, ali igro, da bo igral. Ali lahko določite končno število koraki, kot je s to ponovite bloka tukaj, ki bo ponovil nekaj, kar 10-krat. Mi lahko določite spremenljivke, bomo kmalu videli. In s spremenljivkami, podobno v duhu da algebre, kot je X ali Y ali Z. To je nekaj, kar simbolično, da lahko shranite nekaj vrednost, nekaj podatek, da boste morda želeli da se spomnimo za pozneje. Najboljši primer za to je lahko igra, kjer imate rezultat, kot v Pikachu. Koliko kosov torte in malenkosti ste ujeli? No, da bi bila spremenljivka imenovano rezultat, ki se začne pri 0. In potem vsakič, ko smo ujeli kos torte ali sladkarije, ali podobno, da dobi poveča. To dobi doda enega naenkrat. In tako spremenljivka shranjuje podatek, kot je ta. Potem je tu še nizi in bomo prišli nazaj na ti v tednu ali dveh času, ampak niz je nekako kot inventar ali torba, v notranjosti od katerih lahko postavite virtualne stvari. To vam omogoča, da shranite več kot eno informacijo. In da bi bilo koristno če je v igri, ste nekako hodi okoli pobiral stvari. In morda želite obdržati vse te kose pogače okoli, in ne samo jesti jih enega za drugim. In potem je tukaj še Ljubitelj konstrukt bomo pridejo na imenovanih funkcij ali postopkov. In čeprav gremo hitreje tu, bomo vidim, da so to zelo naravna rešitev za težave da bomo srečanje. Kot začetek naši programi dobili večje Bomo začeli opažati vzorce v koda, ki smo pisno, kosov sestavljanke, da smo povleci in spusti. In takoj, ko opazite sebe delaš nekaj, kar znova in znova, ali še huje kopiranje in lepljenje programiranje kodo, ki ste napisali, da je verjetno priložnost za faktor ven karkoli boste obdržali kopiranje in lepljenje, in ki ga je dala v nekaj, kar se imenuje "funkcija". Ampak bolj na tiste, v veliko kmalu več podrobnosti. In potem je tukaj še ljubitelj funkcije. Za tiste, ki ste bolj udobno, ali ob APC ali enakovredno, Scratch dejansko podpira stvari kot navoje in dogodke in več. Torej, zavedati, da ima dokaj visok strop, čeprav je tudi zelo splošno dostopna ljudje ki niso nikoli programirana prej. Torej res, dajmo si oglejte na preprost program ali dva. Smo že pogledal, kako smo lahko pozdravite z Scratch. Naj gredo naprej in odprla malo bolj zanimiv program da sem napisal vnaprej. In ta je pozval Pet Cat. Vsi ti programi bodo na voljo na spletni strani CS50 je. Dejansko je že tam. Torej si lahko prenesete njih, in se igral z njimi, in s problematičnimi Set 0, kar je tudi na spletni strani predmeta je, ste spodbuja, da sprehod skozi to. In poleg tega, imamo Število sprehod skozi video posnetkov na spletu, v katerem sem in Ekipa CS50 je resnično hodi skozi vsako od teh primerov na veliko počasnejši tempo, zelo hitro forwardable, ali navitjem tempo, tako da lahko hodiš preko teh na vaš prosti čas, kot tudi. Torej, tukaj je Scratch na levi strani. Tukaj je program, na desni da sem že vnaprej narejene. Zato mi dovolite, povečate na to. In bi lahko nekdo v angleščini, vedoč, kaj veš, samo od zdaj kot kako Scratch dela, nekako reči v angleškem fraze ali stavka Kaj ta program očitno ne? Ja, v oranžni srajci. OBČINSTVO: [neslišno] DAVID J. Malan: Ja, če je vaš kazalec je na Scratch mačka, igrajo meowing zvok. Ampak obvestilo, kako izraziti to. Tam je očitno zanka tam, za vedno. In potem je tukaj še pogoj je, če izraz. In skupaj, kaj pa tisti, pomeni? To pomeni, da ta program je samo vedno teče, in to je samo vedno čaka in gledal in poslušal za mene, da se premaknete svojo miško preko mačka. Ker vsakič, ko sem to naredil, kot vam predlagam, da se dogaja, da to storijo. Naj začnem program. Nič se zdi dogaja, ampak obvestilo, kako to je zdaj poudarjeno v rumeno črto. To samo pomeni, da je tekmovanje v teku. In ker tam je vedno zanke, to je še vedno teče. Torej, kaj mi premakniti svoj kazalec nad nič. [Meow] [Meow] In če sem ga premaknete off, [Meow] zdaj se ne ustavi, ampak program je še vedno teče. [Meow] In tako čudovit. [Meow] Torej, kaj je odprla nekoliko bolj napredni Primer imenovano Ne Pet Cat. In zdaj poglejmo, kaj dogaja tukaj. [Meow] Meowing. Tako da je malo na auto pilot, če hočete. --pet mačko. Sprašujem se zakaj. [Roar] [Meow] Torej, kako je to delo? No, lahko vrsta razuma skozi intuitivno, morda. Toda poglejmo na dejanske kode. Torej še enkrat, ko je zelena zastava je kliknil, naredite to za vedno. Kaj hočeš, da vedno naredim? No, če se dotika miška kazalec, nato pa igrajo zvok, ki je očitno imenuje Lion 5, ki je znotraj tega projekta, ostalo predvajanje zvoka mijav, in počakajte dve sekundi, tako da da to ni meowing neprestano. V bistvu, lahko zelo hitro začeti da sebe in svoje sostanovalce nagajati. Oglejmo odstranite ta blok. In opazil, kaj je lepo o Scratch. Stvari nekako upora in spusti in blokada. Torej še enkrat, to raste izpolniti tisto, kar želite. Ampak, če sem to odstraniti, in nato hit play, [COMPUTER blip SOUND] --it je vrsta spotaknete sam, saj je dobesedno to, kar sem rekel. To je rekel, vedno igrajo ta zvok, vendar Ne bom mu daje priložnost, da končate. In tako, da bi bila napaka. In to je, zakaj smo imeli ta stvar tukaj zdaj. Torej, kaj je dejansko začeti iz scratch-- nekako pun nekoliko intended-- v katerem imamo zdaj mačka potezo. Tako da bom, da to storijo na letenje. Jaz grem za povečavo tukaj, samo da me začel dogodkov. In zelena zastava kliknili. In tam je druge načine za začetek skripte. Bomo, da ga bo enostavno tukaj. In zdaj bom šel naprej in iti pod nadzor. In še enkrat, če ste pozabili, kjer stvari, samo kliknite okrog, in na koncu jih ponovno našli. Torej, želim vedno narediti kaj? Želim uporabiti gibanja blok da vem, obstaja, premaknite 10 korakov. Torej, da vidimo, kaj se zgodi tukaj, če igram to igro. K sreči ne gre predaleč. Še vedno se mu nekako zgrabi za rep in ga potegnite nazaj. Vendar program še vedno teče, tako da je nekako me boj. Vendar bi bilo nekako lepo, če sem pogojno popraviti to v kodi. Ker to je not-- dejansko je to res ni zabavna igra za vsakogar, katerekoli starosti. Torej poskusimo popraviti to z ob nekakšen pogojih. Torej, jaz bom šel pod Nadzor, in potem, če. Všeč mi je ta zamisel. Torej, po selitvi 10 korakov, if-- mi občutek, kje sem. Jaz bom šel pod Sensing, in potem izgleda lahko grem tukaj. Vrstica na obliko tekmah. Velikost ne, ampak to je dogaja, da raste, da izpolnite. In zdaj je to malo meni. In zdaj miš pointer-- jaz ne želijo miško, hočem rob. Torej Scratch je dovolj pameten, da veš ko je Sprite dotika rob. Kaj sem hotel, da bi dejansko naredil? Naj gredo naprej in spremeniti predlog. Veš kaj? Grem, da so mu obrne. Torej na 15 stopinj ni res dogaja, da mi pomaga. Želim mu, da se obrni in gredo v drugo smer. Torej, da vidimo, kaj se zgodi Tukaj, če sem udaril Igrajte zdaj. OK, nekako neumno videti, vendar to počne točno to, kar sem rekel. In to je vrtenje celotnega sprite. Zdaj se je izkazalo, da sem lahko to popravimo. In nisem vedel, kako popraviti to na prvi. Nekako sem moral futz okoli in glej najboljši način, da to storijo. Ampak, če grem to-- poglejmo, gibanje. Oh, to sem našel. Pravzaprav, Nastavi rotacijo Style. Levo, desno, ali pa ne vrtenje, ali vsem. In se izkaže, da je tisto, kar hočem. In bom dal to ni moj zanka, ker mi ni treba nastaviti stil vrtenja večkrat. Bom dal na samem vrhu ta program, tako da dobi nastavljena enkrat, in nato spominja. In zdaj bom spet poskusil s tem. Naj zaustavitev programa. In zdaj, ki je določena to napako. Torej sem iterativno izboljšanje na tem. Program je pridobivanje malo bolj zapletena in večji, vendar sem ob dojenček korake tako rekoč, in majhne piki od problema da se je bolje in bolje. Ampak tudi to je vrsta lame. Veš kaj? Bi prosil nekoga res dober, Strašen glas rad prišel gor? Nekdo z glasom. Uh, ja. Pridi gor. V zeleni srajci. Tako se izkaže, da je kakšno drugo zabavno Stvari, estetika in zveni enako. Tukaj je mijav. I kliknite na zavihek Zvoki. [Meow] Tukaj je mijav. [Meow] [mijav] [Meow] --actually zapis nekaj od naše tukaj. Torej, kaj je naredil točno to. Namesto z uporabo te mačka zvok, kaj je nadaljujte tukaj, in kako vam je ime? Nick, lepo, da sva se spoznala. To je David. Torej, v tem trenutku, jaz grem zadeti gumb za snemanje. In če si lahko samo kričati v laptop, "Au," kot da bi vas pravkar vstopil v steno, da bo zelo cenjeno. 1, 2. NICK: Ouch! DAVID J. Malan: Awesome. In zdaj lahko naredil malo urejanje tukaj. Dogaja, da se znebite tihih delov. In mislim, da je dobro. Najlepša hvala. NICK: Pleasure. DAVID J. Malan: Sem samo preimenovala "Au," ampak zdaj bom pojdite nazaj na moje skripte. In obvestilo dejansko obstaja zvok tukaj. In bom, da gredo naprej in predvajanje zvoka Ouch, in bom naredil, da če to je dotika samo robove. In potem bom so ga obrniti. Torej, da vidimo, kaj se dogaja tukaj. Pojdimo celoten zaslon. [VIDEO PREDVAJANJE] -Ouch! Joj! Joj! Joj! Joj! Joj! Joj! Joj! [END PREDVAJANJE] DAVID J. Malan: Torej se zavedaš da smo dobili malo srečen. Bom mu morali premakniti kot 100 korakov hkrati. Učinek, ki sedaj se dogaja da be-- [Računalnik Glitch zvok] Torej v okviru možnega. Tako priložnost, da izboljšate da nadalje, če res hočemo. Torej, zdaj pa je predstavil še en koncept. Da mi gredo v eno imenovano Štetje ovac in uporabite nekaj imenujemo spremenljivka. To je čudovit malo ovce, in Spremenil sem svoj kostum tako rekoč. Torej, čeprav privzeto je mačka, si lahko naložite, lahko pripravi, lahko naredite poljubno število znakov na vašem Vilenjak. Tukaj je program, ki je boš naredil kaj v angleščini? Spet temelji na samo tisto, kar zdaj vem. Kaj je ta program naredil? Ja, to se dogaja, da računajo. Ena številka naenkrat. Imamo očitno imajo to nastavljeno števec. Ne vem, kaj je to, ampak morda je spremenljiva. To je samo posode x ali y. Toda beseda števec je bolj opisna kot x ali y matematik je. Tako bomo lahko uporabili angleških besed za stvari. Večno, samo pomeni, da delaš to. Reci števec. Zdaj, ko je to prišlo? No, izkaže se, da Števec je spremenljiva. Torej, to je samo še ena uganka kos sem ustvaril vnaprej. In čeprav se to zgodi da niso enake oblike tod običajno bi rekli nekaj podobnega Pozdravljeni tukaj. Prav tako lahko povlečete spremenljivko tako, da je to tisto, kar se je rekel. Potem sem čakati na sekundo, sem zamenjati števec z enim, je povečevanje z dodajanjem enega. Tako da je neto učinek ta čudovit štetje ovac. Čeprav on sam štetje. Zdaj je zelo hitro bo dobil dolgočasno zato, ker se dogaja, To storite tako resnično večno, ampak to je točno tisto, kar Zasnova programa predpisuje. Upamo, zdaj poskusite še en primer ki dopolnjuje spremenljivko. Ta se imenuje Hi Hi Hi, da ne dobite nadležno hitro. Zdaj je to eden ima dve skripte. In tako spet, smo ob otroške korake. Začeli smo z nekaj super majhen, dodamo k njej, dodamo k njej. Sedaj želim nekaj narediti še bolj dinamičen, zato želim, da se posluša dve različni stvari hkrati. Torej, na levi strani, ko zelena zastava je kliknil, Postavil sem spremenljivko, da sem napisal vnaprej imenuje izključen. In sem samovoljno jo nastavite na 0. Torej, nič ne velja in napačna, vendar pa ima 0 in 1. Tako sem lahko približati to isto idejo. In potem za vedno, če je prostor bar pritisniti, nato nastavite spremenljivko 0. Ali mi je žal. Če pritisnete Space, in če utišan, spremenljivka, 0, nato nastavite utišan 1, drug nastavljen utišan 0. To se zdi nekako kot smo samo delaš in razveljavili delo. Toda kaj je učinek? Vsakič, ko sem udaril preslednico, kaj se zgodi z mojim spremenljivko imenovano utišan, logično? Nekako dobi plavut. Se spreminja od 0 do 1, ali 1 do 0. Torej, to je le nekaj ulic izraziti, toda vse Delam je preklapljanje stanje ta spremenljivka 0 ali 1 ali 0 ali 1 vsakič, ko sem udaril preslednico. Zdaj sem, kaj to delaš? Forever, če utišan 0, tako da, če izključen, je napačen. Torej, če je ne utišan, je semantika tam, predvajanje zvoka morski lev, in mislim, Hi Hi Hi za dve osebi sekund, počakajte dve sekundi. Torej opazili zdaj ti skripte so učinkovito bo potekala vzporedno, tako da je lahko ena posluša za eno tožbo, drugi da bi odločitev, ki temelji na tej akciji. In da lahko to za vedno. [SEA LION BARKING] [SEA LION BARKING] To se dogaja, da to storijo na veke [SEA LION BARKING] kot sem pravkar storil. In zdaj je še vedno teče Ampak sem "utišan" igro. [SEA LION BARKING] In to je Vse to fant počne zdaj preveč. Odprimo še en primer tukaj. Naj gredo v Dogodki, in zdaj je to preveč lepa. Ampak obvestilo, da ima dve sprites. Torej ne samo dve skripti z en Sprite, ampak dva sprites. In če sem kliknite na modro fanta, kot sem že, sem videl kot enega programa tu gor, ki dobesedno samo pravi tem, ko sem prejel dogodek, pravijo "Polo" za dve sekundi. Torej, če ste kdaj igrali v bazen, igra Marco Polo, če je oranžna fant skript znamenje, očitno vsakič, ko sem udaril preslednico, kaj je oranžna fant boš naredil? On bo rekel "Marco." In potem je to nov blok. Mi smo nismo videli že prej, ampak oddaja dogodka. In lahko sem ga poklical Dogodek karkoli hočemo. Vrnili se bomo k temu morda kmalu. Ampak oddaja dogodka je način za en sprite govoriti v drugo v bistvu ji posreduje sporočilo. To ni sporočilo, ki ga vidite. To ni nekaj, kar vizualno. To je vrsta računalniškega sporočila da je drugi človek posluša. Saj res, modra fant, odpoklic nima ko zelena zastava kliknili. Namesto tega je bil, ko sem prejela dogodek. Ko dobi on izročil ta bankovec v razredu, tako rekoč, bi moral reči "Polo". In tako je neto učinek je, da ko sem zadeti zeleno zastavo, se ne zgodi nič. Toda, ko sem udaril preslednico, pravi "Marco," se odzove s "Polo". Ampak samo Sprite sem interakciji z je oranžna ena. Torej je to način vrste posredovanje sporočil med sprites in ob njih komunicirajo drug z drugim. Zdaj pa si oglejmo enega zadnjih ena tukaj imenovani Threads. In opazila to, da ga igrajo. Torej, to sta dve sprites. Ptica je nekako plujejo okoli. On je odbijal. Ni "Au," ampak isto idejo. Toda mačka zdi zelo pameten. Kaj je mačka očitno počne? In čakati na to. Kaj je mačka očitno počne? To ni samo odbijal. On je po ptico. In tako očitno, tam je pot s kombinacijo blokov here-- in si oglejmo mačke resnično hitro. Za vedno, če se dotaknete ptico, potem pa igrajo zvok Lion 4, karkoli že to je. Enkrat smo slišali. Sicer pa kažejo na ptica, in premik za en korak. Zdaj pa je dejstvo, da je ena korak je tisto, kar daje ptico malo prednosti na začetku, vendar če bomo namesto da to 10, na primer, tako da je vsaka ponovitev zanke, da je premikanje 10 korakov časa. Torej, več prostora. Poglejmo, kaj se zgodi potem. [LION Roar] Ne vsi, da je veliko bolje. Torej, zdaj poskusimo izboljšati ko ti malo iterativno, in prišel nazaj, da Pojem funkcije. In res ena izmed temeljnih takeaways zasnove razreda. Ne samo pisanje programov, ki delujejo in da so pravilne, ampak so dobro oblikovan. In oblikovanje je veliko bolj subjektivna, in boste dobili boljši na to v daljšem časovnem obdobju. Ampak vzemimo nekaj otroške korake v smeri začenši s programom, ki deluje, absolutno, vendar to ni zelo dobra. To ni zelo dobro napisana. Torej, tukaj je program, ki to zmore. Kašelj, kašelj, kašelj. Kaj je program izgledal? Izgleda pravilno zame. To je rekel, kavč za po drugi strani, nato pa počaka. Potem je spet pravi, nato pa počaka. Potem je spet pravi, nato pa počaka. In nato program implicitno se konča, ker ni zanka. Ampak zakaj je to slabo napisani programa? Tudi če ste nikoli programirana prej? Všeč, kaj drgne napačen način, morda tukaj? Ja? OBČINSTVO: [neslišno] DAVID J. Malan: Točno tako. Ste ponavljali sami znova in znova. In dobesedno sem kopirali in prilepili dva spet in spet teh blokih. In to je točno neke vrste duševno zdravje preverite, ali vam je treba odločitev. Počakaj minuto. Bi bilo res počel to? Torej, kaj je to, kar je očitna rešitev morda? Imajo nekakšen zanke. In jaz ne ravno odpoklic kaj puzzle kos je, ampak če pogledam Naslednja ponovitev tukaj, res, tam ni samo večno zanka, tam je ponoviti določeno število krat. In tako sem določeno tri. In zdaj opazili, koliko močneje, kako veliko bolj zgoščeno ta program. In v nekem smislu, kako veliko več vzdrževati. Če želim zamenjati besedo od kašlja v nekaj drugega, kot achoo, kot da je kihanje. Potem sem ga spremeniti v enem mesto, in ne tri. Torej, to je že počuti kot nekoliko boljši dizajn. Naj namesto open kašelj 2, naš tretji primer. Opazili kot računalniški znanstvenik, Začnem Računam na 0, običajno. Zdaj to izgleda malo strašnejši na Prvi, učinek je enak. Kašelj, kašelj, kašelj. Ampak, kar se zdi, da je v osnovi Novo v zgornjem delu programa? Sem odstranil besedo. Sem odstranil čakati. In kaj imajo namesto sem priklopljen? Funkcija. Kašelj blok. Mislim, odkrito povedano, sem se zdi nekako idiot, če nisem samo začeti z blokom to je očitno imenuje "kašelj", če je to vse, hočem ga narediti. Ampak, da ne obstaja nič. Raje sem šel na eno v Paleta imenuje več blokov tukaj, in sem povlecite to veliko vijolično stvar tukaj, ki mi omogoča definiramo funkcijo. V bistvu mi omogoča ustvarite svoj uganke kos, ki ga lahko imenujemo karkoli sem želijo, da lahko narediš vse, kar si želim, vendar pa ji daje ime. To mi daje nov, vijolična kos sestavljanke da je zdaj počne vse, kar mi je povedal, da storiti. Torej, ta vijolična kos tukaj ustreza tej tukaj. In kaj je naredil? Piše kašelj za drugič, potem pa čaka. In zdaj sem nekako ustvarjena moja meri puzzle kos, tako, da se obnaša natanko isti način. Tako sem lahko vodijo to. In res, tam se dogaja, da se bolj in več priložnosti za modularne, in plastenjem, kompleksnost na vrhu drug drugega. Vendar je to osnovna ideja, res v problemu dejal 0. Kaj boš mogoče izpodbijati storiti, je prenesti na praske, ali pa jo uporabite na spletu, in samo zabavajte se z njo. Mi vam bomo niz Zahteve, ki ima zvok, in nekateri število koščke. Ampak boš naredil točno to. In boste spoznali, da boš želeli, da sprejmejo nekatere otroške korake najprej, dokler se program ne dobi bolj in bolj zapletena. Toda če upoštevamo to je Najboljši način, da bi to lahko naredil? Lahko bi se izognili temu nagon morda, kopirati in prilepiti? Toda preden Problem Set 0, in preden smo se prekine, mislila sva traja eno več prostovoljcev, če bi lahko, za končno programa da je morda najbolj opremljanje sploh, glede na današnje prizorišče. Pridi dol. Ja. Da. Kako ti je ime? Uh-oh. To je ok. Oba sta prišla dol. In sem se bo ukvarjal s tem nekako v tem, da v naslednjih desetih sekundah. Torej, pridi dol. Pridi dol. Naj pride sem gor. Daj no. V redu. Poglejmo tukaj. Tako obvestilo resnično hitro tukaj, če želite, da pridejo gor. Bomo naredili dva kroga to. In kako ti je ime? SABRINA: Sabrina. DAVID J. Malan: Sabrina in? YING GEE: Ying Gee. DAVID J. Malan: Ying Gee. Lepo vas je spoznati oboje. David. Torej naš zadnji primer je tu imenuje Ivy je Hardest Game. In zakaj ne moramo vam Raven 1, in vam Level 2. In bomo videli, kako daleč tistega, ki smo dejansko šel. Prispeval študent lani, remix by me tako, da bi bilo to kot tudi v New Haven. In jaz vam igro, ki se dogaja na vključujejo premikanje puščice gor in dol, in pridobivanje Yale do ciljne črte. Gremo. [VIDEO PREDVAJANJE] [MUSIC - NFL NA FOX THEME SONG] [MUSIC - MC Hammer, "U CAN ne dotikajte  TO "] -U Ne more dotakniti tega. U ne more dotakniti tega. Ne more dotakniti tega. Moja, moja, moja, moja glasba me zadene tako težko, naredi povem, oh, moj gospodar. Hvala za blagoslov z moti, da se rima in dve hype noge. To je dobro, če veste, da ste na tla. Super dope kolega iz Oaktown. In jaz sem znan kot tak in to utrip uh, ne moreš dotakniti. Rekel sem ti, kolega U ne more dotakniti tega. Ja, to je, kako živimo in veš, U ne more dotakniti tega. Poglej me v oči, človek. U ne more dotakniti tega. Yo, dovolite mi, doprsni funky lyrics. U ne more dotakniti tega. Sveže nove brce in hlače. Ga imaš tako in ti veš, želim ples. Torej premakniti iz svojega sedeža in se letenje dekle in ujeti ta utrip. Medtem ko je vozni položaj na malo črpalke bit in jim vedeti, kaj se dogaja. Kot to. Kot to. Hladna na misijo, tako povlecite nazaj. Naj vedo, da ste preveč in to je poteza uh ne morete prijeti. Yo, sem ti rekel, U ne more dotakniti tega. Zakaj si stal tam človek? U ne more dotakniti tega. Yo, zvok v Bell šole, bedak. U ne more dotakniti tega. Daj mi pesem, ritem ki jih znoj, da je tisto, kar sem jim daje zdaj. Vedo, ko govorimo o Hammer govoriš o oddaji, ki je hyped. In tesen pevci so znojenje, da jim mimo mic. Ali trak, da se naučijo, kaj to se dogaja, da sprejmejo in zdaj on se dogaja, da gorijo lestvic. Zakonit bodisi trdo delati ali boste lahko tudi zaprete. Ker veš, U ne more dotakniti tega. U ne more dotakniti tega. Ga razčleniti. Stop. Čas Hammer. Pojdi s tokom v spin Če se ne morete premakniti na to potem ste verjetno mrtev. Torej zamahniti z vašimi rokami zrak [neslišno] To je to za zmagovalca zaplešite to in boš dobil tanjši. Premakni drsite križ samo za minuto kaj je vse naredil udarec. Ja. U ne more dotakniti tega. U ne more dotakniti tega. Bolje hyped Fant U ne more dotakniti tega. Pozvonim šole hrbet. Ga razčleniti. Stop. Čas Hammer DAVID J. Malan: To je to za CS50! Najlepša hvala za nam pridružili! Vidimo se zunaj. [END PREDVAJANJE] [VIDEO PREDVAJANJE] [MUSIC - "Seinfeld" THEME SONG] Hej David. Hej, David. Kako gre? Dobro delo, danes. Torej ste mislili o tem, kaj boš naredil za od šale? Ne, sem dobil nič. Kaj if-- kaj pa, če je to od šala? -Kot, Razpakiranje vozički? -Uh-Huh. Saj veš, to je približno nič. Torej je všeč, ni zgodba, ni konflikt, ni rešen. Ne razumem. Kaj je pa potem? Nič. Torej imamo ven šala je približno nič, in nimamo akterje. Kdo bo v tem? Ne, ne, ne. Mislim, bom v njej. -You'll Bo v njem? Ja! Ljudje so vedno govoril jaz sem lik. No, mislim, da je res. Ampak, kdo se bo v njem? To ne more biti samo ti. Si bo v njej, Gavin, Dan, Dan, Colton, Z'Myla, Alysse, Doug, David, vsi. Torej gre za nič, in vsakdo je v njem? -Absolutely Nič. -To Je smešno.