1 00:00:00,000 --> 00:00:03,353 >> [MUZYKI] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID MALAN: Witam wszystkich. 4 00:00:06,050 --> 00:00:07,777 To supersection CS50 jest. 5 00:00:07,777 --> 00:00:09,860 Przypisane sekcje nie będzie rozpocząć na kolejny tydzień. 6 00:00:09,860 --> 00:00:11,580 I tak dzisiaj, jestem tu with-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: Maria. 8 00:00:12,122 --> 00:00:14,163 DAVID MALAN: --to rzeczywistości zapoznać się z problemem 9 00:00:14,163 --> 00:00:16,110 ustawić jedną, kurs jest Pierwsze tygodnie materiału, 10 00:00:16,110 --> 00:00:19,780 uzyskać można zorientowane CS50 IDE, nieco Linuksa, systemu operacyjnego, który jest 11 00:00:19,780 --> 00:00:22,290 działa na IDE, jak również spojrzeć na niektóre z przejściem 12 00:00:22,290 --> 00:00:25,730 od podstaw do C wiodących do problemu ustawić jedną. 13 00:00:25,730 --> 00:00:28,340 >> Więc bez zbędnych ceregieli, w problemu ustawić jeden, 14 00:00:28,340 --> 00:00:30,520 masz zamiar być wprowadzone do CS50 IDE, które 15 00:00:30,520 --> 00:00:33,230 jest to programowanie internetowy środowisko, które wykorzystujemy w celu 16 00:00:33,230 --> 00:00:34,280 pisać programy. 17 00:00:34,280 --> 00:00:37,280 To zostało zaprojektowane tak, aby wyglądać bardzo przypomina typowego komputera 18 00:00:37,280 --> 00:00:39,430 System prowadzenia eksploatacji System o nazwie Linux. 19 00:00:39,430 --> 00:00:42,440 Ale to jest w tak zwanej chmurze, co oznacza, że ​​każdy w klasie 20 00:00:42,440 --> 00:00:45,100 może rzeczywiście jego lub jej własne konto i korzystać z niego, jak również. 21 00:00:45,100 --> 00:00:48,950 >> Tak więc większość z was zapewne nigdy nie używany Przed środowisko Linux, a może 22 00:00:48,950 --> 00:00:50,447 nawet środowisko linii poleceń. 23 00:00:50,447 --> 00:00:52,280 I wiersz poleceń Środowisko jest inna. 24 00:00:52,280 --> 00:00:53,200 To wszystko tekstowe. 25 00:00:53,200 --> 00:00:54,730 To wszystkie komendy z klawiatury. 26 00:00:54,730 --> 00:00:59,480 I to nie Mousing, brak ikon, bez okien dialogowych, ma menu. 27 00:00:59,480 --> 00:01:00,212 To czysto tekstowe. 28 00:01:00,212 --> 00:01:01,920 Tak więc na początku, to niby z czuje się jak w kroku 29 00:01:01,920 --> 00:01:04,434 tyłu pod względem złożoności. 30 00:01:04,434 --> 00:01:06,600 Ale to kończy się o wiele bardziej wydajne, na pewno, 31 00:01:06,600 --> 00:01:08,510 dla informatyk, ostatecznie. 32 00:01:08,510 --> 00:01:09,540 >> Warto więc przyjrzeć. 33 00:01:09,540 --> 00:01:13,850 Oto jestem w CS50.io, poprzez które możesz zalogować się CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 I podobnie jak w Scratch, jest trzy podstawowe obszary, do tego ekranu. 35 00:01:17,414 --> 00:01:20,080 Więc po stronie lewej ręki, mamy co będzie przeglądarka plików. 36 00:01:20,080 --> 00:01:22,413 I nie ma w tym folderze na góry, która jest w tej chwili pusty 37 00:01:22,413 --> 00:01:24,690 od Pozbyłem się wszystkich moich Pliki przed supersection. 38 00:01:24,690 --> 00:01:27,599 I to gdzie będziesz zapisywać pliki C, które piszemy. 39 00:01:27,599 --> 00:01:30,890 W prawym górnym rogu, mamy miejsce, gdzie cały nasz kod będzie uzyskać pisemną. 40 00:01:30,890 --> 00:01:34,610 I rzeczywiście, jeśli kliknięciu tego plusa, to będzie pozwól mi wybrać nowy plik. 41 00:01:34,610 --> 00:01:38,310 I tu mogę zacząć pisać kod C, lub Naprawdę, dowolną liczbę innych językach. 42 00:01:38,310 --> 00:01:42,670 >> A następnie na dole, gdzie go mówi jharvard @ ide50-- i twoje będzie 43 00:01:42,670 --> 00:01:45,080 powiedzieć coś trochę different-- co to nazywa? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Okno terminalu. 46 00:01:49,310 --> 00:01:49,570 Tak. 47 00:01:49,570 --> 00:01:51,810 Więc okna terminalu tzw wiersza poleceń 48 00:01:51,810 --> 00:01:55,540 interfejs, za pomocą którego można komunikować z podstawowym systemem operacyjnym. 49 00:01:55,540 --> 00:01:58,220 A teraz, będziemy bardzo niewiele użycia this-- 50 00:01:58,220 --> 00:02:01,170 tylko skompilować, aby spojrzeć na komunikaty o błędach, które widzimy, 51 00:02:01,170 --> 00:02:02,347 i uruchomić nasze programy. 52 00:02:02,347 --> 00:02:04,680 Ale w końcu, będziemy zrobić o wiele więcej, jak również. 53 00:02:04,680 --> 00:02:07,490 I można nawet zainstalować oprogramowanie i podać swoje miejsce pracy 54 00:02:07,490 --> 00:02:09,066 w ciągu CS50 IDE, jak również. 55 00:02:09,066 --> 00:02:10,440 Ale o tym innym razem. 56 00:02:10,440 --> 00:02:12,689 >> Więc śmiało i pisać bardzo prosty program tylko 57 00:02:12,689 --> 00:02:15,064 przejść przez rozgrzewania hello.c, który może 58 00:02:15,064 --> 00:02:16,480 najprostszy program, możemy napisać. 59 00:02:16,480 --> 00:02:18,330 Już otworzyła nową kartę. 60 00:02:18,330 --> 00:02:24,310 Mam zamiar iść do przodu i powiedzieć to standardowy io.h. 61 00:02:24,310 --> 00:02:25,325 Następnie int main (void). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 A potem printf ("Witaj, świecie" odwrotny ukośnik n, blisko cytat, 64 00:02:35,200 --> 00:02:39,480 blisko nawiasy i średnik. 65 00:02:39,480 --> 00:02:39,990 >> W porządku. 66 00:02:39,990 --> 00:02:41,700 Więc teraz zauważyć moje okno jest bez tytułu. 67 00:02:41,700 --> 00:02:44,840 Jestem więc bardzo szybko idzie , aby przejść do pliku, zapisz. 68 00:02:44,840 --> 00:02:46,910 I to jest ważne, że Nie nazywam to "cześć". 69 00:02:46,910 --> 00:02:49,243 Więc to bardzo częsty błąd, zwłaszcza problemu ustawić jeden, 70 00:02:49,243 --> 00:02:52,530 jest przypadkiem po prostu zadzwonić do Program "woda" lub "chciwy" lub "Mario" 71 00:02:52,530 --> 00:02:53,890 lub "kredyt" lub podobne. 72 00:02:53,890 --> 00:02:55,970 Ale rzeczywiście chcesz, aby czy masz rozszerzenie pliku 73 00:02:55,970 --> 00:02:58,928 ponieważ jest to jedyny sposób, że kompilator, a także edytor kodu 74 00:02:58,928 --> 00:03:00,710 wie, że jesteś rzeczywiście pisanie kodu C. 75 00:03:00,710 --> 00:03:02,280 Więc pozwól mi iść do przodu, a następnie kliknij przycisk Zapisz. 76 00:03:02,280 --> 00:03:05,710 >> I teraz też, co CS50 IDE uczynił dla nas jest to również 77 00:03:05,710 --> 00:03:07,120 Składnia podświetlone wszystko. 78 00:03:07,120 --> 00:03:08,822 Więc to jest zrobione wszystko bardzo kolorowe. 79 00:03:08,822 --> 00:03:10,780 A głównym celem nie działa. 80 00:03:10,780 --> 00:03:14,290 To tylko zwrócić oczy na koncepcyjnie różne kawałki 81 00:03:14,290 --> 00:03:15,310 tego programu. 82 00:03:15,310 --> 00:03:17,570 Więc śmiało i skompilować to. 83 00:03:17,570 --> 00:03:19,490 I mogę skompilować ten w kilka sposobów. 84 00:03:19,490 --> 00:03:22,010 Oraz w jednym tygodniu sposobem starej szkoły zrobiliśmy 85 00:03:22,010 --> 00:03:26,250 to było dosłownie na Polecenie line-- "hello.c dzyń". 86 00:03:26,250 --> 00:03:27,596 A potem naciśnij Enter. 87 00:03:27,596 --> 00:03:29,720 I nic się nie dzieje W oknie terminala. 88 00:03:29,720 --> 00:03:32,654 Ale to, co zrobił zmianę w IDE? 89 00:03:32,654 --> 00:03:35,320 Gdzie znów IDE oznacza po prostu, Zintegrowane środowisko programistyczne. 90 00:03:35,320 --> 00:03:38,360 Jest to fantazyjny sposób na powiedzenie Ten zintegrowany rozwój 91 00:03:38,360 --> 00:03:40,620 środowisko dla rozwoju oprogramowania. 92 00:03:40,620 --> 00:03:42,477 Więc co zmienić w interfejsie użytkownika? 93 00:03:42,477 --> 00:03:44,310 Co można zauważyć, że jest inaczej, Maria? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: zauważyłem coś pod IDE50 folderu tutaj. 95 00:03:47,100 --> 00:03:47,850 >> DAVID MALAN: Tak. 96 00:03:47,850 --> 00:03:50,230 Więc tutaj nie tylko mamy "hello.c." 97 00:03:50,230 --> 00:03:53,120 Mamy też "a.out", który jest rodzaj głupie nazwy programu. 98 00:03:53,120 --> 00:03:56,430 Ale rzeczywiście, jest to domyślna nazwa dla Program po prostu skompilować kod 99 00:03:56,430 --> 00:03:59,110 i nie mów, że kompilator co plik do wyjścia. 100 00:03:59,110 --> 00:04:01,790 Więc jeśli chcę uruchomić to, że trzeba powiedzieć compiler-- 101 00:04:01,790 --> 00:04:05,340 czy raczej muszę powiedz do pracy, że 102 00:04:05,340 --> 00:04:09,780 Aby uruchomić program o nazwie "a.out". 103 00:04:09,780 --> 00:04:10,550 Wchodzić. 104 00:04:10,550 --> 00:04:12,474 I nie ma "cześć, świat. "teraz" ./ ". 105 00:04:12,474 --> 00:04:13,390 jest rzeczywiście ważne. 106 00:04:13,390 --> 00:04:16,050 Mimo, że zwykle tylko Napisać nazwy poleceń, 107 00:04:16,050 --> 00:04:19,060 kiedy to program masz napisane, to chcę powiedzieć, "./" 108 00:04:19,060 --> 00:04:22,460 dlatego, że wyraźnie mówi Linux które chcesz uruchomić program o nazwie 109 00:04:22,460 --> 00:04:26,930 "a.out" to w tym, gdzie kropka Oznacza to katalog, w którym jestem obecnie 110 00:04:26,930 --> 00:04:31,600 w, co dzieje się zwany roboczy "a.out. 111 00:04:31,600 --> 00:04:35,410 Bo jeśli ja po prostu powiedział "a.out" Enter Mam zamiar dostać "a.out polecenia nie 112 00:04:35,410 --> 00:04:38,035 znaleziono "ponieważ computer-- dlatego, że wymyślił "a.out;" 113 00:04:38,035 --> 00:04:40,910 nie pochodzą z computer-- nie wiem, gdzie go szukać, 114 00:04:40,910 --> 00:04:43,590 nawet jeśli jest to prawda pod moim nosem, że tak powiem. 115 00:04:43,590 --> 00:04:44,090 OK. 116 00:04:44,090 --> 00:04:49,910 Więc możemy to zmienić, aby być "dzyń -o witaj hello.c." 117 00:04:49,910 --> 00:04:53,030 A gdybym naciśnij Enter, co program Czy to będzie wyjście dla mnie? 118 00:04:53,030 --> 00:04:55,710 Jaka jest nazwa pliku? 119 00:04:55,710 --> 00:04:57,500 Tak, w plecy. 120 00:04:57,500 --> 00:04:58,479 Zgadza się. "Halo." 121 00:04:58,479 --> 00:05:00,520 Więc "hello" będzie nazwa programu 122 00:05:00,520 --> 00:05:04,610 ponieważ już stosowane tak zwane argument wiersza poleceń, która jest po prostu 123 00:05:04,610 --> 00:05:08,120 sposób zmiany zachowań kompilator faktycznie wyjścia 124 00:05:08,120 --> 00:05:09,450 specyficzna nazwa pliku. 125 00:05:09,450 --> 00:05:12,400 I rzeczywiście, jeśli powiększyć na zewnątrz i spojrzeć tutaj, 126 00:05:12,400 --> 00:05:17,430 teraz mam nie tylko "a.out" i "hello.c", ale także "cześć", jak również. 127 00:05:17,430 --> 00:05:22,410 Więc teraz mogę to zrobić "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 I nie ma "hello, world". 129 00:05:23,640 --> 00:05:25,640 Ale lastly-- i to teraz będzie konwencja 130 00:05:25,640 --> 00:05:27,590 używamy całej Semestr, typically-- 131 00:05:27,590 --> 00:05:30,070 to możesz po prostu powiedzieć "aby cześć." 132 00:05:30,070 --> 00:05:33,370 I rzeczywiście, to mówi, że to się dotychczas, ponieważ istnieje. 133 00:05:33,370 --> 00:05:37,860 Pozwólcie mi iść do przodu i wyjąć z polecenie rm, zarówno "a.out" - 134 00:05:37,860 --> 00:05:39,644 i powiedzieć: "usuń regularne a.out?" 135 00:05:39,644 --> 00:05:41,810 To tylko oznacza, jesteś pewien, że chcesz go usunąć? 136 00:05:41,810 --> 00:05:42,880 I powiem tak. 137 00:05:42,880 --> 00:05:46,690 A potem idę do usunięcia "cześć", ale nie "hello.c." 138 00:05:46,690 --> 00:05:49,920 Mam zamiar powiedzieć "tak" jednoznacznie, a "y" jest wystarczające, jak również. 139 00:05:49,920 --> 00:05:52,140 >> A teraz zauważyć, jeśli wpisz ls-- która, przypomnijmy, 140 00:05:52,140 --> 00:05:55,540 Oznacza list-- to lista wszystkich pliki w moim katalogu. 141 00:05:55,540 --> 00:05:57,850 I rzeczywiście, jeśli powiększyć się i spojrzeć na górze po lewej stronie, 142 00:05:57,850 --> 00:05:59,730 potwierdza, że ​​to, co jest w tym folderze, nawet 143 00:05:59,730 --> 00:06:04,990 choć jest to oznaczone jako IDE50 tutaj a nie do pracy, to jest po prostu "hello.c." 144 00:06:04,990 --> 00:06:09,152 Więc teraz, tutaj, jeśli I nie ", aby przywitać," Enter 145 00:06:09,152 --> 00:06:12,360 teraz widzę o wiele dłuższą polecenia, ale bardziej skomplikowane polecenia, które będzie 146 00:06:12,360 --> 00:06:13,940 użyteczne w tygodniach. 147 00:06:13,940 --> 00:06:16,720 A teraz mogę powiedzieć "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Warto więc w szybki Polecenia inny Linux. 149 00:06:19,257 --> 00:06:21,840 To dlaczego nie możemy zrobić krok z powrotem i spojrzy na C więcej 150 00:06:21,840 --> 00:06:25,020 Ogólnie rzecz biorąc, przejście od podstaw do C, a następnie zawrzeć z wyrazem 151 00:06:25,020 --> 00:06:27,305 w pierwszym problemem ustawić w C. W porządku. 152 00:06:27,305 --> 00:06:30,430 Więc mam zamiar iść do przodu i po prostu czyste się moim roboczej z Control-L tylko 153 00:06:30,430 --> 00:06:31,429 utrzymać ekran zadbane. 154 00:06:31,429 --> 00:06:33,520 Ale to nie ma funkcjonalne wpływ inaczej. 155 00:06:33,520 --> 00:06:35,820 >> Przypomnijmy, że widzieliśmy kilka poleceń teraz. 156 00:06:35,820 --> 00:06:39,900 Tak więc widzieliśmy szczęk, które generalnie można nie będzie musiał wykonywać ręcznie więcej. 157 00:06:39,900 --> 00:06:41,650 Będziemy zamiast używania make. 158 00:06:41,650 --> 00:06:45,290 Ale widzieliśmy też ls, która pokazuje lista plików w moim katalogu. 159 00:06:45,290 --> 00:06:48,750 A teraz, dlaczego jest there-- Są dwa Pliki teraz, "hello" i "hello.c." 160 00:06:48,750 --> 00:06:52,240 Dlaczego jest gwiazdą lub Gwiazdka po "cześć"? 161 00:06:52,240 --> 00:06:54,900 Co to oznacza, na podstawie na to, co widzieliśmy w jednym tygodniu? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Co myślisz? 164 00:07:00,400 --> 00:07:02,742 Co oznacza gwiazdka oznacza? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: For-- programu "cześć"? 166 00:07:04,614 --> 00:07:05,530 DAVID MALAN: "Cześć *". 167 00:07:05,530 --> 00:07:06,330 Tak. 168 00:07:06,330 --> 00:07:07,760 Oh, tak? 169 00:07:07,760 --> 00:07:08,639 Och, wykonywalny. 170 00:07:08,639 --> 00:07:09,180 Zgadza się. 171 00:07:09,180 --> 00:07:10,890 To znaczy, że "hello" jest wykonywalny. 172 00:07:10,890 --> 00:07:13,430 Więc rzeczywiście, dlatego Mogę zrobić "./hello." 173 00:07:13,430 --> 00:07:13,930 W porządku. 174 00:07:13,930 --> 00:07:15,179 Co jeszcze mogę zrobić tutaj? 175 00:07:15,179 --> 00:07:17,290 Cóż, okazuje się, że można również tworzyć katalogów. 176 00:07:17,290 --> 00:07:20,924 Więc pozwól mi iść dalej i tworzyć, na przykład katalog "pset1". 177 00:07:20,924 --> 00:07:23,590 A specyfikacja problemu ustawić będzie można zrobić dokładnie to, 178 00:07:23,590 --> 00:07:25,260 więc nie trzeba pamiętać dziś. 179 00:07:25,260 --> 00:07:27,340 Ale "mkdir pset1" wydaje się nie mieć wpływu. 180 00:07:27,340 --> 00:07:30,540 Ale znowu, nie ma komunikatu o błędzie jest na ogół dobrze. 181 00:07:30,540 --> 00:07:34,060 Więc jeśli wpisz "ls" now-- ah, teraz Mam plik wykonywalny o nazwie 182 00:07:34,060 --> 00:07:36,570 "witam", to plik C nazywa się "hello.c." 183 00:07:36,570 --> 00:07:40,860 A następnie ukośnik, tak aby mówią, oznacza, że ​​jest to katalog. 184 00:07:40,860 --> 00:07:42,510 >> Więc rzeczywiście, teraz chcę, aby go otworzyć. 185 00:07:42,510 --> 00:07:45,730 I nie dwukrotnie kliknąć na nim jak GUI, w środowisku graficznym. 186 00:07:45,730 --> 00:07:48,550 I zamiast powiedzieć "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Wchodzić. 188 00:07:49,640 --> 00:07:53,100 Nic ciekawego wydaje się mieć się poza moim małym wierszu 189 00:07:53,100 --> 00:07:57,300 here-- to sposób Linuksa przypominania mi, gdzie jestem, więc co folder jest otwarty. 190 00:07:57,300 --> 00:08:00,080 To jest po prostu mówi mi wyraźnie a nie w formie graficznej. 191 00:08:00,080 --> 00:08:05,100 A jeśli wpisz "ls", dlaczego widzę innego poprosi natychmiast, myślisz, 192 00:08:05,100 --> 00:08:07,269 Kiedy wyświetlić zawartość pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: prawdopodobnie nie mieć coś tam. 194 00:08:09,310 --> 00:08:09,630 DAVID MALAN: Tak. 195 00:08:09,630 --> 00:08:11,510 Więc to nie ma oczywiście stworzył coś tam 196 00:08:11,510 --> 00:08:13,150 bo właśnie utworzony katalog. 197 00:08:13,150 --> 00:08:17,690 Teraz, gdybym chciał stworzyć file-- dla instancji, można utworzyć nowy plik. 198 00:08:17,690 --> 00:08:20,190 A potem mogę iść do Zapisz i zapisać go jako, 199 00:08:20,190 --> 00:08:23,090 jak "mario.c" jeśli robisz średnia edycja pset jednym. 200 00:08:23,090 --> 00:08:27,610 A potem, jak w każdym komputerze Mac lub PC, po prostu Wybierz folder "pset1, Zapisz. 201 00:08:27,610 --> 00:08:28,740 A teraz plik jest pusty. 202 00:08:28,740 --> 00:08:31,160 Ale niech powiększyć jeszcze raz na sekundę. 203 00:08:31,160 --> 00:08:32,470 Zróbmy ls tutaj. 204 00:08:32,470 --> 00:08:34,470 Teraz widzimy "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Więc jest kilka innych poleceń, które to warto pamiętać ponad time-- 206 00:08:37,850 --> 00:08:41,200 jasne, lub Control-L jest to, co mam było uderzenie; mkdir widzieliśmy; 207 00:08:41,200 --> 00:08:45,240 rm widzieliśmy, jak również, co jest do usuwania lub usuwania pliku. 208 00:08:45,240 --> 00:08:49,310 Uważaj można also-- i jeśli spojrzeć na samouczki online, będziesz rmdir 209 00:08:49,310 --> 00:08:52,630 Jest to bardzo powszechny sposób powiedzenia usunąć folder, który ma rzeczy w nim. 210 00:08:52,630 --> 00:08:54,280 Wystarczy być super, super ostrożny. 211 00:08:54,280 --> 00:08:58,780 -rf oznacza rekurencyjnie usuwać cokolwiek to jest 212 00:08:58,780 --> 00:09:01,150 próbujesz usunąć i siłą usunąć. 213 00:09:01,150 --> 00:09:04,630 Tak rekurencyjne środków, jeśli jest to folder z folder z folderu z folderu, 214 00:09:04,630 --> 00:09:05,690 usunąć wszystkie z nich. 215 00:09:05,690 --> 00:09:08,680 I siłą znaczy nawet nie pytają mnie, tak lub nie, jestem pewien? 216 00:09:08,680 --> 00:09:11,960 Więc jest to bardzo niebezpieczny sposób usuwanie wiele rzeczy szybko. 217 00:09:11,960 --> 00:09:17,210 Ale zbyt często robi beware-- nieustraszony uczeń przypadkowo usunąć, powiedzmy, pset 218 00:09:17,210 --> 00:09:18,000 Jeden z nich, na przykład. 219 00:09:18,000 --> 00:09:19,833 >> MARIA: A jeśli po prostu zrobić -r, że będziemy 220 00:09:19,833 --> 00:09:21,870 z prośbą o każdym pliku. 221 00:09:21,870 --> 00:09:22,790 >> DAVID MALAN: Jakie jest umiarkowanie irytujące. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Tak. 223 00:09:23,480 --> 00:09:25,813 >> DAVID MALAN: Więc dlatego tak wielu z nas, samo w cenie, 224 00:09:25,813 --> 00:09:27,070 jestem w zwyczaju korzystania -rf. 225 00:09:27,070 --> 00:09:27,861 Ale to jest niebezpieczne. 226 00:09:27,861 --> 00:09:29,010 Więc uważaj nabywcy. 227 00:09:29,010 --> 00:09:31,050 A potem mv jest rodzajem ciekawie nazwany. 228 00:09:31,050 --> 00:09:33,600 Więc to jest polecenie ruchu, który czuje się trochę dziwne 229 00:09:33,600 --> 00:09:37,260 Rzeczywiście, ponieważ można używać do przenoszenie plików z jednego miejsca do drugiego. 230 00:09:37,260 --> 00:09:39,970 Na przykład załóżmy, że zawiedli. 231 00:09:39,970 --> 00:09:43,660 Załóżmy, że stworzyłem nowy plik dla zbior. 232 00:09:43,660 --> 00:09:46,320 I zapisany jako "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Ale załóżmy, że przypadkowo zapisać w IDE50-- więc moim samej przestrzeni roboczej 234 00:09:49,970 --> 00:09:51,580 a nie w pset1. 235 00:09:51,580 --> 00:09:53,960 >> Możesz zobaczyć, jak wiele w lewym górnym rogu. 236 00:09:53,960 --> 00:09:55,284 Jest "greedy.c." 237 00:09:55,284 --> 00:09:56,450 I jest kilka rozwiązań. 238 00:09:56,450 --> 00:09:58,324 Tak jeden, można używać bardzo przyjazny dla użytkownika sposób, 239 00:09:58,324 --> 00:09:59,740 po prostu przeciągając i upuszczając. 240 00:09:59,740 --> 00:10:01,910 I że faktycznie rozwiązać ten problem. 241 00:10:01,910 --> 00:10:04,967 Ale dzisiaj, staramy się spojrzeć na bardziej tajemnicze, ale potężne sposoby 242 00:10:04,967 --> 00:10:05,550 w ten sposób. 243 00:10:05,550 --> 00:10:07,880 Więc pozwól mi wziąć "ls" w pset1. 244 00:10:07,880 --> 00:10:09,690 I widzę tylko "mario.c." 245 00:10:09,690 --> 00:10:13,450 Pozwólcie mi iść do przodu i robić "cd ..". 246 00:10:13,450 --> 00:10:15,320 Tak więc znów jest katalog CD zmiany. 247 00:10:15,320 --> 00:10:18,130 ".." Oznacza to, co, chociaż? 248 00:10:18,130 --> 00:10:21,100 Ostatni raz powiedziałem "cd pset1 ", aby przejść do pset1. 249 00:10:21,100 --> 00:10:24,360 Więc kiedy mówię "cd ..", co ja robię? 250 00:10:24,360 --> 00:10:24,910 Wstecz. 251 00:10:24,910 --> 00:10:25,150 Tak. 252 00:10:25,150 --> 00:10:26,750 >> Więc to będzie tzw rodzica. 253 00:10:26,750 --> 00:10:29,730 Przejść o jeden poziom wyżej, jak wychodzenia z folderu. 254 00:10:29,730 --> 00:10:30,500 Więc Enter. 255 00:10:30,500 --> 00:10:31,900 I rzeczywiście, wygląda to, co zrobił. 256 00:10:31,900 --> 00:10:37,070 To mnie po prostu przeniósł się do przestrzeni roboczej, a nie od do pset1, która jest w obszarze roboczym. 257 00:10:37,070 --> 00:10:39,710 A teraz, jeśli wpisz "ls", istnieje cała masa rzeczy. 258 00:10:39,710 --> 00:10:41,650 Tam jest "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Więc teraz pozwól mi użyć mv dosłownie przenieść "greedy.c" do pset1. 260 00:10:48,720 --> 00:10:51,120 I tak dużo polecenia Linuksa działają dokładnie tak. 261 00:10:51,120 --> 00:10:54,470 Biorą żadnych argumentów albo przyjąć jedną Argument lub biorą dwa wiersza poleceń 262 00:10:54,470 --> 00:10:55,449 argumenty i tak dalej. 263 00:10:55,449 --> 00:10:57,240 I w tym przypadku jest dosłownie robić to, co 264 00:10:57,240 --> 00:11:01,670 mówi, choć succinctly-- przenieść greedy.c do pset1. 265 00:11:01,670 --> 00:11:02,310 Wchodzić. 266 00:11:02,310 --> 00:11:03,310 Nic się nie dzieje. 267 00:11:03,310 --> 00:11:06,180 Ale jeśli mam zrobić ls znowu chciwi nie ma. 268 00:11:06,180 --> 00:11:12,437 A jeśli to zrobię "CD pset1", Enter, a następnie ls znowu, teraz jest na właściwym miejscu. 269 00:11:12,437 --> 00:11:14,270 Tak na marginesie, jeśli dla niektóre reason-- szczególnie 270 00:11:14,270 --> 00:11:16,194 jeśli masz przerywany łączność sieciowa 271 00:11:16,194 --> 00:11:18,360 lub jesteś chodzą Kampus z laptopem pokrywką 272 00:11:18,360 --> 00:11:20,180 zamknięte, a następnie otwórz go Obszar roboczy ponownie 273 00:11:20,180 --> 00:11:21,730 wydaje się nieco zsynchronizowane, nic wielkiego. 274 00:11:21,730 --> 00:11:23,646 Wystarczy odświeżyć przeglądarkę okno, w którym powinno 275 00:11:23,646 --> 00:11:26,339 resync tak, że lewa przeglądarka plików wygląda dokładnie 276 00:11:26,339 --> 00:11:27,380 podobnie jak w oknie terminala. 277 00:11:27,380 --> 00:11:27,921 Nie martwić się. 278 00:11:27,921 --> 00:11:31,460 W przypadku wątpliwości, przeładuj stronę, więc ile masz zapisane pliki już. 279 00:11:31,460 --> 00:11:31,960 OK. 280 00:11:31,960 --> 00:11:34,710 Tak mv mogą być również stosowane w celu zmiany nazwy plików. 281 00:11:34,710 --> 00:11:36,760 I rzućmy okiem na ten ostatni polecenie tutaj. 282 00:11:36,760 --> 00:11:39,950 Tak suppose-- i jest bardzo często, też na początku. 283 00:11:39,950 --> 00:11:46,400 Niektórzy uczniowie czasem utworzyć plik nazywa, niech say-- co jeszcze jeden? 284 00:11:46,400 --> 00:11:47,730 Podobnie jak "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Więc ja po prostu krzyczeć, na nie ma powodu, we wszystkich czapki. 286 00:11:51,080 --> 00:11:53,190 Jednak nie jest to prawidłowa nazwa pliku 287 00:11:53,190 --> 00:11:56,660 choćby dlatego, ustawić nasz problem Specyfikacja nie powiedział 288 00:11:56,660 --> 00:11:59,430 zapisać plik w Wszystkie "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Zamiast tego, możemy spodziewać "water.c" małymi literami. 290 00:12:01,320 --> 00:12:03,140 I rzeczywiście, jest to problematyczne, ponieważ check50, 291 00:12:03,140 --> 00:12:04,370 program idziesz spotkać się problemu 292 00:12:04,370 --> 00:12:07,350 ustawić jeden, który automatycznie sprawdza poprawność kodu 293 00:12:07,350 --> 00:12:11,615 będzie krzyczeć na ciebie, jeśli nie można znaleźć "water.c" z wszystkimi małymi. 294 00:12:11,615 --> 00:12:12,712 >> Trzeba więc, aby to naprawić. 295 00:12:12,712 --> 00:12:14,920 Tak wiele różnych sposobów to zrobić, z których pierwszy 296 00:12:14,920 --> 00:12:18,330 byłoby z wciśniętym klawiszem Control lub kliknij prawym przyciskiem myszy nazwa pliku i po prostu zmienić Zmień nazwę. 297 00:12:18,330 --> 00:12:19,740 Całkowicie w porządku, aby to zrobić. 298 00:12:19,740 --> 00:12:21,820 Ale znowu, dzisiaj niech zrobić to trochę hodowcy. 299 00:12:21,820 --> 00:12:26,680 Użyjmy mv, aby zmienić "WATER.C" na "water.c". 300 00:12:26,680 --> 00:12:30,690 Więc można również użyć pierwszy argument zmienić jego nazwę do drugiego argumentu 301 00:12:30,690 --> 00:12:34,455 jeśli drugi argument nie jest w Fakt, folder lub nazwa katalogu. 302 00:12:34,455 --> 00:12:35,120 >> W porządku. 303 00:12:35,120 --> 00:12:39,560 I wreszcie, trochę trick-- więc jestem w mój katalog roboczy w tej chwili. 304 00:12:39,560 --> 00:12:43,660 Jeśli chcę się dostać do pset jednym, Pewnością mogę wpisać "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Ale to jest tak uciążliwe, aby wpisać "pset1" lub dłuższe nazwy plików i nazwy katalogów 306 00:12:47,260 --> 00:12:47,980 jeszcze. 307 00:12:47,980 --> 00:12:51,960 Więc bardzo często w systemie Linux, co można zrobić, to zacząć pisać "PSE" 308 00:12:51,960 --> 00:12:56,100 i po prostu się nudzą, naciśnij Tab, i niech figura komputer to dla ciebie. 309 00:12:56,100 --> 00:12:58,190 Super pomocny aby dostać się do tego zwyczaju. 310 00:12:58,190 --> 00:13:01,079 Jedynym haczykiem jest to, jeśli masz wiele plików lub folderów, począwszy od 311 00:13:01,079 --> 00:13:02,870 z literą "P" lub "PS", możesz mieć 312 00:13:02,870 --> 00:13:05,525 wpisać kilka innych przed Komputer wie, co robić. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Lubimy skróty. 314 00:13:06,820 --> 00:13:08,695 >> DAVID MALAN: Ta wola zaoszczędzić dużo czasu. 315 00:13:08,695 --> 00:13:11,930 A także, jak powiedział w wykładzie, to może przewijać się w historii, w górę iw dół, 316 00:13:11,930 --> 00:13:15,461 znaleźć niedawno wykonane polecenia, jak również. 317 00:13:15,461 --> 00:13:15,960 W porządku. 318 00:13:15,960 --> 00:13:20,904 Więc teraz, niech zwrócić uwagę z powrotem do prostego programu, hello world. 319 00:13:20,904 --> 00:13:22,195 Więc mamy skompilowany to dokładnie. 320 00:13:22,195 --> 00:13:24,050 A teraz, dlaczego nie bierzemy spojrzenie na typy danych 321 00:13:24,050 --> 00:13:26,776 a następnie przejście od niektórych odpowiadające Scratch bloki C 322 00:13:26,776 --> 00:13:27,400 MARIA: Awesome. 323 00:13:27,400 --> 00:13:30,031 Więc teraz, że już zaczął pisanie programów w C, 324 00:13:30,031 --> 00:13:32,530 mamy zamiar zacząć mówić o typach danych i zmiennych. 325 00:13:32,530 --> 00:13:37,570 Więc niektóre typy danych, które chciałbym wiedzieć od zaraz 326 00:13:37,570 --> 00:13:39,400 są te, które są podświetlony na niebiesko. 327 00:13:39,400 --> 00:13:42,420 Mamy więc int pierwszy, co oznacza całkowitą. 328 00:13:42,420 --> 00:13:46,075 I że posiada liczb całkowitych, jak ty Może mieć guessed-- tak 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 i innych liczb całkowitych że można myśleć. 330 00:13:47,950 --> 00:13:48,730 >> DAVID MALAN: A także negatywne. 331 00:13:48,730 --> 00:13:50,220 >> MARIA: A także negatywne, yep. 332 00:13:50,220 --> 00:13:51,450 I 0. 333 00:13:51,450 --> 00:13:54,250 Następnie mamy pływaków, które są liczby zmiennoprzecinkowe. 334 00:13:54,250 --> 00:13:58,360 Więc to wszystkie liczby rzeczywiste które mają miejsc po przecinku. 335 00:13:58,360 --> 00:14:03,960 Tak, 5,0, 5,2, a nawet bardziej cyfry po przecinku, 336 00:14:03,960 --> 00:14:05,620 oraz, a także negatywne. 337 00:14:05,620 --> 00:14:07,530 Następnie mamy char, który jest postacią. 338 00:14:07,530 --> 00:14:10,240 Więc myślę, że rozmawialiśmy o W wykładzie tym dzisiaj. 339 00:14:10,240 --> 00:14:15,682 Ale mamy litery, na example-- A, B, C-, która może być przechowywana jako odbarwiającego. 340 00:14:15,682 --> 00:14:18,390 Ale wtedy mamy o wiele więcej symboli które mogą być przechowywane jako odbarwiającego. 341 00:14:18,390 --> 00:14:22,380 A ci są przechowywane jako ASCII. 342 00:14:22,380 --> 00:14:25,280 >> A potem mamy bool, które są Boolean. 343 00:14:25,280 --> 00:14:29,067 I tych wartości TRUE lub Fałsz i 0 lub 1, odpowiednio. 344 00:14:29,067 --> 00:14:31,650 DAVID MALAN: I przypomnieć, że bool pochodzi z biblioteki CS50. 345 00:14:31,650 --> 00:14:33,300 Więc to nie jest wbudowany w C, ale jest to bardzo przydatne 346 00:14:33,300 --> 00:14:34,850 mieć pojęcia prawdy i fałszu. 347 00:14:34,850 --> 00:14:36,990 I chociaż Ciebie może think-- fakt zabawy. 348 00:14:36,990 --> 00:14:43,700 Bool technicznie potrzebuje ile bitów, naprawdę, do reprezentowania prawda kontra fałsz? 349 00:14:43,700 --> 00:14:47,910 Ile bitów myślisz będzie trzeba, maksymalnie? 350 00:14:47,910 --> 00:14:48,790 Tak, tylko jeden. 351 00:14:48,790 --> 00:14:52,077 Tak więc okazuje się, że C nie może dać tylko jeden bit. 352 00:14:52,077 --> 00:14:54,160 Najmniejsza jednostka miary można uzyskać jest osiem. 353 00:14:54,160 --> 00:14:57,090 Więc to trochę marnotrawstwo, że jesteś za pomocą całego bajtu, lub osiem bitów 354 00:14:57,090 --> 00:14:58,340 do reprezentowania Prawda czy fałsz. 355 00:14:58,340 --> 00:15:01,807 Ale to jest po prostu tak jest realizowane C przez bibliotekę CS50. 356 00:15:01,807 --> 00:15:04,890 MARIA: A potem ci, że jesteśmy Nie będziemy mówić o tak szeroko 357 00:15:04,890 --> 00:15:08,060 prawo now-- podwójne, to na większych pływaków. 358 00:15:08,060 --> 00:15:09,811 Długie długi i krótki są także dla liczb całkowitych. 359 00:15:09,811 --> 00:15:10,643 DAVID MALAN: Rzeczywiście. 360 00:15:10,643 --> 00:15:13,190 W edycji hakerów z pset jednym, faktycznie używać długo, długo. 361 00:15:13,190 --> 00:15:15,801 Ale dla wersji standardowej, nie jest konieczna. 362 00:15:15,801 --> 00:15:16,300 MARIA: Spoko. 363 00:15:16,300 --> 00:15:17,361 OK. 364 00:15:17,361 --> 00:15:20,110 Więc operators-- powinno być prawdopodobnie zna większość z nich. 365 00:15:20,110 --> 00:15:22,620 Dodawanie, +; odejmowanie, -. 366 00:15:22,620 --> 00:15:24,070 Mnożenia, mamy *. 367 00:15:24,070 --> 00:15:25,900 Tak nie X, które zazwyczaj używamy. 368 00:15:25,900 --> 00:15:27,840 Wydział mamy odwrotny ukośnik. 369 00:15:27,840 --> 00:15:31,380 A modulo jest nasz ostatni podmiot, który będziemy mówić o teraz. 370 00:15:31,380 --> 00:15:35,610 Jest to operator, który pozwala nam na wziąć resztę z dzielenia. 371 00:15:35,610 --> 00:15:40,630 Więc jeśli mamy 4% 2, 4 podzielone przez 2 jest 2 z resztą 0. 372 00:15:40,630 --> 00:15:41,740 Tak więc 4% 2 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 jest 4, jak można się domyślić. 375 00:15:44,870 --> 00:15:48,860 I pamiętaj, przy użyciu wszystkich tych operatorów do korzystania z zasady PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> DAVID MALAN: Tak, aby było jasne, jeśli Ciebie nie 4% 2, to dlaczego 0, dokładnie? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: Ponieważ 4 podzielone przez 2 2 z resztą 0. 378 00:15:57,480 --> 00:16:00,752 Modulo daje nam tak, że reszta jako przeciwny do wyniku podziału. 379 00:16:00,752 --> 00:16:02,960 DAVID MALAN: I rzeczywiście, co znajdziemy tę pomocne 380 00:16:02,960 --> 00:16:05,640 przez to, że w pewnych problemów to niekoniecznie jeden, 381 00:16:05,640 --> 00:16:08,040 jeśli chcesz mieć Efekt ograniczania się 382 00:16:08,040 --> 00:16:10,720 w zakresie liczb jak 0 do czegoś, 383 00:16:10,720 --> 00:16:13,904 można użyć modulo do zawinięcia wcześniej niż jak 2 mld 384 00:16:13,904 --> 00:16:16,320 lub wartości 4 mld euro, które Mówiliśmy o wykładzie. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Tak. 386 00:16:16,870 --> 00:16:19,429 I nawet w "chciwy" moglibyśmy. 387 00:16:19,429 --> 00:16:21,345 DAVID MALAN: Tak, w Problem ustawić jeden, jak również. 388 00:16:21,345 --> 00:16:22,520 MARIA: Tak, miło. 389 00:16:22,520 --> 00:16:24,340 DAVID MALAN: Dobra podpowiedź. 390 00:16:24,340 --> 00:16:25,750 MARIA: Niestety. 391 00:16:25,750 --> 00:16:28,590 Boolean expressions-- tak dla operatorów logicznych, 392 00:16:28,590 --> 00:16:31,770 będziemy rozmawiać o wszystkim od tych, które można zobaczyć tutaj. 393 00:16:31,770 --> 00:16:35,310 Więc teraz mamy dwa znaki równości wymienione na równych sobie. 394 00:16:35,310 --> 00:16:38,650 To są dla porównania. 395 00:16:38,650 --> 00:16:40,830 Do tej pory mamy tylko widziałem jeden znak równości. 396 00:16:40,830 --> 00:16:44,870 To wtedy możemy przypisać wartość do zmiennej. 397 00:16:44,870 --> 00:16:50,160 Więc jeśli widzieliśmy int n = 5, a następnie przypisaliśmy 5 do zmiennej n. 398 00:16:50,160 --> 00:16:55,600 Ale jeśli chcemy użyć == na porównanie, możemy sprawdzić, czy n == 5. 399 00:16:55,600 --> 00:16:58,310 A jeśli n == 5, następnie, że to prawda. 400 00:16:58,310 --> 00:17:01,950 >> Operatorzy więc logiczne pozwalają nam, w zasadzie, 401 00:17:01,950 --> 00:17:04,670 ocena Boolean wyrażenia do Prawda czy fałsz. 402 00:17:04,670 --> 00:17:07,819 Więc nie equals-- mamy wykrzyknik i równi. 403 00:17:07,819 --> 00:17:14,240 Więc możemy również sprawdzić, czy n nie równa 5-- więc n! = 5. 404 00:17:14,240 --> 00:17:17,640 Mniej niż mniejsza niż lub równa większa niż większa niż lub równa 405 00:17:17,640 --> 00:17:20,720 a następnie mamy logiczne I i logiczną OR. 406 00:17:20,720 --> 00:17:24,060 A ci, pozwalają ocenić wiele wyrażeń logicznych razem 407 00:17:24,060 --> 00:17:27,930 w zasadzie wspólnie jako jeden cały wyrażenie logiczne. 408 00:17:27,930 --> 00:17:34,970 Więc jeśli chcemy znaleźć numer, powiedzmy, która jest większa niż 5, ale mniej niż 15 409 00:17:34,970 --> 00:17:39,810 w tym samym czasie, używamy operatora logicznego AND aby sprawdzić, czy n jest 410 00:17:39,810 --> 00:17:42,937 większa niż 5 && n mniejszy od 15. 411 00:17:42,937 --> 00:17:44,770 DAVID MALAN: A tutaj, zbyt, to naprawdę proste 412 00:17:44,770 --> 00:17:47,290 na początku przypadkowo używać tylko jednego znaku handlowego 413 00:17:47,290 --> 00:17:48,572 lub jeden pionowy pasek. 414 00:17:48,572 --> 00:17:51,280 I miejmy nadzieję, kompilator krzyczeć na ciebie, bo w rzeczywistości 415 00:17:51,280 --> 00:17:52,530 mają zupełnie inne znaczenie. 416 00:17:52,530 --> 00:17:55,660 Dla tych, którzy ciekawi, oni wykorzystywane do operacji bitowe, 417 00:17:55,660 --> 00:17:57,197 działa na poszczególne kawałki. 418 00:17:57,197 --> 00:17:58,780 Ale ty chcesz parę nich tutaj. 419 00:17:58,780 --> 00:18:01,560 I bardzo ważne jest to, że Pierwszy z nich, znak równości, 420 00:18:01,560 --> 00:18:05,270 która jest operatorem równości jako przeciwieństwie do operatora przypisania. 421 00:18:05,270 --> 00:18:08,552 >> MARIA: A pionowy pasek jest położony między Delete i powrotu. 422 00:18:08,552 --> 00:18:09,260 DAVID MALAN: Tak. 423 00:18:09,260 --> 00:18:11,420 Na typowej klawiaturze amerykańskiej. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Tak. 425 00:18:13,190 --> 00:18:15,890 Warto więc skoczyć prawo Instrukcje warunkowe. 426 00:18:15,890 --> 00:18:18,300 W Scratch, masz już widać, chyba, 427 00:18:18,300 --> 00:18:22,730 if, które pozwalają na sprawdzić, czy coś jest prawdą, a następnie 428 00:18:22,730 --> 00:18:23,660 zrobić coś innego. 429 00:18:23,660 --> 00:18:28,410 Więc może nie chciał aby sprawdzić, czy sprite jest 430 00:18:28,410 --> 00:18:31,410 dotykając innego sprite lub obramowanie ekranu. 431 00:18:31,410 --> 00:18:35,520 A potem możesz mieć chciał zakończyć grę lub zrobić coś innego. 432 00:18:35,520 --> 00:18:40,000 Więc składni, które jest "if (warunek)." 433 00:18:40,000 --> 00:18:46,820 Więc jeśli sprite dotyka czegoś, to nie jest w środku nawiasy. 434 00:18:46,820 --> 00:18:48,980 >> Następnie mamy if-else. 435 00:18:48,980 --> 00:18:54,080 Else pozwala nam zrobić coś jeśli warunek, że 436 00:18:54,080 --> 00:18:55,870 sprawdzić, na początku nie jest to prawdą. 437 00:18:55,870 --> 00:19:01,530 Więc jeśli ikonka jest dotykania Granica to zrobić, jeszcze coś innego. 438 00:19:01,530 --> 00:19:04,030 Więc inaczej zrobić coś innego. 439 00:19:04,030 --> 00:19:07,530 Następnie mamy krótki przykład na to. 440 00:19:07,530 --> 00:19:11,551 Więc jeśli (military_time <12), mamy chcą printf "Dzień dobry!" 441 00:19:11,551 --> 00:19:13,300 Jeszcze będziemy printf "Dobry wieczór!" 442 00:19:13,300 --> 00:19:14,860 Przykładem podstawowe. 443 00:19:14,860 --> 00:19:15,680 >> DAVID MALAN: Dobra. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: Spoko. 445 00:19:16,760 --> 00:19:18,560 Więc teraz mamy instrukcji switch. 446 00:19:18,560 --> 00:19:21,960 Switch Generalnie można pozwalają nam zrobić wiele na to samo 447 00:19:21,960 --> 00:19:25,070 że właśnie rozmawiał o, jeżeli sprawozdania. 448 00:19:25,070 --> 00:19:29,440 Na przykład, teraz mamy Ogólna postać instrukcji switch 449 00:19:29,440 --> 00:19:33,870 która pozwala nam podjąć zmienną o nazwie n 450 00:19:33,870 --> 00:19:37,670 i porównać go do wielu różne wartości, które tutaj 451 00:19:37,670 --> 00:19:40,010 nazwali constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Możemy mieć dużo więcej. 453 00:19:41,150 --> 00:19:42,930 A ci, nazywane są przypadki. 454 00:19:42,930 --> 00:19:46,280 >> Więc jeśli mamy przełącznik statement-- i to działa 455 00:19:46,280 --> 00:19:50,580 tylko dla integers-- mamy w tym przypadku zmienna, która jest n. 456 00:19:50,580 --> 00:19:53,840 Jeśli zmienna n jest równa constant1, mamy 457 00:19:53,840 --> 00:19:59,720 wykona jakiś fragment kodu lub coś, co chcemy zrobić. 458 00:19:59,720 --> 00:20:01,280 I wtedy łamiemy. 459 00:20:01,280 --> 00:20:04,820 Więc przerwa oznacza, że Instrukcja switch 460 00:20:04,820 --> 00:20:08,120 zatrzyma wykonywanie jeśli n jest równe constant1, 461 00:20:08,120 --> 00:20:09,752 a następnie program będzie kontynuowany. 462 00:20:09,752 --> 00:20:11,835 To wyjście z przełączyć oświadczenie i będziesz 463 00:20:11,835 --> 00:20:13,520 nadal robić coś innego. 464 00:20:13,520 --> 00:20:17,204 >> Jednakże, jeśli n nie równa constant1, a następnie przypadku constant2 465 00:20:17,204 --> 00:20:17,870 będą sprawdzane. 466 00:20:17,870 --> 00:20:21,750 Więc jeśli n jest równa constant2, że inne fragment kodu zostanie wykonany. 467 00:20:21,750 --> 00:20:23,850 A potem przerwa Jeśli to jest jej równa. 468 00:20:23,850 --> 00:20:27,580 I wtedy możemy mieć also-- nie Niekoniecznie, though-- domyślny przypadek, 469 00:20:27,580 --> 00:20:32,290 które stanie się, jeśli n nie jest równa żadnego z przypadków, które zostały wymienione. 470 00:20:32,290 --> 00:20:35,400 A w przypadku domyślnym również nie potrzebujesz przerwy koniecznie 471 00:20:35,400 --> 00:20:39,271 ponieważ instrukcja switch będzie wiedział, że musi zakończyć po domyślnie 472 00:20:39,271 --> 00:20:40,270 przypadku, jeśli o to chodzi. 473 00:20:40,270 --> 00:20:42,140 >> DAVID MALAN: Ale stylistycznie, zawsze umieścić go tam. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Tak. 475 00:20:42,540 --> 00:20:42,710 >> DAVID MALAN: Tak. 476 00:20:42,710 --> 00:20:44,750 Tak, zwłaszcza gdy zaczyna się, zwłaszcza jeśli wśród tych mniej 477 00:20:44,750 --> 00:20:47,458 wygodne, chciałbym osobiście po prostu zalecają trzymać się z IFS 478 00:20:47,458 --> 00:20:51,564 i IFS-elses i if-else-if-elses i tak dalej, jeśli tylko 479 00:20:51,564 --> 00:20:53,480 bo są trochę prostsze. 480 00:20:53,480 --> 00:20:56,142 To jest ładny, optymalizacja, lub czasem nawet estetycznie go 481 00:20:56,142 --> 00:20:57,350 sprawia, że ​​kod jest bardziej czytelny. 482 00:20:57,350 --> 00:20:59,599 I rzeczywiście, prawdopodobnie w połowie semestru zobaczymy problem 483 00:20:59,599 --> 00:21:02,504 ustawić, gdzie po prostu wygląda lepiej i łatwiejsze do odczytania dla ludzi 484 00:21:02,504 --> 00:21:03,670 za pomocą komunikatu przełącznika. 485 00:21:03,670 --> 00:21:05,460 Ale nie martw się o trzymając się za wcześnie. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Tak. 487 00:21:05,680 --> 00:21:08,840 Jeśli masz dużo, czy sprawozdania, to nie może być tylko bardzo czytelny. 488 00:21:08,840 --> 00:21:10,965 Może nie jest to bardzo szybki , aby przejść przez to. 489 00:21:10,965 --> 00:21:13,230 Więc switch może być bardzo przydatne, jak również. 490 00:21:13,230 --> 00:21:17,900 A także, nie remember-- nie zapomnij umieścić przerwy tam. 491 00:21:17,900 --> 00:21:20,330 >> DAVID MALAN: Nie pamiętam tego. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Bo to może spaść przez od jednego przypadku do drugiego. 493 00:21:24,890 --> 00:21:27,930 Więc powiedzmy, że sprawa constant1 nie miał instrukcji break w nim. 494 00:21:27,930 --> 00:21:31,920 Wtedy możemy spadać przez wewnątrz przypadku constant2. 495 00:21:31,920 --> 00:21:35,070 A my nie chcemy tego robić, jeśli my już osiągnął case constant1 496 00:21:35,070 --> 00:21:37,830 i jest równa n. 497 00:21:37,830 --> 00:21:45,100 >> Tak więc, na przykład, jeśli mamy zmienną n, który zawiera szereg klas, 498 00:21:45,100 --> 00:21:48,990 i chcemy, aby zobaczyć, co to Klasa jest-- jeśli n jest równe 50, 499 00:21:48,990 --> 00:21:51,957 będziemy drukować "CS50 jest Wstęp do informatyki I. " 500 00:21:51,957 --> 00:21:53,040 Następnie jedziemy do złamania. 501 00:21:53,040 --> 00:21:53,920 I to wszystko. 502 00:21:53,920 --> 00:21:55,950 Jednakże w przypadku, n jest równe do 51, jedziemy 503 00:21:55,950 --> 00:21:58,494 wydrukować "CS51 jest wprowadzenie do informatyki II. " 504 00:21:58,494 --> 00:21:59,910 Potem znowu, mamy zamiar złamać. 505 00:21:59,910 --> 00:22:05,080 Jednakże, jeśli następnie kładziemy 124, 61, każdy inny numer, który może myślisz, 506 00:22:05,080 --> 00:22:06,890 lub program nie będzie uznać, że. 507 00:22:06,890 --> 00:22:09,010 Więc to będzie powiedzieć: "Przepraszam, jestem nie zna tej klasy. " 508 00:22:09,010 --> 00:22:10,009 I to będzie złamać. 509 00:22:10,009 --> 00:22:12,847 DAVID MALAN: Tak naprawdę można zobaczyć if, else if, inny pomysł tutaj. 510 00:22:12,847 --> 00:22:15,430 To jest po prostu inna składnia wyrażając dokładnie ten sam pomysł. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Dokładnie. 512 00:22:17,690 --> 00:22:19,480 Teraz mamy nasze trójskładnikowych operatorów. 513 00:22:19,480 --> 00:22:24,900 Operatorzy więc potrójne mają trzema parts-- stanu, 514 00:22:24,900 --> 00:22:27,220 coś zrobić, jeśli że warunek jest spełniony, 515 00:22:27,220 --> 00:22:29,730 i wtedy coś do zrobienia jeśli warunek jest fałszywy. 516 00:22:29,730 --> 00:22:33,400 Więc widać, w zasadzie, składnia, że ​​tutaj. 517 00:22:33,400 --> 00:22:37,792 Mamy w znak zapytania, a następnie the-- co my nazywamy to? 518 00:22:37,792 --> 00:22:38,750 DAVID MALAN: Dwukropek. 519 00:22:38,750 --> 00:22:39,100 MARIA: Colon. 520 00:22:39,100 --> 00:22:39,599 Dziękuję. 521 00:22:39,599 --> 00:22:41,880 Przepraszam. 522 00:22:41,880 --> 00:22:45,800 Więc spójrzmy na naszym przykładzie do zobaczyć, czy możemy zrozumieć this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Więc tutaj widzimy naszego operatora logicznego == który porównuje zmienną class_num 525 00:22:52,580 --> 00:22:53,100 50. 526 00:22:53,100 --> 00:22:55,150 Więc class_num przechowuje liczbę całkowitą. 527 00:22:55,150 --> 00:22:58,180 A jeśli tego liczby całkowitej wynosi 50, to jesteśmy 528 00:22:58,180 --> 00:23:02,810 będzie przechowywać "David Malan" wewnątrz profesora smyczkowy. 529 00:23:02,810 --> 00:23:05,912 Jeśli numer klasy nie równa 50 ", a nie David Malan" 530 00:23:05,912 --> 00:23:07,120 będzie profesor. 531 00:23:07,120 --> 00:23:08,630 >> DAVID MALAN: Dziękuję. 532 00:23:08,630 --> 00:23:12,110 I tak to wydaje równoważne co, można by powiedzieć, na pierwszy rzut oka? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: Wydaje mi się, jak if-else. 535 00:23:19,960 --> 00:23:20,709 >> DAVID MALAN: Tak. 536 00:23:20,709 --> 00:23:24,020 A w rzeczywistości jest to rodzaj ładna jednej wkładki, 537 00:23:24,020 --> 00:23:27,520 że tak powiem, do realizacji dokładnie logika if-else 538 00:23:27,520 --> 00:23:29,010 ale robi wszystko w jednym kroku. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Dokładnie. 540 00:23:29,860 --> 00:23:30,360 Tak. 541 00:23:30,360 --> 00:23:33,520 Więc jeśli-else może zajmują dużo miejsca. 542 00:23:33,520 --> 00:23:36,283 Mogą one być zbyt długi, coś tak prostego, jak to. 543 00:23:36,283 --> 00:23:38,350 Tak więc może to być bardzo zwięzłe i bardzo ładne. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Więc teraz jedziemy do patrząc na znowu i znowu wykonywania czegoś, 546 00:23:46,820 --> 00:23:50,060 tak Sprawdzanie warunkują wiele razy 547 00:23:50,060 --> 00:23:53,510 a następnie kontynuowanie coś zrobić podczas gdy warunek jest prawdziwy. 548 00:23:53,510 --> 00:23:56,740 Więc to prowadzi nas ładnie w pętli while. 549 00:23:56,740 --> 00:23:59,270 >> Po lewej stronie mamy nasza pierwsza pętla while. 550 00:23:59,270 --> 00:24:03,840 Tak więc, gdy coś jest prawdą, znowu i znowu coś zrobić. 551 00:24:03,840 --> 00:24:08,850 Więc upewnij się, aby zauważyć, że nasze Warunkiem tutaj jest potwierdzone na szczycie. 552 00:24:08,850 --> 00:24:14,150 Podczas gdy w naszym drugim loop-- nazywamy że podczas loop-- zrób coś robimy, 553 00:24:14,150 --> 00:24:15,890 potem sprawdzić stan. 554 00:24:15,890 --> 00:24:17,980 A jeśli tego warunku nadal jest prawdą, 555 00:24:17,980 --> 00:24:20,150 możemy wrócić i zrobić ponownie rzeczy. 556 00:24:20,150 --> 00:24:23,360 Tak więc główna różnica jest, gdy warunek jest sprawdzany. 557 00:24:23,360 --> 00:24:29,260 A kod nie może być wykonane jeśli warunek nie jest 558 00:24:29,260 --> 00:24:30,430 prawda z pętli while. 559 00:24:30,430 --> 00:24:33,050 Natomiast z do-while Pętla, mamy kod 560 00:24:33,050 --> 00:24:35,380 który zawsze jest wykonywane co najmniej raz. 561 00:24:35,380 --> 00:24:37,470 I wtedy, gdy stan nadal jest prawdą, 562 00:24:37,470 --> 00:24:39,960 możemy wrócić i iteracji ponownie do środka. 563 00:24:39,960 --> 00:24:43,625 Więc dlaczego uważasz, że będziemy korzystać do-while na pętli while? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Dobrze. 566 00:24:48,720 --> 00:24:52,600 Więc jeśli chcemy skłonić użytkownika do jakiegoś wejścia, 567 00:24:52,600 --> 00:24:55,400 jeśli chcemy, aby ich zapytać aby wprowadzić swoją nazwę, 568 00:24:55,400 --> 00:24:57,342 chcemy przynajmniej poprosić raz. 569 00:24:57,342 --> 00:24:59,050 A jeżeli się wejść to imię, nie jesteśmy 570 00:24:59,050 --> 00:25:00,740 zamiar zadać je ponownie dlatego, że już to wiesz. 571 00:25:00,740 --> 00:25:02,656 Ale jeśli nie wejść ich nazwa, czy też 572 00:25:02,656 --> 00:25:05,787 wprowadzić coś, co jest oczywiście nie nazwę, 573 00:25:05,787 --> 00:25:08,120 nadal chcemy, aby kontynuować z prośbą o ich nazwy. 574 00:25:08,120 --> 00:25:10,710 >> DAVID MALAN: A w wykładzie mieliśmy jeden jak to z uzyskania pozytywnej int 575 00:25:10,710 --> 00:25:13,550 Przykładem, gdzie nie ma nic do sprawdzić w pierwszej kolejności, ponieważ nie mają nawet 576 00:25:13,550 --> 00:25:14,190 zdobyć int. 577 00:25:14,190 --> 00:25:16,680 Dlatego chcemy, aby zrobić this-- uzyskać int z user-- 578 00:25:16,680 --> 00:25:18,860 następnie sprawdź to, być może, znowu i znowu i znowu. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Dokładnie. 580 00:25:21,030 --> 00:25:22,060 Dla loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Do pętli może pozwolić nam na prawie dokładnie to samo, jak dobrze. 582 00:25:25,842 --> 00:25:27,300 To rzeczywiście dokładnie to samo. 583 00:25:27,300 --> 00:25:30,190 Więc nie ma nic, że można zrobić z pętli 584 00:25:30,190 --> 00:25:32,840 że nie będzie w stanie zrobić z pętli while. 585 00:25:32,840 --> 00:25:36,900 Ale dla pętli może wydawać się trochę nieco bardziej skomplikowane składniowo 586 00:25:36,900 --> 00:25:39,730 ponieważ mają trzy części w środku, co 587 00:25:39,730 --> 00:25:42,990 było wcześniej tylko Stan z pętli while. 588 00:25:42,990 --> 00:25:48,260 Tak więc pierwsza część, że morze, od lewej najbardziej, mamy "int krasnoludy = 0." 589 00:25:48,260 --> 00:25:51,490 Tak to jest, gdy mamy zainicjalizować zmienną. 590 00:25:51,490 --> 00:25:55,210 >> Następnie mamy średnik i "krasnoludy <7." 591 00:25:55,210 --> 00:25:57,100 Tak to jest, gdy się stan rzeczywistości. 592 00:25:57,100 --> 00:26:00,170 Więc to jest to, co mamy umieścić tylko w czasie loop-- 593 00:26:00,170 --> 00:26:01,880 ", a krasnoludy <7." 594 00:26:01,880 --> 00:26:05,380 Tutaj, że idzie w środek naszej pętli. 595 00:26:05,380 --> 00:26:07,190 Więc "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 I wtedy nasza ostatnia część to "krasnoludy ++" co jest gdzie aktualizujemy naszą zmienną. 597 00:26:11,350 --> 00:26:15,470 Tak ważną rzeczą zdać sobie sprawę, że ten 598 00:26:15,470 --> 00:26:22,010 ma zamiar przejść przez to dla pętli siedem razy i siedem razy. wykonanie 599 00:26:22,010 --> 00:26:24,020 Więc mamy siedem krasnoludy, a oni wszyscy 600 00:26:24,020 --> 00:26:26,020 powie: "Jestem tutaj, pomóc, Królewna Śnieżka " 601 00:26:26,020 --> 00:26:28,860 dlatego, że są gotowe pomóc Śnieżkę. 602 00:26:28,860 --> 00:26:33,600 >> Z pętli while, że zrobiłby inicjowanie i aktualizacja 603 00:26:33,600 --> 00:26:37,490 niewystępujący w stanie ponownie, ale przed lub wewnątrz pętli while 604 00:26:37,490 --> 00:26:40,210 aby upewnić się, że we-- ponieważ zawsze trzeba te części. 605 00:26:40,210 --> 00:26:42,835 Tak więc, aby upewnić się, że mamy im, że mamy jeszcze dodał im 606 00:26:42,835 --> 00:26:44,580 na, po prostu nie w nawiasach. 607 00:26:44,580 --> 00:26:47,288 >> DAVID MALAN: I tak to wygląda like-- W wykładzie np 608 00:26:47,288 --> 00:26:50,250 I prawie zawsze korzystać, jak, i oraz n oraz zmienne dość nudne. 609 00:26:50,250 --> 00:26:53,050 Wygląda na to, można użyć więcej sprytnie nazwane zmienne, też. 610 00:26:53,050 --> 00:26:56,300 >> Maria: Tak, to rzeczywiście bardzo ładny używać zmiennych nieco bardziej opisowe 611 00:26:56,300 --> 00:26:59,400 dlatego, szczególnie jeśli ktoś jest czytanie code-- może jesteś równiarka 612 00:26:59,400 --> 00:27:00,940 lub jeśli współpraca z somebody-- 613 00:27:00,940 --> 00:27:03,481 Aby upewnić się, że zrozumieć, co robisz. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> OK. 616 00:27:06,400 --> 00:27:11,435 Więc to jest coś bardzo funky-- dla pętli wewnątrz pętli for. 617 00:27:11,435 --> 00:27:13,060 Nie wiem, czy widzieliśmy tego wcześniej. 618 00:27:13,060 --> 00:27:13,830 Prawdopodobnie nie. 619 00:27:13,830 --> 00:27:17,750 Ale rzeczywiście możemy mieć this-- tak pętli zamiast pętli. 620 00:27:17,750 --> 00:27:25,130 Więc czy ktoś chce może chodzić mi przez to, co się tutaj dzieje? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID MALAN: Wezmę ukłucie. 623 00:27:29,490 --> 00:27:29,970 MARIA: Spoko. 624 00:27:29,970 --> 00:27:30,636 DAVID MALAN: OK. 625 00:27:30,636 --> 00:27:34,690 Tak, spoiler-- chcemy wydrukować rzeczy to w dolnym prawym rogu 626 00:27:34,690 --> 00:27:35,190 tam. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Racja. 628 00:27:35,450 --> 00:27:35,710 Tak tak. 629 00:27:35,710 --> 00:27:38,043 >> DAVID MALAN: Więc mamy tylko umieścić, że wyjście próbki nie. 630 00:27:38,043 --> 00:27:42,590 Więc mogę wywnioskować z najwyższy pętli, że jesteś 631 00:27:42,590 --> 00:27:45,680 iteracji po wierszach Pętla zewnętrzna, że ​​tak powiem. 632 00:27:45,680 --> 00:27:48,107 A ty iteracji po Kolumny z wewnętrznej pętli. 633 00:27:48,107 --> 00:27:50,190 I intuicyjnie, to powinna miejmy nadzieję, sens 634 00:27:50,190 --> 00:27:52,070 ponieważ z natury każdy program widzieliśmy 635 00:27:52,070 --> 00:27:55,570 przed, printf, który jest Funkcja używamy ostatecznie 636 00:27:55,570 --> 00:27:58,190 ma możliwość drukowania rzeczy się zasadniczo linia po linii. 637 00:27:58,190 --> 00:27:59,960 Jak, kiedy już wyprowadzane nowa linia, jest 638 00:27:59,960 --> 00:28:02,876 nie podwaja się i drukuje coś wyższe na ekranie, co najmniej 639 00:28:02,876 --> 00:28:04,530 nie za pomocą printf tak. 640 00:28:04,530 --> 00:28:07,750 >> I tak w tym zakresie, to sprawia, Poczucie, że pętla zewnętrzna 641 00:28:07,750 --> 00:28:10,930 powinno się odnosić do rzędów bo dla każdego danego wiersza, 642 00:28:10,930 --> 00:28:13,650 będziesz chciał wydrukować XXXXX, a następnie 643 00:28:13,650 --> 00:28:15,520 przejść do następnego wiersza, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Więc wiersze na pierwszym miejscu. 645 00:28:17,317 --> 00:28:19,150 A następnie w ramach każdego wiersz, drukowanie kolumny. 646 00:28:19,150 --> 00:28:21,160 Jeśli próbował to zrobić na przeciwnie, to prawdopodobnie nie będzie 647 00:28:21,160 --> 00:28:21,690 wyjdzie tak, jak zamierzałeś. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Tak. 649 00:28:22,190 --> 00:28:24,950 Po prostu nie mogliśmy wrócić do poprzedni wiersz z printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID MALAN: I co ciekawe na dzisiejszym czacie na temat zakresu, 651 00:28:27,658 --> 00:28:31,600 faktycznie, jest to, że rząd jest int która jest zadeklarowana w najwyższej pętli. 652 00:28:31,600 --> 00:28:34,030 Zauważmy jednak, że jest jeszcze wewnątrz, by tak rzec, 653 00:28:34,030 --> 00:28:35,982 nawiasy klamrowe, że bezpośrednio po, 654 00:28:35,982 --> 00:28:38,440 mimo, że nie jest to technicznie w tych klamrach. 655 00:28:38,440 --> 00:28:41,750 Więc wiersz jest w zakresie dla Całość fragmencie kodu, 656 00:28:41,750 --> 00:28:44,690 zarówno wewnątrz zewnętrznej pętli for a wewnątrz z wewnętrznej pętli. 657 00:28:44,690 --> 00:28:48,050 Ale w przeciwieństwie do tego, w którym jest kolumna w zakresie? 658 00:28:48,050 --> 00:28:49,810 Kolumna zmienna? 659 00:28:49,810 --> 00:28:51,310 Tak tylko w pętli wewnętrznej. 660 00:28:51,310 --> 00:28:54,280 I to jest OK, bo nie mamy dostępu to poza jego nawiasy. 661 00:28:54,280 --> 00:28:57,280 Wszystko co robimy jest wydruk nowy linia na samym końcu tam. 662 00:28:57,280 --> 00:28:58,670 Tak więc w rzeczywistości ma OK. 663 00:28:58,670 --> 00:29:03,740 >> Więc to ma wpływ, wygląda na to, robi trzy wiersze i cztery kolumny. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Racja. 665 00:29:04,370 --> 00:29:06,270 Więc najpierw przejść przez naszego pierwszego rzędu. 666 00:29:06,270 --> 00:29:10,520 I właśnie w naszym pierwszym rzędzie, robimy Cztery kolumny wewnątrz pierwszego rzędu. 667 00:29:10,520 --> 00:29:11,980 Więc wydrukować cztery krzyżyki. 668 00:29:11,980 --> 00:29:15,800 A potem możemy wyjść z pętli for, ponieważ mamy już wydrukowane cztery krzyżyki. 669 00:29:15,800 --> 00:29:17,100 A my wydrukować nową linię. 670 00:29:17,100 --> 00:29:19,920 A potem przejść przez sam proces na dwa rzędy 671 00:29:19,920 --> 00:29:21,170 aby w sumie trzy. 672 00:29:21,170 --> 00:29:23,530 >> DAVID MALAN: A warto zauważyć, że to tylko artefaktem czcionki, fakt, 673 00:29:23,530 --> 00:29:25,680 że wyjście próbek wydają tak dużo wyższy, 674 00:29:25,680 --> 00:29:27,520 jakby to nie wszystko wierszy niż kolumn. 675 00:29:27,520 --> 00:29:29,824 Ale to tylko dlatego, że X jest wyższa niż szersza. 676 00:29:29,824 --> 00:29:32,740 To wszystko, co się tam dzieje, plus białe odstępy między wierszami. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Racja. 678 00:29:33,281 --> 00:29:34,792 Chłodny. 679 00:29:34,792 --> 00:29:35,750 DAVID MALAN: Wszystko w porządku. 680 00:29:35,750 --> 00:29:39,830 Tak szybkie spojrzenie na problemu ustawić jeden, podjąć wszelkie pytania, a następnie odroczenie? 681 00:29:39,830 --> 00:29:40,330 W porządku. 682 00:29:40,330 --> 00:29:43,164 Więc problemem ustawić jeden, tam trzy Głównymi wyzwaniami, ostatecznie. 683 00:29:43,164 --> 00:29:44,955 Ale po pierwsze, znajdziesz że ustawiony problem 684 00:29:44,955 --> 00:29:47,900 specyfikacji, jak w przypadku wielu psets tej jesieni, będzie Cię 685 00:29:47,900 --> 00:29:50,691 przez kilka rozgrzewki, wskazać Ci się kilka zasobów 686 00:29:50,691 --> 00:29:52,440 które może lub Nie widziałem już. 687 00:29:52,440 --> 00:29:54,440 Na przykład, CS50 posiada zestaw krótkich spodenkach, 688 00:29:54,440 --> 00:29:56,481 które są krótkie filmy, nie inaczej, ale że 689 00:29:56,481 --> 00:29:58,460 są bardzo wątek specific-- może pięć minut, 690 00:29:58,460 --> 00:30:02,360 10 minut długości na pętli lub na warunkach lub na algorytmach 691 00:30:02,360 --> 00:30:04,125 czy później na więcej zaawansowane zagadnienia, jak również. 692 00:30:04,125 --> 00:30:06,000 I na ogół osadzić tych, do problemu 693 00:30:06,000 --> 00:30:07,950 zestawy tak, że studenci posiada zasób, z którym 694 00:30:07,950 --> 00:30:10,840 recenzję materiały, które mogą mieć już się w wykładzie lub sekcji. 695 00:30:10,840 --> 00:30:13,220 Ale w ten sposób jest bardziej skoncentrowany i bardziej w zasięgu ręki. 696 00:30:13,220 --> 00:30:15,928 >> Mamy również mają tendencję do osadzania się problemu ustawia rzeczy zwane solucje. 697 00:30:15,928 --> 00:30:20,790 Tak więc prawie wszystkich przykładach I uwagi w wykładzie, na scenie tutaj, także 698 00:30:20,790 --> 00:30:24,565 w zastrzelił na kamery przejść bardziej wolniej, 699 00:30:24,565 --> 00:30:28,760 bardziej kameralny solucja przeze mnie na mój laptop z tym kodem, linia po linii 700 00:30:28,760 --> 00:30:31,427 tak, że w klasie, będziemy częściej przejrzeć coś lub kogoś 701 00:30:31,427 --> 00:30:33,260 będzie wtrącić ze związkiem odpowiedzieć na pytanie. 702 00:30:33,260 --> 00:30:35,820 Ale to nie musi tonąć w dla wszystkich na widowni. 703 00:30:35,820 --> 00:30:38,230 Więc znajdziesz kod instruktaże dla większości przykładów 704 00:30:38,230 --> 00:30:40,950 że robimy tu w wykładzie, tak aby może przejść przez to w swoim własnym tempie 705 00:30:40,950 --> 00:30:43,580 i do tyłu lub do przodu lub pominąć w ogóle, jeśli chcesz. 706 00:30:43,580 --> 00:30:45,356 >> Jest często kilka Pytania ciepłe-up, które 707 00:30:45,356 --> 00:30:47,105 prosimy o rodzaju wzmocnić ten materiał 708 00:30:47,105 --> 00:30:50,250 i upewnij się, że jesteś wygodne przed postępować z resztą pset. 709 00:30:50,250 --> 00:30:51,700 A potem, oczywiście, jest sam zbior. 710 00:30:51,700 --> 00:30:53,450 A jedną z rzeczy, mamy bardzo świadomie 711 00:30:53,450 --> 00:30:57,202 zrobić w CS50 jest prawie co nieciekawe lub nieciekawe intelektualnie 712 00:30:57,202 --> 00:30:58,910 krok mechaniczne, które Może trzeba zrobić 713 00:30:58,910 --> 00:31:00,519 jest prawie zawsze bardzo dobrze udokumentowane. 714 00:31:00,519 --> 00:31:03,560 W ciągu okresu, będziemy zacząć zadać więcej pytań retorycznych 715 00:31:03,560 --> 00:31:06,187 jak pamiętam, jak to czy tamto? 716 00:31:06,187 --> 00:31:08,520 Ale ogólnie, znajdziesz że zbiory problemowe cię 717 00:31:08,520 --> 00:31:10,269 przez mechaników coś tak, że 718 00:31:10,269 --> 00:31:14,160 Ciekawe, wyzwania intelektualne ostatecznie opuścił ci ucznia. 719 00:31:14,160 --> 00:31:17,390 >> Z powiedział, że Zamyla, z którymi prowadzonym na myśli dziś w wykładzie, 720 00:31:17,390 --> 00:31:20,190 jest jednym z naszych długoletnich pracowników Członek, który również posiada instruktaże 721 00:31:20,190 --> 00:31:24,520 na konkretnych problemach pset jak mario i chciwi, choć nie podlewać w tym roku. 722 00:31:24,520 --> 00:31:26,540 I to jest w tych solucje, że często 723 00:31:26,540 --> 00:31:29,450 oferuje kilka sztuczek dla jak postępować, nigdy nie mówi ci 724 00:31:29,450 --> 00:31:31,810 dokładnie, co robić, ale rather-- jak stan, 725 00:31:31,810 --> 00:31:35,200 jeśli will-- dając co najmniej Kilka pomysłów tak, to do ciebie, 726 00:31:35,200 --> 00:31:37,830 ostatecznie zdecydować, jak się do nich zbliżyć. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: Coś jak wysoki poziom zrozumienie logiki, co 728 00:31:41,200 --> 00:31:42,220 pytamy was zrobić. 729 00:31:42,220 --> 00:31:42,485 >> DAVID MALAN: Dokładnie. 730 00:31:42,485 --> 00:31:44,190 I rzeczywiście, Zamyla na solucje mają 731 00:31:44,190 --> 00:31:46,190 do odpowiedzi na często zadawane pytanie, gdzie 732 00:31:46,190 --> 00:31:48,610 Zacząłem robić, zwłaszcza gdy te długie specyfikacja 733 00:31:48,610 --> 00:31:51,960 trochę trudne biorąc pod uwagę cały tekst i obrazów, które mają w nich. 734 00:31:51,960 --> 00:31:54,890 >> Więc water.c, znajdziesz po ukończeniu go, 735 00:31:54,890 --> 00:31:56,920 jest rzeczywiście stosunkowo proste. 736 00:31:56,920 --> 00:31:58,882 Absolutnie to banda z was będzie bum 737 00:31:58,882 --> 00:32:01,840 głowami o ścianę próbując dowiedzieć się, dlaczego nie jest to kompilacja 738 00:32:01,840 --> 00:32:03,450 i dlaczego to nie działa poprawnie. 739 00:32:03,450 --> 00:32:05,040 Ale gdy skończysz z nim i po zabawie 740 00:32:05,040 --> 00:32:07,620 Spędziłem trochę czasu zmaga się z każdym z błędów, jakie mogą wystąpić, 741 00:32:07,620 --> 00:32:09,490 przekonasz się, że jest to bardzo krótki program. 742 00:32:09,490 --> 00:32:11,770 Można to zrobić w zaledwie kilka linie kodu, z których większość 743 00:32:11,770 --> 00:32:15,030 widzieliśmy już tutaj, w wykładzie, jeśli można zebrać odpowiednie klocki. 744 00:32:15,030 --> 00:32:16,810 >> A co proponujemy tutaj, to się zapytać 745 00:32:16,810 --> 00:32:22,250 określić, ile minut ktoś bierze prysznic na terenie kampusu. 746 00:32:22,250 --> 00:32:24,779 Określamy w problem ustawiona szybkość przepływu wody 747 00:32:24,779 --> 00:32:27,320 w, jak, prysznicem niskiego przepływu głowy, podobnie jak w klipie Seinfeld 748 00:32:27,320 --> 00:32:29,180 widzieliśmy wczoraj, lub razie ich przeciwieństwem. 749 00:32:29,180 --> 00:32:30,971 A potem po prostu trzeba zrobić trochę matematyki, 750 00:32:30,971 --> 00:32:34,710 really-- arytmetycznych za pomocą C powiedzieć nam, ile, mniej więcej, butelki wody 751 00:32:34,710 --> 00:32:37,720 jest równoważne jeśli jesteśmy biorąc prysznic n minut. 752 00:32:37,720 --> 00:32:41,389 >> Teraz, w mario.c, to będzie być nieco dłuższy programu. 753 00:32:41,389 --> 00:32:42,930 To nadal nie będzie to długo. 754 00:32:42,930 --> 00:32:45,130 Zaledwie kilka linie dłuższe niż water.c. 755 00:32:45,130 --> 00:32:48,230 Ale to będzie okazja, odtworzyć starą szkołę Mario 756 00:32:48,230 --> 00:32:50,670 Piramida z Super Mario Bracia lub niektóre kontynuację. 757 00:32:50,670 --> 00:32:53,510 To nie będzie wyglądać tak ładniejsza lub tak kolorowe, jak ten jeden tam. 758 00:32:53,510 --> 00:32:56,468 Jesteśmy po prostu zamierzasz korzystać małe hashtags jak mamy tu na ekranie 759 00:32:56,468 --> 00:32:58,120 przy użyciu tekstu ASCII. 760 00:32:58,120 --> 00:33:00,362 Ale będzie to zbliżenie na ten sam pomysł. 761 00:33:00,362 --> 00:33:02,570 I to będzie to ćwiczenia, które na pierwszy rzut oka 762 00:33:02,570 --> 00:33:04,720 upraszcza użytkowanie tylko wydaje dość wydrukować prostą piramidę. 763 00:33:04,720 --> 00:33:07,345 Ale jest kilka cech tutaj są interesujące. 764 00:33:07,345 --> 00:33:12,400 Zauważ, że w skrajnej prawej krawędzi piramida rzeczywiście ma szerokość dwóch. 765 00:33:12,400 --> 00:33:14,570 Więc nie ma dwóch jednakowych Kolumny wysokość, która 766 00:33:14,570 --> 00:33:16,804 sprawia, że ​​wymaga trochę nieco myśli, aby 767 00:33:16,804 --> 00:33:19,720 czy masz, że dokładnie tak, jak przeciwieństwie do po prostu doskonale kątowy 768 00:33:19,720 --> 00:33:20,220 linia. 769 00:33:20,220 --> 00:33:23,340 Więc to jest trochę przypadku rogu ale odpowiada rzeczywistej gry. 770 00:33:23,340 --> 00:33:27,610 >> I to też nie oczywiste na pierwszy Spojrzenie jak wydrukować spacji. 771 00:33:27,610 --> 00:33:29,430 Kiedy tak patrzę na Wyjście próbki here-- 772 00:33:29,430 --> 00:33:32,440 i to także w spec-- to rodzaj wygląda jak prostokąt, 773 00:33:32,440 --> 00:33:35,120 ale przekątnej Prostokąt został odcięty, 774 00:33:35,120 --> 00:33:37,320 i to tylko białe znaki, że tak powiem. 775 00:33:37,320 --> 00:33:40,100 I tak często zadawane Pytanie jest tu zawsze, dobrze, 776 00:33:40,100 --> 00:33:43,302 jak mogę przenieść hashtags na prawo? 777 00:33:43,302 --> 00:33:44,760 Albo jak mogę wydrukować puste miejsca? 778 00:33:44,760 --> 00:33:46,860 I to jest rzeczywiście łatwiej niż większość studentów myśleć. 779 00:33:46,860 --> 00:33:47,360 Dobrze? 780 00:33:47,360 --> 00:33:51,620 Możesz zbliżyć go wizualnie po prostu uderzając spację raz lub dwa razy 781 00:33:51,620 --> 00:33:52,700 lub trzy razy. 782 00:33:52,700 --> 00:33:56,260 >> A więc nawet jeśli z printf mamy prawie zawsze wydrukować ciąg lub int 783 00:33:56,260 --> 00:33:59,950 lub słowo takie jak "cześć, świat "lub seria słów, 784 00:33:59,950 --> 00:34:03,560 Możesz też po prostu wydrukować cytat, przestrzeń, koniec cytatu. 785 00:34:03,560 --> 00:34:06,320 I że będzie faktycznie dają Państwo spacje tam. 786 00:34:06,320 --> 00:34:08,330 Miejcie to na uwadze i nie overthink tego. 787 00:34:08,330 --> 00:34:10,570 Naprawdę trzeba zdecydować wiersz po wierszu od rzędu 788 00:34:10,570 --> 00:34:14,280 nie w przeciwieństwie swojej przykład Chwilę temu, jak wielu z tych, 789 00:34:14,280 --> 00:34:18,420 Kolumny powinny być białe znaki i ile z nich powinno być hashtags. 790 00:34:18,420 --> 00:34:21,560 To zajmie trochę czasu, ale to ostatecznie logiczna logika rodzaju. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Tak. 792 00:34:22,060 --> 00:34:25,060 Ale logika będzie wiersz po wierszu będzie bardzo przydatne tutaj. 793 00:34:25,060 --> 00:34:25,810 DAVID MALAN: Tak. 794 00:34:25,810 --> 00:34:28,976 Myślę, że przykładowy kod można gave-- nawet choć nie był to kompletny program. 795 00:34:28,976 --> 00:34:34,247 Trzeba jeszcze int i główny nieważności i #include stdio.h, 796 00:34:34,247 --> 00:34:35,580 wiele rzeczy z wykładu. 797 00:34:35,580 --> 00:34:37,629 Ale budulcem wydaje się tam być. 798 00:34:37,629 --> 00:34:39,920 I wtedy wreszcie jest coś trochę bardziej algorytmiczny. 799 00:34:39,920 --> 00:34:43,210 Tak więc okazuje się, że każdej chwili przejść do CVS lub sklep spożywczy 800 00:34:43,210 --> 00:34:47,810 i ktoś wręcza ci u rachunki kasowe lub monety jak zmiany, 801 00:34:47,810 --> 00:34:50,620 Okazuje się, że ludzie, czy nie wiesz, czy nie, 802 00:34:50,620 --> 00:34:53,300 Prawdopodobnie używasz, co jest zwany algorytm zachłanny, 803 00:34:53,300 --> 00:34:58,170 przy czym jeśli należna, powiedzmy, $ 21 w zmiany, ponieważ z jakiegoś powodu 804 00:34:58,170 --> 00:35:01,580 kupił coś bardzo tanie z bardzo dużym rachunku na CVS, 805 00:35:01,580 --> 00:35:05,910 byłoby to naprawdę denerwujące, jeśli kasjer dał ci 21 singli, lub, co gorsza 806 00:35:05,910 --> 00:35:07,629 jeszcze dużo monet. 807 00:35:07,629 --> 00:35:10,670 Raczej, co rozsądna osoba jest prawdopodobnie będzie zrobić, to oni będą 808 00:35:10,670 --> 00:35:14,224 chwycić $ 20- $, a potem 1-rachunek, a wręczyć ci tylko dwa rachunki w tym przypadku. 809 00:35:14,224 --> 00:35:17,390 Maria: Więc oni starają się minimalizować zmiany, które dają z powrotem do Ciebie. 810 00:35:17,390 --> 00:35:17,850 DAVID MALAN: Dokładnie. 811 00:35:17,850 --> 00:35:19,540 A sama umowa z monet, jak również. 812 00:35:19,540 --> 00:35:23,040 Jeśli jesteś winien, powiedzmy, $ 0.50, miejmy nadzieję, że nie chcesz, 50 groszy. 813 00:35:23,040 --> 00:35:25,500 Zamiast tego chcą dwa czwarte, na przykład. 814 00:35:25,500 --> 00:35:27,540 Teraz, to nie zakładamy, że kasjer ma 815 00:35:27,540 --> 00:35:29,940 dosyć każdego nominału, które on lub ona może chcesz dać. 816 00:35:29,940 --> 00:35:32,148 Ale my nie pozwalają przyjąć, aż do problemu. 817 00:35:32,148 --> 00:35:35,590 A celem, ostatecznie, jest wdrożenia w kodzie C algorytm zachłanny. 818 00:35:35,590 --> 00:35:37,344 Tak więc użytkownik może aby wpisać, ile 819 00:35:37,344 --> 00:35:40,510 zmieni on lub ona jest należne z dolarów i centów, jakiś zmiennoprzecinkowych 820 00:35:40,510 --> 00:35:41,590 Wartość pewnie. 821 00:35:41,590 --> 00:35:45,530 A potem trzeba do matematyki i dowiedzieć się algorytmicznie, dobrze, 822 00:35:45,530 --> 00:35:49,020 ile monet mogę dać Ci minimalnie dać 823 00:35:49,020 --> 00:35:50,270 dokładnie to, że ilość zmian. 824 00:35:50,270 --> 00:35:53,470 Ale nie dzieje się kilka części skomplikowane tutaj, prawda? 825 00:35:53,470 --> 00:35:56,236 Jak tam cały Emisja nieścisłości. 826 00:35:56,236 --> 00:35:56,860 MARIA: Dokładnie. 827 00:35:56,860 --> 00:35:59,114 Więc zmiennoprzecinkowa Wartości mają niedokładności. 828 00:35:59,114 --> 00:36:00,780 Czy mówimy o tym w wykładzie dzisiaj? 829 00:36:00,780 --> 00:36:02,340 >> DAVID MALAN: Zrobiliśmy Ostatni raz w wykładzie. 830 00:36:02,340 --> 00:36:03,506 Rozmawialiśmy o niedokładności. 831 00:36:03,506 --> 00:36:08,840 A ty nie chcesz oszukiwać użytkownika Zmiana ile on lub ona jest winna. 832 00:36:08,840 --> 00:36:11,290 I tak solucja, w problem ustawić specyfikacja, 833 00:36:11,290 --> 00:36:15,990 zastanowić, ostatecznie, co do jak można łagodzić te nieścisłości 834 00:36:15,990 --> 00:36:17,280 Błędy, potencjalnie. 835 00:36:17,280 --> 00:36:21,050 Jest to możliwe do uniknięcia, na pewno, na wejścia mówimy o. 836 00:36:21,050 --> 00:36:23,590 I rzeczywiście, pennies-- być może będziemy odroczyć do Zamyla, 837 00:36:23,590 --> 00:36:25,136 Myślę, że dla tamtejszych sztuczek. 838 00:36:25,136 --> 00:36:27,760 Więc ostatecznie, można znaleźć progresja problemów w tym tygodniu, 839 00:36:27,760 --> 00:36:30,700 z których pierwsza jest bardzo mała, to średnia, potem trochę większe. 840 00:36:30,700 --> 00:36:33,200 Ale wszystkie z nich korzystać z budynku bloki z tym ostatnim tygodniu, 841 00:36:33,200 --> 00:36:35,280 z tego supersection, Problem ustawić specyfikacja 842 00:36:35,280 --> 00:36:36,710 daje na niezliczonych zasobów. 843 00:36:36,710 --> 00:36:41,000 Ale nadal, jeśli w ogóle walczą, szczególnie wśród tych, mniej wygodne 844 00:36:41,000 --> 00:36:42,917 bez uprzedniej tle, przyjść do godzin pracy biura 845 00:36:42,917 --> 00:36:44,958 w poniedziałek i wtorek i Środa i czwartek. 846 00:36:44,958 --> 00:36:46,950 Idź do CS50 Dyskutuj poprzez strona kursu, w 847 00:36:46,950 --> 00:36:49,080 za pomocą których można rozmawiać z pracownikami i kolegów z klasy. 848 00:36:49,080 --> 00:36:51,670 >> Ale w końcu, myślę, że Najlepszą radą jest po prostu zacząć wcześnie. 849 00:36:51,670 --> 00:36:54,711 To nie jest rodzaj klasy, które Cię powinno być rozpoczęcie psets w środę 850 00:36:54,711 --> 00:36:56,640 noc, lub co gorsza w czwartek wieczorem. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: Moja najlepsza rada jest aby zaczęli w poniedziałek. 852 00:36:59,067 --> 00:36:59,900 DAVID MALAN: Poniedziałek. 853 00:36:59,900 --> 00:37:02,490 Więc jeśli jeszcze nie rozpoczął already-- nie. 854 00:37:02,490 --> 00:37:04,732 Ale nawet jeśli nie jest poniedziałek, to we wtorek. 855 00:37:04,732 --> 00:37:05,690 Im wcześniej, tym lepiej. 856 00:37:05,690 --> 00:37:08,605 I to jest powód, dla którego Oczywiście ma tyle późno dni to 857 00:37:08,605 --> 00:37:10,535 dać trochę presji psychicznej 858 00:37:10,535 --> 00:37:13,684 aby rozpocząć wcześniej, ale wciąż niech rzeczy poślizgu, gdy coś trwa dłużej 859 00:37:13,684 --> 00:37:14,350 niż można się spodziewać. 860 00:37:14,350 --> 00:37:17,950 >> MARIA: A chcesz korzystać z godziny pracy, jak tylko możesz, też. 861 00:37:17,950 --> 00:37:20,291 >> DAVID MALAN: Masz pytania? 862 00:37:20,291 --> 00:37:20,790 W porządku. 863 00:37:20,790 --> 00:37:22,930 Cóż, dlaczego nie możemy odroczyć tutaj? 864 00:37:22,930 --> 00:37:23,487