1 00:00:00,000 --> 00:00:07,070 [Powered by Google Translate] [♪ ♪ Buzzing] 2 00:00:07,070 --> 00:00:10,380 Więc wprowadzenie na co mam się na ekranie; 3 00:00:10,380 --> 00:00:12,710 jest to jedno z narzędzi, stworzyliśmy w okresie letnim; 4 00:00:12,710 --> 00:00:15,530 to się nazywa CS50 Spaces, 5 00:00:15,530 --> 00:00:18,860 i to jest nasz wspólny wniosek kodowania 6 00:00:18,860 --> 00:00:20,180 że będziemy używać w sekcjach. 7 00:00:20,180 --> 00:00:22,470 To jest bardzo fajne. 8 00:00:22,470 --> 00:00:26,040 Czy ktoś z was widział CS50 biegać jeszcze? 9 00:00:26,040 --> 00:00:29,760 Pozwól mi wyciągnąć taką funkcję w innej zakładce. 10 00:00:29,760 --> 00:00:33,440 Run.cs50.net 11 00:00:33,440 --> 00:00:36,230 Tak 12 00:00:36,230 --> 00:00:39,700 jeśli pójdziesz do run.cs50.net, 13 00:00:39,700 --> 00:00:43,030 widać to na twojej drodze do przeglądarki 14 00:00:43,030 --> 00:00:45,940 faktycznie kod - napisać kod w C, 15 00:00:45,940 --> 00:00:47,460 a następnie go uruchomić, 16 00:00:47,460 --> 00:00:50,960 więc zarówno kompiluje, uruchamia go, a następnie zwraca wynik do Ciebie, 17 00:00:50,960 --> 00:00:53,350 więc jest to rodzaj chłodnym sposób eksperymentować 18 00:00:53,350 --> 00:00:56,060 niektóre z kodu, który David idzie w wykładach 19 00:00:56,060 --> 00:00:58,640 i dajemy na was na zbiorach problemowych 20 00:00:58,640 --> 00:01:01,900 bez posiadania na uruchomienie urządzenia. 21 00:01:01,900 --> 00:01:04,489 >> Więc co robi Spaces to różni się od 22 00:01:04,489 --> 00:01:07,450 jeśli wrócić do tej karcie 23 00:01:07,450 --> 00:01:11,580 Spaces jest CS50 run, jak widać tutaj, 24 00:01:11,580 --> 00:01:15,380 Ale jeśli przewijania i spojrzeć na drugiej stronie okna, 25 00:01:15,380 --> 00:01:18,130 widzisz prawo jestem jedyną osobą w tym miejscu, 26 00:01:18,130 --> 00:01:21,030 ale to, co mam zamiar zrobić, to poprosić, żebyście dołączyć do tej przestrzeni ze mną 27 00:01:21,030 --> 00:01:24,590 a my wszyscy się do kodu w tym samym oknie, mało, 28 00:01:24,590 --> 00:01:26,070 kod akcji ze sobą, 29 00:01:26,070 --> 00:01:28,900 i rozmawiamy na temat różnic między naszym kodzie. 30 00:01:28,900 --> 00:01:31,530 Więc to jest rodzaj chłodnym rzeczy - 31 00:01:31,530 --> 00:01:35,770 więc dołączyć, jeśli chcesz odwiedzić ten link tu na górze 32 00:01:35,770 --> 00:01:38,980 że już podświetlona, 33 00:01:38,980 --> 00:01:53,860 można po prostu wpisać w apps.cs50.net/spaces/vqcspSnO. 34 00:01:53,860 --> 00:01:56,610 >> Dobra, więc do startu, 35 00:01:56,610 --> 00:01:59,720 Mam zamiar dać ci trochę zwiedzanie tego. 36 00:01:59,720 --> 00:02:01,720 Zrobimy jakieś głupie trochę kodowania z nim na początku, 37 00:02:01,720 --> 00:02:06,200 po prostu tak, że każdy ma trochę wyczucia, jak to jest, 38 00:02:06,200 --> 00:02:09,000 ale to, co zrobiłem - 39 00:02:09,000 --> 00:02:11,830 lub co mam zrobić tu jest - 40 00:02:11,830 --> 00:02:13,480 Mam zamiar wziąć kod pisałem tutaj, 41 00:02:13,480 --> 00:02:15,800 które jak widać teraz jest pusta; 42 00:02:15,800 --> 00:02:17,090 nie robi nic. 43 00:02:17,090 --> 00:02:21,080 To jest tylko kod płyta kotła, nazwijmy to. 44 00:02:21,080 --> 00:02:23,820 Z trochę do zrobienia komentarza. 45 00:02:23,820 --> 00:02:27,850 Zamierzam zapisać naciskając ten przycisk Zapisz. 46 00:02:27,850 --> 00:02:30,190 I co to robi to 47 00:02:30,190 --> 00:02:34,400 podkreślił to tutaj krótko - że zmiana zapisu zielone pole, 48 00:02:34,400 --> 00:02:37,570 i teraz, jeśli szukasz dla mnie w kosmosie, 49 00:02:37,570 --> 00:02:40,340 kliknij moje imię, 50 00:02:40,340 --> 00:02:43,370 widać, że mam tę wersję właśnie tutaj, 51 00:02:43,370 --> 00:02:45,490 i po kliknięciu na tej nowelizacji, 52 00:02:45,490 --> 00:02:48,240 załaduje ten kod do swojej przestrzeni, zbyt. 53 00:02:50,510 --> 00:02:54,160 >> Więc nie każdy załadowany ten kod do swojego Space? 54 00:02:54,160 --> 00:02:57,810 Wszystko w porządku, jeśli nie masz jeszcze, śmiało i to zrobić, 55 00:02:57,810 --> 00:03:01,120 a potem to, co chcę wam robić w ten mały punkt do zrobienia 56 00:03:01,120 --> 00:03:05,940 to napisać trochę o sobie, używając printf, 57 00:03:05,940 --> 00:03:08,310 tak na przykład, napisać 58 00:03:08,310 --> 00:03:12,270 printf ("Nazywam się Nate"); 59 00:03:15,140 --> 00:03:17,700 a potem pisać 60 00:03:17,700 --> 00:03:21,660 "I ukończył w 2009 61 00:03:21,660 --> 00:03:24,440 ze Stanford " 62 00:03:26,050 --> 00:03:28,390 i chciałbym usłyszeć o 63 00:03:28,390 --> 00:03:30,270 co roku jesteś w szkole, 64 00:03:30,270 --> 00:03:33,910 czy jesteś na uczelni lub w szkole biznesu 65 00:03:33,910 --> 00:03:36,130 lub inna szkoła Harvard, 66 00:03:36,130 --> 00:03:39,200 czego się uczysz, jeśli jest jeszcze znana; 67 00:03:39,200 --> 00:03:41,290 jeśli nie jest to wiadomo, że jest całkowicie cool. 68 00:03:41,290 --> 00:03:45,170 I nie zdecydowała aż byłem późno w moim roku student drugiego. 69 00:03:46,910 --> 00:03:49,210 i wtedy również kocham wiedzieć 70 00:03:49,210 --> 00:03:51,610 cokolwiek szalony chcesz mi powiedzieć, czy 71 00:03:51,610 --> 00:03:54,790 coś o klasę lub tylko cokolwiek innego. 72 00:03:56,930 --> 00:04:00,370 Kiedy skończysz pisać, że z twoją małą printf, 73 00:04:00,370 --> 00:04:03,480 jeśli będziesz zapisać zmiany, a raczej 74 00:04:03,480 --> 00:04:06,080 najpierw upewnij się, że można go uruchomić 75 00:04:06,080 --> 00:04:10,640 i że drukuje się dokładnie, co chcesz go wydrukować, 76 00:04:14,050 --> 00:04:16,399 a następnie, jeśli pójdziesz do przodu i zapisać, że zmiany 77 00:04:16,399 --> 00:04:21,600 przy rewizji przycisk Zapisz, to pierwszy mały facet tutaj, 78 00:04:24,080 --> 00:04:27,340 a my trochę przejść i zrobić trochę wprowadzenia w ten sposób. 79 00:04:27,340 --> 00:04:30,150 Więc należy po prostu nacisnąć przycisk Play, 80 00:04:30,150 --> 00:04:32,550 który jest tutaj na górze po lewej stronie, 81 00:04:32,550 --> 00:04:35,340 więc ten przycisk Play, w lewym górnym rogu będzie 82 00:04:35,340 --> 00:04:39,050 wyślij kod off do naszego serwera, gdzie pobiera skompilowany, a następnie uruchomić. 83 00:04:40,600 --> 00:04:43,300 Więc co jest trochę szalony o to 84 00:04:43,300 --> 00:04:46,550 Kod ten faktycznie nie jest uruchomiony na komputerze; 85 00:04:46,550 --> 00:04:49,290 to faktycznie są wysyłane przez Internet. 86 00:04:49,290 --> 00:04:51,240 >> Jak leci, Charlotte? 87 00:04:51,240 --> 00:04:54,810 >> I - w porządku. Jestem - Myślę, że jestem 88 00:04:54,810 --> 00:04:57,330 mających trudności z zapisaniem 89 00:04:57,330 --> 00:05:00,530 na serwerze, tak, że można - można uruchomić program. 90 00:05:02,090 --> 00:05:05,780 I wtedy, gdy próbuję go uruchomić, to mówi, że nie ma błędów. 91 00:05:05,780 --> 00:05:08,850 Zadeklarowane jako wirus, który nie jest już tam. 92 00:05:08,850 --> 00:05:11,860 Oh, zobaczymy, może trafisz Zapisz ponownie? 93 00:05:11,860 --> 00:05:13,770 Widzę go na ekranie. 94 00:05:13,770 --> 00:05:15,120 Prawo >>, w porządku, więc to, co mam. 95 00:05:15,120 --> 00:05:19,430 I nie wiem, dlaczego nie pozwolił mi go uruchomić. 96 00:05:22,990 --> 00:05:24,990 Oh, dobra, przepraszam. 97 00:05:27,930 --> 00:05:31,220 Czy możesz wyjaśnić, dlaczego - co jest nie tak - co nie było z nim pracować? 98 00:05:31,220 --> 00:05:34,760 >> Tak, bo nie widzę, że nie ostatnia linia, gdzie wciąż jest zmienna 99 00:05:34,760 --> 00:05:37,700 że nie oświadczył, której nie zamierzam za to będąc tam. 100 00:05:37,700 --> 00:05:38,730 Tak, idealny! 101 00:05:38,730 --> 00:05:40,390 >> Teraz jeśli go zapisać, myślę, że powinno działać. 102 00:05:40,390 --> 00:05:42,970 Teraz, po zapisaniu go, to działa, niesamowite. 103 00:05:42,970 --> 00:05:44,570 >> Więc tak, jak przejść przez - 104 00:05:44,570 --> 00:05:46,690 więc to, co się dzieje, 105 00:05:46,690 --> 00:05:49,130 Mam zamiar to powtórzyć dla kamery. 106 00:05:49,130 --> 00:05:51,760 Co się dzieje, że ta zmienna s 107 00:05:51,760 --> 00:05:54,310 zostało w po - Zakładam, że usunięte niektóre inne rzeczy 108 00:05:54,310 --> 00:05:56,670 gdzie zadeklarowana jako, 109 00:05:56,670 --> 00:05:59,560 i tak to było wyrzucanie rzeczy i nie pozwalając uruchomić. 110 00:05:59,560 --> 00:06:02,540 Więc to jest dokładnie to, co chcemy zrobić w sekcji 111 00:06:02,540 --> 00:06:05,690 jest mieć ludzie starają pisania różnych fragmentów kodu, 112 00:06:05,690 --> 00:06:08,490 kompilowanie go, zobaczyć, co działa, co nie, 113 00:06:08,490 --> 00:06:10,730 a następnie trochę mówić o tych rzeczach, ponieważ są to punkty wyzwalania 114 00:06:10,730 --> 00:06:12,850 I jeszcze spotkać, 115 00:06:12,850 --> 00:06:15,470 I jeszcze - zrobić wiele głupich rzeczy przez cały czas, 116 00:06:15,470 --> 00:06:17,820 i nie wiem, dlaczego to nie działa, 117 00:06:17,820 --> 00:06:22,960 więc niech to podciągnąć rewizji Charlotty 3, 118 00:06:23,980 --> 00:06:25,380 a my go uruchomić. 119 00:06:25,380 --> 00:06:28,950 >> Więc kiedy biegam, teraz mam jej kod tutaj, 120 00:06:28,950 --> 00:06:31,450 Można powiększyć, naciśnij przycisk Uruchom, 121 00:06:31,450 --> 00:06:33,680 dodane to, buduje go, uruchamia go, 122 00:06:33,680 --> 00:06:36,980 mówi, że prowadził z powodzeniem, i jeśli przewiń w dół 123 00:06:36,980 --> 00:06:39,440 zobacz Charlotte jest młodszy o Adams House, 124 00:06:39,440 --> 00:06:42,720 psychologia, wtórny w ekonomii; niesamowite. 125 00:06:42,720 --> 00:06:44,310 Świetnie cię poznać! 126 00:06:44,310 --> 00:06:46,550 Awesome. 127 00:06:46,550 --> 00:06:49,670 Dobra, przechodząc, chodźmy do Daniela 128 00:06:49,670 --> 00:06:52,710 przejdź do wersji 3, 129 00:06:52,710 --> 00:06:54,180 skompilować, uruchomić; 130 00:06:54,180 --> 00:06:56,680 dlaczego nie możesz powiedzieć nam trochę o sobie, Danielu? 131 00:06:56,680 --> 00:06:59,380 >> Call me Dan. 132 00:06:59,380 --> 00:07:01,920 Idę do szkoły biznesu naprzeciwko was, 133 00:07:01,920 --> 00:07:05,020 i byłem w Marines przed tutaj, 134 00:07:05,020 --> 00:07:08,020 i to wszystko jest dla mnie nowe, więc tak. 135 00:07:08,020 --> 00:07:11,060 Nie czuję się źle, jestem 30, a ja nie znam żadnej z tych rzeczy. 136 00:07:11,060 --> 00:07:13,800 Super, dzięki, Dan! 137 00:07:13,800 --> 00:07:17,300 Dobra, mamy kolejny Daniel. 138 00:07:17,300 --> 00:07:20,930 Idziesz przez Daniela - będzie się przedstawić, Danielu? 139 00:07:20,930 --> 00:07:22,260 >> >> Jasne, jestem Daniel. 140 00:07:22,260 --> 00:07:24,330 Jestem studentem drugiego roku w Mather teraz. 141 00:07:24,330 --> 00:07:25,840 Teraz koncentruję się na rząd, 142 00:07:25,840 --> 00:07:28,760 ale chciałem brać CS50 bo słyszałem świetne recenzje na temat tej klasy 143 00:07:28,760 --> 00:07:30,750 i nigdy nie próbowałem CS wcześniej. 144 00:07:30,750 --> 00:07:34,680 Przewiń w dół i zobaczyć to - cool. 145 00:07:36,330 --> 00:07:39,090 Idąc dalej, Jared. 146 00:07:39,090 --> 00:07:41,990 Jak idzie? 147 00:07:41,990 --> 00:07:43,430 >> Dobry, jak się masz? 148 00:07:43,430 --> 00:07:47,520 Jak widać, jestem młodszy Koncentrator filozofia Eliota, 149 00:07:47,520 --> 00:07:50,260 pochodzi z południowej Kalifornii, 150 00:07:50,260 --> 00:07:53,100 i jestem zainteresowany objęciem CS50 bo lubię logikę to, 151 00:07:53,100 --> 00:07:57,420 i wydaje się naprawdę fajne do robienia rzeczy na komputerze, więc. 152 00:07:57,420 --> 00:07:59,570 Niesamowite, gdzie w południowej Kalifornii jesteś? 153 00:07:59,570 --> 00:08:02,340 >> O godzinie od [niesłyszalne], małe miasto [niesłyszalne]. 154 00:08:02,340 --> 00:08:04,850 Och, tak, mój tata od Redlands. 155 00:08:04,850 --> 00:08:07,060 Fajnych rzeczy. 156 00:08:07,060 --> 00:08:12,130 >> Dobra, Jimmy, jak leci, Jimmy? 157 00:08:12,130 --> 00:08:15,130 >> Dobry, jak się masz? 158 00:08:15,130 --> 00:08:16,040 Całkiem nieźle! 159 00:08:16,040 --> 00:08:17,710 Opowiedz nam o sobie. 160 00:08:17,710 --> 00:08:20,840 >> Jestem studentem pierwszego roku, a ja nie jestem do końca pewien, co mam na kierunku 161 00:08:20,840 --> 00:08:22,820 ale jestem trochę pochylony w kierunku ekonomii. 162 00:08:22,820 --> 00:08:25,680 Jak Daniel przede mną, nigdy nie robiłem żadnego CS, ale brzmi fajne. 163 00:08:25,680 --> 00:08:28,120 Jestem pierwotnie z Chicago. 164 00:08:28,120 --> 00:08:31,640 Awesome. Więc sprawdzić jego wydruk tutaj. 165 00:08:31,640 --> 00:08:34,630 Chciałem zapytać, czy ten wydruk zgodnie z oczekiwaniami? 166 00:08:34,630 --> 00:08:37,650 >> Nie, nie pamiętam, aby wydrukować nowy wiersz. 167 00:08:37,650 --> 00:08:41,270 I rzeczywiście zapomniałem, że kiedy pisałem moją rzecz 168 00:08:41,270 --> 00:08:43,090 po raz pierwszy również. 169 00:08:43,090 --> 00:08:46,330 Jest to rodzaj bólu, aby pamiętać, aby umieścić te ręcznie. 170 00:08:46,330 --> 00:08:50,560 Byłoby miło, gdyby to po prostu wiem, że to, co chciałeś. 171 00:08:50,560 --> 00:08:53,630 >> Dobra, Kelly. 172 00:08:53,630 --> 00:08:56,050 Wow, mamy 2 Kellys; 2 Daniels 2 Kellys. 173 00:08:56,050 --> 00:09:00,490 Więc Kelly - idziesz przez Kelly Ren? 174 00:09:00,490 --> 00:09:03,870 Ok, super. 175 00:09:03,870 --> 00:09:07,270 Lub Kelly, mam na myśli. 176 00:09:07,270 --> 00:09:10,260 >> Więc tak, więc jestem Kelly. 177 00:09:10,260 --> 00:09:12,930 Jestem studentem drugiego roku w Pfoho. 178 00:09:12,930 --> 00:09:17,000 Dostałem e-maila dzisiaj, że mam jeszcze 7 tygodni zadeklarować moją koncentrację, 179 00:09:17,000 --> 00:09:20,940 więc staram się nie myśleć o tym, 180 00:09:20,940 --> 00:09:24,090 i lubię pieczenia, uruchomiony i Craisins. 181 00:09:24,090 --> 00:09:29,110 Nie mam doświadczenia z tym większość z CS; 182 00:09:29,110 --> 00:09:32,700 Nauczyłem się budować witryny sieci Web, gdy byłem bardzo młody, 183 00:09:32,700 --> 00:09:35,750 ale myślę, że prawdopodobnie nauczyłem się źle wiele razy. 184 00:09:35,750 --> 00:09:39,260 Mam nadzieję, że nauczę się trochę więcej 185 00:09:39,260 --> 00:09:41,450 i - tak. 186 00:09:41,450 --> 00:09:44,100 >> Super, dobrze, dziękuję. 187 00:09:44,100 --> 00:09:47,190 Przejdźmy do innych Kelly; 188 00:09:47,190 --> 00:09:48,880 Nie mam nic - powiedziałeś coś tutaj? 189 00:09:48,880 --> 00:09:51,880 >> [Niesłyszalne] 190 00:09:51,880 --> 00:09:56,180 Jest! 191 00:09:56,180 --> 00:09:58,120 Sweet! 192 00:09:58,120 --> 00:10:01,400 >> Dobra, więc jestem Kelly. 193 00:10:01,400 --> 00:10:03,980 Jestem pierwszym roku student. 194 00:10:03,980 --> 00:10:05,560 Jestem na kierunku mózgu, umysłu i edukacji. 195 00:10:05,560 --> 00:10:07,940 I ukończył w Franklin & Marshall College 2008 196 00:10:07,940 --> 00:10:10,840 z kierunków w psychologii i socjologii 197 00:10:10,840 --> 00:10:13,120 i drobne w języku francuskim. 198 00:10:13,120 --> 00:10:15,330 Biorę CS50 199 00:10:15,330 --> 00:10:18,080 bo jestem zainteresowany w uzyskaniu doktoratu z Neuroscience 200 00:10:18,080 --> 00:10:21,220 i czuję, że to pomoże mi zrozumieć technologie używane. 201 00:10:21,220 --> 00:10:23,150 Awesome. 202 00:10:26,980 --> 00:10:29,390 Idąc dalej, Mikaela. 203 00:10:29,390 --> 00:10:31,640 Czy to jest poprawna wymowa? 204 00:10:31,640 --> 00:10:32,990 Ok, super. 205 00:10:32,990 --> 00:10:34,640 >> >> Jestem Mikhaila. 206 00:10:34,640 --> 00:10:36,870 Jestem studentem drugiego roku w Kirkland House, 207 00:10:36,870 --> 00:10:39,950 i jestem koncentrując się w inżynierii mechanicznej. 208 00:10:39,950 --> 00:10:43,180 Bardzo lubię jazdę na rowerze, zbudował rower to lato. 209 00:10:43,180 --> 00:10:46,140 Biorę CS, faktycznie, 210 00:10:46,140 --> 00:10:48,350 jako wymóg stężenia, 211 00:10:48,350 --> 00:10:52,550 ale wiesz, myślę, że to jest nadal fajny rodzaj klasy technicznej. 212 00:10:52,550 --> 00:10:55,150 Awesome - budujesz rower tego lata? 213 00:10:55,150 --> 00:10:56,730 >> Tak. 214 00:10:56,730 --> 00:10:58,900 Wow, jak ramy i to wszystko? 215 00:10:58,900 --> 00:11:00,120 >> Uh-hunh (pozytywna). 216 00:11:00,120 --> 00:11:01,530 Wow, to naprawdę fajne. 217 00:11:01,530 --> 00:11:06,370 >> [Niesłyszalne aparatem czat] 218 00:11:06,370 --> 00:11:10,000 [Śmiech] 219 00:11:12,640 --> 00:11:14,200 Tak, to było tak dawno. 220 00:11:14,200 --> 00:11:16,730 Nigdy nie wiesz, prawda? 221 00:11:16,730 --> 00:11:19,420 Cóż, fajnie, dobrze, dziękuję, Mikhaila. 222 00:11:19,420 --> 00:11:21,390 >> Dobra, Missy. 223 00:11:21,390 --> 00:11:23,280 >> Nazywam się Missy, jestem studentem pierwszego roku, 224 00:11:23,280 --> 00:11:25,500 tak to znaczy, że nic nie wiem! 225 00:11:25,500 --> 00:11:29,180 Chcę się skoncentrować w astrofizyce. 226 00:11:29,180 --> 00:11:31,220 W CS50, 227 00:11:31,220 --> 00:11:33,350 Czuję się na pewno w tym pomóc. 228 00:11:33,350 --> 00:11:37,750 Dziwny fakt o mnie, że jestem w kraju certyfikat strażakiem. 229 00:11:37,750 --> 00:11:39,960 Wow! 230 00:11:39,960 --> 00:11:42,440 Jak to się stało? 231 00:11:42,440 --> 00:11:45,570 >> I wzięli udział w akademii 232 00:11:45,570 --> 00:11:49,000 i poszedł do piekła dla wielu tygodni 233 00:11:49,000 --> 00:11:51,200 otrzymał certyfikat. 234 00:11:51,200 --> 00:11:54,090 Wow, gratulacje! 235 00:11:54,090 --> 00:11:57,280 To nie lada wyczyn, na pewno. 236 00:11:57,280 --> 00:11:59,070 Ok, więc teraz zrobimy mnie. 237 00:11:59,070 --> 00:12:01,290 Jestem następny w rzędzie. 238 00:12:01,290 --> 00:12:04,510 Jestem - uruchom go. 239 00:12:04,510 --> 00:12:07,580 >> Więc nazywam się Nate. 240 00:12:07,580 --> 00:12:11,160 Byłem klasa 2009 w Stanford. 241 00:12:11,160 --> 00:12:13,840 I był symboliczny główne systemy, 242 00:12:13,840 --> 00:12:17,370 który jest podobny do mózgu, umysłu, koncentracji Behavior tutaj, 243 00:12:17,370 --> 00:12:19,300 ale jest to swego rodzaju mieszanka 244 00:12:19,300 --> 00:12:22,350 informatyka, medycyna, psychologia i filozofia. 245 00:12:22,350 --> 00:12:26,600 Rodzaju - tak, wiele dziwnych rzeczy, ale to było świetne, 246 00:12:26,600 --> 00:12:29,880 a ja moja magistra informatyki tam, jak dobrze. 247 00:12:29,880 --> 00:12:33,250 Więc jestem nowy na Harvardzie w tym roku. 248 00:12:33,250 --> 00:12:35,750 Naprawdę chciałem dostać się do nauczania. 249 00:12:35,750 --> 00:12:39,860 I przez ostatnie 4 lata w Stanford TA-nych klas Informatyki 250 00:12:39,860 --> 00:12:43,370 David i tak daj mi spokój, 251 00:12:43,370 --> 00:12:45,550 i mam zamiar być pomocą w CS50, 252 00:12:45,550 --> 00:12:47,890 więc robię to cały czas, że nie jestem w szkole, grad. 253 00:12:47,890 --> 00:12:50,330 To było zabawne. 254 00:12:50,330 --> 00:12:53,130 Mam nadzieję, że nadal będzie zabawa, jestem pewien, że tak będzie. 255 00:12:53,130 --> 00:12:56,040 >> W porządku, Sam. 256 00:13:01,910 --> 00:13:05,470 >> Nazywam się Sam, jestem studentem drugiego roku w college'u, w świetle prawa w szczególności. 257 00:13:05,470 --> 00:13:10,110 Moim głównym będzie historia nauki, zapewne, i VES wtórne, 258 00:13:10,110 --> 00:13:13,240 a moim ulubionym kolorem jest żółty. 259 00:13:18,790 --> 00:13:21,100 Nie ma potrzeby, by osądzać, czy coś, ale to dobry kolor! 260 00:13:21,100 --> 00:13:24,780 I Stella. 261 00:13:24,780 --> 00:13:26,980 >> Cześć, jestem Stella, jestem studentem pierwszego roku w Grays. 262 00:13:26,980 --> 00:13:30,070 Nie mam pojęcia, co ja skoncentrowaną w jeszcze 263 00:13:30,070 --> 00:13:32,500 tak CS50 była tylko rodzajem losowo, 264 00:13:32,500 --> 00:13:34,220 co jest ciekawe. 265 00:13:34,220 --> 00:13:36,080 Fakt Fun, Jimmy był pierwszym znajomym Harvard z kopalni, 266 00:13:36,080 --> 00:13:38,360 bo oboje jesteśmy z Chicago. 267 00:13:38,360 --> 00:13:42,450 Cool, i Grace - to ma być naprawdę ładne, prawda? 268 00:13:42,450 --> 00:13:45,220 >> Myślałem [niesłyszalne]. 269 00:13:45,220 --> 00:13:46,690 Oh, yeah. 270 00:13:46,690 --> 00:13:51,210 [Niesłyszalne / off-camera czat] 271 00:13:51,210 --> 00:13:54,420 Okay, wciąż się uczę, ciągle uczyć. 272 00:13:54,420 --> 00:13:57,800 >> Więc mamy coś innego, który jest swego rodzaju ciekawy tutaj. 273 00:13:59,600 --> 00:14:02,870 Tak, jestem po prostu zastanawiasz się, nie masz pojęcia, że ​​tu się dzieje? 274 00:14:02,870 --> 00:14:05,890 Wiesz, jak to zinterpretować? 275 00:14:05,890 --> 00:14:13,340 >> I miał być umieścić średnik po każdej linii. 276 00:14:13,340 --> 00:14:16,370 To trochę uciążliwe. 277 00:14:16,370 --> 00:14:19,100 Czasami te średniki może być prawdziwy ból do wyśledzenia. 278 00:14:19,100 --> 00:14:21,420 Tak więc okazuje się, że 279 00:14:21,420 --> 00:14:22,820 Specjalny program używamy w tym roku 280 00:14:22,820 --> 00:14:26,670 skompilować kod C jest nazywany Clang, 281 00:14:26,670 --> 00:14:29,460 a powodem zaczęliśmy używać dzyń w tym roku - 282 00:14:29,460 --> 00:14:32,030 ponieważ nie wykorzystaliśmy tego programu w przeszłości; 283 00:14:32,030 --> 00:14:35,710 Użyliśmy inną nazwą GCC, które jest bardzo popularne - 284 00:14:35,710 --> 00:14:38,420 Clang faktycznie daje komunikaty o błędach sensu. 285 00:14:38,420 --> 00:14:41,420 Ten mówi, "oczekiwać", "po wyrażeniu" 286 00:14:41,420 --> 00:14:45,260 i nawet mówi ci wyraz, po którym potrzebny średnik. 287 00:14:45,260 --> 00:14:47,830 Więc masz go naprawić? 288 00:14:47,830 --> 00:14:48,930 >> Tak, właśnie teraz. 289 00:14:48,930 --> 00:14:52,040 Super, daj mi znać, a my go ciągnąć, a my go uruchomić. 290 00:14:52,040 --> 00:14:55,830 Ale tak, realizacja tych średników w to rodzaj bólu. 291 00:14:55,830 --> 00:14:59,580 >> Naprawiłem go, więc myślę, że powinno działać. 292 00:14:59,580 --> 00:15:02,760 Awesome - wersja 3. 293 00:15:02,760 --> 00:15:05,250 To wygląda. 294 00:15:05,250 --> 00:15:08,580 W porządku, więc teraz, jeśli mamy go uruchomić, 295 00:15:08,580 --> 00:15:11,020 tam idzie. 296 00:15:11,020 --> 00:15:13,830 Fajnych rzeczy. 297 00:15:13,830 --> 00:15:15,340 >> Dobrze. 298 00:15:15,340 --> 00:15:18,230 Tak więc dzięki za to robić. 299 00:15:18,230 --> 00:15:20,210 Fajnie jest spotkać was. 300 00:15:20,210 --> 00:15:22,880 Co zrobimy teraz jest spędzić trochę obok 301 00:15:22,880 --> 00:15:24,740 troche nurkowania w dziale problemów 302 00:15:24,740 --> 00:15:27,550 które pochodzą z określonego problemu z tego tygodnia 303 00:15:27,550 --> 00:15:29,920 i zrobimy, że dla większości z sekcji 304 00:15:29,920 --> 00:15:32,110 do końca okresu, 305 00:15:32,110 --> 00:15:35,580 i wtedy możemy zapisać ostatnią 15, 20 minut lub tak 306 00:15:35,580 --> 00:15:38,490 aby porozmawiać o problemie postawiła sobie 307 00:15:38,490 --> 00:15:41,420 a następnie tylko wszelkie inne pytania masz ogólnie o klasie. 308 00:15:43,380 --> 00:15:45,670 Powiedział, że to, co naprawdę chcę robić 309 00:15:45,670 --> 00:15:49,390 jest za każdy udział 310 00:15:49,390 --> 00:15:51,500 używania rzeczy przestrzeni, 311 00:15:51,500 --> 00:15:53,500 rzucając w kodzie, rzucając w sugestii, 312 00:15:53,500 --> 00:15:56,500 i mówić o tym, kiedy takie rzeczy przerwę 313 00:15:56,500 --> 00:15:58,360 lub nie działa, tylko dlatego, że są to rzeczy, które 314 00:15:58,360 --> 00:16:00,870 Wiem, natknąłem 315 00:16:00,870 --> 00:16:03,180 kiedy zacząłem kodowania, 316 00:16:03,180 --> 00:16:05,490 i naprawdę trochę frustrujące, czasami 317 00:16:05,490 --> 00:16:08,690 bo jeśli to jest jak 2 rano, zanim zestaw problem wynika, 318 00:16:08,690 --> 00:16:11,330 tak - tylko na ujawnieniu 319 00:16:11,330 --> 00:16:14,590 Nie rozpocząć programowanie aż byłem studentem drugiego roku w college'u. 320 00:16:14,590 --> 00:16:17,360 To było trochę dziwne, to coś nieznanego 321 00:16:17,360 --> 00:16:20,360 że słyszałem było fajne 322 00:16:20,360 --> 00:16:23,590 i ja również słyszałem to może być prawdziwy ból w tyłek 323 00:16:23,590 --> 00:16:27,610 jeśli pominąć średnik i to tylko błąd utrzymując swój program z pracy 324 00:16:27,610 --> 00:16:30,890 i utrzymanie się przed snem, 325 00:16:30,890 --> 00:16:32,650 więc na pewno, 326 00:16:32,650 --> 00:16:34,020 jeśli masz takie pytania, 327 00:16:34,020 --> 00:16:37,060 jeśli masz wątpliwości tak, daj mi znać, 328 00:16:37,060 --> 00:16:40,050 bo chcę, aby to dobre doświadczenie dla was. 329 00:16:40,050 --> 00:16:44,620 >> Więc nie macie wszystkie pobrane problemu ustawić jeszcze? 330 00:16:44,620 --> 00:16:47,160 Trochę wiem, gdzie to jest? Okay. 331 00:16:47,160 --> 00:16:51,490 Więc pójdziemy do cs50.net, bo nie ma go na tym koncie, 332 00:16:51,490 --> 00:16:54,110 pull up zestawy problemowe, 333 00:16:54,110 --> 00:16:57,940 podciągnąć zestaw problemu 2, i przyjrzymy się standardowej wersji dziś. 334 00:16:57,940 --> 00:17:01,190 Zatrzymamy się specyfikację tutaj. 335 00:17:02,640 --> 00:17:04,420 Przewiń w dół. 336 00:17:06,790 --> 00:17:11,109 Więc mamy zamiar zacząć szukać w tej części pytania. 337 00:17:14,069 --> 00:17:16,710 Czy wy oglądaliśmy te spodenki jeszcze? 338 00:17:16,710 --> 00:17:18,329 Okay. 339 00:17:18,329 --> 00:17:21,329 Tak więc są spodenki na pętli, 340 00:17:21,329 --> 00:17:24,700 które jest wykonywane przez Tommy, jeden z nauczania towarzyszy głowy. 341 00:17:24,700 --> 00:17:27,230 Jest jedna w sprawie zakresu, 342 00:17:27,230 --> 00:17:30,530 Wierzę, że wykonywana przez innego faceta nauczania o nazwie David 343 00:17:30,530 --> 00:17:33,400 a jeden na Caesar Cipher również dokonana przez Dawida. 344 00:17:33,400 --> 00:17:35,550 Są bardzo fajne. 345 00:17:35,550 --> 00:17:37,770 Byliście obserwując ich spodenki do tej pory? 346 00:17:37,770 --> 00:17:39,270 Co u nie było? 347 00:17:39,270 --> 00:17:41,490 Była pomocna? Ok, dobrze wiedzieć. 348 00:17:41,490 --> 00:17:44,210 Jeśli nie są, można tak powiedzieć. 349 00:17:46,290 --> 00:17:49,870 Ale zanim to zrobisz, 350 00:17:49,870 --> 00:17:52,600 nie wy spojrzał na te pytania 351 00:17:52,600 --> 00:17:55,430 w ogóle? 352 00:17:55,430 --> 00:17:57,480 >> Porozmawiajmy o tym nieco mało. 353 00:17:57,480 --> 00:18:00,600 Więc mamy wprowadzone w ciągu ostatnich kilku tygodni 354 00:18:00,600 --> 00:18:02,480 w wykładzie 355 00:18:02,480 --> 00:18:04,910 Liczba różnych obwodów. 356 00:18:04,910 --> 00:18:06,140 Jest dla pętli, 357 00:18:06,140 --> 00:18:09,570 pętla, a następnie do-while, 358 00:18:09,570 --> 00:18:13,100 w wykładzie, rozmawialiśmy dużo o 359 00:18:13,100 --> 00:18:16,010 jak te pętle są 360 00:18:16,010 --> 00:18:18,320 dość podobne w wielu aspektach, 361 00:18:18,320 --> 00:18:21,210 i można zrobić wiele z tych samych rzeczy w pętli while 362 00:18:21,210 --> 00:18:23,260 że można z pętli for. 363 00:18:23,260 --> 00:18:26,300 Po prostu trzeba trochę użyć odpowiednich kombinacji zmiennych i takie. 364 00:18:26,300 --> 00:18:28,680 i tak naprawdę 365 00:18:28,680 --> 00:18:31,200 Rozróżnienie między rzeczywistym wszystkie pętli jest 366 00:18:31,200 --> 00:18:33,620 czasami są bardziej użyteczne 367 00:18:33,620 --> 00:18:36,930 ich użyć jednocześnie, niż w innym czasie. 368 00:18:36,930 --> 00:18:39,340 >> Tak na przykład, 369 00:18:39,340 --> 00:18:42,260 Pętla while różni się ona od-while pętli. 370 00:18:42,260 --> 00:18:45,680 Czy wszyscy czują się jak dobry uchwyt podczas 371 00:18:45,680 --> 00:18:48,650 do-while jest bardziej 372 00:18:48,650 --> 00:18:50,990 przydatna lub jaka jest różnica? 373 00:18:50,990 --> 00:18:53,410 >> Myślę, że różnica jest do-while 374 00:18:53,410 --> 00:18:56,960 działa - nie wiem całkiem co terminologia jest 375 00:18:56,960 --> 00:18:59,750 jednak szereg funkcji w pętli. 376 00:18:59,750 --> 00:19:02,020 One automatycznie - robi swoje biegi przynajmniej 377 00:19:02,020 --> 00:19:05,390 zanim sprawdza warunek, czy pętla będzie działać tylko, gdy 378 00:19:05,390 --> 00:19:08,290 to ciągle działa - czy warunek jest spełniony. 379 00:19:08,290 --> 00:19:11,010 Tak, zgadza się to ma sens? 380 00:19:11,010 --> 00:19:14,200 >> Rzućmy okiem na trochę kodu. 381 00:19:14,200 --> 00:19:16,930 Więc po prostu powtórzyć pytanie, 382 00:19:16,930 --> 00:19:19,230 lub odpowiedzi, raczej; 383 00:19:19,230 --> 00:19:22,050 Odpowiedź była, że 384 00:19:22,050 --> 00:19:25,850 Pętla while sprawdza, czy warunek 385 00:19:25,850 --> 00:19:27,440 , które można określić, jest spełniony 386 00:19:27,440 --> 00:19:31,320 przed uruchomieniem ciało pętli po raz pierwszy, 387 00:19:31,320 --> 00:19:35,000 natomiast do-while automatycznie uruchamia ciało pętli 388 00:19:35,000 --> 00:19:38,450 Nazywamy to - to dziwne terminologii, 389 00:19:38,450 --> 00:19:41,460 ale jeśli kiedykolwiek powiedzieć niczego, co nie ma sensu, daj mi znać - 390 00:19:41,460 --> 00:19:45,360 ciało pętli jest to, że rzeczy, które można umieścić w między klamrami. 391 00:19:45,360 --> 00:19:47,840 Oraz w do-while, 392 00:19:47,840 --> 00:19:50,220 że ciało się uruchomić co najmniej raz, 393 00:19:50,220 --> 00:19:54,460 a następnie sprawdzić stan się przed uruchomieniem każdego kolejnego czasu. 394 00:19:54,460 --> 00:19:56,580 >> Więc rzeczywiście, Sam, 395 00:19:56,580 --> 00:20:00,820 masz coś przeciwko pisania prostych pętli while 396 00:20:00,820 --> 00:20:02,840 w pomieszczeniach? 397 00:20:02,840 --> 00:20:05,600 >> Jak coś w rodzaju 398 00:20:05,600 --> 00:20:07,060 zrobić nowy ...? 399 00:20:07,060 --> 00:20:09,220 Po prostu usunąć, co masz w środku. 400 00:20:09,220 --> 00:20:11,300 Tak, po prostu usuń go. 401 00:20:11,300 --> 00:20:14,510 >> Cóż, uważam, że mam to - 402 00:20:14,510 --> 00:20:16,640 który chcesz, podczas gdy, czy chcesz ...? 403 00:20:16,640 --> 00:20:19,350 Tak, tylko nie zaś prawdą, wydrukować coś. 404 00:20:21,050 --> 00:20:23,140 I zobaczmy. 405 00:20:23,140 --> 00:20:25,850 Alexander, zdałem sobie sprawę, że nigdy nie wprowadził cię. 406 00:20:25,850 --> 00:20:27,510 >> Och, to jest w porządku. 407 00:20:27,510 --> 00:20:30,760 Czy - można zakodować maksymalnie do-while dla nas? 408 00:20:30,760 --> 00:20:32,520 >> Tak, spróbuję. 409 00:20:32,520 --> 00:20:34,370 Wszystko w porządku, po prostu wyciągnąć te się na ekranie, 410 00:20:34,370 --> 00:20:38,240 tak, że niby już uchwyt, jakie to są różnice. 411 00:20:38,240 --> 00:20:41,280 >> Więc tutaj jest to, co Sam robi. 412 00:20:41,280 --> 00:20:44,460 Ma liczbę całkowitą o nazwie i 413 00:20:44,460 --> 00:20:47,480 że on inicjowany 17. 414 00:20:47,480 --> 00:20:51,570 Potem mówi, podczas gdy (int i = 17) 415 00:20:51,570 --> 00:20:54,230 printf ("Mam na imię Sam."); 416 00:20:54,230 --> 00:20:57,300 Więc co się dzieje, gdy ten kod? 417 00:20:57,300 --> 00:21:00,340 Jest błąd, co to o błędzie? 418 00:21:00,340 --> 00:21:02,890 Załóżmy, wyciągnij go i porozmawiać o tym. 419 00:21:02,890 --> 00:21:05,040 Wystąpił błąd, to mówi. 420 00:21:05,040 --> 00:21:07,400 Załóżmy, przewiń w dół. 421 00:21:07,400 --> 00:21:09,460 Więc dał nam ten błąd, i powiedział, 422 00:21:09,460 --> 00:21:12,690 "Hej, spodziewałem wyrażenia." 423 00:21:12,690 --> 00:21:16,180 To jest trochę tajemniczy. 424 00:21:19,160 --> 00:21:23,140 Tak, tak, dokładnie - i znowu, 425 00:21:23,140 --> 00:21:27,140 będzie jeszcze trochę błędów, które złapiemy w zaledwie sekundę. 426 00:21:27,140 --> 00:21:31,800 Ale to jest jedna z tych dziwne terminologii rzeczy, 427 00:21:31,800 --> 00:21:36,150 więc tym int i = 17 428 00:21:36,150 --> 00:21:39,290 nie jest wyrażeniem. 429 00:21:39,290 --> 00:21:41,220 Jak to wygląda, że ​​robi się to 430 00:21:41,220 --> 00:21:43,410 oświadczając integer nazywa i 431 00:21:43,410 --> 00:21:45,540 ustawiając ją na równych 17 432 00:21:45,540 --> 00:21:48,780 lub raczej, oddanie 17 do tego int nazwie i. 433 00:21:50,560 --> 00:21:53,350 I że nie ma sensu 434 00:21:53,350 --> 00:21:55,790 W kontekście tego pętli. 435 00:21:55,790 --> 00:21:58,190 To nie ma sensu, jak zobaczymy, 436 00:21:58,190 --> 00:22:01,250 w ramach pętli for, bo deklaracje pętli nie zacząć 437 00:22:01,250 --> 00:22:05,800 z tym dla int i równa coś 438 00:22:05,800 --> 00:22:07,830 i idzie dalej. 439 00:22:07,830 --> 00:22:09,500 >> Tak jak ty - 440 00:22:09,500 --> 00:22:12,630 coś naprawić, dobrze. 441 00:22:12,630 --> 00:22:15,270 Tu to idzie; niesamowite. 442 00:22:15,270 --> 00:22:17,920 Tak teraz wygląda to trochę inaczej. 443 00:22:17,920 --> 00:22:19,030 Kilka rzeczy się zmieniło. 444 00:22:19,030 --> 00:22:21,300 Czy możesz nam powiedzieć, co się zmieniło? 445 00:22:21,300 --> 00:22:24,950 >> Wyjąłem int, więc nie ma deklaracji [niesłyszalne] zamiast przydziału. 446 00:22:24,950 --> 00:22:28,770 Jeden znak równości, umieścić 2 znaki równości, co oznacza równe. 447 00:22:28,770 --> 00:22:30,560 Awesome. 448 00:22:30,560 --> 00:22:33,320 Tak, więc to, co nie zostało Sam wyjął int 449 00:22:33,320 --> 00:22:35,770 który był tu wcześniej, 450 00:22:35,770 --> 00:22:39,340 więc jeśli patrzeć tylko na to - to jest to, co było wcześniej, to powiedział, int, 451 00:22:39,340 --> 00:22:41,970 który deklarując ją - więc wyjął typ. 452 00:22:41,970 --> 00:22:44,710 Jest int, char, string, krótki, 453 00:22:44,710 --> 00:22:47,380 te nazywane są typy. 454 00:22:47,380 --> 00:22:49,510 Więc wziął typ 455 00:22:49,510 --> 00:22:51,580 i wcześniej, 456 00:22:51,580 --> 00:22:54,190 miał tylko pojedynczy znak równości 457 00:22:54,190 --> 00:22:57,300 i to, co powiedział, było problematyczne o tym została 458 00:22:57,300 --> 00:22:59,580 kiedy masz 1 znak równości, 459 00:22:59,580 --> 00:23:01,780 to operator przypisania. 460 00:23:01,780 --> 00:23:04,930 To nie jest badanie, czy 2 rzeczy są równe. 461 00:23:04,930 --> 00:23:07,920 To właściwie ustawiając coś równą coś. 462 00:23:07,920 --> 00:23:11,110 Jesteśmy umieszczenie numeru 17 do zmiennej i. 463 00:23:11,110 --> 00:23:13,850 Tak, aby zrobić tego rodzaju porównania, 464 00:23:13,850 --> 00:23:16,430 trzeba użyć podwójnego równa, 465 00:23:16,430 --> 00:23:19,640 co jest raczej dziwne rzeczy 466 00:23:19,640 --> 00:23:22,760 , ale jest to dość częsty błąd. 467 00:23:23,980 --> 00:23:27,830 Więc jedna rzecz ja zaznaczyć, jeśli nie masz nic przeciwko, 468 00:23:27,830 --> 00:23:30,610 jest to, że, w 469 00:23:30,610 --> 00:23:33,210 nasza funkcja tutaj int main, 470 00:23:33,210 --> 00:23:36,740 widzisz, że ciało naszego funkcji 471 00:23:36,740 --> 00:23:39,810 jest przesunięty z lewej strony 472 00:23:39,810 --> 00:23:42,400 przez 4 spacjami lub tabulatorem. 473 00:23:42,400 --> 00:23:44,730 Powód to zrobić 474 00:23:44,730 --> 00:23:47,000 jest tylko dla czytelności. 475 00:23:47,000 --> 00:23:51,620 Jak widać, w pętli while Sama tutaj 476 00:23:51,620 --> 00:23:53,120 że nie tiret wcale 477 00:23:53,120 --> 00:23:55,390 i że nie ma to wpływu na działanie kodu. 478 00:23:55,390 --> 00:23:57,860 To będzie działać dokładnie tak samo. 479 00:23:57,860 --> 00:24:00,950 >> Tak na przykład, jeśli się do góry o 480 00:24:00,950 --> 00:24:02,680 i naciśnij przycisk Odtwórz nasz, to zbudować, 481 00:24:02,680 --> 00:24:04,470 to będzie go uruchomić, 482 00:24:04,470 --> 00:24:06,700 i co się stało? 483 00:24:06,700 --> 00:24:08,360 Dlaczego wciąż mówią działa? 484 00:24:08,360 --> 00:24:10,560 >> Bo to będzie powtarzać hi. 485 00:24:10,560 --> 00:24:12,900 Dokładnie, i dlaczego ciągle powtarzać cześć? 486 00:24:12,900 --> 00:24:15,850 Ponieważ całkowite >> nigdy nie zmienia, więc to zawsze 17. 487 00:24:15,850 --> 00:24:18,030 Tak, dokładnie tak 488 00:24:18,030 --> 00:24:20,970 Zobaczmy, po - przypominają mi się nazywasz? 489 00:24:20,970 --> 00:24:24,020 Jimmy. Jimmy powiedział, że tak 490 00:24:24,020 --> 00:24:27,340 Powodem hi powtarza w kółko 491 00:24:27,340 --> 00:24:30,510 ponieważ ten warunek jest zawsze prawdziwe. 492 00:24:30,510 --> 00:24:33,270 Nigdy nie zmienia wartości i. 493 00:24:33,270 --> 00:24:36,170 Nigdy nie zmienia zawartości, co jest przechowywane w tej zmiennej. 494 00:24:36,170 --> 00:24:39,180 Więc w tym momencie mamy ten błąd, że 495 00:24:39,180 --> 00:24:42,170 Twój program generowane zbyt wiele kopii, 496 00:24:42,170 --> 00:24:45,100 i jeśli przewiń w dół i trochę patrzeć na to co się tutaj dzieje, 497 00:24:45,100 --> 00:24:49,160 można zobaczyć, że to jest hi, hi, hi, hi, hi, hi, hi przez całą drogę. 498 00:24:49,160 --> 00:24:51,200 Awesome. 499 00:24:51,200 --> 00:24:53,750 >> Więc rodzaju powrotem do punktu początkowego 500 00:24:53,750 --> 00:24:57,020 że o wcięcie tutaj 501 00:24:57,020 --> 00:25:00,110 w ciele pętli nic nie wpływa. 502 00:25:00,110 --> 00:25:03,050 Program nadal prowadził dobrze. 503 00:25:03,050 --> 00:25:06,790 Typowo dla dobrego stylu - 504 00:25:06,790 --> 00:25:10,210 i to jest coś, czego szukać w swoich zestawach problemowych - 505 00:25:10,210 --> 00:25:13,930 prosimy Cię o to przez 4 tiret przestrzeniach, co można zrobić 506 00:25:13,930 --> 00:25:16,440 przez naciśnięcie klawisza Tab 507 00:25:16,440 --> 00:25:18,860 lub poprzez ręczne wprowadzenie w 4 miejscach siebie. 508 00:25:21,880 --> 00:25:25,050 Spoko, dobrze więc wróćmy i spojrzeć na 509 00:25:25,050 --> 00:25:30,460 Aleksandra-while. 510 00:25:30,460 --> 00:25:32,980 Wystarczy troche >> problemy z niewielką. 511 00:25:32,980 --> 00:25:34,390 Dobra, niech działa przez niego. 512 00:25:34,390 --> 00:25:36,400 Czy to jest cool? 513 00:25:36,400 --> 00:25:37,430 >> Tak. 514 00:25:37,430 --> 00:25:39,200 >> Ok, więc zaczynamy. 515 00:25:39,200 --> 00:25:41,010 Jest to kod, który Alexander napisał. 516 00:25:41,010 --> 00:25:43,410 Czy iść Alex - w porządku. 517 00:25:43,410 --> 00:25:46,380 Tak tu jest kod, który Alex napisał. 518 00:25:46,380 --> 00:25:50,500 Tak więc, mamy naszą deklarację główny tu, 519 00:25:50,500 --> 00:25:54,410 a potem mamy to zmienna całkowita o nazwie i 520 00:25:54,410 --> 00:25:57,320 deklarowanych tutaj. 521 00:25:57,320 --> 00:26:01,060 Mamy do instrukcja 522 00:26:01,060 --> 00:26:04,600 i ciała, a następnie znów z tymi szelkami 523 00:26:04,600 --> 00:26:06,520 więc jest to ciało do-while - 524 00:26:06,520 --> 00:26:09,210 chciałbym powiększyć to więc jest bardziej czytelny - 525 00:26:09,210 --> 00:26:12,730 i ciała, staramy się wydrukować "to jest ciało", 526 00:26:12,730 --> 00:26:14,300 i + + 527 00:26:14,300 --> 00:26:17,710 więc zwiększamy zawartość I i zrobić 528 00:26:17,710 --> 00:26:19,470 dopóki nie ma się 3, 529 00:26:19,470 --> 00:26:22,440 a nasz program się kończy. 530 00:26:22,440 --> 00:26:24,680 >> Więc co się dzieje, kiedy uruchomić ten program? 531 00:26:24,680 --> 00:26:27,580 >> Spodziewałem identyfikator. 532 00:26:27,580 --> 00:26:32,070 Ok, więc budować, uruchamiać, błąd. 533 00:26:32,070 --> 00:26:34,820 Co się dzieje? 534 00:26:34,820 --> 00:26:37,060 Mamy przewiń tutaj 535 00:26:37,060 --> 00:26:40,260 mamy tę nieco tajemnicze rzeczy, patrząc, 536 00:26:40,260 --> 00:26:43,930 oczekiwano średnika po deklaracji górnym poziomie. 537 00:26:43,930 --> 00:26:46,620 To jest trochę dziwne. 538 00:26:46,620 --> 00:26:50,990 Czy ktoś ma pomysł co może być grane? 539 00:26:53,080 --> 00:26:54,640 Trochę dziwne, tak. 540 00:26:54,640 --> 00:26:57,640 >> [Niesłyszalne] być zadeklarowana poza nawiasami? 541 00:26:57,640 --> 00:27:03,480 Tak, że nie stosuje się wtedy, gdy użycie nawiasów? 542 00:27:03,480 --> 00:27:07,390 Tak powiedział ten facet poza którym nawiasy? 543 00:27:09,670 --> 00:27:12,240 Och, te chłopaki - nawiasy? 544 00:27:12,240 --> 00:27:13,850 >> Tak. 545 00:27:13,850 --> 00:27:15,310 Tak, dokładnie. 546 00:27:15,310 --> 00:27:17,120 Tak więc okazuje się, że 547 00:27:17,120 --> 00:27:21,550 nie można rzeczywiście zadeklarować zmienną tutaj tak. 548 00:27:23,750 --> 00:27:26,690 Co możesz mieć próbuje zrobić to - 549 00:27:26,690 --> 00:27:30,110 wyciąć go z tam - 550 00:27:30,110 --> 00:27:34,330 Możesz umieścić go w nawiasach klamrowych tutaj 551 00:27:34,330 --> 00:27:37,400 lub inną alternatywą 552 00:27:37,400 --> 00:27:40,350 jest wprowadzenie całkowicie na zewnątrz. 553 00:27:42,480 --> 00:27:46,610 I tak to - w zależności od tego, gdzie faktycznie umieścić deklarację 554 00:27:46,610 --> 00:27:48,550 tej zmiennej całkowitej, 555 00:27:48,550 --> 00:27:53,540 możesz dostać 2 bardzo różne rodzaje zmiennych; 556 00:27:53,540 --> 00:27:55,100 kiedy jest poza głównym, 557 00:27:55,100 --> 00:27:58,240 to jest to, co nazywamy zmienną globalną. 558 00:27:58,240 --> 00:28:00,070 To jest poza zakresem dowolnej funkcji - 559 00:28:00,070 --> 00:28:03,420 to nie jest w funkcji - 560 00:28:03,420 --> 00:28:07,050 natomiast jeśli umieścimy go wewnątrz main, 561 00:28:07,050 --> 00:28:10,000 jak tu, to się nazywa zmiennej lokalnej, 562 00:28:10,000 --> 00:28:13,830 bo to lokalne do zakresu głównego. 563 00:28:13,830 --> 00:28:16,720 I porozmawiamy trochę więcej o tym, co to są różnice 564 00:28:16,720 --> 00:28:20,970 między 2 typów i dlaczego używać różnych rodzajów zmiennych, 565 00:28:20,970 --> 00:28:23,040 ale teraz, 566 00:28:23,040 --> 00:28:25,070 można po prostu zachować wszystkie zmienne lokalne, 567 00:28:25,070 --> 00:28:28,320 ponieważ nie mamy żadnej potrzeby zmiennych globalnych. 568 00:28:28,320 --> 00:28:31,390 >> Okay, więc to jest jedna rzecz, właśnie tam. 569 00:28:31,390 --> 00:28:34,680 Spróbujmy działa to jeszcze raz, zobaczyć co się dzieje. 570 00:28:37,420 --> 00:28:40,270 Uruchom, dostać inny błąd. 571 00:28:40,270 --> 00:28:43,320 Powiększyć trochę, co mamy? 572 00:28:45,110 --> 00:28:50,000 Dostajemy ten spodziewany nawias po zrobienia / while. 573 00:28:53,660 --> 00:28:55,260 Jakieś pomysły co się dzieje? Dan? 574 00:28:55,260 --> 00:28:58,880 >> Czy przy czym nawias, a następnie - 575 00:28:58,880 --> 00:29:01,990 I nie wiem, czy trzeba redeclare int, 576 00:29:01,990 --> 00:29:04,980 ale zrobić while (i <3). 577 00:29:04,980 --> 00:29:06,930 Dokładnie tak. 578 00:29:06,930 --> 00:29:08,830 Okazuje się, że Dan Dokładnie. 579 00:29:08,830 --> 00:29:11,230 Nie musimy postawić ten typ tu ponownie. 580 00:29:11,230 --> 00:29:14,440 Możemy zamiast zabić typ 581 00:29:14,440 --> 00:29:17,220 i po prostu to zrobić. 582 00:29:19,270 --> 00:29:21,640 Dobrze. 583 00:29:21,640 --> 00:29:24,950 Będę Powiększ out, spróbuj jeszcze raz. 584 00:29:26,360 --> 00:29:29,580 Spójrz na to, że prowadzi udane. 585 00:29:29,580 --> 00:29:33,260 Jeśli będziemy przewijać w dół, "to jest ciało" drukowany 3 razy. 586 00:29:33,260 --> 00:29:35,820 To bardzo miłe. 587 00:29:35,820 --> 00:29:38,670 Dobrze, dobrze, chłopaki. 588 00:29:38,670 --> 00:29:41,080 Dobrze zrobione. 589 00:29:41,080 --> 00:29:43,250 Jak to do tej pory? 590 00:29:43,250 --> 00:29:46,200 Przyzwoite tempo? 591 00:29:46,200 --> 00:29:49,200 Okay, cool. 592 00:29:49,200 --> 00:29:52,590 >> Więc, jak to niby z powrotem do pierwotnego pytania, 593 00:29:52,590 --> 00:29:55,430 my - a teraz jeśli widzimy różnicę, 594 00:29:55,430 --> 00:29:58,240 widać, że w tym do-while, 595 00:29:58,240 --> 00:30:00,030 Warunkiem jest ostatni. 596 00:30:00,030 --> 00:30:02,530 Tak jak komputer odczytuje program 597 00:30:02,530 --> 00:30:06,050 od C programy realizowane są w tym rodzaju kolejności, 598 00:30:06,050 --> 00:30:09,450 gdzie dosłownie zacząć od pierwszej linii głównej, 599 00:30:09,450 --> 00:30:13,450 a następnie wykonać linię 6, linia 7, linia 8, linia 9, 600 00:30:13,450 --> 00:30:16,150 linia 10, linia 11, 601 00:30:16,150 --> 00:30:18,440 wszystkie rzeczy na górze tutaj 602 00:30:18,440 --> 00:30:20,020 zamierza wykonywać raz 603 00:30:20,020 --> 00:30:23,350 przed kiedykolwiek przetestować ten warunek, aby zobaczyć 604 00:30:23,350 --> 00:30:26,240 czy i - lub zawartość i, raczej - 605 00:30:26,240 --> 00:30:29,750 mniej niż liczba 3. 606 00:30:29,750 --> 00:30:33,300 I tylko wtedy, gdy mamy do linii 12, 607 00:30:33,300 --> 00:30:36,260 zawartość I ma mniej niż 3 608 00:30:36,260 --> 00:30:39,150 mamy rzeczywiście wrócić do linii 7 609 00:30:39,150 --> 00:30:41,140 i powtórzyć proces, 610 00:30:41,140 --> 00:30:44,620 a następnie testujemy stan znowu i znowu i znowu. 611 00:30:44,620 --> 00:30:47,440 >> Więc możemy to kontrastować 612 00:30:47,440 --> 00:30:50,240 z - powiększanie powrotem, 613 00:30:50,240 --> 00:30:56,500 przewiń do wersji Sama, 614 00:30:56,500 --> 00:31:00,760 będziemy patrzeć na to, nieznacznie zmieniony tak, że to już nie jest nieskończona pętla - 615 00:31:00,760 --> 00:31:03,570 gdzie jeśli powiększyć, 616 00:31:03,570 --> 00:31:06,300 widzimy, że ten program jest wykonywany, 617 00:31:06,300 --> 00:31:09,120 to się najpierw zadeklarować int i, 618 00:31:09,120 --> 00:31:12,030 ustawić zawartość będę na 0, 619 00:31:12,030 --> 00:31:15,820 a następnie uderza stan while początku 620 00:31:15,820 --> 00:31:19,210 więc w tym przypadku, to ciało, ten printf ("cześć") oraz i + + 621 00:31:19,210 --> 00:31:21,630 nie będzie nawet wykonać 622 00:31:21,630 --> 00:31:24,310 , chyba że jest faktycznie mniejsza niż lub równa 2. 623 00:31:24,310 --> 00:31:26,750 Tak więc, jeśli jest 3, na przykład 624 00:31:26,750 --> 00:31:28,840 jeśli ustawimy to tutaj 625 00:31:28,840 --> 00:31:32,160 równa się 4 - lub zrobię 3, bo powiedział 3 - 626 00:31:32,160 --> 00:31:34,890 a następnie go uruchomić, 627 00:31:34,890 --> 00:31:38,320 będziemy budować, to będzie prowadzony całkowicie w porządku, 628 00:31:38,320 --> 00:31:40,530 ale to nie będzie faktycznie wydrukować coś, 629 00:31:40,530 --> 00:31:43,030 ponieważ nie ten test dla pierwszego przypadku. 630 00:31:44,780 --> 00:31:47,530 Więc w klasy, rodzaju rozmawialiśmy o tym, dlaczego te-while loops 631 00:31:47,530 --> 00:31:49,800 przydatne są czasem 632 00:31:49,800 --> 00:31:53,140 i dlaczego chcemy go używać w przeciwieństwie do pętli while. 633 00:31:53,140 --> 00:31:56,450 >> Czy istnieją - czy macie jakieś propozycje 634 00:31:56,450 --> 00:31:59,090 , dlaczego do-while może być bardziej przydatne? 635 00:31:59,090 --> 00:32:02,560 >> No cóż, myślę, że do-while pętli jest, jeśli chcesz dane wprowadzone przez użytkownika, 636 00:32:02,560 --> 00:32:05,020 ponieważ w ten sposób można pozwolić im 637 00:32:05,020 --> 00:32:07,780 umieścić coś w raz, jeśli jest to właściwe, 638 00:32:07,780 --> 00:32:09,300 można przejść do części programu, 639 00:32:09,300 --> 00:32:11,250 ale jeśli to nie jest poprawna, to można przechowywać na monitowania użytkownika 640 00:32:11,250 --> 00:32:13,250 chwili umieszczenia odpowiedniego wejścia. 641 00:32:13,250 --> 00:32:14,260 Tak, dokładnie - dokładnie, 642 00:32:14,260 --> 00:32:16,840 tak do-while jest przydatna 643 00:32:16,840 --> 00:32:18,930 bo gdy monitowanie dla danych wejściowych użytkownika 644 00:32:18,930 --> 00:32:23,000 ponieważ trzeba dostać wprowadzane przez użytkownika zanim rzeczywiście można to sprawdzić. 645 00:32:23,000 --> 00:32:27,330 Więc w PSET 1 w Pset 2, 646 00:32:27,330 --> 00:32:29,650 dokąd się wybierasz, monitowanie dla danych wejściowych użytkownika dużo, 647 00:32:29,650 --> 00:32:31,200 To przydatna rzecz w użyciu 648 00:32:31,200 --> 00:32:33,740 a nie tylko prosty pętli. 649 00:32:33,740 --> 00:32:36,780 Jeśli korzystasz z pętli while, możesz zrobić to samo - 650 00:32:36,780 --> 00:32:38,750 można zrobić to samo z pętli while 651 00:32:38,750 --> 00:32:40,580 jak to zrobić z pomocą do-while. 652 00:32:40,580 --> 00:32:43,380 Po prostu trzeba trochę mieć ten proces powielania 653 00:32:43,380 --> 00:32:47,010 gdzie można uzyskać dane wejściowe, a potem uruchomić pętlę while. 654 00:32:47,010 --> 00:32:49,800 Mając na uwadze, do-while, po prostu trzeba napisać to raz 655 00:32:49,800 --> 00:32:52,430 i jest wiele czystsze. 656 00:32:52,430 --> 00:32:54,650 >> Dobrze. 657 00:32:55,970 --> 00:32:57,330 Masz pytanie? 658 00:32:59,350 --> 00:33:01,380 Ma sens? 659 00:33:01,380 --> 00:33:06,200 >> Return 0 - to jest po prostu rodzaj boksu, czy jest to -? 660 00:33:06,200 --> 00:33:08,960 Tak, więc możemy - 661 00:33:08,960 --> 00:33:11,960 dobrze, zajmiemy się tym nieco więcej później 662 00:33:11,960 --> 00:33:13,290 ale okazuje się, że 663 00:33:13,290 --> 00:33:15,720 to 0 return że kładziemy 664 00:33:15,720 --> 00:33:19,090 na końcu głównej cały czas - 665 00:33:19,090 --> 00:33:21,980 można trochę po prostu wziąć ją jako coś, co robimy 666 00:33:21,980 --> 00:33:24,930 na razie. 667 00:33:24,930 --> 00:33:28,860 Co zaczęliśmy rozmawiać z funkcjami 668 00:33:28,860 --> 00:33:31,600 rodzaju na koniec tygodnia, a następnie ponownie w tym tygodniu 669 00:33:31,600 --> 00:33:33,550 jest to, że funkcja 670 00:33:33,550 --> 00:33:37,680 trwa wejść, które są te rzeczy w nawiasach; 671 00:33:37,680 --> 00:33:41,690 są 2 wejścia, nasze argumenty lub parametry, 672 00:33:41,690 --> 00:33:44,540 co oni nazywany również do naszej głównej funkcji, 673 00:33:44,540 --> 00:33:48,510 , a następnie wytwarza sygnał wyjściowy funkcji 674 00:33:48,510 --> 00:33:51,290 które nazywamy wartości zwracanej. 675 00:33:51,290 --> 00:33:56,260 I wartość zwracana w przypadku main to int, 676 00:33:56,260 --> 00:33:58,320 to liczba całkowita, 677 00:33:58,320 --> 00:34:01,160 i sposób powiedzieć funkcję, "Hej, to jest to, co wyjście 678 00:34:01,160 --> 00:34:05,840 będzie ", jest z tym słowem" powrót ", 679 00:34:05,840 --> 00:34:07,960 to słowo, a raczej 680 00:34:07,960 --> 00:34:11,000 i tak głównym powrocie 0 681 00:34:11,000 --> 00:34:13,389 lub głównym wyprowadzanie 0 682 00:34:13,389 --> 00:34:15,139 jest standardem w programach C 683 00:34:15,139 --> 00:34:18,110 bo wracając 0 oznacza, że ​​z głównych 684 00:34:18,110 --> 00:34:21,600 "Hej, wszystko wykonane z mojego programu w porządku." 685 00:34:21,600 --> 00:34:24,639 Jeżeli mielibyśmy postawić coś innego niż 0, 686 00:34:24,639 --> 00:34:27,440 1, jak na przykład, 687 00:34:27,440 --> 00:34:31,080 , który jest używany, aby powiedzieć, kto prowadził ten program 688 00:34:31,080 --> 00:34:33,540 , że coś poszło nie tak. 689 00:34:35,739 --> 00:34:39,989 Więc jak to większego zaangażowania z rzeczy nad semestrze 690 00:34:39,989 --> 00:34:42,670 jeśli kiedykolwiek potrzebuje powiedzieć, 691 00:34:42,670 --> 00:34:46,650 "Oj, wiesz, coś poszło nie tak z tym programem" 692 00:34:46,650 --> 00:34:49,409 zamiast mojego awarię programu, chcę powiadomić 693 00:34:49,409 --> 00:34:52,310 Biegacz z mojego programu, że coś poszło nie tak, 694 00:34:52,310 --> 00:34:54,530 możesz użyć wartości zwracanej, 695 00:34:54,530 --> 00:34:57,230 jak my to nazywamy, to nie jest 0. 696 00:35:00,180 --> 00:35:02,240 >> Więc opiszę, że trochę więcej 697 00:35:02,240 --> 00:35:05,480 raz mamy do funkcji. 698 00:35:05,480 --> 00:35:09,030 Ten rodzaj ma sens? 699 00:35:09,030 --> 00:35:11,240 Okay. 700 00:35:11,240 --> 00:35:13,530 Funkcje są rodzaju dziwaczne - 701 00:35:13,530 --> 00:35:17,270 Myślę, że dla ludzi, którzy mają dużo tle matematyki, 702 00:35:17,270 --> 00:35:20,100 chodzi trochę łatwiej, 703 00:35:20,100 --> 00:35:22,540 zwłaszcza jeśli masz trochę więcej abstrakcyjne tło matematyczne 704 00:35:22,540 --> 00:35:24,240 i masz w zwyczaju mówić o funkcji 705 00:35:24,240 --> 00:35:27,370 i wszystkie tego rodzaju rzeczy. 706 00:35:28,590 --> 00:35:30,610 Ale będziemy próbować je pokryć 707 00:35:30,610 --> 00:35:33,280 i iść ładnie i powoli, jak wymyślić. 708 00:35:34,730 --> 00:35:37,870 Podobnie cała ta argc int, 709 00:35:37,870 --> 00:35:41,090 char * argv [], 710 00:35:41,090 --> 00:35:44,960 do teraz, można również wziąć to jako płytkę kotła. 711 00:35:46,650 --> 00:35:49,050 Zaczęliśmy na pokrycie tych trochę w wykładzie 712 00:35:49,050 --> 00:35:53,060 kiedy mówimy o argumenty, że przejdzie do programów z linii poleceń, 713 00:35:53,060 --> 00:35:55,700 ale w twoim zestawie problem i programy, 714 00:35:55,700 --> 00:35:58,760 jest to całkowicie w porządku po prostu napisać pustkę i keep it simple. 715 00:35:58,760 --> 00:36:01,490 I co to znaczy, że nieważne 716 00:36:01,490 --> 00:36:04,630 "Hej, główny nie będzie akceptować żadnych nakładów; 717 00:36:04,630 --> 00:36:07,440 jest to po prostu program, będziemy po prostu uruchomić. 718 00:36:07,440 --> 00:36:09,320 My nie zamierzam dać mu żadnych dodatkowych informacji 719 00:36:09,320 --> 00:36:12,420 każdym razem, gdy go uruchamiam uruchomiony. " 720 00:36:14,730 --> 00:36:16,600 Więc teraz, można to zrobić; 721 00:36:16,600 --> 00:36:19,710 można nawet pominąć 0 zwrotny 722 00:36:19,710 --> 00:36:22,650 na koniec programów i będą biegać dobrze, 723 00:36:22,650 --> 00:36:26,150 ale polecam tylko utrzymanie, że widok 724 00:36:26,150 --> 00:36:28,320 W ciągu kilku tygodni, zaczniemy od rodzaju 725 00:36:28,320 --> 00:36:31,340 Odchyl pokrywę trochę i dowiedzieć się więcej o 726 00:36:31,340 --> 00:36:34,380 wszystkie te różne małe części ruchomych. 727 00:36:34,380 --> 00:36:38,160 >> Dobra, teraz porozmawiajmy o naszej drugiej pytanie. 728 00:36:38,160 --> 00:36:43,190 Więc co to jest "nielegalna identyfikator" wskazują zwykle 729 00:36:43,190 --> 00:36:46,040 jeśli wyprowadzane przez Clang? 730 00:36:46,040 --> 00:36:49,290 Myślę, że widzieliśmy, że już dziś. 731 00:36:51,170 --> 00:36:54,370 Może ktoś dać zakręcić, co to oznacza? 732 00:36:54,370 --> 00:36:57,680 Zobaczmy, Kelly - jeden z Kellys. 733 00:37:02,580 --> 00:37:05,300 >> So - 734 00:37:05,300 --> 00:37:07,080 Tak, to, co robi - 735 00:37:07,080 --> 00:37:10,140 >> Myślę, że jeśli, jak, nie deklaruje zmienne i spróbować go użyć. 736 00:37:10,140 --> 00:37:13,310 Tak, dokładnie, dokładnie. 737 00:37:13,310 --> 00:37:15,250 Więc jeśli kiedykolwiek zobaczyć to wyjście 738 00:37:15,250 --> 00:37:17,690 podczas próby i skompilować program, 739 00:37:17,690 --> 00:37:19,470 jak Kelly powiedział, 740 00:37:19,470 --> 00:37:24,210 oznacza to, że użyłeś zmiennej że nie uznania, 741 00:37:24,210 --> 00:37:28,460 więc jeśli wrócę do naszej przestrzeni, 742 00:37:28,460 --> 00:37:31,150 i zrobić coś jak 743 00:37:31,150 --> 00:37:34,800 printf ( 744 00:37:34,800 --> 00:37:38,260 "Hello% s") 745 00:37:40,070 --> 00:37:42,440 i spróbować wypełnić, że% s 746 00:37:42,440 --> 00:37:45,640 ze zmienną s, że nie zadeklarował wszędzie 747 00:37:45,640 --> 00:37:48,330 i staram się go uruchomić, 748 00:37:48,330 --> 00:37:51,330 zobaczysz, co mam na dół na dnie tym tu: 749 00:37:51,330 --> 00:37:54,010 "Korzystanie z nielegalnej identyfikator 's'"; 750 00:37:54,010 --> 00:37:57,710 To oznacza, że ​​nie zadeklarować zmienną. 751 00:37:57,710 --> 00:38:00,750 To samo dzieje się, jeśli 752 00:38:00,750 --> 00:38:05,240 masz x i spróbować w nim przechowywać 7 753 00:38:05,240 --> 00:38:08,720 i nie deklarują X. 754 00:38:08,720 --> 00:38:10,200 Mam ten sam błąd: 755 00:38:10,200 --> 00:38:13,480 "Korzystanie z nierejestrowaną identyfikator 'x'". 756 00:38:16,390 --> 00:38:18,250 >> Wszystko w porządku, 757 00:38:18,250 --> 00:38:21,720 tak cezara Cipher, nie jest bardzo bezpieczny, 758 00:38:21,720 --> 00:38:24,590 Powiem wam obejrzeć ten krótki, rodzaj zrozumieć, dlaczego 759 00:38:24,590 --> 00:38:27,590 i miejmy nadzieję, że po tym tygodniu robi problemu ustawić 760 00:38:27,590 --> 00:38:29,270 gdzie faktycznie napisać szyfr Cezara, będzie zrozumieć nieco więcej 761 00:38:29,270 --> 00:38:32,600 o tym, co to znaczy być bezpieczne i niezabezpieczone - 762 00:38:36,180 --> 00:38:38,960 bezpieczne lub nie, myślę, że - niepewne jest nieco inny. 763 00:38:40,560 --> 00:38:43,140 Inną rzeczą było to, że mają te inne pytania tutaj 764 00:38:43,140 --> 00:38:45,470 o funkcjach 765 00:38:45,470 --> 00:38:47,330 i to, co jest funkcją, 766 00:38:47,330 --> 00:38:52,820 i niby mówił o tym krótko, gdy rozmawialiśmy o wartości zwracanej; 767 00:38:52,820 --> 00:38:54,560 dla kogoś, kto był na wykłady, 768 00:38:54,560 --> 00:38:57,790 można podsumować, kto był na wykład dzisiaj? 769 00:38:57,790 --> 00:38:59,670 Dobrze. 770 00:39:01,210 --> 00:39:04,320 Zobaczmy, niech mają - może ktoś powiedzieć, co jest funkcją? 771 00:39:04,320 --> 00:39:06,060 Kelly? 772 00:39:07,800 --> 00:39:11,260 >> >> Zasadniczo coś narysować na coś, co jest napisane w bibliotece, która znajduje się w 773 00:39:11,260 --> 00:39:14,460 bardziej skomplikowane, tam, a potem po prostu napisać krótką formą, 774 00:39:14,460 --> 00:39:17,360 tak jak masz na myśli powrót do tej biblioteki, za pomocą 775 00:39:17,360 --> 00:39:19,650 tak dawno kod i [niesłyszalne]. 776 00:39:19,650 --> 00:39:22,680 Tak, dokładnie, a następnie chcesz dodać coś do tego? 777 00:39:22,680 --> 00:39:27,050 >> Tak, myślę o tym, jak podobny do koncepcji wzoru w matematyce 778 00:39:27,050 --> 00:39:30,130 gdzie po prostu napisać formułę, a następnie można podłączyć zmienne 779 00:39:30,130 --> 00:39:32,660 i to, co jest funkcją [niesłyszalne]. 780 00:39:32,660 --> 00:39:35,390 >> Tak, więc mamy kilka odpowiedzi tutaj 781 00:39:35,390 --> 00:39:38,080 że są naprawdę dobre i na prawo. 782 00:39:38,080 --> 00:39:43,040 Nie odnosząc się do kodu, który został napisany w bibliotece gdzieś 783 00:39:43,040 --> 00:39:45,390 , który jest bardziej skomplikowane 784 00:39:45,390 --> 00:39:47,130 a następnie można czerpać z tego kodu 785 00:39:47,130 --> 00:39:50,480 i faktycznie z niego korzystać tylko przez pisanie krótkiej formy to - 786 00:39:50,480 --> 00:39:54,060 lub raczej jego nazwa - 787 00:39:54,060 --> 00:39:57,590 a następnie jest także to porównanie z wzorem w matematyce 788 00:39:57,590 --> 00:40:00,400 lub fizyki, wszystkie tego rodzaju rzeczy 789 00:40:00,400 --> 00:40:02,980 gdzie masz formułę 790 00:40:02,980 --> 00:40:05,690 a następnie można podłączyć 791 00:40:05,690 --> 00:40:08,100 zmienne do tego wzoru 792 00:40:08,100 --> 00:40:11,130 Następnie, aby uzyskać wynik formuły, 793 00:40:11,130 --> 00:40:14,580 więc myślisz o tym, co, jak równania kwadratowego. 794 00:40:14,580 --> 00:40:17,690 Wyobraź sobie, że zamiast dowiedzieć się o 795 00:40:17,690 --> 00:40:21,310 co kwadratowa formuła jest w klasie matematyki, 796 00:40:21,310 --> 00:40:24,610 po prostu trzeba trochę program kalkulatora, że ​​zrobił to za Ciebie. 797 00:40:24,610 --> 00:40:28,930 Czy ktoś używać programów kalkulator w zajęciach matematyki w szkole średniej? 798 00:40:28,930 --> 00:40:31,020 Tak, zajęcia fizyki? 799 00:40:31,020 --> 00:40:34,670 Gdzie można po prostu powiedzieć: "Hej, kwadratowego wzoru. 800 00:40:34,670 --> 00:40:37,740 Są to zmienne, które chcę wejścia. 801 00:40:37,740 --> 00:40:40,250 Teraz daj mi odpowiedź. " 802 00:40:40,250 --> 00:40:42,170 To coś, co jest funkcją. 803 00:40:42,170 --> 00:40:44,850 Jest to sposób dla nas 804 00:40:44,850 --> 00:40:47,720 rodzaj zapisu jak mały mały program sub 805 00:40:47,720 --> 00:40:51,700 w naszej większego programu 806 00:40:51,700 --> 00:40:55,090 i używać go w kółko 807 00:40:55,090 --> 00:40:58,380 tak, że nie trzeba skopiować i wkleić kod, 808 00:40:58,380 --> 00:41:04,220 możemy dać jej inne wejścia i uzyskać różne wyjścia, 809 00:41:04,220 --> 00:41:07,090 to super poręczny 810 00:41:07,090 --> 00:41:11,420 kiedy próbujesz pisać różne programy w różnych czasach. 811 00:41:11,420 --> 00:41:14,580 >> Tak na przykład, funkcja używaliśmy w kółko i od nowa 812 00:41:14,580 --> 00:41:17,310 całego kursu jest printf. 813 00:41:17,310 --> 00:41:19,680 Printf jest sama funkcja 814 00:41:19,680 --> 00:41:23,360 i okazuje się, że to jest rzeczywiście dość długa i skomplikowana, 815 00:41:23,360 --> 00:41:26,420 nasty patrząc, funkcjonować pisać. 816 00:41:26,420 --> 00:41:29,590 Tak proste, jak nam się wydaje 817 00:41:29,590 --> 00:41:31,810 aby wydrukować rzeczy z do ekranu, 818 00:41:31,810 --> 00:41:34,820 ponieważ wszystkie nie tylko, że na początku sekcji dzisiaj, 819 00:41:34,820 --> 00:41:36,870 okazuje się, że jest to tak naprawdę, wiesz, 820 00:41:36,870 --> 00:41:39,900 dobre kilkaset linii kodu. 821 00:41:42,030 --> 00:41:45,620 To nie jest coś, że będę kiedykolwiek chcesz pisać to, na pewno, 822 00:41:45,620 --> 00:41:47,480 ale mamy go używać na co dzień, to jest fajne, 823 00:41:47,480 --> 00:41:49,020 więc mamy się nim podzielić z innymi, 824 00:41:49,020 --> 00:41:51,790 z różnych programów, 825 00:41:51,790 --> 00:41:54,520 więc będziemy nurkowanie bardziej do funkcji; 826 00:41:54,520 --> 00:41:56,090 w chwili obecnej, nie jesteśmy - 827 00:41:56,090 --> 00:41:59,150 tylko funkcja zamierzamy być pisanie jest głównym. 828 00:41:59,150 --> 00:42:01,570 Główna jest sama funkcja 829 00:42:01,570 --> 00:42:04,270 i widać, że dostał swoją moc, 830 00:42:04,270 --> 00:42:06,610 jego wejścia, jak rozmawialiśmy o, 831 00:42:06,610 --> 00:42:08,930 a jego nazwa, która jest głównym. 832 00:42:08,930 --> 00:42:11,800 Main jest rodzaju - jest to specjalna funkcja tam. 833 00:42:11,800 --> 00:42:14,800 W programie C, nie musi być główną funkcją, 834 00:42:14,800 --> 00:42:17,900 i tak na razie, mamy rodzaj pominięte piśmie 835 00:42:17,900 --> 00:42:21,400 prototyp, lub oświadczenie, main. 836 00:42:21,400 --> 00:42:23,050 Daliśmy to do ciebie, 837 00:42:23,050 --> 00:42:25,650 a my po prostu miał wypełnić rodzaju luki. 838 00:42:25,650 --> 00:42:29,120 >> >> Tak na drugim zestawie problem, nie trzeba 839 00:42:29,120 --> 00:42:31,350 zapisu, że w drugiej funkcji? 840 00:42:31,350 --> 00:42:34,200 Nie uważam tak. 841 00:42:34,200 --> 00:42:37,600 Wierzę, że to wszystko jest tutaj. 842 00:42:37,600 --> 00:42:41,710 Tak, więc Cezar Cipher, 843 00:42:41,710 --> 00:42:45,000 nie masz na to nie wygląda, 844 00:42:48,740 --> 00:42:53,150 i Vigenere'a, ty też nie, 845 00:42:53,150 --> 00:42:56,400 tak - i okazuje się, że nie zawsze właściwie napisać 846 00:42:56,400 --> 00:42:58,250 funkcja, prawda? 847 00:42:58,250 --> 00:43:01,950 Zadzwonić zawsze umieścić wszystkie kodu w ramach głównych, 848 00:43:01,950 --> 00:43:04,500 i wielu programistów zrobić. 849 00:43:04,500 --> 00:43:07,130 Jak poruszać się, 850 00:43:07,130 --> 00:43:09,480 zaczynamy funkcje wprowadzające jako sposób 851 00:43:09,480 --> 00:43:11,530 oczyścić swój kod 852 00:43:11,530 --> 00:43:13,380 aby uczynić go bardziej eleganckie, 853 00:43:13,380 --> 00:43:16,890 w przypadku, gdy mają zadania - rodzaj jak kiedy rozmawialiśmy o pętlach, 854 00:43:16,890 --> 00:43:20,400 jak czasami są rzeczy, które chcesz robić znowu i znowu i znowu, 855 00:43:20,400 --> 00:43:23,510 i masz rodzaj naiwnego sposób - 856 00:43:23,510 --> 00:43:26,360 lub co często nazywamy "chochoł" rozwiązanie, 857 00:43:26,360 --> 00:43:29,390 jest po prostu skopiować i wkleić w kółko - 858 00:43:29,390 --> 00:43:31,000 można zrobić to samo z funkcji, gdzie po prostu skopiować i wkleić 859 00:43:31,000 --> 00:43:33,360 sam kod w kółko, 860 00:43:33,360 --> 00:43:35,750 ale wzdęcia kod - 861 00:43:35,750 --> 00:43:38,550 kończy się co Twój kod naprawdę długo - 862 00:43:38,550 --> 00:43:41,550 i to również robi się trochę mylące, 863 00:43:41,550 --> 00:43:43,470 a to znaczy, że nie są w stanie jak - 864 00:43:43,470 --> 00:43:45,250 jeśli kiedykolwiek chcesz użyć tego kodu ponownie w innym programie, 865 00:43:45,250 --> 00:43:48,610 jesteś również zatrzymany kopiowanie i wklejanie go ponownie, 866 00:43:48,610 --> 00:43:51,170 więc jedną z rzeczy, będziemy rozmawiać o to 867 00:43:51,170 --> 00:43:54,960 rodzaj konstrukcji i stylu swoich programów 868 00:43:54,960 --> 00:43:57,010 a więc gdy ma sens rodzaj 869 00:43:57,010 --> 00:43:59,800 Pakiet coś i umieścić w oddzielnej funkcji 870 00:43:59,800 --> 00:44:02,080 Zachęcamy do tego, 871 00:44:02,080 --> 00:44:04,700 i to jest coś, co znowu 872 00:44:04,700 --> 00:44:07,790 Nie ma żelaznej reguły. 873 00:44:07,790 --> 00:44:11,540 Rzadko mówią, że musisz napisać funkcję o nazwie tego 874 00:44:12,870 --> 00:44:16,320 ale to bardziej z jednej z tych rzeczy, po prostu rozwijać w czasie 875 00:44:16,320 --> 00:44:19,470 jak piszesz coraz więcej programów. 876 00:44:21,940 --> 00:44:24,790 >> Więcej pytań? 877 00:44:26,340 --> 00:44:30,610 Ok, więc niech teraz 878 00:44:30,610 --> 00:44:34,750 przejdź z powrotem do tego faceta tutaj, 879 00:44:34,750 --> 00:44:37,800 więc nadal jestem w tej części pytania. 880 00:44:37,800 --> 00:44:39,900 Rozmawialiśmy o tych wszystkich tych odmiennych 881 00:44:39,900 --> 00:44:42,050 co to funkcja, dlaczego pisać funkcje, 882 00:44:42,050 --> 00:44:44,700 kiedy można po prostu skopiować i wkleić? 883 00:44:44,700 --> 00:44:47,700 Mam nadzieję, że mamy przekonanie, że pisanie funkcji jest rzeczą dobrą. 884 00:44:47,700 --> 00:44:50,870 Więc teraz przejdźmy do tego MySpace programu 885 00:44:50,870 --> 00:44:53,080 a my spędzić trochę czasu w ten sposób. 886 00:44:54,600 --> 00:44:56,480 >> Więc zobaczmy, 887 00:44:56,480 --> 00:45:00,230 Mogę już ktoś czytać to dla mnie? 888 00:45:02,640 --> 00:45:04,660 Rzućmy Mikhaila - można przeczytać to dla nas? 889 00:45:07,660 --> 00:45:08,890 >> To znaczy z powrotem, gdy MySpace - 890 00:45:08,890 --> 00:45:10,920 Powrót kiedy MySpace było cool. 891 00:45:10,920 --> 00:45:12,070 >> "Powrót kiedy MySpace był fajny, 892 00:45:12,070 --> 00:45:14,900 wszystko było wściekłość, aby wpisać to lubi. 893 00:45:14,900 --> 00:45:17,320 Może to jeszcze jest? Nie jestem pewien. 894 00:45:17,320 --> 00:45:19,990 W każdym przypadku, przy użyciu CS50 urządzenia, 895 00:45:19,990 --> 00:45:22,600 CS50 Run lub CS50 Spaces, 896 00:45:22,600 --> 00:45:25,370 napisać program, który pyta użytkownika o wiadomości 897 00:45:25,370 --> 00:45:29,350 a następnie wysyła wiadomość z jego pierwsza wielka litera, 898 00:45:29,350 --> 00:45:31,800 wszystkich listów innych w przypadku przemiennego, 899 00:45:31,800 --> 00:45:34,010 jak na poniższym przykładzie, wyjście 900 00:45:34,010 --> 00:45:37,060 którym boldfaced tekst stanowi jakiegoś użytkownika dane. 901 00:45:37,060 --> 00:45:39,800 Dla uproszczenia można przyjąć, że użytkownik 902 00:45:39,800 --> 00:45:42,810 tylko wejście małe litery i spacje. 903 00:45:42,810 --> 00:45:45,900 Tym problemem możliwość praktykowania; 904 00:45:45,900 --> 00:45:48,640 nie zostaniesz poproszony o przedłożenie tego programu. " 905 00:45:48,640 --> 00:45:51,640 >> Awesome, dziękuję. 906 00:45:51,640 --> 00:45:54,750 Tak Mikhaila powiedział 907 00:45:54,750 --> 00:45:58,850 mamy zamiar napisać program, który MySpaces kod. 908 00:45:58,850 --> 00:46:02,230 Więc nie każdy z was używać MySpace? 909 00:46:02,230 --> 00:46:04,100 Każdy z was ma kont MySpace? 910 00:46:04,100 --> 00:46:05,920 Oh, yeah, yeah! 911 00:46:05,920 --> 00:46:08,300 To było całkiem fajne. 912 00:46:08,300 --> 00:46:09,950 [Śmiech] 913 00:46:09,950 --> 00:46:12,060 Wiem. 914 00:46:12,060 --> 00:46:14,500 Randka się. 915 00:46:15,490 --> 00:46:18,300 Więc co chcemy zrobić, to napisać program 916 00:46:18,300 --> 00:46:21,110 która przechodzi przez 917 00:46:21,110 --> 00:46:24,490 i aktywuje pierwszą literę 918 00:46:24,490 --> 00:46:27,140 a następnie każdy list później - 919 00:46:27,140 --> 00:46:29,350 lub co drugi list później, przykro mi. 920 00:46:29,350 --> 00:46:32,910 >> Tak - i widać w tym przykładzie, 921 00:46:32,910 --> 00:46:35,260 jest to, w jaki sposób uruchomić program, 922 00:46:35,260 --> 00:46:38,780 i tak jest to po prostu mówi: "Kończy nam program o nazwie a.out. 923 00:46:41,490 --> 00:46:44,630 Wejście, które będziemy dając mu 924 00:46:44,630 --> 00:46:47,090 zostanie wyświetlony monit. 925 00:46:47,090 --> 00:46:51,150 Nie będziemy dostarczać wejście w linii poleceń. " 926 00:46:51,150 --> 00:46:54,100 Jeśli już po wszystkich wykładach 927 00:46:54,100 --> 00:46:56,710 i słuchania o argumentów wiersza poleceń, 928 00:46:57,810 --> 00:47:00,080 to rodzaj gdzie ci - że modny składnia 929 00:47:00,080 --> 00:47:04,530 w głównej przychodzi z int argc, wszystkie te rzeczy, 930 00:47:04,530 --> 00:47:07,630 więc nie używamy, że, my nie mamy do czynienia z żadnym z tym. 931 00:47:09,400 --> 00:47:12,650 Jesteśmy tylko dostaniemy ten wpisywanych przez użytkownika, 932 00:47:12,650 --> 00:47:15,700 a ta druga linia z funky kapitalizacji 933 00:47:15,700 --> 00:47:18,550 jest to, co chcemy, aby nasz program do wyjścia. 934 00:47:19,790 --> 00:47:22,860 >> Tak więc, zamiast korzystania z urządzenia lub uruchomić, będziemy korzystać z przestrzeni, 935 00:47:22,860 --> 00:47:25,360 bo mamy przestrzeni, 936 00:47:25,360 --> 00:47:28,640 a więc jeśli faceci 937 00:47:28,640 --> 00:47:32,380 otrzymać kod, aby wyglądać tak, 938 00:47:32,380 --> 00:47:35,930 więc mam zamiar zapisać tę wersję 939 00:47:35,930 --> 00:47:38,390 po prostu tak, że masz płytkę kotła tutaj 940 00:47:38,390 --> 00:47:42,840 , który wygląda tak, int main (void), nic w nim. 941 00:47:44,480 --> 00:47:48,460 Właściwie, co zrobimy to my po prostu usunąć wszystko razem. 942 00:47:48,460 --> 00:47:50,330 Chcemy pusty program, 943 00:47:50,330 --> 00:47:52,470 bo chyba nie zamierzasz rozpocząć pisanie kodu; 944 00:47:52,470 --> 00:47:55,380 raczej my będziemy starać się pisać trochę Pseudokod 945 00:47:55,380 --> 00:47:58,580 co tak naprawdę oznacza, że ​​zamiar napisać coś, co nie znajduje się kod 946 00:47:58,580 --> 00:48:01,010 tego rodzaju opisuje to, co chcemy zrobić, 947 00:48:01,010 --> 00:48:05,180 trochę jak Dawid w pierwszym dniu wykładu, 948 00:48:05,180 --> 00:48:08,310 lub myślę, że był drugi dzień wykładu, gdy zrobił całe demo skarpetki. 949 00:48:08,310 --> 00:48:10,990 Wy pamiętać, że - widząc skarpetki? 950 00:48:10,990 --> 00:48:13,300 Józef był tam rodzaj pisania w języku angielskim? 951 00:48:13,300 --> 00:48:16,300 Więc zrobimy to samo. 952 00:48:16,300 --> 00:48:18,380 >> Kiedy więc zacząć pisać Pseudokod, 953 00:48:18,380 --> 00:48:22,640 Chciałbym zacząć od spojrzenia na to, co wejście będzie. 954 00:48:22,640 --> 00:48:24,950 I dać sobie sprawę próby, 955 00:48:24,950 --> 00:48:28,780 tak jak "dzięki za add!" 956 00:48:35,030 --> 00:48:38,010 I wtedy też pisać co chcę wyjście być, 957 00:48:38,010 --> 00:48:42,210 który w tym przypadku jest coś takiego. 958 00:48:53,790 --> 00:48:56,050 I tego rodzaju daje mi dobre, jak, punkt wyjścia do myślenia, 959 00:48:56,050 --> 00:48:59,730 "Ok, chcę wziąć linię 1 960 00:48:59,730 --> 00:49:03,560 i chcę, aby przekształcić go w wierszu 2 " 961 00:49:03,560 --> 00:49:06,570 i tego rodzaju pomaga prowadzić moje myślenie. 962 00:49:06,570 --> 00:49:09,990 Jest to dobre miejsce do rozpoczęcia. 963 00:49:09,990 --> 00:49:12,190 Innym sposobem, aby myśleć o tym, też, jak troche przechodzimy 964 00:49:12,190 --> 00:49:15,020 i jak można to zrobić w swoich programach, jest 965 00:49:15,020 --> 00:49:18,530 myśleć o rodzaju jak to, co są przypadki krawędzi do tego? 966 00:49:18,530 --> 00:49:20,740 Co to niby jest dziwne scenariusze? 967 00:49:20,740 --> 00:49:23,660 Jakie są dziwne wejścia, że ​​możemy dostać? 968 00:49:23,660 --> 00:49:26,550 A co powinno ci wyjść wyglądać? 969 00:49:26,550 --> 00:49:29,670 Na przykład, jedno wejście dziwne 970 00:49:29,670 --> 00:49:33,200 będzie ten, 971 00:49:33,200 --> 00:49:35,630 stworzenie absolutnie nic, 972 00:49:35,630 --> 00:49:37,840 jak co powinniśmy wyprowadzać w tym przypadku? 973 00:49:37,840 --> 00:49:40,530 Coś chcemy myśleć, zbyt. 974 00:49:40,530 --> 00:49:44,450 >> Tak, jak pytanie, 975 00:49:44,450 --> 00:49:46,870 co może chcemy wyjścia? 976 00:49:46,870 --> 00:49:50,740 Jeżeli nie mamy żadnych danych na wszystkich, co powinno być wyprowadzanie nasz program? 977 00:49:53,740 --> 00:49:54,860 Nic. >> 978 00:49:54,860 --> 00:49:57,340 Nic? Brzmi świetnie. 979 00:49:57,340 --> 00:49:59,280 Dlatego chcemy, aby upewnić się, że nie piszesz nic z 980 00:49:59,280 --> 00:50:01,500 jeśli nie dostaniesz nic w. 981 00:50:01,500 --> 00:50:04,320 Cool. Okay. 982 00:50:04,320 --> 00:50:07,370 Tak 983 00:50:07,370 --> 00:50:09,380 Mam zamiar zadzwonić na kilka osób, jak idziemy przez 984 00:50:09,380 --> 00:50:12,790 i po prostu dowiedzieć się trochę jak to, co jest ogólny algorytm 985 00:50:12,790 --> 00:50:15,250 a my rodzaj rozpoczęcia pracy przez to razem. 986 00:50:16,240 --> 00:50:19,710 >> Więc zobaczmy. Missy. 987 00:50:19,710 --> 00:50:21,220 Jak myślisz, że zaczynamy? 988 00:50:21,220 --> 00:50:24,830 Jaki byłby dobrym miejscem do rozpoczęcia tutaj 989 00:50:24,830 --> 00:50:27,900 jeśli chcemy przekształcić, powiedzmy, line 1 990 00:50:27,900 --> 00:50:29,440 do linii 2? 991 00:50:29,440 --> 00:50:32,650 Czy możesz trochę tylko mi wyjaśnić, w języku angielskim, o czym myślisz? 992 00:50:32,650 --> 00:50:34,770 Nawet nie martwić o kod. 993 00:50:34,770 --> 00:50:38,250 >> Pierwszy rzeczą, którą chciałbym zrobić, to 994 00:50:38,250 --> 00:50:41,170 rodzaj bezpośredniego użytkownika, aby powiedzieć im, co chcesz. 995 00:50:41,170 --> 00:50:44,730 Ok, więc, powiedzmy, 996 00:50:44,730 --> 00:50:47,450 "Hej, użytkownik. Chcę 997 00:50:47,450 --> 00:50:50,560 ciąg "- niesamowite. 998 00:50:50,560 --> 00:50:52,990 Więc to zapisać. 999 00:50:52,990 --> 00:50:56,140 Pytaj o ciąg. 1000 00:50:56,140 --> 00:50:59,270 To brzmi jak dobry początek. 1001 00:51:03,920 --> 00:51:06,460 Dobrze. 1002 00:51:06,460 --> 00:51:09,750 Zapytajmy Kelly ren ten czas. 1003 00:51:09,750 --> 00:51:11,580 Co my teraz ma zrobić? 1004 00:51:11,580 --> 00:51:14,220 Co niby nasz następny - 1005 00:51:14,220 --> 00:51:18,080 >> Zbierz ich wkład i przechowywać go jako zmienną. 1006 00:51:18,080 --> 00:51:20,470 Great. 1007 00:51:20,470 --> 00:51:24,280 Więc zbierać ciąg, 1008 00:51:25,450 --> 00:51:27,880 przechowywać ją w zmiennej. 1009 00:51:34,840 --> 00:51:36,460 Więc czy jest coś specjalnego chcemy zrobić tutaj? 1010 00:51:36,460 --> 00:51:39,700 Czy chcemy, aby sprawdzić ich wkład 1011 00:51:39,700 --> 00:51:42,260 wcześniej -? 1012 00:51:42,260 --> 00:51:43,790 >> Tak. 1013 00:51:43,790 --> 00:51:46,330 Co może chcemy sprawdzić? 1014 00:51:46,330 --> 00:51:48,980 >> Cóż, powiedział, że nie trzeba sprawdzać, czy jest to numer, prawda? 1015 00:51:48,980 --> 00:51:52,400 Bo to zakładamy, że jest to małe? 1016 00:51:52,400 --> 00:51:55,650 Tak. 1017 00:51:56,380 --> 00:51:58,920 >> Tak więc okazuje się, że - tak. 1018 00:51:58,920 --> 00:52:01,850 Więc getString gwarantuje powrót nam ciąg. 1019 00:52:01,850 --> 00:52:05,050 To nie będzie zwracać liczbę do nas lub coś podobnego. 1020 00:52:05,050 --> 00:52:09,140 Nie może być w tym cyfra znaków ciągu, choć. 1021 00:52:09,140 --> 00:52:13,460 A ci, możemy ignorować jak my kapitalizację. 1022 00:52:13,460 --> 00:52:16,620 Ale pusty ciąg jest całkowicie w porządku, 1023 00:52:16,620 --> 00:52:19,900 więc sprawy tutaj, na linii 4 i 5, 1024 00:52:19,900 --> 00:52:22,020 Dobra, gdzie nie ma wejścia, 1025 00:52:22,020 --> 00:52:25,190 i nic nie umieściliśmy w naszym wyjściu. 1026 00:52:25,190 --> 00:52:28,730 Nie musimy się martwić, upewniając się, że coś jest w ciągu 1027 00:52:28,730 --> 00:52:31,840 lub że ciąg jest co najmniej 4 znaków; 1028 00:52:31,840 --> 00:52:34,190 coś nie jest w porządku. 1029 00:52:34,190 --> 00:52:38,270 Tak więc jest to przeciwstawia, na przykład, jak Pennies programów zapisanymi 1030 00:52:38,270 --> 00:52:42,340 gdzie trzeba było się upewnić, że były coraz nieujemnych liczb; 1031 00:52:42,340 --> 00:52:46,430 trzeba było się upewnić, że jesteś coraz prawidłową liczbę dni w miesiącu. 1032 00:52:46,430 --> 00:52:49,630 A jak wy robicie to? 1033 00:52:49,630 --> 00:52:51,470 Jak można zrobić to badanie? 1034 00:52:51,470 --> 00:52:54,090 Co, że wymaga użycia? 1035 00:52:54,090 --> 00:52:55,650 >> Zrób pętle while. 1036 00:52:55,650 --> 00:53:00,840 Pętli do-while, inne rodzaje pętli, też, tak. 1037 00:53:02,190 --> 00:53:04,520 Tak więc okazuje się, że nie trzeba używać pętlę w tym przypadku, 1038 00:53:04,520 --> 00:53:07,360 kiedy jesteśmy monitowanie dla ciąg, który jest miłe. 1039 00:53:08,280 --> 00:53:10,620 >> Dobra, idzie dalej. 1040 00:53:12,410 --> 00:53:14,270 Więc, Stella. 1041 00:53:14,270 --> 00:53:17,530 Czy możesz powiedzieć nam coś więcej na temat tego, co powinniśmy zrobić? 1042 00:53:17,530 --> 00:53:20,270 Więc teraz mamy ciąg, to mamy zapisane w zmiennej; 1043 00:53:20,270 --> 00:53:23,360 co musimy zrobić z łańcucha? 1044 00:53:26,790 --> 00:53:33,530 >> Musimy - 1045 00:53:33,530 --> 00:53:36,550 identyfikacji 2 - 1046 00:53:36,550 --> 00:53:39,290 Tak, po prostu powiedzieć, że w języku angielskim, to jest niesamowite. 1047 00:53:39,290 --> 00:53:42,670 >> Zidentyfikuj [niesłyszalne] stolice - lub wielkie. 1048 00:53:44,420 --> 00:53:48,130 Tak, więc musisz określić, które z nich są wielkie i małe litery. 1049 00:53:50,020 --> 00:53:54,180 Nie możemy wielkie lub małe litery je dopóki nie określiła, które z nich. 1050 00:54:03,790 --> 00:54:06,350 Więc tak umieścić, że tu jest. 1051 00:54:06,350 --> 00:54:10,210 >> Tak, tylko myśleć o tym procesie, 1052 00:54:10,210 --> 00:54:13,200 jak zrobimy tę identyfikację? 1053 00:54:13,200 --> 00:54:15,050 Czy wiesz, Dan? 1054 00:54:15,050 --> 00:54:18,120 Rodzaju, co - jak narzędzie musielibyśmy użyć z naszego niezbędnika? 1055 00:54:18,120 --> 00:54:22,500 >> Chciałbym umieścić go w jakiś sposób, w jak tablica lub każdej linii 1056 00:54:22,500 --> 00:54:24,240 jest jego własny mały box, 1057 00:54:24,240 --> 00:54:27,240 a następnie ją wielkie, czy nie. 1058 00:54:27,240 --> 00:54:30,440 Ok, więc jedno narzędzie możemy użyć jest tablicą. 1059 00:54:30,440 --> 00:54:33,760 Co możemy patrzeć w ciągu, 1060 00:54:33,760 --> 00:54:36,680 jednak, aby dowiedzieć się - musieliśmy patrzeć na znaki. 1061 00:54:36,680 --> 00:54:40,890 >> Więc masz patrzeć na długość łańcucha? 1062 00:54:40,890 --> 00:54:43,880 Tak, więc część z tego jest miejsce na długość łańcucha. 1063 00:54:50,450 --> 00:54:54,150 Tak z ciekawości, co możemy użyć, aby uzyskać długość łańcucha? 1064 00:54:54,150 --> 00:54:58,080 >> Strlen? 1065 00:54:58,080 --> 00:55:02,870 Tak, strlen, nazywamy to "strlen" 1066 00:55:04,180 --> 00:55:08,620 Wszystkie te funkcje łańcuchowe, więc strlen jest funkcją, 1067 00:55:08,620 --> 00:55:10,670 i jest to bardzo wygodne, ponieważ możemy go używać tylko powiedzieć, 1068 00:55:10,670 --> 00:55:13,430 Hej, strlen: Oto ciąg, powiedz mi jak długo to jest. 1069 00:55:13,430 --> 00:55:17,350 W wykładzie dzisiaj, David dużo mówił o tym, jak strlen jest realizowany, 1070 00:55:17,350 --> 00:55:20,370 , co faktycznie dzieje się za kulisami. 1071 00:55:20,370 --> 00:55:25,450 Ale to jest jedna z tych super-bardzo poręczne. 1072 00:55:25,450 --> 00:55:29,170 Istnieją inne te, które są również w bibliotece strun 1073 00:55:29,170 --> 00:55:34,690 np. strcmp, które jest wpisany "Pop" 1074 00:55:34,690 --> 00:55:38,010 , który jest używany do porównywania ze sobą ciągi. 1075 00:55:41,220 --> 00:55:45,020 Inne z nich będzie używany jak strstr, 1076 00:55:45,020 --> 00:55:48,770 co jest dobre dla znalezienia sub napisy i tak dalej. 1077 00:55:48,770 --> 00:55:53,380 W przeważającej części, wszyscy zaczynają z ulicy, a następnie udać się na czymś innym. 1078 00:55:53,380 --> 00:55:57,080 Powód w rzeczywistości nie przeliterować je jak ciąg i tak dalej 1079 00:55:57,080 --> 00:56:00,260 ponieważ już w niczym pierwszych dni C 1080 00:56:00,260 --> 00:56:04,100 kiedy ludzie były najpierw pisania i to wszystko, 1081 00:56:04,100 --> 00:56:07,580 mieli ograniczenia liczby znaków, które można użyć 1082 00:56:07,580 --> 00:56:09,950 do nazw funkcji i nazw zmiennych, 1083 00:56:09,950 --> 00:56:12,620 więc wszystko jest jak super skondensowane. 1084 00:56:12,620 --> 00:56:15,750 Ale w każdej chwili widzisz coś, co zaczyna się od ulicy, 1085 00:56:15,750 --> 00:56:18,600 że zazwyczaj oznacza to ma coś wspólnego z łańcucha. 1086 00:56:20,990 --> 00:56:23,350 >> Ok, więc musisz uzyskać długość łańcucha, 1087 00:56:23,350 --> 00:56:27,110 , a następnie, co robimy z bohaterami? 1088 00:56:27,110 --> 00:56:29,020 Czy wiesz, Sam? 1089 00:56:29,020 --> 00:56:32,410 >> Nie mam pojęcia, ja starałem się zrozumieć. 1090 00:56:32,410 --> 00:56:35,410 I naprawdę nie wiem - szkoda że nie było jakiś sposób - 1091 00:56:35,410 --> 00:56:38,990 Mam na myśli, to myślę, że moglibyśmy zrobić coś z kursów i wyrównuje, 1092 00:56:38,990 --> 00:56:40,860 ale nie wiem, z dowolnej funkcji takiego. 1093 00:56:40,860 --> 00:56:42,240 Tak. 1094 00:56:43,160 --> 00:56:45,200 >> Ale to - to nie koniecznie działać, 1095 00:56:45,200 --> 00:56:48,690 bo wtedy można dostać przestrzenie być - 1096 00:56:48,690 --> 00:56:51,130 trzeba by mieć miejsce, aby uzyskać wskazówki, jak - 1097 00:56:51,130 --> 00:56:54,310 Okay. 1098 00:56:54,310 --> 00:56:56,490 >> Nie wiem - jestem rodzaju utracone w tym punkcie. 1099 00:56:56,490 --> 00:56:58,120 Tak - nie, nie, nie, to są dobre punkty. 1100 00:56:58,120 --> 00:57:00,420 Więc to, co musimy zrobić, to, podobnie jak Sam powiedział, 1101 00:57:00,420 --> 00:57:02,970 trzeba śledzić, które litery są nieparzyste litery, 1102 00:57:02,970 --> 00:57:05,540 i które z nich są nawet listy. 1103 00:57:06,650 --> 00:57:09,090 Ale chcemy się upewnić, że nie jesteśmy po prostu patrząc 1104 00:57:09,090 --> 00:57:12,110 na stronach parzystych i nieparzystych 1105 00:57:12,110 --> 00:57:14,030 Indeksy w ciągu, 1106 00:57:14,030 --> 00:57:17,660 ale patrząc na parzystych i nieparzystych liter w ciągu znaków, 1107 00:57:17,660 --> 00:57:20,190 więc musimy mieć trochę tego rozróżnienia między 1108 00:57:20,190 --> 00:57:25,190 litery - jak to, co w rzeczywistości, B, C, D, i tak dalej, 1109 00:57:25,190 --> 00:57:29,090 i jakie rzeczy nie są litery, ale wciąż w naszym łańcuchu. 1110 00:57:29,090 --> 00:57:32,390 Na przykład tutaj, jak ten wykrzyknik nie list jest, 1111 00:57:32,390 --> 00:57:36,060 ale nadal jest częścią naszego łańcucha, jest to nadal char. 1112 00:57:36,060 --> 00:57:38,820 Podobnie, wszystkie z tych przestrzeni - 1113 00:57:38,820 --> 00:57:41,710 to nie ma sensu, aby wykorzystać przestrzeń, prawda? 1114 00:57:41,710 --> 00:57:46,160 Dlatego chcemy, aby upewnić się, że w jakiś sposób pominąć tych, 1115 00:57:46,160 --> 00:57:49,410 jednocześnie śledzić kursy i wyrównuje. 1116 00:57:50,900 --> 00:57:54,990 >> Więc niby w naszym przyborniku programowania 1117 00:57:54,990 --> 00:57:57,270 tak daleko, jeśli chcesz, 1118 00:57:57,270 --> 00:58:01,310 mamy wiele różnych narzędzi, które mamy rozmawiać. 1119 00:58:01,310 --> 00:58:04,640 Tak więc jednym, na przykład, są zmienne, 1120 00:58:04,640 --> 00:58:07,120 jak rozmawialiśmy o tutaj. 1121 00:58:07,120 --> 00:58:10,730 Kolejnym narzędziem Omówiliśmy są funkcje. 1122 00:58:10,730 --> 00:58:15,800 Więc rozmawialiśmy o zmiennych w naszym Pseudokod tutaj 1123 00:58:15,800 --> 00:58:19,760 jak to, co mamy zamiar używać do przechowywania nasz łańcuch. 1124 00:58:19,760 --> 00:58:24,630 Rozmawialiśmy o funkcji, aby uzyskać długość ciągu, podobnie jak strlen. 1125 00:58:28,510 --> 00:58:31,170 Rozmawialiśmy o czymś innym, a my rozmawialiśmy o tym 1126 00:58:31,170 --> 00:58:34,850 za dużo wcześniej w sekcji dzisiaj: pętle. 1127 00:58:39,390 --> 00:58:42,030 >> Co myślicie o użyciu pętli w tym programie? 1128 00:58:42,030 --> 00:58:44,110 Jared, co myślisz? 1129 00:58:47,150 --> 00:58:50,030 Użyjemy pętlę w tym programie? 1130 00:58:50,030 --> 00:58:52,500 >> Chyba nie, nie, dlatego, że nie muszą przechodzić przez to więcej niż raz. 1131 00:58:52,500 --> 00:58:55,260 Okay, nie musisz iść przez to, co więcej niż raz? 1132 00:58:55,260 --> 00:58:57,190 >> Cały ciąg. 1133 00:58:57,190 --> 00:59:00,660 Dobra, więc nie musisz przejść przez cały ciąg raz. 1134 00:59:00,660 --> 00:59:03,330 Przepraszam, że się absolutnie nie ma sensu! 1135 00:59:03,330 --> 00:59:06,360 Nie musisz przejść przez cały ciąg więcej niż raz. 1136 00:59:06,360 --> 00:59:08,660 Okay. 1137 00:59:09,790 --> 00:59:11,920 Co o tym myślisz? 1138 00:59:11,920 --> 00:59:14,110 >> Myślę, że lepiej, aby z nich korzystać 1139 00:59:14,110 --> 00:59:16,640 więc możemy zrobić, jak wykorzystać podczas 1140 00:59:16,640 --> 00:59:19,750 lokalizacja to [niesłyszalne] Nr. 1141 00:59:19,750 --> 00:59:22,940 Wielkie, a więc wykorzystać, co? 1142 00:59:22,940 --> 00:59:25,200 Okay, więc mówisz, że 1143 00:59:25,200 --> 00:59:28,130 powinniśmy wykorzystać pętlę, bo chcemy 1144 00:59:28,130 --> 00:59:32,550 wielką literę, podczas gdy nie jest to liczba. 1145 00:59:35,130 --> 00:59:37,140 Więc - przepraszam, czy chcesz dodać? 1146 00:59:37,140 --> 00:59:39,340 >> Chciałem powiedzieć, że sposób, w jaki traktuje ciąg 1147 00:59:39,340 --> 00:59:42,290 i [niesłyszalne] oddzielny [niesłyszalne] na bohaterów? 1148 00:59:42,290 --> 00:59:43,710 Tak. 1149 00:59:43,710 --> 00:59:45,850 >> I wtedy możemy przypisać numery do - 1150 00:59:45,850 --> 00:59:47,780 lub w oparciu o położenie liter w ciągu? 1151 00:59:47,780 --> 00:59:49,720 Tak. 1152 00:59:49,720 --> 00:59:53,640 >> i określić, czy to dziwne, a nawet i wykorzystać sam list 1153 00:59:53,640 --> 00:59:57,750 zaś położenie pisma jest [niesłyszalne] - przepraszam. 1154 00:59:57,750 --> 01:00:00,150 Great. 1155 01:00:00,150 --> 01:00:03,430 >> Więc tylko podsumowanie. 1156 01:00:03,430 --> 01:00:05,840 Czy możesz mi przypomnieć swojego imienia ponownie - Przepraszam. 1157 01:00:05,840 --> 01:00:06,900 >> Charlotte. 1158 01:00:06,900 --> 01:00:08,490 Charlotte, okay. 1159 01:00:08,490 --> 01:00:11,130 Więc co Charlotte mówi, 1160 01:00:11,130 --> 01:00:14,950 która jest całkowicie w prawo - o rany, to lubi auto tiret na mnie - 1161 01:00:14,950 --> 01:00:17,770 jest to, że jeśli spojrzymy na sznurku 1162 01:00:17,770 --> 01:00:19,160 takie jak ten na górze - 1163 01:00:19,160 --> 01:00:21,590 "Dzięki za add" - 1164 01:00:21,590 --> 01:00:24,790 jako ciąg znaków 1165 01:00:24,790 --> 01:00:29,010 gdy jest w pozycji 0, 1166 01:00:29,010 --> 01:00:32,260 h jest w pozycji 1. 1167 01:00:32,260 --> 01:00:36,880 Jest na 2, to mamy 3, 4, 5; 1168 01:00:36,880 --> 01:00:40,830 Przestrzeń jest w pozycji 6. 1169 01:00:42,380 --> 01:00:45,300 Zważywszy, że - co jest pozycja f? 1170 01:00:45,300 --> 01:00:47,610 7! 1171 01:00:47,610 --> 01:00:49,300 O? 8. 1172 01:00:49,300 --> 01:00:52,070 R? 9. 1173 01:00:52,070 --> 01:00:54,340 A potem mamy 10, a potem nie mogę napisać go bez niego 1174 01:00:54,340 --> 01:00:57,430 trochę się bałagan na ekranie. 1175 01:00:57,430 --> 01:01:02,340 Ale to jest rzeczywiście, jak można mówić o ciągów w pamięci. 1176 01:01:02,340 --> 01:01:04,660 Czy to jest ciąg 1177 01:01:04,660 --> 01:01:07,920 jest ciągiem znaków, 1178 01:01:07,920 --> 01:01:12,430 i kiedy odnoszą się do konkretnego znaku w ciągu, 1179 01:01:12,430 --> 01:01:15,280 często zrobić, odwołując się do tego znaku pozycji 1180 01:01:15,280 --> 01:01:17,620 w ciągu, 1181 01:01:17,620 --> 01:01:19,910 prawdopodobnie taki sam sposób, w jaki mówimy o wrześniu 1182 01:01:19,910 --> 01:01:22,870 jest dziewiąty miesiąc roku 1183 01:01:22,870 --> 01:01:27,730 lub poniedziałek jest pierwszym dniem tygodnia. 1184 01:01:29,280 --> 01:01:33,070 Więc to daje nam drogę do 1185 01:01:33,070 --> 01:01:37,030 dowiedzieć się, które z nich są dziwne, nawet w porównaniu z 1186 01:01:37,030 --> 01:01:39,540 ponieważ można zobaczyć tutaj 1187 01:01:39,540 --> 01:01:43,640 jeśli my ją się z tym T 1188 01:01:46,310 --> 01:01:49,360 można zauważyć, że wszystkie te aktywowanych 1189 01:01:49,360 --> 01:01:53,040 są na miejscach parzystych, 1190 01:01:53,040 --> 01:01:55,880 przynajmniej na pierwszym słowie, 1191 01:01:55,880 --> 01:01:59,080 a potem wszystko się wyrzucony raz trafiliśmy do tej przestrzeni 1192 01:01:59,080 --> 01:02:02,460 dlatego, że nie liczą się z tego miejsca, jak liście, 1193 01:02:02,460 --> 01:02:05,150 więc to tak jakbyśmy zaczęli 1194 01:02:05,150 --> 01:02:08,930 i poszedł 0, 1, 2, 3, 4, 5, 1195 01:02:08,930 --> 01:02:12,600 Przestrzeń, 6, 7, 8, miejsce, 1196 01:02:12,600 --> 01:02:16,440 9, i 10, 11, 12, i tak dalej. 1197 01:02:19,300 --> 01:02:22,910 >> Cool, więc na pewno będzie chciał użyć jakiegoś pętli 1198 01:02:22,910 --> 01:02:27,760 przejść przez każdy z bohaterów po kolei. 1199 01:02:31,330 --> 01:02:34,580 W tym momencie, 1200 01:02:36,490 --> 01:02:38,360 wrócimy do naszego starego Pseudokod tutaj. 1201 01:02:40,970 --> 01:02:42,650 W ramach tego określenia, które z nich 1202 01:02:42,650 --> 01:02:45,350 są wielkie i te, które są małe, 1203 01:02:45,350 --> 01:02:48,340 będziemy chcieli to zrobić w jakiejś pętli. 1204 01:02:51,080 --> 01:02:53,390 Loop, okrężnicy. 1205 01:02:55,070 --> 01:03:01,220 Jaki rodzaj pętli, z rodzajów pętli, które mamy, 1206 01:03:01,220 --> 01:03:03,670 Wydaje się, że dobre do stosowania w tym przypadku? 1207 01:03:03,670 --> 01:03:05,610 >> Myślałem pętli for. 1208 01:03:05,610 --> 01:03:07,500 A dlaczego myślisz pętli for? 1209 01:03:07,500 --> 01:03:10,000 >> Bo to zaczyna się od zera, a następnie 1210 01:03:10,000 --> 01:03:13,000 gdy osiągnie długość łańcucha, 1211 01:03:13,000 --> 01:03:16,170 a następnie każdej iteracji można [niesłyszalne], też? 1212 01:03:16,170 --> 01:03:18,260 Tak, dokładnie. 1213 01:03:18,260 --> 01:03:21,490 Tak więc, z różnych wyborów pętli 1214 01:03:21,490 --> 01:03:25,350 mamy dla pętli, pętle i do-while pętle. 1215 01:03:25,350 --> 01:03:28,550 W przypadku, gdy w pętli jest szczególnie przydatne 1216 01:03:28,550 --> 01:03:32,120 jest wtedy, gdy chcesz wiedzieć 1217 01:03:32,120 --> 01:03:34,940 niby gdzie jesteś w pętli, 1218 01:03:34,940 --> 01:03:38,520 ile razy pętla została wykonana do tej pory. 1219 01:03:38,520 --> 01:03:42,490 Która jest dokładnie to, co chcemy wiedzieć, w tej sytuacji, 1220 01:03:42,490 --> 01:03:44,640 jak Kelly powiedział, 1221 01:03:44,640 --> 01:03:47,400 oparte wyłączać z wcześniejszym komentarzem Charlotty, że chcemy wiedzieć, pozycję 1222 01:03:47,400 --> 01:03:49,900 znaku w ciągu znaków, 1223 01:03:49,900 --> 01:03:51,750 i dla pętli da nam tylko, że 1224 01:03:51,750 --> 01:03:54,680 bo jeśli zaczniemy trochę patrząc na naszego łańcucha, 1225 01:03:54,680 --> 01:03:57,140 jeśli zaczynamy na pętli na 0, 1226 01:03:57,140 --> 01:04:00,350 i do góry na całej długości całego łańcucha, 1227 01:04:00,350 --> 01:04:04,740 wtedy możemy skojarzyć litery T 1228 01:04:04,740 --> 01:04:08,110 z 0 w naszej pętli for 1229 01:04:09,950 --> 01:04:13,080 H z 1 litery w naszych w pętli, i tak dalej, 1230 01:04:13,080 --> 01:04:16,600 dzieje się aż do końca łańcucha. 1231 01:04:18,810 --> 01:04:21,890 >> Zacznijmy więc kodowanie to tylko trochę 1232 01:04:21,890 --> 01:04:24,930 po prostu tak wam poczuć, jak to wygląda. 1233 01:04:24,930 --> 01:04:27,980 Mam zamiar zapisać to, 1234 01:04:27,980 --> 01:04:31,230 więc mamy naszą pseudokod tutaj, 1235 01:04:33,490 --> 01:04:38,120 i mam zamiar usunąć wszystko. 1236 01:04:38,120 --> 01:04:42,210 Więc mam puste konto. 1237 01:04:42,210 --> 01:04:45,910 Mam zamiar zacząć od pisania int main (void) 1238 01:04:45,910 --> 01:04:48,440 { 1239 01:04:48,440 --> 01:04:51,380 Zamierzam umieścić 0 zwrotny w 1240 01:04:51,380 --> 01:04:53,320 i}. 1241 01:04:53,320 --> 01:04:56,130 Tak zazwyczaj kiedy zaczynam programu jest to, co zaczynam. 1242 01:04:56,130 --> 01:04:59,370 Będę go zapisać tak, że macie to. 1243 01:05:06,290 --> 01:05:08,440 Tak więc jeden z pierwszych rzeczy, rozmawialiśmy o było 1244 01:05:08,440 --> 01:05:10,920 uzyskanie danych od użytkownika 1245 01:05:10,920 --> 01:05:13,740 i przechowywanie go w ciągu. 1246 01:05:13,740 --> 01:05:16,420 Jak dostaniemy się wejście od użytkownika? 1247 01:05:16,420 --> 01:05:19,640 GetString. >> 1248 01:05:19,640 --> 01:05:21,870 GetString, dobrze. 1249 01:05:23,150 --> 01:05:26,820 Więc jeśli wpisz getString () 1250 01:05:26,820 --> 01:05:32,150 i średnik. 1251 01:05:32,150 --> 01:05:36,630 Spróbujmy uruchomić to, będzie to run, przede wszystkim? 1252 01:05:36,630 --> 01:05:38,430 A dlaczego nie będzie to uruchomić? 1253 01:05:38,430 --> 01:05:40,090 >> Musisz zadeklarować zmienną. 1254 01:05:40,090 --> 01:05:43,040 Mam zadeklarować zmienną. Okay. 1255 01:05:43,040 --> 01:05:45,700 >> Więc jak mam to zrobić? 1256 01:05:45,700 --> 01:05:48,400 Czy myśli pisząc coś, dzieląc go? 1257 01:05:48,400 --> 01:05:51,270 I wtedy możemy wyciągnąć go. 1258 01:05:51,270 --> 01:05:54,630 Zobaczmy, Dan, w prawo, w porządku. 1259 01:05:54,630 --> 01:05:59,100 Albo Daniel. Zrozumiałem w, wejście string = GetString (). 1260 01:05:59,100 --> 01:06:01,340 Awesome. 1261 01:06:01,340 --> 01:06:02,890 Czy to uruchomić? 1262 01:06:02,890 --> 01:06:05,210 Spróbujmy. 1263 01:06:05,210 --> 01:06:08,890 Hit run, kod źródłowy uploading, zabudowy, wystąpił błąd. 1264 01:06:08,890 --> 01:06:11,040 Okay. 1265 01:06:11,040 --> 01:06:14,950 Więc jak tu się dzieje? 1266 01:06:14,950 --> 01:06:18,700 Korzystanie z nierejestrowaną identyfikatora "ciąg". 1267 01:06:18,700 --> 01:06:22,840 >> Musimy m.in. biblioteki? 1268 01:06:22,840 --> 01:06:25,130 Tak, więc Dan mówiąc musimy m.in. bibliotek. 1269 01:06:25,130 --> 01:06:28,270 Czy to, co pan powie, Stella? Awesome. 1270 01:06:29,450 --> 01:06:31,430 To niesamowite, więc Stella, prawda 1271 01:06:31,430 --> 01:06:34,800 skopiować ten kod z przestrzeni Daniela? 1272 01:06:34,800 --> 01:06:37,580 Jeśli klikniesz na Daniel Roland Ki, skopiować go, 1273 01:06:37,580 --> 01:06:41,360 , a następnie będzie można umieścić linię include, a następnie zapisać go na zewnątrz? 1274 01:06:46,580 --> 01:06:49,360 Daj znać, kiedy będziesz gotowa. 1275 01:06:57,160 --> 01:06:59,490 Więc ta składnia include jest również rodzaj fajne; 1276 01:06:59,490 --> 01:07:02,210 tam jak ten hash tagu 1277 01:07:02,210 --> 01:07:05,760 I jest to, i to nie są te nawiasy ostre. 1278 01:07:12,490 --> 01:07:15,360 Czy pamiętasz, jak to działa, czy powinienem umieścić go na ten kod tutaj? 1279 01:07:15,360 --> 01:07:17,850 >> Jestem dobry. 1280 01:07:17,850 --> 01:07:19,810 Okay. 1281 01:07:19,810 --> 01:07:23,260 >> Wydrukowałem go - Nie byłem pewien, które biblioteki, choć. 1282 01:07:23,260 --> 01:07:25,570 Oh, w porządku - tak, więc jest to CS50 biblioteka. 1283 01:07:25,570 --> 01:07:27,660 >> Oh, I umieścić biblioteki stdio. 1284 01:07:27,660 --> 01:07:30,950 >> Ach, rozumiem - tak, nie, that's - 1285 01:07:30,950 --> 01:07:34,380 więc okazuje się, że łańcuch jest rzeczywiście coś, co jest szczególne dla CS50. 1286 01:07:36,590 --> 01:07:41,240 Tam naprawdę nie jest prawdziwy typ string 1287 01:07:41,240 --> 01:07:45,000 bo właśnie tu, łańcuch jest w położeniu, rodzaju, - 1288 01:07:45,000 --> 01:07:49,140 jesteśmy deklarując zmienną wejście typu string - 1289 01:07:49,140 --> 01:07:53,320 i jesteśmy umieszczenie wewnątrz wejścia 1290 01:07:53,320 --> 01:07:58,440 Wartość, która zostanie zwrócony do nas: Wyjście z tego getString wywołania funkcji. 1291 01:07:58,440 --> 01:08:02,910 Można powiedzieć, że jest to wywołanie funkcji, ponieważ ma nawiasów, tak jak printf robi, 1292 01:08:02,910 --> 01:08:05,920 jak strlen robi. 1293 01:08:05,920 --> 01:08:09,860 Ale w rzeczywistości nie jest łańcuch typu REAL 1294 01:08:09,860 --> 01:08:11,760 w języku C. 1295 01:08:11,760 --> 01:08:15,710 Zrobiliśmy go do typu, a my zajmiemy się więcej, co to właściwie jest 1296 01:08:15,710 --> 01:08:19,000 w C, ponieważ jest droga do pracy z tekstem; 1297 01:08:19,000 --> 01:08:22,479 my właśnie coś zrobić, aby wyglądał trochę ładniejszy. 1298 01:08:22,479 --> 01:08:25,240 >> Tak więc zaczynamy. 1299 01:08:25,240 --> 01:08:28,439 Oto kod Stelli. 1300 01:08:28,439 --> 01:08:32,470 To ma # include . 1301 01:08:32,470 --> 01:08:36,390 Inni ludzie nazywają to jak hash to czasami lub ostry dołączyć. 1302 01:08:36,390 --> 01:08:39,580 Teraz możemy go uruchomić, uruchom go, 1303 01:08:39,580 --> 01:08:43,649 i wciąż pojawia się błąd. 1304 01:08:43,649 --> 01:08:46,290 Zobaczmy, co się dzieje. 1305 01:08:48,069 --> 01:08:50,569 "Niewykorzystana zmienna 'wejście'." 1306 01:08:50,569 --> 01:08:53,350 Okay, więc to jest fajne, że jest cool. 1307 01:08:53,350 --> 01:08:55,859 Mam na myśli, to naprawdę nie jest fajne, 1308 01:08:55,859 --> 01:08:57,930 bo dostajemy błąd i to nie działa, 1309 01:08:57,930 --> 01:09:00,410 ale co to jest o to, że 1310 01:09:00,410 --> 01:09:03,130 nie wykorzystaliśmy naszą zmienną, która ma sens. 1311 01:09:03,130 --> 01:09:06,090 Nie starał się nic z nim zrobić. 1312 01:09:07,819 --> 01:09:10,490 To jest sposób, w jaki 1313 01:09:10,490 --> 01:09:14,170 Clang próbuje pomóc nam upewnić się, że nie jesteśmy po prostu za pomocą zmiennych 1314 01:09:14,170 --> 01:09:18,819 a następnie przypadkowo nazywając je coś jeszcze później w naszym kodzie, 1315 01:09:18,819 --> 01:09:21,649 pomagając nam uniknąć błędów w ten sposób. 1316 01:09:23,130 --> 01:09:28,810 >> W porządku, więc mamy wejście od użytkownika, 1317 01:09:28,810 --> 01:09:31,910 że przechowywane w zmiennej. 1318 01:09:31,910 --> 01:09:34,569 Następnym krokiem było następnie 1319 01:09:34,569 --> 01:09:37,609 zacząć patrzeć na wszystkie znaki w ciągu znaków 1320 01:09:37,609 --> 01:09:41,830 i określenie, które z nich mają być wielkie 1321 01:09:41,830 --> 01:09:44,600 a które mają być małe. 1322 01:09:44,600 --> 01:09:49,439 I jak Kelly i Charlotte wychowani, 1323 01:09:49,439 --> 01:09:52,340 Robimy to za pomocą pętli for. 1324 01:09:52,340 --> 01:09:55,520 Więc czy ktoś pamięta składni pętli for 1325 01:09:55,520 --> 01:09:58,670 i chcieliby podjąć stab at tylko pisanie 1326 01:09:58,670 --> 01:10:03,170 Pierwsza linia dla pętli, tylko na chwilę? 1327 01:10:05,740 --> 01:10:07,330 Kelly, chcesz spróbować? 1328 01:10:07,330 --> 01:10:10,300 >> Tak, więc trzeba zainicjować pierwsze, 1329 01:10:10,300 --> 01:10:13,170 więc włożyłem i = 0, 1330 01:10:13,170 --> 01:10:15,390 a ja i 01:10:18,570 Czy w przestrzeni - można pociągnąć go? 1332 01:10:18,570 --> 01:10:21,330 >> Tak, wkręca się trochę, ale tak. 1333 01:10:21,330 --> 01:10:24,180 >> Dobra, wyciągnij ją. 1334 01:10:24,180 --> 01:10:26,490 Awesome. 1335 01:10:26,490 --> 01:10:29,510 >> Ale ja nie wiem, czy miał, że - 1336 01:10:29,510 --> 01:10:32,180 Tak, w porządku. 1337 01:10:33,020 --> 01:10:36,030 Więc oto co Kelly otrzymała: spójrzmy na nią szybko. 1338 01:10:36,030 --> 01:10:40,290 Więc ona obejmowała CS50 biblioteki na górze. 1339 01:10:40,290 --> 01:10:44,790 Ona zawiera standardowy biblioteki IO w górnej, 1340 01:10:45,550 --> 01:10:48,990 a średnia IO posiada funkcje jak printf, 1341 01:10:48,990 --> 01:10:51,690 więc jeśli kiedykolwiek chcesz używać printf, trzeba tę linię. 1342 01:10:53,060 --> 01:10:56,140 A potem włączone do biblioteki string, 1343 01:10:56,140 --> 01:10:58,200 co nam potrzeba, 1344 01:10:58,200 --> 01:11:01,010 ponieważ biblioteka string ma strlen funkcji 1345 01:11:01,010 --> 01:11:04,320 które dostaniemy w tylko trochę. 1346 01:11:04,320 --> 01:11:07,560 Więc jeśli spojrzymy na to, co się stało Kelly tutaj 1347 01:11:07,560 --> 01:11:10,260 można chodzić z nami przez co zrobiłeś? 1348 01:11:10,260 --> 01:11:13,600 >> Tak, tak - to znaczy, mam błędy, więc - 1349 01:11:13,600 --> 01:11:15,380 Tak, nie, it's - 1350 01:11:15,380 --> 01:11:18,580 >> Chciałem więc wywołać ciąg, że mam po prostu "ciąg". 1351 01:11:18,580 --> 01:11:22,230 Chciałem wydrukować ciąg 1352 01:11:22,230 --> 01:11:25,640 , a potem - 1353 01:11:27,450 --> 01:11:30,930 Chciałem jak ustawić ciąg jako jak tablica każdego znaku 1354 01:11:30,930 --> 01:11:33,170 inności [niesłyszalne], prawda? 1355 01:11:33,170 --> 01:11:38,080 A potem chciałem zacząć w pozycji 0 1356 01:11:38,080 --> 01:11:40,630 a następnie co 2 przestrzenie, 1357 01:11:40,630 --> 01:11:42,580 Miałem zamiar wykorzystać, 1358 01:11:42,580 --> 01:11:45,680 tak właśnie określił to jako 23, bo patrząc na ASCII tabeli. 1359 01:11:45,680 --> 01:11:48,730 Więc to, co myślę - wiem, że to nie w porządku. 1360 01:11:48,730 --> 01:11:50,920 >> Rozumiem, więc jest to dobry początek. 1361 01:11:50,920 --> 01:11:54,120 Myślę, że wiele ram jest na miejscu tutaj. 1362 01:11:54,120 --> 01:11:57,500 Przejdźmy przez rodzaju linia po linii i zobaczyć, co się dzieje. 1363 01:11:57,500 --> 01:12:01,040 Więc tak jak lubię na to jest po prostu zacząć od kompilacji kodu 1364 01:12:01,040 --> 01:12:04,300 i pozwalając kompilator mi powiedzieć jak to, co jest nie tak z moim kodu, 1365 01:12:04,300 --> 01:12:07,450 ponieważ kompilator jest naprawdę dobry w informacją, co jest nie tak z twoim kodzie. 1366 01:12:09,790 --> 01:12:12,780 Więc jeśli mamy grać, budować, i nie budować. 1367 01:12:12,780 --> 01:12:14,860 To mówi, że nie był błąd, 1368 01:12:14,860 --> 01:12:17,320 jeśli więc przewijać i spojrzeć na pierwszego błędu, 1369 01:12:17,320 --> 01:12:20,960 to powiedział - 1370 01:12:20,960 --> 01:12:22,040 możemy przejść z powrotem na górę, 1371 01:12:22,040 --> 01:12:26,070 widać błędów jest 5 wytwarzane tu na dole. 1372 01:12:26,070 --> 01:12:30,180 Ups, to naprawdę odcięta. 1373 01:12:31,810 --> 01:12:35,790 Myślę, że po prostu nie będzie nic lepszego. 1374 01:12:36,970 --> 01:12:38,500 >> Jedziemy. 1375 01:12:39,790 --> 01:12:42,530 Tak więc istnieje 5 razem błędy generowane. 1376 01:12:42,530 --> 01:12:45,140 Tutaj widzę tylko pierwsze 2, 1377 01:12:45,140 --> 01:12:49,100 więc mogę przenieść to się trochę, a potem trochę się cofnąć. 1378 01:12:49,100 --> 01:12:53,220 Jest to komenda, która była prowadzona do kompilacji kodu, 1379 01:12:53,220 --> 01:12:59,030 a następnie pierwszy błąd był w file.c tutaj: 1380 01:12:59,030 --> 01:13:03,300 "Oczekiwano zidentyfikowania lub" ("", i to właśnie na tej linii 1381 01:13:03,300 --> 01:13:06,680 gdzie powiedział string = GetString (). 1382 01:13:07,660 --> 01:13:12,920 Widać tutaj, że to było na linii 8 z file.c, 1383 01:13:12,920 --> 01:13:17,230 a ja wierzę, że to znak 12 - to błąd. 1384 01:13:17,230 --> 01:13:20,390 Więc co się dzieje złego na linii 8 - Kelly? 1385 01:13:20,390 --> 01:13:22,810 >> Po prostu trzeba to nazwać, jak, list czy coś, 1386 01:13:22,810 --> 01:13:24,400 jak string s lub coś? 1387 01:13:24,400 --> 01:13:28,250 Tak, więc okazuje się, że te specjalne nazwy typu, 1388 01:13:28,250 --> 01:13:31,770 tak string, int, char, krótkie, 1389 01:13:31,770 --> 01:13:35,740 Oni wszyscy są specjalne słowa kluczowe, 1390 01:13:35,740 --> 01:13:38,940 i nie można z nich korzystać jako nazw zmiennych środowiskowych 1391 01:13:38,940 --> 01:13:41,430 ponieważ kompilator patrzy na to i mówi: 1392 01:13:41,430 --> 01:13:43,680 "Och, wiem, że to rodzaj" 1393 01:13:43,680 --> 01:13:46,530 więc nie można rzeczywiście mieć zmiennej ciąg zwany ciągiem, 1394 01:13:46,530 --> 01:13:50,800 jak próbuję tu zrobić, to nie będzie działać. 1395 01:13:52,610 --> 01:13:58,250 Ale zamiast tego, można nazwać to coś jak s lub ST lub STR. 1396 01:13:58,250 --> 01:14:01,540 My również nie mógł nazwać to int. 1397 01:14:01,540 --> 01:14:03,740 Nie możemy mieć ciąg nazwie int. 1398 01:14:03,740 --> 01:14:06,740 Nie możemy mieć ciąg nazwie char; żaden z nich będzie działać. 1399 01:14:06,740 --> 01:14:09,420 >> Więc będziemy je nazywać s na razie. 1400 01:14:10,630 --> 01:14:13,170 Awesome. 1401 01:14:13,170 --> 01:14:17,500 Więc co dalej dzieje się w tej linii? 1402 01:14:21,390 --> 01:14:24,350 String - linia ta wygląda całkiem nieźle? 1403 01:14:24,350 --> 01:14:27,830 Dajmy mu innego spróbować, niech go uruchomić. 1404 01:14:27,830 --> 01:14:30,360 Ok, więc wciąż pojawiają się błędy. 1405 01:14:30,360 --> 01:14:32,080 Tym razem jesteśmy w dół do 4 błędów. 1406 01:14:32,080 --> 01:14:34,350 Więc mamy jeden z nich. 1407 01:14:34,350 --> 01:14:36,130 Przejdźmy się. 1408 01:14:36,130 --> 01:14:38,890 "Nieoczekiwany nazwy typu 'string': oczekiwane wyrażenie" tak? 1409 01:14:38,890 --> 01:14:41,780 >> Tak, to dlatego, że starałem się wymienić łańcuch. 1410 01:14:41,780 --> 01:14:44,270 Tak więc wygląda na to, że mają teraz iść poprawkę 1411 01:14:44,270 --> 01:14:46,560 wszystkie z tych odniesień do łańcucha. 1412 01:14:46,560 --> 01:14:50,070 Można zobaczyć tam odniesienia do ciąg tutaj, jeden tutaj, jeden tutaj, 1413 01:14:50,070 --> 01:14:53,440 więc możemy przenieść wszystko na s. 1414 01:14:56,040 --> 01:15:00,930 Great. Okay, uruchom go ponownie. 1415 01:15:00,930 --> 01:15:03,260 Budynek - kolejny błąd. 1416 01:15:03,260 --> 01:15:06,900 >> Dobra, teraz jesteśmy do jednego błędu, 1417 01:15:06,900 --> 01:15:11,090 tak int i = s, a następnie nawiasy kwadratowe. 1418 01:15:11,090 --> 01:15:14,880 Więc można powiedzieć nam trochę o tym, co pan tu robi, Kelly? 1419 01:15:14,880 --> 01:15:17,120 >> Tak. 1420 01:15:17,120 --> 01:15:19,410 To był na linii 10. 1421 01:15:19,410 --> 01:15:22,760 >> Nie wiem, czy potrzebowaliśmy to wszystko, 1422 01:15:22,760 --> 01:15:25,560 ale myślę, że starałem się - 1423 01:15:25,560 --> 01:15:27,580 Będę go zapisać tak można podążać. 1424 01:15:27,580 --> 01:15:30,470 >> Myślę, że byłem 1425 01:15:30,470 --> 01:15:33,150 próbuje powiedzieć to, aby rozpocząć w pozycji 0 1426 01:15:33,150 --> 01:15:35,030 na początku nowego dla pętli 1427 01:15:35,030 --> 01:15:38,370 więc myślę, że może to powiedzenie było niepotrzebne. 1428 01:15:39,690 --> 01:15:41,350 Tak tylko do przypomnienia, 1429 01:15:41,350 --> 01:15:44,850 mówiłeś, że ta - próbowałeś uruchomić to w pozycji 0 1430 01:15:44,850 --> 01:15:47,030 i się tym - tak, 1431 01:15:47,030 --> 01:15:50,460 więc myślę, że wcześniej też, kiedy szli przez kod, 1432 01:15:50,460 --> 01:15:54,070 Mówiłeś o tym, jak chcesz traktować ciąg jako tablicę 1433 01:15:54,070 --> 01:15:57,440 więc możemy przejść każdy znak indywidualnie. 1434 01:15:57,440 --> 01:16:00,660 Myślę, że Dan wspomniane tablice też próbujesz konwertować łańcuchy na tablicach. 1435 01:16:01,400 --> 01:16:03,300 >> Okazuje się, że rodzaj pod maską, 1436 01:16:03,300 --> 01:16:06,060 Łańcuch jest przechowywany w tablicy już, 1437 01:16:06,060 --> 01:16:08,060 i można go jak tablica; 1438 01:16:08,060 --> 01:16:12,390 nie ma konwersji, które musisz zrobić. 1439 01:16:12,390 --> 01:16:15,770 Isn't string - tak - 1440 01:16:15,770 --> 01:16:18,200 Ciąg nie jest tak naprawdę tablicą, 1441 01:16:18,200 --> 01:16:21,940 ale można go jako takie, ponieważ wszystkie znaki są zapisywane 1442 01:16:21,940 --> 01:16:25,160 jeden tuż obok siebie, w pamięci, 1443 01:16:25,160 --> 01:16:28,310 więc jeśli chcesz zdobyć pierwszy znak łańcucha, 1444 01:16:28,310 --> 01:16:31,910 to jest to samo, jak się pierwszą liczbę całkowitą w tablicy liczb całkowitych. 1445 01:16:31,910 --> 01:16:35,010 Więc często - we'll 1446 01:16:35,010 --> 01:16:36,360 odnoszą się do 2, jak 1447 01:16:36,360 --> 01:16:38,590 oh, jako string, jako tablica, 1448 01:16:38,590 --> 01:16:40,830 mimo, że tak naprawdę - Oni są bardzo różne rzeczy, 1449 01:16:40,830 --> 01:16:43,410 ale można je traktować bardzo podobnie. 1450 01:16:44,700 --> 01:16:47,400 Tak więc okazuje się, że ta linia faktycznie - 1451 01:16:47,400 --> 01:16:51,270 nie musimy robić żadnej konwersji, 1452 01:16:51,270 --> 01:16:53,500 w rzeczywistości, 1453 01:16:53,500 --> 01:16:56,790 to rzeczywiście nie jest prawidłowym wyrażeniem, 1454 01:16:56,790 --> 01:16:59,040 czyli to, co nasz kompilator nam mówi. 1455 01:16:59,040 --> 01:17:01,290 Jest to, mówiąc: "Hej, to oczekuje się wyrażenie, 1456 01:17:01,290 --> 01:17:04,610 i co ja mam tutaj jest coś, co nie jest wyrazem ". 1457 01:17:04,610 --> 01:17:07,310 Aby zadeklarować tablicę, 1458 01:17:07,310 --> 01:17:11,780 wszystko co musisz zrobić, to coś takiego się średnikiem, 1459 01:17:11,780 --> 01:17:15,080 a następnie poinformować tablicę jak długo chcesz go mieć, 1460 01:17:15,080 --> 01:17:18,370 np. 5, więc ta linia 10 1461 01:17:18,370 --> 01:17:23,880 zadeklaruje tablicę o nazwie I z 5 liczb w nim. 1462 01:17:23,880 --> 01:17:26,540 >> Jest na bok, to nie jest to konieczne do kodu, 1463 01:17:26,540 --> 01:17:30,970 , ale jest to - jest to rodzaj co deklaracja wygląda. 1464 01:17:30,970 --> 01:17:35,310 >> Jak nie używasz char i [strlen (s)]? 1465 01:17:35,310 --> 01:17:38,500 Char i [strlen (s)]? 1466 01:17:38,500 --> 01:17:41,500 >> Char i, a następnie do wnętrza nawiasach, strlen (s). 1467 01:17:43,900 --> 01:17:47,710 Tak, więc może - 1468 01:17:47,710 --> 01:17:49,460 możemy to zrobić, 1469 01:17:49,460 --> 01:17:52,160 a to oświadczam - co by to zrobić? 1470 01:17:52,160 --> 01:17:55,900 >> Myślę, że byłoby zadeklarować tablicę 1471 01:17:55,900 --> 01:18:01,780 z, jak - z - 1472 01:18:01,780 --> 01:18:04,540 oh, nie trzeba i - ach, 1473 01:18:04,540 --> 01:18:06,420 Tak, to na pewno nie jest potrzebny i. 1474 01:18:06,420 --> 01:18:10,250 Zadeklarować tablicę znaków 1475 01:18:10,250 --> 01:18:13,150 S długości. 1476 01:18:14,680 --> 01:18:16,770 I co z tego Sama mówi, że 1477 01:18:16,770 --> 01:18:20,660 ta linia 10 - powiem trochę miejsca między nim a resztą więc możemy wyizolować go - 1478 01:18:20,660 --> 01:18:23,440 ta linia 10 będzie zadeklarować tablicę 1479 01:18:23,440 --> 01:18:28,520 o znakach, strlen (s) warto z nich, 1480 01:18:28,520 --> 01:18:32,270 ale rzeczywiście jest potrzebny i, 1481 01:18:32,270 --> 01:18:35,710 a powodem musimy i dlatego musimy dać tablicy a nazwę; 1482 01:18:35,710 --> 01:18:38,900 inaczej, nie mielibyśmy sposób odnieść się do tablicy w dalszej części kodu. 1483 01:18:38,900 --> 01:18:41,180 >> Więc to tutaj jest nazwa tablicy 1484 01:18:41,180 --> 01:18:43,420 i jest w środku długości. 1485 01:18:43,420 --> 01:18:45,010 To da nam tablicę, 1486 01:18:45,010 --> 01:18:47,430 , ale jest to - znowu, to jest deklaracja. 1487 01:18:47,430 --> 01:18:50,380 To nie jest zadanie, nie jest to inicjalizacja. 1488 01:18:50,380 --> 01:18:52,330 Jeśli deklarujemy tej tablicy tak, 1489 01:18:52,330 --> 01:18:54,490 nie ma właściwie nic w treści tablicy. 1490 01:18:54,490 --> 01:18:57,490 To tylko śmieci - co jest w środku. 1491 01:18:57,490 --> 01:18:59,780 I jak już mówiłem, 1492 01:18:59,780 --> 01:19:01,340 tak naprawdę nie trzeba nawet zrobić to, 1493 01:19:01,340 --> 01:19:04,810 ponieważ możemy już traktować string s jako tablicę. 1494 01:19:06,750 --> 01:19:09,170 Wiem, że działa trochę długo na czas, 1495 01:19:09,170 --> 01:19:12,330 ale chcę po prostu bardzo szybko dostać się do tego pętli for 1496 01:19:12,330 --> 01:19:14,850 i pokazać, w jaki sposób dostęp do poszczególnych znaków w tablicy, 1497 01:19:14,850 --> 01:19:17,170 bo to jest klucz do naszego zadania. 1498 01:19:17,170 --> 01:19:20,790 A następnie wyślemy Ci go stamtąd. 1499 01:19:20,790 --> 01:19:24,610 >> Więc tutaj, mamy dla pętli 1500 01:19:24,610 --> 01:19:28,310 że wygląda prawie dobrze. 1501 01:19:28,310 --> 01:19:30,960 Co nie całkiem prawie tam? 1502 01:19:30,960 --> 01:19:33,240 What's - co nie jest całkiem w prawo o tym na pętli? 1503 01:19:33,240 --> 01:19:36,010 >> Brak nawiasy klamrowe? 1504 01:19:36,010 --> 01:19:38,420 Brak nawiasy klamrowe, na jednym. 1505 01:19:38,420 --> 01:19:42,580 Chcesz się upewnić, że mamy ciało pętli z klamrami. 1506 01:19:42,580 --> 01:19:45,240 Ups, nie kwadratowa klamra! 1507 01:19:45,240 --> 01:19:48,660 A co to jest następna rzecz, że musimy zrobić z tej pętli? 1508 01:19:48,660 --> 01:19:52,640 Gdyby spróbować i uruchomić go, 1509 01:19:52,640 --> 01:19:56,740 Siema ten błąd, że mogę? 1510 01:19:56,740 --> 01:20:00,990 Mam wszystkie te błędy - mam zainicjować i. 1511 01:20:00,990 --> 01:20:03,610 Great. 1512 01:20:03,610 --> 01:20:05,770 Tak więc będzie to pętli - nie jest to całkowicie nie, 1513 01:20:05,770 --> 01:20:08,680 ale to już naprawdę blisko. 1514 01:20:08,680 --> 01:20:11,260 Ten kod możemy teraz uruchomić, 1515 01:20:11,260 --> 01:20:14,620 budować, błąd występuje nadal. 1516 01:20:17,960 --> 01:20:19,800 Dlaczego wciąż narzekać, 1517 01:20:19,800 --> 01:20:22,030 mówiąc, wyrażenie nie jest używany, 1518 01:20:22,030 --> 01:20:24,600 a to dlatego, że linia ta nie robi nic. 1519 01:20:24,600 --> 01:20:27,620 Nie przechowywać go w dowolnym miejscu, nie zapisać wynik. 1520 01:20:27,620 --> 01:20:30,210 Gdzie powinniśmy być oszczędność ten wynik? 1521 01:20:30,210 --> 01:20:32,920 >> S czy ja? 1522 01:20:32,920 --> 01:20:35,990 Dokładnie, i to fajne składnia, 1523 01:20:35,990 --> 01:20:38,550 to s przy nawiasach kwadratowych 1524 01:20:38,550 --> 01:20:41,500 Oznacza to dostęp do i-tego charakter tych. 1525 01:20:41,500 --> 01:20:45,650 To będzie coś, co jest naprawdę ważne dla zadania. 1526 01:20:45,650 --> 01:20:48,070 Niestety, będziemy się tu zatrzymać, 1527 01:20:48,070 --> 01:20:50,550 tak, że sekcja Sebastian może przyjść, 1528 01:20:50,550 --> 01:20:53,980 ale jestem zadowolony na pobyt po zewnątrz i będzie żadnych pytań. 1529 01:20:53,980 --> 01:20:56,680 Więc dziękuję wam za przybycie. 1530 01:20:56,680 --> 01:20:59,730 To powinno przesłać, budowy, uruchomienia. 1531 01:21:01,570 --> 01:21:04,320 Możemy wprowadzić ciąg jak "hello" 1532 01:21:06,570 --> 01:21:08,730 i drukuje "QOX". 1533 01:21:08,730 --> 01:21:11,030 [Śmiech] 1534 01:21:11,030 --> 01:21:14,640 >> Więc nie dość tam, ale w ruchu, coraz wobec tych pętli! 1535 01:21:14,640 --> 01:21:18,640 Dzięki za przybycie, a ja będę na zewnątrz.