1 00:00:00,000 --> 00:00:06,370 2 00:00:06,370 --> 00:00:08,150 >> JASON Hirschhorn: Witamy do trzech tygodni każdy. 3 00:00:08,150 --> 00:00:11,650 Mamy dużo ludzi, ale ekscytujące odcinek przed nami. 4 00:00:11,650 --> 00:00:17,010 Więc po pierwsze, dlatego, że podjęliśmy pewne postępy w toku, ale wciąż 5 00:00:17,010 --> 00:00:20,570 dużo nauki do zrobienia, jestem zamiar pokazać wam pewne zasoby 6 00:00:20,570 --> 00:00:24,160 które powinny okazać się niezwykle pomocne, ponieważ nie tylko zbliżyć swoje 7 00:00:24,160 --> 00:00:28,130 Problem osiada, a także wszystkie trawienia materiał dajemy wam w 8 00:00:28,130 --> 00:00:30,800 wykłady i szorty i sekcji. 9 00:00:30,800 --> 00:00:34,790 >> Następnie jedziemy do spędzenia pierwszych 20 do 25 minut odcinek będzie ponad 10 00:00:34,790 --> 00:00:38,630 GDB, które mogą lub nie mogą mieć stosuje się w tym punkcie, ale 11 00:00:38,630 --> 00:00:42,570 niezwykle pomocne narzędzie, które będzie pomóc debugowania programów. 12 00:00:42,570 --> 00:00:46,060 Wielu z was może nie stosować w printf środek programu, aby dowiedzieć 13 00:00:46,060 --> 00:00:47,430 co wyniósł zmienna. 14 00:00:47,430 --> 00:00:52,060 GDB jest nawet lepiej niż printf i nie zepsuć swój kod, ponieważ 15 00:00:52,060 --> 00:00:53,320 uruchomić go na plik wykonywalny. 16 00:00:53,320 --> 00:00:56,500 Więc idziemy na 10 najbardziej przydatne Polecenia potrzebne do GDB, a my 17 00:00:56,500 --> 00:01:00,540 pójdzie na ćwiczenia razem tak w błąd ustawić trzy i poza nią, można 18 00:01:00,540 --> 00:01:03,320 można używać GDB pomóc debug programy. 19 00:01:03,320 --> 00:01:06,420 I wreszcie, mamy zamiar iść na niektóre algorytmów sortowania i wyszukiwania 20 00:01:06,420 --> 00:01:10,590 że widział w wykładzie, a my jesteśmy Kod będzie faktycznie, a nie tylko 21 00:01:10,590 --> 00:01:17,360 pseudokod, ale wyszukiwarka Kod binarny, Sortowanie bąbelkowe i wybór sortowania. 22 00:01:17,360 --> 00:01:20,090 >> Więc po pierwsze, chcę iść nad zasobami. 23 00:01:20,090 --> 00:01:23,530 Jest to obszerna lista, i to mniejsza czcionka bo miałem wiele do 24 00:01:23,530 --> 00:01:24,390 pasuje tutaj. 25 00:01:24,390 --> 00:01:26,950 Ale to nie tylko pomóc, znowu, z problemu oraz zestawy 26 00:01:26,950 --> 00:01:30,760 trawienie informacje nauczyłeś, ale na pewno, chodź razem quizu, to będzie 27 00:01:30,760 --> 00:01:32,130 być niezwykle pomocne. 28 00:01:32,130 --> 00:01:34,700 Więc po pierwsze, wykład zauważa. 29 00:01:34,700 --> 00:01:39,480 Jeśli pójdziesz do cs50.net/lectures i przewiń do konkretnego tygodnia i dnia, 30 00:01:39,480 --> 00:01:43,120 zobaczysz, że są uwagi dla każdego wykład, który nie jest po prostu 31 00:01:43,120 --> 00:01:47,250 zapis, ale edytowane wersja co zostało opisane w wykładzie z kodem 32 00:01:47,250 --> 00:01:49,610 Podziękowania fragmentów i inne smakołyki. 33 00:01:49,610 --> 00:01:52,220 Bardzo polecam na te. 34 00:01:52,220 --> 00:01:55,340 A potem, jak również, tam jest kod źródłowy dostępny z każdego wykładu. 35 00:01:55,340 --> 00:02:00,050 I znowu te slajdy będą również dostępny online w cs50.net/sections 36 00:02:00,050 --> 00:02:01,480 tego wieczoru. 37 00:02:01,480 --> 00:02:06,860 >> Drugi to tak co tydzień, że spodenki Tematy okładka, zwykle od 5 do 15 38 00:02:06,860 --> 00:02:08,090 minut długości. 39 00:02:08,090 --> 00:02:12,310 A ci, mam nadzieję, że da ci świetny podkład na różne tematy. 40 00:02:12,310 --> 00:02:12,870 Po trzecie - 41 00:02:12,870 --> 00:02:16,370 i to jest nowy to roku - jest study.cs50.net. 42 00:02:16,370 --> 00:02:20,110 Jeśli jeszcze nie sprawdziliśmy to, że bardzo polecam, aby to zrobić. 43 00:02:20,110 --> 00:02:21,100 Można dostać się do wybrać temat. 44 00:02:21,100 --> 00:02:23,040 Mamy dziesiątki tematów na nie. 45 00:02:23,040 --> 00:02:24,770 Tak, na przykład, wybrać funkcje. 46 00:02:24,770 --> 00:02:27,270 To daje jakieś slajdy i zauważa na funkcji. 47 00:02:27,270 --> 00:02:31,190 To są rzeczywiście slajdy że TF zachęca do korzystania w czasie naszego 48 00:02:31,190 --> 00:02:32,710 prezentacje w sekcji. 49 00:02:32,710 --> 00:02:35,040 Istnieje również porady i wskazówki dotyczące postępowania z funkcji, a tam 50 00:02:35,040 --> 00:02:37,290 problemy praktyczne, które pomagają pracy z funkcji. 51 00:02:37,290 --> 00:02:41,500 Mamy również daje linki do mało Funkcje i czasy, że funkcje 52 00:02:41,500 --> 00:02:42,750 pojawiały się w wykładzie. 53 00:02:42,750 --> 00:02:46,550 Więc study.cs50.net, nowy to roku, fantastyczne zasobów. 54 00:02:46,550 --> 00:02:52,180 >> Następnie mam człowieka, który jest instrukcja polecenia, które można uruchomić na 55 00:02:52,180 --> 00:02:52,770 linii poleceń. 56 00:02:52,770 --> 00:02:57,880 Więc jeśli masz jakieś pytania dotyczące poleceń, na przykład, rand, które 57 00:02:57,880 --> 00:03:00,900 spotkałem w zeszłym tygodniu podczas sekcji i masz prawdopodobnie napotkał w 58 00:03:00,900 --> 00:03:05,380 Twój problem ustawić, gdy przechodzi wygenerować kod, ale po wpisaniu man 59 00:03:05,380 --> 00:03:09,980 rand, otrzymasz stronę, powie ci wszystko o rand. 60 00:03:09,980 --> 00:03:14,040 Daje ci to, czego potrzeba, Parametry to odbywa, jak również powrót 61 00:03:14,040 --> 00:03:16,530 Rodzaj i krótki opis tej funkcji. 62 00:03:16,530 --> 00:03:17,500 >> Dlatego sprawdź rand. 63 00:03:17,500 --> 00:03:22,270 To może być trochę rozwlekły i mylące, więc uważam, że czasami 64 00:03:22,270 --> 00:03:26,150 po prostu Googling to, co chcę wiedzieć jest Najlepszym sposobem, aby znaleźć odpowiedź. 65 00:03:26,150 --> 00:03:27,940 Więc ćwiczyć z Google. 66 00:03:27,940 --> 00:03:28,600 Uzyskać dobry w Google. 67 00:03:28,600 --> 00:03:30,600 Stanie się Twoim najlepszym przyjacielem. 68 00:03:30,600 --> 00:03:34,300 >> Jak Google, jeśli nie możesz go znaleźć w Google, cs50.net/discuss, to 69 00:03:34,300 --> 00:03:35,550 forum dyskusyjne. 70 00:03:35,550 --> 00:03:39,390 Szanse są, jeśli masz pytanie, jeden swoich rówieśników ma 700 +, które również 71 00:03:39,390 --> 00:03:42,110 pytanie i może prosić to już w dyskusji 72 00:03:42,110 --> 00:03:43,540 forum i go odpowiedzi. 73 00:03:43,540 --> 00:03:48,130 Tak więc, jeśli masz pytania lub wspólne masz pytanie, które naszym zdaniem 74 00:03:48,130 --> 00:03:52,300 Może inni ludzie mogą biegać w, sprawdź cs50.net/discuss. 75 00:03:52,300 --> 00:03:55,450 >> Wreszcie dwa ostatnie, jeśli chcesz porozmawiać z prawdziwym człowiekiem, biura 76 00:03:55,450 --> 00:03:57,770 godzin od poniedziałku do piątku. 77 00:03:57,770 --> 00:04:00,850 Istnieje również godziny Office Online dla studentów przedłużających. 78 00:04:00,850 --> 00:04:04,370 I ostatni, ale nie najmniej, ja, wykrzyknik. 79 00:04:04,370 --> 00:04:05,960 Macie moje informacje kontaktowe. 80 00:04:05,960 --> 00:04:11,940 Jeśli czegoś potrzebujesz, proszę nie prosimy o kontakt. 81 00:04:11,940 --> 00:04:14,020 Zawsze zachęcamy do tego. 82 00:04:14,020 --> 00:04:17,490 Bardzo niewielu z was dodaje mi Gchat, tak, że nie było rozczarowujące, 83 00:04:17,490 --> 00:04:20,410 ale miejmy nadzieję, że będziemy zmieniać między ten i następny rozdział. 84 00:04:20,410 --> 00:04:22,105 Wszelkie pytania do tej pory na temat zasobów? 85 00:04:22,105 --> 00:04:25,670 86 00:04:25,670 --> 00:04:27,450 Świetnie. 87 00:04:27,450 --> 00:04:34,280 >> Wreszcie inna wtyczka do feedback, sayat.me/cs50. 88 00:04:34,280 --> 00:04:37,050 Możesz dać mi anonimowe informacje zwrotne o tym, jak to robię. 89 00:04:37,050 --> 00:04:38,320 To było bardzo pomocne w zeszłym tygodniu. 90 00:04:38,320 --> 00:04:41,890 Mam kilka uwag od was zaraz po sekcji, a także z 91 00:04:41,890 --> 00:04:44,750 inni uczniowie, którzy go obserwowali w ciągu tygodnia, a 92 00:04:44,750 --> 00:04:46,830 był niezwykle pomocny. 93 00:04:46,830 --> 00:04:50,250 Mam zamiar spróbować i ograniczyć korzystanie z mojego Słowo "słodki", ale pokażę moje 94 00:04:50,250 --> 00:04:52,410 entuzjazm i emocje w inny sposób. 95 00:04:52,410 --> 00:04:56,550 Ale były inne dodatkowe merytoryczne komentarze, 96 00:04:56,550 --> 00:04:57,600 zarówno plusy i Delta. 97 00:04:57,600 --> 00:05:00,480 Więc proszę, dam wam informacje zwrotne na swoich zbiorów problemowych. 98 00:05:00,480 --> 00:05:01,790 Zachęcamy, aby dać mi informacje zwrotne w moim nauczaniu. 99 00:05:01,790 --> 00:05:04,010 Jestem tu dla was. 100 00:05:04,010 --> 00:05:05,270 >> Świetnie. 101 00:05:05,270 --> 00:05:07,020 To wszystko, co mam do Pierwsza część. 102 00:05:07,020 --> 00:05:08,565 Czy ktoś ma jakiekolwiek pytania do tej pory? 103 00:05:08,565 --> 00:05:12,370 104 00:05:12,370 --> 00:05:14,640 I mam uwagę do centrum kontroli. 105 00:05:14,640 --> 00:05:21,200 Studentów przedłużające się messaged mnie mówiąc, że nie dostaniesz żadnego dźwięku, 106 00:05:21,200 --> 00:05:23,870 ale to z mojej mocy, aby naprawić. 107 00:05:23,870 --> 00:05:25,280 Więc mam nadzieję, że dostanie rozwiązany wkrótce. 108 00:05:25,280 --> 00:05:28,850 Jeśli oglądasz w Internecie, hi, ale nie możesz mnie usłyszeć. 109 00:05:28,850 --> 00:05:33,860 >> Więc po pierwsze, będziemy przejść przez GDB. 110 00:05:33,860 --> 00:05:37,100 GDB, jak wspomniałem na początku, to narzędzie do debugowania 111 00:05:37,100 --> 00:05:39,040 znacznie lepiej niż printf. 112 00:05:39,040 --> 00:05:44,700 Więc zacząć z gdb, was, jeśli chcesz otworzyć swój urządzenia 113 00:05:44,700 --> 00:05:49,070 i wziąć plik Wysłałem e-mail do Ciebie wcześniej - plik ten będzie również 114 00:05:49,070 --> 00:05:51,940 dostępne online w trochę - 115 00:05:51,940 --> 00:05:55,700 i uruchomić GDB. / nazwę pliku. 116 00:05:55,700 --> 00:05:58,580 Po pierwsze, oczywiście, trzeba skompilować pliku, ponieważ działa tylko na GDB 117 00:05:58,580 --> 00:05:59,890 pliki wykonywalne. 118 00:05:59,890 --> 00:06:02,300 >> Ale jeśli kiedykolwiek chcesz rozpocząć GDB, pierwszą rzeczą, którą zrobisz, 119 00:06:02,300 --> 00:06:04,550 uruchomieniu gdb. / Cezara. 120 00:06:04,550 --> 00:06:08,340 Więc to jest nazwa programu jesteśmy zamiar iść z nim teraz. 121 00:06:08,340 --> 00:06:12,810 Więc mam zamiar napisać, co zrobić Cezara da mi plik wykonywalny 122 00:06:12,810 --> 00:06:14,100 tu zaznaczony na zielono. 123 00:06:14,100 --> 00:06:19,250 A potem mam zamiar uruchomić gdb. / Cesar. 124 00:06:19,250 --> 00:06:19,810 >> I już. 125 00:06:19,810 --> 00:06:24,540 Widać mamy jakiś tekst mówi mi o wersji GDB, dając mi 126 00:06:24,540 --> 00:06:27,570 niektóre informacje o gwarancji, a potem mają wiersz PKB, który wygląda sortowania 127 00:06:27,570 --> 00:06:29,350 z jak nasz linii poleceń, ale widać, że jest otwarty 128 00:06:29,350 --> 00:06:32,510 PAREN, GDB, zamknij nawias. 129 00:06:32,510 --> 00:06:36,520 Zanim będziemy kontynuować i debugowania tego pliku że wysłałem do was wszystkich, przyjrzyjmy 130 00:06:36,520 --> 00:06:40,220 kilka przydatnych poleceń więc mamy poczucie z tego, co się dzieje na pokrycie. 131 00:06:40,220 --> 00:06:45,060 >> Te polecenia są tutaj wymienione w Kolejność, w której na ogół z nich korzystać. 132 00:06:45,060 --> 00:06:50,230 Więc zaczynam mój program, uruchamiając GBD. / Nazwa programu, 133 00:06:50,230 --> 00:06:51,360 w tym przypadku, Cezar. 134 00:06:51,360 --> 00:06:57,430 A następnie pierwsze co robię 99,9% czasu jest typ przerwa na myśli. 135 00:06:57,430 --> 00:06:59,070 , Który wyznacza punkt załamania na Głównym. 136 00:06:59,070 --> 00:07:03,260 Zasadniczo, co robisz tam jest program będzie zatrzymać w 137 00:07:03,260 --> 00:07:06,100 Głównym, dzięki czemu można rozpocząć rozpatrywanie jej linię po linii, a nie działa wszystko 138 00:07:06,100 --> 00:07:07,040 droga przez. 139 00:07:07,040 --> 00:07:09,730 Można złamać w różnych punktach Twój kod, ale głównym jest zwykle 140 00:07:09,730 --> 00:07:11,870 Dobrym miejscem na rozpoczęcie. 141 00:07:11,870 --> 00:07:14,840 >> Następne polecenie uruchomić jest prowadzony. 142 00:07:14,840 --> 00:07:17,400 , Który rozpoczyna bieg programu, a jeśli chcesz wprowadzić wiersza poleceń 143 00:07:17,400 --> 00:07:19,090 argumenty, go uruchomić to polecenie. 144 00:07:19,090 --> 00:07:20,500 Uruchamiać z argumentami. 145 00:07:20,500 --> 00:07:25,000 Tak, ponieważ mamy zamiar na wersję C, która jest program wy 146 00:07:25,000 --> 00:07:26,160 napisał do pset dwóch - 147 00:07:26,160 --> 00:07:29,880 ta, oczywiście, ma kilka błędów w tym, że mam nadzieję, że znajdziemy - 148 00:07:29,880 --> 00:07:32,810 mamy zamiar uruchomić bieg z jakimś poleceniem Argumenty wiersza, ponieważ Cezar, 149 00:07:32,810 --> 00:07:34,860 jak wiecie za problem zestaw specyfikacji, wykonuje pewne 150 00:07:34,860 --> 00:07:36,380 Argumenty wiersza poleceń. 151 00:07:36,380 --> 00:07:40,000 >> Następne kilka poleceń, obok jeden jest w rzeczywistości nazywa się następny. 152 00:07:40,000 --> 00:07:42,470 Że weźmie ci linia po linii za pośrednictwem programu. 153 00:07:42,470 --> 00:07:45,800 Więc uderzenie n następnie enter powoduje przejście do następnej linii, wykonując 154 00:07:45,800 --> 00:07:46,880 poprzednia linia. 155 00:07:46,880 --> 00:07:49,440 Kroku nastąpi nie tylko Następna linia, ale 156 00:07:49,440 --> 00:07:51,070 zajmuje Ci funkcje wewnątrz. 157 00:07:51,070 --> 00:07:54,310 Więc jeśli masz napisane funkcję w kod lub jeśli chcesz poznać 158 00:07:54,310 --> 00:07:57,820 do i, na przykład, można trafić s, a zamiast iść do następnej linii 159 00:07:57,820 --> 00:08:02,390 Plik, który idziesz przez prawo teraz, będziesz faktycznie krok do 160 00:08:02,390 --> 00:08:04,670 funkcja i zobaczyć jej kod. 161 00:08:04,670 --> 00:08:12,300 >> Lista pokazuje, w bardzo przyjazny dla użytkownika Format, na 10 lub tak linie wokół 162 00:08:12,300 --> 00:08:14,940 , gdzie obecnie znajdują się w kodzie więc rzeczywiście można znaleźć w pliku 163 00:08:14,940 --> 00:08:17,810 zamiast przełączać się się między różnymi widokami. 164 00:08:17,810 --> 00:08:21,890 Wydruku jest jak printf, jak sama nazwa wskazuje. 165 00:08:21,890 --> 00:08:24,020 Który pokazuje, co równa zmiennej. 166 00:08:24,020 --> 00:08:25,870 >> Informacje mieszkańców jest bardzo pomocna. 167 00:08:25,870 --> 00:08:27,740 Jest to specjalna wersja druku. 168 00:08:27,740 --> 00:08:31,770 Informacje miejscowi pokazuje wszystkie lokalne zmienne, drukuje je wszystkie dla ciebie 169 00:08:31,770 --> 00:08:33,380 , które są obecnie dostępne. 170 00:08:33,380 --> 00:08:36,360 Tak więc ogólnie, zamiast wydrukować cztery zmienne, że jestem 171 00:08:36,360 --> 00:08:39,929 ciekaw, czy jestem w pętli, na przykład, po prostu napisać informacji mieszkańców, 172 00:08:39,929 --> 00:08:43,470 i będzie to do mnie to, co mogę pokazać mój licznik wynosi, jak również układu, który jestem 173 00:08:43,470 --> 00:08:45,130 pracy na równych sobie. 174 00:08:45,130 --> 00:08:47,530 >> Wreszcie, w dalszym ciągu. 175 00:08:47,530 --> 00:08:49,300 Wpisując przerwę przestaje ci na progu. 176 00:08:49,300 --> 00:08:51,380 Możesz chodzić po linii przez i linii z następnym kroku. 177 00:08:51,380 --> 00:08:55,640 Nadal prowadzi program do następnego Break Point lub do realizacji, jeśli 178 00:08:55,640 --> 00:08:57,180 nie ma więcej punktów przerwę. 179 00:08:57,180 --> 00:09:00,060 Wyłącz usuwa punkty popsuć jeśli postanowił była przerwa w głównym 180 00:09:00,060 --> 00:09:01,890 nieodpowiednie, chcesz ustawić go gdzieś indziej. 181 00:09:01,890 --> 00:09:05,090 I wreszcie q, quit, pobiera z GDB. 182 00:09:05,090 --> 00:09:10,784 >> Więc ten program. / Cezar, będziemy przejrzeć już teraz, a my 183 00:09:10,784 --> 00:09:13,490 zamierzasz używać GDB aby znaleźć błędy w tym programie. 184 00:09:13,490 --> 00:09:18,110 Pobiegłem wcześniej z tego programu Sprawdź 50, i mam jedno zmarszczenie brwi. 185 00:09:18,110 --> 00:09:22,310 Wszystko, co istnieje, jest skompilowany, to przepuszczono wiele badań, ale 186 00:09:22,310 --> 00:09:27,950 jakiś powód, że nie przeszedł piątą testy, obracając barfoo, wszystkie czapki, do 187 00:09:27,950 --> 00:09:33,350 E-D-U-I-R-R, wszystkie kapsle za pomocą trzech jako klucz. 188 00:09:33,350 --> 00:09:34,090 Mam dość blisko. 189 00:09:34,090 --> 00:09:35,410 Mam się o jedną literę. 190 00:09:35,410 --> 00:09:37,340 Więc jest jakiś mały błąd tutaj. 191 00:09:37,340 --> 00:09:38,070 Szukałem przez mój kod. 192 00:09:38,070 --> 00:09:38,850 Nie mogłem zrozumieć. 193 00:09:38,850 --> 00:09:41,740 Miejmy nadzieję, że chłopaki mogą mi pomóc dowiedzieć się, co to błąd jest. 194 00:09:41,740 --> 00:09:44,610 >> Więc to jest błąd, że jesteśmy poszukiwania. 195 00:09:44,610 --> 00:09:46,090 Przejdźmy do GDB. 196 00:09:46,090 --> 00:09:51,100 Znowu, ja uruchomić gdb. / Cezara, więc teraz jesteśmy w GDB. 197 00:09:51,100 --> 00:09:54,290 I to, co jest pierwsze co mam zrobić? 198 00:09:54,290 --> 00:09:56,680 Właśnie weszła GDB. 199 00:09:56,680 --> 00:10:00,316 Ktoś dał mi dobry polecenie, aby wejść. 200 00:10:00,316 --> 00:10:01,140 >> STUDENT: Break głównym. 201 00:10:01,140 --> 00:10:01,800 >> JASON Hirschhorn: Break głównym. 202 00:10:01,800 --> 00:10:02,900 Fantastyczne. 203 00:10:02,900 --> 00:10:03,560 Załóżmy, że cala typu 204 00:10:03,560 --> 00:10:06,390 Możecie obejrzeć tutaj lub po razem na komputerach. 205 00:10:06,390 --> 00:10:09,410 Złamać główny, a zobaczysz, Point Break ustalono na - 206 00:10:09,410 --> 00:10:12,340 to daje mi trochę dziwny adres pamięci, i to też daje mi numer linii. 207 00:10:12,340 --> 00:10:15,310 Gdybym miał spojrzeć w archiwum, Chciałbym zrozumieć, że main 208 00:10:15,310 --> 00:10:17,700 się na linii 21. 209 00:10:17,700 --> 00:10:18,950 Co należy uruchomić następny? 210 00:10:18,950 --> 00:10:22,970 211 00:10:22,970 --> 00:10:25,060 Jest mój program działa? 212 00:10:25,060 --> 00:10:25,650 Nie. 213 00:10:25,650 --> 00:10:27,175 Więc co mam uruchomić następny? 214 00:10:27,175 --> 00:10:27,520 >> STUDENT: Run. 215 00:10:27,520 --> 00:10:28,050 >> JASON Hirschhorn: Run. 216 00:10:28,050 --> 00:10:30,760 Czy mogę po prostu run, czy powinien I dodać kilka innych rzeczy w? 217 00:10:30,760 --> 00:10:31,960 >> STUDENT: Uruchom z argumentem. 218 00:10:31,960 --> 00:10:33,320 >> JASON Hirschhorn: Uruchom z argumenty poleceń. 219 00:10:33,320 --> 00:10:36,420 A ponieważ jestem bardzo specyficzny debugowanie sprawa, że ​​należy wprowadzić 220 00:10:36,420 --> 00:10:37,120 linia argumentów poleceń. 221 00:10:37,120 --> 00:10:42,290 Więc będę działają trzy, co jest, ponownie, Wyjście dostałem od Odjazd 50. 222 00:10:42,290 --> 00:10:44,240 Uruchamianie programu. 223 00:10:44,240 --> 00:10:45,420 Idziemy przez kilka linii. 224 00:10:45,420 --> 00:10:47,700 Będziesz teraz zobaczyć, że jesteśmy na linii 21. 225 00:10:47,700 --> 00:10:49,200 Skąd mam wiedzieć, że jesteśmy na linii 21? 226 00:10:49,200 --> 00:10:52,170 Bo jeśli spojrzeć na lewo z mojego okna terminala, tam 227 00:10:52,170 --> 00:10:53,120 mówi wiersz 21. 228 00:10:53,120 --> 00:10:57,010 I to daje mi, naprawdę, Kod, który jest na linii 21. 229 00:10:57,010 --> 00:10:58,440 Więc misspoke wcześniej. 230 00:10:58,440 --> 00:10:59,770 Głównym rzeczywistości nie jest w linii 21. 231 00:10:59,770 --> 00:11:02,000 Głównym jest kilka linii powyżej 21. 232 00:11:02,000 --> 00:11:04,300 Ale na linii 21, która znajduje się gdzie mamy do zerwania. 233 00:11:04,300 --> 00:11:06,280 Ta linia kodu ma jeszcze nie wykonane. 234 00:11:06,280 --> 00:11:06,890 To jest ważne. 235 00:11:06,890 --> 00:11:09,120 Linia widzisz nie ma zostały jeszcze zrealizowane. 236 00:11:09,120 --> 00:11:12,650 To jest następna linia kodu masz zamiar wykonać. 237 00:11:12,650 --> 00:11:15,860 >> Więc następna linia, jak jesteście prawdopodobnie zna, jest to 238 00:11:15,860 --> 00:11:20,070 Stan sprawdzając, czy mam wszedł w linii poleceń. 239 00:11:20,070 --> 00:11:22,140 Oraz do i, co jest druga części, które robi? 240 00:11:22,140 --> 00:11:23,457 Co to jest na i? 241 00:11:23,457 --> 00:11:24,950 >> STUDENT: Zmiana na liczbę całkowitą. 242 00:11:24,950 --> 00:11:25,450 >> JASON Hirschhorn: Przepraszam? 243 00:11:25,450 --> 00:11:27,400 >> Student: To się zmienia Argument do liczby całkowitej. 244 00:11:27,400 --> 00:11:30,890 >> JASON Hirschhorn: Tak się i zmienia Arg V1 z łańcucha do liczby całkowitej. 245 00:11:30,890 --> 00:11:32,140 A następnie co to sprawdzanie? 246 00:11:32,140 --> 00:11:35,414 247 00:11:35,414 --> 00:11:37,112 >> STUDENT: Jeśli jest drugi Argument wiersza poleceń, bok 248 00:11:37,112 --> 00:11:38,100 z uruchomieniem programu. 249 00:11:38,100 --> 00:11:39,460 >> JASON Hirschhorn: A co jest Druga połowa to 250 00:11:39,460 --> 00:11:41,220 Sprawdzenie wyrażenie logiczne? 251 00:11:41,220 --> 00:11:42,540 Ta część tu, do i? 252 00:11:42,540 --> 00:11:44,080 >> STUDENT: Jeśli jest ujemna. 253 00:11:44,080 --> 00:11:45,380 >> JASON Hirschhorn: Upewnienie się, co? 254 00:11:45,380 --> 00:11:47,120 >> STUDENT: upewniając się, że jest rzeczywiście pozytywne. 255 00:11:47,120 --> 00:11:47,650 >> JASON Hirschhorn: Dokładnie. 256 00:11:47,650 --> 00:11:50,600 Ten sprawdza, czy jest to ujemny, a jeśli jest ona ujemna, to 257 00:11:50,600 --> 00:11:53,220 przeczucie następnej linii potęgę być mi krzyczeć na użytkownika. 258 00:11:53,220 --> 00:11:55,930 Więc hit końca, aby wykonać tę linię. 259 00:11:55,930 --> 00:11:59,925 Nie widzimy, że linia, która wy może spodziewał się wrzask na 260 00:11:59,925 --> 00:12:03,030 użytkownika, a następnie wraca, bo linia ta nie wykonuje. 261 00:12:03,030 --> 00:12:03,840 Wszedłem 3. 262 00:12:03,840 --> 00:12:06,860 Więc nie, w rzeczywistości, wpisz dwa polecenia Argumenty wiersza, i 3 jest 263 00:12:06,860 --> 00:12:07,610 większa niż zero. 264 00:12:07,610 --> 00:12:09,950 Więc widzieliśmy ten wiersz, to wykonywane, ale nie krok 265 00:12:09,950 --> 00:12:11,300 wewnątrz jeśli warunek. 266 00:12:11,300 --> 00:12:17,060 >> Więc teraz, następne, widzę mam ustawienie klawisz int równa się i arg v1. 267 00:12:17,060 --> 00:12:18,840 Tak, że to ja tworząc klucz zmienny. 268 00:12:18,840 --> 00:12:22,450 Więc jeśli mogę wydrukować klucz teraz, bo że pozwala zobaczyć 269 00:12:22,450 --> 00:12:26,040 wartość wewnątrz zmiennej, Kluczem jest równa 47. 270 00:12:26,040 --> 00:12:28,810 To dziwne, ale oczywiście, to dlatego, że nie mają 271 00:12:28,810 --> 00:12:30,490 zrealizowane jeszcze tego wiersza. 272 00:12:30,490 --> 00:12:35,880 Więc teraz, jeśli hit n, wykonać tę linię, i zrobić przycisk drukowania, klucz będzie równa 3, 273 00:12:35,880 --> 00:12:37,740 co jest, co spodziewamy się równać. 274 00:12:37,740 --> 00:12:41,170 >> Więc jeszcze raz, w GDB, linii, którą zobaczyć, że nie zostały jeszcze zrealizowane. 275 00:12:41,170 --> 00:12:44,850 Musisz trafić N lub S lub numer innych poleceń do rzeczywistości 276 00:12:44,850 --> 00:12:46,610 wykonanie tej linii. 277 00:12:46,610 --> 00:12:47,380 Klawisz Print. 278 00:12:47,380 --> 00:12:48,280 Kluczowe jest przy 3. 279 00:12:48,280 --> 00:12:49,750 Tak daleko, tak dobrze. 280 00:12:49,750 --> 00:12:51,000 Ciąg jest zwykły tekst. 281 00:12:51,000 --> 00:12:52,270 Miejmy wykonać tę linię. 282 00:12:52,270 --> 00:12:53,970 Dostaję ciąg od użytkownika. 283 00:12:53,970 --> 00:12:58,690 >> Zobaczmy w czek 50, I Wprowadź barfoo wszystkie czapki, tak 284 00:12:58,690 --> 00:13:01,330 to co ja wprowadzić. 285 00:13:01,330 --> 00:13:07,300 Gdybym teraz wydrukować zwykły tekst. 286 00:13:07,300 --> 00:13:08,610 Zobaczysz, że jest równy ciąg. 287 00:13:08,610 --> 00:13:11,100 To daje mi jakieś inne dziwne szesnastkowy numer, ale to się dzieje w 288 00:13:11,100 --> 00:13:13,620 Fakt, że mój łańcuch jest barfoo. 289 00:13:13,620 --> 00:13:19,308 Gdybym chciał zobaczyć, co wyniosło na klucz ten punkt, w jaki sposób mogę sprawdzić klucz? 290 00:13:19,308 --> 00:13:20,710 >> STUDENT: klucz do druku. 291 00:13:20,710 --> 00:13:22,010 >> JASON Hirschhorn: klawisz Drukuj, dokładnie. 292 00:13:22,010 --> 00:13:23,260 I rzeczywiście, jest to skrót. 293 00:13:23,260 --> 00:13:25,910 Jeśli znudzi się pisanie drukiem, można po prostu wpisać p. 294 00:13:25,910 --> 00:13:28,340 Więc kluczem p robi samo dokładne. 295 00:13:28,340 --> 00:13:29,730 I znowu, widzę, że jest równa 3. 296 00:13:29,730 --> 00:13:34,760 >> Gdybym chciał się dowiedzieć, co zarówno klucz i barfoo wynosiła jednocześnie 297 00:13:34,760 --> 00:13:37,215 ale byłem zmęczony wpisując każdy jeden indywidualnie, ja 298 00:13:37,215 --> 00:13:38,590 może wpisać informacji mieszkańców. 299 00:13:38,590 --> 00:13:41,170 To daje mi klucz równa się 3. 300 00:13:41,170 --> 00:13:42,500 Zwykły tekst równa barfoo. 301 00:13:42,500 --> 00:13:45,265 To również daje mi te dwie dziwne rzeczy w górę, to zmienne i oraz 302 00:13:45,265 --> 00:13:46,590 ta zmienna n. 303 00:13:46,590 --> 00:13:48,460 >> Te są faktycznie istniejące w moim programie głównym. 304 00:13:48,460 --> 00:13:51,280 Nie spotkałem ich jeszcze, ale jako wstępne, te 305 00:13:51,280 --> 00:13:52,880 istnieją w moim pętli. 306 00:13:52,880 --> 00:13:55,360 Więc teraz, że równa jakiś dziwny numery, ponieważ nie było 307 00:13:55,360 --> 00:13:58,300 jeszcze zainicjowany, ale nadal istnieją w pamięci, więc oni po prostu ustawić 308 00:13:58,300 --> 00:14:00,220 do pewnej wartości śmieci. 309 00:14:00,220 --> 00:14:02,890 Ale rozumiem, klucz zwykły tekst tutaj. 310 00:14:02,890 --> 00:14:06,390 >> Więc mam zamiar wykonać tę linię, linia 34, na pętli. 311 00:14:06,390 --> 00:14:08,220 Jedziemy, aby przejść do do pętli przez naciśnięcie n. 312 00:14:08,220 --> 00:14:10,050 A my jesteśmy w środku pętli. 313 00:14:10,050 --> 00:14:11,360 Jesteśmy na naszej pierwszej kontroli. 314 00:14:11,360 --> 00:14:14,300 I znowu, to powinno wyglądać jakby znajomo, bo to było 315 00:14:14,300 --> 00:14:18,080 Program Cezar, który został napisany, ale ponownie, ma jakiś błąd. 316 00:14:18,080 --> 00:14:21,940 >> A teraz, jeśli mam informacji mieszkańców, bo jestem wewnątrz, że na pętli, zobaczysz 317 00:14:21,940 --> 00:14:23,900 że jest równy zeru, jak oczekujemy. 318 00:14:23,900 --> 00:14:26,820 To, co możemy ustawić go i zainicjowany to w pętli for. 319 00:14:26,820 --> 00:14:27,560 n wynosi 6. 320 00:14:27,560 --> 00:14:30,700 Że również sens, ponieważ ustawiona to do strlen zwykłego tekstu. 321 00:14:30,700 --> 00:14:34,270 Tak lubię robić informacji miejscowych lub wydrukować do zmiennej często, aby upewnić się, że 322 00:14:34,270 --> 00:14:36,370 wszystko jest zawsze to, co Spodziewam się, że aby dorównać. 323 00:14:36,370 --> 00:14:39,800 W tym przypadku, wszystko co się spodziewać, że na równi. 324 00:14:39,800 --> 00:14:41,850 >> Zacznijmy więc poruszanie się to dla pętli. 325 00:14:41,850 --> 00:14:45,715 Jestem na linii jest linia 36, ​​jeśli zwykły Tekst który jest większy niż a zwykły 326 00:14:45,715 --> 00:14:48,540 Tekst i jest mniejsze niż lub równe z. 327 00:14:48,540 --> 00:14:51,880 Wiem, że mój problem nie jest z moja pierwsza list, to z drugiej litery. 328 00:14:51,880 --> 00:14:56,290 Jeśli spojrzymy na Wyjazd 50, B idzie do e grzywny. 329 00:14:56,290 --> 00:14:59,010 Biorę A i pozostawienie go jako , nie zmieniając go do D. So 330 00:14:59,010 --> 00:15:00,200 coś jest nie tak z Drugi list. 331 00:15:00,200 --> 00:15:01,640 Więc mam zamiar przenieść nie w drugim. 332 00:15:01,640 --> 00:15:06,030 >> Ale gdybym chciał sprawdzić, co zwykły Tekst i wyniosła w tym zwłaszcza 333 00:15:06,030 --> 00:15:07,760 przypadek, myślę, że powinno być to, co? 334 00:15:07,760 --> 00:15:10,980 Co należy zwykły tekst i równe w tym Pierwsza runda za pośrednictwem pętli for? 335 00:15:10,980 --> 00:15:14,046 336 00:15:14,046 --> 00:15:15,110 >> STUDENT: Zero? 337 00:15:15,110 --> 00:15:16,510 >> JASON Hirschhorn: Zwykły tekst z I? 338 00:15:16,510 --> 00:15:21,180 Tak powinno być stolicą B. I, oczywiście, jest równa zeru, ale czysty tekst 339 00:15:21,180 --> 00:15:25,600 Uchwyt Uchwyt zamknięty równa zera B bo struny, jak widzieliśmy w zeszłym tygodniu, 340 00:15:25,600 --> 00:15:28,650 jest tablica, więc dostajemy Pierwszy znak od tego. 341 00:15:28,650 --> 00:15:34,960 Więc jeszcze raz, jeśli wydrukowane zwykły tekst I, I mają w rzeczywistości uzyskać znak 342 00:15:34,960 --> 00:15:36,560 B. I to jest miłe, prawda? 343 00:15:36,560 --> 00:15:40,380 I w rzeczywistości nie mają zwykłego tekstu I. To nie jest jedna ze zmiennych ustawić 344 00:15:40,380 --> 00:15:42,950 lub zainicjowany, ale można drukować się całe mnóstwo rzeczy, 345 00:15:42,950 --> 00:15:45,640 jeśli chcesz. 346 00:15:45,640 --> 00:15:47,340 >> Ale przejdźmy przez. 347 00:15:47,340 --> 00:15:50,050 Jeżeli tekst jawny I jest większa niż A i tekstowy i jest mniejsze niż lub równe 348 00:15:50,050 --> 00:15:53,290 Z, który wyraźnie jest prawdą, ponieważ mamy B. Kapitał Zamierzam uruchomić 349 00:15:53,290 --> 00:15:54,230 niektóre komendy na nim. 350 00:15:54,230 --> 00:15:58,530 Widzieliśmy, że matematyki w zeszłym tygodniu, więc będziemy przyjąć za pewnik, że to działa 351 00:15:58,530 --> 00:16:00,900 prawo zgodnie Sprawdź 50. 352 00:16:00,900 --> 00:16:03,720 >> Te nawiasy klamrowe, pierwszy wykazały, że byłem wyjściu, jeśli 353 00:16:03,720 --> 00:16:07,030 Stan, drugi wykazały że mam wyjście dla pętli. 354 00:16:07,030 --> 00:16:10,400 A więc teraz, kiedy uderzył Dalej, zobaczymy jesteśmy z powrotem na pętli ponownie. 355 00:16:10,400 --> 00:16:11,970 Jedziemy przez do pętli ponownie. 356 00:16:11,970 --> 00:16:18,110 Niech rzeczywiście krok w sekundę iteracji pętli i rodzaju 357 00:16:18,110 --> 00:16:20,520 informacji miejscowi. 358 00:16:20,520 --> 00:16:22,190 >> Więc jesteśmy w drugiej iteracji naszej pętli for. 359 00:16:22,190 --> 00:16:24,530 I wynosi 1, co oczekujemy. 360 00:16:24,530 --> 00:16:26,650 N równa się 6, które oczekujemy. 361 00:16:26,650 --> 00:16:28,810 Kluczem jest równe 3, której oczekujemy. 362 00:16:28,810 --> 00:16:32,625 I zwykły tekst, zobaczysz, jest równa EARFOO teraz, już, bo nie barfoo 363 00:16:32,625 --> 00:16:37,930 w poprzednim iteracji B był zmienił się w stolicy E. Więc jesteśmy o 364 00:16:37,930 --> 00:16:40,040 na ten problem, więc to gdzie będziemy 365 00:16:40,040 --> 00:16:41,130 nurkować do debugowania. 366 00:16:41,130 --> 00:16:43,365 Ale czy ktoś ma jakieś pytania o tym, co zrobiliśmy do tej pory? 367 00:16:43,365 --> 00:16:46,770 368 00:16:46,770 --> 00:16:47,910 Fantastyczne. 369 00:16:47,910 --> 00:16:52,710 >> Więc jesteśmy o tym, czy do wykonania Stan, wspornik tekstowy Zamknąłem 370 00:16:52,710 --> 00:16:57,500 Uchwyt większa niż A i zwykły tekst I mniejsza lub równa Z. Jednak zanim 371 00:16:57,500 --> 00:17:00,450 Ja się w to zagłębiał, bo to jest, gdy Wiem, że mój błąd jest, chcę zwrócić 372 00:17:00,450 --> 00:17:06,859 z prostym tekstem I. Tak postawmy wydruk. 373 00:17:06,859 --> 00:17:12,020 To nie równa się charakterem, tak aby wydaje się tak daleko, wszystko jest dobrze i dobrze. 374 00:17:12,020 --> 00:17:14,740 >> Więc oczekiwać tej linii na mojej logiki, linia ta powinna być prawda. 375 00:17:14,740 --> 00:17:16,099 To jest wielka litera. 376 00:17:16,099 --> 00:17:20,599 Ale gdybym hit n, zdajemy sobie sprawę, że ten linii, w rzeczywistości, nie wykonać. 377 00:17:20,599 --> 00:17:22,609 Skoczyłem do if. 378 00:17:22,609 --> 00:17:25,460 Dlaczego to się stało? 379 00:17:25,460 --> 00:17:27,480 >> STUDENT: Bo masz swój stan zwykłego tekstu jest większa 380 00:17:27,480 --> 00:17:29,130 ni, jest równy lub większy niż. 381 00:17:29,130 --> 00:17:32,260 >> JASON Hirschhorn: Więc miałem zwykłego tekstu I jest większa od nie większej 382 00:17:32,260 --> 00:17:32,850 niż lub równe. 383 00:17:32,850 --> 00:17:38,130 Tak wyraźnie, kapitał nie wyzwalać to, czy warunek, a my 384 00:17:38,130 --> 00:17:40,520 Nie wchodzić do niego, a my nie niezbędne zmiany. 385 00:17:40,520 --> 00:17:41,360 Tak, to jest to, rzeczywiście. 386 00:17:41,360 --> 00:17:42,920 Pomyślałem, mój błąd. 387 00:17:42,920 --> 00:17:46,775 Mogę iść z powrotem w moim pliku źródłowego, zmienić i zaktualizować go i 388 00:17:46,775 --> 00:17:47,855 uruchomić Sprawdź 50 ponownie. 389 00:17:47,855 --> 00:17:52,590 >> Ale zobaczymy, pedagogika jest tylko dla dobra, jeśli nie poddawać się. 390 00:17:52,590 --> 00:17:59,580 Indziej, jeśli nie wykonuje albo, ale co zamiast równa jest polecenie 391 00:17:59,580 --> 00:18:00,500 nie ulega zmianie. 392 00:18:00,500 --> 00:18:04,840 Więc to nie jest w ogóle zmieniło, a jeśli wydrukować zwykły tekst tutaj, zobaczymy dzieje 393 00:18:04,840 --> 00:18:08,250 przez to pętla w rezultacie nie istocie zmiany tego drugiego znaku w ogóle. 394 00:18:08,250 --> 00:18:09,600 To wciąż kapitał A. 395 00:18:09,600 --> 00:18:12,690 >> Więc znowu, my debugowany nasz błąd. 396 00:18:12,690 --> 00:18:17,380 Zdaliśmy sobie sprawę, że nie było niektóre logiki brakuje. 397 00:18:17,380 --> 00:18:20,590 A my debugowane go z wyprzedzeniem przed wykonywaniem tej linii, 398 00:18:20,590 --> 00:18:24,320 ale zauważyłeś miał po prostu naciśnij Dalej i przejść do tego jeszcze, jeśli, 399 00:18:24,320 --> 00:18:26,710 oznacza to, że jeśli warunek Nie było to prawdą. 400 00:18:26,710 --> 00:18:29,550 We nie w rzeczywistości uzyskać Wynik spodziewaliśmy. 401 00:18:29,550 --> 00:18:33,240 Tak więc możemy być poproszony, miał nie był tak bystry, by spojrzeć na 402 00:18:33,240 --> 00:18:38,510 że jeśli warunek i sprawdzić, czy w rzeczywistości, nasz stan należy ocenić na 403 00:18:38,510 --> 00:18:41,150 prawda w obecnym kontekście. 404 00:18:41,150 --> 00:18:42,880 >> To wszystko na debugowanie tego programu. 405 00:18:42,880 --> 00:18:45,340 Czy ktoś ma jakieś pytania? 406 00:18:45,340 --> 00:18:50,486 Jakie polecenie mogłem trafić rzucić GDB? 407 00:18:50,486 --> 00:18:53,900 Q. A potem będę się monit, wyjdz? 408 00:18:53,900 --> 00:18:54,390 Tak lub nie. 409 00:18:54,390 --> 00:18:58,440 Uderzę tak, a ja nie rzucić GDB. 410 00:18:58,440 --> 00:19:00,860 >> Więc to było szybkie podkład do GDB. 411 00:19:00,860 --> 00:19:03,430 Faktycznie, w rzeczywistej sytuacji, Zrobiłem to w godzinach pracy. 412 00:19:03,430 --> 00:19:06,710 I GDBed dokładnie ten program na godziny pracy z uczniem. 413 00:19:06,710 --> 00:19:12,410 I jeśli wrócimy do poleceń widzieliśmy przed wykorzystaliśmy przerwę main, pierwszy 414 00:19:12,410 --> 00:19:13,190 co zrobiliśmy. 415 00:19:13,190 --> 00:19:16,060 Użyliśmy bieg z argumentów wiersza poleceń, Druga rzecz, którą zrobił. 416 00:19:16,060 --> 00:19:18,520 Użyliśmy obok dużo, aby przejść nam przez linie. 417 00:19:18,520 --> 00:19:20,310 I znowu, wersja krótka z następnym jest n. 418 00:19:20,310 --> 00:19:22,920 To w nawiasach w kolorze szarym na slajdzie. 419 00:19:22,920 --> 00:19:28,590 >> Nie korzystaliśmy krok, ale nie koniecznie w tym przypadku. 420 00:19:28,590 --> 00:19:32,150 Ale możemy używać go w trochę później dzisiaj, gdybyśmy debugowania, dla 421 00:19:32,150 --> 00:19:36,500 przykład, wyszukiwanie binarne binarny gdy wyszukiwarka nazywa się oddzielne 422 00:19:36,500 --> 00:19:38,200 ale tam jest funkcja jakiś błąd z nim. 423 00:19:38,200 --> 00:19:40,440 Zamierzamy chcą wejść do wezwanie do poszukiwania binarnego i 424 00:19:40,440 --> 00:19:41,840 faktycznie debugowania. 425 00:19:41,840 --> 00:19:45,130 Lista nie używać albo dlatego, że mieliśmy dobre poczucie naszego kodu, ale jeśli 426 00:19:45,130 --> 00:19:48,420 chciał zorientować się, co kod było wokół, może po prostu użyć listy. 427 00:19:48,420 --> 00:19:50,310 >> Wydrukuj użyliśmy, informacji miejscowych użyliśmy. 428 00:19:50,310 --> 00:19:53,260 Nadal nie muszą korzystać z tego przypadek, ani nie musimy użyć 429 00:19:53,260 --> 00:19:55,060 wyłączyć, ale my korzystaliśmy rzucić. 430 00:19:55,060 --> 00:19:57,850 Ponownie, te 10 rozkazów praktykować je. 431 00:19:57,850 --> 00:20:00,770 Jeśli rozumiesz tych 10 poleceń, powinien być ustawiony na debugowanie dowolny 432 00:20:00,770 --> 00:20:02,525 problem z GDB. 433 00:20:02,525 --> 00:20:05,230 434 00:20:05,230 --> 00:20:08,420 >> Więc mamy zamiar iść dalej, znowu do Sedno sekcji dziś będzie nad 435 00:20:08,420 --> 00:20:09,720 to sortowanie i wyszukiwanie algorytmy. 436 00:20:09,720 --> 00:20:14,075 Zanim to zrobimy tak, ponownie, żadnych pytań, komentarze, obawy o GDB? 437 00:20:14,075 --> 00:20:16,750 438 00:20:16,750 --> 00:20:20,960 Tak jest u każdego będzie korzystać GDB zamiast printf? 439 00:20:20,960 --> 00:20:24,550 Więc wszyscy, dla dobra wieczne czasy, w wszyscy kiwając głowa ich prawo 440 00:20:24,550 --> 00:20:27,400 teraz, więc do zobaczenia w godzinach pracy i wszystkich was TFS i zobacz 441 00:20:27,400 --> 00:20:29,460 oni mówią, pokaż mi, jak używać GDB, a będziesz w stanie 442 00:20:29,460 --> 00:20:31,240 , aby pokazać im, prawda? 443 00:20:31,240 --> 00:20:31,760 Rodzaj? 444 00:20:31,760 --> 00:20:32,640 Być może z nadzieją. 445 00:20:32,640 --> 00:20:33,670 Fajne. 446 00:20:33,670 --> 00:20:35,790 >> Więc mamy zamiar przenieść się do sortowania i wyszukiwania. 447 00:20:35,790 --> 00:20:40,710 Zobaczysz mam listę już posortowane dla nas, ale to nie będzie 448 00:20:40,710 --> 00:20:42,220 Sprawa będzie zawsze. 449 00:20:42,220 --> 00:20:49,170 Tak w specyfikacji problemu ustawić Problem ustawić trzy, masz szorty 450 00:20:49,170 --> 00:20:51,410 które można oglądać, i faktycznie prosi, by oglądać te szorty. 451 00:20:51,410 --> 00:20:55,090 Także w wykładzie w zeszłym tygodniu pojechaliśmy Wiele z tych algorytmów, więc jestem 452 00:20:55,090 --> 00:20:59,150 Nie zamierzam spędzić czas w klasie dzieje kółko tych algorytmów lub rysunku 453 00:20:59,150 --> 00:21:01,130 zdjęcia, jak te algorytmy pracy. 454 00:21:01,130 --> 00:21:04,030 Ponownie, że informacje można ponownie oglądać Wykład, lub że informacje 455 00:21:04,030 --> 00:21:08,570 jest zrobione doskonale na szorty na te pytania, wszystkie 456 00:21:08,570 --> 00:21:10,920 które dostępne są w cs50.net. 457 00:21:10,920 --> 00:21:14,200 >> Więc zamiast tego, co mamy zamiar zrobić, to napisać te programy. 458 00:21:14,200 --> 00:21:18,190 Mamy poczucie, mentalny model, jak pracują, a więc to, co mamy zamiar 459 00:21:18,190 --> 00:21:20,210 zrobić, to zakodować je za prawdziwe. 460 00:21:20,210 --> 00:21:23,430 Zamierzamy włączyć ten model mentalny, że obraz, jeśli chcesz, do 461 00:21:23,430 --> 00:21:24,960 rzeczywisty kod. 462 00:21:24,960 --> 00:21:28,460 A jeśli były trochę mylić lub zamglone modelu mentalnego, całkowicie 463 00:21:28,460 --> 00:21:28,770 rozumiem. 464 00:21:28,770 --> 00:21:30,540 >> Nie jesteśmy rzeczywiście będzie skok do kodu razu. 465 00:21:30,540 --> 00:21:36,030 Tak więc, ta szybka w tym slajdzie pyta do kodu binarnego wyszukiwania, a 466 00:21:36,030 --> 00:21:39,470 faktycznie, iteracyjny wersja wyszukiwanie binarne, pierwszą rzeczą, jaką 467 00:21:39,470 --> 00:21:42,370 Naprawdę chcesz, aby zrobić to napisać Pseudokod. 468 00:21:42,370 --> 00:21:47,020 Więc trzeba to psychicznego modelu , jak binarny prace wyszukiwania. 469 00:21:47,020 --> 00:21:50,060 Wyjmij arkusz papieru, jeśli masz jedna łatwo dostępna, lub otworzyć 470 00:21:50,060 --> 00:21:52,520 edytor tekstu, i chciałbym wszyscy pisać. 471 00:21:52,520 --> 00:21:57,470 Weź cztery minuty napisać pseudokod dla wyszukiwania binarnego. 472 00:21:57,470 --> 00:21:58,990 >> Ponownie, myślę o tym modelu mentalnego. 473 00:21:58,990 --> 00:22:01,980 Przyjdę około razie pytań i możemy narysować obraz na zewnątrz. 474 00:22:01,980 --> 00:22:06,220 Ale najpierw, zanim zaczniemy programowanie, Chciałbym napisać 475 00:22:06,220 --> 00:22:09,920 pseudokod dla wyszukiwania binarnego więc kiedy nurkować w, mamy jakiś kierunek, jak 476 00:22:09,920 --> 00:22:12,110 gdzie powinniśmy udać. 477 00:22:12,110 --> 00:22:15,330 >> Student: Czy możemy założyć, tablicę wartości otrzymujemy już posortowane? 478 00:22:15,330 --> 00:22:17,960 >> JASON Hirschhorn: Tak dla wyszukiwania binarnego do pracy - doskonałe pytanie - jesteś 479 00:22:17,960 --> 00:22:20,970 wziąć w sortowane Tablica wartości. 480 00:22:20,970 --> 00:22:22,290 Więc założyć, to będzie działać. 481 00:22:22,290 --> 00:22:23,480 Wrócimy do tego slajdu. 482 00:22:23,480 --> 00:22:27,220 Zobaczysz w fioletowym funkcji deklaracja jest bool binary_search int 483 00:22:27,220 --> 00:22:29,230 wartość, int wartości, int n. 484 00:22:29,230 --> 00:22:32,910 Powinno to wyglądać znajomo, jeśli masz już zbliżył lub zdobyć swoje 485 00:22:32,910 --> 00:22:34,580 ręce brudne z zestawem problem. 486 00:22:34,580 --> 00:22:35,910 >> Ale to jest twoja deklaracja funkcji. 487 00:22:35,910 --> 00:22:39,080 Ponownie, nie trzeba się martwić o że dużo w tej chwili. 488 00:22:39,080 --> 00:22:43,660 Co naprawdę chcę ci zrobić, to wziąć czterech minut pseudokod dwójkowy 489 00:22:43,660 --> 00:22:46,380 sprawdzić, a potem pójdziemy na które jako grupy. 490 00:22:46,380 --> 00:22:47,500 I będę się wokół. 491 00:22:47,500 --> 00:22:49,590 Jeśli masz pytania, prosimy swobodnie podnieść rękę. 492 00:22:49,590 --> 00:25:07,110 493 00:25:07,110 --> 00:25:09,680 >> Dlaczego nie wziąć dwie minuty , aby zakończyć się w Pseudokod? 494 00:25:09,680 --> 00:25:13,690 495 00:25:13,690 --> 00:25:15,820 Wiem, że może się to wydawać śmieszne, że wydajemy tak dużo czasu na 496 00:25:15,820 --> 00:25:20,350 coś, co w rzeczywistości nie jest nawet w C, ale przede wszystkim dla nich więcej 497 00:25:20,350 --> 00:25:24,030 Problem trudnych algorytmów i Zestawy, które mamy, aby dowiedzieć się, 498 00:25:24,030 --> 00:25:27,210 począwszy pseudokod nie martwiąc o składni, po prostu martwić się o 499 00:25:27,210 --> 00:25:29,150 logika, jest bardzo pomocny. 500 00:25:29,150 --> 00:25:32,720 I w ten sposób, nie jesteś rozwiązywania dwa niezwykle trudne problemy na raz. 501 00:25:32,720 --> 00:25:35,390 Jesteś po prostu skupienie się na logice, i następnie przejść do składni. 502 00:25:35,390 --> 00:25:59,960 503 00:25:59,960 --> 00:26:01,385 >> OK. 504 00:26:01,385 --> 00:26:03,680 Zacznijmy przechodzi pseudokod. 505 00:26:03,680 --> 00:26:05,380 Pisałem tutaj, binarny szukaj pseudokod. 506 00:26:05,380 --> 00:26:07,360 Będziemy pisać to na Zarządu łącznie. 507 00:26:07,360 --> 00:26:10,040 Albo ja napiszę to i dasz ja muszę się monity. 508 00:26:10,040 --> 00:26:15,010 Więc może ktoś mi dać pierwszy linia Pseudokod ty 509 00:26:15,010 --> 00:26:18,350 napisał do wyszukiwania binarnego? 510 00:26:18,350 --> 00:26:20,258 Tak, Annie? 511 00:26:20,258 --> 00:26:22,698 >> STUDENT: Chociaż długość Lista jest większa niż zero. 512 00:26:22,698 --> 00:26:26,114 513 00:26:26,114 --> 00:26:34,880 >> JASON Hirschhorn: Chociaż długość z listy większa od zera. 514 00:26:34,880 --> 00:26:38,810 I znowu widzimy, niektóre patrząc C składniowe rzeczy tutaj. 515 00:26:38,810 --> 00:26:41,550 Ale większość jest w języku angielskim. 516 00:26:41,550 --> 00:26:43,980 Czy ktoś ma jakiś wiersz włożyli zanim w ich pseudo-kodu? 517 00:26:43,980 --> 00:26:47,280 518 00:26:47,280 --> 00:26:50,210 >> STUDENT: Pobierz tablicę o sortowanie liczb. 519 00:26:50,210 --> 00:26:53,600 >> JASON Hirschhorn: Napisałeś "get Tablica z numerami segregowanych. "Za 520 00:26:53,600 --> 00:26:56,140 deklaracja funkcji, będziemy przechodzącej tablicę posortowanych numerów. 521 00:26:56,140 --> 00:26:57,280 >> STUDENT: [niesłyszalne]. 522 00:26:57,280 --> 00:26:59,030 >> JASON Hirschhorn: Tak będziemy mieć. 523 00:26:59,030 --> 00:27:01,820 Ale tak, jeśli nie mieliśmy, my będzie trzeba posortować naszą tablicę 524 00:27:01,820 --> 00:27:04,850 numery, ponieważ wyszukiwanie binarne działa tylko na sortowanie tablic. 525 00:27:04,850 --> 00:27:11,300 Tak więc, podczas gdy długość listy jest równa zeru, jestem zamiar umieścić w niektórych klamrach 526 00:27:11,300 --> 00:27:15,420 aby wyglądał trochę bardziej jak C. Ale jednocześnie wydaje się na mapie 527 00:27:15,420 --> 00:27:19,550 podczas pętli, więc wewnątrz tej chwili pętla co musimy 528 00:27:19,550 --> 00:27:22,000 zrobić dla wyszukiwania binarnego? 529 00:27:22,000 --> 00:27:25,530 >> Ktoś, kto mnie nie podano odpowiedzieć jeszcze, ale kto to napisał? 530 00:27:25,530 --> 00:27:31,750 531 00:27:31,750 --> 00:27:33,320 >> STUDENT: Idź na środku listy. 532 00:27:33,320 --> 00:27:33,980 >> JASON Hirschhorn: Tom. 533 00:27:33,980 --> 00:27:35,230 Przejdź do środka listy. 534 00:27:35,230 --> 00:27:43,290 535 00:27:43,290 --> 00:27:45,530 I pytanie obserwacji, co robimy raz jesteśmy na 536 00:27:45,530 --> 00:27:46,870 środek liście? 537 00:27:46,870 --> 00:27:49,310 >> Student: Czy czek czy to Numer szukasz. 538 00:27:49,310 --> 00:27:50,120 >> JASON Hirschhorn: Doskonały. 539 00:27:50,120 --> 00:28:05,500 Idź na środku listy i sprawdzić jeżeli nasza wartość jest tam - 540 00:28:05,500 --> 00:28:06,515 fantastyczne. 541 00:28:06,515 --> 00:28:10,460 Czy ktoś ma coś jeszcze , że było inaczej, niż jest? 542 00:28:10,460 --> 00:28:11,210 To się dokładnie zgadza. 543 00:28:11,210 --> 00:28:13,800 >> Pierwszą rzeczą, jaką możemy zrobić w poszukiwaniu binarnym jest iść do środka listy i 544 00:28:13,800 --> 00:28:15,870 sprawdzić, czy nasza wartość ma. 545 00:28:15,870 --> 00:28:19,682 Zakładam więc, jeśli nasza wartość jest nie, co robimy? 546 00:28:19,682 --> 00:28:21,610 >> STUDENT: Wracamy do zera [niesłyszalne]. 547 00:28:21,610 --> 00:28:23,400 >> JASON Hirschhorn: Tak, jeśli nasze wartość jest tam, znaleźliśmy go. 548 00:28:23,400 --> 00:28:27,950 Tak więc możemy powiedzieć, w jakiś sposób, to jednak Funkcja jest określona, ​​możemy poinformować użytkownika 549 00:28:27,950 --> 00:28:28,520 okazało się, że. 550 00:28:28,520 --> 00:28:30,950 Jeśli go tam nie ma, jednak, że jest gdzie ten dostaje trudne. 551 00:28:30,950 --> 00:28:35,120 Więc jeśli go tam nie ma, ktoś, kto Pracowałem na poszukiwania binarnego lub 552 00:28:35,120 --> 00:28:36,830 Teraz jest pomysł, co zrobimy? 553 00:28:36,830 --> 00:28:37,830 >> STUDENT: Pytanie. 554 00:28:37,830 --> 00:28:38,100 >> JASON Hirschhorn: Tak? 555 00:28:38,100 --> 00:28:39,920 >> Student: Czy tablica już posortowane? 556 00:28:39,920 --> 00:28:42,200 >> JASON Hirschhorn: Tak, zakładamy tablica jest już posortowana. 557 00:28:42,200 --> 00:28:46,480 >> Uczeń: Tak więc musisz sprawdzić, czy wartość, że widzisz, jest większa niż 558 00:28:46,480 --> 00:28:51,745 wartość, którą chcesz, możesz przejść do środka drugiej połowie. 559 00:28:51,745 --> 00:28:54,110 >> JASON Hirschhorn: Więc jeśli środek lista jest większa niż to, co mamy 560 00:28:54,110 --> 00:28:57,440 szukasz, to mamy to, co? 561 00:28:57,440 --> 00:28:58,320 Poruszamy się gdzie? 562 00:28:58,320 --> 00:29:01,400 >> STUDENT: Chcesz, aby przejść do połowa z listy 563 00:29:01,400 --> 00:29:02,780 numery niższe niż. 564 00:29:02,780 --> 00:29:04,460 >> JASON Hirschhorn: Więc będziemy Nazywamy to po lewej. 565 00:29:04,460 --> 00:29:15,435 Więc jeśli środkowa jest większa, możemy sprawdzić lewa połowa listy. 566 00:29:15,435 --> 00:29:20,620 567 00:29:20,620 --> 00:29:22,980 A następnie przez wyszukiwanie, co mam na myśli poszukiwanie? 568 00:29:22,980 --> 00:29:24,010 >> STUDENT: [niesłyszalne]. 569 00:29:24,010 --> 00:29:24,410 >> JASON Hirschhorn: Idziemy do środka. 570 00:29:24,410 --> 00:29:25,740 My rzeczywiście powtórzyć to. 571 00:29:25,740 --> 00:29:29,210 Wracamy za pośrednictwem naszego pętli while. 572 00:29:29,210 --> 00:29:31,480 Dam ci ostatni - 573 00:29:31,480 --> 00:29:39,047 więcej, jeśli środkowy jest mniejszy niż robimy, co robimy tutaj? 574 00:29:39,047 --> 00:29:40,360 >> STUDENT: Idź w prawo. 575 00:29:40,360 --> 00:29:41,610 >> JASON Hirschhorn: Szukaj prawo. 576 00:29:41,610 --> 00:29:47,440 577 00:29:47,440 --> 00:29:51,710 To wygląda dobrze, ale czy ktokolwiek ma coś, co może nam brakować lub 578 00:29:51,710 --> 00:29:53,200 wszystko, co można umieścić w pseudo-kodzie? 579 00:29:53,200 --> 00:29:57,080 580 00:29:57,080 --> 00:29:58,410 Więc to jest to, co mamy do tej pory. 581 00:29:58,410 --> 00:30:00,960 Chociaż długość listy jest większa od zera, mamy zamiar iść 582 00:30:00,960 --> 00:30:03,220 do połowy listy i sprawdzić, czy nasza wartość ma. 583 00:30:03,220 --> 00:30:06,970 >> Jeśli środkowa jest wyższa, będziemy szukaj w lewo, jeszcze gdy środkowa jest 584 00:30:06,970 --> 00:30:09,230 mniej, będziemy szukać prawo. 585 00:30:09,230 --> 00:30:14,430 Więc wszyscy mieliśmy trochę znajomości terminy, których używamy w informatyce 586 00:30:14,430 --> 00:30:15,550 i narzędzia mamy. 587 00:30:15,550 --> 00:30:18,300 Ale można już zauważyć, że byliśmy mówienia w języku angielskim, ale okazało się, 588 00:30:18,300 --> 00:30:24,790 Wiele rzeczy, które wydawały się do mapy, aby narzędzia mamy w naszej kodowania zestawu narzędzi. 589 00:30:24,790 --> 00:30:27,210 Więc tuż nietoperza, nie jesteśmy będzie faktycznie zakodować jeszcze. 590 00:30:27,210 --> 00:30:33,300 >> Co widzimy tutaj, że mapy w języku angielskim na rzeczy, które możemy napisać w C? 591 00:30:33,300 --> 00:30:34,560 >> STUDENT: Podczas. 592 00:30:34,560 --> 00:30:35,320 >> JASON Hirschhorn: Podczas. 593 00:30:35,320 --> 00:30:40,610 Więc to, gdy tu mapy do tego, co? 594 00:30:40,610 --> 00:30:42,630 >> STUDENT: pętla while. 595 00:30:42,630 --> 00:30:43,200 >> JASON Hirschhorn: pętla while? 596 00:30:43,200 --> 00:30:44,540 Lub prawdopodobnie, bardziej ogólnie, pętla. 597 00:30:44,540 --> 00:30:46,260 Chcemy zrobić coś w kółko. 598 00:30:46,260 --> 00:30:49,050 Więc idziemy do kodu pętli. 599 00:30:49,050 --> 00:30:51,640 I już wiemy, bo zrobiliśmy to kilka razy, a my 600 00:30:51,640 --> 00:30:54,180 mają mnóstwo przykładów tam, jak właściwie napisać 601 00:30:54,180 --> 00:30:55,310 wskaźnik ten dla pętli. 602 00:30:55,310 --> 00:30:56,160 Tak że powinno być dość proste. 603 00:30:56,160 --> 00:30:58,070 Powinniśmy być w stanie dostać się, że zaczęła dość szybko. 604 00:30:58,070 --> 00:31:01,830 >> Co jeszcze zobaczymy w tutaj? 605 00:31:01,830 --> 00:31:06,820 Jakie inne konstrukcje składnie, rzeczy że jesteśmy zaznajomieni ze w C, mamy 606 00:31:06,820 --> 00:31:09,790 już mają poczucie Based od słów użyliśmy? 607 00:31:09,790 --> 00:31:10,830 Tak, Anno? 608 00:31:10,830 --> 00:31:11,360 [Niesłyszalne] 609 00:31:11,360 --> 00:31:12,990 tylko żartowałem. 610 00:31:12,990 --> 00:31:13,540 Anna, śmiało. 611 00:31:13,540 --> 00:31:14,530 >> STUDENT: Jeśli i inne. 612 00:31:14,530 --> 00:31:16,260 >> JASON Hirschhorn: Jeśli i inny - tutaj. 613 00:31:16,260 --> 00:31:18,840 Więc co ci wygląda? 614 00:31:18,840 --> 00:31:20,420 >> STUDENT: jeśli else. 615 00:31:20,420 --> 00:31:21,560 >> JASON Hirschhorn: Tak, warunki, prawda? 616 00:31:21,560 --> 00:31:24,650 Będziemy więc prawdopodobnie trzeba Napisać kilka warunków. 617 00:31:24,650 --> 00:31:31,185 I znowu, choć być może mylące pierwsze, na ogół mają poczucie teraz 618 00:31:31,185 --> 00:31:34,010 z jak napisać warunki i Składnia warunkach. 619 00:31:34,010 --> 00:31:36,850 A jeśli tego nie zrobimy, możemy tylko patrzeć Składnia warunków, wycinania i wklejania 620 00:31:36,850 --> 00:31:39,950 że, ponieważ wiemy, że Potrzebujemy tutaj warunek. 621 00:31:39,950 --> 00:31:44,910 Wszelkie inne rzeczy, widzimy, że na mapie rzeczy może musimy zrobić w C? 622 00:31:44,910 --> 00:31:48,312 623 00:31:48,312 --> 00:31:48,960 Tak, Aleha? 624 00:31:48,960 --> 00:31:50,370 >> Student: To może być oczywiste, tylko o sprawdzenie, czy 625 00:31:50,370 --> 00:31:51,990 wartość jest równa coś. 626 00:31:51,990 --> 00:31:54,578 >> JASON Hirschhorn: Jak więc sprawdzić i - tak, przejdź do połowy listy 627 00:31:54,578 --> 00:31:55,610 i sprawdzić, czy nasza wartość jest tam? 628 00:31:55,610 --> 00:31:56,570 Jak to zrobić w C? 629 00:31:56,570 --> 00:31:58,450 Co jest składnia to? 630 00:31:58,450 --> 00:31:59,235 >> STUDENT: Równa, równa. 631 00:31:59,235 --> 00:32:00,650 >> JASON Hirschhorn: Równa, równa. 632 00:32:00,650 --> 00:32:03,540 Więc ten test prawdopodobnie będzie być równe, równa. 633 00:32:03,540 --> 00:32:04,510 Więc wiemy, że trzeba, że ​​gdzieś. 634 00:32:04,510 --> 00:32:07,510 I rzeczywiście, tylko w pisaniu, widzimy te inne rzeczy. 635 00:32:07,510 --> 00:32:11,400 Mamy zamiar zrobić kilka operatory porównania tam - 636 00:32:11,400 --> 00:32:12,010 fantastyczne. 637 00:32:12,010 --> 00:32:14,980 Tak to faktycznie wygląda, przez i duże, że nie napisałem 638 00:32:14,980 --> 00:32:16,390 Słowo jeszcze o kod C. 639 00:32:16,390 --> 00:32:20,610 Ale dostaliśmy model mentalny dół poprzez wykłady i tych szortów. 640 00:32:20,610 --> 00:32:22,350 >> Pisaliśmy pseudo-kod jako grupa. 641 00:32:22,350 --> 00:32:27,110 I już mamy 80%, jeśli nie 90% z tego, co musimy zrobić. 642 00:32:27,110 --> 00:32:28,550 Teraz musimy tylko kod to, co ponownie jest 643 00:32:28,550 --> 00:32:30,110 nietrywialne problemem do rozwiązania. 644 00:32:30,110 --> 00:32:31,890 Ale przynajmniej utknęliśmy na logice. 645 00:32:31,890 --> 00:32:38,040 Przynajmniej teraz, kiedy jedziemy do godzin pracy biura, Mogę powiedzieć, wiem, co muszę 646 00:32:38,040 --> 00:32:40,160 zrobić, ale można przypomnieć mi składni? 647 00:32:40,160 --> 00:32:42,940 Lub nawet jeśli godziny pracy są zatłoczone, ci Czy Google dla składni, a 648 00:32:42,940 --> 00:32:45,040 niż tkwić na logice. 649 00:32:45,040 --> 00:32:48,570 >> I znów, zamiast próbować rozwiązać logika i składnia wszystkie problemy 650 00:32:48,570 --> 00:32:51,900 jednocześnie jest często znacznie lepiej złamać te dwa trudne problemy od do 651 00:32:51,900 --> 00:32:58,280 Te dwa łatwiejsze i zrobić pseudo-kod, a potem kod w C 652 00:32:58,280 --> 00:33:00,620 Zobaczmy więc, co zrobiłem dla pseudo-kodu przed czasem. 653 00:33:00,620 --> 00:33:04,060 >> Chociaż długość listy jest większa od zera, w środku wygląda 654 00:33:04,060 --> 00:33:05,090 z wykazu. 655 00:33:05,090 --> 00:33:09,610 Jeśli znaleźć numer zwróciło prawda, jeszcze jeśli liczba wyższa, wyszukiwanie w lewo. 656 00:33:09,610 --> 00:33:13,200 Else if numer niższy, wyszukiwania Dobrze, return false. 657 00:33:13,200 --> 00:33:18,710 Tak, że wygląda niemal identycznie, jeśli nie niemal identyczne z tym, co napisał. 658 00:33:18,710 --> 00:33:23,030 Faktycznie, Tom, co powiedział pierwszy, Podaje pola listy i jeśli 659 00:33:23,030 --> 00:33:24,880 liczba znalezionych na dwa sprawozdania jest rzeczywiście to, co zrobiłem. 660 00:33:24,880 --> 00:33:25,507 >> I łączy się je tam. 661 00:33:25,507 --> 00:33:27,100 Powinienem słuchał Ci po raz pierwszy. 662 00:33:27,100 --> 00:33:30,640 Tak, że jest pseudo-kod mamy. 663 00:33:30,640 --> 00:33:35,060 Jeśli chcesz się teraz, przepraszam, przejdź z powrotem do naszego pierwotnego problemu. 664 00:33:35,060 --> 00:33:37,780 Niech kodu binary.c. 665 00:33:37,780 --> 00:33:40,870 Więc wdrożyć wersję iteracyjną wyszukiwanie binarne za pomocą następujących 666 00:33:40,870 --> 00:33:42,420 deklaracja funkcji. 667 00:33:42,420 --> 00:33:44,550 >> I nie trzeba skopiować to w dół jeszcze. 668 00:33:44,550 --> 00:33:49,470 Jestem rzeczywiście otworzy się tu binary.c. 669 00:33:49,470 --> 00:33:52,880 Więc jest deklaracja funkcji w środku ekranu. 670 00:33:52,880 --> 00:33:57,570 A zobaczysz, wziąłem pseudo-kod z moich stron, ale niemal identyczne 671 00:33:57,570 --> 00:33:59,740 do tego, co napisał, i umieścić, że dla Ciebie. 672 00:33:59,740 --> 00:34:06,010 Więc teraz, niech trwać pięć minut do kodu tej funkcji. 673 00:34:06,010 --> 00:34:08,199 >> I znowu, jeśli masz jakiekolwiek pytania, podnieść rękę, daj mi znać, będę 674 00:34:08,199 --> 00:34:08,710 się wokół. 675 00:34:08,710 --> 00:34:09,800 >> STUDENT: [niesłyszalne]. 676 00:34:09,800 --> 00:34:12,380 >> JASON Hirschhorn: Wziąłem więc binarne Wyszukiwanie w definicji 677 00:34:12,380 --> 00:34:14,429 góry, na linii 12. 678 00:34:14,429 --> 00:34:16,429 To, co mam do mojego slajdu. 679 00:34:16,429 --> 00:34:20,940 A potem wszystko to pseudo-kod po prostu skopiować i wkleić ze zjeżdżalnią, 680 00:34:20,940 --> 00:34:22,190 Pseudo-kod slajdów. 681 00:34:22,190 --> 00:35:22,830 682 00:35:22,830 --> 00:35:26,786 Ja wciąż nie słysząc [niesłyszalne]. 683 00:35:26,786 --> 00:37:13,010 684 00:37:13,010 --> 00:37:15,820 >> Więc jeśli masz zakończeniu wdrożenie, chcę to sprawdzić. 685 00:37:15,820 --> 00:37:19,410 Wysłałem e-mail plik helpers.h Ciebie wcześniej w tej klasie. 686 00:37:19,410 --> 00:37:22,360 I to będzie również dostępne w Internecie do pobrania dla osób ogląda 687 00:37:22,360 --> 00:37:24,750 tym razem sekcja opóźnione. 688 00:37:24,750 --> 00:37:29,350 A ja po prostu stosować podział rodzajowy Kod z pset3. 689 00:37:29,350 --> 00:37:34,590 Wziąłem więc find.C, używać pliku helpers.h zamiast pliku helpers.h 690 00:37:34,590 --> 00:37:36,280 , który jest podany w kodzie dystrybucji. 691 00:37:36,280 --> 00:37:39,310 >> I musiałem jeszcze jedną zmianę find.C zamiast po prostu dzwoni 692 00:37:39,310 --> 00:37:42,770 wyszukiwanie, zadzwoń binary_search. 693 00:37:42,770 --> 00:37:49,080 Więc jeśli chcesz, aby przetestować swój kod, wiem, że to jest, jak to zrobić. 694 00:37:49,080 --> 00:37:52,530 W rzeczywistości, kiedy będziemy działa ten kod teraz, po prostu zrobił kopię 695 00:37:52,530 --> 00:37:59,820 mój katalog pset3 znów zamienili się pliki pomocników, a następnie wykonane, że 696 00:37:59,820 --> 00:38:04,695 zmiany w find.C zadzwonić binary_search zamiast po prostu sprawdzić. 697 00:38:04,695 --> 00:40:08,620 698 00:40:08,620 --> 00:40:09,120 >> JASON Hirschhorn: Tak. 699 00:40:09,120 --> 00:40:11,258 Masz pytanie? 700 00:40:11,258 --> 00:40:12,150 >> STUDENT: Nevermind. 701 00:40:12,150 --> 00:40:12,600 >> JASON Hirschhorn: Nie martw się. 702 00:40:12,600 --> 00:40:13,370 Dobrze, zaczynajmy. 703 00:40:13,370 --> 00:40:15,090 Będziemy kodować to jako grupa. 704 00:40:15,090 --> 00:40:16,050 Jedna uwaga. 705 00:40:16,050 --> 00:40:20,600 Ponownie, jest to, że można łatwo zamienione się do problemu ustawić trzy. 706 00:40:20,600 --> 00:40:25,530 Mam plik helpers.h które raczej niż helpers.h mamy podane, 707 00:40:25,530 --> 00:40:28,560 deklaruje binarnego wyszukiwania, bańka sortowania i wyboru Sortuj. 708 00:40:28,560 --> 00:40:37,400 W find.c zauważysz na linii, to, co jest, że linia 68, nazywamy plik binarny 709 00:40:37,400 --> 00:40:39,160 sprawdzić, a nie wyszukiwarek. 710 00:40:39,160 --> 00:40:42,930 Więc jeszcze raz, że jest dostępny kod online lub kod, który jesteś 711 00:40:42,930 --> 00:40:46,590 tworzenie teraz mogą być łatwo zamienione w na p ustaw 3, aby ją sprawdzić. 712 00:40:46,590 --> 00:40:50,620 >> Ale najpierw niech kodu binarnego wyszukiwania. 713 00:40:50,620 --> 00:40:53,690 Nasza deklaracja funkcji, wracamy bool. 714 00:40:53,690 --> 00:40:55,810 Bierzemy całkowitą zwaną wartość. 715 00:40:55,810 --> 00:40:59,285 Bierzemy tablicę liczb całkowitych o nazwie wartości, i bierzemy n będzie 716 00:40:59,285 --> 00:41:00,850 Powierzchnia matrycy. 717 00:41:00,850 --> 00:41:05,640 Na linii 10, tutaj, mam ostry m.in. stdbool.h. 718 00:41:05,640 --> 00:41:07,360 Czy ktoś wie dlaczego, że tam jest? 719 00:41:07,360 --> 00:41:12,180 720 00:41:12,180 --> 00:41:16,600 Więc co to linia kodu zrobić? 721 00:41:16,600 --> 00:41:19,880 >> STUDENT: Pozwala na użyć typu zwracanej bool. 722 00:41:19,880 --> 00:41:20,350 >> JASON Hirschhorn: Dokładnie. 723 00:41:20,350 --> 00:41:22,300 >> Student: A to jest biblioteka, która pozwala korzystania z rodzaju powrotu bool. 724 00:41:22,300 --> 00:41:27,590 >> JASON Hirschhorn: Tak ostre m.in. stdbool.h linia daje mi pewne 725 00:41:27,590 --> 00:41:31,340 definicje i deklaracje na rzeczy że mam prawo do stosowania w 726 00:41:31,340 --> 00:41:32,400 ta biblioteka. 727 00:41:32,400 --> 00:41:36,570 Tak więc wśród tych, mówi, że nie ma Tego rodzaju nazywane bool i może być 728 00:41:36,570 --> 00:41:37,750 prawdziwe lub fałszywe. 729 00:41:37,750 --> 00:41:39,010 Więc to, co robi, że linia. 730 00:41:39,010 --> 00:41:41,680 A jeśli nie mam tej linii, chciałbym kłopoty na piśmie, to 731 00:41:41,680 --> 00:41:43,520 słowo tutaj, bool, właśnie tam. 732 00:41:43,520 --> 00:41:44,140 Dokładnie tak. 733 00:41:44,140 --> 00:41:46,430 Więc trzeba, że ​​w tym kodzie. 734 00:41:46,430 --> 00:41:47,690 OK. 735 00:41:47,690 --> 00:41:51,860 Więc to, ponownie, jest iteracyjny wersja, nie rekurencyjny jeden. 736 00:41:51,860 --> 00:41:53,820 Więc niech nam zacząć. 737 00:41:53,820 --> 00:41:56,200 >> Zacznijmy od tego pierwszego linia kodu pseudo. 738 00:41:56,200 --> 00:41:58,770 I miejmy nadzieję, że będzie - czy nie mam nadzieję. 739 00:41:58,770 --> 00:42:00,530 Mamy zamiar przejść się po pokoju. 740 00:42:00,530 --> 00:42:05,110 Pójdziemy linia po linii, a pomogę można dowiedzieć się, że musimy linii 741 00:42:05,110 --> 00:42:06,310 napisać pierwszy. 742 00:42:06,310 --> 00:42:10,550 Tak więc, podczas gdy długość listy jest większa od zera. 743 00:42:10,550 --> 00:42:12,680 Zacznijmy z przodu. 744 00:42:12,680 --> 00:42:15,190 Co należy napisać wiersz tutaj, w kodzie? 745 00:42:15,190 --> 00:42:19,470 >> STUDENT: Podczas nawias n jest większe niż 0. 746 00:42:19,470 --> 00:42:21,900 >> JASON Hirschhorn: Podczas n jest wielki niż 0. 747 00:42:21,900 --> 00:42:26,550 Tak więc brak jest wielkość listy i sprawdzamy, czy - 748 00:42:26,550 --> 00:42:26,800 >> [GŁOSY wstawienie] 749 00:42:26,800 --> 00:42:27,660 >> JASON Hirschhorn: - Słucham? 750 00:42:27,660 --> 00:42:29,360 >> STUDENT: Skąd wiemy, że n oznacza wielkość listy? 751 00:42:29,360 --> 00:42:29,690 >> JASON Hirschhorn: Przepraszam. 752 00:42:29,690 --> 00:42:34,690 Wg specyfikacji pset, wyszukiwanie Funkcje sortowania i trzeba napisać, 753 00:42:34,690 --> 00:42:36,230 n oznacza wielkość listy. 754 00:42:36,230 --> 00:42:37,710 Zapomniałem wyjaśnić, że tutaj. 755 00:42:37,710 --> 00:42:41,310 Ale tak. n oznacza wielkość lista, w tym przypadku. 756 00:42:41,310 --> 00:42:44,740 Tak więc, gdy n jest większe niż 0. 757 00:42:44,740 --> 00:42:45,580 OK. 758 00:42:45,580 --> 00:42:50,090 Które mogą okazać się nieco problematyczne chociaż, jeśli coś pójdzie dalej. 759 00:42:50,090 --> 00:42:54,510 Ponieważ nadal będziemy wiedzieć wielkość listy przez tę 760 00:42:54,510 --> 00:43:06,640 funkcja, ale powiedzieć, że zacząć z tablicy 5 liczb całkowitych. 761 00:43:06,640 --> 00:43:08,950 I przechodzimy i mamy teraz zmniejszyła go do 762 00:43:08,950 --> 00:43:10,310 Tablica 2 liczb całkowitych. 763 00:43:10,310 --> 00:43:12,160 Który 2 liczby całkowite to jest? 764 00:43:12,160 --> 00:43:15,895 Rozmiar jest 2 teraz, że chcemy patrzeć, ale czego 2 jest to, że? 765 00:43:15,895 --> 00:43:17,720 Czy to ma sens, to pytanie? 766 00:43:17,720 --> 00:43:18,020 >> OK. 767 00:43:18,020 --> 00:43:19,120 Ja to zapytać ponownie. 768 00:43:19,120 --> 00:43:26,640 Więc zacząć od tej tablicy 5 liczbami całkowitymi, a n jest równe 5, prawda? 769 00:43:26,640 --> 00:43:28,050 Będziemy przechodzić przez tutaj. 770 00:43:28,050 --> 00:43:31,560 będziemy prawdopodobnie zmienić rozmiar, Dobra, jak coś pójdzie dalej. 771 00:43:31,560 --> 00:43:32,700 Co jest, co mówimy, że chcemy zrobić. 772 00:43:32,700 --> 00:43:34,150 Nie chcemy, aby sprawdzić pełna rzeczą ponownie. 773 00:43:34,150 --> 00:43:35,480 Więc powiedzieć, że go zmienić na 2. 774 00:43:35,480 --> 00:43:36,970 Bierzemy połowę listę To dziwne. 775 00:43:36,970 --> 00:43:38,800 Tak po prostu odebrać 2. 776 00:43:38,800 --> 00:43:40,590 Więc teraz n jest równe 2. 777 00:43:40,590 --> 00:43:42,780 Przepraszam za kiepski markery kasowania suche. 778 00:43:42,780 --> 00:43:43,080 Prawda? 779 00:43:43,080 --> 00:43:45,670 A my przeszukiwaniu listy ponownie listę wielkości 2. 780 00:43:45,670 --> 00:43:48,580 Cóż, nasza tablica jest wciąż o rozmiarze 5. 781 00:43:48,580 --> 00:43:51,920 Mówimy, że tylko chcesz Szukaj 2 miejsca w nim. 782 00:43:51,920 --> 00:43:53,590 Więc czego 2 punkty są te? 783 00:43:53,590 --> 00:43:57,640 784 00:43:57,640 --> 00:43:58,815 >> Czy to ma sens? 785 00:43:58,815 --> 00:44:00,290 Są one pozostawione 2 miejsc? 786 00:44:00,290 --> 00:44:01,940 Są odpowiednie 2 miejsca? 787 00:44:01,940 --> 00:44:03,540 Są środkowe 2 miejsc? 788 00:44:03,540 --> 00:44:06,350 Złamaliśmy problemu w dół, ale my właściwie nie wiem, która część 789 00:44:06,350 --> 00:44:11,600 Problem my wciąż patrząc na, po prostu o te 2 zmienne. 790 00:44:11,600 --> 00:44:16,450 Więc potrzebujemy trochę więcej czasu, gdy n jest większe niż 0. 791 00:44:16,450 --> 00:44:21,410 Musimy wiedzieć, gdzie to n jest w naszej rzeczywistej tablicy. 792 00:44:21,410 --> 00:44:26,660 >> Tak czy ktokolwiek ma zmieni się na tej linii? 793 00:44:26,660 --> 00:44:27,970 Większość z tych linii jest idealnie poprawne. 794 00:44:27,970 --> 00:44:29,170 Czy istnieje inny dodatek? 795 00:44:29,170 --> 00:44:32,510 Możemy zamienić coś z dla n do dokonać tej linii nieco lepiej? 796 00:44:32,510 --> 00:44:32,865 Mm-hm? 797 00:44:32,865 --> 00:44:38,040 >> Student: Czy można zainicjować zmienną jak długości do n to będzie następnie wykorzystywany 798 00:44:38,040 --> 00:44:39,600 później w funkcji? 799 00:44:39,600 --> 00:44:42,060 >> JASON Hirschhorn: Więc zainicjować zmiennej długości do n, 800 00:44:42,060 --> 00:44:42,900 i używamy tego później? 801 00:44:42,900 --> 00:44:47,070 Ale wtedy po prostu zaktualizować długość i my nadal działać w ten problem, gdzie 802 00:44:47,070 --> 00:44:51,180 ograniczyć długość naszego problemu, ale nigdy nie wiadomo, gdzie, tak naprawdę, 803 00:44:51,180 --> 00:44:52,510 że długość mapy na. 804 00:44:52,510 --> 00:44:54,790 >> Student: Czy to nie będzie się działo później, gdy mówisz, szukaj lewo, 805 00:44:54,790 --> 00:44:55,746 szukaj w porządku? 806 00:44:55,746 --> 00:44:57,640 Masz zamiar udać się do innego dziedzinie swojego - 807 00:44:57,640 --> 00:44:59,110 >> JASON Hirschhorn: Zamierzamy przejść do obszaru, ale jak wiemy, 808 00:44:59,110 --> 00:45:01,150 które mają iść do? 809 00:45:01,150 --> 00:45:03,800 Jeśli mamy tylko tablicę i ta n, skąd mamy wiedzieć, gdzie się 810 00:45:03,800 --> 00:45:05,050 go w tablicy. 811 00:45:05,050 --> 00:45:05,900 Z tyłu, tak? 812 00:45:05,900 --> 00:45:07,507 >> Student: Czy masz, jak, niższe związany i zmienna lub górną granicę 813 00:45:07,507 --> 00:45:08,586 coś w tym stylu? 814 00:45:08,586 --> 00:45:09,060 >> JASON Hirschhorn: OK. 815 00:45:09,060 --> 00:45:10,780 Tak więc jest to kolejny pomysł. 816 00:45:10,780 --> 00:45:13,490 A nie tylko śledzenie rozmiar, możemy śledzić niższa i 817 00:45:13,490 --> 00:45:14,770 Górna zmienna związana. 818 00:45:14,770 --> 00:45:17,840 Jak więc obliczyć wielkość od dolny i kres górny? 819 00:45:17,840 --> 00:45:18,520 >> [GŁOSY wstawienie] 820 00:45:18,520 --> 00:45:19,710 >> JASON Hirschhorn: odejmowanie. 821 00:45:19,710 --> 00:45:23,650 A także śledzenie niższe związany i górna granica, aby poinformować nas, 822 00:45:23,650 --> 00:45:26,215 my szukając tych dwóch? 823 00:45:26,215 --> 00:45:28,220 My szukając tych dwóch tutaj? 824 00:45:28,220 --> 00:45:29,540 My szukając dwa środkowe? 825 00:45:29,540 --> 00:45:32,810 Prawdopodobnie nie dwa środkowe, ponieważ to, w rzeczywistości, jest wyszukiwanie binarne. 826 00:45:32,810 --> 00:45:37,320 Ale teraz będziemy w stanie uzyskać rozmiar, a także graniczne tablicy. 827 00:45:37,320 --> 00:45:40,020 W istocie, jeśli mamy giganta książka telefoniczna, możemy zgrać go na pół. 828 00:45:40,020 --> 00:45:42,990 Teraz już wiemy, gdzie, że mniejsze Książka telefoniczna jest. 829 00:45:42,990 --> 00:45:45,260 Ale nie jesteśmy w rzeczywistości zgrywania książka telefoniczna na pół. 830 00:45:45,260 --> 00:45:48,570 Musimy jeszcze wiedzieć, gdzie nowe granice naszego problemu jest. 831 00:45:48,570 --> 00:45:51,645 Czy ktoś ma jakieś pytania o tym? 832 00:45:51,645 --> 00:45:52,440 Tak? 833 00:45:52,440 --> 00:45:56,020 >> Student: Czy to działa poprzez tworzenie zmienna, i, że po prostu przesunąć 834 00:45:56,020 --> 00:46:00,770 położenie i względem jego pozycja i długości, n? 835 00:46:00,770 --> 00:46:01,710 >> JASON Hirschhorn: A co to ja? 836 00:46:01,710 --> 00:46:04,110 >> Student: Jak i jest jak rodzaj - 837 00:46:04,110 --> 00:46:08,040 Jak można zainicjować i być pozycja środkowa tablicy. 838 00:46:08,040 --> 00:46:12,540 , A następnie, jeżeli wartość na pozycji i w środek tablicy w uznane 839 00:46:12,540 --> 00:46:17,870 być mniejsza niż wartość trzeba, i teraz się długość tablicy plus 840 00:46:17,870 --> 00:46:19,215 wartość i podzielić przez 2. 841 00:46:19,215 --> 00:46:20,270 Jak widzisz, można przesuwać i. - 842 00:46:20,270 --> 00:46:20,770 >> JASON Hirschhorn: Prawo. 843 00:46:20,770 --> 00:46:21,165 >> Student: - do - 844 00:46:21,165 --> 00:46:24,010 >> JASON Hirschhorn: Jestem więc niemal przekonany, że będzie działać. 845 00:46:24,010 --> 00:46:26,800 Ale punkt istota, potrzebne są dwa fragmenty informacji tutaj. 846 00:46:26,800 --> 00:46:30,050 Możesz zrobić to z początku i końca, czy można zrobić to z wielkości, a następnie 847 00:46:30,050 --> 00:46:31,060 niektóre znacznik. 848 00:46:31,060 --> 00:46:32,630 Ale trzeba dwa kawałki informacji tutaj. 849 00:46:32,630 --> 00:46:34,160 Nie można dostać się tylko z jednym. 850 00:46:34,160 --> 00:46:35,830 Czy to ma sens? 851 00:46:35,830 --> 00:46:39,560 >> Więc mamy zamiar przejść i mamy zamiar zrobić [niesłyszalne] 852 00:46:39,560 --> 00:46:41,330 i utworzyć kilka markerów. 853 00:46:41,330 --> 00:46:42,690 Więc co piszesz w kodzie? 854 00:46:42,690 --> 00:46:46,190 >> STUDENT: Powiedziałem tylko int granicę z nich jest równa 0. 855 00:46:46,190 --> 00:46:47,790 >> JASON Hirschhorn: Nazwijmy że int, począwszy. 856 00:46:47,790 --> 00:46:49,140 >> STUDENT: OK. 857 00:46:49,140 --> 00:46:50,590 >> JASON Hirschhorn: To sprawia, że więcej sensu dla mnie. 858 00:46:50,590 --> 00:46:51,670 A? 859 00:46:51,670 --> 00:46:54,340 >> STUDENT: powiedziałem, myślę, int kończąc. 860 00:46:54,340 --> 00:46:55,870 >> JASON Hirschhorn: int kończąc. 861 00:46:55,870 --> 00:46:57,640 >> Student: Przypuszczam, n minus 1, lub coś w tym stylu. 862 00:46:57,640 --> 00:46:59,100 Jak, ostatni element. 863 00:46:59,100 --> 00:47:02,310 >> JASON Hirschhorn: Więc napisał, int począwszy równymi 0, średnikiem i int 864 00:47:02,310 --> 00:47:04,320 końcówka jest równa n minus 1, średnik. 865 00:47:04,320 --> 00:47:06,850 Więc w zasadzie, co robimy o, 0 pierwszą pozycję. 866 00:47:06,850 --> 00:47:09,570 A jak wiemy w tablicach, nie wykraczają do n, idą do n minus 1. 867 00:47:09,570 --> 00:47:11,110 Więc mamy pewne granice naszej tablicy. 868 00:47:11,110 --> 00:47:15,730 I te początkowe granice stało się początkowe granice naszego problemu. 869 00:47:15,730 --> 00:47:16,640 OK. 870 00:47:16,640 --> 00:47:19,200 Tak, że brzmi dobrze. 871 00:47:19,200 --> 00:47:22,380 Następnie, jeśli wrócimy do tej linii, podczas gdy długość listy jest większe niż 0, 872 00:47:22,380 --> 00:47:24,752 co zamiast n, powinna kładziemy tutaj? 873 00:47:24,752 --> 00:47:28,820 >> STUDENT: Napisz kończąc minus początek. 874 00:47:28,820 --> 00:47:34,780 >> JASON Hirschhorn: Podczas zakończenia minus Początek jest większy niż 0? 875 00:47:34,780 --> 00:47:35,480 OK. 876 00:47:35,480 --> 00:47:37,730 I możemy, jeśli chcemy sprawiają, że nieco ładniejsza, co 877 00:47:37,730 --> 00:47:38,980 jeszcze możemy zrobić? 878 00:47:38,980 --> 00:47:41,650 879 00:47:41,650 --> 00:47:43,412 Jeśli chcemy, aby oczyścić kod ten się trochę? 880 00:47:43,412 --> 00:47:46,716 881 00:47:46,716 --> 00:47:48,180 Jak możemy pozbyć się 0? 882 00:47:48,180 --> 00:47:51,560 883 00:47:51,560 --> 00:47:52,690 To jest po prostu kwestia stylu. 884 00:47:52,690 --> 00:47:53,690 To jest teraz prawidłowe. 885 00:47:53,690 --> 00:47:54,870 >> STUDENT: kończące się nie równa początek? 886 00:47:54,870 --> 00:47:55,740 >> JASON Hirschhorn: Co możemy zrobić? 887 00:47:55,740 --> 00:47:56,730 >> [GŁOSY wstawienie] 888 00:47:56,730 --> 00:47:57,330 >> STUDENT: Zakończenie jest większa? 889 00:47:57,330 --> 00:47:57,720 >> JASON Hirschhorn: Tak. 890 00:47:57,720 --> 00:48:01,110 Możemy tak zrobić, gdy kończy jest większa od początku. 891 00:48:01,110 --> 00:48:03,580 Prawo. 892 00:48:03,580 --> 00:48:06,240 Dodaliśmy zaczynając po drugiej stronie o tym, i pozbył się 0. 893 00:48:06,240 --> 00:48:08,000 Tak to właśnie wygląda trochę czystsze. 894 00:48:08,000 --> 00:48:08,990 OK. 895 00:48:08,990 --> 00:48:11,460 Tak więc, podczas gdy długość listy jest 0, pisaliśmy , że podczas zakończenia jest większa 896 00:48:11,460 --> 00:48:12,240 niż początek. 897 00:48:12,240 --> 00:48:19,840 Mamy zamiar umieścić w naszym konieczne nawiasy klamrowe, a następnie pierwszą rzeczą, 898 00:48:19,840 --> 00:48:22,090 chcemy zrobić, to patrzeć na je w małym listy. 899 00:48:22,090 --> 00:48:22,510 Ty? 900 00:48:22,510 --> 00:48:23,320 Czy możesz mi dać - 901 00:48:23,320 --> 00:48:26,460 >> STUDENT: Jeśli nawias Wartość nawias kwadratowy - 902 00:48:26,460 --> 00:48:30,450 >> JASON Hirschhorn: Jeśli nawiasy Wartość nawias kwadratowy. 903 00:48:30,450 --> 00:48:33,210 >> STUDENT: kończące się podzielić przez 2. 904 00:48:33,210 --> 00:48:33,952 >> JASON Hirschhorn: Koniec? 905 00:48:33,952 --> 00:48:35,280 >> STUDENT: Widzę problem z - 906 00:48:35,280 --> 00:48:35,750 >> JASON Hirschhorn: OK. 907 00:48:35,750 --> 00:48:39,150 Cóż, wygląda na środku. 908 00:48:39,150 --> 00:48:41,226 Skąd wiemy, co jest w środku? 909 00:48:41,226 --> 00:48:42,450 Tak. 910 00:48:42,450 --> 00:48:43,070 Więc pozwól mi usunąć ten kod. 911 00:48:43,070 --> 00:48:46,360 Skąd wiemy, co jest w środku? 912 00:48:46,360 --> 00:48:48,003 W nic, kiedy masz na początku i na koniec, jak znaleźć 913 00:48:48,003 --> 00:48:48,876 środkowy? 914 00:48:48,876 --> 00:48:49,590 >> Student: Ty średnio. 915 00:48:49,590 --> 00:48:51,820 >> Student: Ty je dodać razem, a następnie - 916 00:48:51,820 --> 00:48:53,150 >> JASON Hirschhorn: im Dodaj razem, a potem? 917 00:48:53,150 --> 00:48:54,090 >> Student: A ty średnia. 918 00:48:54,090 --> 00:48:55,050 Podzielić przez 2. 919 00:48:55,050 --> 00:48:56,500 >> JASON Hirschhorn: im Dodaj razem i podzielić przez 2. 920 00:48:56,500 --> 00:48:59,400 Tak int środkowy równa? 921 00:48:59,400 --> 00:49:01,120 Tom, możesz mi go dać? 922 00:49:01,120 --> 00:49:03,550 >> STUDENT: Początek oraz kończąc - 923 00:49:03,550 --> 00:49:04,950 >> JASON Hirschhorn: Początek Plus kończąc. 924 00:49:04,950 --> 00:49:06,880 >> STUDENT: Wszystko, wspornik, podzielić przez 2. 925 00:49:06,880 --> 00:49:10,940 >> JASON Hirschhorn: Wszystkie, w nawiasach, podzielona przez 2. 926 00:49:10,940 --> 00:49:16,300 Tak, że daje mi w środku o niczym, prawda? 927 00:49:16,300 --> 00:49:18,980 >> STUDENT: Musisz także zaokrąglić go. 928 00:49:18,980 --> 00:49:19,990 >> JASON Hirschhorn: Co robisz, znaczy, trzeba zaokrąglić go? 929 00:49:19,990 --> 00:49:20,400 >> [GŁOSY wstawienie] 930 00:49:20,400 --> 00:49:24,520 >> STUDENT: Bo jeśli jest to dziwne liczba, to jest to jak - 931 00:49:24,520 --> 00:49:25,440 >> JASON Hirschhorn: Dobrze, dobrze. 932 00:49:25,440 --> 00:49:26,360 Więc może zaokrąglić go. 933 00:49:26,360 --> 00:49:33,350 Ale jeśli jest to liczba nieparzysta, 5, mogę przy 1 od środka. 934 00:49:33,350 --> 00:49:35,665 Lub jeśli jest to liczba parzysta, a raczej to lepiej sprawa. 935 00:49:35,665 --> 00:49:39,600 Jeśli jest to 4, mamy tylko 4, mogę wziąć Pierwszy "średnim", cytuję, cytatu lub 936 00:49:39,600 --> 00:49:41,760 Drugi "średnim" jeden. 937 00:49:41,760 --> 00:49:46,390 Albo będzie działać na poszukiwania binarnego, więc właściwie nie trzeba go zaokrąglić. 938 00:49:46,390 --> 00:49:48,640 Ale jest jeszcze jedna rzecz, trzeba spojrzeć na tej linii. 939 00:49:48,640 --> 00:49:50,530 Możemy jeszcze nie zdaje sobie sprawy, ale wrócimy do tego. 940 00:49:50,530 --> 00:49:53,200 Ponieważ linia ta faktycznie nadal potrzebuje jednej rzeczy. 941 00:49:53,200 --> 00:49:55,990 >> Ale do tej pory, mamy napisane cztery linie kodu. 942 00:49:55,990 --> 00:49:58,120 Mamy nasz początek a kończąc znaczników. 943 00:49:58,120 --> 00:50:01,320 Mamy pętli while, która mapuje na bezpośrednio na naszej Pseudokod. 944 00:50:01,320 --> 00:50:05,790 Patrzymy na środku, który mapuje bezpośrednio na naszej Pseudokod. 945 00:50:05,790 --> 00:50:09,070 Powiedziałbym, że to idzie na środek z tej listy, ta linia kodu. 946 00:50:09,070 --> 00:50:11,560 A potem, gdy idziemy do środka lista, następną rzeczą, którą musisz zrobić, 947 00:50:11,560 --> 00:50:14,880 jest sprawdzić, czy nasza wartość jest dla pseudokod pisaliśmy wcześniej. 948 00:50:14,880 --> 00:50:17,100 >> Jak więc sprawdzić, czy nasza wartość znajduje się w środku liście? 949 00:50:17,100 --> 00:50:17,300 Ty. 950 00:50:17,300 --> 00:50:18,511 Dlaczego nie można tego zrobić? 951 00:50:18,511 --> 00:50:23,070 >> STUDENT: Jeśli nasza wartość jest w połowie jest równa 952 00:50:23,070 --> 00:50:24,592 cokolwiek ustawić - 953 00:50:24,592 --> 00:50:26,190 To znaczy równa równa - 954 00:50:26,190 --> 00:50:26,690 >> JASON Hirschhorn: To - 955 00:50:26,690 --> 00:50:27,940 OK. 956 00:50:27,940 --> 00:50:30,080 957 00:50:30,080 --> 00:50:32,170 >> Student: Nie wiem, co Zmienna szukamy 958 00:50:32,170 --> 00:50:32,850 na jest jednak to, ponieważ - 959 00:50:32,850 --> 00:50:33,330 >> [GŁOSY wstawienie] 960 00:50:33,330 --> 00:50:34,520 >> STUDENT: [niesłyszalne]. 961 00:50:34,520 --> 00:50:35,060 >> JASON Hirschhorn: Dokładnie. 962 00:50:35,060 --> 00:50:37,260 Na deklaracji funkcji, szukamy wartości. 963 00:50:37,260 --> 00:50:39,760 Więc jesteśmy w poszukiwaniu wartości w postaci tablicy wartości. 964 00:50:39,760 --> 00:50:41,080 Więc jesteś dokładnie prawo. 965 00:50:41,080 --> 00:50:45,040 Zrobisz, jeśli wartość otwarty nawias nawias wspornika zamknięty równych średnim 966 00:50:45,040 --> 00:50:49,930 równa się wartości, a wewnątrz budynku co musimy zrobić? 967 00:50:49,930 --> 00:50:51,230 Jeśli nasza wartość jest tam, co Czy musimy zrobić? 968 00:50:51,230 --> 00:50:51,420 >> [GŁOSY wstawienie] 969 00:50:51,420 --> 00:50:52,160 >> STUDENT: Powrót do zera. 970 00:50:52,160 --> 00:50:53,070 >> JASON Hirschhorn: Zwraca true. 971 00:50:53,070 --> 00:50:54,790 >> STUDENT: Zwraca true. 972 00:50:54,790 --> 00:50:57,856 >> JASON Hirschhorn: Michael, co to linia zrobić? 973 00:50:57,856 --> 00:51:01,105 >> STUDENT: [niesłyszalne] prowadzi program jej przebieg, a to jest ponad, i 974 00:51:01,105 --> 00:51:01,920 masz co trzeba zrobić? 975 00:51:01,920 --> 00:51:03,030 >> JASON Hirschhorn: program czy co? 976 00:51:03,030 --> 00:51:03,700 W tym przypadku? 977 00:51:03,700 --> 00:51:04,210 >> STUDENT: funkcja. 978 00:51:04,210 --> 00:51:05,170 >> JASON Hirschhorn: funkcja. 979 00:51:05,170 --> 00:51:08,420 I tak, aby powrócić do tego, co nazywa się go i nadać jej wartość, prawda. 980 00:51:08,420 --> 00:51:09,890 Dokładnie tak. 981 00:51:09,890 --> 00:51:10,170 Główny. 982 00:51:10,170 --> 00:51:12,035 Co jest typ zwracany z głównym, Michael? 983 00:51:12,035 --> 00:51:16,480 984 00:51:16,480 --> 00:51:17,150 >> STUDENT: int liczba całkowita? 985 00:51:17,150 --> 00:51:18,080 >> JASON Hirschhorn: int, dokładnie. 986 00:51:18,080 --> 00:51:18,680 Całkowitą. 987 00:51:18,680 --> 00:51:20,980 To była tylko kwestia, aby upewnić wy były na wierzchu. 988 00:51:20,980 --> 00:51:24,250 Co to zazwyczaj powrócić, jeśli wszystko pracuje dobrze? 989 00:51:24,250 --> 00:51:24,520 >> STUDENT: zero. 990 00:51:24,520 --> 00:51:24,820 >> JASON Hirschhorn: zero. 991 00:51:24,820 --> 00:51:25,430 Dokładnie tak. 992 00:51:25,430 --> 00:51:28,790 >> STUDENT: Jeśli to tylko zwraca true, nie ma informacji poświęca 993 00:51:28,790 --> 00:51:30,675 o tym, co - 994 00:51:30,675 --> 00:51:34,040 Och, to jest po prostu mówiąc, że wartość jest w środku tablicy. 995 00:51:34,040 --> 00:51:35,350 >> JASON Hirschhorn: Dokładnie. 996 00:51:35,350 --> 00:51:38,080 Ten program nie jest udzielanie informacji gdzie dokładnie wartość. 997 00:51:38,080 --> 00:51:41,850 To tylko mówiąc, tak, okazało się, to, czy nie, nie to znaleźć. 998 00:51:41,850 --> 00:51:42,990 Jeśli więc znaleźć numer, zwraca true. 999 00:51:42,990 --> 00:51:45,500 Cóż, tak naprawdę to zrobiłam naprawdę szybko z tej jednej linii kodu. 1000 00:51:45,500 --> 00:51:47,500 Więc przenieść tę linię Pseudokod. 1001 00:51:47,500 --> 00:51:50,045 >> Student: Nie musimy zmiany tablicy? 1002 00:51:50,045 --> 00:51:52,830 Powinny być wartości, a nie wartość, prawda? 1003 00:51:52,830 --> 00:51:53,430 >> JASON Hirschhorn: Przepraszam. 1004 00:51:53,430 --> 00:51:54,010 Dziękuję. 1005 00:51:54,010 --> 00:51:54,800 >> Uczeń: Tak. 1006 00:51:54,800 --> 00:51:55,850 >> JASON Hirschhorn: Ta linia powinny być wartości. 1007 00:51:55,850 --> 00:51:57,150 Dokładnie tak. 1008 00:51:57,150 --> 00:51:57,920 OK. 1009 00:51:57,920 --> 00:51:59,170 Więc my spojrzał na liście średniej. 1010 00:51:59,170 --> 00:52:00,790 Jeśli liczba znalezionych powrót prawda. 1011 00:52:00,790 --> 00:52:04,470 Kontynuując z naszej Pseudokod, jeśli środkowa jest wyższa, wyszukiwanie w lewo. 1012 00:52:04,470 --> 00:52:09,640 Więc musiałem się tutaj, jeśli liczba wyższa, wyszukiwanie w lewo. 1013 00:52:09,640 --> 00:52:12,700 1014 00:52:12,700 --> 00:52:14,462 Konstantyn, możesz dać mnie ta linia kodu? 1015 00:52:14,462 --> 00:52:17,240 1016 00:52:17,240 --> 00:52:23,520 >> STUDENT: Jeśli wartość środku - 1017 00:52:23,520 --> 00:52:24,890 >> JASON Hirschhorn: Więc jeśli wartość - 1018 00:52:24,890 --> 00:52:28,890 jeśli wartości wspornik otwarty nawias Uchwyt środkowy blisko - 1019 00:52:28,890 --> 00:52:31,500 >> STUDENT: jest mniejsza niż wartość? 1020 00:52:31,500 --> 00:52:32,760 >> JASON Hirschhorn: Czy mniej niż. 1021 00:52:32,760 --> 00:52:33,800 >> STUDENT: Mniej niż wartości. 1022 00:52:33,800 --> 00:52:34,060 >> JASON Hirschhorn: Wartość. 1023 00:52:34,060 --> 00:52:35,310 Cóż, tak naprawdę, chcesz sprawdzić, czy numer - 1024 00:52:35,310 --> 00:52:38,310 1025 00:52:38,310 --> 00:52:38,490 Przepraszam. 1026 00:52:38,490 --> 00:52:39,140 To jest trochę mylące. 1027 00:52:39,140 --> 00:52:43,920 Ale inny, jeśli liczba w środku listy jest większa. 1028 00:52:43,920 --> 00:52:45,170 >> STUDENT: Oh, OK. 1029 00:52:45,170 --> 00:52:49,800 1030 00:52:49,800 --> 00:52:50,410 >> JASON Hirschhorn: ja zmienić. 1031 00:52:50,410 --> 00:52:55,060 Else if środkowa jest wyższa, mamy Aby wyszukać lewo, OK? 1032 00:52:55,060 --> 00:52:57,310 A co robimy wewnątrz tego, czy warunek? 1033 00:52:57,310 --> 00:53:03,660 1034 00:53:03,660 --> 00:53:07,510 >> Uczeń: Czy mogę zrobić małe zmiany Stan, zmień go na inny, jeśli? 1035 00:53:07,510 --> 00:53:08,380 >> JASON Hirschhorn: if? 1036 00:53:08,380 --> 00:53:09,270 OK. 1037 00:53:09,270 --> 00:53:12,840 Więc ten kod zostanie wykonany o taki sam. 1038 00:53:12,840 --> 00:53:18,620 Ale Zaletą korzystania, jeśli jeszcze jeśli if lub if, else if, else 1039 00:53:18,620 --> 00:53:22,320 Oznacza to, że tylko jeden z nich będzie być sprawdzone, nie wszystkie trzy, 1040 00:53:22,320 --> 00:53:23,290 potencjalnie. 1041 00:53:23,290 --> 00:53:25,530 I to sprawia, że ​​trochę ładniejszy na komputerze, który jest 1042 00:53:25,530 --> 00:53:26,670 uruchomić program. 1043 00:53:26,670 --> 00:53:27,620 >> Tak [? Konstantyn,?] 1044 00:53:27,620 --> 00:53:31,330 jesteśmy w środku tej linii, inny, jeśli wartości, Uchwyt Uchwyt środkowy blisko 1045 00:53:31,330 --> 00:53:32,260 jest większa niż wartość. 1046 00:53:32,260 --> 00:53:33,150 Co musimy zrobić? 1047 00:53:33,150 --> 00:53:33,970 Musimy sprawdzić w lewo. 1048 00:53:33,970 --> 00:53:35,220 Jak to robimy? 1049 00:53:35,220 --> 00:53:46,960 1050 00:53:46,960 --> 00:53:48,720 Mam zamiar dać początek. 1051 00:53:48,720 --> 00:53:52,210 >> Mamy te dwie rzeczy nazywane początek i koniec. 1052 00:53:52,210 --> 00:53:57,340 Więc to, co musi się zdarzyć na początek? 1053 00:53:57,340 --> 00:53:59,640 Jeśli chcesz sprawdzić lewej lista, mamy naszą aktualną początek. 1054 00:53:59,640 --> 00:54:01,080 Co trzeba zrobić? 1055 00:54:01,080 --> 00:54:04,220 >> STUDENT: Ustawiamy początek na środku plus 1. 1056 00:54:04,220 --> 00:54:05,120 >> JASON Hirschhorn: Więc jeśli jesteśmy wyszukiwanie w lewo? 1057 00:54:05,120 --> 00:54:06,250 >> STUDENT: Niestety, w środku minus - 1058 00:54:06,250 --> 00:54:11,310 więc zakończenie będzie w średnim minus 1 i początek - 1059 00:54:11,310 --> 00:54:12,450 >> JASON Hirschhorn: I co dzieje się na początku? 1060 00:54:12,450 --> 00:54:13,210 >> Student: To pozostaje taka sama. 1061 00:54:13,210 --> 00:54:14,120 >> JASON Hirschhorn: Tak sens pozostaje ten sam. 1062 00:54:14,120 --> 00:54:16,040 Jeśli mamy wyszukiwanie w lewo, jesteśmy z użyciem takiego samego początku - 1063 00:54:16,040 --> 00:54:16,860 Dokładnie tak. 1064 00:54:16,860 --> 00:54:17,870 I kończąc? 1065 00:54:17,870 --> 00:54:19,390 Niestety, to, co robi kończąc równa ponownie? 1066 00:54:19,390 --> 00:54:20,750 >> STUDENT: Bliski minus 1. 1067 00:54:20,750 --> 00:54:21,620 >> JASON Hirschhorn: Bliski minus 1. 1068 00:54:21,620 --> 00:54:23,470 Teraz, dlaczego minus 1, a nie tylko w średnim? 1069 00:54:23,470 --> 00:54:32,870 1070 00:54:32,870 --> 00:54:35,570 >> STUDENT: środkowa jest z obraz już, bo mieliśmy 1071 00:54:35,570 --> 00:54:36,700 zaznaczone, że jest to obecnie? 1072 00:54:36,700 --> 00:54:37,630 >> JASON Hirschhorn: To Dokładnie tak. 1073 00:54:37,630 --> 00:54:38,580 Bliski jest z obrazu. 1074 00:54:38,580 --> 00:54:39,800 Mamy już sprawdzone pola. 1075 00:54:39,800 --> 00:54:44,730 Więc nie chcemy "pola", cytat cytatu, aby nadal być w 1076 00:54:44,730 --> 00:54:46,110 Tablica szukamy. 1077 00:54:46,110 --> 00:54:47,670 Więc to jest fantastyczne. 1078 00:54:47,670 --> 00:54:50,670 >> Else if wspornik środkowy jest większe wartości niż wartość kończąc równych 1079 00:54:50,670 --> 00:54:51,920 Bliski minus 1. 1080 00:54:51,920 --> 00:54:55,060 1081 00:54:55,060 --> 00:54:57,340 Jeff, co z tym ostatnim wierszu? 1082 00:54:57,340 --> 00:54:58,590 >> STUDENT: Else. 1083 00:54:58,590 --> 00:55:02,486 1084 00:55:02,486 --> 00:55:06,000 Wartości jest mniejsza niż środkowa wartość? 1085 00:55:06,000 --> 00:55:07,570 >> JASON Hirschhorn: będziemy dajesz mi innego. 1086 00:55:07,570 --> 00:55:09,310 Tak więc, jeśli nie dasz mi - 1087 00:55:09,310 --> 00:55:12,270 >> Uczeń: Tak więc zaczynając będzie środkowa oraz 1. 1088 00:55:12,270 --> 00:55:16,100 1089 00:55:16,100 --> 00:55:19,070 >> JASON Hirschhorn: Początek równi środkowy oraz 1 znów do tego samego 1090 00:55:19,070 --> 00:55:20,820 Dlatego, że Konstantyn dał nam wcześniej. 1091 00:55:20,820 --> 00:55:24,280 I na koniec, który nie dał ja jeszcze linijka kodu? 1092 00:55:24,280 --> 00:55:26,600 Return false, Aleha, co Nie piszemy tutaj? 1093 00:55:26,600 --> 00:55:28,590 >> STUDENT: return false. 1094 00:55:28,590 --> 00:55:29,320 >> JASON Hirschhorn: return false. 1095 00:55:29,320 --> 00:55:33,340 Musimy to zrobić, bo jeśli nie go znaleźć, trzeba powiedzieć, że 1096 00:55:33,340 --> 00:55:34,080 nie go znaleźć. 1097 00:55:34,080 --> 00:55:36,270 A my powiedzieliśmy, że będziemy wracać bool, więc na pewno trzeba zwrócić 1098 00:55:36,270 --> 00:55:38,150 gdzieś bool. 1099 00:55:38,150 --> 00:55:42,590 >> Więc ten kod. 1100 00:55:42,590 --> 00:55:44,520 Jestem rzeczywiście będzie - 1101 00:55:44,520 --> 00:55:45,930 więc jesteśmy w terminalu. 1102 00:55:45,930 --> 00:55:47,230 Będziemy wyczyścić nasze okno. 1103 00:55:47,230 --> 00:55:49,270 Zróbmy wszystko. 1104 00:55:49,270 --> 00:55:50,340 Okazało się, że jeden błąd. 1105 00:55:50,340 --> 00:55:54,280 Jest błąd na linii 15, oczekuje średnik na końcu 1106 00:55:54,280 --> 00:55:54,890 deklaracja. 1107 00:55:54,890 --> 00:55:56,454 Więc co mam zapomnieć? 1108 00:55:56,454 --> 00:55:57,230 >> STUDENT: średnikiem. 1109 00:55:57,230 --> 00:56:00,200 >> JASON Hirschhorn: średnik aż tutaj. 1110 00:56:00,200 --> 00:56:00,950 Myślę, że był kod Toma. 1111 00:56:00,950 --> 00:56:01,870 Więc Tom, [niesłyszalne]. 1112 00:56:01,870 --> 00:56:03,120 Tylko żartowałem. 1113 00:56:03,120 --> 00:56:05,010 1114 00:56:05,010 --> 00:56:07,310 Niech robią wszystko ponownie. 1115 00:56:07,310 --> 00:56:10,180 >> Student: Co katalogu Dropbox powinniśmy być w tej sprawie? 1116 00:56:10,180 --> 00:56:11,345 >> JASON Hirschhorn: Więc można tylko oglądać do tego kawałka. 1117 00:56:11,345 --> 00:56:16,380 Ale znowu, jeśli chcesz, aby przenieść ten kod do katalogu pset3 spróbować 1118 00:56:16,380 --> 00:56:17,050 go, że to, co zrobiłem. 1119 00:56:17,050 --> 00:56:18,600 Jeśli zauważysz tutaj - Niestety, dobre pytanie. 1120 00:56:18,600 --> 00:56:19,460 >> [? LS,?] 1121 00:56:19,460 --> 00:56:24,700 Mam tutaj kod find.c z tego tygodnia kodu distro. 1122 00:56:24,700 --> 00:56:26,300 Mam helpers.h. 1123 00:56:26,300 --> 00:56:30,010 Mam plik Marka, że ​​rzeczywiście edytowane trochę włączyć te nowe 1124 00:56:30,010 --> 00:56:30,710 Pliki piszemy. 1125 00:56:30,710 --> 00:56:34,120 Wszystkie tego kodeksu będzie dostępna, nie Kod dystrybucji, ale nowy 1126 00:56:34,120 --> 00:56:39,510 Dodać plik, będzie nowy plik helpers.h być dostępny w sieci do pobrania. 1127 00:56:39,510 --> 00:56:41,800 Ponownie, tak to są dodatkowe kody mamy. 1128 00:56:41,800 --> 00:56:46,130 >> Więc zrobić wszystko, na tej linii sprawia, że ​​znalezienie, binarny, wybór bubble - marki 1129 00:56:46,130 --> 00:56:50,930 wszystkie trzy z nich i kompiluje się kod wykonywalny znaleźć. 1130 00:56:50,930 --> 00:56:54,090 Tak ogólnie, nie chcemy się prosto do check50. 1131 00:56:54,090 --> 00:56:57,580 Chcemy przeprowadzić kilka testów na własną rękę. 1132 00:56:57,580 --> 00:57:11,750 Ale tylko tak możemy przyspieszyć ten kawałek, check50 2013 pset3.find przejdzie 1133 00:57:11,750 --> 00:57:14,630 w helpers.c-- mój błąd. 1134 00:57:14,630 --> 00:57:16,050 >> Nie mam tego teraz. 1135 00:57:16,050 --> 00:57:20,670 Więc jesteśmy rzeczywiście będzie uruchomić kod na prawdziwe. 1136 00:57:20,670 --> 00:57:23,570 Usage.find /, wiesz, co to oznacza? 1137 00:57:23,570 --> 00:57:25,970 >> STUDENT: Musisz sekund Wiersz polecenia na nim. 1138 00:57:25,970 --> 00:57:26,980 >> JASON Hirschhorn: Potrzebuję Drugi wiersz poleceń. 1139 00:57:26,980 --> 00:57:30,640 I wg specyfikacji, muszę wejść, co szukasz. 1140 00:57:30,640 --> 00:57:33,750 Więc spójrzmy na 42. 1141 00:57:33,750 --> 00:57:37,030 Będziemy je posortowane, bo nie zostały jeszcze napisane funkcję sortowania - 1142 00:57:37,030 --> 00:57:41,830 42, 43, 44. 1143 00:57:41,830 --> 00:57:46,240 >> I sterowania D nie znaleźliśmy igła w stogu siana. 1144 00:57:46,240 --> 00:57:46,505 To jest złe. 1145 00:57:46,505 --> 00:57:47,200 To na pewno nie. 1146 00:57:47,200 --> 00:57:48,090 Spróbujmy czegoś innego. 1147 00:57:48,090 --> 00:57:49,860 Może to dlatego, że szuka że na początku. 1148 00:57:49,860 --> 00:57:54,490 >> Zróbmy 41, 42, 43. 1149 00:57:54,490 --> 00:57:55,012 Nie idziemy. 1150 00:57:55,012 --> 00:57:56,400 Okaże się to. 1151 00:57:56,400 --> 00:58:00,040 Połóżmy go na końcu teraz, po prostu więc możemy być dokładny - 1152 00:58:00,040 --> 00:58:03,580 40, 41, 42. 1153 00:58:03,580 --> 00:58:05,760 Nie możesz znaleźć igłę. 1154 00:58:05,760 --> 00:58:07,550 Więc wspomniałem o tym wcześniej. 1155 00:58:07,550 --> 00:58:08,980 Niestety, wiedziałem, że to się wydarzy. 1156 00:58:08,980 --> 00:58:11,490 >> Ale dla celów pedagogicznych, warto go zwiedzić. 1157 00:58:11,490 --> 00:58:12,990 To nie działa. 1158 00:58:12,990 --> 00:58:16,020 Z jakiegoś powodu, nie może go znaleźć. 1159 00:58:16,020 --> 00:58:18,970 Wiemy, co tam jest, ale nie przekonują go. 1160 00:58:18,970 --> 00:58:24,140 Więc jedno możemy zrobić, to przejść przez GDB, aby go znaleźć, ale czy ktoś, 1161 00:58:24,140 --> 00:58:27,850 bez przechodzenia przez GDB, mają Poczucie gdzie wkręca się? 1162 00:58:27,850 --> 00:58:28,480 [? Madu? ?] 1163 00:58:28,480 --> 00:58:30,960 >> Student: Myślę, że to może być, gdy kończy odpowiada początkowi i jest 1164 00:58:30,960 --> 00:58:33,090 tylko jednego elementu listy. 1165 00:58:33,090 --> 00:58:35,560 Wtedy to po prostu ignoruje go zamiast faktycznie sprawdzenie go. 1166 00:58:35,560 --> 00:58:36,940 >> JASON Hirschhorn: To Dokładnie tak. 1167 00:58:36,940 --> 00:58:41,110 Gdy końcówka jest równa początek, mamy jeszcze element w naszej liście? 1168 00:58:41,110 --> 00:58:42,480 >> Uczeń: Tak. 1169 00:58:42,480 --> 00:58:45,450 >> JASON Hirschhorn: Tak, w rzeczywistości, mają jeden i tylko jeden element. 1170 00:58:45,450 --> 00:58:50,500 , A najprawdopodobniej zdarzyć, gdy za kodem testowaliśmy, jesteśmy na 1171 00:58:50,500 --> 00:58:54,640 przód lub w stogu siana Koniec stogu siana. 1172 00:58:54,640 --> 00:58:56,000 To miejsce, gdzie początek i zakończenie będzie równe 1173 00:58:56,000 --> 00:58:57,820 jeden z wyszukiwania binarnego. 1174 00:58:57,820 --> 00:59:01,440 Tak więc w obu tych przypadkach nie działa, ponieważ zakończenie wynosiła początku. 1175 00:59:01,440 --> 00:59:06,030 >> Ale jeśli końcowy jest równa początku ma ta pętla wykona? 1176 00:59:06,030 --> 00:59:06,390 Nie. 1177 00:59:06,390 --> 00:59:08,660 I mogliśmy sprawdzone że znowu przez GDB. 1178 00:59:08,660 --> 00:59:14,000 Więc jak możemy rozwiązać ten kod, ponieważ podczas gdy zakończenia jest równa 1179 00:59:14,000 --> 00:59:16,070 począwszy, chcemy również tego pętla do uruchomienia. 1180 00:59:16,070 --> 00:59:18,620 >> Więc co możemy zrobić poprawki do linii 18? 1181 00:59:18,620 --> 00:59:21,060 >> STUDENT: [niesłyszalne] jest większa niż lub równe. 1182 00:59:21,060 --> 00:59:21,700 >> JASON Hirschhorn: Dokładnie tak. 1183 00:59:21,700 --> 00:59:24,600 Podczas gdy końcówka jest większa niż lub równa początku. 1184 00:59:24,600 --> 00:59:27,300 Więc teraz, mamy pewność, aby ta Przypadek rogu na końcu. 1185 00:59:27,300 --> 00:59:27,870 I zobaczmy. 1186 00:59:27,870 --> 00:59:29,560 Niech uruchomić ten jeden raz. 1187 00:59:29,560 --> 00:59:31,266 >> Zróbmy wszystko. 1188 00:59:31,266 --> 00:59:33,910 Ponownie, będziesz musiał po prostu podążać tutaj. 1189 00:59:33,910 --> 00:59:36,280 Znajdź 41 tym razem. 1190 00:59:36,280 --> 00:59:37,360 Po prostu to spójne. 1191 00:59:37,360 --> 00:59:38,210 >> Znajdź 42. 1192 00:59:38,210 --> 00:59:38,930 Złóżmy to na początku - 1193 00:59:38,930 --> 00:59:41,630 42, 43, 44. 1194 00:59:41,630 --> 00:59:42,860 Znaleźliśmy go. 1195 00:59:42,860 --> 00:59:47,710 Tak, że rzeczywiście zmiana musimy zrobić. 1196 00:59:47,710 --> 00:59:51,090 >> To było dużo my kodowania po prostu nie, wyszukiwanie binarne. 1197 00:59:51,090 --> 00:59:55,760 Czy ktoś ma jakieś pytania przed I przejść do linii pisaliśmy w 1198 00:59:55,760 --> 00:59:58,750 wyszukiwanie binarne i jak doszliśmy z tego, co udało dowiedzieć? 1199 00:59:58,750 --> 01:00:01,900 1200 01:00:01,900 --> 01:00:06,270 Zanim przejdziemy dalej, chciałbym również podkreślić się, że w ujęciu, mamy odwzorowane 1201 01:00:06,270 --> 01:00:09,300 nasz pseudo-kod jeden do jeden na nasz kod. 1202 01:00:09,300 --> 01:00:11,550 >> Mieliśmy to trudne rzeczy dowiedzieć się, z 1203 01:00:11,550 --> 01:00:12,890 początek i koniec. 1204 01:00:12,890 --> 01:00:17,380 Ale już nie zorientowali, że się, jesteś napisałby prawie 1205 01:00:17,380 --> 01:00:20,740 identyczny kod, za wyjątkiem te dwie najlepsze linie. 1206 01:00:20,740 --> 01:00:23,380 I wtedy, gdy zostały zrealizowane udało ci się w kontroli i spraw, które 1207 01:00:23,380 --> 01:00:24,840 trzeba coś jeszcze. 1208 01:00:24,840 --> 01:00:28,510 Więc nawet jeśli nie po naszej Pseudo-kod linii na linię, to masz 1209 01:00:28,510 --> 01:00:31,130 zdobyć wszystko, ale dwóch linii kod potrzebny do napisania. 1210 01:00:31,130 --> 01:00:33,900 >> I byłbym skłonny się założyć, że chłopaki by się zorientowali, że się wszystko 1211 01:00:33,900 --> 01:00:37,940 dość szybko, że trzeba umieścić jakiś tam znacznik, aby dowiedzieć 1212 01:00:37,940 --> 01:00:39,190 się, gdzie jesteś. 1213 01:00:39,190 --> 01:00:41,540 1214 01:00:41,540 --> 01:00:44,550 Że znowu jest moc robi pseudo-kodu przed czasem. 1215 01:00:44,550 --> 01:00:47,310 Więc co możemy zrobić logikę, a potem możemy się martwić o składni. 1216 01:00:47,310 --> 01:00:51,470 >> Gdybyśmy zostali wprowadzeni w błąd na temat logiki , starając się napisać kod w C, 1217 01:00:51,470 --> 01:00:53,110 by nam się zdobyć wszystko pomieszane. 1218 01:00:53,110 --> 01:00:56,340 A potem my się pytania o logika i składnia i siatki 1219 01:00:56,340 --> 01:00:57,320 je wszystkie razem. 1220 01:00:57,320 --> 01:01:02,170 I chcemy zdobyć zaginione w tym, co może szybko stać się 1221 01:01:02,170 --> 01:01:04,000 bardzo trudny problem. 1222 01:01:04,000 --> 01:01:08,680 Więc przejdźmy teraz do wyboru rodzaju. 1223 01:01:08,680 --> 01:01:10,760 >> Mamy 20 minut przed końcem. 1224 01:01:10,760 --> 01:01:14,130 Tak, mam wrażenie, że nie będzie w stanie przejść przez wszystkie wyboru rodzaju 1225 01:01:14,130 --> 01:01:15,940 i sortowanie bąbelkowe. 1226 01:01:15,940 --> 01:01:20,670 Ale niech nam przynajmniej próba , aby zakończyć wybór rodzaju. 1227 01:01:20,670 --> 01:01:23,540 Więc wdrożyć wybór sortowania przy użyciu następujących deklaracji funkcji. 1228 01:01:23,540 --> 01:01:27,530 >> Ponownie, to jest z Problem ustawić specyfikację. 1229 01:01:27,530 --> 01:01:31,560 Wartości int jest wsporniki, jest tablica liczb całkowitych. 1230 01:01:31,560 --> 01:01:33,490 I int.n jest rozmiar tej tablicy. 1231 01:01:33,490 --> 01:01:36,840 Wybór sortowania będzie aby posortować tę tablicę. 1232 01:01:36,840 --> 01:01:43,580 >> Więc na nasze psychiczne modelu wyboru sortowania, możemy wyciągnąć - 1233 01:01:43,580 --> 01:01:47,720 Najpierw idziemy listę pierwsza czas, znaleźć najmniejszą liczbę, 1234 01:01:47,720 --> 01:01:52,860 umieścić go na początku, znaleźć drugą Najmniej, umieścić go w 1235 01:01:52,860 --> 01:01:56,380 Druga pozycja, jeśli chcemy sortowania w porządku rosnącym. 1236 01:01:56,380 --> 01:01:58,440 Nie zmusza do pisania pseudo-kod teraz. 1237 01:01:58,440 --> 01:02:01,350 >> Ale zanim to zrobimy, jak kod w klasie pięć minut będziemy pisać 1238 01:02:01,350 --> 01:02:03,550 pseudo-kodu, więc mamy pewne poczucie od tego, gdzie jedziemy. 1239 01:02:03,550 --> 01:02:05,630 Więc próbuj pisać pseudo-kod na własną rękę. 1240 01:02:05,630 --> 01:02:08,610 A następnie próbować to zmienić pseudo-kodu do kodu. 1241 01:02:08,610 --> 01:02:10,740 Zrobimy to w grupie w ciągu pięciu minut. 1242 01:02:10,740 --> 01:02:32,560 1243 01:02:32,560 --> 01:02:33,895 >> I oczywiście, daj mi znać, jeśli masz jakieś pytania. 1244 01:02:33,895 --> 01:03:56,738 1245 01:03:56,738 --> 01:03:58,230 >> Student: To prawda? 1246 01:03:58,230 --> 01:04:00,280 >> JASON Hirschhorn: Zobacz jak daleko można uzyskać w dwóch minut. 1247 01:04:00,280 --> 01:04:01,790 Rozumiem, że nie będzie w stanie zakończyć. 1248 01:04:01,790 --> 01:04:03,050 Ale pójdziemy na to jako grupa. 1249 01:04:03,050 --> 01:04:57,830 1250 01:04:57,830 --> 01:05:00,630 >> Masz wszystko kodowania tak [niesłyszalne], więc jestem Przepraszamy, aby zatrzymać to, co robisz. 1251 01:05:00,630 --> 01:05:02,530 Ale idziemy przez to jako grupa. 1252 01:05:02,530 --> 01:05:07,590 I znowu, wyszukiwanie binarne, to wszystko daje ja jeden, jeśli nie więcej linii kodu. 1253 01:05:07,590 --> 01:05:08,530 Dziękujemy za to. 1254 01:05:08,530 --> 01:05:11,730 Mamy zamiar zrobić to samo Tutaj kodu razem w grupy. 1255 01:05:11,730 --> 01:05:15,170 >> Więc wybór sortowania - napiszmy niektóre szybkie pseudo-kod. 1256 01:05:15,170 --> 01:05:20,380 Na modelu psychicznego, może ktoś mi dać Pierwsza linia pseudo-kodu, proszę? 1257 01:05:20,380 --> 01:05:23,000 1258 01:05:23,000 --> 01:05:24,270 Co chcę zrobić? 1259 01:05:24,270 --> 01:05:27,070 >> STUDENT: Chociaż lista jest w porządku. 1260 01:05:27,070 --> 01:05:30,630 >> JASON Hirschhorn: OK, a Lista jest w porządku. 1261 01:05:30,630 --> 01:05:33,540 A co masz na myśli "w porządku?" 1262 01:05:33,540 --> 01:05:34,960 >> STUDENT: Podczas [niesłyszalne] 1263 01:05:34,960 --> 01:05:36,210 nie zostały posortowane. 1264 01:05:36,210 --> 01:05:38,460 1265 01:05:38,460 --> 01:05:40,290 >> JASON Hirschhorn: Chociaż lista jest w porządku, co robimy? 1266 01:05:40,290 --> 01:05:44,200 Daj mi drugą linię, proszę, Marcus. 1267 01:05:44,200 --> 01:05:47,186 >> STUDENT: Więc znaleźć następne najmniejsza liczba. 1268 01:05:47,186 --> 01:05:49,000 To będzie wcięty. 1269 01:05:49,000 --> 01:05:55,140 >> JASON Hirschhorn: Więc znaleźć następna najmniejsza liczba. 1270 01:05:55,140 --> 01:05:56,460 A potem ktoś inny? 1271 01:05:56,460 --> 01:06:01,030 Po znaleźć następna najmniejsza liczba, co robimy? 1272 01:06:01,030 --> 01:06:03,010 Idę powiedzieć znaleźć najmniejsza liczba. 1273 01:06:03,010 --> 01:06:04,820 To jest to, co chcemy zrobić. 1274 01:06:04,820 --> 01:06:06,210 >> Więc znaleźć najmniejszą liczbę. 1275 01:06:06,210 --> 01:06:08,061 To co robimy? 1276 01:06:08,061 --> 01:06:09,480 >> STUDENT: [niesłyszalne] do początku. 1277 01:06:09,480 --> 01:06:10,680 >> JASON Hirschhorn: Przepraszam? 1278 01:06:10,680 --> 01:06:12,700 >> STUDENT: Umieścić w początku listy. 1279 01:06:12,700 --> 01:06:18,540 >> JASON Hirschhorn: Więc umieścić go w początek listy. 1280 01:06:18,540 --> 01:06:20,140 I co robimy na rzecz to było na początku 1281 01:06:20,140 --> 01:06:20,830 z listy, prawda? 1282 01:06:20,830 --> 01:06:21,910 Jesteśmy nadpisywania coś. 1283 01:06:21,910 --> 01:06:23,130 Więc gdzie stawiamy, że? 1284 01:06:23,130 --> 01:06:24,120 Tak, Anno? 1285 01:06:24,120 --> 01:06:25,520 >> Student: Gdzie najmniejsza Numer był? 1286 01:06:25,520 --> 01:06:32,530 >> JASON Hirshhorn: Więc umieścić początek z wykazu, gdzie 1287 01:06:32,530 --> 01:06:35,180 Najmniej było. 1288 01:06:35,180 --> 01:06:38,510 Tak więc, podczas gdy lista jest w porządku, znaleźć najmniejsza liczba, należy umieścić go w 1289 01:06:38,510 --> 01:06:40,630 początek listy, umieść początku listy, w których 1290 01:06:40,630 --> 01:06:42,900 Najmniej było. 1291 01:06:42,900 --> 01:06:45,780 Marcus, można przeformułować tę linię podczas gdy lista jest w porządku? 1292 01:06:45,780 --> 01:06:51,160 1293 01:06:51,160 --> 01:06:53,900 >> STUDENT: Podczas gdy liczba nie zostały posortowane? 1294 01:06:53,900 --> 01:06:55,920 >> JASON Hirshhorn: OK, więc w celu wiedzieć, że numery nie zostały 1295 01:06:55,920 --> 01:06:58,670 sortowane, co musimy zrobić? 1296 01:06:58,670 --> 01:07:00,640 Ile musimy przejść tej liście? 1297 01:07:00,640 --> 01:07:09,650 >> STUDENT: Więc chyba na pętli, lub podczas, gdy liczba jest mniejsza sprawdzone 1298 01:07:09,650 --> 01:07:11,900 od długości listy? 1299 01:07:11,900 --> 01:07:13,160 >> JASON Hirshhorn: OK, to dobrze. 1300 01:07:13,160 --> 01:07:15,000 Myślę misphrased moje pytanie źle. 1301 01:07:15,000 --> 01:07:15,990 Chciałem tylko, aby w będziemy musieli iść 1302 01:07:15,990 --> 01:07:17,580 całej listy. 1303 01:07:17,580 --> 01:07:20,490 Tak więc, podczas gdy lista jest w porządku, dla mnie jest trudne do mapy na. 1304 01:07:20,490 --> 01:07:24,940 Ale w zasadzie, to jak Myślę o tym. 1305 01:07:24,940 --> 01:07:28,880 Przejść przez całą listę, znaleźć najmniejsza liczba, należy umieścić go w 1306 01:07:28,880 --> 01:07:30,130 począwszy - faktycznie, masz rację. 1307 01:07:30,130 --> 01:07:31,380 Postawmy ich obu. 1308 01:07:31,380 --> 01:07:33,470 1309 01:07:33,470 --> 01:07:39,050 >> Tak więc, podczas gdy lista jest w porządku, my trzeba przejść przez całą listę 1310 01:07:39,050 --> 01:07:42,250 raz, znaleźć najmniejszą liczbę, miejsce to na początku listy, umieść 1311 01:07:42,250 --> 01:07:45,430 początek listy gdzie Najmniej było, a następnie, jeśli 1312 01:07:45,430 --> 01:07:47,460 Lista jest nadal w porządku, mamy iść przez to 1313 01:07:47,460 --> 01:07:48,620 Proces ponownie, prawda? 1314 01:07:48,620 --> 01:07:51,610 Dlatego wybór rodzaju, Big-O Runtime od wyboru rodzaju, ktoś? 1315 01:07:51,610 --> 01:07:52,830 >> STUDENT: n do kwadratu. 1316 01:07:52,830 --> 01:07:53,590 >> JASON Hirshhorn: n do kwadratu. 1317 01:07:53,590 --> 01:07:57,040 Bo jak Marcus i zdałem sobie sprawę, tu, będziemy musieli 1318 01:07:57,040 --> 01:08:00,310 przejść przez listę listę liczbę razy. 1319 01:08:00,310 --> 01:08:03,420 Tak przeżywa coś w Długość n n liczbę razy 1320 01:08:03,420 --> 01:08:04,990 jest w rzeczywistości n do kwadratu. 1321 01:08:04,990 --> 01:08:08,100 >> Więc to jest nasz pseudokod. 1322 01:08:08,100 --> 01:08:09,360 To wygląda bardzo dobrze. 1323 01:08:09,360 --> 01:08:11,870 Czy ktoś ma jakieś pytania o Pseudokod? 1324 01:08:11,870 --> 01:08:14,440 Bo rzeczywiście wybór sortowania powinny Prawdopodobnie pochodzą 12:59, kodu z 1325 01:08:14,440 --> 01:08:14,980 pseudokod. 1326 01:08:14,980 --> 01:08:17,569 Więc wszelkie pytania dotyczące logika Pseudokod? 1327 01:08:17,569 --> 01:08:18,819 Proszę zapytać go teraz. 1328 01:08:18,819 --> 01:08:22,609 1329 01:08:22,609 --> 01:08:25,379 >> Wybór sortowania - a lista jest obecnie porządku, będziemy przechodzić przez to 1330 01:08:25,379 --> 01:08:27,529 i znaleźć najmniejszą każdym i umieścić go z przodu. 1331 01:08:27,529 --> 01:08:33,470 Tak więc, podczas gdy lista jest w porządku, może ktoś dał mi ten wiersz kodu, który 1332 01:08:33,470 --> 01:08:39,689 nie dał mi wiersz kodu jeszcze, proszę? 1333 01:08:39,689 --> 01:08:40,939 To brzmi jak co? 1334 01:08:40,939 --> 01:08:43,669 1335 01:08:43,669 --> 01:08:44,649 >> Student: To dla pętli. 1336 01:08:44,649 --> 01:08:45,830 >> JASON Hirshhorn: To brzmi jak dla pętli. 1337 01:08:45,830 --> 01:08:47,653 OK, możesz dać mi do pętli? 1338 01:08:47,653 --> 01:08:48,925 Na - 1339 01:08:48,925 --> 01:08:50,219 >> STUDENT: i jest równa 0. 1340 01:08:50,219 --> 01:08:52,705 >> JASON Hirshhorn: i czy - 1341 01:08:52,705 --> 01:08:55,111 Co nam brakuje? 1342 01:08:55,111 --> 01:08:56,819 Co się dzieje tutaj? 1343 01:08:56,819 --> 01:08:57,550 >> STUDENT: Int.. 1344 01:08:57,550 --> 01:08:59,270 >> JASON Hirshhorn: Dokładnie. 1345 01:08:59,270 --> 01:09:02,590 (Int i = 0; - 1346 01:09:02,590 --> 01:09:07,843 >> STUDENT: i 01:09:09,319 >> JASON Hirshhorn: Nailed to, Jeff. 1348 01:09:09,319 --> 01:09:10,660 Jedziemy przez liście, prawda? 1349 01:09:10,660 --> 01:09:11,880 Widzieliśmy, że kod wcześniej. 1350 01:09:11,880 --> 01:09:12,850 Idealny. 1351 01:09:12,850 --> 01:09:14,790 Więc postawmy nasze nawiasy klamrowe tutaj. 1352 01:09:14,790 --> 01:09:17,859 Mam zamiar umieścić kilka nawiasy klamrowe tutaj. 1353 01:09:17,859 --> 01:09:21,660 >> Tak więc, jest to 0, musimy przejść przez całą listę. 1354 01:09:21,660 --> 01:09:26,612 Więc za każdym razem idziemy przez liście, co chcemy śledzić? 1355 01:09:26,612 --> 01:09:28,260 >> STUDENT: Jeśli jakieś swapy są wykonane. 1356 01:09:28,260 --> 01:09:29,069 >> JASON Hirshhorn: Znajdź najmniejsza liczba. 1357 01:09:29,069 --> 01:09:31,479 Powinniśmy więc chyba śledzić Najmniej za każdym razem. 1358 01:09:31,479 --> 01:09:34,590 Więc linia mogę zrobić, aby śledzić najmniejszej liczby? 1359 01:09:34,590 --> 01:09:37,720 Aleha, w jaki sposób można zachować utwór z czymś? 1360 01:09:37,720 --> 01:09:38,460 >> STUDENT: Rozpocznij nową zmienną. 1361 01:09:38,460 --> 01:09:39,390 >> JASON Hirshhorn: Rozpocznij nową zmienną. 1362 01:09:39,390 --> 01:09:40,069 Więc stwórzmy zmienną. 1363 01:09:40,069 --> 01:09:41,830 Jaki rodzaj? 1364 01:09:41,830 --> 01:09:42,930 >> STUDENT: Int.. 1365 01:09:42,930 --> 01:09:43,710 >> JASON Hirshhorn: Int.. 1366 01:09:43,710 --> 01:09:44,939 Nazwijmy to najmniejsza. 1367 01:09:44,939 --> 01:09:47,600 I co prawda równe, gdy my dopiero zaczynasz? 1368 01:09:47,600 --> 01:09:48,910 Nie przeszły jeszcze listy. 1369 01:09:48,910 --> 01:09:50,540 Jesteśmy w pierwszej części listy nasz pierwszy raz dzięki. 1370 01:09:50,540 --> 01:09:51,930 Co prawda równe, najmniejsza liczba? 1371 01:09:51,930 --> 01:09:54,140 >> STUDENT: wartości i. 1372 01:09:54,140 --> 01:09:54,900 >> JASON Hirshhorn: wartości i. 1373 01:09:54,900 --> 01:09:56,980 To brzmi dokładnie prawo, prawda? 1374 01:09:56,980 --> 01:09:59,590 Najmniej na początku to, gdzie jesteśmy. 1375 01:09:59,590 --> 01:10:01,960 Więc teraz mamy nasz najmniejszy, i musimy przejść przez całą listę i 1376 01:10:01,960 --> 01:10:05,080 porównać to najmniejsza do wszystkiego innego. 1377 01:10:05,080 --> 01:10:08,150 Więc idziemy listę jeszcze raz? 1378 01:10:08,150 --> 01:10:08,630 Michael? 1379 01:10:08,630 --> 01:10:10,000 >> STUDENT: Musisz zrobić kolejny na pętli. 1380 01:10:10,000 --> 01:10:10,383 >> JASON Hirshhorn: Kolejna pętla. 1381 01:10:10,383 --> 01:10:11,276 Zróbmy to. 1382 01:10:11,276 --> 01:10:12,540 Daj mi jakiś kod. 1383 01:10:12,540 --> 01:10:13,790 >> UCZEŃ: Na pętli - 1384 01:10:13,790 --> 01:10:16,750 1385 01:10:16,750 --> 01:10:19,470 na najmniejszy - 1386 01:10:19,470 --> 01:10:23,040 1387 01:10:23,040 --> 01:10:25,770 tylko int j, można powiedzieć? 1388 01:10:25,770 --> 01:10:31,150 = 0, tak że - 1389 01:10:31,150 --> 01:10:34,014 1390 01:10:34,014 --> 01:10:35,710 >> JASON Hirshhorn: Cóż, jeśli chcemy przejść przez całą listę - 1391 01:10:35,710 --> 01:10:37,847 >> STUDENT: j 01:10:42,140 1393 01:10:42,140 --> 01:10:42,405 >> JASON Hirshhorn: Fantastic. 1394 01:10:42,405 --> 01:10:46,100 Mamy zamiar przejść przez do pętli ponownie. 1395 01:10:46,100 --> 01:10:51,380 I jak znaleźć najmniejsza liczba? 1396 01:10:51,380 --> 01:10:52,630 Tom? 1397 01:10:52,630 --> 01:10:54,570 1398 01:10:54,570 --> 01:11:00,520 Posiadamy aktualną najmniejszą liczbę, Jak więc znaleźć nowy najmniejszy? 1399 01:11:00,520 --> 01:11:07,200 >> STUDENT: Możemy sprawdzić, czy najmniejszy Numer mamy jest większa niż 1400 01:11:07,200 --> 01:11:09,040 wartości uchwytu j. 1401 01:11:09,040 --> 01:11:14,740 >> JASON Hirshhorn: Więc jeśli jest najmniejsza większe niż wartości uchwytu j. 1402 01:11:14,740 --> 01:11:19,350 Więc jeśli nasz obecny najmniejsza jest większa niż - 1403 01:11:19,350 --> 01:11:21,770 Mam zamiar przenieść te dwie linie kodu tam na chwilę. 1404 01:11:21,770 --> 01:11:26,010 Bo przed nami żadnych swapping, my trzeba przejść przez całą listę. 1405 01:11:26,010 --> 01:11:28,880 Więc to pseudokod powinien właściwie na zewnątrz, że wewnętrzna pętla for. 1406 01:11:28,880 --> 01:11:30,390 Tak więc przejść przez całą listę. 1407 01:11:30,390 --> 01:11:34,520 Jeśli jest większa niż najmniejsza wartości j, to co? 1408 01:11:34,520 --> 01:11:37,830 >> Uczeń: Zatem najmniejsza równa wartości j. 1409 01:11:37,830 --> 01:11:41,190 1410 01:11:41,190 --> 01:11:42,600 >> JASON Hirshhorn: Fantastic. 1411 01:11:42,600 --> 01:11:44,580 Jedno szybkie pytanie - 1412 01:11:44,580 --> 01:11:47,236 Pierwszy raz przejść przez tę pętlę, I będzie równa 0, j będzie 1413 01:11:47,236 --> 01:11:50,710 równa 0 raz mamy tutaj. 1414 01:11:50,710 --> 01:11:52,410 Więc idziemy do porównania numer siebie. 1415 01:11:52,410 --> 01:11:53,660 Jest to, że wydajny? 1416 01:11:53,660 --> 01:11:57,260 1417 01:11:57,260 --> 01:11:58,390 Nie, to naprawdę nie jest wydajny. 1418 01:11:58,390 --> 01:12:02,915 Tak ma nasz j trzeba iść od 0 do n każdorazowo? 1419 01:12:02,915 --> 01:12:06,310 Czy zawsze należy sprawdzić całą listę? 1420 01:12:06,310 --> 01:12:06,520 [Niesłyszalne]? 1421 01:12:06,520 --> 01:12:07,564 >> STUDENT: Start z I zamiast. 1422 01:12:07,564 --> 01:12:09,405 >> JASON Hirshhorn: j puszka zacząć od czego? 1423 01:12:09,405 --> 01:12:09,990 >> Student:. 1424 01:12:09,990 --> 01:12:13,040 >> JASON Hirshhorn: j może zacząć i. 1425 01:12:13,040 --> 01:12:18,840 Teraz porównujemy począwszy z jednej Jesteśmy na. 1426 01:12:18,840 --> 01:12:21,020 Ale nawet wtedy, jest to, że jako efektywny, jak to możliwe? 1427 01:12:21,020 --> 01:12:22,320 >> Student: + 1. 1428 01:12:22,320 --> 01:12:25,420 >> JASON Hirshhorn: i + 1 wydaje się być Najbardziej skuteczne, ponieważ 1429 01:12:25,420 --> 01:12:26,120 już ja. 1430 01:12:26,120 --> 01:12:28,100 Jesteśmy stwierdzając, że jako najmniejsza w linii 15. 1431 01:12:28,100 --> 01:12:29,350 Jedziemy na początek Kolejny automatycznie. 1432 01:12:29,350 --> 01:12:34,470 1433 01:12:34,470 --> 01:12:38,540 Więc przechodzimy do pętli. 1434 01:12:38,540 --> 01:12:39,620 Pójdziemy za każdym razem. 1435 01:12:39,620 --> 01:12:40,860 Pojedziemy przez liczbę razy. 1436 01:12:40,860 --> 01:12:42,860 Teraz staliśmy się przez Ta wewnętrzna pętli. 1437 01:12:42,860 --> 01:12:44,350 Mamy najmniejszą wartość oszczędza. 1438 01:12:44,350 --> 01:12:46,045 Musimy umieścić go w początku listy. 1439 01:12:46,045 --> 01:12:48,390 Więc jak mogę umieścić go na początku listy? 1440 01:12:48,390 --> 01:12:51,290 1441 01:12:51,290 --> 01:12:55,926 Co to jest zmienna, która odnosi na początku listy? 1442 01:12:55,926 --> 01:13:00,500 Jesteśmy w tej zewnętrznej pętli for, więc to, co odnosi się do 1443 01:13:00,500 --> 01:13:01,280 początku listy? 1444 01:13:01,280 --> 01:13:02,880 >> STUDENT: wartości i. 1445 01:13:02,880 --> 01:13:03,510 >> JASON Hirshhorn: Dokładnie tak. 1446 01:13:03,510 --> 01:13:04,650 Wartości i jest początkiem - 1447 01:13:04,650 --> 01:13:06,320 i przepraszam, nie początek. 1448 01:13:06,320 --> 01:13:07,090 To było dziwne. 1449 01:13:07,090 --> 01:13:11,620 To gdzie my jesteśmy na początku nieposortowane część listy. 1450 01:13:11,620 --> 01:13:12,800 Więc wartości i. 1451 01:13:12,800 --> 01:13:14,050 I co to są równe? 1452 01:13:14,050 --> 01:13:15,925 1453 01:13:15,925 --> 01:13:17,326 >> STUDENT: Najmniejszy. 1454 01:13:17,326 --> 01:13:18,862 >> JASON Hirshhorn: wartości i równa co? 1455 01:13:18,862 --> 01:13:19,310 >> STUDENT: Najmniejszy. 1456 01:13:19,310 --> 01:13:20,030 >> JASON Hirshhorn: Najmniejszy. 1457 01:13:20,030 --> 01:13:20,980 Dokładnie tak. 1458 01:13:20,980 --> 01:13:23,510 Więc my umieszczenie go na początku z listy, a teraz musimy postawić 1459 01:13:23,510 --> 01:13:25,710 początek listy gdzie Najmniej było. 1460 01:13:25,710 --> 01:13:29,700 Więc jak mam napisać, gdzie Najmniej było? 1461 01:13:29,700 --> 01:13:31,670 Wartości co? 1462 01:13:31,670 --> 01:13:33,170 >> STUDENT: 0. 1463 01:13:33,170 --> 01:13:34,090 >> JASON Hirshhorn: mały Numer znajduje się na 0? 1464 01:13:34,090 --> 01:13:35,340 >> Uczeń: Tak. 1465 01:13:35,340 --> 01:13:38,680 1466 01:13:38,680 --> 01:13:39,910 >> JASON Hirshhorn: Co zrobić, jeśli najmniejsza liczba była pod koniec 1467 01:13:39,910 --> 01:13:40,860 to nieposortowane listy? 1468 01:13:40,860 --> 01:13:42,460 >> Student: Przepraszam, jakie było pytanie? 1469 01:13:42,460 --> 01:13:44,020 >> JASON Hirshhorn: Gdzie jest najmniejsza liczba? 1470 01:13:44,020 --> 01:13:46,940 Wzięliśmy najmniejszy i umieścić go w począwszy, z tej linii tutaj. 1471 01:13:46,940 --> 01:13:48,987 >> STUDENT: Należy mieć przechowywano w niektórych - 1472 01:13:48,987 --> 01:13:50,510 >> STUDENT: wartości j. 1473 01:13:50,510 --> 01:13:51,520 >> JASON Hirshhorn: Dobrze, to jest niekoniecznie ceni j. 1474 01:13:51,520 --> 01:13:54,100 To nawet nie istnieje w tym momencie. 1475 01:13:54,100 --> 01:13:55,960 >> STUDENT: Musisz zadeklarować wcześniej i zmienna 1476 01:13:55,960 --> 01:13:58,230 a następnie przypisać ją do - 1477 01:13:58,230 --> 01:14:01,150 gdy znajdziesz najmniejszą liczbę, przypisać wskaźnik tej liczby 1478 01:14:01,150 --> 01:14:02,480 niektóre zmienne lub coś w tym stylu. 1479 01:14:02,480 --> 01:14:04,790 >> JASON Hirshhorn: Więc może można powiedzieć, że znowu? 1480 01:14:04,790 --> 01:14:08,390 >> STUDENT: Więc, gdzie oświadczył, int najmniejsza, należy również zadeklarować int 1481 01:14:08,390 --> 01:14:10,750 Najmniejszy wskaźnik = i, lub coś w tym stylu. 1482 01:14:10,750 --> 01:14:13,280 >> JASON Hirshhorn: Więc gdzie mam int najmniejsza, należy śledzić nie tylko 1483 01:14:13,280 --> 01:14:16,150 wartości, ale miejsce. 1484 01:14:16,150 --> 01:14:20,850 int smallest_location = w tym przypadku, po prostu nie mogę. 1485 01:14:20,850 --> 01:14:22,390 Musimy wiedzieć, gdzie to jest. 1486 01:14:22,390 --> 01:14:26,820 Dotarliśmy do końca kodu, a my sobie sprawę, że nie miał pojęcia, gdzie to było. 1487 01:14:26,820 --> 01:14:29,810 A więc znowu mamy odwzorowanie to na jeden do jednego. 1488 01:14:29,810 --> 01:14:32,890 Wy kodowania to na własnej woli prawdopodobnie się do tego samego problemu. 1489 01:14:32,890 --> 01:14:34,130 Jak do cholery mam go odnaleźć? 1490 01:14:34,130 --> 01:14:36,720 I wtedy zdajesz sobie sprawę, czekać, trzeba śledzić, że. 1491 01:14:36,720 --> 01:14:38,500 >> Więc jeśli najmniejsza jest większa niż wartości j. 1492 01:14:38,500 --> 01:14:39,740 Stawiamy najmniejsza równa wartości j. 1493 01:14:39,740 --> 01:14:42,090 Co jeszcze trzeba zmienić? 1494 01:14:42,090 --> 01:14:43,710 Constantin, co jeszcze zrobić, musimy zmienić? 1495 01:14:43,710 --> 01:14:44,560 >> STUDENT: lokalizacja. 1496 01:14:44,560 --> 01:14:45,270 >> JASON Hirshhorn: Dokładnie. 1497 01:14:45,270 --> 01:14:46,925 Więc daj mi tę linię w kodzie. 1498 01:14:46,925 --> 01:14:53,310 >> STUDENT: smallest_location = j. 1499 01:14:53,310 --> 01:14:54,790 >> JASON Hirshhorn: Dokładnie. 1500 01:14:54,790 --> 01:14:58,210 , A następnie w dół na koniec, jeśli chcemy umieścić na początku listy, w których 1501 01:14:58,210 --> 01:15:00,790 Najmniej było, jak Nie mamy na myśli, gdy 1502 01:15:00,790 --> 01:15:02,200 Najmniej było? 1503 01:15:02,200 --> 01:15:03,580 Marcus? 1504 01:15:03,580 --> 01:15:08,530 >> STUDENT: Najmniej było położony w najmniejszym miejscu. 1505 01:15:08,530 --> 01:15:12,230 >> JASON Hirshhorn: Więc na wartości smallest_location. 1506 01:15:12,230 --> 01:15:14,700 A co my tam umieścić? 1507 01:15:14,700 --> 01:15:17,600 Początek lista, co to jest? 1508 01:15:17,600 --> 01:15:19,710 >> STUDENT: Cóż, naprawdę nie wiem ponieważ już mamy nadpisałeś. 1509 01:15:19,710 --> 01:15:23,250 Więc jest to zamienione lokalizacje z tych dwóch linii? 1510 01:15:23,250 --> 01:15:26,110 Jeśli zmienisz te dwie linie wokół. 1511 01:15:26,110 --> 01:15:30,740 >> JASON Hirshhorn: OK, więc nie mamy więcej, ponieważ mamy zresetować linię 1512 01:15:30,740 --> 01:15:31,960 przed wartościami i do najmniejszego. 1513 01:15:31,960 --> 01:15:33,810 Więc straciliśmy tę wartość początkową. 1514 01:15:33,810 --> 01:15:37,350 Więc powiedział Swap te dwie linie. 1515 01:15:37,350 --> 01:15:41,780 Więc teraz umieścić początek listy gdzie najmniejsza liczba była. 1516 01:15:41,780 --> 01:15:47,060 Więc smallest_location równa wartości i. 1517 01:15:47,060 --> 01:15:51,310 Który rusza na początku tego nieposortowane część listy do 1518 01:15:51,310 --> 01:15:52,090 Najmniejszy lokalizacja. 1519 01:15:52,090 --> 01:15:54,860 A następnie na wartości i ruszamy że najmniejsza liczba. 1520 01:15:54,860 --> 01:15:57,450 >> Czy to ma sens, dlaczego musiał dokonać tej wymiany? 1521 01:15:57,450 --> 01:15:59,650 Byśmy nadpisane tej wartości - inna rzecz, że prawdopodobnie będzie musiał 1522 01:15:59,650 --> 01:16:02,740 zorientowali się i znaleźć w PKB. 1523 01:16:02,740 --> 01:16:05,310 Więc mamy pod opieką wszystko pseudokod. 1524 01:16:05,310 --> 01:16:10,935 Czy coś jeszcze możemy trzeba pisać tutaj? 1525 01:16:10,935 --> 01:16:14,911 Czy ktoś może myśleć o niczym? 1526 01:16:14,911 --> 01:16:16,180 >> STUDENT: Skąd wiesz, że kiedy skończysz? 1527 01:16:16,180 --> 01:16:17,680 >> JASON Hirshhorn: Jak możemy wiem kiedy skończymy? 1528 01:16:17,680 --> 01:16:18,890 Wielkie pytanie. 1529 01:16:18,890 --> 01:16:21,684 Więc skąd mamy wiedzieć, kiedy skończymy. 1530 01:16:21,684 --> 01:16:24,720 >> STUDENT: Tworzenie zmiennej, aby utrzymać liczbę o jeśli jest wykonana lub nie wymiany 1531 01:16:24,720 --> 01:16:27,810 i przejść przez przełęcz. 1532 01:16:27,810 --> 01:16:30,180 >> JASON Hirshhorn: OK. 1533 01:16:30,180 --> 01:16:31,800 , Że będzie działać w bubble rodzaju. 1534 01:16:31,800 --> 01:16:35,210 Ale dla wyboru rodzaju, jeśli tego nie zrobimy zrobić swap, że może być tylko 1535 01:16:35,210 --> 01:16:38,670 ponieważ najmniejsza wartość jest w tym jego położenie. 1536 01:16:38,670 --> 01:16:41,240 Możemy mieć listę 1, 2, 4, 3. 1537 01:16:41,240 --> 01:16:42,830 My raz drugi przez nie będzie żadnych swapów. 1538 01:16:42,830 --> 01:16:47,260 Będziemy z numerem 2, ale będzie nadal trzeba iść dalej. 1539 01:16:47,260 --> 01:16:49,390 Więc nie musimy śledzić, kiedy skończymy, czy też po prostu chcesz iść 1540 01:16:49,390 --> 01:16:50,640 dopóki ta jest zakończona? 1541 01:16:50,640 --> 01:16:54,098 1542 01:16:54,098 --> 01:16:56,740 >> STUDENT: Możemy pójść przed jego zakończeniem. 1543 01:16:56,740 --> 01:16:58,090 >> JASON Hirshhorn: Możemy tylko go, aż ten się skończył. 1544 01:16:58,090 --> 01:17:01,720 W sortowanie bąbelkowe, jesteś dokładnie prawo, Jeff i Aleha, z roztworu - 1545 01:17:01,720 --> 01:17:04,990 to jest wielki, aby śledzić, ile Swapy zrobiłeś, bo w bańce 1546 01:17:04,990 --> 01:17:07,920 sortowania, jeśli nie w tym, aby nie swapy, gotowe i można może obniżyć 1547 01:17:07,920 --> 01:17:09,000 Problem nieco w dół. 1548 01:17:09,000 --> 01:17:11,440 Ale dla wyboru rodzaju, masz naprawdę iść aż do końca 1549 01:17:11,440 --> 01:17:14,940 listy za każdym razem. 1550 01:17:14,940 --> 01:17:16,200 >> Więc to jest to. 1551 01:17:16,200 --> 01:17:18,530 Mamy dwie minuty. 1552 01:17:18,530 --> 01:17:21,560 Zróbmy wszystko. 1553 01:17:21,560 --> 01:17:24,340 Pozwólcie mi tylko otwarte Znajdź tutaj i zrobić pewien jestem w rzeczywistości wywołanie - 1554 01:17:24,340 --> 01:17:25,610 Nie nazywam sortowania bąbelkowego. 1555 01:17:25,610 --> 01:17:29,230 Zmieńmy to do wyboru rodzaju. 1556 01:17:29,230 --> 01:17:31,060 zrobić wszystko. / znaleźć. 1557 01:17:31,060 --> 01:17:32,360 Przekonajmy 42. 1558 01:17:32,360 --> 01:17:38,110 Tym razem mamy zamiar przejść nieposortowane listy, ponieważ powinien posortować 1559 01:17:38,110 --> 01:17:43,790 Najpierw, za kodem find - powinny sortować Najpierw za pomocą naszej funkcji sortowania, a następnie 1560 01:17:43,790 --> 01:17:44,995 szukać czegoś. 1561 01:17:44,995 --> 01:17:46,245 Kciuki wszystkich. 1562 01:17:46,245 --> 01:17:48,530 1563 01:17:48,530 --> 01:17:49,370 >> O mój Boże. 1564 01:17:49,370 --> 01:17:50,800 Wow, moje serce biło. 1565 01:17:50,800 --> 01:17:52,320 Tak, że jest poprawne. 1566 01:17:52,320 --> 01:17:57,270 W rzeczywistości, gdyby zabrakło tego więcej szeroko, kod, o ile mogę 1567 01:17:57,270 --> 01:17:59,280 powiedzieć, jest całkowicie prawidłowe. 1568 01:17:59,280 --> 01:18:02,150 Istnieją pewne sugestie Chciałbym mieć dla ciebie. 1569 01:18:02,150 --> 01:18:06,215 Na przykład, 15 i 16 wydają trochę zbędne. 1570 01:18:06,215 --> 01:18:09,450 Wydaje się, że nie muszą należy zapisać zarówno tych. 1571 01:18:09,450 --> 01:18:12,790 Jeśli masz najmniejszą lokalizacji, można łatwo znaleźć przez najmniejszą wartość 1572 01:18:12,790 --> 01:18:14,750 wpisując wartości i. 1573 01:18:14,750 --> 01:18:18,100 >> Więc jeśli miałbym być klasyfikacji kodu, które będę w rzeczywistości, chciałbym 1574 01:18:18,100 --> 01:18:21,160 prawdopodobnie zdjąć punkt, jeśli zawarte zarówno z nich, ponieważ 1575 01:18:21,160 --> 01:18:22,670 nie trzeba oba te. 1576 01:18:22,670 --> 01:18:25,400 Jeśli masz miejsce, można bardzo łatwo uzyskać wartość. 1577 01:18:25,400 --> 01:18:27,520 I wydaje się trochę dziwne przechowywanie ich obu. 1578 01:18:27,520 --> 01:18:31,070 Może nawet nie ma punktu, ale oczywiście komentarz, że jest to być może 1579 01:18:31,070 --> 01:18:32,670 nie stylistyczne wybór trzeba zrobić. 1580 01:18:32,670 --> 01:18:35,290 Oczywiście, nadal kod działa doskonale. 1581 01:18:35,290 --> 01:18:36,860 >> Więc niestety nie dostać się do bańki rodzaju. 1582 01:18:36,860 --> 01:18:37,940 Przykro mi z tego powodu. 1583 01:18:37,940 --> 01:18:39,135 Zrobiliśmy wyboru mety rodzaju. 1584 01:18:39,135 --> 01:18:41,450 Czy ktoś ma jakieś pytania końcowe o wybór rodzaju? 1585 01:18:41,450 --> 01:18:44,320 1586 01:18:44,320 --> 01:18:47,690 >> OK, zanim głowę, chcę ci otworzyć przeglądarkę Chrome. 1587 01:18:47,690 --> 01:18:54,340 Niestety, to było po prostu rażącym wtyczka dla jednego typu przeglądarki internetowej. 1588 01:18:54,340 --> 01:18:57,770 Możesz otworzyć dowolny typ przeglądarki, ale to prawdopodobnie Chrome. 1589 01:18:57,770 --> 01:19:01,250 I idź do tego stronie internetowej - 1590 01:19:01,250 --> 01:19:06,410 sayat.me/cs50. 1591 01:19:06,410 --> 01:19:07,685 Jeśli nie masz na komputerze, wpisując teraz, jesteś wyraźnie 1592 01:19:07,685 --> 01:19:10,210 nie robi, Tom. 1593 01:19:10,210 --> 01:19:12,870 >> I proszę to zrobić albo w prawo obecnie lub w ciągu godziny - 1594 01:19:12,870 --> 01:19:14,260 daj mi trochę informacji zwrotnych. 1595 01:19:14,260 --> 01:19:15,660 To jest tylko punkt dwa. 1596 01:19:15,660 --> 01:19:18,060 Mamy o wiele więcej razem, więc dużo miejsca do poprawy. 1597 01:19:18,060 --> 01:19:19,620 I mam nadzieję, że również nie dobrze pewne rzeczy. 1598 01:19:19,620 --> 01:19:22,160 Więc możesz mnie poczuć złe, ale jeśli chcemy także dać mi buźkę 1599 01:19:22,160 --> 01:19:24,250 twarz, byłbym wdzięczny, że dobrze. 1600 01:19:24,250 --> 01:19:25,330 Wypełnij że w. 1601 01:19:25,330 --> 01:19:28,210 >> I jedną minutę w lewo, To było trzy tygodnie. 1602 01:19:28,210 --> 01:19:30,750 Będę stać na zewnątrz na trochę jeśli masz jakiekolwiek pytania. 1603 01:19:30,750 --> 01:19:32,220 Do zobaczenia chłopaki w wykład jutro. 1604 01:19:32,220 --> 01:19:34,742