1 00:00:00,000 --> 00:00:12,510 2 00:00:12,510 --> 00:00:13,870 >> ROB: W porządku. 3 00:00:13,870 --> 00:00:16,770 Zapraszamy do pierwszej części. 4 00:00:16,770 --> 00:00:17,480 Jestem Rob. 5 00:00:17,480 --> 00:00:18,806 >> JOSEPH: Jestem Józef. 6 00:00:18,806 --> 00:00:21,540 >> ROB: Tak będziemy nurkować w prawo w. 7 00:00:21,540 --> 00:00:23,420 Pierwszą rzeczą, aby porozmawiać o jest urządzenie. 8 00:00:23,420 --> 00:00:27,150 Więc mam nadzieję, że większość z was ma Ściągnąłem go już. 9 00:00:27,150 --> 00:00:37,180 Ale można znaleźć w instrukcji w cs50.net/appliance. 10 00:00:37,180 --> 00:00:38,430 O Boże, teraz jestem skrępowany. 11 00:00:38,430 --> 00:00:44,590 12 00:00:44,590 --> 00:00:45,430 Wciąż słyszę go. 13 00:00:45,430 --> 00:00:47,232 >> JOSEPH: Wow, to brzmi jak jest zdezorientowany. 14 00:00:47,232 --> 00:00:52,460 >> ROB: Tak niektórzy ludzie zostały konieczności problemy z nim, więc nie czekaj, aż 15 00:00:52,460 --> 00:00:54,940 w ostatniej chwili problemu ustawić spróbować rozwiązać urządzenia i 16 00:00:54,940 --> 00:00:56,320 dowiedzieć się, że to nie działa. 17 00:00:56,320 --> 00:00:59,010 >> JOSEPH: A jeśli coś nie działa i potrzebujesz pomocy, możesz przejść do 18 00:00:59,010 --> 00:01:03,390 cs50.net/discussion gdzie forum, na którym można 19 00:01:03,390 --> 00:01:04,110 może zamieścić swoje pytania. 20 00:01:04,110 --> 00:01:06,655 A my się do nich w końcu. 21 00:01:06,655 --> 00:01:07,490 >> ROB: W porządku. 22 00:01:07,490 --> 00:01:12,180 Więc to jest to, co Appliance wygląda. 23 00:01:12,180 --> 00:01:15,480 Ponownie, jest to po prostu całkowicie oddzielne System operacyjny działa w ramach 24 00:01:15,480 --> 00:01:19,440 niezależnie od systemu operacyjnego są wyświetlane na komputerze przenośnym. 25 00:01:19,440 --> 00:01:24,450 I najważniejsze rzeczy, które będziesz używać są gedit. 26 00:01:24,450 --> 00:01:28,050 Więc mam nadzieję, że to już ma się znajome miejsce. 27 00:01:28,050 --> 00:01:29,470 Terminal. 28 00:01:29,470 --> 00:01:31,890 >> Można także uruchomić Chrome wewnątrz urządzenia. 29 00:01:31,890 --> 00:01:33,860 Nie było kilka osób którzy zgłaszali internet 30 00:01:33,860 --> 00:01:35,390 nie działa w urządzeniu. 31 00:01:35,390 --> 00:01:38,090 A niektóre z nich po prostu założyć, który nie powinien być 32 00:01:38,090 --> 00:01:39,190 Internet w urządzeniu. 33 00:01:39,190 --> 00:01:40,750 Ale tak, nie ma być internet. 34 00:01:40,750 --> 00:01:44,000 35 00:01:44,000 --> 00:01:46,410 >> Powiem to teraz, ale tak nie jest naprawdę znaczy. 36 00:01:46,410 --> 00:01:50,680 Jeśli internet nie działa, to jest to, co zwykle trzeba 37 00:01:50,680 --> 00:01:52,180 uruchomić go naprawić. 38 00:01:52,180 --> 00:01:55,602 Jeśli masz problemy z Internetu, nie Pamiętam go, po prostu po to na 39 00:01:55,602 --> 00:01:57,560 Omówić, i powiemy, uruchom to. 40 00:01:57,560 --> 00:02:00,420 Ale internet powinien działać. 41 00:02:00,420 --> 00:02:06,650 >> Więc jedyną rzeczą - tak, nic inne jest naprawdę istotne. 42 00:02:06,650 --> 00:02:08,979 Ale chciałem tylko zaznaczyć, że - 43 00:02:08,979 --> 00:02:13,290 zobacz w tym dolnym prawym rogu. 44 00:02:13,290 --> 00:02:16,530 Więc każdego z urządzeń powinny posiadać adres IP. 45 00:02:16,530 --> 00:02:22,350 I później w semestrze, w tym IP adres będą bardziej istotne, gdy 46 00:02:22,350 --> 00:02:27,230 Podczas pracy w sieci p-set, ponieważ będzie można uzyskać dostęp do 47 00:02:27,230 --> 00:02:32,310 strona pracujesz dalej od Twojego lokalne Chrome przy użyciu tego adresu IP. 48 00:02:32,310 --> 00:02:35,400 >> Ale to, co lubię używać adresu IP na - i nie musisz tego robić, ja 49 00:02:35,400 --> 00:02:37,460 po prostu chcą zwrócić na to uwagę - 50 00:02:37,460 --> 00:02:39,540 jest tutaj. 51 00:02:39,540 --> 00:02:42,910 Więc to jest okno terminala na mój Mac, to nie jest w 52 00:02:42,910 --> 00:02:44,580 Urządzenie w ogóle. 53 00:02:44,580 --> 00:02:47,190 I można sprawdzić, co ta komenda. 54 00:02:47,190 --> 00:02:51,855 Ale mam zamiar SSH bezpośrednio do mojego Appliance. 55 00:02:51,855 --> 00:02:53,410 Nie wiem, co to jest IP. 56 00:02:53,410 --> 00:02:54,300 >> JOSEPH: 168 - 57 00:02:54,300 --> 00:02:56,080 >> 168.224.1.0. 58 00:02:56,080 --> 00:02:59,950 >> ROB: Tak raz skończę z tego, zaloguj 59 00:02:59,950 --> 00:03:05,450 Teraz, w zasadzie, jest identyczna okno terminalu w moim Appliance. 60 00:03:05,450 --> 00:03:10,280 Tak więc w rzeczywistości prawie nigdy nie pracował z poziomu samego urządzenia. 61 00:03:10,280 --> 00:03:12,550 Ja po prostu zawsze to działa w tle zminimalizowane 62 00:03:12,550 --> 00:03:15,890 i SSHed do niego. 63 00:03:15,890 --> 00:03:24,270 >> Problem z tym jest nie zamierzasz aby móc łatwo używać gedit 64 00:03:24,270 --> 00:03:25,600 bezpośrednio z tego. 65 00:03:25,600 --> 00:03:31,500 Ale jeśli chcesz być prawdziwym fajne Haker, to należy się przyzwyczaić do 66 00:03:31,500 --> 00:03:34,220 Edytor tekstu wiersza poleceń i tak. 67 00:03:34,220 --> 00:03:39,620 Vim i Emacs tak i Nano, wszystkie te są różne alternatywy. 68 00:03:39,620 --> 00:03:41,560 Nano wydaje się być najprostszym. 69 00:03:41,560 --> 00:03:45,006 I myślę, że nie ma podświetlanie składni. 70 00:03:45,006 --> 00:03:47,620 Och, nie, to nic nie robi. 71 00:03:47,620 --> 00:03:49,870 Więc możesz użyć Nano, ponieważ że jeden jest całkiem proste. 72 00:03:49,870 --> 00:03:52,000 >> Widzisz te wszystkie polecenia na dole. 73 00:03:52,000 --> 00:03:54,750 Ten mały symbol marchewka. 74 00:03:54,750 --> 00:03:57,620 Jeśli nie widziałeś wcześniej, będziesz zapewne bardzo dużo teraz. 75 00:03:57,620 --> 00:04:02,350 Zazwyczaj oznacza marchew sterowania, jak w dolnej lewej części klawiatury 76 00:04:02,350 --> 00:04:04,130 znak kontrolny. 77 00:04:04,130 --> 00:04:07,260 Więc to mówi mi tu - 78 00:04:07,260 --> 00:04:08,710 Och, to nie jest odcięte, jeśli powiększyć obraz 79 00:04:08,710 --> 00:04:11,040 Więc sterowania, X jest jak Zamierzam wyjść. 80 00:04:11,040 --> 00:04:14,710 I mówi, mogę trafić Y dla Tak, dla oszczędności, N na Nie. 81 00:04:14,710 --> 00:04:17,190 Więc to jest Nano. 82 00:04:17,190 --> 00:04:22,860 >> Vim i Emacs wydają się być nieco bardziej skomplikowane i przytłaczające. 83 00:04:22,860 --> 00:04:28,840 Ale można się do tego przyzwyczaić, a potem będziesz go kochać. 84 00:04:28,840 --> 00:04:30,590 Tak, to jest to. 85 00:04:30,590 --> 00:04:31,720 >> JOSEPH: Nie ma potrzeby, aby to zrobić. 86 00:04:31,720 --> 00:04:31,840 >> ROB: Tak. 87 00:04:31,840 --> 00:04:37,510 Jesteś wolny, aby używać gedit dla Pozostała część semestru. 88 00:04:37,510 --> 00:04:40,630 Więc wszelkie pytania związane appliance-? 89 00:04:40,630 --> 00:04:42,820 Lub masz jakieś przemyślenia na temat tego, co jeszcze musi być powiedziane o około 90 00:04:42,820 --> 00:04:43,610 urządzenie? 91 00:04:43,610 --> 00:04:43,996 Tak. 92 00:04:43,996 --> 00:04:47,720 >> GŁOŚNIK 1: Po SSHed do swojej rzeczą, był Crimson hasło? 93 00:04:47,720 --> 00:04:48,390 >> ROB: Tak. 94 00:04:48,390 --> 00:04:50,170 Hasło dla prawie wszystko w urządzeniu będzie 95 00:04:50,170 --> 00:04:52,473 być Crimson. 96 00:04:52,473 --> 00:04:56,517 >> Głośnik 2: Zainstaluj jak prawdziwy IDE na urządzeniu, to będzie działać? 97 00:04:56,517 --> 00:04:59,200 98 00:04:59,200 --> 00:05:07,290 >> ROB: Wyobrażam sobie, Eclipse ma Wersja Fedory, w tym przypadku, tak, 99 00:05:07,290 --> 00:05:08,420 można to zrobić. 100 00:05:08,420 --> 00:05:10,875 To chyba nie warto. 101 00:05:10,875 --> 00:05:11,742 >> Głośnik 2: OK. 102 00:05:11,742 --> 00:05:15,924 Więc to chyba łatwiej gdybym chciał używać Eclipse, wystarczy użyć rodzimych i 103 00:05:15,924 --> 00:05:17,646 a następnie przesłać do - 104 00:05:17,646 --> 00:05:21,090 >> ROB: Och, to jest chyba łatwiej. 105 00:05:21,090 --> 00:05:24,046 Ale możesz dostać pracy wewnątrz urządzenia. 106 00:05:24,046 --> 00:05:27,740 >> JOSEPH: A do kamery, pytanie był, można zainstalować inny 107 00:05:27,740 --> 00:05:29,490 IDE wewnątrz urządzenia? 108 00:05:29,490 --> 00:05:31,520 >> ROB: Eclipse jest Przykładem IDE. 109 00:05:31,520 --> 00:05:34,800 110 00:05:34,800 --> 00:05:36,050 Wszelkie inne pytania Urządzanie? 111 00:05:36,050 --> 00:05:38,250 112 00:05:38,250 --> 00:05:38,680 Dobrze. 113 00:05:38,680 --> 00:05:44,920 >> Więc my teraz przejść do wiersza poleceń rzeczy związanych z interfejsem, więc CLI. 114 00:05:44,920 --> 00:05:47,990 I znowu, po prostu przechodząc do pracy w Tutaj, ponieważ jest identyczna 115 00:05:47,990 --> 00:05:52,780 pracy w oknie terminala wewnątrz urządzenia. 116 00:05:52,780 --> 00:05:54,160 Jak to czcionki szuka? 117 00:05:54,160 --> 00:05:55,970 Jest to, że wystarczająco duża? 118 00:05:55,970 --> 00:05:57,000 Dobrze. 119 00:05:57,000 --> 00:06:02,480 >> Tak więc istnieje wiele poleceń, które należy stosować się do dość 120 00:06:02,480 --> 00:06:04,490 przez cały semestr. 121 00:06:04,490 --> 00:06:09,480 Duży dwa do nawigacji są ls, lista pliki w tym katalogu, oraz 122 00:06:09,480 --> 00:06:11,380 cd, więc zmienić katalog. 123 00:06:11,380 --> 00:06:18,390 Więc mogę zmienić na pulpicie, a następnie wzór jest bardzo powszechne na cd 124 00:06:18,390 --> 00:06:22,550 Katalog i natychmiast ls Co jest w tym katalogu. 125 00:06:22,550 --> 00:06:25,540 >> Ludzie czasami nie zdają sobie sprawy, że zakończenie Tab jest rzeczą. 126 00:06:25,540 --> 00:06:28,370 Tak jak cd, VH, a potem uderzył w tab. 127 00:06:28,370 --> 00:06:30,790 I prawie nigdy nie wpisać się Cała sprawa. 128 00:06:30,790 --> 00:06:32,920 A potem, jeśli naciskamy Tab ponownie, to będzie automatycznie 129 00:06:32,920 --> 00:06:33,670 rozpocząć ofertę dla mnie. 130 00:06:33,670 --> 00:06:37,000 Więc mogę cd vhosty, hosta lokalnego. 131 00:06:37,000 --> 00:06:39,880 I to właśnie będzie - 132 00:06:39,880 --> 00:06:43,380 w przypadku, gdy nie słyszeliście określenie przed, w katalogu jest tylko kolejnym słowem 133 00:06:43,380 --> 00:06:45,170 do folderu. 134 00:06:45,170 --> 00:06:49,930 Więc teraz, jeśli widzisz - 135 00:06:49,930 --> 00:06:51,810 niech wprowadzą, że do szczytu. 136 00:06:51,810 --> 00:06:55,380 >> Więc teraz, jeśli widzisz w nawiasach, to zobaczyć trochę tyldy, slash, vhosta, 137 00:06:55,380 --> 00:06:56,810 slash, hosta lokalnego. 138 00:06:56,810 --> 00:07:00,040 Więc tyldy, który odnosi do mojego katalogu domowego. 139 00:07:00,040 --> 00:07:03,090 To katalog jesteś w przypadku SSH w. 140 00:07:03,090 --> 00:07:05,660 Jest to katalog, gdy jesteś w otwierasz terminal. 141 00:07:05,660 --> 00:07:08,650 To miejsce, gdzie zacząć. 142 00:07:08,650 --> 00:07:13,110 I tak jestem w moim katalogu domowym, a ja jestem w środku vhosta 143 00:07:13,110 --> 00:07:14,475 katalog wewnątrz katalogu domowym. 144 00:07:14,475 --> 00:07:19,670 A ja jestem w środku lokalnej gospodarzem katalog wewnątrz tego. 145 00:07:19,670 --> 00:07:23,740 >> Więc kilka innych przydatnych rzeczy z CD - 146 00:07:23,740 --> 00:07:29,220 lub również, ogólnie, tak, dot zawsze odnosi się do bieżącego katalogu. 147 00:07:29,220 --> 00:07:31,130 Cd, kropka jest polecenie całkiem bezwartościowe. 148 00:07:31,130 --> 00:07:35,150 Ale to się zmienia, aby aktualny katalog. 149 00:07:35,150 --> 00:07:38,230 Bardziej użyteczny w odniesieniu cd jest kropka, kropka, która jest 150 00:07:38,230 --> 00:07:40,220 po prostu pójść do jednego katalogu. 151 00:07:40,220 --> 00:07:43,360 >> I pamiętać, że te - 152 00:07:43,360 --> 00:07:48,610 Chcę powiedzieć, aliasy, ale te symbole, kropka, i kropka, kropka, te prace 153 00:07:48,610 --> 00:07:51,740 na prawie każdym poleceniu jesteś będzie myślał o prowadzenie. 154 00:07:51,740 --> 00:07:55,370 Tak jak cd jest chyba gdzie będziesz stosując większość, ale nie są one 155 00:07:55,370 --> 00:07:56,780 rzeczy, które po prostu cd rozumie. 156 00:07:56,780 --> 00:07:59,980 To dość dużo coś cała Wiersz polecenia rozumie. 157 00:07:59,980 --> 00:08:01,932 Wiele programów zrozumieć kropka i kropka, kropka. 158 00:08:01,932 --> 00:08:04,830 159 00:08:04,830 --> 00:08:09,090 >> Więc te - inne użyteczne cd, Dash. 160 00:08:09,090 --> 00:08:13,460 Tak, że przyniesie mi ostatni katalog, że jestem w. 161 00:08:13,460 --> 00:08:15,980 Więc czasem zrobię coś takiego, och, ja pracuję tutaj. 162 00:08:15,980 --> 00:08:21,110 I widzę jakiś błąd z czymś, i Pójdę zbadania go, przechodząc do 163 00:08:21,110 --> 00:08:24,020 jakiś przypadkowy katalog gdzieś. 164 00:08:24,020 --> 00:08:25,260 I nie wiem, czy to będzie niech mi tam. 165 00:08:25,260 --> 00:08:25,720 To będzie. 166 00:08:25,720 --> 00:08:27,615 Więc robię to, co chcę w tym katalogu. 167 00:08:27,615 --> 00:08:28,950 Bla, bla, bla, bla, bla. 168 00:08:28,950 --> 00:08:31,770 A ja na to: Dobra, chcę , aby wrócić do miejsca, gdzie byłem. 169 00:08:31,770 --> 00:08:34,490 cd, kreska, i to sprowadza mnie z powrotem. 170 00:08:34,490 --> 00:08:39,970 >> Więc mam zamiar rzucić dużo z nich na ciebie dzisiaj. 171 00:08:39,970 --> 00:08:43,730 Nie spodziewam się, aby zapamiętać wszystkie z nich. 172 00:08:43,730 --> 00:08:46,170 To trochę tak wiem że one istnieją. 173 00:08:46,170 --> 00:08:48,690 A później, gdy jesteś jak, hmm, chcę wrócić do 174 00:08:48,690 --> 00:08:51,870 katalog, że był po prostu w, oh, poczekaj, coś takiego istnieje. 175 00:08:51,870 --> 00:08:53,980 Nie możecie po prostu wpisać w Cały katalog ponownie. 176 00:08:53,980 --> 00:08:56,090 >> JOSEPH: I w końcu jesteś po prostu wykorzystywać je w kółko, i 177 00:08:56,090 --> 00:08:57,830 to będzie się pamięć mięśniowa. 178 00:08:57,830 --> 00:09:00,090 >> ROB: Tak. 179 00:09:00,090 --> 00:09:02,930 Tak jak powiedziałem wcześniej, że tylda jest katalogiem. 180 00:09:02,930 --> 00:09:04,820 Więc mogę cd, tyldy. 181 00:09:04,820 --> 00:09:07,280 Ale ja nawet nie mam do zrobić, jeśli po prostu - 182 00:09:07,280 --> 00:09:09,760 Wrócę do katalogu tak to nie jest bez sensu przykład. 183 00:09:09,760 --> 00:09:14,560 Ale jeśli po prostu zrobić cd, to również sam, udać się do mojego katalogu domowego. 184 00:09:14,560 --> 00:09:18,380 185 00:09:18,380 --> 00:09:19,880 Zrobić dowództwo, K. 186 00:09:19,880 --> 00:09:24,015 >> JOSEPH: Możesz również wpisać jasne, słowo i powinien go usunąć. 187 00:09:24,015 --> 00:09:28,650 >> ROB: I myślę, że również kontrola, P robi to również. 188 00:09:28,650 --> 00:09:29,690 Tak wiele różnych sposobów. 189 00:09:29,690 --> 00:09:34,070 Myślę, że są pewne różnice, gdzie jasne i sterowania, L będzie tylko 190 00:09:34,070 --> 00:09:37,280 naprawdę przesunąć do góry i Wciąż mogę przejść z powrotem. 191 00:09:37,280 --> 00:09:40,580 Polecenie, K dosłownie niszczy wszystko, a ty 192 00:09:40,580 --> 00:09:42,960 Nie można przejść z powrotem. 193 00:09:42,960 --> 00:09:45,530 Przynajmniej, że jest jak to działa w iTerm2. 194 00:09:45,530 --> 00:09:48,690 Nie wiem, jak inne rzeczy - 195 00:09:48,690 --> 00:09:49,360 och. 196 00:09:49,360 --> 00:09:55,450 >> Z SSHing, więc jeśli jesteś w systemie Windows, będziesz musiał ściągnąć PuTTY 197 00:09:55,450 --> 00:10:02,360 w celu ssh ponieważ system Windows nie mają jak wbudowany SSH narzędzia. 198 00:10:02,360 --> 00:10:06,150 Z komputerami Mac, możesz po prostu SSH bezpośrednio z oknie terminala. 199 00:10:06,150 --> 00:10:08,755 200 00:10:08,755 --> 00:10:09,690 OK. 201 00:10:09,690 --> 00:10:11,840 Pytania? 202 00:10:11,840 --> 00:10:19,260 >> Z ls, więc coś się przyzwyczaić większość z tych poleceń jest - 203 00:10:19,260 --> 00:10:20,060 Cóż, ja po prostu zrobić jeden. 204 00:10:20,060 --> 00:10:21,310 Ls, kreska, l. 205 00:10:21,310 --> 00:10:26,330 Tak kreska, l to, co będziemy zadzwonić flagę do ls. 206 00:10:26,330 --> 00:10:30,770 I wiele z tych komend mają flagi że można przejść do nich. 207 00:10:30,770 --> 00:10:35,020 Więc w tym przypadku, kreska, l jest flaga , który mówi to, aby dać mi pełne 208 00:10:35,020 --> 00:10:37,850 wykaz wszystkich informacji z tych plików. 209 00:10:37,850 --> 00:10:44,790 >> Widzimy więc tutaj, że na pulpicie było zmodyfikowana w dniu 30 lipca o 12:54. 210 00:10:44,790 --> 00:10:47,160 Pliki do pobrania został zmodyfikowany przy 6 września. 211 00:10:47,160 --> 00:10:52,350 Są to wielkości i bieżąca bajtów z tych katalogów. 212 00:10:52,350 --> 00:10:54,412 Nie musisz rozumieć wszystko. 213 00:10:54,412 --> 00:11:00,380 >> Te rzeczy po lewej, te drwx jest, , które stają się bardziej istotne 214 00:11:00,380 --> 00:11:02,290 później, gdy masz do czynienia z - 215 00:11:02,290 --> 00:11:05,900 że ma do czynienia z, który ma uprawnienia spojrzeć na te pliki. 216 00:11:05,900 --> 00:11:09,880 A więc jeśli nie było tylko na użytkownika ten komputer, by być w stanie 217 00:11:09,880 --> 00:11:13,345 słownie, OK, mam być tylko jeden mogą w tym pliku lub jestem 218 00:11:13,345 --> 00:11:14,870 zamierza umożliwić wszystkim się w tym pliku. 219 00:11:14,870 --> 00:11:17,710 Więc ktoś inny na moim komputerze Można w tym pliku. 220 00:11:17,710 --> 00:11:22,190 221 00:11:22,190 --> 00:11:25,600 Ja nawet nie wiem co to - co to robić? 222 00:11:25,600 --> 00:11:26,840 >> JOSEPH: Nie jestem do końca pewien, faktycznie. 223 00:11:26,840 --> 00:11:27,705 >> ROB: Nie mam pojęcia. 224 00:11:27,705 --> 00:11:30,530 >> JOSEPH: Ale jeśli nie wiesz, nie ma pomocne polecenia, których można użyć 225 00:11:30,530 --> 00:11:31,680 powiedzieć, co oznacza wyjście. 226 00:11:31,680 --> 00:11:33,780 I po wpisaniu w człowieku przed poleceniem - 227 00:11:33,780 --> 00:11:35,000 tak M-N. ROB: Człowiek. 228 00:11:35,000 --> 00:11:37,690 Tak więc człowiek jest inny jest to bardzo użyteczne. 229 00:11:37,690 --> 00:11:39,540 A człowiek, ls. 230 00:11:39,540 --> 00:11:47,320 Więc strony man, mają zarówno Polecenia, które masz zamiar używać 231 00:11:47,320 --> 00:11:50,330 w wierszu polecenia, a także mają funkcje, które będą istotne 232 00:11:50,330 --> 00:11:52,530 z C. Tak więc można człowiekowi - 233 00:11:52,530 --> 00:11:53,720 i zignorowałem 3. 234 00:11:53,720 --> 00:11:57,410 Ale man 3 printf przyniesie do wersji C printf. 235 00:11:57,410 --> 00:12:01,030 Ale jeśli tylko zrobić człowiek printf, to jest zamiar przywołać printf polecenia 236 00:12:01,030 --> 00:12:03,540 , co dzieje się w wierszu poleceń. 237 00:12:03,540 --> 00:12:05,730 >> Tak więc człowiek, ls. 238 00:12:05,730 --> 00:12:09,030 Strony te mogą być dość przytłaczające. 239 00:12:09,030 --> 00:12:12,770 Tutaj jednak, zobaczysz ten wpis wszystkich tych flag, że ls 240 00:12:12,770 --> 00:12:14,300 rozumie. 241 00:12:14,300 --> 00:12:17,876 Więc jeśli idziemy do kreska, l, i - 242 00:12:17,876 --> 00:12:19,300 Mam zamiar wrzucić to na ciebie. 243 00:12:19,300 --> 00:12:23,050 Ale w celu poszukiwania, chcesz najpierw trafić na pytanie 244 00:12:23,050 --> 00:12:24,780 znak lub przycisk ukośnik. 245 00:12:24,780 --> 00:12:26,040 Więc slash. 246 00:12:26,040 --> 00:12:29,000 >> I wtedy mogę sprawdzić za to, co chcę. 247 00:12:29,000 --> 00:12:33,780 Więc mam zamiar ciąć na desce rozdzielczej, L. 248 00:12:33,780 --> 00:12:35,110 I tam było. 249 00:12:35,110 --> 00:12:37,450 Więc używać długiego formatu lista. 250 00:12:37,450 --> 00:12:40,060 To nie pomoże mi dowiedzieć się, co że zwłaszcza kolumna na myśli, ale ja 251 00:12:40,060 --> 00:12:44,480 zakładamy gdzieś tutaj by to wyjaśnić. 252 00:12:44,480 --> 00:12:48,740 Więc używać stron man dla każdego polecenia to, że nie od razu zrozumieć. 253 00:12:48,740 --> 00:12:51,080 >> Jestem pewien, że można nawet człowiek, mężczyzna. 254 00:12:51,080 --> 00:12:53,070 Interfejs do Online podręczniki referencyjne. 255 00:12:53,070 --> 00:12:57,700 256 00:12:57,700 --> 00:13:03,570 Och, ostatni, który jest może nieco Istotne jest, ls, Dash. 257 00:13:03,570 --> 00:13:08,490 Więc zauważyć, jeśli tylko zrobić ls, Rozumiem te pięć plików. 258 00:13:08,490 --> 00:13:11,480 Jeśli zrobić ls, kreska,, I dostać dużo więcej plików. 259 00:13:11,480 --> 00:13:15,350 Więc rzeczą wspólną wszystkich tych nowych plików jest kropka wcześniej. 260 00:13:15,350 --> 00:13:21,220 >> Konwencja jest tak, że plik, który zaczyna się od kropki jest ukryta. 261 00:13:21,220 --> 00:13:25,300 Więc nie chcę widzieć, że plik, nie chcę go mieć bałagan z 262 00:13:25,300 --> 00:13:26,750 listą katalogów. 263 00:13:26,750 --> 00:13:30,020 To tylko wtedy, gdy wyraźnie zapytać, Wszystko w porządku, ls, kreska,, pokaż mi. 264 00:13:30,020 --> 00:13:32,830 Oznacza wszystkie pliki, w tym ukryte. 265 00:13:32,830 --> 00:13:37,260 266 00:13:37,260 --> 00:13:39,270 Więc niektóre inne polecenia. 267 00:13:39,270 --> 00:13:41,323 Och, w tym momencie pytania? 268 00:13:41,323 --> 00:13:41,746 Tak. 269 00:13:41,746 --> 00:13:45,914 >> GŁOŚNIK 3: Po wykonaniu polecenia ls, , co jest kropka, kropka? 270 00:13:45,914 --> 00:13:46,870 >> ROB: Och. 271 00:13:46,870 --> 00:13:48,780 Więc to jest to, co mówi. 272 00:13:48,780 --> 00:13:50,890 To samo, gdy Może lubię cd, kropka, kropka. 273 00:13:50,890 --> 00:13:56,790 Więc technicznie, kropka i kropka, kropka Pliki, które istnieją w każdym pojedynczym 274 00:13:56,790 --> 00:14:03,620 Katalog, w którym odnosi się plik dot do bieżącego katalogu. 275 00:14:03,620 --> 00:14:06,930 Więc jeśli cd, kropka, mam zamiar na pobyt w katalogu. 276 00:14:06,930 --> 00:14:10,870 I kropka, kropka odnosi się zawsze do poprzedni katalog o jeden poziom w górę. 277 00:14:10,870 --> 00:14:18,200 Więc jeśli pójdę do dzienników i LS, kreska, inni, Zobaczę, kropka, kropka. cd do kropki, kropka 278 00:14:18,200 --> 00:14:20,390 doprowadza mnie do poprzedniego katalogu. 279 00:14:20,390 --> 00:14:24,530 280 00:14:24,530 --> 00:14:25,780 Tak. 281 00:14:25,780 --> 00:14:27,160 282 00:14:27,160 --> 00:14:28,110 OK. 283 00:14:28,110 --> 00:14:33,070 >> Więc kolejny bardzo ważne Polecenie rm. 284 00:14:33,070 --> 00:14:35,650 Więc to, co zamierzamy użyć do usunięcia. 285 00:14:35,650 --> 00:14:38,100 I pozwól mi faktycznie inny Komenda pierwszy. 286 00:14:38,100 --> 00:14:39,610 Tak mkdir. 287 00:14:39,610 --> 00:14:42,770 Mkdir jest to, jak można tworzenie katalogów. 288 00:14:42,770 --> 00:14:47,530 A ja utworzyć katalog tymczasowy i przejdź do tego katalogu tymczasowego. 289 00:14:47,530 --> 00:14:49,590 I zgodnie z oczekiwaniami, to jest puste. 290 00:14:49,590 --> 00:14:53,680 Ale jeśli ls I, kreska,, mam jeszcze kropkę i kropka, kropka, kropka, ponieważ odnosi się do 291 00:14:53,680 --> 00:14:54,480 aktualny katalog. 292 00:14:54,480 --> 00:14:56,170 I kropka, kropka odnosi się do poprzedni katalog. 293 00:14:56,170 --> 00:14:58,700 A ci, zawsze będzie istnieć, bez względu Katalog jesteś w. 294 00:14:58,700 --> 00:15:01,910 295 00:15:01,910 --> 00:15:09,010 >> I to jest zupełnie niepotrzebne polecenie, ale dotyk. 296 00:15:09,010 --> 00:15:11,880 Ja tylko go używać, ponieważ jest to łatwy sposób na tworzenie plików. 297 00:15:11,880 --> 00:15:16,180 Tak dotykać, dotknąć b, c jest tylko dotknąć zamierza utworzyć trzy pliki o nazwie, 298 00:15:16,180 --> 00:15:17,845 b i c, które są całkowicie pusty. 299 00:15:17,845 --> 00:15:20,450 300 00:15:20,450 --> 00:15:24,980 Więc punkt mnie w tworzeniu tych Pierwsze miejsce jest po prostu tak, że RM jest 301 00:15:24,980 --> 00:15:26,250 jak możemy je usunąć. 302 00:15:26,250 --> 00:15:27,850 Więc rm,. 303 00:15:27,850 --> 00:15:30,960 To się mnie zapytać, usuń regularne pusty plik? 304 00:15:30,960 --> 00:15:33,170 I wtedy powiem Tak. 305 00:15:33,170 --> 00:15:39,090 >> Więc jeśli wiem na pewno, że chcę usunąć ten plik bez konieczności być 306 00:15:39,090 --> 00:15:44,500 monit, usuń regularne pusty plik?, następnie rm, kreska, f będzie 307 00:15:44,500 --> 00:15:48,230 Zaznacz, że mówi, nie na siłę usuń nawet skłoniło mnie, oh, jesteś 308 00:15:48,230 --> 00:15:49,710 na pewno chcesz usunąć plik? 309 00:15:49,710 --> 00:15:50,810 Tak, jestem pewien. 310 00:15:50,810 --> 00:15:56,050 Więc rm, kreska, fb będzie tylko zrobić bez pytania. 311 00:15:56,050 --> 00:15:57,950 >> Więc zróbmy jeszcze kilka katalogów. 312 00:15:57,950 --> 00:16:03,670 mkdir, tmp2, cd, tmp2, dotknij, dotknij b. 313 00:16:03,670 --> 00:16:04,300 OK. 314 00:16:04,300 --> 00:16:08,180 Więc teraz chcę usunąć tmp2 w katalogu. 315 00:16:08,180 --> 00:16:10,316 Więc rm tmp2. 316 00:16:10,316 --> 00:16:12,920 Nie można usunąć tmp2, jest to katalog. 317 00:16:12,920 --> 00:16:21,370 Więc problem jest to, że RM nie natychmiast działa na katalogach. 318 00:16:21,370 --> 00:16:26,530 Jest przeznaczona wyłącznie dla plików takich jak plików bez katalogów. 319 00:16:26,530 --> 00:16:30,800 >> A więc, co możemy zrobić tutaj jest rm, kreska, r. 320 00:16:30,800 --> 00:16:35,160 Że oznacza rekursywnie, co może jeszcze nic nie znaczy dla ciebie. 321 00:16:35,160 --> 00:16:38,280 Ale kiedy się do rekurencji, będzie to oznaczać więcej. 322 00:16:38,280 --> 00:16:43,540 Więc rm, kreska, r, tmp2 będzie rekursywnie przejść do tego katalogu. 323 00:16:43,540 --> 00:16:45,540 Więc zejść do tmp2 katalogu? 324 00:16:45,540 --> 00:16:47,330 Tak, idziemy do tego. 325 00:16:47,330 --> 00:16:49,360 Czy chcemy, aby usunąć tmp2 /? 326 00:16:49,360 --> 00:16:49,745 Tak. 327 00:16:49,745 --> 00:16:51,830 Czy chcemy, aby usunąć tmp2 / b? 328 00:16:51,830 --> 00:16:52,840 Tak. 329 00:16:52,840 --> 00:16:55,170 Teraz chcemy, aby usunąć tmp2 katalog? 330 00:16:55,170 --> 00:16:56,040 Tak. 331 00:16:56,040 --> 00:16:58,410 A więc teraz katalog i wszystko w środku 332 00:16:58,410 --> 00:16:59,660 z została usunięta. 333 00:16:59,660 --> 00:17:02,850 334 00:17:02,850 --> 00:17:07,250 >> Jest technicznie polecenie rmdir które można użyć do usunięcia 335 00:17:07,250 --> 00:17:11,670 katalogach, ale to działa tylko na pustych katalogów, w każdym razie. 336 00:17:11,670 --> 00:17:14,109 I zobaczyć, że, po prostu ponownie wykonać mkdir, tmp2. 337 00:17:14,109 --> 00:17:15,940 Tmp2, dotknąć. 338 00:17:15,940 --> 00:17:16,800 OK. 339 00:17:16,800 --> 00:17:22,770 Więc jeśli próbuję usunąć dirtmp2, to będzie powiedzieć, katalog nie jest pusty. 340 00:17:22,770 --> 00:17:29,540 Więc prawie nigdy nie używam usuń Polecenie dir tak, ponieważ rm, kreska, 341 00:17:29,540 --> 00:17:35,140 r. będzie działać na pustych katalogów i nie są puste. 342 00:17:35,140 --> 00:17:37,760 >> A także, jeśli nie chcę mieć do przejść przez cały ten proces 343 00:17:37,760 --> 00:17:40,720 schodząc do katalogu i usunięcie każdego pliku, rm, 344 00:17:40,720 --> 00:17:44,190 kreska, rf, tmp2. 345 00:17:44,190 --> 00:17:45,670 A teraz go nie ma. 346 00:17:45,670 --> 00:17:51,220 >> Coś uważać o jest rm, kreska, rf. 347 00:17:51,220 --> 00:17:53,660 I to mnie przeraża nawet wpisz go, bo jeśli przypadkowo 348 00:17:53,660 --> 00:17:55,090 naciśnij Enter lub coś. 349 00:17:55,090 --> 00:18:02,735 Więc rm, kreska, rf, tyldy będzie, bez skłoniło mnie, nie pojawia się f 350 00:18:02,735 --> 00:18:05,670 mnie, to automatycznie usunąć mój dom i cały katalog 351 00:18:05,670 --> 00:18:06,780 wszystko w nim. 352 00:18:06,780 --> 00:18:11,460 Więc można pomyśleć, że jest głupie. 353 00:18:11,460 --> 00:18:12,830 I dobrze, że jest. 354 00:18:12,830 --> 00:18:18,600 >> Ale może się zdarzyć bardzo łatwo wypadek gdyby, powiedzmy, chciałem usunąć 355 00:18:18,600 --> 00:18:21,640 moja ukośnik, katalog vhosta. 356 00:18:21,640 --> 00:18:26,610 I tak na szybkiego pisania, Przypadkowo to zrobić. 357 00:18:26,610 --> 00:18:31,880 Że usunie rekurencyjnie zarówno moja katalog domowy oraz katalog vhosta 358 00:18:31,880 --> 00:18:35,450 w tym konkretnym katalogu, który właśnie dzieje się w tej chwili nie istnieje. 359 00:18:35,450 --> 00:18:39,520 Ale to jeszcze usunąć cały mój katalog domowy. 360 00:18:39,520 --> 00:18:43,090 Co najmniej przez nie mających f, to poprosi mnie pierwszy. 361 00:18:43,090 --> 00:18:45,670 I byłbym jak, oh, nie, Nie chcę, aby to zrobić. 362 00:18:45,670 --> 00:18:50,570 Ale ludzie, slash, w tym mi stają się w 363 00:18:50,570 --> 00:18:53,090 zwyczaj zawsze rf-Ing. 364 00:18:53,090 --> 00:18:58,713 Nawet zwykłe pliki, które mogą po prostu RM, c, staram się po prostu rm, kreska, rf, c. 365 00:18:58,713 --> 00:19:01,330 Wystarczy być ostrożnym, gdy jesteś rf-ing. 366 00:19:01,330 --> 00:19:03,160 >> GŁOŚNIK 4: Co oznacza C zrobić? 367 00:19:03,160 --> 00:19:11,570 >> ROB: C Mówię o tym pliku C w tym katalogu, że rm, c. 368 00:19:11,570 --> 00:19:15,730 >> JOSEPH: I bardziej niebezpiecznie, jeśli używasz gwiazda, to odnosi się do wszystkiego, co w 369 00:19:15,730 --> 00:19:16,450 katalog. 370 00:19:16,450 --> 00:19:20,040 Więc to, co często mają tendencję do zrobienia jest będę przejdź do katalogu i chcę 371 00:19:20,040 --> 00:19:21,510 usuń wszystkie pliki tam. 372 00:19:21,510 --> 00:19:23,640 Więc rm, kreska, rf, gwiazdki. 373 00:19:23,640 --> 00:19:25,700 >> ROB: Tak. 374 00:19:25,700 --> 00:19:26,780 Rm, kreska, rf, gwiazdki. 375 00:19:26,780 --> 00:19:29,530 >> JOSEPH: A jeśli nie jesteś ostrożny co masz w katalogu - 376 00:19:29,530 --> 00:19:33,340 I nie był w temp, ale byłem przypadkowo w moim katalogu domowym, 377 00:19:33,340 --> 00:19:35,450 to ja usunąć wszystko w moim katalogu domowym. 378 00:19:35,450 --> 00:19:39,095 A ja naprawdę zrobiłem przed i Myślę, że zrobiłeś to wcześniej lub 379 00:19:39,095 --> 00:19:40,640 Jay zrobił, że przed. 380 00:19:40,640 --> 00:19:42,480 >> ROB: Mam przypadkowo usunięte - 381 00:19:42,480 --> 00:19:44,480 więc zignorować polecenia na trochę. 382 00:19:44,480 --> 00:19:45,800 >> JOSEPH: Nie zabawa. 383 00:19:45,800 --> 00:19:52,650 >> ROB: Tak w katalogu bin slash jest kilka plików binarnych, w których nie będzie 384 00:19:52,650 --> 00:19:54,840 znać te, jak brzękiem. 385 00:19:54,840 --> 00:20:00,740 Cóż, brzęk iw zasadzie wszystkie te rzeczy, które używam na polecenie 386 00:20:00,740 --> 00:20:02,060 Linia jest w tym ukośnik katalogu bin. 387 00:20:02,060 --> 00:20:03,090 >> JOSEPH: Podobnie jak ls jest tutaj. 388 00:20:03,090 --> 00:20:06,285 >> ROB: Tak kropka, slash, ls będzie listy tego katalogu. 389 00:20:06,285 --> 00:20:08,120 >> JOSEPH: Rm jest również w tym katalogu. 390 00:20:08,120 --> 00:20:12,770 >> ROB: I przypadkowo RM, bin rf-ED, który usuwa wszelkie polecenia mogłem 391 00:20:12,770 --> 00:20:14,380 ewentualnie kiedykolwiek chcesz. 392 00:20:14,380 --> 00:20:18,085 Które potem po prostu zainstaluj nowego urządzenia w tym momencie. 393 00:20:18,085 --> 00:20:20,170 >> JOSEPH: Więc być bardzo ostrożnym przy Użycie tego polecenia. 394 00:20:20,170 --> 00:20:21,120 >> PUBLICZNOŚCI: [niesłyszalne]? 395 00:20:21,120 --> 00:20:22,640 >> ROB: Tak. 396 00:20:22,640 --> 00:20:24,135 To też zły nawyk, aby dostać się. 397 00:20:24,135 --> 00:20:27,920 398 00:20:27,920 --> 00:20:30,170 Jeśli zauważysz, że jestem teraz - 399 00:20:30,170 --> 00:20:33,580 Cóż, nie można zauważyć, ale mój zoom-in Może. 400 00:20:33,580 --> 00:20:35,360 Więc jestem teraz root @ urządzenie. 401 00:20:35,360 --> 00:20:39,790 Więc jharvard jest łatwy chcemy Ci zawsze pomocą. 402 00:20:39,790 --> 00:20:43,820 Root jest użytkownik, który ma uprawnienia zrobić absolutnie nic. 403 00:20:43,820 --> 00:20:50,260 >> Więc zauważyć, kiedy jestem jharvard, gdy próbuję cd - 404 00:20:50,260 --> 00:20:52,461 co to jest katalog, który? 405 00:20:52,461 --> 00:20:53,980 Oh, root jest dobry przykład. 406 00:20:53,980 --> 00:20:54,950 Więc cd, korzeń. 407 00:20:54,950 --> 00:20:56,030 Permission denied. 408 00:20:56,030 --> 00:21:00,060 Ponieważ jeśli spojrzymy na szczegóły - 409 00:21:00,060 --> 00:21:02,410 i znowu, nie musisz się całkowicie rozumiem. 410 00:21:02,410 --> 00:21:09,210 Ale te trzy kreski mówią Nie pozwól, że każdy inny 411 00:21:09,210 --> 00:21:11,120 Użytkownik w tym katalogu. 412 00:21:11,120 --> 00:21:14,540 I stanie się katalog być własnością użytkownika root. 413 00:21:14,540 --> 00:21:20,310 >> Tak więc fakt, że jestem jharvard i nie , który nie jest dopuszczony do korzenia 414 00:21:20,310 --> 00:21:23,490 ten katalog, to oznacza, że ​​jestem zamierza uzyskać zezwolenie odmawia, kiedy 415 00:21:23,490 --> 00:21:25,160 spróbuj cd do niego. 416 00:21:25,160 --> 00:21:31,370 Więc kiedy jestem korzeń, mam uprawnienia do zrobić absolutnie wszystko, łącznie 417 00:21:31,370 --> 00:21:34,660 usunąć ważne pliki do urządzenia i 418 00:21:34,660 --> 00:21:36,640 zniszczyć całą rzecz. 419 00:21:36,640 --> 00:21:41,240 >> Więc jest to zły nawyk, aby dostać się do po prostu wędrówki wokół 420 00:21:41,240 --> 00:21:43,650 system operacyjny jako root. 421 00:21:43,650 --> 00:21:46,520 Ja robię to tak. 422 00:21:46,520 --> 00:21:48,710 Pytania? 423 00:21:48,710 --> 00:21:52,230 A ja wyjść korzeń, pobyt w jharvard. 424 00:21:52,230 --> 00:21:54,510 OK. 425 00:21:54,510 --> 00:21:55,820 >> Bardziej odpowiednie polecenia. 426 00:21:55,820 --> 00:22:03,975 Tak więc wracając do naszego temp, Polecenie mv oznacza ruch. 427 00:22:03,975 --> 00:22:05,450 Można przenieść. 428 00:22:05,450 --> 00:22:07,610 Teraz chcemy nazwać b, tak teraz nazywa się b. 429 00:22:07,610 --> 00:22:10,650 A może chcemy przenieść b do jednego katalogu. 430 00:22:10,650 --> 00:22:12,730 Więc teraz jest pusty, ten katalog. 431 00:22:12,730 --> 00:22:15,410 Wrócę do mojego katalogu domowego, a możemy zobaczyć, że b jest tutaj, gdyż 432 00:22:15,410 --> 00:22:19,230 katalog domowy był jeden katalog w górę od katalog, który b było w. 433 00:22:19,230 --> 00:22:24,710 434 00:22:24,710 --> 00:22:26,580 >> Jest też cp. 435 00:22:26,580 --> 00:22:33,210 Więc cp jest skopiować super-punkt, kropka, tekst. 436 00:22:33,210 --> 00:22:35,750 Mogę nazwać to s, kropka, tekst. 437 00:22:35,750 --> 00:22:39,780 Teraz mamy zarówno super-punkt, kropka, tekst oraz s, kropka, tekst. 438 00:22:39,780 --> 00:22:41,340 Działa to także w katalogach. 439 00:22:41,340 --> 00:22:44,040 440 00:22:44,040 --> 00:22:46,560 I rf-ED pojedynczy plik. 441 00:22:46,560 --> 00:22:48,200 Więc cp - 442 00:22:48,200 --> 00:22:51,710 Cóż, najpierw spróbujmy cp, TMP, tmp2. 443 00:22:51,710 --> 00:22:53,220 Więc pomijając tmp katalogów. 444 00:22:53,220 --> 00:22:57,440 Tak podobne do RM, domyślne zachowanie to nie działa na katalogach. 445 00:22:57,440 --> 00:23:01,570 >> I znów, podobnie jak RM, domyślnie zachowanie - dobrze, że do pracy się 446 00:23:01,570 --> 00:23:04,230 z katalogów jest, kreska-r dala. 447 00:23:04,230 --> 00:23:09,240 Więc skopiować rekurencyjnie temp katalog do tmp2. 448 00:23:09,240 --> 00:23:13,700 A więc teraz mamy zarówno tmp i tmp2, i że nie jest to pomocne, ponieważ tmp 449 00:23:13,700 --> 00:23:16,814 był pusty na pierwszym miejscu. 450 00:23:16,814 --> 00:23:18,660 Tmp2. 451 00:23:18,660 --> 00:23:22,680 >> Teraz skopiuj tmp do tmp2. 452 00:23:22,680 --> 00:23:27,900 I widzimy, że tmp2 ma również plik , ponieważ katalog i 453 00:23:27,900 --> 00:23:32,220 że wszystko wewnątrz Katalog został skopiowany. 454 00:23:32,220 --> 00:23:36,000 I to może być nieco pomocny jeśli, powiedzmy, że pracujesz 455 00:23:36,000 --> 00:23:38,860 w sprawie problemu ustawić jeden - 456 00:23:38,860 --> 00:23:41,320 lub faktycznie, później zestawy zadań są jeszcze ważniejsze, ponieważ nie 457 00:23:41,320 --> 00:23:43,660 będzie cała masa plików i rzeczy. 458 00:23:43,660 --> 00:23:47,010 >> Ale po prostu chcesz, na ułamek po drugie, jesteś jak, dobrze, jestem 459 00:23:47,010 --> 00:23:50,210 zamiar spróbować czegoś innego. 460 00:23:50,210 --> 00:23:57,860 Pozwól mi po prostu skopiować cały mój pset1 katalog w kopii zapasowej pset1 tak, że jeśli 461 00:23:57,860 --> 00:24:01,490 I skończyć wkręcania rzeczy, mogę wrócić do mojego katalogu backup. 462 00:24:01,490 --> 00:24:07,340 Istnieją bardziej odpowiednie sposoby wersjami kopii zapasowej kodu, ale 463 00:24:07,340 --> 00:24:10,610 to jest zawsze szybki sposób po prostu zrobić się, że masz kopię czegoś 464 00:24:10,610 --> 00:24:11,860 że masz zamiar zmienić. 465 00:24:11,860 --> 00:24:16,974 466 00:24:16,974 --> 00:24:27,090 >> Więc echo jest także polecenie, że jednorazowa rodzaj sillily po prostu wydrukować na 467 00:24:27,090 --> 00:24:31,540 linii poleceń, co dokładnie chciałeś echo. 468 00:24:31,540 --> 00:24:32,680 Więc echo hi. 469 00:24:32,680 --> 00:24:35,420 Będziemy po prostu wydrukować hi. 470 00:24:35,420 --> 00:24:38,030 Echo hello world. 471 00:24:38,030 --> 00:24:39,800 Będziemy drukować komentarzy świat. 472 00:24:39,800 --> 00:24:44,350 Który przychodzi do użytku po uruchomić połączenie poleceń. 473 00:24:44,350 --> 00:24:48,300 >> I znowu, nie oczekuję, że całkowicie rozumiem jeszcze, ale to 474 00:24:48,300 --> 00:24:49,910 coś zobaczyć. 475 00:24:49,910 --> 00:24:52,470 A potem, jeśli jesteś Googling przykłady czy zdajesz sobie sprawę, chcesz zrobić 476 00:24:52,470 --> 00:24:55,030 coś, może to być pomocne. 477 00:24:55,030 --> 00:24:59,020 Więc, na przykład, więc ls, kreska, l. 478 00:24:59,020 --> 00:25:01,160 Więc widzę wyjście z ls, kreska, l. 479 00:25:01,160 --> 00:25:06,560 A ja mówię, OK, chcę zapisać, że w pliku. 480 00:25:06,560 --> 00:25:11,620 Wszystkie tego wyjścia tutaj, chcę umieścić w osobnym pliku. 481 00:25:11,620 --> 00:25:16,080 >> Więc to trochę większy niż symbol jest to, co mamy zamiar wywołać. 482 00:25:16,080 --> 00:25:18,570 Jesteśmy przekierowanie wyprowadzane do pliku. 483 00:25:18,570 --> 00:25:21,680 Nazwijmy ten bla pliku, ponieważ jest to co staram się zawsze nazwać. 484 00:25:21,680 --> 00:25:26,430 Teraz widzimy, mamy plik bla tutaj. 485 00:25:26,430 --> 00:25:30,270 A jeśli go otworzyć, to widzę, że jest dokładnie wynik polecenia 486 00:25:30,270 --> 00:25:31,990 że po prostu uciekł. 487 00:25:31,990 --> 00:25:36,020 I podobnie, można - 488 00:25:36,020 --> 00:25:41,260 gdyby to było wyprowadzane do pliku, ten jest uzyskać dane z pliku. 489 00:25:41,260 --> 00:25:45,790 490 00:25:45,790 --> 00:25:47,050 Co to jest polecenie, że - 491 00:25:47,050 --> 00:25:49,620 >> JOSEPH: Myślę, że można użyć mniej lub więcej, prawdopodobnie. 492 00:25:49,620 --> 00:25:53,031 >> ROB: Ale co po prostu mniej bla? 493 00:25:53,031 --> 00:25:53,930 Nie wiem. 494 00:25:53,930 --> 00:25:57,870 Jeśli przyjdziesz do tego scenariusza, jak jest psets że jest to przydatne dla. 495 00:25:57,870 --> 00:25:59,950 >> JOSEPH: Możesz rury go do echa. 496 00:25:59,950 --> 00:26:02,920 Rura plik do echo, żeby go zobaczyć. 497 00:26:02,920 --> 00:26:04,060 >> ROB: To jest rura. 498 00:26:04,060 --> 00:26:04,860 >> JOSEPH: Przepraszam. 499 00:26:04,860 --> 00:26:06,190 >> ROB: W porządku. 500 00:26:06,190 --> 00:26:12,720 Więc to jest wyjście do pliku. 501 00:26:12,720 --> 00:26:18,700 To uzyskać tekst z pliku i oddać go do programu. 502 00:26:18,700 --> 00:26:20,560 I będzie można również zobaczyć tego faceta. 503 00:26:20,560 --> 00:26:24,410 Więc jest to rodzaj robi zarówno na raz. 504 00:26:24,410 --> 00:26:28,310 I rzeczywiście, ja wprowadzić dwa nowe Polecenia tylko do korzystania z niego. 505 00:26:28,310 --> 00:26:33,060 >> Historia jest przydatna komenda, która jest po prostu zamiar wydrukować listę 506 00:26:33,060 --> 00:26:34,940 cokolwiek kiedykolwiek uruchomić wiersz polecenia. 507 00:26:34,940 --> 00:26:38,290 Widzimy więc tutaj, że mam wszystko prowadzi cały ten czas. 508 00:26:38,290 --> 00:26:39,540 Dużo ls-tych. 509 00:26:39,540 --> 00:26:41,570 510 00:26:41,570 --> 00:26:48,470 >> I kolejna przydatna komenda grep, że Jego celem jest poszukiwanie przez 511 00:26:48,470 --> 00:26:52,060 tekst szukają wzorów, dobrze, patrząc na cokolwiek 512 00:26:52,060 --> 00:26:53,310 chcesz go szukać. 513 00:26:53,310 --> 00:26:59,770 I tak tu jest poręczny wykorzystanie, powiedzmy chcemy złapać historię. 514 00:26:59,770 --> 00:27:03,860 I chcę szukać poleceń gdzie - co jest 515 00:27:03,860 --> 00:27:05,000 użyteczna szukać? 516 00:27:05,000 --> 00:27:06,898 >> JOSEPH: [niesłyszalne]? 517 00:27:06,898 --> 00:27:09,710 >> ROB: Albo niech po prostu patrzeć na wszystko dotyka, bez względu na przyczynę. 518 00:27:09,710 --> 00:27:13,850 Tak to jest, co to będzie wyglądać. 519 00:27:13,850 --> 00:27:15,560 I nie trzeba, aby całkowicie zrozumieć. 520 00:27:15,560 --> 00:27:20,570 Ale pomysł jest tutaj historia daje samo wyjście to miało tutaj 521 00:27:20,570 --> 00:27:25,030 gdzie to drukując całą historia wszystkiego, jaki kiedykolwiek pracował. 522 00:27:25,030 --> 00:27:27,030 Jesteśmy wtedy mimochodem, że - 523 00:27:27,030 --> 00:27:30,230 więc zamiast wysyłać je na ekranie, chcemy przekazać, że do 524 00:27:30,230 --> 00:27:34,640 Polecenie grep, który szuka wszystkie instancje w dotyku słowo. 525 00:27:34,640 --> 00:27:40,280 >> I tak za pomocą tej kombinacji Historia narzędzia i grep, widzę, OK, 526 00:27:40,280 --> 00:27:44,820 oto wszystkie polecenia Mam kiedykolwiek uruchomić, a tu nieco popularnym. 527 00:27:44,820 --> 00:27:45,510 Jesteśmy na dole. 528 00:27:45,510 --> 00:27:47,930 I to też daje mi polecenie Właśnie dostał, że miał 529 00:27:47,930 --> 00:27:51,240 dotykowy słowo w nim. 530 00:27:51,240 --> 00:27:58,500 Ale rura jest całkiem przydatna rzecz do łączenia wielu programów. 531 00:27:58,500 --> 00:28:04,670 I rzeczywiście, jest to skrót do let Historia mnie wyjście do pliku bla, i 532 00:28:04,670 --> 00:28:10,190 pozwól mi grep plik za pomocą bla jak to, co chcę patrzeć na. 533 00:28:10,190 --> 00:28:13,460 Więc rura jest tylko skrót dla tych dwóch poleceń. 534 00:28:13,460 --> 00:28:13,950 Tak. 535 00:28:13,950 --> 00:28:15,306 >> GŁOŚNIK 4: [niesłyszalne]? 536 00:28:15,306 --> 00:28:16,556 >> ROB: Tak. 537 00:28:16,556 --> 00:28:20,142 538 00:28:20,142 --> 00:28:21,110 Co to jest - 539 00:28:21,110 --> 00:28:21,858 Och. 540 00:28:21,858 --> 00:28:24,820 Sprawdźmy. 541 00:28:24,820 --> 00:28:29,170 Tak, kot, pies, ryby. 542 00:28:29,170 --> 00:28:33,770 Więc chcę grep. 543 00:28:33,770 --> 00:28:37,680 Dash, r, ponownie będzie rekurencyjnie, więc chcę schodzić w dół 544 00:28:37,680 --> 00:28:38,870 wszystkie katalogi. 545 00:28:38,870 --> 00:28:43,210 Chcę rekursywnie grep dla wszystkich - i pozwól mi tymczasowo uzyskać 546 00:28:43,210 --> 00:28:44,460 to z drogi. 547 00:28:44,460 --> 00:28:48,650 548 00:28:48,650 --> 00:28:50,740 Ignoruj ​​mnie. 549 00:28:50,740 --> 00:28:51,360 OK. 550 00:28:51,360 --> 00:28:56,740 >> Tak, chcę, aby tymczasowo grep dla wszystkie przypadki słowo ryb. 551 00:28:56,740 --> 00:29:00,510 , A więc o to, co robię jest grepping rekurencyjnie słownego ryb. 552 00:29:00,510 --> 00:29:05,410 I gwiazda oznacza ponad wszystkie te Pliki w tym katalogu. 553 00:29:05,410 --> 00:29:08,930 I tak dał mi uprawnien, dlatego, że nie może przeczytać, że 554 00:29:08,930 --> 00:29:10,060 dany plik. 555 00:29:10,060 --> 00:29:14,040 Ale okazało się ryby w pliku test. 556 00:29:14,040 --> 00:29:18,450 >> Mogę też powiedzieć, zwłaszcza, że ​​tylko chcę patrzeć w bla pliku, w 557 00:29:18,450 --> 00:29:19,580 którym to przypadku nie znajdziesz nic. 558 00:29:19,580 --> 00:29:20,990 Chcę tylko spojrzeć w pliku, testu. 559 00:29:20,990 --> 00:29:22,240 Znajdzie rybę. 560 00:29:22,240 --> 00:29:25,980 561 00:29:25,980 --> 00:29:29,260 To jest bardzo przydatne polecenia wiedzieć w ogóle. 562 00:29:29,260 --> 00:29:31,640 Istnieje kilka alternatywnych do grep , które mają być bardziej 563 00:29:31,640 --> 00:29:36,780 programista przyjazny, ale staram do nadal polegać na grep. 564 00:29:36,780 --> 00:29:38,030 Pytania? 565 00:29:38,030 --> 00:29:39,965 566 00:29:39,965 --> 00:29:40,919 OK. 567 00:29:40,919 --> 00:29:42,520 >> Czy są inne polecenia? 568 00:29:42,520 --> 00:29:45,270 Och. 569 00:29:45,270 --> 00:29:48,370 Tylko jedna jednorazowa, że ​​zawsze znaleźć do zabawy jest cal. 570 00:29:48,370 --> 00:29:55,610 Więc zauważyć, kiedy jestem w tym pięknym tryb pełnoekranowy, nie mam jak góry 571 00:29:55,610 --> 00:29:56,720 na pasku narzędzi lub coś. 572 00:29:56,720 --> 00:29:59,530 So Cal po prostu daje mi ładny, mały Kalendarz, który ma rację 573 00:29:59,530 --> 00:30:02,380 teraz odcięty, zakładam. 574 00:30:02,380 --> 00:30:04,770 Ale ładny, mały polecenia. 575 00:30:04,770 --> 00:30:06,540 >> JOSEPH: To [niesłyszalne]. 576 00:30:06,540 --> 00:30:09,170 Inne polecenia, które mogą mieć widać m.in. szczęk i zrobić. 577 00:30:09,170 --> 00:30:11,180 Pójdziemy nad nimi w bardziej szczegółowo później. 578 00:30:11,180 --> 00:30:13,400 Ale jeśli już pracuje nad PSET, powinno być 579 00:30:13,400 --> 00:30:15,160 zna tych. 580 00:30:15,160 --> 00:30:16,640 >> ROB: W porządku. 581 00:30:16,640 --> 00:30:18,520 Pytania na linii rzeczy polecenia? 582 00:30:18,520 --> 00:30:22,450 583 00:30:22,450 --> 00:30:23,260 Dobrze. 584 00:30:23,260 --> 00:30:27,416 Więc przejdźmy do niektórych Rzeczy związane z C-. 585 00:30:27,416 --> 00:30:28,666 Zmienne matematyki. 586 00:30:28,666 --> 00:30:39,078 587 00:30:39,078 --> 00:30:40,060 OK. 588 00:30:40,060 --> 00:30:45,230 Tak jak mieliśmy matematyki w Scratch, można również użyć matematyki w C 589 00:30:45,230 --> 00:30:49,270 >> Zanim przejdziemy do tego w całości, więc zmienne. 590 00:30:49,270 --> 00:30:53,920 Pamiętaj, że w każdym przypadku można zadeklarować Zmienna jak int x lub y, ty pływaka 591 00:30:53,920 --> 00:30:56,710 trzeba dać go wpisać przed nazwa zmiennej. 592 00:30:56,710 --> 00:31:03,020 Więc typy, które widzieliśmy do tej pory są int, float, double, long long, które 593 00:31:03,020 --> 00:31:06,150 nie wiem, czy rzeczywiście mamy zauważyć, że do tej pory. 594 00:31:06,150 --> 00:31:07,700 >> Istnieje kilka innych. 595 00:31:07,700 --> 00:31:09,990 Musimy zobaczyć, char. 596 00:31:09,990 --> 00:31:13,920 Jest krótki, co jest jak jest Przeciwieństwem długo długo, gdzie jest to 597 00:31:13,920 --> 00:31:16,650 mniejsze niż całkowita. 598 00:31:16,650 --> 00:31:18,580 Widzieliśmy również ciąg. 599 00:31:18,580 --> 00:31:23,070 Tak więc to, co jest szczególnego w ciągu? 600 00:31:23,070 --> 00:31:25,350 Dlatego chciałbym powiedzieć, że to nie całkiem jak wewn? 601 00:31:25,350 --> 00:31:27,030 >> GŁOŚNIK 4: Tak naprawdę nie istnieje. 602 00:31:27,030 --> 00:31:27,990 >> ROB: Tak. 603 00:31:27,990 --> 00:31:31,820 Więc jedynym powodem mamy ciąg Jest tak, ponieważ kiedy robisz 604 00:31:31,820 --> 00:31:33,215 hash, m.in. cs50.h. 605 00:31:33,215 --> 00:31:36,530 606 00:31:36,530 --> 00:31:42,670 I zobaczymy przykłady to później - oh, że nie zajmuje się tak dobrze - 607 00:31:42,670 --> 00:31:46,160 gdzie cs50.h robi coś wzdłuż linii typu 608 00:31:46,160 --> 00:31:49,230 Def, gwiazda char, string. 609 00:31:49,230 --> 00:31:53,280 >> I tak, że mówi, że nawet nie wiesz co jest jeszcze gwiazda char. 610 00:31:53,280 --> 00:31:56,770 Ale to jest mówiąc chcemy ciąg. 611 00:31:56,770 --> 00:32:00,250 Każde miejsce, już przy użyciu ciąg, można można było za pomocą gwiazdę char, 612 00:32:00,250 --> 00:32:04,670 które w rzeczywistości jest typu, który istnieje w języku C. 613 00:32:04,670 --> 00:32:06,680 Ale my się do tego. 614 00:32:06,680 --> 00:32:07,860 Aha, i to idzie z powrotem. 615 00:32:07,860 --> 00:32:10,170 Schludny. 616 00:32:10,170 --> 00:32:15,370 >> Tak samo z bool gdzie prawda i fałsz. 617 00:32:15,370 --> 00:32:22,510 Że nie jest to wbudowane w C typu Zamiast tego, po prostu, to ma 618 00:32:22,510 --> 00:32:23,740 zerowa wartość? 619 00:32:23,740 --> 00:32:26,200 Potem po prostu rozważyć , że jest fałszywe. 620 00:32:26,200 --> 00:32:27,350 To ma wartość - 621 00:32:27,350 --> 00:32:30,530 dobrze, to ma jakikolwiek Wartość, która nie jest zero? 622 00:32:30,530 --> 00:32:32,200 Potem uważamy, że to prawda. 623 00:32:32,200 --> 00:32:35,940 Więc jedno jest prawdziwe, dwóch jest prawdziwe, coś niezerowe, jest prawdą. 624 00:32:35,940 --> 00:32:38,710 625 00:32:38,710 --> 00:32:42,790 Więc to są te. 626 00:32:42,790 --> 00:32:47,624 Pytania dotyczące zmiennych wskazujących i typy zmiennych i to wszystko? 627 00:32:47,624 --> 00:32:48,100 Tak. 628 00:32:48,100 --> 00:32:52,384 >> GŁOŚNIK 4: Na długo długo, w książce, on powiedział, że to musiał być długi long int. 629 00:32:52,384 --> 00:32:54,288 Ale tak długo, długo będzie działać? 630 00:32:54,288 --> 00:32:58,210 631 00:32:58,210 --> 00:33:01,470 >> ROB: Więc te modyfikatory typu. 632 00:33:01,470 --> 00:33:04,170 Tak int x. 633 00:33:04,170 --> 00:33:07,710 Więc możemy powiedzieć, unsigned int x. 634 00:33:07,710 --> 00:33:09,640 Można powiedzieć, short int x. 635 00:33:09,640 --> 00:33:12,570 Można powiedzieć, długo długo int x. 636 00:33:12,570 --> 00:33:17,250 Ale prawie każda z tych rzeczy, po prostu powiedział, int, short int, 637 00:33:17,250 --> 00:33:21,480 long long int, można pozbyć się int i będzie po prostu założyć, 638 00:33:21,480 --> 00:33:22,510 że chodziło o int. 639 00:33:22,510 --> 00:33:26,045 Więc niepodpisane x, co oznacza po prostu - 640 00:33:26,045 --> 00:33:29,400 wiesz, jak zwykle z int, można powiedzieć, x równa negatywny 3? 641 00:33:29,400 --> 00:33:31,636 Z unsigned int, nie możesz. 642 00:33:31,636 --> 00:33:34,480 >> JOSEPH: I znowu, dla kamery, pytanie, jaka jest różnica 643 00:33:34,480 --> 00:33:37,796 między długim long int i tak długo, długo? 644 00:33:37,796 --> 00:33:38,410 >> ROB: Tak. 645 00:33:38,410 --> 00:33:42,850 Więc prawie nigdy nie będę Napisać długo long int. 646 00:33:42,850 --> 00:33:44,100 Będę pisać długo, długo. 647 00:33:44,100 --> 00:33:47,770 648 00:33:47,770 --> 00:33:50,636 >> JOSEPH: Masz pytania? 649 00:33:50,636 --> 00:33:51,886 >> ROB: OK. 650 00:33:51,886 --> 00:33:56,180 651 00:33:56,180 --> 00:34:02,390 Tak głupio trochę przypomnieniem, że to, jak deklarujemy zmienną i zainicjować 652 00:34:02,390 --> 00:34:04,450 zmienna i zadeklarować inny Zmienna i zainicjować 653 00:34:04,450 --> 00:34:05,870 to wszystko w jednym kroku. 654 00:34:05,870 --> 00:34:09,370 Więc deklaracja zmiennej i Zmienna nie ma inicjalizacji 655 00:34:09,370 --> 00:34:11,120 do, ale może być w tej samej linii. 656 00:34:11,120 --> 00:34:15,409 657 00:34:15,409 --> 00:34:20,060 >> Więc mamy standardowe operatory matematyczne że masz w zwyczaju - 658 00:34:20,060 --> 00:34:22,199 Plus, minus, dzielenie, razy. 659 00:34:22,199 --> 00:34:24,389 Istnieje również modulo, które zobaczymy. 660 00:34:24,389 --> 00:34:29,060 Nie jest co najmniej C, wbudowane zasilanie 661 00:34:29,060 --> 00:34:31,765 potęgowanie Operator daszek. 662 00:34:31,765 --> 00:34:33,770 Cóż, nie jest operatorem daszek, ale to nie jest moc. 663 00:34:33,770 --> 00:34:34,239 >> JOSEPH: Ale to nie jest potęgowanie, Tak. 664 00:34:34,239 --> 00:34:36,210 >> ROB: Nie należy korzystać z daszka przyjąć, że oznacza to, 665 00:34:36,210 --> 00:34:39,980 jak kwadrat lub cokolwiek. 666 00:34:39,980 --> 00:34:42,289 Więc niektóre rzeczy zachować w nic o podziale. 667 00:34:42,289 --> 00:34:46,282 668 00:34:46,282 --> 00:34:48,880 Stanę. 669 00:34:48,880 --> 00:34:51,315 Tak oświadczył initialize odpowiedź. 670 00:34:51,315 --> 00:34:54,670 Więc mówimy pływaka odpowiedź wynosi 1 podzielone przez 10. 671 00:34:54,670 --> 00:34:57,500 Wydrukuj odpowiedź do dwóch miejsc po przecinku. 672 00:34:57,500 --> 00:35:02,180 >> I to jest coś takiego, że by człowiekowi printf, aby dowiedzieć się, że 673 00:35:02,180 --> 00:35:05,110 Co do cholery ma%, kropka, 2f oznacza? 674 00:35:05,110 --> 00:35:07,930 I to właśnie oznacza, dobrze, ignorując 0.2. 675 00:35:07,930 --> 00:35:10,420 I% f jest co używamy wydrukować się unosić. 676 00:35:10,420 --> 00:35:15,370 0.2 mówi, że druk unosić się do dwóch miejsc po przecinku. 677 00:35:15,370 --> 00:35:19,600 Więc ten program ma błąd, a może widziałem to wcześniej w niektórych 678 00:35:19,600 --> 00:35:20,870 przed oczywiście CS. 679 00:35:20,870 --> 00:35:22,170 Ale co to za błąd? 680 00:35:22,170 --> 00:35:23,050 >> GŁOŚNIK 5: zero. 681 00:35:23,050 --> 00:35:24,130 >> ROB: Tak. 682 00:35:24,130 --> 00:35:29,630 Więc, gdy mówimy, odpowiedź jest równa 1 dzieli się przez 10, chcemy 683 00:35:29,630 --> 00:35:31,610 odpowiedź na 0,1. 684 00:35:31,610 --> 00:35:37,450 Jednak 1 podzielone przez 10; 1 całkowita, 10 jest liczbą całkowitą. 685 00:35:37,450 --> 00:35:41,060 I tak, gdy robimy podzielony przez liczbę całkowitą całkowitą, mamy zamiar wrócić 686 00:35:41,060 --> 00:35:42,190 całkowita. 687 00:35:42,190 --> 00:35:43,660 Więc 1 podzielone przez 10 wynosi 0,1. 688 00:35:43,660 --> 00:35:46,760 >> Ponieważ musi dać nam liczbę całkowitą, to po prostu będzie wyrzucać, że 689 00:35:46,760 --> 00:35:49,410 miejsca po przecinku, a mówią, że Odpowiedź jest 0. 690 00:35:49,410 --> 00:35:55,314 I tak, gdy drukujemy odpowiedzieć tutaj, to będzie drukować 0,00. 691 00:35:55,314 --> 00:35:58,430 >> JOSEPH: I tak jak notatki, faktycznie wyrzuca to, co jest po 692 00:35:58,430 --> 00:35:59,390 przecinka. 693 00:35:59,390 --> 00:36:03,180 Więc jeśli zamiast tego miał 6 podzielone przez 10, można by pomyśleć, że to daje 694 00:36:03,180 --> 00:36:05,200 0,6 i wtedy można zaokrąglić w górę do 1. 695 00:36:05,200 --> 00:36:10,520 Ale rzeczywiście, to, co się dzieje, gdy typ to jest zadania, które spada, co jest 696 00:36:10,520 --> 00:36:11,470 po przecinku. 697 00:36:11,470 --> 00:36:13,020 Tak 0.6 ma się 0. 698 00:36:13,020 --> 00:36:13,370 >> ROB: Tak. 699 00:36:13,370 --> 00:36:15,160 I powiemy TRUNCATE za to. 700 00:36:15,160 --> 00:36:21,760 Jeśli więc rzutować na int, dziesiętnym jest obcięty. 701 00:36:21,760 --> 00:36:23,980 Więc za to naprawić - nie właściwie dwa. 702 00:36:23,980 --> 00:36:27,890 I mam zamiar zrobić to drugie, ponieważ ten jest o wiele łatwiej naprawić. 703 00:36:27,890 --> 00:36:32,670 >> Więc jedna poprawka jest używać pływaków w podziale. 704 00:36:32,670 --> 00:36:34,720 I rzeczywiście, trzeba tylko uczynić z nich pływaka. 705 00:36:34,720 --> 00:36:37,400 Ale to jest tylko nieco jaśniejsze do obu z nich pływa. 706 00:36:37,400 --> 00:36:41,170 Więc 1,0 podzielone przez 10,0 jest dzieląc dwa pływaki. 707 00:36:41,170 --> 00:36:43,970 Więc odpowiedź będzie w końcu jest pływak, i tak będzie 708 00:36:43,970 --> 00:36:48,050 poprawnie wydrukować 0,10 tutaj. 709 00:36:48,050 --> 00:36:52,220 >> Coś, co nie działa tak dobrze, o to jest, dobrze, na pewno, że był łatwy 710 00:36:52,220 --> 00:36:56,240 wystarczy do konwersji 1 do unosić przez co 1,0. 711 00:36:56,240 --> 00:37:02,180 Ale co, jeśli zamiast tego mieliśmy dwie liczby całkowite jak int x = 1 i int y 712 00:37:02,180 --> 00:37:05,660 równa się 10, a następnie chcieliśmy zrobić x podzielona przez y? 713 00:37:05,660 --> 00:37:10,420 Tak więc nie tylko można łatwo zrobić X.0 czy coś. 714 00:37:10,420 --> 00:37:12,790 >> Tak, że jest poprawka do odlewania. 715 00:37:12,790 --> 00:37:19,780 Więc jest sposób odlewania w C do konwersji zmiennej od jednego typu do drugiego. 716 00:37:19,780 --> 00:37:22,320 Tak więc w niniejszym przykładzie 1 jest liczbą całkowitą. 717 00:37:22,320 --> 00:37:27,050 I umieszczając ten pływak przed Opisz nam odlewania 1 do pływaka. 718 00:37:27,050 --> 00:37:30,350 I tak będzie to konwersja 1 do 1,0. 719 00:37:30,350 --> 00:37:33,380 I będzie to konwersja 10 do 10,0. 720 00:37:33,380 --> 00:37:36,790 >> A następnie rzeczy zachowują się podobnie do Poprzednia wersja po prostu pokazał 721 00:37:36,790 --> 00:37:42,190 w którym, zgodnie z oczekiwaniami, mamy 0,10 i będzie to wydrukować, że. 722 00:37:42,190 --> 00:37:44,120 I możemy to zrobić z zmienne, też. 723 00:37:44,120 --> 00:37:47,376 Można więc powiedzieć, pływak x podzielona przez pływaka y. 724 00:37:47,376 --> 00:37:48,626 >> JOSEPH: Masz pytania? 725 00:37:48,626 --> 00:37:54,182 726 00:37:54,182 --> 00:38:00,090 >> ROB: Tak jak w zwykłym matematyki, mamy pierwszeństwo operatora. 727 00:38:00,090 --> 00:38:06,960 Więc w klasie matematycznej, masz większe szanse nazwać to kolejność operacji. 728 00:38:06,960 --> 00:38:09,890 Tutaj jest oficjalny termin pierwszeństwo operatora. 729 00:38:09,890 --> 00:38:15,230 Ale pierwszeństwo operatora, lub najbardziej operatorzy, to jak można oczekiwać. 730 00:38:15,230 --> 00:38:22,660 >> Tak jak w matematyce, jest 2 razy 10 będzie bardziej niż zgrupowane 731 00:38:22,660 --> 00:38:25,410 Ten 10 podzielony przez 2, a potem 2. 732 00:38:25,410 --> 00:38:29,745 Kolejność operacji, to będzie zrobić 2 razy 10, 10 podzielone przez 2, a następnie 733 00:38:29,745 --> 00:38:32,720 będzie to zrobić 20 plus 5 plus 2. 734 00:38:32,720 --> 00:38:37,020 Więc to jest jak się spodziewaliśmy, i można korzystać nawiasów do wyrażeń grupy. 735 00:38:37,020 --> 00:38:41,063 Nie można używać nawiasów kwadratowych do wyrażenia grupy. 736 00:38:41,063 --> 00:38:41,544 Tak? 737 00:38:41,544 --> 00:38:43,468 >> GŁOŚNIK 5: Czy rzeczywiście po prostu wrócić chwilę? 738 00:38:43,468 --> 00:38:47,316 Można oddać int na ciąg? 739 00:38:47,316 --> 00:38:53,330 >> ROB: Tak w C, możesz rzucić wszystko chcesz co chcesz. 740 00:38:53,330 --> 00:38:55,600 To nie znaczy, że to dobra rzecz do zrobienia. 741 00:38:55,600 --> 00:38:59,760 Więc kiedy rzutować na int ciąg, co oznacza, że ​​- 742 00:38:59,760 --> 00:39:03,240 a my się do tego znacznie bardziej dokładnie - 743 00:39:03,240 --> 00:39:03,720 >> JOSEPH: Dużo później. 744 00:39:03,720 --> 00:39:06,840 >> ROB: Nie chciałem mówić znacznie później, więc starałem się zmienić moje zdanie. 745 00:39:06,840 --> 00:39:13,370 Dojdziemy do niego znacznie bardziej dokładnie później, gdy tak naprawdę, gdy masz 746 00:39:13,370 --> 00:39:14,810 Ciąg znaków o zmiennej - 747 00:39:14,810 --> 00:39:17,160 więc ciąg może być dowolnie długo, prawda? 748 00:39:17,160 --> 00:39:21,850 I mówiliśmy, że int jest cztery bajty i długo, długo jest osiem 749 00:39:21,850 --> 00:39:23,620 bajtów i pływak jest cztery bajty. 750 00:39:23,620 --> 00:39:29,520 Więc ciąg, podobnie jak int, tylko ma pewną liczbę bajtów do niego. 751 00:39:29,520 --> 00:39:31,800 I że będą cztery bajty. 752 00:39:31,800 --> 00:39:34,750 >> Ale ciąg może być dość dowolnie długo, prawda? 753 00:39:34,750 --> 00:39:40,190 Więc witaj świecie już, czy to 10 znaków lub cokolwiek, to już 754 00:39:40,190 --> 00:39:42,670 będzie w ciągu 4 bajty Można dopasować do łańcucha. 755 00:39:42,670 --> 00:39:51,140 I tak, jak łańcuchy, że naprawdę działa gdzie są one w pamięci, że ciąg 756 00:39:51,140 --> 00:39:52,380 jest utrzymywana. 757 00:39:52,380 --> 00:39:57,290 >> I tak tutaj, kiedy mówię ciąg x równa Witaj świecie, wewnątrz x jest 758 00:39:57,290 --> 00:40:01,840 tylko, że, och, witaj świecie jest przechowywany w tym szczególnym miejscu w pamięci. 759 00:40:01,840 --> 00:40:07,060 Tak więc, jeśli spróbujemy rzucić liczbę całkowitą do łańcuch, a następnie staramy się zinterpretować 760 00:40:07,060 --> 00:40:10,500 jakiś przypadkowy część pamięci jako ciąg. 761 00:40:10,500 --> 00:40:14,465 I prawie zawsze łamie rzeczy. 762 00:40:14,465 --> 00:40:17,040 >> JOSEPH: Ale jeśli to mylony Ci, będziemy pokrywając je 763 00:40:17,040 --> 00:40:17,550 więcej w głębi później. 764 00:40:17,550 --> 00:40:17,850 >> ROB: Tak. 765 00:40:17,850 --> 00:40:20,540 To gdzie masz zamiar aby dostać się do wskazówek. 766 00:40:20,540 --> 00:40:25,485 A jest istotny fragment dwóch tygodni od tego kursu. 767 00:40:25,485 --> 00:40:28,275 >> GŁOŚNIK 6: Czy to działa jak obiekty w innych językach lub nie bardzo? 768 00:40:28,275 --> 00:40:34,050 >> ROB: Tak w innych językach, obiektów byłaby oznaczona przy użyciu wskaźników. 769 00:40:34,050 --> 00:40:37,070 770 00:40:37,070 --> 00:40:38,793 To nie jest to samo, choć. 771 00:40:38,793 --> 00:40:42,110 772 00:40:42,110 --> 00:40:42,910 Wszelkie myśli? 773 00:40:42,910 --> 00:40:43,760 >> JOSEPH: Nie. 774 00:40:43,760 --> 00:40:44,185 Nie myśli. 775 00:40:44,185 --> 00:40:44,980 >> ROB: OK. 776 00:40:44,980 --> 00:40:46,994 >> JOSEPH: Następny. 777 00:40:46,994 --> 00:40:48,255 >> ROB: Po prostu idź z tym. 778 00:40:48,255 --> 00:40:48,670 Dobrze. 779 00:40:48,670 --> 00:40:51,120 Więc modulo. 780 00:40:51,120 --> 00:40:53,900 Tak jak mamy plus minus, dzielić i mnożyć. 781 00:40:53,900 --> 00:40:56,720 Modulo jest więc może pan Nie widziałem wcześniej. 782 00:40:56,720 --> 00:40:59,540 I po prostu mówi, dać mi pozostała. 783 00:40:59,540 --> 00:41:02,850 Tak 55% 10. 784 00:41:02,850 --> 00:41:06,840 Pozostała część robi 55 podzielone o 10 będzie 5. 785 00:41:06,840 --> 00:41:09,630 Tak 55% 10 jest 5. 786 00:41:09,630 --> 00:41:12,260 A 3% 5 byłoby 3. 787 00:41:12,260 --> 00:41:14,180 8% 8 wynosi 0. 788 00:41:14,180 --> 00:41:15,903 16% 15 wynosi 1. 789 00:41:15,903 --> 00:41:20,670 >> JOSEPH: Jedną z rzeczy, aby pamiętać o tym, też jest to może nie działać zgodnie z oczekiwaniami 790 00:41:20,670 --> 00:41:22,700 jeśli używasz liczbę ujemną. 791 00:41:22,700 --> 00:41:26,215 Tak negatywny 5% 4, ludzie, może pomyśleć, że jest - 792 00:41:26,215 --> 00:41:28,890 793 00:41:28,890 --> 00:41:33,808 co można by pomyśleć, negatywne 5% 4 będzie? 794 00:41:33,808 --> 00:41:34,792 >> GŁOŚNIK 5: Jeden. 795 00:41:34,792 --> 00:41:37,920 >> JOSEPH: Więc niektórzy mówią jedno, niektórzy mówią, negatywny. 796 00:41:37,920 --> 00:41:38,450 Ale to, co - 797 00:41:38,450 --> 00:41:40,820 >> ROB: I nawet nie mają powiedział jeden z nich. 798 00:41:40,820 --> 00:41:42,370 >> JOSEPH: Dwa, przepraszam. 799 00:41:42,370 --> 00:41:43,240 Niektórzy mówią - 800 00:41:43,240 --> 00:41:43,450 >> ROB: Trzy. 801 00:41:43,450 --> 00:41:43,800 >> JOSEPH: Trzy? 802 00:41:43,800 --> 00:41:44,890 >> ROB: Negatyw - 803 00:41:44,890 --> 00:41:45,950 to, co było - negatywne pięć - 804 00:41:45,950 --> 00:41:47,100 >> JOSEPH: trzy, trzy, trzy. 805 00:41:47,100 --> 00:41:48,450 Przepraszam. 806 00:41:48,450 --> 00:41:51,910 Ponieważ modulo, ogólnie, gdy masz widziałem go w innym miejscu, to zwykle oznacza, 807 00:41:51,910 --> 00:41:54,000 zwraca liczbę dodatnią, prawda? 808 00:41:54,000 --> 00:42:01,160 >> ROB: Tak więc, gdy mówimy w matematyce,% 10-tych, mają tendencję do chcą dać - 809 00:42:01,160 --> 00:42:05,980 jeśli mod o 10, wtedy możemy spodziewać się uzyskać numer od 0 do 9. 810 00:42:05,980 --> 00:42:09,860 Tu, że nie jest to przypadek, że dostanie ujemne liczby wrócił. 811 00:42:09,860 --> 00:42:15,898 >> JOSEPH: Więc negatywna 5% 4 byłaby ujemna 1. 812 00:42:15,898 --> 00:42:19,325 >> ROB: Ale to rzadko, że jesteś mod-ing liczby ujemne na początku. 813 00:42:19,325 --> 00:42:25,490 814 00:42:25,490 --> 00:42:25,970 Pominąć. 815 00:42:25,970 --> 00:42:27,314 >> JOSEPH: Tak. 816 00:42:27,314 --> 00:42:29,420 >> ROB: Meh. 817 00:42:29,420 --> 00:42:29,990 OK. 818 00:42:29,990 --> 00:42:36,400 Więc jedna rzecz zwrócić się o pływaków jest to niebezpieczne zachowanie, 819 00:42:36,400 --> 00:42:39,850 ale pływaki nie są dokładne reprezentacja. 820 00:42:39,850 --> 00:42:46,190 Więc wracając do bajtów ponownie, pamiętaj że int jest zawsze cztery bajty i 821 00:42:46,190 --> 00:42:47,830 pływak jest zawsze cztery bajty. 822 00:42:47,830 --> 00:42:51,340 Więc przykładem Lucasa jest bardzo dobry. 823 00:42:51,340 --> 00:42:55,730 >> Tak, że z 1 podzielone przez 3. 824 00:42:55,730 --> 00:42:57,800 Tak, 0,3333333. 825 00:42:57,800 --> 00:43:03,540 Jeśli mam tylko 32 bitów, w jaki sposób Przechowywać 0,33333 dokładnie? 826 00:43:03,540 --> 00:43:07,250 A może, niezależnie od przyczyny, można powiedzieć, Wszystko w porządku, dobrze, powiedzmy, 827 00:43:07,250 --> 00:43:13,210 że ten konkretny 1011001, niech tylko powiedzieć, że powinno być 0,333333. 828 00:43:13,210 --> 00:43:16,960 Cóż, masz tylko skończoną liczbę te bity, więc jest to niemożliwe 829 00:43:16,960 --> 00:43:22,550 oznaczają każdą zmiennoprzecinkowe Wartość podana tylko 32 bitów. 830 00:43:22,550 --> 00:43:25,580 >> Dobrze, że to niemożliwe, aby reprezentować dowolny podane wartości zmiennoprzecinkowe nieskończona - 831 00:43:25,580 --> 00:43:28,480 również biorąc pod uwagę żadnych skończoną liczbę bitów. 832 00:43:28,480 --> 00:43:38,265 Więc tu jest problem, dobrze, gdy używany wydrukować do dwóch miejsc po przecinku, 833 00:43:38,265 --> 00:43:42,000 zrobiliśmy poprawnie uzyskać odpowiedź 0,10. 834 00:43:42,000 --> 00:43:47,510 Ale pod maską, to naprawdę przechowywane tak blisko jak to jest możliwe 835 00:43:47,510 --> 00:43:51,790 0.10 w tych bitów może reprezentować. 836 00:43:51,790 --> 00:43:53,200 Czy to na następnym slajdzie? 837 00:43:53,200 --> 00:43:53,830 Czy jest to prawda? 838 00:43:53,830 --> 00:43:54,660 >> JOSEPH: Tak, to jest to. 839 00:43:54,660 --> 00:43:55,750 >> ROB: Blegh, blegh. 840 00:43:55,750 --> 00:43:57,760 >> JOSEPH: Tak, można tak wyciągnij notatki się trochę. 841 00:43:57,760 --> 00:43:59,700 >> ROB: Idę, aby powiększyć w na ostatnim w tej sprawie. 842 00:43:59,700 --> 00:44:00,950 O mój Boże, to jest [niesłyszalne]. 843 00:44:00,950 --> 00:44:06,089 844 00:44:06,089 --> 00:44:08,300 Tak, że liczba. 845 00:44:08,300 --> 00:44:12,300 To jest to, co zostanie wydrukowane jeśli uruchomić ten program. 846 00:44:12,300 --> 00:44:20,340 I zauważyć, że nie jest to naprawdę wielka sprawa jeśli mamy tylko dbanie o jak 847 00:44:20,340 --> 00:44:21,920 02:58 miejsc po przecinku. 848 00:44:21,920 --> 00:44:26,700 Jak my tylko pierwotnie drukowane 0,10, i dlatego nie widział nic złego. 849 00:44:26,700 --> 00:44:31,380 Ale gdy zaczną się w dokładna, dokładna liczba, że ​​jest to 850 00:44:31,380 --> 00:44:35,660 reprezentujący, widzimy, że nie można dokładnie przedstawiają 0,1. 851 00:44:35,660 --> 00:44:40,900 >> I część tutaj problemu jest jak, Wszystko w porządku, w porządku, ale, cóż, 852 00:44:40,900 --> 00:44:46,120 pierwsze, co zrobić, jeśli staraliśmy się zrobić, Odpowiedź jest równa jest równa 0,1? 853 00:44:46,120 --> 00:44:49,200 Jest to, że zamierza wrócić prawda czy fałsz? 854 00:44:49,200 --> 00:44:51,850 A więc trudno powiedzieć. 855 00:44:51,850 --> 00:44:53,330 Myślę, że to rzeczywiście może wrócić prawda. 856 00:44:53,330 --> 00:44:55,265 Będzie to pierwsze - 857 00:44:55,265 --> 00:44:56,180 Nie wiem. 858 00:44:56,180 --> 00:45:00,090 Odpowiedź jest po rozpoczęciu postępowania z wartości zmiennoprzecinkowych, to całkiem 859 00:45:00,090 --> 00:45:05,150 wiele nie należy traktować równość z tego powodu niedokładności. 860 00:45:05,150 --> 00:45:09,470 >> I za wszystko, co wiem, to setna miejsca po przecinku, które 861 00:45:09,470 --> 00:45:13,670 zmiennoprzecinkowe nie był w stanie aby poprawnie obsługiwać. 862 00:45:13,670 --> 00:45:18,180 A więc nie tylko równość będzie jeszcze choć liczba - jeśli było 863 00:45:18,180 --> 00:45:24,450 za pomocą dokładnych liczb, numery powinny były dokładnie takie same. 864 00:45:24,450 --> 00:45:27,790 To w ciągu np. 50 Obliczenia za pomocą tych pływających 865 00:45:27,790 --> 00:45:30,270 wartości punktowe, błąd może budować wyżej i wyżej i wyżej, i 866 00:45:30,270 --> 00:45:31,125 rzeczy po prostu nie w porządku. 867 00:45:31,125 --> 00:45:33,870 >> JOSEPH: I nie było naprawdę Słynne przykłady takiej sytuacji. 868 00:45:33,870 --> 00:45:37,190 Jak inżynierowie NASA zdobyć ten problem, powodując wybuch w rakiety 869 00:45:37,190 --> 00:45:38,665 powietrza po ich rozpoczęła. 870 00:45:38,665 --> 00:45:41,490 I wiele problemów, takich jak to. 871 00:45:41,490 --> 00:45:41,956 Więc tak. 872 00:45:41,956 --> 00:45:45,218 >> GŁOŚNIK 6: Kiedy mówisz 0,3 f, to obciąć resztę? 873 00:45:45,218 --> 00:45:46,468 Albo to zaokrąglić w górę lub w dół? 874 00:45:46,468 --> 00:45:48,800 875 00:45:48,800 --> 00:45:50,200 >> ROB: Czy printf wokół niego? 876 00:45:50,200 --> 00:45:52,180 >> JOSEPH: Myślę, że printf obcina. 877 00:45:52,180 --> 00:45:52,640 >> ROB: OK. 878 00:45:52,640 --> 00:45:59,890 Więc możemy podobnie iść w przeciwnym Kierunek tego, gdzie w tym przypadku, 879 00:45:59,890 --> 00:46:03,320 Najbliżej może to stanowić 0.1 był z tym numerem. 880 00:46:03,320 --> 00:46:06,820 Najbliżej może być w stanie stanowią 0,2 w przeciwnym 881 00:46:06,820 --> 00:46:11,420 kierunek, 0,199999996356 czy coś. 882 00:46:11,420 --> 00:46:17,480 Jeśli więc poszliśmy w tym kierunku rzeczy, to printf 0,3 f wróci 883 00:46:17,480 --> 00:46:20,866 1.99 zamiast 2.00. 884 00:46:20,866 --> 00:46:22,960 >> JOSEPH: Nie jestem do końca pewno w tej sprawie. 885 00:46:22,960 --> 00:46:25,430 Może chcesz napisać mały, niewiele Program po prostu sprawdzić, że. 886 00:46:25,430 --> 00:46:29,370 >> ROB: Choć, co jesteśmy pewni, że Jeśli próbowałeś rzucić, że do 887 00:46:29,370 --> 00:46:33,660 int, i odlewania do int będzie spowodować, że obcina dziesiętny, jeśli 888 00:46:33,660 --> 00:46:38,140 spróbować rzucić 1.9999999 do int, dostaniesz 1. 889 00:46:38,140 --> 00:46:41,440 I tak należy na ogół używać runda funkcja w bibliotece matematycznej. 890 00:46:41,440 --> 00:46:44,190 891 00:46:44,190 --> 00:46:45,440 Pytania? 892 00:46:45,440 --> 00:46:47,660 893 00:46:47,660 --> 00:46:48,982 OK. 894 00:46:48,982 --> 00:46:54,000 >> JOSEPH: Więc przeniósł się do warunków i wyrażenia logiczne. 895 00:46:54,000 --> 00:46:58,120 Więc widziałem tych przed. 896 00:46:58,120 --> 00:47:07,420 I faktycznie, pozwól mi zrobić, aby moje Komputer jest w odpowiednim formacie tutaj. 897 00:47:07,420 --> 00:47:08,670 Miejsca. 898 00:47:08,670 --> 00:47:10,630 899 00:47:10,630 --> 00:47:13,870 Niestety, będziemy mieć do czynienia Trochę z odcięciem na krawędziach. 900 00:47:13,870 --> 00:47:15,830 >> Ale tak, wy widzieliście to wcześniej w Scratch. 901 00:47:15,830 --> 00:47:19,930 Więc to tutaj jest wyrazem , który jest stosowany 902 00:47:19,930 --> 00:47:21,250 instrukcja warunkowa. 903 00:47:21,250 --> 00:47:23,930 Więc odpowiedzieć większa niż zero woli powiedzieć, prawdziwe lub fałszywe. 904 00:47:23,930 --> 00:47:26,530 I to są bardzo ważne, ponieważ pozwalają nam na wprowadzenie 905 00:47:26,530 --> 00:47:28,670 Logika w naszym kodzie. 906 00:47:28,670 --> 00:47:32,820 >> Tak więc, na przykład, jest programem napisany w Scratch, że prosi użytkownika 907 00:47:32,820 --> 00:47:36,980 do liczby całkowitej i mówi im, czy liczbą całkowitą, że dali ci było 908 00:47:36,980 --> 00:47:38,690 dodatnią lub ujemną. 909 00:47:38,690 --> 00:47:42,980 I konwersji tutaj, aby zobaczyć to najpierw wydrukować oświadczenie, 910 00:47:42,980 --> 00:47:43,870 daje mi całkowitą. 911 00:47:43,870 --> 00:47:45,980 A następnie poprosić o całkowitej. 912 00:47:45,980 --> 00:47:49,870 >> A następnie użyć logiki warunkowej na tutaj, aby sprawdzić, czy numer 913 00:47:49,870 --> 00:47:52,030 faktycznie większa od zera, czy nie. 914 00:47:52,030 --> 00:47:58,960 Tak więc mamy tutaj wyrażenie Boolean wewnątrz warunkowa if. 915 00:47:58,960 --> 00:48:00,660 Czy istnieją jakieś pytania? 916 00:48:00,660 --> 00:48:03,030 Czy są jakieś pytania o to? 917 00:48:03,030 --> 00:48:03,950 OK. 918 00:48:03,950 --> 00:48:06,140 >> Więc nie więcej niż większa niż, oczywiście. 919 00:48:06,140 --> 00:48:10,385 Można skonstruować wyrażeń logicznych przy użyciu większości rodzajów rzeczy, które 920 00:48:10,385 --> 00:48:11,150 by myśleć w matematyce. 921 00:48:11,150 --> 00:48:12,370 Więc większa niż. 922 00:48:12,370 --> 00:48:13,740 To powinno być poniżej. 923 00:48:13,740 --> 00:48:14,990 Przepraszam. 924 00:48:14,990 --> 00:48:18,520 925 00:48:18,520 --> 00:48:19,760 I odstępy. 926 00:48:19,760 --> 00:48:22,971 >> ROB: Nie daj Boże go pozostawić. 927 00:48:22,971 --> 00:48:23,620 >> JOSEPH: W porządku. 928 00:48:23,620 --> 00:48:25,950 Tak więc większa niż mniejsza, większa wyższa lub równa mniej 929 00:48:25,950 --> 00:48:27,070 niż lub równe. 930 00:48:27,070 --> 00:48:31,980 Używamy dwu równych w celu sprawdzenia równości, ponieważ pojedynczy wynosi środków 931 00:48:31,980 --> 00:48:32,810 zadanie, prawda? 932 00:48:32,810 --> 00:48:33,140 Tak. 933 00:48:33,140 --> 00:48:37,130 A następnie możemy również nie równa przez za pomocą wykrzyknika, jest równa. 934 00:48:37,130 --> 00:48:41,530 >> I ten wykrzyknik symbol może również zostać rozszerzony tak, że jeśli chcesz 935 00:48:41,530 --> 00:48:44,050 odwrócić jakichkolwiek Boolean wyrażenie, można to zrobić. 936 00:48:44,050 --> 00:48:48,530 Tak to oceni na true tylko wtedy, gdy odpowiedź jest mniej 937 00:48:48,530 --> 00:48:51,240 niż lub równe zero. 938 00:48:51,240 --> 00:48:53,950 Wszelkie pytania na ten temat? 939 00:48:53,950 --> 00:48:55,180 OK. 940 00:48:55,180 --> 00:48:58,840 >> Więc można również łączyć te Wyrażenia logiczne A i za pomocą 941 00:48:58,840 --> 00:48:59,790 logiczne Lub. 942 00:48:59,790 --> 00:49:03,530 Więc to jest tylko symbol I, , który powinien być przesuwne, 7. 943 00:49:03,530 --> 00:49:07,720 I to jest symbol rury, która jest nie małe litery L. Jest to jedna 944 00:49:07,720 --> 00:49:09,440 to jest tuż nad twoim ENTER. 945 00:49:09,440 --> 00:49:12,870 Więc używać dwóch z nich symbolizować logiczne i logicznym Or. 946 00:49:12,870 --> 00:49:18,180 >> Więc to zwróci tylko prawda, jeśli odpowiedź jeden, dwa, trzy lub cztery. 947 00:49:18,180 --> 00:49:23,030 I będzie to powrót tylko prawda, jeśli odpowiedź jest poza tym po obu stronach. 948 00:49:23,030 --> 00:49:26,190 Więc nie jest to jeden, dwa, trzy lub cztery. 949 00:49:26,190 --> 00:49:28,385 I sposobem byłoby użyć że w wyrażeniu - 950 00:49:28,385 --> 00:49:29,990 >> ROB: Albo zero lub pięć. 951 00:49:29,990 --> 00:49:32,200 >> JOSEPH: zero lub pięć. 952 00:49:32,200 --> 00:49:32,380 Przepraszam. 953 00:49:32,380 --> 00:49:33,320 Tak, tak, tak. 954 00:49:33,320 --> 00:49:34,180 OK. 955 00:49:34,180 --> 00:49:38,980 I tu teraz, w taki sam sposób by użyć tego wyrażenia, mniejsze 956 00:49:38,980 --> 00:49:42,000 boczne wyrazem Jeśli warunkowa oświadczenie, należy również użyć IT 957 00:49:42,000 --> 00:49:47,800 sam sposób, tylko przez umieszczenie go wewnątrz nawiasów w instrukcji If. 958 00:49:47,800 --> 00:49:54,020 Więc to printf tylko ogień, jeśli odpowiedź jeden, dwa, trzy lub cztery. 959 00:49:54,020 --> 00:49:56,002 Wszelkie pytania na temat łączenia wyrażenia? 960 00:49:56,002 --> 00:50:00,450 961 00:50:00,450 --> 00:50:04,240 >> Więc nie ma innego warunkowego konstrukt nazywamy if / else. 962 00:50:04,240 --> 00:50:08,120 Więc w zasadzie, to teraz oznacza, OK, Jeśli coś chciałem sprawdzić nie było 963 00:50:08,120 --> 00:50:11,600 prawdziwe, a następnie przejść do innego i wykonywać, że inne działania. 964 00:50:11,600 --> 00:50:15,570 Tak więc w tym konkretnym przypadku, poprosiłem użytkownika do liczby całkowitej. 965 00:50:15,570 --> 00:50:17,790 Jest liczbą całkowitą większą od zera! 966 00:50:17,790 --> 00:50:18,310 Tak? 967 00:50:18,310 --> 00:50:20,100 Więc wybrali liczba dodatnia. 968 00:50:20,100 --> 00:50:22,320 Jeśli nie, to musi mieć był ujemny lub zerowy. 969 00:50:22,320 --> 00:50:27,530 Więc wybrał liczbę ujemną czy w tym przypadku zerowy. 970 00:50:27,530 --> 00:50:29,235 Tak. 971 00:50:29,235 --> 00:50:30,485 Lub zero. 972 00:50:30,485 --> 00:50:36,320 973 00:50:36,320 --> 00:50:39,300 >> A potem mamy również if / else, Jeśli i innym. 974 00:50:39,300 --> 00:50:45,640 Więc to pozwala nam wykonać sekwencję rzeczy tylko wtedy, gdy te pierwsze nie. 975 00:50:45,640 --> 00:50:49,540 Więc w tym przypadku, teraz robimy ostatnia wybrać zero. 976 00:50:49,540 --> 00:50:53,080 Więc jeśli nie odebrał pozytywne, ani liczba ujemna, to muszą 977 00:50:53,080 --> 00:50:53,640 wybrali zero. 978 00:50:53,640 --> 00:50:56,720 Więc to po prostu idzie w dół Łańcuch tak. 979 00:50:56,720 --> 00:50:59,960 >> Więc przykładem tego, jak Jeśli jest inny od - 980 00:50:59,960 --> 00:51:02,590 if / else różni się od tylko sekwencja IFS. 981 00:51:02,590 --> 00:51:07,680 I to jest częste pytanie, które ludzie pytają się, dobrze, jeśli się jak 982 00:51:07,680 --> 00:51:11,265 95 w CS50, co to będzie Program powiedzieć? 983 00:51:11,265 --> 00:51:12,600 >> GŁOŚNIK 5: Masz to A. 984 00:51:12,600 --> 00:51:13,490 >> JOSEPH: Tak. 985 00:51:13,490 --> 00:51:14,960 Masz każdego jeden z tych, w prawo. 986 00:51:14,960 --> 00:51:17,130 Musisz się A, masz B, to mam C i D, prawda? 987 00:51:17,130 --> 00:51:19,770 Tak więc wszystkie one są oceniane w porządku. 988 00:51:19,770 --> 00:51:23,570 Tak więc, 95 jest większy niż 90 °, to również większa niż 80, to również 989 00:51:23,570 --> 00:51:25,790 większy niż 70, a to również większa niż 60 lat. 990 00:51:25,790 --> 00:51:27,620 Więc masz wszystkich tych gatunków. 991 00:51:27,620 --> 00:51:31,630 I zakładam, że byłoby A. tylko chcesz 992 00:51:31,630 --> 00:51:34,060 >> Sposób ustalić, który ma zastąpić tych z Else / Jeśli jest. 993 00:51:34,060 --> 00:51:37,540 Więc w tym przypadku, to widzi, że 95 jest większy niż 90, a następnie wykonuje 994 00:51:37,540 --> 00:51:38,885 nie ocenia resztę sprawozdania. 995 00:51:38,885 --> 00:51:41,900 996 00:51:41,900 --> 00:51:43,150 Wszelkie pytania o to? 997 00:51:43,150 --> 00:51:48,580 998 00:51:48,580 --> 00:51:52,470 >> Więc nie ma innego rodzaju warunkowego Struktura, że ​​mamy tu do których 999 00:51:52,470 --> 00:51:53,390 wywołać instrukcję switch. 1000 00:51:53,390 --> 00:51:57,390 Więc to pozwala na w zasadzie sprawdzić jaka jest wartość numeru można umieścić 1001 00:51:57,390 --> 00:51:59,000 do instrukcji switch jest. 1002 00:51:59,000 --> 00:52:03,200 Więc w tym przypadku, mamy do przełączania na n, i mówimy, oh, jeśli n jest 1003 00:52:03,200 --> 00:52:04,710 jeden, a następnie wydrukować, że oświadczenie. 1004 00:52:04,710 --> 00:52:07,910 A następnie zerwać, co oznacza wyjście z instrukcji switch. 1005 00:52:07,910 --> 00:52:12,670 >> Jeśli to nie był jeden, a potem, cóż, po prostu ostatecznie sprawdzić wszystkich tych przypadkach. 1006 00:52:12,670 --> 00:52:16,280 I tak sprawdza to, czy jest to jeden lub dwa lub trzy i drukuje odpowiednio. 1007 00:52:16,280 --> 00:52:19,780 I co to tu domyślne słów kluczowych oznacza to, gdyby nie wprowadzić dowolny 1008 00:52:19,780 --> 00:52:21,690 z nich, a następnie powiedzieć Nieprawidłowy. 1009 00:52:21,690 --> 00:52:25,910 Więc powiedzmy, że dla n i zapytać użytkownik daje mi cztery. 1010 00:52:25,910 --> 00:52:29,470 Cóż, to mecze żaden z tych przypadków, więc będzie drukować, co jest w 1011 00:52:29,470 --> 00:52:30,540 sekcja domyślna. 1012 00:52:30,540 --> 00:52:31,180 Tak, pytanie? 1013 00:52:31,180 --> 00:52:32,614 >> GŁOŚNIK 5: Czy można używać Boolean zamiast wyrażenia 1014 00:52:32,614 --> 00:52:33,570 jeden, dwa lub trzy? 1015 00:52:33,570 --> 00:52:36,940 >> JOSEPH: To pytanie można użyć Wyrażenia logiczne, zamiast jednego 1016 00:52:36,940 --> 00:52:37,940 dwa lub trzy? 1017 00:52:37,940 --> 00:52:40,520 I C, wierzę ci Nie mogę tego zrobić. 1018 00:52:40,520 --> 00:52:44,320 Ale w innych językach, które może napotykają na koniec 1019 00:52:44,320 --> 00:52:46,460 Semestr jak JavaScript, możesz. 1020 00:52:46,460 --> 00:52:50,050 Cóż, trzeba by obliczyć najpierw że wartość, a następnie używać go w 1021 00:52:50,050 --> 00:52:50,650 przełączyć oświadczenie. 1022 00:52:50,650 --> 00:52:50,930 Tak? 1023 00:52:50,930 --> 00:52:54,760 >> ROB: Tak częścią korzyść przełącznika Sprawozdanie jest myśleć, jeśli to zrobił 1024 00:52:54,760 --> 00:52:58,680 jak if / else, tak jak w przypadku n jest równa oznacza jeden lub cokolwiek. 1025 00:52:58,680 --> 00:53:00,300 Else / Jeśli n jest równa jest równa dwa, cokolwiek. 1026 00:53:00,300 --> 00:53:01,960 Else / Jeśli n jest równa równa się trzy. 1027 00:53:01,960 --> 00:53:05,930 Więc sposób program będzie prowadzony jest będzie kolejno w dół tej listy 1028 00:53:05,930 --> 00:53:07,500 i sprawdzić, to N jeden? 1029 00:53:07,500 --> 00:53:08,040 Nie. 1030 00:53:08,040 --> 00:53:09,070 Jest n dwa? 1031 00:53:09,070 --> 00:53:09,490 Nie. 1032 00:53:09,490 --> 00:53:10,940 Jest n trzy? 1033 00:53:10,940 --> 00:53:11,710 Tak. 1034 00:53:11,710 --> 00:53:12,610 To zrobić. 1035 00:53:12,610 --> 00:53:15,270 >> Natomiast z instrukcji switch, to faktycznie w stanie skompilować to być 1036 00:53:15,270 --> 00:53:16,360 bardzo szybko. 1037 00:53:16,360 --> 00:53:19,550 I tak szybko, jak to mówi, wyłącznik, to mówi, wszystko w porządku, brak jest dwóch, ja jestem 1038 00:53:19,550 --> 00:53:23,060 zaraz będzie skakał do miejsca, gdzie Ja powinienem zacząć realizować. 1039 00:53:23,060 --> 00:53:26,080 Nie zamierzam najpierw sprawdzić, jest brak jednego, to N dwa? 1040 00:53:26,080 --> 00:53:28,860 To może od razu zacząć robić co to ma robić. 1041 00:53:28,860 --> 00:53:33,830 >> I z tego powodu, że nie może podjęcia logicznych warunków. 1042 00:53:33,830 --> 00:53:36,480 Albo byłoby to zrobić sekwencyjny, jak, w porządku, to n 1043 00:53:36,480 --> 00:53:37,820 większa niż zero? 1044 00:53:37,820 --> 00:53:41,140 Jeszcze jest n powyżej 10 lub cokolwiek. 1045 00:53:41,140 --> 00:53:44,780 >> JOSEPH: W tym przypadku, jeśli używane Jeśli / przeciwnym przypadku, jeśli jest, to zwrotnicy 1046 00:53:44,780 --> 00:53:47,792 uruchomić około trzykrotnie szybciej niż if / else, o ile. 1047 00:53:47,792 --> 00:53:53,060 1048 00:53:53,060 --> 00:53:56,040 Możemy zorganizować w taki przełącznik sposób, że nie pękają 1049 00:53:56,040 --> 00:53:57,520 po każdym z przypadków. 1050 00:53:57,520 --> 00:54:00,960 Więc w tym przypadku, jestem partycjonowanie Numery, które wybierają się do jednego i 1051 00:54:00,960 --> 00:54:04,250 dwa numery nie są wysokie i trzy jest duża liczba. 1052 00:54:04,250 --> 00:54:08,290 >> Tak więc w tym przypadku, gdy n oznacza jeden lub dwa, to trafi na sprawę i wtedy będzie 1053 00:54:08,290 --> 00:54:10,640 nie mieści się, ponieważ nie ma przerwy. 1054 00:54:10,640 --> 00:54:11,610 I będzie to w końcu tutaj. 1055 00:54:11,610 --> 00:54:15,360 Jeśli więc wybrać jeden, to zrobić printf a następnie zerwać tak, że żaden z 1056 00:54:15,360 --> 00:54:17,610 jest to realizowane. 1057 00:54:17,610 --> 00:54:21,870 I oczywiście, jeśli wejdą w trzech lub coś innego, to będzie pominąć 1058 00:54:21,870 --> 00:54:25,320 ci, a nie tam, i to wykona zamiast 1059 00:54:25,320 --> 00:54:27,490 odpowiedniej linii. 1060 00:54:27,490 --> 00:54:29,390 Czy są jakieś pytania o to? 1061 00:54:29,390 --> 00:54:29,780 Tak? 1062 00:54:29,780 --> 00:54:32,642 >> GŁOŚNIK 4: Czy pojawi się błąd, jeśli ci miał przerwę po wypadku jednego, ale 1063 00:54:32,642 --> 00:54:34,550 nie ma czegoś na to zrobić? 1064 00:54:34,550 --> 00:54:37,820 >> JOSEPH: To pytanie jest, co można uzyskać Błąd, jeśli masz przerwę po 1065 00:54:37,820 --> 00:54:39,730 jednym przypadku, ale nie ma nic do zrobienia? 1066 00:54:39,730 --> 00:54:41,520 A odpowiedź brzmi: nie. 1067 00:54:41,520 --> 00:54:43,172 Tak naprawdę to nie pojawia się błąd. 1068 00:54:43,172 --> 00:54:44,590 Tak, mm hmm. 1069 00:54:44,590 --> 00:54:54,540 >> Tak jakby trochę zmian tutaj, Mam zamiar umieścić printf tutaj. 1070 00:54:54,540 --> 00:54:55,790 Ups. 1071 00:54:55,790 --> 00:55:00,994 1072 00:55:00,994 --> 00:55:04,880 Więc co, jeśli będzie to wydrukować I umieścić jeden w na wejściu? 1073 00:55:04,880 --> 00:55:07,530 1074 00:55:07,530 --> 00:55:07,770 Tak. 1075 00:55:07,770 --> 00:55:10,360 To powiedzieć, że nie miała Wysoka liczba dwa razy, prawda? 1076 00:55:10,360 --> 00:55:13,500 Bo to hit tej pierwszej sytuacji nie pęknie, a to spadnie 1077 00:55:13,500 --> 00:55:15,730 aż do drugiego przypadku. 1078 00:55:15,730 --> 00:55:16,950 Wszelkie pytania o to? 1079 00:55:16,950 --> 00:55:18,280 >> ROB: Czy masz jeszcze pytania? 1080 00:55:18,280 --> 00:55:20,840 >> JOSEPH: OK, cool. 1081 00:55:20,840 --> 00:55:22,400 Dobrze. 1082 00:55:22,400 --> 00:55:25,780 Więc jest coś jeszcze nazywamy trójoperandowy operator, który jest w zasadzie 1083 00:55:25,780 --> 00:55:29,010 Składnia do robienia zastępca Jeżeli i wtedy inny. 1084 00:55:29,010 --> 00:55:30,470 I pozwala zrobić to wszystko w jednej linii. 1085 00:55:30,470 --> 00:55:34,110 Tak więc w tym konkretnym programem Pytam użytkownika o n. 1086 00:55:34,110 --> 00:55:37,190 A jeśli n jest większe niż 100, powiem ich wybrali wysoką liczbę. 1087 00:55:37,190 --> 00:55:39,560 Jeszcze mam im powiedzieć, że wybrał niską liczbę. 1088 00:55:39,560 --> 00:55:43,030 >> Możemy więc korzystać z tej bardzo długiej składni, łańcuch, S, a następnie sprawdzić, czy n jest 1089 00:55:43,030 --> 00:55:45,260 większa niż 100 do przypisania to odpowiednio. 1090 00:55:45,260 --> 00:55:49,450 Ale możemy zrobić to o wiele bardziej zwięzłe przy użyciu tej składni operatora trójskładnikowych 1091 00:55:49,450 --> 00:55:52,090 które wiąże się pytanie zapytania i okrężnicy. 1092 00:55:52,090 --> 00:55:55,070 Tak jest w istocie znak zapytania zadaje pytanie, prawda? 1093 00:55:55,070 --> 00:55:56,625 >> ROB: Może powiększyć to. 1094 00:55:56,625 --> 00:55:57,372 >> JOSEPH: Tak. 1095 00:55:57,372 --> 00:56:00,210 Dobry punkt. 1096 00:56:00,210 --> 00:56:02,550 Więc to jest operator trójskładnikowych. 1097 00:56:02,550 --> 00:56:06,100 Ja najpierw zadać pytanie, n jest większe niż 100? 1098 00:56:06,100 --> 00:56:09,770 Jeśli tak jest, to ja najpierw wykonać część przed dwukropkiem. 1099 00:56:09,770 --> 00:56:13,360 Jeśli nie jest, to wykonanie Druga część po dwukropku. 1100 00:56:13,360 --> 00:56:16,640 Tak więc, jeśli n jest większe niż 100, następnie wybiera wysokie i stawia 1101 00:56:16,640 --> 00:56:18,360 że do łańcucha s. 1102 00:56:18,360 --> 00:56:22,170 Jeśli n jest mniejsza niż 100, to wybiera niski a następnie umieszcza, że ​​w ciągu sekund. 1103 00:56:22,170 --> 00:56:30,186 Tak, że będzie to duży kawał skondensować w dół do tylko tej jednej linii. 1104 00:56:30,186 --> 00:56:32,010 >> GŁOŚNIK 5: Czy to jest popularna? 1105 00:56:32,010 --> 00:56:36,070 >> JOSEPH: Tak, to jest dość popularny rzeczy, w których mają być zasadniczo 1106 00:56:36,070 --> 00:56:38,700 Czy zadanie na podstawie jakiś warunek. 1107 00:56:38,700 --> 00:56:43,110 I w tym przypadku, staraliśmy aby przypisać wartość String s. 1108 00:56:43,110 --> 00:56:44,840 To nie jest tak - 1109 00:56:44,840 --> 00:56:47,670 Myślę, że tak naprawdę nie preferują w pozostałych przypadkach. 1110 00:56:47,670 --> 00:56:49,390 Ale to jest szczególnie przydatne do tego zadania. 1111 00:56:49,390 --> 00:56:54,490 >> ROB: To jest dość powszechne, wzór gdzie trzeba trochę zmiennej, która 1112 00:56:54,490 --> 00:56:58,200 masz zamiar powiedzieć, jeśli coś, ustaw ta zmienna do jednej wartości, inny, ustawiony 1113 00:56:58,200 --> 00:56:59,810 ta zmienna do innej wartości. 1114 00:56:59,810 --> 00:57:03,360 I to jest scenariusz gdzie stosować potrójny. 1115 00:57:03,360 --> 00:57:05,220 >> JOSEPH: I ratujesz wiele linii, prawda? 1116 00:57:05,220 --> 00:57:08,090 I to właśnie sprawia, że ​​kod zapewne trochę bardziej czytelne. 1117 00:57:08,090 --> 00:57:08,635 Tak, pytanie? 1118 00:57:08,635 --> 00:57:12,384 >> GŁOŚNIK 6: Na potrójny, można przejść, String s równe s, znak zapytania? 1119 00:57:12,384 --> 00:57:15,280 I wtedy można mieć, powiedzmy, pięć różnych opcji. 1120 00:57:15,280 --> 00:57:18,310 W zależności od tego, co liczba n została, należy wybrać jedną z nich? 1121 00:57:18,310 --> 00:57:22,210 >> JOSEPH: To pytanie jest, czy istnieje rodzaj składni, gdzie można zrobić łańcuch 1122 00:57:22,210 --> 00:57:25,910 y jest równa n, a następnie mieć więcej niż dwa Opcje po tym znaku zapytania? 1123 00:57:25,910 --> 00:57:29,740 I prosta odpowiedź brzmi nie, nie ma bardzo dobry sposób, aby to zrobić, chyba że 1124 00:57:29,740 --> 00:57:33,850 chcesz zagnieździć wiele trójskładnikowych Operatorzy wewnątrz siebie. 1125 00:57:33,850 --> 00:57:38,050 >> Można zrobić jak n większa niż 100, znak zapytania, a następnie innego 1126 00:57:38,050 --> 00:57:41,850 Trójskładnikowy operatora n większym niż 50, znak zapytania, a gniazdo w ten sposób. 1127 00:57:41,850 --> 00:57:45,240 Ale w tym scenariuszu kod jest coraz rodzaj nieczytelny i brudny, 1128 00:57:45,240 --> 00:57:47,920 a może lepiej byłoby po prostu udać się do Jeżeli / Else w tym momencie. 1129 00:57:47,920 --> 00:57:54,530 >> ROB: A także, jako dygresja, PHP nieprawidłowo implementuje trójskładnikowych 1130 00:57:54,530 --> 00:57:58,053 Operator tak, że zagnieżdżone ternaries nawet nie działać tak, jak powinny. 1131 00:57:58,053 --> 00:57:58,840 >> JOSEPH: Tak. 1132 00:57:58,840 --> 00:58:01,170 Więc robi się trochę mylące, zwłaszcza gdy idziesz 1133 00:58:01,170 --> 00:58:02,145 różnych językach. 1134 00:58:02,145 --> 00:58:04,810 >> ROB: To na tyle mylące, że języki są źle o nim. 1135 00:58:04,810 --> 00:58:08,030 1136 00:58:08,030 --> 00:58:11,510 >> JOSEPH: Tak naprawdę, tylko w celu wyjaśnienia, nie każdy wie, co to 1137 00:58:11,510 --> 00:58:13,900 % S nie tutaj? 1138 00:58:13,900 --> 00:58:15,650 Wszelkie pytania o to? 1139 00:58:15,650 --> 00:58:19,760 Chyba tylko do kamery,% s w zasadzie pozwala nam umieścić symbol zastępczy 1140 00:58:19,760 --> 00:58:20,790 na sznurku. 1141 00:58:20,790 --> 00:58:23,920 , A następnie na koniec, że możemy określić Zmienna chcemy umieścić w tym 1142 00:58:23,920 --> 00:58:25,500 Posiadacz miejsce jest y. 1143 00:58:25,500 --> 00:58:27,730 Tak, że w zasadzie zajmuje s i to stawia go w tutaj. 1144 00:58:27,730 --> 00:58:32,130 A następnie zostanie wydrukowane, wybrałeś wysokie lub wybrałeś niską liczbę. 1145 00:58:32,130 --> 00:58:33,770 OK. 1146 00:58:33,770 --> 00:58:36,970 >> Więc pętle pozwalają na wykonywanie rzeczy w okrężnymi ruchami, tak? 1147 00:58:36,970 --> 00:58:40,300 Być może w ten napotkał Zarysowania w postaci pętli zawsze 1148 00:58:40,300 --> 00:58:45,650 lub powtarzać aż lub Powtórz szczególności liczbę razy. 1149 00:58:45,650 --> 00:58:47,540 Więc dlaczego jest to dla nas dobre? 1150 00:58:47,540 --> 00:58:51,500 Cóż, w C, powiedzmy, mamy to piosenki, które wdrożone w Scratch 1151 00:58:51,500 --> 00:58:53,450 śpiewa, to jest piosenka że nigdy się nie kończy. 1152 00:58:53,450 --> 00:58:55,710 To po prostu jest długa i na zawsze i na wieki. 1153 00:58:55,710 --> 00:58:59,395 Cóż, tak naprawdę nie można zrobić program , który ma nieskończoną liczbę printf 1154 00:58:59,395 --> 00:59:00,850 oświadczenia w nim, prawda? 1155 00:59:00,850 --> 00:59:04,900 >> Zatem w tym szczególnym wariancie, jedna droga że można to robić i 1156 00:59:04,900 --> 00:59:09,330 aby go wydrukować zawsze jest zamiast używać pętli while. 1157 00:59:09,330 --> 00:59:13,640 Więc pętli while będzie wykonywać co w organizmie dwóch klamry 1158 00:59:13,640 --> 00:59:17,250 należy do niego na podstawie tego, co Warunek jest. 1159 00:59:17,250 --> 00:59:21,170 Zatem w tym szczególnym przykładzie wykonania przed, jeżeli chcemy wydrukować na zawsze, co 1160 00:59:21,170 --> 00:59:23,590 możemy zrobić? 1161 00:59:23,590 --> 00:59:25,190 Cóż, na pewno, prawda? 1162 00:59:25,190 --> 00:59:32,290 >> Tak więc ten rodzaj łączy ideę jakiejś logicznej wypowiedzi 1163 00:59:32,290 --> 00:59:33,610 oraz pętlę. 1164 00:59:33,610 --> 00:59:35,780 I dowiedzieliśmy się o Boolean wyrażenia wcześniej. 1165 00:59:35,780 --> 00:59:39,650 Więc gdy stan wewnątrz że choć pozostaje prawdą, to pętla 1166 00:59:39,650 --> 00:59:41,480 wykona na i na i na. 1167 00:59:41,480 --> 00:59:44,640 I w tym przypadku, jeśli po prostu dostarczyć go z prawdą, to powoduje nieskończone 1168 00:59:44,640 --> 00:59:49,310 Pętla, która drukuje piosenkę i na i jak wcześniej bez potrzeby 1169 00:59:49,310 --> 00:59:52,410 o program, który ma nieskończoną liczba printf, która jest 1170 00:59:52,410 --> 00:59:55,220 nie jest możliwe. 1171 00:59:55,220 --> 00:59:57,810 >> Więc bardziej przekonująco, choć, można użyć tego z 1172 00:59:57,810 --> 00:59:59,710 zmienna i stan. 1173 00:59:59,710 --> 01:00:04,420 Powiedzmy, że chcemy, aby powtórzyć zdanie, zupełnie loopy, 10 razy. 1174 01:00:04,420 --> 01:00:08,380 Więc co można zrobić z pętli While jest można najpierw zainicjować licznik 1175 01:00:08,380 --> 01:00:10,860 zmienna poza Pętla do 10. 1176 01:00:10,860 --> 01:00:14,360 A następnie w zasadzie za każdym razem idziesz przez pętlę While, wydrukowanie 1177 01:00:14,360 --> 01:00:19,090 oświadczenie, a następnie zmniejszyć licznik zmiennej aż w końcu 1178 01:00:19,090 --> 01:00:23,020 w pewnym momencie, gdy odejmiemy I tyle razy, 1 z I tyle razy - 1179 01:00:23,020 --> 01:00:27,290 i tylko w celu wyjaśnienia, że ​​minus minus oznacza, że ​​jest równy I minus 1. 1180 01:00:27,290 --> 01:00:31,280 >> Że będzie w zasadzie doprowadzić do I dół Punkt, w którym po raz trafiłem do zera, to 1181 01:00:31,280 --> 01:00:35,260 warunek nie jest prawdą i tak, że wyjście z pętli. 1182 01:00:35,260 --> 01:00:37,045 Tak całkowicie loopy tylko drukuje 10 razy. 1183 01:00:37,045 --> 01:00:39,550 1184 01:00:39,550 --> 01:00:41,080 Wszelkie pytania o pętli While? 1185 01:00:41,080 --> 01:00:44,580 1186 01:00:44,580 --> 01:00:46,790 OK. 1187 01:00:46,790 --> 01:00:50,550 >> Więc nie jest to sposób możemy zrobić to, co właśnie nie w bardziej zwięzły sposób z 1188 01:00:50,550 --> 01:00:51,715 co nazywamy Na pętli. 1189 01:00:51,715 --> 01:00:55,750 Więc pętla składa się z przypadku inicjalizacji, stan i 1190 01:00:55,750 --> 01:00:58,950 aktualizacja, tak jak mieliśmy przed w tej pętli While. 1191 01:00:58,950 --> 01:00:59,890 Warto więc przyjrzeć. 1192 01:00:59,890 --> 01:01:02,900 W tej pętli While, mieliśmy inicjalizacji, a następnie mieliśmy 1193 01:01:02,900 --> 01:01:04,260 warunkiem, że sprawdziliśmy. 1194 01:01:04,260 --> 01:01:06,450 A następnie mieliśmy aktualizacji kroku na szczycie. 1195 01:01:06,450 --> 01:01:10,060 >> Z pętli For, to w zasadzie trwa te trzy rzeczy i skrapla go 1196 01:01:10,060 --> 01:01:11,370 w dół do jednej linii. 1197 01:01:11,370 --> 01:01:15,130 Tak więc pierwszą rzeczą, że ma to miejsce w Pętli jest inicjalizacja. 1198 01:01:15,130 --> 01:01:19,090 A następnie zrobić średnik, a następnie zrobić warunek, który jest mi 1199 01:01:19,090 --> 01:01:22,200 większa niż zero przechodzi tam a następnie etap aktualizacji. 1200 01:01:22,200 --> 01:01:26,470 Tak to zostanie przeprowadzone w bardzo koniec ciała pętli. 1201 01:01:26,470 --> 01:01:28,790 Więc te dwa programy są zasadniczo równoważne. 1202 01:01:28,790 --> 01:01:31,960 1203 01:01:31,960 --> 01:01:33,870 >> Masz pytanie? 1204 01:01:33,870 --> 01:01:37,000 Tak więc to, co jest jedna różnica między tymi dwoma? 1205 01:01:37,000 --> 01:01:38,000 Czy ktoś może zwrócić na to uwagę? 1206 01:01:38,000 --> 01:01:40,480 To może być nieco subtelne. 1207 01:01:40,480 --> 01:01:41,930 To tylko bardzo mała różnica. 1208 01:01:41,930 --> 01:01:42,330 Tak? 1209 01:01:42,330 --> 01:01:49,008 >> GŁOŚNIK 5: Nie będzie w stanie wykorzystać I zmienna poza pętli for 1210 01:01:49,008 --> 01:01:49,962 [Niesłyszalne]? 1211 01:01:49,962 --> 01:01:50,900 >> JOSEPH: Dokładnie. 1212 01:01:50,900 --> 01:01:53,550 Tak, to jest coś, my się do później nazywany zmienna zakres. 1213 01:01:53,550 --> 01:01:56,610 Ale w zasadzie, to int życie I poza tym pętli While. 1214 01:01:56,610 --> 01:01:59,800 Więc po to pętla while jest wykonywana wykonanie, będę mógł użyć I później 1215 01:01:59,800 --> 01:02:00,880 na w programie. 1216 01:02:00,880 --> 01:02:05,430 >> Mając na uwadze, ze to dla pętli, to int i jest objęty zakresem wewnątrz to dla pętli. 1217 01:02:05,430 --> 01:02:10,240 A ponieważ znajduje się on wewnątrz tego fragmentu pętli For, który rozpoczyna 1218 01:02:10,240 --> 01:02:13,200 w nawiasach, a kończy nawias klamrowy tam. 1219 01:02:13,200 --> 01:02:16,120 Wszystko, co jest zadeklarowane wewnątrz tu nie może być stosowane na zewnątrz. 1220 01:02:16,120 --> 01:02:20,420 Więc jeśli próbuję użyć I na zewnątrz, to będzie powiedz mi, symbol nierejestrowanej. 1221 01:02:20,420 --> 01:02:22,420 I w istocie, nie będę być w stanie go używać. 1222 01:02:22,420 --> 01:02:28,460 >> ROB: I dobrze, 10 lat temu, w dosłownie wszystkie przypadki, nawiasy klamrowe są 1223 01:02:28,460 --> 01:02:31,140 co używane do określenia Zakres zmiennych. 1224 01:02:31,140 --> 01:02:37,240 Więc tam, int i jest równa 10 jest zadeklarowana wewnątrz tego 1225 01:02:37,240 --> 01:02:38,520 zestaw klamrach. 1226 01:02:38,520 --> 01:02:42,530 I tak to tak długo, jak ja starają się wykorzystywać przed tym nawiasem, to w porządku. 1227 01:02:42,530 --> 01:02:47,090 1228 01:02:47,090 --> 01:02:51,460 Można zobaczyć po wpisaniu zrobić, ty zobacz kreska, kreska, std, równa, C99. 1229 01:02:51,460 --> 01:02:57,100 >> Tak, że jest nowsza wersja C, która GCC wdrożyła które również daje 1230 01:02:57,100 --> 01:02:58,740 ten skrót. 1231 01:02:58,740 --> 01:03:03,505 Tak to kiedyś nie być dozwolone w C i można zobaczyć, dlaczego, bo to int 1232 01:03:03,505 --> 01:03:07,600 I jest poza tym nawiasem, ale to nadal uważany w 1233 01:03:07,600 --> 01:03:09,750 Zakres tych klamrach. 1234 01:03:09,750 --> 01:03:14,120 Ale to jest bardzo wygodne rzeczy, i tak jest dobry rozszerzenie. 1235 01:03:14,120 --> 01:03:15,370 >> JOSEPH: Masz pytania? 1236 01:03:15,370 --> 01:03:17,550 1237 01:03:17,550 --> 01:03:19,260 OK. 1238 01:03:19,260 --> 01:03:22,820 Więc co jest bardziej przydatne jest to, że czasami chcesz rodzaju dynamizmu w 1239 01:03:22,820 --> 01:03:23,410 pętla, prawda? 1240 01:03:23,410 --> 01:03:26,350 Nie chcesz, aby po prostu muszą drukować całkowicie loopy cały czas, jesteś 1241 01:03:26,350 --> 01:03:28,650 chcą odliczać od 10 lub coś. 1242 01:03:28,650 --> 01:03:32,010 I tak można użyć zmiennej licznika wewnątrz pętli, jak również. 1243 01:03:32,010 --> 01:03:35,530 I w tym przypadku, ten program po prostu odlicza od 10 w dół. 1244 01:03:35,530 --> 01:03:39,260 I co nie drukować? 1245 01:03:39,260 --> 01:03:42,790 Nie drukować zera, rację, bo gdy - 1246 01:03:42,790 --> 01:03:45,460 Tak, to też nie drukuje 11. 1247 01:03:45,460 --> 01:03:49,200 >> Więc to nie jest drukowany do zera, bo kiedy I jest zero, pamiętam, ocenia 1248 01:03:49,200 --> 01:03:52,170 warunek, zanim przejdzie na wykonanie ciała pętli. 1249 01:03:52,170 --> 01:03:56,820 A gdy ma wartość zero, to jest fałszywy, to nie wydrukować odliczanie 1250 01:03:56,820 --> 01:04:00,200 zero, to po prostu wypisuje liczenia w dół 10 w dół do 1. 1251 01:04:00,200 --> 01:04:03,420 Jeśli faktycznie chcemy go wydrukować zera, wtedy stawiamy znak równości 1252 01:04:03,420 --> 01:04:04,750 po to znak większości. 1253 01:04:04,750 --> 01:04:09,400 1254 01:04:09,400 --> 01:04:10,130 OK. 1255 01:04:10,130 --> 01:04:16,410 >> Więc jeden sposób sprawdzania poprawności danych, które jest, kiedy zwrócić się do użytkownika, aby zrobić 1256 01:04:16,410 --> 01:04:18,620 coś, chcesz mieć pewność, że stosować się do instrukcji, jest w użyciu 1257 01:04:18,620 --> 01:04:19,400 pętli while, prawda? 1258 01:04:19,400 --> 01:04:22,990 Więc w tym przypadku, pytam na liczbę dodatnią, a następnie jestem 1259 01:04:22,990 --> 01:04:23,810 oczekiwania na wejście. 1260 01:04:23,810 --> 01:04:28,210 >> A następnie sprawdziłem ile wejście jest mniej niż zero, zachować prośbą. 1261 01:04:28,210 --> 01:04:32,100 Tak długo, jak mi numer że nie jest pozytywna, pytają, 1262 01:04:32,100 --> 01:04:33,600 pytaj, pytaj. 1263 01:04:33,600 --> 01:04:35,860 Ale to, co jest swego rodzaju dziwne na ten temat? 1264 01:04:35,860 --> 01:04:38,570 Albo, co nie wydaje się optymalny o struktura ta tutaj? 1265 01:04:38,570 --> 01:04:44,282 1266 01:04:44,282 --> 01:04:44,758 Ktoś? 1267 01:04:44,758 --> 01:04:45,234 Tak? 1268 01:04:45,234 --> 01:04:47,614 >> GŁOŚNIK 6: Jesteś powtarzając Instrukcja dwukrotnie. 1269 01:04:47,614 --> 01:04:48,100 >> JOSEPH: Prawo. 1270 01:04:48,100 --> 01:04:50,090 Tak więc mamy dwa printf tutaj, prawda? 1271 01:04:50,090 --> 01:04:53,440 Więc nie ma sposobu, możemy uzyskać to tylko w dół do jednego, które sprawiają, że nasze 1272 01:04:53,440 --> 01:04:57,170 czytelność kodu i trochę bardziej czysty. 1273 01:04:57,170 --> 01:05:00,180 I wtedy nie będzie musiał Wejdź już dwukrotnie lepiej. 1274 01:05:00,180 --> 01:05:03,740 A jednym ze sposobów można to zrobić, jest stosując pętlę-czas. 1275 01:05:03,740 --> 01:05:07,670 >> I pętli do-while jest w zasadzie inna forma pętli While gdzie 1276 01:05:07,670 --> 01:05:11,460 co jest w nawiasach klamrowych zostanie wykonana co najmniej raz. 1277 01:05:11,460 --> 01:05:14,840 Więc tutaj, oświadczam, int wejście, poza pierwszym. 1278 01:05:14,840 --> 01:05:18,100 A potem po prostu powiedzieć, to zrobić instrukcja podczas wprowadzania 1279 01:05:18,100 --> 01:05:19,140 jest mniejsza od zera. 1280 01:05:19,140 --> 01:05:20,530 Tak trafi najpierw Do. 1281 01:05:20,530 --> 01:05:24,190 To zawsze wykonać to przynajmniej raz, więc to zawsze zwrócić się do użytkownika 1282 01:05:24,190 --> 01:05:25,960 do wprowadzania co najmniej raz. 1283 01:05:25,960 --> 01:05:29,390 A następnie ocenia, że ​​wejście, i to dzieje się w kółko. 1284 01:05:29,390 --> 01:05:30,135 Tak, pytanie? 1285 01:05:30,135 --> 01:05:32,602 >> GŁOŚNIK 6: Czy istnieje sposób, aby to zrobić [Niesłyszalne] typy, jakby można powiedzieć, 1286 01:05:32,602 --> 01:05:34,268 GetString, a ktoś [niesłyszalne] 1287 01:05:34,268 --> 01:05:35,220 czy jest jakiś sposób, aby [niesłyszalne] 1288 01:05:35,220 --> 01:05:40,060 >> JOSEPH: To pytanie jest, czy istnieje sposób zrobić sprawdzania poprawności danych, jeśli użytkownik 1289 01:05:40,060 --> 01:05:41,850 nie umieścić w prawo typ zmiennej? 1290 01:05:41,850 --> 01:05:44,460 Więc jeśli pytamy o int i dać nam ciąg zamiast. 1291 01:05:44,460 --> 01:05:49,110 I funkcji, które wdrażają dla Ciebie, GetInt, we wszystkich GetString 1292 01:05:49,110 --> 01:05:52,680 te funkcje, w rzeczywistości już do tego rodzaju wejścia typu podstawowego 1293 01:05:52,680 --> 01:05:54,120 poprawności pod maską. 1294 01:05:54,120 --> 01:05:57,390 Więc jeśli używasz funkcji, które dał wam, naprawdę nie trzeba. 1295 01:05:57,390 --> 01:06:01,380 >> Ale jeśli chcesz, aby w jak wyglądają rzeczywiście można to zrobić, można spojrzeć 1296 01:06:01,380 --> 01:06:03,360 pod maską w pliku I/O-- 1297 01:06:03,360 --> 01:06:07,990 nie złożyć standardowe funkcje I / O jak czytać ze standardowego wejścia i 1298 01:06:07,990 --> 01:06:08,580 standardowe wyjście. 1299 01:06:08,580 --> 01:06:10,630 I można dostać lepsze poczucie w jaki sposób można to zrobić. 1300 01:06:10,630 --> 01:06:13,670 >> ROB: Jedną z kwestii, choć jest wyraźnie z przykładu można 1301 01:06:13,670 --> 01:06:17,070 powiedział, można oczekiwać ciąg i wprowadzić int. 1302 01:06:17,070 --> 01:06:20,110 Jak można odróżnić między celowo chce 1303 01:06:20,110 --> 01:06:23,130 Ciąg 123 kontra chcąc int 123? 1304 01:06:23,130 --> 01:06:29,230 Więc ciąg, to prawie nie ma walidacji, tylko co oni 1305 01:06:29,230 --> 01:06:31,600 Wprowadzona będzie interpretować jako ciąg. 1306 01:06:31,600 --> 01:06:35,790 >> Int jest łatwiejsze, ponieważ bez względu na Wejście wziąć od użytkownika, jesteś 1307 01:06:35,790 --> 01:06:37,470 zawsze z ciąg. 1308 01:06:37,470 --> 01:06:40,650 I tak, że łańcuch można następnie sprawdzić, czy wszystkie z nich 1309 01:06:40,650 --> 01:06:44,218 cyfry faktycznie numeryczne? 1310 01:06:44,218 --> 01:06:45,170 >> JOSEPH: OK. 1311 01:06:45,170 --> 01:06:46,420 Wszelkie pytania na temat pętli do-while? 1312 01:06:46,420 --> 01:06:49,170 >> ROB: O, i to jest również - 1313 01:06:49,170 --> 01:06:55,130 wracając do zakresu, dość powszechne błąd stara się korzystać z niektórych lokalnych 1314 01:06:55,130 --> 01:06:59,540 w tej zmiennej z Do-While pętla wewnątrz tego warunku. 1315 01:06:59,540 --> 01:07:02,850 I rzeczywiście, jeśli po prostu pozbył to i powiedział, int wejście równa 1316 01:07:02,850 --> 01:07:06,990 GetInt, to kompilator będzie krzyczeć na nas, ponieważ nie istnieje wejście 1317 01:07:06,990 --> 01:07:08,900 poza zakresu te nawiasy klamrowe. 1318 01:07:08,900 --> 01:07:10,792 >> JOSEPH: I dlatego trzeba tu tego spisu. 1319 01:07:10,792 --> 01:07:13,620 1320 01:07:13,620 --> 01:07:14,630 OK. 1321 01:07:14,630 --> 01:07:17,530 Więc można też wyjść z pętla wcześnie, jeśli chcesz. 1322 01:07:17,530 --> 01:07:21,240 Więc to jest inny sposób wykonawczych, co właśnie wdrażane. 1323 01:07:21,240 --> 01:07:24,340 Zamiast wykorzystania warunku w nawiasach, używamy 1324 01:07:24,340 --> 01:07:26,920 If wewnątrz ciała pętli do-while. 1325 01:07:26,920 --> 01:07:30,000 >> A w zasadzie, gdy wejście jest w końcu większa niż zero, to zostanie 1326 01:07:30,000 --> 01:07:31,000 wyrwać się z pętli. 1327 01:07:31,000 --> 01:07:33,420 I tak wszyscy pójdziemy sposób tutaj. 1328 01:07:33,420 --> 01:07:37,920 I widać, że to byłoby prawdopodobnie korzystny w tym 1329 01:07:37,920 --> 01:07:39,870 scenariusz, bo to trochę czystsze nieco i trochę 1330 01:07:39,870 --> 01:07:41,380 trochę łatwiejsze do odczytania. 1331 01:07:41,380 --> 01:07:45,210 Natomiast to, w pewnym sensie mają dodatkowe linie w nim. 1332 01:07:45,210 --> 01:07:47,890 To tylko trochę brzydsze, Myślę, że w pewnym sensie. 1333 01:07:47,890 --> 01:07:48,530 Tak, pytanie? 1334 01:07:48,530 --> 01:07:52,178 >> GŁOŚNIK 4: Czy przełamać tylko dostać Ci z jednego zestawu szelki? 1335 01:07:52,178 --> 01:07:53,080 >> JOSEPH: Prawo. 1336 01:07:53,080 --> 01:07:58,100 Więc pytanie jest tylko złamie Ci z jednej pętli? 1337 01:07:58,100 --> 01:07:59,280 A odpowiedź brzmi: tak. 1338 01:07:59,280 --> 01:08:04,290 Więc jeśli masz zagnieżdżone pętle, na Na przykład, jeśli mam dla int i jest równa 0 1339 01:08:04,290 --> 01:08:09,040 aż do 10, a następnie uzyskać int J jest równa 0 do 10, jeśli wyrwać się z wewnętrzną 1340 01:08:09,040 --> 01:08:12,310 Pętla, będę nadal go z zewnętrzną pętlą. 1341 01:08:12,310 --> 01:08:15,760 Więc to zachować wykonując operacje na zewnątrz. 1342 01:08:15,760 --> 01:08:17,640 Wszelkie pytania o to? 1343 01:08:17,640 --> 01:08:18,000 Tak? 1344 01:08:18,000 --> 01:08:21,760 >> GŁOŚNIK 5: Ale złamać tylko funkcje na klamrach, nie dla innych 1345 01:08:21,760 --> 01:08:22,230 sprawozdanie? 1346 01:08:22,230 --> 01:08:22,700 [Niesłyszalne] 1347 01:08:22,700 --> 01:08:27,620 >> JOSEPH: To pytanie jest złamie Funkcja tylko do pętli, w przeciwieństwie do 1348 01:08:27,620 --> 01:08:29,014 inne oświadczenia, gdyby? 1349 01:08:29,014 --> 01:08:32,950 I tak, że jest to przypadek, ponieważ łamiesz z pętli, w prawo, 1350 01:08:32,950 --> 01:08:33,630 w znaczeniu. 1351 01:08:33,630 --> 01:08:37,215 >> ROB: W zdecydowanej większości przypadków, jest to to jest coś w rodzaju, czy coś, 1352 01:08:37,215 --> 01:08:37,660 następnie złamać. 1353 01:08:37,660 --> 01:08:41,580 Więc nie musisz łamać zastosowanie do Jeśli to jest owijanie wokół niego. 1354 01:08:41,580 --> 01:08:45,250 A także to, że wiele pętli ale należy pamiętać, że są również przełączniki 1355 01:08:45,250 --> 01:08:46,340 uszkodzony z przerwami. 1356 01:08:46,340 --> 01:08:48,390 Widzieliśmy wykorzystywane przerwy z przełącznikami przed. 1357 01:08:48,390 --> 01:08:52,189 >> JOSEPH: A można też ich używać w pętli while i pętle. 1358 01:08:52,189 --> 01:08:54,560 Masz pytanie? 1359 01:08:54,560 --> 01:08:55,830 OK. 1360 01:08:55,830 --> 01:08:57,779 Więc następnym się to funkcje. 1361 01:08:57,779 --> 01:09:01,500 Więc może nie stosować jedną z tych BYOB bloki w projekcie podstaw. 1362 01:09:01,500 --> 01:09:04,569 I to w zasadzie pozwala zdefiniowanie zestawu 1363 01:09:04,569 --> 01:09:05,680 instrukcje postępowania. 1364 01:09:05,680 --> 01:09:09,569 >> I co mam na myśli, że to pomyślmy Powrót do matematyki, prawa, algebry. 1365 01:09:09,569 --> 01:09:13,370 Masz to, co nazywamy funkcją x, niektóre zmienne, i powiedzmy, że to 1366 01:09:13,370 --> 01:09:16,080 Funkcja f od x równa się x plus 5. 1367 01:09:16,080 --> 01:09:20,410 Więc można myśleć o f x. jak ta czarna box, który trwa 15, a następnie 1368 01:09:20,410 --> 01:09:22,590 produkuje 20. 1369 01:09:22,590 --> 01:09:26,630 >> Tak ogólnie, funkcja jest coś, co zajmuje kilka wejść i 1370 01:09:26,630 --> 01:09:27,880 następnie produkuje kilka wyjść. 1371 01:09:27,880 --> 01:09:31,920 1372 01:09:31,920 --> 01:09:32,960 I dlaczego są funkcje dobry? 1373 01:09:32,960 --> 01:09:35,189 Są dobre dla wielu powodów. 1374 01:09:35,189 --> 01:09:40,470 Więc ma ktoś chce brać stab na to, co organizacja oznacza? 1375 01:09:40,470 --> 01:09:42,630 W zakresie, dlaczego funkcje są pomocne? 1376 01:09:42,630 --> 01:09:43,090 Tak? 1377 01:09:43,090 --> 01:09:44,735 >> GŁOŚNIK 4: To sprawia, że kod jest bardziej czytelny. 1378 01:09:44,735 --> 01:09:45,399 >> JOSEPH: Prawo. 1379 01:09:45,399 --> 01:09:47,670 Tak więc jedną z rzeczy, sprawia, że ​​jest to kod jest bardziej czytelny, prawda? 1380 01:09:47,670 --> 01:09:53,710 Zamiast jak int x równa się x razy x razy x, może mam kostkę x, 1381 01:09:53,710 --> 01:09:57,190 który jest bardziej czytelny i bardziej zrozumiały dla czytelnika. 1382 01:09:57,190 --> 01:10:01,150 >> Organizacja jest w zakresie dzieląc swój kod do opanowania 1383 01:10:01,150 --> 01:10:05,610 części, tak, że zamiast próbować zaimplementować to wszystko w jednym długim odcinku 1384 01:10:05,610 --> 01:10:09,070 w głównym, można rodzaj podzielić go w niczym, OK, niech napisać funkcję 1385 01:10:09,070 --> 01:10:11,910 z Cube coś, napiszmy funkcjonować do kwadratu coś. 1386 01:10:11,910 --> 01:10:15,950 W ten sposób można podzielić go na małe, małe części, które można rozwiązać 1387 01:10:15,950 --> 01:10:18,944 w przeciwieństwie do próby rozwiązania duży problem na raz. 1388 01:10:18,944 --> 01:10:21,806 >> ROB: Albo nawet malutkie, małe części, które można i partnerem rozwiązania. 1389 01:10:21,806 --> 01:10:22,283 >> JOSEPH: Tak. 1390 01:10:22,283 --> 01:10:23,855 >> ROB: Więc zamiast obu Państwo stara się zaszczepić jedną 1391 01:10:23,855 --> 01:10:27,170 działać w tym samym czasie. 1392 01:10:27,170 --> 01:10:28,800 >> JOSEPH: Uproszczenie. 1393 01:10:28,800 --> 01:10:30,050 Każdy, kto chce zgadywać? 1394 01:10:30,050 --> 01:10:33,080 1395 01:10:33,080 --> 01:10:33,410 Tak? 1396 01:10:33,410 --> 01:10:34,675 >> GŁOŚNIK 5: Więcej powtarzania. 1397 01:10:34,675 --> 01:10:35,260 >> JOSEPH: Prawo. 1398 01:10:35,260 --> 01:10:39,210 Więc jedna rzecz, że można zrobić z uproszczeniem jest to, że jest to coś w rodzaju na 1399 01:10:39,210 --> 01:10:42,520 według tych samych zasad ponownego użycia jest to, że raz napisać funkcję kostki, mogę 1400 01:10:42,520 --> 01:10:45,410 po prostu użyć tego w kółko i na ponownie w moim programie zamiast wpisywać 1401 01:10:45,410 --> 01:10:49,610 x razy x razy x nad i w kółko. 1402 01:10:49,610 --> 01:10:52,980 I tu też po prostu uproszczenie Oznacza to sprawia, że ​​twój rodzaj kodu 1403 01:10:52,980 --> 01:10:55,900 łatwiejsze do debugowania po podzielone to się do funkcji. 1404 01:10:55,900 --> 01:10:58,250 Bo wtedy można zlokalizować where Twoje problemy w rodzaju są. 1405 01:10:58,250 --> 01:11:00,910 1406 01:11:00,910 --> 01:11:02,160 Masz pytanie? 1407 01:11:02,160 --> 01:11:04,200 1408 01:11:04,200 --> 01:11:06,540 >> Więc inny pomysł jest abstrakcja, prawda? 1409 01:11:06,540 --> 01:11:07,390 Ta czarna skrzynka. 1410 01:11:07,390 --> 01:11:11,360 Jak wiesz, co robi GetInt do odbioru danych od użytkownika? 1411 01:11:11,360 --> 01:11:12,510 Tak naprawdę nie powiedziałem, prawda? 1412 01:11:12,510 --> 01:11:15,670 Wszystko, co ci powiedziałem nie jest GetInt dokładnie to co mówi to robi. 1413 01:11:15,670 --> 01:11:18,440 Więc nawet jeśli nie powiedzieć, jak to działa, to nadal nie wiemy. 1414 01:11:18,440 --> 01:11:21,670 >> Zatem w tym szczególnym przypadku jest Funkcja, która ma poczwórną 1415 01:11:21,670 --> 01:11:24,520 różne rzeczy do wejścia w celu wytworzenia wyjścia. 1416 01:11:24,520 --> 01:11:28,050 I można czterokrotnie liczbę przez pomnożenie jej przez cztery. 1417 01:11:28,050 --> 01:11:30,790 Czy można to, co nazywamy nieco przesunąć ją przez dwa. 1418 01:11:30,790 --> 01:11:32,960 I zajmiemy się tym nieco później. 1419 01:11:32,960 --> 01:11:36,570 I nie ma potrzeby, aby wiedzieć, jak to Funkcja pracuje właściwie, dopóki 1420 01:11:36,570 --> 01:11:37,640 działa zgodnie z opisem. 1421 01:11:37,640 --> 01:11:40,740 >> Tak, pod maską, mogę być jak powrócić razy wejściowych 1422 01:11:40,740 --> 01:11:41,690 osiem dzieli się przez dwa. 1423 01:11:41,690 --> 01:11:42,510 A ty nie wiesz, prawda? 1424 01:11:42,510 --> 01:11:44,970 Wszystko, co musisz wiedzieć, robi to, co mówi. 1425 01:11:44,970 --> 01:11:48,070 Więc to przydatna rzecz o abstrakcji. 1426 01:11:48,070 --> 01:11:52,910 >> I jeszcze jedno jest jakby ten pomysł z lokalizowania kodu do jednego 1427 01:11:52,910 --> 01:11:54,280 szczególności sekcja. 1428 01:11:54,280 --> 01:11:57,450 Więc jeśli masz problem, nie wiesz trzeba iść na całym kodzie próbuje 1429 01:11:57,450 --> 01:11:58,730 ustalić, gdzie problem był. 1430 01:11:58,730 --> 01:12:00,990 Więc w tym przypadku, że realizowane kostka źle. 1431 01:12:00,990 --> 01:12:02,820 Myślałem, że kostka została pomnożenie przez trzy. 1432 01:12:02,820 --> 01:12:05,760 >> Tak więc w tym przypadku jest jeden program że po prostu nie mnożąc przez trzy 1433 01:12:05,760 --> 01:12:06,750 wszędzie. 1434 01:12:06,750 --> 01:12:10,910 I jest jeszcze inny program, który ma uwzględnione kostka się do funkcji. 1435 01:12:10,910 --> 01:12:14,040 A więc teraz, jeśli chcę, aby naprawić swój błąd tutaj, muszę naprawić każdą linię 1436 01:12:14,040 --> 01:12:15,620 kodu w tym programie. 1437 01:12:15,620 --> 01:12:19,190 Podczas gdy z drugiej strony, w przypadku korzystania z funkcja, tylko trzeba zmienić 1438 01:12:19,190 --> 01:12:20,650 co było nie tak w jednym miejscu. 1439 01:12:20,650 --> 01:12:25,330 1440 01:12:25,330 --> 01:12:28,730 >> Więc w informatyce, my wejść i wyjść zadzwonić. 1441 01:12:28,730 --> 01:12:31,640 Wejścia są nazywane parametrami lub argumenty i wyjścia są nazywane 1442 01:12:31,640 --> 01:12:32,950 zwracają wartości. 1443 01:12:32,950 --> 01:12:39,000 I zobaczymy, jak to pomaga nam rozwiązać od zdefiniowania funkcji w drugim. 1444 01:12:39,000 --> 01:12:41,430 Więc to jest definicja funkcji dla cubing. 1445 01:12:41,430 --> 01:12:45,110 Więc to ma wejście, a następnie zwraca, że ​​czasy numer 1446 01:12:45,110 --> 01:12:47,020 Sam trzy razy. 1447 01:12:47,020 --> 01:12:48,020 Warto więc podzielenie go. 1448 01:12:48,020 --> 01:12:53,090 >> Mamy więc nagłówek funkcji, które zasadniczo składa się z trzech rzeczy. 1449 01:12:53,090 --> 01:12:56,050 Więc mamy parametry, które są, jak powiedziałem wcześniej, 1450 01:12:56,050 --> 01:12:57,680 wejść do tej funkcji. 1451 01:12:57,680 --> 01:12:59,300 A potem dać funkcję, nazwę. 1452 01:12:59,300 --> 01:13:00,740 W tym przypadku, to się nazywa kostka. 1453 01:13:00,740 --> 01:13:03,860 A następnie określamy typ z zwracana jest wartość. 1454 01:13:03,860 --> 01:13:06,760 >> Więc w tym przypadku, mój funkcji kostki wykonuje się w postaci liczby całkowitej, a także 1455 01:13:06,760 --> 01:13:07,890 zwraca liczbę całkowitą. 1456 01:13:07,890 --> 01:13:11,510 Więc jeśli mogę przekazać w dwóch, dwóch jest liczbą całkowitą, Zwraca on osiem do mnie, który 1457 01:13:11,510 --> 01:13:13,250 jest liczbą całkowitą. 1458 01:13:13,250 --> 01:13:15,420 Więc powrót parametrów nazwa typu. 1459 01:13:15,420 --> 01:13:16,670 Pytania o to? 1460 01:13:16,670 --> 01:13:19,440 1461 01:13:19,440 --> 01:13:24,230 >> A następnie zwracana jest wartość faktycznie podano na końcu mówiąc powrót 1462 01:13:24,230 --> 01:13:27,540 a następnie powrót co zawiera wartości zwracanej. 1463 01:13:27,540 --> 01:13:30,940 Więc w tym przypadku, jeśli stawiamy wszystko razem, funkcja przyjmuje w 1464 01:13:30,940 --> 01:13:35,100 parametry, to się nazywa coś, i zwraca coś, co jest typ 1465 01:13:35,100 --> 01:13:36,350 które mówią, że to będzie. 1466 01:13:36,350 --> 01:13:39,830 1467 01:13:39,830 --> 01:13:41,080 Masz pytanie? 1468 01:13:41,080 --> 01:13:43,710 1469 01:13:43,710 --> 01:13:45,080 >> Więc w jaki sposób korzystać z funkcji? 1470 01:13:45,080 --> 01:13:49,230 Cóż, mamy napisać funkcję, a następnie używamy go w naszym programie, prawda? 1471 01:13:49,230 --> 01:13:51,565 Zadzwoniłem więc to kostka, i następnie można użyć kostki. 1472 01:13:51,565 --> 01:13:54,200 >> Ale to, co jest ważne, aby pamiętać, jest to, że kolejność ma znaczenie. 1473 01:13:54,200 --> 01:13:58,100 Jeśli mam kostkę poniżej głównego, to zamierza uruchomić w kostce. 1474 01:13:58,100 --> 01:14:00,360 I w tym momencie, nie ma nic zwana kostka w programie, i to 1475 01:14:00,360 --> 01:14:02,550 po prostu będzie jak mam nie wiem co kostka jest. 1476 01:14:02,550 --> 01:14:05,060 >> Więc będzie powiedzieć, ukryte deklaracja funkcji. 1477 01:14:05,060 --> 01:14:06,690 To błąd, który pojawia się. 1478 01:14:06,690 --> 01:14:10,230 I tak w tym przypadku, znajduje się poniżej kostki głównym, więc to nie będzie 1479 01:14:10,230 --> 01:14:12,006 o tym wiedzieć. 1480 01:14:12,006 --> 01:14:14,724 >> GŁOŚNIK 5: Tak jest zazwyczaj głównym zdefiniowane ostatnia funkcja? 1481 01:14:14,724 --> 01:14:17,290 >> JOSEPH: To pytanie jest, jest zwykle ostatnio głównym 1482 01:14:17,290 --> 01:14:18,170 rzeczy, które chcesz zdefiniować? 1483 01:14:18,170 --> 01:14:19,730 I nie. 1484 01:14:19,730 --> 01:14:22,280 To dlatego, że jak zwykle głównym aby być na górze, prawda? 1485 01:14:22,280 --> 01:14:24,640 Bo to pierwsza rzecz, którą chcą otwarcia programista 1486 01:14:24,640 --> 01:14:25,640 Program zobaczyć. 1487 01:14:25,640 --> 01:14:29,950 A więc w jaki sposób rozwiązać ten problem my chce być głównym na górze, ale 1488 01:14:29,950 --> 01:14:33,750 funkcje, które chcemy, możemy je mieć , poniżej głównego jednak móc użyć 1489 01:14:33,750 --> 01:14:34,930 je wewnątrz Głównym? 1490 01:14:34,930 --> 01:14:36,870 >> Cóż, możemy użyć tego, co nazywamy Prototyp funkcji. 1491 01:14:36,870 --> 01:14:40,830 Więc co prototyp funkcji zasadniczo jest to, że najpierw wykonuje co 1492 01:14:40,830 --> 01:14:45,060 podpisu lub nagłówka funkcji od tego, co chcemy realizować w dół 1493 01:14:45,060 --> 01:14:47,420 tu, i umieścić go w Najwięcej programu. 1494 01:14:47,420 --> 01:14:51,400 >> Tak więc w tym przypadku możemy powiedzieć, że dobrze, później w naszym programie, będziemy 1495 01:14:51,400 --> 01:14:55,010 złożyć obietnicę wdrożenia tego Funkcja o nazwie int kostka, która odbywa 1496 01:14:55,010 --> 01:14:56,260 Wejście całkowitą. 1497 01:14:56,260 --> 01:15:00,870 Więc teraz, bo to jest powyżej głównego, Głównym, to będzie powiedzieć, och, dobrze, 1498 01:15:00,870 --> 01:15:03,910 później w programie, który będzie tam, więc mogę się do niego, więc będę 1499 01:15:03,910 --> 01:15:05,230 po prostu poczekać na teraz. 1500 01:15:05,230 --> 01:15:07,660 >> A następnie na dole, możemy wdrożyć moduł. 1501 01:15:07,660 --> 01:15:11,180 A potem po prostu powiedzieć, główny, dobrze, będzie to rodzaj łącza 1502 01:15:11,180 --> 01:15:12,250 Te dwa symbole razem. 1503 01:15:12,250 --> 01:15:14,320 I omówimy, co to Oznacza później. 1504 01:15:14,320 --> 01:15:17,090 A więc to, że jest to Funkcja kostka, że ​​powinien używać. 1505 01:15:17,090 --> 01:15:19,630 1506 01:15:19,630 --> 01:15:23,383 >> ROB: [niesłyszalne] o chęci Głównym lub na dole 1507 01:15:23,383 --> 01:15:24,880 góry, widziałem oba. 1508 01:15:24,880 --> 01:15:28,630 Są rzeczy, które po prostu lubią Głównym umieścić na dnie. 1509 01:15:28,630 --> 01:15:32,520 Ale gdy projekt staje się szczególnie duży, zwykle jest w głównej 1510 01:15:32,520 --> 01:15:34,290 złożyć wszystkie swoje własne. 1511 01:15:34,290 --> 01:15:38,170 I w tym momencie, jak int linia kostka będzie - 1512 01:15:38,170 --> 01:15:42,460 wewnątrz stdio.h to banda linii tak po prostu int 1513 01:15:42,460 --> 01:15:44,010 linia wejściowa kostka int. 1514 01:15:44,010 --> 01:15:50,170 >> I tak te rzeczy, które są prototypy mają tendencję do zatrzymania się w plikach nagłówkowych, w 1515 01:15:50,170 --> 01:15:52,140 które chodzi, to nie ma znaczenia. 1516 01:15:52,140 --> 01:15:54,700 Cóż, to nie ma znaczenia. 1517 01:15:54,700 --> 01:15:56,070 Te zawsze idą w górę. 1518 01:15:56,070 --> 01:15:59,490 A jeśli nie jest główny plik wszystkie swoje własne, nie musisz martwić się o wprowadzenie 1519 01:15:59,490 --> 01:16:02,360 Poszczególne prototypy funkcji w pliku. 1520 01:16:02,360 --> 01:16:05,370 >> JOSEPH: A my się do tego trochę nieco później, kiedy Rob zaczyna mówić 1521 01:16:05,370 --> 01:16:06,380 o kompilacji. 1522 01:16:06,380 --> 01:16:09,480 I tak jest też różnica między parametrem i argumentem. 1523 01:16:09,480 --> 01:16:12,500 I parametr jest tylko to, co nazywamy te wejścia przy 1524 01:16:12,500 --> 01:16:13,820 zdefiniować funkcję. 1525 01:16:13,820 --> 01:16:16,950 I nazywamy go argumentem, kiedy faktycznie przekazać go do funkcji. 1526 01:16:16,950 --> 01:16:19,600 >> Tak więc w tym przypadku jest to parametr jak powiedziałem wcześniej. 1527 01:16:19,600 --> 01:16:24,130 I kiedy właściwie go używać tam, kostka x, to x jest sam 1528 01:16:24,130 --> 01:16:25,910 co nazywamy argumentem do sześcianu funkcji. 1529 01:16:25,910 --> 01:16:28,150 >> ROB: To są argumenty parametru - 1530 01:16:28,150 --> 01:16:33,270 Rozróżnienie to jest bardzo mylić się zamiennie. 1531 01:16:33,270 --> 01:16:37,090 W tym momencie, dla mnie, jest to jak jeden z te słowa, że ​​kiedy widzę go w 1532 01:16:37,090 --> 01:16:41,190 dziki, nie mogę pomóc, ale natychmiast pytanie, czy są one za pomocą go w 1533 01:16:41,190 --> 01:16:44,120 odpowiedni kontekst, ponieważ Różnica jest na tyle subtelne, że tylko 1534 01:16:44,120 --> 01:16:45,500 każdy ma tendencję - 1535 01:16:45,500 --> 01:16:48,530 I prawie zawsze mówią argumentu niezależnie od tego, co mam na myśli. 1536 01:16:48,530 --> 01:16:51,230 1537 01:16:51,230 --> 01:16:54,630 >> JOSEPH: I są również użyteczne funkcje za to, co my nazywamy skutki uboczne. 1538 01:16:54,630 --> 01:16:59,230 Więc funkcja może nie wejść i może też produkować ma wyjścia. 1539 01:16:59,230 --> 01:17:03,280 Więc w tym przypadku, jestem definiowanie podprogramów, że nie ma 1540 01:17:03,280 --> 01:17:03,970 wartość powrócić. 1541 01:17:03,970 --> 01:17:07,730 Oraz w celu określenia, które stosujemy co nazywamy pustkę tutaj. 1542 01:17:07,730 --> 01:17:10,890 I tak efektem ubocznym tej funkcji jest to, że po prostu wypisuje rzeczy 1543 01:17:10,890 --> 01:17:11,920 się na stronie. 1544 01:17:11,920 --> 01:17:13,840 Faktycznie nie podejmują wszelkie wejść, i to nie 1545 01:17:13,840 --> 01:17:15,360 faktycznie przynoszą żadnych wyjść. 1546 01:17:15,360 --> 01:17:18,230 >> Ale to może być użyteczne w sensie jeśli chcesz, na przykład, debug 1547 01:17:18,230 --> 01:17:21,530 coś w programie, jeśli chcesz napisać, że mały podprogram 1548 01:17:21,530 --> 01:17:25,160 wypisuje, powiedzmy, zawartość pamięci czy coś. 1549 01:17:25,160 --> 01:17:29,800 A więc te efekty uboczne są czasami przydatne poza kontekstem 1550 01:17:29,800 --> 01:17:33,010 o tak jak wejścia i wyjścia. 1551 01:17:33,010 --> 01:17:34,260 Masz pytanie? 1552 01:17:34,260 --> 01:17:37,270 1553 01:17:37,270 --> 01:17:44,240 >> , A do końca tego konkretnego segmentu, co robi ten program zrobić? 1554 01:17:44,240 --> 01:17:47,420 Dam wam kilka sekund na zapoznanie się z nim. 1555 01:17:47,420 --> 01:17:52,720 1556 01:17:52,720 --> 01:17:56,880 Na bardzo podstawowym poziomie, co chcemy powiedzieć, jest to, że zamienia x i y, prawda? 1557 01:17:56,880 --> 01:18:00,090 >> Ilu z was tak naprawdę myśleć będzie zamienić x i y? 1558 01:18:00,090 --> 01:18:02,160 Podnieś rękę. 1559 01:18:02,160 --> 01:18:02,760 Nikt. 1560 01:18:02,760 --> 01:18:03,070 OK. 1561 01:18:03,070 --> 01:18:06,720 Kto myśli, że będzie nie zamienić x i y? 1562 01:18:06,720 --> 01:18:09,120 I suma, która była nie cały pokój. 1563 01:18:09,120 --> 01:18:10,440 Więc niektórzy ludzie nie są pewni. 1564 01:18:10,440 --> 01:18:10,920 OK. 1565 01:18:10,920 --> 01:18:11,630 To jest rozsądne. 1566 01:18:11,630 --> 01:18:16,450 >> Warto więc przejść przez to, co się dzieje, gdy rzeczywiście wywołać funkcje najpierw w 1567 01:18:16,450 --> 01:18:18,320 Aby odpowiedzieć na to pytanie. 1568 01:18:18,320 --> 01:18:21,430 Więc to jest to, co pamięć rodzaj wygląda. 1569 01:18:21,430 --> 01:18:23,860 To jest coś w rodzaju uproszczonego modelu z tego, co wygląda na to, gdy pamięć 1570 01:18:23,860 --> 01:18:24,800 uruchomieniu programu. 1571 01:18:24,800 --> 01:18:27,270 Więc jest coś, co nazywa tu i stosu 1572 01:18:27,270 --> 01:18:28,330 coś, co nazywa się sterty. 1573 01:18:28,330 --> 01:18:30,950 A te rosną w kierunku średnim pamięci. 1574 01:18:30,950 --> 01:18:33,860 >> Zatem w tym szczególnym przypadku, gdy wywołania funkcji, to 1575 01:18:33,860 --> 01:18:35,680 zostanie położony na stosie. 1576 01:18:35,680 --> 01:18:38,900 A następnie, co zawarte jest w tym Funkcja pozostaje w tym, co nazywamy, że 1577 01:18:38,900 --> 01:18:40,550 ramki stosu funkcji. 1578 01:18:40,550 --> 01:18:44,500 I tak, aby uzyskać ładny wizualizację to, let's - na przykład, mieliśmy 1579 01:18:44,500 --> 01:18:45,960 Program główny wcześniej. 1580 01:18:45,960 --> 01:18:47,820 I wewnątrz główne, zadzwoniliśmy kostkę. 1581 01:18:47,820 --> 01:18:50,650 Tak więc głównym najpierw przejść na stosie ramki, bo to pierwsza funkcja 1582 01:18:50,650 --> 01:18:51,640 to się nazywa. 1583 01:18:51,640 --> 01:18:55,740 >> I wtedy, gdy kostka jest nazywany wewnątrz Głównym, to dostaje umieścić na górze głównej 1584 01:18:55,740 --> 01:18:57,790 wewnątrz pamięci. 1585 01:18:57,790 --> 01:19:02,090 Więc co można zauważyć, jest to, że kostka ma swoje własne parametry, a jego 1586 01:19:02,090 --> 01:19:02,950 własnych mieszkańców. 1587 01:19:02,950 --> 01:19:06,720 Więc jeśli rzeczywiście przekazać coś Funkcja, że ​​parametry 1588 01:19:06,720 --> 01:19:09,910 dostaje to kopie, co było przeszedł od głównego. 1589 01:19:09,910 --> 01:19:14,140 >> I jakby to wyjaśnić, niech przejść przez program. 1590 01:19:14,140 --> 01:19:16,960 Więc mamy stos, to jest tylko część stosu. 1591 01:19:16,960 --> 01:19:21,240 I co możemy zrobić, to najpierw zainicjować x i y do jednego i dwóch. 1592 01:19:21,240 --> 01:19:22,400 Tak więc mamy te małe pola. 1593 01:19:22,400 --> 01:19:25,310 Siedzą w stosie Main ramki na stosie. 1594 01:19:25,310 --> 01:19:26,580 Zawierają jeden i dwa. 1595 01:19:26,580 --> 01:19:28,820 >> Teraz nazywamy swapa. 1596 01:19:28,820 --> 01:19:33,940 Co się dzieje, możemy przejść do x i y swap i swap tworzy własne kopie 1597 01:19:33,940 --> 01:19:36,520 tych zmiennych używać wewnątrz jego ramki stosu. 1598 01:19:36,520 --> 01:19:39,920 Więc teraz tam, mamy, które zawiera wartość, że x i b miał, 1599 01:19:39,920 --> 01:19:41,620 który zawiera wartość r miał. 1600 01:19:41,620 --> 01:19:42,670 Tak, raz, dwa. 1601 01:19:42,670 --> 01:19:47,130 >> I można zauważyć, że jest to odrębny od x i y z wewnątrz Głównym. 1602 01:19:47,130 --> 01:19:51,390 Więc teraz utworzyć tymczasowy Zmienna zawiera. 1603 01:19:51,390 --> 01:19:56,100 Ustawiamy równe b, więc zmiany z jednego do dwóch. 1604 01:19:56,100 --> 01:19:59,340 A następnie ustawiamy b równego do temperatury, która jest jedną. 1605 01:19:59,340 --> 01:20:01,640 >> A następnie teraz wyjść z tej funkcji. 1606 01:20:01,640 --> 01:20:04,310 1607 01:20:04,310 --> 01:20:07,410 Po wyjściu z tej funkcji, Ramka stosu pobiera pojawiło się stos. 1608 01:20:07,410 --> 01:20:08,270 Nazywamy to pchać. 1609 01:20:08,270 --> 01:20:12,750 Naciśnięciu ramkę stosu na stos i pop, jeśli ze stosu. 1610 01:20:12,750 --> 01:20:16,080 A więc to, co się dzieje, to wszystko, co był w tej ramce stosu rodzaju tylko 1611 01:20:16,080 --> 01:20:17,280 staje w płomieniach. 1612 01:20:17,280 --> 01:20:19,180 I tak, że już nie istnieje. 1613 01:20:19,180 --> 01:20:20,470 >> Ale to, co widzimy? 1614 01:20:20,470 --> 01:20:23,690 Tak naprawdę nie zmienił Wartości x i y, prawda? 1615 01:20:23,690 --> 01:20:26,530 Tak więc ci, zatrzymaliśmy lokalnego głównym. 1616 01:20:26,530 --> 01:20:29,900 I przekazując rzeczy do zamiany, my faktycznie nie zmienił tych wartości. 1617 01:20:29,900 --> 01:20:31,260 I co my nazywamy to? 1618 01:20:31,260 --> 01:20:33,040 Nazywamy to przekazywanie przez wartość. 1619 01:20:33,040 --> 01:20:36,860 >> Tak w C, kiedy przechodzą do rzeczy funkcje, to przekazuje je przez wartości i 1620 01:20:36,860 --> 01:20:40,160 tworzy kopię nich Funkcja w użyciu. 1621 01:20:40,160 --> 01:20:43,980 I dowiemy się o czymś o nazwie przechodzącej przez odniesienie później, ale to 1622 01:20:43,980 --> 01:20:45,390 sposób można rozwiązać ten problem. 1623 01:20:45,390 --> 01:20:47,080 Ale nie martw się o że później. 1624 01:20:47,080 --> 01:20:52,200 >> ROB: I rzeczywiście, że termin, przechodzącej przez odniesienie, więc C nie ma nawet 1625 01:20:52,200 --> 01:20:54,270 przechodzącej przez odwołanie. 1626 01:20:54,270 --> 01:20:56,760 C nie przechodzi wyłącznie wartości. 1627 01:20:56,760 --> 01:20:59,630 Bez względu na to, co robisz, jesteś zawsze przekazując kopię czegoś. 1628 01:20:59,630 --> 01:21:03,395 Tyle, że, jak już wspomniano w rodzaju Wskaźniki, które wcześniej z 1629 01:21:03,395 --> 01:21:07,690 i że łańcuch jest tak naprawdę tylko cztery bajtów wskazując gdzieś w pamięci. 1630 01:21:07,690 --> 01:21:11,890 >> Cóż, jeśli mam ten ciąg i to mówi mi, że jest gdzie ciąg - 1631 01:21:11,890 --> 01:21:15,470 dobrze, jeśli mam ten wskaźnik do tego miejsce w pamięci, to mogę przejść 1632 01:21:15,470 --> 01:21:19,160 Kopię tego wskaźnika do funkcji, a że nadal nie wie, gdzie funkcja w 1633 01:21:19,160 --> 01:21:19,780 Pamięć jest. 1634 01:21:19,780 --> 01:21:22,950 Tak więc oba te wskaźniki są skierowane w to samo miejsce w pamięci i 1635 01:21:22,950 --> 01:21:26,460 to jak będziemy w stanie zmodyfikować rzeczy poza 1636 01:21:26,460 --> 01:21:29,852 bieżącą ramkę stosu. 1637 01:21:29,852 --> 01:21:31,040 >> JOSEPH: Chcesz zrobić kompilacji? 1638 01:21:31,040 --> 01:21:31,820 >> ROB: Nie, to jest 05:30. 1639 01:21:31,820 --> 01:21:32,910 >> JOSEPH: OK. 1640 01:21:32,910 --> 01:21:35,040 Jest 05:30. 1641 01:21:35,040 --> 01:21:35,360 OK. 1642 01:21:35,360 --> 01:21:39,280 Więc omówimy Chyba w kompilacji Następny rozdział, lub twój punkt 1643 01:21:39,280 --> 01:21:42,795 liderem będzie w tym momencie. 1644 01:21:42,795 --> 01:21:43,272 I - 1645 01:21:43,272 --> 01:21:44,630 >> ROB: Masz pytania? 1646 01:21:44,630 --> 01:21:46,760 >> JOSEPH: Masz pytania? 1647 01:21:46,760 --> 01:21:47,150 Tak? 1648 01:21:47,150 --> 01:21:52,469 >> GŁOŚNIK 5: Używanie łańcuchów z CS50, każdy funkcje, które chcemy wykorzystać do 1649 01:21:52,469 --> 01:21:53,880 ci, to będzie jak funkcji C. 1650 01:21:53,880 --> 01:21:59,050 CS50 nie upadł i wykonane wszelkie dodatkowe. 1651 01:21:59,050 --> 01:22:01,850 >> ROB: Zgadza się. 1652 01:22:01,850 --> 01:22:08,155 Któregokolwiek z C jak [niesłyszalne], można będzie używać tych na naszych strunach. 1653 01:22:08,155 --> 01:22:12,400 >> JOSEPH: I ostatnia rzecz, którą chcesz wspomnieć, że mamy przewodnik stylu 1654 01:22:12,400 --> 01:22:13,130 dla tej klasy. 1655 01:22:13,130 --> 01:22:13,360 >> ROB: O, tak. 1656 01:22:13,360 --> 01:22:15,270 >> JOSEPH: Więc jeśli pochodzą z programistycznym wcześniej, 1657 01:22:15,270 --> 01:22:17,750 może mieć pewne konwencje, gdy piszesz kod jak oddanie 1658 01:22:17,750 --> 01:22:20,950 szelki na tej samej linii lub szczególnie sposoby wcięć 1659 01:22:20,950 --> 01:22:22,240 lub nazw zmiennych. 1660 01:22:22,240 --> 01:22:26,870 W tej klasie, chcemy podążać Specjalny przewodnik po stylu tylko dlatego, 1661 01:22:26,870 --> 01:22:31,100 dobrze, jeśli wyjść i pracować w przemysł, masz zamiar się spodziewać 1662 01:22:31,100 --> 01:22:34,780 przestrzegać instrukcji stylu Firma, w której idziesz do. 1663 01:22:34,780 --> 01:22:38,040 >> Jak na przykład Facebook myślę ma szczególnego rodzaju nazywania 1664 01:22:38,040 --> 01:22:38,760 Konwencja. 1665 01:22:38,760 --> 01:22:42,570 I nie ma różnicy między wielbłądem zmienne, podobnie jak obudowy i 1666 01:22:42,570 --> 01:22:44,610 oddzielając je podkreślenia. 1667 01:22:44,610 --> 01:22:52,170 A także, myślę, że najważniejsze, jak np. wcięcia, prawda? 1668 01:22:52,170 --> 01:22:56,440 >> Mamy początek gdzie nawiasy klamrowe Warunkiem jest, i 1669 01:22:56,440 --> 01:22:57,730 są w następnej linii. 1670 01:22:57,730 --> 01:23:01,230 I my również umieścić nawiasy klamrowe w nawet jeśli jest to tylko jedna linia. 1671 01:23:01,230 --> 01:23:06,100 I wiele razy, istnieją sposoby, aby zrobić to gdzie można zostawić te szelki 1672 01:23:06,100 --> 01:23:08,380 się, czy jest to tylko jedna linia na podstawie instrukcji If. 1673 01:23:08,380 --> 01:23:12,070 Ale w tej klasie, chcemy podążać specyficzny przewodnik redakcyjny tak masz 1674 01:23:12,070 --> 01:23:13,550 wykorzystywane do tego rodzaju rzeczy. 1675 01:23:13,550 --> 01:23:16,410 >> ROB: Tak, i Styl 50 będzie egzekwowania tego przewodnika stylu, a my 1676 01:23:16,410 --> 01:23:18,080 będzie używać stylu 50 do jakości kodu. 1677 01:23:18,080 --> 01:23:25,150 Więc to sprawia, że ​​ułatwienia dla nas i mam nadzieję, że nie powinno się rzeczy, które 1678 01:23:25,150 --> 01:23:30,120 znacznie gorzej dla ciebie podano standaryzowany stylu nie powinno być 1679 01:23:30,120 --> 01:23:31,460 nierealne. 1680 01:23:31,460 --> 01:23:36,000 >> JOSEPH: I wreszcie, aby znaleźć styl przewodnika, przejdź do manual.cs50.net/style. 1681 01:23:36,000 --> 01:23:37,725 I tak. 1682 01:23:37,725 --> 01:23:40,575 >> GŁOŚNIK 4: Idziesz do egzekwowania żadnych znaków w wierszu? 1683 01:23:40,575 --> 01:23:42,480 >> ROB: Tak. 1684 01:23:42,480 --> 01:23:45,405 >> JOSEPH: Przepraszam, chłopaki. 1685 01:23:45,405 --> 01:23:47,680 >> ROB: To tak, jakby tylko jeden z nich. 1686 01:23:47,680 --> 01:23:50,420 W tym momencie, jestem OK z 120. 1687 01:23:50,420 --> 01:23:52,460 Jestem OK z mówiąc 120 znaków w wierszu. 1688 01:23:52,460 --> 01:23:53,830 Rozumiem, że jest pewne ograniczenie. 1689 01:23:53,830 --> 01:23:57,130 Myślę, że 80 jest tak mała, ale jesteśmy jej wykonywania. 1690 01:23:57,130 --> 01:24:00,260 >> JOSEPH: Osobiście uważam, że z C, 80 znaków jest bardziej OK. 1691 01:24:00,260 --> 01:24:04,160 Kiedy zaczną się do innych Języki, takie jak PHP, JavaScript i nie 1692 01:24:04,160 --> 01:24:08,860 więc uzasadnione tylko ograniczyć jest do 80 znaków. 1693 01:24:08,860 --> 01:24:09,260 OK. 1694 01:24:09,260 --> 01:24:12,780 Cóż, to był super odcinek. 1695 01:24:12,780 --> 01:24:14,750 Czy ktoś chce cukierka? 1696 01:24:14,750 --> 01:24:16,000 >> GŁOŚNIK 4: Tak. 1697 01:24:16,000 --> 01:24:18,667