1 00:00:08,119 --> 00:00:11,630 [Powered by Google Translate] DAVID J. Malan: Dobrze, to jest CS50, a to jest 2 00:00:11,630 --> 00:00:14,790 Początek tygodnia dwóch. 3 00:00:14,790 --> 00:00:16,300 Dziękuję. 4 00:00:16,300 --> 00:00:19,000 Zacznijmy tutaj z rozmowy telefonicznej. 5 00:00:19,000 --> 00:00:30,005 Mam zamiar wybrać 617-Bug-CS50. 6 00:00:30,005 --> 00:00:31,230 CS50: To CS50. 7 00:00:31,230 --> 00:00:33,930 Dla Chłopca Shuttle, naciśnij 1. 8 00:00:33,930 --> 00:00:36,660 Aby zacząć od początku, naciśnij 9. 9 00:00:36,660 --> 00:00:38,180 DAVID J. Malan: Tak powiedział do chłopca Shuttle, naciśnij 1. 10 00:00:38,180 --> 00:00:41,560 Więc będziemy naciśnij 1. 11 00:00:41,560 --> 00:00:43,230 CS50: Jakie jest twoje pochodzenie? 12 00:00:43,230 --> 00:00:45,340 Dla quad, naciśnij 1. 13 00:00:45,340 --> 00:00:47,080 Mather, naciśnij 2. 14 00:00:47,080 --> 00:00:49,240 Boylston, naciśnij 3. 15 00:00:49,240 --> 00:00:51,280 Lamont, naciśnij 4. 16 00:00:51,280 --> 00:00:53,210 Mem Hall, naciśnij 5. 17 00:00:53,210 --> 00:00:55,660 Aby zacząć od początku, naciśnij 0. 18 00:00:55,660 --> 00:00:59,590 DAVID J. Malan: Będziemy naciśnij 1 dla quad. 19 00:00:59,590 --> 00:01:03,610 CS50: Następny transport pozostawia to bardzo minut w godz 1:10, a 20 00:01:03,610 --> 00:01:09,820 potem na 13:20, 13:30, 1:40 PM. 21 00:01:09,820 --> 00:01:12,030 To CS50. 22 00:01:12,030 --> 00:01:15,570 >> DAVID J. Malan: Więc to jest jego głos CS50. 23 00:01:15,570 --> 00:01:18,030 I jest przykładem rodzaju ostatecznych projektów, na 24 00:01:18,030 --> 00:01:19,500 Przykładowo, można odgryźć kierunku 25 00:01:19,500 --> 00:01:20,600 koniec semestru. 26 00:01:20,600 --> 00:01:23,840 Na przykład, że istnieje shuttleboy.cs50.net - 27 00:01:23,840 --> 00:01:28,200 faktycznie projekt, który pierwszy napisał po zażyciu CS51 28 00:01:28,200 --> 00:01:29,740 kiedy byłem licencjackich. 29 00:01:29,740 --> 00:01:32,250 I inspiracją było tu wtedy, wszystko, co mieli było 30 00:01:32,250 --> 00:01:34,320 drukowane rozkłady autobus, i nie było 31 00:01:34,320 --> 00:01:35,970 Pojęcie szuka rzeczy online. 32 00:01:35,970 --> 00:01:38,730 I tak jakby gołębica w jeden weekend, przelewa się przez 33 00:01:38,730 --> 00:01:41,460 drukowane harmonogram i przeniesiony do programu komputerowego. 34 00:01:41,460 --> 00:01:43,790 W tym czasie program komputerowy się być napisane 35 00:01:43,790 --> 00:01:47,110 w C. I faktycznie prowadził ją przez Boy wpisanie na transfer 36 00:01:47,110 --> 00:01:48,600 miga zapyta jak robiliśmy do tej pory. 37 00:01:48,600 --> 00:01:50,450 Jednak w ciągu roku, to przekształciła błyskawicznej 38 00:01:50,450 --> 00:01:51,390 wiadomości bot. 39 00:01:51,390 --> 00:01:53,970 To ewoluował ostatnio do tej strony internetowej, na 40 00:01:53,970 --> 00:01:57,720 SMS narzędzie, jak również do tego narzędzia opartego głosu. 41 00:01:57,720 --> 00:02:00,170 I to ma wskazywać na różnego rodzaju rzeczy, które można 42 00:02:00,170 --> 00:02:02,380 zrobić dla siebie przez koniec semestru. 43 00:02:02,380 --> 00:02:05,490 >> Na przykład tam, wersja SMS Boy Shuttle dzieje 44 00:02:05,490 --> 00:02:06,510 działać w następujący sposób. 45 00:02:06,510 --> 00:02:10,880 Jeśli na telefonie komórkowym, należy wysłać wiadomość tekstową do 41411 i 46 00:02:10,880 --> 00:02:14,300 następnie wysłać specjalny sboy symbol, dla Chłopca błyskawicznego 47 00:02:14,300 --> 00:02:18,350 następnie przez A i B, gdzie A jest pochodzenia i B jest 48 00:02:18,350 --> 00:02:19,070 destination - 49 00:02:19,070 --> 00:02:21,030 na przykład, Boylston Przestrzeń Quad - 50 00:02:21,030 --> 00:02:23,330 co należy odzyskać w ciągu kilku sekund jest tekst 51 00:02:23,330 --> 00:02:25,820 Wiadomość od Boy Shuttle informacją kiedy dokładnie 52 00:02:25,820 --> 00:02:28,990 Następnych kilka wahadłowce są, od tego momentu, że będzie 53 00:02:28,990 --> 00:02:29,640 pkt B. 54 00:02:29,640 --> 00:02:32,510 I to jest bardziej ogólny przykład tego, co jest znane jako 55 00:02:32,510 --> 00:02:33,920 przy użyciu interfejsu API. 56 00:02:33,920 --> 00:02:36,930 >> Tak na przykład, to tutaj jest tylko shuttleboy.cs50.net, 57 00:02:36,930 --> 00:02:39,300 Rzeczywista internetową wcielenie tego. 58 00:02:39,300 --> 00:02:42,480 Ale dane, które podkreśla ten i inne aplikacje, które CS50 59 00:02:42,480 --> 00:02:45,560 opracował są narażone na wszystkich tutaj w postaci 60 00:02:45,560 --> 00:02:49,340 interfejsów API, interfejs programowania aplikacji. 61 00:02:49,340 --> 00:02:52,220 A to tylko fantazyjny sposób na powiedzenie, że ludzie, jak my na 62 00:02:52,220 --> 00:02:56,010 Internet i inne, które przez pewien czas tworzenia 63 00:02:56,010 --> 00:02:59,970 oprogramowanie, które można wykorzystać w celu chwyć danych z nas i 64 00:02:59,970 --> 00:03:02,510 następnie budować własne aplikacje na górze 65 00:03:02,510 --> 00:03:03,840 z tego zestawu danych. 66 00:03:03,840 --> 00:03:06,610 Tak na przykład, ta strona Boy transfer API tutaj, co 67 00:03:06,610 --> 00:03:09,390 dzieje się w CS50 instrukcji, zasadniczo dokumentami 68 00:03:09,390 --> 00:03:13,080 w jaki sposób można przejść o pytając CS50 serwerów danych. 69 00:03:13,080 --> 00:03:16,240 Na przykład, jeśli jesteś zaznajomiony z plików CSV, przecinek 70 00:03:16,240 --> 00:03:18,940 oddziela wartości, to tylko rodzaj szybkie i brudne 71 00:03:18,940 --> 00:03:20,310 Excel-jak pliki. 72 00:03:20,310 --> 00:03:23,110 Więc możesz zapytać Boy wahadłowych dla wszystkich danych na wszystkich 73 00:03:23,110 --> 00:03:25,090 Domy i ich współrzędne GPS, a dostaniesz 74 00:03:25,090 --> 00:03:27,300 powrót do zasady, że jak arkusz kalkulacyjny 75 00:03:27,300 --> 00:03:30,820 można następnie wczytać do programu własnego, a następnie 76 00:03:30,820 --> 00:03:33,250 generować wyniki, podobnie jak sam Boy Shuttle 77 00:03:33,250 --> 00:03:34,160 dzieje się robi. 78 00:03:34,160 --> 00:03:37,030 Dla tych bardziej znanych, bardziej nowoczesnych reprezentacji danych 79 00:03:37,030 --> 00:03:39,420 m.in. JSON, JavaScript Object Notation. 80 00:03:39,420 --> 00:03:40,620 Coś wróci do ciebie w kierunku 81 00:03:40,620 --> 00:03:41,720 koniec semestru. 82 00:03:41,720 --> 00:03:45,440 >> Ale znowu, jest to tylko jeden z kilku własnych API CS50 jest. 83 00:03:45,440 --> 00:03:48,320 I ekscytującą rzeczą jest teraz, w tych dniach, Facebook i 84 00:03:48,320 --> 00:03:51,110 Twitter i Google i prawie każdy popularny strona z 85 00:03:51,110 --> 00:03:54,130 tam ma jakieś API, co oznacza, że ​​jeśli czytasz 86 00:03:54,130 --> 00:03:56,620 dokumentacja na ich stronie internetowej, możesz zapisać się do 87 00:03:56,620 --> 00:03:59,980 konto, można rozpocząć pisanie oprogramowania na szczycie 88 00:03:59,980 --> 00:04:03,680 niezależnie od narzędzi i danych, które firma nie przewiduje. 89 00:04:03,680 --> 00:04:06,210 I tak jeden z naszych współbraci nauczania kilka lat temu 90 00:04:06,210 --> 00:04:07,620 napisał wersję Mac to. 91 00:04:07,620 --> 00:04:10,990 Więc w linku pt Mac tutaj na górze po lewej stronie, można rzeczywiście 92 00:04:10,990 --> 00:04:13,940 pobrać widget Mac OS, który działa na własnym komputerze Mac, aby zrobić 93 00:04:13,940 --> 00:04:15,040 się te same rzeczy. 94 00:04:15,040 --> 00:04:17,970 Więc to wszystko o budowanie na szczycie zbiorów danych jak te. 95 00:04:17,970 --> 00:04:21,839 Ale o tym pod koniec semestru. 96 00:04:21,839 --> 00:04:25,780 >> Więc nurkowania w bardzo szybko do błędów, po prostu rodzaj uzyskać 97 00:04:25,780 --> 00:04:27,990 rzeczy rozgrzany dzisiaj, i wracam na niektórych 98 00:04:27,990 --> 00:04:29,660 rzeczy przyjrzeliśmy ostatniego tygodnia. 99 00:04:29,660 --> 00:04:32,840 W szczególności, pozwól mi iść do przodu i pociągnąć w górę, powiedzmy, 100 00:04:32,840 --> 00:04:34,080 ten przykład tutaj. 101 00:04:34,080 --> 00:04:37,500 Buggy1.c ten jest dostępny na stronie internetowej kursu gdybyś 102 00:04:37,500 --> 00:04:40,250 jak go ściągnąć i rozglądamy siebie. 103 00:04:40,250 --> 00:04:43,520 Ale bądźmy przybliżyć tutaj w tym programie dość krótkim, a tylko 104 00:04:43,520 --> 00:04:46,550 super szybkie podsumowanie niektórych podstawowych elementów budynku, które 105 00:04:46,550 --> 00:04:48,880 naprawdę będą tylko rozpocząć przyjmowanie za pewnik. 106 00:04:48,880 --> 00:04:51,860 >> Więc niebieskiego rzeczy, w wierszach od 1 do 9, to tylko 107 00:04:51,860 --> 00:04:53,670 Pytania softball. 108 00:04:53,670 --> 00:04:54,590 Więc to tylko komentarze. 109 00:04:54,590 --> 00:04:56,230 Oni nie mają funkcjonalnego znaczenia. 110 00:04:56,230 --> 00:04:58,460 Ale są komentarze w tym sensie, że są one zauważa, że 111 00:04:58,460 --> 00:05:02,010 I ludzkiej, do siebie, tak wykonane, że w i po wykład 112 00:05:02,010 --> 00:05:04,340 wykład, faktycznie mogę sobie przypomnieć, co ten program 113 00:05:04,340 --> 00:05:07,120 nie bez konieczności czytania przez niego linia po linii i 114 00:05:07,120 --> 00:05:08,990 odtwarzając historię w moim umyśle. 115 00:05:08,990 --> 00:05:11,000 Ponadto, jeśli ten program oddać komuś innemu, jak 116 00:05:11,000 --> 00:05:14,420 ty, to znacznie bardziej przejrzyste dla ciebie, bo komentarzy takich jak ten, 117 00:05:14,420 --> 00:05:16,680 , co jest w rzeczywistości sposób programu, lub w co najmniej 118 00:05:16,680 --> 00:05:18,210 Program ma być robi. 119 00:05:18,210 --> 00:05:20,760 Czy to jest prawidłowe, to inna sprawa zupełnie. 120 00:05:20,760 --> 00:05:25,040 Teraz, w C, z komentarzami wielowierszowych, przypomnieć, że na linii 121 00:05:25,040 --> 00:05:27,880 tutaj jest magiczny symbol, / *. 122 00:05:27,880 --> 00:05:30,380 Oznacza to, tutaj jest początek komentarza. 123 00:05:30,380 --> 00:05:34,560 I nic innego się nie liczy, aż dojdziesz do końca terminator 124 00:05:34,560 --> 00:05:36,700 co * /, przeciwnie. 125 00:05:36,700 --> 00:05:39,120 Tak więc fakt, że mam 80-kilka dziwnych gwiazd tutaj od 126 00:05:39,120 --> 00:05:41,550 od lewej do prawej jest naprawdę tylko estetyczny szczegół. 127 00:05:41,550 --> 00:05:43,370 Nie ma znaczenia funkcjonalnego. 128 00:05:43,370 --> 00:05:44,490 >> Teraz jak o linii 11? 129 00:05:44,490 --> 00:05:46,940 Co to zrobić w laika? 130 00:05:51,560 --> 00:05:52,540 Co to jest? 131 00:05:52,540 --> 00:05:54,280 PUBLICZNOŚCI: Zawiera normy. 132 00:05:54,280 --> 00:05:54,740 DAVID J. Malan: OK, dobrze. 133 00:05:54,740 --> 00:05:57,500 Więc to zawiera stdio.h biblioteki. 134 00:05:57,500 --> 00:05:58,230 Więc co to oznacza? 135 00:05:58,230 --> 00:06:01,570 Cóż, wewnątrz tego pliku stdio.h, jest cała masa 136 00:06:01,570 --> 00:06:03,320 deklaracje funkcji - 137 00:06:03,320 --> 00:06:05,290 to jest kod, który ktoś inny napisał. 138 00:06:05,290 --> 00:06:08,160 A doskonałym przykładem funkcji, która jest zadeklarowana w 139 00:06:08,160 --> 00:06:10,250 stdio.h jest - 140 00:06:10,250 --> 00:06:11,980 których ulubionym przez teraz? 141 00:06:11,980 --> 00:06:14,300 Printf więc, jednym z najczęstszych używać, oczywiście 142 00:06:14,300 --> 00:06:15,840 na początku, z tej biblioteki jest. 143 00:06:15,840 --> 00:06:19,290 Jeśli wykluczyć tego wiersza kodu Clang będzie krzyczeć 144 00:06:19,290 --> 00:06:22,550 na mnie coś o użyciu nielegalnej symbol. 145 00:06:22,550 --> 00:06:24,930 Coś jest chyba niewypowiedziane słowo kluczowe, ponieważ 146 00:06:24,930 --> 00:06:27,770 nie poinformowały kompilator co printf wygląda 147 00:06:27,770 --> 00:06:29,230 lubię, chyba że to ten wiersz. 148 00:06:29,230 --> 00:06:31,830 A bardziej na ziemię, tak naprawdę, co to jest linia mówi 149 00:06:31,830 --> 00:06:34,890 otworzyć ten plik, stdio.h, gdziekolwiek to jest na serwerze 150 00:06:34,890 --> 00:06:38,200 dysk twardy lub urządzenie w dysk twardy i kopiuj-wklej to 151 00:06:38,200 --> 00:06:40,240 tam do mojego pliku, bez mojej 152 00:06:40,240 --> 00:06:41,730 konieczności zrobić ręcznie. 153 00:06:41,730 --> 00:06:44,420 >> Teraz, kiedy mamy tu do main, niedługo zaczniemy 154 00:06:44,420 --> 00:06:46,900 oprócz tego, co drażni int i co nieważne jest. 155 00:06:46,900 --> 00:06:48,430 Ale teraz spójrzmy na trzech linii 156 00:06:48,430 --> 00:06:50,350 w ciągu 15 do 17. 157 00:06:50,350 --> 00:06:52,250 To tu, jak twierdzą, buggy. 158 00:06:52,250 --> 00:06:54,900 Linia 7 w moje komentarze mówi "Gdyby wydrukować 10 159 00:06:54,900 --> 00:06:59,410 gwiazdki ale nie. "Dlaczego to nie drukuje, w rzeczywistości, 160 00:06:59,410 --> 00:07:01,097 10 takie gwiazdy? 161 00:07:01,097 --> 00:07:02,347 PUBLICZNOŚCI: [niesłyszalne]. 162 00:07:05,210 --> 00:07:05,800 DAVID J. Malan: Dokładnie. 163 00:07:05,800 --> 00:07:08,720 Więc zauważyć, że zaczynamy liczyć od 0. 164 00:07:08,720 --> 00:07:10,780 I to jest rzeczywiście konwencja w programowaniu i 165 00:07:10,780 --> 00:07:13,230 informatyka bardziej ogólnie, zaczyna liczyć 166 00:07:13,230 --> 00:07:14,610 od 0 zamiast 1. 167 00:07:14,610 --> 00:07:16,690 I to tak naprawdę wynika z faktu, że dla 168 00:07:16,690 --> 00:07:18,940 przykład, gdy osiem osób się na etapie, kiedy 169 00:07:18,940 --> 00:07:20,680 nikt nie podniesienie ręki, byli 170 00:07:20,680 --> 00:07:22,340 wszystkie zera skutecznie. 171 00:07:22,340 --> 00:07:24,260 A więc jest to po prostu rodzaj konwencji komputera tak, 172 00:07:24,260 --> 00:07:26,030 w związku z tym, w celu rozpoczęcia zliczania od 0. 173 00:07:26,030 --> 00:07:29,130 Jeśli to najniższy numer można reprezentować w formacie binarnym. 174 00:07:29,130 --> 00:07:32,270 >> Więc zaczęliśmy inicjowanie I do 0. 175 00:07:32,270 --> 00:07:34,230 Musimy ustawić i równa 0. 176 00:07:34,230 --> 00:07:37,780 Ale potem popełnił ten błąd tutaj, mówiąc i jest mniejsza lub 177 00:07:37,780 --> 00:07:38,820 równa 10. 178 00:07:38,820 --> 00:07:41,700 Ale jeśli myślisz, że dzięki, jeśli zaczynają się od 0, a następnie przejść 179 00:07:41,700 --> 00:07:46,410 do 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, i w rzeczywistości będzie mi 180 00:07:46,410 --> 00:07:49,980 wydrukowanie 11 gwiazd na ekranie, bo już wzrosły 181 00:07:49,980 --> 00:07:52,410 się i wynosi 10. 182 00:07:52,410 --> 00:07:55,090 Tak łatwo naprawić tutaj to jest co? 183 00:07:55,090 --> 00:07:56,070 PUBLICZNOŚCI: [niesłyszalne]. 184 00:07:56,070 --> 00:07:57,350 DAVID J. Malan: Wystarczy zmienić na mniej niż. 185 00:07:57,350 --> 00:07:59,700 Jeśli naprawdę chcesz, możesz to zrobić. 186 00:07:59,700 --> 00:08:01,370 Ale w ogóle, że jest mile widziana. 187 00:08:01,370 --> 00:08:04,020 I tak zaczyna się liczyć od 0 jest po prostu coś, co powinno 188 00:08:04,020 --> 00:08:05,510 zazwyczaj przyzwyczaić. 189 00:08:05,510 --> 00:08:07,810 Teraz, co o tej całej konstrukcji w sobie i od siebie? 190 00:08:07,810 --> 00:08:10,640 Ta linia 15 demarks pętli for. 191 00:08:10,640 --> 00:08:12,510 Więc dla nie jest funkcją. 192 00:08:12,510 --> 00:08:13,640 To tylko stwierdzenie. 193 00:08:13,640 --> 00:08:16,180 To zapętlenie konstruują, jak widzieliśmy w Scratch. 194 00:08:16,180 --> 00:08:17,600 I ma trzy części. 195 00:08:17,600 --> 00:08:19,740 Należy zauważyć, że nie jest w pierwszą część 196 00:08:19,740 --> 00:08:21,350 lewo od średnika. 197 00:08:21,350 --> 00:08:24,200 Jest część środkowa pomiędzy dwoma średnikami. 198 00:08:24,200 --> 00:08:26,250 I potem jest prawa ręka w prawo 199 00:08:26,250 --> 00:08:27,640 drugiego średnikiem. 200 00:08:27,640 --> 00:08:31,822 Teraz, pierwszy z nich robi co? 201 00:08:31,822 --> 00:08:33,679 PUBLICZNOŚCI: [niesłyszalne]. 202 00:08:33,679 --> 00:08:34,270 DAVID J. Malan: Powrót tam? 203 00:08:34,270 --> 00:08:34,816 Tak? 204 00:08:34,816 --> 00:08:35,980 PUBLICZNOŚCI: Inicjalizacja. 205 00:08:35,980 --> 00:08:36,850 >> DAVID J. Malan: Inicjalizacja. 206 00:08:36,850 --> 00:08:37,840 Więc co to znaczy? 207 00:08:37,840 --> 00:08:40,690 Mamy zadeklarowane zmienną o nazwie i. 208 00:08:40,690 --> 00:08:43,840 To jest typu int, bo już określony int. 209 00:08:43,840 --> 00:08:46,470 A ja inicjowanie I do wartości 0. 210 00:08:46,470 --> 00:08:47,730 Więc co to naprawdę mówi? 211 00:08:47,730 --> 00:08:50,680 To skutecznie mówić do komputera Hej, daj mi wystarczy 212 00:08:50,680 --> 00:08:53,660 pamięci, mało pamięci RAM, aby dopasować liczbę, a następnie umieścić 213 00:08:53,660 --> 00:08:56,130 liczba 0 w tym fragmencie pamięci RAM. 214 00:08:56,130 --> 00:08:59,100 I jak na bok, jak duży jest int zazwyczaj, przynajmniej w 215 00:08:59,100 --> 00:09:00,280 z urządzenia? 216 00:09:00,280 --> 00:09:01,000 PUBLICZNOŚCI: 32 bit. 217 00:09:01,000 --> 00:09:01,670 DAVID J. Malan: 32 bitów. 218 00:09:01,670 --> 00:09:04,890 To znaczy, że da mi 32 bitów, inaczej znany jako 4 bajty, 219 00:09:04,890 --> 00:09:07,250 i umieścić w nim wartość 0, co jest dość łatwe, ponieważ 220 00:09:07,250 --> 00:09:09,110 To oznacza tylko ustawić wszystkie bity na 0. 221 00:09:09,110 --> 00:09:11,690 >> Więc teraz, że druga część jest tutaj warunek. 222 00:09:11,690 --> 00:09:14,590 I stan, jak sama nazwa wskazuje, jest to, co jest zaznaczone 223 00:09:14,590 --> 00:09:18,100 znowu i znowu i znowu, czy to prawda czy fałsz. 224 00:09:18,100 --> 00:09:21,410 Więc to jest po prostu mówiąc wykonaj następujące linie kodu - 225 00:09:21,410 --> 00:09:23,950 czyli linia 16, bo to tylko jeden wcięty 226 00:09:23,950 --> 00:09:24,820 pod - 227 00:09:24,820 --> 00:09:26,980 i tak długo, jak jest poniżej 10. 228 00:09:26,980 --> 00:09:30,520 I po każdej iteracji dzięki tej pętli, wykonaj 229 00:09:30,520 --> 00:09:33,840 inkrementacja, którym jest w tym przypadku i + +. 230 00:09:33,840 --> 00:09:35,580 Obecnie, nie musi być I + +. 231 00:09:35,580 --> 00:09:37,610 I może być -. 232 00:09:37,610 --> 00:09:39,860 Ale jeśli nie to, co się dzieje zachowanie 233 00:09:39,860 --> 00:09:41,370 się z tego programu? 234 00:09:41,370 --> 00:09:42,290 PUBLICZNOŚCI: To będzie pętla nieskończona. 235 00:09:42,290 --> 00:09:44,060 DAVID J. Malan: To będzie coś w rodzaju nieskończonej pętli, 236 00:09:44,060 --> 00:09:47,720 chyba, że ​​miał szczęście, po negatywnej 2 miliardy lub tak. 237 00:09:47,720 --> 00:09:51,320 Może wszystko się owinąć wokół, tylko przez naturę skończoności 238 00:09:51,320 --> 00:09:53,930 liczba bitów, które zostały przeznaczone na int. 239 00:09:53,930 --> 00:09:56,270 Ale to na pewno będzie o wiele więcej niż iteracji i 10 240 00:09:56,270 --> 00:09:58,630 na pewno więcej niż 11 razy tutaj. 241 00:09:58,630 --> 00:10:02,240 >> A teraz, jak na bok, uświadomić sobie, że i + + oraz i - 242 00:10:02,240 --> 00:10:04,420 są tak naprawdę syntaktyczne cukru. 243 00:10:04,420 --> 00:10:07,210 To tylko skrótowe oznaczenie co jest trochę bardziej 244 00:10:07,210 --> 00:10:08,720 wyraźnie zapisane w sposób następujący: 245 00:10:08,720 --> 00:10:11,200 i = i + 1. 246 00:10:11,200 --> 00:10:13,460 Który jest identyczny i + +. 247 00:10:13,460 --> 00:10:15,860 To po prostu rodzaj wygląda ładniej powiedzieć i + +. 248 00:10:15,860 --> 00:10:17,490 To jest bardziej zwięzłe, bardziej czytelny. 249 00:10:17,490 --> 00:10:19,030 I tak większość ludzi, że zamiast. 250 00:10:19,030 --> 00:10:21,840 Ale jest funkcjonalnie identyczne 251 00:10:21,840 --> 00:10:22,900 co właśnie zobaczył. 252 00:10:22,900 --> 00:10:27,770 Tak w skrócie, szybkie poprawki tutaj jest po prostu powiedzieć iteracyjne i. 253 00:10:27,770 --> 00:10:30,690 od 0 aż do mniej niż 10. 254 00:10:30,690 --> 00:10:32,700 I wtedy rzeczywiście dostać 10 gwiazdek. 255 00:10:32,700 --> 00:10:33,430 >> Warto więc spróbować. 256 00:10:33,430 --> 00:10:35,310 Pozwól mi otworzyć terminal na dole. 257 00:10:35,310 --> 00:10:37,420 Pozwól mi iść do katalogu, że jest to widok 258 00:10:37,420 --> 00:10:40,030 I zamierzam go skompilować ręcznie Clang do teraz. 259 00:10:40,030 --> 00:10:44,880 I mam zamiar skompilować to jako buggy1.c, Enter. 260 00:10:44,880 --> 00:10:50,280 A teraz buggy1, dlaczego nie ma takiego pliku lub katalogu 261 00:10:50,280 --> 00:10:52,026 nazywa buggy1? 262 00:10:52,026 --> 00:10:53,850 PUBLICZNOŚCI: [niesłyszalne]. 263 00:10:53,850 --> 00:10:54,240 DAVID J. Malan: Tak. 264 00:10:54,240 --> 00:10:55,420 Więc to jest rzeczywiście o nazwie a.out. 265 00:10:55,420 --> 00:10:57,480 Więc przypomnieć, czy po prostu uruchomić dzyń, gdzie Clang jest 266 00:10:57,480 --> 00:11:00,420 kompilator, i nie podasz nazwę chcesz 267 00:11:00,420 --> 00:11:03,550 dać do swojego programu, to będzie domyślnie a.out. 268 00:11:03,550 --> 00:11:05,030 Tak naprawdę, jeśli mam zrobić ls - 269 00:11:05,030 --> 00:11:05,510 oops. 270 00:11:05,510 --> 00:11:07,680 A Ja nie - na czarno-biały problem niektórych 271 00:11:07,680 --> 00:11:08,840 jesteś w obliczu został naprawiony. 272 00:11:08,840 --> 00:11:10,670 Ale pozwól mi to zrobić. 273 00:11:10,670 --> 00:11:14,570 Nie mamy a.out na lewej stronie tam. 274 00:11:14,570 --> 00:11:17,360 Musimy więc uruchomić a.out zamiast buggy1. 275 00:11:17,360 --> 00:11:19,140 >> Więc pozwól mi iść do przodu i robić. 276 00:11:19,140 --> 00:11:22,840 . / A.out, Enter. 277 00:11:22,840 --> 00:11:26,160 I najwyraźniej nie co zrobić? 278 00:11:26,160 --> 00:11:26,620 PUBLICZNOŚCI: Zapisz. 279 00:11:26,620 --> 00:11:27,390 DAVID J. Malan: Zapisz moje akta. 280 00:11:27,390 --> 00:11:31,520 Tak, że można łatwo rozwiązać poprzez uderzenie S sterowania, lub będzie 281 00:11:31,520 --> 00:11:33,450 Plik, Zapisz, jak w większości programów. 282 00:11:33,450 --> 00:11:36,360 Puść mnie tu, wyczyścić ekran, uruchom go ponownie. 283 00:11:36,360 --> 00:11:37,960 I jest jeszcze bug. 284 00:11:37,960 --> 00:11:41,618 Więc co się dzieje - 285 00:11:41,618 --> 00:11:42,980 PUBLICZNOŚCI: Nie skompilować. 286 00:11:42,980 --> 00:11:44,040 DAVID J. Malan: Ah, dobrze. 287 00:11:44,040 --> 00:11:45,010 Nie miałem go skompilować. 288 00:11:45,010 --> 00:11:47,250 Jak idiota, ja patrząc na kod, aby zobaczyć co się stało. 289 00:11:47,250 --> 00:11:51,275 Więc buggy1.c dzyń, teraz a.out. 290 00:11:51,275 --> 00:11:52,640 I uff, zapisane. 291 00:11:52,640 --> 00:11:55,090 >> Tak to wygląda trochę brzydki, bo nie ma nowa linia 292 00:11:55,090 --> 00:11:55,970 wszędzie w programie. 293 00:11:55,970 --> 00:11:57,390 Ale znowu, to tylko estetyczny szczegół. 294 00:11:57,390 --> 00:11:59,430 A przynajmniej jeśli liczyć te obecnie, powinniśmy 295 00:11:59,430 --> 00:12:01,160 teraz zobaczyć 10 takich gwiazd. 296 00:12:01,160 --> 00:12:03,260 No, a co z tym drugim przykładzie rozgrzewki? 297 00:12:03,260 --> 00:12:07,750 Więc w buggy2, twierdzę, że ta wersja też będzie drukować 298 00:12:07,750 --> 00:12:10,110 10 gwiazd, po jednej w wierszu. 299 00:12:10,110 --> 00:12:12,340 Więc tym razem, mam znak nowej linii, tak aby 300 00:12:12,340 --> 00:12:13,520 rzeczy trochę ładniejsza. 301 00:12:13,520 --> 00:12:15,410 Ale zamiast tego, co dostaję to. 302 00:12:15,410 --> 00:12:19,590 Więc pozwól mi zrobić buggy2.c dzyń, Enter. 303 00:12:19,590 --> 00:12:21,790 Teraz to znowu nazwie a.out. 304 00:12:21,790 --> 00:12:23,130 Enter. 305 00:12:23,130 --> 00:12:26,900 Widzę tylko jedną nową linię, tylko bardzo ostatnio nowy wiersz 306 00:12:26,900 --> 00:12:29,370 porusza moje polecenia do następnego wiersza. 307 00:12:29,370 --> 00:12:32,660 A jednak wyraźnie byłem drukowania *, to nowy wiersz, 308 00:12:32,660 --> 00:12:33,990 *, To nowa linia. 309 00:12:33,990 --> 00:12:35,490 Ale co jest bug tutaj? 310 00:12:35,490 --> 00:12:35,974 Tak? 311 00:12:35,974 --> 00:12:37,224 PUBLICZNOŚCI: [niesłyszalne]. 312 00:12:39,850 --> 00:12:40,470 >> DAVID J. Malan: Dokładnie. 313 00:12:40,470 --> 00:12:44,110 Tak więc w przeciwieństwie do niektórych języków, takich jak Python, gdzie wcięcia 314 00:12:44,110 --> 00:12:46,030 faktycznie ma znaczenie funkcjonalne, w 315 00:12:46,030 --> 00:12:47,150 język jak C - 316 00:12:47,150 --> 00:12:49,140 jak zobaczymy, PHP, JavaScript - 317 00:12:49,140 --> 00:12:51,940 wcięcie jest naprawdę tylko dla dobra ludzi ". 318 00:12:51,940 --> 00:12:55,690 Tak więc fakt, że mam wcięcie linii 16 i 17 wygląda świetnie, 319 00:12:55,690 --> 00:12:57,530 , ale nie ma tu znaczenie funkcjonalne. 320 00:12:57,530 --> 00:13:00,700 Jeśli chcę obie linie do wykonania w ramach w 321 00:13:00,700 --> 00:13:05,140 pętla, to muszę je ująć w nawiasy klamrowe to robi. 322 00:13:05,140 --> 00:13:08,540 Możesz tylko wyciąć ten róg i pominąć klamrach 323 00:13:08,540 --> 00:13:10,036 co to za sprawa? 324 00:13:10,036 --> 00:13:10,410 PUBLICZNOŚCI: Tylko jedna linia. 325 00:13:10,410 --> 00:13:11,130 DAVID J. Malan: Tylko jedna linia. 326 00:13:11,130 --> 00:13:15,280 Więc to jest po prostu rodzaj miłej rodzaju szczegółów składni tak, że 327 00:13:15,280 --> 00:13:17,900 nie tracić czasu na pisanie trzy linie, z których dwa są 328 00:13:17,900 --> 00:13:20,040 nawiasy klamrowe, tylko napisać ani jednej linijki kodu. 329 00:13:20,040 --> 00:13:21,650 Ale jeśli masz dwie lub więcej linii, my 330 00:13:21,650 --> 00:13:22,860 rzeczywiście trzeba to zrobić. 331 00:13:22,860 --> 00:13:24,210 >> Więc teraz pozwól mi zapisać to. 332 00:13:24,210 --> 00:13:27,140 Pozwólcie mi iść do przodu i ponownie uruchomić Clang. 333 00:13:27,140 --> 00:13:31,375 Pozwól mi powtórzona a.out, a teraz mam je jeden na wiersz. 334 00:13:31,375 --> 00:13:33,670 Teraz znów jest a.out rodzaju głupi nazwy programu. 335 00:13:33,670 --> 00:13:37,500 Jak mogę dzyń faktycznie dać mi nazwę pliku 336 00:13:37,500 --> 00:13:39,820 to jest bardziej przyjazny dla użytkownika, jak buggy2 sama? 337 00:13:43,200 --> 00:13:44,466 Trochę jaśniej? 338 00:13:44,466 --> 00:13:45,220 PUBLICZNOŚCI: [niesłyszalne]. 339 00:13:45,220 --> 00:13:47,810 DAVID J. Malan: OK, więc można rzeczywiście podjąć bardzo 340 00:13:47,810 --> 00:13:51,000 łatwy w obsłudze i po prostu napisać skrót zrobić buggy2. 341 00:13:51,000 --> 00:13:53,840 Nie określić. C w tym przypadku, i naciśnij klawisz Enter. 342 00:13:53,840 --> 00:13:58,530 A co robi, to się kompiluje buggy2.c dla mnie przez 343 00:13:58,530 --> 00:14:00,260 prosząc Clang to zrobić. 344 00:14:00,260 --> 00:14:05,100 Konkretnie, wywołuje dzyń, uruchamia dzyń użyciu sposób więcej 345 00:14:05,100 --> 00:14:08,540 Argumenty wiersza poleceń lub przełączniki, niż rzeczywiście potrzebujesz. 346 00:14:08,540 --> 00:14:11,270 W czasie, wrócimy do tego, co tych wszystkich różnych 347 00:14:11,270 --> 00:14:13,810 zagadkowe dzielone wyrażenia oznacza. 348 00:14:13,810 --> 00:14:16,910 Ale teraz, to po prostu oszczędność mi kłopotu z 349 00:14:16,910 --> 00:14:19,600 mając do zapamiętania i wpisywania wszystkie te 350 00:14:19,600 --> 00:14:21,150 różne dzielone wyrażenia. 351 00:14:21,150 --> 00:14:23,240 I odwrotnie nim ostatecznie jest 352 00:14:23,240 --> 00:14:25,900 że teraz mam buggy2. 353 00:14:25,900 --> 00:14:27,480 Jeśli chcę zrobić to ręcznie, choć, 354 00:14:27,480 --> 00:14:28,775 może zamiast to zrobić - 355 00:14:28,775 --> 00:14:34,110 dzyń-o buggy2 a następnie buggy2.c. 356 00:14:34,110 --> 00:14:37,980 I że podobnie będzie mi plik o nazwie buggy2. 357 00:14:37,980 --> 00:14:39,710 >> Tak w skrócie, Clang jest kompilator. 358 00:14:39,710 --> 00:14:43,080 Marka jest tylko łatwy w obsłudze narzędzie, które będziemy używać więcej 359 00:14:43,080 --> 00:14:44,420 i więcej, po prostu dlatego, że zaczyna 360 00:14:44,420 --> 00:14:47,330 uproszczenia rzeczy dla nas. 361 00:14:47,330 --> 00:14:49,430 I wracamy 0 wreszcie. 362 00:14:49,430 --> 00:14:51,890 Na razie, tylko dlatego, ale zaczniemy drażni, że część 363 00:14:51,890 --> 00:14:52,930 dzisiaj i na środę. 364 00:14:52,930 --> 00:14:55,560 Wszelkie pytania dotyczące któregokolwiek z tego? 365 00:14:55,560 --> 00:14:56,450 Tak? 366 00:14:56,450 --> 00:14:58,234 PUBLICZNOŚCI: [niesłyszalne] 367 00:14:58,234 --> 00:15:00,020 ls w cudzysłów tam? 368 00:15:00,020 --> 00:15:01,710 DAVID J. Malan: OK. 369 00:15:01,710 --> 00:15:05,880 Kiedy wpisałem ls w cudzysłowie, który został mi robi trochę magii 370 00:15:05,880 --> 00:15:07,160 za kulisami, aby naprawić błąd. 371 00:15:07,160 --> 00:15:09,370 Zapomniałem, jakbyśmy mówili wielu z was na 372 00:15:09,370 --> 00:15:11,600 tablice dyskusyjne, uwagi - 373 00:15:11,600 --> 00:15:17,220 zrobimy to teraz - sudo yum-y aktualizację appliance50. 374 00:15:17,220 --> 00:15:19,790 Ups, że jest wpisany w prawo. 375 00:15:19,790 --> 00:15:23,240 Urządzenie jest tak jak system operacyjny. 376 00:15:23,240 --> 00:15:25,650 To działa ten system operacyjny o nazwie Fedora. 377 00:15:25,650 --> 00:15:27,450 A teraz z powodu mojego wolnego połączenia internetowego, mam 378 00:15:27,450 --> 00:15:28,260 bardzo ladne to. 379 00:15:28,260 --> 00:15:31,620 Tak działa sudo yum aktualizację, jak wam zrobić w 380 00:15:31,620 --> 00:15:34,080 set problem, zasadniczo jak działa automatyczne aktualizacje 381 00:15:34,080 --> 00:15:35,420 w systemie Mac OS lub Windows. 382 00:15:35,420 --> 00:15:37,280 I przyczyną działa to na samym początku 383 00:15:37,280 --> 00:15:39,640 set problem jest, ponieważ kiedy stworzył urządzenie, I 384 00:15:39,640 --> 00:15:42,480 pomieszane, a ja przypadkowo wykonane wszystkie programy wyglądają 385 00:15:42,480 --> 00:15:45,210 czarno na czarnym ekranie, dlatego nie widzisz ich 386 00:15:45,210 --> 00:15:45,860 domyślnie. 387 00:15:45,860 --> 00:15:48,020 Ale najnowsza wersja urządzenia załatwia problem. 388 00:15:48,020 --> 00:15:50,500 A ja naprawić podczas przerwy raz mam internet 389 00:15:50,500 --> 00:15:51,280 łączność. 390 00:15:51,280 --> 00:15:54,630 >> Więc cytaty po prostu ukrywa mój błąd, bardzo dyskretnie, 391 00:15:54,630 --> 00:15:55,730 widocznie. 392 00:15:55,730 --> 00:15:56,980 Inne pytania? 393 00:15:59,750 --> 00:16:00,668 Tak? 394 00:16:00,668 --> 00:16:02,012 PUBLICZNOŚCI: Gdzie robi się wzięło? 395 00:16:02,012 --> 00:16:03,810 [Niesłyszalne] 396 00:16:03,810 --> 00:16:04,280 DAVID J. Malan: Dobre pytanie. 397 00:16:04,280 --> 00:16:05,460 Gdzie się bierze? 398 00:16:05,460 --> 00:16:09,390 Linux jest program, który od wielu lat, długo 399 00:16:09,390 --> 00:16:10,570 przed CS50. 400 00:16:10,570 --> 00:16:12,930 I jest dostarczany z systemem operacyjnym, jak Fedory. 401 00:16:12,930 --> 00:16:14,830 Nie pochodzi z CS50 biblioteki. 402 00:16:14,830 --> 00:16:17,560 W rzeczywistości, tylko rzeczy, które pochodzą z biblioteki CS50 403 00:16:17,560 --> 00:16:20,470 do tej pory, że widzieliśmy, są GetString, getInt, wszystkie 404 00:16:20,470 --> 00:16:25,550 Pobierz te funkcje, a łańcuch słowo, a dla niektórych 405 00:16:25,550 --> 00:16:26,575 stopniu słowo bool. 406 00:16:26,575 --> 00:16:29,180 Ale będziemy drażnić, że oprócz kiedy nurkować w CS50 407 00:16:29,180 --> 00:16:30,580 samo urządzenie. 408 00:16:30,580 --> 00:16:32,820 >> Tak tak, jeszcze jedno pytanie tutaj. 409 00:16:32,820 --> 00:16:36,636 PUBLICZNOŚCI: Kiedy powiedział make i buggy, w jaki sposób 410 00:16:36,636 --> 00:16:39,980 komputer wie [niesłyszalne]? 411 00:16:39,980 --> 00:16:40,520 DAVID J. Malan: Dobre pytanie. 412 00:16:40,520 --> 00:16:43,830 Więc kiedy tylko uruchomić make buggy1 lub dokonać buggy2, jak 413 00:16:43,830 --> 00:16:45,220 czyni wiedzieć? 414 00:16:45,220 --> 00:16:49,900 Tak domyślnie, jeśli wpiszesz się buggy1, marki szuka 415 00:16:49,900 --> 00:16:52,330 Plik o nazwie buggy1.c. 416 00:16:52,330 --> 00:16:55,570 A następnie wykonuje odpowiednie polecenia dzyń, 417 00:16:55,570 --> 00:17:00,380 tym samym nadpisując plik wyjściowy domyślnej nazwie a.out. 418 00:17:00,380 --> 00:17:03,670 W rzeczywistości, jeśli spojrzymy na to, co zrobić, co - 419 00:17:03,670 --> 00:17:04,839 niech zakończyć to. 420 00:17:04,839 --> 00:17:09,530 Jeśli spojrzymy na to, co się faktycznie robi, aby buggy2, 421 00:17:09,530 --> 00:17:10,470 jest już aktualne. 422 00:17:10,470 --> 00:17:13,020 Więc pozwól mi usunąć polecenia rm, 423 00:17:13,020 --> 00:17:14,319 Program pisałem wcześniej. 424 00:17:14,319 --> 00:17:17,319 Wpisanie Y-E-S w celu potwierdzenia, że ​​chcę, aby ją usunąć. 425 00:17:17,319 --> 00:17:20,480 Jeśli teraz robią, zauważ, że w tej branży bardzo długo, 426 00:17:20,480 --> 00:17:22,980 tam to jest ostatnia rzecz, o,-o buggy2. 427 00:17:22,980 --> 00:17:26,959 Wszystko robi make przechodzi ten argument, że tak powiem, do 428 00:17:26,959 --> 00:17:29,665 Dzyń, tak że nie trzeba wpisywać go sobie. 429 00:17:29,665 --> 00:17:32,660 >> W porządku, więc szybkie para administracyjnych 430 00:17:32,660 --> 00:17:33,470 Anonse. 431 00:17:33,470 --> 00:17:36,940 Tak na sekcje, które oficjalnie rozpoczęło się tak 432 00:17:36,940 --> 00:17:38,970 Niedziela, zawsze będziesz chciał wnieść, jeśli 433 00:17:38,970 --> 00:17:40,120 masz, laptopa. 434 00:17:40,120 --> 00:17:42,570 Jeśli nie masz laptopa, nie dotrzeć do mnie przez 435 00:17:42,570 --> 00:17:43,580 spada mi email. 436 00:17:43,580 --> 00:17:44,810 I dowiemy się przepływ pracy. 437 00:17:44,810 --> 00:17:47,100 Co zazwyczaj znajdziesz w sekcji jest to, że są one częścią 438 00:17:47,100 --> 00:17:48,770 koncepcyjnego, część praktyczną. 439 00:17:48,770 --> 00:17:52,190 Będziemy szczegółowo użyj sekcji pytań, część 440 00:17:52,190 --> 00:17:54,110 w tygodniu zestaw problem, przejść przez niektóre 441 00:17:54,110 --> 00:17:55,820 koncepcyjny materiał z wykładu. 442 00:17:55,820 --> 00:17:57,480 I to wszystko w bieżącym zestawie problemu. 443 00:17:57,480 --> 00:18:00,010 A my też nurkować w niektóre działania praktyczne, czasami 444 00:18:00,010 --> 00:18:02,190 które będą musiały być złożone, czasem 445 00:18:02,190 --> 00:18:02,830 które nie. 446 00:18:02,830 --> 00:18:04,630 Na przykład, w tym pierwszy tydzień, są one przeznaczone, tak jak 447 00:18:04,630 --> 00:18:05,780 rozgrzewka ćwiczenia. 448 00:18:05,780 --> 00:18:07,800 A przekonasz się, że te problemy są tak naprawdę tylko to. 449 00:18:07,800 --> 00:18:10,220 Są to być dość małe, ale nie koniecznie 450 00:18:10,220 --> 00:18:13,100 trywialne programy do pisania, które niekoniecznie 451 00:18:13,100 --> 00:18:16,230 emocjonujące same w sobie, ale są dobrą okazją do 452 00:18:16,230 --> 00:18:19,620 ćwiczyć ze składnią, z nowymi funkcjami, w zaciszu 453 00:18:19,620 --> 00:18:21,900 punkt, gdzie masz kilka swoich kolegów przedstawić jako 454 00:18:21,900 --> 00:18:22,870 dobrze jako TF. 455 00:18:22,870 --> 00:18:26,210 >> A co będziemy robić w czasie jest użyć narzędzia o nazwie CS50 Spaces, 456 00:18:26,210 --> 00:18:28,940 przy czym zamiast używania CS50 Appliance, będziesz 457 00:18:28,940 --> 00:18:32,450 zamiast iść do strony internetowej w przeglądarce, w którym będzie można 458 00:18:32,450 --> 00:18:35,610 napisać kod w oknie przeglądarki podczas sekcji. 459 00:18:35,610 --> 00:18:38,240 A potem, jeśli zdecydują się, twój kolega nauczanie może następnie pokazać 460 00:18:38,240 --> 00:18:40,980 cokolwiek to jest, piszesz na ekranie w przeglądarce 461 00:18:40,980 --> 00:18:43,930 okna do przodu klasy, lub, czy anonimowo 462 00:18:43,930 --> 00:18:47,250 publicznie, tak że może on następnie pieszo przez z 463 00:18:47,250 --> 00:18:50,080 koledzy, co zrobiłeś dobrze, co nie zrobiłeś dobrze. 464 00:18:50,080 --> 00:18:52,750 I znowu, pewni wszystko można ładnie anonimowe. 465 00:18:52,750 --> 00:18:54,410 Ale to będzie miła okazja dla bardziej 466 00:18:54,410 --> 00:18:56,810 interaktywność niż coś wykładu pozwala. 467 00:18:56,810 --> 00:18:58,910 >> W międzyczasie, będziemy mieli te rzeczy nazywane Super 468 00:18:58,910 --> 00:19:01,610 działy, które są obowiązkowe, ale są otwarte dla wszystkich w 469 00:19:01,610 --> 00:19:04,030 klasy, dzięki czemu można zrobić więcej zbiorczo dla 470 00:19:04,030 --> 00:19:05,190 Problem ustawione. 471 00:19:05,190 --> 00:19:06,010 Oto harmonogram. 472 00:19:06,010 --> 00:19:08,870 To jest również umieszczona na stronie głównej w cs50.net. 473 00:19:08,870 --> 00:19:10,850 Zauważ, że nie będzie specyficzna hacker 474 00:19:10,850 --> 00:19:12,430 jeden jutro po południu. 475 00:19:12,430 --> 00:19:15,460 I będziemy filmować jednego dziś, a jeden jutro i po tych 476 00:19:15,460 --> 00:19:16,720 online w ciągu 24 godzin. 477 00:19:16,720 --> 00:19:19,370 Więc nie, jeśli nie można zrobić żadnej z tych czasów, aby się martwić. 478 00:19:19,370 --> 00:19:22,720 I znowu, harmonogram jest teraz w cs50.net. 479 00:19:22,720 --> 00:19:25,350 >> W zakresie cięcia się, należy zdobyć 480 00:19:25,350 --> 00:19:28,520 e-mail z instrukcjami, aby przejść do kursu głównej znaleźć 481 00:19:28,520 --> 00:19:29,610 z sekcji. 482 00:19:29,610 --> 00:19:32,890 Jeśli życie się zmieniło i trzeba zmienić sekcję, 483 00:19:32,890 --> 00:19:33,560 nie stanowi problemu. 484 00:19:33,560 --> 00:19:37,900 Wróć do tej samej zawartości, cs50.net/section, pojedynczej, 485 00:19:37,900 --> 00:19:40,090 i będziesz wypełnić podobną formę, tak aby można 486 00:19:40,090 --> 00:19:41,260 następnie podać swoje preferencje. 487 00:19:41,260 --> 00:19:43,360 I będziemy śledzić przez tydzień w końcu do tego, co możemy 488 00:19:43,360 --> 00:19:44,240 pomieścić. 489 00:19:44,240 --> 00:19:49,530 W zeszłym tygodniu, przypominam, że zaproponował użycie CS50 dyskutować, 490 00:19:49,530 --> 00:19:51,370 Kurs jest narzędziem dyskusja, w wykładzie. 491 00:19:51,370 --> 00:19:53,680 Więc mieliśmy 40 pytań, które były zadawane i 492 00:19:53,680 --> 00:19:54,720 odpowiedź podczas wykładu. 493 00:19:54,720 --> 00:19:56,280 Więc wydawało się dobrze, więc będziemy kontynuować 494 00:19:56,280 --> 00:19:57,180 próbuje to zrobić. 495 00:19:57,180 --> 00:19:59,600 Jeśli w trakcie wykładu, nie tylko poczuć komfortowe podnoszenie 496 00:19:59,600 --> 00:20:00,780 Twoja ręka, a nie problem. 497 00:20:00,780 --> 00:20:04,640 Idź do cs50.net/discuss, pisać tam, a jeden z naszych nauczania 498 00:20:04,640 --> 00:20:07,270 Stypendyści będą albo odebrać je w formie elektronicznej lub podnieść ich 499 00:20:07,270 --> 00:20:10,620 ręka w Twoim imieniu anonimowo zapytać, w zależności 500 00:20:10,620 --> 00:20:12,470 od charakteru pytanie. 501 00:20:12,470 --> 00:20:15,000 Oraz w odniesieniu do razie, będzie ogólnie psets 502 00:20:15,000 --> 00:20:16,760 zwrócone w ciągu tygodnia. 503 00:20:16,760 --> 00:20:19,080 Bo to zajmuje trochę czasu na sekcje w celu osiągnięcia 504 00:20:19,080 --> 00:20:22,430 Równowaga, pierwszy zbior, 0 i 1, będzie trochę 505 00:20:22,430 --> 00:20:24,130 opóźnione rzeczy ustatkować. 506 00:20:24,130 --> 00:20:27,130 Ale stay tuned, że w najbliższych tygodniach. 507 00:20:27,130 --> 00:20:29,750 >> W porządku, więc założę na moje poważne 508 00:20:29,750 --> 00:20:31,040 głos na chwilę. 509 00:20:31,040 --> 00:20:32,690 Więc to jest rzeczywiście ciekawy klimat się 510 00:20:32,690 --> 00:20:35,210 o tej dyskusji, co z wszystkie innymi 511 00:20:35,210 --> 00:20:37,310 dzieje się na terenie kampusu z nimi związane. 512 00:20:37,310 --> 00:20:40,220 Ale CS50 pewnością miał swoją historię tej szczególnej 513 00:20:40,220 --> 00:20:43,360 temat, w zakresie, w każdym roku, to oczywiście, dla wielu 514 00:20:43,360 --> 00:20:46,910 roku, AD-Boards przybliżeniu 3% klasy. 515 00:20:46,910 --> 00:20:51,620 To ostatni rok, 2011, CS50 Ad-wsiadł 35 uczniów. 516 00:20:51,620 --> 00:20:54,120 To nie jest, jak sądzę, ze względu na brak przejrzystości. 517 00:20:54,120 --> 00:20:56,760 Sobie sprawę, że w trakcie jego nauczania, jest strona 518 00:20:56,760 --> 00:20:59,020 oświadczenie wyjaśniające, gdzie linie są. 519 00:20:59,020 --> 00:21:01,350 To samo stwierdzenie jest powtarzany na każdym z 520 00:21:01,350 --> 00:21:03,070 Problem przedstawia na pierwszej stronie. 521 00:21:03,070 --> 00:21:05,760 >> Tak wspominam to dzisiaj tak naprawdę do 522 00:21:05,760 --> 00:21:07,030 ludzie Świadoma tego. 523 00:21:07,030 --> 00:21:08,080 I próbowaliśmy różnych rzeczy. 524 00:21:08,080 --> 00:21:10,630 I co myślałem, że my dzisiaj jest tylko przez chwilę 525 00:21:10,630 --> 00:21:13,830 faktycznie spojrzeć na niektóre z ostatnich spraw, które pojawią się. 526 00:21:13,830 --> 00:21:16,160 Zamiast trzymać je jako brudne tajemnice, właściwie 527 00:21:16,160 --> 00:21:19,170 wskazać, co uczniowie zrobili i jak wykryliśmy 528 00:21:19,170 --> 00:21:21,630 to i naprawdę to, co jest dla nadrzędną motywacją 529 00:21:21,630 --> 00:21:23,950 nawet o tym rozmawiać. 530 00:21:23,950 --> 00:21:27,060 Więc z tym powiedział, linia zasadniczo jest to - 531 00:21:27,060 --> 00:21:29,200 za program nauczania, jesteś mile widziany, zachęcamy do 532 00:21:29,200 --> 00:21:30,210 rozmawiać z kolegami. 533 00:21:30,210 --> 00:21:31,910 To cały sens posiadania ich współpracy 534 00:21:31,910 --> 00:21:34,470 godziny urzędowania w Annenberg i zachęcanie ludzi do 535 00:21:34,470 --> 00:21:35,755 Ostateczny projekt do współpracy. 536 00:21:35,755 --> 00:21:38,590 Ale linia wytyczona jest, gdy przychodzi czas, aby faktycznie napisać 537 00:21:38,590 --> 00:21:39,790 Twoje ostateczne rozwiązanie. 538 00:21:39,790 --> 00:21:42,590 Mówiąc po angielsku, całkowicie w porządku, mówiąc w pseudokodzie, 539 00:21:42,590 --> 00:21:43,400 całkowicie w porządku. 540 00:21:43,400 --> 00:21:46,340 Wysyłanie kolegą swoją PSET, pozwalając im spojrzeć na 541 00:21:46,340 --> 00:21:48,610 ekran jak ręce kontynuować wpisywanie 542 00:21:48,610 --> 00:21:50,110 na linii, jak również. 543 00:21:50,110 --> 00:21:52,250 Nie patrzeć w programie nauczania dla poszczególnych linii. 544 00:21:52,250 --> 00:21:55,850 >> Ale tylko do namalowania obrazu, jak to jest niestety 545 00:21:55,850 --> 00:21:58,370 rzeczywistość, uświadomić sobie, że istnieją strony internetowe, które obecnie nie 546 00:21:58,370 --> 00:22:01,490 mają rozwiązania z tej klasy i wiele innych grup. 547 00:22:01,490 --> 00:22:04,940 Fakt, że ty lub około 3% z was wie, że istnieje 548 00:22:04,940 --> 00:22:07,240 Oznacza to, że wiemy, że to istnieje. 549 00:22:07,240 --> 00:22:09,340 Fakt, że istnieją strony internetowe, jak to, w którym 550 00:22:09,340 --> 00:22:11,540 można zapłacić komuś faktycznie swoje zestawy problemowe - to było 551 00:22:11,540 --> 00:22:13,450 rzeczywisty przypadek, że przyszedł w zeszłym roku. 552 00:22:13,450 --> 00:22:15,790 Jest to strona o nazwie odesk.com. 553 00:22:15,790 --> 00:22:20,090 I Tim nazwisko osoby o zamieszczenie na który 554 00:22:20,090 --> 00:22:24,580 tej stronie i poprosił kogoś zrobić jego Pset 7 w 555 00:22:24,580 --> 00:22:25,570 tym konkretnym przypadku. 556 00:22:25,570 --> 00:22:28,350 Cóż, jest bardzo odesk.com Google-stanie, i my też jesteśmy 557 00:22:28,350 --> 00:22:30,310 bardzo dobry w Googling. 558 00:22:30,310 --> 00:22:32,360 Tutaj też znajdują się strony - i ten jest raczej 559 00:22:32,360 --> 00:22:34,234 okropna, szczerze mówiąc. 560 00:22:34,234 --> 00:22:38,050 [Śmiech] 561 00:22:38,050 --> 00:22:39,610 DAVID J. Malan: Zabawne o tej stronie jest, jeśli 562 00:22:39,610 --> 00:22:41,970 przeczytać O stronę, mówią o swoich korporacyjnych 563 00:22:41,970 --> 00:22:44,390 obsługa klienta kultura i jaki jest ich numer jeden 564 00:22:44,390 --> 00:22:46,190 priorytetem, aby upewnić się, że przydziały dostać 565 00:22:46,190 --> 00:22:47,890 odwrócił się na czas. 566 00:22:47,890 --> 00:22:50,580 >> Ale z całą powagą, ponownie, na fakt, że te strony 567 00:22:50,580 --> 00:22:52,910 istnieje, uświadomiliśmy sobie, że też są świadomi 568 00:22:52,910 --> 00:22:53,730 tego rodzaju stron. 569 00:22:53,730 --> 00:22:55,890 I dać poczucie tego, co tworzy to generalnie 570 00:22:55,890 --> 00:22:58,570 wykonuje, na ogół nie ma wielkich afer, w których ludzie 571 00:22:58,570 --> 00:23:01,080 współpracują na każdym rodzaju masową skalę, ale raczej 572 00:23:01,080 --> 00:23:04,540 to te nocnych chwile słabości, gdy masz tak 573 00:23:04,540 --> 00:23:07,550 wiele do zrobienia, jest 04:00, jesteś wyczerpany, a 574 00:23:07,550 --> 00:23:09,770 myślisz sobie, dobrze, niech mi tylko spojrzeć na moją 575 00:23:09,770 --> 00:23:11,770 współlokator męskie lub mój przyjaciel kod lub jak. 576 00:23:11,770 --> 00:23:14,800 I przejawy to niestety wiąże Studenta 577 00:23:14,800 --> 00:23:17,640 Składania coś takiego i składania student B 578 00:23:17,640 --> 00:23:20,370 coś w tym, co z pewnością w komputerze 579 00:23:20,370 --> 00:23:23,830 Klasa nauka, jest niezwykle prosty dla informatyków 580 00:23:23,830 --> 00:23:25,690 do wykrycia, z oprogramowaniem. 581 00:23:25,690 --> 00:23:28,410 Jest to kolejny wspólny paradygmat, gdzie masz coś w rodzaju 582 00:23:28,410 --> 00:23:31,010 pracował u boku kogoś, może mówić w 583 00:23:31,010 --> 00:23:32,360 Angielski, dobrze, pseudokod. 584 00:23:32,360 --> 00:23:35,080 Ale potem przychodzi czas, aby faktycznie przesłać, a psets 585 00:23:35,080 --> 00:23:37,910 tylko dostać wymieniane za pośrednictwem poczty elektronicznej lub Dropbox lub podobnych. 586 00:23:37,910 --> 00:23:41,120 Jednak w celu uczynienia go mniej oczywiste, że jest to 587 00:23:41,120 --> 00:23:44,830 co się stało, to jest to, co jest przekazywane. 588 00:23:44,830 --> 00:23:47,880 To też nie potknąć się dobrze napisane kawałki robi 589 00:23:47,880 --> 00:23:50,360 oprogramowanie jak mamy faktycznie wykryć 590 00:23:50,360 --> 00:23:51,280 tego rodzaju rzeczy. 591 00:23:51,280 --> 00:23:53,760 I rzeczywiście, to, co możemy zrobić, to uruchomić program, który porównuje wszystkie 592 00:23:53,760 --> 00:23:55,540 Tegoroczne wnioski przeciwko wszystkim przeszłość tegorocznej 593 00:23:55,540 --> 00:23:57,380 Zgłoszenia, przed wszystkim, co znajduje się na 594 00:23:57,380 --> 00:24:00,060 Internet, przeciwko każdej stronie pracy tam. 595 00:24:00,060 --> 00:24:01,710 To wszystko jest bardzo zautomatyzowane. 596 00:24:01,710 --> 00:24:05,665 I tak naprawdę to zrobić w wielkiej uczciwości do 97% osób, które 597 00:24:05,665 --> 00:24:07,760 naprawdę działa ich osłów off w tym i innych 598 00:24:07,760 --> 00:24:11,530 Klasy i wprowadzenie wszystkich tych wysiłków, tak aby praca 599 00:24:11,530 --> 00:24:13,030 ostatecznie przedstawić jest ich własne. 600 00:24:13,030 --> 00:24:14,220 I mogę iść na wieki. 601 00:24:14,220 --> 00:24:16,030 >> To tylko garść zeszłorocznych przypadków. 602 00:24:16,030 --> 00:24:19,350 Kilka uczniów przekazywane te pliki identycznie dla Pset 2, 603 00:24:19,350 --> 00:24:22,460 pset 3, pset 4, pset 5, pset 6, pset 9. 604 00:24:22,460 --> 00:24:26,360 W tym przypadku, to Quiz 0 i w ubiegłym roku, w którym dwa 605 00:24:26,360 --> 00:24:29,570 Uczniowie składać identycznie to zdanie wśród wielu 606 00:24:29,570 --> 00:24:32,210 inni, "Żądanie typu -" kropka, kropka, kropka. 607 00:24:32,210 --> 00:24:34,530 Tak więc nawet w klasie 600 zrobiliśmy to wykryć 608 00:24:34,530 --> 00:24:36,310 na złożone quizy. 609 00:24:36,310 --> 00:24:39,080 Tak w skrócie, to - szczerze mówiąc, Nienawidzę tego rodzaju 610 00:24:39,080 --> 00:24:41,300 rozmowę - ale to jest naprawdę świadomego wysiłku 611 00:24:41,300 --> 00:24:43,540 w tym roku, aby spróbować obniżyć tę liczbę. 612 00:24:43,540 --> 00:24:45,650 Bo mimo, że mówią, że te różne rzeczy, co 613 00:24:45,650 --> 00:24:48,100 roku, myślę, że rzeczywistość mieszkał które na nią za mało 614 00:24:48,100 --> 00:24:50,800 więcej sekund niż zwykle, a właściwie tylko wskazanie 615 00:24:50,800 --> 00:24:53,600 że to, co może wydawać się, eh, nie taki układ dużym, co najmniej 616 00:24:53,600 --> 00:24:56,390 wracam do tej szczególnej chwili, zarówno w sprawiedliwości, aby 617 00:24:56,390 --> 00:25:00,100 siebie i do swoich kolegów tutaj. 618 00:25:00,100 --> 00:25:02,480 Więc jeśli kiedykolwiek jakieś pytania co do tego, gdzie linia 619 00:25:02,480 --> 00:25:04,290 jest, proszę po prostu dotrzeć do mnie osobiście. 620 00:25:04,290 --> 00:25:07,190 Ale odpowiedź jest zawsze, całkowicie zestresowani 621 00:25:07,190 --> 00:25:09,090 last minute, gotówka w późnym dni. 622 00:25:09,090 --> 00:25:11,080 Lub jeśli jest to kwestia nie mając żadnych późnych dni, 623 00:25:11,080 --> 00:25:12,900 szczerze, napisz do mnie osobiście. 624 00:25:12,900 --> 00:25:14,110 Dowiemy coś. 625 00:25:14,110 --> 00:25:17,480 Proszę nie wkładać swój czas tutaj na Harvardzie na ryzyko. 626 00:25:17,480 --> 00:25:18,570 >> Teraz, że powinniśmy rozjaśnić nastrój, więc 627 00:25:18,570 --> 00:25:20,264 zawiera to jako następnego slajdu. 628 00:25:20,264 --> 00:25:22,770 [Śmiech] 629 00:25:22,770 --> 00:25:23,630 DAVID J. Malan: Ta strona była świetna. 630 00:25:23,630 --> 00:25:24,820 I rzeczywiście trochę się rozprasza. 631 00:25:24,820 --> 00:25:26,330 Jest taki jeden. 632 00:25:26,330 --> 00:25:29,590 A potem ten był niesamowity. 633 00:25:29,590 --> 00:25:35,190 Ok, więc myślę o tym kociakiem późno w nocy przy podejmowaniu 634 00:25:35,190 --> 00:25:36,040 tych decyzji. 635 00:25:36,040 --> 00:25:40,110 W porządku, więc powrót do więcej zabawy i mniej poważne rzeczy, jak 636 00:25:40,110 --> 00:25:40,780 warunki. 637 00:25:40,780 --> 00:25:43,900 >> W porządku, więc rozmawialiśmy krótko o nich. 638 00:25:43,900 --> 00:25:46,080 To jest coś, to jest to chyba dość dobrze zaznajomieni z 639 00:25:46,080 --> 00:25:47,260 Świat Scratch. 640 00:25:47,260 --> 00:25:49,860 A w świecie Scratch, mamy taką potrzebę czasem 641 00:25:49,860 --> 00:25:51,110 iść zrobić widły w drodze. 642 00:25:51,110 --> 00:25:54,840 Albo zrobić to czy tamto czy to coś innego tutaj. 643 00:25:54,840 --> 00:25:58,990 I kiedy chcesz to zrobić, możemy użyć w C teraz, to jeśli 644 00:25:58,990 --> 00:26:00,860 else konstruować. 645 00:26:00,860 --> 00:26:06,420 A potem mamy tutaj wyrażeń logicznych. 646 00:26:06,420 --> 00:26:09,260 Na przykład, wyrażenia logiczne tutaj możemy OR 647 00:26:09,260 --> 00:26:12,260 je razem, w tym sensie, że mamy ten warunek OR 648 00:26:12,260 --> 00:26:13,200 warunek. 649 00:26:13,200 --> 00:26:15,100 Możemy i je razem, w tym sensie, że chcemy 650 00:26:15,100 --> 00:26:17,710 sprawdzić ten warunek, oraz że stan. 651 00:26:17,710 --> 00:26:22,440 I tu mamy instrukcji switch teraz, co nie jest tak 652 00:26:22,440 --> 00:26:26,040 składniowo podobne do takich warunków, ale 653 00:26:26,040 --> 00:26:30,160 pozwala nam na odpowiednik if, else if, else if, else 654 00:26:30,160 --> 00:26:34,990 Jeśli, jak i, po prostu przez przypadek wyliczanie ich przypadku 655 00:26:34,990 --> 00:26:36,670 przez każdego przypadku. 656 00:26:36,670 --> 00:26:38,370 Więc widzieliśmy te ostatni raz. 657 00:26:38,370 --> 00:26:40,430 A potem zaczęliśmy dotyka rzeczy jak pętle. 658 00:26:40,430 --> 00:26:42,070 Widzieliśmy jeden z nich po prostu chwilą. 659 00:26:42,070 --> 00:26:44,180 Ale są te inne pętle. 660 00:26:44,180 --> 00:26:46,370 >> Na przykład, tym tutaj. 661 00:26:46,370 --> 00:26:50,140 Tak while (warunek), zrobić to ponownie i ponownie. 662 00:26:50,140 --> 00:26:53,070 Więc zasadniczo, co wydaje się być inaczej między tym 663 00:26:53,070 --> 00:26:55,760 dla pętli i ta pętla a tu? 664 00:27:00,810 --> 00:27:05,045 To na tej pętli i pętla while. 665 00:27:05,045 --> 00:27:07,840 Tak? 666 00:27:07,840 --> 00:27:08,800 Co to jest? 667 00:27:08,800 --> 00:27:10,050 PUBLICZNOŚCI: [niesłyszalne]. 668 00:27:14,632 --> 00:27:15,120 DAVID J. Malan: Dobrze. 669 00:27:15,120 --> 00:27:17,130 Tak więc mając na uwadze do warunku pętli, jest wyraźnie 670 00:27:17,130 --> 00:27:17,940 więcej składni. 671 00:27:17,940 --> 00:27:20,560 Jest to inicjalizacja, jest ta aktualizacja. 672 00:27:20,560 --> 00:27:23,820 W pętli while, jest tylko ten warunek. 673 00:27:23,820 --> 00:27:26,630 Tak więc wydaje się, że jest to trochę pominięto w porównaniu do 674 00:27:26,630 --> 00:27:28,770 pętli abonenckiej, co oznacza, że ​​jeśli chcemy mieć zmienne i chcemy 675 00:27:28,770 --> 00:27:30,800 mieć inkrementacja, faktycznie trzeba 676 00:27:30,800 --> 00:27:32,500 zrobić to sami. 677 00:27:32,500 --> 00:27:34,420 >> Więc pozwól mi iść do przodu i otworzyć gedit. 678 00:27:34,420 --> 00:27:36,320 Pozwól mi przełączyć na urządzenie. 679 00:27:36,320 --> 00:27:38,110 I niech po prostu zrobić szybki mały przykład, że 680 00:27:38,110 --> 00:27:40,550 Jednym z nich różni się od innych. 681 00:27:40,550 --> 00:27:42,490 A w mojej głowie tutaj, powinienem powiedzieć jedną rzecz. 682 00:27:42,490 --> 00:27:44,120 I wyraźnie wymienione nazwisko Tima. 683 00:27:44,120 --> 00:27:47,740 Tim był rzeczywiście ktoś, że student próbował znaleźć zrobić 684 00:27:47,740 --> 00:27:48,680 odrabianiu lekcji dla nich. 685 00:27:48,680 --> 00:27:51,280 Nie mieliśmy w tym szczególnym Tima sekcji. 686 00:27:51,280 --> 00:27:53,690 Więc uświadomić sobie, abym nie ujawniono studenta, to nie był studentem. 687 00:27:53,690 --> 00:27:55,720 To był przypadkowy człowiek w internecie robi rzeczy 688 00:27:55,720 --> 00:27:57,180 przez pełnomocnika w roku ubiegłym. 689 00:27:57,180 --> 00:27:58,670 Tak więc okazuje się, że też. 690 00:27:58,670 --> 00:28:00,630 Więc w tym przypadku tutaj, pozwól mi iść do przodu i 691 00:28:00,630 --> 00:28:02,810 otworzyć nowy plik. 692 00:28:02,810 --> 00:28:04,800 Plik, Nowy. 693 00:28:04,800 --> 00:28:06,050 To daje mi kartę tutaj. 694 00:28:06,050 --> 00:28:09,940 Pozwólcie mi iść do przodu i zapisać go jako loop.c. 695 00:28:09,940 --> 00:28:11,810 Pozwól mi iść i kliknij Zapisz. 696 00:28:11,810 --> 00:28:15,340 A potem na dół, idziemy do przodu i zacząć pisać 697 00:28:15,340 --> 00:28:16,605 # Include. 698 00:28:19,116 --> 00:28:20,520 Pozwól mi powiększyć 699 00:28:20,520 --> 00:28:23,410 Teraz zrobimy int main (void). 700 00:28:23,410 --> 00:28:30,020 Teraz pozwól mi iść dalej i zrobić for (int i = 0; i < 701 00:28:30,020 --> 00:28:33,480 oh, 10, i + +). 702 00:28:33,480 --> 00:28:36,620 I teraz mam zamiar iść do przodu i są drukowane na gwiazdkę, że 703 00:28:36,620 --> 00:28:37,890 robiliśmy wcześniej. 704 00:28:37,890 --> 00:28:39,390 A następnie pod koniec tego programu, po prostu będzie 705 00:28:39,390 --> 00:28:41,130 wydrukować nowy wiersz, po prostu tak, że moje polecenia 706 00:28:41,130 --> 00:28:42,470 nie wygląda cały bałagan. 707 00:28:42,470 --> 00:28:45,170 powrót 0. 708 00:28:45,170 --> 00:28:47,610 Wydaje syntaktycznie poprawne? 709 00:28:47,610 --> 00:28:48,040 Tak daleko. 710 00:28:48,040 --> 00:28:48,560 Zobaczmy więc. 711 00:28:48,560 --> 00:28:51,290 >> Więc pozwól mi pomniejszyć, idź do mojego okna terminala. 712 00:28:51,290 --> 00:28:54,570 I pozwól mi iść dalej i uruchomić pętlę, bo nazwał to 713 00:28:54,570 --> 00:28:55,690 loop.c. rzeczą 714 00:28:55,690 --> 00:28:56,780 Więc zrób pętlę. 715 00:28:56,780 --> 00:28:57,840 Wydaje się skompilować OK. 716 00:28:57,840 --> 00:29:00,210 Pozwól uruchomić pętlę, a teraz Enter. 717 00:29:00,210 --> 00:29:01,820 I wydaje się, że drukowane 10 gwiazd. 718 00:29:01,820 --> 00:29:03,780 Więc po prostu przekonwertować to do pętli while i zobaczyć, co 719 00:29:03,780 --> 00:29:05,220 rodzaju kwestiach się potknąć. 720 00:29:05,220 --> 00:29:11,290 Więc zamiast tego, pozwól mi iść tutaj i powiedzieć, a ja to 721 00:29:11,290 --> 00:29:12,760 mniej niż 10 - 722 00:29:12,760 --> 00:29:14,910 pozwól mi pozbyć pętli for. 723 00:29:14,910 --> 00:29:17,170 OK, więc mamy kilka problemów już. 724 00:29:17,170 --> 00:29:21,110 Tak więc stan jest taki sam, ale jestem oczywiście brakuje 725 00:29:21,110 --> 00:29:21,680 inicjalizacji. 726 00:29:21,680 --> 00:29:23,840 Jestem brakuje inkrementacja. 727 00:29:23,840 --> 00:29:28,020 Więc co należy kompilator może mi powiedzieć, kiedy próbuję 728 00:29:28,020 --> 00:29:29,170 skompilować ten program? 729 00:29:29,170 --> 00:29:29,666 Tak? 730 00:29:29,666 --> 00:29:31,154 PUBLICZNOŚCI: [niesłyszalne]. 731 00:29:31,154 --> 00:29:31,650 >> DAVID J. Malan: Dobrze. 732 00:29:31,650 --> 00:29:34,180 Więc to będzie powiedzieć coś nierejestrowanej - w tym 733 00:29:34,180 --> 00:29:35,280 przypadku zmiennej i. 734 00:29:35,280 --> 00:29:37,980 I rzeczywiście, korzystanie z nielegalnej identyfikator i. 735 00:29:37,980 --> 00:29:40,960 I tak to jest, w przeciwieństwie do języków takich jak PHP i 736 00:29:40,960 --> 00:29:43,120 Python i Ruby, z którym niektórzy z was mogą znać, 737 00:29:43,120 --> 00:29:44,820 , gdzie można po prostu rodzaj startu za pomocą zmiennych 738 00:29:44,820 --> 00:29:47,420 chcąc nie chcąc i nie trzeba się martwić o ich zgłaszania 739 00:29:47,420 --> 00:29:48,560 wyraźnie zawsze. 740 00:29:48,560 --> 00:29:51,770 W C i językach takich jak Java i C + +, trzeba być 741 00:29:51,770 --> 00:29:53,020 bardzo wyraźne. 742 00:29:53,020 --> 00:29:55,760 A jeśli chcesz zmienną o nazwie i, musisz mi powiedzieć, 743 00:29:55,760 --> 00:29:57,360 jakie zmienną jest. 744 00:29:57,360 --> 00:29:59,360 Więc będziemy musieli to naprawić w następujący sposób. 745 00:29:59,360 --> 00:30:05,510 Będę musiał przejść tutaj i wpisz int i, w związku z 746 00:30:05,510 --> 00:30:07,860 I zadeklarowały zmienną o nazwie i. 747 00:30:07,860 --> 00:30:09,180 Teraz, mam opuścić jeden krok. 748 00:30:09,180 --> 00:30:11,340 Ja oczywiście nie zainicjowany, ale zobaczymy, czy to w 749 00:30:11,340 --> 00:30:13,650 najmniej Clang marki przestań narzekać. 750 00:30:13,650 --> 00:30:15,770 Więc pozwól mi przerobić ten program. 751 00:30:15,770 --> 00:30:16,770 >> Dobra, teraz to tylko narzekać 752 00:30:16,770 --> 00:30:17,870 z innego powodu. 753 00:30:17,870 --> 00:30:21,130 "Zmienna" i "jest niezainicjowana stosowany tutaj." W porządku, więc 754 00:30:21,130 --> 00:30:22,340 to dość wyraźne. 755 00:30:22,340 --> 00:30:25,510 Zainicjowany po prostu oznacza ustawienie go równy wartości. 756 00:30:25,510 --> 00:30:30,820 I nie zrobisz, więc pozwól mi spróbować równa 0. 757 00:30:30,820 --> 00:30:35,030 Teraz spróbujmy jeszcze raz i ponownie uruchomić Clang. 758 00:30:35,030 --> 00:30:36,140 Zestawione ten czas. 759 00:30:36,140 --> 00:30:37,210 I mam zamiar go uruchomić. 760 00:30:37,210 --> 00:30:43,120 Ale wielka stara pętla nieskończona, bo robiłem 761 00:30:43,120 --> 00:30:45,530 inicjalizacji, zrobiłem stan, ale nigdy nie robiłem 762 00:30:45,530 --> 00:30:47,030 każdy rodzaj inkrementacja. 763 00:30:47,030 --> 00:30:48,780 Więc jak mogę zrobić Inkrementowanie? 764 00:30:48,780 --> 00:30:51,170 Cóż, w pętli while, to czuje się jak będę mieć 765 00:30:51,170 --> 00:30:54,180 to zrobić wewnątrz pętli, ponieważ podobnie jak pierwszy 766 00:30:54,180 --> 00:30:56,570 tygodniowo przykłady robi pętle, jak z 767 00:30:56,570 --> 00:30:59,040 skarpetki i samo-liczenia, co mieliśmy do zrobienia 768 00:30:59,040 --> 00:31:01,550 coś na samym końcu, jak wrócić do następnej linii. 769 00:31:01,550 --> 00:31:05,040 Co zrobić, jeśli iść dalej i zrobić to i + + tutaj? 770 00:31:05,040 --> 00:31:06,030 Niech nawet nie skompilować. 771 00:31:06,030 --> 00:31:06,890 Złap mnie już. 772 00:31:06,890 --> 00:31:09,704 Co jest źle? 773 00:31:09,704 --> 00:31:10,690 PUBLICZNOŚCI: [niesłyszalne]. 774 00:31:10,690 --> 00:31:11,770 >> DAVID J. Malan: Więc to na pewno nie jest int. 775 00:31:11,770 --> 00:31:13,080 To ja. 776 00:31:13,080 --> 00:31:15,110 I nawiasy klamrowe, tak jak wcześniej, 777 00:31:15,110 --> 00:31:16,800 wcięcia nie wystarczy. 778 00:31:16,800 --> 00:31:18,410 Więc teraz mam to budować. 779 00:31:18,410 --> 00:31:21,780 Tak więc, i jest mniejsze niż 10, należy wydrukować gwiazdę, 780 00:31:21,780 --> 00:31:23,220 potem inkrementacja i. 781 00:31:23,220 --> 00:31:25,680 A sposób, podczas gdy prace pętli jest to, że tak szybko, jak trafisz 782 00:31:25,680 --> 00:31:29,630 dolnej pętli, która w tym przypadku przewód 10 wygląda, 783 00:31:29,630 --> 00:31:32,880 to będzie powrót do linii 6, w którym momencie 784 00:31:32,880 --> 00:31:34,400 warunek ten zostanie ponownie sprawdzane. 785 00:31:34,400 --> 00:31:37,500 I jeśli jest wciąż mniej niż 10, zrobimy linie 8 i 786 00:31:37,500 --> 00:31:41,250 potem 9, potem trafiliśmy 10, i wrócić do 6, raz 787 00:31:41,250 --> 00:31:45,580 ponownie i po raz kolejny, tak długo, jak jest poniżej 10. 788 00:31:45,580 --> 00:31:47,860 Więc ponownie uruchomić się tutaj. 789 00:31:47,860 --> 00:31:48,940 >> Okay, mamy opracowane w porządku. 790 00:31:48,940 --> 00:31:50,300 Pozwól, że re-run pętli. 791 00:31:50,300 --> 00:31:52,620 A teraz to faktycznie wydaje się działać. 792 00:31:52,620 --> 00:31:55,100 Więc plusy i minusy tutaj? 793 00:31:55,100 --> 00:31:58,910 Cóż, do tej pory nie ma tam właściwie cała plo - 794 00:31:58,910 --> 00:31:59,420 so cute. 795 00:31:59,420 --> 00:32:01,870 Dobrze, że był - ach, to był wypadek. 796 00:32:01,870 --> 00:32:05,200 Dobra, wróćmy do pętli for. 797 00:32:05,200 --> 00:32:07,530 Więc na pętli są ładne, bo są bardzo wyraźne. 798 00:32:07,530 --> 00:32:09,720 I mimo, że są trochę niezgrabne do napisania, to 799 00:32:09,720 --> 00:32:11,500 bardzo mocny i pozwala zrobić 800 00:32:11,500 --> 00:32:12,980 wiele rzeczy na raz. 801 00:32:12,980 --> 00:32:16,240 Podczas okrążenia nie wydają się mieć ogromną ilość wartości tylko 802 00:32:16,240 --> 00:32:18,500 jeszcze, bo czuję, że po prostu trzeba zrobić więcej pracy. 803 00:32:18,500 --> 00:32:20,670 Musimy umieścić inicjalizacji tu, 804 00:32:20,670 --> 00:32:23,480 aktualizować i tutaj, a musimy pamiętać, aby zrobić to wszystko. 805 00:32:23,480 --> 00:32:26,260 Więc zobaczymy w czasie okrążenia, podczas gdy faktycznie pożyczyć 806 00:32:26,260 --> 00:32:29,380 się do niemal różnych kontekstach, różnych danych 807 00:32:29,380 --> 00:32:33,900 struktury, jak list i tabel hash, rzeczy, my się do 808 00:32:33,900 --> 00:32:34,970 w połowie semestru. 809 00:32:34,970 --> 00:32:37,900 Ale teraz wiem, że to jest trzeci typ znany jako do- 810 00:32:37,900 --> 00:32:38,480 while. 811 00:32:38,480 --> 00:32:39,540 I widzieliśmy to krótko. 812 00:32:39,540 --> 00:32:41,830 I to może być bardzo pomocna w PSET 1. 813 00:32:41,830 --> 00:32:45,570 Każdym razem, gdy chcesz coś zrobić, a potem sprawdzić, czy 814 00:32:45,570 --> 00:32:48,940 użytkownik współpracował, a jeśli nie, to jeszcze raz, do- 815 00:32:48,940 --> 00:32:51,460 while nadaje się do tego rodzaju logiki. 816 00:32:51,460 --> 00:32:55,640 Ponieważ jako zamówienia z góry do dołu, o sugeruje 817 00:32:55,640 --> 00:32:57,750 nie dosłownie oznacza to zrobić. 818 00:32:57,750 --> 00:32:59,830 I zrobić to po raz kolejny, co może być? 819 00:32:59,830 --> 00:33:03,000 Może to znaczy, wzywającą getInt lub getString a następnie 820 00:33:03,000 --> 00:33:05,830 sprawdzając wartość getInt lub getString i krzyczy 821 00:33:05,830 --> 00:33:08,260 na użytkownika, jeżeli nie współpracowała, prosząc ich 822 00:33:08,260 --> 00:33:10,100 znowu i znowu i znowu. 823 00:33:10,100 --> 00:33:11,730 W którym chcesz zrobić coś raz, 824 00:33:11,730 --> 00:33:13,210 następnie sprawdzić jakiś warunek. 825 00:33:13,210 --> 00:33:14,110 >> Warto więc spróbować. 826 00:33:14,110 --> 00:33:17,130 Pozwól, że faktycznie to zmienić teraz do-while pętli. 827 00:33:17,130 --> 00:33:18,830 I mam zamiar iść do przodu i wykonaj następujące czynności. 828 00:33:18,830 --> 00:33:21,830 Więc wykonaj następujące czynności. 829 00:33:21,830 --> 00:33:26,870 Zróbmy int i getInt = (), ale niech najpierw powiedzieć użytkownikowi 830 00:33:26,870 --> 00:33:27,410 co robić. 831 00:33:27,410 --> 00:33:29,050 Więc trochę inny. 832 00:33:29,050 --> 00:33:31,270 "Daj mi int". 833 00:33:31,270 --> 00:33:32,910 Więc będę używać printf za to. 834 00:33:32,910 --> 00:33:35,740 I teraz mam zamiar iść w dół, a ja zamierzam to zrobić 835 00:33:35,740 --> 00:33:41,520 a ja to, powiedzmy, powyżej - 836 00:33:41,520 --> 00:33:47,540 Zobaczmy, i jest, powiedzmy, mniej niż 0 lub i jest 837 00:33:47,540 --> 00:33:48,730 większy niż 10. 838 00:33:48,730 --> 00:33:51,810 Innymi słowy, chcę liczbę od 1 do 9, po prostu 839 00:33:51,810 --> 00:33:52,720 arbitralnie. 840 00:33:52,720 --> 00:33:55,290 Więc używam łączny wyrażenie logiczne, żeby 841 00:33:55,290 --> 00:33:59,930 mieć pewność, że jest mniejszy niż 0 i większa od 10, w którym 842 00:33:59,930 --> 00:34:02,530 sprawa będzie zrobić pętlę tutaj ponownie. 843 00:34:02,530 --> 00:34:04,400 Więc znowu, to zrobić - 844 00:34:04,400 --> 00:34:08,480 a i jest mniejszy niż 0 i i jest większa od 10. 845 00:34:08,480 --> 00:34:11,440 >> Więc teraz idziemy do przodu i zrobić to raz zrobiliśmy to. 846 00:34:11,440 --> 00:34:13,270 Zróbmy szybki test normalności. 847 00:34:13,270 --> 00:34:18,929 printf ("Dzięki, i jest% d", i). 848 00:34:18,929 --> 00:34:21,350 Więc to prosty program pyta użytkownika o int, 849 00:34:21,350 --> 00:34:24,000 zapewnia, że ​​to w ramach jakiegoś przedziału od 1 do 9 włącznie, 850 00:34:24,000 --> 00:34:26,280 a następnie dzięki instrukcji, przypominając im, co tylko 851 00:34:26,280 --> 00:34:27,940 wpisany, po prostu jak małe kontroli rozsądku. 852 00:34:27,940 --> 00:34:30,659 Ale zobaczymy, czy to działa w sposób zamierzony. 853 00:34:30,659 --> 00:34:34,533 Puść mnie głową na dół i ponownie uruchomić zrobić pętlę. 854 00:34:34,533 --> 00:34:35,350 Hmm. 855 00:34:35,350 --> 00:34:38,600 "Korzystanie z nielegalnego identyfikatora 'ja'". To dziwne. 856 00:34:38,600 --> 00:34:41,509 Myślałem, że mamy rozwiązać to. 857 00:34:45,489 --> 00:34:47,560 Sam objaw ale inny kod. 858 00:34:47,560 --> 00:34:47,899 Tak? 859 00:34:47,899 --> 00:34:50,191 PUBLICZNOŚCI: [niesłyszalne] wewnątrz dwóch, mamy do 860 00:34:50,191 --> 00:34:52,639 [Niesłyszalne]. 861 00:34:52,639 --> 00:34:53,260 >> DAVID J. Malan: Dokładnie. 862 00:34:53,260 --> 00:34:55,989 Więc to naprawdę prowadzi nas do tematu znanego jako zakres. 863 00:34:55,989 --> 00:34:59,350 Okazuje się, że C, ponownie, to naprawdę można dostać się dosłownie. 864 00:34:59,350 --> 00:35:02,970 I jeśli coś jak to zrobić, gdzie można zadeklarować int 865 00:35:02,970 --> 00:35:06,120 a następnie przypisać mu pewną wartość, ale trzeba, że ​​we wnętrzu 866 00:35:06,120 --> 00:35:09,840 Para klamrowych, co C robi to zakłada się, że 867 00:35:09,840 --> 00:35:14,800 chce tylko te 32 bity, znane jako i istnienie w 868 00:35:14,800 --> 00:35:18,200 Kontekst tych klamrach, w ramach linii 869 00:35:18,200 --> 00:35:22,420 6 do 9. Więc jest zadeklarowana i jest przypisany 870 00:35:22,420 --> 00:35:26,530 Wartość w wierszu 8, ale tak szybko, jak się na zewnątrz 871 00:35:26,530 --> 00:35:30,270 Linia 9 poniżej nawiasem klamrowym, i nie jest już w 872 00:35:30,270 --> 00:35:31,910 Zakres, że tak powiem. 873 00:35:31,910 --> 00:35:35,030 S-O-C-E-P. Nie jest już w odpowiednim kontekście. 874 00:35:35,030 --> 00:35:37,940 Więc teraz nie ma i, więc to tak, jakbyśmy nie mieli nawet 875 00:35:37,940 --> 00:35:38,770 oświadczył to w ogóle. 876 00:35:38,770 --> 00:35:41,520 >> Więc co jest fix potem na coś takiego, jeśli 877 00:35:41,520 --> 00:35:44,300 Powodem jest, że zostaną zgłoszone w ciągu nawiasy, które 878 00:35:44,300 --> 00:35:45,120 jest najwyraźniej źle? 879 00:35:45,120 --> 00:35:45,410 Tutaj? 880 00:35:45,410 --> 00:35:46,820 PUBLICZNOŚCI: [niesłyszalne]. 881 00:35:46,820 --> 00:35:47,150 DAVID J. Malan: Tak. 882 00:35:47,150 --> 00:35:48,710 Więc możemy zainicjować go na zewnątrz. 883 00:35:48,710 --> 00:35:53,530 Więc pozwól mi iść dalej i usunąć części oświadczenie, w myśl 884 00:35:53,530 --> 00:35:55,820 I określić rodzaj i pozwól mi to zrobić tutaj. 885 00:35:55,820 --> 00:36:00,220 Tak więc w wierszu 5, teraz mówi: "Daj mi int." Zadzwoń do mnie to. 886 00:36:00,220 --> 00:36:03,400 Zawiadomienie w linii 9, ja nie chcę tego robić, bo 887 00:36:03,400 --> 00:36:04,830 mają już 32 bity. 888 00:36:04,830 --> 00:36:06,140 Nie chcę, aby zapytać, czy komputer 889 00:36:06,140 --> 00:36:07,630 różne 32 bity. 890 00:36:07,630 --> 00:36:09,850 Chcę korzystać z tych samych 32 bitów. 891 00:36:09,850 --> 00:36:13,190 A teraz, ponieważ jest zadeklarowana w wierszu 5, nadal legit 892 00:36:13,190 --> 00:36:16,550 go używać w linii 11 i linii 12. 893 00:36:16,550 --> 00:36:19,310 >> Więc pozwól mi spróbować przebudować to i zobacz 894 00:36:19,310 --> 00:36:20,490 jeśli Clang przestaje krzyczeć. 895 00:36:20,490 --> 00:36:22,380 zrobić pętlę. 896 00:36:22,380 --> 00:36:25,470 Więc teraz to jest "niejawna deklaracja funkcji 897 00:36:25,470 --> 00:36:29,880 "GetInt 'jest nieprawidłowy w C99." Co to jest? 898 00:36:29,880 --> 00:36:30,400 Tak? 899 00:36:30,400 --> 00:36:32,330 PUBLICZNOŚCI: [niesłyszalne]. 900 00:36:32,330 --> 00:36:32,690 DAVID J. Malan: Tak. 901 00:36:32,690 --> 00:36:35,520 Więc teraz, że jestem rzeczywiście przy getInt, to nie jest coś, 902 00:36:35,520 --> 00:36:38,190 że po prostu przychodzi z C. pochodzi z CS50. 903 00:36:38,190 --> 00:36:39,890 Musimy więc to tutaj. 904 00:36:39,890 --> 00:36:41,450 I pozwól mi wrócić do polecenia down 905 00:36:41,450 --> 00:36:43,500 tutaj i ponownie uruchomić make. 906 00:36:43,500 --> 00:36:44,160 Ok, w końcu. 907 00:36:44,160 --> 00:36:46,270 Teraz mamy rozwiązany, że i drugi błąd. 908 00:36:46,270 --> 00:36:48,930 Chciałbym teraz uruchomić pętlę i zobaczyć co się dzieje. 909 00:36:48,930 --> 00:36:51,740 "Daj mi int." Daję mu 11. 910 00:36:51,740 --> 00:36:53,100 Dam mu -1. 911 00:36:53,100 --> 00:36:54,470 Dam mu foo. 912 00:36:54,470 --> 00:36:56,080 Dam mu 5. 913 00:36:56,080 --> 00:36:57,450 A teraz to rzeczywiście działa. 914 00:36:57,450 --> 00:36:59,410 Ale szybka zmianie z powodów tutaj. 915 00:36:59,410 --> 00:37:02,800 Dlaczego to powiedzieć, spróbuj jeden z tych razy, ale daj mi 916 00:37:02,800 --> 00:37:03,920 int pozostałe trzy razy? 917 00:37:03,920 --> 00:37:05,500 Dlaczego jest to zachowanie inaczej? 918 00:37:05,500 --> 00:37:06,980 PUBLICZNOŚCI: Dał mu łańcuch. 919 00:37:06,980 --> 00:37:07,830 DAVID J. Malan: Przepraszam? 920 00:37:07,830 --> 00:37:08,570 PUBLICZNOŚCI: Dałeś mu łańcuch. 921 00:37:08,570 --> 00:37:08,990 DAVID J. Malan: Tak. 922 00:37:08,990 --> 00:37:11,450 Więc dał mu łańcuch w tej trzeciej próbie, 923 00:37:11,450 --> 00:37:12,490 gdy wpisałem foo. 924 00:37:12,490 --> 00:37:13,200 Foo jest string. 925 00:37:13,200 --> 00:37:14,340 To oczywiście nie int. 926 00:37:14,340 --> 00:37:17,500 A sposób, w jaki CS50 wdrożyła getInt jest to, że 927 00:37:17,500 --> 00:37:20,330 nie sprawdzić, czy coś jest nie mniejsza niż 0 lub większa niż 10 928 00:37:20,330 --> 00:37:22,260 dla ciebie, bo jak wiemy z góry, jaki rodzaj 929 00:37:22,260 --> 00:37:23,130 int chcesz? 930 00:37:23,130 --> 00:37:25,880 Ale możemy minimalnie sprawdzić dla ciebie, nie instrukcji przynajmniej 931 00:37:25,880 --> 00:37:26,730 wpisz liczbę całkowitą? 932 00:37:26,730 --> 00:37:30,500 A jeśli nie, możemy krzyczeć na użytkownika, wpisując polecenie "ponów" na 933 00:37:30,500 --> 00:37:31,440 ekran. 934 00:37:31,440 --> 00:37:34,210 >> Więc teraz mamy program, który jest zapętlenie. Okay. 935 00:37:34,210 --> 00:37:37,070 Teraz, które z nich jest swego rodzaju lepszej konstrukcji? 936 00:37:37,070 --> 00:37:39,060 Tak to jest, gdy wszystko zaczyna się trochę bałagan, 937 00:37:39,060 --> 00:37:42,360 Fakt, że trzeba pamiętać, aby zadeklarować zmienną tutaj 938 00:37:42,360 --> 00:37:44,630 jeśli chcesz go używać wewnątrz niektórych 939 00:37:44,630 --> 00:37:46,460 nawiasy klamrowe i na zewnątrz. 940 00:37:46,460 --> 00:37:48,490 Ale nawet jeśli to wygląda dość tajemniczy w pierwszym 941 00:37:48,490 --> 00:37:50,750 spojrzenie, tylko raz, pamiętam prostą logikę. 942 00:37:50,750 --> 00:37:54,630 Aby korzystać z niczego w C, czy jest to funkcja lub 943 00:37:54,630 --> 00:37:57,680 jest zmienna, trzeba umieścić go, czy to funkcja 944 00:37:57,680 --> 00:37:59,770 w jakiejś bibliotece, musisz to zgłosić. 945 00:37:59,770 --> 00:38:02,405 Ale teraz musisz być bardzo świadomy tego, że 946 00:38:02,405 --> 00:38:04,940 jesteś deklarując go w odpowiednim zakresie. 947 00:38:04,940 --> 00:38:08,150 Nie jesteś wprowadzenie go zbyt mocno wewnątrz nawiasów. 948 00:38:08,150 --> 00:38:09,410 >> Więc pozwól mi rzeczywiście wycofać. 949 00:38:09,410 --> 00:38:12,660 Jeśli wrócimy do naszej np. z wcześniej i idę 950 00:38:12,660 --> 00:38:19,245 powrotem na int, int i = 0; i <10; i + +, a ja 951 00:38:19,245 --> 00:38:26,370 printf zrobić gwiazdy, takie jak to, a następnie zamknij nawias, a teraz 952 00:38:26,370 --> 00:38:30,410 printf i jest teraz - 953 00:38:30,410 --> 00:38:33,500 zgodnie z tą samą logiką, co stanie się, gdy próbuję 954 00:38:33,500 --> 00:38:35,500 skompilować ten program? 955 00:38:35,500 --> 00:38:36,790 PUBLICZNOŚCI: Nieprawidłowy identyfikator. 956 00:38:36,790 --> 00:38:38,560 DAVID J. Malan: Więc jest to kolejny nieprawidłowy identyfikator, 957 00:38:38,560 --> 00:38:39,470 niezgłoszonych identyfikator. 958 00:38:39,470 --> 00:38:41,810 Teraz powód jest trochę inny. 959 00:38:41,810 --> 00:38:44,370 Jest oczywiście nawiasy klamrowe nie tutaj, ale sama 960 00:38:44,370 --> 00:38:46,790 pomysł, sama historia z zakresu zastosowania. 961 00:38:46,790 --> 00:38:50,340 Jeśli zadeklarowana zmienna jak ja wewnątrz 962 00:38:50,340 --> 00:38:53,960 dla pętli, nawet jeśli nie zostały wyraźnie napisane kręcone 963 00:38:53,960 --> 00:38:56,980 szelki, myśleć o nich jako psychicznie wciąż jest tam, gdzie 964 00:38:56,980 --> 00:39:00,310 przypadek i jest ważna tylko wewnątrz pętli for. 965 00:39:00,310 --> 00:39:03,080 To nie jest ważne, gdy dojdziesz do następnej linii, które w 966 00:39:03,080 --> 00:39:05,090 sprawa ta jest obecnie 10. 967 00:39:05,090 --> 00:39:09,060 Więc kilka kwestie zakresu i jak. 968 00:39:09,060 --> 00:39:12,620 Wszystko w porządku, jakieś pytania? 969 00:39:12,620 --> 00:39:15,310 >> W porządku, więc jest to rodzaj trywialnym programem mało, 970 00:39:15,310 --> 00:39:17,450 drukowanie tylko małe gwiazdki. 971 00:39:17,450 --> 00:39:20,400 Ale zobaczmy, czy pamiętasz tę piosenkę tutaj. 972 00:39:20,400 --> 00:39:22,530 To niezwykle irytujące piosenki dzieci, by śpiewać 973 00:39:22,530 --> 00:39:23,550 autobus szkolny i jak. 974 00:39:23,550 --> 00:39:25,990 Ale to, co miłe jest to, że ma tę cykliczność, 975 00:39:25,990 --> 00:39:27,910 przy czym jest to "99 butelek piwa na ścianie, 976 00:39:27,910 --> 00:39:28,520 99 butelek piwa. 977 00:39:28,520 --> 00:39:31,030 Weź jeden w dół, mijamy go wokół, 98 butelek piwa na 978 00:39:31,030 --> 00:39:34,330 ściana. "I wtedy piosenka powtarza 97, potem 96, a następnie 979 00:39:34,330 --> 00:39:38,040 95, potem 94, aż w dół do 0, jeśli rzeczywiście to dostaliśmy 980 00:39:38,040 --> 00:39:38,920 daleko w autobusie. 981 00:39:38,920 --> 00:39:41,960 Więc to jest ładny program, do rodzaju narzędzia, ponieważ my 982 00:39:41,960 --> 00:39:43,650 Boże, jeśli można po prostu wdrożyć to z kilku 983 00:39:43,650 --> 00:39:46,660 linii kodu, można wypluć cały tekst do tego 984 00:39:46,660 --> 00:39:48,240 Piosenka bardzo szybko. 985 00:39:48,240 --> 00:39:50,420 Ale po drodze, możemy zacząć teraz odciąć niektóre 986 00:39:50,420 --> 00:39:52,460 tych podstawowych konstrukcji pętli, a teraz również 987 00:39:52,460 --> 00:39:55,830 wprowadzenie funkcji, które możemy napisać sami, zwracają wartości 988 00:39:55,830 --> 00:39:57,020 że mijamy się. 989 00:39:57,020 --> 00:39:58,910 Ale po pierwsze, dlaczego nie pójść dalej i wziąć nasze pięć minut 990 00:39:58,910 --> 00:39:59,320 złamać tutaj? 991 00:39:59,320 --> 00:40:01,480 A kiedy wrócimy, będziemy śpiewać tę piosenkę. 992 00:40:05,680 --> 00:40:08,760 >> Dobrze, więc jesteśmy z powrotem. 993 00:40:08,760 --> 00:40:11,850 I kiedy mówię teraz będziemy śpiewać tę piosenkę, to znaczy, 994 00:40:11,850 --> 00:40:13,250 programowo, a nie ustnie. 995 00:40:13,250 --> 00:40:19,370 Mamy tu więc beer1.c, który jest jednym realizacja tego 996 00:40:19,370 --> 00:40:20,580 szczególności piosenka. 997 00:40:20,580 --> 00:40:23,110 I żeby było jasne, dla tych, co nie znają 998 00:40:23,110 --> 00:40:24,460 ta sprawa wygląda, pozwól mi iść do przodu 999 00:40:24,460 --> 00:40:27,070 i uczynić beer1, Enter. 1000 00:40:27,070 --> 00:40:30,400 Teraz pozwól mi biegać beer1 i co zobaczymy - ile butelek 1001 00:40:30,400 --> 00:40:31,140 piwa czy będzie? 1002 00:40:31,140 --> 00:40:33,240 Będę pisać w 99, jak mówi piosenka. 1003 00:40:33,240 --> 00:40:34,040 Enter. 1004 00:40:34,040 --> 00:40:35,650 A teraz, jeśli przewijać - 1005 00:40:35,650 --> 00:40:38,280 oops - jeśli mamy przejść przez to wszystko, zobaczymy, że 1006 00:40:38,280 --> 00:40:41,350 to rzeczywiście śpiewają całą piosenkę. 1007 00:40:44,050 --> 00:40:44,540 Chwileczkę. 1008 00:40:44,540 --> 00:40:46,240 Mój pasek przewijania jest trochę pokręcić. 1009 00:40:46,240 --> 00:40:47,940 Użyjmy większe okno. 1010 00:40:47,940 --> 00:40:53,500 Więc beer1, 99, nie idziemy. 1011 00:40:53,500 --> 00:40:56,420 Mamy tu więc całą piosenkę, śpiewaną dużo szybciej 1012 00:40:56,420 --> 00:40:58,450 komputer nie mógł być przez nas. 1013 00:40:58,450 --> 00:41:00,340 Więc zauważyć jednak, cykliczny charakter tutaj. 1014 00:41:00,340 --> 00:41:03,380 Mówi 99, a potem 99, potem "wziąć jeden w dół, przesuń go 1015 00:41:03,380 --> 00:41:04,740 okolice ", a następnie 98. 1016 00:41:04,740 --> 00:41:06,640 A teraz to powtarza w kółko. 1017 00:41:06,640 --> 00:41:08,840 >> Więc to jest rzeczywiście doskonała okazja dla pewnego rodzaju 1018 00:41:08,840 --> 00:41:10,400 zapętlenie konstruować. 1019 00:41:10,400 --> 00:41:12,950 Zauważ, że jestem rodzaju cięcia róg tutaj. 1020 00:41:12,950 --> 00:41:15,960 Zauważ, że mówię "98 butelek piwa na ścianie, 1021 00:41:15,960 --> 00:41:19,010 97 butelek piwa na ścianie ", a to było tak 1022 00:41:19,010 --> 00:41:21,640 że kiedy dotrzemy do jednej butelki piwa, nie mam 1023 00:41:21,640 --> 00:41:23,300 martwić się gramatyki angielskiej. 1024 00:41:23,300 --> 00:41:25,790 Ale możemy także naprawić przy odrobinie jeśli 1025 00:41:25,790 --> 00:41:26,910 stan, być może. 1026 00:41:26,910 --> 00:41:30,110 Jeżeli liczba ta jest w liczbie pojedynczej, śmiało powiedzieć, "butelka", 1027 00:41:30,110 --> 00:41:31,840 inaczej, jeśli jest w liczbie mnogiej, np. "butelki". 1028 00:41:31,840 --> 00:41:34,150 Ale teraz jestem całkowicie cięcia że rożny. 1029 00:41:34,150 --> 00:41:35,520 Zobaczmy więc, co my tu mamy. 1030 00:41:35,520 --> 00:41:37,150 Więc mamy kilka uwag na górze. 1031 00:41:37,150 --> 00:41:39,450 Jestem w tym te dwie biblioteki, jak 1032 00:41:39,450 --> 00:41:41,140 my często było. 1033 00:41:41,140 --> 00:41:43,610 A teraz pozwól mi przejść do pierwszego 1034 00:41:43,610 --> 00:41:44,990 rzeczywiste linii kodu. 1035 00:41:44,990 --> 00:41:47,020 Linia 17 rozpoczyna main. 1036 00:41:47,020 --> 00:41:50,610 Linia 21 i 20 ma ile butelek piwa czy będzie? 1037 00:41:50,610 --> 00:41:52,060 A potem zadzwonić getInt. 1038 00:41:52,060 --> 00:41:53,800 A teraz mam trochę kontroli rozsądku. 1039 00:41:53,800 --> 00:41:57,030 >> Więc to jest konwencja, że ​​będziemy teraz rozpocząć przyjęcie do 1040 00:41:57,030 --> 00:41:59,620 bardziej rygorystycznie sprawdzać wprowadzane przez użytkownika. 1041 00:41:59,620 --> 00:42:01,710 Czasami po prostu nie chce skłonić je ponownie 1042 00:42:01,710 --> 00:42:02,630 i znowu, i znowu. 1043 00:42:02,630 --> 00:42:05,620 Jeśli użytkownik śruby i nie współpracuje, w porządku. 1044 00:42:05,620 --> 00:42:07,430 Zamknij, a po prostu nie radzić sobie z nimi. 1045 00:42:07,430 --> 00:42:08,990 A więc to, co ja tu robię. 1046 00:42:08,990 --> 00:42:12,520 Jeśli n jest mniejsza niż 1, jestem po prostu krzyczeć na użytkownika, 1047 00:42:12,520 --> 00:42:14,330 "Przykro mi, że nie ma sensu." A potem mam zamiar 1048 00:42:14,330 --> 00:42:16,650 arbitralnie powrót 1. 1049 00:42:16,650 --> 00:42:18,550 Więc jeszcze raz, jest to tylko konwencja, aby się przyzwyczaić. 1050 00:42:18,550 --> 00:42:19,850 Na razie, weź to na wiarę. 1051 00:42:19,850 --> 00:42:22,700 Ale do tej pory, zawsze byliśmy powrotu 0, ponieważ 1052 00:42:22,700 --> 00:42:25,204 mówiliśmy powrotu 0 oznacza co? 1053 00:42:25,204 --> 00:42:26,000 PUBLICZNOŚCI: Sukces. 1054 00:42:26,000 --> 00:42:27,320 DAVID J. Malan: Sukces, to wszystko. 1055 00:42:27,320 --> 00:42:29,740 Więc teraz, że mamy w końcu zaczynają myśleć o 1056 00:42:29,740 --> 00:42:31,330 sukcesy - nie- 1057 00:42:31,330 --> 00:42:33,760 innymi słowy, przypadki, warunki narożnych błąd - 1058 00:42:33,760 --> 00:42:37,520 teraz mam nieograniczoną podaż, lub przynajmniej cztery miliardy 1059 00:42:37,520 --> 00:42:39,790 możliwych rzeczy, które mogą pójść źle w moich programach. 1060 00:42:39,790 --> 00:42:42,300 I mogę zacząć przypisanie im indywidualnych numerów. 1061 00:42:42,300 --> 00:42:44,340 Teraz zazwyczaj wystarczy po prostu wrócić 1062 00:42:44,340 --> 00:42:45,730 coś innego niż 0. 1063 00:42:45,730 --> 00:42:48,040 Więc będziemy po prostu wrócić 1 teraz. 1064 00:42:48,040 --> 00:42:51,440 Ale powód do powrotu 1 jest to, że jak najszybciej powrócić 1065 00:42:51,440 --> 00:42:55,110 1, chyba, co dzieje się w pozostałej części programu? 1066 00:42:55,110 --> 00:42:55,720 Się zatrzyma. 1067 00:42:55,720 --> 00:42:56,560 To jest to. 1068 00:42:56,560 --> 00:42:59,150 Tak więc fakt, że wracam 1 jest skutecznie 1069 00:42:59,150 --> 00:43:02,950 zwarcie tego programu tak, że wykonanie 1070 00:43:02,950 --> 00:43:06,780 nic poniżej linii 27 będzie nadal wykonywany. 1071 00:43:06,780 --> 00:43:09,210 Gdy tylko główne zwrotu, jest to, że. 1072 00:43:09,210 --> 00:43:13,160 >> W porządku, więc jeśli użytkownik nie współpracują i docieramy linii 30 1073 00:43:13,160 --> 00:43:15,680 bo wpisane w słusznej ilości, tu jest mój 1074 00:43:15,680 --> 00:43:16,990 wykonanie tej piosenki. 1075 00:43:16,990 --> 00:43:19,050 Więc najpierw wydrukować znak nowej linii, tylko dla 1076 00:43:19,050 --> 00:43:19,880 estetyka. 1077 00:43:19,880 --> 00:43:21,500 Mam teraz na pętli. 1078 00:43:21,500 --> 00:43:22,930 I zauważyć robię rzeczy w nieco 1079 00:43:22,930 --> 00:43:23,880 w innym kierunku. 1080 00:43:23,880 --> 00:43:26,210 Nie mam zrobić mniejszy, nie mam zrobić + +. 1081 00:43:26,210 --> 00:43:30,660 Mogę zamiast powiedzieć zainicjowania zmiennej i, ustawić go równa 1082 00:43:30,660 --> 00:43:35,080 n, liczba użytkownik wpisze w, a następnie wykonaj następujące czynności, aby 1083 00:43:35,080 --> 00:43:39,590 długo, jak jest większe niż 0, i - 1084 00:43:39,590 --> 00:43:42,070 Gdy skończysz jeden iteracji tej pętli. 1085 00:43:42,070 --> 00:43:44,310 Tak więc możemy liczyć w dół za pomocą pętli for, jak również. 1086 00:43:44,310 --> 00:43:47,520 Teraz, to jest dość dużo tygodni jeden rzeczy teraz, z printf. 1087 00:43:47,520 --> 00:43:51,770 So print "% d butelek piwa na ścianie." Print "% d 1088 00:43:51,770 --> 00:43:54,990 butelki piwa. "" Weź jeden w dół, mijamy go wokół. "Drukuj 1089 00:43:54,990 --> 00:43:58,880 "% D butelek piwa na ścianie." Więc to jeszcze d%, ale 1090 00:43:58,880 --> 00:44:02,770 zauważyć, że argument printf się zmienia. 1091 00:44:02,770 --> 00:44:05,840 Po przecinku, to ja, bo chcę powiedzieć 99. 1092 00:44:05,840 --> 00:44:08,590 Po tym przecinkiem, I ja, bo chcę powiedzieć 99. 1093 00:44:08,590 --> 00:44:14,030 Po tym przecinkiem, mam i - 1, bo chcę powiedzieć 98 w 1094 00:44:14,030 --> 00:44:16,260 Ten pierwszej iteracji, i tak dalej. 1095 00:44:16,260 --> 00:44:18,520 A teraz tu, mam tylko jakąś głupią małą uwagę. 1096 00:44:18,520 --> 00:44:22,270 A potem linia 42, wracam 0 konwencjonalnie, co oznacza, że 1097 00:44:22,270 --> 00:44:23,650 wszystko jest w porządku. 1098 00:44:23,650 --> 00:44:24,490 >> Więc co, jeśli goofed? 1099 00:44:24,490 --> 00:44:26,350 Jakie mogą być częstym błędem tutaj być? 1100 00:44:26,350 --> 00:44:29,200 A co, jeśli przypadkowo powiedział dobrze, chcę się liczyć 1101 00:44:29,200 --> 00:44:31,640 w dół do 0, chcę 0 butelek piwa na ścianie? 1102 00:44:31,640 --> 00:44:34,620 Więc powiedzieć, że jest większa niż lub równa 0. 1103 00:44:34,620 --> 00:44:38,920 Co będzie objawem, że widzę teraz, gdybym przekompilować 1104 00:44:38,920 --> 00:44:41,173 beer1 i go uruchomić? 1105 00:44:41,173 --> 00:44:42,120 PUBLICZNOŚCI: Negative. 1106 00:44:42,120 --> 00:44:43,590 DAVID J. Malan: Tak, to pójdzie negatywna. 1107 00:44:43,590 --> 00:44:45,950 To się po jeden błąd, bardzo 1108 00:44:45,950 --> 00:44:47,270 Częstym błędem zrobić. 1109 00:44:47,270 --> 00:44:48,960 Miejmy rzeczywiście wrócić do okna terminala i to zrobić 1110 00:44:48,960 --> 00:44:50,620 tutaj, więc możemy zobaczyć więcej na raz. 1111 00:44:50,620 --> 00:44:53,280 Enter, 99 butelek piwa. 1112 00:44:53,280 --> 00:44:56,580 Blisko, ale poszliśmy nigdy tak lekko za daleko. 1113 00:44:56,580 --> 00:45:00,500 Śpiewaliśmy piosenkę za daleko w dół, tak, że możemy teraz trafić 1114 00:45:00,500 --> 00:45:01,510 liczba ujemna. 1115 00:45:01,510 --> 00:45:03,680 Więc to nie za bardzo działa. 1116 00:45:03,680 --> 00:45:06,450 >> W porządku, więc możemy łatwo naprawić poprzez powrót do 1117 00:45:06,450 --> 00:45:07,650 tak to było kiedyś. 1118 00:45:07,650 --> 00:45:10,360 Ale co to są pewne możliwości teraz 1119 00:45:10,360 --> 00:45:11,190 poprawa? 1120 00:45:11,190 --> 00:45:17,200 Cóż, pozwól otworzyć beer2.c i przejdź tutaj i wziąć 1121 00:45:17,200 --> 00:45:19,310 spójrz na tej wersji. 1122 00:45:19,310 --> 00:45:21,370 Co jest pierwszą rzeczą, która wyskakuje na ciebie jak inaczej 1123 00:45:21,370 --> 00:45:23,715 w tej wersji tutaj? 1124 00:45:23,715 --> 00:45:24,190 PUBLICZNOŚCI: [niesłyszalne]. 1125 00:45:24,190 --> 00:45:26,510 DAVID J. Malan: Tak, tak, i nie więcej, bo doszło do 1126 00:45:26,510 --> 00:45:29,350 mnie wiesz co, pytam użytkownika o n, a następnie jestem 1127 00:45:29,350 --> 00:45:33,580 ustawienie i równa n, a następnie ja zmienia i, ale nigdy nie jestem 1128 00:45:33,580 --> 00:45:34,590 dotykając n ponownie. 1129 00:45:34,590 --> 00:45:37,390 Więc co do cholery było punktem Ciebie przydzielenie innego 32 1130 00:45:37,390 --> 00:45:45,210 bity nazywane po prostu tak, że można mieć inną zmienną? 1131 00:45:45,210 --> 00:45:47,960 Więc w tym przypadku, tak jakby uznał, że zbędne 1132 00:45:47,960 --> 00:45:49,190 cechą projektu. 1133 00:45:49,190 --> 00:45:52,730 I mam teraz powiedzieć natomiast n jest większe niż 0, przejdź 1134 00:45:52,730 --> 00:45:56,180 wyprzedzeniem i wydrukować tę samą piosenkę, mijając n do printf jako 1135 00:45:56,180 --> 00:46:00,210 Drugi argument, a n - 1 jako drugi argument tutaj. 1136 00:46:00,210 --> 00:46:02,930 A następnie na każdej iteracji tej pętli, śmiało i po prostu 1137 00:46:02,930 --> 00:46:05,080 zmniejszamy n sam. 1138 00:46:05,080 --> 00:46:06,960 Teraz, funkcjonalnie, to program 1139 00:46:06,960 --> 00:46:08,010 będzie identyczna. 1140 00:46:08,010 --> 00:46:10,730 Jeśli wpisać 99, n rozpoczyna się 99. 1141 00:46:10,730 --> 00:46:12,890 I ubytek, ubytek, ubytek, ubytek. 1142 00:46:12,890 --> 00:46:15,875 Mam zamiar dostać się aż do "Jedna butelka piwa na 1143 00:46:15,875 --> 00:46:16,740 ściana, jedna butelka piwa. 1144 00:46:16,740 --> 00:46:18,020 Weź jeden w dół, mijamy go wokół. 1145 00:46:18,020 --> 00:46:21,480 0 butelek piwa na ścianie. "Koniec, bo ja 1146 00:46:21,480 --> 00:46:23,200 uzyskać stan prawidłowy. 1147 00:46:23,200 --> 00:46:24,280 Jest większa niż 0. 1148 00:46:24,280 --> 00:46:26,220 Nie popełnij tego błędu. 1149 00:46:26,220 --> 00:46:28,470 >> Więc co jest lepsze, w wersji jedno lub wersja dwa? 1150 00:46:31,380 --> 00:46:33,480 Słyszałem kilka szemrania za dwa. 1151 00:46:33,480 --> 00:46:34,730 Dlaczego dwa? 1152 00:46:37,210 --> 00:46:38,225 Co to jest? 1153 00:46:38,225 --> 00:46:39,215 PUBLICZNOŚCI: [niesłyszalne]. 1154 00:46:39,215 --> 00:46:40,070 DAVID J. Malan: Oh, w porządku. 1155 00:46:40,070 --> 00:46:42,870 Więc nie będzie schodzić poniżej 0, ale pamiętaj, że w wersji pierwszej, 1156 00:46:42,870 --> 00:46:45,870 Oryginalny poprawna wersja nie schodzić poniżej 0 albo. 1157 00:46:45,870 --> 00:46:48,340 Więc pamiętaj, że jest to właściwa wersja. 1158 00:46:48,340 --> 00:46:51,630 Więc przynajmniej porównać dwie poprawne wersje. 1159 00:46:51,630 --> 00:46:53,300 Co jest argumentem na rzecz wersji 1160 00:46:53,300 --> 00:46:55,146 dwie są, mmm, lepiej? 1161 00:46:55,146 --> 00:46:55,642 Tak? 1162 00:46:55,642 --> 00:46:57,630 PUBLICZNOŚCI: Używa mniej miejsca. 1163 00:46:57,630 --> 00:46:59,530 DAVID J. Malan: Okay, więc zajmuje mniej miejsca, prawda? 1164 00:46:59,530 --> 00:47:02,900 Mając na uwadze, wersja używana 32 bitów dla n, a potem jeszcze 1165 00:47:02,900 --> 00:47:07,680 32 bitów dla I. 1166 00:47:07,680 --> 00:47:10,060 Wersji tylko dwa wykorzystuje 32 bitów do n, tak że 1167 00:47:10,060 --> 00:47:11,700 wydaje się być na plus. 1168 00:47:11,700 --> 00:47:12,950 Inne myśli? 1169 00:47:18,070 --> 00:47:21,520 Czy ktoś chce się spierać za jeden? 1170 00:47:21,520 --> 00:47:22,070 Tak? 1171 00:47:22,070 --> 00:47:25,240 PUBLICZNOŚCI: Musisz użyć dodatkowej linii kodu dla n -. 1172 00:47:25,240 --> 00:47:26,090 >> DAVID J. Malan: Dobra, na pewno. 1173 00:47:26,090 --> 00:47:26,960 Więc to jest fair. 1174 00:47:26,960 --> 00:47:29,040 Więc to po prostu, przynajmniej dla mnie - 1175 00:47:29,040 --> 00:47:31,940 To znaczy, to naprawdę czuje się trochę Messier, że 1176 00:47:31,940 --> 00:47:35,120 Nie można sortować z hermetyzacji wszystkie moje logiki w jednym 1177 00:47:35,120 --> 00:47:38,030 piękna linia, dla pętli, jak dla pętli może. 1178 00:47:38,030 --> 00:47:40,240 Tutaj, rodzaj muszą halsie na tej n - 1179 00:47:40,240 --> 00:47:41,120 na końcu pętli, ponieważ 1180 00:47:41,120 --> 00:47:42,550 jest logicznie konieczne. 1181 00:47:42,550 --> 00:47:45,190 Ale to rodzaj ściera mnie w zły sposób, po prostu dlatego, że 1182 00:47:45,190 --> 00:47:48,260 wydaje się oddzielony od logiki tutaj, nawet jeśli 1183 00:47:48,260 --> 00:47:49,430 ponownie, jest to konieczne. 1184 00:47:49,430 --> 00:47:50,990 Inne myśli? 1185 00:47:50,990 --> 00:47:51,490 Tak? 1186 00:47:51,490 --> 00:47:52,740 PUBLICZNOŚCI: [niesłyszalne]. 1187 00:47:57,990 --> 00:47:58,350 >> DAVID J. Malan: Tak. 1188 00:47:58,350 --> 00:48:00,730 Więc co, jeśli zamiast na końcu utworu, chciał 1189 00:48:00,730 --> 00:48:02,950 wydrukować ponownie nazwę piosenki? 1190 00:48:02,950 --> 00:48:05,660 Like "Dzięki za grę 99 butelek piwa", czy coś 1191 00:48:05,660 --> 00:48:06,690 głupi sposób? 1192 00:48:06,690 --> 00:48:09,750 Ale chodzi o to, że chcieliśmy dostęp do pierwotnej wartości. 1193 00:48:09,750 --> 00:48:13,180 Fakt, że już zmutowane lub zmienione na każdym n 1194 00:48:13,180 --> 00:48:16,330 iteracji i dlatego zniszczyli jego oryginalnej wartości 1195 00:48:16,330 --> 00:48:18,650 Oznacza to po prostu nie mogę tego zrobić na końcu. 1196 00:48:18,650 --> 00:48:20,660 Teraz, prawdopodobnie, wyraźnie nie chce robić 1197 00:48:20,660 --> 00:48:21,450 że w tym programie. 1198 00:48:21,450 --> 00:48:22,350 Więc kogo to obchodzi? 1199 00:48:22,350 --> 00:48:23,630 Ale to jest bardzo ważny punkt. 1200 00:48:23,630 --> 00:48:25,520 I szczerze mówiąc, nie ma naprawdę nikt 1201 00:48:25,520 --> 00:48:26,630 prawo odpowiedzieć tutaj. 1202 00:48:26,630 --> 00:48:28,740 Oboje są równie poprawne. 1203 00:48:28,740 --> 00:48:30,210 Mogłem się przekonać, w obu kierunkach. 1204 00:48:30,210 --> 00:48:33,310 Muszę powiedzieć, że w ogóle jest to dobra zasada, jeśli 1205 00:48:33,310 --> 00:48:36,030 poprosił użytkownika o pewną wartość i przechowywane w zmiennej 1206 00:48:36,030 --> 00:48:38,730 jak n, tak jakby na zasadzie, to chyba dobry 1207 00:48:38,730 --> 00:48:40,160 zachować to wokół. 1208 00:48:40,160 --> 00:48:43,400 Oraz wszelkie dane, które chcesz zmutować ponownie i ponownie, po prostu 1209 00:48:43,400 --> 00:48:46,030 dać sobie kopię tej zmiennej, po prostu tak, że 1210 00:48:46,030 --> 00:48:47,830 ma dostęp do oryginału. 1211 00:48:47,830 --> 00:48:51,040 Spędzasz 32 więcej bitów, ale w rzeczywistości jest to 1212 00:48:51,040 --> 00:48:53,490 komputer, jak, dwa gigabajty pamięci RAM, te dni, 1213 00:48:53,490 --> 00:48:55,310 i jesteśmy spierając 32 bitów? 1214 00:48:55,310 --> 00:48:56,320 Naprawdę nie jest taki duży problem. 1215 00:48:56,320 --> 00:48:58,550 A nawet na tym urządzeniu tutaj, z pół gig lub 1216 00:48:58,550 --> 00:49:01,700 gigabajt pamięci RAM, 32 bitów kontra 64 bity, 1217 00:49:01,700 --> 00:49:02,920 nie taka wielka sprawa. 1218 00:49:02,920 --> 00:49:05,890 Oczywiście dzisiaj, to będzie tak przytłoczony wielkością 1219 00:49:05,890 --> 00:49:08,400 samego programu, który ma być kilkaset 1220 00:49:08,400 --> 00:49:10,890 kilobajtów, jeśli nie kilka megabajtów, te dni. 1221 00:49:10,890 --> 00:49:13,550 >> Więc uzasadnione obawy, nikt nie właściwą odpowiedź. 1222 00:49:13,550 --> 00:49:15,490 Ale przynajmniej są to myśli, które powinny zacząć 1223 00:49:15,490 --> 00:49:16,790 przejść przez twój umysł? 1224 00:49:16,790 --> 00:49:19,600 Ponieważ w Pset 0, mimo że tak naprawdę tylko oczekiwać 1225 00:49:19,600 --> 00:49:22,340 poprawności, lub przynajmniej zrzeczenia różne błędy, które 1226 00:49:22,340 --> 00:49:25,440 jakie mogą się pojawić, jak iść naprzód, projekt jest 1227 00:49:25,440 --> 00:49:27,910 będzie to kolejny kluczowy aspekt, zarówno pisanie kodu 1228 00:49:27,910 --> 00:49:29,770 a także nasze oceny kod. 1229 00:49:29,770 --> 00:49:32,310 I tak przynajmniej zastanowi się takie rzeczy. 1230 00:49:32,310 --> 00:49:35,590 I tylko dlatego, coś działa, nie oznacza, że ​​jest dobre, 1231 00:49:35,590 --> 00:49:37,130 nie znaczy, że jest dobrze zaprojektowane. 1232 00:49:37,130 --> 00:49:38,820 I to jest jedna z rzeczy, stypendystom nauczanie i 1233 00:49:38,820 --> 00:49:41,990 zestawy problemów pomoże nam dokuczać udział w czasie. 1234 00:49:41,990 --> 00:49:45,020 >> A co, powiedzmy, ta wersja tutaj? 1235 00:49:45,020 --> 00:49:49,090 Pozwól mi zrobić coś sexy tu za chwilę. 1236 00:49:49,090 --> 00:49:50,740 Pozwól mi najpierw pozbyć się tego. 1237 00:49:50,740 --> 00:49:54,120 A teraz naprawić ten problem gramatyczny. 1238 00:49:54,120 --> 00:49:58,780 Więc w tej wersji, chcę naprawić gramatykę tak, że 1239 00:49:58,780 --> 00:50:02,460 zamiast po prostu powiedzieć nawiasach s, jak "butelki" 1240 00:50:02,460 --> 00:50:03,360 lub "butelki" - 1241 00:50:03,360 --> 00:50:04,900 Nie chcę, aby wyciąć ten róg - 1242 00:50:04,900 --> 00:50:08,350 Chcę również dynamicznie wydrukować słowa "butelki" 1243 00:50:08,350 --> 00:50:12,820 lub "butelka", w ten sposób za pomocą tych% s zastępcze dziś. 1244 00:50:12,820 --> 00:50:16,550 Więc trzeba sprawdzić, co jest warunkowo wartość i. 1245 00:50:16,550 --> 00:50:19,590 A jeśli jest to 1, chcę powiedzieć, "butelka", a jeśli jest to coś 1246 00:50:19,590 --> 00:50:23,115 indziej, chcę powiedzieć "butelki". Więc spróbujmy to zrobić. 1247 00:50:23,115 --> 00:50:31,340 Więc jeśli i == 1, pozwól mi iść do przodu i deklarują - 1248 00:50:31,340 --> 00:50:34,080 Potrzebuję ciąg, więc pozwól mi zrobić ciąg s1, bo to 1249 00:50:34,080 --> 00:50:36,070 Pierwszy ciąg zależy mi teraz. 1250 00:50:36,070 --> 00:50:40,980 Mam zamiar powiedzieć "butelki". A potem zobaczymy, string 1251 00:50:40,980 --> 00:50:43,110 s2 - i postaram się wyjaśnić, gdzie będę za chwilę - 1252 00:50:43,110 --> 00:50:47,650 "Butelki". Więc przypomnieć, że w tej piosence, musimy być w stanie 1253 00:50:47,650 --> 00:50:50,580 aby wydrukować rzeczy, dwa różne słowa potencjalnie. 1254 00:50:50,580 --> 00:50:53,590 Więc jeśli spojrzymy tutaj zauważyć, że gdy mamy do 1255 00:50:53,590 --> 00:50:56,440 przykład ten tutaj ", dwie butelki piwa na ścianie, 1256 00:50:56,440 --> 00:50:59,490 dwie butelki piwa, weź jeden w dół, mijamy go around ", chcę, 1257 00:50:59,490 --> 00:51:02,380 to czwarta linia do teraz powiedzieć "jedną butelkę piwa na 1258 00:51:02,380 --> 00:51:04,900 ściana ". Więc muszę podjąć decyzję, chcę powiedzieć" butelki "lub 1259 00:51:04,900 --> 00:51:07,780 "Butelka"? Więc wracam do arbitralnie powiedzieć, dobrze, 1260 00:51:07,780 --> 00:51:10,530 Idę teraz zadeklarować zmienną s1, ciąg 1261 00:51:10,530 --> 00:51:13,830 jeden, który dostanie podłączony tutaj i również tutaj, 1262 00:51:13,830 --> 00:51:16,070 bo te słowa są zawsze identyczne, tylko ze względu 1263 00:51:16,070 --> 00:51:17,290 charakter utworu. 1264 00:51:17,290 --> 00:51:20,100 I mam zamiar zadzwonić s2 cokolwiek słowo chcę 1265 00:51:20,100 --> 00:51:21,560 końcu pojawi się tutaj. 1266 00:51:21,560 --> 00:51:25,530 Teraz, dosłownie 99 razy na 100, to będzie 1267 00:51:25,530 --> 00:51:28,820 sama w obu przypadkach, ponieważ 3 mnoga, 2 jest 1268 00:51:28,820 --> 00:51:30,200 liczba mnoga, 4 jest w liczbie mnogiej. 1269 00:51:30,200 --> 00:51:34,640 Ale w tym przypadku na rogu, gdzie dostać się do 2 i 1, lub 1270 00:51:34,640 --> 00:51:37,250 nawet 1 i 0, potrzebuję tej logiki. 1271 00:51:37,250 --> 00:51:41,020 Więc muszę spędzić trochę czasu w moim kodu coraz to prawo. 1272 00:51:41,020 --> 00:51:47,530 Więc jeśli mogę to zrobić, jeśli i == 1, a następnie ustaw s1 równe "butelki" 1273 00:51:47,530 --> 00:51:52,010 i S2 "równy" butelki, ponieważ będzie to na 1 1274 00:51:52,010 --> 00:51:56,340 butelki i to będzie dla 0 butelek. 1275 00:51:56,340 --> 00:51:58,250 I to tutaj, co to przedstawia? 1276 00:51:58,250 --> 00:51:59,780 Żeby było jasne. 1277 00:51:59,780 --> 00:52:00,620 To jest tylko komentarz. 1278 00:52:00,620 --> 00:52:03,730 Więc fakt, że można mieć jednego wiersza oznacza komentarz 1279 00:52:03,730 --> 00:52:06,110 może wypowiedzieć swój kod tak, ale inny wspólny 1280 00:52:06,110 --> 00:52:09,050 paradygmat, zbyt, jest to, że jeśli masz super-krótkie zdanie, które 1281 00:52:09,050 --> 00:52:11,410 chcesz umieścić siebie i to jest po prostu bardziej czytelne umieścić 1282 00:52:11,410 --> 00:52:13,270 się na samym końcu linii kodu można 1283 00:52:13,270 --> 00:52:15,230 absolutnie zrobić coś takiego. 1284 00:52:15,230 --> 00:52:20,150 >> Więc co teraz, czy mogę to zrobić? Else if i nie jest równa 1. 1285 00:52:20,150 --> 00:52:21,620 Więc huk równa - 1286 00:52:21,620 --> 00:52:23,150 Wykrzyknik jest znany jako "Bang". 1287 00:52:23,150 --> 00:52:25,080 Więc huk = 1. 1288 00:52:25,080 --> 00:52:28,530 Więc jeśli nie jest równa 1, to co mam, a nie chcę zrobić? 1289 00:52:28,530 --> 00:52:31,700 Cóż, pierwsze słowo, chcę być, co? 1290 00:52:34,620 --> 00:52:40,030 Więc ciąg 1 powinno być "butelki" dla butelek mnogiej, 1291 00:52:40,030 --> 00:52:42,440 a następnie będzie to liczba mnoga "butelki", a także, na razie. 1292 00:52:42,440 --> 00:52:43,800 I zobaczymy, czy to rzeczywiście ma nas do 1293 00:52:43,800 --> 00:52:44,870 gdzie chcemy się udać. 1294 00:52:44,870 --> 00:52:47,680 Tak więc jeśli przewiń tutaj zauważyć, że jestem podłączając 1295 00:52:47,680 --> 00:52:50,170 Nie tylko ja, ale s1. 1296 00:52:50,170 --> 00:52:51,860 Ja podłączając i i S1. 1297 00:52:51,860 --> 00:52:54,440 , A następnie na dół, mi minus 1, który jest taki sam, jak 1298 00:52:54,440 --> 00:52:55,920 wcześniej, ale S2. 1299 00:52:55,920 --> 00:52:58,730 Innymi słowy, chcę angielskie słowo, aby zmienić w oparciu 1300 00:52:58,730 --> 00:52:59,930 na tej logiki. 1301 00:52:59,930 --> 00:53:03,310 Teraz jest już pewne problemy w tym kodzie. 1302 00:53:03,310 --> 00:53:08,460 Co jest złamane już z bramy tutaj? 1303 00:53:08,460 --> 00:53:10,796 Tak? 1304 00:53:10,796 --> 00:53:13,210 PUBLICZNOŚCI: [niesłyszalne]. 1305 00:53:13,210 --> 00:53:13,800 >> DAVID J. Malan: Dokładnie. 1306 00:53:13,800 --> 00:53:16,030 Więc już naruszone lekcję zakresie. 1307 00:53:16,030 --> 00:53:19,610 Tak już zadeklarowane s1 i s2, ale zrobiłem go wewnątrz 1308 00:53:19,610 --> 00:53:22,980 nawiasy klamrowe, co oznacza tak, to kod będzie działał do 1309 00:53:22,980 --> 00:53:27,430 do linii 42, ale jak tylko uderzyć linii 43, wiecie co nie 1310 00:53:27,430 --> 00:53:28,900 już nie istnieje? 1311 00:53:28,900 --> 00:53:32,600 No, wiecie, co jest już w zasięgu - ani s1 lub s2. 1312 00:53:32,600 --> 00:53:33,780 Więc musimy to naprawić. 1313 00:53:33,780 --> 00:53:36,180 Więc pozwól mi usunąć deklaracje. 1314 00:53:36,180 --> 00:53:39,320 I zostawię nazwy zmiennych i usunąć to tutaj 1315 00:53:39,320 --> 00:53:40,120 i usunąć to tutaj. 1316 00:53:40,120 --> 00:53:43,557 A w tym, co tak naprawdę linie powinny zadeklarować te rzeczy? 1317 00:53:43,557 --> 00:53:44,960 PUBLICZNOŚCI: [niesłyszalne]. 1318 00:53:44,960 --> 00:53:45,410 DAVID J. Malan: Tak, więc prawdopodobnie 1319 00:53:45,410 --> 00:53:46,850 aż tu, 33-owski. 1320 00:53:46,850 --> 00:53:50,670 Więc s1 smyczkowych i łańcuch s2. 1321 00:53:50,670 --> 00:53:51,950 I okazuje się, mogę to zrobić. 1322 00:53:51,950 --> 00:53:54,260 Jeśli deklarując dwie zmienne tego samego typu, 1323 00:53:54,260 --> 00:53:57,420 rzeczywiście można po prostu użyć przecinka i zrobić w C. Wszystkie 1324 00:53:57,420 --> 00:53:58,970 Dobra, więc teraz mam dwie zmienne - 1325 00:53:58,970 --> 00:53:59,860 S1 i S2. 1326 00:53:59,860 --> 00:54:02,000 Jestem przypisując im wartości w tych 1327 00:54:02,000 --> 00:54:04,210 Warunki tutaj lub tutaj. 1328 00:54:04,210 --> 00:54:06,690 A potem używam je poniżej. 1329 00:54:06,690 --> 00:54:10,960 Jak dobrze jest to teraz zadziała? 1330 00:54:10,960 --> 00:54:12,740 >> Cóż, to jeszcze trochę buggy, ale niech przynajmniej zobaczyć 1331 00:54:12,740 --> 00:54:13,730 jak daleko dotarłeś. 1332 00:54:13,730 --> 00:54:16,500 Więc pozwól mi iść dalej i zrobić beer3. 1333 00:54:16,500 --> 00:54:17,695 Czy to beer3? 1334 00:54:17,695 --> 00:54:19,410 Tak, to jest beer3. 1335 00:54:19,410 --> 00:54:21,510 A teraz pozwól mi iść do przodu i uruchamiania beer3. 1336 00:54:21,510 --> 00:54:23,820 399 99. 1337 00:54:23,820 --> 00:54:25,840 Prawdopodobnie możemy pominąć większość z nich. 1338 00:54:25,840 --> 00:54:29,100 A tu, popatrz na to. 1339 00:54:29,100 --> 00:54:31,110 "Jedna butelka piwa na ścianie, jedna butelka piwa, podejmują 1340 00:54:31,110 --> 00:54:34,306 jeden w dół, mijamy go wokół, 0 butelek piwa na ścianie. " 1341 00:54:34,306 --> 00:54:37,570 Ale ja chciałbym zwrócić waszą uwagę tylko połowę roztworu. 1342 00:54:37,570 --> 00:54:39,620 Rodzaj wkręca się tutaj. 1343 00:54:39,620 --> 00:54:43,030 Tak więc wydaje się, że sprawy narożne powstają, gdy i równa co 1344 00:54:43,030 --> 00:54:44,030 dwie wartości? 1345 00:54:44,030 --> 00:54:45,020 WIDOWNIA: 2, 1. 1346 00:54:45,020 --> 00:54:46,190 DAVID J. Malan: 2 i 1. 1347 00:54:46,190 --> 00:54:48,180 To nie 1, a nie 1. 1348 00:54:48,180 --> 00:54:51,890 To naprawdę tylko te dwie ostatnie zwrotki tej pieśni. 1349 00:54:51,890 --> 00:54:53,890 Więc co mam zamiast tego chcesz? 1350 00:54:53,890 --> 00:54:58,890 Tak więc wydaje się, że złapał przypadek jeśli i jest == do 1, 1351 00:54:58,890 --> 00:55:02,240 Następnie pierwsze słowo to "butelka", ale drugie słowo 1352 00:55:02,240 --> 00:55:07,230 to "butelki". Ale tu, chcę zmienić to za == 2. 1353 00:55:07,230 --> 00:55:08,570 A jeśli tak jest, to co chcę 1354 00:55:08,570 --> 00:55:09,620 Pierwsze słowo, być? 1355 00:55:09,620 --> 00:55:10,430 PUBLICZNOŚCI: "Butelki". 1356 00:55:10,430 --> 00:55:12,890 DAVID J. Malan: "Butelki", więc dla dwóch butelek. 1357 00:55:12,890 --> 00:55:14,690 A potem to słowo tutaj powinno być - 1358 00:55:14,690 --> 00:55:15,340 PUBLICZNOŚCI: "Butelka". 1359 00:55:15,340 --> 00:55:17,316 DAVID J. Malan: "Butelka", w liczbie pojedynczej. 1360 00:55:20,430 --> 00:55:25,160 >> Dobrze, niech go pomniejszyć, wróć tutaj, aby ponownie uruchomić, 1361 00:55:25,160 --> 00:55:28,590 re-run beer3, typ 99 ponownie. 1362 00:55:28,590 --> 00:55:30,710 Ok, "Segmentation fault (core dumped)." 1363 00:55:30,710 --> 00:55:32,780 Co zrobiłem źle? 1364 00:55:36,050 --> 00:55:38,722 PUBLICZNOŚCI: Nie ma wartości [niesłyszalne]. 1365 00:55:38,722 --> 00:55:40,480 DAVID J. Malan: Ah, doskonały punkt. 1366 00:55:40,480 --> 00:55:43,310 Dobra, więc co jest nie tak tutaj? 1367 00:55:43,310 --> 00:55:45,450 Więc segmentation fault, a my faktycznie żeby zobaczyć 1368 00:55:45,450 --> 00:55:49,020 to kilka razy w przyszłości, świadomie. 1369 00:55:49,020 --> 00:55:51,030 Ale teraz, co to właściwie znaczy? 1370 00:55:51,030 --> 00:55:53,620 Segmentation fault prawie zawsze oznacza, że ​​masz 1371 00:55:53,620 --> 00:55:56,760 jakoś próbował uzyskać dostęp do pamięci, RAM w komputerze, 1372 00:55:56,760 --> 00:56:00,600 , że nie jest właścicielem, które nie zostały faktycznie poprosił 1373 00:56:00,600 --> 00:56:02,050 system operacyjny dla. 1374 00:56:02,050 --> 00:56:04,440 Więc w tym przypadku należy zwrócić uwagę, co zrobiłem, co jest 1375 00:56:04,440 --> 00:56:05,870 błędne w mojej logice. 1376 00:56:05,870 --> 00:56:09,500 Mam przypisane S1 i S2 wartości jeśli i równa 1. 1377 00:56:09,500 --> 00:56:11,590 Ja również zrobić, że jeśli i jest równe 2. 1378 00:56:11,590 --> 00:56:13,710 Ale nie zrobiłem go w nieskończonej ilości innych 1379 00:56:13,710 --> 00:56:14,690 możliwości - 1380 00:56:14,690 --> 00:56:17,940 w szczególności, 3 lub 4 lub kropka, kropka, kropka, 99. 1381 00:56:17,940 --> 00:56:20,100 Więc jednym rozwiązaniem tego problemu może być tylko Chodźmy 1382 00:56:20,100 --> 00:56:22,190 mają inny stan. 1383 00:56:22,190 --> 00:56:26,780 I pozwól mi iść tu i powiedzieć s1 wynosi - 1384 00:56:26,780 --> 00:56:28,180 co powinno być tutaj? 1385 00:56:28,180 --> 00:56:28,750 PUBLICZNOŚCI: [niesłyszalne]. 1386 00:56:28,750 --> 00:56:30,460 >> DAVID J. Malan: "Butelki", ponieważ we wspólnej sprawie, 1387 00:56:30,460 --> 00:56:32,020 to jest po prostu tak samo. 1388 00:56:32,020 --> 00:56:35,580 Więc taniej ofertę, koniec cytatu, "butelki". Więc dla mnogiej 1389 00:56:35,580 --> 00:56:41,010 butelek, a następnie tu, do butelek mnogiej. 1390 00:56:41,010 --> 00:56:44,580 Ok, więc teraz pozwól mi wrócić do mojego oknie terminala 1391 00:56:44,580 --> 00:56:47,200 przekompilować, ponownie go uruchomić. 1392 00:56:47,200 --> 00:56:48,440 99. 1393 00:56:48,440 --> 00:56:49,150 Uff. 1394 00:56:49,150 --> 00:56:50,610 I zróbmy szybki test normalności. 1395 00:56:50,610 --> 00:56:52,400 Technicznie, że chcemy czytać wszystko to, aby upewnić 1396 00:56:52,400 --> 00:56:53,370 są poprawne, ale spójrzmy na 1397 00:56:53,370 --> 00:56:54,640 Najmniej znane winowajcami. 1398 00:56:54,640 --> 00:56:57,370 3 butelki, 2 butelki, 2 butelki, 1 1399 00:56:57,370 --> 00:57:00,380 butelka, 1 butelka, 0 butelek. 1400 00:57:00,380 --> 00:57:03,080 Zdaje się, że co najmniej ustalone to teraz. 1401 00:57:03,080 --> 00:57:06,010 Ale jest haczyk tutaj jest to, co Bóg jest straszny bałagan 1402 00:57:06,010 --> 00:57:07,470 tylko do rozwiązania głupi 1403 00:57:07,470 --> 00:57:09,540 jedna postać gramatyczna szczegół. 1404 00:57:09,540 --> 00:57:11,150 Więc jest rodzajem powodu, że cięcia tego narożnika 1405 00:57:11,150 --> 00:57:14,090 wcześniej, bo to po prostu całkowicie irytujące mieć do 1406 00:57:14,090 --> 00:57:15,020 napisać tyle kodu. 1407 00:57:15,020 --> 00:57:17,530 Ale okazuje się, że jest nieco bardziej eleganckie sposoby 1408 00:57:17,530 --> 00:57:20,110 wyrażając dokładnie to samo. 1409 00:57:20,110 --> 00:57:22,040 I możemy zrobić to w następujący sposób. 1410 00:57:22,040 --> 00:57:23,890 >> Pozwól mi zostawić to na ekranie przez chwilę, a 1411 00:57:23,890 --> 00:57:27,320 wprowadzić coś zwanego operatora trójskładnikowych. 1412 00:57:27,320 --> 00:57:29,600 To jest rodzaj jednolinijkowych, które właśnie po to, by nasze 1413 00:57:29,600 --> 00:57:31,880 Mieszka trochę bardziej seksownego, jak obiecałem. 1414 00:57:31,880 --> 00:57:33,130 I mam zamiar to zrobić w następujący sposób. 1415 00:57:33,130 --> 00:57:35,810 Daj mi ciąg nazwie s1, i niech mnie 1416 00:57:35,810 --> 00:57:37,200 przypisać to w następujący sposób. 1417 00:57:37,200 --> 00:57:39,900 (I == 1)? 1418 00:57:39,900 --> 00:57:47,820 "Butelka", inaczej "butelki". String s2 ma (i == 2)? 1419 00:57:47,820 --> 00:57:52,670 "Butelka", inaczej "butelki". 1420 00:57:52,670 --> 00:57:57,050 Więc co wtedy jest różnica tutaj? 1421 00:57:57,050 --> 00:57:59,370 Te dwa wiersze kodu, twierdzę, może 1422 00:57:59,370 --> 00:58:02,200 wymienić cały ten bałagan. 1423 00:58:02,200 --> 00:58:04,280 Więc ja nazywam to bałagan, tylko dlatego, że to niby ja ściera 1424 00:58:04,280 --> 00:58:05,940 niewłaściwy sposób, że jest tak wiele linii kodu. 1425 00:58:05,940 --> 00:58:06,650 Nie tak. 1426 00:58:06,650 --> 00:58:07,700 To nie jest zły projekt. 1427 00:58:07,700 --> 00:58:10,140 Podoba, to jest całkowicie poprawne i idealnie czysty. 1428 00:58:10,140 --> 00:58:12,970 Ale kodowanie staje nudne, jeśli masz wyrazić siebie tak, 1429 00:58:12,970 --> 00:58:15,530 cholera specjalnie znowu i znowu i znowu prosta 1430 00:58:15,530 --> 00:58:16,620 scenariusz jak ten. 1431 00:58:16,620 --> 00:58:19,470 Więc C ma pewne skróty, jak ten. 1432 00:58:19,470 --> 00:58:24,270 Więc to w istocie mówi zadeklarować ciąg nazwie s1 oraz 1433 00:58:24,270 --> 00:58:32,610 przypisać go albo ten lub wartość to wartość jeśli i jest == - 1434 00:58:32,610 --> 00:58:35,290 Przepraszam, powinienem powiedzieć to jaśniej. 1435 00:58:35,290 --> 00:58:41,680 Zadeklaruj zmienną s1, przypisać mu tę wartość, jeśli to prawda. 1436 00:58:41,680 --> 00:58:44,280 W przeciwnym razie, przypisać mu tę wartość. 1437 00:58:44,280 --> 00:58:47,220 Tak więc inaczej mówiąc, jest to rodzaj Jednowierszowy drodze 1438 00:58:47,220 --> 00:58:51,490 mówiąc, jeśli inny, ale robi zadanie po drodze. 1439 00:58:51,490 --> 00:58:55,540 Więc jeśli jest 1, a następnie iść do przodu i nazywają to "butelkę". I 1440 00:58:55,540 --> 00:58:59,830 wtedy ten inny, nazywamy to "butelki". Tymczasem, S2, 1441 00:58:59,830 --> 00:59:04,060 Drugie słowo, że musimy określić, czy i jest równe 2, dowiemy 1442 00:59:04,060 --> 00:59:08,350 ustawić s2 do "butelki". W przeciwnym razie ustaw ją na "butelki". A co 1443 00:59:08,350 --> 00:59:11,460 oznacza to, że teraz to mogę przejść przez to i usunąć wszystkie 1444 00:59:11,460 --> 00:59:12,860 te linie kodu. 1445 00:59:12,860 --> 00:59:17,220 I kiedy mówię, trochę śmiesznie, że to jest teraz 1446 00:59:17,220 --> 00:59:20,060 seksownego, jest bardziej seksownego w rodzaju stylistycznej sensie. 1447 00:59:20,060 --> 00:59:22,660 Fakt, że funkcjonalnie, ten kod faktycznie się 1448 00:59:22,660 --> 00:59:24,610 zrobić dokładnie to samo. 1449 00:59:24,610 --> 00:59:26,890 I choć może to wyglądać dość tajemniczy w pierwszym 1450 00:59:26,890 --> 00:59:29,250 rzut oka, bo nie widziałem tego konstruktu wcześniej, że 1451 00:59:29,250 --> 00:59:31,850 twierdzą, że to ostatecznie będzie dużo więcej 1452 00:59:31,850 --> 00:59:34,820 czytelny i tak o wiele łatwiej my ludzie do rodzaju 1453 00:59:34,820 --> 00:59:36,830 zrozumieć, bo teraz można tylko przeczytać 1454 00:59:36,830 --> 00:59:38,830 Kod wszystko na jednej linii. 1455 00:59:38,830 --> 00:59:41,550 Jest wciąż w duchu podobnym do jeśli, gdzie jest to 1456 00:59:41,550 --> 00:59:44,920 stan i to jest to, co jest wewnątrz, czy i ta 1457 00:59:44,920 --> 00:59:46,480 jest to, co znajduje się wewnątrz innego. 1458 00:59:46,480 --> 00:59:49,450 Ale możemy zrobić to po prostu znacznie bardziej elegancko. 1459 00:59:49,450 --> 00:59:52,650 >> I jeśli teraz wrócić do mojego terminala, po usunięcia wszystkich 1460 00:59:52,650 --> 00:59:55,530 z tych wierszy i zastąpiła je tylko tych dwóch, 1461 00:59:55,530 --> 01:00:00,150 przekompilować ponownie uruchom butelki piwa z 99, zawiadomienie, że moje 1462 01:00:00,150 --> 01:00:03,350 Gramatyka jest w rzeczywistości nadal poprawne. 1463 01:00:03,350 --> 01:00:06,160 Więc jeszcze raz, coś zacząć. 1464 01:00:06,160 --> 01:00:08,840 2 butelki piwa, 1 butelka piwa. 1465 01:00:08,840 --> 01:00:09,370 Wygląda dobrze. 1466 01:00:09,370 --> 01:00:10,100 Tak. 1467 01:00:10,100 --> 01:00:13,900 Więc nie mamy o wiele więcej rozwiązań zwięzłe. 1468 01:00:13,900 --> 01:00:16,020 Więc to też, jak można dostać się bardziej komfortowo z C, nie 1469 01:00:16,020 --> 01:00:18,630 koniecznie z pierwszego lub nawet Pset sekundę, ale 1470 01:00:18,630 --> 01:00:21,170 sobie sprawę, że te konstrukcje pozwala nam robić rzeczy nigdy 1471 01:00:21,170 --> 01:00:22,810 bardziej elegancko. 1472 01:00:22,810 --> 01:00:25,200 Teraz zróbmy jedną rzecz tutaj. 1473 01:00:25,200 --> 01:00:31,460 Pozwólcie mi iść do przodu i otworzyć return1.c. 1474 01:00:31,460 --> 01:00:34,340 Teraz zacznijmy rozwiązać kolejny problem w sposób, który 1475 01:00:34,340 --> 01:00:37,140 pozwala nam napisać bardziej wyrafinowany kod. 1476 01:00:37,140 --> 01:00:39,960 >> Tak tu jest prosty mały program, którego celem w życiu 1477 01:00:39,960 --> 01:00:41,870 jest przyrost wartości. 1478 01:00:41,870 --> 01:00:43,100 I faktycznie, weźmy się o krok. 1479 01:00:43,100 --> 01:00:44,400 Pozwól mi to zrobić ręcznie. 1480 01:00:44,400 --> 01:00:52,200 Pozwól mi zrobić to i int main (void). 1481 01:00:52,200 --> 01:00:53,450 I niech mnie nazywają to increment.c. 1482 01:00:57,150 --> 01:00:58,570 I co chcesz zrobić? 1483 01:00:58,570 --> 01:01:02,240 Mam zamiar iść do przodu i powiedzieć coś w stylu - 1484 01:01:02,240 --> 01:01:04,280 będziemy łączyć się z numerami same - 1485 01:01:04,280 --> 01:01:04,980 int x. 1486 01:01:04,980 --> 01:01:13,670 Więc int x dostaje 2 printf x jest% d, nowa linia, x. 1487 01:01:13,670 --> 01:01:16,780 Więc piszę szybko, ale jakby znajome rzeczy teraz. 1488 01:01:16,780 --> 01:01:18,830 Potem zrobię x + +. 1489 01:01:18,830 --> 01:01:21,710 Potem idę do wydrukowania tego samego zdanie ponownie. 1490 01:01:21,710 --> 01:01:24,550 A potem mam zamiar wrócić 0 tylko, aby zamknąć program. 1491 01:01:24,550 --> 01:01:25,960 W porządku, więc jest to program, który 1492 01:01:25,960 --> 01:01:26,960 zwiększa liczbę. 1493 01:01:26,960 --> 01:01:29,830 To pierwszy zamiar zainicjować coś do 2, a następnie jest 1494 01:01:29,830 --> 01:01:33,470 zamierza zwiększyć ją i wydrukować go ponownie. 1495 01:01:33,470 --> 01:01:36,930 >> Więc uruchom przyrost, niezwykle prosty program. 1496 01:01:36,930 --> 01:01:40,940 Ale załóżmy, że teraz chcę kostka wartość, więc nie 1497 01:01:40,940 --> 01:01:42,490 coś nieco arbitralne. 1498 01:01:42,490 --> 01:01:45,140 I właściwie chcesz robić x dostaje kostkę to. 1499 01:01:45,140 --> 01:01:47,570 Mogłem więc wykorzystać to, co się nazywa funkcję pow, ale ja nie 1500 01:01:47,570 --> 01:01:48,650 bardzo wiem, gdzie to jest jeszcze. 1501 01:01:48,650 --> 01:01:50,580 Więc mam zamiar to zrobić w staromodny sposób. 1502 01:01:50,580 --> 01:01:54,550 x razy to równa x razy x razy x. 1503 01:01:54,550 --> 01:01:56,880 Więc jestem cubing wartość, mnożąc je przez siebie ponownie 1504 01:01:56,880 --> 01:02:00,440 i znowu, i znowu, tak, że mamy władzę 1505 01:02:00,440 --> 01:02:02,050 3 w tym przypadku. 1506 01:02:02,050 --> 01:02:06,000 Więc teraz numery powinienem wydrukować powinno być, jak zobaczymy 1507 01:02:06,000 --> 01:02:08,450 tutaj - aby przyrost, więc jest to rzeczywiście nie bardzo zwiększamy 1508 01:02:08,450 --> 01:02:10,260 więcej, ale zostawimy nazwę sam - 1509 01:02:10,260 --> 01:02:11,590 2, a następnie 8. 1510 01:02:11,590 --> 01:02:17,670 Teraz, mamy początki okazję do udoskonalenia 1511 01:02:17,670 --> 01:02:21,570 tu, przy czym ta cubing rzeczą mnożąc liczbę 1512 01:02:21,570 --> 01:02:24,680 sama sama sama czuje się jak to może być 1513 01:02:24,680 --> 01:02:27,920 przydatne w funkcji, podobnie jak ktoś zdecydował 1514 01:02:27,920 --> 01:02:30,430 lat temu - wiesz, trochę przydatne, gdy jeden z nas siada 1515 01:02:30,430 --> 01:02:33,120 printf i pisze tak, że reszta świata może go używać, 1516 01:02:33,120 --> 01:02:36,160 dlaczego nie możemy usiąść i napisać funkcję o nazwie cube 1517 01:02:36,160 --> 01:02:39,250 że robi to cubing za nas więc nie trzeba ręcznie 1518 01:02:39,250 --> 01:02:41,500 wdrożenie pojęcia cubing wartości tutaj? 1519 01:02:41,500 --> 01:02:44,040 >> Tak prosty przykład, ale idziemy do przodu i to jest tak korzystać 1520 01:02:44,040 --> 01:02:46,280 okazja do napisania własnej funkcji. 1521 01:02:46,280 --> 01:02:49,110 Tak więc do tej pory, mamy tylko używane głównym i użyliśmy innego 1522 01:02:49,110 --> 01:02:51,780 funkcje ludzi, ale nie napisali sami. 1523 01:02:51,780 --> 01:02:52,650 Tak więc zaczynamy. 1524 01:02:52,650 --> 01:02:56,330 Mam zamiar iść do przodu i napisać funkcję o nazwie sześcian. 1525 01:02:56,330 --> 01:02:58,490 A ja będę musiał podjąć wejście. 1526 01:02:58,490 --> 01:03:02,070 Więc jego wkład będzie liczbą całkowitą. 1527 01:03:02,070 --> 01:03:03,570 A co to robić? 1528 01:03:03,570 --> 01:03:08,500 To będzie zadeklarować int wyjście razy = input input 1529 01:03:08,500 --> 01:03:09,880 Wejście razy. 1530 01:03:09,880 --> 01:03:12,190 A potem to się zwróci ten wynik. 1531 01:03:12,190 --> 01:03:14,500 I wtedy muszą być szczegółowe teraz. 1532 01:03:14,500 --> 01:03:16,820 Ta funkcja będzie zwracać int. 1533 01:03:16,820 --> 01:03:19,130 Więc czym jest to, jak chcesz pisać własne funkcje. 1534 01:03:19,130 --> 01:03:20,850 Najpierw zdecydować, co jest nazwą pliku 1535 01:03:20,850 --> 01:03:21,720 Funkcja będzie. 1536 01:03:21,720 --> 01:03:23,964 I generalnie, coś wyjaśniający jest dobre, więc będę 1537 01:03:23,964 --> 01:03:25,060 Nazywamy to sześcian. 1538 01:03:25,060 --> 01:03:27,180 Następnie trzeba określić, co to będzie wracać, co 1539 01:03:27,180 --> 01:03:28,240 jego produkcja będzie. 1540 01:03:28,240 --> 01:03:29,595 I nie mamy, że wiele opcji jeszcze. 1541 01:03:29,595 --> 01:03:32,260 Int, char, float, bool, string. 1542 01:03:32,260 --> 01:03:34,260 Na razie mam zamiar trzymać się z int, bo chcę go 1543 01:03:34,260 --> 01:03:35,880 zwraca liczbę całkowitą. 1544 01:03:35,880 --> 01:03:38,770 Następnie trzeba określić, co jej wejść, jeśli w ogóle, są. 1545 01:03:38,770 --> 01:03:41,570 A jeśli kostka pobiera argument, bierze coś pomiędzy 1546 01:03:41,570 --> 01:03:44,970 nawiasów, trzeba dać, że argument nazwę tak, aby 1547 01:03:44,970 --> 01:03:47,860 można nazwać to coś jak jesteś wykonawczych lub zapisu 1548 01:03:47,860 --> 01:03:50,550 ta funkcja, i trzeba dać mu typu, które w tym 1549 01:03:50,550 --> 01:03:51,810 Sprawa ma być int. 1550 01:03:51,810 --> 01:03:54,690 Tak w skrócie, kostka jest funkcją, która pobiera liczbę całkowitą 1551 01:03:54,690 --> 01:03:57,560 jako wejście i zwraca liczbę całkowitą jako wyjścia. 1552 01:03:57,560 --> 01:03:59,240 >> Więc co zrobić z tym wejściem? 1553 01:03:59,240 --> 01:04:03,710 Cóż, w wierszu 14, oświadczam zmienną wyjścia, a ja 1554 01:04:03,710 --> 01:04:07,410 przypisać mu wartość, razy razy wejście sygnału wejściowego. 1555 01:04:07,410 --> 01:04:11,490 A potem powrót wyjście. 1556 01:04:11,490 --> 01:04:14,890 Więc jak mam to wykorzystać potem? 1557 01:04:14,890 --> 01:04:19,210 Co mam zmienić te podświetlone znaki na linii 1558 01:04:19,210 --> 01:04:21,006 7 jest, jak myślisz? 1559 01:04:21,006 --> 01:04:21,800 PUBLICZNOŚCI: [niesłyszalne]. 1560 01:04:21,800 --> 01:04:25,570 DAVID J. Malan: Tak, więc kostka x. 1561 01:04:25,570 --> 01:04:28,290 Tak więc x jest zmienną, która oznacza, że ​​posiada pewną wartość. 1562 01:04:28,290 --> 01:04:30,190 Na szczęście jest typu INTEGER. 1563 01:04:30,190 --> 01:04:34,280 A ponieważ x jest int, co oznacza, że ​​można przekazać go w kostkę. 1564 01:04:34,280 --> 01:04:39,500 I mimo, że jestem przesłanianie wartość x z wartością 1565 01:04:39,500 --> 01:04:42,780 x, kostki, jak to miało miejsce do tej pory, za każdym razem po 1566 01:04:42,780 --> 01:04:46,150 mają znak równości i linii kodu, stuff na prawo 1567 01:04:46,150 --> 01:04:49,090 zostanie wykonany, a następnie zostaje przypisany do 1568 01:04:49,090 --> 01:04:50,150 wartość po lewej stronie. 1569 01:04:50,150 --> 01:04:52,950 Więc kolejność operacji jest jak mamy nadzieję. 1570 01:04:52,950 --> 01:04:56,620 Tak to działa? 1571 01:04:56,620 --> 01:04:58,410 Cóż, pozwól mi iść na dół. 1572 01:04:58,410 --> 01:04:59,970 Pozwól mi otworzyć moje okno terminala. 1573 01:04:59,970 --> 01:05:03,610 Pozwól mi robią przyrost, Enter. 1574 01:05:03,610 --> 01:05:07,140 "Ukryty deklaracja funkcji" kostki "jest nieważne 1575 01:05:07,140 --> 01:05:13,700 C99. "Tak na marginesie, C99 nawiązuje do języka C, jak to było 1576 01:05:13,700 --> 01:05:16,790 zdefiniowane w 1999 r., co było aktualizacja na wersji z 1577 01:05:16,790 --> 01:05:19,360 1989, który jest aktualizacja od oryginału. 1578 01:05:19,360 --> 01:05:21,740 Więc to wszystko znaczy. 1579 01:05:21,740 --> 01:05:24,250 >> Więc co to znaczy, że "niejawna deklaracja 1580 01:05:24,250 --> 01:05:26,790 funkcja "kostka" jest nieważne? "To właśnie tu. 1581 01:05:26,790 --> 01:05:28,430 Jest tam w linii 12. 1582 01:05:28,430 --> 01:05:30,460 PUBLICZNOŚCI: [niesłyszalne]. 1583 01:05:30,460 --> 01:05:30,730 DAVID J. Malan: Co to jest? 1584 01:05:30,730 --> 01:05:32,470 PUBLICZNOŚCI: To nie przed. 1585 01:05:32,470 --> 01:05:33,540 DAVID J. Malan: To nie przed. 1586 01:05:33,540 --> 01:05:34,740 Więc to jest sprawa. 1587 01:05:34,740 --> 01:05:38,190 C jest głupie, czy kompilatory C są głupie. 1588 01:05:38,190 --> 01:05:41,060 Oni naprawdę tylko to, co powiesz im zrobić. 1589 01:05:41,060 --> 01:05:44,770 I, w szczególności, tylko czytać górę Kod do dołu, 1590 01:05:44,770 --> 01:05:45,620 od lewej do prawej. 1591 01:05:45,620 --> 01:05:49,140 Więc jeśli kompilator Clang, odczytuje kod, linia 1, to 1592 01:05:49,140 --> 01:05:50,120 domyśla się, jak to zrobić. 1593 01:05:50,120 --> 01:05:50,940 O, tutaj jest głównym. 1594 01:05:50,940 --> 01:05:53,000 Okay, niech śmiało zadeklarować zmienną x. 1595 01:05:53,000 --> 01:05:54,160 Pozwólcie mi drukować coś. 1596 01:05:54,160 --> 01:05:55,890 Linia 7, co do cholery jest kostka? 1597 01:05:55,890 --> 01:05:58,230 To nie jest zadeklarowane w stdio.h. 1598 01:05:58,230 --> 01:06:00,950 Nie pochodzi z C. Nie mam pojęcia, co robić. 1599 01:06:00,950 --> 01:06:03,960 I tak właśnie Clang bails i kończy z tym komunikatem o błędzie. 1600 01:06:03,960 --> 01:06:05,850 Więc możemy to naprawić w kilka sposobów. 1601 01:06:05,850 --> 01:06:10,530 Możemy uczyć dzyń co kostka jest po prostu przeniesienie gdzie 1602 01:06:10,530 --> 01:06:11,820 deklaracja jest. 1603 01:06:11,820 --> 01:06:14,640 Więc cięte i wklejony na szczycie głównej. 1604 01:06:14,640 --> 01:06:17,770 Sobie sprawę, że tylko dlatego, że nie jest już głównym pierwsze, to 1605 01:06:17,770 --> 01:06:19,150 nadal wykonywana domyślnie. 1606 01:06:19,150 --> 01:06:20,060 Main jest głównym. 1607 01:06:20,060 --> 01:06:21,022 Jest to nazwa funkcji domyślnie. 1608 01:06:21,022 --> 01:06:22,930 To nie ma znaczenia, gdzie to jest w pliku. 1609 01:06:22,930 --> 01:06:26,910 Ale przynajmniej teraz Clang widział kostkę przed użyciem. 1610 01:06:26,910 --> 01:06:28,500 Zobaczmy więc, czy Clang jest szczęśliwszy teraz. 1611 01:06:28,500 --> 01:06:31,410 Producent przyrostu, to nie skompilować ten czas. 1612 01:06:31,410 --> 01:06:33,060 >> Pozwólcie mi biegać przyrost. 1613 01:06:33,060 --> 01:06:34,810 I rzeczywiście, wydaje się, że działa. 1614 01:06:34,810 --> 01:06:36,810 Teraz można wymyślić scenariuszy gdzie ostatecznie 1615 01:06:36,810 --> 01:06:38,650 to nie jest możliwe, aby umieścić wszystkie funkcje 1616 01:06:38,650 --> 01:06:39,740 ponad wszelkie inne funkcje. 1617 01:06:39,740 --> 01:06:42,140 Będziesz utknąć w tej nieskończonej pętli w rzeczywistości, 1618 01:06:42,140 --> 01:06:43,480 gdzie ten facet chce być tutaj, ale to 1619 01:06:43,480 --> 01:06:44,390 facet musi tam być. 1620 01:06:44,390 --> 01:06:45,830 Tak, że nie zawsze działa. 1621 01:06:45,830 --> 01:06:49,020 Więc na szczęście, C ma bardziej eleganckie rozwiązanie. 1622 01:06:49,020 --> 01:06:50,790 Mam zamiar umieścić ten tył gdzie to było, tylko dlatego, że 1623 01:06:50,790 --> 01:06:53,390 wolą, jako zasady, że zawsze będzie głównym 1624 01:06:53,390 --> 01:06:55,550 na górze, bo to jest po prostu miło jest zobaczyć, co ten program 1625 01:06:55,550 --> 01:06:56,920 ma domyślnie. 1626 01:06:56,920 --> 01:06:58,950 I co ja zrobię tu jest stwierdzenie, co nazywa 1627 01:06:58,950 --> 01:07:00,250 prototyp. 1628 01:07:00,250 --> 01:07:05,730 Mam zamiar ponownie deklaruję funkcję kostki przez dosłownie 1629 01:07:05,730 --> 01:07:07,180 kopiowanie i wklejanie. 1630 01:07:07,180 --> 01:07:08,290 Właściwie, to nie dosłownie. 1631 01:07:08,290 --> 01:07:13,060 Tak dosłownie kopiując i wklejając linię 15 1632 01:07:13,060 --> 01:07:15,160 się powyżej linii 6. 1633 01:07:15,160 --> 01:07:17,010 To nie ma znaczenia, co linia ta kończy się na. 1634 01:07:17,010 --> 01:07:18,380 To dzieje się na linii 4. 1635 01:07:18,380 --> 01:07:19,950 Ale to nie musi być przed main. 1636 01:07:19,950 --> 01:07:21,150 Ale zauważyć różnicę. 1637 01:07:21,150 --> 01:07:24,100 Linia 4 kończy się średnikiem, co oznacza, hej, 1638 01:07:24,100 --> 01:07:27,510 Dzyń, daję słowo, że istnieje funkcja 1639 01:07:27,510 --> 01:07:31,350 zwany sześcian, że trwa int i zwraca int. 1640 01:07:31,350 --> 01:07:33,020 Ale ja nie zamierzam ci powiedzieć, co to jest. 1641 01:07:33,020 --> 01:07:35,180 Wystarczy wiedzieć, że obiecuję ci powiedzieć ostatecznie. 1642 01:07:35,180 --> 01:07:38,490 I rzeczywiście, teraz to jest w porządku, że to jest na dole. 1643 01:07:38,490 --> 01:07:41,275 >> Tak więc jest to na ogół lepsze, ponieważ wtedy w górnej 1644 01:07:41,275 --> 01:07:44,240 Twój plik, można po prostu wyklepać, szybkiego ognia, jedna linia 1645 01:07:44,240 --> 01:07:46,470 każda, co nazwy swoich funkcji to, co ich 1646 01:07:46,470 --> 01:07:49,120 Wejścia są, jakie są ich wyniki są. 1647 01:07:49,120 --> 01:07:52,210 I być bardziej jasne, wejście na ogół oznacza argument lub 1648 01:07:52,210 --> 01:07:54,110 parametr, synonimami. 1649 01:07:54,110 --> 01:07:56,890 Wyjście oznacza wartość zwracaną, co robi 1650 01:07:56,890 --> 01:07:58,700 ręka z powrotem do mnie. 1651 01:07:58,700 --> 01:08:03,420 Tak więc w tej sprawie, kostki uznano na górze, ale 1652 01:08:03,420 --> 01:08:06,940 określone, inaczej znany jako realizowane, na dole. 1653 01:08:06,940 --> 01:08:09,620 Więc teraz wróćmy tu i ponownie uruchomić to. 1654 01:08:09,620 --> 01:08:13,430 Więc teraz pozwól mi iść do przodu i ponownie uruchomić make, ponownie uruchomić przyrost. 1655 01:08:13,430 --> 01:08:16,500 A teraz wydaje się działać dobrze. 1656 01:08:16,500 --> 01:08:19,450 Tak więc możemy śmiało i czynnik poza czymś 1657 01:08:19,450 --> 01:08:23,720 piwo przykład do czwartej wersji. 1658 01:08:23,720 --> 01:08:25,590 Więc pozwól mi przejść tutaj. 1659 01:08:25,590 --> 01:08:28,149 I zauważyć, że rodzaj wziął tę lekcję do serca właśnie teraz. 1660 01:08:28,149 --> 01:08:31,140 Fakt, że śpiewała tę samą zwrotkę ponownie i 1661 01:08:31,140 --> 01:08:34,130 znowu i znowu, ta sama linia refren w piosence, filcu 1662 01:08:34,130 --> 01:08:36,439 lubię Dlaczego nie czynnikiem obecnie do funkcji? 1663 01:08:36,439 --> 01:08:38,470 I rzeczywiście, to powinien być jeden z motywów. 1664 01:08:38,470 --> 01:08:40,960 Poza tym, że ktoś inny na świecie, który może zostać 1665 01:08:40,960 --> 01:08:42,390 użyć funkcji kostki - 1666 01:08:42,390 --> 01:08:44,560 To dobry powód, aby uwzględniać coś i napisz 1667 01:08:44,560 --> 01:08:45,720 własna funkcja niestandardowa - 1668 01:08:45,720 --> 01:08:48,720 jeśli jest kawałek kodu w programie, że po prostu sprawia, że 1669 01:08:48,720 --> 01:08:51,370 koncepcyjne poczucie, że jesteś rodzaju chcą dać 1670 01:08:51,370 --> 01:08:53,740 name - jak w tym przypadku, chóru - 1671 01:08:53,740 --> 01:08:57,380 Następnie można dodać, że podobnie jak w oddzielnych funkcji. 1672 01:08:57,380 --> 01:08:59,560 Nie musisz pisać wszystko, co w głównym, jeśli tylko 1673 01:08:59,560 --> 01:09:02,609 czuje cleaner oddzielić je i nadać mu nazwę. 1674 01:09:02,609 --> 01:09:05,529 >> Więc w tym przypadku tutaj zauważyć, że mam komentarza na szczycie 1675 01:09:05,529 --> 01:09:06,859 ta funkcja po prostu śpiewa o 1676 01:09:06,859 --> 01:09:08,630 określone liczby butelek. 1677 01:09:08,630 --> 01:09:10,609 Zauważcie, że nie ma potrzeby wywoływania tych 1678 01:09:10,609 --> 01:09:12,520 rzeczy, wejścia i wyjścia. 1679 01:09:12,520 --> 01:09:16,090 W rzeczywistości, tym razem po prostu zadzwonił do mojego B Wejście do butelki. 1680 01:09:16,090 --> 01:09:19,960 I tutaj odnotować, void sugeruje co? 1681 01:09:19,960 --> 01:09:21,309 Że chorus - 1682 01:09:21,309 --> 01:09:22,660 PUBLICZNOŚCI: Nie zwrócić. 1683 01:09:22,660 --> 01:09:23,870 DAVID J. Malan: nie zwraca wartości. 1684 01:09:23,870 --> 01:09:26,800 I rzeczywiście, funkcje nie muszą zwracać wartości. 1685 01:09:26,800 --> 01:09:28,060 Oni po prostu mogą coś zrobić. 1686 01:09:28,060 --> 01:09:30,270 Mogą mieć tak zwanych efektów ubocznych, które w tym 1687 01:09:30,270 --> 01:09:33,109 Sprawa jest po prostu cała masa drukowania na ekranie. 1688 01:09:33,109 --> 01:09:36,580 Więc zauważyć, że ten kod tu, dosłownie ukradł 1689 01:09:36,580 --> 01:09:37,680 w poprzednim przykładzie. 1690 01:09:37,680 --> 01:09:39,930 Jedyną różnicą jest to, a nie za pomocą I, jak my 1691 01:09:39,930 --> 01:09:42,890 zmienna, Obecnie używam b jako mojego zmiennej. 1692 01:09:42,890 --> 01:09:45,880 Więc mam b tu, mam tu b, mam b 1693 01:09:45,880 --> 01:09:47,109 minus 1 tutaj. 1694 01:09:47,109 --> 01:09:49,279 Ale kod jest dokładnie taka sama. 1695 01:09:49,279 --> 01:09:52,529 Ale tak, aby pokazać, w jaki sposób możemy teraz korzystać z tego, pozwól mi odejść 1696 01:09:52,529 --> 01:09:56,780 dalej i faktycznie zmienić to być na pętli. 1697 01:09:56,780 --> 01:10:03,850 for (int i = n; i> n; i -). 1698 01:10:03,850 --> 01:10:06,230 >> Więc ukradli, że z naszego poprzedniego przykładu. 1699 01:10:06,230 --> 01:10:08,970 Wcześniej, to w wierszu 37, że zacząłem 1700 01:10:08,970 --> 01:10:10,640 śpiew ten przykry piosenkę. 1701 01:10:10,640 --> 01:10:15,810 Ale zamiast tego, jestem po prostu będzie teraz zadzwonić chór i. 1702 01:10:15,810 --> 01:10:16,870 Gotowe. 1703 01:10:16,870 --> 01:10:20,260 Więc teraz, w każdej iteracji tej pętli, nazywam to inne 1704 01:10:20,260 --> 01:10:22,220 Funkcja, chorus, że zdarzyło mi się pisać. 1705 01:10:22,220 --> 01:10:24,110 To nie zostało napisane przez kogoś innego, rok temu. 1706 01:10:24,110 --> 01:10:27,930 Ale refren, tymczasem wykorzystuje printf do drukowania 1707 01:10:27,930 --> 01:10:29,840 z tych czterech linii. 1708 01:10:29,840 --> 01:10:32,720 Ale fakt, że dzwonię chór ponownie w 1709 01:10:32,720 --> 01:10:35,900 pętli oznacza, że ​​mam zamiar dostać, na samym końcu, 1710 01:10:35,900 --> 01:10:39,310 dokładnie ten sam utwór, jak mam do tej pory. 1711 01:10:39,310 --> 01:10:42,130 Tak w skrócie, teraz, gdy patrzę na mojego kodu, choć 1712 01:10:42,130 --> 01:10:44,240 funkcjonalnie jest to równoznaczne, zauważ, że jest to 1713 01:10:44,240 --> 01:10:46,020 zaczyna się jeszcze bardziej czytelne. 1714 01:10:46,020 --> 01:10:48,410 I nie wiem dokładnie, jak getInt 1715 01:10:48,410 --> 01:10:49,250 jest realizowany. 1716 01:10:49,250 --> 01:10:52,050 Szczerze mówiąc, nie wiem, jak refren jest zaimplementowana. 1717 01:10:52,050 --> 01:10:52,970 Ale to nie ma dla mnie znaczenia. 1718 01:10:52,970 --> 01:10:55,620 Nie obchodzi mnie to, bo teraz mogę w pewnym sensie, jako człowiek, przeczytaj 1719 01:10:55,620 --> 01:10:57,050 to od góry do dołu. 1720 01:10:57,050 --> 01:10:59,950 A ponieważ funkcje te są nazywane zgodnie z tym, co 1721 01:10:59,950 --> 01:11:02,910 nie, mój kod jest coraz bardziej czytelny. 1722 01:11:02,910 --> 01:11:05,190 I jak nasze programy uzyskać znacznie bardziej skomplikowane - 1723 01:11:05,190 --> 01:11:07,220 przez koniec semestru, będziesz pisać setek linii 1724 01:11:07,220 --> 01:11:10,970 kodu w językach takich jak PHP i JavaScript i podobne - 1725 01:11:10,970 --> 01:11:13,550 przekonasz się, że to o wiele łatwiejsze niż śledzić 1726 01:11:13,550 --> 01:11:14,080 co zrobiłeś. 1727 01:11:14,080 --> 01:11:15,810 A kiedy rozpocznie współpracę z przyjaciółmi lub 1728 01:11:15,810 --> 01:11:19,010 partnerów lub współpracowników, będziesz w stanie napisać dużo więcej 1729 01:11:19,010 --> 01:11:22,910 masywne programy zaczynając wykonywać te podstawowe 1730 01:11:22,910 --> 01:11:23,990 bloki. 1731 01:11:23,990 --> 01:11:25,550 >> Więc z tym powiedział, dlaczego nie nazwać to dzień? 1732 01:11:25,550 --> 01:11:27,190 I będziemy widzieć w środę. 1733 01:11:27,190 --> 01:11:33,611 [Aplauz]