[VIDEO PLAYBACK] [Vrata automobila Gašenje] [CAR pokretanje motora] [Glazbom] -Moving Pravo zajedno u potrazi dobrih vremena i dobre vijesti. S dobrim prijateljima ne možete izgubiti. -Ovo Bi mogao postati navika. -Opportunity Kuca Recimo samo doprijeti i iskoristite ga. -Da! Zajedno ćemo ga uhapsiti. -We'll Trzaj pješačiti, autobus, ili žuta je taksi. -Dammit. -We're Kreće pravo zajedno. -Footloose I fancy besplatno. -Getting Je pola zabave. Dođite podijelite ga sa mnom. -We're Kreće pravo zajedno. -We're Će podijeliti teret. -Mi Ne treba kartu za dobili ovaj show na cesti. -Hej Fozzy, želim vam skrenuti lijevo Ako ste došli do tanjura na cestu. -Da gospodine. Skrenite lijevo na raskrižju. Skrenite lijevo. -Ne Vjerujem. -Cruising Pravo zajedno smo otkrili svjetla na autocestu. -I Svoj put ili moj put. -Pa Vjerujte mi navigaciju. -Movie Zvijezde s jeftin automobila i život s vrha prema dolje. -We're Storming velike brda. -Da, Oluja je u pravu. Ako se snijeg? Ne, ja ne mislim tako. -Moving Pravo zajedno. -Footloose I fancy besplatno. -You're Spremna za veliki put. -je Je spreman za mene? -Moving Pravo zajedno. Premještanje pravo zajedno. Premještanje pravo zajedno. Premještanje pravo zajedno. -Mislim Da bolje navući. -Da gospodine. [END PLAYBACK] [PLJESAK] DAVID J. Malan: Ovo je CS50. I to je kraj tjedna 0, ali početak jednog divnog prijateljstva. Mi smo tako uzbuđeni da bude ovdje na sveučilištu Yale po prvi put s našim prijatelj Scaz, i Jason i Andy. Sve 40 CS50-a TF-a CA je ovdje na Yaleu. A sve vas. A u stvari, to je vjerojatno vrijeme to-- [PLJESAK] Dakle, iako je većina predavanja će doista biti u Cambridgeu ove godine, realnost je da je dizajn, i vrlo svjesno u CS50, Ja mislim da smo bliži točku tehnološki i pedagoški, gdje se to može biti superiorniji obrazovne iskustvo da se uključe sa nekim kolegija u materijalnom online. Doista, reality-- a ako vjerujem ovo philosophically-- je da predavanja nisu osobito djelotvorno sredstvo za isporuku prilično složena informacije. Dakako preko sat plus duge raspone vremena. I doista svakih nekoliko minutes-- Ja sam se sjetiti u college-- ti zoni se za trenutak, li propustili neku složenu temu, i da ste otišli prilično mnogo za sljedećih 45 minuta. A realnost je da li ti si ovdje u New Havenu ili Cambridge ili izvan nje, jednostavnost ima sposobnost za pauzu i brzo naprijed, premotati, hiperveze na srodne resursi, traži puni tekst transkripata i slično je prilika da se Usuđujem se reći za naše online učenike i izvan New Havenu, pruža im priliku stvarno shvatiti konceptualni materijal koji smo uvesti u predavanja sve bolje. No, u konačnici u CS50 je studentska iskustva karakterizira toliko, toliko više od tečaja problem setovi, ili tjedno programiranje projektima, sekcije naravno a na čelu s nastave momci, noćno radno vrijeme vodio Tečaj asistenti i poučavanje momci, i doista kao događaji kao CS50 Puzzle Dan, CS50 je Hack-a-Thon je CS50 Sajam, tjedne ručkove, i još mnogo toga. I tako bilo da ste ovdje u New Haven, ili ugađanja iz daljine, danas u Cambridgeu i ćemo se uskoro opet vidjeti, stvarnost je ovo jedan te isti razred. I mi smo tako uzbuđeni ovdje svi zajedno danas. I tako na kraju semestra, da li ovdje ili izdaleka, i nadamo se da nosite ponosno, sretno, a možda uz malo olakšanja, košulja koja svjedoči vama uzevši CS50. Pa gdje smo stali u srijedu? Uzeli smo pogledati računalna razmišljanje. I to je ono što smo prema destilirana informatika k, barem zasad. Ali mi je destilirana malo dalje u barem tri komponente elemenata. Ulazi, pa što je Problem pokušavamo riješiti? Izlazi, što je odgovoriti nadamo dobiti? A reprezentacija ima mjesta. I nećemo živjeti ovdje nakon što je na binarnom, ASCII ili čak, i slično toliko, ali radije uzeti zdravo za gotovo da može predstavljati ovu informaciju, jer je daleko više zanimljivih dijelova tih problema nisu samo ulazi i izlazi, ali algoritmi koji ide u rješavanju tih problema. A možda sjetiti iz neki dan da mi je prilično tradicionalna Koncept gleda netko gore u prilično velikom telefonskom imeniku ili općenito digitalno ovih dana, Samo vrlo veliki skup podataka. Stvarno veliki popis kontakata, s puno imena abecednom razvrstani. A mi shvatili da dok sam mogli pristupiti ovaj problem jednostavno pomoću ravni approach-- stranicu po stranicu, ili čak dva a na prvi time-- smo shvatili da je intuitivniji algorithm-- samo vrsta podjele i osvajanja opet problem, i opet, i again-- ga prepolovi jedni Vrijeme, dade nam ovu zelenu rezultat. I to je toliko laskati jer sugerira da čak i taj problem dobiva veći i veći, kao što je slučaj ovih dana s podacima setovi i reality-- Facebook i Google Rezultati pretraživanja i volimo-članovima radi naš algoritam obavljati jednako učinkovito s tim većim ugriza kao što je učinio, čak i sa manjim ugriza. Sada moli pitanje, što može mi zapravo riješiti na sličan način s ovom vrstom intuicije? Ova vrsta podjele i osvajanja? Pa, mogli bismo učiniti nešto kao što je to danas ovdje. Možemo uzeti pohađanje. Dakle, možda kao 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- neće biti sve što učinkovitiji. Pa čekaj, Osnovnu školu. 2, 4, 6, 8, 10, 12, 14, 16, 18 i tako dalje. Ali mogli bismo napraviti malo bolje? Prilično sam siguran da ne mogu to učiniti sama. Dakle, ako ćete humora nas za samo trenutak smo donijeli s nama algoritam koji je samo je dobio tri koraka, ali to ne require-- ako vas Ne mind-- sve nas stand up, ako bi. Dakle, uz sve nas sada stoji, korak jedan od tog algoritma je sljedeći. Stand up i dodijeliti se broj 1. Dakle, u ovom trenutku, doslovno svi u ovoj sobi nadam se misleći na sebe, No nespretno, broj 1. Sada korak dva od ovog algoritma je će uključivati ​​sljedeće. Korak dva, uparivanje s s netko stoji, dodaj vaše brojeve zajedno, i usvojiti iznos kao svoj novi broj. Brzo duševne ček. Koji broj je svatko razmišlja sada? Dakle 2, osim možda za jedno, nespretno, usamljen čovjek. Ako imamo neparan broj ljudi u sobi. Dakle, jedna osoba može i dalje biti broj 1, to je u redu. Ali Treći korak ovdje, jedan od trebali sjesti. Drugi bi trebao vratiti na korak dva, i ponavljam, ako bi. Dakle, ako i dalje stoji, što bi trebao biti Među onima koji ide natrag na korak dva. Nastavi. Nekoliko ljudi još uvijek stoji. Dakle, ako još uvijek stoji, upariti s nekim. U redu, nestajanje dolje. Nekoliko ljudi još uvijek stoji. Ja ću pomoći ako bude potrebno. Zapamtite ključnu takeaway ovdje, kako mnogo brže nego što je to mene brojanje. Tako ćemo vidjeti. Mogu pomoći. Pa što su broj još uvijek razmišljate o? PUBLIKA: Ja sam na 44. DAVID J. Malan: 44, tako da idete naprijed i sjesti. Koji broj ste mislili? PUBLIKA: 74. DAVID J. Malan: 74. Dobro, ići naprijed i sjesti. Tko još uvijek stoji? 86. I je li itko drugi još uvijek stoji? Koji broj? Čuo sam 67. A onda je u vrhu? 32. Bilo tko drugi i dalje stoji i razmišljanja o broju? Oh, bok. Oprostite. Vraćam se odmah. 42. Itko drugi? PUBLIKA: 47. DAVID J. Malan: 47. Je li itko drugi još uvijek stoji koji nije broje? Dakle konačnog broja ljudi u sobi da ima 497 mjesta is-- od kojih su svi su filled-- je 390. Dakle, to je super. Uskoro ćemo raspraviti pojam buga u računalni program. No, mi ćemo se vratiti na to prije dugo. No, u teoriji, što bi se moglo dogodilo upravo sada? Dakle, iako je bilo tri velike koraka do tog algoritma, svaki od tih bio je samo vrsta jedne velike operacije. A bilo je to cikličnosti na njega u da, ako ste još uvijek stoji, što čuva ide od koraka tri na dva, Korak tri na dva, tri koraka do dva. No, ono što je zadržao događa na svakoj iteraciji? Svaki ciklus ovog kruga? Što se događa drugdje u sobi? Ne samo da je ista stvar, ali ono se događalo polovici vas? Sjeo. I tako u laži ovaj uvid, slično kao telefonski imenik, primjerice, u da, ako polovica vas su sjedaš svaki put, problem počinje s možda 400 ljudi, zatim do 200 ljudi, od 100 ljudi, zatim 50 ljudi, i tako dalje. I tako smo smanjiti u Teorija na samo jednu osobu, razmišljam o ukupnoj vrijednosti od svakoga. Sada je stvarnost, neke društvene dinamike, i neki aritmetički pogreške može doprinijeti tom krajnji bug. No, u teoriji, dok sam je još uvijek računajući daleko, uzimanje nekoliko desetaka koraka, ili stotine koraka na sebe strani, računati puna soba od 500-ak ljudi trebala uzeti daleko manje koraka, jer možete samo podijeliti 500 i 1/2 toliko puta. I tako kao s telefonom Rezervirajte primjer neki dan, smo imali nešto logaritamska takoreći, pri čemu, ako smo svi bili djeluju unisono, i ignoriranje dodatak pogreške, zar smo postigli upravo koja vrsta trčanje vremena? Sada bi bilo pošteno, vrsta varao, u da sam iskoristio drugu resurs. Budući da je samo jedan od mene, Iskoristio sam stotine tebe. Ali to bi se moglo reći da je Primjer paralelnog procesiranja, ili stanje umjetnosti jako puno u modi gdje računala ovih dana imaju više procesora ili više tehnički, još više jezgri, i može li više doista stvari odjednom, baš kao i ti sve što radite tamo, paralelno. Ali sjećam da je ono što također je u srijedu je pokušati uhvatiti ovaj intuiciju i formalizirati to u kodu. Nešto kao pseudo-koda. A u stvari, a nadam se da ćete oprosti, to je kao 80 stupnjeva u ovdje. Zato ću uzeti ovo off za samo malo. Ono što sam pomislio da bih napraviti je tranzicija Sada na aplikacijski pri čemu opet angažirati publiku, ali napisati program na engleskom jeziku sintaksu kao, s kojima se riješiti ovaj problem ovdje. [VIDEO PLAYBACK] -To Je maslac od kikirikija vrijeme žele. Kikiriki maslac Jelly vrijeme. Kikiriki maslac Jelly vrijeme. Put ya! Put ya! Put ya! Put ya! Sada tamo idete! Izvoli! Izvoli! Izvoli! Kikiriki maslac mliječi! Kikiriki maslac mliječi! Kikiriki maslac mliječi! Kikiriki maslac mliječi! Kikiriki, maslac od kikirikija mliječi! Kikiriki maslac mliječi! Kikiriki maslac Jelly s bejzbol palicom. [END PLAYBACK] DAVID J. Malan: --that video, ali to je malo zarazna, ako ne i malo neugodno. Ali to učiniti, mislio sam što bismo učiniti je pokušati napisati program zajedno, za koje nam treba tri volontera. Moraju biti ugodno na kameri i interneta. Sam, dođi gore. Ljubičasta košulja, upravo ovdje, dođi gore. I od ovdje, neka me ići malo dalje natrag. Crimson i plave majice, dođi gore. Savršeno. Hajde sada. Dođi gore, idemo gore. A što je vaše ime? Erica. David lijepo da zadovolji vas. Ako želite iskoristiti ovu stolicu ovdje. To je Sam. Kako se zoveš? Antonio. Antonio, lijepo da zadovolji vas. Erica i Sam, ako želite željeli imati sjedište ovdje. Ono što smo došli pripremljeni s, jer su ti dečki otkrivaju, je sastojci s kojima napraviti kikiriki maslac i žele sendvič. Sada bi to moglo biti nešto što što se jako zdravo za gotovo. Ali smo dali jedni naše tri volontera here-- dva volontera i Sam tu, kruh svakog, ploča, nož, staklenku žele ili džem, i staklenku maslaca od kikirikija. A cilj pri ruci sada će biti za ova tri napraviti maslac od kikirikija i žele sendvič. Ali ono što ćemo učiniti je očekivati audience-- jer sve vas Sigurno znate kako to učiniti to tako dobro u reality-- će nam korak po korak upute. Pseudo-kod, ako hoćete. Dakle, ja ću igrati ulogu pisara ovdje. I ja imam malo do-do lista, i kako svaki od vas, jedan po jedan, doziva potencijal nastavni, ja ću zapisati, ponovite po potrebi. I onda ti dečki će napraviti kikiriki maslac i žele sendvič samo radi ono što su rekli. Tako misle o sebi kao računala. Vi samo možete učiniti ono što ste rekli. Nema pretpostavke, bez pitanja. Vi samo trebate to učiniti. Pa tko bi želio opasnosti prvi Uputa za izradu PBJ sendvič? Na balkonu tamo. PUBLIKA: Otvorite vrećicu kruha. DAVID J. Malan: Otvorite torba kruha, ako hoćete. Tako ćemo vidjeti. Ajmo ponoviti, i dobiti malo precizniji. Dobar način za početak ipak. Korak dva, netko drugi. Sada nitko ne želi volontirati. Korak dva, pred. PUBLIKA: Otvorite unutarnji torba kruha kao dobro. DAVID J. Malan: Otvorite Unutarnja vreća kruha kao dobro. Velika mi učenje. Malo preciznije. Idemo ovaj rad. Da, u zelenoj košulji. PUBLIKA: [nečujan] DAVID J. Malan: kriške kruha. Nježno uklonite dvije kriške kruha. To je dobro. Četvrti korak, netko drugi? Više ovdje, zar ne? PUBLIKA: [nečujan] DAVID J. Malan: Mjesto kruh na tanjuru. Korak pet? Korak pet, zar ne? PUBLIKA: [nečujan] DAVID J. Malan: Na vrhu of-- oh, ruku. Stavite ruku na vrhu kikiriki maslac. Je li to ono što sam glavu? PUBLIKA: Da, i odvijte. DAVID J. Malan: And-- Ponovit. PUBLIKA: [nečujan] DAVID J. Malan: I staviti Poklopac uz maslac od kikirikija. Lagano stavite ruku na vrh kikiriki maslac, i odvijte i stavite poklopac uz maslac od kikirikija. OK, korak šest. Korak šest, netko drugi. Da? PUBLIKA: [nečujan] DAVID J. Malan: Ponovit. PUBLIKA: Ponovite korak pet opet. DAVID J. Malan: I ponovite korak pet opet, koji će stvoriti malo problema Sada, ako radimo ovaj korak po korak. Dakle, sada smo se vratiti na korak pet. Lagano stavite ruku na vrhu maslaca od kikirikija i odvijte i staviti poklopac pored maslac od kikirikija. Zatim shvati maslac od kikirikija i ponovite korak pet opet. Dakle, zamijenit ćemo da beskonačna petlja, ako hoćete. Korak sedam, netko drugi. Da, u leđa. PUBLIKA: [nečujan] DAVID J. Malan: -On iznad ostalih. PUBLIKA: [nečujan] DAVID J. Malan: Na s druge strane na drugu vrhu. Želite li samo doći ovdje? Kako sam završiti pouku? Što je ostalo od nastave? PUBLIKA: Ignoriranje taj dio. DAVID J. Malan: Ignoriranje taj dio. Počnimo ispočetka. Korak sedam. PUBLIKA: [nečujan] DAVID J. Malan: Uhvatite s suprotstavljene hand-- to je dobro. To je zapravo dobro. PUBLIKA: [nečujan] DAVID J. Malan: I plastični jar-- PUBLIKA: [nečujan] DAVID J. Malan: I twist-- PUBLIKA: [nečujan] DAVID J. Malan: Za dvije sekunde. Samo otvorite staklenku maslaca od kikirikija. Nadam se da ćete oprostiti. Dakle, pretpostavimo smo stigli. Otvorite kikiriki maslac staklenku. [PLJESAK] DAVID J. Malan: Korak osam, idemo. Korak osam, da, na leđima. PUBLIKA: [nečujan] DAVID J. Malan: Dobro. Korak devet, zar ne? PUBLIKA: [nečujan] DAVID J. Malan: --out od kikiriki maslac jar. And-- i što? PUBLIKA: [nečujan] DAVID J. Malan: I stavi nož natrag u kikiriki maslac. Korak deset. Korak deset. PUBLIKA: [nečujan] DAVID J. Malan: Stavi nož van, a zatim uklonite brtvu. Lijepo. Off maslac od kikirikija. U redu, korak 11. PUBLIKA: [nečujan] DAVID J. Malan: OK, siva računala slijedite plavu ili crvenu računalo. Dobra. [PLJESAK] DAVID J. Malan: Donesite nam dom. Par više koraka. Što je sljedeće? Koraci 12. Korak 12. Da? PUBLIKA: Stavite jednu od kriške Kruh lagano na jednoj od svojih ruku. DAVID J. Malan: Jedan od vaših ruku. A onda, korak 13. Da? PUBLIKA: [nečujan] DAVID J. Malan: -On kriška kruha. Dobra. Prilično dobro. Korak 14, da. PUBLIKA: Poništi korak 13. DAVID J. Malan: Poništi korak 13. Prijeđimo na žele. To je 100- korak program a, ali smo bili na korak 15. Da. PUBLIKA: [nečujan] DAVID J. Malan: 7 do 13, Hladetina, jer oni otišli tako dobro. Ponovite korake 7 do 13, korištenjem žele. Dakle shvatiti donju polovicu Jelly staklenku s jedne strane na vrhu. S druge strane, od Drugi vrhu, ignorirajući taj dio, shvatiti sa suprotnim rukama, poklopac i plastične posude na dnu, i uviti dvije sekunde. Zatim otvorite mliječ staklenku. I na kraju, pokušajmo daj nam nešto jestivo. Korak 16. Pa zašto ne bismo ga ostaviti tamo. Hvala vam toliko za naša tri volontera. [PLJESAK] Imamo malo CS50 stres loptica za vas. To će biti Sendvič but-- pa što je točka, izvan vlasništvo malo zabave s algoritma? No, realnost je da čak i kada ste programiranje računala, morate biti super precizna. Kao kompleks ili zastrašivanjem kao svoje računalo može vrlo dobro biti s vama, na barem kada nešto pođe po zlu, realnost je da je prilično glupa Uređaj koji je izumio nas ljudi, i može učiniti samo podskup što smo do-- ponekad sigurno faster-- ali ne znam kako napraviti pretpostavke. Ona ne zna kako da se na na istoj valnoj duljini kao i vi. To će učiniti samo točno što reći. I vi ćete biti pogođen, Možda, kao što smo započeli pisanje stvarnog koda s Prvi problem setovi i izvan nje, samo kako je lako napraviti pretpostavka kao čovjeka, i ne predviđaju moram nositi to slučaj, ili da je kutak slučaj, takoreći, to bi moglo vrlo dobro nastati ako na primjer Sam imala samo iscijedljiv staklenku mliječi, dok svi ostali imali neke staklenkama kao dobro. Dakle, prije nego što smo okrenuti našim pozornost na neke stvarne koda, dopustite mi da uvesti Naravno je glava ovdje na Yaleu. Naši prijatelji Scaz, Andy, i Jason doći i pozdraviti. [PLJESAK] SCAZ: Izgubili smo Jasona privremeno. Bok opet, svatko. Moje ime je Scaz. Ja sam predavao na Yaleu od 2001. godine. A kad ja ne učim, moje istraživanje je u robotici i umjetne inteligencije. I najava da imam danas je da se s početkom u par tjedana, ćemo se donosi neke dodatnog materijala za CS50 razgovarati O inteligencije softvera. Idemo razgovarati o tome mjesta poput Netflix i Hulu može preporučiti filmove koje možda želite gledati. Gdje ćemo razgovarati o tome vozač-manje automobila zapravo rade. A mi ćemo biti u mogućnosti masu ove stvari u pojmovima da ste učenje u ovoj klasi danas. Zbog svih tih stvari su izgrađena na istom temelju. I to je ono što ovaj Serija će istražiti. Pa ja sam stvarno obličje naprijed to viđenje više od vas sve, i ti si idući u dobiti vidjeti više od svih nas vrlo brzo. Dopustite mi onda uvesti Jasona. Jason: Pozdrav svima. Moje ime je Jason. Ja nažalost otišao Harvard kao undergrad. To će se smanjiti iz stvarnog toka. I sada sam ovdje kao predavač u računalo znanost odjel. I ja pomaže pokrenuti tečaj s Scaz, David i Andy. ANDY: Hej dečki. Moje ime je Andy. Ja sam zapravo samo Yale Student na pozornici upravo sada. [PLJESAK] Ja sam u Berkeley College, podrijetlom iz Solon, Ohio. I ja sam bio jedan od onih klinaca gdje, kada sam došao na Yaleu, Stvarno sam mislila da nikada neću morati gledati na broj ikada opet. A onda sam shvatila da je potrebno i znanost i QR bodova za diplomski. I tako je moj brucoš proljeće, uzeo sam klasa, CS, uvod CS klase ovdje na Yaleu. Bio sam poput, ovo je kao zapravo prilično cool. I dok sam zapravo završio progla Kao globalni odnosi veliki, vještine Naučio sam u CS i programiranje tako odnosi se na bilo kojem području se odlučite za napraviti. I osoblje ovdje na Yaleu, mi smo bili tako teško na poslu pripremiti za vas momci. I mi radovati se unaprijed viđenje sve u rubrici i radnog vremena. Pa da. [PLJESAK] DAVID J. Malan: Hvala vam. Dakle, prije nego što je počeo klase, smo imali priliku hodati okolo kampusu sa mobitel i uzeti neki selfies u video obliku stvarno moj prvi obilazak Yale kampusa ovdje. I tako smo mislili da ćemo podijeliti grubi rez točno to što Scaz i Andy Jason mi je oko kampusa. [VIDEO PLAYBACK] [Sirene] -David. -dobrododli Na Yale. -Drago mi je vidjeti te. -lijepa Te vidjeti. -Može Idemo na turneju? -Let Idemo na turneju. -Road Turneju. -Ova Znak je tamo neko vrijeme. -Whah, CS50. -Hurry! Idi, idi, idi, idi. Trebali bi [nečujan] Harkness toranj. -I Smo vidjeli da par puta. [PLJESAK] -Pogledajte Kako za bicikl! Ahh! Pozdrav Frank. Što se događa, dečki? -Kako si? -Drago mi je vidjeti te. -dobrododli Na video. Nemojte se ponašati previše uzbuđen. -Ja Volim Silliman. Ahh! -To Je bilo oko tri sata otkako Jason je sladoled i Nutella. Dakle, moramo prestati natrag Silliman za malo. -To Nije ni [nečujan] ipak, samo činjenica da su ga ovdje tako nevjerojatna. Čovječe, postoji Nutella u svakom obroku. -Postoji Je i prošle godine. -Da. -Reci mnogo o Yaleu dosad. Ali ja sada da je TD tamo. I to se smatra izvan kampusa. -Here Imamo gotičke arhitekture. Svjetski poznat. Imamo nešto više gotičke arhitekture. I izgradnja i više gotička arhitektura. Bok. Ovo je mjesto gdje imamo radno vrijeme Utorkom kroz četvrtkom u Hogwartsu, kao [nečujan]. -U redu. To je to za turneju. Mi smo na Yale University-a Pravni fakultet, gdje je današnje predavanje je oko uzeti mjesto. Idemo krenuti u. [END PLAYBACK] DAVID J. Malan: I što nas dovodi ovdje. Dakle do sada, mi smo bili s naglaskom na pseudokod, što je to engleski-kao sintaksu. Ona nema propisanu specifikacije. To je jednostavno koristite neki intuitivno jezik, ako vas želite objasniti što želite učiniti. Ali neka je početi sada tranziciji do koda, kao i većina ljudi će reći. Ali točnije, nešto poznat kao izvornog koda. To je jezik koji se ljudi napisati da računala ultimately-- eventualno nakon nekog broja steps-- konačnici razumije tako da znate kako to učiniti nešto. Da si vidio u prolazu to možda u srijedu. Ovo je primjer kako nevjerojatno, underwhelming kada pokrenete jednostavno kaže: "Hello World". I to je napisano na jeziku koji se zove C, što je vrlo slično sintaktički na mnogo drugih jezika da možda ne znaju, ali možda su čuli kao Java, i C ++, i Python, Ruby i, i slično, i zaista, mi ćemo provode mnogo semestra pomoću C, te prema kraju od semestar, oslanjajući se na njega, i uvođenje bilo broj drugih jezika. Među njima PHP i JavaScript, jezik baze podataka naziva SQL. No, s C, što ćemo imati ovo odozdo prema gore razumijevanja od točno kako računala rade, Što možete učiniti s njima, i kako možete riješiti probleme sve učinkovitije ovo raslojavanje da smo razgovarali u srijedu, i stajanja na ramenima druge. No, više o tome doći. Danas gledamo jednostavniji okoliš, ali bitno identična okoliš poznat kao ispočetka Naši prijatelji na MIT Media Lab. To je grafički programski jezik, ispočetka, gdje možete povući i ispustite stvari koje izgleda kao slagalice koji samo Interlock ako to čini logično ili programska smisla da to učini. Ali to će nam omogućiti da razgovarati o svemu istog programa osnove da neki od vas Možda već znate, da mnogi od vas ne bi mogli znam ništa bez da se zapeli iskreno, u intelektualno nezanimljivo sintaksa zarezom, i zagrade, i citira, i slično. Svi koji, rano na, su smetnja na ono što su zanimljivi i istinski korisne ideje. Tako ćemo uzeti brzo pogled na okoliš ovdje, tako da znam što čeka. A u stvari, među igrama smo Možete igrati zapisano nekoliko programa po CS50 vlastitih bivših studenata. Jedan od njih, ja, ja ću biti ovaj zapisano u diplomski školi za mene. Ako sam mogao uzeti jedan volonter tko je voljan igrati igra za vrlo prvi put. Naravno. Dođi gore. Kako se zoveš? PUBLIKA: Angela. DAVID J. Malan: Angela, dođi gore. Dakle, ispočetka je bila za nekoliko godina. I kad sam bio u Graduate School, Bio sam križ registrirani na MIT, da profesor Mitchel Resnick a tečaj o obrazovnim tehnologijama. I bili smo među prva studenti u svijetu zapravo beta Ispitivanje ispočetka. A moj projekt je ono što je Angela sada je milostivo volontirala Za igrati zove Oscartime. Tako ću ići naprijed i dvaput kliknite ikonu ovdje. To će otvoriti programiranje okruženje koje ćemo uskoro zaroniti. Idem cijelom zaslonu je za Angelu, ovdje. Idem pogoditi zeleno Zastava u samo trenutak. I onda puno smeća će pasti s neba. I vi ćete koristiti miša Ovdje je zapravo za povucite i ispustite smeće u Oscar kantama za smeće. Dakle, ako želite ići naprijed i kliknite zelena zastava, igra će započeti. [Glazbom] Oh, volim smeće. Sve prljavi ili prljav ili prašnjava. Sve isprekidano ili trulo, ili zapušten. Da, volim smeće. Ako stvarno želite vidjeti nešto trashy, pogledajte ovo. Imam ovdje jedan tenisica to je pohabana i istrošen. To je sve puno rupa drži i vezice su poderana. Dar od moje majke dana sam se rodio. Ja ga volim, jer it's-- DAVID J. Malan: --green ovih dana jednostavno biti bacanje sve u smeće. I što je jedan od CS50 vlastiti did-- osoblja Jordan, koji vas možda susret today-- ima zapravo ažurirana to za današnje vrijeme. I tako mi dopustiti da se otvori remix umjesto za Angelu. A mi ćemo igrati ovaj umjesto za nekoliko trenutaka u kojima sada ste će morati odlučiti između bilo baciti nešto u smeće, ili ga reciklirati ili komposta ga. Tako da je malo pritisak na vas da se to pravo pred vaš 392 do 497 kolege ovdje u dvorani, ako bi. [VIDEO PLAYBACK] [Glazbom] Oh Volim smeće. Sve prljavi ili prljav ili prašnjava. Sve poderan ili trule ili zapušten. Da, volim smeće. Ako stvarno želite vidjeti nešto trashy, pogledajte ovo. Imam ovdje jedan tenisica to je pohabana i istrošen. To je sve puna rupa i vezice su poderana. Dar od moje majke dana sam se rodio. Volim ga zato što je smeće. Oh, volim smeće. Sve prljave, ili prljav, ili prašnjava. Sve poderan ili trule ili zapušten. Da, volim smeće. Evo još malo trulo stvari. Imam ovdje neke newspaper-- [END PLAYBACK] DAVID J. Malan: --are zapravo kompostabilnog. Ali hvala na naše volonter, Angela. Imamo stres loptu za vas ovdje. Dakle, hvala vam. Dakle, to je jedan je napisao mene. No, sada je u stvarnim bivšeg studenta koji provodi ovo, što je igra. Sve na tom jeziku naziva Scratch, da ćemo uskoro oguliti slojeve. Ali ako bismo volimo-članovima kako o volontera? Tako je. Dođi gore. Kako se zoveš? Pogled? Lance. Lance, dođi gore. Drago mi je. Dođite na ovaj način. Dakle, to bi se moglo imati Tema upoznati neke od vas. Ali vidjet ćete da previše ne može biti interaktivnost, gdje ste zapravo mogli biti Uloga lika kretanje. Drago mi je. David. Ja vam dajem, Pikachu. Upute će o doći na zaslonu. Ali ukratko, ti si idući u žele uhvatiti ukusna stvari, i izbjeći bombe i druge stvari. Sa kursori u cijelosti. Tako hit razmaknicu. -Pikachu. DAVID J. Malan: Catch stvari na lijevoj strani, ne uhvatiti stvari na desnoj strani. [Glazbom] Dakle, jedna posljednja ovdje. Ako smo mogli imati jednu više volontera ovdje. Mislili smo da ćemo stvoriti nešto from-- u žutoj shirt-- od srijede. Kako se zoveš? Marija, dođi do Marije. I podsjetiti srijedu smo uveli pojam binarne i binarni žarulje. To je zapravo sada Provedba tog istog sučelja da smo imali na iPad sa svjetlom žarulje, ali ovdje digitalno donio. I umjesto da napraviti stres ball-- lijepo da zadovolji vas, Davida. Donijeli smo malo svjetlo žarulje od Cambridgea. Ako možete, klikom na one lukovice da ih uključivanje i isključivanje, se s binarnom zastupljenost kažu 256. I vidjet ćete u srednje, trenutna brojka. Tako da je jedan je na. Tako je lijevom malo je uključen. Marija: Da, [nečujan] DAVID J. Malan: Pa, tako da imamo just-- oh. Dakle, to je 128 kolona. Tako smo i do 128. Moramo doći do 256. A možete prtljati na i off, nije velika stvar. Ili možete pogoditi 128 više puta, ako želite. Dobro, dobro. 24. Da, sve bliže. Bliže! Oh, što je problem onda? Pa što je problem? Dakle, ono što trebamo riješiti ovaj problem? Dakle, moramo još malo. I ovo je savršeno razumno, u stvarnosti, zar ne? Ako želite brojati od broja 1 do 2 do 3 do 4 do 5, 6, 7, 8, 9 zapravo prevrnuti do 10, ti si Trebat će dodatni zalogaj. Pa neka je zapravo natrag ovdje, i dolazi do with-- da je očito trebala biti postavljena. Vi ne možete raditi 256 sa samo žarulju. Pa o tome kako jednostavno broja 50? Broj 50. Izvrsno. Veliki pljesak za Mariju i njezin kao dobro. Hvala. Dakle, ovo topic-- namjerne kao da was-- će zapravo ponavljati. Najveća vrijednost koju možete predstavlja s osam bitova ili jednog bajta, je doista 256. Ali ne ako počnete računajući od 0, kao što smo Čini se da rade tako da sve one bitova off. No, sada ćemo zaroniti u podlozi Provedba tog okruženja, i zafrkavati osim neke od tih ideja. Dakle, u jednom trenutku smo oko vidjeti nekoliko različitih programskih osnova. Prvi od kojih ćemo nazvati izjavu. Vrsta glagola, ako hoćete. Akcije. Stvari koje treba obaviti. I u jednom trenutku vidjet ćete blokovi koje izgledaju ovako. Recite "Hello World", na primjer. Ili pričekajte jednu sekundu. Ili igrati zvuk Mijau. I doista okoliš u što ćemo biti događaj ovaj naziva nule. I ako sam podići Scratch bez učitavanjem bilo stvarni broj, neka je uzme brzi pogled na ovaj korisničko sučelje, da se tako izrazim. Kontrole s kojima smo u interakciji. Na vrhu lijeve ovdje od zaslon, ispod izbornika, imamo na pozornicu, da tako kažemo. Dakle Scratch je ono što ćemo nazvati Sprite. To je znak. I on se može kontrolirati pisanje programa protiv njega. I on će biti u mogućnosti to premjestiti gore i dolje i lijevo i desno u tom okruženju, ne samo pomicanjem miš, ali programski. Ja mogu reći da ovaj prohoda pravo, šetnja lijevo, gore, dolje ili slično. I ja mogu uvesti druge Duhovi ili znakova kao dobro. Doista, na dnu, gdje je ovdje vidjet ćete popis duhovi. U ovom trenutku, samo sam jedan, ali mogu stvoriti više, i oni će se pojaviti upravo ondje. Dakle, ako ste natrag na trenutak, kao što je Oscartime-- primjerice, Oscar, na lijevoj strani, smeće može, bio je duh. A stvar je u sredini, đubrište, bio je još jedan duh. I kompost bin je još jedan duh. I svaki komad smeća i recikliranog materijala koja je padala s neba Također je duh, od kojih se individualno programirati. Kako programirate? Pa, ovdje na desnoj strani ruka strana je skripte područje. I ovo je mjesto gdje možemo povucite i ispustite slagalice. U tjedan dana, to će biti gdje smo ravnopravno pisati kod s više od tipkovnice, ali za danas ću se povučete i ispustite slagalice je palete za koje mogu sve naći ovdje desno u sredini. Doista, u sredini Ovdje postoji cijela hrpa kategorija slagalice komada ili blokova. Jedan je vezan uz pokretu, izgleda, zvuk, olovke ide gore i dolje, podaci, događaji kontrolirati. Nije baš sigurna još što sve to znači, ali vidjet ćete da oni ' je lijepo kategoriziran. I napisati program u Scratch, neka je učiniti upravo to. Idem početi pod Događaji i povucite ovaj jedan ovdje. Kada zelena zastava kliknuli. Sad zašto je to jedan? Pa podsjetiti da naši volonteri došao gore, prva stvar koju sam ili ih nije bilo kliknite da zeleni Zastava u gornjem desnom kutu. A to samo znači početak programa. Dakle, kada taj događaj dogodi, ono što želim učiniti? Ja ću ići po izgledu, i ja ću učiniti "pozdraviti". I ja ću to promijeniti i reći nešto poput "Halo Yaleu." A sada ću uvećanje van, kliknite zelenu zastavu, i voila, ja sam napisao program. To nije sve što je uzbudljivo samo još, ali ovo je točno gdje je svaki onih autor započeo, oba s Pikachu, i binarni žarulje i Oscartime, i tako mnogo više primjera. Možete početi super jednostavan i onda počnete sloj, i dodati na značajke i funkcionalnosti. Pa što su ti slojevi će se sastojati od? Pa, nakon izjave, također ćemo ima stvari koje su malo više fancily naziva Boolean izrazi, Nakon nekoga po imenu bool. I logički izraz je jednostavno izraz koji je bilo istinito ili lažno, da ili ne, 1 ili 0. Bilo polarne suprotnosti kao što je to. To je bilo istina ili ne. Ali također ćete vidjeti one koje može izgledati ovako. Tako na primjer, je miš dolje? Oni su vrsta pitanja, ako hoćete. Miš je ili dolje, istina ili nije, lažna. 1 ili 0, ako hoćete, teži biti mapiranje. Istina je 1, lažna je 0. Pa što je manje od toga? Ili kako je to manje od toga? To je pitanje od sorti. A ako ste stavili dva brojevi u njemu, bilo x će biti manji od y ili jednako y, ili veća od y, ali ovaj blok vidjet ćemo, samo je će odgovoriti na pitanje, je to manje od toga? Mi također može vidjeti nešto ovako. Dodirivanje pokazivače miša. Tako je u nule, možete pitati pitanje, je Sprite dodiruje pokazivač miša? Drugim riječima, je pokazivač lebdi preko kape, ili u protuvrijednosti? Vidjet ćemo anding stvari zajedno. Možete postaviti dva pitanja, i pobrinite se da su obojica vam dati da ili pravi odgovori prije donošenja odluke da nešto učini. Ali kako onda donositi odluke? Pa, mi imamo te uvjete. A vidjeli smo to u našem primjer telefonskog imenika. Gledajući na lijevo ili pravo za Mike Smith. A u stanju, nešto potencijalno, ako je logički izraz istinit. I doista, primijetiti oblike sada. Tu je ovo rezervirano sada na pretek gdje možemo fit-- ako sam natrag jedan slide-- tom obliku. To nije posve iste veličine. I doista, vidjet ćete da Blok mijenja veličinu stvari dinamički da stane slagalice, ali oblik je ono što je važno. Ova stvar izgleda kao da, i doista je otprilike isti oblik koji bi trebao stati tamo. I ako želimo nešto napraviti ovako ili onako, ako inače, imamo ovu zagonetku komad u Scratch kao dobro. Sada pretpostavimo da je htio učiniti ako, inače ako, ili drugdje. Drugim riječima, trostrani vilica na cesti. Pa što možete učiniti samo Bacimo li pogled na ovo? Ja mogu uzeti ovaj puzzle komad, i to se ne čini da stane, ali opet, ispočetka se događa ponovno veličinu lijepo za nas. Mogao bih početi sloj ove stvari zajedno. Pa sad imam tri put vilica, ako je to istina, to učiniti. Inače, ako to druga stvar je istina, ići na ovaj način, drugi ide ovaj drugi način. A u Muppet Movie je vilica na cesti, da tako kažemo, između Yalea ili Stanford, bio je upravo to, samo dva uvjeta. Ili idite na ovaj način, drugi ide tim putem. Pa, i petlje postoje u programiranju. I sam se to već u klase i pseudokod koda, a sigurno je u onima Scratch programi zauvijek. Scratch je ovaj puzzle komad koji samo će vam učiniti nešto zauvijek. A ponekad želite učiniti nešto zauvijek. To nije nužno bug, to je jer želite sat zadržati ide, ili igra nastaviti igrati. Ili možete odrediti konačan broj koraka, kao što je s ovom ponavljanja bloka ovdje, koji će ponoviti nešto 10 puta. Možemo postaviti varijable, uskoro ćemo vidjeti. A s varijablama, sličnim duhom da algebra, kao što su x, ili y, ili z. To je nešto simbolično koji može pohraniti neke vrijednosti, neke podatak, da možda želite zapamtiti za kasnije. Najbolji primjer za to može biti igra u kojoj imate rezultat, kao u Pikachu. Koliko komada torte i sitnica si uhvatiti? Pa, to bi moglo biti varijabla zove rezultat koji počinje na 0. I onda svaki put smo uhvatili komad torte ili slatkiša, ili slično, to dobiva porastao. Ona dodaje na jednu po jednu. I tako varijablu pohranjuje podatak kao što je to. Zatim tu je polja, a mi ćemo doći natrag na to u tjedan ili dva vremena, ali niz je vrsta kao što je inventara ili torba, unutar od kojih možete staviti virtualne stvari. To vam omogućuje da pohraniti više od jednog komada informacija. A to bi moglo biti korisno ako je u igri, ti si vrsta šetnju branje stvari. A možda želite zadržati sve one komada torte okolo, a ne samo jesti ih jedan za drugim. A onda tu je ljubitelj konstrukt mi ćemo doći nazivaju funkcija ili postupaka. I iako ćemo brže ovdje, mi ćemo vidjeti da su vrlo prirodno rješenje za probleme da idemo susret. Kao naši programi pokrenuti sve veći mi ćemo početi primijetiti obrasce u kod koje pišemo, slagalice smo povlačenjem i ispuštanjem. I čim se primjetiti radi nešto opet i opet, ili još gore kopiranje i lijepljenje programiranje kod koji ste napisali, to je vjerojatno prilika da se faktor sve što bi kopiranje i lijepljenja, i stavljajući ga nešto naziva "funkcija". No, više na one u mnogo Više detalja prije dugo. A tu je i ljubitelj značajke. Za one od vas više udoban, ili uzimanje APC ili ekvivalent, Blok zapravo podržava stvari kao niti i događaje i još mnogo toga. Dakle shvatiti da ima prilično visoki strop, iako je također vrlo široko dostupna ljudi koji nikada nisu programirani prije. Dakle, istina, neka je pogledati na jednostavan program ili dva. Već smo pogledali kako smo Možda pozdraviti s nule. Dopustite mi ići naprijed i otvoriti malo više zanimljiv program da sam napisao unaprijed. I ovo se zove Pet the Mačka. Svi ovi programi će biti dostupan na web stranici CS50. Doista, već tamo. Tako možete preuzeti ih, i igrati se s njima, i Problem Set 0, koji Također je na web stranicama tijeku je, ste ohrabreni da hoda po njima. A osim toga, imamo Broj šetnja kroz video online u kojoj sam i CS50 tim doista hoda kroz svaki od ovih primjera na mnogo sporiji ritam, vrlo brzo prosljeđivati, ili namotom tempo, tako da možete hodati kroz njih u svoje slobodno vrijeme, kao dobro. Dakle, ovdje je ispočetka na lijevoj strani. Evo program na desno da sam već prije napravili. Pa neka mi uvećanje na to. A mogao je netko na engleskom, znajući ono što znam, samo od sada kao kako Scratch djela, vrsta kažu u engleskom izrazu ili kazne, Što je ovaj program naizgled učiniti? Da, u narančastoj košulji. PUBLIKA: [nečujan] DAVID J. Malan: Da, ako vaš pokazivač na ogrepsti mačka, igrati mijaukati zvuk. Ali primijetiti kako izražavamo to. Postoji očito petlja tamo zauvijek. A onda tu je Uvjet je li izraz. I kolektivno, što oni znače? To znači da ovaj program samo je uvijek radi, i to je samo uvijek čeka i gledanje i slušanje za mene da se presele svoju miša preko mačke. Jer svaki put kad sam to učiniti, kao što je predlažete, to će to učiniti. Pocnimo program. Izgleda da se ništa događa, ali primijetiti kako to je istaknut sada u žute linije. To samo znači da je pokrenut. I zato postoji zauvijek petlje, to je još uvijek radi. Dakle, dopustite mi da se presele svoje pokazivač iznad nule. [Mijau] [Mijau] I ako ja to krenuti, [Mijau] sad se ne zaustavi, ali program je još uvijek radi. [Mijau] I tako, sladak. [Mijau] Tako ćemo otvoriti nešto napredniji Primjer naziva Nemojte ljubimaca mačka. A sada da vidimo što što se ovdje događa. [Mijau] mijaukati. Tako da je malo na auto pilot, ako hoćete. --pet mačku. Pitam se zašto. [Roar] [Mijau] Pa kako je ovaj posao? Pa, možete vrsta razuma kroz intuitivno, možda. Ali pogledajmo stvarne koda. Pa opet, kad je zelena zastava klikne, to zauvijek. Što želite učiniti zauvijek? Pa, ako se dira miša pokazivač, a zatim igraju zvuk koji navodno zove Lion 5, koji je unutar ovog projekta, ostalo igrati zvuk Mijau, i zatim pričekajte dvije sekunde, pa da ne mijaukati neprestano. U stvari, možete vrlo brzo početi ljutiti sebe i svoje cimera. Idemo ukloniti ovaj blok. I primijetiti ono što je lijepo o ispočetka. Stvari samo vrsta otpora i ispustite i blokada. Pa opet, ona raste na ispuniti ono što želite. Ali ako ja maknuti to, a zatim hit igra, [RAČUNALO jeka SOUND] --it je vrsta spoticanje sama, jer to je doslovno radiš ono što ja govorim. To govori zauvijek igrati ovu zvuk, ali Neću dajući mu priliku završiti. A kako će biti bug. I to je razlog zašto smo imali ova stvar ovdje. Tako ćemo zapravo početi od scratch-- vrsta dosjetka malo intended-- u kojoj mi sada imamo mačka potez. Tako ću to učiniti na letjeti. Idem za uvećanje ovdje, da bi me počeo događanja. A zelena zastava kliknuli. A tu je i druge načine za početak skripte. Mi ćemo ga zadržati jednostavan ovdje. A sada ću ići naprijed i ići pod kontrolom. I opet, ako zaboravite gdje stvari, samo kliknite okolo, i na kraju ih ponovno pronaći. Dakle, želim zauvijek napraviti što? Želim koristiti blok motion Koliko ja znam postoji, premjestite 10 koraka. Tako ćemo vidjeti što će se dogoditi ovdje ako igram ovu igru. Srećom to ne ide predaleko. Ja još uvijek mogu ga zgrabite vrsta za rep i povucite ga natrag. Ali program još uvijek radi, pa on je vrsta mi bore. Ali bilo bi vrsta lijepo kad bih uvjetno popraviti u kodu. Budući da je ovo not-- zapravo ovo je stvarno Ne zabavna igra za svakoga bilo koje dobi. Tako ćemo pokušati popraviti tako što imaju neku vrstu uvjetima. Tako ću ići ispod Kontrola, a onda, ako. Sviđa mi se ova ideja. Dakle, nakon što se kreće od 10 koraka, if-- neka mi osjetiti gdje sam ja. Ja ću ići pod Sensing, a onda to izgleda ja mogu ići ovdje. red oblik utakmice. Veličina ne, ali to je će rasti ispuniti. A sada ovo je malo izbornik. A sada miš pointer-- ja ne Želite miša, želim rub. Dakle, ispočetka je dovoljno pametan da zna kada sprite dodiruje rub. Što želim ga zapravo raditi? Dopustite mi ići naprijed i mijenjati prijedlog. Znaš što? Idem da ga okrenuti. Tako je na 15 stupnjeva nije stvarno će mi pomoći. Želim mu da se okrene i otići na drugu stranu. Tako ćemo vidjeti što će se dogoditi ovdje, ako sam pogodio Igraj sada. U redu, vrsta glupo izgleda, ali to radiš točno ono što sam rekao. I to je rotirati cijeli sprite. Sada ispada da mogu popraviti. A ja ne znam kako popraviti to na prvom mjestu. Ja vrsta morao futz okolo i vidim da je najbolji način da to učinite. Ali ako idem to-- vidimo, prijedlog. Oh, našao sam ovo. Zapravo, Set Rotation stil. Lijevo, desno, ili ne okretati, ili sve oko sebe. I ispada da je ono što želim. I ja ću staviti ovo nije moja petlje, jer ne trebate postaviti rotacija stil više puta. Idem ga staviti na samom vrhu ovaj program, tako da se dobiva set jednom, a zatim se sjeća. A sada ću pokušati to opet. Dopustite mi da se zaustavi program. A sada da fiksna taj bug. Tako sam iterativno poboljšanje na to. Program je dobivanje malo složeniji i veći, ali ja sam uzimajući baby korake da tako kažemo, i mali ugriza iz problema da bi ga bolje i bolje. Ali i to je vrsta hrom. Znaš što? Želite pitati nekoga sa jako dobra, strašan glas željeli doći gore? Netko s glasom. Uh, da. Dođi gore. U zelenoj košulji. Tako ispada da postoji neki drugi zabavno stvari, estetika i zvuči podjednako. Evo Mijau. Ja kliknite na karticu Zvukovi. [Mijau] Tu je Mijau. [Mijau] [Mijau] [Mijau] --actually rekord nešto od naše vlastite ovdje. Tako ćemo učiniti upravo to. Umjesto korištenja ovog mačka zvuk, neka je ići naprijed ovdje, i što je vaše ime? Nick, lijepo da zadovolji vas. To je David. Dakle, u ovom trenutku, idem pritisnuti gumb Record. I ako možete jednostavno vikati u laptop, "jao", kao da je vas Upravo je ušla u zid, koja će biti mnogo poštovati. 1, 2. NICK: ouch! DAVID J. Malan: Awesome. A sada se može učiniti malo uređivanje ovdje. Idete da biste dobili osloboditi od tihih dijelova. I mislim da je to dobro. Puno hvala. NICK: zadovoljstvo. DAVID J. Malan: Nemam samo ga preimenovali "jao" ali sada ću vratite se na moje skripte. I obavijest je zaista zvuk ovdje. I ja ću ići naprijed i igrati zvuk Joj, i ja ću to učiniti, ako to je dodirujući rubove samo. A onda ću ga okrenuti. Tako ćemo vidjeti što se ovdje događa. Idemo puni zaslon. [VIDEO PLAYBACK] -Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! [END PLAYBACK] DAVID J. Malan: Tako ste shvatili da smo postali malo sreće. Idem mu se potez kao i 100 koraka u isto vrijeme. Učinak koji je sada događa da be-- [RAČUNALO glitch SOUND] Pa u roku od razloga. Dakle, prilika za precizirali da nadalje, ako uistinu želimo. Dakle, sada ćemo predstaviti još jedan koncept. Da me pusti u jednu pod nazivom Brojenje ovaca i koristiti nešto zove varijabla. Ovo je divan malo ovaca, i Promijenio sam svoj kostim da se tako izrazim. Dakle, iako je zadana je mačka, možete uploadati, možete crtati, možete učiniti bilo koji broj znakovi na vašem Sprite. Evo program koji je učiniti ono što na engleskom? Opet temelji na samo ono što znam sada. Što ovaj program učiniti? Da, to će brojati. Jedan broj u isto vrijeme. Imamo očito imati taj set brojač. Ne znam što je to, ali možda je to promjenjiva. To je samo kontejner, x ili y. Ali riječ brojač je više opisno nego Matematičar je x ili y. Dakle, možemo koristiti engleske riječi za stvari. Zauvijek, samo znači zadržati to. Reci brojač. A gdje je to došlo? Pa, ispada da Brojač je promjenjiva. Dakle, to je samo još jedna zagonetka komad sam stvorio unaprijed. I premda se to dogodi da ne bude isti oblik ovdje, normalno što će reći nešto poput Hello ovdje. Također možete povući varijablu tako da je to ono što je se, rekao je. Onda čekam sekundu, ja promijeniti brojač po jedan, ga povećavati dodavanjem jednog. Tako da je neto učinak ovaj sladak brojanje ovaca. Iako je on sam brojati. Sada je vrlo brzo će dobiti dosadno jer on će to doista zauvijek, ali to je upravo ono što je Program je dizajn propisuje. Omogućuje sada pokušati još jedan primjer koji iskorištava varijablu. To se zove Hi Hi Hi, da ne dobiti neugodno brzo. Sada je to jedna ima dvije skripte. I tako opet, mi smo uzimajući baby korake. Počeli smo s nešto super Mali, doda joj se, doda joj se. Sada želim učiniti nešto još dinamičniji, pa želim da se sluša dvije različite stvari u isto vrijeme. Dakle, na lijevoj strani, kada je zelena zastava kliknuli, Ja postaviti varijablu koju sam napisao Unaprijed se zove isključen. I ja sam samovoljno ga postavite na 0. Dakle, ispočetka ne vrijedi i lažna, ali ona ima 0 i 1. Dakle, ja mogu aproksimirati tu istu ideju. A onda zauvijek, ako je bar prostor pritisne, zatim postavite varijablu na 0. Ili žao. Ako se pritisne prostor, a Ako isključen, varijabla, 0, zatim postavite isključen na 1, drugi set isključen 0. To se čini nekako kao da smo samo radi i poništiti posao. No, ono što je učinak? Svaki put sam pogodio razmaknicu, što se događa s mojim varijable zove isključen, logično? Vrsta dobiva poludio. Se mijenja od 0 do 1, ili 1 do 0 ° C. Dakle, to je nekoliko blokova izraziti da, ali sve Radim je varijantama stanje varijabla 0 ili 1, ili 0 ili 1 svaki put sam pogodio razmaknicu. Sada ovdje, što to radiš? Zauvijek, ako je isključen 0, pa ako isključen je lažna. Dakle, ako to nije isključen, je semantika tamo, igrati zvuk morski lav, i mislim Hi Hi Hi za dvoje sekunde, pričekajte dvije sekunde. Dakle, primijetite sada to skripte su učinkovito će izvoditi paralelno, tako da se mogu slušati za jednu akciju, a drugi donijeti odluku na temelju tog djelovanja. A to može učiniti zauvijek. [Morski lav lajanje] [Morski lav lajanje] To će učiniti zauvijek i [Morski lav laje] kao što sam upravo učinio. I sada je još uvijek traje ali sam "isključen" igra. [Morski lav laje] I to je sve to čovjek ne sada previše. Otvorimo ovdje još jedan primjer. Pusti me na natjecanjima, a sad ovo sladak previše. Ali primijetite da ima dva duhovi. Tako da ne samo dvije skripte s jedan Sprite, ali dva duhovi. A ako sam kliknite na plavi dečko kao što sam već sam je vidio kao jednog programa ovdje da doslovno samo kaže to, kad sam dobiti događaj, reći "Polo" za dvije sekunde. Dakle, ako ste ikada igrao u bazen, igra Marco Polo, ako je dečko narančasta skripta bilo koji pokazatelj, očito svaki put sam pogodio razmaknicu, što je narančasta momak učiniti? On će reći: "Marco". A onda je to novi blok. Nismo vidjeli prije, ali emitiraju događaj. I ja bi se moglo nazvati Događaj ništa želimo. Mi ćemo se vratiti na ovo možda i prije dugo. No emitiranje događaja je način za jedan Sprite razgovarati na drugu uglavnom prolazi mu poruku. To nije poruka vidite. To nije nešto vizualno. To je vrsta računalnog poruke da je drugi tip je osluškujući. Jer doista, plavi momak, opoziv nema kad zelena zastava kliknuli. On umjesto toga ima, kad primite događaj. Kad on dobiva pruži tu notu u razredu, da se tako izrazim, on je trebao reći "Polo". I tako je neto efekt je da kada sam hit zelenu zastavu, ništa se ne događa. Ali kad sam pogodio razmaknicu, kaže on "Marco", on odgovara s "Polo". No, samo sprite sam u interakciji s je narančasta jedan. Dakle, ovo je način vrsti prolazi poruka između duhovi i da ih komuniciraju jedan s drugim. Sada pogledajmo jedan posljednjem neki ovdje nazivaju teme. A primjećujem ga igrati. Dakle, to su dvije duhovi. Ptica vrsta se leti okolo. On je jak. Nema "jao", ali ista ideja. No, mačka izgleda prilično pametna. Što je mačka očito radi? I čekati za to. Što je mačka očito radi? To nije samo odskakanje. On je nakon ptica. I tako očito, postoji način s kombinacijom blokova here-- i pogledajmo mačka jako brzo. Zauvijek, ako dira pticu, onda igrati zvuk Lion 4, što god da je. Čuli smo jednom. Inače, upućuju ptica, i premjestiti jedan korak. Sada je činjenica da je jedan korak je ono što daje ptica malo prednost u početku, ali ako smo umjesto čine ovaj 10, na primjer, tako da svaka iteracija petlje on kreće 10 koraka vremena. Dakle, više prostora. Idemo vidjeti što će se tada dogoditi. [Lav] Nije sve to puno bolje. Dakle, sada ćemo pokušati poboljšati na to malo iterativno, i vratiti se da je pojam funkcije. I doista jedna od temeljnih takeaways klase dizajna. Ne samo pisanje programa koji rade i da su ispravna, ali dobro osmišljen. I dizajn je puno više subjektivna, i dobit ćete bolji u tome s vremenom. Ali uzmimo neke male korake prema počevši s programom koji radi, apsolutno, ali to nije jako dobro. To nije dobro napisano. Dakle, ovdje je program koji to radi. Kašalj, kašalj, kašalj. Što je program izgledati? Izgleda točno za mene. To govori kauč za drugo, onda to čeka. Onda je opet, kaže, a onda ga čeka. Onda je opet, kaže, a onda ga čeka. A onda se program implicitno završava, jer nema petlje. Ali zašto je to loše napisano programa? Čak i ako ste nikada nije programiran prije? Kao što trlja pogrešan način, možda ovdje? Da? PUBLIKA: [nečujan] DAVID J. Malan: Točno. Ti ponavlja sebe opet i opet. I doslovno, ja kopirati i zalijepiti dva i opet tih blokova. I to je točno vrsta zdravog razuma provjerite da li bi trebao biti stvaranje. Čekaj malo. Trebam li stvarno ovo raditi? Pa što je to što je Očito rješenje možda? Imaju neku vrstu petlje. A ja ne sasvim opoziv što je zagonetka komad je, ali ako pogledam Sljedeća iteracija ovdje Doista, ne postoji samo zauvijek petlje, postoji ponoviti neke više puta. I tako sam naveden tri. I sada primijetiti koliko jače, kako mnogo kratak ovaj program je. I u smislu, kako je mnogo više održivi. Ako želim promijeniti riječ od kašlja na nešto drugo, kao achoo, kao da je kihanje. Tada sam ga promijeniti u jednom mjesto, a ne tri. Dakle, to je već osjeća kao malo bolje dizajn. Dopustite mi da umjesto otvorene kašalj 2, naš treći primjer. Obavijest kao računalni znanstvenik, Ja početi računajući na 0, obično. Sada to izgleda malo strašnije na Prvo, ali učinak je isti. Kašalj, kašalj, kašalj. No, ono što čini se da je temeljno novo u gornjem dijelu programa? Ja sam uklonio reći. Ja sam uklonio čekati. A što ja imam uključen umjesto toga? Funkcija. Blok kašalj. Mislim, iskreno, čini mi se vrsta od idiota, ako nisam baš početi s bloka koji navodno zove "kašalj", ako je to sve što želim ga učiniti. No, to ne postoji u nule. Umjesto sam otišao u jedan u Paleta pozvao više blokova ovdje i ja povući ovu veliku ljubičastu stvar ovdje mi omogućuje definiranje funkciju. To me u biti omogućuje stvoriti svoju zagonetku komad koji se može nazvati nešto što žele, da mogu učiniti sve što želim, ali to mu daje ime. To mi daje novu, ljubičasta puzzle komad koji sada radi sve ja to kažem. Dakle, ovo ljubičasta komad ovdje odgovara ovaj ovdje. I što učiniti? Ona kaže kašalj za drugo, a onda ga čeka. I sada sam nekako stvorio moj vlastiti prilagođeni zagonetka komad, tako da se ponaša upravo to isto. Tako da mogu zadržati to. I doista, tu će biti sve više i više mogućnosti za modulariziranje a za raslojavanje, složenost na vrhu jedan drugoga. Ali to osnovna ideja, doista u problemu, rekao je 0. Ono što ćeš biti izazvani učiniti je preuzeti nule, ili jednostavno ga koristiti na webu, i samo zabaviti s njim. Mi ćemo vam dati skup zahtjevi, ima zvuk, a neki broj slagalice. Ali vi ćete učiniti upravo to. I vi ćete shvatiti da ćeš žele poduzeti neke male korake u početku, dok vaš program dobiva sve više i složenije. No, s obzirom je ovo Najbolji način na koji sam mogao učiniti? Mogu li izbjegli ovaj instinkt možda, kopirati i zalijepiti? No, prije nego Problem Set 0, a prije nego što smo odgoditi, Mislili smo da bi potrajati do jedan više volonter ako smo mogli, za konačnom programu to je možda najviše montaža na sve, s obzirom na današnju mjesto. Dođi dolje. Da. Da. Kako se zoveš? Uh oh. To je u redu. I siđe. I ja sam se nositi s tim nekako Unutar te sljedećih deset sekundi. Pa hajde dolje. Dođi dolje. Dopustite mi da se na ovamo. Ajde. U redu. Idemo vidjeti ovdje. Dakle, primijetite jako brzo ovdje Ako želite da se na gore. Mi ćemo napraviti dva kruga to. A što je vaše ime? SABRINA: Sabrina. DAVID J. Malan: Sabrina i? Ying GEE: Ying Gee. DAVID J. Malan: Ying Gee. Drago mi oboje. David. Dakle, naš konačni primjer ovdje naziva Ivy je najteže igra. A zašto ne moramo vam je činiti Razina 1, a vi Level 2. A vidjet ćemo koliko izvan toga mi zapravo ide. Napisao student prošle godine, remiksirao mene tako da će to ići više dobro u New Havenu. A ja vam igra koja se događa na uključuje pomicanjem strelice gore i dolje, i uzimajući Yale do cilja. Idemo. [VIDEO PLAYBACK] [MUSIC - NFL na FOX pjesmu] [MUSIC - MC Hammer, "u može dirati  Ovaj "] -U Ne može dirati to. U ne može dotaknuti to. Ne može dotaknuti to. Moj, moj, moj, moj glazbeni me pogodi tako Teško, čini mi reći, oh, moj gospodaru. Hvala vam što ste me blagoslov s um se pjesmica i dva hype noge. To je dobro kad znaš da si dolje. Super doping Homeboy iz Oaktown. A ja sam poznat kao takva i to udaranja uh, ne mogu dirati. Rekao sam ti Homeboy U ne može dotaknuti to. Da, to je kako živimo i znate u ne može dirati to. Pogledajte u oči, čovječe. U ne može dotaknuti to. Yo, neka mi poprsje funky tekstove. U ne može dotaknuti to. Svježe novi udarci i hlače. Možete ga dobio kao da i što vam želim znati ples. Dakle iseliti iz svoje sjedalo i dobiti muhu djevojku i uhvatiti ovaj ritam. Iako je valjanje držite na pumpati malo bitni i neka znaju što se događa. Kao da je. Kao da je. Hladno na misiju kako povući na leđa. Neka znaju da ste previše a to je potez uh ne mogu dirati. Yo, rekao sam ti u ne može dirati to. Zašto stojiš tu čovjek? U ne može dotaknuti to. Yo, zvuk zvono školi je u, dojenče. U ne može dotaknuti to. Daj mi pjesmu, ritam čineći ih znoj to je ono što sam ih daje sada. Oni znaju kada govorimo o Hammer razgovarate o emisiji koja je hiper. I uske pjevači su znojenje pa prođe im mikrofon. Ili traku kako biste saznali što se to će uzeti i sad on će izgorjeti ljestvice. Čitljiv ili rade teško ili možda i prestati. Jer znaš U ne može dotaknuti to. U ne može dotaknuti to. Ga razbiti. Prestani. Vrijeme Hammer. Idi s toka u spin ako ne možete premjestiti na to onda vjerojatno su mrtvi. Dakle, val vaše ruke zrak [nečujan] To je to za pobjednika zaplešite ovo i ti si idući u dobiti tanji. Premjestiti povucite rep samo za minute ćemo sve učiniti čekić. Da. U ne može dotaknuti to. U ne može dotaknuti to. Bolje dobiti hiper Dječak u ne može dirati to. Pozvoniti školski natrag u. Ga razbiti. Prestani. Hammer vrijeme DAVID J. Malan: To je to za CS50! Hvala toliko za nas pridružio! Vidimo se vani. [END PLAYBACK] [VIDEO PLAYBACK] [MUSIC - "Seinfeld" pjesmu] -Hej David. -Hej, David. Kako ide? Dobro je posao, i danas. -Pa Jeste li razmišljali o tome što idete raditi za van viceve? -Ne, Ja nemam ništa. Što if-- što ako je to iz šale? Nalik, raspakiranje kolica? -Uh huh. Znate, to je oko ničega. -Pa Sviđa, ne priča, ne sukob, bez rezolucije. Ne razumijem. Što je to o onda? Ništa. -Pa Smo se vic o ništa, a nemamo glumce. Tko će biti u tome? -Ne ne ne. Mislim, ja ću biti u njemu. -You'll Biti u njemu? -Da! Ljudi uvijek govore ja sam karakter. Pa, mislim, to je istina. Ali tko još će biti u njemu? To ne može biti samo ti. -Vi Će biti u njemu, Gavin, Dan, Dan, Colton, Z'Myla, Alysse, Doug, David svatko. -Znači Radi se o ništa, i svatko je u njemu? -Absolutely Ništa. -Ovo je smiješno.