[MUSIC SVIRA] To je CS50-- Harvard Uvođenje Sveučilišta za intelektualno poduzeća informatike i umijeće programiranja. I moje ime je David Malan i Samo sam razmišljao jutros, to je bilo nevjerojatno 20 godina i danas otkad sam zadnji put sjeo u kojoj vi sada. Bilo je 1996. Bio sam student, a ja sam bio uzimajući CS50 za vrlo prvi put. A nisam ni ustao živac da se to sam prve godine, dijelom zbog vremena. Računarstvo mi je vrsta kao što su, meh. Bio sam malo monstrum raste gore, ali nisam jako imati bilo koji intelektualni interes za ono što se činilo da samo biti cijela hrpa ljudi programiranje svih vremena. I ja sam se bojao da budem iskren. Tijek i informatika više u pravilu imali i do neke mjere, još uvijek ima taj ugled polja na pazi, ako je samo zato jer mnogi od nas nisu upoznati s njim i sigurni u to. I to stvarno nije bilo dok sam kupovala ova klasa koja student fall-- pa čak i onda, samo sam upisao jer je professor-- jedan od mojih prvih mentora, Brian Kernighan sada na Princeton-- mi je dopustio da se u klasi pass uspjeti. I doista, to je razlog zašto Danas smo omogućiti i poticati studente da se taj predmet sat / unsat. I tek tada, od strane kraj semestra shvatila sam kao, wow, ovaj nije tako nepoznato područje. Doista, to je bio vrlo Osnaživanje polje, i više uzbudljivo, pogotovo kasnije, kao što sam uzeo tečajeve Dramska umjetnost 101 i Latinskoj A i onda na kraju Grad škola arheologija, jesam li stvarno početi vidjeti sjecišta na ovom području, računala znanost, s humanističkim, prirodne znanosti, umjetnosti, medicine, i slično. I to je ono što je samo tako uredno o računalnoj znanosti u konačnici, kao što se nadamo da ćete see-- je njegova primjenjivost s tim drugim područjima, i kako možete uzeti neki od današnjih, a semestra ideje i praktične vještine natrag na svoju domenu, i zapravo istraživanje ovog raskrižja od liberalne umjetnosti i znanosti. Dakle, 73% od vas, ako posljednji godine je bilo naznaka, nikada nisu uzeti CS naravno prije. Dakle, ako, poput mene, vi ste osjeća malo prestrašen, ili iskreno nisi stvarno siguran zašto si još ovdje. Možda ste samo slijedili neke prijatelje na Sanders odmah. To je potpuno u redu. Cilj je da se ovdje kuka vi i vas uvjeriti da, ako ne gledati lijevu i desnu stranu, ti si idući u vidjeti školske kolege kao malo ili puno iskustva da vi sami mogli imati. I doista, mi ćemo podijeliti neke statistike kasnije danas o tome što je demografiji klasa obično izgledaju. I dok je dodao reassurance-- i mi to mislim jer sam preuzeo tijeku Nekoliko godina ago-- u Tečaj je nastavni plan i program je učinimo ono što u konačnici pitanja u ovom kolegiju nije toliko gdje ćete završiti se u odnosu na svoje kolege, ali gdje se u 11 tjednu, do kraja semestar, završiti u odnosu na sebe u tjednu 0, a to je gdje smo danas ovdje. A to je ono što sam shvatio svih tih godina. I znam puno nastava ovo reći, ali to je osobito vrijedi u računalnoj znanosti. Na kraju krajeva, ovo polje je nepoznat kao što je bio za mene i može biti za vas, stvarno samo o rješavanju problema. I kao takva, ona ima to primjenjivost dobiti drugim područjima. A u stvari, ako ćemo suditi destilirati što to znači, to je rješavanje problema u svojoj suštini, usuđujem se reći. Postoji input-- tako da ono što je je da ste pokušavate riješiti. Postoji izlaz, što je izgledno rješenje za taj problem. A onda, kao što bismo kažu u računalnoj znanosti, tu je ova crna kutija u Srednji koje ne moraju nužno morati brinuti o tome kako se to radi. Ti si bi na kraju provesti ono što je unutar tog okvira. No, za današnje potrebe i više općenito u životu, sve što je stalo je da se ti problemi se rješavaju. A što ovaj tečaj je u konačnici o istražuje sjecište ti ulazi i izlazi, a ovi takozvani algoritmi, kao što ćemo uskoro vidjeti, koje provode ono što je ispod ima, sjenilo. Ali ti ulazi i to outputs-- Što to zapravo znači? Pa, na kraju dana, trebamo neki način predstavljanja informacija. To se posebno odnosi na računalu, koji je kao fancy i kompleksa kao što je može činiti, je prilično glupa naprava. Potrebno electricity-- bilo iz kabel ili bateriju kao input-- a zatim ga proizvodi oko preprogramed odgovori na zaslonu. No, kako smo dobili od početka do kraja tamo? Pa, što je problem koji treba riješiti? Pa, možda smo mogli, na početak bilo semestra, pokušati uzeti prisustvo u sobi kao što je ovaj. Tako sam mogao učiniti kao jedan, dva, tri. Ili možda, ako sam to učinio na neki način pratiti od myself-- pratiti things-- Mogao sam brzo ponestane prstiju. Dakle, ja mogu samo napraviti hash marks-- jedan osoba, dva, tri, četiri, pet, šest, sedam, osam. I svi mi vjerojatno ovo učinio, bilo na rukama ili na komad papira. A to je zapravo samo nešto što se zove predznak notation-- gdje, ako imate samo jedno slovo u svom pismu, jednom ili mljeveno meso Oznaka u ovom slučaju, za svaki ulaz želite strani, morate staviti dolje jedan od njih letters-- jedan od tih znakova. U redu. To je sve u redu i dobro i nije sve što je komplicirano. No, računala nisu svi da je mnogo komplicirano. Doista, većina vas vjerojatno znam, čak i ako ste stvarno ne razmišljao što to znači, da je računala razumiju samo nule i ones-- tzv binarni sustav. Mi ljudi, s druge strane, su tako mnogo više sofisticiran mjeri kao što smo razumjeli nula kroz devetke. No, čak i ako je binarni je, na prvi pogled pogled, nije sve što je poznato, ispada da je baš kao i sustave i ideje koje znamo. Tako na primjer, razmislite o ovom. Ovo je samo slijed simbola. A sve vas, kad Bacimo li pogled na njega, vjerojatno mislim 123-- ništa stvarno zanimljivo tamo. Ali zašto je to taj broj, 123? To su samo simboli na screen-- samo obrasci da je netko možda nacrtana ili upisali. Ali, ako ste poput mene, Vjerojatno se sjećate iz osnovne škole da postoji neka vrsta stupovi ili mjesta ovdje. Tu je svoje mjesto i TEN-a mjesto i sto je mjesto. A razlog da je ovo 123 i ne samo uzorak od tri simbola je zato, naravno, ako ima jedan u stotinama mjesta, učiniti math 100 puta jednog, a zatim dva u deset mjesto. Dakle, to je 10 puta 2, a zatim tri u na svoje mjesto, a to je 1 puta 3. A kada dodate sve one gore, od Naravno, možete dobiti 100 plus 20 plus 3. Tako smo počeli sa samo uzorkom od symbols-- je alphabet-- ali onda smo mapirati značenje na to su tim stupcima. Pa, ispada da računala su se zapravo ne sve što je drugačije od tebe i mene. No, umjesto da koristi ovlasti 10, tako speak-- 1, 10, 100, 1000, 10.000 mjesto i tako forth-- oni zapravo samo koristiti ovlasti 2-- tako da se, 2, 4 i ako stavimo više znamenki, 8, 16, 32, 64, 128, i tako dalje. I tako je to kako računalo bi predstavljalo broj 0, baš kao i mi ljudi. 0, 0, 0-- i vjerojatno možete pogoditi što uzorak nula i jedinica, Ako računalo može samo govori 0 ili 1-- ono Uzorak će predstavljati brojčane mi ljudi znaju kao 1? Yeah-- 0, 0, 1. U redu. Dakle, 0, 0, 1 je kako zastupamo 1, tako da se može nagnuti onda da predstavljaju broj 2, ako imate Četiri su je mjesto, a dva je mjesto kao jednom mjestu, moglo bi se reći, dobro, ako smo imali 1 u nečije mjesto, a sada želimo brojati do 2, možda ćete to učiniti i ostaviti da će to biti nula. Ali, naravno, to nije način decimalni sustav radi bilo. Ako stavite jednu brojku oba od tih stupova, moraš učiniti aritmetiku. Dakle, što je broj jesam li slučajno upravo predstavlja? Dakle, to je 3, jer je 2 puta 1 plus 1 puta 1, naravno, daje nam tri. Tako će to biti dva. Bita vrsta flips, da tako kažemo, kao što je 0 postaje jedan, slično kao i 9 uloga više i postaje 0 dok nosite 1. To bi onda bilo tri, naravno. Four-- još jedan zanimljiv stvar događa, gdje su one prevrnuti i nosite 1, da tako kažemo. Dakle, ovo je, naravno, 4. Ali ako brzo naprijed i sada, što je najveći broj ide se da računalo može predstavljati? Dakle, to je samo sedam, u ovom slučaju, zar ne? Budući da imate jedan u četiri, jedan u dva, jedan u jedan. Dakle, to je 4 plus 2 plus 1. Tako da vam daje sedam. I doista, to bi Čini se na prvi pogled da računala mogu računati ne više od toga. Ali to, naravno, nije istina. Što mi ljudi rade kad želimo brojati više nego kao 999? Samo nositi jednu i samo dodati četvrta znamenka s lijeve strane. I tako doista možemo. Mogli smo osam-a mjesto i 16. mjesto, a 32 je mjesto, 64, 128-- i ti mogu samo zadržati ide na do beskonačnosti. Ali kad su oni nule i ones-- tzv binarni system-- su ono što računalni znanstvenik općenito nazvati malo, ili binarni broj. Ali sada, kako smo dobili od Pojam ili grafika tih stvari na stvarnu računalo? Izgleda da smo preskakanje korak ovdje. Pa, jedini ulaz na kraju dana, na moj laptop ovdje je ovaj protok električne energije. Čak i ako to je bio dugo Vrijeme od vas razmišljao o ili nikada ne misli o Kako struja radi, postoji elektroni teku ili van, i to je moja vrsta ulaza. Dakle, ako je to sve što smo uzimajući kao ulaz ovdje što možemo učiniti s tim informacijama? Pa, možemo misliti na nulu kao Upravo nedostatak električne energije. Ništa nije flowinw, ništa nije kreće, ništa se ne događa. To je samo zadani state-- nula. Ali ako postoji teče struja, zašto ne samo mi proizvoljno, ali globalno dosljedno, poziv da se jedan. Tako jednostavno nemajući snage, imamo nulu, da moć, imamo one-- bez snage, da moć. I na taj način, koristeći nešto više fizički ili elektronski možemo početi provoditi taj pojam nešto je ili jedan ili nula. Zapravo, mogli bismo samo to učiniti ovdje. Pa evo, nisam tri, ali Osam žarulje, a svaki od njih ima svoj vlastiti prekidač. I tako, ako sam htjela da predstavljaju broj sedam ovdje Možda ću uključiti ove tri žarulje. I doista, unutar moj računalo je milijune, Milijarde stvari koje su samo manji od toga, zovu tranzistori, prekidači, da samo uključivanje i isključivanje. Dakle, to su big-- relativno big-- prebacuje u mojoj laptop-- mnogo, mnogo, mnogo, mnogo više sklopke. Ali, svi oni rade upravo that-- okrenuti nešto na okrenite nešto isključiti. I kao takav, računalo može predstavljati, s tim milijunima ili čak milijardama tranzistora, puno i puno nula i jedinica. A tu je i drugi hardver i dalje da omogućuje pohranu informacija dugoročno, tako da kada se povući plug, ne izgubiti. Ali to je priča za neki drugi dan. Dakle, ono što možemo učiniti s tim bita? Možda smo samo da se tlak izvan me-- Možda netko želi da dođe ovdje i nude se demo? Vidio sam ovu ruku prvi. Kako se zoveš? MADAY: Maday. DAVID Malan: Maday, hajde gore. Drago mi je da sam vas upoznala. MADAY: Drago mi je. DAVID Malan: Dođite na ovaj način. Neću da te usne gore. U redu. Dakle, ovdje imamo, notice-- jedan, two-- ćemo urediti da out-- jedan, dva, četiri, osam, 16, 32, 64, 128. To je namjerno. Postoji osam bitova here-- binarni digits-- nula i jedinica. A malo je koristan jedinica measure-- ne kao korisna jedinica mjere na sebi. Obično želite barem osam od tih stvari, poznatiji bajt. Dakle, imamo bajt bitova ovdje. Dakle, ako smo htjeli da vam izazov s, Na primjer, izgovaranja, u binarnom sustavu, ova vrijednost here-- 42. Želite da se ubosti na to? MADAY: [nečujan]. DAVID Malan: Da, samo gurnuti male bijele prekidači ispred. I želite da čarolija iz 42, te se za dočepa to CS50 stres Lopta ako se ovo. U redu. Dakle, imate 32. Mi ćemo morati 42. Dakle, to je osam, tako da je 40. I excellent-- vrlo lijepo učinili. Hvala ti. [PLJESAK] U redu. Dakle, imamo još jedan stres loptu. Učinimo to još jednom, ako mogu. Jedan drugi dobrovoljac? Besplatno stres loptica, slobodan stres loptica. U REDU. Ovamo u sredini, želiš li doći? U redu. Znam. Idemo tamo. Tako su brojevi here-- doći dolje. Kako se zoveš? Davey: Davey. DAVID Malan: Davey. U REDU. Dođi gore, Davey. Drago mi je da sam vas upoznala. A što ćemo da ste se spell-- ako bi mogao otezati tamo za samo jedan moment-- je broj 50. No, no, no no no to su Škola magneti s razlogom. Dovoljno je dobio malo teže, u redu? Ima još osam. U redu. Dakle, što imamo tamo? Imamo 32. Nice. 32 plus 16 nam daje 48-- tako blizu. I divno. Čestitke Davey, kao dobro. [PLJESAK] U redu. Tako možemo to učiniti tijekom cijelog dana, a to ne bi sve što je mnogo više Zanimljivo i zahtjevnija. Ali to je stvarno point-- je kako je relativno jednostavna to je, na kraju dana, što je Računalo radi za pohranu podataka, pohraniti ulaza i na kraju pohraniti ili predstavljaju one izlaze. Ali brojevi sami nisu sve to zanimljivo. Pa ljudi, prije nekoliko godina, odlučila, znaš što? Bilo bi lijepo ako Računala nisu bili samo kalkulatori za aritmetičke operacija, ali zapravo mogao raditi stvari kao što su obrada teksta, ili e-mail, ili više moderne inkarnacije ove vrste tehnologije. I tako je svijet odlučio proizvoljno, nego univerzalno, da, ako želite pohraniti kapitala slovo A u računalu, znate što? Ajmo svi slažu za pohranu neki uzorak nula i ones-- bits-- koji u konačnici predstavlja decimalni broj 65. Samo ćemo svi slažu po tome. 66 bi predstavljao B, 67 bi predstavljao C, a tu je grozdove drugih obrazaca nula i jedinica, ili temeljni brojevi, koji bi predstavljati ostala slova mirno. Dakle, ako ste vrsta psihički apsorbirati taj trenutak, Namjerno sam stavio gore kroz I, gdje je H 72, a ja 73. Ako je računalo zatim u kontekstu program za obradu teksta ili e-mail, otkrila ispod haube imati ovi obrasci bits-- uzorak bitova koji predstavljaju 72, zatim 73, a zatim 33-- kakva bi to bila čarolija u tom programu? Pa bok, a zatim nešto. Mi ne znaju, ali zaista 33-- ne na grafikonu earlier-- je jednostavno uskličnik. Dakle, 72 je H, 73 je sam, 33 događa biti uskličnik i dalje. Ali to je sve u redu i dobro, u stvari danas, umjesto samo koristiti sedam ili osam bita, zahvaljujući nešto zove Unicode razliku u ASCII natrag u dan, mi zapravo može predstavljati još zanimljivi likovi od samih ovi originalni engleski pristran slova. Ali, mi također može predstavljati i uredniji stvari kao što su boja. Ako ste ikada čuli akronim RGB, crvena, zelena, plava, da je samo znači da računalo obično koristi tri seta bits-- neki broj bitova koji predstavljaju broj za koliko crvena želite, drugi set bitova za koliko zeleni želite, i drugi set broj za koliko plavo želite. Tako veliki broj znači puno crvena, mali broj znači da nema crvene boje. I tako su ljubazni Srednje vrijednosti ovdje. Pa daj mi neke crvene, daj mi neki zelena, i daj mi malo plave. A ako miješati ta tri nijanse boje zajedno, u ovom slučaju, ti ovaj taman nijansu žute ili smeđe. Ali to uzorak osam plus osam plus eight-- tako 24 bits-- s lijeva na desno, kako računalo predstavljalo bi tu određenu boju. Sada je to samo točka na ekranu. Ako pogledate jako blizu na TV-u svoje računalo, vidjet ćete točkica ili piksela. A ako imate cijeli mrežu piksela, horizontalno i vertikalno, imate slike. I onda ako se uzme slika i onda pranje pokaži drugu sliku, još jedan slike, druga slika, druga slika, jako brzo, što naravno ima filmova. I tako primijetiti gdje smo počeli. Počeli smo s tim nula i jedinica. Radili smo od tamo u decimalnu brojevi, kako ih predstavljaju. Sada imamo slova abecede. No, u drugim kontekstima čekati, možemo koristiti još nekoliko bitova i predstavljaju boje. Čim imate Sposobnost da predstavljaju boje, imate mogućnost da predstavljaju fotografije i animirane GIF-ovi i druge takve znakovi na zaslonu. A kada imate hrpu Slike leti prema čovjeku odjednom, to izgleda kao filmove, i na taj način dobili video kao dobro. Dakle, pomoću ove vrlo jednostavni primitivci Da li smo imaju način predstavljanja na kraju sve ove oblike medija. A mi smo opet sažeto i opet i opet, sve dok ne dobiti od najnižoj razini ovoj najvišoj razini. Dakle, to nam daje ovo Općenito ideja apstrakcije. Ali počeli smo ovdje. Evo sad, mogli bismo predstavlja u računalu naši ulaza s nula i jedinica, naši izlazi u nula i jedinica, ali ono što se događa unutar okvira? To je mjesto gdje računalo znanost dobiva zanimljiv. To je mjesto gdje se zapravo ponijeti vlastite misli nositi na rješavanju problema. Sada možemo odrediti, jer je Ostatak semestra, da. Znam kako binarni djela. Sjećam se kako je ASCII ili Unicode-- mapiranje za letters-- djela. A to svakako stoji da je razlog da smo mogao bi predstavljati crvene i zelene i plava, a predstavljaju multimedija, kao dobro. No, to je zanimljiva stvar. To je ono što čini nekoga sposoban za rješavanje problema. I jedan takav problem smo željeli učiniti, doista, pokazuje da prisustvo ili to algoritamski. A opet, možda ću to učiniti. Možda ću napraviti jedan, dva, tri, četiri pet, šest, sedam, osam i devet. I ja sam to mogao napisati dolje pratiti njega. No, to je samo kako bih predstavlja podatke. Ili sam mogao učiniti faster-- dvije, četiri, šest, osam, deset, 12, 14, 16, 18, 20, 22-- se osjeća kao dva puta tako brzo, ali to je još uvijek idući u uzeti puno vremena. No, ispostavilo se, ako se još iskoristiti još resource-- i doista računala ovih dana imaju više procesora ili mozak. Ispostavilo se računala mogu učiniti puno stvari odjednom, i zaista mi, u ovoj sobi, može predstavljati upravo to. Dakle, to je malo društveno nespretan, ali ako bi humor me za samo postupak u tri koraka, neka pitam sve na svom mjestu postoji samo ustati na trenutak. Ustani. Tako da mislim na sebe, broj one-- tako da svatko u ovoj sobi, osim ljudi koji nisu obvezuje, razmišljaju broj jedan. Tako da je vaš broj upravo sada. To je prvi korak, ili kao računalni znanstvenik ili programer obično će učiniti, idemo za početak brojanja na nuli. Ako je najmanji broj možemo predstavlja s tim žaruljama je nula, samo ih ostavljajući sve off, kao što bi i samo početi brojati od nula je umjesto jednog. I to je ono računalni znanstvenici. Dakle, korak nulu, ustati i mislim na broj jedan. Sljedeći korak je učinimo par off s nekim stajanja i dodati svoje brojeve zajedno. Divno. Dakle, u ovom trenutku u vremenu, doslovno svi sudjeluju misli na broju 2, osim za jednu ak osoba, ako imamo neparan broj ljudi u sobi. A sada je treći stupanj ovdje će biti učinimo, jedan od vas treba sjesti. Jedan od trebali sjesti, a ako ste još uvijek stoji, povratak na korak jedan. U redu. U redu. Dakle, sve više i više ljudi trebao biti sjeo. Primijetite da je ovo inducirana loop-- nekakav ciklusa. Neki od vas bi trebao biti nezgodno zaglavio, ide natrag i naprijed između jedan korak i dva, jedan i dva, jedan i dva. To je u redu. Naš prvi bug. Mi ćemo se nositi s tim. U redu. Dopustite mi da pokušam potaknuti stvari. U teoriji, samo jedna osoba stoji kao i svi i dalje upariti off. No, dopustite mi ubrzati s ljudima i dalje stoji. Koji broj se vi mislili? 46. U REDU. Idi naprijed i sjesti. Vi dečki još uvijek stoji. Tko još uvijek stoji? Koji broj se vi mislili? U REDU. Dakle, mi ćemo se vratiti k vama. U stražnjem? Što je to? 22. U redu je netko gore top-- da? 34. U REDU. Više ovdje na mom redu-ovdje? 132, jako lijepo. 22? U REDU. I tko još stoji? Ovdje? 46, jako lijepo. 72. Ne mogu odugovlačiti puno duže. Da? 30, lijepo. Ovdje? 23? 23. I mislim da je to svima osim vama, bez pritiska. Čekaj. 28? Samo osam. U REDU. Samo osam. Ovdje dolje? 30. 23. 24. 18. Ovo je najgora primjena ovog algoritma ikad. U REDU. Dakle, bilo tko drugi? Itko drugi? U REDU. Još jedan. 16? U REDU. 16. U redu. Dakle, ako nisam propustio itko u odsjaj ovdje, kad sam udario Enter, vidjet ćemo, algoritamski je Ukupan broj ljudi u Sandersa. Jer opet, to je kao da je svatko kao što je sjeo, prošao svoj broj off da je netko drugi, netko drugi, da je netko drugi, tako da je u teoriji, na kraju, samo jedna neugodna osoba koja bi trebala biti lijevo stoji. No, to je u redu. ubrzala smo stvari ručno. To je posebno teško vidjeti u ovom konkretnom prostoru. A ukupan broj ljudi mislimo da postoje ovdje je 546. Ukupan broj Bio sam rukom po nastavnim bližnjih, Tko je to učinio stari škola spor način, bio je 820. [SMIJEH] [PLJESAK] To je u redu. Pa sigurno zatim, tu su ti bugovi. I to je u redu. I tako mislim da se na ovom prvi put nešto što napisati, ne mora raditi. To mi se dogodilo i ovdje. Ali neka sada razmislite o tome kako bismo mogli primijeniti tu istu ideju za nešto možda ste vidjeli prije, što je to stara škola tehnologija here-- stvarno veliki telefonski imenik. I pretpostavimo da je ova imeniku ima 1.000 stranica i 1.000 imena i brojevi abecednom unutar nje. Pa, mogli bismo vrsta primijeniti sličan Ideja da se ovaj vrlo fizički problem, samo me koristiti. Ja samo vrsta varao iskorištavanjem sve vas s puno i puno različitih procesora ili mozak izvršavanju neki algoritam. Ali ako je samo malo stari mi je, još uvijek mogu iskoristiti taj isti suštinu ideje podjele i osvajanje taj problem i opet, pri čemu je polovica vas, pola vas, pola tebi, pola od vas, teoretski zadržao je sjeo, dok smo ostali, teoretski, samo s jednom osobom. Dakle, u ovoj staroj školi technology-- mi ne to treba map-- ovo stara škola tehnologija, bismo mogli početi u potrazi za nekoga sviđa Mike Smith, jedan po jedan. A vidim da ne, Mike nije ovdje. Ja sam još uvijek u odjeljku A. Na kraju, ne mogu naći ja u odjeljku B. A to je algorithm-- korak-po-korak upute. Start na početku i na jednoj stranici u isto vrijeme, u potrazi za Mike Smitha. Je li to correct-- to Algoritam ili pristup? Da, to je točno. Ako je Mike ovdje, na kraju Ja ću doći do njega. Ali to nije učinkovit. To je očito vrlo sporo. Dakle, ja mogu poluge Isti twosies pristup. Ja mogu napraviti kakve dvije, četiri, šest, osam, 10, 12. To je dvostruko brže. Idem da se Mikeu brže ako je tamo. Je li točna? Da, ali sam čuo little-- NO. Sad sam čuo ne. Da. Postoji bug potencijalno. Možda Mike samo slučajno dobiva u sendviču između dvije stranice, jer letim kroz ova dva odjednom. Tako barem trebamo neke vrsta uvjetnog popraviti. Moram reći, hej, ako sam pogodio nekoga čija Naziv počinje sa slovom T umjesto jedne S, Bolje dvostruko vratiti barem jednu stranicu. Dakle, buggy na početku, ali popravljiv. No, nitko od nas će tražiti Mike Smith putem telefona na 1000 stranica Rezervirajte jednu stranicu u isto vrijeme. Što je normalna osoba će učiniti? Ti si idući u ići na S-ih, ako je znao gdje je točaka. Možda ćete otići otprilike na sredini ili malo ukoso prema kraju. I gledam ovdje i Ja sam u odjeljku M. Ali što ti znaš o ovom problemu danas, da nismo nužno znati prije za sve nas koji samo sebe brojanje ravnopravno? Pa, Mike je očito ide da se u ovoj polovici knjige ako je on ovdje uopće jer je riješeno. I tako možete vrlo dramatically-- [DAHTANJE] Znam. [PLJESAK] To je zapravo jako jednostavan, ako to učiniti niz kralježnicu tamo. No, onda možete baciti pola problema daleko. Sada, ja sam otišao s istom problem-- naći Mike Smith u telefonu book-- ali sada je telefonski imenik počinje na M i odlazi do Z, ali je upola velika. No, to je ono što je impresivno. Baš kao u teoriji, vama, kada svi sjede samo polovicu u isto vrijeme, Problem je dobio upola velika, upola velika, opet i opet. Tako je ovaj problem postao Isti problem, ali upola velika. Sada je problema 250 stranica. Čim sam shvatio, oh, ja sam u T sekciji slučajno. Ja sam otišao predaleko. Ja mogu baciti da je polovina od telefonskog imenika daleko. Sada, ja sam dolje do Četvrtina problema. A možete ponoviti, ponavljati, ponoviti sve dok se, u teoriji, ti si napustio sa samo jednom stranicom. A ako Mike je na toj stranici, Ja sada mogu riješiti ovaj problem. No, kako brzo sam to riješiti? U prvom slučaju, to mi je kao možda 1.000 koraka za pronalaženje Mike Smith. To bi moglo imati uzeti me-- Podigla sam telefonski imenik i ja počeo gleda jedna stranica u isto vrijeme, Mike bi moglo biti 1.000 stranica kasnije. Drugi pristup je možda Potrebno mi je 500 koraka, jer letim kroz dvije u isto vrijeme. I treći pristup ipak, to je osobito snažan. Ali neka se uzeti u obzir ono što se zapravo učinio s ovom trećem pristupu. Morat ću što ću nazvati samo ovi izjave, jednu po jednu. Javi se telefonski imenik. Otvorite do sredine telefonskog imenika. Pogledajte imena. A onda se stvari malo intelektualno zanimljiv, Ako još uvijek jednostavan. Ako Smith je među imena na tom trenutnu stranicu, onda nešto uvjetno. To je poput tanjura na cesti. Poziv Mike. Ako je Mike je među imenima na toj stranici, zove Mike. Ali samo da crta i četiri ako linija stablo, ako hoćete, je istina. Odgovor na to pitanje je potvrdan. Inače, ako Smith je ranije u book-- drugim riječima, ako sam u odjeljku M i ja sam u potrazi za nekoga da lijevi, onda ono što mi je činiti je nešto vrlo slično. Tada sam trebao otvoriti do sredine lijeve polovice knjige. Na taj način ići lijevo, a zatim povratak na korak dva. Pogledajte imena tamo. Dakle, drugim riječima, učiniti istu stvar, ali na problem koji je bio prepolovljen. Znate li što drugo? Ako Smith je kasnije u knjizi temelji se na stranici gledam, otvoren sredini desna polovica knjige a zatim se vratiti opet korak dva, else-- tu je četvrtina mogućnost ovdje. Mike je bilo ovdje ili na lijevo ili udesno ili ne postoji. I ovdje možemo bolje razmisliti o tome. A u stvari, ako ste ikada imali računalo samo srušiti na vas, koji je ponekad, ali ne uvijek, Rezultat samo ljudske programer ne realizirati, oh pucati, tu je zapravo ovo četvrti scenarij. A ako ne pisati kod nositi taj scenarij, ponekad ne znam što se računalo moglo učiniti. I doista program može srušiti. No, u ovom slučaju, mislio sam o tome, a ja sam rekao, drugi zatvoriti, zato što je to četvrta logično mogući scenarij. Sada, neka je samo dodati neki riječnik pa smo može početi bacanje oko pojmova koji se su inače prilično intuitivno. Sve stvari koje sam upravo označene žutom bojom ovdje Samo ću na funkcije ili procedure. To su samo neka vrsta akcije. Tako pokupiti, otvoren, pogledaj na, poziv, otvoren, otvoren, quit-- to su samo radnje, ili ćemo poziva ih više formalno, funkcije. U međuvremenu, sada u žuto, Ja sam istaknuo stvari that-- neka je samo početak poziva im uvjetima ili grane. To su donositelji točke gdje možete ići na ovaj način, na taj način, ili neki drugi smjer i dalje. Dakle, oni će biti uvjeti. I sad ovo je malo ljubitelj. Nazovimo ova pitanja Boolean izrazi, Nakon nekoga s prezimenom bool. I logički izraz je samo nešto to je bilo istinito ili lažno, da ili ne. Dakle, to je pitanje čije je odgovor vas je važno, kako bi se u uvjetima napraviti decision-- vratiti odgovor, a zatim se lijevo ili desno, ili nešto drugo zajedno. I onda na kraju, to Linije here-- vratiti korak dva, vrati se na korak two-- smo mogli implementirati ovu ideju na različite načine. I onda one od vas s iskustva u programiranju mogao učiniti ili mogu zamisliti to drugačije. No, za današnje potrebe, to je samo ideja što je bitno. To je izazivanje ono mi općenito će nazvati loop-- nekakav ciklusa, jer To što mi nešto učiniti opet. Tako sada, neka je samo uzeti u obzir kako je dobar ovaj algoritam je. Točno je. Ako je Mike-a u knjizi, to je jedan od one četiri i opet scenarios-- i opet, mi ćemo ga pronaći. No, kako je to dobro? Pa, nemamo da se previše formalno ovdje. Ali neka je samo zemljište nešto, X i Y, da se osjećaj oblik ovog problema. Na x-osi je ovdje veličina moj problem. I y-os ovdje će biti vremena da se riješi. Dakle, možda je to broj stranica. Možda je to sekundi Stranica turns-- god. No želite brojati je što to će slika predstavljati. I to prvi algoritam, idem opisati samo kao ravnoj liniji. Ako postoji n stranice u telefonski imenik, a zatim ga Možda me čak kao n koraka kako bi pronašli Mike. Ako Verizon ili telefon tvrtke dodaje sljedeće godine još jednu stranicu, to bi mi mogao uzeti još jedan step-- još jedna jedinica vremena kako bi pronašli Mike. Tako da je samo ovaj jedan na jedan odnos. To je pravac nagiba. U međuvremenu, kako drugi algorithm-- ako sam ide dva na time-- dva, četiri, šest, osam ili double-- Čitajući stranice dvaput u isto vrijeme, istovremeno dva, to je još uvijek ravna linija. Tu je sada jedan do dva omjer, ali samo malo niže. Dakle, ako postoji to mnoge stranice na grafikonu ovdje u žuto, da bi mi se ovo mnogo koraka ili sekundi, u suprotnom će me odvesti dvostruko više na crvenom linijom. No, zelena linija je pravi takeaway. To je ono što mi općenito pozvati logorithm-- dnevnik n, gdje je n broj stranica. No, to je oblik koji je bitno danas, jer nemamo čak i razmišljati o crtanje bodova. Razmislite o ekstremnom scenariju. Pretpostavimo Verizon sutra udvostručuje broj stranica u tom telefonskom imeniku, od 1.000 do 2.000. U prvom algoritmu, ja Možda otpada dodatni 1.000 koraci u potrazi za Mike, samo zato Verizon udvostručio veličinu knjige. Drugi algorithm-- to bi moglo će mi dodatnih 500 koraka. Još 1.000 stranica, idem po dvije time-- više 500 koraka za pronalaženje Mike. Ali to treći algoritam je vrsta čaroban. Verizon udvostručuje broj stranica od 1.000 do 2.000, No, koliko više koraka radi to uzmi me tražiti Mike? To je samo jedna, jer ja mogu samo suza u imeniku još jednom od problema na 2000 stranicu 1000 stranica problema, i voila. Ive 'uzeti masivni ugriz iz nje. A ako idete stvarno ekstremno, Pretpostavljam da je u imeniku Tvrtka je imala nešto ludo kao 4 milijarde stranica telefonski imenik. Pa koliko koraka može trajati naći Mike Smith u 4 milijarde Stranica telefonski imenik? To je veliki broj, ali samo 4 milijarde Dvije milijarde do milijarda 500 milijuna, 250 million-- dalje zvuči kao velikim brojevima, ali sam se vrlo brzo uzimajući u manjim vrijednostima. A u stvari, ako ja učiniti math U redu, ja mogu samo podijeliti 4000000000 od otprilike 32 puta prije Ja bi se na samo jedan. Dakle, ako je to telefonski imenik bilo 4 milijarde stranica, nije velika stvar. U roku od nekoliko sekundi, možda i 32 sekundi, mogao bih ga podijeliti na pola i na kraju naći Mike ili zaključiti da on nije tamo. I to je suština algorithm-- dobar algoritam. I to je jedan od Ciljevi klase kao što je ovaj, pokušava shvatiti kako mogu riješiti problem, ne samo ispravno, kao što sam uvijek znao kako se to radi jedno Stranica na time-- ali ispravno i dobro. Kako mogu dizajnirati dobar rješenja problema? Tako ćemo uzeti trenutak ovdje i vam dati osjećaj sada od CS50 tečaj itself-- uvesti osoblje Nekoliko naravno je. Neposredno prije 2:00, mi ćemo kratki predah tako da oni od vas koji su u kupovinu može patka van i uzeti pogledajte neke druge klase i gledati ostatak ove online. No, za sada, neka mi predstavljamo CS50, sam razred, a posebno što je novo. Dakle, prošlost proljeće, mi proveo vrlo malo time-- Tečaj osoblje i I-- razmišljanja o tome što je to što želimo CS50 biti, i ide natrag u prvi načela, da tako kažemo, uzeti u obzir ono što je želimo ovaj tečaj izgledati i biti kao što je po svojim učenicima. I tako što ćete vidjeti u problemu postaviti na nulu, kao, poziv da pogledamo kako URL koji sažima neki od motiva iza Sljedeća karakteristika pada 2016. Dakle, kao što ste možda sakupljen iz TL: DR poklon, Nastavni plan i danas, kao i iz Katalog Naravno, ove godine u CS50, ste samo očekuje da prisustvuju today-- tako posao dobro done-- a posljednji predavanje 21. studenog. A ti si dobrodošao, ali se ne očekuje da prisustvovati one predavanja u sredini, jer ono što radimo ove godine, snima u realnom vremenu materijala tečaja je. Tako će sve ostati struja i ugraditi najbolje što can-- aktualnim događajima i razgovore koji ljudi možda imati u industriji u svijet, ali što taj materijal dostupni, kao rezultat, čak earlier-- zajedno s cjelovitim transkriptima i mogućnost pretraživanja i linkove na druge resurse. I doista, mi smo bili tvrdeći neko vrijeme a mi sada ne vjerujem da je ovo, da možemo stvarati, digitalno, više potop, više uvjerljiv obrazovno iskustvo, za razliku od za prikupljanje ovdje neke 23 puta osobno, čuo nekoga poput mene jednostavno govoriti o računalnoj znanosti, za razliku od aktivnije sudjelovanje. Dakle, što ćete vidjeti u toku je nastavni plan i program skica semestra ovdje uz kada Predavanja se snima, na koje ste dobrodošao, ali se ne očekuje, i kada će biti objavljen na web stranici tečaja je. A što ćemo raditi ovdje Srijedom počinju sljedeći tjedan, je puno intimnije, sa samo oni ljudi koji žele sudjelovati, je tzv šetnja, gdje sam i glave toku je zapravo će stvari malo intimniji ovdje u orkestru dio, još uvijek imaju neku tehnologiju i šetnja kroz tekuće tjedan Problem set, i ponuditi vam particularly-- ako među onima manje comfortable-- sve više smjernice koje možda želite ili potreba za tjedan izazov. A isto tako, za one koji ne mogu prisustvovati oni osobno, nije velika stvar. Tu će se na sličan način na čelu jedan od tečaja je višeg osoblja, Zamalya, ista prilika ugrađen u problem se postavlja. Problem postavlja ove godine bit će objavljen petkom i više ne činiti sedam dana kasnije, ali 10 dana later-- namjerno preklapanje sa svakim problemom postaviti, kako bi se bolje primiti, nadamo se, oseka i protok u studentskim rasporedi, pogotovo kad midterms ili atletika ili znanstvenici ili extracurriculars imaju tendenciju da dolaze i odlaze osobito sredinom semestra. To bi trebalo dati malo više diskrecija je li ti prednji učitati svoj tjedan s CS50 ili leđima tereta to na sljedeći vikend umjesto. Dakle, izgleda da je tečaj u nastavni plan i program ovdje zbog istog rasporeda. A vi ćete primijetiti previše među promjene u ovoj godini, za one koji više upoznat s programiranje u prošlosti, ćemo početi semestru mi ćemo danas u nule, usredotočiti posebno na jeziku zove C, a onda ne prijelaz u PHP, ali se jezik zove Python prema kraju semestra u kontekstu web programiranje, uz SQL i JavaScript, HTML, CSS i još više. A u odgovoru na jedan FAQ, to je doista slučaj da je CS nije tako strašno kao što sam nekoć mislio da je, ali to je kao puno posla kao što sam čuo da bi moglo biti. No, to je recimo da ovdje su neke statistike od jeseni 2015. studentskog tijela, pri čemu vodoravne plave linije predstavlja prosječan broj sati prijavljen. I vidjet ćete prosječno šest do 10 do 12-- možda 16 ili tako i tako dalje, ali visoke varijanca da bude jasno. I tako shvatiti da ne postoji samo studenti udobnije i manje ugodno u tijeku, ali odgovara za podršku Struktura da se one studente kroz semestar uspješno. Doista, u odgovoru na jedan FAQ, trebali uzmete CS50 kao prvoj godini? Apsolutno. A u stvari, ja ne žalim što nije pronašao put ili pronašao novo područje da prva godina kao dobro. I treba li se CS50 sa drugi tečajevi, sigurno su well-- a opći savjet bismo mogli dati učenicima, koji CS50 je vjerojatno nije vrsta klasu ili intro klase da bi trebali ponijeti sa tri druge ili četiri p-set klase. Ali, ako ste uzimanje druge dvije p-set klase, nešto drugo, i CS50, apsolutno rukovanje. Ja sam imao mnogo učenika u prošlosti učinili prilično uspješno. A da bi vas ka da je ciljnu liniju uspješno, ne naravno ima sections-- različitih pjesama za učenike manje udoban, udobnije, a negdje između, pri čemu u tijeku je Prvi problem set, vas će se tražiti da opišu sebe. A ako ste među onima manje udoban, to je vrsta stvar da ste upravo prije znali. I doista, to je bio raste demografske u CS50 za prilično nekoliko godina. Kao što je od prošle jeseni za Primjerice, 58% klase sebe opisao kao među onima manje udoban, 9% među onima više udoban, a onda ostali studenti vani u crvena opisujući sebe kao što je negdje između. I vidjet ćete ovdje teme ukupni i raspored sekcije, od kojih su svi nude se u osobi, u u realnom vremenu, uz naravno a Nevjerojatno osoblje nastavnih bližnjima i naravno pomoćnici, od kojih su neki upoznat ćete u samo jednom trenutku. same sekcije, kao što ćete vidjeti, volju se ponedjeljkom i utorkom i srijedom, kako bi se omogućilo da se roniti u nakon odabira, ako tako birati, u tijeku je predavanje je ranije tog tjedna. A zatim radno vrijeme, koje svakako, sa svakim godine, su ne manje od a izazov za tečaj. I ove godine, mi ne planiramo samo za držanje ured hours-- jedan na jednoj mogućnosti za pomoć za studenti srijedom četvrtkom i nedjeljom, posljednji od onih što je u poslijepodnevnim satima po dizajnu smanjiti neke od stresa koji uvijek javlja s kasno u noć p-settting s rokom looming-- ali radno vrijeme će biti ponuđena ponedjeljkom i utorkom i Srijedom i petkom i subotom, zahvaljujući našim prijateljima u HSA. CS50 sada ima svoj vlastiti prostor za studente i osoblje CS50, na vrhu 67. planini Auburn ulici, upravo u Harvard Squareu. Vizija za to je da CS50-a TFS i CAS tijekom tjedna, prilično je gotovo cijele dana, bit će tu za podršku. Dakle, ako imaš neki Pitanje na p-set ili ste osjećaj malo blokiran ili malo zbunjen, i pakao, imaš jedan sat ili pola sata između klasa, posebno u square-- možete pop i imaju na to pitanje odgovorio od imati tu zbrku clarified-- itekako u duhu, ste upoznati, u matematici odjel vlastiti math pitanja centar, ali prilično mnogo oko sat po [? Gcal?] Da ćemo objaviti na internetu. Poduke je također dostupna za one učenika, slobodno iz predmeta a vlastito osoblje, ako želite intimniji jedan na jedan, ili samo dva ili tri kolege iz razreda, koji rade s jednim od članova osoblja tečaja je. I doista, ovo ovdje su samo neki od članova osoblja tečaja je, Neke od koga ćete susret u samo jednom trenutku. U stvari, CS50 vlastiti demonstrator glava, i glavu Naravno asistent i učitelj, mogao doći na gore, dopustiti da ih pozdravi. [PLJESAK] GLAS 1: [nečujan]. [PLJESAK] GLAS 2: [nečujan]. [PLJESAK] GLAS 3: [nečujan]. [PLJESAK] DAVID Malan: i omogućiti nam da dovesti na brodu dva od CS50-a najviše viši stožerni, Rob i Zamayla kao dobro. [PLJESAK] Doista, i Rob i Zamayla su s nama tako dugo, da sam bio u mogućnosti ići u CS50 arhive i naći ovaj vrlo SD snimke od njih sudjeluju na sebe pozornici prije nekoliko godina. ROB: [nečujan]. [PLJESAK] ZAMAYLA: [nečujan] [PLJESAK] DAVID Malan: Hvala. Dakle, osim ovih članovi tima ovdje, CS50 ima tim od gotovo 100 osoblje, svi od kojih će biti dostupan za dijelove a radno vrijeme i još mnogo toga. I kao što je Rob kaže previše, ovo je najznačajniji remont od CS50 u 10 godina da Ja sam bio u [nečujan]. [Nečujan] usmjerena posebno u pružanju struktura za podršku, obrezivanje daleko puno većina koja je bila akumulirana u 10 godina iterativnog razvoja na stazi je problematična setovima. Tako je ove godine, ne samo u razredu, ali također u obliku problema tečaja je setovi, treba da se nalaze stvari se više uravnotežen, trimer, mnogo za rukovanje od u posljednjih godina, kao što smo prolio neke od prtljage koja je razvijen od strane prirode razvija godine Nakon godinu dana i koje se ponavljaju. Dakle, novi i poboljšani počinje danas. Vi ćete upoznati neke više od Osoblje naravno je u izborniku [nečujan] u 2:30, gdje se služimo, kao tradicije, torte. Tu je malo više kolača od toga, ali ćete susreću Erin i Tobias i drugi i dalje. I dopustite mi da vam dati obilazak prije nego što čujemo iz neke od drugih članova osoblja u klasi, što čeka kao dobro. U stvari, mi uvijek početi CS50-a semestar ovaj dolazak u subotu, s onim što se zove CS50 Puzzle dan. To nema nikakve veze s informatika per se, ali o problemu rješavanje općenito. A ako tako odlučite sudjelovati, po nekim pozivima, možda ste vidjeli vrata pao ili na pozornici ovdje to je prilika u timovima dva ili tri ili četiri, sudjelovati na zagonetke i pizzu i nagrade i more-- ove subote, Stay tuned za više. Naći ćete također da svaki Petak, na vatre i leda, ne CS50 donijeti cijela hrpa studenata na ručak, da bi veliki Klasa osjećaju intimniji, i općenito okupiti bivših i prijatelji iz industrije razgovarati o tome što rade bio do još od diplome. Isto tako, ove godine ćemo i mi inaugurirati prvi ikad CS50 50 kodiranje contest-- srednju semestar prilika kako bi se omogućilo svima na opt u osnovi, da imaju Izazov wits protiv razredu, opet u timovima po dvoje ili troje ili četiri, koristeći samo da je programiranje pamet da onda su pod pojas nakon samo šest ili sedam tjedana klase, te sudjeluje u ovoj vrsti natjecanja online-- ako želite brusiti svoj vlastiti vještina sve više u taj izazov. Na kraju semestra je tzv CS50 Hackathon-- prilika da počinje u 7:00 PM završava u 7.00 sati, a usput 12 večernjim satima u kojima roniti u završnoj project-- toku je prilika da dizajn i provoditi najviše ništa od interesa za vas sa svojim nastave Fellow Vodstvo. Oko 9:00 Da li mi obično služe pizzu, 1:00, Philippe-a, a neki od nas koji su još budni u 5:00 sati, su shuttle bussed dolje Put do IHOP za doručak. A onda nekoliko dana kasnije je tzv CS50 fare-- kraj semestra izložbi u Proslava koliko daleko toliko od CS50 učenici su došli iz tjedan nula pa sve do tjedan dana, i imajući u vidu da 73% onih kolege i tvoje i ove godine imaju nikad uzeti CS razred prije. U stvari, da reemphasize koliko ovdje je još nekoliko lica iz CS50 osoblja. GLAS 4: [nečujan]. GLAS 5: [nečujan]. GLAS 6: [nečujan]. GLAS 7: [nečujan]. GLAS 8: [nečujan] GLAS 9: [nečujan]. GLAS 4: [nečujan]. GLAS 10: [nečujan]. GLAS 11: [nečujan]. GLAS 12: [nečujan]. GLAS 13: [nečujan] GLAS 14: [nečujan]. GLAS 13: [nečujan]. GLAS 15: [nečujan] GLAS 16: [nečujan]. GLAS 11: [nečujan] GLAS 5: [nečujan]. DAVID Malan: Neke momčadi su i sami u kupovinu klase. Ali ako one članove od CS50 osoblje su tu, mogao doći na gore samo na trenutak. CS50-a TFS i CAS-a i [? osoblja?] Članovi here-- to su samo neki od faces-- jednog od koga ste upravo vidio, a nekoliko other-- i još nekoliko osoba još. Zašto ne ići naprijed i omogućiti dečki pet minuta pauze. Ako trebate patka na trgovina klase, to je u redu. A za pet minuta, mi ćemo nastaviti, uzimanje pogledati Scratch-- je prvi našeg programskog jezika, upoznati Osoblje toku je ovdje neki više, i usredotočiti se na kraju o problemu postavili na nulu. Tako ćemo se vratiti za pet minuta. [PLJESAK] U redu. Dakle, mi smo natrag. I u našem preostalo Vrijeme danas, cilj je da se na razini igralište u smislu neke terminologije, u smislu nekih ideja. Jer doista, kao i po neke od karata ranije, tu će biti raspon razina iskustva u razredu, čiji su studenti imaju uzeti neko programiranje i prije, od kojih neki nisu. I tako ovaj prvi problem set i sa ovom prvom jeziku imamo priliku za početak uzeti zdravo za gotovo nakon današnjeg dana neka zajednička terminologija i ideja. A mi ćemo to učiniti putem Tečaj prvi languages-- osim C i Python i JavaScript i SQL i HTML i CSS, ćemo se usredotočiti na početku i samo za problema postaviti na nulu na ovom grafičkom jeziku, pod nazivom Scratch, razvijen od strane MIT Media Laba niz cestu, kako bi studenti i djeca posebno izražavaju algorithmically-- na neki način više u skladu s onim bismo mogli nazvati računalne razmišljanja. I to je koristan jezik, jer vrlo brzo se sljedećeg tjedna u tjedan dana, ćemo prijeći na više Tradicionalni i kompliciranih jezik zove C, koji je čisto tekstualno. Vi samo koristiti tipkovnicu na Kako bi se napisati upute poput ovih na ekranu. No, čak i ako ste nikada nije vidio programski jezik prije, u samo pogledavši to, sve se to zagonetan, vjerojatno možete pogoditi da Vjerojatno će ispisati Hello World. No, tu je mnogo sintaktička iznad glave tamo. Tu je čudno hash simbol ili hash tag do vrha. Postoji ove zgrade, neki zagrade, vitičastim zagradama, polu-colon-- postoji samo toliko vizualno sintaksa koja dobiva na putu. Mi smo započeli tečaj s Blok kako bi dobili pored svih onih intelektualno nezanimljiv nesuglasice, i umjesto toga usredotočiti na ideje. U stvari, to može biti i prije. To je, za to, tjedan će biti poslije. To je, u ovom grafičkom jezik Scratch, kako bi implementirati iste program-- program koji kada pokrenuti, jednostavno kaže Hello World. A što je lijepo o Scratch je da je ovo grafički programiranje okruženje koje koristi slagalice ili blokovi, da samo sni zajedno ako to čini logično smisla da to učini. A s nule možete razviti animacije i interaktivnih igara i umjetnost, i bilo koji broj stvari koje možete zamisliti u svom vlastitom umu, i provesti ih jednostavno povlačenjem i ispuštanjem slagalice. I doista, ćemo imati sposobnost izraziti neke od istih ideja da sam samo spomenuo trenutak Prije u kontekstu Mike Smith i traži stvari telefonski book-- kao funkcija, samo akcije, stvari kao što su petlje koji ne stvari opet i opet, varijable, što je nešto što ćemo uvesti, ali to je poznato možda iz algebra-- samo neka vrsta rezervirano mjesto pohraniti neku vrijednost koju bi moglo potrebno later-- Boolean izrazi, gdje su oni da ne ili istina lažno pitanja od prije. Uvjeti su ti vilice u road-- one grane da tako kažemo. A onda postoje neki ljubitelj Značajke Vidjet ćemo i danas, zovu polja i teme i događaje, da ćemo tada ponovno iznad Vrijeme na različitim jezicima. No, Blok nam omogućuje istražiti sve to. Dakle, ovdje u nule, ova ljubičasta Blok je ono funkcija se obično će izgledati. Ova ljubičasta puzzle komad koji ima neke Riječ kao recimo, što je akcija, a onda bi to moglo imati rasprava ili parameter-- neki način od vrste prilagodbe što je blok radi tako da to nije unaprijed određen MIT što ovaj ljubičasti blok govori. U stvari, vidjet ćete u Trenutak koji sam mogao upisati riječi poput Pozdrav svijetu, ili Pozdrav David, ili zdravo Zamayla, ili što god želim, u argumentu na tu zagonetku piece-- bijeli okvir tamo. U međuvremenu, ako želim petlju, mi ćemo vidjeti da postoji slagalice koji izgleda malo naranču ovako. A njihov oblik vrsta sugerira da nešto i opet se dogodi u ciklusu. Dakle, ako sam omotati pozdraviti svjetski blok sa zauvijek blokirati u nule, to samo će zadržati govoreći zdravo svijet zauvijek, doslovno. U međuvremenu, postoji još jedan vrsta petlje u nule da ćemo see-- reprizu block-- gdje je, ako vas unaprijed znati koliko puta želite da se petlja izvršiti konačan broj puta vas fact-- može odrediti da se upišete u nizu ili čak priključiti varijable, kao što su X i Y kao što ćemo vidjeti. U stvari, varijable poput I u ovom slučaju, što je zajednički naziv za cjelobrojna varijabla koja Samo pohranjuje number-- cijeli broj može biti, koristiti ovaj narančasti blok ovdje da biste postavite varijablu kao da sam na nulu. Evo primjera u zelenom A. Logički izraz u nule. Iako ovo izgleda kao matematika formula, matematičke nejednakosti kao što je ovaj Stvarno su Boolean izrazi. Ovo je ili istinita ili lažna. I je manje od 50 godina. To je bilo da ili ne odgovor ili true ili false odgovor. A mi ćemo se općenito nazvati ti Boolean izraza. I to ne mora biti 50. To može biti x manja od y, veći od y, jednako y-- bilo koji broj ostalih pitanja mogu biti pitani. Sada, na prvi pogled, ovo bi moglo izgledati iznenada prilično hrabar ovdje, i to je to. Ali koncept pametno, to je prilično poznato od prije. Ako je x manje od y, nego reci koliko. Inače, ako je x veći od y, onda reci koliko. Inače kažu x je jednako y. Tako imamo primjer Postoji treće scenario-- jedino treći possibility-- x je bilo veće od, manje od ili jednake. Dakle, imamo tri puta raskrižje. A primijetiti što je cool here-- ispočetka, čini se, ima samo jednu zagonetku komad, u ovom slučaju, u ako drugi blok. Pa ipak, da bi se činiti da vam podrazumijevaju se samo da imaju dva put raskrižje. Možete ići lijevo ili desno, ali što o toj trećoj scenarij? Što ako je x jednak y? Ništa posebno. Uzmi jedan dio slagalice, staviti još jedan unutar nje stvoriti semantički ekvivalent odnosno ako, drugo ako else-- a sada ti imati svoj trostruki raskrižje. I kao što ćemo vidjeti, Blok slagalice može biti rastegnut i rastu, tako kao strpati više stvari u njima. Ne morate da stane sve u svoje zadane veličine. To je nešto što ćete uskoro se naziva polje. To je kao list-- neki način pohranjivanje više podataka u varijabli, a ne samo broj. To ćemo vidjeti predstavnik nešto što se zove multi-threading. U stvari, sve svoje Macove i računala ovih dana podržavaju multi-threading, što znači da možete doslovno raditi više stvari u isto vrijeme. Možete imati Microsoft Word se u prvom planu, radeći na nekom eseju. Možda ćete imati preglednik u otvor pozadini G-mail ili Facebook ili slično. Vaše računalo može raditi više stvari danas jer je multi-navojem, a programi su u u Posebno su multi-navojem. Ima stvari koje se nazivaju događaji kao dobro u svijetu ispočetka, a zatim tu je način previše, kako bi naše vlastite prilagođene slagalice, ako stvari zapravo ne postoje unaprijed. Tako ćemo potaknuti na sljedeći način. Prije nekoliko godina, kad sam prvi otkrio nule, kad sam bio zapravo Grad student na MIT-u, mi sami su zadatak napraviti domaću zadaću. A ja implemented-- koji je, u retrospektivi, bio je vrlo lošu odluku, jer to je najviše furioznog pjesma na svijetu slušati za osam sati dok je radio na svom homework-- ali nešto sam nazvao Oscar vrijeme, što je možda poznato pjesma. CS50s posjedovati Jordan Hayashi, jedan od naši višeg djelatnika, to je nadograđen za 2015. godinu i Sada 2016, jer natrag u dan, imala sam sve samo ide u Oscar kantu za smeće. Sada smo podržati recikliranje i kompostiranje. No, da se bojite sliku od onoga što možemo učiniti ovdje te motivirati neke primjeri nižoj razini, Možemo li dobiti jednu drugu dobrovoljac samo da dođe gore i igra moj prvi domaći zadatak ikad? Dođi gore. Kako se zoveš? HENRY: Henry. DAVID Malan: Henry, dođe gore. Dođi gore. Glava u oba smjera, a vidjet ćete u jednom trenutku, Ja ću ići naprijed i pogoditi zelena zastava u gornjem desnom rukom kutak, što znači ići. Ikona malo stop znak će reći stop, a to je kada se pokrene i zaustaviti program. Drago mi je da sam vas upoznala. U redu. Tako ćemo vidjeti upute na zaslonu u samo jednom trenutku. I samo igrajući ovu igru za neke seconds-- povjerenja u mene, nećemo se žele igrati sve do end-- CETE dobili osjećaj o tome što program radi. I više nego samo fokusirati na Henryja dobra ili loša u ovoj igri, fokus i kako je proveden po meni izvorno i Jordan. Drugim riječima, u kojima su varijable? Gdje su petlje? Gdje su funkcije? A vidjet ćemo, ako ne vidimo one ispod haube. Samo kliknite i povucite smeće na odgovarajući smeće. [MUSIC SVIRA] U redu. To je jako dobro. Zašto ne bismo ga zaustaviti. Hvala ti. Čestitamo Henry. Hvala ti. [PLJESAK] Zamislite pogrešaka taj program. Ako postoji problem dvije minuti song--, ali tako Što se ovdje događa zapravo? Kao što je komplicirano kao što se moglo početi činiti da se s vremenom, zaista sve više i više stvari počela padati, ono što je zanimljivo o tome ova vrsta example-- pa ćemo vidjeti neke others-- je da ako izgledaju prošlosti složenosti ili sofisticiranost u igri, tu je vrlo jednostavna građevina blokovi koji play-- svi koji, ako ih destilirati onima izgrađeni su vrlo pristupačne i provedive k sebi. Primjerice, to je je neko vrijeme, ali ja sam prilično siguran što sam u početku činio kad što ovu igru ​​po prvi put Bio sam potpuno nalik procrastinated. Nisam se usredotočiti na sve na logika ili slagalice, Usredotočila sam se na grafiku i nalaz ulica post i smeće i sve to. Ali oni su bili uvjet Sastojci na prvom mjestu. I jednom sam završio procrastinating i postavljanje sveobuhvatni okvir, Odlučio sam, neka mi samo napraviti jedan komad smeća pada s neba. A vidjet ćemo Scratch podržava stvari zove sprites-- znakova koji se mogu imaju različite kostime na tako da oni izgledaju drugačije. I tako sam stavio smeće kostim na jednoj takvoj duh. I samo je bila potrebna pasti s neba. I tako ispada, Scratch, kao i većina programskih jezika, podržava slučajnih brojeva ili tehnički pseudokod slučajnih brojeva, tako da povučete i ispuštajući neke slagalice, Sam bio u mogućnosti da imaju smeće dolaze s lijeva na prvom mjestu. I onda sljedeći put je pao, iz pravo, a potom od sredine. I sve je igra nije bila baš imaju smeće pada s neba. Niste mogli ukazati na to, ili kliknuti na njega. Ne mogu otvoriti kantu za smeće. Ne mogu ništa učiniti. Ali to je bio beba koraka prema mom krajnji vid. A nakon toga, ja zapravo provodi neka vrsta od istraživanja, tako da ako je kliknuti i povucite na komad smeća nad kantu za smeće, Oscar-a Poklopac će se otvoriti i zatvoriti. Ništa se ne bi dogodilo u smeće, ali barem poklopac otvoriti i zatvoriti. Pa onda provjeriti, korak dva od dva. A to je ono što će biti Ključ u oba problema postaviti na nulu te u programiranju općenito, jest uzeti ove vrlo namjerno male korake. Jer ne samo da vam omogućiti da osjećati iskreno postigao mnogo više quickly-- to je najgora stvar na svijetu pokušati implementirati sve Oscar vremena, zatim sata kasnije pogodio zelenu zastavu, a ništa ne radi kao što se očekivalo jer gdje ti se čak i početi ispravljanje ili otkloniti taj program? To je samo neodoljiv. I tako zaista prihvaćaju tu ideju uzimanja steps-- male korake opet i again-- izgradnji nešto što je, na kraju, zaista impresivna i složen, ali u početku, nije ni približno toliko. U stvari, učinimo to. Pusti me naprijed and-- se Scratch postoji na webu na Scratch.MIT.edu, a vi ćete se javi kao koliko opet u problemu postaviti na nulu, Specifikacija koji je već na CS50 web stranici. No, to je ono što Scratch je sama po sebi. I tu je zapravo samo Tri glavna područja. U gornjem lijevom kutu tamo je tzv fazi. To je ispočetka. Zadana kostim je mačka. I ovo je pravokutnog svijet koje možete move-- gore, dolje, lijevo, Pravo i neke druge stvari. U sredini ovdje su naši kategorije ili naše palete slagalice, i različite boje značiti različite stvari. A ako malo pročačkati, vidjet ćete stvari kao što su petlje i uvjetima te varijable i drugih sastojaka. I onda ovdje je skripta područje. Ovo je mjesto gdje se mogu povući i ispustiti one slagalice raditi stvari. Tako ćemo napraviti jednu takvu stvar. Pusti me naprijed and-- i znam gdje je. Zato ću odmah kliknite na gdje Znam da su spremni da se, ali pokazuje i klikom i poking okolo su neizbježne. Dakle, kada zelena zastava pritisne, ono što želim učiniti? Idem to učiniti. Idem povući ovu ljubičastu zagonetku komad, pozdravi dvije sekunde, i neka mi zumirati. I ja ću da se to promijeni biti ono što ja želim da be-- Hello World dvije sekunde je u redu. Sada ću kliknuti zelena zastava, ili ako sam stvarno želite, I pun mogu zaslon, a zatim se vratiti. To će samo zadržati sve u jednom prozoru. Zelena flag-- Hello World. U redu. Nije sve to zanimljivo. Pa neka mi ići naprijed i učiniti. Pokušat ću još jednom. Kada zelena zastava clicked-- neka je učiniti nešto poput zvuka. I primijetiti da iz kutija za besplatno dobiti je mačka zvuk, kao što je zadana Duh. Pa sad neka mi ići naprijed i hit zelenu zastavu sada. [Mijaukati] Aw. To je sladak. Ja programiranje. Pa što sam učinio? To je ekvivalent programa. Očito je super jednostavna. To nije stvarno poduzeti sve što je mnogo trud i MIT učinio najveći dio posla, ali sam nazvao funkcija. Imam koristi funkciju. Ja sam napravio neke akcije, koristeći samo da je jedan ljubičasti zagonetka komad. Pa, ako želim napraviti Tri Meows u nizu? Dopustite mi ići naprijed i učiniti dva i tri. A primijetiti da kada vas lebdjeti u blizini jedan dio slagalice, Čini se malo bijele linije vrsta magnetski, i to će puknuti zajedno kada se otpusti. Idemo vidjeti što se ovdje događa. [Mijaukati] Postoji bug. Samo sam čuo jednu Mijau. Zašto bi to bio? Da? Da. Mi stvarno ne čuju, ali to je dobro intuicija. Svi oni igraju u isto vrijeme. Zašto? Pa, računalo samo ide učiniti ono što ga kažem. Dakle, ako ti kažeš, igrati zvuk, igrati zvuk, igrati zvuk, ali ga ne reci igrati do gotovi ste, igrati dok ste učinili, to će puhati kroz program jako brzo a ne samo ono što ga kažem. Tako sam zapravo treba popraviti to u nekoliko načina. Ja samo mogu to učiniti, dobili osloboditi od toga. Pokušat ću ovu drugu zagonetku piece-- igrati zvuk Mijau dok učinili, a zatim povucite tri tih i kliknite Play. [Mijaukati] To baš i nije very-- Hvala you-- vrlo prirodno. Pa zašto ne I-- neka da odem u kontrolu ovdje. Nice. Pričekajte jednu sekundu, a sada pusti me vrati na zvukove i reproducirati zvuk dok radi, a onda neka mi se čekati jednu sekundu. A onda me pusti i dobiti jedan više zvuka, a ovdje mi ići. [Mijaukati] Malo više prirodno, ali to nije vrlo učinkovit. Kao što sam bio uzimajući dosadno, a sve se nakratko, pa natrag i naprijed i stvarno umnožavanje mi po našem mišljenju prilično mnogo kopiranje i lijepljenje. Doista, ako sam Kontrola klikne ili desnom kliknuli, Mogao sam samo kopirati i zalijepiti. Što bi bilo bolje izgraditi za korištenje? Što je ideja od prije? Da, tako petlja. A u stvari, ako poked oko sebe, bismo mogli naći upravo to. Pusti me da Događanja odnosno kontrole. Tako repeat-- ja ne želim da bude 10 puta. To je idući u dobiti neugodno brzo. Ali, ja ću ponoviti tri puta. Pusti me da se vratim na zvuk i reproducirati zvuk dok se to radi. Pusti me da se vratim na kontrolu i samo čekati jednu sekundu. I napomena, možda ćete mislim da to ne odgovara, ali opet, ako magnetski li ga pustiti ugriz na mjestu, to će rasti ispuniti. Što je to igra sada? [Mijaukati] U REDU. Nice. A to je ono što bi se moglo nazvati program koji je također točno. To meowed tri puta prilično naravno, ali bolje je dizajniran. Ja sam koristeći manje redundancije. Nisam kopirati i zalijepiti ništa. Upravo sam se bolju ideju. Sada, to je još uvijek nije sve što je Zanimljivo s Scratch ne radi bilo što. Dakle, neka je učiniti nešto drugo umjesto toga. Učinimo nešto zauvijek. I znate što? Zahtjev se čini zanimljivo. Idemo ga premjestiti 10 koraci i pogodak igrati sada. U REDU. Pa možemo vrsta otpora ga natrag, i on je još uvijek pokrenut zato što je to zauvijek. Tako se petlja radi ono što je rekao za napraviti, ali to nije sve što je zanimljivo. Napravimo to. Dopustite mi dodati upravljački blok, i koristiti jednu od tih uvjeta po prvi puta. Dakle, to će pomaknuti 10 steps-- 10 točaka, 10 piksela na screen-- onda će se pitati to pitanje. Ako je nešto istina, onda nešto u tom bloku. Tako ispada osjetilni ima cjelinu hrpa Boolean expressions-- Pitanja iz DA NE ili istina lažna form-- neka mi to učiniti. Ako touching-- a zatim tu je ovaj mali padajući izbornik. Mogu ga parametriranje. Ako dodirivanjem edge-- neka je učiniti nešto takvo. Dakle, ako dira edge-- neka mi se vratiti u pokretu. A zašto ne bismo samo okrenuti za 180 stupnjeva? U redu. Dakle, zauvijek, pomaknuti 10 koraka. Ako ste dodirivanjem rub, okrenuti za 180 stupnjeva. I to nije kraj programa jer ste u zauvijek blokirati, tako da će ići opet i opet i opet i opet. Tako ćemo vidjeti što će se dogoditi. U REDU. Malo lud, ali nekako cool. I možemo dodati da to neke gluposti da nisu sve što je intelektualno zanimljiv. Ali ako se ostvario taj mali Mikrofon button-- jao. Pusti me očistiti ovo gore. Dopustite mi da bi se poboljšala to kao oni bi rekli na TV-u. Čist da se, Save i sada ići do skripte. A sada, pustite me na zvuk. Dopustite mi dati joj ime. Nazvat ću ovo jao. A sada igrati zvuk jao. Obavijest se pojavljuje u Malo padajući izbornik. Da vidimo. [JOJ] [SMIJEH] Ali možemo promijeniti t svojima u letu. Možemo biti dvostruko neugodno. [JOJ] Ili, ako mi to napraviti u obliku 1.000 koraka na prvi time-- U REDU. Tako ćemo ostaviti na miru. Pa opet, zgrada blocks-- I započeo s nečim super jednostavan, i onda sam dodao značajku, dodao značajku, dodao značajku. A ja više ne moraju brinuti o kako je prvi od tih značajki proveden je kao što sam i dalje na sloj stvari na vrhu. Tako je, u stvari, neka mi učiniti nešto drugo ovdje. Dopustite mi ići naprijed i otvoriti datoteku koja Donio sam unaprijed, pod nazivom Ovce. Dakle, to je malo drugačiji lik koji izgleda ovako. I daj da vidim ako ne mogu nešto pomoću brojača u ovom case-- tzv varijablu. Ja ću ići naprijed i pod Events-- neka mi se zelena zastava kliknuli. Onda me pusti da se podatci, što ja znam od samo igranje okolo i prije, gdje su varijable. I ja ću ići naprijed i povucite ovo. Dakle, varijabla zove brojač, a Idem za inicijalizaciju na nulu. Mogu ga nazvati anything-- x ili y ili z-- ali u programiranju, pozivajući nešto u semantički koristan način, kao što je brojač, koji opisuje što je to, to je Puno je lakše pročitati svoj kod kasnije. Pusti me naprijed i dobiti zauvijek blokirati ovdje. I da me pusti da izgleda stranica i napraviti Say blok. No, ono što je cool o varijablama je sam ne moraju samo upisati nešto kao pozdrav svijetu, što smo već učinio sam umjesto toga može ići podataka i povucite moj varijablu, pa čak i iako se oblik ne baš izgleda kao da bi trebao stati, ona će rasti ispuniti. A ja ću samo reći brojač za jedan second-- spoiler-- on će brojati. Mi ćemo to reći za jednu sekundu. Onda ću otići i imaju ga čekati za jednu sekundu, tako da se ne računa se prebrzo. I onda na kraju, promijeniti brojača by one-- drugim riječima, povećajte brojač po jedan Dodatnu vrijednost i to zauvijek. Dakle, ovce također, poput programer, broji od 0. A ako ćemo čekati dovoljno dugo, on će to učiniti zauvijek. Ali to baš i nije istina, jer u stvari, kao što ćemo otkriti u jednom tjednu, integers i računala općenitije, tehnički imaju tek finite-- dobro, umjesto računala, kada oni predstavljaju cijele brojeve, samo imaju ograničen broj bitova. Ti žarulje tamo može samo računati tako visoko prije nego što ste se žarulja. I računalo također, samo da ima toliko memorije, ima samo toliko tranzistora, tako da samo može računati tako visoka. Tako ispada da se ovce, Mislim, mogu računati na 2 milijarde ili nešto prilično velika. Dakle, nećemo se čekati da se to dogodi. No, na kraju su neki bug će se dogoditi koji mogu imati neke vrlo stvarni svijet posljedice. No, iza ovaca, koje Samo uvodi varijablu. Idemo naprijed i otvoriti nešto što sam napravio unaprijed ovdje se zove Pet the Cat-- Five Mačka ovamo. A primjetiti ovdje je to malo blokovi, ali kad zelena zastava kliknuo, zauvijek na sljedeći način. Ako ste dira miš pointer-- pa se pokazivač na zaslonu, arrow-- igrati zvuk mijau a zatim čekati dvije sekunde. I upravo to zauvijek. Samo stalno čekati da li je pointer-- ako je mačka dodiruje pokazivač. Tako sam pogodak igrati. Ništa se događa. No, kao što sam pomaknite pokazivač preko mačka, [Mijaukati] I ako sam ga odmaknuti, a ne petting mačku više. Dakle, neki uvjetno logike uklopljeni unutar petlje. Kako o ovom primjeru, namjerno pod nazivom Ne primaju se kućni Mačka? Što je to sad? [Mijaukati] Zašto ne bi trebao ljubimac mačka? [Mijaukati] U REDU. Dakle, ovo je primjer if drugdje. To je točka odluke i jer je sjedio u petlji, oboje su uzimajući ček. Je li to istina? Je li to istina? Je li to istina? Je li to istina? I eventualno, jedan od oni će se primjenjivati pa čuješ se ili Mijau ili grmljavina lava u tom slučaju. Pa, neka je učiniti nešto više zavoljeti jedno da sam unaprijed too-- niti. Dakle, nit je samo jedan Ono što računalo može učiniti. Dakle, multi-navojem program je program koji mogu raditi više stvari odjednom. I sve ove primjere do sada su imali Samo je jedan original, tako da speak-- jedan program kao što je ovaj ovdje. Ali primijetite ovaj program ima Dva duhovi, dva znaka. Jedna je ptica. Jedna je mačka. A primijetila kada sam kliknite na ove dolje lijevo, svaki od njih ima svoje vlastite skripte ili programe povezane s njima. A kako onih programi, obavijesti, start sa kada zelene zastave clicked-- Pogledajmo na cat-- kad zelena zastava kliknuli. I tako doista, kad sam udario igrati sada, Dvije stvari će se dogoditi odjednom. Mačka i ptica su oba će raditi istovremeno stvoriti taj efekt. I što bi mogli zamisliti što se događa. Tu je petlja i ptica a mačka se u petlji. Ptica je samo odbija kao Bio sam prije kad sam rekao jao. No, mačka očito ima prednost. Postoji još jedan osjetilni blok koja pokazuje mačka namjerno za ptice u ovom slučaju ovdje. Tako smo mogli zafrkavati, osim, gledajući preko tih blokova, što se događa. No, ključni sastojak ovdje je jedan. Ptica, tako da je ova igra nije potpuno boring-- ili ovo animation-- počinje na slučajnom smjeru. I računalo je branje broj između 90 i 180 u biti, tako da je to malo različiti animacijski svaki put. A onda primjetiti ovdje, ako je mačka dodiruje pticu, a onda igrati lava četiri sound-- šum. No, u međuvremenu je u Ptičje paleta, imamo ovo. Zauvijek, ako ne dira mačku, samo držati se kreće u tri koraka. A onda evo još jedan zagonetka komad. Ako ste na rubu, odbijaju. Dakle, ptica je samo vrsta skrb vlastiti posao, samo leti okolo i odskakanje, i to je stvarno je mačka koja je imala uvjetno logike kako bi se utvrdilo da ga je uhvatio pticu. U redu. Tako ćemo učiniti nešto drugo ovdje, ovo se zove Hi Hi Hi. A ovaj ovdje samo radi to u zauvijek petlji. Ali notice-- kako ćemo zaustaviti to je vrlo neugodno programa? Hit razmaknicu. Jer, ako to učinim, lijeva ruka program-- primijetiti da je stalno listening-- je ključ prostor press. Ako razmaknicu pritisnuta, i ako je tako, što učiniti? To čini vrlo čest tehniku. On postavlja varijablu jednaku vrijednost. Ali to prebacuje tu vrijednost. [? Dakle, izgled?] na temelju shape-- I imaju varijablu da sam napisao je unaprijed zove Isključen, što samo govori da ili ne. Je li zvuk isključen ili nije? Istina ili laž? I napomena, govorim učinimo, ako isključen je nula, a zatim promijeniti jedan, drugi set nijemi je na nulu. Dakle, samo flip vrijednost od nula do jedan. Mogao sam done-- ga promijeniti od dva do tri i tri na dva ili četiri do pet ili četiri do šest. No, to nije važno što brojevi koristim, tako dugo dok držim mijenja ga suprotno. I što je bilo koji programer bi samo izabrati nule i one-- lažno i istinito, off i on-- da predstavlja to. A to je još u tijeku. Ako sam opet pogodio razmaknicu [SEAL ZVUKOVI] Program je još u tijeku. Budući da je ovo drugo pismo koji kaže, zauvijek učinite sljedeće. Ako je isključen varijabla jednaka zero-- pa ako niste isključen je logic-- ako je lažna ili ne, onda igrati zvuk, jer ti ne stišava. Te bi trebao igrati zvuk, a zatim mislim hi hi hi dvije sekunde a onda čekati, i to opet i opet i opet. I tako na ovaj način imamo način za ljudi to-- za programe za interakciju. I oni ne moraju se kao datum kao i drugi. U stvari, poking around-- bez sakrivenog intended-- netko je proveo veliku količinu Vrijeme na internetu provedbenim PokemonGo u nule. To čak vam geolocates u Cambridge ili Allston ovdje. Dakle, ako želite vidjeti previše što ljudi možete učiniti je učinimo vrlo fancy izbornika. Kliknite na ovdje. Ovo sam ja sa svojim strelicama sada. Ja ću ići nakon toga. Klik. A sada kliknete PokeBall. Mislim, ja mislim da si ti trebala kliknite PokeBall. U redu. Tako sam to učinio. Ja mogu ići ovdje. A ta osoba provodi nešto više PokeBalls preko here-- tri PokeBalls. Mi ćemo objaviti link na ovu online, tako da možete igrati. Ali Obavijest postoji samo neke osnovne izgrađeni. Izgleda puno ljubitelj, i to je to. To je impresivan i više nego što bi obično očekivati, svakako za problema postaviti na nulu. Nemam pojma koliko dugo ta osoba provela na internetu. Ali to je sve samo petlje. Tu je zvuk svira. Postoji neka vrsta petlje osluškujući da li sam udaranje strelicu gore ili prema dolje strelica ili lijeva i desna, i onda ako je tako, to je kretanje to neki broj piksela. A onda kada se klikne na još jedan sprite, postoji nekakva Ako stanje tamo. Da, to je previše intenzivan. Idemo da se zaustavi. To je sve te osnovne građevne blokove. Ne postoje drugi sastojci ostali od onih koje smo gledali na već. A ipak, evo, neka mi to jedan završni skup primjera koja daje sliku previše o tome što možete učiniti ovdje. Ovdje je vrlo jednostavan program koji samo ne učinimo, kašalj, kašalj, kašalj. I samo na temelju smo pogledali do sada, gdje je očito prilika za poboljšanje. Ovaj program je ispravno. Ona kašlje tri puta, što je ono što sam namjeravao. Ali to slabo se provode. To je loše dizajnirana. Zašto? Da. To nije petlje. I to ne toliko da to nije petlje, to je da ima puno redundancije. Tu se kopira i zalijepljen broj, da se tako izrazim. I otopina je vjerojatno je doista petlje. Pa neka mi ići naprijed i poboljšati na to. A ja ću povući to ovdje. Pusti me naprijed i dobiti reprizu blok, promijeniti to na tri. Idem baciti neke od tih blokova. A vi ćete primijetiti da je prilično intuitivno. Vi povucite i ispustite i stvari pojavljuju i nestaju s vremenom. A ja mogu samo povući ovaj ovdje, i sada imam čišću verziju dalje. Ali znate što? Tu je ovo prilika sada abstraction-- za početak definirati novi rječnik da MIT nije očekivao. Tu je čekati i ponovite i zauvijek i ako, ali što ako želim predstaviti Riječ kašalj kao blok? Što ako želim puzzle komad čija je svrha u životu je da kašlje? Pa, pogledajmo ovu verziju ovdje, što sam na ovaj način. Čudesnom, ja sam stvorio Ova zagonetka komad ovdje, koji Scratch vam omogućuje da učinite. I doista C i Python i JavaScript su će vam omogućiti da to učiniti kao dobro. Možete napraviti svoj vlastiti prilagođeni komada koje nazivamo ono što želite. U ovom slučaju, kašalj osjeća kao razumna definicija. A onda s tim komadima dolje Ovdje možete odrediti što to znači. vukao sam i ispao iz Ova paleta here-- više blocks-- to velika ljubičasta blok, gdje sam upisali u kašalj kao ime mog novog dio slagalice. I onda sam rekao svaki put kad korisnik zove ovaj novi kašalj slagalice, ne reći i čekati. I tako ovdje u mom ponavljanja bloka, Mogu samo kašalj tri puta. A ja bih rekao, pogotovo ako sad sakriti taj detalj. Koga briga kako se kašalj se provodi? Sve mi je stalo kao programer da mogu kašljati. Ne zanima me kako kažu provodi. Ja samo stalo da mačka može nešto reći. Ja mogu apstraktno daleko da detaljno i samo se usredotočiti na ono što je na ekranu ovdje. Ali mogu učiniti i korak dalje. Uočite da ovdje imam provodi se petlja tri puta. No, što ako umjesto toga sam zgrabiti ovu verziju? A što ako se umjesto u ovoj verziji ovdje Samo sam promijeniti svoj dio slagalice uzeti argument i unos k sebi? I da se unos može biti broj kao i tri. Pa sad, ako ja pišem program i želim je mačka na kašalj, Ja zapravo mogu reći puzzle komad koliko puta na kašalj, jer je na dnu tu, ljubitelj verzija ovih prilagođenih slagalice Dopušta mi navesti da kašalj zapravo traje input-- uzima jedan argument ovako. I znate što? Možda sam shvatio, čekaj malo. Kašalj je same-- to je bitno ista ideja kao i kihanje. To je samo drugačiji Riječ na ekranu. Ja mogu apstraktno daleko dalje i provesti ovo konačna verzija kašalj, koji na prvi pogled je način složeniji izgleda. Ali primijetiti što sam učinio. Imam sada generalized-- genericized really-- ovaj dio slagalice zvati reći riječ n puta. I sad imam dva nova slagalice ovdje definirati kašalj n puta. A što je funkcija kašalj učiniti? Što je moj običaj zagonetka komad učiniti? To jednostavno naziva recimo blok, prolaze u riječi želim reći, prolazi u broju puta želim reći. Zato sada mogu implementirati kihanje, jednostavno govoreći achoo, u ovom slučaju, neki broj puta. I tako sam raslojavanje i raslojavanje. I opet, ključ je da se ovdje ne kako sam ga provode, ali činjenica da, ako sam samo doslovno premjestiti ove off zaslonu, pogledaj kako jednostavan, ako se ne prilično moj program sada izgleda. Budući da čini ono što kaže, ja sam sažeto daleko ono što je u toj crnoj kutiji. to će se dogoditi da bude ljubičasta kutija ovdje ali sam opstruirao daleko što je unutra jer ne zanima me kako se to radi. Ja samo briga sad da radi. I doista, u problemu postavljen nula, to je točno vrsta raslojavanje ideja da ćete imati priliku da istražite. To je upravo prilika da se primijeniti tehnike rješavanja problema, na ono što je vjerojatno nepoznato okruženje. I da li ste ne programirano prije ili programirana prije, vidjet ćete da postoji malo nešto u ovom okruženju za sve. A s problemom set jedan u tjedan dana, mi ćemo biti prebačen na fokusiranje na višoj razini jezika pod nazivom C-- odnosno niža Razina jezik zove C-- to je čak i više moćna, iako je malo više zagonetan na prvi pogled. I shvatit ćete po današnjem TL: DR, da taj problem postavljen je kraći vremensko razdoblje od budućih one, jednostavno zato treba naći pravedno dostupan. I ne brinite, ako dodate razred kasno. Mi ćemo se riješiti prije dugo. I prije nego što smo odgoditi za torte, neka je završiti sa samo dvije minute izgled na ono što vas čeka ovdje u CS50. [MUSIC SVIRA] U redu. To je to za CS50. Mi ćemo vas vidjeti uskoro. Torta je sada služio. [MUSIC SVIRA] GLAS 17: Jeste li čuli od dopusta, šefe? GLAS 18: Možda postoji više ispod haube.