[MUZYKA] To CS50-- Harvard Wprowadzenie University do intelektualnej Przedsiębiorstwa w informatyce i sztuka programowania. I mam na imię David Malan i Myślałem właśnie tego ranka, minęło 20 lat dzisiaj zadziwiająco odkąd ostatni raz siedział gdzie wy teraz zrobić. To był 1996. Byłam na drugim roku, a Brałem CS50 po raz pierwszy. A ja nawet nie dostał się na odwagę wziąć to sobie rok studiów, częściowo dlatego, że w czasie. Informatyka dla mnie niby lubią, meh. Byłem trochę geek rośnie , ale tak naprawdę nie mają żadnych intelektualnej Zainteresowanie to, co wydawało po prostu być cała masa Ludzie cały czas programowania. I bałem się być uczciwym. Przebieg i Informatyki więcej ogólnie świetnie i do pewnego stopnia, wciąż ma tę reputację na polu uwaga, choćby dlatego, że tak wielu z nas jesteś zaznajomiony z nim i niepewni tego. I tak naprawdę nie było aż zakupy Ta klasa, która sophomore fall-- a nawet wtedy, tylko zapisałem bo professor-- jeden z moich pierwszych mentorów, Brian Kernighan teraz w Princeton-- Pozwoliło mi to podjąć pass class niepowodzeniem. I rzeczywiście, dlatego dziś umożliwiają i zachęcają studentów do podjęcia tej klasy SAT / unsat. I dopiero wtedy, przez Koniec semestru zdałem sobie sprawę, jak, wow, to Nie było takiego pola nieznane. Istotnie, było to ogromne możliwości pole, i bardziej emocjonująco, Szczególnie Później jak wziąłem kursy Dramatic Arts 101 A i łaciny a następnie ostatecznie grad szkoły archeologii, ja naprawdę zacząć, aby zobaczyć przecięcia tej dziedzinie komputerze Nauka z humanistyki, nauki przyrodnicze, sztuka, muzyka, i tym podobne. A więc to, co jest tak schludny o informatyce Ostatecznie, jak mamy nadzieję, że będziesz see-- jest jego stosowalność tych innych dziedzinach, a także w jaki sposób można trochę z dzisiejszych i semestru pomysły i umiejętności praktycznych powrót do własnej domeny, i faktycznie zwiedzania tego skrzyżowania sztuk wyzwolonych i nauk. Tak więc 73% z was, jeśli w ubiegłym roku jest jakieś wskazanie, nigdy nie miały przebieg CS wcześniej. Więc jeśli, tak jak ja, jesteś czując się trochę przestraszony, albo szczerze nie jesteś Naprawdę wiem, dlaczego jesteś nawet tutaj. Być może po prostu po kilku przyjaciół Sandersa rację teraz. To całkowicie w porządku. Naszym celem jest, aby podłączyć ty i uspokoić Cię że jeśli nie patrzeć w lewo iw prawo, masz zamiar zobaczyć kolegów z tak małym lub dużym doświadczeniem że Was może sobie mieć. I rzeczywiście, będziemy dzielić niektóre statystyki później dzisiaj , co demografii klasa typowo wyglądać. I jak dodaje reassurance-- i to, że mam na myśli, odkąd przejął oczywiście Kilka lat ago-- w Program nauczania w toku Jest this-- że to, co w ostatecznym rozrachunku Sprawy w tym oczywiście Nie jest tak dużo, gdzie kończy się w stosunku do swoich kolegów, ale gdzie w tym tygodniu 11, koniec z semestr kończy się w stosunku do siebie w tygodniu 0, który jest gdzie jesteśmy tu dzisiaj. I to właśnie zdałem sobie sprawę, przez te wszystkie lata temu. I wiem, że wiele Klasy to powiedzieć, ale to zwłaszcza w informatyce. Na koniec dnia, w tym polu jest nieznane, jak to było do mnie i może być dla ciebie, jest naprawdę tylko o rozwiązywanie problemów. I jako takie, że ma to stosowalność dostać innych dziedzinach. A w rzeczywistości, jeśli staraliśmy destylować, co to znaczy, to jest rozwiązywanie problemów w swej istocie, śmiem twierdzić. Jest to więc cokolwiek input-- jest to, że starasz się rozwiązać. Nie ma wyjścia, który jest z nadzieją Rozwiązanie tego problemu. A potem, jak to będzie powiedzieć, w informatyce, jest to czarna skrzynka w średnim, które nie koniecznie trzeba dbać o tym, jak to działa. Sam w końcu może realizować to, co jest w środku tego pola. Ale dla dzisiejszych potrzeb i więcej ogólnie w życiu, wszystko co obchodzi jest to, że problemy te się rozwiązać. A czym jest ten kurs ostatecznie o bada przecięcie Te wejścia i wyjścia, i tak zwanych algorytmy, a my wkrótce, które wykonują to, co jest pod spodem, okap. Ale te wejścia i te outputs-- Co to właściwie znaczy? Więc, na koniec dnia, musimy jakiś sposób przedstawiania informacji. Jest to szczególnie prawdziwe w komputerze które w wyobraźni i kompleksu, jak to Może wydawać się, jest dość głupie urządzenie. Zajmuje electricity-- czy to z kabel lub akumulator jako input-- a następnie wytwarza pewne preprogramed Odpowiedzi na ekranie. Ale w jaki sposób dostać się z rozpocznie się tam skończyć? Więc, co to jest problem do rozwiązania? No, może moglibyśmy, przy początku każdego semestru, starać frekwencję w pomieszczeniu, jak ten. Więc może zrobić jak jeden, dwa, trzy. A może, gdybym to zrobił do rodzaju śledzić z myself-- śledzić things-- Mogłem szybko zabrakło palców. Więc może po prostu zrobić jeden hash marks-- Osoba, dwa, trzy, cztery, pięć, sześć, siedem osiem. I każdy z nas ma zapewne zrobił to, czy na rękach lub na kartce papieru. I to jest właściwie tylko coś, co nazywa unarny notation-- gdzie jeśli masz tylko jedną literę w jednym lub alfabetu, hash znak w tym przypadku, dla każdego Wejście chcesz liczyć, trzeba odłożyć jedną z nich letters-- jeden z tych znaków. W porządku. To wszystko w porządku, a dobre i Nie wszystko, co skomplikowane. Ale komputery nie są że o wiele bardziej skomplikowane. Rzeczywiście, większość z was pewnie wiem, nawet jeśli naprawdę nie mam rozważyć, co to znaczy, że komputery rozumieją tylko zer i ones-- tak zwanego systemu binarnego. My ludzi, w przeciwieństwie do tak znacznie bardziej wyrafinowany, o ile jak rozumiemy zera poprzez dziewiątek. Jednak nawet w przypadku binarnego, początkowo oka, nie wszystko, co znajome, Okazuje się, że to jest tak jak w systemach i pomysłów, które już znamy. Tak na przykład, rozważ to. To jest po prostu ciągiem symboli. A wszyscy, kiedy patrząc na niego, prawdopodobnie myślę 123-- nic naprawdę ciekawy tam. Ale dlaczego jest ta liczba, 123? Są to tylko glify na screen-- tylko wzory że ktoś mógłby wyciągnąć lub wpisane. Ale jeśli jesteś podobny do mnie, zapewne pamiętacie z podstawówki że istnieje rodzaj kolumny lub miejsca tutaj. Jest miejsce na czyjeś a miejsce i miejsce stu dziesięciu za. I dlatego, że jest to 123 i nie tylko wzór trzech symboli Jest tak dlatego, oczywiście, jeśli mamy mają jeden w miejscu setek, nie matematyka 100 razy jednego, a następnie dwa zamiast dziesięciu użytkownika. Więc to jest 10 razy 2, a następnie trzy w miejsce jednej, a to 1 razy 3. A jeśli dodać wszystkie te góry, od Oczywiście, można dostać 100 plus 20 plus 3. Zaczęliśmy więc tylko z wzoru z symbols-- się alphabet-- ale potem odwzorowany na znaczenie że za pomocą tych kolumn. Cóż, okazuje się, że komputery nie są naprawdę wszystko, co różni się od ciebie i mnie. Ale zamiast używać moce 10, tak speak-- 1, 10, 100, 1000, 10000 miejsce i tak forth-- faktycznie wystarczy użyć uprawnień 2-- Tak więc jednym, 2, 4, a następnie jeśli stawiamy kolejne cyfry, 8, 16, 32, 64, 128, i tak dalej. I tak to jest jak komputer stanowiłoby liczbę 0, podobnie jak my, ludzie. 0, 0, 0-- i można się domyślić jaki wzór z zer i jedynek, jeśli komputer może tylko mówić 0 lub 1-- co wzór będzie reprezentować Liczbę my, ludzie wiedzą, jak 1? Yeah-- 0, 0, 1. W porządku. Tak 0, 0, 1, jak reprezentujemy 1, dzięki czemu może być nachylona następnie do reprezentowania numer 2, jeśli masz miejsce czterech i ustaw oba za jako jednym miejscu, można powiedzieć, dobrze, gdybyśmy mieli 1 Na swojego miejsca, a teraz chcemy liczyć do 2, to polubisz to zrobić i zostawić to za zero. Ale oczywiście to nie jest, jak system dziesiętny działa albo. Jeśli wstawisz cyfrę obu tych kolumnach masz zrobić arytmetyki. Więc jaki numer ja przypadkowo po prostu reprezentują? Więc jest to 3, bo 2 razy 1 plus 1 razy 1 oczywiście daje trzy. Tak więc będzie to dwa. Bit rodzaj koziołki, że tak powiem, jak 0 staje się on, podobnie jak ponad 9 ról i staje się 0 podczas przenoszenia 1. To z kolei byłoby trzy oczywiście. Four-- innej ciekawej rzeczy zdarza się, gdzie te przewrócić i noszenia 1, że tak powiem. Więc to, oczywiście, to 4. Ale jeśli teraz szybko do przodu, Jaka jest największa liczba dzieje się, że komputer może reprezentować? Więc to tylko siedem, w tym przypadku, prawda? Ponieważ masz jeden w czterech, jeden do dwóch, jeden do jednego. Więc to 4 plus 2 plus 1. Więc to daje siedem. I rzeczywiście, to byłoby wydaje się na pierwszy rzut oka że komputery mogą liczyć nie wyższą niż ten. Ale to oczywiście nie jest prawdą. Co my, ludzie zrobić, gdy chcemy liczyć wyższe niż jak 999? Wystarczy nosić jedną i po prostu dodać czwartą cyfrę w lewo. I tak rzeczywiście mogliśmy. Mogliśmy mieć Eight miejsce i miejsce 16th, w i miejsce w 32, 64, a ty 128-- może po prostu zachować dzieje się w nieskończoność. Zatem te zera i ones-- tzw system-- binarny są co informatyk będzie ogólnie nazwać kawałek ani cyfry binarnej. Ale teraz, w jaki sposób możemy uzyskać od Koncepcja lub grafika z tych rzeczy do rzeczywistego komputera? Wydaje się, że pominięcie etapu tutaj. Dobrze, tylko wejście na koniec dnia, do mojego laptopa tutaj Jest to przepływ prądu. Nawet jeśli to był długi Czas od kiedy myślał o albo nigdy nie myślał o jak działa prąd, tam elektrony przepływające lub na zewnątrz, a to mój rodzaj wejścia. Więc jeśli to wszystko, że jesteśmy się jako wejście tutaj co możemy zrobić z tą informacją? Cóż, możemy myśleć o zera jako tylko brak elektryczności. Nic nie jest flowinw, nic nie jest ruchu, nic się nie dzieje. To tylko domyślny state-- zero. Ale jeśli jest prąd płynący, dlaczego po prostu nie arbitralnie, ale globalnie konsekwentnie, zadzwoń, że jeden. Więc po prostu nie mając siły, mamy zero, tak moc, mamy jedno- nie ma zasilania, tak moc. I w ten sposób, za pomocą czegoś więcej fizycznej lub elektronicznej zaczniemy realizować tę koncepcję coś, albo jako jeden lub zero. Rzeczywiście, możemy po prostu zrobić to tutaj. Więc, nie mam trzy, ale Osiem żarówki, z których każda ma własny wyłącznik. A więc jeśli chciałem reprezentować liczba siedem tutaj Mogę włączyć tych trzech żarówek. I rzeczywiście, wnętrze mój komputer jest miliony, miliardy rzeczy, które są po prostu mniejsze niż, zwane tranzystory przełączniki, które po prostu włączyć i wyłączyć. Więc są one stosunkowo big-- big-- przełączniki wewnątrz mojego laptop-- wiele, wiele, wiele, wiele innych przełączników. Ale wszystko, co robią, jest dokładnie that-- skręcić coś skręcić w coś poważnego. I jako taki, komputer może reprezentować z tymi milionami lub miliardami tranzystorów, partii i wiele zer i jedynek. I nie ma innego sprzętu, który wciąż pozwala przechowywać informacje długoterminowych, tak, że kiedy wyciągnąć wtyczki, nie stracić. Ale to historia na inny dzień. Więc co możemy zrobić z tymi bitami? Może po prostu wziąć ciśnienie off me-- Może ktoś chce przyjść tu i oferują demo? Widziałem pierwszą tego rękę. Jak masz na imię? Maday: Maday. DAVID MALAN: Maday, dalej w górę. Miło cię poznać. Maday: Miło cię poznać. DAVID MALAN: Tędy. Nie będę musiał cię wargi. W porządku. Więc tutaj mamy, notice-- jednego, two-- będziemy edytować że out-- jeden, dwa, cztery, osiem, 16, 32, 64, 128. Jest to celowe. Jest osiem bitów here-- binarny digits-- zer i jedynek. A bit jest przydatna jednostka measure-- Nie tak dobre, jednostka miary na siebie. Zwykle chcesz co najmniej osiem z tych rzeczy, a.k.a. bajt. Mamy więc bajt bitów tutaj. Więc jeśli chcemy wyzwać cię, na przykład, literowania, w formacie binarnym, wartość ta here-- 42. Chcesz wziąć ukłucie na to? Maday: [INAUDIBLE]. DAVID MALAN: Tak, wystarczy nacisnąć małe białe przełączniki z przodu. I chcesz przeliterować się 42, a do zgarnięcia jest ten stres CS50 Piłka jeśli się tego. W porządku. Więc masz 32. My będziemy potrzebować 42. Więc to jest osiem, więc to 40. I excellent-- bardzo ładnie wykonane. Dziękuję Ci. [OKLASKI] W porządku. Mamy więc jeszcze jedną Piłeczka. Zróbmy to jeszcze raz, jeśli możemy. Jeden inny ochotnik? Bezpłatne stres piłka, piłka stres darmo. OK. Tu w środku, chcesz zejść? W porządku. Wiem. No to jedziemy. Więc numery here-- chodź na dół. Jak masz na imię? Davey: Davey. DAVID MALAN: Davey. OK. Chodź na górę, Davey. Miło cię poznać. A co mamy zamiar mieć cię spell-- jeśli można nie marudzić tylko jedną moment-- jest numerem 50. Jednak, ale jednak tylko, ale są Magnesy Szkoła bez powodu. Wystarczy się trochę mocniej, wszystko w porządku? Jest jeszcze osiem. W porządku. Więc co mamy tam? Mamy 32. Miły. 32 oraz 16 daje nam 48-- tak blisko. I wspaniałe. Gratulacje dla Davey, jak również. [OKLASKI] W porządku. Więc możemy to zrobić przez cały dzień, a nie dostać wszystko, co znacznie bardziej ciekawsze i bardziej wymagające. Ale to naprawdę point-- sposób stosunkowo prosty to jest, na końcu dnia, co jest Komputer robi do przechowywania informacji, do przechowywania i ostatecznie wejść przechowywać lub reprezentowania tych wyjść. Ale nie są same numery wszystko, co ciekawe. Więc ludzie, kilka lat temu, zdecydował, wiesz co? Byłoby miło, gdyby komputery nie były po prostu kalkulatory dla arytmetyki operacje, ale w rzeczywistości mógł robić takie rzeczy jak edytory tekstu lub e-mail, albo bardziej nowoczesne wcielenia z tego rodzaju technologii. I tak świat postanowił arbitralnie, ale ogólnie, że jeśli chcesz zapisać kapitału Litera A w komputerze, wiesz co? Niech tylko wszyscy zgadzają się, aby zapisać niektóre wzór zer i ones-- bits-- które ostatecznie oznacza liczbę dziesiętną 65. Będziemy po prostu wszyscy są zgodni w tej sprawie. 66 stanowiłoby B, 67 stanowiłoby C, a tam pęki innych wzorów zer i jedynek lub numerów bazowych, które reprezentują inne litery w bezruchu. Więc jeśli rodzaj psychicznie wchłaniają się przez chwilę, Celowo pakowane przez I, gdzie H a 72 i jest 73. Jeśli komputer następnie w kontekście edytor tekstu lub e-mail, ujawniła się pod maską mieć Te wzory bits-- wzór bitów reprezentujących 72, potem 73, potem 33-- Co to może przeliterować w tym programie? Więc cześć, a potem coś. Nie musi wiedzieć, ale rzeczywiście 33-- nie na wykresie earlier-- po prostu wykrzyknik. Tak było 72 H 73 to I, 33 dzieje być wykrzyknik nadal. Ale to wszystko jest w porządku i dobre, w rzeczywistości obecnie zamiast wystarczy użyć siedmiu lub ośmiu bity, dzięki czymś nazywa Unicode w przeciwieństwie ASCII z powrotem w dzień, faktycznie może stanowić nawet bardziej ciekawe postacie niż tylko Te oryginalne angielskie stronniczy liter. Ale możemy również reprezentować nawet neater rzeczy jak kolory. Jeśli kiedykolwiek słyszał akronim RGB, czerwony, zielony, niebieski, które po prostu oznacza, że ​​komputer zazwyczaj używa trzech zestawów bits-- pewną liczbę bitów, które reprezentują liczba na jak dużo czerwonego chcesz, inny zestaw bitów dla ile chcesz zielone, i inny numer zestaw do ile niebieskie chcesz. Tak duża liczba oznacza dużo czerwony, mała liczba oznacza brak czerwono. A więc są rodzajem wartości środkowe tutaj. Więc daj mi trochę czerwony, daj mi trochę zielony, i daj mi trochę niebieskiego. A jeśli te trzy odcienie mieszają kolorów razem, w tym przypadku, masz ten mroczny cień żółty lub brązowy. Ale to wzór ośmiu Plus osiem Plus eight-- więc 24 bits-- od lewej do prawej strony, jest to, jak komputer stanowiłoby ten konkretny kolor. Teraz to tylko kropka na ekranie. Jeśli spojrzeć bardzo blisko w swoim telewizorze komputer, zobaczysz punktów lub pikseli. A jeśli masz całą siatkę pikseli, poziomo i pionowo, masz obrazy. A potem, jeśli wziąć obraz, a następnie umyć Pokaż się inny obraz, inny obrazu, innego obrazu, innego obrazu, bardzo szybko, to oczywiście ma filmów. A więc zauważyć, gdzie zaczęliśmy. Zaczęliśmy od tych zer i jedynek. Pracowaliśmy stamtąd na dziesiętne numery, jak je reprezentować. Teraz mamy liter alfabetu. Ale w innych kontekstach czekać, możemy użyć jeszcze kilka bitów i reprezentują barwy. Tak szybko, jak masz Zdolność do reprezentowania barw, masz zdolność do reprezentowania fotografie i animowane gify i inne tego typu znaków na ekranie. A kiedy masz całą masę Obrazy latania przez człowieka naraz, wygląda na to, filmów, i tak masz wideo, jak również. Zatem zastosowanie tych proste prymitywy jak my mają sposób reprezentowania ostatecznie wszystkie te postacie nośników. I znów mamy wydobywane i znowu, i znowu, dopóki nie dostać się z najniższego poziomu z tym najwyższym poziomie. Tak, że daje nam to Ogólna idea abstrakcji. Ale zaczęliśmy tutaj. Oto teraz, możemy stanowią w komputerze Nasze wejścia z zer i jedynek, Nasze wyjść w zer i jedynek, ale to, co dzieje się wewnątrz skrzyni? To miejsce, gdzie komputer Nauka staje się interesująca. To miejsce, gdzie rzeczywiście zabrać ze sobą własne umysły ponieść, aby rozwiązać problemy. Teraz możemy przewidywać, dla Reszta semestru, tak. Wiem jak działa binarnych. Pamiętam, jak ASCII lub Unicode-- mapowanie do letters-- prac. I to na pewno stoi się powodem, dla którego może reprezentować czerwony i zielony i niebieski, i stanowią multimedialne, jak również. Ale to ciekawe rzeczy. To jest to, co sprawia, że ​​ktoś w stanie rozwiązać problemów. A jednym z takich problemów lubimy robić, rzeczywiście, bierze udział w zajęciach, lub robi to algorytmicznie. I znowu, mogę to zrobić. Mogę zrobić jeden, dwa, trzy, cztery pięć, sześć, siedem, osiem dziewięć. I mogę to napisać w dół, aby śledzić tego. Ale to tylko jak bym reprezentowania informacji. Albo może to zrobić faster-- dwa, cztery, sześć, osiem, dziesięć, 12, 14, 16, 18, 20, 22-- czuje się dwukrotnie tak szybko, ale nadal zajmie dużo czasu. Ale okazuje się, jeśli jeszcze wykorzystać kolejne resource-- i rzeczywiście komputery Te dni mają wiele procesorów lub mózgi. Okazuje się komputery robić wiele rzeczy naraz, jak sądzimy, w tym pokoju, może reprezentować właśnie ten. Więc to trochę społecznie niewygodne, ale jeśli będzie mi humor tylko na trzy-etapowego procesu, niech mi zadać każdy na swoim miejscu nie tylko wstać na chwilę. Wstań. Więc myślę sobie, numer jedno-, więc każdy na tej sali, z wyjątkiem osób, które nie oblige, myśli numer jeden. Więc to jest twój numer w tej chwili. To jest pierwszy krok, albo jako informatyk lub programista typowo zrobić, będziemy aby rozpocząć odliczanie od zera. Jeśli najmniejsza liczba możemy reprezentowania tych żarówek wynosi zero, po prostu je pozostawiając wszystko wyłączone, równie dobrze mogę po prostu licząc od rozpoczęcia zero, a nie jeden. A więc to, co informatycy robić. Więc krok do zera, wstać i myśleć o numer jeden. Następnym krokiem jest this-- pary mecz osoby stojącej i dodaj swoje numery razem. Wspaniale. Więc w tym momencie, dosłownie każdy uczestniczący myśli o numer 2, z wyjątkiem na jedną osobę w przypadku nieparzystej mamy nieparzysta liczba osób w pokoju. A teraz trzeci etap będzie tutaj this-- być jednym z was powinien usiąść. Jeden powinien usiąść, a jeśli nadal stoi, wróć do kroku. W porządku. W porządku. Dlatego coraz więcej ludzi powinny być siadania. Zauważ, że ta skłoniła loop-- jakiś cykl. Niektórzy z was powinno być niezręcznie zatrzymany, tam iz powrotem pomiędzy jednym kroku i dwóch, pierwszej i drugiej, jeden i dwa. W porządku. Nasz pierwszy błąd. Zajmiemy się tym. W porządku. Pozwól mi spróbować pobudzić rzeczy razem. Teoretycznie tylko jedna osoba stoi jak wszyscy nadal parami. Ale pozwól mi przyspieszyć z ludźmi wciąż stoi. Jaki numer pan na myśli? 46. OK. Śmiało i usiąść. Jesteście wciąż stoi. Kto jeszcze stoi? Jaki numer pan na myśli? OK. Więc wracamy do Was. W plecy? Co to jest? 22. OK, ktoś inny się top-- tak? 34. OK. Tutaj na moim prawy-- tutaj? 132, bardzo ładne. 22? OK. A kto jeszcze stoi? Tutaj? 46, bardzo ładne. 72. Nie mogę stoisko znacznie dłużej. Tak? 30, miła. Tutaj? 23? 23. I myślę, że wszyscy wyjątkiem was, bez presji. Zaczekaj. 28? Tylko osiem. OK. Tylko osiem. Tu na dole? 30. 23. 24. 18. Jest to najgorszy implementacja tego algorytmu w historii. OK. Więc ktoś jeszcze? Ktoś jeszcze? OK. Jeszcze jeden. 16? OK. 16. W porządku. Więc jeśli nie zostały pominięte ktokolwiek w blask tutaj, kiedy nacisnąć klawisz Enter, zobaczymy, algorytmicznie, The Łączna liczba osób w Sanders. Bo raz, że to tak, jakby wszyscy jak usiadł, przeszedł swój numer off do kogoś innego, kogoś innego, do kogoś innego, tak, że w teorii, w końcu tylko jeden niewygodne osoba powinna być pozostawiona na stojąco. Ale to jest w porządku. My sped rzeczy ręcznie. Jest to szczególnie trudne do zobaczenia w tym konkretnym miejscu. A łączna liczba osób uważamy, że tutaj jest 546. Łączna liczba byłem ręką przez stypendystów dydaktycznych, Kto to zrobił stary Szkoła wolna droga, było 820. [ŚMIAĆ SIĘ] [OKLASKI] W porządku. Więc z pewnością wtedy, istnieją te błędy. I to jest w porządku. I tak wracam na ten temat Po raz pierwszy coś piszesz niekoniecznie działają. To zdarzyło mi się również tutaj. Ale niech się teraz zastanowić się, jak moglibyśmy zastosować ten sam pomysł na coś Może widzieliście wcześniej, co Jest to stara technologia szkoły here-- bardzo duża książka telefoniczna. I przypuśćmy, że tej książki telefonicznej ma 1000 stron i 1000 nazw oraz numery alfabetycznie wewnątrz niego. Cóż, możemy rodzaju zastosowania podobnego Pomysł ten bardzo fizyczny problem, mnie po prostu używać. I właśnie niby oszukany wykorzystując was wszystkich o wiele, wiele różnych procesorów lub mózgi wykonywania niektórych algorytmu. Ale jeśli to tylko mała stary ja, mogę nadal wykorzystać tę samą istotę pomysłu podziału i podboju tego problemu po raz kolejny, przy czym połowa z was, połowa z was, połowa z was, połowa z was, teoretycznie przechowywane siadania, dopóki nie zostali teoretycznie z tylko jedną osobę. Więc w tej starej szkoły technology-- nie robimy Potrzebuję tego map-- tego stara technologia szkoły, możemy zacząć szukać kogoś Like Mike Smith, jedna strona w tym samym czasie. I widzę, że nie, Mike nie ma. Nadal jestem w punkcie a. Ostatecznie uważam, Sam w sekcji B. I to jest algorithm-- krok po kroku instrukcji. Zacznij od strony początku i jedną w czasie, poszukaj Mike Smith. Czy to ta correct-- Algorytm albo podejście? Tak, to jest prawidłowe. Jeśli Mike jest tutaj, w końcu Pójdę do niego. Ale to nie jest wydajne. Jest to oczywiście bardzo powoli. Więc mogę wykorzystać same twosies zbliżyć. mogę zrobić coś w rodzaju dwóch, cztery, sześć, osiem, 10, 12. To dwa razy szybciej. Mam zamiar dostać się do Mike szybciej, jeśli on tam jest. Czy to jest poprawne? Tak, ale usłyszałem little-- NO. Teraz usłyszałem NO. Tak. Jest to błąd potencjalnie. Może Mike po prostu przypadkowo dostaje umieszczonego pomiędzy dwiema stronami bo lecę przez To dwa w czasie. Tak przynajmniej musimy niektóre rodzaj poprawki warunkowego. Muszę powiedzieć, hej, jeśli kogoś uderzyć, którego Nazwa zaczyna się od T zamiast kabla S, I lepiej zawrócić co najmniej jedną stronę. Więc buggy na początku, ale naprawić. Ale nikt z nas będą szukać Mike Smith przez telefon 1000 stron zarezerwować jedną stronę na raz. Co to jest normalny człowiek zrobi? Masz zamiar udać się do S-tych, gdybyś wiedział, gdzie S-tych. Można przejść mniej więcej do połowy lub lekko przekrzywiony pod koniec. I tu i spojrzeć w dół Jestem w sekcji M. Ale co ty wiesz o tym problemie teraz że nie muszą wiedzieć, zanim ze wszystkimi z nas po prostu liczy się równoważnie? Cóż, Mike jest wyraźnie dzieje się w tej połowie książki czy on jest tutaj w ogóle, ponieważ jest posortowana. I tak można bardzo dramatically-- [BEZ TCHU] Wiem. [OKLASKI] To rzeczywiście bardzo proste, jeśli robisz to w dół kręgosłupa tam. Ale można następnie wyrzucić połowa problemu z dala. Teraz pozostaje mi z tym samym problem-- Mike Smith znaleźć w telefonie book-- ale teraz książka telefoniczna rozpoczyna się od M i idzie do Z, ale to jest w połowie tak duże. Ale to, co jest imponujące. Podobnie jak w teorii, was, gdy wszyscy usiedli tylko połowę w czasie, Problem mam w połowie tak duże, w połowie tak duże, ponownie i ponownie. Tak jest problem ten stał się Ten sam problem, ale w połowie tak duże. Teraz jest problem, 250 stron. Jak tylko sobie sprawę, och, jestem w części T przypadkowo. Poszedłem za daleko. Mogę rzucić, że połowa książki telefonicznej z dala. Teraz jestem w dół do czwarta problemu. I można powtarzać, powtarzać, powtarzać aż teoretycznie jesteś pozostaje tylko jedna strona. A jeśli Mike jest na tej stronie, Teraz mogę rozwiązać ten problem. Ale jak szybko ja go rozwiązać? W pierwszym przypadku, zajęło mi jak Może 1000 kroków, aby znaleźć Mike Smith. Może miały me-- Podniosłam książkę telefoniczną i zacząłem szukać jedna strona na raz, i Mike może być 1000 stron później. Drugie podejście może zajmuje mi 500 kroków, bo lecę po dwa stopnie naraz. A trzecie podejście jednak, jest szczególnie silny. Ale rozważmy to, co w rzeczywistości zrobił z tym trzecim podejściem. Będę miał co Zadzwonię tylko te Sprawozdanie tutaj, po jednym na raz. Odebrać książkę telefoniczną. Otwarty na środku książki telefonicznej. Spójrz na nazwy. A potem robi się trochę więcej intelektualnie ciekawa, jeśli nadal proste. Jeżeli Smith jest jednym z nazwiska na tej aktualnej strony, zrób coś warunkowo. To jak rozwidleniu dróg. Zadzwoń Mike. Jeśli Mike jest jednym z imion na tej stronie, zwany Mike. Ale tylko zrobić linię cztery, jeśli linia drzewo, jeśli będzie, to prawda. Odpowiedź na to pytanie jest twierdząca. Else if Smith jest wcześniej w book-- Innymi słowy, jeśli jestem w sekcji M a ja szukam kogoś w lewo, to co należy zrobić Jest coś bardzo podobnego. Następnie należy otworzyć do połowy od lewej połowie książki. Więc idź w lewo, a następnie wróć do kroku drugiego. Spójrz tam nazw. Więc innymi słowy, zrobić to samo, ale problem, który został połowę. Wiesz co jeszcze? Jeżeli Smith jest w dalszej części książki oparte na stronie patrzę, Otwarty na środku malowniczego Prawa połowa książki a następnie wrócić ponownie do kroku drugiego, else-- istnieje możliwość czwarty tutaj. Mike ani tutaj ani na lewo albo w prawo, albo nie było. I tu lepiej rozważyć to. I rzeczywiście, jeśli kiedykolwiek miał komputer po prostu upaść na ciebie, który jest czasem, ale nie zawsze, wynikiem tylko ludzkiej programista nie zdając sobie sprawę, oh strzelać, tam faktycznie ta czwarta scenariusz. A jeśli nie pisać kod do obsługi tego scenariusza, Czasami nie wiem co komputer może zrobić. I rzeczywiście, program może ulec awarii. Ale w tym przypadku, pomyślałem o tym, a ja powiedziałem, jeszcze rzucić, bo to czwarty logiczne możliwy scenariusz. Teraz, po prostu dodaj niektóre słownictwo więc może zacząć rzucać wokół warunków, które są poza tym dość intuicyjne. Wszystkie rzeczy, które po prostu podświetlone na żółto tutaj Idę do funkcje lub procedury. Są po prostu rodzaj działań. Więc odebrać, otwarte, patrzeć co, zadzwoń, otwarte, otwarty, quit-- są to tylko działania, albo będziesz Nazywamy je bardziej formalnie, funkcje. Tymczasem teraz w kolorze żółtym, Mam podkreślił rzeczy that-- niech po prostu zacząć dzwonić im warunki lub oddziały. Są to punkty decyzji, jeżeli można przejść tędy, tędy, lub jakiś inny kierunek ruchu. Więc te będą warunki. A teraz ta jest trochę bardziej wyszukane. Nazwijmy te pytania Wyrażenia logiczne, po kogoś z nazwiskiem Bool. Oraz wyrażenie logiczne Jest tylko coś to jest albo prawdziwe, albo fałszywe, tak lub nie. Więc jest to kwestia, której odpowiemy obchodzi, tak aby w stanie dokonać decision-- wrócić odpowiedzi, a następnie przejść w lewo lub w prawo, albo coś zupełnie innego. A potem wreszcie te Linie here-- wrócić do kroku drugiego, wróć do kroku two-- moglibyśmy realizacji tej idei na różne sposoby. A potem ci z was doświadczenie w programowaniu może zrobić lub można wyobrazić sobie tego inaczej. Ale dla dzisiejszych potrzeb, to tylko myśl, że się liczy. To jest indukowanie co my zwykle nazywamy loop-- jakiegoś cyklu, ponieważ to co mnie jeszcze coś zrobić. Więc teraz, po prostu rozważyć jak dobry jest ten algorytm. Jest prawidłowe. Jeśli Mike w książce, jest to jeden z te cztery scenarios-- znowu i znowu i znowu, znajdziemy go. Ale, jak dobre to jest? Cóż, nie mamy tu być zbyt formalne. Ale niech tylko działki coś, X i Y, aby uzyskać poczucie kształtu tego problemu. Na osi x jest tutaj wielkość mojego problemu. A one oś y tutaj będzie czas, aby rozwiązać. Więc może to jest liczba stron. Może to jest sekunda lub Strona turns-- cokolwiek. Jednak chcesz liczyć się co ten obraz będzie reprezentować. I to pierwszy algorytm, jadę opisać tylko jako linię prostą. Jeśli istnieje n stron w książka telefoniczna, to może mnie zabrać jak najwięcej w n krokach znaleźć Mike. Jeśli firma Verizon lub telefon dodaje jeszcze jedną stronę w przyszłym roku, Może mi to zajmie jeden step-- jedna jednostka czasu, aby znaleźć Mike. Więc nie tylko ten jeden do jednego stosunku. Jest to prosta nachylenie linii. Tymczasem ten drugi algorithm-- jeśli jestem będzie dwa na time-- dwóch, cztery, sześć, osiem lub double-- przeżywa stronach razy w czasie dwie naraz nadal jest linią prostą. Jest obecnie jednym z dwóch Stosunek, ale tylko trochę niższa. Więc jeśli to jest wiele stron na wykresie tutaj w kolorze żółtym, że może mi się to wiele kroków lub sekund, poza tym to zajmie mi dwa razy linia czerwona. Ale zielona linia jest prawdziwym wynos. To, co zwykle wezwać logorithm-- dziennik n, gdzie n jest liczbą stron. Ale jest to kształt, który się liczy dzisiaj, ponieważ nie mamy nawet myśleć o wykreślenie punktów. Pomyśl o skrajnym scenariuszu. Załóżmy Verizon jutro podwaja liczba stron w tej książce telefonicznej, od 1,000 do 2,000. W pierwszym algorytmem, że może tracić dodatkowy 1000 Kroki szuka Mike, tylko dlatego, Verizon podwoiła wielkość książki. Drugi algorithm-- Może zajmie mi dodatkowe 500 kroków. 1000 stron więcej, idę dwa stopnie time-- 500 kolejne w celu znalezienia Mike. Ale to trzeci algorytm niby magiczne. Verizon podwaja liczbę stron od 1000 do 2000, Ale ile kroków robi więcej minąć mnie szukać Mike? To tylko jeden, bo mogę po prostu podrzeć książkę telefoniczną jeszcze raz z problemu 2.000 stronę 1000 strona problemu, i voila. Wziąłem ogromny zgryz z niego. A jeżeli naprawdę ekstremalne, Przypuszczam, że w książce telefonicznej Firma miała coś szalonego jak 4 miliardy stronę książki telefonicznej. Cóż, ile kroków może potrwać znaleźć Mike Smith 4 miliardy Strona książki telefonicznej? To duża liczba, ale zaledwie 4 mld 2 mld do 1 mld 500 mln euro, 250 million-- wciąż Wygląda na dużych liczbach, ale jestem bardzo szybko dotarcie do mniejszych wartości. I rzeczywiście, jeśli zrobić matematyka Dobra, mogę podzielić tylko 4000000000 przez około 32 razy I dostać się do jednego. Więc jeśli ta książka telefoniczna były 4 miliard stron, nic wielkiego. W ciągu kilku sekund, może 32 sekund, mogę podzielić ją na pół i ostatecznie znaleźć Mike lub stwierdzić, że go tam nie ma. I to jest istota algorithm-- dobrego algorytmu. I to jest jeden z Cele klasy jak ten, próbuje dowiedzieć się, jak to zrobić rozwiązać problem nie tylko poprawnie, jak zawsze wiedział, jak to zrobić w jeden Strona w time-- jednak prawidłowo i dobrze. Jak zaprojektować dobre rozwiązania problemów? Warto więc poświęcić chwilę tutaj i daje poczucie teraz z CS50 kurs itself-- przedstawić Pracownicy odległości kilku Kursu. Tuż przed 2:00, będziemy krótką przerwę tak, że ci z was, Kim są zakupy mogą kaczki na zewnątrz i wziąć spojrzeć na innej klasie i oglądać resztę tego Internecie. Ale teraz, pozwól mi przedstawić CS50, sama klasa, a zwłaszcza to, co jest nowe. Więc przeszłość wiosna, mamy Spędziłem sporo time-- Pracownicy toku myślenia i ja-- o tym, co to chcemy CS50 być, a wracając do pierwszego zasady, że tak powiem, rozważyć, co to chcemy Ten kurs wyglądać i być jak dla swoich studentów. A więc widzisz błąd zestaw do zera, jak również, zaproszenia aby przyjrzeć się, że Adres URL, który podsumowuje niektóre z motywacji za następujących cech jesieni 2016 r. Więc jak można wywnioskować z TL: jałmużna, DR, dzisiaj program nauczania, jak również z Katalog Oczywiście, w tym roku w CS50, jesteś tylko oczekuje się udziału today-- więc zadanie dobrze done-- a ostatni wykład w dniu 21 listopada. A ty jesteś mile widziany, ale nie oczekuje się uczestniczyć te wykłady w środku, bo to, co robimy W tym roku jest strzelanie w czasie rzeczywistym materiału w toku. Więc wszystko pozostanie prądu i włączone najlepiej jak can-- bieżących wydarzeń i rozmów, które ludzie może się mieć w przemyśle w świecie, ale czyni ten materiał dostępny, w wyniku czego nawet earlier-- wraz z pełnym tekstem transkryptów oraz wyszukiwania i linki do innych zasobów. I rzeczywiście, byliśmy twierdząc na jakiś czas i mamy teraz w to uwierzyć, że możemy tworzyć, cyfrowo, bardziej wciągające, bardziej przekonujące doświadczenie edukacyjne, w przeciwieństwie do zbierania tutaj jakieś 23 razy osobiście, jak ktoś mi słuchu po prostu mówić o informatyce, w przeciwieństwie do bardziej aktywnego zaangażowania. Więc można zobaczyć w programie nauczania w toku szkic semestru tutaj wraz z, gdy Wykłady być filmowane, do którego jesteś mile widziane, ale nie oczekuje się, a kiedy będzie zostać wydana na stronie internetowej oczywiście za. A co zrobimy tu Środy rozpoczynające się w przyszłym tygodniu, jest o wiele bardziej dokładne, a tylko tych ludzi, którzy chcą uczestniczyć, Jest to tak zwany spacer, gdzie i głowice w trakcie faktycznie dokonać rzeczy trochę bardziej kameralny tu w orkiestrze sekcji, jeszcze trochę technologii i przejść przez Aktualny tydzień za zestaw problem i oferują particularly-- jeśli wśród Osoby mniej comfortable-- bardziej wytyczne, które mogą chcesz lub potrzebne do tygodniowego wyzwania. Podobnie, dla tych, którzy nie mogą uczestniczyć osoby osobiście, nic wielkiego. Nie będzie podobnie prowadzony przez jeden z pracowników wyższego szczebla w toku, Zamalya, to samo okazją osadzone w problem ustala się. Problem ten rok ustala ukaże się w piątki i już nie siedem dni później, ale 10 dni later-- celowo nakładających się z każdym problemem ustawić, tak aby lepiej dostosować, mamy nadzieję, wzloty i upadki w harmonogramach studenckich, zwłaszcza gdy midterms lub sportu lub pracownicy naukowi lub extracurriculars zazwyczaj przychodzą i odchodzą zwłaszcza w połowie semestru. To powinno dać trochę więcej dyskrecja, czy was przodu załadować tygodniu CS50 lub tylnej obciążeniem go na następny weekend zamiast. Więc spojrzeć na program nauczania w toku tutaj na ich harmonogramem. I można zauważyć także wśród zmiany w tym roku dla tych bardziej zaznajomieni z Programowanie w przeszłości zaczniemy semestru jako będziemy dziś podstaw, skupić się przede wszystkim na języku nazwie C, a następnie nie przechodzić PHP, ale w języku zwanym Python pod koniec semestru w kontekście programowania internetowej wraz z SQL i JavaScript, HTML, CSS, a jeszcze bardziej. A w odpowiedzi na najczęściej zadawane pytania, to w istocie że CS nie jest tak straszne jak kiedyś że to było, ale to jest tak dużo pracy Słyszałem, jak to może być. Ale to powiedzmy, że oto niektóre statystyki z jesieni 2015 studentów, przy czym poziome niebieskie linie reprezentują średnią liczbę godzin zgłaszane. I zobaczysz, średnio sześć z 10 do 16, a może 12-- lub tak i tak dalej, lecz wysoka wariancja być jasne. Tak więc sobie sprawę, że nie tylko studenci bardziej komfortowe i mniej wygodne w toku, ale odpowiadające wsparcie Struktura dostać tych studentów przez semestru pomyślnie. Rzeczywiście, w odpowiedzi na najczęściej zadawane pytania, należy wziąć CS50 jako pierwszy rok? Absolutnie. A w rzeczywistości, ja nie żałuję Nie znalazłszy moją drogę lub znaleźć nowe pole ten pierwszy rok, jak również. I należy skorzystać z CS50 inne kursy, z pewnością tak well-- i ogólne porady moglibyśmy dać studentom, że pewnie CS50 nie jest to rodzaj klasy lub klasy intra które należy podjąć w trzech Inny lub cztery inne klasy p-set. Ale jeśli bierzesz dwa inne p-set Klasy, coś innego, i CS50, absolutnie opanowania. Miałem wielu uczniów w przeszłości zrobiły dość pomyślnie. I dostać się w kierunku, który Finish Line z powodzeniem, ma przebieg mają sections-- różne utwory dla studentów mniej komfortowe, wygodniejsze, a gdzieś pomiędzy, przy czym w toku na Pierwszy zestaw problem zostaniesz poproszony o opisanie siebie. A jeśli jesteś wśród tych mniej wygodne, to jest jedna z tych rzeczy raczej, że po prostu wiem. I rzeczywiście, że to było rosnące demograficznych w CS50 już od kilku lat. Począwszy od jesieni ubiegłego roku do Instancja, 58% klasy określało się jako Wśród tych mniej wygodne, 9% wśród tych bardziej wygodne, a następnie inni uczniowie tam w red opisując siebie a gdzieś pomiędzy. I zobaczysz tutaj tematy ogólnie i schemat z sekcji, z których każda oferowane są osoby, w w czasie rzeczywistym, z przebiegiem na niesamowity zespół towarzyszy dydaktycznych i asystentów Oczywiście, niektóre z nich spotkasz za chwilę. same sekcje, jak zobaczysz, będziesz będzie w poniedziałki i wtorki i środy, tak aby umożliwić Ci do nurkowania w po włączeniu, jeśli sobie tego wybrać w toku na wykład wcześniej, że tydzień. A następnie godziny pracy, które Z pewnością, z każdym rokiem, że nie było mniejsze wyzwanie dla przebiegu. A w tym roku, my nie planuje jedynie do pełnienia funkcji hours-- jednego na jednej możliwości pomocy dla studenci w środy czwartki i niedziele, ostatni z tych, będąc w godzinach popołudniowych w fazie projektowania aby zmniejszyć niektóre podkreślić, że nieodmiennie pojawia się późno w nocy p-settting z terminem looming-- ale będą również oferowane godziny pracy w poniedziałki i wtorki i Środy i piątki i soboty, Dzięki naszym przyjaciołom w HSA. CS50 ma teraz własną przestrzeń dla studentów i pracowników CS50, szczycie góry 67 Auburn Street, tam w Harvard Square. Wizja, dla których jest to, że na CS50 TFS i urzędów w ciągu tygodnia, dość dużo przez większość dni, będzie tam do wsparcia. Więc jeśli masz jakiś Pytanie na p-set czy czujesz się trochę zablokowane lub trochę mylić, i cholery, masz godzinę lub pół godziny między klasami, zwłaszcza w square-- można pop i mają na to pytanie odpowiedział wśród mają myleniu clarified-- bardzo w duchu, znasz, z matematyki własne pytania matematyczne centrum departamentu, ale prawie przez całą dobę za [? Gcal?], Że będziemy pisać w Internecie. Korepetycje dostępne dla tych, jest również studentów, swobodnie z kursu na własnych pracowników, jeśli chcesz bardziej intymny jeden na jednego, czy tylko dwa lub trzy koledzy, pracujący z jednym z członków personelu w toku. I rzeczywiście, te tutaj są po prostu niektórzy z pracowników w toku, niektóre z nich będziesz spotykają się tylko przez chwilę. W rzeczywistości, CS50 własnego Głowica fellow nauczanie, Oczywiście i szef asystent i nauczyciel, może przyjść na górę, pozwalają ich przywitać. [OKLASKI] Głośnik 1: [INAUDIBLE]. [OKLASKI] GŁOŚNIK 2: [INAUDIBLE]. [OKLASKI] GŁOŚNIK 3: [INAUDIBLE]. [OKLASKI] DAVID MALAN: i pozwoli nam wnieść na pokład dwie z najbardziej CS50 na stanowisku kierowniczym, Rob i Zamayla również. [OKLASKI] Rzeczywiście, zarówno Rob i Zamayla są z nami tak długo, że udało mi aby przejść do archiwów za CS50 i jest to bardzo SD Ujęcia z nich uczestniczy sami na scenie kilka lat temu. ROB: [INAUDIBLE]. [OKLASKI] ZAMAYLA: [INAUDIBLE] [OKLASKI] DAVID MALAN: Dziękuję. Tak więc, oprócz tych Tutaj członków zespołu, CS50 posiada zespół prawie 100 pracowników, z których wszystkie będzie dostępna dla sekcji oraz godziny pracy i jeszcze więcej. I jak Rob mówi też, to jest najbardziej znaczący remont z CS50 w ciągu 10 lat, które Byłem w [INAUDIBLE]. [INAUDIBLE] koncentruje się przede wszystkim na zapewnieniu konstrukcji nośnej odcinania dużo większość, że już nagromadzone w ciągu 10 lat Rozwój iteracyjnych na zbiorach Problem oczywiście jest. Tak więc w tym roku nie tylko klasy, lecz również w formie problemu w trakcie zestawy, należy znaleźć rzeczy do być bardziej opływowy, trymer, znacznie łatwiejsze niż W ubiegłych latach, jak my przelał część bagażu, który jest stworzony przez naturę roku rozwijającej po roku i iteracji. Tak więc nowy i ulepszony zaczyna się dziś. Poznasz kilka z Personel w sieci [SŁYCHAĆ] Kursu o 2:30, gdzie służymy, jako tradycja, ciasta. Jest nieco bardziej ciasto niż to, ale będziesz meet Erin i Tobiasz i jeszcze inni. I Podam objazd przed słyszymy od niektórych innych członków personelu w klasie, co czeka również. W rzeczywistości, zawsze zaczynają CS50-tych Semestr w najbliższą sobotę, z tego, co się nazywa CS50 logiczne Day. To nie ma nic wspólnego z informatyka per se, ale z około problemu rozwiązywania bardziej ogólnie. A jeśli tak zdecydujesz się wziąć udział, za kilka zaproszeń, mogłeś drzwi widać upuszczony lub na etapie tutaj jest to okazja w zespołach dwóch lub trzech lub czterech, do udziału w zagadki i pizzy oraz nagrody i more-- najbliższą sobotę, zostańcie z nami na dłużej. Znajdziesz też, że każda Piątek, w Fire and Ice, CS50 ma przynieść cała masa studentów na obiad, aby duża Klasa czują się bardziej intymne, i ogólnie zgromadzi absolwentów i przyjaciół z branży mówić o tym, co mam było maksymalnie od ukończeniu. Podobnie, w tym roku, będziemy zainaugurować pierwszy w historii CS50 50 kodowania contest-- mid-semestr okazja, aby umożliwić wszystkim na opt w bazie, aby mieć Wyzwaniem rozum przed kolegami, ponownie w zespołach dwu lub trzech lub cztery, używając tylko, że programowanie wiedzą, że wtedy pod Twój pas po sześciu lub siedmiu tydzień klasy oraz udział w tego rodzaju konkursie online--, jeśli chcesz, aby doskonalić własne umiejętności, tym bardziej w tym wyzwaniu. Na koniec semestru tzw CS50 Hackathon-- okazją, który rozpoczyna się o 7:00 PM kończy się o godzinie 7:00, a po drodze Jest 12 godzin wieczornych, w których można nurkować do końcowego project-- kursu jest okazją do projektowania i wdrożyć większość coś interesującego do ciebie ze swoim nauczaniu Wytyczne Fellow za. Około 9:00 rano jak my zazwyczaj służyć pizzę, 1:00, Philippe, a niewielu z nas którzy są jeszcze na jawie o 5:00 rano, Transfer są opuszczone w dół Droga do IHOP na śniadanie. A potem kilka dni później Jest to tak zwana CS50 fare-- Koniec semestru w wystawie Obchody jak daleko tak wiele z CS50 uczniowie pochodzą z tydzień zera aż do tygodnia oraz mając na uwadze, że 73% osób, koledzy i ciebie w tym roku nigdy nie brał lekcje CS wcześniej. W rzeczywistości, aby jeszcze raz podkreślić, aż tutaj Jest jeszcze kilka twarze z pracowników CS50 jest. GŁOŚNIK 4: [INAUDIBLE]. SPEAKER 5: [INAUDIBLE]. SPEAKER 6: [INAUDIBLE]. SPEAKER 7: [INAUDIBLE]. SPEAKER 8: [INAUDIBLE] SPEAKER 9: [INAUDIBLE]. GŁOŚNIK 4: [INAUDIBLE]. GŁOŚNIK 10: [INAUDIBLE]. GŁOŚNIK 11: [INAUDIBLE]. GŁOŚNIK 12: [INAUDIBLE]. GŁOŚNIK 13: [INAUDIBLE] GŁOŚNIK 14: [INAUDIBLE]. GŁOŚNIK 13: [INAUDIBLE]. GŁOŚNIK 15: [INAUDIBLE] GŁOŚNIK 16: [INAUDIBLE]. GŁOŚNIK 11: [INAUDIBLE] SPEAKER 5: [INAUDIBLE]. DAVID MALAN: Niektóre z zespołem są same zakupy klas. Ale jeśli tych członków personelu CS50 tutaj, może przyjść na górę na chwilę. CS50 na TFS i CAS oraz [? Personel?] Członkowie here-- to tylko nieliczne z faces-- jednego z którymi po prostu widział, a kilka other-- i kilka innych nadal. Dlaczego nie możemy iść dalej i umożliwić wy przerwie pięć minut. Jeśli musisz się kaczki Klasy sklep, to w porządku. I w ciągu pięciu minut, będziemy wznowić, przyjrzeniu Scratch-- pierwsi naszego języka programowania, spotkać Pracownicy Kurs tu jeszcze trochę, i skupić się ostatecznie problemu ustawić na zero. Więc będziemy z powrotem w ciągu pięciu minut. [OKLASKI] W porządku. Więc jesteśmy z powrotem. A w naszym pozostałe Czas już, celem ma wyrównać szanse w odniesieniu do niektórych terminologii w odniesieniu do niektórych idei. Ponieważ w rzeczywistości, zgodnie niektóre z wcześniejszych wykresów, tam będzie szereg poziomy doświadczenia w klasie, niektóre z których studenci mają podjęte niektóre programowania przed, niektóre z nich nie. I tak z tym pierwszym problemem ustaw iz tego pierwszego języka mamy okazję, aby rozpocząć wziąć za pewnik, po dzień dzisiejszy pewne wspólne słownictwo i pomysł. I zrobimy to w drodze Kurs pierwszy languages-- oprócz C i Python i JavaScript i SQL oraz HTML i CSS, będziemy początkowo koncentrując i tylko dla problemu ustawić zera nad tym językiem graficznym, zwany Scratch, opracowany przez Laboratorium Mediów MIT w dół drogi, aby pomóc studenci i dzieci szczególnie wyrażać siebie algorithmically-- w sposób bardziej spójny z tym, co moglibyśmy nazwać obliczeniowej myślenia. I jest to przydatne, ponieważ język bardzo szybko, w przyszłym tygodniu w ciągu jednego tygodnia, mamy przejście do bardziej tradycyjne i arcane język zwany C, która jest wyłącznie tekstowe. Używać tylko w klawiaturę Aby napisać instrukcje takie jak na ekranie. Ale nawet jeśli nigdy wcześniej nie widział język programowania wcześniej, w ciągu spoglądając na tego, czy to wszystko tajemnicze, prawdopodobnie można się domyślać, że Prawdopodobnie drukuje Hello World. Ale jest dużo składniowym napowietrznych tam. Nie jest dziwne hash Symbol lub hash tag się wierzchu. Jest nawiasy ostre, niektóre nawiasy, nawiasy klamrowe, pół-colon-- istnieje tak wiele wizualnych Składnia, że ​​staje na drodze. Zaczynamy kurs z Scratch, tak aby uzyskać obok wszystkich tych intelektualnie nieciekawe zakłócone, i zamiast koncentrować się na idei. W rzeczywistości, może być wcześniej. To dla tego, tydzień będzie po. To, w tym graficzne Scratch języka, Oto jak można zaimplementować ten sam program-- program, który po uruchomieniu po prostu mówi hello world. A co to jest ładne o Scratch że to jest programowanie graficzne środowisko, które korzysta z puzzli lub Bloki, które zazębiają się ze sobą tylko jeśli czyni logicznego sensu, aby to zrobić. I z Scratch można rozwijać animacje i interaktywne gry i sztuki, oraz dowolna liczba rzeczy, które można sobie wyobrazić w swoim własnym umyśle, i wdraża je po prostu przeciągnij i upuść elementy układanki. I rzeczywiście, będziemy mieli możliwość wyrazić niektóre z tych samych pomysłów że po prostu wymienić na chwilę temu w kontekście Mike Smith i poszukiwania rzeczy telefon book-- jak funkcje, tylko działania, rzeczy takie jak pętle, które wykonują rzeczy znowu i znowu, Zmienne, które jest coś będziemy wprowadzać ale to może z zaznajomieni algebra-- prostu jakiś zastępczy przechowywać pewną wartość Was może Potrzebują later-- wyrażeń logicznych, gdzie ci tak nie czy prawda fałsz sprzed. Warunki te są w widelce road-- te gałęzie tak powiem. A potem są tacy hodowcy Cechy zobaczymy nawet dzisiaj, zwane tablice i nici oraz Zdarzenia, które będziemy następnie ponownie na Czas w różnych językach. Ale pozwala nam na zarysowania do odkrywania wszystkich z nich. Więc tutaj Scratch ten fioletowy Blok jest to, co zazwyczaj jest funkcją będzie wyglądać. Ten fioletowy kawałek układanki, która ma jedne Słowo jak powiedzmy, co jest działaniem, i wówczas może mieć Argument lub parameter-- jakiś sposób od rodzaju dostosowywania co to robi blok tak, że nie jest z góry określony przez MIT, co mówi ten fioletowy blok. W rzeczywistości, można zobaczyć w Moment, że jestem w stanie wpisać słowa jak cześć świata, czy Witam David lub komentarzy Zamayla, lub cokolwiek zechcę, w argumencie do tej układanki piece-- białe pole tam. Tymczasem, jeśli chcę pętli, będziemy zobaczyć, że tam kawałki układanki, które wyglądają trochę pomarańczowo takiego. A ich kształt sugeruje, że rodzaj coś się znowu i znowu w cyklu. Więc jeśli mogę zawinąć przywitać blok świata z wiecznie blokować w Scratch, to jest po prostu zamiar utrzymać witania Świat zawsze, dosłownie. Tymczasem nie ma innego rodzaj pętli w Scratch że będziemy see-- powtórki block-- gdzie, jeśli ciebie z góry wiedzieć, ile razy chcesz wykonać pętlę skończoną ilość razy w fact-- cię Można określić, że wpisując w szeregu lub nawet podłączając zmiennej jak x lub y, jak zobaczymy. W rzeczywistości, podobnie jak zmienne I w tym przypadku, który Jest to wspólna nazwa dla Zmienna całkowita, która po prostu przechowuje number-- liczba całkowita może być, aby skorzystać z tej pomarańczowy blok, żeby ustawić zmienną jak i do zera. Oto przykład, w zielonym z Wyrażenie logiczne w Scratch. Pomimo tego, że wygląda jak matematyka Nierówności matematyczne formuły, jak to Naprawdę są wyrażenia logiczne. To jest albo prawdziwe, albo fałszywe. I mniej niż 50 lat. To albo tak lub nie odpowiedź czy prawdziwe czy fałszywe odpowiedzi. A my zwykle nazywamy te wyrażenia logiczne. I nie muszą być 50. Może być x mniej niż Y, większa od y, równy y-- Dowolna liczba innych Pytania mogą być zadawane. Teraz, na pierwszy rzut oka może wyglądać nagle dość śmiałe tutaj, i to jest. Ale koncepcja mądry, to dość znane z wcześniej. Jeśli x jest mniejsze od y, niż powiedzieć tyle. Else if x jest większe od y, to znaczy tyle. Innego mówią x jest równe y. Mamy więc przykład istnieje trzeciego scenario-- tylko trzeci possibility-- x oznacza albo większa niż, mniejsza niż albo równa. Mamy więc trzy drożny rozwidleniu dróg. I zauważyć, co jest cool here-- Scratch, jak się wydaje, ma tylko jeden puzzle piece, w tym przypadku, jeśli innego bloku. A jednak wydaje się sugerować, możesz tylko mieć dwukierunkowej rozwidleniu dróg. Można iść w lewo lub w prawo, ale co z tym trzecim scenariuszu? Co zrobić, jeśli x jest równe y? Nie ma sprawy. Bierze jeden kawałek układanki, umieścić drugi w jej wnętrzu w ich odpowiedniki semantycznej if, else if, else-- a teraz mieć swój trójdrożnym rozwidleniu dróg. A jak my widzimy, Scratch kawałki układanki może być rozciągnięta i rosną, więc jak dopchać więcej rzeczy w nich. Nie trzeba, aby dopasować Wszystko w domyślnym rozmiarze. To jest coś, czego będziesz wkrótce nazywana jest tablicą. To jak list-- jakiś sposób przechowywanie wielu fragmentów informacji w zmiennej, a nie tylko liczbą. Wśród nich zobaczymy przedstawiciela coś, co nazywa wielowątkowości. W rzeczywistości, wszystkie swoje Mac i PC w dzisiejszych czasach wspiera wielowątkowości, co oznacza, że ​​można dosłownie robić wiele rzeczy naraz. Możesz mieć program Microsoft Word w górę na pierwszym planie, pracując nad jakimś eseju. Można mieć przeglądarkę w otworze tle G-mail lub Facebook lub podobne. Komputer może zrobić wiele rzeczy dziś, ponieważ jest wielowątkowy, a programy są ww szczególności są również wielowątkowe. Nie ma rzeczy nazywane zdarzeniami jak również w świecie Scratch, i wtedy nie jest to zbyt, aby nasze własne kawałki układanki, jeśli coś niestandardowego w rzeczywistości nie istnieje z góry. Więc motywują to w następujący sposób. Kilka lat temu, kiedy odkryta nowa, kiedy był w rzeczywistości grad student MIT, mamy sami otrzymali zadanie zrobić pracę domową. I implemented-- które, z perspektywy czasu, było bardzo słabe decyzję, ponieważ jest Najbardziej irytujące piosenki na świecie słuchać przez osiem godzin podczas pracy na homework-- ale coś mi nazwał Oscar Time która jest chyba znane piosenki. CS50s właścicielem Jordan Hayashi, jeden Nasze bardziej doświadczonych pracowników, został uaktualniony na 2015 i Teraz 2016, ponieważ w tamtych czasach, Miałem wszystko, co tylko będzie do Oscara kosza. Teraz wspierania recyklingu i kompostowania. Ale do malowania obrazu co możemy zrobić tutaj i zmotywować niektórych przykłady niższym poziomie moglibyśmy dostać jeden inny Wolontariusz po prostu przyjść na górę i grać mój pierwszy praca domowa zawsze? Chodźże. Jak masz na imię? HENRYK Henry. DAVID MALAN: Henry, dalej w górę. Chodźże. Głowa w obu kierunkach, a zobaczysz w jednej chwili, Mam zamiar iść do przodu i uderzył w zielone flagi w górnej prawej ręki róg, co znaczy iść. Znak ikonę little stop powie stop, i to po uruchomieniu i zatrzymać program. Miło cię poznać. W porządku. Więc mamy zamiar zapoznać się z instrukcjami na ekranie za chwilę. I po prostu grać w tę grę dla kilku seconds-- uwierzcie mi, nie będziemy chcieli grać aż do end-- Ci woli zorientować się, co robi program. I więcej niż tylko skupić się na Henry'ego jako dobre lub złe w tej grze, ostrość i jak to było realizowane przeze mnie początkowo, a następnie przez Jordan. Innymi słowy, gdzie zmienne? Gdzie są pętle? Gdzie są funkcje? I zobaczymy, czy nie widzimy te, pod maską. Wystarczy kliknąć i przeciągnąć śmieci do odpowiedniego pojemnika. [MUZYKA] W porządku. To jest bardzo dobre. Dlaczego nie możemy zatrzymać go tam. Dziękuję Ci. Gratulacje dla Henry'ego. Dziękuję Ci. [OKLASKI] Wystarczy wyobrazić sobie, że debugowanie programu. Jeśli pojawia się problem dwóch Trafiony song-- ale tak Co tu się dzieje naprawdę? Tak skomplikowane jak się może zaczynają wydawać się uzyskać w miarę upływu czasu, rzeczywiście bardziej rzeczy spadała, co ciekawe informacje Ten rodzaj example-- i zobaczymy kilku wiele innych, że jeśli spojrzeć przeszłości złożoności lub wyrafinowanie gry, istnieje bardzo prosta budowa bloki play-- z których wszystkie, jeśli destylować je do tych, cegiełki, są bardzo łatwo dostępne i możliwe do wdrożenia do siebie. Na przykład, to jest Minęło trochę czasu, ale jestem całkiem pewien, co zrobił, gdy początkowo czyni tę grę po raz pierwszy Zupełnie jakby był zwlekał. Nie miałem w ogóle skupić na logiczne lub puzzli, Skupiłem się na grafice i ustalenia Słupek uliczny i kosza i to wszystko. Ale to były wymagane Składniki na początku. A kiedy skończyłem zwlekać i r ramy nadrzędnej, Postanowiłem, pozwól mi tylko zrobić jeden Kawałek śmieci upadku z nieba. I zobaczymy Scratch obsługuje rzeczy zwanych znaków, które mogą sprites-- mają różne stroje na więc wygląda inaczej. I tak umieścić śmieci Kostium na jednej takiej ikonki. A ja po prostu potrzebowałem spaść z nieba. I tak okazuje się, Scratch, jak większość języków programowania, obsługuje liczb losowych lub technicznie pseudokod liczb losowych, tak, że przez przeciąganie i upuszczenie pewne elementy układanki, Udało mi się mieć śmieci pochodzić od lewej w pierwszym. A potem, gdy następnym razem spadł z prawo, a następnie od środka. I wszystko gra nie tylko mają śmieci spadają z nieba. Nie można wskazać na niego lub kliknij na nim. Nie można otworzyć kosza. Nie można było nic zrobić. Ale był to krok dziecka ku mojej ostatecznej wizji. A potem, tak naprawdę wdrożony jakiś z wykrywaniem tak, że jeśli nie kliknij i przeciągnij na kawałku śmieci nad kosza, Oscara Pokrywa będzie otwierać i zamykać. Nic by się stało, do kosza, ale co najmniej pokrywa będzie otwierać i zamykać. Tak więc sprawdzić, krok dwa z dwóch. A to, co dzieje się kluczem zarówno problemu ustawić zera oraz w programowaniu bardziej ogólnie, jest wziąć te bardzo świadome kroki dziecka. Bo nie tylko nie pozwalają na czują się uczciwie osiągnąć dużo więcej quickly-- jest to Najgorszą rzeczą na świecie starać się realizować wszystkie Oscar Time Następnie godziny później uderzył w zielone flagi, i nic nie działa zgodnie z oczekiwaniami bo skąd nawet zacząć debug lub rozwiązywać ten program? To jest po prostu przytłaczająca. I tak prawdziwie otaczającego ten pomysł o ponowne zrobienie steps-- kroki dziecka i again-- budowaniu coś, co jest, w końcu, naprawdę imponująca i skomplikowane, ale Po pierwsze, nie jest tak bardzo,. W rzeczywistości, zróbmy to. Pozwólcie mi iść do przodu and-- Scratch się istnieje w internecie na Scratch.MIT.edu, a dowiesz się, jak jeszcze wiele problemów ustawić zero, specyfikacji który jest już na stronie internetowej CS50 jest. Ale to, co samo w sobie jest Scratch. I nie ma tak naprawdę trzy główne obszary. W lewym górnym rogu znajduje Jest to tak zwana faza. To jest nowa. Domyślnym Strój jest kot. I to jest prostokątna światowym które można move-- górę, w dół, w lewo, prawo i kilka innych rzeczy. W środku oto nasze kategorie lub nasze palety z puzzli, i różne kolory oznaczać różne rzeczy. A jeśli rozglądamy, zobaczysz rzeczy takie jak pętle i warunki zmienne i inne składniki. A potem tu jest obszar skrypty. To gdzie mogę przeciągać i upuszczać te kawałki układanki, aby robić różne rzeczy. Więc zróbmy jedną taką rzecz. Pozwólcie mi iść do przodu and-- i wiem, gdzie to jest. Więc mam zamiar od razu po kliknięciu na Wiem, gdzie rzeczy są gotowe do, ale wskazując i klikając i wywiercenie są nieuniknione. Więc kiedy zielona flaga kliknięciu co chcę zrobić? Mam zamiar to zrobić. Mam zamiar przeciągnąć ten purpurowy puzzle Kawałek, przywitaj przez dwie sekundy, i pozwól mi przybliżyć. I mam zamiar to zmienić za to, co chcę, żeby być: hello world przez dwie sekundy jest w porządku. Teraz mam zamiar kliknij zielona flaga, czy naprawdę chcę, Mogę pełnoekranowym go, a następnie wrócić. Będzie to po prostu zachować wszystko w jednym oknie. Zielona flag-- hello world. W porządku. Nie wszystko, co ciekawe. Więc pozwól mi iść do przodu i to zrobić. Pozwól mi spróbować jeszcze jednego. Gdy zielona flaga clicked-- niech zrobić coś takiego dźwięku. I zauważył, że z pole za darmo dostać dźwięk kot, jak domyślne ikonki. Więc teraz pozwól mi iść do przodu i hit zieloną flagę teraz. [Miauczy] Aw. To urocze. Jestem programowania. Więc co ja zrobiłem? Jest to równoważne z programu. Jest to oczywiście bardzo prosta. To naprawdę nie ma aż tak dużo wysiłek i MIT zrobił większość pracy, ale nazwałem funkcją. Użyłem funkcji. Zrobiłem pewne działania, wykorzystując tylko że jeden fioletowy kawałek układanki. Dobrze, jeśli chcę zrobić trzy miauczy z rzędu? Pozwólcie mi iść do przodu i zrobić dwa i trzy. I zauważył, że kiedy oscylować w pobliżu kawałek układanki, pojawia się mała biała linia rodzaj magnetycznie, i będzie przystawki razem, kiedy odpuścić. Zobaczmy, co się tutaj dzieje. [Miauczy] Jest to błąd. Słyszę tylko jeden meow. Dlaczego może być? Tak? Tak. Tak naprawdę nie słychać go, ale to dobra intuicja. Oni wszyscy grają w tym samym czasie. Czemu? Dobrze, że komputer jest po prostu będzie robić to, co mówisz to zrobić. Więc jeśli mówisz, dźwięk gry, odtwarzanie dźwięku, odtwarzanie dźwięku, ale nie mów jej grać, dopóki skończysz grać, dopóki nie skończysz, to będzie przedmuchać program bardzo szybko i nie tylko to, co powiedzieć to zrobić. Więc faktycznie trzeba naprawić to na kilka sposobów. Mógłbym to zrobić, pozbyć się tego. Pozwól mi spróbować tego inne puzzle piece-- grać meow dźwięku, aż skończysz, a następnie przeciągnij trzy te i kliknij przycisk Odtwórz. [Miauczy] To naprawdę nie jest very-- dziękuję pan: bardzo naturalne. Więc dlaczego nie pozwól ja-- mi iść do kontrolowania tutaj. Miły. Odczekaj chwilę, a teraz pozwólcie mi wrócić na dźwięki i brzmienia grać do zrobienia, i pozwól mi czekać jedną sekundę. I pozwól mi iść i dostać jeden bardziej solidne i jedziemy. [Miauczy] Nieco bardziej naturalne, ale To nie jest bardzo skuteczny. Jakbym nudzi, wszystko będzie krótko, klikając w tę iz powrotem i bardzo powielając mój work-- dość dużo kopiowanie i wklejanie. Rzeczywiście, jeśli mogę kontrolować kliknięciu prawym lub kliknięciu Mogłem po prostu skopiować i wkleić. Co byłoby lepsze skonstruować w użyciu? Jaki pomysł sprzed? Tak, więc pętla. I rzeczywiście, jeśli grzebali, możemy znaleźć dokładnie to. Pozwólcie mi odejść do zdarzeń czy raczej Control. Więc ja nie repeat-- ma to być 10 razy. To się dzieje, aby uzyskać irytujące szybko. Ale będę powtarzać trzy razy. Pozwól mi wrócić do należytego i odtwarzać dźwięk, aż to się robi. Pozwól mi wrócić do Kontroli i po prostu poczekać jedną sekundę. A informacja, to polubisz że to nie pasuje, ale znowu, jeśli pozwolisz go magnetycznie przystawki na miejscu, będzie rosnąć do wypełnienia. Jak to jest grać teraz? [Miauczy] OK. Miły. I to jest to, co można nazwać program, który jest również poprawna. To trzy razy miauknął dość naturalnie, ale lepiej zaprojektowane. Używam mniej redundancję. Nie kopiuj i wklej czegokolwiek. Używałem lepszy pomysł. Teraz, to jeszcze nie wszystko, ciekawego z Scratch nie robi byle co. Więc zróbmy coś innego w zamian. Zróbmy coś zawsze. I wiesz co? Projekt wydaje się interesująca. Rzućmy mu przejść 10 kroki i uderzył Juz teraz. OK. Cóż możemy rodzaj oporu go z powrotem, a on wciąż wyświetlane, ponieważ robi to zawsze. Więc pętla robi co mówi do zrobienia, ale to nie jest tak interesującym. Zróbmy to. Dodam blok sterowania i użyć jednego w tych warunkach, po raz pierwszy. Więc to będzie przenieść 10 steps-- 10 punktów, 10 piksele na screen-- to się dzieje, aby zadać to pytanie. Jeśli coś jest prawdą, a następnie wykonaj coś w tym bloku. Tak więc okazuje się czujnik posiada całość pęczek Boolean expressions-- pytania Yes brak lub prawdziwe fałszywe form-- pozwól mi to zrobić. Jeśli touching-- a następnie nie ma To małe menu rozwijane. Mogę to parametryzacji. Jeśli dotykania edge-- niech zrobić coś takiego. Więc jeśli dotyka edge-- pozwól mi wrócić do ruchu. I dlaczego nie możemy po prostu obrócić o 180 stopni? W porządku. Więc zawsze, przenieść 10 kroków. Jeśli dotykając Krawędź, obrócić o 180 stopni. A to jeszcze nie koniec programu bo jesteś w wiecznie zasłaniać, tak to się tam ponownie i znowu i znowu i znowu. Zobaczmy więc, co się dzieje. OK. Trochę buggy, ale niby chłodny. I możemy dodać do tego jakieś głupie rzeczy że to nie wszystko, co intelektualnie ciekawy. Ale jeśli ten mały hit Mikrofon button-- au. Pozwól mi to posprzątać. Pozwól mi poprawić to jako mówili w telewizji. Clean up, zapisywanie i Teraz przejdź do skryptów. A teraz, pozwól mi iść na dźwięk. Podam mu nazwę. Zadzwonię do tego, ups. A teraz odgrywają Ouch dźwięku. Zauważ, że pojawia się w Trochę menu rozwijane. Zobaczmy. [OUCH] [ŚMIAĆ SIĘ] Ale możemy zmienić t jego w locie. Możemy być dwukrotnie denerwujące. [OUCH] Lub jeśli robimy to tak 1000 stopni w time-- OK. Więc mamy zamiar opuścić to jeden sam. Więc znowu, budując blocks-- I zaczęło się coś bardzo prostego, a potem dodaliśmy funkcję, dodano funkcję, dodaliśmy funkcję. I nie trzeba się martwić o jak pierwsza z tych cech został wdrożony jako ja nadal do warstwy rzeczy na wierzchu. Tak więc w rzeczywistości, pozwól mi zrobić jeden inny tutaj. Pozwólcie mi iść do przodu i otworzyć plik Przywiozłem z góry, zwanej owiec. Więc ma nieco inny Postać, która wygląda następująco. I pozwól mi zobaczyć, czy nie mogę coś zrobić za pomocą licznika w tym case-- tzw zmienną. Mam zamiar iść do przodu i pod Events-- pozwól mi zielone flagi kliknięciu. Pozwól mi odejść do danych, które znam od po prostu grając wcześniej, gdzie zmienne. I zamierzam iść do przodu i przeciągać tego. Tak nazywa zmienna licznika i Mam zamiar zainicjować go do zera. Mogę nazwać anything-- x lub y lub z-- ale w programowaniu nazywając coś semantycznie skuteczny sposób, jak licznik, który opisuje, co to jest, to jest Dużo łatwiej odczytać swój kod później. Pozwólcie mi iść do przodu i uzyskać wiecznie blokować tutaj. I pozwól mi iść do wyglądu Strona i zrobić blok powiedzieć. Ale to, co jest fajnego zmiennych ja nie trzeba po prostu wpisać w coś jak cześć świata, które już mamy zrobione, mogę zamiast iść do Danych i przeciągnij moje zmiennej, a nawet choć kształt nie dość wyglądać powinien pasować, będzie rosnąć do wypełnienia. A ja po prostu powiedzieć licznik dla jednego second-- spoiler-- on będzie się liczyć. Powiemy go przez jedną sekundę. Potem mam zamiar iść i mają mu czekać przez jedną sekundę, więc to się nie liczy się zbyt szybko. A potem wreszcie zmienić licznik przez jedno- innymi słowy zwiększamy licznik o jeden Dodatkowym atutem i to zrobić zawsze. Więc owce też, jak Programista, liczy się od 0. A jeśli poczekamy dostatecznie długo, będzie to zrobić na zawsze. Ale to nie do końca prawda, ponieważ W rzeczywistości, jak będziemy zwiedzić w ciągu jednego tygodnia, całkowitymi i komputery bardziej ogólnie, technicznie mają tylko finite-- dobrze, komputery, a gdy reprezentują liczby całkowite, tylko skończoną liczbę bitów. Te żarówki tam mogą liczyć tylko tak wysoko przed jesteś z żarówek. A także komputer ma tylko tyle pamięci, ma tylko tyle tranzystorów, więc może liczyć tylko tak wysoko. Tak więc okazuje się, że owce, Myślę, że może liczyć na 2 mld lub coś całkiem duże. Więc my nie zamierzamy odczekać aby tak się stało. Ale w końcu jakiś błąd będzie się działo które mogą mieć bardzo realnego świata konsekwencje. Ale poza owiec, które po prostu wprowadza zmienną. Idziemy do przodu i otworzyć coś z wyprzedzeniem tutaj nazywa pogłaskać Cat-- Pet Cat tutaj. I tutaj odnotować, że to mało bloki, ale kiedy zielona flaga kliknięciu, zawsze robi co następuje. Jeśli dotykania myszy pointer-- tak, aby kursor na ekranie, arrow-- odtwarzania dźwięku meow a następnie odczekać dwie sekundy. I właśnie to zrobić zawsze. Tylko ciągle czekać Aby sprawdzić, czy pointer-- jeśli kot jest dotknięcie wskaźnika. Więc hit gry. Nic się nie dzieje. Ale jak przesunąć kursor nad kotem, [Miauczy] A jeśli mogę przenieść go z dala, nie głaszcze kota już. Tak więc niektóre logiki warunkowej zagnieżdżona wewnątrz pętli. Jak o tym przykładzie celowo Nie nazywa się pogłaskać kota? Co to robić? [Miauczy] Dlaczego warto nie pogłaskać kota? [Miauczy] OK. Więc to jest przykład if else. Jest to punkt decyzji i dlatego, że siedzi w pętli, oboje są sprawdzane zaczyna. Czy to prawda? Czy to prawda? Czy to prawda? Czy to prawda? I w końcu, jeden z osób zamierza ubiegać się i tak słychać albo meow lub ryk lwa w tej sprawie. Dobrze, zróbmy nieco bardziej wyszukane jednego że zrobiłem z góry too-- wątkach. Więc wątek jest tylko jeden rzeczą, że komputer może zrobić. Więc program multi-gwintowany jest programem że może zrobić wiele rzeczy naraz. I wszystkie te przykłady do tej pory nie miałem tylko jeden skrypt, by tak speak-- jeden program jak ten tutaj. Należy jednak zauważyć, program ten ma dwa skrzaty, dwa znaki. Jednym z nich jest ptakiem. Jednym z nich jest kot. I zauważyć, po kliknięciu na nich dół lewo, każdy z nich ma swoje własne skrypty lub programy z nimi związane. I obie te Programy, zawiadomienia, początek w przypadku zielonej flagi clicked-- spójrzmy na cat-- gdy zielona flaga kliknięciu. I tak rzeczywiście, kiedy uderzy grę teraz dwie rzeczy będą się dziać na raz. Kot i ptak są zarówno będzie działać jednocześnie aby stworzyć ten efekt. I można sobie wyobrazić, co się dzieje. Jest pętla i ptak i kot tworzą pętlę. Ptak jest po prostu podskakują jak Byłem wcześniej, kiedy powiedziałem au. Ale kot wyraźnie ma przewagę. Jest jeszcze jeden blok pomiarowy wskazuje, że celowo kota dla ptaków w tym przypadku. Więc mogliśmy drażnić siebie, patrząc przez te bloki, co się dzieje. Jednak kluczowym składnikiem tutaj jest jeden. Ptak, tak, że ta gra nie jest całkowicie boring-- albo to animation-- rozpoczyna się w przypadkowym kierunku. A komputer jest zbieranie liczba z zakresu od 90 do 180 zasadniczo tak, że jest to nieco inna animacja każdym razem. A następnie zauważyć tutaj, jeśli kot dotyka ptaka, a następnie odgrywać lwa cztery sound-- ryk. Ale tymczasem w ptaka Paleta, mamy to. Zawsze, jeśli nie dotyka kota, po prostu ruszać się z trzech etapów. I wtedy oto kolejny kawałek układanki. Jeśli jesteś na krawędzi, odbijać. Więc ptak jest po prostu rodzaj nad dziećmi własnej działalności gospodarczej, po prostu latają i podskakują, a to naprawdę Kot, który miał logikę warunkową w celu ustalenia, czy złapał ptaka. W porządku. Więc zróbmy jedną drugą tutaj ten nazywany Hi hi hi. A ten tutaj tylko robi to w wieki pętli. Ale notice-- jaki sposób zatrzymać Program ten bardzo denerwujące? Hit spacji. Bo jeśli to zrobię, lewa ręka program-- zauważyć, że to ciągle listening-- jest kluczem Naciśnij spację. Jeśli spacja naciśnięty, a jeśli tak, to co to robi? Robi się bardzo popularna technika. Ustawia zmienną równą pewnej wartości. Ale to przełącza tę wartość. [? Więc wygląd?] w przeliczeniu na shape-- I mają zmienną że napisał wcześniej o nazwie Wyciszony, która mówi tylko tak lub nie. Czy dźwięk wyciszony, czy nie? Prawda czy fałsz? A informacja, mówię this-- jeśli wyciszony wynosi zero, a następnie przejść do jednego, jeszcze ustawić wyciszenie go do zera. Więc po prostu odwrócić wartość od zera do jednego. Mogę mieć done-- go zmienić od dwóch do trzech i trzech do dwóch lub 04:56 lub cztery do sześciu. Ale to nie ma znaczenia jakie numery używam, tak długo, jak utrzymać zmieniając go odwrotnie. A większość Każdy programista po prostu wybierz zero i jedno- fałszywe i prawdziwe, wyłączyć i on-- do reprezentowania. I to wciąż działa. Gdybym nacisnąć spację ponownie [SEAL SOUNDS] Program nadal działa. Ponieważ istnieje ten inny skrypt który mówi, na zawsze wykonać następujące czynności. Jeśli zmienna jest równa wyciszony zero-- więc jeśli nie jesteś wyciszony jest logic-- jeśli jest fałszywe lub nie, a następnie odtwarzać dźwięk, ponieważ nie jesteś wyciszony. Należy odtworzyć dźwięk, a następnie myślę hi hi hi przez dwie sekundy a następnie czekać, i to zrobić znowu i znowu i znowu. I tak w ten sposób mamy sposób na osób to-- przez programy do interakcji. I nie trzeba być tak stary jak innych. W rzeczywistości, wywiercenie around-- no pun intended-- ktoś spędził ogromną ilość Czas na internecie wykonawczego PokemonGo w Scratch. To nawet geolocates cię Cambridge i Allston tutaj. Więc jeśli chcesz zobaczyć, co ludzie zbyt Można zrobić to this-- bardzo fantazyjne menu. Kliknij tutaj. To ja z moimi klawiszy strzałek teraz. Mam zamiar iść po tym. Kliknij. A teraz kliknij Pokeball. To znaczy, że jesteś powinien kliknąć Pokeball. W porządku. Więc zrobiłem to. Mogę przejść tutaj. I ta osoba wdrożony kilka PokeBalls ponad here-- trzech PokeBalls. Będziemy dodawać link do tego on-line, dzięki czemu można grać. Ale nie tylko zawiadomienie Niektóre podstawowe cegiełki. Wygląda o wiele bardziej wyszukane, a to jest. Jest to imponująca i więcej niż typowo spodziewać, na pewno do problemu ustawić zero. Nie mam pojęcia, jak długo ten człowiek spędził w Internecie. Ale to wszystko to tylko pętla. Jest odtwarzania dźwięku. Jest pewnego rodzaju pętli nasłuchiwanie, czy jestem uderzenie Strzałka w górę lub w dół lub Strzałka w lewo i prawo, i jeśli tak, to w ruchu to jakaś liczba pikseli. A potem, jeśli kliknę kolejna sprite, tam jakaś jeśli warunek tam. Tak, to jest coraz zbyt intensywny. Jedziemy do zatrzymania. To wszystkie te podstawowe cegiełki. Nie ma żadnych innych składników innych niż te, które poznaliśmy już wcześniej. A jednak, pozwól mi zrobić Jeden końcowy zestaw przykładów że maluje obraz zbyt co można zrobić tutaj. Oto bardzo prosty program, który po prostu robi this-- kaszel, kaszel, kaszel. I opiera się wyłącznie na tym, co poznaliśmy już tak daleko, gdzie jest oczywiste okazja do poprawy. Ten program jest poprawny. To kaszle trzykrotnie co jest, co zamierzałem. Ale to źle wdrażane. To źle zaprojektowane. Czemu? Tak. To nie jest pętla. I to nie jest tak dużo że nie jest pętla, jest to, że istnieje wiele redundancji. Nie jest kopiowany i Kod wklejony, że tak powiem. I roztwór prawdopodobnie rzeczywiście jest pętla. Więc pozwól mi iść do przodu oraz poprawy na tym. A ja zamierzam przeciągnąć je tutaj. Pozwólcie mi iść do przodu i uzyskać powtórki Blok, zmienić na trzy. Zamierzam wyrzucić niektórych z tych bloków. I można zauważyć, że to całkiem intuicyjne. Podczas przeciągania i upuszczania i rzeczy pojawiają się i znikają w końcu. A może po prostu przeciągnij to tutaj, a teraz mam jeszcze czystszą wersję. Ale wiesz co? Jest to okazja, teraz abstraction-- zacząć definiować nowe słownictwo że MIT nie przewidzieli. Nie czekaj i powtórz i na zawsze, a jeśli, ale co jeśli chcę przedstawić kaszel słowo jako blok? Co zrobić, jeśli chcę kawałek układanki którego celem w życiu jest kaszel? Cóż, przyjrzyjmy się tej wersji tutaj, co zrobiłem w następujący sposób. Magicznie, Stworzyłem Ten kawałek układanki tutaj Scratch, które pozwala zrobić. I rzeczywiście, C i Python i JavaScript są zamiar pozwalają to zrobić również. Możesz stworzyć swój własny Kawałki, które nazywamy to, co chcesz. W tym przypadku, kaszel uważa jak rozsądnej definicji. A potem z tych kawałków dół tutaj można zdefiniować, co to znaczy. I przeciągać i upuszczać z Ta paleta here-- więcej blocks-- ten wielki fioletowy Blok, w którym wpisany w kaszlu jako nazwa mojego nowego kawałka układanki. I wtedy mówię każdej chwili użytkownik nazywa ten nowy kawałek układanki kaszel, zrobić coś do powiedzenia i czekać. I tak się tu w moim powtarzania bloku, Mogę tylko kaszel trzykrotnie. I chciałbym twierdzą, zwłaszcza jeśli teraz ukrywać ten szczegół. Kogo to obchodzi, jak kaszel jest realizowany? Wszystko zależy mi na jak programista, że ​​mogę kaszel. Nie obchodzi mnie, jak mówią jest realizowany. Właśnie obchodzi, że kot może coś powiedzieć. Mogę abstrakcyjne daleko, że szczegółowość i Skupiamy się tylko na tym, co znajduje się na ekranie tutaj. Ale mogę wziąć ten jeden krok dalej. Zauważ, że tutaj mam realizowane pętla trzy razy. Ale co, jeśli zamiast łapię tej wersji? A co, jeśli zamiast W tej wersji tutaj Ja po prostu zmienić swój kawałek układanki podjąć argument, a wejście do siebie? I to wejście może być liczba jak trzy. Więc teraz, jeśli piszę program i chcę kota kaszel, Mogę właściwie powiedzieć puzzle poskładać ile razy kaszel, bo na dole tutaj hodowcy Wersja z tych elementów niestandardowych puzzle pozwala mi określić, że faktycznie ma kaszel input-- przyjmuje argument takiego. I wiesz co? Może Zdaję sobie sprawę, chwileczkę. Kaszel jest same-- to zasadniczy ten sam pomysł, jak kichanie. To jest po prostu inna Słowo na ekranie. Mogę abstrakcyjne dala dalej i wdrożenia Ta ostatnia wersja kaszel, który na pierwszy rzut oka jest o wiele bardziej skomplikowana szuka. Należy jednak zauważyć, co zrobiłem. Mam teraz generalized-- genericized really-- ten kawałek układanki na miano powiedzieć słowo n razy. I teraz mam dwa nowe kawałki układanki tu zdefiniować kaszel n razy. A co robi funkcja kaszel zrobić? Co oznacza mój zwyczaj kawałek układanki zrobić? To po prostu wywołuje blok powiedzmy, przechodząc w słowie chcę powiedzieć, przechodząc w liczbie razy chcę powiedzieć. Ponieważ teraz mogę realizować kichania, po prostu mówiąc Achoo, w tym przypadku, pewną liczbę razy. A więc jestem warstw i warstw. I znów, nie jest tu kluczem w jaki sposób realizowane, ale fakt, że jeśli po prostu dosłownie przenieść je z ekranu, wyglądają jak proste jeśli nie całkiem mój program wygląda teraz. Dlatego, że robi to, co mówi, ja wydobywane Odległość jaka jest wewnątrz tej czarnej skrzynce. zdarza się fioletowe pudełko tutaj ale mam zatkane dala co jest w środku bo nie obchodzi mnie, jak to działa. Właśnie obchodzi teraz, że to działa. I rzeczywiście, w błąd ustawić wartość zero, to jest dokładnie rodzaj warstw pomysłów będziesz mają możliwość zbadania. To jest dokładnie to okazja, aby zastosowanie technik rozwiązywania problemów, do tego, co prawdopodobnie Środowisko nieznane. I czy nie zostały zaprogramowane przed lub zaprogramowane wcześniej, przekonasz się, że nie ma Małe co nieco w tym środowisku dla każdego. A z problemem ustawić jeden na tydzień czasu, będziemy przeniesione do koncentrując w języku wyższego poziomu o nazwie C- czy raczej niższa Poziom języka nazywany C- to jeszcze bardziej mocny, mimo że trochę bardziej tajemnicze na pierwszy rzut oka. A ty sobie sprawę, na dzisiejszym TL: DR, że problem ten zestaw ma krótszy Okno czasu niż te, które w przyszłości, po prostu bo trzeba go znaleźć dość dostępny. I nie martw się, jeśli dodasz klasa późno. Będziemy rozwiązać, że przed długi. I zanim się odroczyć na ciasto, niech skończyć z zaledwie dwóch minut wygląd na to, co czeka na Ciebie tutaj CS50. [MUZYKA] W porządku. To wszystko na CS50. Zobaczymy się wkrótce. Ciasto jest teraz lepszy. [MUZYKA] GŁOŚNIK 17: Słyszałeś o urlopie, szef? GŁOŚNIK 18: Być może istnieje więcej pod maską.