1 00:00:00,000 --> 00:00:00,980 2 00:00:00,980 --> 00:00:04,410 >> [MUZYKA GRA] 3 00:00:04,410 --> 00:00:11,147 4 00:00:11,147 --> 00:00:12,230 David J. MALAN: Wszystko w porządku. 5 00:00:12,230 --> 00:00:16,440 Jest CS50, a to Jest koniec tygodnia 2. 6 00:00:16,440 --> 00:00:18,480 Więc dzisiaj, jedziemy kontynuować wygląd 7 00:00:18,480 --> 00:00:21,150 w jaki sposób przedstawiają rzeczy pod hood-- odejście 8 00:00:21,150 --> 00:00:23,520 z numerów, takich jak liczby całkowite i zmiennoprzecinkowych 9 00:00:23,520 --> 00:00:26,810 i koncentrując się na strunach i ostatecznie bardziej interesujące programy. 10 00:00:26,810 --> 00:00:30,140 Ale my też przyjrzeć Kilka specyficznych problems-- domeny 11 00:00:30,140 --> 00:00:33,620 z których pierwszy, być udziałem kryptografii, 12 00:00:33,620 --> 00:00:36,570 Sztuka kodowania informacji, , w którym można zobaczyć powyżej tutaj 13 00:00:36,570 --> 00:00:41,480 Jest to obraz Radio Orphan Annie Sekret pierścień dekoder z przeszłości. 14 00:00:41,480 --> 00:00:46,490 >> To jest rzeczywiście bardzo prymitywne formy i przyjazny dla dzieci postać z cryptopgraphy 15 00:00:46,490 --> 00:00:50,590 przy czym ten pierścień ma dwa disks-- jeden wewnątrz i jeden na zewnątrz. 16 00:00:50,590 --> 00:00:54,740 I obracając jedną z tych, można zasadniczo wyrównać litery jak 17 00:00:54,740 --> 00:00:59,520 -Z z innymi literami jak B do A. Innymi słowy 18 00:00:59,520 --> 00:01:03,730 można dosłownie obraca się alfabetu, a tym samym zbliża się z mapowaniem z 19 00:01:03,730 --> 00:01:07,820 litery do litery, tak że, jeśli chciał wysłać tajną wiadomość 20 00:01:07,820 --> 00:01:11,820 do kogoś takiego jak Annie, można napisać w dół wiadomości, a następnie obrócić 21 00:01:11,820 --> 00:01:15,370 litery, przy czym, jeśli masz na myśli powiedzieć "A", to zamiast powiedzieć "B", 22 00:01:15,370 --> 00:01:17,280 chcesz powiedzieć "B", Ci, zamiast powiedzieć, "C" - 23 00:01:17,280 --> 00:01:20,240 lub coś bardziej sprytna niż that-- i ostatecznie 24 00:01:20,240 --> 00:01:24,630 tak długo jak ma to dekoder Annie pierścień, ona może dekodować wiadomość. 25 00:01:24,630 --> 00:01:28,540 Teraz, być może pamiętasz, w rzeczywistości, że ten zastosowano w bardzo atrakcyjnej powłoki, która 26 00:01:28,540 --> 00:01:31,140 ad podczas odgrywa nauseum Bożego Narodzenia. 27 00:01:31,140 --> 00:01:32,650 Rzućmy okiem tutaj. 28 00:01:32,650 --> 00:01:35,294 29 00:01:35,294 --> 00:01:37,210 Ralphie Parker: "Czy to Wszystkie znane w skrócie 30 00:01:37,210 --> 00:01:41,000 że Ralph Parker zostaje mianowany członkiem Little Orphan Annie Tajemnicy 31 00:01:41,000 --> 00:01:44,860 Okrąg i ma prawo do wszystkich zaszczyty i korzyści występujące do niej. " 32 00:01:44,860 --> 00:01:47,410 >> Ralphie Parker (narrację): Podpisano Mała Orphan Annie. 33 00:01:47,410 --> 00:01:50,070 Kontrasygnaty, Pierre Andre! 34 00:01:50,070 --> 00:01:51,490 Atramentem. 35 00:01:51,490 --> 00:01:55,494 Zaszczytów i korzyści, już w wieku dziewięciu lat. 36 00:01:55,494 --> 00:01:57,402 >> [MUZYKA GRA] 37 00:01:57,402 --> 00:02:00,470 >> [RADIO paplanina] 38 00:02:00,470 --> 00:02:01,470 Ralphie Parker: Chodź. 39 00:02:01,470 --> 00:02:02,344 Zabierzmy się za to. 40 00:02:02,344 --> 00:02:06,029 Nie potrzebuję All That Jazz o przemytników i piratów. 41 00:02:06,029 --> 00:02:08,820 Spiker radiowy: Słuchaj jutro noc dla przygody końcowej 42 00:02:08,820 --> 00:02:11,060 The Black Pirate Ship. 43 00:02:11,060 --> 00:02:14,740 Teraz nadszedł czas na Annie Sekret dla ciebie wiadomość członków 44 00:02:14,740 --> 00:02:17,110 Secret Circle. 45 00:02:17,110 --> 00:02:20,700 Pamiętaj, dzieci, tylko członkowie z Annie Secret Circle 46 00:02:20,700 --> 00:02:23,270 może dekodować tajną wiadomość Annie. 47 00:02:23,270 --> 00:02:27,270 >> Pamiętaj, Annie zależy od Ciebie. 48 00:02:27,270 --> 00:02:30,060 Ustaw szpilki do B-2. 49 00:02:30,060 --> 00:02:34,004 Oto message-- 12, 11, 2-- 50 00:02:34,004 --> 00:02:36,503 Ralphie Parker (narrację): I jestem w moim pierwszym tajnym spotkaniu. 51 00:02:36,503 --> 00:02:40,041 Spiker radiowy: --25, 14, 11, 18, 16-- 52 00:02:40,041 --> 00:02:42,790 Ralphie Parker (narrację): Och, Pierre był w wielkiej dziś głosu. 53 00:02:42,790 --> 00:02:46,110 Mógłbym powiedzieć, że dzisiaj jest Wiadomość była bardzo ważna. 54 00:02:46,110 --> 00:02:47,930 >> Spiker radiowy: --3, 25. 55 00:02:47,930 --> 00:02:49,940 To wiadomość z Annie sama. 56 00:02:49,940 --> 00:02:52,182 Pamiętaj, nie mów nikomu. 57 00:02:52,182 --> 00:02:55,077 >> [Dysząc] 58 00:02:55,077 --> 00:02:57,285 Ralphie Parker (narrację): Dziewięćdziesiąt sekund później, jestem 59 00:02:57,285 --> 00:03:00,090 w jedynym pokoju w Dom, w którym chłopiec z dziewięciu 60 00:03:00,090 --> 00:03:04,380 może siedzieć w prywatność i dekodowania. 61 00:03:04,380 --> 00:03:04,990 Ah. 62 00:03:04,990 --> 00:03:05,680 "B." 63 00:03:05,680 --> 00:03:06,524 >> [Chichocze] 64 00:03:06,524 --> 00:03:08,684 >> Ralphie Parker (narrację): Poszedłem do następnego. 65 00:03:08,684 --> 00:03:09,610 "E." 66 00:03:09,610 --> 00:03:11,641 Pierwsze słowo to "być". 67 00:03:11,641 --> 00:03:12,140 Tak! 68 00:03:12,140 --> 00:03:14,293 To było teraz nadchodzi łatwiej. 69 00:03:14,293 --> 00:03:15,259 "U." 70 00:03:15,259 --> 00:03:16,225 >> [Chichocze] 71 00:03:16,225 --> 00:03:18,157 >> RANDY PARKER: Daj spokój, Ralphie. 72 00:03:18,157 --> 00:03:19,606 Muszę iść! 73 00:03:19,606 --> 00:03:21,538 >> Ralphie Parker: Zaraz będę się, mamo. 74 00:03:21,538 --> 00:03:22,504 Gee świst. 75 00:03:22,504 --> 00:03:25,402 76 00:03:25,402 --> 00:03:31,220 "T." "O." "Upewnij się, się. "" Pamiętaj, aby: "Co? 77 00:03:31,220 --> 00:03:33,981 Jaki był mały Orphan Annie chce powiedzieć? "Upewnij się, że" co z tego? 78 00:03:33,981 --> 00:03:35,522 MATKA: Ralphie, Randy musi odejść. 79 00:03:35,522 --> 00:03:36,735 Czy możesz wyjść? 80 00:03:36,735 --> 00:03:38,190 >> Ralphie Parker: Wszystko w porządku, mamo! 81 00:03:38,190 --> 00:03:39,787 Zaraz będę się! 82 00:03:39,787 --> 00:03:41,995 Ralphie Parker (narrację): Byłem coraz bliżej teraz. 83 00:03:41,995 --> 00:03:43,370 Napięcie było straszne. 84 00:03:43,370 --> 00:03:44,794 Co to było? 85 00:03:44,794 --> 00:03:47,656 Los planety może zawiesić w bilansie. 86 00:03:47,656 --> 00:03:50,518 >> MATKA: Ralphie, Randy ma się udać! 87 00:03:50,518 --> 00:03:53,635 >> Ralphie Parker: Zaraz będę się, na litość boską! 88 00:03:53,635 --> 00:03:55,343 Ralphie Parker (Narrację): Prawie tam! 89 00:03:55,343 --> 00:03:56,520 Moje palce poleciał! 90 00:03:56,520 --> 00:03:58,500 Mój umysł był pułapką stali. 91 00:03:58,500 --> 00:03:59,850 Każda pora drga. 92 00:03:59,850 --> 00:04:01,806 To było prawie jasne! 93 00:04:01,806 --> 00:04:02,773 Tak! 94 00:04:02,773 --> 00:04:03,273 Tak! 95 00:04:03,273 --> 00:04:03,773 Tak! 96 00:04:03,773 --> 00:04:04,740 Tak! 97 00:04:04,740 --> 00:04:10,250 >> Ralphie Parker: "Pamiętaj, pić swoją Ovaltine. " 98 00:04:10,250 --> 00:04:10,750 Ovaltine? 99 00:04:10,750 --> 00:04:14,864 100 00:04:14,864 --> 00:04:17,539 Kiepska reklama? 101 00:04:17,539 --> 00:04:19,439 >> [MUZYKA GRA] 102 00:04:19,439 --> 00:04:21,724 >> Ralphie Parker: Skurwysyn. 103 00:04:21,724 --> 00:04:23,460 >> [LAUGHING] 104 00:04:23,460 --> 00:04:27,070 >> David J. MALAN: Tak, że to jest spojrzenie na jakim kryptografii 105 00:04:27,070 --> 00:04:29,880 może być dla To-- a pić z przeszłości. 106 00:04:29,880 --> 00:04:30,900 Tak szybkie ogłoszenie. 107 00:04:30,900 --> 00:04:33,410 Jeśli jesteś wolny, to Piątek o godzinie 13:15 i będzie 108 00:04:33,410 --> 00:04:36,610 jak do nas dołączyć na CS50 obiad, udać się do tego adresu URL tutaj. 109 00:04:36,610 --> 00:04:38,080 Kto pierwszy, służyć jak zwykle. 110 00:04:38,080 --> 00:04:41,840 Ale z biegiem czasu, będziemy mieć pewność, że Najbardziej ktoś, którzy chcieliby wziąć udział 111 00:04:41,840 --> 00:04:43,640 może zaplanować mądry. 112 00:04:43,640 --> 00:04:45,170 >> Więc ciągi. 113 00:04:45,170 --> 00:04:47,940 Mamy Zamyla-- kogo już teraz spotkał się najprawdopodobniej 114 00:04:47,940 --> 00:04:50,750 Problem Zestaw 1-- w których nazwisko jest pisane w ten sposób. 115 00:04:50,750 --> 00:04:53,570 I załóżmy, że jej imię wpisane do programu komputerowego, który jest 116 00:04:53,570 --> 00:04:55,710 przy użyciu coś jak getString. 117 00:04:55,710 --> 00:04:57,890 W celu odzyskania te skróty klawiszowe, jak 118 00:04:57,890 --> 00:05:01,620 idziemy o reprezentowanie ciąg, słowo, ustęp, 119 00:05:01,620 --> 00:05:03,960 lub kilka liter, takie jak te tutaj? 120 00:05:03,960 --> 00:05:06,790 >> Rozmawialiśmy ostatnio o liczby całkowite i problemy 121 00:05:06,790 --> 00:05:09,960 które wynikają z liczby całkowitej przepełnienie i zmiennoprzecinkowych 122 00:05:09,960 --> 00:05:12,190 i problemy, które pojawiają się w ciągu precyzją. 123 00:05:12,190 --> 00:05:16,080 Z tekstem, że co najmniej mają nieco większą elastyczność 124 00:05:16,080 --> 00:05:17,970 bo Strings-- tylko w rzeczywistym world-- 125 00:05:17,970 --> 00:05:19,790 może być dość dowolna długość. 126 00:05:19,790 --> 00:05:21,055 Dość krótki, bardzo długo. 127 00:05:21,055 --> 00:05:23,680 Ale nawet wtedy, będziemy okaże się, że komputery mogą czasami 128 00:05:23,680 --> 00:05:27,200 zabrakło pamięci i nawet nie przechowywać wystarczająco duży ciąg. 129 00:05:27,200 --> 00:05:30,840 >> Ale teraz, zacznijmy wyobrażać ciąg jako coś w tych polach 130 00:05:30,840 --> 00:05:31,340 tutaj. 131 00:05:31,340 --> 00:05:36,410 Tak więc sześć tego rodzaju pudła, z których każda oznacza znak lub "char". 132 00:05:36,410 --> 00:05:40,646 Więc przypomnieć, że "char" - c-h--r-- jest jeden z wbudowanych typów danych w C 133 00:05:40,646 --> 00:05:43,520 I co miłe jest to, że można użyć tego rodzaju jako element, 134 00:05:43,520 --> 00:05:47,880 kawałek układanki, jeśli chcesz, aby utworzyć większy typ danych, które będziemy kontynuować 135 00:05:47,880 --> 00:05:49,410 wywołać "string". 136 00:05:49,410 --> 00:05:53,650 >> Teraz, co jest przydatne, o myślenie o takie rzeczy jak struny w ten sposób? 137 00:05:53,650 --> 00:05:57,720 Cóż, okazuje się, że możemy właściwie wykorzystać tę strukturę 138 00:05:57,720 --> 00:06:01,420 faktycznie dostęp do pojedynczych znaków w dość prosty sposób. 139 00:06:01,420 --> 00:06:04,099 Mam zamiar iść do przodu i tworzyć Plik o nazwie "stringzero.c" 140 00:06:04,099 --> 00:06:05,765 ale można nazwać to, co chcesz. 141 00:06:05,765 --> 00:06:08,500 Oraz na stronie internetowej kursu jest Już wcześniej w tym przykładzie, 142 00:06:08,500 --> 00:06:10,430 więc nie musisz się wpisz wszystkiego. 143 00:06:10,430 --> 00:06:13,820 >> I mam zamiar iść do przodu i najpierw zrobić int main pustkę. 144 00:06:13,820 --> 00:06:15,980 I w ciągu kilku dni, zaczniemy drażnić siebie 145 00:06:15,980 --> 00:06:19,070 co nieważne jest tutaj, dlaczego to int obok głównego, i tak dalej. 146 00:06:19,070 --> 00:06:21,180 Ale teraz, niech nadal skopiować wklej to. 147 00:06:21,180 --> 00:06:23,455 >> Mam zamiar zadeklarować ciąg nazwie s. 148 00:06:23,455 --> 00:06:26,920 I mam zamiar wrócić z GetString cokolwiek użytkownik wpisze. 149 00:06:26,920 --> 00:06:29,170 To będzie prosty Program, żadne instrukcje, 150 00:06:29,170 --> 00:06:31,336 Idę na oślep Spodziewam się, że użytkownik wie, 151 00:06:31,336 --> 00:06:32,600 co zrobić, aby nie komplikować. 152 00:06:32,600 --> 00:06:34,220 >> A teraz mam zamiar mieć do pętli. 153 00:06:34,220 --> 00:06:37,450 I wewnątrz mojej pętli for jestem będzie mieć int i dostaje zero. 154 00:06:37,450 --> 00:06:40,660 I ja jest, ponownie, po prostu konwencja, indeks zmiennej do liczenia, 155 00:06:40,660 --> 00:06:42,350 ale mogę nazwać to, co chcę. 156 00:06:42,350 --> 00:06:46,275 Mam zamiar zrobić i jest mniejsze niż: a Nazwa Zamyla jest długa sześć liter. 157 00:06:46,275 --> 00:06:48,150 Więc mam zamiar ciężko Kod, który jest teraz. 158 00:06:48,150 --> 00:06:49,730 >> A potem i ++. 159 00:06:49,730 --> 00:06:53,190 A teraz w środku z nich kręcone szelki Zamierzam zrobić printf, 160 00:06:53,190 --> 00:06:55,460 i chcę, aby wydrukować jedną literze. 161 00:06:55,460 --> 00:06:58,227 Więc mam zamiar wykorzystać% c na Może raz. 162 00:06:58,227 --> 00:07:00,560 A potem chcę wydrukować każdy postaci własnej linii. 163 00:07:00,560 --> 00:07:02,550 Więc mam zamiar umieścić trochę backslash n istnieje. 164 00:07:02,550 --> 00:07:03,640 Zamknij cytatu. 165 00:07:03,640 --> 00:07:06,250 >> A teraz chcę zrobić coś tutaj. 166 00:07:06,250 --> 00:07:10,610 Chcę wydrukować określonej litery w łańcuchu, 167 00:07:10,610 --> 00:07:13,670 e, jak ja iteracji od zera do sześciu. 168 00:07:13,670 --> 00:07:17,150 Innymi słowy, chcę wydrukować i'th charakter s. 169 00:07:17,150 --> 00:07:18,420 Teraz w jaki sposób można to zrobić? 170 00:07:18,420 --> 00:07:21,550 >> Oraz podobnie jak w pudełkach reprezentacja tutaj, 171 00:07:21,550 --> 00:07:25,560 rodzaj, wyczarować pojęcia boks litery, można podobnie zrobić 172 00:07:25,560 --> 00:07:32,630 składniowo w C po prostu określenie, Chcę wydrukować s: i'th charakteru. 173 00:07:32,630 --> 00:07:35,640 Korzystanie z nawiasów kwadratowych na klawiaturze komputera 174 00:07:35,640 --> 00:07:38,910 że na klawiaturze są USA ogólnie powyżej klucza powrotną. 175 00:07:38,910 --> 00:07:42,630 >> Więc to jest nie tak Jednak, jak można zauważyć. 176 00:07:42,630 --> 00:07:44,780 Ale mam zamiar rodzaju ślepo posunąć się naprzód tutaj. 177 00:07:44,780 --> 00:07:47,020 I mam zamiar zrobić, aby ciąg 0. 178 00:07:47,020 --> 00:07:50,860 Ale zanim to zrobisz, zobaczmy, czy możemy Nie można przewidzieć kilka typowych błędów. 179 00:07:50,860 --> 00:07:52,844 Czy to będzie skompilować? 180 00:07:52,844 --> 00:07:54,510 Nie, brakuje mi całą masę rzeczy. 181 00:07:54,510 --> 00:07:55,280 Biblioteki słyszałem. 182 00:07:55,280 --> 00:07:58,480 >> Więc, które pliki nagłówka Mógłbym dodać tutaj? 183 00:07:58,480 --> 00:07:59,205 Tak. 184 00:07:59,205 --> 00:08:01,580 >> PUBLICZNOŚCI: Musisz Standard I / O [niesłyszalne] 185 00:08:01,580 --> 00:08:02,663 >> David J. MALAN: Doskonały. 186 00:08:02,663 --> 00:08:06,060 Więc muszę Standardowe we / wy. Za to, co Celem chcę Standard I / O? 187 00:08:06,060 --> 00:08:06,670 Dla printf. 188 00:08:06,670 --> 00:08:09,220 Więc to stdio.h. 189 00:08:09,220 --> 00:08:13,490 I ty również zaproponować, że to Biblioteka CS50 z jakiego powodu? 190 00:08:13,490 --> 00:08:14,650 Mieć łańcuchy. 191 00:08:14,650 --> 00:08:17,780 Więc zobaczymy co Biblioteka CS50 jest robić 192 00:08:17,780 --> 00:08:19,260 do stworzenia tego pojęcia łańcucha. 193 00:08:19,260 --> 00:08:21,930 Ale teraz można tylko myśleć o nim jako o rzeczywistym typie danych. 194 00:08:21,930 --> 00:08:23,596 >> Tak, że wydaje się być trochę posprzątać. 195 00:08:23,596 --> 00:08:27,060 A teraz mam zamiar iść do przodu i rzeczywiście robią ciąg 0. 196 00:08:27,060 --> 00:08:27,700 Skompilowany. 197 00:08:27,700 --> 00:08:28,370 Tak, to jest dobre. 198 00:08:28,370 --> 00:08:32,799 Więc ./string0 pozwól mi przybliżyć więc możemy zobacz więcej ściśle, co się dzieje. 199 00:08:32,799 --> 00:08:33,850 Enter. 200 00:08:33,850 --> 00:08:37,789 Z--Y-M-L-wejść. 201 00:08:37,789 --> 00:08:39,440 I mamy wydrukowane nazwy Zamyla za. 202 00:08:39,440 --> 00:08:40,409 >> Więc to jest bardzo dobre. 203 00:08:40,409 --> 00:08:43,220 Teraz idziemy do przodu i ponownie uruchomić ten program, 204 00:08:43,220 --> 00:08:45,659 i wpisz się pełną nazwę Daven za. 205 00:08:45,659 --> 00:08:46,450 Niespodzianka, niespodzianka. 206 00:08:46,450 --> 00:08:48,021 Enter. 207 00:08:48,021 --> 00:08:48,520 Hmm. 208 00:08:48,520 --> 00:08:51,750 My nie drukowane Daven na pełne imię poprawnie. 209 00:08:51,750 --> 00:08:54,250 Teraz powinno być oczywiste retrospect powodu tego, co, 210 00:08:54,250 --> 00:08:57,010 rodzaj, głupie decyzje projektowe? 211 00:08:57,010 --> 00:08:59,590 >> Tak, trudno kodowane sześć wewnątrz mój pętli. 212 00:08:59,590 --> 00:09:01,610 Teraz zrobiłem to tylko dlatego, Wiedziałem, że w imię Zamyla 213 00:09:01,610 --> 00:09:02,776 to będzie sześć liter. 214 00:09:02,776 --> 00:09:04,720 Ale na pewno nie jest to ogólne rozwiązanie. 215 00:09:04,720 --> 00:09:07,720 Tak więc okazuje się, że można dynamicznie dowiedzieć się długość łańcucha 216 00:09:07,720 --> 00:09:10,440 przez wywołanie funkcji o nazwie strlen. 217 00:09:10,440 --> 00:09:12,840 >> Ponownie, celowo zwięźle nazwany po prostu 218 00:09:12,840 --> 00:09:14,450 aby uczynić go bardziej wygodne do pisania. 219 00:09:14,450 --> 00:09:17,170 Ale to jest synonimem się długość łańcucha. 220 00:09:17,170 --> 00:09:23,190 Mam zamiar wrócić do mojego terminalu okno i ponownie uruchomić kompilatora. 221 00:09:23,190 --> 00:09:24,170 Ale to na mnie krzyczeć. 222 00:09:24,170 --> 00:09:29,130 Niejawnie deklarowania funkcji biblioteki strlen z typu int const-- 223 00:09:29,130 --> 00:09:29,780 Jestem zagubiony. 224 00:09:29,780 --> 00:09:30,590 Całkowicie. 225 00:09:30,590 --> 00:09:32,940 >> Tak, zwłaszcza w swojej oczy zaczynają szkliwo 226 00:09:32,940 --> 00:09:36,000 komunikaty o błędach, takich jak ta, ostrości szczerze na kilka pierwszych słów. 227 00:09:36,000 --> 00:09:38,590 Wiemy, że problem jest w Linia 8, jak wskazano tutaj. 228 00:09:38,590 --> 00:09:40,500 I to jest w sznurek 0.c. 229 00:09:40,500 --> 00:09:43,580 Pośrednio oświadczając Funkcja biblioteki strlen. 230 00:09:43,580 --> 00:09:47,000 Tak, że będą się na ogół być wzór komunikatów o błędach. 231 00:09:47,000 --> 00:09:49,190 Niejawnie deklarując coś. 232 00:09:49,190 --> 00:09:53,250 >> Tak w skrócie, to, co wydawało się, że mają zrobili w stosunku do linii 8, tutaj. 233 00:09:53,250 --> 00:09:56,880 Co może być jeszcze rozwiązanie jeśli nigdy nie używane strlen siebie? 234 00:09:56,880 --> 00:09:58,907 >> PUBLICZNOŚCI: Część z innej biblioteki? 235 00:09:58,907 --> 00:10:00,740 David J. MALAN: Część innej bibliotece. 236 00:10:00,740 --> 00:10:02,400 Więc to jest zadeklarowana, że ​​tak powiem. 237 00:10:02,400 --> 00:10:07,510 Jest on wymieniony w jakimś pliku inne niż stdio.h i CS50.h. 238 00:10:07,510 --> 00:10:09,179 Teraz, gdy jest to określone? 239 00:10:09,179 --> 00:10:12,220 Aby być uczciwym, trzeba albo po prostu wiem to od szczytu głowy, 240 00:10:12,220 --> 00:10:13,640 lub google to i się dowiedzieć. 241 00:10:13,640 --> 00:10:18,150 Czy wiedzą o tym, jakie otworzyły się w CS50 Urządzanie program terminala, który 242 00:10:18,150 --> 00:10:22,200 jest po prostu duży, pełny ekran z wersją co znajduje się w dolnej części okna gedit jest. 243 00:10:22,200 --> 00:10:24,970 >> I okazuje się, że nie podobnie lakoniczne polecenie, zwany 244 00:10:24,970 --> 00:10:29,280 Człowiek do instrukcji, gdzie po wpisaniu w nazwa funkcji i naciśnij klawisz Enter, 245 00:10:29,280 --> 00:10:32,240 dostaniesz z powrotem dość Arcane dokumentacji. 246 00:10:32,240 --> 00:10:35,299 To jest tylko tekst, który zazwyczaj wygląda trochę coś takiego. 247 00:10:35,299 --> 00:10:37,090 To trochę przytłaczające na pierwszy rzut oka. 248 00:10:37,090 --> 00:10:39,048 Ale szczerze mówiąc mam zamiar niech moje oczy błyszczą 249 00:10:39,048 --> 00:10:41,930 i skupić się tylko na części Zależy mi na chwilę. 250 00:10:41,930 --> 00:10:42,780 >> Co jest tego. 251 00:10:42,780 --> 00:10:45,470 Która wygląda jak strukturalnie coś mi znać. 252 00:10:45,470 --> 00:10:48,080 Rzeczywiście strona człowieka, tak mówić, powie 253 00:10:48,080 --> 00:10:51,590 w jakim pliku funkcję nagłówka jak strlen jest zdefiniowany. 254 00:10:51,590 --> 00:10:54,170 Więc mam zamiar wrócić teraz do gedit. 255 00:10:54,170 --> 00:10:59,070 I mam zamiar iść do przodu i dodaj tutaj include 256 00:10:59,070 --> 00:11:00,480 i zapisz plik. 257 00:11:00,480 --> 00:11:04,300 >> Zamierzam wyczyścić ekran z Kontrola P Jeśli już zastanawiasz. 258 00:11:04,300 --> 00:11:08,210 I mam zamiar ponownie uruchomić make string.0, kompiluje ten czas. 259 00:11:08,210 --> 00:11:11,790 ./string.0 Zamyla. 260 00:11:11,790 --> 00:11:15,020 Wydawało się, że do pracy Pozwól mi odejść przed i uruchom go z Davenport. 261 00:11:15,020 --> 00:11:15,860 Enter. 262 00:11:15,860 --> 00:11:17,730 I to też wydawało się do pracy. 263 00:11:17,730 --> 00:11:21,220 >> Tak więc możemy zrobić to trochę lepiej niż, choć możemy zacząć sprzątać rzeczy 264 00:11:21,220 --> 00:11:23,257 się tylko trochę. 265 00:11:23,257 --> 00:11:25,590 I mam zamiar faktycznie wprowadzić jedną rzecz teraz. 266 00:11:25,590 --> 00:11:28,930 Mam zamiar iść do przodu i zapisać to w innym pliku. 267 00:11:28,930 --> 00:11:31,770 I mam zamiar zadzwonić Właśnie ten plik string1.c 268 00:11:31,770 --> 00:11:34,620 jest zgodny z kodem będzie można znaleźć w Internecie. 269 00:11:34,620 --> 00:11:37,050 >> I skupmy się na dokładnie takie same kodu. 270 00:11:37,050 --> 00:11:39,000 Okazuje się, że mam był rodzaj podejmowania 271 00:11:39,000 --> 00:11:42,600 za pewnik faktu, że moim laptopie, a to z kolei, urządzenie CS50 272 00:11:42,600 --> 00:11:47,450 ma dużo pamięci, dużo RAM, dużo bajtów przestrzeni 273 00:11:47,450 --> 00:11:48,920 , w którym można przechowywać ciągi. 274 00:11:48,920 --> 00:11:53,560 >> Ale rzeczywistość, jeśli wpisane długo wystarczająco dużo, i wystarczająco dużo klawiszy, 275 00:11:53,560 --> 00:11:56,170 Mogłem w rodzaju teorii w więcej znaków 276 00:11:56,170 --> 00:11:58,830 niż mojego komputera fizycznie posiada pamięć. 277 00:11:58,830 --> 00:11:59,830 I jest problematyczne. 278 00:11:59,830 --> 00:12:03,050 Podobnie jak int może tylko Liczba tak wysoka, teoretycznie 279 00:12:03,050 --> 00:12:06,600 można tylko dopchać tyle znaków do pamięci RAM komputera w dowolnej kolejności 280 00:12:06,600 --> 00:12:07,920 Dostępu do pamięci. 281 00:12:07,920 --> 00:12:11,140 >> Więc lepiej przewidywać ten problem, nawet 282 00:12:11,140 --> 00:12:13,660 choć może to być rzadkie Sprawa rogu, że tak powiem. 283 00:12:13,660 --> 00:12:15,670 Nie zdarza się, że często może się zdarzyć. 284 00:12:15,670 --> 00:12:18,815 A jeśli to się dzieje, a ja nie przewidywania i program do niego, 285 00:12:18,815 --> 00:12:20,300 mój program może robić, co kto wie. 286 00:12:20,300 --> 00:12:22,220 Zamrażać, powiesić, restart, cokolwiek. 287 00:12:22,220 --> 00:12:24,490 Coś Przewiduje może się zdarzyć. 288 00:12:24,490 --> 00:12:27,120 >> Więc co mam zrobić teraz, od tej pory tak naprawdę, 289 00:12:27,120 --> 00:12:31,630 I nigdy nie jest ślepo przed użyć zmiennej jak s, które 290 00:12:31,630 --> 00:12:36,790 została przypisana wartość zwracaną niektóre inne funkcje jak getString, 291 00:12:36,790 --> 00:12:40,200 Mam zamiar upewnić się, , że jego wartość jest prawidłowa. 292 00:12:40,200 --> 00:12:44,280 Tak wiem tylko ze po przeczytaniu Dokumentacja CS50 dla getString, 293 00:12:44,280 --> 00:12:49,020 co ostatecznie będziemy punktu, w, że zwraca szczególną getString symbol 294 00:12:49,020 --> 00:12:53,610 nazwie BRAK, N-U-P-P W sumie czapki, jeśli coś pójdzie nie tak. 295 00:12:53,610 --> 00:12:55,650 >> Tak normalnie, to zwraca łańcuch. 296 00:12:55,650 --> 00:12:59,700 Ale w przeciwnym razie, jeśli zwraca N-U-L-ja-- my w końcu zobaczyć, co to naprawdę 297 00:12:59,700 --> 00:13:01,790 means-- To oznacza, że coś złego się stało. 298 00:13:01,790 --> 00:13:05,560 Teraz oznacza to, podobnie jak na początku, Mogę sprawdzić stan tutaj w C, 299 00:13:05,560 --> 00:13:08,830 jeżeli S nie równy NULL. 300 00:13:08,830 --> 00:13:11,930 Więc jeśli nie widziałem tego wcześniej, Oznacza to po prostu nie ma sobie równych. 301 00:13:11,930 --> 00:13:15,290 >> Więc to jest przeciwieństwem równe równe, co pamiętam, 302 00:13:15,290 --> 00:13:18,940 różni się od pojedynczego równa, co jest przypisanie. 303 00:13:18,940 --> 00:13:23,030 Tak więc, jeśli y jest różny NULL, dopiero potem zrobić 304 00:13:23,030 --> 00:13:25,980 Chcę, aby wykonać te linie kodu. 305 00:13:25,980 --> 00:13:28,080 Tak więc, innymi słowy, Zanim zabierzesz się ślepo 306 00:13:28,080 --> 00:13:30,919 i rozpocząć iteracji powyżej s i traktując 307 00:13:30,919 --> 00:13:33,710 jakby to sekwencją znaków, mam zamiar najpierw sprawdzić, 308 00:13:33,710 --> 00:13:37,900 Chwileczkę, to na pewno nie s równa tej szczególnej wartości NULL? 309 00:13:37,900 --> 00:13:40,030 >> Bo jeśli tak, złe rzeczy mogą się zdarzyć. 310 00:13:40,030 --> 00:13:43,080 A teraz załóżmy, że złe rzeczy dzieje oznacza, awarii programu, 311 00:13:43,080 --> 00:13:45,070 i nie można zawsze odzyskać. 312 00:13:45,070 --> 00:13:46,800 Tak szczerze mówiąc, wygląda brzydsze. 313 00:13:46,800 --> 00:13:48,660 To trochę mylące teraz spojrzeć na. 314 00:13:48,660 --> 00:13:50,780 Będzie to jednak bardziej znać wkrótce. 315 00:13:50,780 --> 00:13:52,920 >> Ale mam zamiar zaproponować teraz jedna poprawa. 316 00:13:52,920 --> 00:13:54,660 To poprawa do poprawności. 317 00:13:54,660 --> 00:13:58,800 Mój program jest bardziej poprawne, ponieważ w rzadkich przypadkach, że mało pamięci 318 00:13:58,800 --> 00:14:01,180 istnieje, będę go obsługiwać, a ja po prostu nic nie robić. 319 00:14:01,180 --> 00:14:02,680 Ja przynajmniej nie padnie. 320 00:14:02,680 --> 00:14:05,000 >> Ale zróbmy ostateczną wersję. 321 00:14:05,000 --> 00:14:07,690 I plik o nazwie string2.c. 322 00:14:07,690 --> 00:14:10,190 Mam zamiar wkleić że sam kod na chwilę, 323 00:14:10,190 --> 00:14:14,210 i mam zamiar podkreślić to linia 11, tutaj, na chwilę. 324 00:14:14,210 --> 00:14:18,179 Teraz rzeczywistość jest, że inteligentne kompilatory jak Clang może naprawić to dla nas 325 00:14:18,179 --> 00:14:19,970 za kulisami bez naszej wiedząc. 326 00:14:19,970 --> 00:14:24,670 Ale pomyślmy o tym zasadniczo jako problematycznego projektu. 327 00:14:24,670 --> 00:14:29,010 >> Ta linia kodu jest, oczywiście, mówiąc: zainicjować jakąś zmienną i do 0. 328 00:14:29,010 --> 00:14:30,260 To całkiem proste. 329 00:14:30,260 --> 00:14:34,691 I znów jest to, co Oświadczenie, o, i ++, robi? 330 00:14:34,691 --> 00:14:37,066 Widzieliśmy to już wcześniej, ale tak naprawdę nie o tym mówić. 331 00:14:37,066 --> 00:14:37,900 >> PUBLICZNOŚCI: Zwiększanie i. 332 00:14:37,900 --> 00:14:39,191 >> David J. MALAN: Zwiększanie i. 333 00:14:39,191 --> 00:14:41,890 Tak na każdej iteracji poprzez to pętla, w każdym cyklu, 334 00:14:41,890 --> 00:14:43,570 jesteś zwiększając I o jeden. 335 00:14:43,570 --> 00:14:45,740 Więc robi się coraz większy i większy, i większe, aż pętla kończy. 336 00:14:45,740 --> 00:14:46,810 Jak to rozwiązać? 337 00:14:46,810 --> 00:14:49,430 Dobrze jest ten środkowy warunek, który używaliśmy wcześniej. 338 00:14:49,430 --> 00:14:52,500 Widziałeś w solucje w zestawie P. 339 00:14:52,500 --> 00:14:53,880 >> Ale co to powiedzenie? 340 00:14:53,880 --> 00:14:58,352 Wykonaj następującą pętlę tak długo, jak jest mniej niż co? 341 00:14:58,352 --> 00:14:59,810 PUBLICZNOŚCI: długość łańcucha. 342 00:14:59,810 --> 00:15:01,518 David J. MALAN: długość łańcucha. 343 00:15:01,518 --> 00:15:04,300 Tak to tłumaczy dość czysto język angielski w tym sensie. 344 00:15:04,300 --> 00:15:08,810 Teraz problemem jest to, że za każdym razem kiedy iteracji tej pętli w teorii, 345 00:15:08,810 --> 00:15:10,000 Pytam to pytanie. 346 00:15:10,000 --> 00:15:12,250 Jest i mniej niż długość łańcucha S? 347 00:15:12,250 --> 00:15:14,500 Jest i mniej niż długość łańcucha S? 348 00:15:14,500 --> 00:15:18,380 >> Teraz jest i zmienia się na każdej iteracji? 349 00:15:18,380 --> 00:15:18,880 Jest. 350 00:15:18,880 --> 00:15:19,629 Ze względu na ++. 351 00:15:19,629 --> 00:15:21,700 Więc każdej iteracji i jest coraz większe. 352 00:15:21,700 --> 00:15:25,411 Ale to s coraz większe, lub mniejsze lub w ogóle zmienia? 353 00:15:25,411 --> 00:15:25,910 Nie 354 00:15:25,910 --> 00:15:30,240 Tak pod względem wzornictwa, jednej z osi wzdłuż której staramy się ocenić kod 355 00:15:30,240 --> 00:15:32,610 w klasie, to czuje się trochę głupio. 356 00:15:32,610 --> 00:15:34,690 >> Jak jesteś dosłownie, na każdej iteracji 357 00:15:34,690 --> 00:15:37,110 z tej pętli prośbą cholera znowu to samo pytanie, 358 00:15:37,110 --> 00:15:40,770 i znowu, i znowu, i dosłownie to nigdy się nie zmieni. 359 00:15:40,770 --> 00:15:44,220 Przynajmniej, jeśli nie jestem dotykając s i stara się zmienić zawartość s. 360 00:15:44,220 --> 00:15:46,610 Więc można zrobić trochę lepiej. 361 00:15:46,610 --> 00:15:49,530 >> I co mam zamiar zrobić, nie jest zadeklarować tylko jedną zmienną i, 362 00:15:49,530 --> 00:15:53,330 ale druga zmienna będę arbitralnie, ale tradycyjnie, nazywają to n. 363 00:15:53,330 --> 00:15:55,940 Przypisać n równa Długość ciąg s. 364 00:15:55,940 --> 00:15:59,090 A następnie tutaj, będę zrobić sprytny mały optymalizacji, tak 365 00:15:59,090 --> 00:16:03,460 mówić, że na koniec dnia prawidłowe lub nie więcej nie mniej poprawne jest 366 00:16:03,460 --> 00:16:04,260 niż wcześniej. 367 00:16:04,260 --> 00:16:05,500 Ale to lepsze projektowanie. 368 00:16:05,500 --> 00:16:09,480 W tym, że używam mniej czasu, mniej cykli procesora, więc 369 00:16:09,480 --> 00:16:14,040 mówić, aby odpowiedzieć na to samo pytanie, ale tylko raz. 370 00:16:14,040 --> 00:16:17,870 >> Wszelkie pytania dotyczące tego generała Zasada poprawy, 371 00:16:17,870 --> 00:16:21,294 powiedzieć, efektywność danego programu? 372 00:16:21,294 --> 00:16:21,991 Tak? 373 00:16:21,991 --> 00:16:23,699 PUBLICZNOŚCI: Dlaczego użyj [niesłyszalne]? 374 00:16:23,699 --> 00:16:25,760 375 00:16:25,760 --> 00:16:27,010 David J. MALAN: Dobre pytanie. 376 00:16:27,010 --> 00:16:30,690 Dlaczego więc umieścić ++ na koniec I zamiast początek I? 377 00:16:30,690 --> 00:16:33,070 W tym przypadku ma brak wpływu funkcjonalny. 378 00:16:33,070 --> 00:16:36,670 A w ogóle, to mają tendencję do użyć operatora postfix 379 00:16:36,670 --> 00:16:41,750 więc, że jest to trochę bardziej jasne, jak kiedy operacja się dzieje. 380 00:16:41,750 --> 00:16:46,670 >> Dla tych nieznane, istnieje inna Oświadczenia w którym można zrobić ++ i. 381 00:16:46,670 --> 00:16:48,747 Są to funkcjonalnie w tym przypadku równoważne 382 00:16:48,747 --> 00:16:51,080 bo nie ma nic innego wokół tego zwiększania wartości. 383 00:16:51,080 --> 00:16:54,435 Ale można wymyślić przypadki i linie kodu 384 00:16:54,435 --> 00:16:55,810 , w którym robi różnicę. 385 00:16:55,810 --> 00:16:57,810 Tak ogólnie, nie mamy nawet mówić o tym. 386 00:16:57,810 --> 00:17:00,690 Bo szczerze mówiąc, to sprawia, że Kod bardziej seksownego i rodzaju płaszcz, 387 00:17:00,690 --> 00:17:01,776 i mniej znaków. 388 00:17:01,776 --> 00:17:04,859 Ale rzeczywistość jest to dużo trudniejsze, Myślę, że nawet dla mnie, by zakończyć swój umysł 389 00:17:04,859 --> 00:17:07,319 wokół niego czasami, kolejność operacji. 390 00:17:07,319 --> 00:17:09,750 Tak na marginesie, jeśli Naprawdę nie podoba mi się to, 391 00:17:09,750 --> 00:17:14,650 mimo, że jest to rodzaj sexy patrząc, można to zrobić również i + = 1, 392 00:17:14,650 --> 00:17:18,880 który jest efektowna wersja sam pomysł na Postfix zwiększania wartości. 393 00:17:18,880 --> 00:17:22,250 >> Mówię to i was powinna zabawy, 394 00:17:22,250 --> 00:17:25,140 ale przyjdziesz zobaczyć kod, jak coś pięknego przed długo. 395 00:17:25,140 --> 00:17:27,160 >> [Śmiech] 396 00:17:27,160 --> 00:17:28,410 >> David J. MALAN: Prawda? 397 00:17:28,410 --> 00:17:29,360 Tak. 398 00:17:29,360 --> 00:17:30,480 Pytanie w środku. 399 00:17:30,480 --> 00:17:32,146 >> PUBLICZNOŚCI: Czy chcesz powiedzieć, int n? 400 00:17:32,146 --> 00:17:34,020 David J. MALAN: Robisz nie trzeba powiedzieć int n. 401 00:17:34,020 --> 00:17:37,670 Tak dlatego, że już powiedziałem int, nie trzeba powiedzieć to jeszcze raz. 402 00:17:37,670 --> 00:17:41,820 Połów jest, że n musi są dane tego samego typu, jak i. 403 00:17:41,820 --> 00:17:43,310 Tak, że po prostu wygoda tutaj. 404 00:17:43,310 --> 00:17:44,058 Tak. 405 00:17:44,058 --> 00:17:47,806 >> PUBLICZNOŚCI: Czy można przejść Uchwyt wydrukować bohatera s ponownie? 406 00:17:47,806 --> 00:17:48,930 David J. MALAN: Absolutnie. 407 00:17:48,930 --> 00:17:52,110 Tak% c, przypominam od ostatniego czas, jest tylko symbolem zastępczym. 408 00:17:52,110 --> 00:17:53,930 Oznacza to umieścić char tutaj. 409 00:17:53,930 --> 00:17:56,780 backslash n, oczywiście, po prostu środki umieścić tutaj podział wiersza. 410 00:17:56,780 --> 00:17:59,540 Tak, że po prostu odchodzi, teraz, ten kawałek nowej składni. 411 00:17:59,540 --> 00:18:03,730 I to jest dosłownie mówiąc, grab ciąg nazywa ów i przejdź się jej 412 00:18:03,730 --> 00:18:06,050 charakter i'th, że tak powiem. 413 00:18:06,050 --> 00:18:10,590 >> I powtarzają charakter i'th ponieważ na każdej iteracji pętli 414 00:18:10,590 --> 00:18:14,540 To tak, jakbyśmy drukowania po pierwsze a wspornik 0, 415 00:18:14,540 --> 00:18:15,780 jako programista może powiedzieć. 416 00:18:15,780 --> 00:18:18,680 Następnie s wspornik 1, a następnie s Uchwyt 2, a następnie 3, po czym dodano 4. 417 00:18:18,680 --> 00:18:21,610 Ale oczywiście to jest zmienna, więc po prostu wyrazić to, i. 418 00:18:21,610 --> 00:18:23,900 >> Kluczem jest jednak to, aby zdać sobie sprawę, zwłaszcza jeśli nie mam 419 00:18:23,900 --> 00:18:26,358 zostały acclimating do tego świata programowania, w którym wszyscy 420 00:18:26,358 --> 00:18:28,950 wydają się liczyć od zera, musi zaczynają się od zera, teraz. 421 00:18:28,950 --> 00:18:35,130 Because smyczki, pierwszy znak, oo, w Zamyla jest na lepsze lub na gorsze 422 00:18:35,130 --> 00:18:40,490 będzie żył na numer miejsca zerowego. 423 00:18:40,490 --> 00:18:48,210 >> W porządku, więc pozwól mi przynieść nas z powrotem do Zamyla 424 00:18:48,210 --> 00:18:50,746 i zobaczyć, co się naprawdę dzieje pod powierzchnią okapu. 425 00:18:50,746 --> 00:18:52,370 Więc jest to pojęcie typu odlewu. 426 00:18:52,370 --> 00:18:53,800 Możesz mieć faktycznie grał z tym już, 427 00:18:53,800 --> 00:18:55,970 może dla hakera edycja P ustawione. 428 00:18:55,970 --> 00:19:00,320 Ale typ odlewu dotyczy tylko umiejętność w C i innych języków 429 00:19:00,320 --> 00:19:03,170 konwersji danych jednego typu do drugiego. 430 00:19:03,170 --> 00:19:05,450 >> Teraz, jak możemy to zobaczyć całkiem wprost? 431 00:19:05,450 --> 00:19:08,530 Więc to, wycofanie, jest początkiem z alfabetu angielskiego. 432 00:19:08,530 --> 00:19:11,265 I kontekst, przypomnieć, od jak tydzień temu jest ASCII. 433 00:19:11,265 --> 00:19:13,790 Amerykański Standard Code do wymiany informacji. 434 00:19:13,790 --> 00:19:17,080 Który jest po prostu bardzo długa droga mówić mapowanie z literami 435 00:19:17,080 --> 00:19:19,370 do liczb, a od liczb do liter. 436 00:19:19,370 --> 00:19:22,940 >> Więc przez M tutaj, DOT DOT kropki, linie się z, wycofanie, 437 00:19:22,940 --> 00:19:25,582 liczbę dziesiętną 65 na górę. 438 00:19:25,582 --> 00:19:27,290 I nie mów o tym wyraźnie, 439 00:19:27,290 --> 00:19:29,850 ale na pewno nie jest podobna numery za małe litery. 440 00:19:29,850 --> 00:19:30,820 I rzeczywiście, istnieją. 441 00:19:30,820 --> 00:19:33,730 Świat postanowił kilka lat temu, że mało, małe litery, 442 00:19:33,730 --> 00:19:35,020 będzie 97. 443 00:19:35,020 --> 00:19:38,010 I mały b będzie jako 98, i tak dalej. 444 00:19:38,010 --> 00:19:40,200 >> I dla każdego innego klawisza na klawiatura, nie 445 00:19:40,200 --> 00:19:42,190 będzie podobny wzór bitów. 446 00:19:42,190 --> 00:19:44,540 Lub równoważnie, liczba dziesiętna. 447 00:19:44,540 --> 00:19:47,110 Więc pytanie pod ręką, Następnie, jest to, jak możemy 448 00:19:47,110 --> 00:19:49,400 faktycznie zobaczyć to pod maską? 449 00:19:49,400 --> 00:19:51,539 Więc mam zamiar pójść do gedit ponownie. 450 00:19:51,539 --> 00:19:53,330 I zamiast typu to jedna z podstaw, 451 00:19:53,330 --> 00:19:55,330 Mam zamiar iść do przodu i wystarczy otworzyć coś 452 00:19:55,330 --> 00:19:58,350 z dzisiejszego kodu zwany ASCII zera. 453 00:19:58,350 --> 00:20:01,210 >> I ASCII zera wygląda tak. 454 00:20:01,210 --> 00:20:02,710 Więc nasze umysły owinąć wokół tego. 455 00:20:02,710 --> 00:20:04,969 Więc po pierwsze, ja skomentował Kod, który jest miły. 456 00:20:04,969 --> 00:20:07,010 Bo to dosłownie mówi mi, czego się spodziewać, 457 00:20:07,010 --> 00:20:08,950 wyświetlić odwzorowanie dla wielkich liter. 458 00:20:08,950 --> 00:20:13,690 Teraz nie bardzo wiem, co mam przez to na myśli, więc niech to wywnioskować. 459 00:20:13,690 --> 00:20:16,870 >> W języku angielskim, może nieco technika angielski, 460 00:20:16,870 --> 00:20:20,660 linia 18, co wydaje się nie się robi dla nas? 461 00:20:20,660 --> 00:20:21,500 Tylko linia 18. 462 00:20:21,500 --> 00:20:22,430 Co to wywoływania? 463 00:20:22,430 --> 00:20:25,192 Co idzie skopać tutaj? 464 00:20:25,192 --> 00:20:26,100 >> PUBLICZNOŚCI: pętla. 465 00:20:26,100 --> 00:20:26,630 >> David J. MALAN: pętla. 466 00:20:26,630 --> 00:20:28,463 A ile razy jest że będzie iteracyjne? 467 00:20:28,463 --> 00:20:31,562 468 00:20:31,562 --> 00:20:33,270 PUBLICZNOŚCI: [wstawienie GŁOSÓW] sześć razy. 469 00:20:33,270 --> 00:20:34,830 David J. MALAN: Nie sześć razy. 470 00:20:34,830 --> 00:20:35,840 PUBLICZNOŚCI: 26 razy. 471 00:20:35,840 --> 00:20:36,560 David J. MALAN: 26 razy. 472 00:20:36,560 --> 00:20:37,060 Tak, przepraszam. 473 00:20:37,060 --> 00:20:37,960 26 razy. 474 00:20:37,960 --> 00:20:38,460 Dlaczego? 475 00:20:38,460 --> 00:20:41,590 Dobrze, że to trochę dziwne, ale Zacząłem liczyć od 65. 476 00:20:41,590 --> 00:20:43,300 Co jest dziwne, ale nie jest źle. 477 00:20:43,300 --> 00:20:44,610 To nie jest złe na powiedzieć. 478 00:20:44,610 --> 00:20:46,980 I robię, że tylko bo, na ten przykład, 479 00:20:46,980 --> 00:20:50,455 Jestem rodzaju przewidywanie że kapitał był 65. 480 00:20:50,455 --> 00:20:53,330 Teraz nie jest to najbardziej eleganckie sposobem na to, aby rodzaj dysku kodu 481 00:20:53,330 --> 00:20:56,130 wartości ezoteryczne, że nikt nie się nie spodziewał, aby pamiętać. 482 00:20:56,130 --> 00:21:00,155 >> Ale teraz, zauważysz, że jestem robi się przez 65 Plus 26. 483 00:21:00,155 --> 00:21:03,030 Bo podobno nawet nie chcą zrobić arytmetykę w głowie. 484 00:21:03,030 --> 00:21:04,440 Więc dam kompilator zrobić. 485 00:21:04,440 --> 00:21:08,600 Ale wtedy na każdej pętli, każda iteracja pętli, mam zwiększając i. 486 00:21:08,600 --> 00:21:10,196 >> Tak teraz wygląda to trochę tajemnicze. 487 00:21:10,196 --> 00:21:13,320 Ale powinniśmy mieć podstawową budynku bloki z których to zrozumieć. 488 00:21:13,320 --> 00:21:15,510 % C jest tylko symbolem zastępczym char. 489 00:21:15,510 --> 00:21:19,010 % I jest symbolem zastępczym dla wew. 490 00:21:19,010 --> 00:21:23,310 I okazuje się, że za pomocą tego Nowa składnia, ten nawias, więc 491 00:21:23,310 --> 00:21:26,100 mówić, więc typ danych wewnątrz nawiasów, 492 00:21:26,100 --> 00:21:32,270 Mogę zmusić kompilator do leczenia I nie jest liczbą całkowitą, ale jako char. 493 00:21:32,270 --> 00:21:35,520 >> Co pokazuje mi znak równoważne z tym numerem. 494 00:21:35,520 --> 00:21:37,986 Teraz tu, to kod jest prawie identyczna. 495 00:21:37,986 --> 00:21:39,860 Chciałem tylko, aby Fakt bardzo wyraźny 496 00:21:39,860 --> 00:21:42,095 że zaczynam na 97, który jest małe litery. 497 00:21:42,095 --> 00:21:44,080 Na górę przez 26 więcej liter. 498 00:21:44,080 --> 00:21:46,970 A ja doing-- ponownie, odlewania i, że tak powiem. 499 00:21:46,970 --> 00:21:49,160 Lub wpisz odlewania i, że tak powiem. 500 00:21:49,160 --> 00:21:51,420 >> Z int do char. 501 00:21:51,420 --> 00:21:55,760 Tak więc efekt końcowy będzie, szczerze mówiąc, informacja już wiemy. 502 00:21:55,760 --> 00:21:59,411 Mam zamiar zrobić ASCII-0 nie dot-- kropka c. 503 00:21:59,411 --> 00:22:02,160 Zauważ, że można zapewne błąd jak ja po prostu nie przypadkowo. 504 00:22:02,160 --> 00:22:03,820 Dodać ASCII 0. 505 00:22:03,820 --> 00:22:06,090 Teraz mam zamiar zrobić ./ascii-0. 506 00:22:06,090 --> 00:22:09,050 Będę powiększyć, i niestety to będzie przewijać się na ekranie. 507 00:22:09,050 --> 00:22:15,060 Ale widzimy cały schemat gdzie mapy do 97, b mapy do 98, 508 00:22:15,060 --> 00:22:18,931 i jeśli przewinąć dalej Oczywiście, mapy do 65. 509 00:22:18,931 --> 00:22:21,180 Więc jest to tylko powiedzieć, że co byliśmy głosząc, 510 00:22:21,180 --> 00:22:25,310 Równoważność ta nie jest, jest W rzeczywistości w przypadku rzeczywistości. 511 00:22:25,310 --> 00:22:28,000 Tak więc szybkie zmiany tego. 512 00:22:28,000 --> 00:22:31,220 Pozwól mi otworzyć ASCII 1.C. 513 00:22:31,220 --> 00:22:38,070 Ten sprytny i zauważyć, sortowania o wyjaśnienie tego. 514 00:22:38,070 --> 00:22:41,770 To jest ASCII-1.c i zauważyć tego szalonego. 515 00:22:41,770 --> 00:22:45,120 >> I to naprawdę robi się do serca z tego, co robią komputery. 516 00:22:45,120 --> 00:22:48,150 Mimo, że my, ludzie, byłoby Nie liczyć się względem letters-- 517 00:22:48,150 --> 00:22:50,380 Nie mam zacząć myśleć, wszystko w porządku, a następnie b, 518 00:22:50,380 --> 00:22:52,590 i używać tych liczyć obiektów fizycznych. 519 00:22:52,590 --> 00:22:58,680 Można oczywiście powiedzieć, że chcę zainicjować jakąś zmienną C-- 520 00:22:58,680 --> 00:23:03,220 ale może nazwałem to anything-- więc c jest inicjowany kapitałowej A. 521 00:23:03,220 --> 00:23:07,560 >> Bo na koniec dnia, w komputerze nie obchodzi mnie, co ty przechowywania, 522 00:23:07,560 --> 00:23:10,170 to tylko zależy, jak chcesz przedstawienia tych informacji. 523 00:23:10,170 --> 00:23:13,560 Jak chcesz komputer do interpretacji tego wzoru bitów? 524 00:23:13,560 --> 00:23:16,320 Więc to nie jest coś, co na ogół to polecam. 525 00:23:16,320 --> 00:23:19,500 To naprawdę tylko przykład do przekazać, że można całkowicie 526 00:23:19,500 --> 00:23:22,049 zainicjować liczbę całkowitą do char. 527 00:23:22,049 --> 00:23:24,090 Ponieważ pod kaptur z char, oczywiście, 528 00:23:24,090 --> 00:23:26,170 tylko liczbę od 0 do 255. 529 00:23:26,170 --> 00:23:28,540 >> Z pewnością można więc umieścić go wewnątrz int. 530 00:23:28,540 --> 00:23:30,890 I co to też pokazuje, że my 531 00:23:30,890 --> 00:23:34,040 można konwertować z jednego typu do innego, tutaj, 532 00:23:34,040 --> 00:23:36,780 ostatecznie drukowanie samo. 533 00:23:36,780 --> 00:23:44,760 A w rzeczywistości, to będzie to naprawić online-- miał powiedzieć, znowu tutaj. 534 00:23:44,760 --> 00:23:48,610 Pozwól mi to posprzątać w Internecie, a my zobacz w przewodniku internetowym, ile potrzeba, 535 00:23:48,610 --> 00:23:50,280 co miało na nie. 536 00:23:50,280 --> 00:23:50,960 >> OK. 537 00:23:50,960 --> 00:23:53,892 Więc teraz udziałem ostatni przykład A i B i wtedy będziemy 538 00:23:53,892 --> 00:23:54,850 wziąć się w garść. 539 00:23:54,850 --> 00:23:58,330 Tak więc z tych i B i c w kapitalizacji 540 00:23:58,330 --> 00:24:01,560 i ich równoważności, niech spojrzeć na ten przykład tutaj. 541 00:24:01,560 --> 00:24:02,752 Kolejny przykład kodu. 542 00:24:02,752 --> 00:24:04,460 Będziemy otworzyć taki, który jest już wykonane, więc 543 00:24:04,460 --> 00:24:06,440 nie trzeba go wpisać wszystko się od podstaw. 544 00:24:06,440 --> 00:24:09,420 >> I zauważyć, w oczekiwaniu używamy wielu nagłówek 545 00:24:09,420 --> 00:24:13,240 plików, z których to nasz nowy przyjaciel, string.h. 546 00:24:13,240 --> 00:24:15,597 Teraz to wygląda, na pierwszy spojrzenie, trochę tajemnicze. 547 00:24:15,597 --> 00:24:18,180 Ale zobaczmy, czy nie możemy rozumować przez to, co się tutaj dzieje. 548 00:24:18,180 --> 00:24:21,150 Pierwszy pojawia się ciąg od użytkownika, i umieścić ten ciąg w zmiennej 549 00:24:21,150 --> 00:24:22,286 zwane s. 550 00:24:22,286 --> 00:24:24,090 Kopiuj wklej od wcześniej. 551 00:24:24,090 --> 00:24:27,250 W linii 22, jestem widocznie robi dokładnie to, co 552 00:24:27,250 --> 00:24:30,760 Zrobiłem przed chwilą, jestem iteracji ciągu znaków s. 553 00:24:30,760 --> 00:24:34,780 >> Oraz nowe triki są tu za pomocą długość łańcucha, niewielka optymalizacja 554 00:24:34,780 --> 00:24:37,930 przechowywania długość ciągu w N, raczej niż dzwonienie ponownie strlen, 555 00:24:37,930 --> 00:24:38,850 i znowu, i znowu. 556 00:24:38,850 --> 00:24:41,120 I po prostu sprawdzenie, czy i jest mniejsze od n. 557 00:24:41,120 --> 00:24:43,330 Teraz tutaj, robi się mało interesujące. 558 00:24:43,330 --> 00:24:45,980 Ale to tylko aplikacja z tej samej nowej idei. 559 00:24:45,980 --> 00:24:48,470 Co robi w angielski s uchwyt i reprezentują? 560 00:24:48,470 --> 00:24:51,772 561 00:24:51,772 --> 00:24:54,260 >> PUBLICZNOŚCI: Liczenie każdego znak [niesłyszalne]. 562 00:24:54,260 --> 00:24:55,926 >> David J. MALAN: Liczenie każdy znak. 563 00:24:55,926 --> 00:24:58,680 I jeszcze bardziej zwięźle, s uchwyt i reprezentują co? 564 00:24:58,680 --> 00:25:00,950 Czy można powiedzieć. 565 00:25:00,950 --> 00:25:04,084 Aby nie narazić Cię na miejscu tutaj. 566 00:25:04,084 --> 00:25:06,375 >> PUBLICZNOŚCI: Well-- 567 00:25:06,375 --> 00:25:09,500 David J. MALAN: Więc jeśli słowo jest-- jeśli Ciąg Zamyla, które starts-- 568 00:25:09,500 --> 00:25:12,380 PUBLICZNOŚCI: --you czynienia z znaki separately-- 569 00:25:12,380 --> 00:25:13,690 David J. MALAN: Dobra. 570 00:25:13,690 --> 00:25:14,190 Dokładnie. 571 00:25:14,190 --> 00:25:17,940 Notacji nawias kwadratowy pozwala aby uzyskać dostęp do każdego znaku indywidualnie, 572 00:25:17,940 --> 00:25:21,120 tak e wspornik 0 będzie Pierwszy znak w ciągu. 573 00:25:21,120 --> 00:25:24,110 s Uchwyt 1 będzie Po drugie, i tak dalej. 574 00:25:24,110 --> 00:25:28,050 Więc pytanie Pytam, tu, w tym stanie jest co? 575 00:25:28,050 --> 00:25:33,984 Czy i'th charakter ów Wielkopolski niż lub równa na małe? 576 00:25:33,984 --> 00:25:36,400 A co to znaczy, tutaj, z podwójnymi znaków handlowego? 577 00:25:36,400 --> 00:25:36,800 Wszystkich (razem): I. 578 00:25:36,800 --> 00:25:37,210 David J. MALAN: I. 579 00:25:37,210 --> 00:25:38,418 To jest po prostu odpowiednikiem tego. 580 00:25:38,418 --> 00:25:42,310 I nie jest to słowo kluczowe w C, trzeba Zastosowanie, irytująco, Ampersand Ampersand. 581 00:25:42,310 --> 00:25:47,520 I to, i odwrotnie, jest pytaniem jest y na i'th charakteru mniejsza lub równa 582 00:25:47,520 --> 00:25:49,030 na małe litery z? 583 00:25:49,030 --> 00:25:52,440 I znowu, oto gdzie zrozumienie podstawowa 584 00:25:52,440 --> 00:25:54,550 Wdrożenie Komputer ma sens. 585 00:25:54,550 --> 00:25:57,330 Zauważ, że, mimo że mam kropka kropka kropka tam, 586 00:25:57,330 --> 00:26:04,410 wygląda do z małymi literami są wszystkie wartości sąsiadujących up od 97 wzwyż. 587 00:26:04,410 --> 00:26:07,820 >> I sam na wielkie litery, począwszy od 65. 588 00:26:07,820 --> 00:26:10,410 Więc na wynos, a następnie, jest to, że w języku angielskim, 589 00:26:10,410 --> 00:26:12,760 Jak opisałbyś Linia 24 jest, co robi? 590 00:26:12,760 --> 00:26:15,736 591 00:26:15,736 --> 00:26:16,728 Tak? 592 00:26:16,728 --> 00:26:21,575 >> PUBLICZNOŚCI: W dniu 24 to sprawdzając czy każda postać jest małe. 593 00:26:21,575 --> 00:26:24,700 David J. MALAN: To sprawdzenie, czy każdy znak jest małą literą. 594 00:26:24,700 --> 00:26:28,590 Więc jeszcze bardziej zwięźle, jest i'th charakter s małymi literami? 595 00:26:28,590 --> 00:26:30,690 To wszystko, co mamy wyrażania tutaj logicznie, 596 00:26:30,690 --> 00:26:33,750 trochę tajemniczo, ale ostatecznie całkiem wprost. 597 00:26:33,750 --> 00:26:36,480 Czy s na i'th postaci małej litery? 598 00:26:36,480 --> 00:26:40,130 >> Jeśli tak, a tu, gdzie wszystko trochę umysł gięcia 599 00:26:40,130 --> 00:26:44,760 na chwilę, jeśli tak, przejdź do przodu i wydrukować znak. 600 00:26:44,760 --> 00:26:47,360 Więc jest to tylko symbol zastępczy, ale jaki charakter? 601 00:26:47,360 --> 00:26:53,710 Dlaczego to robię y wspornik I minus to wyrażenie tutaj? 602 00:26:53,710 --> 00:26:55,110 >> Również zauważyć wzór tutaj. 603 00:26:55,110 --> 00:26:57,380 Rzeczywiste liczby nie mają znaczenia tak dużo. 604 00:26:57,380 --> 00:27:02,700 Ale zauważ, że 97 jest jak daleko od 65? 605 00:27:02,700 --> 00:27:03,560 >> PUBLICZNOŚCI: 32. 606 00:27:03,560 --> 00:27:04,480 >> David J. MALAN: 32. 607 00:27:04,480 --> 00:27:06,890 Jak daleko jest 98 od 66? 608 00:27:06,890 --> 00:27:07,740 >> PUBLICZNOŚCI: 32. 609 00:27:07,740 --> 00:27:09,890 >> David J. MALAN: Mała c z wielkim C? 610 00:27:09,890 --> 00:27:10,420 32. 611 00:27:10,420 --> 00:27:14,550 Więc jest 32 chmielu z jedną literę do drugiego. 612 00:27:14,550 --> 00:27:17,790 Tak szczerze mówiąc, może uprościć to do tego. 613 00:27:17,790 --> 00:27:20,400 Ale to ja jestem niby twardy kodowania Ten niski poziom zrozumienia 614 00:27:20,400 --> 00:27:21,740 że nigdy nie jest czytnik zrozumie. 615 00:27:21,740 --> 00:27:25,080 Więc będę uogólniać go jak ja wiem małe litery są większe. 616 00:27:25,080 --> 00:27:28,400 Wiem, że litery są mniejsze wartości, jak na ironię. 617 00:27:28,400 --> 00:27:33,216 >> Jest to jednak skutecznie równoważna mówiąc odjąć 32 od S wspornika i. 618 00:27:33,216 --> 00:27:35,430 Tak więc w ramach niniejszego liter, jeśli litery 619 00:27:35,430 --> 00:27:38,950 dzieje się, małe , i odjąć 32, 620 00:27:38,950 --> 00:27:43,442 jaki wpływ to ma, matematycznie, na małe litery? 621 00:27:43,442 --> 00:27:44,400 PUBLICZNOŚCI: Capitalizes-- 622 00:27:44,400 --> 00:27:45,691 David J. MALAN: aktywuje go. 623 00:27:45,691 --> 00:27:48,440 I rzeczywiście, to dlaczego nasze Program nazywa się wykorzystać zero. 624 00:27:48,440 --> 00:27:51,590 Ten program albo aktywuje do nas, 625 00:27:51,590 --> 00:27:54,580 Po sprawdzeniu, czy jest rzeczywiście mała litera. 626 00:27:54,580 --> 00:27:59,810 W przeciwnym razie, w linii 30, co zrobić, jeśli to nie jest mała litera, że ​​jestem 627 00:27:59,810 --> 00:28:02,852 patrząc w szczególności iteracji w pętli. 628 00:28:02,852 --> 00:28:03,890 Wystarczy go wydrukować. 629 00:28:03,890 --> 00:28:07,010 >> Więc nie zmieniają rzeczy to nie jest nawet małe. 630 00:28:07,010 --> 00:28:10,790 Ograniczyć się do Trochę przez trochę z. 631 00:28:10,790 --> 00:28:12,730 Teraz jest to dość zaawansowanych. 632 00:28:12,730 --> 00:28:15,230 A na koniec dnia, to to w jaki sposób, raz po raz, 633 00:28:15,230 --> 00:28:16,460 miał do wykonania rzeczy. 634 00:28:16,460 --> 00:28:19,780 Gdybym zamiast otworzyć wykorzystać jeden, oh dzięki Bogu. 635 00:28:19,780 --> 00:28:22,320 Jest to funkcja nazywa się górna, które mogą 636 00:28:22,320 --> 00:28:25,410 zrobić wszystko, co po prostu nie na stosunkowo niskim poziomie. 637 00:28:25,410 --> 00:28:28,752 >> Teraz do górnej ciekawe ponieważ jest zadeklarowana w pliku, 638 00:28:28,752 --> 00:28:31,210 i nie wiesz, że to tylko przez sprawdzenie dokumentacji, 639 00:28:31,210 --> 00:28:35,730 i powiedziano nam, powiedzmy, w klasie, w której istnieje, w pliku o nazwie ctype.h. 640 00:28:35,730 --> 00:28:37,630 Tak więc jest to kolejny nowy nasz przyjaciel. 641 00:28:37,630 --> 00:28:40,750 I robi dokładnie górna , co sugeruje jego nazwa. 642 00:28:40,750 --> 00:28:44,860 >> Możesz przekazać w, jako argument, między te nawiasy, niektóre postaci. 643 00:28:44,860 --> 00:28:48,390 Mam zamiar przejść w i'th charakteru S za pomocą naszego ochotę na nowy zapis 644 00:28:48,390 --> 00:28:49,870 udziałem nawiasów kwadratowych. 645 00:28:49,870 --> 00:28:53,391 I zgadywać, co jest powrót Wartość górna najwyraźniej dzieje się 646 00:28:53,391 --> 00:28:53,890 być? 647 00:28:53,890 --> 00:28:56,460 648 00:28:56,460 --> 00:28:57,770 Litera. 649 00:28:57,770 --> 00:28:58,620 Litera. 650 00:28:58,620 --> 00:29:02,330 >> Więc jeśli mogę przekazać małymi literami a, miejmy nadzieję, że z definicji do górnej, 651 00:29:02,330 --> 00:29:05,600 to będzie powrót wielkie A. W przeciwnym razie, 652 00:29:05,600 --> 00:29:08,590 jeśli to nie jest mała litera w Pierwsze miejsce, po prostu go wydrukować. 653 00:29:08,590 --> 00:29:10,800 I rzeczywiście, zauważyć Drugi przyjaciel. 654 00:29:10,800 --> 00:29:13,840 Nie tylko do górnej istnieje, ale jest niższa, co 655 00:29:13,840 --> 00:29:16,200 rzeczywiście odpowiada na to pytanie dla mnie. 656 00:29:16,200 --> 00:29:19,730 >> Teraz każdy, kto napisał te rzeczy, 10s lat temu, wiesz co? 657 00:29:19,730 --> 00:29:23,840 Realizowany jest na górnej i obniżyć za pomocą kodu w ten sposób. 658 00:29:23,840 --> 00:29:27,270 Jednakże ponownie, zgodnie z idea abstrahując od hotelu, 659 00:29:27,270 --> 00:29:29,190 rodzaj, niższy poziom szczegóły realizacji. 660 00:29:29,190 --> 00:29:32,600 I stoi na barkach ludzi , którzy byli przed nami, za pomocą funkcji 661 00:29:32,600 --> 00:29:36,300 podobne do górnej i dolnej, które tyle cudownie są ładnie 662 00:29:36,300 --> 00:29:40,190 o nazwie powiedzieć, co robią, jest wspaniałe przyjęcie paradygmatu. 663 00:29:40,190 --> 00:29:44,040 >> Teraz okazuje się, że jeśli czytam Strona man dla, powiedzmy, do górnej, 664 00:29:44,040 --> 00:29:45,010 Uczę się czegoś innego. 665 00:29:45,010 --> 00:29:46,890 Więc człowiek TOUPPER. 666 00:29:46,890 --> 00:29:48,050 To trochę przytłaczające. 667 00:29:48,050 --> 00:29:51,110 Ale informacja, oto, że wzmianka o nagłówek pliku, który należy użyć. 668 00:29:51,110 --> 00:29:54,460 Tak na marginesie, bo to wprowadza w błąd, funkcja 669 00:29:54,460 --> 00:29:59,070 używa ints zamiast znaków ze względu na kontrolę błędów. 670 00:29:59,070 --> 00:30:01,260 Ale my może przyjść powrotem do tego w przyszłości. 671 00:30:01,260 --> 00:30:05,910 >> Ale zauważ, tutaj, do górnych nawróconych Litera c na wielkie litery, jeśli to możliwe. 672 00:30:05,910 --> 00:30:07,674 Więc to jest bardzo proste. 673 00:30:07,674 --> 00:30:09,340 A teraz trochę bardziej szczegółowe. 674 00:30:09,340 --> 00:30:12,750 Spójrzmy na części Strona człowiek pod wartości zwracanej. 675 00:30:12,750 --> 00:30:15,420 Zwracana jest wartość przekształconej litery. 676 00:30:15,420 --> 00:30:18,690 Lub c, w przypadku konwersji Nie było to możliwe, 677 00:30:18,690 --> 00:30:20,250 gdzie c jest przy wejściowego. 678 00:30:20,250 --> 00:30:24,140 Które znam stąd, z argument do górnej. 679 00:30:24,140 --> 00:30:25,780 >> Tak więc to, co jest na wynos z tego? 680 00:30:25,780 --> 00:30:28,060 Zwracana jest wartość przekształconej litery, 681 00:30:28,060 --> 00:30:32,110 i c, przy litera, jeżeli konwersji nie było możliwe. 682 00:30:32,110 --> 00:30:36,460 Co można zatem poprawa wprowadzić do projektu mojego kodu za? 683 00:30:36,460 --> 00:30:37,146 Tak? 684 00:30:37,146 --> 00:30:38,810 >> PUBLICZNOŚCI: Możesz usunąć indziej. 685 00:30:38,810 --> 00:30:40,810 David J. MALAN: mogę usunąć oświadczenie innego, 686 00:30:40,810 --> 00:30:42,510 i to nie tylko oświadczenie indziej. 687 00:30:42,510 --> 00:30:44,150 >> PUBLICZNOŚCI: Możesz usunąć [niesłyszalne]. 688 00:30:44,150 --> 00:30:46,310 >> David J. MALAN: mogę usunąć cały widelec 689 00:30:46,310 --> 00:30:48,209 w drodze, czy też w ogóle. 690 00:30:48,209 --> 00:30:50,250 Więc rzeczywiście, pozwól mi otworzyć Ostateczna wersja tego, 691 00:30:50,250 --> 00:30:55,540 wykorzystać-2 i zauważyć, jak, jeśli będziesz, sexy, kod jest teraz coraz, 692 00:30:55,540 --> 00:31:00,040 się, że mam obniżone od niektórych siedem lub tak do tylko cztery linie, 693 00:31:00,040 --> 00:31:03,850 Funkcjonalność, że zamierzałem po prostu dzwoniąc do górnej, 694 00:31:03,850 --> 00:31:09,410 przekazując ów wspornika I i drukowania z, z zastępczego% c, 695 00:31:09,410 --> 00:31:11,090 że szczególny charakter. 696 00:31:11,090 --> 00:31:14,560 >> Teraz prawdopodobnie nie jest to błąd, lub przynajmniej ryzyko błędu, 697 00:31:14,560 --> 00:31:15,350 w tym programie. 698 00:31:15,350 --> 00:31:18,200 Tak po prostu wrócić do wcześniejszego dania na wynos, 699 00:31:18,200 --> 00:31:21,820 Co mam zrobić w prawdopodobnie również ten program, aby to bardziej wytrzymałe, 700 00:31:21,820 --> 00:31:24,974 tak, że nie ma mowy, to może upaść, nawet w rzadkich przypadkach? 701 00:31:24,974 --> 00:31:26,390 PUBLICZNOŚCI: Upewnij się, że nie jest NULL. 702 00:31:26,390 --> 00:31:28,056 David J. MALAN: Upewnij się, że nie jest NULL. 703 00:31:28,056 --> 00:31:31,030 Tak naprawdę, do tego super właściwa, należy zrobić coś, 704 00:31:31,030 --> 00:31:35,300 jeśli s nie jest NULL, to iść dalej i wykonać 705 00:31:35,300 --> 00:31:38,470 te linie kodu, które I następnie tiret tak, 706 00:31:38,470 --> 00:31:39,870 a następnie umieścić w ścisłej nawiasu. 707 00:31:39,870 --> 00:31:41,550 Tak dobrze wiązana razem z dwóch pomysłów. 708 00:31:41,550 --> 00:31:42,429 Tak? 709 00:31:42,429 --> 00:31:44,470 PUBLICZNOŚCI: Czy używasz zrobić podczas pętli, a nie? 710 00:31:44,470 --> 00:31:47,270 David J. MALAN: Could Zrobić pętlę Do While? 711 00:31:47,270 --> 00:31:50,020 PUBLICZNOŚCI: --you chcesz się upewnić, że rzeczywiście [niesłyszalne]. 712 00:31:50,020 --> 00:31:51,728 David J. MALAN: Could użyć do podczas? 713 00:31:51,728 --> 00:31:52,450 Krótka odpowiedź, nie. 714 00:31:52,450 --> 00:31:54,700 Bo jesteś o przedstawić inny przypadek rożny. 715 00:31:54,700 --> 00:31:56,660 Jeśli łańcuch jest zerowej długości. 716 00:31:56,660 --> 00:31:59,600 Jeżeli, na przykład, po prostu hit Wpisz, nigdy wpisując Zamyla. 717 00:31:59,600 --> 00:32:02,490 Zamierzam oddać rzeczywisty powrót ciąg, jak my w końcu zobaczyć, 718 00:32:02,490 --> 00:32:03,780 że ma zero znaków. 719 00:32:03,780 --> 00:32:05,630 To wciąż łańcuch, to jest po prostu bardzo krótkie. 720 00:32:05,630 --> 00:32:07,960 Ale jeśli używasz do podczas, idziesz na ślepo 721 00:32:07,960 --> 00:32:10,050 spróbuj zrobić coś z w odniesieniu do tego ciągu, 722 00:32:10,050 --> 00:32:12,537 i nic się nie dzieje, aby tam być. 723 00:32:12,537 --> 00:32:18,607 >> PUBLICZNOŚCI: Cóż, jeśli nie zrobić [niesłyszalne] podczas S-- 724 00:32:18,607 --> 00:32:21,190 David J. MALAN: O widzę, zachować uzyskiwanie ciąg od użytkownika. 725 00:32:21,190 --> 00:32:23,525 Tak więc krótka odpowiedź, ty może i zachować męczył 726 00:32:23,525 --> 00:32:26,150 im dać ciąg, który jest wystarczająco krótki, aby zmieścić w pamięci. 727 00:32:26,150 --> 00:32:26,700 Absolutnie. 728 00:32:26,700 --> 00:32:27,630 Ja po prostu nie zdecydował się. 729 00:32:27,630 --> 00:32:30,505 Jeśli nie dasz mi struny chcą, rzucam, daję się. 730 00:32:30,505 --> 00:32:33,260 Ale absolutnie, w tym celu, można absolutnie zrobić. 731 00:32:33,260 --> 00:32:37,500 >> Więc pliki nagłówkowe biblioteki, które jesteśmy teraz zna to jest, tutaj. 732 00:32:37,500 --> 00:32:41,550 Standard I / O, CS50.h, string.h, ctype.h i nie są w rzeczywistości, inne. 733 00:32:41,550 --> 00:32:44,460 Niektórzy z was odkryli biblioteka matematyczna w math.h. 734 00:32:44,460 --> 00:32:48,200 Ale pozwól, że przedstawię ci teraz, aby ten zasób, że personel CS50, Davin, 735 00:32:48,200 --> 00:32:50,630 i Rob, a Gabe szczególności przygotowaliśmy. 736 00:32:50,630 --> 00:32:52,630 Że wkrótce połączyć na strona kursu jest. 737 00:32:52,630 --> 00:32:54,870 To się nazywa odniesienia CS50. 738 00:32:54,870 --> 00:32:58,230 >> Które po prostu dać szybkie Smak nią działa w następujący sposób. 739 00:32:58,230 --> 00:33:00,740 Pozwólcie mi iść do reference.cs50.net. 740 00:33:00,740 --> 00:33:02,990 Zobaczysz na lewej ręce bok zdecydowaną listę 741 00:33:02,990 --> 00:33:04,595 funkcji, które pochodzą z C. 742 00:33:04,595 --> 00:33:07,790 Ale jeśli zależy mi, w tej chwili, o czymś takim jak strlen, 743 00:33:07,790 --> 00:33:08,746 Mogę go wpisać tam. 744 00:33:08,746 --> 00:33:10,870 Filtruje listę w dół się tylko to, co mnie obchodzi. 745 00:33:10,870 --> 00:33:11,940 Zamierzam go kliknąć. 746 00:33:11,940 --> 00:33:14,740 A teraz na lewo, zobaczysz, co mamy nadzieję, 747 00:33:14,740 --> 00:33:18,290 jest łatwiejsze, ludzkie Wyjaśnienie, w jaki sposób przyjazny 748 00:33:18,290 --> 00:33:19,170 ta funkcja działa. 749 00:33:19,170 --> 00:33:20,600 >> Zwraca długość łańcucha. 750 00:33:20,600 --> 00:33:24,060 Oto streszczenie, oto jak się używać go w odniesieniu do pliku nagłówka, 751 00:33:24,060 --> 00:33:27,430 i pod względem co funkcja Wygląda na to, pod względem swoich argumentów. 752 00:33:27,430 --> 00:33:30,250 A następnie tutaj, powraca długość łańcucha. 753 00:33:30,250 --> 00:33:34,280 Ale dla tych z Was, bardziej komfortowe, rzeczywiście można kliknąć bardziej wygodne, 754 00:33:34,280 --> 00:33:37,070 i zawartość tego strona, teraz, zmieni 755 00:33:37,070 --> 00:33:41,660 być domyślne wartości co uzyskać za pomocą strony man. 756 00:33:41,660 --> 00:33:44,100 >> Innymi słowy, CS50 odniesienia jest uproszczenie 757 00:33:44,100 --> 00:33:46,220 stron człowieka przez pracowników, dla studentów. 758 00:33:46,220 --> 00:33:49,320 W szczególności, te mniej wygodne i pomiędzy nimi, tak że 759 00:33:49,320 --> 00:33:51,660 nie spróbować zawinąć Twój umysł się, szczerze mówiąc, 760 00:33:51,660 --> 00:33:55,030 niektóre dość tajemnicze składnia i dokumentacja kiedyś. 761 00:33:55,030 --> 00:33:57,650 >> Więc miej to na uwadze, w nadchodzących dniach. 762 00:33:57,650 --> 00:33:59,560 Więc tutaj, ponownie, jest Zamyla. 763 00:33:59,560 --> 00:34:03,255 Załóżmy teraz zadać pytanie, które jest trochę bardziej ludzki dostępne. 764 00:34:03,255 --> 00:34:05,380 Dzięki Chang, który był drukujesz więcej słoni 765 00:34:05,380 --> 00:34:07,090 Nonstop w ciągu ostatnich kilku dni. 766 00:34:07,090 --> 00:34:09,730 Mamy możliwość, aby dać co najmniej jeden z nich. 767 00:34:09,730 --> 00:34:13,239 Czy możemy dostać tylko jednego wolontariusza przyjść na do rysowania na ekranie. 768 00:34:13,239 --> 00:34:14,530 Jak tutaj? 769 00:34:14,530 --> 00:34:15,340 >> Chodź na górę. 770 00:34:15,340 --> 00:34:16,720 Jak masz na imię? 771 00:34:16,720 --> 00:34:17,219 Alex: Alex. 772 00:34:17,219 --> 00:34:17,760 David J. MALAN: Alex. 773 00:34:17,760 --> 00:34:18,259 Wszystko w porządku. 774 00:34:18,259 --> 00:34:19,388 Alex, chodź się. 775 00:34:19,388 --> 00:34:21,679 Jesteśmy by zobaczyć swoje czne na ekranie tutaj. 776 00:34:21,679 --> 00:34:24,325 777 00:34:24,325 --> 00:34:25,570 Wszystko w porządku, miło cię poznać. 778 00:34:25,570 --> 00:34:26,429 >> ALEX: Ładny Ci poznać. 779 00:34:26,429 --> 00:34:27,512 >> David J. MALAN: Wszystko w porządku. 780 00:34:27,512 --> 00:34:28,969 Tak, bardzo proste ćwiczenie. 781 00:34:28,969 --> 00:34:31,440 Bar nie jest wysoka, aby się dziś słonia. 782 00:34:31,440 --> 00:34:33,439 Grasz rolę getString. 783 00:34:33,439 --> 00:34:35,980 I mam zamiar po prostu powiedzieć, Ciąg że dotarłeś. 784 00:34:35,980 --> 00:34:38,080 I przypuszczam, że ty, getString, zostały nazwane. 785 00:34:38,080 --> 00:34:42,480 I człowieka, tak jak ja, ma wpisane w Zamyla, Z-A-M-Y-L-A. 786 00:34:42,480 --> 00:34:45,650 Wystarczy pójść dalej i napisać Zamyla na ekran tak, jakbyś dostał go 787 00:34:45,650 --> 00:34:47,250 i przechowywać go gdzieś w pamięci. 788 00:34:47,250 --> 00:34:52,370 789 00:34:52,370 --> 00:34:55,570 >> Pozostawiając miejsce na to, co będzie kilka inne words-- to jest OK, nie poddawać się. 790 00:34:55,570 --> 00:34:59,620 >> [Śmiech] 791 00:34:59,620 --> 00:35:00,800 >> Więc Zamyla, Excellent. 792 00:35:00,800 --> 00:35:04,880 Teraz załóżmy, że, getString, nazywane są ponownie. 793 00:35:04,880 --> 00:35:09,350 I dlatego, że dostarczy Ci, co klawiatury, z inną nazwą, Belinda. 794 00:35:09,350 --> 00:35:17,560 795 00:35:17,560 --> 00:35:18,060 Wszystko w porządku. 796 00:35:18,060 --> 00:35:22,380 A teraz jest getString następnym razem nazywa, to wpisz w coś Gabe, 797 00:35:22,380 --> 00:35:27,560 G-B-E. Jesteś naprawdę biorąc do serca pamięci o dostępie swobodnym. 798 00:35:27,560 --> 00:35:29,631 Który jest rysunek wszystko całkowicie losowo. 799 00:35:29,631 --> 00:35:30,130 OK. 800 00:35:30,130 --> 00:35:31,104 >> [Śmiech] 801 00:35:31,104 --> 00:35:32,520 ALEX: Niestety mój charakter pisma jest zła. 802 00:35:32,520 --> 00:35:33,770 David J. MALAN: Nie, to jest OK. 803 00:35:33,770 --> 00:35:40,480 I jak o Roba, R-O-B. OK. 804 00:35:40,480 --> 00:35:41,020 Dobry. 805 00:35:41,020 --> 00:35:43,853 Więc nie przewidujemy Ci będzie rodzaju ustalenie co w ten sposób. 806 00:35:43,853 --> 00:35:45,020 Ale możemy dokonać tej pracy. 807 00:35:45,020 --> 00:35:48,810 Więc jak go o r z tych znaków w pamięci? 808 00:35:48,810 --> 00:35:51,310 Innymi słowy, jeśli myślimy o to prostokątny czarny ekran 809 00:35:51,310 --> 00:35:53,550 reprezentowanie komputera RAM lub pamięci. 810 00:35:53,550 --> 00:35:55,850 >> I przypomnieć, że RAM jest po prostu cała masa bajtów, 811 00:35:55,850 --> 00:35:57,480 i bajty są całe grono bitów. 812 00:35:57,480 --> 00:35:59,350 I bity są jakoś realizowany ogólnie 813 00:35:59,350 --> 00:36:01,119 z pewną formą energii elektrycznej w sprzęcie. 814 00:36:01,119 --> 00:36:03,160 Więc to jest coś w rodzaju warstw rozmawialiśmy o 815 00:36:03,160 --> 00:36:04,510 i może teraz przyjąć za rzecz oczywistą. 816 00:36:04,510 --> 00:36:07,020 Jak się go o podejmowaniu decyzji, gdzie napisać 817 00:36:07,020 --> 00:36:11,634 Rob porównaniu Gabe porównaniu Belinda porównaniu Zamyla? 818 00:36:11,634 --> 00:36:14,020 >> Alex: Ja po prostu zrobił to w postanowić, że mi powiedziałeś. 819 00:36:14,020 --> 00:36:15,650 >> David J. MALAN: I to jest prawda. 820 00:36:15,650 --> 00:36:20,100 Ale to, co podlega, gdzie można umieścić Nazwa Belindy i nazwisko Gabe? 821 00:36:20,100 --> 00:36:20,764 >> Alex: Nic? 822 00:36:20,764 --> 00:36:22,930 David J. MALAN: [śmieje się] Tak to działa, to w porządku. 823 00:36:22,930 --> 00:36:25,290 Tak więc komputery są mało bardziej uporządkowany niż. 824 00:36:25,290 --> 00:36:29,000 I tak, gdy implement-- my tam tylko na moment-- kiedy faktycznie 825 00:36:29,000 --> 00:36:31,470 zaimplementować coś takiego GetString w komputerze 826 00:36:31,470 --> 00:36:34,480 Zamyla mogą być rozmieszczone prawie jak ty na ekranie, nie. 827 00:36:34,480 --> 00:36:36,660 >> I to, co jest kluczem do zawiadomienia tu, co Alex zrobił, 828 00:36:36,660 --> 00:36:40,260 to jest rodzaj demarkacji na każdym z tych słów, prawda? 829 00:36:40,260 --> 00:36:46,580 Nie pisać Z--Y-M-L-B-E-L-I-N-D-G-B-- 830 00:36:46,580 --> 00:36:49,740 innymi słowy, nie ma jakiś demarkacyjnej, która wydaje się być, 831 00:36:49,740 --> 00:36:52,370 rodzaj, losowe odstępy między tymi różnymi słowami. 832 00:36:52,370 --> 00:36:54,120 Ale to dobrze, bo my, ludzie mogą teraz 833 00:36:54,120 --> 00:36:56,470 wyobrazić, że są to cztery różne ciągi. 834 00:36:56,470 --> 00:36:59,540 To nie jest tylko jedna sekwencja partii znaków. 835 00:36:59,540 --> 00:37:04,190 Więc komputer, a następnie, w międzyczasie, może podjąć ciąg jak Zamyla, 836 00:37:04,190 --> 00:37:07,220 umieścić każdy z tych listów wewnątrz bajt pamięci. 837 00:37:07,220 --> 00:37:10,400 Ale ta liczba jest znacznie większa, Oczywiście, niż sześciu znaków. 838 00:37:10,400 --> 00:37:11,690 >> Jest cała masa RAM. 839 00:37:11,690 --> 00:37:15,330 I tak od tej pory, to Siatka pól będzie 840 00:37:15,330 --> 00:37:17,560 do reprezentowania, co Alex tylko tak tu na ekranie. 841 00:37:17,560 --> 00:37:20,937 A teraz, Alex, możemy zaoferować Państwu pomarańczowy lub niebieski słoń z Chang. 842 00:37:20,937 --> 00:37:22,270 ALEX: Wezmę Blue Elephant. 843 00:37:22,270 --> 00:37:23,120 David J. MALAN: niebieski słoń. 844 00:37:23,120 --> 00:37:25,580 Tak duże brawa, jeśli można, dla Alex tutaj. 845 00:37:25,580 --> 00:37:26,100 >> [Aplauz] 846 00:37:26,100 --> 00:37:26,766 >> Alex: Dziękuję. 847 00:37:26,766 --> 00:37:28,820 David J. MALAN: Dziękuję. 848 00:37:28,820 --> 00:37:36,230 Tak więc na wynos, że nawet chociaż wzór rodzaj zmieniał się w czasie, tutaj 849 00:37:36,230 --> 00:37:40,430 na pokładzie, nie było to demarkacyjnej pomiędzy różnymi ciągi 850 00:37:40,430 --> 00:37:42,610 że Alex ma dla nas. 851 00:37:42,610 --> 00:37:45,230 Teraz komputery, szczerze mówiąc, może zrobić to samo. 852 00:37:45,230 --> 00:37:48,210 Mogli rodzaj plop ciągi gdziekolwiek w pamięci RAM. 853 00:37:48,210 --> 00:37:50,710 Tutaj, tutaj, tu, na dole. 854 00:37:50,710 --> 00:37:52,020 >> Mogą zrobić dokładnie to. 855 00:37:52,020 --> 00:37:54,280 Ale, oczywiście, to jest Prawdopodobnie nie najlepszy planowanie. 856 00:37:54,280 --> 00:37:54,780 Prawda? 857 00:37:54,780 --> 00:37:57,340 Jeśli Pytałem Alex inne nazwiska, prawdopodobnie Miał 858 00:37:57,340 --> 00:38:01,370 umieścić tu trochę więcej, może się tutaj, tutaj, tutaj, w końcu 859 00:38:01,370 --> 00:38:02,211 tutaj. 860 00:38:02,211 --> 00:38:05,460 Ale z nieco więcej planowania, na pewno, możemy położyć rzeczy bardziej czysto. 861 00:38:05,460 --> 00:38:07,350 I rzeczywiście, to, co robi komputer. 862 00:38:07,350 --> 00:38:10,720 >> Ale jest haczyk jeśli następny ciąg mam 863 00:38:10,720 --> 00:38:14,050 po Zamyla jest coś jak Belinda, 864 00:38:14,050 --> 00:38:17,929 Proponuję, gdzie możemy napisać Litera B w odniesieniu do tej sieci? 865 00:38:17,929 --> 00:38:18,720 Gdzie się udać? 866 00:38:18,720 --> 00:38:21,480 Po prawej stronie osi A, poniżej z, poniżej a? 867 00:38:21,480 --> 00:38:23,204 Co by twoje pierwsze instynkty być? 868 00:38:23,204 --> 00:38:24,120 PUBLICZNOŚCI: Poniżej z. 869 00:38:24,120 --> 00:38:25,100 David J. MALAN: Więc poniżej z. 870 00:38:25,100 --> 00:38:26,530 I to jest dość proste, prawda? 871 00:38:26,530 --> 00:38:29,321 Jest to rodzaj schludne, to, co robimy na klawiaturze, kiedy naciśnij Enter, 872 00:38:29,321 --> 00:38:31,770 lub e-mail przy podejmowaniu wypunktowanie rzeczy. 873 00:38:31,770 --> 00:38:34,310 Ale rzeczywistość jest, że komputery starają się bardziej wydajne 874 00:38:34,310 --> 00:38:37,170 i na pewno tak samo dopchać danych do pamięci RAM, jak to możliwe, 875 00:38:37,170 --> 00:38:38,890 tak, aby nie tracić żadnych bajtów. 876 00:38:38,890 --> 00:38:41,545 Tak, aby nie tracić dowolny ekran nieruchomości. 877 00:38:41,545 --> 00:38:44,170 A problemem jest jednak to, że jeśli dosłownie umieścić literę 878 00:38:44,170 --> 00:38:49,940 b po, jak będziemy wiedzieć, gdzie kończy się nazwa Zamyla 879 00:38:49,940 --> 00:38:51,840 i nazwisko Belindy zaczyna? 880 00:38:51,840 --> 00:38:55,270 Więc wy, ludzie po prostu zaproponował, dobrze, nacisnąć klawisz Enter, zasadniczo. 881 00:38:55,270 --> 00:38:56,410 Umieścić go w dół poniżej. 882 00:38:56,410 --> 00:38:59,750 Lub nawet tak jak Alex, po prostu zacząć pisać obok nazwy poniżej poprzedniego, 883 00:38:59,750 --> 00:39:01,583 i pod tym jednym, i to poniżej tego. 884 00:39:01,583 --> 00:39:02,510 To wizualne cue. 885 00:39:02,510 --> 00:39:05,960 >> Komputery mają inną pamięć wzrokową, ale to trochę bardziej zwięzłe. 886 00:39:05,960 --> 00:39:07,840 To ten modny charakter. 887 00:39:07,840 --> 00:39:11,890 Backslash 0, co jest być może przypomina backslash n, 888 00:39:11,890 --> 00:39:12,640 i tak dalej, obecnie. 889 00:39:12,640 --> 00:39:14,120 Specjalne sekwencje specjalne. 890 00:39:14,120 --> 00:39:19,120 Backslash 0 jest sposobem reprezentujących osiem bitów zerowych w wierszu. 891 00:39:19,120 --> 00:39:22,000 0000 0000. 892 00:39:22,000 --> 00:39:26,130 >> Sposób wyrazić, że nie jest hit numer zerowy na klawiaturze, 893 00:39:26,130 --> 00:39:28,140 ponieważ w tym, że jest char ASCII. 894 00:39:28,140 --> 00:39:30,990 Wygląda jak liczby, ale jest rzeczywiście liczbą dziesiętną 895 00:39:30,990 --> 00:39:35,910 że reprezentuje okólnik glif, okrągły krój. 896 00:39:35,910 --> 00:39:38,410 Tymczasem, odwrotny ukośnik Zero oznacza, dosłownie 897 00:39:38,410 --> 00:39:40,700 umieścić osiem zera bajtów tutaj dla mnie. 898 00:39:40,700 --> 00:39:42,136 >> Więc to jest nieco arbitralne. 899 00:39:42,136 --> 00:39:44,260 Mogliśmy stosować dowolny wzór bitów, lecz świecie 900 00:39:44,260 --> 00:39:46,610 postanowił kilka lat temu, że do reprezentowania 901 00:39:46,610 --> 00:39:49,710 Koniec łańcucha w pamięci wystarczy umieścić całą masę zer. 902 00:39:49,710 --> 00:39:51,000 Ponieważ możemy wykryć, że. 903 00:39:51,000 --> 00:39:54,790 Teraz to znaczy, że nie ma list alfabetu może być reprezentowane przez zerowe. 904 00:39:54,790 --> 00:39:58,480 >> Ale to jest OK, mamy już widział że używamy 65 na 97 w górę w górę. 905 00:39:58,480 --> 00:40:00,290 Nie dostać wszędzie Blisko do wszystkich zer. 906 00:40:00,290 --> 00:40:03,040 907 00:40:03,040 --> 00:40:06,540 Więc Belinda w pamięci komputera faktycznie się tutaj. 908 00:40:06,540 --> 00:40:09,764 Mam wyciągnąć go na żółto tylko zwrócić uwagę na to. 909 00:40:09,764 --> 00:40:11,680 Oraz informacja, zbyt, to jest całkowicie arbitralne. 910 00:40:11,680 --> 00:40:12,680 Mam wyciągnąć go w postaci siatki. 911 00:40:12,680 --> 00:40:14,460 Jak, RAM jest tylko niektóre obiekt fizyczny. 912 00:40:14,460 --> 00:40:17,300 Nie musi koniecznie wiersze i kolumny, per se. 913 00:40:17,300 --> 00:40:20,490 Po prostu dostałem całą masę bajtów zaimplementowane sprzętowo jakoś. 914 00:40:20,490 --> 00:40:22,817 Ale jeśli po Belinda I wpisane w nazwę Gabe'a, 915 00:40:22,817 --> 00:40:25,650 ma zamiar skończyć się tutaj w pamięci, i jeśli wpisane imię Daven, w 916 00:40:25,650 --> 00:40:27,316 na przykład, że zamierza do końca się tutaj. 917 00:40:27,316 --> 00:40:29,310 I mogę kontynuować Napisać jeszcze więcej nazwisk. 918 00:40:29,310 --> 00:40:32,100 >> Niestety, gdy próbuję napisać bardzo długą nazwę, 919 00:40:32,100 --> 00:40:33,730 I może w końcu zabraknąć pamięci. 920 00:40:33,730 --> 00:40:37,810 W takim przypadku, getString jest powróci NULL, jak powiedzieliśmy. 921 00:40:37,810 --> 00:40:41,720 Ale na szczęście, przynajmniej w tym wizualne tutaj, nie mieliśmy dość, że daleko. 922 00:40:41,720 --> 00:40:45,860 >> Teraz to, co miłe jest to, że Ogólna idea traktowania rzeczy 923 00:40:45,860 --> 00:40:49,720 jako w rubrykach jest Przedstawiciel cecha C 924 00:40:49,720 --> 00:40:52,690 i wiele języków znany jako tablica. 925 00:40:52,690 --> 00:40:55,490 Tablica jest inny typ danych. 926 00:40:55,490 --> 00:40:57,380 Jest to struktura danych, jeśli będzie. 927 00:40:57,380 --> 00:41:01,160 Struktury w sensie to naprawdę, rodzaj, patrząc jak pudełko, co najmniej 928 00:41:01,160 --> 00:41:02,320 w myślach. 929 00:41:02,320 --> 00:41:09,680 Tablica jest ciągłe sekwencja identycznych typów danych, 930 00:41:09,680 --> 00:41:11,330 z powrotem do tyłu, aby z powrotem do tyłu. 931 00:41:11,330 --> 00:41:14,720 >> Więc ciąg, w innych słowa, jest tablica znaków. 932 00:41:14,720 --> 00:41:16,120 Tablica znaków. 933 00:41:16,120 --> 00:41:19,070 Ale okazuje się, można mieć tablice kiści rzeczy. 934 00:41:19,070 --> 00:41:21,870 W rzeczywistości, możemy umieścić nawet liczby w tablicy. 935 00:41:21,870 --> 00:41:23,920 Więc formie, w jakiej mamy zamiar rozpocząć 936 00:41:23,920 --> 00:41:26,590 uznające te dane Konstrukcja znana jako tablica 937 00:41:26,590 --> 00:41:28,250 zamierza także używać nawiasów kwadratowych. 938 00:41:28,250 --> 00:41:31,500 Ale te nawiasy kwadratowe będą mają różne znaczenie w niniejszym kontekście. 939 00:41:31,500 --> 00:41:33,450 >> I zobaczymy go w następujący sposób. 940 00:41:33,450 --> 00:41:36,780 Załóżmy, że mam otwarte się nowy plik tutaj. 941 00:41:36,780 --> 00:41:38,535 I zapisać to jako ages.c. 942 00:41:38,535 --> 00:41:41,280 943 00:41:41,280 --> 00:41:43,470 A ja zapisać w moim folderze tutaj. 944 00:41:43,470 --> 00:41:46,130 A teraz mam zamiar iść do przodu i zacząć pisać coś 945 00:41:46,130 --> 00:41:53,940 podobne obejmują CS50.h obejmują stdio.h, int main pustkę. 946 00:41:53,940 --> 00:41:57,370 A następnie wewnątrz tutaj, chcę aby najpierw int o nazwie wiek. 947 00:41:57,370 --> 00:42:01,371 >> I mam zamiar używać, aby uzyskać int od użytkownika na jego wiek. 948 00:42:01,371 --> 00:42:04,620 Program ten jednak ma być stosowany przez wiele osób, niezależnie od kontekstu. 949 00:42:04,620 --> 00:42:05,490 Mam linię ludzi. 950 00:42:05,490 --> 00:42:08,281 Wszystkie z nich mają do wpisania ich wiek może jakiś, nie wiem, 951 00:42:08,281 --> 00:42:10,530 konkurencji lub zdarzeń że znalazłeś się na. 952 00:42:10,530 --> 00:42:13,030 Tak więc następna osoba, ja potrzebuję innej zmiennej. 953 00:42:13,030 --> 00:42:15,790 >> Bo jeśli po prostu zrobić wiek dostaje getInt, to 954 00:42:15,790 --> 00:42:18,500 będzie sprać, lub nadpisać wiek osoby poprzedniego. 955 00:42:18,500 --> 00:42:19,760 Więc to nie jest dobre. 956 00:42:19,760 --> 00:42:21,790 Więc moim pierwszym instynktem może być, oh, wszystko w porządku, 957 00:42:21,790 --> 00:42:26,260 jeśli chcę dostać wiele Ludowej ages-- nazwijmy to age1, 958 00:42:26,260 --> 00:42:31,280 int age2 dostaje int, int age3 dostaje getInt. 959 00:42:31,280 --> 00:42:35,340 A teraz mam zamiar użyć jakiś kod tutaj pseudokod. 960 00:42:35,340 --> 00:42:37,679 >> Zrobić coś z tymi numerami. 961 00:42:37,679 --> 00:42:40,470 Zostawimy na inny dzień, co robimy tam, dlatego, że tylko 962 00:42:40,470 --> 00:42:44,200 obchodzi w tym momencie o age1, age2, age3. 963 00:42:44,200 --> 00:42:46,450 Niestety, po I skompilować program 964 00:42:46,450 --> 00:42:51,140 i umieścić go przed rzeczywistych użytkowników, , co jest zasadniczo słaby projekt 965 00:42:51,140 --> 00:42:53,890 Decyzję wydaje mi się dokonały? 966 00:42:53,890 --> 00:42:54,624 Tak? 967 00:42:54,624 --> 00:42:55,499 PUBLICZNOŚCI: [niesłyszalne] 968 00:42:55,499 --> 00:42:58,071 969 00:42:58,071 --> 00:42:59,820 David J. MALAN: Tak, I nawet nie próbował 970 00:42:59,820 --> 00:43:02,028 dowiedzieć się, jak wiele wieków mam naprawdę obchodzi? 971 00:43:02,028 --> 00:43:05,380 Jeśli mam mniej niż trzy osoby tutaj, a więc mniej niż trzy grupy wiekowe, 972 00:43:05,380 --> 00:43:07,260 Jestem wciąż ślepo spodziewa trzy. 973 00:43:07,260 --> 00:43:08,720 Nie daj Boże pojawi się cztery osoby. 974 00:43:08,720 --> 00:43:10,990 Mój program po prostu nie będzie nawet je wspierać. 975 00:43:10,990 --> 00:43:13,280 >> I tak to długa historia Krótko mówiąc, nie jest to dobry zwyczaj. 976 00:43:13,280 --> 00:43:13,780 Prawda? 977 00:43:13,780 --> 00:43:16,530 Ja w zasadzie kopiowania i wklejeniu kodu i po prostu szczypanie 978 00:43:16,530 --> 00:43:17,430 Nazwy zmiennych. 979 00:43:17,430 --> 00:43:22,410 I, mój Boże, jeśli miał, nie trzy wieku, ale 10 lub 100, a nawet 6500 980 00:43:22,410 --> 00:43:23,820 studenci, na przykład. 981 00:43:23,820 --> 00:43:26,950 Nie będzie szczególnie elegancki kod, lub zrównoważone. 982 00:43:26,950 --> 00:43:29,200 Będziesz musiał Zmienić program za każdym razem, 983 00:43:29,200 --> 00:43:30,760 Twoja liczba osób zmian. 984 00:43:30,760 --> 00:43:35,090 >> Tak, na szczęście, w naszych rzeczywistych Plik ages.c na dzisiaj, 985 00:43:35,090 --> 00:43:36,970 mamy bardziej sprytne rozwiązanie. 986 00:43:36,970 --> 00:43:39,800 Po pierwsze, mam zamiar pożyczyć skonstruowania użyliśmy kilka razy, 987 00:43:39,800 --> 00:43:43,744 while tym, w celu uzyskania liczba osób w pokoju. 988 00:43:43,744 --> 00:43:46,910 Jestem po prostu będzie męczyć użytkownika, ponownie i znowu, dopóki on lub ona daje mi 989 00:43:46,910 --> 00:43:49,260 Wartość n to liczba całkowita dodatnia. 990 00:43:49,260 --> 00:43:51,590 >> Mogłem użyć, ostatni Czas jest uzyskać pozytywną int. 991 00:43:51,590 --> 00:43:53,720 Ale my nie mamy, że za prawdziwe, więc poszedł do przodu 992 00:43:53,720 --> 00:43:55,660 i ponownie wdrożyć ten pomysł. 993 00:43:55,660 --> 00:43:58,410 Teraz tutaj jest to nowa sztuczka. 994 00:43:58,410 --> 00:44:02,260 W linii 27, jako komentarze w linii 26 sugeruje, 995 00:44:02,260 --> 00:44:05,180 zadeklarować tablicę, w której przechowywać wiek wszystkich. 996 00:44:05,180 --> 00:44:09,320 >> Więc jeśli chcesz uzyskać, a nie jeden int, nie dwa ints, ale całe grono wskazówki. 997 00:44:09,320 --> 00:44:13,800 Konkretnie n liczb całkowitych, były n mógłby być trzy, może być 100, może być 1000. 998 00:44:13,800 --> 00:44:17,570 Składnia prościej jest powiedzmy, jaki rodzaj danych chcesz? 999 00:44:17,570 --> 00:44:19,620 Co chcesz zadzwonić że fragment pamięci? 1000 00:44:19,620 --> 00:44:23,530 Co chcesz zadzwonić siatkę że wygląda tak obrazowo? 1001 00:44:23,530 --> 00:44:27,700 >> I tu w nawiasach, mówisz jak duży chcesz tablica będzie. 1002 00:44:27,700 --> 00:44:30,450 I tak wcześniej, kiedy powiedziałem, Składnia jest tutaj trochę inaczej, 1003 00:44:30,450 --> 00:44:33,614 my wciąż w nawiasach kwadratowych, ale kiedy jestem deklarując tablicę, 1004 00:44:33,614 --> 00:44:35,530 Numer wewnątrz Uchwyty kwadratowych środki 1005 00:44:35,530 --> 00:44:37,610 jak duży chcesz tablica będzie. 1006 00:44:37,610 --> 00:44:42,490 >> Natomiast, gdy używaliśmy s Uchwyt i chwilą, s, ciąg, 1007 00:44:42,490 --> 00:44:46,820 rzeczywiście jest tablica znaków, ale gdy nie jest zadeklarowanie zmiennej, 1008 00:44:46,820 --> 00:44:49,760 jak z tego hasła tutaj, jesteś po prostu się 1009 00:44:49,760 --> 00:44:54,280 specyficzny wskaźnik, specyficzne Element z tej tablicy. 1010 00:44:54,280 --> 00:44:57,090 Gdy wiemy, że reszta to jest proste. 1011 00:44:57,090 --> 00:45:00,765 Jeśli nowy jestem pierwszy zamiar wydrukować co wiek numeru i osoby. 1012 00:45:00,765 --> 00:45:03,890 Gdzie mogę tylko powiedzieć, osoba numer jeden, Osoba numer dwa, osoba numer trzy. 1013 00:45:03,890 --> 00:45:06,306 >> A ja po prostu robi arytmetycznych, więc, że tak jak normalni ludzie, 1014 00:45:06,306 --> 00:45:09,030 możemy liczyć od jednego do tego Program, a nie od zera. 1015 00:45:09,030 --> 00:45:13,620 Potem zadzwoń getint, ale przechowywać odpowiedź w wieku wspornik i. 1016 00:45:13,620 --> 00:45:16,610 Który jest i'th wieku w tablicy. 1017 00:45:16,610 --> 00:45:21,640 Tak więc, podczas gdy ostatni raz byliśmy leczenia te pola jak nazwa Zamyla znaków dla tych, 1018 00:45:21,640 --> 00:45:22,490 i inne. 1019 00:45:22,490 --> 00:45:26,530 Teraz, te pola przedstawiają 32 bity lub cztery bajty 1020 00:45:26,530 --> 00:45:29,510 w którym możemy przechowywać int, int, int. 1021 00:45:29,510 --> 00:45:31,890 Wszystko to znowu są dane tego samego typu. 1022 00:45:31,890 --> 00:45:33,890 >> Teraz robię coś głupiego, jak czas mija, tylko 1023 00:45:33,890 --> 00:45:35,510 uzasadnić pisanie tego programu. 1024 00:45:35,510 --> 00:45:40,050 A następnie na dół, znowu iteracji na tablicy, mówiąc rok, 1025 00:45:40,050 --> 00:45:43,090 liczba osób, jedna wola coś lat. 1026 00:45:43,090 --> 00:45:45,010 I dowiedzieć się, że math-- To znaczy, to 1027 00:45:45,010 --> 00:45:49,260 nie jest bardzo skomplikowane arithmetic-- Po prostu dodaj jeden do ich wieku. 1028 00:45:49,260 --> 00:45:51,240 Wystarczy wykazać, ponownie, tym. 1029 00:45:51,240 --> 00:45:57,910 >> Tak jak mogę indeks do ciągu, s, więc mogę indeks do tablicy wieku, 1030 00:45:57,910 --> 00:45:59,950 tak, że nie. 1031 00:45:59,950 --> 00:46:03,340 Więc gdzie jest ta będzie przy nas? 1032 00:46:03,340 --> 00:46:07,070 Więc zobaczymy, w końcu, Kilka rzeczy w nadchodzących dniach. 1033 00:46:07,070 --> 00:46:09,510 Jeden, przez cały ten czas, kiedy pisania własnych programów, 1034 00:46:09,510 --> 00:46:11,239 jak Mario, chciwy, kredytu. 1035 00:46:11,239 --> 00:46:13,780 Zostaliście wpisując nazwę program i nacisnąć Enter. 1036 00:46:13,780 --> 00:46:15,610 A potem się wejście użytkownika. 1037 00:46:15,610 --> 00:46:18,137 >> Z getString, getInt, getLongLong lub podobne. 1038 00:46:18,137 --> 00:46:20,720 Ale okazuje się, że podpory C coś, co nazywa się wiersz poleceń 1039 00:46:20,720 --> 00:46:25,740 Argumenty, które nie pozwoli nam rzeczywiście się na słowa, które podczas pisania, 1040 00:46:25,740 --> 00:46:28,570 w wierszu miga, po nazwie Twojego programu. 1041 00:46:28,570 --> 00:46:31,430 >> Tak więc w najbliższych dniach, ci może wpisać coś Cezara, 1042 00:46:31,430 --> 00:46:34,950 lub ./caesar numer 13, potem. 1043 00:46:34,950 --> 00:46:36,070 Zobaczymy, jak to działa. 1044 00:46:36,070 --> 00:46:37,550 Ponieważ w rzeczywistości, w Problem ustawić dwa, jesteśmy 1045 00:46:37,550 --> 00:46:39,383 zamierza przedstawić Państwu do trochę coś 1046 00:46:39,383 --> 00:46:42,360 przypomina Ralphie jest wyzwanie wcześniej kartografii. 1047 00:46:42,360 --> 00:46:43,970 Sztuka kodowania informacji. 1048 00:46:43,970 --> 00:46:46,660 To jest w rzeczywistości bardzo przypomina, co Ralphie nie. 1049 00:46:46,660 --> 00:46:51,380 >> Jest przykładem kodowania algorytm nazywa rot13, R-O-T 13. 1050 00:46:51,380 --> 00:46:54,910 Co oznacza po prostu obrócić litery w alfabecie 13 miejscach. 1051 00:46:54,910 --> 00:46:58,309 A jeśli to zrobisz, zobaczysz teraz to, co jest, być może, zna zdanie. 1052 00:46:58,309 --> 00:47:01,100 Ale sposób, w jaki będziemy korzystać to jest w końcu bardziej ogólny. 1053 00:47:01,100 --> 00:47:04,390 >> W P ustawić dwa, w standardowej wersji, musisz wprowadzić kilka cyfr, 1054 00:47:04,390 --> 00:47:06,720 jeden nazywa się Cezar, jeden nazywa Vigenere'a. 1055 00:47:06,720 --> 00:47:10,090 Obie z nich są obrotowe szyfry, w które jakoś 1056 00:47:10,090 --> 00:47:11,826 włączyć jedną literę na inną literę. 1057 00:47:11,826 --> 00:47:12,950 I Cezar jest bardzo prosta. 1058 00:47:12,950 --> 00:47:16,220 Dodać jeden, dodać 13, lub jakiś numer do 26. 1059 00:47:16,220 --> 00:47:19,570 Vigenere'a robi, że na na piśmie podstawy. 1060 00:47:19,570 --> 00:47:22,140 Więc Vigenère, jak zobaczysz w specyfikacji, jest bardziej bezpieczne. 1061 00:47:22,140 --> 00:47:24,973 >> A na koniec dnia, co będziesz wdrażania i P ustawić dwa, 1062 00:47:24,973 --> 00:47:29,050 jest to, że klucz jest używanie zarówno do szyfrowania i deszyfrowania. 1063 00:47:29,050 --> 00:47:32,160 Odnosząc się do procesu toczenia zwykły tekst, niektóre oryginalna wiadomość, 1064 00:47:32,160 --> 00:47:34,490 do tekstu, który Cypher jest coś, szyfrowane. 1065 00:47:34,490 --> 00:47:36,220 A następnie odszyfrowanie go ponownie. 1066 00:47:36,220 --> 00:47:38,119 >> W edycji hakerów, tymczasem, będziesz 1067 00:47:38,119 --> 00:47:40,660 zadanie z czymś podobnym w duchu, w których podamy 1068 00:47:40,660 --> 00:47:44,610 plik, z typowym Linux lub Mac lub Unix nazywane Etsy 1069 00:47:44,610 --> 00:47:47,800 hasłem zawierająca całość grono użytkowników i haseł. 1070 00:47:47,800 --> 00:47:50,932 I te hasła mają wszystko zostały zaszyfrowane, lub mieszany, 1071 00:47:50,932 --> 00:47:53,140 że tak powiem, bardziej prawidłowo jak zobaczysz w spec. 1072 00:47:53,140 --> 00:47:57,090 >> I haker będzie wyzwaniem wydanie Ci z podjęciem wejście w ten sposób, 1073 00:47:57,090 --> 00:47:58,800 i pękanie hasła. 1074 00:47:58,800 --> 00:48:02,590 Oznacza to, że zastanawianie się, co Hasło ludzka faktycznie było. 1075 00:48:02,590 --> 00:48:05,570 Bo rzeczywiście, hasła są na ogół nie są przechowywane w jasny, 1076 00:48:05,570 --> 00:48:08,260 Hasła i ogólnie powinno być trudne do odgadnięcia. 1077 00:48:08,260 --> 00:48:09,610 To nie często się zdarza. 1078 00:48:09,610 --> 00:48:12,110 >> A ja myślałem, że to, co robimy, jest zawrzeć z kilka minut 1079 00:48:12,110 --> 00:48:15,160 Szczególnie w skrócie kiepski wybór haseł 1080 00:48:15,160 --> 00:48:17,260 z filmu można przypomnieć czule. 1081 00:48:17,260 --> 00:48:18,915 A jeśli nie, należy wynająć. 1082 00:48:18,915 --> 00:48:20,070 >> [ODTWARZANIE] 1083 00:48:20,070 --> 00:48:22,320 >> -Helmet, To diabeł, co się dzieje? 1084 00:48:22,320 --> 00:48:24,240 Co robisz z moją córką? 1085 00:48:24,240 --> 00:48:28,010 >> -Permit Mnie przedstawić genialny młody chirurg plastyczny, 1086 00:48:28,010 --> 00:48:30,010 Lekarz Phillip Schlotkin. 1087 00:48:30,010 --> 00:48:35,020 Największy nos w pracy człowieka Cały wszechświat i Beverly Hills. 1088 00:48:35,020 --> 00:48:36,140 >> Wasza Wysokość. 1089 00:48:36,140 --> 00:48:36,820 >> -Nose Pracy? 1090 00:48:36,820 --> 00:48:37,700 Nie rozumiem. 1091 00:48:37,700 --> 00:48:39,070 Ona już miała nosa. 1092 00:48:39,070 --> 00:48:40,800 To był jej słodki 16 obecnych. 1093 00:48:40,800 --> 00:48:42,590 >> Nie, to nie to, co myślisz. 1094 00:48:42,590 --> 00:48:44,490 To dużo, dużo gorzej. 1095 00:48:44,490 --> 00:48:48,160 Jeśli nie dasz mi połączenie z osłoną powietrza 1096 00:48:48,160 --> 00:48:52,748 Lekarz Schlotkin daje Państwu córkę jej stary nos. 1097 00:48:52,748 --> 00:48:53,748 - [Wzdycha] Nooooooooooooo. 1098 00:48:53,748 --> 00:48:57,684 1099 00:48:57,684 --> 00:48:59,652 Skąd to masz? 1100 00:48:59,652 --> 00:49:00,640 >> -Dobrze. 1101 00:49:00,640 --> 00:49:02,506 Powiem, powiem. 1102 00:49:02,506 --> 00:49:03,498 >> Nie, tato, nie. 1103 00:49:03,498 --> 00:49:04,490 Nie musi. 1104 00:49:04,490 --> 00:49:06,090 >> Masz rację kochanie. 1105 00:49:06,090 --> 00:49:07,390 Będę tęsknił nowy nos. 1106 00:49:07,390 --> 00:49:10,990 Ale nie powiem im Połączenie nie wiem co. 1107 00:49:10,990 --> 00:49:12,450 >> Bardzo dobrze. 1108 00:49:12,450 --> 00:49:14,830 Lekarz Schlotkin, czy twój najgorszy. 1109 00:49:14,830 --> 00:49:15,744 >> -My Przyjemność. 1110 00:49:15,744 --> 00:49:19,860 1111 00:49:19,860 --> 00:49:20,800 >> Nie! 1112 00:49:20,800 --> 00:49:22,780 Czekaj, czekaj. 1113 00:49:22,780 --> 00:49:24,000 Powiem. 1114 00:49:24,000 --> 00:49:25,830 Powiem. 1115 00:49:25,830 --> 00:49:28,270 >> -I Wiedziałem, że to działa. 1116 00:49:28,270 --> 00:49:31,390 Dobra, daj mi to. 1117 00:49:31,390 --> 00:49:36,220 >> -The Kombinacja jest jeden. 1118 00:49:36,220 --> 00:49:36,740 >> Onu. 1119 00:49:36,740 --> 00:49:37,473 >> Onu. 1120 00:49:37,473 --> 00:49:37,972 -Dwa. 1121 00:49:37,972 --> 00:49:38,471 -Dwa. 1122 00:49:38,471 --> 00:49:39,800 -Dwa. 1123 00:49:39,800 --> 00:49:40,300 -Trzy. 1124 00:49:40,300 --> 00:49:40,800 -Trzy. 1125 00:49:40,800 --> 00:49:41,800 -Trzy. 1126 00:49:41,800 --> 00:49:42,300 -Four. 1127 00:49:42,300 --> 00:49:42,800 -Four. 1128 00:49:42,800 --> 00:49:44,707 -Four. 1129 00:49:44,707 --> 00:49:45,521 -Five. 1130 00:49:45,521 --> 00:49:46,430 -Five. 1131 00:49:46,430 --> 00:49:47,930 -Five. 1132 00:49:47,930 --> 00:49:53,480 Więc połączenie jest, dwa, trzy, cztery, pięć. 1133 00:49:53,480 --> 00:49:56,140 To najgłupsza połączenie Kiedykolwiek usłyszeć w moim życiu. 1134 00:49:56,140 --> 00:49:58,640 To rodzaj rzeczą, idiota ma na swoim bagażu. 1135 00:49:58,640 --> 00:50:00,000 >> Dziękuję, Wasza Wysokość. 1136 00:50:00,000 --> 00:50:01,340 >> [REMOTE CLICKS] 1137 00:50:01,340 --> 00:50:02,450 >> -Co Zrobiłeś? 1138 00:50:02,450 --> 00:50:03,800 >> -I Odwrócił się od ściany. 1139 00:50:03,800 --> 00:50:05,010 >> Nie, ty nie, ty wyłączony cały film. 1140 00:50:05,010 --> 00:50:06,220 >> -I Musiało naciśnięty niewłaściwy przycisk. 1141 00:50:06,220 --> 00:50:07,064 >> Cóż, umieścić go z powrotem! 1142 00:50:07,064 --> 00:50:07,910 Umieścić film z powrotem! 1143 00:50:07,910 --> 00:50:08,300 >> Tak jest, sir! 1144 00:50:08,300 --> 00:50:08,799 Tak, proszę pana. 1145 00:50:08,799 --> 00:50:09,660 -Pozwól Idziemy, Arnold. 1146 00:50:09,660 --> 00:50:10,450 Przyjdź, Gretchen. 1147 00:50:10,450 --> 00:50:12,533 Oczywiście wiesz, że będziesz musieli obciążyć Cię za to. 1148 00:50:12,533 --> 00:50:16,720 1149 00:50:16,720 --> 00:50:17,220 Cóż? 1150 00:50:17,220 --> 00:50:17,802 Czy to działa? 1151 00:50:17,802 --> 00:50:18,510 Gdzie jest król? 1152 00:50:18,510 --> 00:50:20,218 >> -it Pracował, panie, my mają połączenia. 1153 00:50:20,218 --> 00:50:20,740 -great. 1154 00:50:20,740 --> 00:50:24,810 Teraz możemy podjąć każdy ostatni oddech świeżego powietrza z planety Druidia. 1155 00:50:24,810 --> 00:50:25,890 Co znajduje się połączenie? 1156 00:50:25,890 --> 00:50:28,155 >> Onu, dwa, trzy, cztery, pięć. 1157 00:50:28,155 --> 00:50:29,890 >> Onu, dwa, trzy, cztery, pięć? 1158 00:50:29,890 --> 00:50:30,390 Tak. 1159 00:50:30,390 --> 00:50:31,110 -To Niesamowite. 1160 00:50:31,110 --> 00:50:34,550 Mam to samo połączenie na mój bagaż. 1161 00:50:34,550 --> 00:50:37,160 Przygotuj Spaceball 1 do natychmiastowego wyjazdu. 1162 00:50:37,160 --> 00:50:38,160 >> Tak, proszę pana. 1163 00:50:38,160 --> 00:50:40,745 >> -I zmienić połączenie na mój bagaż. 1164 00:50:40,745 --> 00:50:41,578 [ZAMYKANIE DRZWI DŹWIĘK] 1165 00:50:41,578 --> 00:50:42,064 [Brzęk DRZWI uderzając KASKU] 1166 00:50:42,064 --> 00:50:42,550 -Ahh. 1167 00:50:42,550 --> 00:50:43,383 [KONIEC ODTWARZANIE] 1168 00:50:43,383 --> 00:50:46,700 David J. MALAN: To jest to dla CS50, do zobaczenia w przyszłym tygodniu. 1169 00:50:46,700 --> 00:50:49,883 Narrator: A teraz, Głębokie Myśli, by Daven Farnham. 1170 00:50:49,883 --> 00:50:53,160 1171 00:50:53,160 --> 00:50:55,860 >> Daven FARNHAM: Kodowanie w C jest tak dużo trudniejsze niż na początku. 1172 00:50:55,860 --> 00:50:57,320 printf, Scratch było kłamstwo. 1173 00:50:57,320 --> 00:50:59,930 1174 00:50:59,930 --> 00:51:01,430 >> [Śmiech Soundbite] 1175 00:51:01,430 --> 00:51:02,486