1 00:00:00,000 --> 00:00:12,410 >> [Odtwarzanie muzyki] 2 00:00:12,410 --> 00:00:12,830 >> DAVID MALAN: W porządku. 3 00:00:12,830 --> 00:00:13,370 Witamy z powrotem. 4 00:00:13,370 --> 00:00:16,510 Jest CS50, a to Tydzień One, ciąg dalszy. 5 00:00:16,510 --> 00:00:20,050 Tak więc jeden z powodów, który został nam przechodzących wokół technologii, takich jak 6 00:00:20,050 --> 00:00:24,120 Google Szkło jest, że pochodzą one z coś znane jako API, 7 00:00:24,120 --> 00:00:25,980 Application Programming Interface. 8 00:00:25,980 --> 00:00:28,830 A co to oznacza to, że z odpowiednie pliki i z prawej 9 00:00:28,830 --> 00:00:32,850 dokumentacja, rzeczywiście można napisać oprogramowania nawet dla urządzeń takich jak te. 10 00:00:32,850 --> 00:00:36,200 >> A więc to, co mamy na myśli stronę koniec semestrów jest, jeśli projekt 11 00:00:36,200 --> 00:00:39,310 udziałem, powiedzmy, Szkło Google może odwołanie, zobaczymy co da się zrobić w 12 00:00:39,310 --> 00:00:42,220 Warunki podpinania się z niektórych hardware wypożyczenia oraz 13 00:00:42,220 --> 00:00:46,500 publicznie dostępne API, dzięki czemu można faktycznie rozpocząć tworzenie oprogramowania 14 00:00:46,500 --> 00:00:48,630 , który działa na tej samej szklanki Google. 15 00:00:48,630 --> 00:00:51,710 >> Innym urządzeniem, które graliśmy z późno, że myśleliśmy, że może być 16 00:00:51,710 --> 00:00:53,910 zabawa na koniec semestru jest ta mała rzecz tutaj. 17 00:00:53,910 --> 00:00:56,860 To się nazywa Motion Leap, a co masz by zobaczyć to technicznie 18 00:00:56,860 --> 00:01:00,280 reklama dla urządzenia, ale nie mówi się, co to zwłaszcza 19 00:01:00,280 --> 00:01:01,240 Urządzenie jest w stanie. 20 00:01:01,240 --> 00:01:05,550 I to też pochodzi z API poprzez co można napisać oprogramowanie do 21 00:01:05,550 --> 00:01:10,545 kontrolowania własnego komputera w sposób zupełnie jak ten jednominutowy film. 22 00:01:10,545 --> 00:01:12,070 >> [PLAYBACK VIDEO] 23 00:01:12,070 --> 00:02:08,002 24 00:02:08,002 --> 00:02:08,590 >> [END PLAYBACK VIDEO] 25 00:02:08,590 --> 00:02:11,190 >> Więc teraz, to urządzenie stanie się realizowane jako mały USB 26 00:02:11,190 --> 00:02:14,290 łącznik, który można podłączyć do swojego komputer, ale nie zdziwiłbym się, 27 00:02:14,290 --> 00:02:17,930 jeśli niedługo mamy te rodzaje technologie w kolejnej partii komputerów 28 00:02:17,930 --> 00:02:20,510 i Mac, dzięki czemu można, rzeczywiście, z nim interakcję 29 00:02:20,510 --> 00:02:21,650 sposób tak. 30 00:02:21,650 --> 00:02:24,250 W rzeczywistości to, co myślałem, że ja, też jest I zatrzymał się mały pokaz 31 00:02:24,250 --> 00:02:25,860 Program, który pochodzi z tego oprogramowania. 32 00:02:25,860 --> 00:02:28,700 Więc wrzuciłem mały czujnik przed moim laptopie. 33 00:02:28,700 --> 00:02:32,420 >> I jak widać, to już zdaje sobie sprawę, że moja ręka jest tam 34 00:02:32,420 --> 00:02:33,400 kontrolowania go. 35 00:02:33,400 --> 00:02:37,900 A wszystko to aplikacja nie jest maśle małe rzeczy, takie jak ten. 36 00:02:37,900 --> 00:02:41,080 Ale widać, że rzeczywiście Mam pięć palców tam. 37 00:02:41,080 --> 00:02:44,270 Jeśli uda nam się to zrobić, wszystkie 10, można sobie wyobrazić, schludny fortepianie 38 00:02:44,270 --> 00:02:45,390 Zastosowanie lub tym podobne. 39 00:02:45,390 --> 00:02:47,820 Więc jeśli chcesz, aby wymyślić po klasie dzisiaj i to jak zabawa z 40 00:02:47,820 --> 00:02:49,720 dobrze, zapraszamy do. 41 00:02:49,720 --> 00:02:52,930 Tak bardziej na tym kierunku semestru koniec. 42 00:02:52,930 --> 00:02:54,420 >> Więc kilka administracyjnych Anonse. 43 00:02:54,420 --> 00:02:58,690 Jeden, czy punkt przez ten piątek w południe w cs60.net/section. 44 00:02:58,690 --> 00:03:01,260 To jest URL na przebieg tych strona główna, jak również. 45 00:03:01,260 --> 00:03:04,010 W międzyczasie jednak, supersections zadebiutuje w tę niedzielę. 46 00:03:04,010 --> 00:03:07,800 Supersections to jednorazowa sprawa, ponieważ zajmuje nam trochę czasu na pracę 47 00:03:07,800 --> 00:03:09,470 kto jest w jakiej sekcji i gdzie. 48 00:03:09,470 --> 00:03:12,280 >> Tak więc w tym roku w niedzielę nie będę jednym sekcja dla tych mniej wygodne, 49 00:03:12,280 --> 00:03:14,040 jedna część dla tych, bardziej komfortowe. 50 00:03:14,040 --> 00:03:16,110 A ci z was gdzieś w między są mile widziane, aby przejść do 51 00:03:16,110 --> 00:03:17,850 jednej lub obu lub nie. 52 00:03:17,850 --> 00:03:19,150 Obie te będą filmowane. 53 00:03:19,150 --> 00:03:22,740 Będą w większym audytorium niż sekcja normalnie byłoby w. 54 00:03:22,740 --> 00:03:26,110 Ale celem jest, aby wyposażyć niektóre komfort z problemu ustawić jeden, 55 00:03:26,110 --> 00:03:29,910 z C, z CS50 urządzenia, to weekend, jeszcze przed dowiedzieć się 56 00:03:29,910 --> 00:03:31,050 formalnego przypisania. 57 00:03:31,050 --> 00:03:34,700 Więc można spotkać się z TF i Twój mniejszy grupa sectionmates w około 58 00:03:34,700 --> 00:03:36,350 tygodniowy czas. 59 00:03:36,350 --> 00:03:38,200 >> Godziny pracy, w międzyczasie, zostały dzieje. 60 00:03:38,200 --> 00:03:41,020 Do skorzystania z nich dziś wieczorem lub jutro wieczorem, jeśli chcesz. 61 00:03:41,020 --> 00:03:43,460 Set Problem 0 przypada na piątek. 62 00:03:43,460 --> 00:03:46,680 Jest to dzień później niż regularnie odbyły się w czwartek. 63 00:03:46,680 --> 00:03:50,410 Ale z zestawem problemów 1, zobaczysz że zawiera niektóre rozgrzewki 64 00:03:50,410 --> 00:03:52,770 ćwiczenia, z którymi sam może rozszerzyć swoją 65 00:03:52,770 --> 00:03:54,660 Termin od czwartku do piątku. 66 00:03:54,660 --> 00:03:58,410 Problem 1 set Tymczasem zadebiutuje na stronie internetowej to oczywiście nadchodzących 67 00:03:58,410 --> 00:04:02,000 Piątek, jeśli chcesz, aby zwinąć się z to tak jak ja kiedyś późnym 68 00:04:02,000 --> 00:04:04,370 Piątkowy wieczór w swoim pokoju. 69 00:04:04,370 --> 00:04:07,660 >> Więc cs50.net/appliance jest miejsce, gdzie można uzyskać CS50 urządzenia 70 00:04:07,660 --> 00:04:09,040 że zaczęliśmy używać w poniedziałek. 71 00:04:09,040 --> 00:04:10,140 Użyjemy go nieco więcej dzisiaj. 72 00:04:10,140 --> 00:04:14,040 Ale zapewniamy, że problem ustawić 1 Specyfikacja poprowadzi cię przez 73 00:04:14,040 --> 00:04:16,490 dokładnie kroki, jakie należy aby ta i działa. 74 00:04:16,490 --> 00:04:22,120 Więc nie martw się o to robić przed Pset 1 jeśli bym raczej nie. 75 00:04:22,120 --> 00:04:22,660 >> Dobrze. 76 00:04:22,660 --> 00:04:27,180 Tak wyglądał w poniedziałek w kodzie źródłowym, ale w kontekście nowego 77 00:04:27,180 --> 00:04:30,895 język programowania, a mianowicie C i C, w przeciwieństwie do zera, nie jest graficznym. 78 00:04:30,895 --> 00:04:32,270 To nie puzzle. 79 00:04:32,270 --> 00:04:34,450 To bardziej angielsko-jak składnia. 80 00:04:34,450 --> 00:04:37,140 I jest kilka etapów w rzeczywistości pisanie i uruchamianie 81 00:04:37,140 --> 00:04:41,650 Program w C, bo oprócz źródła kod tak, trzeba coś 82 00:04:41,650 --> 00:04:42,890 zwany kompilator. 83 00:04:42,890 --> 00:04:46,682 A w laika, co ma kompilator dla nas zrobić? 84 00:04:46,682 --> 00:04:47,650 Tak. 85 00:04:47,650 --> 00:04:51,040 >> STUDENT: To konwertuje kod że piszesz do 0s i 1s. 86 00:04:51,040 --> 00:04:51,151 >> DAVID MALAN: Dobry. 87 00:04:51,151 --> 00:04:53,580 Więc to konwertuje kod piszemy do 0s i 1s. 88 00:04:53,580 --> 00:04:57,730 Przetwarza on tak zwany kod źródłowy kod obiektu, z czego ten ostatni wygląda 89 00:04:57,730 --> 00:04:59,140 trochę coś takiego. 90 00:04:59,140 --> 00:05:02,860 I to jest procesor, mózgi wewnątrz komputer, który z powodu 91 00:05:02,860 --> 00:05:06,280 ludzie, którzy stworzyli te komputery, wiedzieć, co te sekwencje 92 00:05:06,280 --> 00:05:07,460 od średniej 0s i 1s. 93 00:05:07,460 --> 00:05:08,640 >> Być może oznacza to, druk. 94 00:05:08,640 --> 00:05:10,265 Być może oznacza to, że dodatek. 95 00:05:10,265 --> 00:05:11,610 Być może oznacza to, odejmowanie. 96 00:05:11,610 --> 00:05:13,350 Być może oznacza to, wyświetlanie grafiki. 97 00:05:13,350 --> 00:05:16,870 Istnieją predefiniowane wzorce bitów że świat postanowił myśli 98 00:05:16,870 --> 00:05:17,700 pewne rzeczy. 99 00:05:17,700 --> 00:05:20,760 Ale w większości w tym kursie, będziemy pracować na wyższym poziomie, a 100 00:05:20,760 --> 00:05:24,180 my przyjąć, że istnieją rzeczy, jak kompilatory, które mogą 101 00:05:24,180 --> 00:05:27,670 funkcjonowanie naszych kodu źródłowego w sposób zamierzamy. 102 00:05:27,670 --> 00:05:31,660 >> Więc programie pisaliśmy w zeszłym tygodniu pierwszy a następnie zaczął do portu, tak aby 103 00:05:31,660 --> 00:05:33,920 mówić, C to przeszłość Poniedziałek, to było. 104 00:05:33,920 --> 00:05:35,700 Gdy zielona flaga kliknięciu przywitać. 105 00:05:35,700 --> 00:05:37,430 To, oczywiście, napisany w Scratch. 106 00:05:37,430 --> 00:05:40,710 I stwierdził, że ekwiwalent Program w C wyglądał trochę 107 00:05:40,710 --> 00:05:41,520 coś takiego. 108 00:05:41,520 --> 00:05:45,050 >> Więc to, co myślałem, że my na początku jest, niech odciąć to, co wygląda na pierwszy 109 00:05:45,050 --> 00:05:48,790 rzut oka, co prawda, w dość ezoteryczne składnia, ale można zacząć dostrzegać 110 00:05:48,790 --> 00:05:50,160 stanie dość szybko. 111 00:05:50,160 --> 00:05:53,770 Co my też dzisiaj zrobić, to zapewnić Ci z modelu niektóre psychiczne 112 00:05:53,770 --> 00:05:57,280 kanonicznych, niektóre standardowe konstrukcje w programowaniu. 113 00:05:57,280 --> 00:06:00,420 A potem będziemy rzeczywiście dostać w swoje ręce dirty na przykładach, jak również. 114 00:06:00,420 --> 00:06:04,140 >> Tak więc dla tych z Was, bardziej komfortowe, sobie sprawę, że w tym tygodniu, a potem następne 115 00:06:04,140 --> 00:06:05,940 tydzień może równie dobrze być nieco recenzji. 116 00:06:05,940 --> 00:06:08,810 Ale szczególnie gdy hacker wydanie problemu set 1 wychodzi na 117 00:06:08,810 --> 00:06:12,330 Strona Kursu w piątek, ja sądzę, przekonasz się, że nawet, jak wypełnić 118 00:06:12,330 --> 00:06:15,390 niektóre półprodukty w kolejnym tygodniu lub dwóch, zaczniesz się coraz bardziej 119 00:06:15,390 --> 00:06:18,410 zakwestionowane i spotkać nowe i nowsze rzeczy. 120 00:06:18,410 --> 00:06:21,310 >> Warto więc drażnić program apart kilka linii na raz. 121 00:06:21,310 --> 00:06:24,140 Na samej górze, co mamy technicznie nazywa 122 00:06:24,140 --> 00:06:25,950 Dyrektywa preprocesora. 123 00:06:25,950 --> 00:06:30,510 To jest tylko linii kodu, który mówi obejmować zawartość pliku 124 00:06:30,510 --> 00:06:35,080 zwany standard I / N, standardowe wejście - czy, przepraszam, standard I / O, standard 125 00:06:35,080 --> 00:06:38,670 wejścia / wyjścia,. h, wewnątrz mojego własnego programu. 126 00:06:38,670 --> 00:06:41,670 >> Więc innymi słowy, jeśli napisał to Program z prostym edytorem tekstu takim jak 127 00:06:41,670 --> 00:06:45,260 gedit, prostszy odpowiednik coś jak Microsoft Word, które 128 00:06:45,260 --> 00:06:50,970 instrukcja, # include stdio.h, jest po prostu zamierza poinformować kompilator, chwyć 129 00:06:50,970 --> 00:06:56,080 Zawartość tego innego pliku, stdio.h, i wklej je tutaj. 130 00:06:56,080 --> 00:06:57,090 >> Teraz, dlaczego mnie to obchodzi? 131 00:06:57,090 --> 00:07:01,850 Czego możemy twierdzić jest wewnątrz archiwum nazwie stdio.h, która jest przechowywana 132 00:07:01,850 --> 00:07:05,490 gdzieś na dysku twardym lub w tym przypadek, gdzieś w CS50 urządzenia? 133 00:07:05,490 --> 00:07:06,635 Ktoś je tam dla mnie. 134 00:07:06,635 --> 00:07:09,910 Ale to, co w nim jest? 135 00:07:09,910 --> 00:07:13,020 >> Tak, tak, to jest deklaracja Funkcja o nazwie printf. 136 00:07:13,020 --> 00:07:17,400 Więc printf przypomina funkcja wyświetla słowa i znaki i 137 00:07:17,400 --> 00:07:20,160 Liczby na ekranie w mojej licytacji. 138 00:07:20,160 --> 00:07:21,220 Ale ja nie napisałem. 139 00:07:21,220 --> 00:07:22,230 CS50 nie pisać. 140 00:07:22,230 --> 00:07:26,990 Lat temu ktoś napisał to, a oni zasadniczo dał nam przepis na niego 141 00:07:26,990 --> 00:07:29,110 w pliku o nazwie stdio.h. 142 00:07:29,110 --> 00:07:33,240 Tak, że pierwsza linia po prostu daje mi dostęp do funkcji, które ktoś inny 143 00:07:33,240 --> 00:07:36,500 napisał rok temu m.in. które są printf. 144 00:07:36,500 --> 00:07:39,450 >> Teraz, następna linia będę machać Moje strony Ręka na, przynajmniej dopóki w przyszłym tygodniu. 145 00:07:39,450 --> 00:07:43,620 Ale teraz wiem, że int main (void) jest zasadniczo równoważne tego 146 00:07:43,620 --> 00:07:46,310 żółty kawałek układanki, gdy flag green kliknięciu. 147 00:07:46,310 --> 00:07:49,510 Świat, rok temu postanowiła, że ​​jeśli piszesz program w 148 00:07:49,510 --> 00:07:53,150 język o nazwie C, zaczniesz Twój program z linii 149 00:07:53,150 --> 00:07:54,410 , który wygląda tak. 150 00:07:54,410 --> 00:07:57,650 W prawie tydzień czasu, to zrobi Poczucie co int jest co nieważne jest. 151 00:07:57,650 --> 00:08:00,840 Ale teraz, po prostu myśleć o tym jak ten żółty kawałek układanki. 152 00:08:00,840 --> 00:08:04,550 >> Teraz obok mamy nawias klamrowy następnie innym bliskim klamrą kręcone, 153 00:08:04,550 --> 00:08:05,240 że tak powiem. 154 00:08:05,240 --> 00:08:07,430 I zobaczymy je w całej programów w języku C, jak również 155 00:08:07,430 --> 00:08:08,930 JavaScript i PHP. 156 00:08:08,930 --> 00:08:11,345 I te właśnie hermetyzacji związanych z linii kodu. 157 00:08:11,345 --> 00:08:14,600 Kręcone w zasadzie open klamra mówi, tutaj jest jakiś kod. 158 00:08:14,600 --> 00:08:17,590 I zamknięte klamra kręcone, co jest pochylone w innym kierunku, tak 159 00:08:17,590 --> 00:08:19,920 Oznacza to, że jest to dla odpowiedni kod. 160 00:08:19,920 --> 00:08:22,970 >> Więc soczyste linia w tym pierwszym Program jest ostatnim, printf, 161 00:08:22,970 --> 00:08:25,080 cytat-cytatu, hello world. 162 00:08:25,080 --> 00:08:30,670 I nazywa rzeczy między cytaty, co ostatnim razem? 163 00:08:30,670 --> 00:08:31,285 Więc to jest ciąg. 164 00:08:31,285 --> 00:08:35,309 A łańcuch jest tylko technika określenie sekwencji 165 00:08:35,309 --> 00:08:37,169 znaki, słowa, frazy. 166 00:08:37,169 --> 00:08:39,380 Nawet jedna litera może być podwójnie cytowane. 167 00:08:39,380 --> 00:08:41,840 Ale to sekwencja zera lub więcej znaków. 168 00:08:41,840 --> 00:08:43,650 >> Backslash-n, choć wygląda trochę dziwne. 169 00:08:43,650 --> 00:08:46,290 Ale to po prostu coś znaczyło Prosty do komputera. 170 00:08:46,290 --> 00:08:48,060 Co backslash-n? 171 00:08:48,060 --> 00:08:48,570 Nowa linia. 172 00:08:48,570 --> 00:08:52,490 Więc to tylko sekwencja specjalna znaki, że świat postanowił 173 00:08:52,490 --> 00:08:56,880 środki wprowadzone na końcu linii tam, ponieważ kompilator będzie rzeczywiście dostać 174 00:08:56,880 --> 00:09:02,280 zmieszany, zazwyczaj, jeśli, bardzo zrozumiałe, ale nieprawidłowo, po prostu 175 00:09:02,280 --> 00:09:04,570 rozpocząć naciskając enter, aby umieścić Nowe linie w kodzie. 176 00:09:04,570 --> 00:09:07,150 Trzeba być trochę więcej jednoznaczne z backslash-n. 177 00:09:07,150 --> 00:09:10,540 >> I zobaczymy, istnieje kilka innych takich wzorce dla znaków specjalnych. 178 00:09:10,540 --> 00:09:14,340 Na przykład, jeśli chcesz, aby twoje umysłowi wędrować do wypadku na rogu, 179 00:09:14,340 --> 00:09:18,080 Załóżmy, że chcę, aby wydrukować cudzysłów na ekranie 180 00:09:18,080 --> 00:09:21,840 niezależnie od powodu, że wydaje się być nieco problematyczne, prawda? 181 00:09:21,840 --> 00:09:24,990 Bo jeśli mogę umieścić cudzysłów w middle of "Hello, World", za co 182 00:09:24,990 --> 00:09:30,120 Powodem, dlaczego to się wydaje potencjalnie problematyczne? 183 00:09:30,120 --> 00:09:32,180 Rozbija ciąg. 184 00:09:32,180 --> 00:09:34,700 >> Kompilator to tylko program. 185 00:09:34,700 --> 00:09:37,210 Program taki jak kompilator jest po prostu będzie czytać górę Kod do dołu, 186 00:09:37,210 --> 00:09:37,990 od lewej do prawej. 187 00:09:37,990 --> 00:09:41,850 A jeśli widzi trzy cudzysłowy zamiast dwóch, to nie będzie wiedzieć 188 00:09:41,850 --> 00:09:45,210 jeśli masz na myśli, że coś się w lewo powinien być ciąg znaków lub rzecz 189 00:09:45,210 --> 00:09:46,570 prawo, lub całość. 190 00:09:46,570 --> 00:09:50,560 To niejednoznaczne, a więc to, co typowe kompilator to zrobić, to po prostu cudo na zewnątrz, 191 00:09:50,560 --> 00:09:53,710 i da ci komunikat o błędzie, a zrobić sobie z tym problemem. 192 00:09:53,710 --> 00:09:58,120 >> Tak więc biorąc pod uwagę, że backslash-n oznacza nowy linii, co by twój instynkt teraz 193 00:09:58,120 --> 00:10:02,610 rozpocznie się, jeśli chcesz to coś nietypowe jak double 194 00:10:02,610 --> 00:10:06,210 Cytując wnętrze to inaczej cytowany ciąg? 195 00:10:06,210 --> 00:10:07,640 Backslash-cudzysłów. 196 00:10:07,640 --> 00:10:09,630 A więc zobaczymy tego rodzaj wzorca też. 197 00:10:09,630 --> 00:10:12,490 >> Jeśli chcesz zrobić coś małego dziwne, przekonasz się, że 198 00:10:12,490 --> 00:10:15,060 Rozwiązania często zgodne z wzorcem, i odwrotny ukośnik 199 00:10:15,060 --> 00:10:17,150 oznacza sekwencję wyjścia. 200 00:10:17,150 --> 00:10:20,320 A to po prostu oznacza coś specjalnego że musimy do reprezentowania w 201 00:10:20,320 --> 00:10:21,060 inny sposób. 202 00:10:21,060 --> 00:10:23,830 Jak dla jak można reprezentować backslash, dobrze, my będziemy 203 00:10:23,830 --> 00:10:24,550 wrócić do tego. 204 00:10:24,550 --> 00:10:26,930 Ale odpowiedź też jest w rzeczywistości bit oczywiste. 205 00:10:26,930 --> 00:10:31,080 >> Więc teraz przedstawić inny konstrukcje programistyczne 206 00:10:31,080 --> 00:10:31,915 że widział w Scratch. 207 00:10:31,915 --> 00:10:34,790 Pewnie za pewnik już jeśli już zanurkował 208 00:10:34,790 --> 00:10:36,060 Problem ustawić 0. 209 00:10:36,060 --> 00:10:40,950 Ale przejdźmy teraz wprowadzić składni w C do nich w inny sposób dość intuicyjny 210 00:10:40,950 --> 00:10:42,300 idee, przynajmniej niektóre z nich. 211 00:10:42,300 --> 00:10:45,570 >> Więc to pojęcie warunku lub gałęzi, podczas gdy wcześniej my 212 00:10:45,570 --> 00:10:49,330 reprezentował go z kodem, który wyglądał jak to w lewej Scratch - 213 00:10:49,330 --> 00:10:52,200 jeśli x jest mniejsze od y, to tak powiedzieć - 214 00:10:52,200 --> 00:10:56,760 zamiast teraz w C - pozwól mi doskonalić w sprawie najprostszym przypadku - 215 00:10:56,760 --> 00:11:01,235 my po prostu powiedzieć, czy otworzyć nawias, coś jest prawdą - 216 00:11:01,235 --> 00:11:04,190 Wyrażenie logiczne jest zamiar iść gdzie powiedziałem warunek - 217 00:11:04,190 --> 00:11:08,170 zamknij nawias, to nie to, co jest wewnątrz tych klamrach. 218 00:11:08,170 --> 00:11:11,020 >> Więc i tu nawiasy są trochę jak Scratch-tych 219 00:11:11,020 --> 00:11:12,460 U-kształtne kawałki układanki. 220 00:11:12,460 --> 00:11:14,890 Czy to, co jest w środku tych klamrach. 221 00:11:14,890 --> 00:11:16,790 W tym przypadku, slash slash. 222 00:11:16,790 --> 00:11:19,720 I zauważyć, to jest do przodu slash, a nie odwrotny ukośnik. 223 00:11:19,720 --> 00:11:21,440 Ukośnik, ukośnik, dla tych, którzy już zaprogramowany 224 00:11:21,440 --> 00:11:23,370 przed, po prostu oznacza - 225 00:11:23,370 --> 00:11:24,190 to tylko komentarz. 226 00:11:24,190 --> 00:11:26,630 Komentarz nie linia jest kodu, per se. 227 00:11:26,630 --> 00:11:30,200 To linia angielskiego, które, ludzi, napisałem do siebie, aby 228 00:11:30,200 --> 00:11:33,540 może przypominać coś zrobić, aby wyjaśnić sobie, aby wyjaśnić 229 00:11:33,540 --> 00:11:35,260 ktoś inny, co kod robi. 230 00:11:35,260 --> 00:11:37,050 To tylko opisowy komentarz. 231 00:11:37,050 --> 00:11:40,880 >> Teraz, oczywiście, możemy mieć dwukierunkową rozwidleniu dróg tylko w ten sposób, 232 00:11:40,880 --> 00:11:43,930 trójstronna widelec w drodze, wykonując tego, a jeśli nadal tego 233 00:11:43,930 --> 00:11:47,570 wzór, można mieć cztery-sposób, Pięć sposób, sześć-way widły w drodze, jeśli 234 00:11:47,570 --> 00:11:50,150 trzeba obsłużyć, rzeczywiście, , że wiele warunków. 235 00:11:50,150 --> 00:11:52,010 I wtedy dostrzec paralelizm tutaj - 236 00:11:52,010 --> 00:11:55,070 if (warunek), else if (warunek), i tylko jedno, że jest trochę 237 00:11:55,070 --> 00:11:58,010 dziwne jest ostatnim, który to po prostu inny. 238 00:11:58,010 --> 00:12:01,170 Jednak ponownie, to jest identyczne, koncepcyjnie, do tego, co zrobiliśmy 239 00:12:01,170 --> 00:12:04,690 wcześniej, chociaż składnia się trochę przyzwyczaić. 240 00:12:04,690 --> 00:12:07,730 >> Teraz, w tym przykładzie, istnieje niektóre inne dziwne składni. 241 00:12:07,730 --> 00:12:11,220 Widzimy printf ponownie otwarty nawias, i zamknij nawias. 242 00:12:11,220 --> 00:12:13,190 A w środku jest cudzysłowiu. 243 00:12:13,190 --> 00:12:17,060 Nawiasy, w kontekście z printf, idź na lewo 244 00:12:17,060 --> 00:12:18,160 i prawo, co? 245 00:12:18,160 --> 00:12:22,190 Co mamy opisują, że cytowany ciąg jako bardziej ogólnie? 246 00:12:22,190 --> 00:12:23,320 >> Więc to jest argument. 247 00:12:23,320 --> 00:12:26,620 Za każdym razem, musisz użyć funkcji, jak printf, a następnie otwarty nawias i 248 00:12:26,620 --> 00:12:30,330 zamknij nawias i coś wewnątrz to, czy jest to ciąg znaków lub 249 00:12:30,330 --> 00:12:34,420 całkowita, lub cokolwiek innego, co w między te nawiasy nazywa 250 00:12:34,420 --> 00:12:35,110 argumentem. 251 00:12:35,110 --> 00:12:37,910 >> A argument, tylko wpływa Zachowanie z funkcji. 252 00:12:37,910 --> 00:12:39,990 W tym przypadku, to jest całkiem jasne, w jaki sposób. 253 00:12:39,990 --> 00:12:44,480 x 00:12:47,720 I printf będzie wydrukować dokładnie to. 255 00:12:47,720 --> 00:12:51,590 Bo na pewno, że rok temu, osoba, który realizowany printf nie miał pojęcia, 256 00:12:51,590 --> 00:12:55,000 co ludzkie następców zamiar użyć printf dla. 257 00:12:55,000 --> 00:12:58,610 Więc dlatego argumenty istnieją, wpływać na zachowanie tych funkcji, po 258 00:12:58,610 --> 00:12:59,450 zostały napisane. 259 00:12:59,450 --> 00:13:00,780 >> Teraz wyrażenie logiczne. 260 00:13:00,780 --> 00:13:02,470 Widzieliśmy to wcześniej w Scratch. 261 00:13:02,470 --> 00:13:06,680 Okazuje się w C można również "lub" je razem, że tak powiem. 262 00:13:06,680 --> 00:13:10,930 Dwa pręty pionowe oznacza, że ​​ten blok kodu, to to zrobić, 263 00:13:10,930 --> 00:13:15,350 wykonać, jeśli pierwszy warunek jest spełniony lub drugi warunek jest spełniony. 264 00:13:15,350 --> 00:13:17,710 I choć może nie zrobili to w Scratch, to rzeczywiście może 265 00:13:17,710 --> 00:13:20,580 to zrobić w podstaw, można również wyrażać się inaczej - 266 00:13:20,580 --> 00:13:25,300 Jeśli pierwszy i drugi warunek warunek jest spełniony, to nie to, co jest 267 00:13:25,300 --> 00:13:27,160 wewnątrz nawiasy. 268 00:13:27,160 --> 00:13:31,210 >> I tak na marginesie, to jest powód, double i double Ampersand 269 00:13:31,210 --> 00:13:34,610 pionowy pasek, zobaczymy ostatecznie że jeden pionowy pasek i 270 00:13:34,610 --> 00:13:38,710 single Ampersand rzeczywiście mają różne czyli w C. Tak więc teraz, 271 00:13:38,710 --> 00:13:41,840 że powielanie symboli jest zamierzone. 272 00:13:41,840 --> 00:13:45,070 >> Warto więc przedstawić krótko, ten drugi trochę składni. 273 00:13:45,070 --> 00:13:48,940 To nie całkiem przenieść na Scratch, ale twierdzą, że mogę 274 00:13:48,940 --> 00:13:55,190 wdrożenie pojęcia czy innego, jeśli else, jeśli inny, jeśli else korzystania 275 00:13:55,190 --> 00:13:56,760 coś, co nazywa instrukcji switch. 276 00:13:56,760 --> 00:14:00,820 A jedynym powodem tego naprawdę istnieje jest po prostu dać, programista, 277 00:14:00,820 --> 00:14:05,470 nieco inny sposób rozwiązywania niektórych Problem, choć logicznie 278 00:14:05,470 --> 00:14:07,340 nie daje żadnych nowych możliwości. 279 00:14:07,340 --> 00:14:08,530 >> Mam tu na myśli to. 280 00:14:08,530 --> 00:14:13,330 Kiedy mówisz, przełącznik, a następnie spację, a następnie para nawiasów, wewnątrz 281 00:14:13,330 --> 00:14:14,570 które idzie wyrażenie - 282 00:14:14,570 --> 00:14:18,010 i to może być trochę nieoczywisty na początku, ale to nie jest argument, 283 00:14:18,010 --> 00:14:20,680 technicznie, ponieważ switch nie jest funkcją. 284 00:14:20,680 --> 00:14:24,230 Więc teraz, po prostu zakładamy, że używamy nawiasy w różnych miejscach 285 00:14:24,230 --> 00:14:25,250 z różnych powodów. 286 00:14:25,250 --> 00:14:29,310 >> Więc włącz wypowiedzi oznacza, że ​​może umieścić zmienną wewnątrz tych 287 00:14:29,310 --> 00:14:31,350 nawiasy gdzie jest napisane wypowiedzi. 288 00:14:31,350 --> 00:14:33,090 A potem, jeśli zmienna - 289 00:14:33,090 --> 00:14:35,400 Przypuszczam, że to się nazywa x, a to jest po prostu liczbą całkowitą - 290 00:14:35,400 --> 00:14:38,900 Można następnie wyliczyć w moim slajdzie tu coś takiego. 291 00:14:38,900 --> 00:14:41,690 Jeśli x jest moja zmienna, a ja chcesz coś zrobić, jeśli x 292 00:14:41,690 --> 00:14:43,480 równa 1, można to zrobić. 293 00:14:43,480 --> 00:14:46,660 >> Jeśli zamiast tego chcesz coś zrobić jeśli x jest 2, może to zrobić. 294 00:14:46,660 --> 00:14:50,390 Inaczej, jeśli chcę zrobić coś innego całości, mogę mieć sprawę za zwłokę 295 00:14:50,390 --> 00:14:52,750 takim przypadku zrobić, to coś innego. 296 00:14:52,750 --> 00:14:58,730 Więc w tym sensie jest to odpowiednik jeśli x jest równa jest równa 1, else if else, 297 00:14:58,730 --> 00:15:01,150 ale wspominam o tym teraz, tylko dlatego, zobaczymy go ponownie. 298 00:15:01,150 --> 00:15:03,720 Ale teraz, po prostu wiem, że ono istnieje. 299 00:15:03,720 --> 00:15:04,220 >> Dobrze. 300 00:15:04,220 --> 00:15:07,660 Więc te kilka ostatnich są nieco bardziej skomplikowane na pierwszy rzut oka, ale robią 301 00:15:07,660 --> 00:15:09,385 coś całkiem proste. 302 00:15:09,385 --> 00:15:14,410 Do pętli w C jest fragment kodu, który po prostu robi coś znowu i 303 00:15:14,410 --> 00:15:15,330 znowu i znowu. 304 00:15:15,330 --> 00:15:17,590 I tylko denerwujące rzeczą jest to, że jest to, że jest to trochę tajemnicze 305 00:15:17,590 --> 00:15:21,380 wyrazić się w ten cykliczny wzór, ale świat znormalizowana 306 00:15:21,380 --> 00:15:22,450 w następujący sposób. 307 00:15:22,450 --> 00:15:25,760 >> Podczas korzystania z pętli for, masz para nawiasów ponownie. 308 00:15:25,760 --> 00:15:27,570 I zauważyć dwa średniki tam. 309 00:15:27,570 --> 00:15:34,380 Te dwa średniki oddzielne trzy Różne wyrażenia wewnątrz 310 00:15:34,380 --> 00:15:35,020 nawiasy. 311 00:15:35,020 --> 00:15:37,170 Jednym z nich jest tak zwane uruchamiania. 312 00:15:37,170 --> 00:15:38,830 Jednym z nich jest tak zwany stan. 313 00:15:38,830 --> 00:15:40,210 I jeden jest tak zwane aktualizacje. 314 00:15:40,210 --> 00:15:43,240 >> Patrząc na to w sposób abstrakcyjny, jest to zupełnie nieoczywiste, więc spójrzmy 315 00:15:43,240 --> 00:15:44,630 w konkretnym przykładzie. 316 00:15:44,630 --> 00:15:46,720 W Scratch mieliśmy blok powtarzania. 317 00:15:46,720 --> 00:15:50,670 A ten blok powiedział powtórzyć 10 razy, powiedzmy "Hello, world". Pozwól, że zastrzeżenia do 318 00:15:50,670 --> 00:15:53,810 teraz, i będziemy wracać do tego, a to też będzie bardziej znane 319 00:15:53,810 --> 00:15:57,345 Ci niedługo odpowiednik C Kod może być uznane to - 320 00:15:57,345 --> 00:16:02,320 na rachunku oraz przestrzeni, para nawiasów, zauważają średników w 321 00:16:02,320 --> 00:16:05,730 tam, co oddzielić trzy odrębne rzeczy, inicjalizacji 322 00:16:05,730 --> 00:16:07,320 Stan i zmiana. 323 00:16:07,320 --> 00:16:08,840 >> I zgadywać, co Najpierw robi. 324 00:16:08,840 --> 00:16:10,690 Int i = 0. 325 00:16:10,690 --> 00:16:15,120 Surowcem laika, co jest że robi dla nas, chyba? 326 00:16:15,120 --> 00:16:15,590 Więc tak. 327 00:16:15,590 --> 00:16:19,630 Jest to deklaracja zmiennej o nazwie i, i to co daje, jakie wartości? 328 00:16:19,630 --> 00:16:20,220 0. 329 00:16:20,220 --> 00:16:24,280 Więc to tworzenie zmiennej o nazwie i, przechowywania wartości 0 w nim. 330 00:16:24,280 --> 00:16:26,420 To tak zwane inicjalizacji. 331 00:16:26,420 --> 00:16:29,360 >> Dobra, teraz ja twierdził przed że środkowej rzeczy, i 332 00:16:29,360 --> 00:16:31,760 <10, to ten stan. 333 00:16:31,760 --> 00:16:32,730 Więc to, co robi? 334 00:16:32,730 --> 00:16:36,560 A co do pętli, gdy nie Program z pętli for jest prowadzony, jest 335 00:16:36,560 --> 00:16:41,050 za każdym razem, gdy komputer przechodzi przez ta pętla, od góry do dołu, od góry do 336 00:16:41,050 --> 00:16:43,740 dno, tak jak was zrobił, gdy licząc siebie i siadając, 337 00:16:43,740 --> 00:16:47,090 znowu i znowu i znowu, komputer będzie 338 00:16:47,090 --> 00:16:48,560 aby sprawdzić ten warunek. 339 00:16:48,560 --> 00:16:51,140 I, jeśli jest mniejsze niż 10, to zrobi to ponownie. 340 00:16:51,140 --> 00:16:53,100 Jeśli I jest mniejsza niż 10, to zrobi to ponownie. 341 00:16:53,100 --> 00:16:55,030 Jeśli I jest mniejsza niż dziesięć, to zrobi to ponownie. 342 00:16:55,030 --> 00:16:57,330 Tak, że wydaje się sugerować, że Mam nadzieję, że się zmienia. 343 00:16:57,330 --> 00:16:59,010 W przeciwnym razie mielibyśmy nieskończoną pętlę. 344 00:16:59,010 --> 00:17:02,590 I rzeczywiście, i zmienia się, ponieważ Ostatnią rzeczą, po średnikiem tam 345 00:17:02,590 --> 00:17:05,569 jest trochę tajemnicze składnia i + +. 346 00:17:05,569 --> 00:17:07,630 Ale tych, którzy już to zrobisz wcześniej, że po prostu oznacza, 347 00:17:07,630 --> 00:17:08,609 po prostu to, co? 348 00:17:08,609 --> 00:17:09,730 >> Studenci: [wstawienie GŁOSÓW]. 349 00:17:09,730 --> 00:17:10,740 >> DAVID MALAN: Dodaj 1 do I. 350 00:17:10,740 --> 00:17:11,819 Zwiększ i.. 351 00:17:11,819 --> 00:17:13,910 Tak więc widzieliśmy puzzle Scratch piece na to, rzeczywiście. 352 00:17:13,910 --> 00:17:18,230 To nie wygląda i + +, ale to po prostu oznacza, po prostu, zwiększamy 353 00:17:18,230 --> 00:17:24,040 wartość i przez 1 za każdym razem to zrobić. 354 00:17:24,040 --> 00:17:26,910 Tak dosłownie, należy rozpocząć od Inicjowanie do 0. 355 00:17:26,910 --> 00:17:29,520 Następnie należy sprawdzić swoją kondycję. 356 00:17:29,520 --> 00:17:31,070 Czy 0 mniej niż 10? 357 00:17:31,070 --> 00:17:31,730 Tak. 358 00:17:31,730 --> 00:17:32,910 Idziemy przez pętlę. 359 00:17:32,910 --> 00:17:35,150 >> Następną rzeczą, jaką twierdzą komputera zamiar zrobić, to to będzie 360 00:17:35,150 --> 00:17:35,910 do zwiększania i. 361 00:17:35,910 --> 00:17:37,080 Więc i teraz 1. 362 00:17:37,080 --> 00:17:37,940 Sprawdza stan. 363 00:17:37,940 --> 00:17:39,290 Czy 1 mniej niż 10? 364 00:17:39,290 --> 00:17:39,930 Oczywiście. 365 00:17:39,930 --> 00:17:41,030 Więc robi to ponownie. 366 00:17:41,030 --> 00:17:43,580 Potem przyrosty i + + do 2. 367 00:17:43,580 --> 00:17:44,610 Czy 2 mniej niż 10? 368 00:17:44,610 --> 00:17:45,230 Tak. 369 00:17:45,230 --> 00:17:46,670 I znowu i znowu i znowu. 370 00:17:46,670 --> 00:17:50,070 I w końcu, ze względu na plus plussing, mamy do i jest równe 10. 371 00:17:50,070 --> 00:17:51,675 10 mniej niż 10? 372 00:17:51,675 --> 00:17:52,990 No, oczywiście nie. 373 00:17:52,990 --> 00:17:55,320 I to jest punkt, w którym do pętli po prostu przestaje. 374 00:17:55,320 --> 00:17:58,320 A jeśli masz więcej kodu na ekran na dole, komputer 375 00:17:58,320 --> 00:18:01,620 Wpływy do uruchomienia tego kodu zamiast. 376 00:18:01,620 --> 00:18:05,380 >> Więc jeszcze raz, chociaż to będzie wyglądać i czuć się trochę dziwnie 377 00:18:05,380 --> 00:18:07,830 po pierwsze, z pewnością dla tych, którzy nigdy nie zaprogramowany wcześniej, 378 00:18:07,830 --> 00:18:11,640 dosłownie zmniejsza koncepcyjnie do tego, co w przeciwnym razie bardzo 379 00:18:11,640 --> 00:18:14,330 proste puzzle piece w Scratch. 380 00:18:14,330 --> 00:18:19,130 >> Dobra, obiecałem, że bym być inne analogi w Scratch. 381 00:18:19,130 --> 00:18:20,060 Jest to jeden też. 382 00:18:20,060 --> 00:18:21,700 I zobaczyliśmy tę chwilę ostatni raz. 383 00:18:21,700 --> 00:18:23,530 Ale pamiętam na zawsze zablokować w Scratch? 384 00:18:23,530 --> 00:18:25,490 To po prostu robi coś na zawsze? 385 00:18:25,490 --> 00:18:27,470 I twierdził, że można wdrożyć To, w ten sposób. 386 00:18:27,470 --> 00:18:29,740 I rzeczywiście można wdrożyć to na kilka różnych sposobów. 387 00:18:29,740 --> 00:18:34,260 >> Ale pętla jest po prostu inna sposób w C wyrażania siebie. 388 00:18:34,260 --> 00:18:37,080 Na koniec dnia, nie można zrobić Wszystko z pętli while, że 389 00:18:37,080 --> 00:18:38,360 nie może się na pętli. 390 00:18:38,360 --> 00:18:41,430 Są więc w końcu dzień funkcjonalnie takie same. 391 00:18:41,430 --> 00:18:43,840 Ale to pozwala wyrazić siebie trochę inaczej w 392 00:18:43,840 --> 00:18:44,850 w następujący sposób. 393 00:18:44,850 --> 00:18:49,720 >> Z pętli while, to, co jest w nawiasy, które jest sprawdzane ponownie i 394 00:18:49,720 --> 00:18:51,050 znowu i znowu. 395 00:18:51,050 --> 00:18:55,100 I tak szybko, jak to wyrażenie jest fałszywe, następnie pętla zatrzymuje wykonywanie, 396 00:18:55,100 --> 00:18:57,890 i komputer przechodzi do uruchomić jakikolwiek inny kod, który 397 00:18:57,890 --> 00:18:59,230 posiada w swoim archiwum. 398 00:18:59,230 --> 00:19:02,180 >> Ale, co ciekawe, jest tu że dosłownie wpisane prawdziwe. 399 00:19:02,180 --> 00:19:06,680 A prawda jest typ Boolean wartości, prawda czy fałsz. 400 00:19:06,680 --> 00:19:09,750 Więc może nigdy stać się prawdziwym false, jeśli mam dosłownie 401 00:19:09,750 --> 00:19:11,970 zakodowane go do mojego programu? 402 00:19:11,970 --> 00:19:12,470 Więc nie ma. 403 00:19:12,470 --> 00:19:13,730 To trochę dziwne, że to zrobiłem. 404 00:19:13,730 --> 00:19:15,190 Ale prawda jest prawdą. 405 00:19:15,190 --> 00:19:16,320 Nie ma plus plussing. 406 00:19:16,320 --> 00:19:17,820 Nie ma sensu zmiennych w tutaj. 407 00:19:17,820 --> 00:19:22,740 Tak, bo zakodowane przy prawdziwe, to pętla zawsze będzie oceniać 408 00:19:22,740 --> 00:19:24,090 znowu i znowu i znowu. 409 00:19:24,090 --> 00:19:27,660 >> Tak jak wiele razy to hello world do druku na ekranie? 410 00:19:27,660 --> 00:19:28,170 Zawsze. 411 00:19:28,170 --> 00:19:31,980 Nieskończoną liczbę razy, aż umiera baterii lub innych zewnętrznych 412 00:19:31,980 --> 00:19:32,730 zdarzenie. 413 00:19:32,730 --> 00:19:35,880 Więc to nie jest chyba najlepszy program napisać, że jeśli użytkownik 414 00:19:35,880 --> 00:19:38,660 nigdy nie może zakończyć swój program, to chyba nie to co chciałeś. 415 00:19:38,660 --> 00:19:41,070 >> Ale czasami, programy powinny ma nieskończoną pętlę. 416 00:19:41,070 --> 00:19:44,050 Na przykład, jeśli komputer ma Zegar na niego, to na pewno będzie 417 00:19:44,050 --> 00:19:48,130 ładne, czy zegar to nie zachować aktualizacji się zawsze, choć raz 418 00:19:48,130 --> 00:19:50,500 sekund lub raz minuty lub coś w tym stylu. 419 00:19:50,500 --> 00:19:53,690 Więc nawet nieskończone pętle mają swoje miejsce. 420 00:19:53,690 --> 00:19:54,360 >> Dobrze. 421 00:19:54,360 --> 00:19:55,190 Wreszcie, ten jeden. 422 00:19:55,190 --> 00:19:57,770 A ten jest trochę inaczej funkcjonalnie, i wrócimy do 423 00:19:57,770 --> 00:19:59,460 to prawdopodobnie w Pset 1. 424 00:19:59,460 --> 00:20:02,370 Ale jest jeszcze jeden rodzaj pętli nazywa robić podczas pętli. 425 00:20:02,370 --> 00:20:07,100 I tylko różnicą między zrobić, gdy pętla i, powiedzmy, pętli while, 426 00:20:07,100 --> 00:20:11,120 Jest to warunek, nie jest zaznaczone przed wykonaniem kodu, ale po 427 00:20:11,120 --> 00:20:12,080 wykonać kod. 428 00:20:12,080 --> 00:20:15,380 Tak więc u góry na chwilę loop, natomiast zrobić, gdy 429 00:20:15,380 --> 00:20:16,560 sprawdza je na dole. 430 00:20:16,560 --> 00:20:21,370 >> A to po prostu oznacza, że ​​pętla zazwyczaj wykonać więcej razy 431 00:20:21,370 --> 00:20:24,630 lub mniej razy niż pętli while? 432 00:20:24,630 --> 00:20:30,810 Potencjalnie więcej razy, bo zrobić , podczas gdy pętla jest wyraźnie mówią to zrobić, 433 00:20:30,810 --> 00:20:34,600 tylko po co wskazywać sprawdzić jeśli wewnątrz stan 434 00:20:34,600 --> 00:20:35,980 nawiasy, jest prawdą. 435 00:20:35,980 --> 00:20:37,940 >> Więc zobaczymy, to jeszcze raz prawdopodobnie w Pset 1. 436 00:20:37,940 --> 00:20:41,150 Jeśli kiedykolwiek chcesz zrobić coś na najmniej raz, a potem być może trochę więcej 437 00:20:41,150 --> 00:20:43,350 razy, to jest dobre konstrukt użyciu. 438 00:20:43,350 --> 00:20:46,970 Ale pętla, przeciwnie, będą sprawdzić jego stan jako pierwszy. 439 00:20:46,970 --> 00:20:50,660 I to do pętli w C, nie a, a, a dla pętli. 440 00:20:50,660 --> 00:20:54,700 I znowu, map całkiem ładnie z powrotem do zera, z wyjątkiem tego jednego nie 441 00:20:54,700 --> 00:20:57,350 dość mają ten sam analog w Scratch. 442 00:20:57,350 --> 00:20:58,880 >> Cóż, jak o, teraz, zmienne? 443 00:20:58,880 --> 00:21:02,600 Tak to jest jak się oświadczył zmienną składniowo drugi dzień. 444 00:21:02,600 --> 00:21:06,440 Miałem int, które twierdził jest liczbą całkowitą. 445 00:21:06,440 --> 00:21:09,690 I wtedy mieliśmy zmienną licznika, i średnik. 446 00:21:09,690 --> 00:21:11,070 Więc co to jest linia kodu robi? 447 00:21:11,070 --> 00:21:14,540 To jest, po prostu, deklarując zmienna - 448 00:21:14,540 --> 00:21:17,940 to jest, pytając komputer, daj mi część pamięci, daj mi kilka bitów - w 449 00:21:17,940 --> 00:21:19,450 które można przechowywać, co? 450 00:21:19,450 --> 00:21:20,300 Int. 451 00:21:20,300 --> 00:21:23,570 I średnik oznacza po prostu koniec linii kodu. 452 00:21:23,570 --> 00:21:25,500 >> Teraz druga linia jest prawdopodobnie pretty odgadnięcia. 453 00:21:25,500 --> 00:21:29,710 Co to jest licznik = 0; robi? 454 00:21:29,710 --> 00:21:31,690 To przypisanie 0 w kontratakach. 455 00:21:31,690 --> 00:21:33,470 I tak to jest inna rzecz to jest trochę denerwujące 456 00:21:33,470 --> 00:21:34,540 w porównaniu z, powiedzmy, algebry. 457 00:21:34,540 --> 00:21:39,110 Natomiast w algebrze, znak równości oznacza równa, tutaj w C, równa 458 00:21:39,110 --> 00:21:40,470 Znak oznacza przypisanie. 459 00:21:40,470 --> 00:21:45,380 Więc oznacza to, szuka tego, co jest na prawo do tego, co znajduje się po lewej stronie. 460 00:21:45,380 --> 00:21:49,030 I zobaczymy inny symbol, jest równa równa się, gdy chcemy faktycznie przetestować 461 00:21:49,030 --> 00:21:50,570 do jakości, nieco denerwująco. 462 00:21:50,570 --> 00:21:52,590 >> Ale to jest trochę nieefektywne. 463 00:21:52,590 --> 00:21:55,090 To trochę denerwujące, że mam zadeklarować zmienną i 464 00:21:55,090 --> 00:21:56,110 następnie nadać mu wartość. 465 00:21:56,110 --> 00:21:59,380 Więc C faktycznie pozwala nam uprościć i po prostu zrobić to wszystko naraz. 466 00:21:59,380 --> 00:22:01,330 Można zadeklarować zmienną z lewej strony. 467 00:22:01,330 --> 00:22:04,590 Nadal można wykonać zadanie na prawo umieszczając ten znak równości w 468 00:22:04,590 --> 00:22:05,030 middle. 469 00:22:05,030 --> 00:22:08,740 Tak więc na koniec dnia, te dwa są odpowiednik, ale ten, szczerze mówiąc, 470 00:22:08,740 --> 00:22:11,840 to chyba lepiej zwyczaj, aby dostać się tylko dlatego, że jest to trochę mniej 471 00:22:11,840 --> 00:22:15,040 kod, jest to trochę łatwiejsze do odczytania, i to tylko zaostrza 472 00:22:15,040 --> 00:22:17,470 Twój kod, by tak rzec. 473 00:22:17,470 --> 00:22:22,120 >> Wszelkie pytania do tej pory na pętli, na zmiennych, na warunkach, na 474 00:22:22,120 --> 00:22:27,001 Boolean, albo technicznie lub koncepcyjnie? 475 00:22:27,001 --> 00:22:28,010 Dobrze. 476 00:22:28,010 --> 00:22:30,690 Więc teraz to następny dostaje trochę bardziej interesująca. 477 00:22:30,690 --> 00:22:34,790 I to jest przykład kładę się ostatnio raz, że po prostu mapuje przykład Scratch 478 00:22:34,790 --> 00:22:35,820 na do C. 479 00:22:35,820 --> 00:22:36,580 >> Więc funkcja. 480 00:22:36,580 --> 00:22:38,110 W laika, co to jest funkcja? 481 00:22:38,110 --> 00:22:42,900 482 00:22:42,900 --> 00:22:44,350 Masz być odważniejsze z Twojej odpowiedzi. 483 00:22:44,350 --> 00:22:45,020 Co to jest funkcja? 484 00:22:45,020 --> 00:22:46,320 >> STUDENT: Czy coś. 485 00:22:46,320 --> 00:22:46,780 >> DAVID MALAN: Co to jest? 486 00:22:46,780 --> 00:22:48,000 >> STUDENT: Czy coś. 487 00:22:48,000 --> 00:22:48,710 >> DAVID MALAN: Czy coś. 488 00:22:48,710 --> 00:22:49,000 OK. 489 00:22:49,000 --> 00:22:49,590 Zaczniemy tam. 490 00:22:49,590 --> 00:22:51,270 Więc funkcja coś robi. 491 00:22:51,270 --> 00:22:55,160 Więc jest to fragment kodu, który znajduje się zasadniczo realizowane w innym miejscu, że 492 00:22:55,160 --> 00:22:56,620 rzeczywiście robi coś. 493 00:22:56,620 --> 00:23:00,180 Teraz, co ciekawe o funkcji jest to, że może to potrwać wejście, 494 00:23:00,180 --> 00:23:02,710 i może produkować wyjście. 495 00:23:02,710 --> 00:23:05,090 I niech to rzeczywiście podjąć Spójrz na to. 496 00:23:05,090 --> 00:23:09,030 >> Więc człowiek za kurtyną było celowe chwilą. 497 00:23:09,030 --> 00:23:10,320 Tutaj mamy tabelę. 498 00:23:10,320 --> 00:23:13,010 Ale załóżmy, że rzeczywiście stanowi duże pole. 499 00:23:13,010 --> 00:23:14,940 Tak więc jest to tak zwana czarna skrzynka. 500 00:23:14,940 --> 00:23:19,800 I na ogół, w konstrukcji, w komputerze nauki, czarne skrzynki tylko odnieść się 501 00:23:19,800 --> 00:23:22,510 sztuk funkcjonalności, że ktoś wprowadziła, a ty nie 502 00:23:22,510 --> 00:23:26,140 muszą wiedzieć, czy obchodzi, jak to jest realizowany pod maską. 503 00:23:26,140 --> 00:23:28,960 Właśnie obchodzi, że ta czarna skrzynka, co my teraz zacząć dzwonić 504 00:23:28,960 --> 00:23:30,730 funkcja, coś robi. 505 00:23:30,730 --> 00:23:34,710 >> Tak więc, na przykład, gdy ta czarna skrzynka na etap tutaj reprezentuje printf, 506 00:23:34,710 --> 00:23:38,040 Funkcja, wiem z poprzednich przykładów że printf ma jeden lub więcej 507 00:23:38,040 --> 00:23:40,910 argumenty, a pierwszy z nich Argumenty powinny być ciągiem, jak 508 00:23:40,910 --> 00:23:44,780 "Hello, world". Cóż, jeśli jestem osobą pisanie programu i chcę 509 00:23:44,780 --> 00:23:50,460 używać printf, że, na przykład, może weź kawałek białego papieru tu i 510 00:23:50,460 --> 00:23:55,060 czarny marker i pisać na nim - 511 00:23:55,060 --> 00:23:56,580 I błędnie "świat" - 512 00:23:56,580 --> 00:23:59,560 H-E-L-L-O. 513 00:23:59,560 --> 00:24:04,220 >> Więc wezmę czarny marker i będę napisz, jak duży i czytelny, jak mogę na 514 00:24:04,220 --> 00:24:07,260 ten kawałek papieru, "hello, world" A teraz twierdzi, że taki jest mój argument. 515 00:24:07,260 --> 00:24:09,740 Jest to ciąg przedstawiciele z kawałek białego papieru. 516 00:24:09,740 --> 00:24:13,030 A moje wejście teraz do funkcji printf będzie to. 517 00:24:13,030 --> 00:24:18,250 Więc apeluję printf, przechodząc ten argument jako wejście do niego. 518 00:24:18,250 --> 00:24:22,110 519 00:24:22,110 --> 00:24:26,740 >> A teraz, nie wiem, w jaki sposób osoba, która wrote printf zrobił to rok temu, ale 520 00:24:26,740 --> 00:24:31,110 I wiem, że z jego dokumentacją jego celem w życiu jest do drukowania, co 521 00:24:31,110 --> 00:24:34,410 dostarczyć je jako wejście. 522 00:24:34,410 --> 00:24:40,630 I tak, mimo że ta implementacja to nie wiemy o mnie 523 00:24:40,630 --> 00:24:44,170 pod maską, teraz Widzę, oh, to jest zrobione. 524 00:24:44,170 --> 00:24:45,740 To zostało wydrukowane coś na ekranie. 525 00:24:45,740 --> 00:24:49,070 A teraz kontrolować programu, jeśli istnieje było więcej linii kodu, by 526 00:24:49,070 --> 00:24:51,070 powrócił do mnie. 527 00:24:51,070 --> 00:24:52,290 I tak, że Colton - 528 00:24:52,290 --> 00:24:55,370 błogosławi jego serce, ukrywa się tutaj pod Stół z przodu was wszystkich - 529 00:24:55,370 --> 00:24:59,530 jest zamierzone, że nie wiem, i nie obchodzi mnie, jak printf jest 530 00:24:59,530 --> 00:25:00,100 realizowane. 531 00:25:00,100 --> 00:25:03,390 Po prostu wiem, znowu, z jego dokumentacja, co robi i jak się 532 00:25:03,390 --> 00:25:05,040 am powinien go używać. 533 00:25:05,040 --> 00:25:09,140 >> Teraz przypominam sobie, że printf może dostać trochę bardziej wyrafinowane. 534 00:25:09,140 --> 00:25:12,220 Znów jesteśmy tylko mówić o odpowiednik bloku Say Scratch jest. 535 00:25:12,220 --> 00:25:14,230 Ale ja też zrobiłem ten ostatni raz. 536 00:25:14,230 --> 00:25:17,270 Chciałem, aby mój program, witaj trochę bardziej dynamiczny i nie tylko trudno 537 00:25:17,270 --> 00:25:19,740 coś jak kod "świecie", a zdecydowanie nie trudno coś code 538 00:25:19,740 --> 00:25:22,520 arbitralna jak D-A-V-I-D do programu. 539 00:25:22,520 --> 00:25:27,510 Chciałem zapytać użytkownika o jego lub jej imię i nazwisko, a następnie zrobić coś z 540 00:25:27,510 --> 00:25:29,720 że ciąg, że zapewniają one. 541 00:25:29,720 --> 00:25:32,690 >> Więc coś jest trochę inaczej tutaj. printf, chwilę temu, 542 00:25:32,690 --> 00:25:35,860 czy rzeczywiście coś zrobić, ale to nie zwraca niczego do mnie. 543 00:25:35,860 --> 00:25:36,020 Prawda? 544 00:25:36,020 --> 00:25:38,910 Colton nie podaj mi coś z powrotem, nie kawałek papieru. 545 00:25:38,910 --> 00:25:40,320 Nie było tylko efektem ubocznym. 546 00:25:40,320 --> 00:25:44,510 Mój zapewnienie "hello, world" jako argument Colton spowodowała 547 00:25:44,510 --> 00:25:48,420 Efektem ubocznym słowa, kilka słów, pojawiające się na ekranie. 548 00:25:48,420 --> 00:25:51,350 >> getstring, choć jest trochę inna. getstring jest również 549 00:25:51,350 --> 00:25:54,590 funkcjonować, ale zwraca jakąś wartość. 550 00:25:54,590 --> 00:25:56,370 To nie wystarczy estetyczny efekt uboczny. 551 00:25:56,370 --> 00:26:00,230 To rzeczywiście daje mi, osoba telefonicznie lub przy użyciu funkcji, 552 00:26:00,230 --> 00:26:01,320 coś z powrotem. 553 00:26:01,320 --> 00:26:05,740 Więc w tym przypadku, getstring jest wywoływana z GetString otwarte 554 00:26:05,740 --> 00:26:07,510 nawias, blisko nawias. 555 00:26:07,510 --> 00:26:11,370 Czy getstring zatem wziąć wszelkie argumenty lub wkład? 556 00:26:11,370 --> 00:26:12,340 Nie, to nie wydaje. 557 00:26:12,340 --> 00:26:14,460 Jego celem w życiu jest tylko po to żeby łańcuch. 558 00:26:14,460 --> 00:26:16,910 To nie potrzebuje więcej szczegółów niż to. 559 00:26:16,910 --> 00:26:20,430 Więc pozwól mi iść dalej i udawać, że znowu ta czarna skrzynka nie jest printf, 560 00:26:20,430 --> 00:26:25,160 ale getstring, i niech mnie, osobę pisanie tego programu, zadzwoń lub użyć 561 00:26:25,160 --> 00:26:29,720 GetString by tylko pisanie G-E-T-S-T-R-I-N-G, otwarty nawias, w pobliżu 562 00:26:29,720 --> 00:26:32,170 nawias, getstring. 563 00:26:32,170 --> 00:26:36,920 >> Teraz nie mam pojęcia, jak CS50 staff realizowane GetString, ale wiem, że 564 00:26:36,920 --> 00:26:41,240 jeśli wystarczająco długo czekać, będzie wykonywać swoje co pod maską, może za pomocą 565 00:26:41,240 --> 00:26:44,940 niektóre zmienne, może korzystać z niektórych warunki, może korzystać z niektórych pętli, 566 00:26:44,940 --> 00:26:48,170 może korzystać z niektórych funkcji, być może za pomocą - 567 00:26:48,170 --> 00:26:52,290 tylko próbuje stoisku - być może za pomocą niektóre inne funkcje programowania. 568 00:26:52,290 --> 00:26:55,350 Ale jeśli wystarczająco długo czekać - w rzeczywistości, w komputerze, tak się dzieje 569 00:26:55,350 --> 00:26:56,270 super szybki - 570 00:26:56,270 --> 00:26:59,910 czy mam czekać na tyle długo, funkcja ta getstring dostanie ciąg 571 00:26:59,910 --> 00:27:04,060 od użytkownika, który jest prawdopodobnie wpisując to na ich klawiaturze, a 572 00:27:04,060 --> 00:27:08,090 wtedy, gdy odbywa się getString te znaki od użytkownika 573 00:27:08,090 --> 00:27:14,080 i przechowywanie ich na łańcuch, które Funkcja, getstring, będzie miał 574 00:27:14,080 --> 00:27:17,990 gotowy dla mnie jakieś wyjście, które jestem będzie odzyskać w drodze 575 00:27:17,990 --> 00:27:19,470 Operator przypisania. 576 00:27:19,470 --> 00:27:25,390 >> A gdy odejdę, rzeczywiście, do wyjścia tutaj, Obosi hojnie 577 00:27:25,390 --> 00:27:29,900 udział, nie wiedząc o tym wcześniej, pisząc jego nazwisko na tym 578 00:27:29,900 --> 00:27:33,100 zmienna, która reprezentuje ciąg. 579 00:27:33,100 --> 00:27:35,640 Teraz operator przypisania oznacza, nawet chociaż to może czuć się trochę 580 00:27:35,640 --> 00:27:38,790 zbędne, tak naprawdę nie potrzebują aby mój własny egzemplarz tego. 581 00:27:38,790 --> 00:27:40,700 Ze względu na lewą side - ups! - 582 00:27:40,700 --> 00:27:45,760 zauważyć, że w istocie mają ciąg wymienić na lewej stronie. 583 00:27:45,760 --> 00:27:48,280 Więc ja też zamiar zrobić mój własny egzemplarz tego. 584 00:27:48,280 --> 00:27:50,990 I to jest trochę białego kłamstwa, bo zobaczymy w tydzień lub dwa-tych 585 00:27:50,990 --> 00:27:54,100 raz, że łańcuchy nie są w rzeczywistości , co wydaje się być. 586 00:27:54,100 --> 00:27:56,700 >> Ale teraz, tutaj jest zwracana wartość. 587 00:27:56,700 --> 00:28:00,160 Oto moja kopia po za pomocą operatora przypisania. 588 00:28:00,160 --> 00:28:01,790 A teraz, co chcę robić dalej? 589 00:28:01,790 --> 00:28:04,080 Teraz mamy drugi z dwóch linii kodu. 590 00:28:04,080 --> 00:28:05,640 Więc teraz chcę zadzwonić printf. 591 00:28:05,640 --> 00:28:08,500 Udajmy się teraz, że czarny box jest z powrotem do bycia 592 00:28:08,500 --> 00:28:10,210 printf i nie getstring. 593 00:28:10,210 --> 00:28:12,200 >> Printf tym razem będzie się, jak wiele argumentów? 594 00:28:12,200 --> 00:28:14,890 595 00:28:14,890 --> 00:28:16,770 Więc spójrz, to jest jak dwóch. 596 00:28:16,770 --> 00:28:18,860 Są dwa przecinki tam, ale jeden z tych przecinkami, to 597 00:28:18,860 --> 00:28:20,220 wewnątrz cudzysłowów. 598 00:28:20,220 --> 00:28:23,190 Tak więc pierwszy argument jest dosłownie będzie to. 599 00:28:23,190 --> 00:28:31,850 H-E-L-L-O, przecinek, procent s, backslash-n. 600 00:28:31,850 --> 00:28:36,560 I teraz zapewnia nie jeden argument, ale dwa argumenty do printf. 601 00:28:36,560 --> 00:28:39,530 >> A co printf robić z te dwa wejścia po I przekazać je w 602 00:28:39,530 --> 00:28:42,050 jako argumenty? 603 00:28:42,050 --> 00:28:45,360 To ma się drugi im, co nazwałem nazwa, więc 604 00:28:45,360 --> 00:28:48,660 Drugi kawałek papieru napisałem chwilą nazywa nazwa. 605 00:28:48,660 --> 00:28:53,550 To będzie wtyczką wartości wewnątrz tej zmiennej do zastępczego, 606 00:28:53,550 --> 00:28:58,310 S%, tak że znowu się tylko chwilę czas, zobaczymy efekt uboczny 607 00:28:58,310 --> 00:29:04,180 Po wywołaniu printf, w którym teraz zobaczyć nie "hello, world", ale "hello, 608 00:29:04,180 --> 00:29:04,710 Obosi ". 609 00:29:04,710 --> 00:29:08,730 >> Więc Wielkie brawa dla obu nasi wolontariusze, tylko jeden z nich wiedział 610 00:29:08,730 --> 00:29:12,010 byłoby to dzieje. 611 00:29:12,010 --> 00:29:12,990 Dobrze. 612 00:29:12,990 --> 00:29:16,480 Tak więc, być może, proste, jak to było, Oczywiście, jeśli jesteś już zaznajomiony 613 00:29:16,480 --> 00:29:20,190 z takich, miejmy nadzieję, że nigdy nie będzie zapominać, że zwłaszcza wizualnych, jak 614 00:29:20,190 --> 00:29:21,220 funkcje działają. 615 00:29:21,220 --> 00:29:23,000 >> Więc jest więcej niż tylko getstring. 616 00:29:23,000 --> 00:29:26,020 Wewnątrz CS50 biblioteki, tam cała masa funkcji, z których wszystkie 617 00:29:26,020 --> 00:29:29,510 są aktywowane tylko w celu wyjaśnienia że napisaliśmy te funkcje. 618 00:29:29,510 --> 00:29:33,610 Zazwyczaj, w C, niemal każdy inny Funkcja będziesz używać jest małe. 619 00:29:33,610 --> 00:29:36,190 Ale świadomie używać wielkich liter po prostu wyjaśnić, że te 620 00:29:36,190 --> 00:29:39,880 są kółka z rodzaju, że my będziemy używać do kilku tygodni, że 621 00:29:39,880 --> 00:29:42,890 uprościć proces przenoszenia wejście od użytkownika. 622 00:29:42,890 --> 00:29:46,740 >> Biblioteka CS50 nic nie robi że sami nie mogli zrobić, by 623 00:29:46,740 --> 00:29:50,230 tylko przy użyciu kodu C oldschool podręcznik. 624 00:29:50,230 --> 00:29:53,310 Ale znowu, używamy ich jako szkolenia Koła rodzaju dla zaledwie kilku 625 00:29:53,310 --> 00:29:57,250 tydzień tak, że możemy pozbyć się Złożoność, że wkrótce zrozumieć 626 00:29:57,250 --> 00:30:00,460 samemu robić coś jak stosunkowo proste, jak się 627 00:30:00,460 --> 00:30:02,080 wejściowe od użytkownika. 628 00:30:02,080 --> 00:30:05,540 >> Więc wiem, że będziesz miał dostęp do getchar, GetDouble odwołują - 629 00:30:05,540 --> 00:30:06,050 podwoić. 630 00:30:06,050 --> 00:30:07,050 What's - a następnie GetFloat. 631 00:30:07,050 --> 00:30:07,600 Co znajduje się unosić? 632 00:30:07,600 --> 00:30:09,382 Zacznijmy tam. 633 00:30:09,382 --> 00:30:10,600 >> STUDENT: [niesłyszalne]. 634 00:30:10,600 --> 00:30:10,790 >> DAVID MALAN: Tak. 635 00:30:10,790 --> 00:30:12,120 Jest to liczba z przecinkiem. 636 00:30:12,120 --> 00:30:15,930 Tak więc, podczas gdy Int. jest liczbą całkowitą, która Jest to tylko numer z 0 do 9, 637 00:30:15,930 --> 00:30:18,940 niektóre ich liczbę powtórzeń, Pływak jest coś 638 00:30:18,940 --> 00:30:20,100 z przecinkiem. 639 00:30:20,100 --> 00:30:26,090 A double, w międzyczasie, jest również liczba z przecinkiem, ale bardziej 640 00:30:26,090 --> 00:30:28,160 liczby po przecinku punkt, potencjalnie. 641 00:30:28,160 --> 00:30:30,040 >> Więc wracamy do tego niedługo. 642 00:30:30,040 --> 00:30:34,560 Typowo jednak, każdy z tych typów Dane, każdy z tych typów zmiennych 643 00:30:34,560 --> 00:30:39,380 że biblioteka jak nasza może powrócić do Ci, stosować różne liczby bitów 644 00:30:39,380 --> 00:30:40,290 przechowywania informacji. 645 00:30:40,290 --> 00:30:43,910 Zazwyczaj, Char, co oznacza po prostu jeden znak, używa 8 bitów. 646 00:30:43,910 --> 00:30:47,490 I to jest rzeczywiście zgodne z naszymi byte wolontariuszy, którzy w zeszłym tygodniu 647 00:30:47,490 --> 00:30:50,410 podszedł i stanowił jeden ASCII na raz. 648 00:30:50,410 --> 00:30:51,850 Więc Char jest 8 bitów. 649 00:30:51,850 --> 00:30:54,430 >> Pływak dzieje się 32 bitów, zwykle. 650 00:30:54,430 --> 00:30:59,230 A double, jak można się domyślać, jest faktycznie 64 bitów, co jest po prostu więcej, 651 00:30:59,230 --> 00:31:01,360 co oznacza, że ​​można mieć większy numery lub bardziej precyzyjne. 652 00:31:01,360 --> 00:31:03,000 Ale znowu, więcej o tym innym razem. 653 00:31:03,000 --> 00:31:06,550 GetLongLong, tymczasem, choć głupio nazwany, jest tak naprawdę 654 00:31:06,550 --> 00:31:10,770 Liczba całkowita, która jest dwa razy większy, dwa razy długo, co może, a regularne 655 00:31:10,770 --> 00:31:12,940 całkowita, 64 bitów zamiast 32. 656 00:31:12,940 --> 00:31:14,560 I GetString używaliśmy. 657 00:31:14,560 --> 00:31:18,870 >> Ale jak się okazuje, w CS50 bibliotece który jest realizowany, jak zobaczymy, w 658 00:31:18,870 --> 00:31:23,560 Forma z dwóch plików, z których nazywa cs50.h, ma dwa inne 659 00:31:23,560 --> 00:31:24,770 typy danych w nim. 660 00:31:24,770 --> 00:31:29,700 Boolean nie istnieją w C możesz symulować je tylko przy użyciu 0s i 1s 661 00:31:29,700 --> 00:31:30,850 przez programy. 662 00:31:30,850 --> 00:31:35,500 Ale my w CS50 biblioteki stworzyły symbole "true" i "false" 663 00:31:35,500 --> 00:31:38,580 do reprezentowania 1 i 0, więc nie mieć na dysku coś kodu 664 00:31:38,580 --> 00:31:39,810 dosłownie jak 1 i 0. 665 00:31:39,810 --> 00:31:40,980 Ale zobaczymy te ponownie. 666 00:31:40,980 --> 00:31:42,330 >> String, też nie istnieje. 667 00:31:42,330 --> 00:31:44,520 I dlatego wspomniałem, że to nieco białego kłamstwa teraz. 668 00:31:44,520 --> 00:31:46,660 Ale my będziemy odwinąć tego Warstwa przed długi. 669 00:31:46,660 --> 00:31:49,540 Ale teraz, ciąg jest ciąg znaków. 670 00:31:49,540 --> 00:31:51,790 >> Tymczasem w C, to rzeczywiście mają różne typy danych. 671 00:31:51,790 --> 00:31:53,200 Zawiadomienie to są małe. 672 00:31:53,200 --> 00:31:56,960 Więc funkcje obejrzałeś chwilą są funkcje napisane przez CS50 tym 673 00:31:56,960 --> 00:32:02,310 wróci do Ciebie wartość, która spada do jednej z tych kategorii. 674 00:32:02,310 --> 00:32:06,730 >> A pary po prostu oszukiwać arkuszy sadzić seed tutaj. printf nie tylko 675 00:32:06,730 --> 00:32:08,600 podjęcia% s jako zastępcze. 676 00:32:08,600 --> 00:32:13,490 To trwa do% d liczb dziesiętnych, lub% chciałbym pracować również. 677 00:32:13,490 --> 00:32:19,450 F% jest liczb zmiennoprzecinkowych. C% dla char, jeśli chcesz po prostu podłącz jeden 678 00:32:19,450 --> 00:32:23,510 znaków w ciągu preformatowanego jak robiliśmy, można użyć% c. 679 00:32:23,510 --> 00:32:28,490 >> A potem, trochę irytująco,% lld jest przez długi, długi przecinku liczby całkowitej, 680 00:32:28,490 --> 00:32:31,050 co oznacza po prostu, jeśli potrzebujesz naprawdę Duża liczba i używasz czegoś 681 00:32:31,050 --> 00:32:35,450 zwany long long, które będziemy się powrót do w Pset, można użyć LLD% do 682 00:32:35,450 --> 00:32:40,700 powiedzieć printf, wtyczkę naprawdę duży Liczba całkowita o drodze jej drugi lub 683 00:32:40,700 --> 00:32:41,830 inny argument. 684 00:32:41,830 --> 00:32:45,700 >> I wreszcie, obiecałem, że istnieje kilka innych escape 685 00:32:45,700 --> 00:32:47,670 sekwencje printf obsługuje. 686 00:32:47,670 --> 00:32:49,160 Widzieliśmy backslash-n. 687 00:32:49,160 --> 00:32:50,510 Backslash-r można zobaczyć. 688 00:32:50,510 --> 00:32:51,780 Jest to swego rodzaju rzeczy, old-school. 689 00:32:51,780 --> 00:32:55,920 Jeśli kiedykolwiek z prawdziwych lat maszyny do pisania temu i wyciągnął na korby 690 00:32:55,920 --> 00:32:59,810 które nie tylko obraca tarczę do przesunąć linię, ale także przeniesione 691 00:32:59,810 --> 00:33:03,730 Cała sprawa całą drogę z powrotem na w lewo, dobrze, tylko odwrotny ukośnik-r 692 00:33:03,730 --> 00:33:06,480 zasadniczo przesuwa kursor plecy na początku linii 693 00:33:06,480 --> 00:33:07,830 bez ruchu w dół. 694 00:33:07,830 --> 00:33:09,780 Ale znowu, więcej na ten temat, Być może w przyszłości. 695 00:33:09,780 --> 00:33:13,670 >> Backslash cudzysłów, ukośnik-cudzysłów, backslash-backslash jest 696 00:33:13,670 --> 00:33:16,600 rozwiązanie malutkie zagadki I wspomniałem wcześniej. 697 00:33:16,600 --> 00:33:18,920 I backslash-0 jest rzeczywiście bardzo interesujące. 698 00:33:18,920 --> 00:33:21,470 Ale wrócimy do że przed długi. 699 00:33:21,470 --> 00:33:25,640 >> Więc pozwól mi iść do teraz, CS50 Urządzenie, i niech faktycznie 700 00:33:25,640 --> 00:33:28,930 nagrzewa się w jednym z przykładów udało nam się już, a następnie przejść do 701 00:33:28,930 --> 00:33:31,160 coś nieco bardziej skomplikowane. 702 00:33:31,160 --> 00:33:34,980 Jeśli więc otworzyć swój program nazywa gedit - 703 00:33:34,980 --> 00:33:36,840 to jest mój edytor graficzny. 704 00:33:36,840 --> 00:33:38,460 I mogę to zrobić - 705 00:33:38,460 --> 00:33:39,820 pozwól mi zamknąć to okno tam - 706 00:33:39,820 --> 00:33:42,720 w drodze tej ikony na dół, gedit, w lewym dolnym 707 00:33:42,720 --> 00:33:44,170 rogu obok menu. 708 00:33:44,170 --> 00:33:48,670 >> Mam zamiar iść do przodu i góry, i zapisać ten przykład do, powiedzmy, John 709 00:33:48,670 --> 00:33:49,660 Harvardu folderów. 710 00:33:49,660 --> 00:33:52,690 Folder John Harvard jest właśnie jego dom Katalog, w którym wszystkie swoje pliki żyć 711 00:33:52,690 --> 00:33:53,340 domyślnie. 712 00:33:53,340 --> 00:33:58,410 I mam zamiar zapisać to jako Plik o nazwie hello-0.c. 713 00:33:58,410 --> 00:34:01,260 I wybrałem tę nazwę tak, że linii z kodem próbki na 714 00:34:01,260 --> 00:34:04,210 Kursu na stronie internetowej oraz w YouTube filmy online. 715 00:34:04,210 --> 00:34:06,320 >> Więc teraz mam zamiar zacząć napisać mój pierwszy program. 716 00:34:06,320 --> 00:34:08,469 Pozwól mi przybliżyć na czytelności. 717 00:34:08,469 --> 00:34:12,760 I zamierzam iść dalej i powiedzieć, int Głównym void, który tak po prostu 718 00:34:12,760 --> 00:34:14,900 żółta ikonka uruchamia program. 719 00:34:14,900 --> 00:34:18,290 Dostałem w zwyczaju na rok otwarcia mój nawias klamrowy, a następnie 720 00:34:18,290 --> 00:34:22,000 także zamknięcie go, a następnie wraca do gdzie chcę umieścić moje kod, po prostu 721 00:34:22,000 --> 00:34:24,630 bo to pomaga mi utrzymać wszystko wyważony, zwłaszcza, że ​​moje 722 00:34:24,630 --> 00:34:25,880 Program ma długi. 723 00:34:25,880 --> 00:34:29,239 >> A teraz, tutaj, mam zamiar iść do przodu i powiedzieć, printf, przytoczyć cytatu, 724 00:34:29,239 --> 00:34:34,330 hello world, backslash-n, w pobliżu cytat, zamknij nawias, średnik. 725 00:34:34,330 --> 00:34:38,100 Więc jestem po prostu powtarzając wszystko mamy brał za pewnik, tak daleko. 726 00:34:38,100 --> 00:34:39,270 Teraz mam zamiar pomniejszyć. 727 00:34:39,270 --> 00:34:43,030 >> I to tu okno terminalu, co wolno mi robić w ten czarny 728 00:34:43,030 --> 00:34:44,389 i białe okna? 729 00:34:44,389 --> 00:34:46,977 Co mogę użyć go do? 730 00:34:46,977 --> 00:34:49,770 Tak to jest, gdy uruchomię poleceń i gdzie mogę skompilować rzeczy. 731 00:34:49,770 --> 00:34:50,620 A ja zamierzam zachować proste. 732 00:34:50,620 --> 00:34:52,780 Mam zamiar korzystać z programu Dodać nazywane, która nie jest 733 00:34:52,780 --> 00:34:54,020 technicznie kompilator. 734 00:34:54,020 --> 00:34:56,360 Kompilator w nazwie Szczęk, ale wrócimy do tego w 735 00:34:56,360 --> 00:34:57,190 tydzień lub dwa czas. 736 00:34:57,190 --> 00:35:03,410 >> Na razie jestem po prostu się do make hello-0, ale tych, którzy byli 737 00:35:03,410 --> 00:35:07,050 Porównując w waszych umysłach, co właśnie wpisane do tego, co powinien mieć wpisane mogą 738 00:35:07,050 --> 00:35:10,180 wiemy już, że zrobiłem coś nie tak. 739 00:35:10,180 --> 00:35:12,160 Teraz, jest wyraźnie niektóre błędy. 740 00:35:12,160 --> 00:35:16,742 Przed I nawet patrzeć na to, co one są, każdy myśli, co do tego, co zrobiłem źle? 741 00:35:16,742 --> 00:35:18,590 >> Studenci: [wstawienie GŁOSÓW]. 742 00:35:18,590 --> 00:35:18,840 >> DAVID MALAN: Tak. 743 00:35:18,840 --> 00:35:20,640 Brakuje mi biblioteki w pliku nagłówka. 744 00:35:20,640 --> 00:35:24,240 Każdy z tych plików. H nazywa header plików, a oni wspólnie 745 00:35:24,240 --> 00:35:25,680 należą do rzeczy nazywane biblioteki. 746 00:35:25,680 --> 00:35:28,030 Biblioteki są tylko fragmenty kodu że inni ludzie napisali. 747 00:35:28,030 --> 00:35:32,140 Więc średnia [? i?] biblioteki zbiór plików zawierających kod 748 00:35:32,140 --> 00:35:33,330 że inni ludzie napisali. 749 00:35:33,330 --> 00:35:34,820 >> Tak mi brakuje tego. 750 00:35:34,820 --> 00:35:36,520 Więc dlaczego ja się błąd? 751 00:35:36,520 --> 00:35:40,840 Cóż, pozwól mi przejść z powrotem w moje okno terminalu tutaj. 752 00:35:40,840 --> 00:35:44,310 I niestety, w C, a w wielu języki programowania, w szczególności 753 00:35:44,310 --> 00:35:47,830 jeśli to wszystko jest dla ciebie nowa, error Komunikaty są precyzyjne, ale są również 754 00:35:47,830 --> 00:35:48,620 dość tajemnicze. 755 00:35:48,620 --> 00:35:51,720 A błąd tu, w kolorze czerwonym, jest "Niejawnie deklarowania funkcji biblioteki 756 00:35:51,720 --> 00:35:57,660 printf z rodzaju ", a następnie przewija do następnej linii, "int const char *, 757 00:35:57,660 --> 00:36:00,220 ... "To po prostu staje się naprawdę Zdecydowana szybko. 758 00:36:00,220 --> 00:36:04,420 >> Ale to, co należy zacząć robić, jeśli, ponownie, nowy w tym wszystkim, jest po prostu 759 00:36:04,420 --> 00:36:06,010 zaczynają szukać słów kluczowych. 760 00:36:06,010 --> 00:36:08,770 Oczywiste jest, że nie może zrozumieć, pół słów widzę jeszcze. 761 00:36:08,770 --> 00:36:10,140 Będzie, jeśli w ciągu tygodnia. 762 00:36:10,140 --> 00:36:11,230 Ale widzę printf. 763 00:36:11,230 --> 00:36:14,310 I że należy rozpocząć przed długi, aby jog pamięci, wszystko w porządku, printf. 764 00:36:14,310 --> 00:36:15,210 Coś jest nie tak z printf. 765 00:36:15,210 --> 00:36:16,580 Czy ja pisze to źle? 766 00:36:16,580 --> 00:36:18,130 Nie, to nie wygląda - oh. 767 00:36:18,130 --> 00:36:21,350 I nie można go używać, dopóki nie nauczy kompilator, że ono istnieje. 768 00:36:21,350 --> 00:36:25,220 A więc znowu pójść ze swoimi instynktami, nawet jeśli w rzeczywistości nie rozumieją 769 00:36:25,220 --> 00:36:26,510 rzeczywiste komunikaty o błędach. 770 00:36:26,510 --> 00:36:30,240 >> I rzeczywiście, rozwiązaniem jest tu tylko umieścić go na górnej części pliku 771 00:36:30,240 --> 00:36:34,340 tak, resaving mój plik z Control-S lub w menu Plik. 772 00:36:34,340 --> 00:36:36,730 I jeśli teraz wrócić tu, Mam zamiar usunąć tego. 773 00:36:36,730 --> 00:36:39,150 Control-L jest po prostu dobry sposób , aby wyczyścić ekran. 774 00:36:39,150 --> 00:36:44,870 A potem mam zamiar wpisać "make komentarzy 0 "Enter, a teraz wciąż widzę 775 00:36:44,870 --> 00:36:47,710 tajemniczy ciąg symboli, ale wrócimy do tego. 776 00:36:47,710 --> 00:36:49,230 To, co czyni robi dla Ciebie. 777 00:36:49,230 --> 00:36:52,590 To automatyzacji procesu podejmowania Komenda udziałem dość irytujące 778 00:36:52,590 --> 00:36:54,050 Szczęk, rzeczywisty kompilator. 779 00:36:54,050 --> 00:36:57,460 Ale fakt, że mam żadnych błędów oznacza że ta sprawa powinna działać. 780 00:36:57,460 --> 00:37:00,630 >> Więc jestem teraz zrobić - pozwól mi przybliżyć ponownie - 781 00:37:00,630 --> 00:37:07,070 ./hello-0 Enter, i rzeczywiście, widzę "Hello, world". Więc teraz zwiększyć 782 00:37:07,070 --> 00:37:12,105 to bardzo nieznacznie tylko replikować kroki zamierzaliśmy. 783 00:37:12,105 --> 00:37:15,370 Mam zamiar zmienić nazwę tego z Zapisz jako, aby hello1.c. 784 00:37:15,370 --> 00:37:20,300 A teraz mam zamiar zadeklarować zmienną nazwie nazwa, więc ciągi, 785 00:37:20,300 --> 00:37:23,420 i mam zamiar umieścić w nim wartość cytatem cytatu 786 00:37:23,420 --> 00:37:27,030 D--V-I-D close-quote średnik. 787 00:37:27,030 --> 00:37:31,150 A teraz mam zamiar wymienić "świat" z tego, co zastępczym ciągu znaków? 788 00:37:31,150 --> 00:37:32,200 S%. 789 00:37:32,200 --> 00:37:35,040 >> A teraz, jak wiele argumentów powinien printf się tym razem? 790 00:37:35,040 --> 00:37:35,700 Więc dwa. 791 00:37:35,700 --> 00:37:37,090 Więc idę poza cudzysłów. 792 00:37:37,090 --> 00:37:39,330 I wpisz "nazwę" po przecinku. 793 00:37:39,330 --> 00:37:41,550 Ale zrobiłem coś jeszcze nie tak tym razem. 794 00:37:41,550 --> 00:37:43,940 Ale załóżmy, że ja nie sobie sprawę, że jeszcze. 795 00:37:43,940 --> 00:37:44,910 Puść mnie tutaj. 796 00:37:44,910 --> 00:37:48,850 >> I zauważ też, ja się trochę znudzony wpisując "make komentarzy 0" wszystkie 797 00:37:48,850 --> 00:37:50,180 Czas, "make" i to wszystko. 798 00:37:50,180 --> 00:37:53,270 Tak więc, jak się okazuje, w Linusa można często uderzył w górę strzałek na 799 00:37:53,270 --> 00:37:56,850 klawiatury i rzeczywiście można przewijać przez wszystkie polecenia, które ja 800 00:37:56,850 --> 00:37:58,830 wykonany poprzedni właśnie teraz. 801 00:37:58,830 --> 00:38:02,040 Więc jeśli mogę to zrobić, Up, Up, jest dokonać komentarzy 0. 802 00:38:02,040 --> 00:38:02,610 Nie chcę tego. 803 00:38:02,610 --> 00:38:05,450 Chcę tylko, by to zmienić, aby witam 1 to czas, Enter. 804 00:38:05,450 --> 00:38:07,620 Ostatecznie, że będzie zaoszczędzić trochę czasu. 805 00:38:07,620 --> 00:38:08,150 >> Dobrze. 806 00:38:08,150 --> 00:38:09,520 Niestety, nie jest błąd. 807 00:38:09,520 --> 00:38:10,980 Więc pozwól mi przewijanie w górę. 808 00:38:10,980 --> 00:38:13,120 Wygląda to naprawdę zmasakrowany ten program. 809 00:38:13,120 --> 00:38:16,530 Chodzi mi o to, mój Boże, to jest dwa wiersze kodu, i jego 10 wierszy błędów. 810 00:38:16,530 --> 00:38:18,800 Ale spójrz na górę jeden pierwszy. 811 00:38:18,800 --> 00:38:21,640 Korzystanie z nielegalnego łańcucha identyfikatora. 812 00:38:21,640 --> 00:38:23,270 Czy to znaczy średnia i N? 813 00:38:23,270 --> 00:38:23,930 No ja nie. 814 00:38:23,930 --> 00:38:24,940 Miałem na myśli ciąg. 815 00:38:24,940 --> 00:38:29,390 >> Ale gdzie jest zmienna łańcuchowa Rodzaj oświadczył, DD mówimy? 816 00:38:29,390 --> 00:38:30,730 Więc to jest w CS50 biblioteki. 817 00:38:30,730 --> 00:38:33,740 Więc to nie wystarczy, w tych pierwszych Kilka tygodni, po prostu użyć 818 00:38:33,740 --> 00:38:34,860 co C daje nam. 819 00:38:34,860 --> 00:38:38,120 Mam zamiar iść tutaj, i ja może umieścić go wyżej lub niżej, ale będę 820 00:38:38,120 --> 00:38:40,340 po prostu zachować to w kolejności alfabetycznej utrzymać wszystko uporządkowane. 821 00:38:40,340 --> 00:38:43,470 Zamierzam to cs50.h, która jest zainstalowana na 822 00:38:43,470 --> 00:38:44,900 Ci na CS50 urządzenia. 823 00:38:44,900 --> 00:38:47,640 I to jest open source, więc nawet osoby w internecie, można go używać w ich 824 00:38:47,640 --> 00:38:48,450 własne komputery. 825 00:38:48,450 --> 00:38:50,700 Ale chodzi o CS50 urządzenia. 826 00:38:50,700 --> 00:38:55,320 >> Więc teraz pozwól mi wrócić i ponownie skompilować to z robić cześć 1. 827 00:38:55,320 --> 00:38:55,710 Cholera. 828 00:38:55,710 --> 00:38:57,240 Jeszcze inny błąd. 829 00:38:57,240 --> 00:38:59,370 Pozwól mi przejść do pierwszej, choć. 830 00:38:59,370 --> 00:39:00,630 Ten jest trochę skomplikowane. 831 00:39:00,630 --> 00:39:03,830 Wielu postaci stałej. 832 00:39:03,830 --> 00:39:04,890 To nie pomaga mi. 833 00:39:04,890 --> 00:39:08,220 Ale zauważ, Szczęk jest co najmniej mało nieco przyzwoite, przy czym z mało 834 00:39:08,220 --> 00:39:11,890 zielony daszek symbol, to mówi o to, gdzie wkręca się. 835 00:39:11,890 --> 00:39:16,160 Dlaczego jest to, wskazując, że niewiele z zielona strzałka, na jednym cytatem następnego 836 00:39:16,160 --> 00:39:18,290 w moim imieniu? 837 00:39:18,290 --> 00:39:20,880 >> Więc to jest jedna z tych rzeczy, po prostu przyzwyczaić, zwłaszcza jeśli już 838 00:39:20,880 --> 00:39:23,980 programowaniu w Pythonie, lub JavaScript, lub innych języków, w którym ten fragment 839 00:39:23,980 --> 00:39:24,560 nie ma znaczenia. 840 00:39:24,560 --> 00:39:25,740 W języku C, to ma znaczenie. 841 00:39:25,740 --> 00:39:29,520 Jeśli deklarując ciąg, który jest sekwencję 0 lub więcej znaków, 842 00:39:29,520 --> 00:39:32,280 faktycznie musi używać cudzysłowów. 843 00:39:32,280 --> 00:39:36,670 Więc tak naprawdę trzeba zmienić to z powrotem otworzyć ofertę, blisko cytat, z 844 00:39:36,670 --> 00:39:37,800 cudzysłowy. 845 00:39:37,800 --> 00:39:41,610 Pojedyncze cudzysłowy mają swoje miejsce, ale tylko wtedy, gdy używasz osoby 846 00:39:41,610 --> 00:39:44,100 znaki, ale o tym innym razem. 847 00:39:44,100 --> 00:39:46,550 Na razie cudzysłowy są konieczne. 848 00:39:46,550 --> 00:39:50,460 >> Więc teraz, pozwól mi wrócić do mojego terminalu okna, zrobić cześć 1. 849 00:39:50,460 --> 00:39:51,450 A kto jest przekonany,? 850 00:39:51,450 --> 00:39:53,800 Czy ten program teraz będzie skompilować poprawnie? 851 00:39:53,800 --> 00:39:58,250 852 00:39:58,250 --> 00:39:58,540 OK. 853 00:39:58,540 --> 00:39:59,780 Tak więc trzy z nas myśli to. 854 00:39:59,780 --> 00:40:00,280 Dobrze. 855 00:40:00,280 --> 00:40:01,190 Wprowadź. 856 00:40:01,190 --> 00:40:02,440 I faktycznie. 857 00:40:02,440 --> 00:40:05,130 Więc nie ma żadnych błędów tym razem, nawet chociaż program ten jest zdobyć trochę 858 00:40:05,130 --> 00:40:05,840 bardziej złożone. 859 00:40:05,840 --> 00:40:10,110 Jeśli teraz zrobić kropka ukośnik Witaj 1, Enter, to będzie powiedzieć "cześć, David". 860 00:40:10,110 --> 00:40:11,750 >> Ale zróbmy trzeciej iteracji Z tego, gdzie 861 00:40:11,750 --> 00:40:13,380 Program jest naprawdę dynamiczny. 862 00:40:13,380 --> 00:40:16,770 Pozwólcie mi iść dalej i zmienić plik name, tylko dla zachowania spójności z 863 00:40:16,770 --> 00:40:20,410 Pliki będziesz mieć dostępne do ciebie później online. 864 00:40:20,410 --> 00:40:21,620 Wprowadź. 865 00:40:21,620 --> 00:40:25,510 A teraz mam zamiar iść i nie przechowywania "David" zakodowanego tutaj. 866 00:40:25,510 --> 00:40:28,826 Co można zrobić, aby w bardzo prosty poprawić ten program? 867 00:40:28,826 --> 00:40:30,520 >> Mogę zadzwonić GetString. 868 00:40:30,520 --> 00:40:33,240 To może być trochę nieoczywiste co się wydarzyć, więc będę 869 00:40:33,240 --> 00:40:38,470 faktycznie dodać kolejną linię, printf, i powiedzieć: imię, nazwisko, jelita grubego, w pobliżu ofertę, po prostu 870 00:40:38,470 --> 00:40:40,790 dać użytkownikowi monit na ekranie. 871 00:40:40,790 --> 00:40:42,980 A teraz mam zamiar udać się tutaj, a ja jestem zamiar używać skrótu klawiaturowego. 872 00:40:42,980 --> 00:40:47,680 Mam zamiar iść w górę, w górę, i zmienić witam 1 w Hello 2, Enter. 873 00:40:47,680 --> 00:40:49,260 I na szczęście, że robię postępy. 874 00:40:49,260 --> 00:40:52,720 >> A teraz mam zamiar iść w górę do Hello and slash dot 875 00:40:52,720 --> 00:40:54,690 zmienić na 2, Enter. 876 00:40:54,690 --> 00:40:55,650 A teraz mój program - 877 00:40:55,650 --> 00:40:57,700 Będę powiększyć - jest coraz trochę ładniejsza. 878 00:40:57,700 --> 00:41:02,190 Nazwa będzie, powiedzmy, Roba tym razem, Enter, hello, Rob. 879 00:41:02,190 --> 00:41:03,260 Możemy to zrobić ponownie. 880 00:41:03,260 --> 00:41:05,360 Nazwa, Lauren, Enter. 881 00:41:05,360 --> 00:41:07,820 Nazwa, Joseph, Enter. 882 00:41:07,820 --> 00:41:11,596 Nazwa, spróbujmy być trudne, Enter. 883 00:41:11,596 --> 00:41:12,410 Eh. 884 00:41:12,410 --> 00:41:14,680 To naprawdę nie jest błąd. 885 00:41:14,680 --> 00:41:16,090 Więc to jest trochę brzydki. 886 00:41:16,090 --> 00:41:18,640 Więc może moglibyśmy rozwiązać ten problem w przyszłości, nie teraz. 887 00:41:18,640 --> 00:41:20,840 >> Ale jak można instynktownie go o zajęcie 888 00:41:20,840 --> 00:41:21,990 że szczególnym wyzwaniem? 889 00:41:21,990 --> 00:41:23,710 To wygląda po prostu głupi. 890 00:41:23,710 --> 00:41:27,320 Jak unikać rzeczy patrząc głupi? 891 00:41:27,320 --> 00:41:29,890 Tak więc możemy zrobić, OK, słyszałem kilka rzeczy, stan i loop. 892 00:41:29,890 --> 00:41:33,340 Moglibyśmy użyć, jeden, warunek, aby sprawdzić , co jest długością łańcucha 893 00:41:33,340 --> 00:41:34,190 użytkownik dał nam? 894 00:41:34,190 --> 00:41:37,100 A jeśli to jest 0, to jest po prostu zacytować cytatu, oni po prostu wciskamy Enter, a następnie 895 00:41:37,100 --> 00:41:38,930 może powinienem krzyczeć na nich i skłonić ich ponownie. 896 00:41:38,930 --> 00:41:39,970 Ale w jaki sposób skłonić je ponownie? 897 00:41:39,970 --> 00:41:44,230 Cóż, ja również słyszałem pętlę, i mogłem zrobić to znowu i znowu i znowu 898 00:41:44,230 --> 00:41:47,010 monitowania użytkownika o tej samej rzeczy. 899 00:41:47,010 --> 00:41:48,880 >> Dobrze, zróbmy jeszcze jeden przykład stosując różne 900 00:41:48,880 --> 00:41:50,620 Funkcja w CS50 biblioteki. 901 00:41:50,620 --> 00:41:52,330 Pozwól mi zamknąć ten plik. 902 00:41:52,330 --> 00:41:53,510 Pozwólcie mi tworzyć nowy. 903 00:41:53,510 --> 00:41:58,510 A ja nazywam to adder.c, tylko dlatego, jest to łatwe do zrobienia prostych działań arytmetycznych, 904 00:41:58,510 --> 00:42:00,890 nawet jeśli będzie to całkowicie rozczarowująca z tym, co można zrobić, 905 00:42:00,890 --> 00:42:02,250 z każdym nowoczesnym komputerze. 906 00:42:02,250 --> 00:42:03,750 >> Ale pozwól mi iść do przodu i teraz - 907 00:42:03,750 --> 00:42:10,680 I nauczyłem się mojej lekcji ostatni raz - to cs50.h obejmują stdio.h, int 908 00:42:10,680 --> 00:42:14,170 Głównym nieważne, co teraz, ja po prostu wziąć na ślepej wierze, ale zakładamy, że 909 00:42:14,170 --> 00:42:16,380 że będzie zrozumieć, co co oznacza, że ​​przed długi. 910 00:42:16,380 --> 00:42:21,030 I mam zamiar coś powiedzieć jak "Daj mi int." 911 00:42:21,030 --> 00:42:22,140 >> A teraz, jak mogę int? 912 00:42:22,140 --> 00:42:26,820 Chcę ostatecznie zadeklarować zmienną nazwie x typu int i 913 00:42:26,820 --> 00:42:29,240 przechowywania w niej całkowita od użytkownika. 914 00:42:29,240 --> 00:42:29,970 Więc to był łyk. 915 00:42:29,970 --> 00:42:35,680 Ale jeśli ktoś chce zaproponować, w jaki sposób mogę zadeklarować całkowitą o nazwie X? 916 00:42:35,680 --> 00:42:36,310 Int x. 917 00:42:36,310 --> 00:42:37,430 >> Więc to naprawdę jest takie proste. 918 00:42:37,430 --> 00:42:38,240 Daj mi int. 919 00:42:38,240 --> 00:42:39,070 Nazwijmy to x. 920 00:42:39,070 --> 00:42:40,580 Teraz używam operatora przypisania. 921 00:42:40,580 --> 00:42:43,400 I w jaki sposób przechowywać z lewo wartość użytkownika? 922 00:42:43,400 --> 00:42:47,310 Nie chcę zadzwonić GetString, Oczywiście, lecz getInt. 923 00:42:47,310 --> 00:42:49,060 Wszelkie argumenty? 924 00:42:49,060 --> 00:42:49,350 Nie. 925 00:42:49,350 --> 00:42:51,870 Więc to jest otwarty nawias, blisko paren natychmiast, a następnie 926 00:42:51,870 --> 00:42:53,440 średnik kończy linię. 927 00:42:53,440 --> 00:42:54,930 >> Teraz pozwól mi to zrobić ponownie. 928 00:42:54,930 --> 00:42:57,070 Daj mi jeszcze int. 929 00:42:57,070 --> 00:43:01,850 Tym razem zrobię int, niech Nazywamy to r, równa getInt. 930 00:43:01,850 --> 00:43:05,060 A teraz pozwól mi zrobić coś super-prosty jak jakiś matematyki. 931 00:43:05,060 --> 00:43:14,340 Więc printf, suma% d jest zastępczym wew. 932 00:43:14,340 --> 00:43:20,030 A% d, okres, backslash-n. 933 00:43:20,030 --> 00:43:20,360 >> Dobrze. 934 00:43:20,360 --> 00:43:21,670 Tak, że w rzeczywistości nie matematyka jest. 935 00:43:21,670 --> 00:43:25,500 Ale jeśli chcę powiedzieć, sumę tę wartość oraz wartość ta jest równa tej 936 00:43:25,500 --> 00:43:29,320 inne wartości, jak wiele argumentów do Łączna powinienem dawać printf, 937 00:43:29,320 --> 00:43:30,520 ostatecznie? 938 00:43:30,520 --> 00:43:31,420 Tak więc cztery, prawda? 939 00:43:31,420 --> 00:43:33,790 Ten ciąg, a następnie trzy wartości. 940 00:43:33,790 --> 00:43:37,560 Więc x jest pierwsza Chcę być podłączone najpierw do% d. 941 00:43:37,560 --> 00:43:39,270 y będzie następny. 942 00:43:39,270 --> 00:43:42,030 >> A teraz jakby chciał powiedzieć z, ale z nie istnieje. 943 00:43:42,030 --> 00:43:43,190 Ale to nie jest wielka sprawa. 944 00:43:43,190 --> 00:43:45,440 Bo co zrobić instynktownie, zwłaszcza jeśli miał 945 00:43:45,440 --> 00:43:47,820 kalkulator graficzny, co wpisać? 946 00:43:47,820 --> 00:43:48,760 Jak się x plus y? 947 00:43:48,760 --> 00:43:50,200 Więc to nie rzeczywista zmienna jest. 948 00:43:50,200 --> 00:43:51,820 To jest po prostu sumą dwóch inne zmienne. 949 00:43:51,820 --> 00:43:53,170 I to jest w pełni uzasadnione. 950 00:43:53,170 --> 00:43:56,630 C na pewno rozumie proste arytmetyczna tak. 951 00:43:56,630 --> 00:43:58,450 >> Średnik, zapisać. 952 00:43:58,450 --> 00:44:02,080 Teraz pozwól mi zejść tutaj i make dodatek, Enter. 953 00:44:02,080 --> 00:44:04,100 Nie ma błędu, więc to postęp też. 954 00:44:04,100 --> 00:44:04,890 Wpisz dodatek. 955 00:44:04,890 --> 00:44:07,100 A inny skrót klawiaturowy, jeśli zaczynasz się nudzić 956 00:44:07,100 --> 00:44:08,760 wszystkich poleceń - 957 00:44:08,760 --> 00:44:12,650 jeśli zaczniesz wpisywać komendę, jak dot slash reklamy, i to, gdzie 958 00:44:12,650 --> 00:44:16,020 nuda w rzutach, zazwyczaj można trafić Tab mieć komputer zakończyć 959 00:44:16,020 --> 00:44:20,510 resztę frazy dla Ciebie, jeśli to nie jest niejednoznaczna, co powinno przyjść po reklamie. 960 00:44:20,510 --> 00:44:23,950 >> Więc pozwól mi iść do przodu teraz i kliknięciu przycisku Enter. 961 00:44:23,950 --> 00:44:27,490 Daj mi int, 1, 2, i Na szczęście, jest to 3. 962 00:44:27,490 --> 00:44:29,900 Ale jak zawsze, testowania programów nie powinna obniżyć się 963 00:44:29,900 --> 00:44:30,820 tylko próbuje go raz. 964 00:44:30,820 --> 00:44:35,560 Pozwól mi spróbować sprawę narożnik, jak negatywne 1, daj mi 1, a jeden 965 00:44:35,560 --> 00:44:36,210 sprawdza się także. 966 00:44:36,210 --> 00:44:38,870 I prawdopodobnie chcesz zrobić trochę więcej rygorystyczne testy, ale jestem 967 00:44:38,870 --> 00:44:40,630 wygodne, z którym to na. 968 00:44:40,630 --> 00:44:43,110 >> Cóż, teraz spróbujmy innego programu tym razem używa 969 00:44:43,110 --> 00:44:44,620 nieco z innej składni. 970 00:44:44,620 --> 00:44:46,100 Pozwólcie mi stworzyć nowy plik. 971 00:44:46,100 --> 00:44:51,050 Zadzwonię do tego conditions0.c do linii z niektórych kod przykładowy. 972 00:44:51,050 --> 00:44:55,550 I pozwól mi iść do przodu i robić m.in. cs50.h, m.in. 973 00:44:55,550 --> 00:45:00,320 stdio.h, w głównej pustki - 974 00:45:00,320 --> 00:45:01,030 OK. 975 00:45:01,030 --> 00:45:01,850 Proszę bardzo. 976 00:45:01,850 --> 00:45:03,010 Mamy standardowe szablonowe. 977 00:45:03,010 --> 00:45:08,170 >> I tym razem mam zamiar powiedzieć, printf, "Chciałbym, int, proszę," tylko do 978 00:45:08,170 --> 00:45:10,030 dokonać szybka mała bardziej przyjazny. 979 00:45:10,030 --> 00:45:11,620 A teraz chcę się int od użytkownika. 980 00:45:11,620 --> 00:45:15,010 Mam zamiar nazwać n to czas, po prostu bo n brzmi jak liczby. 981 00:45:15,010 --> 00:45:18,140 getInt, a teraz, co zrobić Chcę z nim zrobić? 982 00:45:18,140 --> 00:45:21,640 Cóż, jeśli n jest - a ja powiększyć - 983 00:45:21,640 --> 00:45:25,930 jeśli n jest większe niż 0, chcę wykonać następujące czynności - 984 00:45:25,930 --> 00:45:36,060 printf "Wybrałeś liczbę dodatnią." Else, zamierzam pisać printf "You 985 00:45:36,060 --> 00:45:37,870 odebrał negatywne 986 00:45:37,870 --> 00:45:39,650 liczba. "Wszystko w porządku. 987 00:45:39,650 --> 00:45:44,410 Więc ten program, choć zrobiłem to szybko, wygląda prawo składniowo. 988 00:45:44,410 --> 00:45:45,010 Pozwól mi spróbować. 989 00:45:45,010 --> 00:45:46,890 Sprawdź stan 0. 990 00:45:46,890 --> 00:45:47,710 Wydaje się działać. 991 00:45:47,710 --> 00:45:49,230 Stan 0, wprowadź. 992 00:45:49,230 --> 00:45:51,910 Dajmy mu int z 50. 993 00:45:51,910 --> 00:45:53,160 Wybrałem liczbę dodatnią. 994 00:45:53,160 --> 00:45:54,230 Spróbujmy jeszcze raz. 995 00:45:54,230 --> 00:45:54,930 Stan 0. 996 00:45:54,930 --> 00:45:56,260 Negative 50. 997 00:45:56,260 --> 00:45:57,290 Wybrałem ujemną. 998 00:45:57,290 --> 00:46:00,350 >> Ale teraz, pozwól mi wybrać, co będziemy trzymać nazywając przypadku boisko, które jest bardziej 999 00:46:00,350 --> 00:46:04,702 ciekawy przypadek, że myślisz może dać pewne problemy, 0. 1000 00:46:04,702 --> 00:46:07,940 Teraz jestem pewien, że jest to jeden z Kącik, w którym te przypadki jest zero 1001 00:46:07,940 --> 00:46:12,330 ani pozytywne, ani negatywne, więc my Program, choć w składniowo 1002 00:46:12,330 --> 00:46:15,440 skorygować - kompiluje, to działa - nie jest logicznie poprawne. 1003 00:46:15,440 --> 00:46:21,050 Więc co jest prosty fix tutaj, jeśli chcę do wykrycia, jeśli chcę, aby obsłużyć n 1004 00:46:21,050 --> 00:46:23,840 równa 0 oddzielnie? 1005 00:46:23,840 --> 00:46:32,980 >> Więc jeśli n jest równe 0, to chcę powiedzieć, coś jak printf "Wybrałeś 0". 1006 00:46:32,980 --> 00:46:33,990 Pozwól mi spróbować tego teraz. 1007 00:46:33,990 --> 00:46:38,320 Pozwól mi wrócić tu, wyczyść moje okno i rekompilacji. 1008 00:46:38,320 --> 00:46:38,690 Hm. 1009 00:46:38,690 --> 00:46:39,770 Jeden błąd generuje. 1010 00:46:39,770 --> 00:46:41,630 Ale chcesz sprawdzić gdy n jest równe 0. 1011 00:46:41,630 --> 00:46:44,230 1012 00:46:44,230 --> 00:46:47,720 >> Więc jeszcze raz, kolejny głupota przyzwyczaić się do, znak równości jest 1013 00:46:47,720 --> 00:46:48,910 Operator przypisania. 1014 00:46:48,910 --> 00:46:52,240 Tak więc jest to rzeczywiście błąd, że, technicznie, chociaż kompilator 1015 00:46:52,240 --> 00:46:56,450 chronić mnie przed samym sobą, że bym technicznie jest kopiowanie 0 do n, które 1016 00:46:56,450 --> 00:46:57,590 nie jest to, co chcę. 1017 00:46:57,590 --> 00:47:00,950 Chcę przetestować na rzecz równości z równymi sobie równych. 1018 00:47:00,950 --> 00:47:03,390 I tak, że teraz może być moje lepsze rozwiązanie. 1019 00:47:03,390 --> 00:47:07,810 >> Pozwól, że w rzeczywistości ponownie zapisać to jako, powiedzmy, warunkach1, jest nowa i ulepszona. 1020 00:47:07,810 --> 00:47:10,480 Tak więc jeśli przebudować ten, to by warunki - 1021 00:47:10,480 --> 00:47:16,960 ups - dokonać warunkach1 dot slash warunkach1, Enter "Chciałbym int, 1022 00:47:16,960 --> 00:47:18,760 proszę. "Mam zamiar iść dalej i wpisz 50. 1023 00:47:18,760 --> 00:47:19,660 To wciąż dobry. 1024 00:47:19,660 --> 00:47:21,200 Negative 50, nadal dobre. 1025 00:47:21,200 --> 00:47:24,920 0, i to, w istocie, wykryto że wybrałem 0. 1026 00:47:24,920 --> 00:47:28,200 >> Więc co więcej mogę teraz z tym zrobić? 1027 00:47:28,200 --> 00:47:32,280 Cóż, z pewnością możemy robić coraz bardziej skomplikowane rzeczy. 1028 00:47:32,280 --> 00:47:37,240 Ale to, co chciałbym zaproponować jest że kończy się na tej uwadze tutaj. 1029 00:47:37,240 --> 00:47:41,680 Jeśli podciągnąć to, zobaczysz, być może, twój ulubiony kreskówkowy 1030 00:47:41,680 --> 00:47:43,326 do dziś możesz być Nigdy nie rozumiałem. 1031 00:47:43,326 --> 00:47:46,550 1032 00:47:46,550 --> 00:47:49,520 I to o jakości śmiechu powinieneś dostać z dowcipów CS. 1033 00:47:49,520 --> 00:47:51,060 Więc to jest o prawo. 1034 00:47:51,060 --> 00:47:54,900 >> Ale bardziej przekonująco, myślałem, bym dać nam trochę liścik do poniedziałku. 1035 00:47:54,900 --> 00:47:56,430 Więc zaczęliśmy przy użyciu liczb całkowitych. 1036 00:47:56,430 --> 00:47:57,510 Mamy określone pływaków. 1037 00:47:57,510 --> 00:48:00,120 Mamy nawet dalej deblu, co znowu daje numery 1038 00:48:00,120 --> 00:48:01,390 po przecinku. 1039 00:48:01,390 --> 00:48:04,230 >> Ale okazuje się, że unosi się i gra podwójna, i, naprawdę, komputery, 1040 00:48:04,230 --> 00:48:08,470 Zasadniczo nie można wyrazić niektóre wartości precyzyjnie. 1041 00:48:08,470 --> 00:48:12,840 Wiemy z klas matematycznych, które można dowolną liczbę miejsc po 1042 00:48:12,840 --> 00:48:13,510 przecinku. 1043 00:48:13,510 --> 00:48:16,460 I można nawet umieścić pionowy pasek powiedzieć to trwać wiecznie. 1044 00:48:16,460 --> 00:48:18,810 >> Niestety, nie można naprawdę zrobić w komputerze. 1045 00:48:18,810 --> 00:48:20,400 I tak przypadki narożne powstać. 1046 00:48:20,400 --> 00:48:23,120 Na przykład, załóżmy, że jesteś robi coś finansowej. 1047 00:48:23,120 --> 00:48:25,700 Robisz matematyki w procentach, a 1048 00:48:25,700 --> 00:48:27,030 w dolarach i centach. 1049 00:48:27,030 --> 00:48:29,230 A te nie cents koniecznie korekty. 1050 00:48:29,230 --> 00:48:34,120 Cóż, okazuje się, że frakcje grosze może zacząć dodać, kiedy 1051 00:48:34,120 --> 00:48:37,250 modelowane z systemem komputerowym w taki sposób, że Clever 1052 00:48:37,250 --> 00:48:39,100 ludzie mogą skorzystać. 1053 00:48:39,100 --> 00:48:42,650 >> A ci z was, którzy nie widzieli, ja bym chciał dać 30 sekund teaser 1054 00:48:42,650 --> 00:48:48,290 wspaniała Film znany jako Office Space, które będą malować obraz 1055 00:48:48,290 --> 00:48:51,205 Problem będziemy zajmować Pierwszą rzeczą, którą w poniedziałek. 1056 00:48:51,205 --> 00:48:53,960 Gdybyśmy mogli zwiększyć głośność trochę, dam ci 30 1057 00:48:53,960 --> 00:48:55,495 sekunda powierzchni biurowej. 1058 00:48:55,495 --> 00:48:55,770 >> [PLAYBACK VIDEO] 1059 00:48:55,770 --> 00:48:59,000 >> -To znaczy, ty, ty nie zostały pokazujący się i pojawi się zachować swoją pracę. 1060 00:48:59,000 --> 00:49:00,620 >> -Właściwie to są promowane. 1061 00:49:00,620 --> 00:49:03,240 >> -I może zaprogramować wirusa, którą zgrać to miejsce off wielki czas. 1062 00:49:03,240 --> 00:49:04,430 >> -No cóż, jak to działa? 1063 00:49:04,430 --> 00:49:06,782 >> -Za każdym razem transakcja jest bankiem których odsetki liczone są, i tam 1064 00:49:06,782 --> 00:49:10,160 są tysiące dni, komputer kończy się z tych frakcji centa. 1065 00:49:10,160 --> 00:49:12,030 >> -Ale ja nie zamierzam nic nielegalnego. 1066 00:49:12,030 --> 00:49:12,660 >> -Niezgodne z prawem? 1067 00:49:12,660 --> 00:49:15,075 Samir, to jest Ameryka. 1068 00:49:15,075 --> 00:49:16,570 >> -Musimy Przysięgam na Boga. 1069 00:49:16,570 --> 00:49:19,070 >> -Jeśli nikt nie wie o tym ale nam, wszystko w porządku? 1070 00:49:19,070 --> 00:49:21,920 Nie ma nikogo z rodziny, nie dziewczyny, nikt. 1071 00:49:21,920 --> 00:49:22,700 >> -Oczywiście. 1072 00:49:22,700 --> 00:49:23,320 >> -Zgadzam się. 1073 00:49:23,320 --> 00:49:24,280 >> -Nie martw się, stary. 1074 00:49:24,280 --> 00:49:25,640 I nikomu nie powie albo. 1075 00:49:25,640 --> 00:49:26,504 >> [END PLAYBACK VIDEO] 1076 00:49:26,504 --> 00:49:30,030 >> DAVID MALAN: Więc to jest więc, CS50, że był Office Space, i to będzie wszystko 1077 00:49:30,030 --> 00:49:31,465 sensu w poniedziałek. 1078 00:49:31,465 --> 00:49:33,940 Do zobaczenia. 1079 00:49:33,940 --> 00:49:37,880 >> Narrator: Na następnym CS50, Roba dostosowuje się do bycia off 1080 00:49:37,880 --> 00:49:39,130 Posiłki Harvard. 1081 00:49:39,130 --> 00:49:56,160