1 00:00:00,000 --> 00:00:03,944 >> [MUZYKI] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID MALAN: Wszystko w porządku. 4 00:00:11,690 --> 00:00:14,674 Jest CS50, a to jest koniec tygodnia 2. 5 00:00:14,674 --> 00:00:16,840 Tak mi przykro, że nie może być tam z tobą wszystkim dzisiaj, 6 00:00:16,840 --> 00:00:18,300 ale jesteś w dobrych rękach. 7 00:00:18,300 --> 00:00:21,710 Pozwolić mi przedstawić CS50 własnej Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: I oczywiście, to mamy się śmiać z faktu, 10 00:00:31,730 --> 00:00:36,820 że wysłał nam pionowa wideo i pokazać to. 11 00:00:36,820 --> 00:00:38,320 >> [ODTWARZANIE] 12 00:00:38,320 --> 00:00:39,820 >> [MUZYKI] 13 00:00:39,820 --> 00:00:42,350 >> [Ślady] 14 00:00:42,350 --> 00:00:44,730 >> -Ten Film nie mają wyglądać w ten sposób. 15 00:00:44,730 --> 00:00:46,570 Może to było zapobiec. 16 00:00:46,570 --> 00:00:49,070 Powiedz nie pionowych filmów. 17 00:00:49,070 --> 00:00:53,310 >> -Vertical Filmy stanie, gdy ci przytrzymaj aparat w niewłaściwy sposób. 18 00:00:53,310 --> 00:00:55,880 Twój film będzie koniec wyglądać jak gówno. 19 00:00:55,880 --> 00:00:57,650 >> - [GRUNT] 20 00:00:57,650 --> 00:01:02,240 >> -Jest Coraz więcej osób uzależnionych do tworzenia pionowych filmy codziennie. 21 00:01:02,240 --> 00:01:06,240 To nie pęka i nic, ale nadal jest naprawdę źle. 22 00:01:06,240 --> 00:01:10,410 Istnieją dwa rodzaje ludzie, którzy są dotknięci VVS. 23 00:01:10,410 --> 00:01:14,160 Pierwsza grupa traktuje filmy strzelają jak zdjęcia. 24 00:01:14,160 --> 00:01:15,850 Nie oznacza to żadnej szkody. 25 00:01:15,850 --> 00:01:19,180 Oni po prostu nie rozumieją, że podczas gdy można obrócić obraz, 26 00:01:19,180 --> 00:01:20,880 naprawdę nie można włączyć wideo. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [MAŁPA SOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -The Druga grupa to ludzie, którzy nie dać [BLEEP]. 30 00:01:27,540 --> 00:01:31,090 >> -Vertical Syndrome wideo jest niebezpieczne. 31 00:01:31,090 --> 00:01:34,120 Filmów mają zawsze w pozycji poziomej. 32 00:01:34,120 --> 00:01:35,990 W ofercie telewizyjnej są poziome. 33 00:01:35,990 --> 00:01:38,380 Ekrany komputerowe są poziome. 34 00:01:38,380 --> 00:01:41,580 Ludziom oczy są poziome. 35 00:01:41,580 --> 00:01:45,170 Nie są przystosowane do oglądać pionowe filmy. 36 00:01:45,170 --> 00:01:47,600 >> -I Kocham pionowe filmy. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Troszczy się o ciebie. 38 00:01:50,410 --> 00:01:53,340 >> -Jeśli Ten problem na zlekceważenia, Ty też 39 00:01:53,340 --> 00:01:57,650 rozpocznie pokazując cztery filmy na raz tylko zaoszczędzić przepustowość. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Pionowe wideo będzie być wielkości znaczka pocztowego. 41 00:02:02,400 --> 00:02:04,920 >> -I To rozprzestrzenił się wszędzie. 42 00:02:04,920 --> 00:02:07,670 Ekrany mają zawsze w pozycji poziomej. 43 00:02:07,670 --> 00:02:11,200 Jeśli pionowe filmy stają się zaakceptowanych, kina 44 00:02:11,200 --> 00:02:13,930 będzie musiał być wysoki i chudy. 45 00:02:13,930 --> 00:02:17,710 >> -A Wszystkich kinach będzie muszą uzyskać zburzony i odbudowany. 46 00:02:17,710 --> 00:02:22,090 I do czasu, kiedy zostały odbudowane, Mila Kunis będzie stara i brzydka. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Padnie na nich i umrzeć. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Wszyscy się sztywne szyje od patrząc w górę. 49 00:02:26,530 --> 00:02:29,800 >> -I Nikt nie będzie siedzieć w przedni rząd nigdy. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas ponownie zwolnienie Gwiazda Wojny again-- wydanie chudy. 51 00:02:37,170 --> 00:02:41,860 >> -Ja Nigdy nie był naprawdę w stanie powiedzieć historia, którą chciałem opowiedzieć. 52 00:02:41,860 --> 00:02:46,030 To była dla mnie wielka szansa, aby eksperymentować z nową technologią. 53 00:02:46,030 --> 00:02:48,150 >> -Jesteś gnojkiem. 54 00:02:48,150 --> 00:02:54,430 >> -Co Razem, gdy urządzenie mobilne jest używany do nagrywanie wideo, pokusa jest tam. 55 00:02:54,430 --> 00:02:56,370 Po prostu powiedz nie. 56 00:02:56,370 --> 00:03:00,116 Powiedz nie George'a Lucasa. 57 00:03:00,116 --> 00:03:04,062 Powiedz nie starego Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Powiedz nie pionowych filmów. 59 00:03:06,600 --> 00:03:12,511 >> -A Jeśli zobaczysz, że ktoś robi to, powiedzmy, "nie jesteś fotografowania tego prawa manekina!" 60 00:03:12,511 --> 00:03:15,433 >> [MUZYKI] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [Zakończyć odtwarzanie] 63 00:03:19,830 --> 00:03:23,702 >> [APPLAUSE] 64 00:03:23,702 --> 00:03:27,598 >> [AUDIO] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 ROB BOWDEN: --simple forma kryptografii, 67 00:03:45,790 --> 00:03:49,500 która jest w zasadzie kodowania i deszyfrowanie grypsów. 68 00:03:49,500 --> 00:03:52,590 Więc tutaj mamy bardzo prostą zabawkę. 69 00:03:52,590 --> 00:03:56,900 A pomysł jest pierścień zewnętrzny obraca się wokół wewnętrznego pierścienia. 70 00:03:56,900 --> 00:04:01,610 I widać, może gdybym powiększyć w, that-- trudno zobaczyć. 71 00:04:01,610 --> 00:04:05,090 Ale, podobnie jak liczba 1-- dobrze, że przeniósł. 72 00:04:05,090 --> 00:04:09,120 >> Numer 1 mapy do listu X, numer 2 mapy do listu 73 00:04:09,120 --> 00:04:11,630 J. Niezwykle trudne nie aby przejść do przodu. 74 00:04:11,630 --> 00:04:16,100 List 2 mapuje J. Numer 3 mapy do D. Tak 75 00:04:16,100 --> 00:04:20,140 z tego pierścienia można dać ktoś się komunikat 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Z jakiegoś powodu chcesz powiedzieć im XJD. 77 00:04:22,624 --> 00:04:24,540 Ale można dać im niektóre wiadomości z numerów, 78 00:04:24,540 --> 00:04:28,460 i pod warunkiem, że ten pierścień ma one może odszyfrować, co próbujesz powiedzieć. 79 00:04:28,460 --> 00:04:32,510 >> Więc może widzieliście to Szczególnym przykładem kryptografii 80 00:04:32,510 --> 00:04:36,640 przed, czy wokół Bożego Narodzenia oglądałeś A Christmas Story. 81 00:04:36,640 --> 00:04:38,520 Jeśli nigdy wcześniej nie widział to przed, a potem po prostu 82 00:04:38,520 --> 00:04:41,060 włączyć TBS w dosłownie za każdym razem, w Wigilię Bożego Narodzenia, 83 00:04:41,060 --> 00:04:44,510 bo po prostu pokazać go z powrotem do tyłu z powrotem do tyłu do siebie przez cały dzień. 84 00:04:44,510 --> 00:04:46,744 I odpowiedni film jest taki. 85 00:04:46,744 --> 00:04:47,410 [ODTWARZANIE] 86 00:04:47,410 --> 00:04:50,020 -bE Wiadomo wszem i wobec, że Ralph Parker Niniejszym 87 00:04:50,020 --> 00:04:52,850 mianowany członkiem Little Orphan Annie Tajny Krąg 88 00:04:52,850 --> 00:04:56,490 i ma prawo do wszystkich zaszczytów i korzyści występujące niego. 89 00:04:56,490 --> 00:04:59,010 Podpisano Mała Orphan Annie. 90 00:04:59,010 --> 00:05:03,120 Kontrasygnaty Pierre Andre atramentem! 91 00:05:03,120 --> 00:05:07,460 Nagrody i korzyści już w wieku dziewięciu lat! 92 00:05:07,460 --> 00:05:12,530 >> [KRZYCZAŁ z radia] 93 00:05:12,530 --> 00:05:13,030 -Chodź Na. 94 00:05:13,030 --> 00:05:14,000 Chodźmy się z nim. 95 00:05:14,000 --> 00:05:18,274 Nie muszę cały ten jazz o przemytników i piratów. 96 00:05:18,274 --> 00:05:20,440 -listen Jutro w nocy z przygoda zawieranie 97 00:05:20,440 --> 00:05:22,540 Czarnej statek piracki. 98 00:05:22,540 --> 00:05:25,460 Teraz nadszedł czas na TAJNE Annie 99 00:05:25,460 --> 00:05:28,620 dla Ciebie członkowie Secret Circle. 100 00:05:28,620 --> 00:05:32,370 Pamiętaj dzieci, tylko członkowie Secret Annie Koła 101 00:05:32,370 --> 00:05:34,880 może rozszyfrować tajne wiadomości Annie. 102 00:05:34,880 --> 00:05:39,100 Pamiętaj, Annie zależy od Ciebie. 103 00:05:39,100 --> 00:05:41,660 Ustaw szpilki do B2. 104 00:05:41,660 --> 00:05:43,960 Oto wiadomość. 105 00:05:43,960 --> 00:05:44,680 12. 106 00:05:44,680 --> 00:05:45,180 11. 107 00:05:45,180 --> 00:05:45,679 2. 108 00:05:45,679 --> 00:05:48,110 -Jestem W moim pierwszym tajnym spotkaniu. 109 00:05:48,110 --> 00:05:49,030 >> -25. 110 00:05:49,030 --> 00:05:49,834 14. 111 00:05:49,834 --> 00:05:51,040 11. 112 00:05:51,040 --> 00:05:51,854 18. 113 00:05:51,854 --> 00:05:52,670 16. 114 00:05:52,670 --> 00:05:54,570 >> Och, Pierre jest w wielkim dzisiaj głosu. 115 00:05:54,570 --> 00:05:57,490 Mógłbym powiedzieć, że dzisiejszy Przesłanie było naprawdę ważne. 116 00:05:57,490 --> 00:05:57,990 -3. 117 00:05:57,990 --> 00:06:00,080 25. 118 00:06:00,080 --> 00:06:01,580 To wiadomość od Annie sama. 119 00:06:01,580 --> 00:06:02,880 Pamiętaj, nie mów nikomu. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Five Sekund później, jestem w jedynym pokój w domu, w którym chłopiec z dziewięciu 122 00:06:11,130 --> 00:06:15,830 może siedzieć w prywatność i dekodowania. 123 00:06:15,830 --> 00:06:16,620 Aha! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 Poszedłem do następnego. 126 00:06:20,210 --> 00:06:23,300 E. Pierwsze słowo to "być". 127 00:06:23,300 --> 00:06:25,880 S. Został on teraz przychodzi łatwiej. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 To R. 130 00:06:30,528 --> 00:06:31,278 -Chodź Na, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Muszę iść! 132 00:06:31,861 --> 00:06:33,182 -I'll Zaraz zejdzie, mamo! 133 00:06:33,182 --> 00:06:36,038 Gee świst. 134 00:06:36,038 --> 00:06:42,840 T. O. "Koniecznie" - upewnij się, że co? 135 00:06:42,840 --> 00:06:44,770 Co było Mała Orphan Annie chce powiedzieć? 136 00:06:44,770 --> 00:06:46,381 Upewnij się, że co? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Musi odejść! 138 00:06:47,825 --> 00:06:48,866 Czy mógłbyś wyjść? 139 00:06:48,866 --> 00:06:49,783 >> -Wszystkie Porządku, mamo! 140 00:06:49,783 --> 00:06:51,786 Zaraz będę się! 141 00:06:51,786 --> 00:06:53,606 Byłem coraz bliżej. 142 00:06:53,606 --> 00:06:55,550 Napięcie było straszne. 143 00:06:55,550 --> 00:06:57,050 Co to było? 144 00:06:57,050 --> 00:06:59,905 Los planety może wisi na włosku! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy iść! 146 00:07:01,736 --> 00:07:05,680 >> -I'll Być prosto, na litość boską! 147 00:07:05,680 --> 00:07:07,170 Prawie na miejscu! 148 00:07:07,170 --> 00:07:08,150 Moje palce poleciał. 149 00:07:08,150 --> 00:07:09,980 Mój umysł był pułapką stali. 150 00:07:09,980 --> 00:07:11,496 Każda pora wibruje. 151 00:07:11,496 --> 00:07:13,268 To było niemal oczywiste! 152 00:07:13,268 --> 00:07:13,767 Tak. 153 00:07:13,767 --> 00:07:14,609 Tak. 154 00:07:14,609 --> 00:07:15,108 Tak. 155 00:07:15,108 --> 00:07:16,449 Tak. 156 00:07:16,449 --> 00:07:20,240 Pamiętaj, aby pić Ovaltine. 157 00:07:20,240 --> 00:07:20,740 Ovaltine? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 Za durny komercyjnych? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Sukinsynem. 162 00:07:34,920 --> 00:07:35,890 >> [Zakończyć odtwarzanie] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: Więc tak Ovaltine dotyczy kryptografii. 164 00:07:39,650 --> 00:07:42,290 Zasadniczo CS50 tylko reklamowane Ovaltine, więc mogliśmy 165 00:07:42,290 --> 00:07:44,400 być kiepska handlowa dla Ovaltine. 166 00:07:44,400 --> 00:07:44,900 W porządku. 167 00:07:44,900 --> 00:07:47,120 Więc teraz rzeczywista informatyka. 168 00:07:47,120 --> 00:07:50,670 Pamiętaj poniedziałek skończyliśmy nurkowanie w głąb strun. 169 00:07:50,670 --> 00:07:52,820 Tak więc mamy do czynienia z ciąg "Zamyla." 170 00:07:52,820 --> 00:07:55,130 I byliśmy uznając fakt, że możemy traktować 171 00:07:55,130 --> 00:07:57,510 "Zamyla" jako ciąg znaków. 172 00:07:57,510 --> 00:07:59,740 I pamiętaj, że dowiedzieliśmy się, notacja uchwyt. 173 00:07:59,740 --> 00:08:01,995 Więc jeśli były przechowywane w ciąg "s", a następnie 174 00:08:01,995 --> 00:08:05,860 jeśli mówi s Uchwyt 0, które wskazać kapitału Z. się 175 00:08:05,860 --> 00:08:09,790 A jeśli mówi s uchwyt 1, które wskazywałyby pierwsze małe litery a, 176 00:08:09,790 --> 00:08:14,220 i tak dalej, aż do s wspornika 5, co oznaczałoby mógł. 177 00:08:14,220 --> 00:08:17,090 >> Pamiętaj, że Długość tego ciągu jest 6, 178 00:08:17,090 --> 00:08:23,220 ale indeksy w łańcuchu są 0 do 5, Z przez to trwać. 179 00:08:23,220 --> 00:08:28,650 Tak to się teraz pasuje do większego obrazu pamięci komputera, pamięci RAM. 180 00:08:28,650 --> 00:08:32,020 Więc gdzieś program, który używasz komputera 181 00:08:32,020 --> 00:08:34,780 należy pamiętać Zamyla gdzie w pamięci. 182 00:08:34,780 --> 00:08:36,029 Więc może mam ochotnika? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Tak, proszę. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 A jak się nazywasz? 187 00:08:51,500 --> 00:08:52,410 >> DEAN: Dean. 188 00:08:52,410 --> 00:08:53,550 >> ROB BOWDEN: Dean? 189 00:08:53,550 --> 00:08:54,910 Miło cię poznać, Dean. 190 00:08:54,910 --> 00:08:58,240 Więc chodź tutaj, a będziemy mieć narysować 191 00:08:58,240 --> 00:09:00,740 na naszej miłej fajną układ pamięci. 192 00:09:00,740 --> 00:09:05,950 Teraz lubię myśleć pamięci jako jeden długi pas bajtów 193 00:09:05,950 --> 00:09:11,090 ale tylko dla celów wyświetlania że będziesz po prostu nie od lewej do prawej, od góry do dołu. 194 00:09:11,090 --> 00:09:11,590 OK? 195 00:09:11,590 --> 00:09:22,030 >> Więc mam zamiar pokazać program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 A więc wszystko, ten program jest robi prosi cztery struny 197 00:09:25,760 --> 00:09:28,830 od użytkownika z Druk GetString a następnie 198 00:09:28,830 --> 00:09:30,950 cokolwiek to pierwszy ciąg znaków wpisany był. 199 00:09:30,950 --> 00:09:32,840 Jesteśmy ignorując dwa przez cztery. 200 00:09:32,840 --> 00:09:33,610 OK. 201 00:09:33,610 --> 00:09:38,210 Więc tutaj now-- kiedy I pierwszy wniosek s1. 202 00:09:38,210 --> 00:09:39,740 Więc jesteś komputer. 203 00:09:39,740 --> 00:09:41,680 I implementowania getString. 204 00:09:41,680 --> 00:09:46,710 Więc poprosić o ciąg znaków z mnie, a ja mówię, OK, Dean. 205 00:09:46,710 --> 00:09:47,900 Podaj ciąg znaków "Dean". 206 00:09:47,900 --> 00:09:50,300 >> Więc gdzieś w pamięci, trzeba pamiętać "Dean". 207 00:09:50,300 --> 00:09:52,160 Więc napisać to w pamięci gdzieś. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Doskonały. 210 00:09:59,210 --> 00:09:59,880 OK. 211 00:09:59,880 --> 00:10:01,740 Więc teraz mamy s2. 212 00:10:01,740 --> 00:10:03,869 I s2 będzie żądanie getString. 213 00:10:03,869 --> 00:10:05,160 Więc mam zamiar wprowadzić łańcuch. 214 00:10:05,160 --> 00:10:08,720 Mam zamiar wprowadzić "Hannah". 215 00:10:08,720 --> 00:10:10,586 Więc wpisz "Hannah" gdzieś w pamięci. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Tak. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, więc teraz s3. 220 00:10:25,550 --> 00:10:28,380 I to będzie kolejny żądać getString. 221 00:10:28,380 --> 00:10:37,020 A więc teraz wpisać "Maria". 222 00:10:37,020 --> 00:10:37,520 W porządku. 223 00:10:37,520 --> 00:10:40,980 I jest jeszcze jeden ostatni Żądanie getString, S4. 224 00:10:40,980 --> 00:10:42,580 Tak więc, nie wiem. 225 00:10:42,580 --> 00:10:45,640 Jak o idziemy z antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Więc podaj, że do pamięci. 227 00:10:49,460 --> 00:10:50,400 Tak. 228 00:10:50,400 --> 00:10:53,970 Więc po prostu zrobić "Rob". 229 00:10:53,970 --> 00:10:54,560 >> OK. 230 00:10:54,560 --> 00:10:58,410 Więc teraz explain-- dlaczego zostawić te miejsca? 231 00:10:58,410 --> 00:11:01,340 Dlaczego masz to pole puste Przestrzeń tutaj, tutaj i tutaj? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Tak. 234 00:11:05,670 --> 00:11:09,450 Tak więc zauważyć, kiedy idę wydrukować s1-- więc jeśli 235 00:11:09,450 --> 00:11:11,890 miał "Hannah" running aż obok "Dean" 236 00:11:11,890 --> 00:11:14,360 skąd mamy wiedzieć, kiedy ciąg "Dean" się kończy? 237 00:11:14,360 --> 00:11:19,470 Więc drukowania s1 ciąg może mieć po prostu wydrukować "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 Jeśli nie ma żadnej wskazówki od kiedy "Dziekan" rzeczywiście się kończy. 239 00:11:22,720 --> 00:11:23,240 >> W porządku. 240 00:11:23,240 --> 00:11:27,650 Tak więc w pamięci, jak nam się właściwie reprezentowania tego końca łańcucha 241 00:11:27,650 --> 00:11:29,940 jest z backslashem zera. 242 00:11:29,940 --> 00:11:32,620 Więc to miejsce jest dokładnie to, co chcieliśmy. 243 00:11:32,620 --> 00:11:34,040 To powinien być odwrotny ukośnik zero. 244 00:11:34,040 --> 00:11:37,690 To będzie odwrotny ukośnik zero, i to będzie odwrotny ukośnik zero. 245 00:11:37,690 --> 00:11:41,585 I można mieć wspaniałe nagrody za to, że idealne wolontariuszy. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Weź piłkę na stres! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> OK. 250 00:11:49,700 --> 00:11:54,420 Więc to znak backslash zero jak wskazują na koniec łańcucha. 251 00:11:54,420 --> 00:11:57,120 To jak, kiedy dany program chce drukować ciąg, 252 00:11:57,120 --> 00:11:59,760 Pamiętam, że to how-- dowiedzieliśmy Funkcja strlen zeszłym tygodniu? 253 00:11:59,760 --> 00:12:00,940 Długość łańcucha? 254 00:12:00,940 --> 00:12:03,770 To, jak długość ciągu jest w stanie określić, jak długo ciąg jest. 255 00:12:03,770 --> 00:12:05,810 To po prostu utrzymuje iteracji ciągu znaków 256 00:12:05,810 --> 00:12:08,217 dopóki nie znajdzie interpretacja odwrotnego ukośnika zerowy charakter. 257 00:12:08,217 --> 00:12:11,050 Tak więc ważne jest, aby uświadomić sobie, o znaku backslash zera 258 00:12:11,050 --> 00:12:14,950 jest to reprezentowane wszystkich zer w bitach. 259 00:12:14,950 --> 00:12:18,980 Tak więc zauważyć, że jest to odrębny od znaku zerowego. 260 00:12:18,980 --> 00:12:23,010 Więc znak zero, jeśli pamiętać, w przykładzie, który dał w celu 261 00:12:23,010 --> 00:12:27,360 wykładu, gdzie mapy znaków to-- jak mapy stolicy A do 65. 262 00:12:27,360 --> 00:12:29,130 Małe litery na mapy do 97. 263 00:12:29,130 --> 00:12:30,890 Małe litery b będzie 98. 264 00:12:30,890 --> 00:12:35,220 Tak więc liczba 0 mapy to-- nie mam wiem, od szczytu głowy. 265 00:12:35,220 --> 00:12:36,400 44 lub 45. 266 00:12:36,400 --> 00:12:37,890 Gdzieś w tym regionie. 267 00:12:37,890 --> 00:12:40,850 >> Więc postać 0 jest rzeczywista liczba. 268 00:12:40,850 --> 00:12:44,350 Ale backslash zera mapy do wszystkich bitami zerowymi. 269 00:12:44,350 --> 00:12:46,380 Więc nie ma rozróżnienia między backslashem zerowej, 270 00:12:46,380 --> 00:12:48,450 które będziemy nazywać NUL. 271 00:12:48,450 --> 00:12:53,210 Istnieje różnica między backslash zero i znak zero. 272 00:12:53,210 --> 00:12:54,350 >> W porządku. 273 00:12:54,350 --> 00:12:57,520 Więc mówienie trochę więcej o strunach. 274 00:12:57,520 --> 00:13:01,470 Tak więc widzimy tutaj, to jak to być określone w pamięci. 275 00:13:01,470 --> 00:13:07,940 Więc ten pomysł strun jak sekwencja z characters-- więc oficjalnym komputer 276 00:13:07,940 --> 00:13:10,750 sciency określenie sekwencji jest tablicą. 277 00:13:10,750 --> 00:13:13,790 Więc my nazywamy ciąg tablica znaków. 278 00:13:13,790 --> 00:13:17,770 A tak naprawdę są inne dane Typy że możemy tablice z. 279 00:13:17,770 --> 00:13:19,975 >> Tak, aby motywować tym, spójrz na przykład. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Nazwiemy go ages0.c będę skopiować i wkleić nasz szablon. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 OK. 284 00:13:33,410 --> 00:13:39,378 Tak więc w tym programie, co chcesz zrobić, to chwycić wiek 285 00:13:39,378 --> 00:13:45,160 trzech uczniów w toku. 286 00:13:45,160 --> 00:13:49,240 Więc wiemy, int age-- i teraz mam zamiar powiedzieć 0. 287 00:13:49,240 --> 00:13:53,140 Więc może chcesz powiedzieć age1, ale w celach zobaczymy wkrótce, 288 00:13:53,140 --> 00:13:57,187 Powiem int age0 równa GetInt. 289 00:13:57,187 --> 00:13:59,270 Więc tym samym wezwaniem do GetInt że używaliśmy I 290 00:13:59,270 --> 00:14:01,561 nie stało się monitowania mówiąc: "daj mi wiek." 291 00:14:01,561 --> 00:14:03,120 Ale właśnie o to prosi. 292 00:14:03,120 --> 00:14:06,510 >> I age1 równa GetInt. 293 00:14:06,510 --> 00:14:09,600 I int age2 równa GetInt. 294 00:14:09,600 --> 00:14:14,070 Tak więc raz jeszcze, trzech studentów, ale Ostatecznie zmienne indeksy 295 00:14:14,070 --> 00:14:16,890 są age0 przez age2. 296 00:14:16,890 --> 00:14:17,550 OK. 297 00:14:17,550 --> 00:14:23,960 Więc ten program zrobi wszystko chcemy z age0, age1 i age2, 298 00:14:23,960 --> 00:14:27,670 ale ten program ostatecznie działa na trzech studentów. 299 00:14:27,670 --> 00:14:28,380 >> OK. 300 00:14:28,380 --> 00:14:32,110 I co teraz, czy chcę czterech studentów? 301 00:14:32,110 --> 00:14:36,000 Cóż, mam zamiar wrócić do mojego kodu, zmienić komentarz, 302 00:14:36,000 --> 00:14:39,840 a teraz mamy int age3 równa GetInt. 303 00:14:39,840 --> 00:14:40,610 OK. 304 00:14:40,610 --> 00:14:43,660 Więc kto widzi problem tutaj? 305 00:14:43,660 --> 00:14:47,310 Jaki jest problem z tego rodzaju instalacji? 306 00:14:47,310 --> 00:14:47,810 Tak. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Tak. 309 00:14:53,610 --> 00:14:56,360 Więc my tworząc Zmienna dla każdego ucznia. 310 00:14:56,360 --> 00:15:00,140 Teraz, że działa, ale ostatecznie Co jeśli teraz 311 00:15:00,140 --> 00:15:06,500 powiedzieć: "Chcę, aby pobrać wiek ośmiu studentów lub 16 uczniów 312 00:15:06,500 --> 00:15:11,340 czy to jednak wiele studentów setki studentów w CS50 313 00:15:11,340 --> 00:15:16,750 lub tysiące studentów na kampusie lub miliardy ludzi na świecie? 314 00:15:16,750 --> 00:15:19,130 Więc w końcu to nie jest trwałe. 315 00:15:19,130 --> 00:15:21,990 Za każdym razem widzisz siebie kopiowania i wklejanie kodu tak, 316 00:15:21,990 --> 00:15:25,050 należy na ogół czują że istnieje lepszy sposób. 317 00:15:25,050 --> 00:15:31,290 >> Tak to jest, gdy wprowadzamy deklaracja tablicy. 318 00:15:31,290 --> 00:15:34,564 Więc kiedy zadeklarować tablicę, to jest to, co ogólnie Format 319 00:15:34,564 --> 00:15:35,480 będzie wyglądać. 320 00:15:35,480 --> 00:15:36,664 Jedziemy do powiedzenia typu. 321 00:15:36,664 --> 00:15:38,830 a następnie jedziemy do podać nazwę tej tablicy, 322 00:15:38,830 --> 00:15:41,150 jak możemy zdefiniować dowolną zmienną. 323 00:15:41,150 --> 00:15:43,980 I w końcu używamy Uchwyt ten zapis ponownie 324 00:15:43,980 --> 00:15:47,480 ale w innym kontekście, z jak używaliśmy go wcześniej. 325 00:15:47,480 --> 00:15:51,860 >> Więc tutaj to wygląda jak zwykły deklaracja zmiennej, które widzieliśmy. 326 00:15:51,860 --> 00:15:54,890 Tak więc widzieliśmy int x średnik przed. 327 00:15:54,890 --> 00:16:00,020 No to teraz możemy zobaczyć coś jak int x nawiasach 5. 328 00:16:00,020 --> 00:16:04,020 I wprowadzenie tego pomysłu w Program GetInt że have-- 329 00:16:04,020 --> 00:16:08,850 więc możemy realizować w ten sam sposób. 330 00:16:08,850 --> 00:16:13,630 >> Powiedzmy, że w CS mamy tendencję do korzystania n liczba czegoś. 331 00:16:13,630 --> 00:16:16,150 Więc tutaj mamy zamiar przechowywać czterech studentów. 332 00:16:16,150 --> 00:16:25,960 A teraz możemy powiedzieć, int wiek Uchwyt nie n-- dość dostać yet-- 333 00:16:25,960 --> 00:16:32,210 zadeklarować tablicę czterech studentów. 334 00:16:32,210 --> 00:16:38,050 Więc jak to będzie wyglądać w Pamięć jest podobna do tego. 335 00:16:38,050 --> 00:16:39,570 Jasne, tego. 336 00:16:39,570 --> 00:16:46,606 A my będziemy mieć gdzieś w memory-- będę tego znosić tam. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Gdzieś w pamięci. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Jeden dwa trzy cztery. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Mamy cztery liczby całkowite z rzędu dla tego zestawu czterech liczb całkowitych. 343 00:17:09,849 --> 00:17:13,820 Tak więc, obecnie, co jest Rozmiar jednego z tych pól? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Tak. 346 00:17:17,690 --> 00:17:18,390 To cztery bajty. 347 00:17:18,390 --> 00:17:19,690 Jest to 32 bitów. 348 00:17:19,690 --> 00:17:22,310 Więc teraz jest inaczej z matrycy, że 349 00:17:22,310 --> 00:17:24,020 widziałem wcześniej, tablicę znaków. 350 00:17:24,020 --> 00:17:28,540 W ciąg każde pole było tylko jeden bajt, bo postać jest tylko jeden bajt. 351 00:17:28,540 --> 00:17:32,170 Ale z tablicy liczb całkowitych, z których każda pole ma być cztery bajty w kolejności 352 00:17:32,170 --> 00:17:34,060 aby zmieścić cały całkowitą. 353 00:17:34,060 --> 00:17:37,197 Więc to jest to, co tablica cztery int będzie wyglądać. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> A następnie z powrotem do kodu. 356 00:17:43,870 --> 00:17:47,460 Teraz chcemy, aby rzeczywiście sklepu liczby całkowite do tej tablicy. 357 00:17:47,460 --> 00:17:53,470 Więc teraz jest to bardzo, bardzo, bardzo wspólny wzór, który będzie w pewnym momencie 358 00:17:53,470 --> 00:17:54,680 stać pamięci mięśniowej. 359 00:17:54,680 --> 00:17:56,710 Więc int i jest równa 0. 360 00:17:56,710 --> 00:17:57,940 i mniej niż n. 361 00:17:57,940 --> 00:18:01,850 ja plus plusem. 362 00:18:01,850 --> 00:18:05,790 Wiekowej i równa GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Więc to dla pętli, ten format, należy się bardzo przyzwyczajeni. 364 00:18:15,100 --> 00:18:20,010 Tak to jest na ogół, jak będziemy iteracyjnego prawie każdą tablicę. 365 00:18:20,010 --> 00:18:23,690 Teraz zauważyć tego rodzaju wyjaśnia, dlaczego od początku 366 00:18:23,690 --> 00:18:29,870 nie mieliśmy do pętli będzie na int I wynosi 1, i mniej niż lub równa się 10. 367 00:18:29,870 --> 00:18:34,200 Wynika to z faktu, że od zera sprawia, że ​​działają dobrze z tablic. 368 00:18:34,200 --> 00:18:36,270 Więc tablice są indeksowane zera. 369 00:18:36,270 --> 00:18:40,360 Jeśli ta tablica ma długość 4, indeksy są 0 do 3. 370 00:18:40,360 --> 00:18:42,880 >> Więc po pierwsze iteracja to dla pętli 371 00:18:42,880 --> 00:18:49,930 jedziemy do ustawiania wiek Uchwyt 0 równa wywołanie GetInt. 372 00:18:49,930 --> 00:18:52,440 Więc co mi się stało wprowadzić z klawiatury. 373 00:18:52,440 --> 00:18:56,970 W drugim przebiegu, jesteśmy ustawienie age1 równa GetInt. 374 00:18:56,970 --> 00:18:58,230 Trzeci przebieg, age2. 375 00:18:58,230 --> 00:18:59,880 Ostatni przebieg age3. 376 00:18:59,880 --> 00:19:05,750 Jeśli więc w pierwszym przebiegu pętli I wprowadzić numer 4 na klawiaturze, 377 00:19:05,750 --> 00:19:07,740 Potem włóż 4 tutaj. 378 00:19:07,740 --> 00:19:11,470 Jeśli przy drugim przejściu mi wejść 50, będziemy umieścić 50 tutaj. 379 00:19:11,470 --> 00:19:15,180 Na trzecim przejściu mógłbym wprowadzić ujemne 1, negatywne 1, 380 00:19:15,180 --> 00:19:21,810 i wreszcie, jeśli wejdę 0-- i teraz pamiętam, że to był wskaźnik trzy. 381 00:19:21,810 --> 00:19:25,350 >> Po pętla tyłu, i jest ma być zwiększona do 4. 382 00:19:25,350 --> 00:19:27,770 i nie jest mniejsze od n, które jest 4. 383 00:19:27,770 --> 00:19:29,840 I możemy wyrwać się z pętli. 384 00:19:29,840 --> 00:19:32,578 Więc co byłoby w tym złego? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Niesłyszalne]? 387 00:19:38,729 --> 00:19:39,604 PUBLICZNOŚCI: [niesłyszalne] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Tak. 390 00:19:46,400 --> 00:19:51,550 Więc tablica ma tylko cztery miejsca, co oznacza w indeksach 0 do 3. 391 00:19:51,550 --> 00:19:55,630 Więc jeśli tak było, że tak przyjąć wartość 4 w pewnym momencie. 392 00:19:55,630 --> 00:20:00,910 wiekowej 4 będzie ustawienie co dzieje się tutaj 393 00:20:00,910 --> 00:20:02,920 do tego, co mam do powiedzenia, wprowadź 6. 394 00:20:02,920 --> 00:20:05,010 To będzie ustawienie to 6. 395 00:20:05,010 --> 00:20:06,560 >> Ale nie wiemy, co jest tutaj. 396 00:20:06,560 --> 00:20:08,836 To nie jest pamięcią że mieliśmy dostęp. 397 00:20:08,836 --> 00:20:10,710 Więc jeśli pamiętamy z poprzedni wykład, 398 00:20:10,710 --> 00:20:14,350 był drukowanie wartości Zamyla i w pewnym momencie uderzył tej segmentacji 399 00:20:14,350 --> 00:20:17,990 przyczepić. Więc prawdopodobnie będziesz widzieć wiele błędów segmentacji jak Ciebie 400 00:20:17,990 --> 00:20:20,530 wykonania niektórych zestawów problemowych. 401 00:20:20,530 --> 00:20:24,950 Jednak jest to jeden ze sposobów, w którym można napotkać segmentacji 402 00:20:24,950 --> 00:20:28,540 winy, po uruchomieniu dostępu pamięci w taki sposób, że nie powinno być. 403 00:20:28,540 --> 00:20:34,117 Więc nie ma dostępu do to miejsce i to jest błąd. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Więc to jest lepsze. 406 00:20:40,190 --> 00:20:45,820 Teraz nie jest jeszcze mały Problem z tym kodem. 407 00:20:45,820 --> 00:20:50,720 I to w zasadzie, że jesteśmy nadal tkwi w czterech studentów. 408 00:20:50,720 --> 00:20:52,940 Teraz, jeśli chcę użyć ośmiu studentów, OK. 409 00:20:52,940 --> 00:20:54,350 To nie jest nic wielkiego. 410 00:20:54,350 --> 00:20:58,120 Mogę iść, zmienić komentarz i zmień n. 411 00:20:58,120 --> 00:20:59,760 Teraz to będzie działać z ośmiu studentów. 412 00:20:59,760 --> 00:21:02,190 Jeśli mogę skompilować to i uruchomić to, to pokaże me-- 413 00:21:02,190 --> 00:21:07,870 będzie żądać całkowitymi dla ośmiu uczniowie i będzie po prostu pracować. 414 00:21:07,870 --> 00:21:11,850 Ale to mniej niż idealne trzeba rekompilacji programu za każdym razem 415 00:21:11,850 --> 00:21:15,960 Chcę zmienić liczbę studentów że chcę wprowadzić w wieku do. 416 00:21:15,960 --> 00:21:22,990 >> Tak więc końcowa ulepszeniem to, jak zobaczymy here-- jesteśmy 417 00:21:22,990 --> 00:21:26,177 zamierza zwrócić się do liczby osób. 418 00:21:26,177 --> 00:21:28,010 Tutaj mamy kilka osób w pokojach 419 00:21:28,010 --> 00:21:29,880 lub jakiekolwiek wiek osób w pokoju. 420 00:21:29,880 --> 00:21:33,300 Ale mamy zamiar zwrócić się do liczby osób w pokoju od użytkownika. 421 00:21:33,300 --> 00:21:36,171 Więc to jest dokładnie to samo zrób podczas Pętla, które widzieliśmy wcześniej. 422 00:21:36,171 --> 00:21:37,920 To dokładnie to samo do-while, że 423 00:21:37,920 --> 00:21:40,050 może być wdrożenie na planie problemów. 424 00:21:40,050 --> 00:21:43,102 Tak długo, jak są one Wprowadzanie n mniejszy od 1, 425 00:21:43,102 --> 00:21:45,310 więc nie musi być w najmniej jedna osoba w pokoju. 426 00:21:45,310 --> 00:21:47,407 Tak długo, jak są one Wprowadzanie n mniejszy od 1, 427 00:21:47,407 --> 00:21:48,990 wtedy będziemy prosić ponownie. 428 00:21:48,990 --> 00:21:50,906 Proszę podać numer osób w pokoju. 429 00:21:50,906 --> 00:21:53,550 Teraz, kiedy mamy numer osób w room-- 430 00:21:53,550 --> 00:21:58,020 więc mogę podać, że nie 200 osób w tym pokoju. 431 00:21:58,020 --> 00:22:05,480 Potem tu mamy zamiar przyjść i zadeklarować tablicę o rozmiarze 200. 432 00:22:05,480 --> 00:22:10,220 Jesteśmy deklarowania tablicę, która jest wystarczająco duży, aby pomieścić 200 wieki. 433 00:22:10,220 --> 00:22:15,370 Jadąc w dół, to jest to dla pętli że będzie się bardzo przyzwyczajeni. 434 00:22:15,370 --> 00:22:19,490 Więc iteracji po tej tablicy, przypisanie do każdej lokalizacji 435 00:22:19,490 --> 00:22:23,020 w tej tablicy liczbą całkowitą, a następnie ostatecznie tutaj jesteśmy 436 00:22:23,020 --> 00:22:28,340 tylko coraz przykład iteracji na tej tablicy, aby nie przypisywać wartości, 437 00:22:28,340 --> 00:22:30,150 ale aby uzyskać dostęp do wartości. 438 00:22:30,150 --> 00:22:33,810 >> Więc tutaj widzimy, że mówią, za rok, 439 00:22:33,810 --> 00:22:40,470 Osoba% i będzie% i lat, gdzie pierwsza% i jest i plus 1. 440 00:22:40,470 --> 00:22:43,010 Więc jest to indeks zmiennej. 441 00:22:43,010 --> 00:22:49,420 A drugi% i ma być Wartość przechowywana w tablicy wieków plus 1. 442 00:22:49,420 --> 00:22:54,217 Więc to plus 1 to tylko dlatego, że jesteśmy saying-- ten plus 1, w wieku ja plus 1. 443 00:22:54,217 --> 00:22:57,050 To plus 1 to tylko dlatego, że jesteśmy mówiąc, za rok osoby 444 00:22:57,050 --> 00:22:58,280 będzie to stare. 445 00:22:58,280 --> 00:23:01,080 >> Więc dlaczego tak jest i plus 1? 446 00:23:01,080 --> 00:23:04,064 Dlaczego mamy plus 1 nie? 447 00:23:04,064 --> 00:23:04,564 Tak. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Tak. 450 00:23:07,930 --> 00:23:10,510 Więc pamiętaj, tablice są indeksowane zera. 451 00:23:10,510 --> 00:23:14,840 Jeśli więc są to drukowanie na ktoś po prostu przeczytać wyjście 452 00:23:14,840 --> 00:23:19,380 to prawdopodobnie chcą zobaczyć coś jak osoby, jeden, osoba numer jeden, 453 00:23:19,380 --> 00:23:21,160 będzie 20 lat. 454 00:23:21,160 --> 00:23:23,570 Numer osoby dwa będzie 15 lat. 455 00:23:23,570 --> 00:23:27,420 Oni raczej nie widzieć osobę Numer zerowy ma 15 lat. 456 00:23:27,420 --> 00:23:36,460 >> Więc kompilacji to i po prostu zobaczyć, co wygląda like-- Tworzenie trochę miejsca. 457 00:23:36,460 --> 00:23:43,560 Sprawdź, w wieku kompilację. 458 00:23:43,560 --> 00:23:45,080 Uruchamianie wieku. 459 00:23:45,080 --> 00:23:46,580 Widzimy liczby osób w pokoju. 460 00:23:46,580 --> 00:23:48,850 Więc powiem nie ma trzy osoby w pokoju. 461 00:23:48,850 --> 00:23:54,000 Wiek osoby numer jeden, powiedzmy, 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 A teraz powiem za rok teraz będą 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Zobaczmy, że to działa z n nie jest równa 3. 464 00:24:02,900 --> 00:24:07,940 Więc jeśli powiem, liczba osób to 5, jeden, dwa, trzy, dwa, jeden, za rok 465 00:24:07,940 --> 00:24:11,170 oni będą dwa, trzy, cztery, trzy, dwa lata. 466 00:24:11,170 --> 00:24:16,500 Więc mogłem tak łatwo n będzie 10.000. 467 00:24:16,500 --> 00:24:21,270 Teraz będę siedział tu dość chwili wejścia w wieku, ale to działa. 468 00:24:21,270 --> 00:24:26,000 >> Więc teraz w pamięci gdzieś mamy tablicę wielkości 10000, 469 00:24:26,000 --> 00:24:28,830 więc ostatecznie 40000 bajty, ponieważ istnieją 470 00:24:28,830 --> 00:24:31,222 cztery bajty dla każdego z tych liczb. 471 00:24:31,222 --> 00:24:33,180 Więc jest tablica Rozmiar 10000, gdzie się da 472 00:24:33,180 --> 00:24:36,201 przechowywać w wieku od tych 10.000 osób. 473 00:24:36,201 --> 00:24:36,700 W porządku. 474 00:24:36,700 --> 00:24:40,070 Pytania o coś z tego? 475 00:24:40,070 --> 00:24:41,892 Tak. 476 00:24:41,892 --> 00:24:43,350 Co zrobić, jeśli dał liczbę ujemną? 477 00:24:43,350 --> 00:24:44,870 Zobaczmy co się stanie. 478 00:24:44,870 --> 00:24:49,320 Tak więc w tym konkretnym numerem case-- osób w pokoju, negatywny. 479 00:24:49,320 --> 00:24:52,580 Odrzucił że bo się tu stało 480 00:24:52,580 --> 00:24:57,180 do obchodzenia się z tym, że gdy n jest mniej niż jednej mamy zamiar zapytać ponownie. 481 00:24:57,180 --> 00:25:01,780 Jeśli spróbujesz zadeklarować szereg negatywnych wielkości, 482 00:25:01,780 --> 00:25:03,950 na ogół nie działa. 483 00:25:03,950 --> 00:25:05,570 >> Więc spróbujmy. 484 00:25:05,570 --> 00:25:08,000 Zignorujmy co Wartość ich wejście dla n 485 00:25:08,000 --> 00:25:10,571 i po prostu powiedzieć int wieku od negatywny. 486 00:25:10,571 --> 00:25:12,410 Zobaczymy, czy nawet kompiluje. 487 00:25:12,410 --> 00:25:14,100 Nie jestem pewien. 488 00:25:14,100 --> 00:25:14,920 Nie. 489 00:25:14,920 --> 00:25:18,280 Więc wieku jest zadeklarowana jako Tablica z ujemnym wielkości. 490 00:25:18,280 --> 00:25:22,540 Więc z góry uznaje tablica nie może mieć negatywny wielkości i odrzuca ją. 491 00:25:22,540 --> 00:25:26,840 Teraz, jeśli nie obsługiwać to do-while poprawnie, 492 00:25:26,840 --> 00:25:28,810 jeśli nie sprawdzali gdy n jest mniejsze niż 1-- 493 00:25:28,810 --> 00:25:32,690 Powiedzmy, że po prostu nie ma tego w ogóle 494 00:25:32,690 --> 00:25:35,940 i zamiast po prostu złapać liczbę całkowitą. 495 00:25:35,940 --> 00:25:40,710 Bez względu na to, że liczba całkowita jest, deklarujemy tablicę tej wielkości. 496 00:25:40,710 --> 00:25:44,250 >> Więc kompilator nie może ewentualnie narzekać teraz. 497 00:25:44,250 --> 00:25:48,780 Jeśli mogę skompilować this-- więc nie mogę narzekać, 498 00:25:48,780 --> 00:25:51,480 ponieważ nie może wiedzieć, że jestem zamierza wprowadzić liczbę ujemną, 499 00:25:51,480 --> 00:25:52,550 co może być nieprawidłowy. 500 00:25:52,550 --> 00:25:54,633 Dla wszystkich, że wie, że może Wprowadź liczbę dodatnią, 501 00:25:54,633 --> 00:25:56,000 która jest w pełni uzasadniona. 502 00:25:56,000 --> 00:26:01,090 Więc wyobraźcie sobie, że wejdę ujemne 1 osób w pokoju, segmentacja winy. 503 00:26:01,090 --> 00:26:06,040 >> Więc ok. 504 00:26:06,040 --> 00:26:13,160 Warto więc dodać to powrót po prostu zachować to, co pierwotnie było. 505 00:26:13,160 --> 00:26:15,640 Tak aby wieku. 506 00:26:15,640 --> 00:26:18,120 Teraz, jeśli chcę spróbować negatywne age-- więc niech 507 00:26:18,120 --> 00:26:19,710 powiedzieć, że pięć osób w pokoju. 508 00:26:19,710 --> 00:26:23,180 Wiek osoby numer jeden jest ujemna 4, osoba, trzy 509 00:26:23,180 --> 00:26:26,500 jest zero, osoba three-- OK. 510 00:26:26,500 --> 00:26:29,850 Więc tutaj, za rok, liczba osób jeden będzie negatywna 3 lat. 511 00:26:29,850 --> 00:26:32,830 Więc chyba nie ma sensu. 512 00:26:32,830 --> 00:26:37,220 Ale to tylko dlatego, że poszukuje w kodzie wszystko robimy 513 00:26:37,220 --> 00:26:40,260 żąda GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Teraz, jeśli nie miał Funkcja GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 czy my po prostu zrobił to rodzaj samej pętli tam, 516 00:26:49,690 --> 00:26:52,340 wtedy to będzie działać perfekcyjnie. 517 00:26:52,340 --> 00:26:54,200 Jednak w tym konkretnym przypadek, po prostu nie 518 00:26:54,200 --> 00:26:57,772 stało się obsługi wartości ujemne. 519 00:26:57,772 --> 00:26:59,147 Wszelkie inne pytania na temat tablic? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 OK. 522 00:27:03,250 --> 00:27:09,380 >> Więc my teraz widać tablice. 523 00:27:09,380 --> 00:27:12,500 I mamy zamiar trzeba użyć to dla argumentów wiersza poleceń. 524 00:27:12,500 --> 00:27:14,680 Więc problemu ustawić two-- Wiem, że wielu z was 525 00:27:14,680 --> 00:27:18,040 może być nadal pracuje na planie problemu jeden, ale problemem ustawić dwa nadjeżdża. 526 00:27:18,040 --> 00:27:22,260 W problemu ustawić dwa, będziesz muszą mieć do czynienia z smyczki, tablic, 527 00:27:22,260 --> 00:27:23,950 i argumenty wiersza polecenia. 528 00:27:23,950 --> 00:27:26,270 >> Więc jakie są argumenty wiersza poleceń? 529 00:27:26,270 --> 00:27:29,570 Teraz można zobaczyć w dół tutaj mała zapowiedź na dokładnie to, co jest 530 00:27:29,570 --> 00:27:30,950 będzie działo. 531 00:27:30,950 --> 00:27:32,950 Widzimy int main, INC argc, wsporniki ciąg ARGV. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Więc najpierw spróbujmy zinterpretować co to próbuje powiedzieć. 534 00:27:38,130 --> 00:27:40,800 Teraz dobrze. 535 00:27:40,800 --> 00:27:44,637 >> Więc w linii poleceń powinno być przyzwyczaić się do niektórych z tych poleceń 536 00:27:44,637 --> 00:27:48,580 teraz, i to prawdopodobnie uruchomić cd w terminalu przed. 537 00:27:48,580 --> 00:27:52,100 Więc jeśli mówimy cd pset1, wiesz, że powinien 538 00:27:52,100 --> 00:27:55,050 być zmiany w katalogu pset1. 539 00:27:55,050 --> 00:27:59,120 >> Teraz zauważyć, że nigdy nie napisany program, jak to wcześniej. 540 00:27:59,120 --> 00:28:03,120 Każdy z programów, które zostały napisane, chcesz uruchomić, powiedzmy, dot slash Mario, 541 00:28:03,120 --> 00:28:06,779 Dot slash chciwy, a następnie go Może poprosi o wejściu. 542 00:28:06,779 --> 00:28:08,570 Teraz, to nie to, co katalog zmiana robi. 543 00:28:08,570 --> 00:28:12,770 Po uruchomieniu płyty CD, to nie ma to znaczy, który katalog chcesz cd się? 544 00:28:12,770 --> 00:28:17,200 Zamiast tego, po prostu powiedzieć, cd pset1 i to po prostu idzie do katalogu pset1. 545 00:28:17,200 --> 00:28:20,430 >> Podobnie więc mamy inne przykłady. 546 00:28:20,430 --> 00:28:21,540 aby przywitać. 547 00:28:21,540 --> 00:28:25,760 Po uruchomieniu zrobić, to nie ma to znaczy, program, który chcesz zrobić? 548 00:28:25,760 --> 00:28:29,620 Wystarczy powiedzieć, u Wiersz polecenia, aby przywitać. 549 00:28:29,620 --> 00:28:31,060 >> Move jest kolejnym przykładem. 550 00:28:31,060 --> 00:28:34,840 Ten jesteśmy przesuwając mario.c złożyć maksymalnie jeden katalog. 551 00:28:34,840 --> 00:28:38,060 Więc teraz wiemy o tym przykładzie tak naprawdę przechodzi dwa argumenty. 552 00:28:38,060 --> 00:28:42,090 Jest mario.c jako pierwszy argument, a dot dot jest drugi argument. 553 00:28:42,090 --> 00:28:46,140 A potem, kiedy uruchomić zrobić, ty zobaczyć, że naprawdę dużo polecenie line-- 554 00:28:46,140 --> 00:28:50,580 że naprawdę długo polecenie drukowane w linii poleceń. 555 00:28:50,580 --> 00:28:53,590 Więc tak długo command-- tego znajduje się w niewielkiej części, 556 00:28:53,590 --> 00:28:56,090 ale teraz mamy trzy argumenty wiersza polecenia. 557 00:28:56,090 --> 00:28:59,750 Dot Dash zero, witam, i hello.c. 558 00:28:59,750 --> 00:29:03,497 >> To są wiersza polecenia argumenty, argumenty 559 00:29:03,497 --> 00:29:05,580 że jesteś przechodzącej przez Wiersz polecenia, tak aby 560 00:29:05,580 --> 00:29:08,680 nie muszą być poproszony po uruchomieniu programu. 561 00:29:08,680 --> 00:29:13,090 Byłoby to frustrujące, jeżeli podczas uruchomiłeś Clang to powiedział: "OK, 562 00:29:13,090 --> 00:29:15,630 które program-- które Plik ty kompilacji? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Co flagi prawda jak wejść? kreska o. 565 00:29:19,440 --> 00:29:21,190 Co byś chciał plik nazywać? 566 00:29:21,190 --> 00:29:21,690 Halo. 567 00:29:21,690 --> 00:29:25,290 Nie, po prostu uruchomić szczęk kreska o powitania hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Więc patrząc na to. 569 00:29:28,820 --> 00:29:32,920 Teraz argc-- argc to liczy argumentów. 570 00:29:32,920 --> 00:29:36,620 Jest to liczba linii poleceń Argumenty wprowadzone w wierszu poleceń. 571 00:29:36,620 --> 00:29:39,720 Cóż, argv-- technicznie v oznacza wektor, 572 00:29:39,720 --> 00:29:41,460 co w zasadzie oznacza tablicę. 573 00:29:41,460 --> 00:29:42,680 Ale można to zignorować. 574 00:29:42,680 --> 00:29:47,540 Argv-- mamy ciąg argv, tak wsporniki ciąg ARGV. 575 00:29:47,540 --> 00:29:50,150 Więc to jest inna forma wsporników jeszcze nie widział. 576 00:29:50,150 --> 00:29:52,300 Tak więc widzieliśmy Wspornik Zapis, gdy mówiliśmy, 577 00:29:52,300 --> 00:29:53,970 jak, łańcuch s równa Zamyla. 578 00:29:53,970 --> 00:29:56,910 s Uchwyt 0 uzyskuje dostęp do Z. znaków 579 00:29:56,910 --> 00:30:00,720 >> Mamy również postrzegane wsporniki, gdy powiedzieliśmy int wiek wspornika 5. 580 00:30:00,720 --> 00:30:03,160 Deklarowanej tablicę wielkości 5. 581 00:30:03,160 --> 00:30:06,280 Więc tutaj jest to wersja Uchwyty nie widzieliśmy wcześniej. 582 00:30:06,280 --> 00:30:09,630 Więc ten rodzaj strun argv, że byłoby całkowicie zaznajomiony 583 00:30:09,630 --> 00:30:12,050 że byłoby to po prostu ciąg. 584 00:30:12,050 --> 00:30:14,520 Teraz nawiasy wskazują, że to jest tablicą. 585 00:30:14,520 --> 00:30:19,920 Więc wsporniki ciąg ARGV środki że argv jest tablicą łańcuchów. 586 00:30:19,920 --> 00:30:22,540 Teraz technicznie ciąg jest tablicą znaków. 587 00:30:22,540 --> 00:30:26,400 Więc to jest teraz tablica z szeregu znaków. 588 00:30:26,400 --> 00:30:31,490 Ale jest dużo łatwiej myśleć o to jako po prostu tablica łańcuchów. 589 00:30:31,490 --> 00:30:34,900 >> Dlaczego więc może być puste nawiasy? 590 00:30:34,900 --> 00:30:38,170 Jak, dlaczego nie możemy powiedzieć, Wspornik 5, wspornik n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Tak. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Tak. 595 00:30:44,230 --> 00:30:46,396 Nie wiemy, ile Wejścia tam będą. 596 00:30:46,396 --> 00:30:53,560 Więc jeśli spojrzymy na brzękiem przykład mówimy brzękiem kreskę o witam hello.c. 597 00:30:53,560 --> 00:30:56,710 W tym konkretnym przypadku, nie stało za trzy argumenty wiersza polecenia. 598 00:30:56,710 --> 00:31:00,522 I tak brackets-- zobaczymy w drugim nie będzie trzy. 599 00:31:00,522 --> 00:31:01,730 To technicznie będzie cztery. 600 00:31:01,730 --> 00:31:04,030 Ale nawiasy, że będzie powiedzmy, są trzy. 601 00:31:04,030 --> 00:31:08,220 Ale teraz, gdy patrzyliśmy na ruch mario.c dot dot wsporniki 602 00:31:08,220 --> 00:31:09,760 chcielibyśmy umieścić dwa w nich. 603 00:31:09,760 --> 00:31:12,884 >> I istnieje wiele poleceń, które mają zmienną liczbę linii poleceń 604 00:31:12,884 --> 00:31:13,620 argumenty. 605 00:31:13,620 --> 00:31:17,430 Więc co to wersja z Zapis uchwyt wskazuje 606 00:31:17,430 --> 00:31:20,820 jest to, że argv jest tablicą łańcuchów. 607 00:31:20,820 --> 00:31:24,360 Ale nie wiemy, jak wiele łańcuchy są w tej tablicy. 608 00:31:24,360 --> 00:31:27,090 A jak mamy to wiedzieć, jak wiele ciągi są w tablicy? 609 00:31:27,090 --> 00:31:28,870 To cały punkt argc. 610 00:31:28,870 --> 00:31:32,300 argc mówi nam, jak długo argv jest. 611 00:31:32,300 --> 00:31:36,500 >> Więc ostatnią rzeczą, aby Umysł jest to, że, technicznie, 612 00:31:36,500 --> 00:31:40,820 Samo polecenie liczy się jako jeden z argumentów wiersza poleceń. 613 00:31:40,820 --> 00:31:45,330 Więc cd pset1, istnieją dwa argumenty wiersza polecenia. 614 00:31:45,330 --> 00:31:50,260 Program sam w sobie, cd, a następnie Część rzeczywista Argument o tym, pset1. 615 00:31:50,260 --> 00:31:54,490 Każdy program, który napisałeś do tej pory miał jednego wiersza polecenia argument-- kropkę 616 00:31:54,490 --> 00:31:55,320 slash Mario. 617 00:31:55,320 --> 00:31:57,350 To jest jedyny argument wiersza poleceń. 618 00:31:57,350 --> 00:32:00,900 >> Więc teraz, patrząc na brzękiem kreska o powitania hello.c. 619 00:32:00,900 --> 00:32:01,905 Więc co jest argc? 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4. 622 00:32:06,080 --> 00:32:08,140 Więc argc jest 4. 623 00:32:08,140 --> 00:32:12,140 Szczęk, więc argv Uchwyt 0 jest brzęk. 624 00:32:12,140 --> 00:32:15,630 argv Wspornik 1 jest kreska 0. 625 00:32:15,630 --> 00:32:21,870 argv uchwyt 2 jest cześć, i argv Uchwyt 3 jest hello.c. 626 00:32:21,870 --> 00:32:26,813 Ok, więc pytania dotyczące tego, a wtedy spojrzeć na niektórych programowych przykładów. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> OK. 629 00:32:30,480 --> 00:32:36,260 Będziemy więc przyjrzeć hello3.c. 630 00:32:36,260 --> 00:32:41,890 Więc to powinien zapoznać się z jeden z pierwszych przykładów c 631 00:32:41,890 --> 00:32:45,800 mieliśmy gdzie chcemy tylko powiedzieć, hello świecie, ale teraz to jest bardziej ogólne. 632 00:32:45,800 --> 00:32:52,300 Więc tutaj mówimy komentarzy % s odwrotny ukośnik n Uchwyt argv 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- więc aż do tego punktu, to jest co mój szablon nie wyglądał. 634 00:32:57,440 --> 00:33:01,800 Miałem int main (void), a następnie chciałbym zrobić coś w głównej funkcji. 635 00:33:01,800 --> 00:33:05,100 Teraz zamiast raz zaczniemy czynienia z argumentów wiersza poleceń, 636 00:33:05,100 --> 00:33:07,890 musimy członkowskim A inna forma głównym. 637 00:33:07,890 --> 00:33:11,930 >> Więc patrząc na hello3 kolejny główny idzie 638 00:33:11,930 --> 00:33:15,990 wziąć dwa argumenty int argc now--, liczba argumentów wiersza poleceń, 639 00:33:15,990 --> 00:33:20,970 i łańcuch argv nawiasach, rzeczywista struny wpisana w wierszu poleceń. 640 00:33:20,970 --> 00:33:26,560 Więc mam zamiar to zmienić Szablon odzwierciedlać ten fakt. 641 00:33:26,560 --> 00:33:29,060 Teraz, kiedy piszesz program, jeśli nie 642 00:33:29,060 --> 00:33:33,720 trzeba podejmować żadnych wiersza polecenia argumenty, a potem po prostu użyć int main (void). 643 00:33:33,720 --> 00:33:37,070 Ale teraz, kiedy piszesz programy argumentów wiersza polecenia, które 644 00:33:37,070 --> 00:33:40,350 masz zamiar robić dla problemu ustawić two-- więc teraz, że używasz 645 00:33:40,350 --> 00:33:42,630 programy, które należy podjąć, Argumenty wiersza polecenia, 646 00:33:42,630 --> 00:33:45,250 trzeba mieć Głównym tego formularza. 647 00:33:45,250 --> 00:33:51,290 >> Więc here-- to jest duże zużycie argumentu wiersza poleceń. 648 00:33:51,290 --> 00:33:54,100 Więc drukowania argv 1. 649 00:33:54,100 --> 00:33:59,180 OK, więc niech to skompilować i uruchomić program. 650 00:33:59,180 --> 00:34:02,440 Bądź hello3. 651 00:34:02,440 --> 00:34:03,570 Kompiluje. 652 00:34:03,570 --> 00:34:06,870 Dot slash hello3. 653 00:34:06,870 --> 00:34:08,920 I powiedzmy, "Rob". 654 00:34:08,920 --> 00:34:10,760 Witaj Rob. 655 00:34:10,760 --> 00:34:14,940 Jeśli powiem "Cześć Maria" Cześć Maria. 656 00:34:14,940 --> 00:34:15,719 Witaj Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah wciąż mówi "cześć Maria ", bo nie jestem 658 00:34:18,639 --> 00:34:21,340 cokolwiek z naszej argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 teraz będzie "Hannah". 660 00:34:22,590 --> 00:34:25,030 Argc będzie 3. 661 00:34:25,030 --> 00:34:27,735 A gdybym to zrobił? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Więc witam zerowy. 664 00:34:34,679 --> 00:34:38,760 >> Na krótko poruszył fakt, że, technicznie, GetString 665 00:34:38,760 --> 00:34:42,429 może zwrócić null, ale musimy dostać wiele więcej do jakiej wartości null w rzeczywistości. 666 00:34:42,429 --> 00:34:47,449 Ale się go jako przedmiot Fakt, że nie jest na ogół złe. 667 00:34:47,449 --> 00:34:50,179 Zrobiliśmy coś złego, jeśli to drukowanie "cześć zerowy". 668 00:34:50,179 --> 00:34:52,179 A powód zrobiliśmy coś nie tak jest-- dobrze, 669 00:34:52,179 --> 00:34:56,179 kiedy wpadłem dot slash hello3, argc było 1. 670 00:34:56,179 --> 00:34:59,680 To oznacza długość argv to 1. 671 00:34:59,680 --> 00:35:05,110 Jeśli tablica jest o długości 1, tylko ważne indeksu jest zero. 672 00:35:05,110 --> 00:35:08,550 A więc o argv 1 jest poza zakres tej tablicy. 673 00:35:08,550 --> 00:35:13,410 To było podobne do wcześniej, kiedy próbowałem przechowywanie 6 poza koniec tablicy. 674 00:35:13,410 --> 00:35:18,100 Więc staram się uzyskać dostęp do czegoś poza liczbą argv, 675 00:35:18,100 --> 00:35:21,340 i jesteśmy coraz zerowy. 676 00:35:21,340 --> 00:35:24,360 >> Więc lepsza wersja tego, poprawa, 677 00:35:24,360 --> 00:35:27,010 jest wyraźnie sprawdzenie argc. 678 00:35:27,010 --> 00:35:33,580 Więc jeśli argc jest równy 2, co oznacza, że ​​prowadziliśmy coś jak kropka ukośnik hello3 Roba. 679 00:35:33,580 --> 00:35:36,840 I będzie drukować "witaj Rob". 680 00:35:36,840 --> 00:35:39,850 Jeśli argc nie równa 2, to jest to po prostu będzie 681 00:35:39,850 --> 00:35:42,560 zignorować cokolwiek umieścić na argument wiersza poleceń 682 00:35:42,560 --> 00:35:43,960 jako argumenty wiersza poleceń. 683 00:35:43,960 --> 00:35:47,168 Albo jeśli nie umieścić w ogóle, to po prostu się do tego zignorować i po prostu powiedzieć, 684 00:35:47,168 --> 00:35:47,960 "cześć." 685 00:35:47,960 --> 00:35:51,490 >> Więc kompilacji tego. 686 00:35:51,490 --> 00:35:54,500 Bądź hello4. 687 00:35:54,500 --> 00:35:56,790 I działa hello4. 688 00:35:56,790 --> 00:36:00,010 Działa to w ten sposób, co powinno być drukowane? 689 00:36:00,010 --> 00:36:01,330 "Cześć." 690 00:36:01,330 --> 00:36:02,810 Cześć. 691 00:36:02,810 --> 00:36:05,870 Co hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Witaj Rob". 693 00:36:06,950 --> 00:36:10,580 I wreszcie, witaj Rob Maria jest po prostu "cześć You" ponownie, 694 00:36:10,580 --> 00:36:13,677 dlatego, że tak naprawdę nie wejść coś, co go oczekuje. 695 00:36:13,677 --> 00:36:15,510 Wprowadzono kilka nazw niż może obsłużyć, 696 00:36:15,510 --> 00:36:19,500 więc po prostu domyślnie Hello Ci zachowanie. 697 00:36:19,500 --> 00:36:23,040 Tak więc pytania dotyczące tego? 698 00:36:23,040 --> 00:36:26,290 Lub argumenty wiersza polecenia? 699 00:36:26,290 --> 00:36:28,690 >> OK, więc rzucić okiem na Kilka innych przykładów wykorzystania 700 00:36:28,690 --> 00:36:34,230 wiersza polecenia arguments-- pierwszy mamy argv kreska 1 kropka c. 701 00:36:34,230 --> 00:36:38,510 Więc komentarze oddać to, co ten program powinien robić. 702 00:36:38,510 --> 00:36:42,460 Ale zauważmy now-- to dla pętli, to odpowiada dokładnie wzór 703 00:36:42,460 --> 00:36:43,390 Mówiłem wcześniej. 704 00:36:43,390 --> 00:36:46,240 Po prostu stało się Używanie ARGC zamiast n. 705 00:36:46,240 --> 00:36:48,880 Teraz argc jest naprawdę n. 706 00:36:48,880 --> 00:36:51,260 Jest to długość tablicy argv. 707 00:36:51,260 --> 00:36:59,600 Więc są iteracji nad argv Tablica printf-ing każdą wartość argv. 708 00:36:59,600 --> 00:37:04,730 >> Więc jeśli zrobię to. 709 00:37:04,730 --> 00:37:08,232 Bądź argv 1. 710 00:37:08,232 --> 00:37:09,940 Kompiluje. 711 00:37:09,940 --> 00:37:11,620 Dot slash argv 1. 712 00:37:11,620 --> 00:37:15,530 Podobnie działa to go druki dot slash argv 1 713 00:37:15,530 --> 00:37:18,500 ponieważ był to jedyny wiersza polecenia argument-- nazwę programu. 714 00:37:18,500 --> 00:37:22,080 Nie zawsze będzie przynajmniej: argc nie może być mniejszy niż jeden, 715 00:37:22,080 --> 00:37:25,910 ponieważ nie zawsze będzie co najmniej być nazwa programu do uruchomienia. 716 00:37:25,910 --> 00:37:32,040 Więc argv 1 Rob będzie drukować argv 1 a następnie na nowej linii "Rob". 717 00:37:32,040 --> 00:37:36,350 >> Tak więc w pierwszej iteracji z tej pętli i 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 jest nazwa programu. 719 00:37:39,090 --> 00:37:40,010 Dot slash argv 1. 720 00:37:40,010 --> 00:37:43,770 A potem argv 1 jest mój pierwszy Argument wiersza polecenia, które jest Rob. 721 00:37:43,770 --> 00:37:45,920 W tym momencie jesteśmy równe argc. 722 00:37:45,920 --> 00:37:48,210 Mamy wyjść z pętli i gotowe. 723 00:37:48,210 --> 00:37:53,940 Więc to będzie działać na dowolnym liczba argumentów wiersza poleceń. 724 00:37:53,940 --> 00:37:58,550 Zauważ, drukuje argv 0, argv 1, argv 2, argv 3, argv 4. 725 00:37:58,550 --> 00:38:00,150 I nie ma argv 5. 726 00:38:00,150 --> 00:38:01,460 argc wynosi 5. 727 00:38:01,460 --> 00:38:06,960 Więc w argc-- się i równa się 5, wyjdziemy z pętli. 728 00:38:06,960 --> 00:38:07,950 OK. 729 00:38:07,950 --> 00:38:11,315 Więc pytania, że ​​zanim spojrzeć na bardziej złożony przykład? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Więc argv 2. 732 00:38:16,860 --> 00:38:17,830 W porządku. 733 00:38:17,830 --> 00:38:20,610 Więc my wciąż drukowania argumenty wiersza polecenia. 734 00:38:20,610 --> 00:38:23,170 Ale teraz zauważyć mamy zagnieżdżonych pętli. 735 00:38:23,170 --> 00:38:24,670 Więc co to robi? 736 00:38:24,670 --> 00:38:28,430 Tak więc pierwsza pętla robi dokładnie to, co przedtem. 737 00:38:28,430 --> 00:38:30,950 Wciąż pętli na każdy argument wiersza poleceń, 738 00:38:30,950 --> 00:38:34,260 ale teraz ten drugi loop-- mamy też widziałem coś takiego wcześniej. 739 00:38:34,260 --> 00:38:38,600 Kiedy został iteracji po Zamyla drukowania Z-A-m-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Więc to druga pętla dla Int J równa 0, n wynosi strlen wspornika argv i. 741 00:38:44,816 --> 00:38:49,170 >> Więc najpierw pomyśleć o the-- niech przejść. 742 00:38:49,170 --> 00:38:53,560 Pomyślmy, co komputer będzie zrobił, gdybym prowadził ten program, jak tylko kropka 743 00:38:53,560 --> 00:38:56,030 slash argv Dash 2. 744 00:38:56,030 --> 00:39:03,590 Więc gdybym prowadził ten kod, a następnie argc będzie równa 1. 745 00:39:03,590 --> 00:39:07,050 I ciąg argv-- jest tylko będzie jeden indeks w argv, 746 00:39:07,050 --> 00:39:12,370 i że będzie równa kropka slash argv 2-- nazwę programu. 747 00:39:12,370 --> 00:39:19,170 >> OK, więc teraz ja równa się 0, i mniej niż 1, i także plus dla int j jest równa 0, 748 00:39:19,170 --> 00:39:23,880 n wynosi strlen wspornika argv 0, to w pierwszej iteracji tej pętli. argv 749 00:39:23,880 --> 00:39:27,250 Uchwyt 0 jest kropka ukośnik argv 2. 750 00:39:27,250 --> 00:39:29,320 Więc jaka jest długość tego łańcucha? 751 00:39:29,320 --> 00:39:32,480 Cóż, kropka slash A-R-G-V Dash 2. 752 00:39:32,480 --> 00:39:35,020 Tak strlen tego będzie 8. 753 00:39:35,020 --> 00:39:37,500 Więc j jest równa 0, n jest równa 8. 754 00:39:37,500 --> 00:39:39,530 Tak długo, jak j wynosi mniej niż 8, j ++. 755 00:39:39,530 --> 00:39:44,080 A z tym, że będziemy mieć drukowania pojedynczy znak, który 756 00:39:44,080 --> 00:39:47,350 jest argv uchwyt i wspornik j. 757 00:39:47,350 --> 00:39:49,826 >> Tak więc tylko i jest zero. 758 00:39:49,826 --> 00:39:51,700 Mamy jeszcze tylko jeden Argument wiersza polecenia. 759 00:39:51,700 --> 00:39:53,890 W pierwszej iteracji z pętli for my 760 00:39:53,890 --> 00:39:56,950 będzie drukowanie Uchwyt Uchwyt 0 argv 0. 761 00:39:56,950 --> 00:39:58,325 A potem j zamierza zwiększyć. 762 00:39:58,325 --> 00:40:01,650 I jedziemy do druku argv Uchwyt 0 Wspornik 1. 763 00:40:01,650 --> 00:40:04,150 A potem argv Uchwyt 0 wspornika 2. 764 00:40:04,150 --> 00:40:09,030 >> Więc to jest nasze pierwsze spotkanie tablic wielowymiarowych. 765 00:40:09,030 --> 00:40:12,770 Pamiętaj wcześniej, że powiedziałem że argv jest technicznie 766 00:40:12,770 --> 00:40:15,950 tablica tablic znaków. 767 00:40:15,950 --> 00:40:24,360 Więc gdybym powiedział coś takiego łańcuch s równa wspornik argv i, 768 00:40:24,360 --> 00:40:29,590 a potem powiedział, s uchwyt j, to byłoby realizacji tego samego. 769 00:40:29,590 --> 00:40:31,960 Teraz, widziałeś s uchwytu j wcześniej. 770 00:40:31,960 --> 00:40:36,680 To tylko dostęp do j-tego charakter tego łańcucha. 771 00:40:36,680 --> 00:40:48,010 Więc z tego, że otrzymujesz j-tego charakter i-tego argv. 772 00:40:48,010 --> 00:40:51,450 >> Co więc należy to ostatecznie wyjście? 773 00:40:51,450 --> 00:40:53,210 Bądź argv 2. 774 00:40:53,210 --> 00:40:54,730 Kompiluje. 775 00:40:54,730 --> 00:40:56,340 Dot slash argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Anna" i dać nam pokój. 777 00:41:03,790 --> 00:41:07,050 Widzimy więc, że jest to wyprowadzanie kropka na własnej linii i ukośnik 778 00:41:07,050 --> 00:41:08,920 z własnej linii i na własnej linii. 779 00:41:08,920 --> 00:41:11,260 To drukowania każdego indywidualny charakter 780 00:41:11,260 --> 00:41:12,950 każdego argumentu wiersza poleceń. 781 00:41:12,950 --> 00:41:15,960 A następnie pomiędzy nimi ze względu na nową linię 782 00:41:15,960 --> 00:41:19,380 mamy do drukowania tutaj, w między nimi, będzie to wydrukować nową linię. 783 00:41:19,380 --> 00:41:24,540 >> Tak więc jest to podobne do przeor argv kreska 1, 784 00:41:24,540 --> 00:41:26,459 które drukowane każdego Argument wiersza poleceń, 785 00:41:26,459 --> 00:41:28,500 ale teraz mamy do drukowania argumenty wiersza polecenia 786 00:41:28,500 --> 00:41:31,950 a następnie iteracja każdego charakter każdego argumentu wiersza poleceń 787 00:41:31,950 --> 00:41:35,400 otrzymaj wyjście. 788 00:41:35,400 --> 00:41:36,870 OK? 789 00:41:36,870 --> 00:41:40,570 Tak więc pytania dotyczące tego? 790 00:41:40,570 --> 00:41:45,130 >> Należy zwrócić uwagę, że wiersza polecenia arguments-- 791 00:41:45,130 --> 00:41:49,990 więc są one oddzielone spacjami jak byś naturalnie oczekiwać, że będą. 792 00:41:49,990 --> 00:41:53,050 Tak więc ciąg może mieć miejsca w nim. 793 00:41:53,050 --> 00:41:57,380 To nie jest bardzo ważne, ale jeśli chciał trzeci argument wiersza poleceń 794 00:41:57,380 --> 00:42:01,226 mieć miejsce w nim, a następnie I mógł powiedzieć coś takiego. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 OK? 797 00:42:05,550 --> 00:42:12,190 Tak to teraz jeszcze tylko trzy wiersza polecenia arguments-- oraz 4. 798 00:42:12,190 --> 00:42:17,620 Dot slash argv kreska 2, Rob, Maria, i Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 OK. 800 00:42:18,320 --> 00:42:19,310 Pytania w tej sprawie? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Nie ma nic specjalnego o charakterze kosmicznym. 803 00:42:24,894 --> 00:42:27,810 To po prostu zdarza się, że wiersza poleceń traktuje spacji 804 00:42:27,810 --> 00:42:29,226 w jaki sposób oddzielić każdy argument. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 W porządku. 807 00:42:33,000 --> 00:42:39,950 Tak więc zestaw problem two-- masz zamiar być 808 00:42:39,950 --> 00:42:43,240 patrząc na tajnej kryptografii. 809 00:42:43,240 --> 00:42:47,700 Tak więc, podobnie do tego przykładu widzieliśmy od A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 idziesz do realizacji niektórych algorytmy, że podane wiadomości, 811 00:42:52,840 --> 00:42:55,560 masz zamiar być w stanie zaszyfrować tę wiadomość 812 00:42:55,560 --> 00:42:58,730 że tylko ktoś o tej tajemnicy Klucz, z tym pierścieniem dekodera 813 00:42:58,730 --> 00:43:01,090 powinna być w stanie odszyfrować. 814 00:43:01,090 --> 00:43:04,839 >> Tak, że to standard edition. 815 00:43:04,839 --> 00:43:07,130 Idziesz do realizacji dwie różne wersje. 816 00:43:07,130 --> 00:43:09,620 Jeśli zdarzy ci się przyjrzeć w haker Wersja profesjonalna teraz 817 00:43:09,620 --> 00:43:12,600 mamy zamiar dać Ci ciąg tak, 818 00:43:12,600 --> 00:43:15,240 co oznacza zaszyfrowane hasło. 819 00:43:15,240 --> 00:43:19,990 Tak więc twoim celem jest, aby dowiedzieć się, co rozszyfrowane hasło. 820 00:43:19,990 --> 00:43:26,950 Teraz jest to faktycznie how hasła przechowywane są w wielu komputerach 821 00:43:26,950 --> 00:43:31,290 i po prostu przechowuje to losowy ciąg znaków. 822 00:43:31,290 --> 00:43:34,440 Musisz dowiedzieć się, jak uzyskać z tego losowego ciągu znaków 823 00:43:34,440 --> 00:43:36,140 do tego, co oryginalne hasło było. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> I wreszcie, po tym Zestaw problemu, należy 826 00:43:43,290 --> 00:43:46,100 być w stanie zrozumieć, co to oznacza. 827 00:43:46,100 --> 00:43:51,650 Więc dowiesz się jak odszyfrować ten rodzaj losowego ciągu znaków. 828 00:43:51,650 --> 00:43:56,390 Podobnie, jeśli pamiętasz z tygodnia 0, może widzieliście ten adres. 829 00:43:56,390 --> 00:44:00,210 I powinieneś być w stanie odszyfrować to ostatecznie. 830 00:44:00,210 --> 00:44:04,810 Może nie być szczęśliwy, kiedy odszyfrować go i kliknij na link. 831 00:44:04,810 --> 00:44:05,700 W porządku. 832 00:44:05,700 --> 00:44:06,591 To wszystko na dzisiaj. 833 00:44:06,591 --> 00:44:12,095 Tak więc do zobaczenia w przyszłym tygodniu! 834 00:44:12,095 --> 00:44:18,315 >> [Electronic Music Playing] 835 00:44:18,315 --> 00:47:15,619