1 00:00:00,000 --> 00:00:02,880 >> [MUZYKI] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> Głośnik 1: To jest CS50 i to jest początek tygodnia dwa. 4 00:00:13,500 --> 00:00:18,400 Tak, niech nurkować w prawo w coś że jest wadliwy, że tak powiem. 5 00:00:18,400 --> 00:00:24,015 Tak, tutaj jest CS50 IDE i mam zatrzymał się przed tym screen-- cholernie 6 00:00:24,015 --> 00:00:25,070 ono. 7 00:00:25,070 --> 00:00:25,760 Alert spoiler. 8 00:00:25,760 --> 00:00:26,260 W porządku. 9 00:00:26,260 --> 00:00:29,060 Mam ten ekran zatrzymał się tutaj, który ma bardzo prosty program. 10 00:00:29,060 --> 00:00:32,659 Jeśli przewinąć w dół, najbardziej to jest po prostu komentuje, 11 00:00:32,659 --> 00:00:36,730 ale tutaj w linii 13 przez 17 mamy program. 12 00:00:36,730 --> 00:00:40,580 >> To składniowo poprawny, co oznacza, że ​​jeśli Skompilować go, będzie to skompilować i uruchomić, 13 00:00:40,580 --> 00:00:41,920 ale buggy. 14 00:00:41,920 --> 00:00:47,330 Ten program twierdzi w komentarzach do góry, że powinien wydrukować 10 gwiazdek, 15 00:00:47,330 --> 00:00:48,870 ale tak nie jest. 16 00:00:48,870 --> 00:00:53,290 Oraz w oparciu o swoje doświadczenie, lub wkrótce będzie doświadczenie z C, 17 00:00:53,290 --> 00:00:56,820 można logicznie dostrzec Dlatego to jest, w rzeczywistości, uszkodzonych? 18 00:00:56,820 --> 00:00:57,804 Tak? 19 00:00:57,804 --> 00:00:59,220 PUBLICZNOŚCI: To idzie od zera do 10. 20 00:00:59,220 --> 00:01:01,884 To 11 powtórzeń. 21 00:01:01,884 --> 00:01:02,550 1 głośnik: Tak. 22 00:01:02,550 --> 00:01:06,030 Tak, to się dzieje od zera się przez i równy 10, 23 00:01:06,030 --> 00:01:08,140 która jest oczywiście 11 iteracji. 24 00:01:08,140 --> 00:01:10,020 Tak, to będzie druku, rzeczywiście, 11 gwiazdek. 25 00:01:10,020 --> 00:01:13,040 Więc, konwencja informatyka w większości języków programowania 26 00:01:13,040 --> 00:01:15,270 jest, rzeczywiście, po prostu rozpocznie odliczanie od zera, 27 00:01:15,270 --> 00:01:18,800 ale liczyć się, ale nie poprzez wartość, że rzeczywiście zależy. 28 00:01:18,800 --> 00:01:21,216 >> Teraz, to jest jedna rzecz, która zajmuje trochę przyzwyczaić 29 00:01:21,216 --> 00:01:25,350 a nawet zadrapania, zaprojektowany jak to jest dla nie programistów lub brak komputera 30 00:01:25,350 --> 00:01:28,070 naukowcy i dla dzieci w dużym stopniu, jest przeznaczony do 31 00:01:28,070 --> 00:01:29,570 zaczniesz liczyć na ogół w jednym. 32 00:01:29,570 --> 00:01:30,277 I to jest w porządku. 33 00:01:30,277 --> 00:01:33,110 Możesz absolutnie rozpocząć odliczanie w jednym, czy to bardziej komfortowe. 34 00:01:33,110 --> 00:01:37,210 I liczyć do i przez 10, ale zdasz sobie sprawę, szczególnie w tym tygodniu 35 00:01:37,210 --> 00:01:39,950 a poza tym tak wiele rzeczy w programowaniu 36 00:01:39,950 --> 00:01:42,465 Zakładamy, że 0 jest pierwszym cyfrowy, z którą liczą, 37 00:01:42,465 --> 00:01:45,590 że będziesz łatwiej po prostu dostać się do tego zwyczaju rozruchu 38 00:01:45,590 --> 00:01:49,490 od zera i zliczanie wartości Ci zależy teraz od 39 00:01:49,490 --> 00:01:49,990 się udać. 40 00:01:49,990 --> 00:01:50,990 >> Tak, że ustalił, że. 41 00:01:50,990 --> 00:01:53,670 Zmieniono mniejsza niż bądź równa się mniej niż. 42 00:01:53,670 --> 00:01:56,050 Rzućmy okiem na drugi przykład tutaj. 43 00:01:56,050 --> 00:01:59,585 >> Tak, ten program też twierdzi, w jego Komentarz do góry, że powinien wydrukować 44 00:01:59,585 --> 00:02:02,260 dziesięć gwiazdek, ale tak nie jest. 45 00:02:02,260 --> 00:02:05,540 Co to za błąd, tu? 46 00:02:05,540 --> 00:02:07,930 >> Tak, what-- i przepraszam, bądźmy szczerzy. 47 00:02:07,930 --> 00:02:08,610 10 gwiazdki. 48 00:02:08,610 --> 00:02:11,644 Jednej w wierszu, ale tak nie jest. 49 00:02:11,644 --> 00:02:14,810 Tak więc, w rzeczywistości, pozwól mi iść do przodu i skompilować ten jeden, bo to trochę mniej 50 00:02:14,810 --> 00:02:16,900 usunąć na podstawie tego opisu. 51 00:02:16,900 --> 00:02:18,720 Pozwólcie mi odejść do naszego katalogu źródłowego. 52 00:02:18,720 --> 00:02:25,110 Bądź Buggy jeden ukośnik kropka, buggy jeden. 53 00:02:25,110 --> 00:02:28,680 OK, widzę, 11 gwiazd, które nadal jest problematyczne, 54 00:02:28,680 --> 00:02:30,090 ale są również wszystkie w jednej linii. 55 00:02:30,090 --> 00:02:31,500 Co jest problemem tutaj? 56 00:02:31,500 --> 00:02:32,339 Tak. 57 00:02:32,339 --> 00:02:33,255 PUBLICZNOŚCI: [niesłyszalne]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 1 głośnik: Tak. 60 00:02:36,860 --> 00:02:40,210 Więc to jest subtelność, które mogą przypomnieć mi co krótkie wzmianki. 61 00:02:40,210 --> 00:02:42,793 Nawet jeśli wszystko wygląda ładna, i to ładnie wcięty, 62 00:02:42,793 --> 00:02:45,850 i to niby wygląda jak na zarysowania w tym linii 16 i 17 są, 63 00:02:45,850 --> 00:02:47,600 rzeczywiście, wcięte pod że dla pętli. 64 00:02:47,600 --> 00:02:48,400 To nieistotne. 65 00:02:48,400 --> 00:02:50,460 Komputer nie wie lub zobaczyć białą przestrzeń. 66 00:02:50,460 --> 00:02:52,910 Biała przestrzeń jest tylko dla nas, ludzi, stylistycznie. 67 00:02:52,910 --> 00:02:57,010 Komputer wie, kiedy trzeba nawiasy klamrowe, które, rzeczywiście, 68 00:02:57,010 --> 00:02:58,280 rozwiązać ten problem. 69 00:02:58,280 --> 00:03:02,350 >> Tak więc, jeśli rzeczywiście udał się i wyraźnie umieścić w tych klamrach 70 00:03:02,350 --> 00:03:05,220 że będzie rozwiązać ten problem przez co oczywiste, do kompilatora 71 00:03:05,220 --> 00:03:07,930 że rzeczywiście chcesz wykonać dwa wiersze kodu znowu, 72 00:03:07,930 --> 00:03:09,220 i znowu, i znowu. 73 00:03:09,220 --> 00:03:11,680 Ale to, co jest podstawowym wyjaśnienie? 74 00:03:11,680 --> 00:03:12,180 Dobrze? 75 00:03:12,180 --> 00:03:15,260 Nie bezwzględnie konieczne nawiasy, cały czas, 76 00:03:15,260 --> 00:03:18,210 mimo, że jest to prawdopodobnie najlepszy praktyka, aby dostać się do tego zwyczaju tak 77 00:03:18,210 --> 00:03:20,878 chociaż dodaje dwa znaków do kodu. czemu? 78 00:03:20,878 --> 00:03:22,380 >> PUBLICZNOŚCI: [niesłyszalne]? 79 00:03:22,380 --> 00:03:24,630 1 głośnik: Tak, tak to jest inne rozwiązanie całkowicie. 80 00:03:24,630 --> 00:03:25,130 Dobrze? 81 00:03:25,130 --> 00:03:28,250 Zwłaszcza, jeśli na pierwszy rzut oka tego nie zrobisz Naprawdę doceniam to, co się dzieje. 82 00:03:28,250 --> 00:03:31,070 Cóż, z pewnością moglibyśmy po prostu zrobić dwie rzeczy na raz 83 00:03:31,070 --> 00:03:32,710 i po prostu uniknąć problemu całkowicie. 84 00:03:32,710 --> 00:03:36,080 I to jest w porządku, ale teraz, dla dzisiejszych potrzeb, co 85 00:03:36,080 --> 00:03:38,200 jest wyjaśnienie błędu? 86 00:03:38,200 --> 00:03:39,810 Dlaczego te wszystkie gwiazdy na jednej linii? 87 00:03:39,810 --> 00:03:40,806 Tak? 88 00:03:40,806 --> 00:03:43,296 >> PUBLICZNOŚCI: Wydaje się, że jeśli masz jedną linię kodu, 89 00:03:43,296 --> 00:03:46,649 Można to zrobić bez nich. 90 00:03:46,649 --> 00:03:47,440 Głośnik 1: Dokładnie. 91 00:03:47,440 --> 00:03:48,750 To jest po prostu ludzka konwencji. 92 00:03:48,750 --> 00:03:50,750 Ludzie zdają sobie sprawę, że jest to trochę irytujące i uciążliwe 93 00:03:50,750 --> 00:03:53,470 aby umieścić nawiasy klamrowe wszystkie czasu, gdy wszystko, co chcesz zrobić 94 00:03:53,470 --> 00:03:55,090 jest wykonanie jednej linii kodu. 95 00:03:55,090 --> 00:03:57,660 Tak, ludzie postanowili niektóre czas temu, że to jest w porządku. 96 00:03:57,660 --> 00:04:01,180 Jeśli chcesz umieścić wszystkie swoje pętli na tylko tej jednej linii jak to, 97 00:04:01,180 --> 00:04:04,030 to jest w porządku z singlem Średnik na końcu. 98 00:04:04,030 --> 00:04:07,210 Ale można zrobić tylko jedno takie Linia bez nawiasy. 99 00:04:07,210 --> 00:04:09,900 >> Tak więc, gdy przewodnik redakcyjny CS50 jak wskaże Ci, 100 00:04:09,900 --> 00:04:11,980 zobaczysz, że na ogół jest to dobry zwyczaj 101 00:04:11,980 --> 00:04:14,920 aby dostać się do tego momentu, gdy bardzo wygodne błądzą 102 00:04:14,920 --> 00:04:17,404 tych rodzajów konwencji i robić własne rzeczy. 103 00:04:17,404 --> 00:04:18,820 Tak długo, jak jesteś siebie spójne. 104 00:04:18,820 --> 00:04:21,540 I będziemy mówić więcej o styl trochę później dzisiaj. 105 00:04:21,540 --> 00:04:23,200 >> Więc, pozwól mi otworzyć jeden inny program. 106 00:04:23,200 --> 00:04:24,930 Oczywiście, powinniśmy ustalić, że 10, jak również. 107 00:04:24,930 --> 00:04:32,470 Pozwólcie mi iść dalej i napisać prawdziwy szybki program, który zadzwonię, 108 00:04:32,470 --> 00:04:38,140 powiedzmy, pętla dot C. Tak, pętla dot C. A w pętli dot C będę mieć, 109 00:04:38,140 --> 00:04:41,970 to standard I / O Kropka H int main pustkę. 110 00:04:41,970 --> 00:04:44,020 A teraz po prostu zrobić, rzeczywiście, pętla. 111 00:04:44,020 --> 00:04:46,020 Tak, 4 int I dostaje zero. 112 00:04:46,020 --> 00:04:48,660 I jest mniejsza niż, powiedzmy, 50. 113 00:04:48,660 --> 00:04:49,950 Ja plus plus. 114 00:04:49,950 --> 00:04:53,350 A potem tu niech iść do przodu i są drukowane F. 115 00:04:53,350 --> 00:04:56,400 A potem chcę wydrukować I i nowa linia, średnik. 116 00:04:56,400 --> 00:05:00,015 >> I to powinno wydrukować wszystkie Numery od zera do 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Kilka głowa kiwa głową. 119 00:05:03,680 --> 00:05:04,270 Kilka nos. 120 00:05:04,270 --> 00:05:05,339 Co znajduje się już błąd? 121 00:05:05,339 --> 00:05:06,630 Co znajduje się w łatwy błąd zrobiłem? 122 00:05:06,630 --> 00:05:07,170 Tak. 123 00:05:07,170 --> 00:05:08,544 >> PUBLICZNOŚCI: [niesłyszalne]. 124 00:05:08,544 --> 00:05:09,210 1 głośnik: Tak. 125 00:05:09,210 --> 00:05:11,520 Więc nawet jeśli to wygląda jak to jest, co zamierzam, 126 00:05:11,520 --> 00:05:13,920 Przypomnijmy, że jest również tylko znak ASCII. 127 00:05:13,920 --> 00:05:14,955 >> Tak więc, jeśli powiem, print "I." 128 00:05:14,955 --> 00:05:16,670 To dosłownie dzieje wydrukować I. Tak więc, jeśli 129 00:05:16,670 --> 00:05:20,030 chcą wtyczkę zastępczy Wartość I rzeczywiście trzeba to zrobić 130 00:05:20,030 --> 00:05:22,630 a następnie plug-in wartość dynamicznie. 131 00:05:22,630 --> 00:05:25,200 W przeciwnym razie jestem po prostu będzie uzyskać 50 I jest na ekranie. 132 00:05:25,200 --> 00:05:28,140 >> Więc, pozwól mi iść do przodu i dokonać tej pętli, uruchom go, 133 00:05:28,140 --> 00:05:30,650 i rzeczywiście, mamy wszystko aż do 49. 134 00:05:30,650 --> 00:05:34,140 A jeśli przewijać wstecz w czasie widzę liczba zera na początku. 135 00:05:34,140 --> 00:05:36,050 >> A co, jeśli rodzaj zepsuć? 136 00:05:36,050 --> 00:05:37,800 Co zrobić, jeśli mogę to zrobić? 137 00:05:37,800 --> 00:05:40,120 Tylko dlatego, że nie myślę. 138 00:05:40,120 --> 00:05:40,970 Co znajduje się ten program. 139 00:05:40,970 --> 00:05:43,970 Gdy ponownie skompilowany i uruchomić, zamiar zrobić logicznie? 140 00:05:43,970 --> 00:05:44,870 >> PUBLICZNOŚCI: Nic. 141 00:05:44,870 --> 00:05:45,661 >> Głośnik 1: Nic. 142 00:05:45,661 --> 00:05:47,156 Dlaczego? 143 00:05:47,156 --> 00:05:49,124 >> PUBLICZNOŚCI: I jest przeznaczony do zera. 144 00:05:49,124 --> 00:05:51,899 Tak więc, gdy warunek nie jest. 145 00:05:51,899 --> 00:05:52,940 1 głośnik: Tak, dokładnie. 146 00:05:52,940 --> 00:05:55,110 Cały kod jest poprawny składniowo. 147 00:05:55,110 --> 00:05:57,310 To kompilować, Kod będzie działał, ale to nie jest 148 00:05:57,310 --> 00:06:00,110 zrobić coś pożytecznego bo zainicjować I do zera. 149 00:06:00,110 --> 00:06:02,240 Następnie sprawdzić, czy mam więcej niż 50? 150 00:06:02,240 --> 00:06:03,810 Oczywiście, nie, to nie. 151 00:06:03,810 --> 00:06:05,760 Więc nigdy nie wykonuje pętli w ogóle. 152 00:06:05,760 --> 00:06:09,580 >> Co zrobić, jeśli mamy coś zrobić trochę bardziej lekkomyślni? 153 00:06:09,580 --> 00:06:12,890 Więc co, jeśli robimy jak int I dostaje zero. 154 00:06:12,890 --> 00:06:15,640 A teraz pozwólcie mi użyć czasu Pętla, który był kolejnym warunkiem. 155 00:06:15,640 --> 00:06:21,810 A gdy mówię, a ja jest większa niż lub równa zero, a następnie w tym miejscu I 156 00:06:21,810 --> 00:06:26,070 iść dalej i zapisać plik, zrobić pętlę. 157 00:06:26,070 --> 00:06:27,070 I mam zamiar go uruchomić. 158 00:06:27,070 --> 00:06:30,230 Co ja mam to zobaczyć razem z pętli while? 159 00:06:30,230 --> 00:06:30,852 Tak. 160 00:06:30,852 --> 00:06:32,120 >> PUBLICZNOŚCI: nieskończona pętla? 161 00:06:32,120 --> 00:06:35,360 >> Głośnik 1: nieskończona pętla? 162 00:06:35,360 --> 00:06:36,662 Tak, a dlaczego? 163 00:06:36,662 --> 00:06:38,120 PUBLICZNOŚCI: Bo to zawsze zero. 164 00:06:38,120 --> 00:06:38,786 1 głośnik: Tak. 165 00:06:38,786 --> 00:06:40,100 Tak, jest inicjowany jako zero. 166 00:06:40,100 --> 00:06:44,470 Oczywiście, że jest zawsze większa lub równa 0 oznacza wynik. 167 00:06:44,470 --> 00:06:46,460 Tak, jestem po prostu będzie zobaczyć to w nieskończoność. 168 00:06:46,460 --> 00:06:49,850 A teraz ta ma pochodzić raz lub dwa razy do głowy kursu jest. 169 00:06:49,850 --> 00:06:52,417 Co się dzieje, kiedy mają nieskończoną pętlę? 170 00:06:52,417 --> 00:06:53,314 >> PUBLICZNOŚCI: Kontrola C. 171 00:06:53,314 --> 00:06:53,980 1 głośnik: Tak. 172 00:06:53,980 --> 00:06:56,250 Więc sterowania C w końcu odpowiedział. 173 00:06:56,250 --> 00:06:59,520 Niestety, mamy wydrukowane miliony i miliony zer już 174 00:06:59,520 --> 00:07:01,520 i tak, że komputer ma rodzaj wyprzedził mnie. 175 00:07:01,520 --> 00:07:03,394 Tak, to będzie ignorować mi na trochę. 176 00:07:03,394 --> 00:07:06,560 Ale jeśli po prostu wciskamy sterowanie c kilka razy na klawiaturze komputera Mac lub PC, 177 00:07:06,560 --> 00:07:08,790 w końcu to powinno rzeczywiście zakończyć. 178 00:07:08,790 --> 00:07:11,770 A jeśli nie, pokażemy niektóre Techniki Wkrótce gdzie 179 00:07:11,770 --> 00:07:14,850 rzeczywiście może przymusowo zabić programów, podobnie jak w systemie Windows i Mac OS, 180 00:07:14,850 --> 00:07:15,562 Jeśli zajdzie taka potrzeba. 181 00:07:15,562 --> 00:07:16,770 Ale spróbujmy czegoś innego. 182 00:07:16,770 --> 00:07:19,895 Miejmy rzeczywiście zwiększyć I. Czy to nadal będzie nieskończona? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Pozwól mi uruchomić to. 185 00:07:25,140 --> 00:07:27,090 A teraz możesz rodzaju zobaczyć, co się dzieje. 186 00:07:27,090 --> 00:07:30,140 To też jest nieskończoną pętlę. 187 00:07:30,140 --> 00:07:33,080 Ale to jest trochę podchwytliwe pytanie. 188 00:07:33,080 --> 00:07:35,460 Czy to będzie drukować numery na zawsze? 189 00:07:35,460 --> 00:07:36,647 >> PUBLICZNOŚCI: Nie 190 00:07:36,647 --> 00:07:37,230 Głośnik 1: Nie 191 00:07:37,230 --> 00:07:37,620 Czemu? 192 00:07:37,620 --> 00:07:38,820 Słyszałem nos tutaj. 193 00:07:38,820 --> 00:07:41,859 Someone-- Tak. 194 00:07:41,859 --> 00:07:44,275 PUBLICZNOŚCI: Nie musisz tyle bity naprawdę dalej. 195 00:07:44,275 --> 00:07:44,730 Głośnik 1: W porządku. 196 00:07:44,730 --> 00:07:46,000 Więc nie mam tyle bity, by iść naprzód. 197 00:07:46,000 --> 00:07:47,124 Więc, co się wydarzy? 198 00:07:47,124 --> 00:07:49,320 To po prostu się zatrzymać? 199 00:07:49,320 --> 00:07:52,542 >> PUBLICZNOŚCI: W pewnym momencie będzie zamknięte the-- 200 00:07:52,542 --> 00:07:54,500 Głośnik 1: Będzie zamknięty w dół, pętla, ale dlaczego? 201 00:07:54,500 --> 00:07:57,950 Co się wydarzy u Bardzo koniec jego granicami? 202 00:07:57,950 --> 00:07:58,479 Tak? 203 00:07:58,479 --> 00:08:00,520 PUBLICZNOŚCI: To będzie cykl z powrotem do liczb ujemnych. 204 00:08:00,520 --> 00:08:02,900 Głośnik 1: Aby liczb ujemnych, lub jakbyśmy po prostu leczeniu pozytywne, 205 00:08:02,900 --> 00:08:03,570 zera co najmniej. 206 00:08:03,570 --> 00:08:04,550 Więc tak, absolutnie. 207 00:08:04,550 --> 00:08:08,059 Przypomnijmy, że widzieliśmy ostatni raz, że jeśli zwiększyć swoje bity jeden raz za dużo, 208 00:08:08,059 --> 00:08:10,225 a ty nie przednimi przepełnienie pojemność swojej int 209 00:08:10,225 --> 00:08:13,058 lub bez względu na typ danych to, że jesteś będzie owinąć wokół, prawdopodobnie, 210 00:08:13,058 --> 00:08:14,020 dwie liczby ujemne. 211 00:08:14,020 --> 00:08:16,644 Albo, jeśli już określić, że twój Zakres powinien być tylko pozytywne, 212 00:08:16,644 --> 00:08:18,560 które możesz zrobić, ale nie widziałem tego jeszcze, 213 00:08:18,560 --> 00:08:21,420 może skończyć się co najmniej z powrotem na zero. 214 00:08:21,420 --> 00:08:22,410 Chociaż, właściwie tak. 215 00:08:22,410 --> 00:08:24,320 W tym przypadku ujemny cyfr, w tym przypadku 216 00:08:24,320 --> 00:08:26,870 pętla będzie do wypowiedzenia dlatego, że nie jest w rzeczywistości 217 00:08:26,870 --> 00:08:29,220 większa niż lub równa zero, jeśli jest ujemna. 218 00:08:29,220 --> 00:08:31,780 >> Tak więc, niestety, jak długo mamy czekać? 219 00:08:31,780 --> 00:08:35,490 Teraz mamy do co, 2 mln-owski? 220 00:08:35,490 --> 00:08:37,705 Jesteśmy jak 2 mld euro, będziemy musieli poczekać 221 00:08:37,705 --> 00:08:39,330 dopóki faktycznie możemy zobaczyć ten objaw. 222 00:08:39,330 --> 00:08:46,200 Ale możemy go zobaczyć trochę szybciej, maybe-- zobaczymy, czy możemy przerwać. 223 00:08:46,200 --> 00:08:46,700 Chodź. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Nawet menu pojawiają się powoli. 226 00:08:51,331 --> 00:08:51,830 W porządku. 227 00:08:51,830 --> 00:08:54,270 Więc, wrócimy do tego niebawem. 228 00:08:54,270 --> 00:08:56,320 To dobry time-- go szlag, szczenięta. 229 00:08:56,320 --> 00:08:58,280 >> To dobry czas na kilka ogłoszeń. 230 00:08:58,280 --> 00:09:01,225 Tak więc, jeśli może chcesz do zaangażowania się w YHack, 231 00:09:01,225 --> 00:09:03,600 która jest wydarzeniem jest sponsorowana przez naszych przyjaciół z Yale. 232 00:09:03,600 --> 00:09:05,990 I rzeczywiście, niektóre z Kursu TF w Yale są zaangażowani w to. 233 00:09:05,990 --> 00:09:08,610 YHack to międzynarodowa hack-a-Thon gospodarzem i trzymał 234 00:09:08,610 --> 00:09:12,395 w Yale, łącząc 1500 podobnie myślących hakerów i reklam wszystkich 235 00:09:12,395 --> 00:09:13,120 cały świat. 236 00:09:13,120 --> 00:09:14,610 Jeśli jest to odsetek, się tu zapoznać. 237 00:09:14,610 --> 00:09:17,401 Jeśli jest zbyt krótko po Ekran, spojrzeć na dzisiejsze slajdów 238 00:09:17,401 --> 00:09:19,622 dla URL yhack.org. 239 00:09:19,622 --> 00:09:21,080 Tak więc, również kilka szybkich ogłoszenia. 240 00:09:21,080 --> 00:09:24,410 Więc oficjalnie sekcje rozpocznie w przyszłym tygodniu, zarówno tu i New Haven. 241 00:09:24,410 --> 00:09:27,660 Należy pamiętać, będziesz coraz e-mail później ten weekend najbardziej prawdopodobne. 242 00:09:27,660 --> 00:09:29,390 To zajmuje dużo czasu, dla CS50 do sekcji, 243 00:09:29,390 --> 00:09:32,080 Biorąc pod uwagę wszystkie osoby w klasy i wszyscy poruszania się. 244 00:09:32,080 --> 00:09:34,871 I wszystkie Fellows nauczania " Nadal są również harmonogramy krzepnięcia, 245 00:09:34,871 --> 00:09:38,110 ale zaglądajcie do wiadomości e-mail, a jeśli potrzeba będzie można ponownie sekcję tam po. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Tak więc, nawet jeśli są stałym uczestnik w sekcjach, uświadomić sobie, że prawie wszystkie 248 00:09:43,280 --> 00:09:46,786 zasobów wykorzystujemy w sekcjach są publicznie dostępne w CS50 249 00:09:46,786 --> 00:09:48,460 Studia na tym adresem tutaj. 250 00:09:48,460 --> 00:09:51,630 Tak więc, jeśli chcesz kiedykolwiek chciał ponownie recenzję Materiał, z sekcji lub odczytu z wyprzedzeniem, 251 00:09:51,630 --> 00:09:54,170 czy nie można zrobić to kilka tygodni, sobie sprawę, że slajdy próbki, 252 00:09:54,170 --> 00:09:58,210 i problemy, i definicje, i więcej są tam również. 253 00:09:58,210 --> 00:10:00,645 >> Godziny urzędowania wznowić dziś i jutro, i środa, 254 00:10:00,645 --> 00:10:03,020 i czwartek sprawdzić kurs na strona harmonogramem. 255 00:10:03,020 --> 00:10:05,690 >> A także, wprowadza na rynek dziś jest CS50 Omów. 256 00:10:05,690 --> 00:10:09,230 Tak więc, jeśli i kiedy masz pytania siebie lub dla pracowników kursu, w 257 00:10:09,230 --> 00:10:12,099 i generalnie pracy na pewnym zbiorze problemów, 258 00:10:12,099 --> 00:10:15,015 sobie sprawę, że nie koniecznie trzeba zwrócić się do człowieka następnego Ciebie. 259 00:10:15,015 --> 00:10:17,810 Jeśli nie ma tam nikogo, można dotrzeć do nas i kolegów 260 00:10:17,810 --> 00:10:19,890 online za pośrednictwem CS50 Omów. 261 00:10:19,890 --> 00:10:22,600 Tak więc, jest to rozmowa wyżywienie na kurs, 262 00:10:22,600 --> 00:10:24,550 i uświadomić sobie, że to jest chyba najlepszy 263 00:10:24,550 --> 00:10:28,480 miejsce, aby rozpocząć, gdy masz pytania, gdy poza godzinami pracy biura 264 00:10:28,480 --> 00:10:29,470 w szczególności. 265 00:10:29,470 --> 00:10:31,070 >> Lunchowe rozpocznie się w tym tygodniu też. 266 00:10:31,070 --> 00:10:33,170 Na ognia i lodu [Niesłyszalne] w New Haven. 267 00:10:33,170 --> 00:10:35,379 Spójrz na kurs na strona w celu RSVP. 268 00:10:35,379 --> 00:10:36,753 Kto pierwszy, służą do tego. 269 00:10:36,753 --> 00:10:39,380 Jeśli nie dostaniesz w tym tygodniu zrobimy to najbardziej każdy piątek 270 00:10:39,380 --> 00:10:40,400 czasie trwania. 271 00:10:40,400 --> 00:10:41,830 >> OK, a teraz słowo o klasyfikacji. 272 00:10:41,830 --> 00:10:44,690 Szczególnie, gdy wejdziemy problemu ustawić jeden, który jest w tym tygodniu, 273 00:10:44,690 --> 00:10:46,670 i problemu ustawić dwa i później. 274 00:10:46,670 --> 00:10:51,680 Jak mamy go o ocenę zestawów P i oceny ich jakości? 275 00:10:51,680 --> 00:10:55,560 Tak, to cztery osie, które wykorzystujemy w CS50, a oni te cztery tutaj. 276 00:10:55,560 --> 00:10:59,200 >> Zakres, które oddaje na numeryczne Podstawą, jak wiele zbioru P 277 00:10:59,200 --> 00:10:59,860 nie można rozwiązać. 278 00:10:59,860 --> 00:11:02,890 Jest ona z grubsza odpowiada wysiłek, i to jest nasz sposób na uchwycenie 279 00:11:02,890 --> 00:11:05,190 próbowałaś połowa P ustawieniu wszystkich zestawie s. 280 00:11:05,190 --> 00:11:08,860 To jest łatwe, aby uzyskać doskonałe wyniki na jeśli nie, rzeczywiście, 281 00:11:08,860 --> 00:11:11,020 spróbować każdy aspekt zestawu P. 282 00:11:11,020 --> 00:11:12,010 Tak więc miej to na uwadze. 283 00:11:12,010 --> 00:11:13,420 >> Poprawność jest dokładnie to. 284 00:11:13,420 --> 00:11:17,760 Czy swoją pracę kodu jako specyfikacja jak i roztworu próbki sztabów " 285 00:11:17,760 --> 00:11:19,730 sugerują, że Twój kod powinna w istocie działać. 286 00:11:19,730 --> 00:11:23,260 Sprawdź, 50, jeśli nie zostało to spełnione jeszcze, jest w P ustawić jedną specyfikację 287 00:11:23,260 --> 00:11:25,060 i będzie ogólnie daje tak / nie odpowiedzi 288 00:11:25,060 --> 00:11:26,518 czy kod jest poprawny. 289 00:11:26,518 --> 00:11:30,680 Przynajmniej o ile będziemy wyznaczanie wartości jest oparte na testach 290 00:11:30,680 --> 00:11:32,430 , które prowadzimy w ramach tego programu. 291 00:11:32,430 --> 00:11:33,850 >> Projekt jest bardziej subiektywna. 292 00:11:33,850 --> 00:11:35,994 Jest to, jak dobrze napisany jest kod. 293 00:11:35,994 --> 00:11:38,410 I to jest coś, co będzie lepiej w miarę upływu czasu, 294 00:11:38,410 --> 00:11:41,201 i to jest coś, że będziesz dostarczyć więcej informacji zwrotnej na jakościową. 295 00:11:41,201 --> 00:11:43,350 I projektowania mógłbym myśli przed długo 296 00:11:43,350 --> 00:11:47,650 mieć ochotę w jakiś P ustawić coś zrobić loopingly, 297 00:11:47,650 --> 00:11:51,590 ale mieć może trzy lub cztery, lub pięć przednie pętle zagnieżdżone lub zagnieżdżone, gdy 298 00:11:51,590 --> 00:11:52,090 pętle. 299 00:11:52,090 --> 00:11:54,130 Że generalnie powinno zacząć zarabiać warować 300 00:11:54,130 --> 00:11:56,070 i generalnie będzie uważany zły projekt. 301 00:11:56,070 --> 00:11:59,490 I zaczniesz widzieć w klasie i z klasy dobrych sposobów działania, 302 00:11:59,490 --> 00:12:02,920 złe sposoby robienia rzeczy, które Może wszystko będzie poprawne, ale nie 303 00:12:02,920 --> 00:12:04,304 niekoniecznie dobrze zaprojektowane. 304 00:12:04,304 --> 00:12:05,220 Jak pisanie eseju. 305 00:12:05,220 --> 00:12:08,100 Możesz być w stanie umieścić słowa na Strona, które są poprawne gramatycznie, 306 00:12:08,100 --> 00:12:10,016 ale esej lub Teza, że ​​są w to po prostu 307 00:12:10,016 --> 00:12:11,810 całkowicie niespójne i nieprzekonujące. 308 00:12:11,810 --> 00:12:15,930 I tak, że może być analog w napisane świecie złego lub dobrego projektu. 309 00:12:15,930 --> 00:12:18,490 >> I styl, też jest dość subiektywne. 310 00:12:18,490 --> 00:12:20,060 Ale przynajmniej możemy spodziewać spójności. 311 00:12:20,060 --> 00:12:21,480 Jest to, jak bardzo jest kod. 312 00:12:21,480 --> 00:12:22,840 Są rzeczy ładnie wcięty? 313 00:12:22,840 --> 00:12:26,600 Czy Twoje zmienne oraz nazwie / Czy wszystkie swoich nawiasach i nawiasy 314 00:12:26,600 --> 00:12:27,920 ustawione tak jak powinny? 315 00:12:27,920 --> 00:12:31,490 Mamy przewodnika stylu CS50 jako zestaw problemu skieruje Cię na. 316 00:12:31,490 --> 00:12:33,730 Ci bardziej komfortowe są Zapraszamy do zarzuciła, że 317 00:12:33,730 --> 00:12:35,771 tak długo, jak sam siebie spójne. 318 00:12:35,771 --> 00:12:38,020 I to też jest lekcja będziemy wzmocnienie w części. 319 00:12:38,020 --> 00:12:40,990 Tak więc, jeśli wszystko było trochę szybko sobie sprawę, zbiór P i sekcje 320 00:12:40,990 --> 00:12:42,900 trafi do większej głębokości niebawem. 321 00:12:42,900 --> 00:12:45,490 >> Ale generalnie mamy bardzo niewiele. chwytaki do CS50 322 00:12:45,490 --> 00:12:48,170 Wyniki są na ogół na skalę od jednego do trzech lub jeden do pięciu. 323 00:12:48,170 --> 00:12:50,836 Jesteśmy literally-- i nie mogę powiedzieć, to wystarczy w pierwszym tygodniu. 324 00:12:50,836 --> 00:12:51,582 Trzy dobre. 325 00:12:51,582 --> 00:12:54,290 Tak więc, chociaż, tak, trzy z pięciu normalnie, matematycznie, 326 00:12:54,290 --> 00:12:57,240 może być 60 procent lub jak D minus. 327 00:12:57,240 --> 00:12:58,840 Trzecia jest w istocie dobre. 328 00:12:58,840 --> 00:13:01,050 I rzeczywiście, oczekujemy większość uczniów w klasie 329 00:13:01,050 --> 00:13:04,280 na rozpoczęcie terminu wokół dwójek i trójek, czwórek., oraz 330 00:13:04,280 --> 00:13:05,510 Prawdopodobnie nie tak wiele piątki. 331 00:13:05,510 --> 00:13:06,661 Nie było zbyt wielu z nich. 332 00:13:06,661 --> 00:13:08,910 Ale ogólnie, aby rozpocząć w że sweet spot na krzywej 333 00:13:08,910 --> 00:13:11,694 tak, że wraz z upływem czasu, Jest rzeczywiście miejsce dla, 334 00:13:11,694 --> 00:13:13,360 i możliwości dla górnej progresji. 335 00:13:13,360 --> 00:13:15,810 Więc proszę nie utożsamiać trzy z 60%. 336 00:13:15,810 --> 00:13:17,410 To znacznie bardziej abstrakcyjne niż. 337 00:13:17,410 --> 00:13:20,160 Wzór z którego obliczamy stopnie są ważone w sposób następujący. 338 00:13:20,160 --> 00:13:21,610 Poprawność jest najbardziej godny polecenia. 339 00:13:21,610 --> 00:13:23,010 Projekt jest wart trochę mniej. 340 00:13:23,010 --> 00:13:24,490 Styl jest wart trochę mniej. 341 00:13:24,490 --> 00:13:26,950 I to na ogół rejestruje czas 342 00:13:26,950 --> 00:13:29,800 że idzie do coraz każdego z tych osi tylko w prawo. 343 00:13:29,800 --> 00:13:31,810 Styl jest bardzo proste, powinna być bardzo szybkie, 344 00:13:31,810 --> 00:13:33,657 ale jest to łatwy nawykiem dostać się leniwy. 345 00:13:33,657 --> 00:13:35,490 Poprawność może potrwać Ci większość czasu. 346 00:13:35,490 --> 00:13:38,990 Ścigających jakiś błąd potęgę podjąć dodatkowe godzinę lub więcej, 347 00:13:38,990 --> 00:13:41,737 i tak, punktacja ostatecznie oddaje tego. 348 00:13:41,737 --> 00:13:43,070 I tak, teraz bardziej poważny wyraz. 349 00:13:43,070 --> 00:13:45,240 Od CS50 ma rozróżnienie, lepiej 350 00:13:45,240 --> 00:13:47,440 lub gorzej, bycia może lepiej zapoznali 351 00:13:47,440 --> 00:13:50,065 z zagadnieniami akademicki uczciwość niż większość jakimkolwiek innym kursie. 352 00:13:50,065 --> 00:13:53,720 I rzeczywiście, to do mojej świadomości, że wysyłamy więcej studentów, niestety, 353 00:13:53,720 --> 00:13:56,690 w celach dyscyplinarnych Każdego roku w wyniku. Więc, 354 00:13:56,690 --> 00:13:59,040 w interesie pełna ujawnienie, niech krótko porozmawiać 355 00:13:59,040 --> 00:14:02,820 o tym, co dzieje się w CS50, a co Cię może zrobić, i co możesz mieć na uwadze. 356 00:14:02,820 --> 00:14:05,530 >> Tak, tutaj od 2007 roku, kiedy Odziedziczyłem kursu 357 00:14:05,530 --> 00:14:07,870 jest liczba przypadków Ogłoszenie Zarządu. 358 00:14:07,870 --> 00:14:10,690 Ogłoszenie Zarząd jest dyscyplinarne Harvardu ciała, albo teraz Honor Counsel, 359 00:14:10,690 --> 00:14:13,790 do których zwraca się, kiedy studenci coś zrobić, że kurs na 360 00:14:13,790 --> 00:14:15,470 Program zajęć uważa nierozsądne. 361 00:14:15,470 --> 00:14:17,220 Nie ma prawdziwego wzór tutaj, powiedziałbym. 362 00:14:17,220 --> 00:14:19,530 Waha się nad lat, ale ogólnie 363 00:14:19,530 --> 00:14:22,262 jest liczbą przypadki, które są określone. 364 00:14:22,262 --> 00:14:23,970 Liczba studentów które są zaangażowane? 365 00:14:23,970 --> 00:14:25,290 To też jest różna. 366 00:14:25,290 --> 00:14:27,930 Zazwyczaj, w zeszłym roku Przykładowo, 29 studentów na Harvardzie 367 00:14:27,930 --> 00:14:29,740 Ad Boarded były, że tak powiem. 368 00:14:29,740 --> 00:14:32,670 29 z nich obecnych studentów, Dwa z nich przed studentami, 369 00:14:32,670 --> 00:14:35,610 którzy współpracowali w pewnym przewrotnego sposób. 370 00:14:35,610 --> 00:14:38,400 A następnie w kategoriach odsetek, to zwykle około 3% 371 00:14:38,400 --> 00:14:41,360 klasy, która niestety sprawia, że ​​tego rodzaju decyzji. 372 00:14:41,360 --> 00:14:44,470 >> Tak, w zeszłym roku było to 3,5% wśród studentów CS50 jest 373 00:14:44,470 --> 00:14:46,820 to było ogłoszenie Boarded, że tak powiem. 374 00:14:46,820 --> 00:14:48,490 >> Więc, co to wszystko ma znaczyć? 375 00:14:48,490 --> 00:14:49,660 I co tak naprawdę zrobić? 376 00:14:49,660 --> 00:14:52,930 >> Tak więc, dla pełnego ujawnienia, że absolutnie, jak informatycy, 377 00:14:52,930 --> 00:14:57,620 posiada narzędzia programowe do naszej dyspozycji i to jest bardzo łatwy dla nas, w sprawiedliwości, 378 00:14:57,620 --> 00:15:00,980 że nawzajem koledzy, którzy nie są przekraczania tych linii przekroczyć porównać 379 00:15:00,980 --> 00:15:04,570 każde złożenie w tym roku przed każdym złożenie przez ostatnie osiem lat. 380 00:15:04,570 --> 00:15:05,445 Oprogramowanie to robi. 381 00:15:05,445 --> 00:15:07,440 I ostatecznie to ludzkie oczy, które decydują 382 00:15:07,440 --> 00:15:11,410 czy należy odnieść niektórych znaczenia dla dalszego orzekania, 383 00:15:11,410 --> 00:15:12,737 ale oprogramowanie na pewno pomaga. 384 00:15:12,737 --> 00:15:15,820 A to, szczerze mówiąc, to dlatego, że myślę, że mamy takie duże liczby w CS50. 385 00:15:15,820 --> 00:15:18,540 To nie dlatego, CS50 studenci lub uczniowie CS więcej 386 00:15:18,540 --> 00:15:20,840 na ogół są mniej uczciwi niż innych uczniów, 387 00:15:20,840 --> 00:15:22,340 to jest po prostu mamy narzędzia i techniki 388 00:15:22,340 --> 00:15:24,095 z której skorzystać z pierwszego przejścia. 389 00:15:24,095 --> 00:15:25,960 >> Ale robimy pilnować na wszystkie te rzeczy 390 00:15:25,960 --> 00:15:30,340 oraz, ponownie, w interesie uznając, że to dzieło jest umieścić 391 00:15:30,340 --> 00:15:32,397 się przez super większości klasy. 392 00:15:32,397 --> 00:15:34,230 I polityka kursu jest na uczciwości akademickiej, 393 00:15:34,230 --> 00:15:37,021 nawet jeśli jest to kilka ustępów długo z kilka kul 394 00:15:37,021 --> 00:15:40,490 miejmy nadzieję, że są dość czytelne, to naprawdę nie sprowadzają się być uzasadnione. 395 00:15:40,490 --> 00:15:44,000 I najlepsza zasada, że oferujemy się w programie nauczania 396 00:15:44,000 --> 00:15:46,020 Jest to istota wszystkich prac, które Cię 397 00:15:46,020 --> 00:15:47,850 złożyć do tego oczywiście musi być własne. 398 00:15:47,850 --> 00:15:51,510 I rzeczywiście, w prawie wszystkich tych, Przypadki, o których mowa w postępowaniu dyscyplinarnym 399 00:15:51,510 --> 00:15:55,640 to z powodu jakiegoś studenta koniec jednego noc zazwyczaj odwrócił swój kod 400 00:15:55,640 --> 00:15:58,130 na wprost, do koleżanki, który następnie przyjął go 401 00:15:58,130 --> 00:16:00,840 w całości lub znacznie ich. 402 00:16:00,840 --> 00:16:02,680 >> Ale tak naprawdę, to jest OK. 403 00:16:02,680 --> 00:16:04,684 I rzeczywiście, w biurze godzin, zrazy z papieru 404 00:16:04,684 --> 00:16:07,850 już zostały wydane, jeśli przyszedł biurze godzin w zeszłym tygodniu zachęca tyle. 405 00:16:07,850 --> 00:16:09,710 Jesteś absolutnie z zadowoleniem i zachęcał 406 00:16:09,710 --> 00:16:12,340 w celu omówienia zestawów problemów z kolegami. 407 00:16:12,340 --> 00:16:14,461 Aby pomóc sobie nawzajem, gdy potykając. 408 00:16:14,461 --> 00:16:17,710 Ale generalnie zasada powinna za to, "kiedy prosisz o pomoc, 409 00:16:17,710 --> 00:16:20,412 możesz pokazać swój kod do innych osób, ale nie może ich kompetencji zobaczyć. " 410 00:16:20,412 --> 00:16:22,620 Tak więc, innymi słowy, jeśli jestem zmaga się z jakimś P zestawie 411 00:16:22,620 --> 00:16:25,290 a ja siedzę tam w jadalni lub w bibliotece, 412 00:16:25,290 --> 00:16:28,470 lub w klasie starając się znaleźć jakieś usterki, 413 00:16:28,470 --> 00:16:30,340 Pewnością mogę pokazać mój kod na ekranie 414 00:16:30,340 --> 00:16:32,590 aby osoba siedząca obok do mnie, na pewno personel, 415 00:16:32,590 --> 00:16:33,600 ale także kolega. 416 00:16:33,600 --> 00:16:36,580 Jeśli jednak rozwiązanie mój kolega oferuje to, oh, 417 00:16:36,580 --> 00:16:39,200 tutaj tylko spojrzeć na to, co Zrobiłem, że przecina linię. 418 00:16:39,200 --> 00:16:43,120 >> A ja śmiem twierdzić, że to na ogół rozsądna rzecz dla większości ludzi 419 00:16:43,120 --> 00:16:45,030 bardzo łatwo dostrzec linię. 420 00:16:45,030 --> 00:16:47,195 A tak, to zapoznaj się z programu nauczania więcej szczegółów. 421 00:16:47,195 --> 00:16:49,070 A teraz jeden z bardziej kontrowersyjne aspekty 422 00:16:49,070 --> 00:16:52,529 z CS50 nauczania, że ​​myślałem, by rozmawiać na zakończenie tutaj 423 00:16:52,529 --> 00:16:53,820 jest tak zwana klauzula żal. 424 00:16:53,820 --> 00:16:55,340 Tak, tutaj wszystko jest drobnym drukiem. 425 00:16:55,340 --> 00:16:58,090 Ale w ogóle widzieliśmy w ciągu ostatnich 8 lat oraz 426 00:16:58,090 --> 00:17:01,510 , że w rzeczywistości, prawie wszystkie CS50 na przypadki nieuczciwości naukowej 427 00:17:01,510 --> 00:17:04,390 były wynikiem po prostu słaba co późno w nocy decyzję. 428 00:17:04,390 --> 00:17:07,144 W wyniku stresu, wynik braku odżywiania, brak snu 429 00:17:07,144 --> 00:17:09,560 Zestawy P zbyt wiele, zbyt wiele terminy, zbyt wiele zobowiązań. 430 00:17:09,560 --> 00:17:13,520 Stres budowania w 2:00, 03:00 AM, 04:00, w terminie zbliża. 431 00:17:13,520 --> 00:17:17,020 Większość uczniów w tych sprawach Właśnie uczyniłeś złe decyzje 432 00:17:17,020 --> 00:17:20,619 że może bardzo dobrze pożałuję Następnego dnia rano, jeśli nie minut później, 433 00:17:20,619 --> 00:17:25,490 ale do zeszłego roku nie było zawór spustowy, że uczniowie mogli 434 00:17:25,490 --> 00:17:29,140 rzeczywiście otwierają się rzeczywiście zająć się problem na głowę bez obawy przed 435 00:17:29,140 --> 00:17:30,850 uruchomiony z uczelni w ogóle. 436 00:17:30,850 --> 00:17:33,260 >> I rzeczywiście, wprowadziliśmy klauzula żal w zeszłym roku, 437 00:17:33,260 --> 00:17:35,970 które mówi, że jeśli w ciągu 72 godziny, trzy dni, 438 00:17:35,970 --> 00:17:37,970 przekraczania kilka linii przewidziany w programie nauczania 439 00:17:37,970 --> 00:17:41,178 można wystąpić do jednej z kursu na głowy i będziemy musieli porozmawiać o tym. 440 00:17:41,178 --> 00:17:43,720 Nadal są za jedne Wyniki, w przeciwieństwie do tego, co 441 00:17:43,720 --> 00:17:44,990 Doniesiono, że jest inaczej. 442 00:17:44,990 --> 00:17:49,190 Nadal istnieją pewne wyniki, które podlegają zaskarżeniu według kursu, 443 00:17:49,190 --> 00:17:51,611 ogólnie zerowania zestaw P lub podjęcia innych działań, 444 00:17:51,611 --> 00:17:53,610 ale będzie rzeczywiście, poradzić się i nie 445 00:17:53,610 --> 00:17:58,460 odnosi się to wyższe były wynikiem może być znacznie bardziej dotkliwe. 446 00:17:58,460 --> 00:18:01,810 I rzeczywiście, dzielić się, co się stało w zeszłym roku, w ciągu ośmiu lat, a teraz 447 00:18:01,810 --> 00:18:04,950 dziewięć lat, nauczania tego kursu i po majstrować przy różnych pokręteł, 448 00:18:04,950 --> 00:18:07,866 obracając różne tarcze nad przeszłością kilka lat na uczciwości akademickiej, 449 00:18:07,866 --> 00:18:11,920 i widząc na danych bez wyraźnego wpływ, nawet wypowiedzi takich jak ta, 450 00:18:11,920 --> 00:18:15,490 to był z najlepszych rzeczy wprowadziliśmy pedagogicznie 451 00:18:15,490 --> 00:18:18,090 w osiem lat po te linie w CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 uczniów zgłosiło się na mocy niniejszej klauzuli w zeszłym roku. 453 00:18:21,010 --> 00:18:23,389 My nie podjęła żadnych działań dla siedem z tych uczniów, 454 00:18:23,389 --> 00:18:25,430 ustalenie, czy byli niepotrzebnie martwi. 455 00:18:25,430 --> 00:18:27,304 Nie miały w rzeczywistości przekroczył linię, ale 456 00:18:27,304 --> 00:18:28,960 był dobry czat mieć jednak. 457 00:18:28,960 --> 00:18:31,190 Mamy wyzerowany 11 wyników które zostały złożone. 458 00:18:31,190 --> 00:18:33,840 I w jednym przypadku Poprosiliśmy uczeń robić problemu ustawić. 459 00:18:33,840 --> 00:18:36,370 Ale bardziej przekonujące, szczerze mówiąc, z tych 19 czatach, 460 00:18:36,370 --> 00:18:39,020 który był bardziej niż ja spodziewać, że każda z nich 461 00:18:39,020 --> 00:18:41,370 10 minut do być może długie godziny, także przyniósł 462 00:18:41,370 --> 00:18:44,920 na jaw szereg kwestii dotyczących rodzinnych problemów, zagadnień przyjaciel, 463 00:18:44,920 --> 00:18:46,940 Problemy ze zdrowiem psychicznym że to zaangażowany, 464 00:18:46,940 --> 00:18:50,200 z studenta błogosławieństwo, zamieszkałego dziekan lub znajomych, lub inny numer 465 00:18:50,200 --> 00:18:51,450 środków wsparcia. 466 00:18:51,450 --> 00:18:54,454 Tak, że to był zdecydowanie jednym z najlepszych zastosowań naszych czasów 467 00:18:54,454 --> 00:18:55,870 a jedna z najlepszych interwencji. 468 00:18:55,870 --> 00:18:58,870 >> Z powiedział, że nie miał Wejście na szybkość wykrywania 469 00:18:58,870 --> 00:19:00,909 nieuczciwości akademickiej bardziej ogólnie. 470 00:19:00,909 --> 00:19:02,950 I śmiem twierdzić, że to podzbiór studentów ostatniego roku 471 00:19:02,950 --> 00:19:06,350 był demograficzne, które wcześniej nigdy nie zidentyfikowano wcześniej 472 00:19:06,350 --> 00:19:08,140 i nigdy nie wiąże się z wcześniej. 473 00:19:08,140 --> 00:19:10,020 I tak, były wspaniałych sukcesów 474 00:19:10,020 --> 00:19:13,390 nawet jeśli zostały one ujawnione mniej niż idealnych warunkach. 475 00:19:13,390 --> 00:19:15,640 Tak więc o tym pamiętać jak to zrobić, być może, 476 00:19:15,640 --> 00:19:17,390 jakiś biedny decyzja się późno w nocy, 477 00:19:17,390 --> 00:19:20,151 że jest odwołanie się tak długo, jako student w tej sytuacji 478 00:19:20,151 --> 00:19:23,400 właścicielem i przedstawienia, tak, że możemy mają tego rodzaju rozmowy i sobie z tym poradzić 479 00:19:23,400 --> 00:19:27,310 w sposób, który jest edukacyjnym, a następnie możemy umieścić go za nas następnego dnia. 480 00:19:27,310 --> 00:19:30,335 >> Więc bez zbędnych ceregieli, podejmują krawędzi od tej rozmowy, 481 00:19:30,335 --> 00:19:35,080 powodem szczenięta są aż znaczy tylko przełamać lody na chwilę. 482 00:19:35,080 --> 00:19:39,560 I niestety, oni wszyscy spać, ale to, co miało się stać tutaj 483 00:19:39,560 --> 00:19:41,760 był każdy miał z podziwem i trochę odpocząć 484 00:19:41,760 --> 00:19:43,910 po tej bardzo ciężkiej rozmowy. 485 00:19:43,910 --> 00:19:46,930 Ale widocznie kładę szczenięta spać. 486 00:19:46,930 --> 00:19:50,070 Ale jeśli pójdziesz do CS50 na szczenięta strona slash, 487 00:19:50,070 --> 00:19:51,610 można je oglądać przez cały dzień. 488 00:19:51,610 --> 00:19:55,280 Szczególnie może 2:00, lub 03:00 lub 04:00 w nocy 489 00:19:55,280 --> 00:19:57,480 zobaczyć trochę odprężające tam. 490 00:19:57,480 --> 00:19:58,805 Więc to jest slash szczeniąt. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 W porządku. 493 00:20:02,200 --> 00:20:03,020 Czy to nie zabawne? 494 00:20:03,020 --> 00:20:04,200 OK. 495 00:20:04,200 --> 00:20:07,140 Tak więc, z powrotem do jakiegoś komputera nauki, jeśli można. 496 00:20:07,140 --> 00:20:10,600 >> Tak, przypominam sobie, że ostatni raz zaczęliśmy nie patrząc tylko na głównym, które 497 00:20:10,600 --> 00:20:13,930 była funkcja domyślnie ustawiane, gdy Zielona flaga kliknięciu odpowiednik, 498 00:20:13,930 --> 00:20:16,999 ale również rozpoczął krótko pisząc niektóre z naszych funkcji. 499 00:20:16,999 --> 00:20:20,040 I dotychczas żaden z tych funkcji były szczególnie duże i mięsiste. 500 00:20:20,040 --> 00:20:24,570 Dostaniesz na te większe Funkcje chyba, P zestaw 2, P zestaw 3, 501 00:20:24,570 --> 00:20:26,410 zdecydowanie P zestaw 4 i dalej. 502 00:20:26,410 --> 00:20:29,340 Teraz większość programów, Jeśli nie wszystkie, z pewnością dla P 503 00:20:29,340 --> 00:20:31,550 Zestaw 1 może być wykonana w całości w głównym. 504 00:20:31,550 --> 00:20:33,810 Jeśli twój program tylko pięć linii, 10 linii, 505 00:20:33,810 --> 00:20:37,070 długo, nawet 20 linii, doskonale rozsądne ją napisać 506 00:20:37,070 --> 00:20:40,930 wszystkie w głównym, a nie do ponad skomplikować Twój kod, ale to, co robimy dziś 507 00:20:40,930 --> 00:20:44,360 i dalej próbuje również wprowadzić kilka dobrych technik projektowania 508 00:20:44,360 --> 00:20:48,660 tak, jak twój kod staje się bardziej skomplikowane i jak problemów 509 00:20:48,660 --> 00:20:51,690 chcesz rozwiązać coraz trudniej i bardziej interesujące masz, rodzaj, 510 00:20:51,690 --> 00:20:55,850 narzędzia w przyborniku, z którym zaprojektować dobre rozwiązania tych. 511 00:20:55,850 --> 00:21:01,210 >> Więc rzućmy okiem wstecz na program ten z mojego ostatniego tygodnia, który 512 00:21:01,210 --> 00:21:06,550 Funkcje zera była kropka C. I zauważyć, że, po prostu, 513 00:21:06,550 --> 00:21:10,310 wygląda to tak z dwóch funkcje, głównym i nazwa druku. 514 00:21:10,310 --> 00:21:13,160 A wracając myślami czy może reverse engineering dzisiaj, 515 00:21:13,160 --> 00:21:16,880 co było motywacją do wprowadzenia funkcję w linii 28 nazywa, 516 00:21:16,880 --> 00:21:18,180 Nazwa wydruku? 517 00:21:18,180 --> 00:21:21,745 Albo co to przykład w Warunki zasady lub na wynos, 518 00:21:21,745 --> 00:21:22,605 Jeśli chcesz. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Niektóre pomruki. 521 00:21:27,300 --> 00:21:28,830 Co? 522 00:21:28,830 --> 00:21:32,210 >> Tak rozkładu tak funkcjonalna niby fantazyjny sposób na powiedzenie, 523 00:21:32,210 --> 00:21:34,690 rozkładają swój program do jego części składowych 524 00:21:34,690 --> 00:21:37,530 a następnie wykorzystać te części montaż całości. 525 00:21:37,530 --> 00:21:39,620 Tak, to też jest po prostu rodzaj z już łyk, 526 00:21:39,620 --> 00:21:42,050 ale to może nawet lepszym przykładem czegoś 527 00:21:42,050 --> 00:21:43,081 tak zwany abstrakcji. 528 00:21:43,081 --> 00:21:43,580 Dobrze? 529 00:21:43,580 --> 00:21:46,950 Abstrakcja będzie jeden z powtarzających się tematów w CS50 530 00:21:46,950 --> 00:21:49,085 a także informatyka bardziej ogólnie, ponieważ jest to 531 00:21:49,085 --> 00:21:53,060 techniką, z którą można rozwiązać problemy skuteczniej, ponieważ Ciebie 532 00:21:53,060 --> 00:21:56,807 może napisać rozwiązań więcej intuicyjnie oraz w sposób, który skaluje 533 00:21:56,807 --> 00:21:58,390 i jest zrozumiałe przez innych ludzi. 534 00:21:58,390 --> 00:21:59,860 Co mam na myśli? 535 00:21:59,860 --> 00:22:04,340 >> Tak, bez wątpienia jest o wiele bardziej czytelne patrzeć na takiego programu, 536 00:22:04,340 --> 00:22:05,990 bardzo krótkie chociaż jest. 537 00:22:05,990 --> 00:22:10,050 Kiedy widzisz na linii 22, że nie funkcja o nazwie, nazwa wydruku. 538 00:22:10,050 --> 00:22:12,620 Że sama nazwa mówi to, co robi. 539 00:22:12,620 --> 00:22:15,780 Ta funkcja najwyraźniej trwa Wejście między jego nawiasach, 540 00:22:15,780 --> 00:22:18,600 i najwyraźniej coś robi, przypuszczalnie wypisuje nazwę. 541 00:22:18,600 --> 00:22:20,880 I tak, mimo że absolutnie może mieć 542 00:22:20,880 --> 00:22:25,280 zrobić to, co zrobiliśmy tydzień temu, co było po prostu wziąć to rzeczywisty linii kodu, 543 00:22:25,280 --> 00:22:28,710 pozbyć się tego, i uzyskać pozbyć to wszystko razem, 544 00:22:28,710 --> 00:22:31,436 to rodzaj pobieranej się pojęcie drukowania nazwy. 545 00:22:31,436 --> 00:22:33,060 Nie obchodzi mnie, jeśli używasz druku def. 546 00:22:33,060 --> 00:22:35,601 Nie obchodzi mnie, jeśli masz procent S i N. backslash Te 547 00:22:35,601 --> 00:22:37,270 są niezwykle tajemnicze szczegóły. 548 00:22:37,270 --> 00:22:40,090 Co ja dbam o jak Programista drukuje nazwę. 549 00:22:40,090 --> 00:22:43,414 I tak, nie ma lepszego sposobu, aby to zrobić niż przez wywołanie funkcji, nazwę druku? 550 00:22:43,414 --> 00:22:46,330 I tak, to była jedna z motywacji aby robić coś takiego. 551 00:22:46,330 --> 00:22:50,370 Dokonywanie kod jest bardziej czytelny, bardziej wielokrotnego użytku, a także samo opisowe. 552 00:22:50,370 --> 00:22:52,120 Teraz rzućmy okiem w innym przykładzie 553 00:22:52,120 --> 00:22:56,220 co było funkcje jeden, które mieliśmy tutaj. 554 00:22:56,220 --> 00:23:00,367 >> Tak, ten jest chyba jeszcze bardziej atrakcyjne, ponieważ w tym wypadku 555 00:23:00,367 --> 00:23:01,700 Nie chcę, aby po prostu int. 556 00:23:01,700 --> 00:23:03,320 Chcę uzyskać pozytywną int. 557 00:23:03,320 --> 00:23:06,470 I okazuje się, aby uzyskać pozytywny int trzeba zrobić kilka legwork. 558 00:23:06,470 --> 00:23:06,969 Dobrze? 559 00:23:06,969 --> 00:23:09,600 To nie jest prosta linia zadzwonić jak nazwa druku było, 560 00:23:09,600 --> 00:23:11,480 który jest co prawda mniej przekonujące. 561 00:23:11,480 --> 00:23:16,000 >> Aby uzyskać pozytywną int, logically-- pozwól mi przejść z powrotem w dół, aby ukryć to. 562 00:23:16,000 --> 00:23:18,887 Co masz do zrobienia? 563 00:23:18,887 --> 00:23:20,720 Podobnie jak wszystkie narzędzia mamy mają w tej chwili są 564 00:23:20,720 --> 00:23:24,440 takie rzeczy jak druku def z normą Biblioteka, a także z biblioteki CS50 565 00:23:24,440 --> 00:23:26,990 mamy Get Int i Get Float, Pobierz Długi Długi, uzyskać ciąg, 566 00:23:26,990 --> 00:23:29,260 ale tylko jeden, Germane, teraz jest Zdobądź Int. 567 00:23:29,260 --> 00:23:32,970 Tak więc, jeśli jedynym narzędziem trzeba w skrzynce narzędziowej jest Zdobądź Int, 568 00:23:32,970 --> 00:23:35,505 jak pójdziemy na temat realizacji że aby uzyskać pozytywną int? 569 00:23:35,505 --> 00:23:35,929 >> PUBLICZNOŚCI: Utwórz dziennik i sprawdzić, czy wejście że dali 570 00:23:35,929 --> 00:23:36,762 był dodatni, czy nie. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> Głośnik 1: Perfect. 573 00:23:40,640 --> 00:23:41,200 Dokładnie. 574 00:23:41,200 --> 00:23:43,950 Kolejnym narzędziem, mamy w naszym przybornik z tydzień lub dwa temu 575 00:23:43,950 --> 00:23:45,419 to tylko konstrukt pętli. 576 00:23:45,419 --> 00:23:48,210 I tak, tak, jeśli używamy chwilę pętli, lub robić podczas pętli, lub przedniego 577 00:23:48,210 --> 00:23:50,850 Pętla prawdopodobnie mogłaby uciec z którymkolwiek z tych w innej formie. 578 00:23:50,850 --> 00:23:55,140 Możemy realizować koncepcję get pozytywne int tylko przy użyciu Pobierz Int, 579 00:23:55,140 --> 00:23:57,830 a potem po prostu zachować nazywając ją ponownie i zachować męczył użytkownika 580 00:23:57,830 --> 00:24:00,320 do czasu, gdy w rzeczywistości daje nam to, co chcemy. 581 00:24:00,320 --> 00:24:03,260 >> A więc teraz, w tym abstrakcja procesu 582 00:24:03,260 --> 00:24:05,680 na uzyskanie pozytywnego int do funkcji o nazwie 583 00:24:05,680 --> 00:24:08,930 Pobierz Pozytywna Int jest trochę bardziej przekonujące, bo patrzeć na to. 584 00:24:08,930 --> 00:24:10,990 Są to podobnie jak 10 plus linii kodu, które 585 00:24:10,990 --> 00:24:15,090 są zaangażowane w uzyskaniu pozytywnego int, a ja naprawdę nie obchodzi, jak to zrobić. 586 00:24:15,090 --> 00:24:17,850 Wszystko zależy mi jest, że Ciebie może to zrobić, i tak mam 587 00:24:17,850 --> 00:24:21,660 ukryte wszystkie te szczegóły za Funkcja o nazwie Get Positive int, że 588 00:24:21,660 --> 00:24:23,430 Rzeczywiście, ma to robić podczas pętli. 589 00:24:23,430 --> 00:24:27,660 >> I zobaczyć, w zeszłym tygodniu na składni tam, ale to po prostu deklaruje N, 590 00:24:27,660 --> 00:24:29,800 i wypisuje instrukcje dla użytkownika. 591 00:24:29,800 --> 00:24:33,330 Wzywa Pobierz Int, a następnie sprawdza, warunek ten ponownie i ponownie 592 00:24:33,330 --> 00:24:35,230 i znowu, dopóki użytkownik nie współpracuje. 593 00:24:35,230 --> 00:24:38,000 >> Więc teraz, kilka testy sprawdzające. 594 00:24:38,000 --> 00:24:40,370 Dla tych, którzy być może znają z niektórych programów, 595 00:24:40,370 --> 00:24:46,410 dlaczego N oświadczył, dlaczego tworzę N poza robić podczas pętli? 596 00:24:46,410 --> 00:24:50,370 Dlaczego jest to, na linii 29 i nie na takich jak 33, na przykład. 597 00:24:50,370 --> 00:24:53,529 >> PUBLICZNOŚCI: bo kiedy zadeklarować ją na zewnątrz, to rodzaj 598 00:24:53,529 --> 00:24:56,688 z więcej, większej scope-- 599 00:24:56,688 --> 00:24:58,146 >> Głośnik 1: Dobra. 600 00:24:58,146 --> 00:24:59,604 >> PUBLICZNOŚCI: --and jeśli zadeklarować że wewnątrz pętli, [niesłyszalne] 601 00:24:59,604 --> 00:25:00,979 dlatego, że nie wie o tym. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 Głośnik 1: Dokładnie. 604 00:25:03,610 --> 00:25:06,330 Jeśli mogę simplify-- to jest kwestia zakresu. 605 00:25:06,330 --> 00:25:11,530 I zakres odnosi się do kontekstu która to zmienna istnieje lub jest użyteczny. 606 00:25:11,530 --> 00:25:15,050 I miło zasadą jest to, że na ogół, gdy deklarujesz lub utwórz 607 00:25:15,050 --> 00:25:21,642 zmienna można go używać tylko wewnątrz z najbliższych obejmując nawiasy klamrowe. 608 00:25:21,642 --> 00:25:22,600 Więc co to oznacza? 609 00:25:22,600 --> 00:25:26,551 Gdybym zamiast tego cofnąć i iść z coś, że czuje się trochę prostsze. 610 00:25:26,551 --> 00:25:27,050 Dobrze? 611 00:25:27,050 --> 00:25:29,360 >> Linia 32 wygląda po prostu czystsze do mnie teraz. 612 00:25:29,360 --> 00:25:31,500 Robię obie rzeczy na po czym przypisanie 613 00:25:31,500 --> 00:25:33,070 prawa ręka do lewej strony. 614 00:25:33,070 --> 00:25:35,180 Problem w oparciu teraz że określenie zakresu 615 00:25:35,180 --> 00:25:41,130 jest to, że liczba N może być stosowany w przewodach 31 i 32, wewnątrz tej pętli 616 00:25:41,130 --> 00:25:45,100 ale gdzie tą definicją może nie być stosowana? 617 00:25:45,100 --> 00:25:45,660 W linii, co? 618 00:25:45,660 --> 00:25:46,160 Tak. 619 00:25:46,160 --> 00:25:47,490 >> PUBLICZNOŚCI: 35. 620 00:25:47,490 --> 00:25:49,180 >> Głośnik 1: 35. 621 00:25:49,180 --> 00:25:50,480 Zdecydowanie nie 35. 622 00:25:50,480 --> 00:25:52,349 A także gdzie indziej? 623 00:25:52,349 --> 00:25:52,890 PUBLICZNOŚCI: 34. 624 00:25:52,890 --> 00:25:55,040 Głośnik 1: Nawet 34 problematyczne, ponieważ jest to 625 00:25:55,040 --> 00:25:56,450 poza nawiasy. 626 00:25:56,450 --> 00:25:58,200 I tak w rzeczywistości, zobaczymy co się stanie. 627 00:25:58,200 --> 00:25:58,700 Dobrze? 628 00:25:58,700 --> 00:26:00,722 To może wydawać się trochę Intuicyjny, czy nie może, 629 00:26:00,722 --> 00:26:02,680 ale zobaczymy, co Kompilator ma do powiedzenia, gdy 630 00:26:02,680 --> 00:26:04,730 idziemy w dzisiejszym katalogu źródłowego. 631 00:26:04,730 --> 00:26:08,950 Dodać funkcję jednego. 632 00:26:08,950 --> 00:26:11,231 O mój Boże. 633 00:26:11,231 --> 00:26:12,980 Cóż, w końcu skończył , że na drodze. 634 00:26:12,980 --> 00:26:14,030 W porządku. 635 00:26:14,030 --> 00:26:15,510 A co chodzi tu? 636 00:26:15,510 --> 00:26:17,430 Bardzo arcane patrzeć. 637 00:26:17,430 --> 00:26:19,570 Ale oto co typed-- aby funkcję jednego. 638 00:26:19,570 --> 00:26:21,640 Oto, co zrobić wywołane, która jest faktycznie 639 00:26:21,640 --> 00:26:23,705 za pomocą szczęk kompilatora niektóre z tych flag 640 00:26:23,705 --> 00:26:25,080 że zobaczymy ponownie przed długo. 641 00:26:25,080 --> 00:26:26,829 I znowu, zawsze wyglądają w pierwszym błędu 642 00:26:26,829 --> 00:26:30,540 bo może po prostu mają kaskadowy znaczenia, wpływu na innych liniach. 643 00:26:30,540 --> 00:26:34,410 >> Więc co to oznacza to, że problem jest w funkcji 1.c. 644 00:26:34,410 --> 00:26:36,890 To jest na linii 32. 645 00:26:36,890 --> 00:26:39,712 I to jest w kolumnie, lub postaci, 13. 646 00:26:39,712 --> 00:26:42,670 Więc, gdy Twój edytor tekstu, który może pomóc określić, gdzie problem jest. 647 00:26:42,670 --> 00:26:47,079 Więc jeśli mogę przewinąć w górę, co jest linia 32? 648 00:26:47,079 --> 00:26:49,120 To rzeczywiście ten jeden który jest już podświetlony 649 00:26:49,120 --> 00:26:50,607 prawo here-- niewykorzystane zmiennej n. 650 00:26:50,607 --> 00:26:51,440 Ale to nie jest nieużywany. 651 00:26:51,440 --> 00:26:52,320 Używam go. 652 00:26:52,320 --> 00:26:56,110 Ale kompilator mylić, bo istnieje tylko wewnątrz tego zakresu. 653 00:26:56,110 --> 00:26:57,727 I tak nie mogę użyć go tutaj. 654 00:26:57,727 --> 00:26:58,560 Nie mogę użyć go tutaj. 655 00:26:58,560 --> 00:27:01,320 I kompilator zatem nawet nie obchodzi mnie, że próbuję. 656 00:27:01,320 --> 00:27:03,940 To wydaje się być nieużywany w jej rzeczywistego zakresu. 657 00:27:03,940 --> 00:27:08,854 >> Więc możemy rozszerzyć zakres wykonując dokładnie to, co zaczęliśmy with-- int n. 658 00:27:08,854 --> 00:27:11,020 I mimo, że tak nie jest wygląda tak elegancki, być może, 659 00:27:11,020 --> 00:27:15,110 i bierzemy dodatkowy wiersz tutaj, teraz jest w zasięgu wszędzie. 660 00:27:15,110 --> 00:27:15,970 Więc spróbuj ponownie. 661 00:27:15,970 --> 00:27:19,040 Więc dokonać funkcji jeden. 662 00:27:19,040 --> 00:27:19,610 Miły. 663 00:27:19,610 --> 00:27:23,370 A teraz, jeśli I jeśli mogę uruchomić funkcję jeden, dajmy jej negatywne 10, 664 00:27:23,370 --> 00:27:27,170 ujemny 1, 0, 1 i rzeczywiście pracuje. 665 00:27:27,170 --> 00:27:28,610 >> Więc nie ma innego rozwiązania tutaj. 666 00:27:28,610 --> 00:27:29,280 Wiesz co? 667 00:27:29,280 --> 00:27:31,230 Co zrobić, jeśli naprawdę jestem zmagają się z tym? 668 00:27:31,230 --> 00:27:33,140 Nie wiem, gdzie n miało iść. 669 00:27:33,140 --> 00:27:33,723 Wiesz co? 670 00:27:33,723 --> 00:27:39,220 Idę go umieścić wszystkie sposobem na szczycie mojego pliku tutaj. 671 00:27:39,220 --> 00:27:42,835 Co by to zrobić, o tym sądzisz? 672 00:27:42,835 --> 00:27:43,335 Tak? 673 00:27:43,335 --> 00:27:44,251 >> PUBLICZNOŚCI: [niesłyszalne]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 1 głośnik: Tak. 676 00:27:48,630 --> 00:27:50,560 Więc zrobiłem to globalna, że ​​tak powiem. 677 00:27:50,560 --> 00:27:54,430 Jeśli masz zmienną, która jest na zewnątrz wszystkich funkcji, które są dozwolone, 678 00:27:54,430 --> 00:27:58,780 i kod powinien skompilować i n stanie się dostępna nie tylko w get 679 00:27:58,780 --> 00:28:02,490 pozytywne int, ale także w main-- które jest trochę niepokojące, ponieważ nie 680 00:28:02,490 --> 00:28:04,864 już n w głównym, więc więcej na które w ciągu zaledwie moment-- 681 00:28:04,864 --> 00:28:06,530 ale to byłoby uznane za złe projektowanie. 682 00:28:06,530 --> 00:28:06,910 W porządku. 683 00:28:06,910 --> 00:28:08,570 Jeśli masz do uciekania się do coś, och, będę 684 00:28:08,570 --> 00:28:10,125 po prostu umieścić go tutaj, bo kod wydaje się skompilować 685 00:28:10,125 --> 00:28:12,180 generalnie nie jest najlepszą praktyką. 686 00:28:12,180 --> 00:28:14,590 Raczej chcesz wybrać najwęższy możliwy zakres 687 00:28:14,590 --> 00:28:18,720 dla zmiennych, co oznaczałoby, będzie z naszego pierwotnego projektu, który 688 00:28:18,720 --> 00:28:19,920 jest tutaj. 689 00:28:19,920 --> 00:28:24,400 >> Teraz tak na marginesie, jeśli miał identycznie nazwany zmienna tutaj, 690 00:28:24,400 --> 00:28:27,750 sposób c będzie obsługiwać this-- choć nie nastąpi to zbyt often-- 691 00:28:27,750 --> 00:28:30,150 jest to, że wciąż perfekcyjnie tutaj. 692 00:28:30,150 --> 00:28:35,000 Ale ta definicja N w wierszu 22 będzie cień globalny jeden. 693 00:28:35,000 --> 00:28:38,190 Więc ta będzie działać w Główną, a globalny 694 00:28:38,190 --> 00:28:41,670 rzeczywiście stosuje się, gdy jesteś w uzyskać pozytywne int Więcej na ten temat 695 00:28:41,670 --> 00:28:43,890 innym razem, ale tylko dla tych, ciekawi. 696 00:28:43,890 --> 00:28:45,970 >> Tak w skrócie, możemy rozwiązać ten problem tutaj. 697 00:28:45,970 --> 00:28:49,220 Teraz odciąć dwa inne utwory Zanim przyjrzymy się jednej ostatniej linii kodu 698 00:28:49,220 --> 00:28:50,170 w tym programie. 699 00:28:50,170 --> 00:28:52,170 Uzyskać pozytywną int. 700 00:28:52,170 --> 00:28:54,450 Po stronie lewej jego słowo jest int słowo. 701 00:28:54,450 --> 00:28:56,860 Co to oznacza sądzisz? 702 00:28:56,860 --> 00:28:58,900 Do tej pory mamy najczęściej postrzegane nieważne. 703 00:28:58,900 --> 00:28:59,400 Tak? 704 00:28:59,400 --> 00:29:01,810 >> PUBLICZNOŚCI: To rodzaj Zmienna, że ​​pytasz o. 705 00:29:01,810 --> 00:29:04,550 >> 1 głośnik: Tak To typ, niech mnie nie powiedzieć, zmienna, ale rodzaj wartości 706 00:29:04,550 --> 00:29:05,990 że pytam powrotem do. 707 00:29:05,990 --> 00:29:08,070 I rzeczywiście, to Intuicyjny tutaj, mam nadzieję. 708 00:29:08,070 --> 00:29:08,200 Dobrze? 709 00:29:08,200 --> 00:29:10,250 Jeśli chcesz uzyskać pozytywne int, co to jest, można 710 00:29:10,250 --> 00:29:12,920 chcą function-- jak nasz Wolontariusze z ostatniego tygodnia 711 00:29:12,920 --> 00:29:15,720 oddać z powrotem kawałek papieru z int na jej temat? 712 00:29:15,720 --> 00:29:19,190 I tak mamy określone, że tak zwany typ zwracany tej funkcji 713 00:29:19,190 --> 00:29:20,450 jest uzyskać pozytywną int. 714 00:29:20,450 --> 00:29:22,990 Jeśli nie chcemy go zwraca niczego, mówisz nieważne. 715 00:29:22,990 --> 00:29:25,270 Jeśli chcesz, aby powrócić ciąg, można powiedzieć ciąg. 716 00:29:25,270 --> 00:29:27,310 Jeśli chcesz, aby powrócić pływak, mówisz pływaka. 717 00:29:27,310 --> 00:29:30,440 Ale tylko jeden, który odnosi się tutaj logicznie, ponieważ używam get int, 718 00:29:30,440 --> 00:29:34,130 chociaż jestem ograniczając go do wartości dodatnie, jest powrót int. 719 00:29:34,130 --> 00:29:38,380 >> Więc odwrotnie, co to znaczy że to nieważne w nawiasach? 720 00:29:38,380 --> 00:29:40,130 Co zrobić, nawiasy ogólnie zdefiniować? 721 00:29:40,130 --> 00:29:40,588 Tak? 722 00:29:40,588 --> 00:29:42,880 >> PUBLICZNOŚCI: Oznacza to, że funkcja użytkownika Nie rzeczywiście coraz to. 723 00:29:42,880 --> 00:29:44,650 >> Głośnik 1: Oznacza to, że danej funkcji faktycznie nie dostajesz to, czego? 724 00:29:44,650 --> 00:29:45,430 >> PUBLICZNOŚCI: Wejście. 725 00:29:45,430 --> 00:29:46,763 >> Głośnik 1: Wejście, w ogóle. 726 00:29:46,763 --> 00:29:49,870 Więc rzeczywiście, jeśli nawias tutaj można określić nieważne, 727 00:29:49,870 --> 00:29:51,650 które oznacza po prostu nie chcę żadnych danych. 728 00:29:51,650 --> 00:29:53,269 Poradzę sobie z tym problemem sam. 729 00:29:53,269 --> 00:29:55,810 I rzeczywiście, nie masz do powiedzieć uzyskać pozytywną int nic. 730 00:29:55,810 --> 00:29:59,630 Wystarczy powiedzieć, uzyskać pozytywną int, i że Funkcja zgaśnie i co robi. 731 00:29:59,630 --> 00:30:02,970 >> Ale nie był mały trick mam gra tu cały ten czas 732 00:30:02,970 --> 00:30:04,970 aby upewnić się, ten kod kompiluje. 733 00:30:04,970 --> 00:30:09,620 Zauważ, że int-- uzyskać pozytywne int void-- jest na linii 27. 734 00:30:09,620 --> 00:30:14,530 Ale z jakiegoś powodu pozornie dziwne to też się tu na linii 16. 735 00:30:14,530 --> 00:30:18,530 I tak na dokładkę będę powtarzać to tak, to zupełnie identyczne. 736 00:30:18,530 --> 00:30:21,640 A mówiłem prototyp z trochę Komentarz jedna linia. 737 00:30:21,640 --> 00:30:28,850 Co się stanie, jeśli usunę, że A Teraz uruchom ponownie dokonać funkcji 1, wprowadzić. 738 00:30:28,850 --> 00:30:29,350 Ups. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Poczekaj minutkę. 741 00:30:33,110 --> 00:30:34,764 Gdzie jest moja karta? 742 00:30:34,764 --> 00:30:35,263 Hę? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 Czekaj. 745 00:30:39,620 --> 00:30:41,570 Bądź funkcji 1. 746 00:30:41,570 --> 00:30:42,150 No to jedziemy. 747 00:30:42,150 --> 00:30:42,310 OK. 748 00:30:42,310 --> 00:30:43,400 Gdyby nie został zapisany poprawnie. 749 00:30:43,400 --> 00:30:45,220 Tak, myślę, że jest trochę bug tutaj, gdzie nie jestem 750 00:30:45,220 --> 00:30:46,636 widząc nazwę karty w tej chwili. 751 00:30:46,636 --> 00:30:47,940 Więc co tu się dzieje? 752 00:30:47,940 --> 00:30:52,210 Niejawna deklaracja funkcji uzyskać pozytywną int jest nieważny w C99. 753 00:30:52,210 --> 00:30:53,940 Tak mylące ponownie. 754 00:30:53,940 --> 00:30:55,200 Więc co to wskazuje? 755 00:30:55,200 --> 00:30:57,287 Cóż, okazuje się, że C jest dość głupie. 756 00:30:57,287 --> 00:30:59,912 Cóż, to programowanie język, a raczej kompilator. 757 00:30:59,912 --> 00:31:02,940 To wie tylko to, co masz nauczył go, i to tylko 758 00:31:02,940 --> 00:31:05,640 będzie coś wiedzieć gdybyś nauczył go wcześniej. 759 00:31:05,640 --> 00:31:07,960 Innymi słowy, w Głównym w tej chwili, jestem 760 00:31:07,960 --> 00:31:10,900 próbuje wywołać funkcję nazywa się pozytywny int. 761 00:31:10,900 --> 00:31:14,120 Ale kompilator nie będzie zauważyć, że się pozytywnie int 762 00:31:14,120 --> 00:31:16,500 istnieje do linii 26. 763 00:31:16,500 --> 00:31:21,360 A więc to, co robi kompilator jest tylko Błędy, jak tylko dojdzie do linii 17, 764 00:31:21,360 --> 00:31:23,700 mówiąc niejawny deklarację z uzyskać pozytywną int, które 765 00:31:23,700 --> 00:31:27,740 jest tylko fantazyjny sposób na powiedzenie, nie wiem wiedzieć, co się pozytywne int jest jeszcze. 766 00:31:27,740 --> 00:31:31,240 >> Inne języki takie jak Java i Python i Ruby może patrzeć w przyszłość. 767 00:31:31,240 --> 00:31:32,240 C nie. 768 00:31:32,240 --> 00:31:35,110 I tak, jak nam się naprawić Jest to jeden z dwóch sposobów. 769 00:31:35,110 --> 00:31:40,160 Albo jedno, czy problem jest to, że się pozytywne int nie został dotąd, 770 00:31:40,160 --> 00:31:42,150 dobrze, daj mi po prostu przenieść go na górę. 771 00:31:42,150 --> 00:31:43,650 To by rozwiązać ten problem. 772 00:31:43,650 --> 00:31:46,790 Ale ogólnie, to uważana za lepszą technikę 773 00:31:46,790 --> 00:31:50,220 umieścić swoją główną funkcję w bardzo góry tak, że człowiek czyta kod 774 00:31:50,220 --> 00:31:52,710 wie, co robi program, ponieważ głównym nie jest pochowany wszystko 775 00:31:52,710 --> 00:31:53,960 sposób, w dolnej części lub w środku. 776 00:31:53,960 --> 00:31:55,130 To na samej górze. 777 00:31:55,130 --> 00:31:56,410 Tak, że nie czuje się idealnie. 778 00:31:56,410 --> 00:31:58,326 I rzeczywiście można uzyskać w sytuacjach, gdy 779 00:31:58,326 --> 00:32:00,820 w przypadku połączeń jedna funkcja drugiego, co wywołuje inną, 780 00:32:00,820 --> 00:32:04,630 można dostać się do kwestii, w których nie może przejść nad drugą, logicznie. 781 00:32:04,630 --> 00:32:05,920 To nie jest po prostu możliwe. 782 00:32:05,920 --> 00:32:09,290 >> I tak aż do pracy na to jest po prostu wziąć 783 00:32:09,290 --> 00:32:13,200 podpis danej funkcji, tak aby speak-- w pierwszej linii, gdzie to declared-- 784 00:32:13,200 --> 00:32:16,850 i po prostu skopiować, wkleić go u góry, ale nie z kręconymi braces-- 785 00:32:16,850 --> 00:32:17,980 tylko średnikiem. 786 00:32:17,980 --> 00:32:20,840 To jak mała podpowiedź z tego, co ma nadejść. 787 00:32:20,840 --> 00:32:26,630 W rzeczywistości, wszystkie tego czasu, gdy Widziałem takie rzeczy jak standardowego io.h 788 00:32:26,630 --> 00:32:33,040 i cs50.h, podobnie w te kropki Pliki h są tam inne prototypy. 789 00:32:33,040 --> 00:32:35,250 I zobaczymy, że przed długi. 790 00:32:35,250 --> 00:32:39,340 >> Tak w skrócie, jeśli masz program w pliku z wieloma funkcjami 791 00:32:39,340 --> 00:32:42,300 Poza głównym, prawie zawsze chcą je zadeklarować 792 00:32:42,300 --> 00:32:45,360 tylko w drodze ich pierwszy Linia, po średnikiem, 793 00:32:45,360 --> 00:32:48,410 na samym początku pliku. 794 00:32:48,410 --> 00:32:50,460 To było dużo na raz. 795 00:32:50,460 --> 00:32:53,130 Jakiekolwiek pytania? 796 00:32:53,130 --> 00:32:53,920 Jakiekolwiek pytania? 797 00:32:53,920 --> 00:32:54,530 W porządku. 798 00:32:54,530 --> 00:32:59,760 >> Więc przejdźmy następnie coś jak kaszel. 799 00:32:59,760 --> 00:33:00,260 Och. 800 00:33:00,260 --> 00:33:00,570 Jak montażu. 801 00:33:00,570 --> 00:33:01,220 W porządku. 802 00:33:01,220 --> 00:33:02,260 Kaszel. 803 00:33:02,260 --> 00:33:05,080 Więc o to c Realizacja programu 804 00:33:05,080 --> 00:33:07,560 my na drugi dzień w Scratch, że bardzo prosto wystarczy 805 00:33:07,560 --> 00:33:08,691 mówi, kaszel, kaszel, kaszel. 806 00:33:08,691 --> 00:33:09,190 W porządku. 807 00:33:09,190 --> 00:33:11,136 I ktoś powiedział kilka dni temu, że istnieje 808 00:33:11,136 --> 00:33:12,760 sposób czyszczenia ten kod się już. 809 00:33:12,760 --> 00:33:12,880 W porządku? 810 00:33:12,880 --> 00:33:15,440 Tak szybko, jak jesteś kopiowania i wklejanie prawdopodobnie zły projekt. 811 00:33:15,440 --> 00:33:18,725 Przynajmniej raz mamy do czterech lub pięciu lub 20 kaszle, to czuje się złe praktyki. 812 00:33:18,725 --> 00:33:19,850 My po prostu zachować kopię, wklejanie. 813 00:33:19,850 --> 00:33:22,213 Co jest oczywistym rozwiązaniem do czyszczenia to zaprogramować? 814 00:33:22,213 --> 00:33:23,120 >> PUBLICZNOŚCI: Loop. 815 00:33:23,120 --> 00:33:23,350 >> 1 głośnik: Tak. 816 00:33:23,350 --> 00:33:24,070 Więc użyć pętli. 817 00:33:24,070 --> 00:33:27,697 I możemy użyć dla pętli, na chwilę Pętla dowolną liczbę sposobów. 818 00:33:27,697 --> 00:33:29,780 I rzeczywiście, to co robimy w wersji jednej tutaj. 819 00:33:29,780 --> 00:33:32,250 Ja zamiast przepisać go w wersji jednej z cough.c 820 00:33:32,250 --> 00:33:35,170 być tylko kaszel w pętli for. 821 00:33:35,170 --> 00:33:38,240 W porządku, ale nie okazja teraz do rodzaju początku 822 00:33:38,240 --> 00:33:41,630 to trochę zaprojektować bardziej jak lekcja nauczyła nas przed chwilą, 823 00:33:41,630 --> 00:33:46,190 co jest this-- załóżmy, że chcę aby utworzyć funkcję zwaną kaszel 824 00:33:46,190 --> 00:33:49,730 Rozważmy przez chwilę co to będzie wyglądać. 825 00:33:49,730 --> 00:33:51,900 Więc jeśli chcę coś kaszel, tylko trzeba 826 00:33:51,900 --> 00:33:53,800 w użyciu druku F wewnątrz funkcji. 827 00:33:53,800 --> 00:33:55,030 I rzeczywiście jestem. 828 00:33:55,030 --> 00:33:56,990 A w rzeczywistości wszystkich czas, za każdym razem jesteś 829 00:33:56,990 --> 00:33:59,000 drukowania coś ekran, programista 830 00:33:59,000 --> 00:34:00,610 nazwałbym to efekt uboczny. 831 00:34:00,610 --> 00:34:02,990 To nie ja wręczając powrót ktoś wartość. 832 00:34:02,990 --> 00:34:06,170 To mi podjęcie pewnych działań które mogą być wizualnie oczywiste. 833 00:34:06,170 --> 00:34:10,672 Ale ta funkcja kaszel, to powrót wszystko w oparciu o pierwszą linię? 834 00:34:10,672 --> 00:34:12,880 Nie, dlatego, że jego typ zwracany jest nieważna, co oznacza po prostu, 835 00:34:12,880 --> 00:34:14,250 to nie wręczając mi nic w zamian. 836 00:34:14,250 --> 00:34:16,791 To może robić coś wizualnie, ale to nie mnie, wręczając 837 00:34:16,791 --> 00:34:18,639 kopie kawałek papieru jak w zeszłym tygodniu. 838 00:34:18,639 --> 00:34:21,310 >> Czy trzeba żadnych danych? 839 00:34:21,310 --> 00:34:21,810 Nie. 840 00:34:21,810 --> 00:34:23,134 A więc jest to nieważne tu. 841 00:34:23,134 --> 00:34:25,600 Więc to też jest rodzaj over-engineering ten problem. 842 00:34:25,600 --> 00:34:26,099 Dobrze? 843 00:34:26,099 --> 00:34:28,820 Zrobiłem program więcej złożone, więcej linii kodu, 844 00:34:28,820 --> 00:34:31,889 Nie zrobiłem go jakakolwiek bardziej funkcjonalne, ale 845 00:34:31,889 --> 00:34:34,210 będzie odskocznią, być może, dla szerszego 846 00:34:34,210 --> 00:34:36,830 Kontekst z bardziej skomplikowanego kodu. 847 00:34:36,830 --> 00:34:38,150 Ale co z tego? 848 00:34:38,150 --> 00:34:42,050 Co ja done-- tylko zerkając na nie patrząc na ten komentarz 849 00:34:42,050 --> 00:34:46,076 na samym szczycie file-- co mają I zasadniczo odbywa się tu z moim kaszlem 850 00:34:46,076 --> 00:34:47,409 wdrożenie, że jest inaczej? 851 00:34:47,409 --> 00:34:48,327 Tak, z tyłu? 852 00:34:48,327 --> 00:34:51,384 >> PUBLICZNOŚCI: Zrób to tak można mają charakter wyłączyć. 853 00:34:51,384 --> 00:34:52,050 1 głośnik: Tak. 854 00:34:52,050 --> 00:34:53,270 Więc to czuje miłe. 855 00:34:53,270 --> 00:34:53,389 Dobrze? 856 00:34:53,389 --> 00:34:56,600 To jak dodawanie funkcji do program lub czynność, w tym przypadku. 857 00:34:56,600 --> 00:34:57,830 Nadal nic nie zwraca. 858 00:34:57,830 --> 00:35:00,538 To może mieć wizualny efekt uboczny, dlatego, że dzwoni do druku f. 859 00:35:00,538 --> 00:35:02,800 Ale teraz mam parametryzowane funkcja, która 860 00:35:02,800 --> 00:35:06,470 oznacza, że ​​określiłeś wzięte wejście typu int i nazywają to n, 861 00:35:06,470 --> 00:35:08,510 ale mogę nazwać to coś chcę. 862 00:35:08,510 --> 00:35:11,550 W rzeczywistości, może to być po prostu razy, aby być jeszcze bardziej wyraźne. 863 00:35:11,550 --> 00:35:13,310 A potem może po prostu zmienić to tutaj. 864 00:35:13,310 --> 00:35:16,450 Ale chodzi o to, że jest to w jaki sposób stworzyć funkcję, która pobiera dane. 865 00:35:16,450 --> 00:35:19,530 A jeśli przypomnieć przerzucanie Może on-line za pośrednictwem jednego 866 00:35:19,530 --> 00:35:23,000 z walk-through, Czwarty i ostatni przykład kaszel, 867 00:35:23,000 --> 00:35:27,150 zauważysz, tutaj mam uogólnione mój kod further-- rodzaj wydobywane 868 00:35:27,150 --> 00:35:27,690 Ponadto. 869 00:35:27,690 --> 00:35:31,390 Jak kaszlu i kichania, oba są o jak coś mówi lub czyni 870 00:35:31,390 --> 00:35:32,330 jakiś dźwięk. 871 00:35:32,330 --> 00:35:34,725 Zapisz byłoby odpowiadający blok Scratch. 872 00:35:34,725 --> 00:35:37,350 A więc to, co zrobiłem w tej wersji, które możemy tylko rzut oka na, 873 00:35:37,350 --> 00:35:43,170 jest kaszel jest tak jakby powiedzieć, [kaszel], kaszel, a tymczasem, kichanie jest 874 00:35:43,170 --> 00:35:44,570 jakby powiedzieć, [Achoo]. 875 00:35:44,570 --> 00:35:46,900 A więc już uogólnione realizacja tych 876 00:35:46,900 --> 00:35:48,970 teraz wdrażanie Funkcja ta rodzajowa, 877 00:35:48,970 --> 00:35:51,490 powiedzieć, co jest interesujące dla dzisiejszych potrzeb 878 00:35:51,490 --> 00:35:54,300 tylko dlatego, że wciąż nie posiada typ zwracany. 879 00:35:54,300 --> 00:35:56,398 Ale ile to ma wejść? 880 00:35:56,398 --> 00:35:56,981 PUBLICZNOŚCI: Dwa. 881 00:35:56,981 --> 00:35:57,430 Głośnik 1: Dwa. 882 00:35:57,430 --> 00:35:59,263 I tak, jeśli chcesz się w dwóch argumentów, 883 00:35:59,263 --> 00:36:00,710 tylko rozdzielając je przecinkami. 884 00:36:00,710 --> 00:36:03,110 A jeśli chcesz, aby następnie nazywają tę funkcję, 885 00:36:03,110 --> 00:36:05,800 Zauważ, że po prostu zadzwoń powiedzmy, cytuję, koniec cytatu, 886 00:36:05,800 --> 00:36:09,090 dla pierwszego argumentu, wspólny n, dla drugiego argumentu. 887 00:36:09,090 --> 00:36:12,130 Więc jeszcze raz, po prostu musimy teraz klocki tak, że możemy właściwie 888 00:36:12,130 --> 00:36:15,686 realizacji niektórych naszych funkcji. 889 00:36:15,686 --> 00:36:16,570 W porządku. 890 00:36:16,570 --> 00:36:19,690 Wszelkie pytania na temat tego miasta? 891 00:36:19,690 --> 00:36:22,400 >> Więc teraz niech obrać powrotem warstwę, jeśli tak. 892 00:36:22,400 --> 00:36:24,840 A celem, ostatecznie, jest problemem w przyszłym tygodniu zestaw 893 00:36:24,840 --> 00:36:27,710 będzie na cryptogrophy-- sztuka kodowania informacji. 894 00:36:27,710 --> 00:36:30,640 I szczegółowo, informacja będzie można szyfrowania i deszyfrowania 895 00:36:30,640 --> 00:36:31,605 będzie tekst. 896 00:36:31,605 --> 00:36:33,980 I tak, że rodzaj zaprasza Dziś pytanie, jak dobrze, 897 00:36:33,980 --> 00:36:38,480 co dzieje się pod maską z tekstem poza ASCII od tygodnia zerowej, 898 00:36:38,480 --> 00:36:40,730 I jak możemy rzeczywiście zaczynają manipulować? 899 00:36:40,730 --> 00:36:43,070 Więc tutaj jest nazwa Zamyla jest. 900 00:36:43,070 --> 00:36:47,380 I w tekście, który może być wprowadzany do jak funkcja get smyczkowy. 901 00:36:47,380 --> 00:36:52,540 A od teraz, kiedy zobaczysz Ciąg jak this-- Z-A-M-Y-L-A-- 902 00:36:52,540 --> 00:36:56,550 zacząć myśleć o tym tak, jakby każda z tych znaków jest w pudełku z jego 903 00:36:56,550 --> 00:36:57,050 własne. 904 00:36:57,050 --> 00:36:59,460 I rzeczywiście, w tygodniu lub tak jest czas każdego z tych pól 905 00:36:59,460 --> 00:37:04,280 będzie stanowić bardzo wyraźnie blok memory-- kęs pamięci. 906 00:37:04,280 --> 00:37:07,050 Tak więc każdy z tych liter ostatecznie będzie reprezentował 8 bitów. 907 00:37:07,050 --> 00:37:10,560 A my rzeczywiście zobaczyć co się dzieje na pod maską w moim komputerze. 908 00:37:10,560 --> 00:37:13,440 >> Jednak, że nie wystarczy wystarczy spojrzeć na Zamyla 909 00:37:13,440 --> 00:37:17,520 po tej soczewki, przy czym każda z Te litery to w jego własnym polu. 910 00:37:17,520 --> 00:37:22,697 I na tyle dobrze w C możemy dostępu do każdego z tych pól bezpośrednio. 911 00:37:22,697 --> 00:37:25,530 Więc jeśli chcesz dostać pierwszy literą jej imienia, bardzo proste w C. 912 00:37:25,530 --> 00:37:28,410 Jeśli chcesz dostać ostatni list, bardzo proste, jak również 913 00:37:28,410 --> 00:37:30,240 z kawałkiem nowej składni. 914 00:37:30,240 --> 00:37:36,250 >> Więc mam zamiar iść do przodu w CS50 IDE i otwarcie o jakieś zerowy punkt C. 915 00:37:36,250 --> 00:37:40,270 I w tym przykładzie tutaj istnieją kilka nowych rzeczy dzieje. 916 00:37:40,270 --> 00:37:44,360 Więc najpierw w linii 19, mamy widziałem ten before-- get ciąg. 917 00:37:44,360 --> 00:37:49,840 Więc po prostu jako szybki test dla pewności czy ktoś może ofiarować werbalnie 918 00:37:49,840 --> 00:37:52,662 Wyjaśnienie laika od co dzieje się w linii 19. 919 00:37:52,662 --> 00:37:55,370 Podobnie jak po prostu przełożyć to na Angielski, że nie współlokator w CS50 920 00:37:55,370 --> 00:37:56,416 może zrozumieć. 921 00:37:56,416 --> 00:37:56,916 Tak. 922 00:37:56,916 --> 00:37:59,749 >> PUBLICZNOŚCI: Mieć wejściowego użytkownika Łańcuch i przechowywać go w zmiennej s. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 Głośnik 1: Dobra. 925 00:38:02,600 --> 00:38:05,579 Mają wprowadzanych przez użytkownika ciąg i przechowywać go w zmiennej s. 926 00:38:05,579 --> 00:38:06,120 To wspaniale. 927 00:38:06,120 --> 00:38:08,090 Tak więc na prawej boczne, nazywamy get ciąg. 928 00:38:08,090 --> 00:38:10,340 Że zwraca wartość które nie są przydzielane 929 00:38:10,340 --> 00:38:14,230 od prawej do lewej boczny w zmiennej o nazwie s, który jest 930 00:38:14,230 --> 00:38:15,950 przeznaczone do przechowywania ciąg. 931 00:38:15,950 --> 00:38:16,800 Dokładnie. 932 00:38:16,800 --> 00:38:20,000 >> Więc teraz linii 22, na komentarz w linii 21, 933 00:38:20,000 --> 00:38:22,780 oczywiście drukuje ten łańcuch jeden znak w wierszu. 934 00:38:22,780 --> 00:38:23,740 Ale jak? 935 00:38:23,740 --> 00:38:27,040 Więc przede wszystkim, możemy zainicjować I do 0. 936 00:38:27,040 --> 00:38:31,061 A następnie w jaki sposób dostać się do koniec nazwy Zamyla jest? 937 00:38:31,061 --> 00:38:32,810 Oraz, na koniec Nazwa Zamyla jest, mogłem 938 00:38:32,810 --> 00:38:38,151 ręcznie wpisać ostatni znak jej imię w jakiś sposób, lub liczba nim. 939 00:38:38,151 --> 00:38:38,650 Dobrze? 940 00:38:38,650 --> 00:38:43,500 Jeśli wrócimy here-- Z-A-M-L-- Y-L-A-- więc mogłem wpisać. 941 00:38:43,500 --> 00:38:47,340 Co znajduje się wskaźnik Ostatni list Zamyla jest? 942 00:38:47,340 --> 00:38:52,517 Jeśli jest to 0-- mówiąc jak programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 I tak rzeczywiście heard--, ostatni list w imię Zamyla jest szósty, 944 00:38:56,570 --> 00:38:58,890 ale jeśli liczymy od 0, to będzie numer 5. 945 00:38:58,890 --> 00:39:01,320 Miejcie to na uwadze, tutaj. 946 00:39:01,320 --> 00:39:04,929 >> Okazuje się, że jest to funkcja w C nazywa strlen, a już w dzień 947 00:39:04,929 --> 00:39:06,720 i do dziś jeszcze, wielu programistów 948 00:39:06,720 --> 00:39:09,524 wybrać, aby zsynchronizować nazwy dla ich Funkcje, które brzmią jak słowa 949 00:39:09,524 --> 00:39:10,440 próbują powiedzieć. 950 00:39:10,440 --> 00:39:12,590 Więc strlen jest długość łańcucha. 951 00:39:12,590 --> 00:39:18,168 I tak co by długość ciąg S powrócić, gdy Zamyla jest wejście? 952 00:39:18,168 --> 00:39:19,569 >> PUBLICZNOŚCI: Pięć. 953 00:39:19,569 --> 00:39:22,090 >> Głośnik 1: Z-A-M-Y-L. Sześć. 954 00:39:22,090 --> 00:39:22,590 Dobrze? 955 00:39:22,590 --> 00:39:23,940 Jaka jest długość nazwy Zamyla jest? 956 00:39:23,940 --> 00:39:24,440 Dobrze? 957 00:39:24,440 --> 00:39:26,240 I tak w rzeczywistości, sześć liter. 958 00:39:26,240 --> 00:39:26,740 Dobrze? 959 00:39:26,740 --> 00:39:28,940 I tak, co to oznacza dla naszej pętli? 960 00:39:28,940 --> 00:39:32,130 Mamy zamiar przejść z 0 do sześciu, które 961 00:39:32,130 --> 00:39:33,650 ma dać nam pięć powtórzeń. 962 00:39:33,650 --> 00:39:34,890 Co robimy na każdej iteracji? 963 00:39:34,890 --> 00:39:36,870 Cóż, procent C, ktoś domyślił się na drugi dzień, 964 00:39:36,870 --> 00:39:38,710 oznacza zastępczy dla czego? 965 00:39:38,710 --> 00:39:39,335 >> PUBLICZNOŚCI: Char. 966 00:39:39,335 --> 00:39:40,293 Głośnik 1: Wystarczy char. 967 00:39:40,293 --> 00:39:42,877 Więc jeden character-- nie wiele znaków jak struna. 968 00:39:42,877 --> 00:39:45,251 I to tu jest nowa linia że mamy drukowania. 969 00:39:45,251 --> 00:39:46,580 I to tu jest nowa składnia. 970 00:39:46,580 --> 00:39:51,130 Jeśli chcesz wydrukować i-tego znak w ciągu S, że tak powiem, 971 00:39:51,130 --> 00:39:54,060 można po prostu powiedzieć, że Nazwa łańcucha S, 972 00:39:54,060 --> 00:39:58,230 a następnie otworzyć nawias kwadratowy, oraz zamknął nawias kwadratowy, z I 973 00:39:58,230 --> 00:39:58,780 środek. 974 00:39:58,780 --> 00:40:01,430 I to jest miłe w które to niby wygląda jak plac 975 00:40:01,430 --> 00:40:06,210 jak kwadraty, w których Zamyla użytkownika znaków tam istnieć na tym zdjęciu. 976 00:40:06,210 --> 00:40:09,970 >> Więc jeśli rzeczywiście uruchomić to Teraz, zobaczmy, co się stanie. 977 00:40:09,970 --> 00:40:15,190 Bądź ciąg 0 dot ukośnik Łańcuch 0, a następnie jestem 978 00:40:15,190 --> 00:40:16,720 zamiar wpisać nazwę Zamyla jest. 979 00:40:16,720 --> 00:40:19,428 Nie ma polecenia, bo nie f użyciu druku, ale to dobrze. 980 00:40:19,428 --> 00:40:20,660 Po prostu wiem, co robić. 981 00:40:20,660 --> 00:40:23,240 I rzeczywiście, to wypisuje Nazwa Zamyla, w jednym wierszu. 982 00:40:23,240 --> 00:40:25,760 >> Teraz się trochę lekkomyślny. 983 00:40:25,760 --> 00:40:28,461 Załóżmy, że nie wiedziałem, o strlen i pomyślałem, 984 00:40:28,461 --> 00:40:31,460 Wszystko w porządku, nikt nie będzie mieć jak nazwać większy niż 50 znaków. 985 00:40:31,460 --> 00:40:36,360 Idziemy do przodu i ponownie skompilować to i uruchom go, a następnie wpisz w Zamyla 986 00:40:36,360 --> 00:40:37,160 ponownie. 987 00:40:37,160 --> 00:40:40,850 Logicznie rzecz biorąc, to, co jest Program będzie próbował drukować? 988 00:40:40,850 --> 00:40:49,545 Z-A-M-Y-L-A następnie jak 45 nieznane bajtów pamięci. 989 00:40:49,545 --> 00:40:51,670 I rzeczywiście, wrócimy Do tej idei pamięci. 990 00:40:51,670 --> 00:40:54,180 Ale logicznie, jeśli Nazwa Zamyla jest tak długo, 991 00:40:54,180 --> 00:40:56,450 jak na zdjęciu tu, co mówimy 992 00:40:56,450 --> 00:40:59,810 jest utrzymać drukowanie, należy drukowanie, należy drukowanie, należy drukowanie, należy drukowanie, 993 00:40:59,810 --> 00:41:03,781 aż do 50 postaci, które kto wie, co się wydarzy. 994 00:41:03,781 --> 00:41:05,030 Więc właściwie spojrzeć. 995 00:41:05,030 --> 00:41:06,720 Miejmy wpisać Zamyla. 996 00:41:06,720 --> 00:41:07,250 Ciekawe. 997 00:41:07,250 --> 00:41:08,190 Mieliśmy szczęście. 998 00:41:08,190 --> 00:41:09,700 Tylko cała masa białej przestrzeni. 999 00:41:09,700 --> 00:41:09,930 Och. 1000 00:41:09,930 --> 00:41:11,120 Jest jeden modny charakter. 1001 00:41:11,120 --> 00:41:14,577 To wygląda trochę jak dziwne pytanie zaznaczyć tam, ale jest nazwa Zamyla jest. 1002 00:41:14,577 --> 00:41:15,660 Chodźmy bardzo lekkomyślne. 1003 00:41:15,660 --> 00:41:20,000 Jak o wydrukowanie 500 bloki w nieznane? 1004 00:41:20,000 --> 00:41:24,380 Idziemy dalej i zrobić to jak również, a następnie ponownie uruchomić. 1005 00:41:24,380 --> 00:41:27,980 I niech cały ekran, bo musimy zobaczyć więcej miejsca. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 Masz jeszcze szczęście. 1008 00:41:31,830 --> 00:41:33,070 >> Czy możemy uzyskać bardziej lekkomyślni? 1009 00:41:33,070 --> 00:41:36,070 Chodźmy bardziej lekkomyślne. 1010 00:41:36,070 --> 00:41:39,350 50000 znaków. 1011 00:41:39,350 --> 00:41:41,390 Jest to najbardziej na pewno nie jest dobry pomysł. 1012 00:41:41,390 --> 00:41:41,890 W porządku. 1013 00:41:41,890 --> 00:41:42,990 Bądź ciąg 0. 1014 00:41:42,990 --> 00:41:44,720 To będzie nasz ostatni pokaz. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 Fuj. 1017 00:41:48,632 --> 00:41:50,010 Fuj. 1018 00:41:50,010 --> 00:41:50,680 OK. 1019 00:41:50,680 --> 00:41:54,407 Więc moja pamięć jest naprawdę pusta teraz, która jest faktycznie rodzajem wygodne. 1020 00:41:54,407 --> 00:41:55,990 Co staram się uzyskać to-- wszystko w porządku. 1021 00:41:55,990 --> 00:41:57,614 A teraz jestem po prostu będzie się lekkomyślne. 1022 00:41:57,614 --> 00:41:58,570 500000. 1023 00:41:58,570 --> 00:42:03,860 Make-- niech pełnoekranowym go. 1024 00:42:03,860 --> 00:42:04,990 Wchodzić. 1025 00:42:04,990 --> 00:42:05,490 Zamyla. 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 No to jedziemy. 1028 00:42:13,390 --> 00:42:15,610 Nie mam pojęcia, co to jest, ale to brzmi źle. 1029 00:42:15,610 --> 00:42:16,110 W porządku. 1030 00:42:16,110 --> 00:42:20,322 I rzeczywiście, wkrótce, jeśli jesteś wśród niewielu szczęśliwców godzinach urzędowania 1031 00:42:20,322 --> 00:42:22,780 i problemu ustawić jeden, ty może równie dobrze spotkać to. 1032 00:42:22,780 --> 00:42:25,490 Usterka segmentacji faktycznie robi mają dobrze zdefiniowane znaczenie. 1033 00:42:25,490 --> 00:42:28,450 Oznacza to jakaś pomyłka w odniesieniu do segmentu pamięci. 1034 00:42:28,450 --> 00:42:30,490 A w laika, oznacza to, że dotknął 1035 00:42:30,490 --> 00:42:34,780 memory-- użyliśmy pamięci RAM w komputerze że nie powinien mieć dostępu. 1036 00:42:34,780 --> 00:42:37,050 A to, co jest zarówno potężne i niebezpieczne 1037 00:42:37,050 --> 00:42:39,910 o C jest to, że rzeczywiście mają nieograniczony dostęp 1038 00:42:39,910 --> 00:42:45,910 do całości pamięci programu lub bajtów lub RAM, bardziej szczegółowo. 1039 00:42:45,910 --> 00:42:49,510 >> Więc nawet jeśli nazwa Zamyla w ma tylko sześć znaków, 1040 00:42:49,510 --> 00:42:51,450 Wciąż mogę przejść w dowolnym miejscu w pamięci chcę. 1041 00:42:51,450 --> 00:42:53,491 I tak na marginesie, jeśli już kiedykolwiek czytałem jakiś artykuł 1042 00:42:53,491 --> 00:42:55,610 w ciągu roku o niektórych serwera lub jakiś program 1043 00:42:55,610 --> 00:42:58,654 włamaniom lub posiekany to podjęte zaletą czegoś 1044 00:42:58,654 --> 00:43:00,820 nazywa przepełnienie bufora exploit, że będziesz naprawdę 1045 00:43:00,820 --> 00:43:04,970 mówić o kilka tygodni, to ogólnie odnosząc się jakoś oszukiwanie 1046 00:43:04,970 --> 00:43:09,090 komputer się idzie dobrze poza granice pamięci 1047 00:43:09,090 --> 00:43:11,410 że powinna mieć, a znalezienie czegoś soczystego 1048 00:43:11,410 --> 00:43:13,530 w tym memory-- Hasło, być może, to sposób 1049 00:43:13,530 --> 00:43:16,990 obejścia jakiś numer seryjny sprawdzić, czy po prostu na ogół w stanie 1050 00:43:16,990 --> 00:43:20,360 oszukać komputer wykonuje Kod, który nie był przeznaczony. 1051 00:43:20,360 --> 00:43:22,360 Ale wróćmy do Rzeczywistość na chwilę 1052 00:43:22,360 --> 00:43:24,550 gdzie ten program był realizowane z strlen, 1053 00:43:24,550 --> 00:43:26,110 i wprowadzić jedną rzecz tutaj. 1054 00:43:26,110 --> 00:43:30,030 Co nowego u tych trzech najlepszych linii? 1055 00:43:30,030 --> 00:43:30,910 >> Tak więc ciąg dot h. 1056 00:43:30,910 --> 00:43:35,490 Okazuje się, że to jest biblioteka o nazwie Dot łańcuch H lub Biblioteka ciąg, 1057 00:43:35,490 --> 00:43:38,490 którego nagłówek pliku, że tak powiem, jest ciąg dot h, który daje mi 1058 00:43:38,490 --> 00:43:40,860 Dostęp do tej funkcji strlen. 1059 00:43:40,860 --> 00:43:43,841 Jeśli Pomijam, że kompilator jest będzie krzyczeć na mnie w jakiejś formie. 1060 00:43:43,841 --> 00:43:44,590 Ale wiesz co? 1061 00:43:44,590 --> 00:43:46,090 Teraz przejdźmy naprawdę dopracowany. 1062 00:43:46,090 --> 00:43:50,820 W linii 22, coś niby z inefficient-- źle zaprojektowane, 1063 00:43:50,820 --> 00:43:53,990 arguably-- o tej linii kodu. 1064 00:43:53,990 --> 00:43:56,280 Pomyśl, w jaki sposób dla pętli są realizowane 1065 00:43:56,280 --> 00:44:00,140 i jakie kroki powtórzy i ponownie i again-- inicjalizacji 1066 00:44:00,140 --> 00:44:04,110 stan, kod, który zostanie wykonany, a następnie przyrost 1067 00:44:04,110 --> 00:44:07,880 lub zmiana, to warunek, to kod, to zmiana, a następnie 1068 00:44:07,880 --> 00:44:11,280 stan, kod, to zmiana, i tak dalej. 1069 00:44:11,280 --> 00:44:15,320 Więc co może być trochę niepokojące lub źle zrobić tutaj? 1070 00:44:15,320 --> 00:44:16,387 Tak, w kolorze niebieskim. 1071 00:44:16,387 --> 00:44:18,220 PUBLICZNOŚCI: strlen jest zwany wiele, wiele razy. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 1 głośnik: Tak. 1074 00:44:21,320 --> 00:44:23,700 Więc strlen nazywa wiele razy, ale to, co jest 1075 00:44:23,700 --> 00:44:27,113 długość Zamyla się nazywa Pierwszy raz pętla wykonuje? 1076 00:44:27,113 --> 00:44:27,860 >> PUBLICZNOŚCI: Six. 1077 00:44:27,860 --> 00:44:28,110 >> Głośnik 1: Sześć. 1078 00:44:28,110 --> 00:44:30,976 Cóż, jaka jest długość jej imienia po raz drugi kod wykonuje? 1079 00:44:30,976 --> 00:44:31,432 >> PUBLICZNOŚCI: Six. 1080 00:44:31,432 --> 00:44:31,890 >> Głośnik 1: W porządku. 1081 00:44:31,890 --> 00:44:32,720 To jeszcze sześć. 1082 00:44:32,720 --> 00:44:33,220 Dobrze? 1083 00:44:33,220 --> 00:44:35,260 Nazwa Zarla nie ma zmianie, nawet jeśli szukam 1084 00:44:35,260 --> 00:44:38,240 zaledwie część liter w jej imieniu. 1085 00:44:38,240 --> 00:44:41,349 A więc fakt, że skutecznie jestem z tym pytaniem, co jest 1086 00:44:41,349 --> 00:44:44,640 długość Zamyla, jaka jest długość z Zamyla, jaka jest długość Zamyla, 1087 00:44:44,640 --> 00:44:47,990 sześć oddzielnych razy, lub siedem nawet, to tylko głupia, 1088 00:44:47,990 --> 00:44:50,390 bo to jest niezmienne, że odpowiedź. 1089 00:44:50,390 --> 00:44:53,550 I tak, co mogłem w rzeczywistości zrobić, to this-- w ciąg jednego 1090 00:44:53,550 --> 00:44:55,680 Mam tu nieznacznie lepszą wersję. 1091 00:44:55,680 --> 00:45:00,110 There-- whoops-- ciąg dwóch mam marginalnie lepsza wersja, w którym 1092 00:45:00,110 --> 00:45:05,010 Robię this--, a nie tylko inicjowanie i na 0, ja też przecinkami 1093 00:45:05,010 --> 00:45:07,990 Oświadczam, drugą zmienną n-- nie muszę ponownie powiedzieć int. 1094 00:45:07,990 --> 00:45:09,220 I nie powinien w rzeczywistości. 1095 00:45:09,220 --> 00:45:10,380 Ale mówię n. 1096 00:45:10,380 --> 00:45:13,610 A następnie zainicjować n do strlen n, tak że teraz 1097 00:45:13,610 --> 00:45:17,110 Ile razy strlen zostanie wykonany w całości? 1098 00:45:17,110 --> 00:45:17,610 Tylko raz. 1099 00:45:17,610 --> 00:45:20,257 A więc to, co mamy na myśli, wcześniej o lepszej konstrukcji. 1100 00:45:20,257 --> 00:45:23,090 Właściwie tylko twój kod jest poprawny, wraca i przemyślenia, 1101 00:45:23,090 --> 00:45:26,820 używam tak mało pamięci lub w kilka sekund 1102 00:45:26,820 --> 00:45:30,409 lub milisekund czasu komputera jak możliwe do realizacji jakiś problem? 1103 00:45:30,409 --> 00:45:32,200 I zamierzam do przewijania i tylko wspomnieć 1104 00:45:32,200 --> 00:45:34,283 że jest to wzmianka null w tej wersji, 1105 00:45:34,283 --> 00:45:36,390 ale wrócimy do tego niebawem. 1106 00:45:36,390 --> 00:45:41,010 Bo teraz, rzućmy okiem co, gdzie to będzie nas prowadzić. 1107 00:45:41,010 --> 00:45:44,110 Tak jeden, okazuje się, że teraz, że mamy możliwość 1108 00:45:44,110 --> 00:45:46,860 spojrzeć na poszczególnych znaków, możemy wykorzystać coś 1109 00:45:46,860 --> 00:45:50,807 od tygodnia 0, który był bardzo tajemniczych i rodzaj nieciekawe w tym czasie. 1110 00:45:50,807 --> 00:45:53,390 Ale teraz, a zwłaszcza, gdy dostać się do kryptografii w tygodniu, 1111 00:45:53,390 --> 00:45:54,820 to będzie bardzo silne. 1112 00:45:54,820 --> 00:45:57,450 Okazuje się, że niektóre int i pace danych types-- 1113 00:45:57,450 --> 00:46:00,300 oraz znaki i napisy i inne things-- niektóre 1114 00:46:00,300 --> 00:46:02,800 można łatwo przekształcić w inną. 1115 00:46:02,800 --> 00:46:05,840 >> Na przykład, gdy rozmawialiśmy o ASCII jakiś czas ago-- tutaj 1116 00:46:05,840 --> 00:46:07,796 litery kapitałowych, do M, kropka, kropka, 1117 00:46:07,796 --> 00:46:12,530 dot-- powiedzieliśmy, że nie jest to odwzorowanie od tych liter i cyfr. 1118 00:46:12,530 --> 00:46:14,970 I w rzeczywistości odnosi dla małych liter, jak również. 1119 00:46:14,970 --> 00:46:17,470 Mała litera a jest 97, a jest 65 kapitału. 1120 00:46:17,470 --> 00:46:20,860 I nie jest to liczba w kodzie ASCII, która jest po prostu to odwzorowanie 1121 00:46:20,860 --> 00:46:23,240 System dla wszystkich tych innych liter. 1122 00:46:23,240 --> 00:46:25,030 Więc co to oznacza? 1123 00:46:25,030 --> 00:46:28,390 Cóż, mam zamiar iść do przodu i otwarta się prawdziwa szybko coś, co nazywa 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, z których większość to komentarze. 1125 00:46:31,240 --> 00:46:33,860 I znowu w Internecie zawsze można Spojrzenie przez komentarzach. 1126 00:46:33,860 --> 00:46:36,180 >> I spójrz, co to zrobi. 1127 00:46:36,180 --> 00:46:38,410 Więc to musi funkcji main. 1128 00:46:38,410 --> 00:46:41,490 Mam zakodowane numery tylko dla teraz, bo wiem, co robię. 1129 00:46:41,490 --> 00:46:42,950 Wiem, co chcę zobaczyć tutaj. 1130 00:46:42,950 --> 00:46:45,220 A ja zainicjowany I do 65. 1131 00:46:45,220 --> 00:46:48,490 I liczę się do 26 liter razem. 1132 00:46:48,490 --> 00:46:52,990 I co ja mam wydrukować jedną linię w czasie 1133 00:46:52,990 --> 00:46:54,930 czy można interpretować wyróżnionego linię? 1134 00:46:54,930 --> 00:46:55,970 Co zostanie wydrukowany? 1135 00:46:55,970 --> 00:46:56,797 Tak. 1136 00:46:56,797 --> 00:46:57,264 >> PUBLICZNOŚCI: Czy zamierzacie aby wydrukować list, 1137 00:46:57,264 --> 00:46:59,805 odpowiada na mapę Wartość list i wartość całkowita? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 Głośnik 1: Dokładnie. 1140 00:47:01,990 --> 00:47:04,740 Mam zamiar wydrukować list odpowiadającej wartości całkowitej, 1141 00:47:04,740 --> 00:47:06,131 i vice versa, co następuje. 1142 00:47:06,131 --> 00:47:08,880 No to, ktoś powiedział wcześniej, jest tylko zastępczym dla char. 1143 00:47:08,880 --> 00:47:09,490 To nadal jest. 1144 00:47:09,490 --> 00:47:12,280 To, oczywiście, jest symbolem zastępczym W przypadku nie int-- nowa linia. 1145 00:47:12,280 --> 00:47:18,140 A teraz zauważyć, że moją pierwszą wartość Jestem podłączając do tego zastępczego 1146 00:47:18,140 --> 00:47:22,320 jest nie tylko ja mówię, w nawiasach, char I, 1147 00:47:22,320 --> 00:47:26,700 których nawiasach char jest mówi kompilatorowi, traktowanie I 1148 00:47:26,700 --> 00:47:28,490 nie tak jak to jest, co jest liczbą. 1149 00:47:28,490 --> 00:47:30,490 Traktować jako rzeczywisty charakter. 1150 00:47:30,490 --> 00:47:34,490 Podczas gdy druga wartość ja podłączając in-- powinny ja-- być tylko liczbą. 1151 00:47:34,490 --> 00:47:38,140 >> Więc jeśli mogę skompilować ten program-- więc to zrobić ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 Kropka ukośnik ASCII 0-- ja po prostu to mało poręczne wykres, który 1153 00:47:41,720 --> 00:47:44,950 mi pokazuje wszystkie możliwe mapowania bez konieczności myśleć 1154 00:47:44,950 --> 00:47:46,450 przez lub zrozumieć to na własną rękę. 1155 00:47:46,450 --> 00:47:48,783 A ja również drukowanie, zwróć uwagę na małe litery, 1156 00:47:48,783 --> 00:47:51,410 bo kilka linijek później także wydrukować to odwzorowanie 1157 00:47:51,410 --> 00:47:53,737 a także, co jest po prostu powiedzieć, że po zrozumieniu 1158 00:47:53,737 --> 00:47:55,570 Co się dzieje pod spodem kaptur, można 1159 00:47:55,570 --> 00:47:57,111 automatycznie przeliczy tę iz powrotem. 1160 00:47:57,111 --> 00:48:00,160 I faktycznie, jeśli ktoś z was kiedykolwiek to zrobił w szkole 1161 00:48:00,160 --> 00:48:03,490 lub słyszał o kimś mitycznie biorąc pod uwagę 1162 00:48:03,490 --> 00:48:05,620 i przekazania go do jego lub jej koleżanka z klasy, 1163 00:48:05,620 --> 00:48:08,300 ale jajecznica Litery by jak staje B, 1164 00:48:08,300 --> 00:48:11,240 i B staje się C, lub coś bardziej skomplikowane, dobrze, 1165 00:48:11,240 --> 00:48:13,410 jak by go o wdrażania, że ​​jako dziecko? 1166 00:48:13,410 --> 00:48:16,340 Cóż, po prostu rodzaj wiedzieć A staje B, B staje się C, 1167 00:48:16,340 --> 00:48:19,700 ale matematycznie, Co to było dziecko robi? 1168 00:48:19,700 --> 00:48:22,050 Co ty dodając do każdej litery? 1169 00:48:22,050 --> 00:48:23,340 Skutecznie, 1. 1170 00:48:23,340 --> 00:48:27,740 >> Więc po zmianie A do B, to trochę jak zmienia 65 do 66, 1171 00:48:27,740 --> 00:48:29,590 które matematycznie oznacza po prostu dodać 1. 1172 00:48:29,590 --> 00:48:33,300 I tak, jeśli były do ​​wdrożenia że niewiele technika zwodnicze 1173 00:48:33,300 --> 00:48:36,380 dla nauczyciela w kodzie, może zrobić dokładnie, że tylko 1174 00:48:36,380 --> 00:48:38,552 przez dodanie jednej litery razem. 1175 00:48:38,552 --> 00:48:40,260 Więc zanim długo, jesteśmy zobaczymy, jak 1176 00:48:40,260 --> 00:48:43,300 Można to wykorzystać do rzeczywistości szczerze zakodowania i odkodowania 1177 00:48:43,300 --> 00:48:43,991 informacje. 1178 00:48:43,991 --> 00:48:47,240 Tymczasem wiemy, że zaczęliśmy wprowadzić kilka innych bibliotek 1179 00:48:47,240 --> 00:48:48,990 here-- o jakieś jeden dzisiaj. 1180 00:48:48,990 --> 00:48:51,180 I bardzo pomocna strona mam nadzieję, że znajdziesz 1181 00:48:51,180 --> 00:48:55,010 nazywa reference.cs50.net, co kadra nauczycielska ułożyła, 1182 00:48:55,010 --> 00:48:57,510 tak, że jeśli chcesz wyszukać utwory jak strlen, 1183 00:48:57,510 --> 00:48:59,300 można zacząć pisać nazwą funkcji, 1184 00:48:59,300 --> 00:49:02,890 kliknij strlen tam, a następnie mniej wygodne wyjaśnienie 1185 00:49:02,890 --> 00:49:03,700 będzie się pojawiać. 1186 00:49:03,700 --> 00:49:06,880 Albo jeśli chcesz urzędnika Wyjaśnienie oparte na systemie Linux, 1187 00:49:06,880 --> 00:49:08,945 można kliknąć bardziej wygodne w prawym górnym rogu, a to 1188 00:49:08,945 --> 00:49:12,070 zaprezentuje tę samą informację, ale w bardziej skomplikowanych warunkach. 1189 00:49:12,070 --> 00:49:15,070 To jest użytecznym źródłem do rzeczywiście wie, co wszystko robi. 1190 00:49:15,070 --> 00:49:17,320 >> Następnym razem będziemy spójrz na Ovaltine 1191 00:49:17,320 --> 00:49:20,070 i więcej, i przedstawić się w świat kryptografii. 1192 00:49:20,070 --> 00:49:21,930 Wcześniej, zobaczymy później w tym tygodniu. 1193 00:49:21,930 --> 00:49:23,390 A teraz, Colton Ogden. 1194 00:49:23,390 --> 00:49:26,730 Do zobaczenia w środę. 1195 00:49:26,730 --> 00:49:30,216 >> [MUZYKI] 1196 00:49:30,216 --> 00:49:33,702 >> [MUZYKI] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> Głośnik 1: Co [BLEEP] robisz? 1199 00:49:42,200 --> 00:49:45,720 >> Głośnik 1: jem mój deser? 1200 00:49:45,720 --> 00:49:47,160 Jak to jeść? 1201 00:49:47,160 --> 00:49:47,860 Z rąk? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [MUZYKI] 1204 00:49:57,940 --> 00:50:03,453