1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> SPEAKER 1: Rendben. 3 00:00:13,650 --> 00:00:14,390 Isten hozott. 4 00:00:14,390 --> 00:00:19,260 Ez a második hét a CS50, és mi eddig már a funkcióit, de 5 00:00:19,260 --> 00:00:20,830 nagyrészt őket adni. 6 00:00:20,830 --> 00:00:23,430 Már használt printf, amely a mellékhatása nyomtatás 7 00:00:23,430 --> 00:00:24,110 dolgokat a képernyőn. 8 00:00:24,110 --> 00:00:25,790 Már használt kap-int, hogy lebeg. 9 00:00:25,790 --> 00:00:29,230 >> De mi van, ha tényleg akar létrehozni saját függvényeket, mint néhány 10 00:00:29,230 --> 00:00:31,740 lehet, hogy már megkezdte a tenni probléma az egyiket, de 11 00:00:31,740 --> 00:00:33,140 nem feltétlenül szükséges? 12 00:00:33,140 --> 00:00:37,150 Nos, menjünk előre, és újra, hogy probléma, csak kéri a felhasználót a 13 00:00:37,150 --> 00:00:40,660 nevüket és nyomtatás valamit a képernyőn, de próbáld meg néhány tényező 14 00:00:40,660 --> 00:00:44,000 Az egységesség, hogy már látható a kód eddig. 15 00:00:44,000 --> 00:00:45,120 Tehát az, hogy értem a következőket. 16 00:00:45,120 --> 00:00:47,315 >> Én megyek előre, és hozzon létre Egy új program, csak hívja 17 00:00:47,315 --> 00:00:49,320 azt hello.c a szokásos módon. 18 00:00:49,320 --> 00:00:53,730 Én megyek előre, és magam közé tartoznak a standard io.h a tetején. 19 00:00:53,730 --> 00:00:57,040 Megyek is, hogy magamnak megelőző jellegű a CS50 könyvtárat, hogy a 20 00:00:57,040 --> 00:00:59,080 Nem értem kiabált a fordító. 21 00:00:59,080 --> 00:01:02,400 És most megyek előre és kijelentik, int, a fő, érvénytelen. 22 00:01:02,400 --> 00:01:09,020 >> És akkor itt, ez az, ahol szeretnék kezdeni, hogy kiszervezi funkciókat 23 00:01:09,020 --> 00:01:12,090 más funkció, hogy én magam vagyok fog írni, de ez nem 24 00:01:12,090 --> 00:01:13,820 jelenleg nem létezik. 25 00:01:13,820 --> 00:01:19,210 Például, tegyük fel, hogy szerettem volna írjon egy funkció, amely lehetővé teszi számomra, hogy 26 00:01:19,210 --> 00:01:23,830 kinyomtatni hello, vessző, majd néhány felhasználó neve. 27 00:01:23,830 --> 00:01:29,010 Ahelyett, hogy a folyamat még mindig printf hello,% s, nem lenne jó, ha 28 00:01:29,010 --> 00:01:33,380 még csak egy függvény neve nem printf hanem print név? 29 00:01:33,380 --> 00:01:36,600 >> Más szóval, azt akarom, hogy képes legyen írni egy programot, amely nem egy kis 30 00:01:36,600 --> 00:01:37,710 valami ilyesmi. 31 00:01:37,710 --> 00:01:42,070 Először is, fogom mondani a printf név, ami arra kéri a felhasználót, hogy 32 00:01:42,070 --> 00:01:46,150 adj saját nevét, és akkor én vagyok fogja használni a megszokott karakterlánc s 33 00:01:46,150 --> 00:01:47,290 kinyilvánítására string. 34 00:01:47,290 --> 00:01:50,420 Adj egy változó string típusú, hívják s, és tárolja, hogy a 35 00:01:50,420 --> 00:01:52,120 eredményeképpen a hívás, hogy string. 36 00:01:52,120 --> 00:01:56,060 De most a héten korábban, azt is kissé unalmasan kész hello,% s / n. 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> És más szavakkal, láttuk ezt Például egy csomó idő, és ez egy 39 00:02:02,570 --> 00:02:05,280 triviális például azért, mert csak egy kódsor, így tényleg nem 40 00:02:05,280 --> 00:02:06,860 nagy dolog, hogy ne írja be újra. 41 00:02:06,860 --> 00:02:09,990 De tegyük fel, hogy ez a sor a kód valójában váltak a terhet, és 42 00:02:09,990 --> 00:02:12,900 ez nem egy sort, de ez 10 kódsor egy pár hét múlva, 43 00:02:12,900 --> 00:02:15,190 és csak most fáradt A másolás és beillesztés, vagy 44 00:02:15,190 --> 00:02:17,180 újra beírni, hogy ugyanezt a kódot. 45 00:02:17,180 --> 00:02:22,100 Nem lenne jó, ahelyett, hogy printf hello,% s és így tovább, 46 00:02:22,100 --> 00:02:26,500 Nem lenne jó, ha még csak függvény nevű nyomtató nevét, 47 00:02:26,500 --> 00:02:27,560 vesz egy érv - 48 00:02:27,560 --> 00:02:29,120 más szóval, hogy úgy bemenet - 49 00:02:29,120 --> 00:02:30,620 majd pontosvessző. 50 00:02:30,620 --> 00:02:33,240 Annak érdekében, hogy a funkció, nem igaz jó lenne, ha létezett? 51 00:02:33,240 --> 00:02:36,690 Akkor nem kell aggódnia mi printf, mi% s, és az összes 52 00:02:36,690 --> 00:02:39,400 ezek a bonyolult, amelyek nem olyan érdekes. 53 00:02:39,400 --> 00:02:40,570 Ezek hasznosak. 54 00:02:40,570 --> 00:02:44,700 >> Tehát print név, sajnos, nem volt kitalált mintegy 40 plusz évvel ezelőtt. 55 00:02:44,700 --> 00:02:45,980 Senki sem gondolta, hogy írja meg. 56 00:02:45,980 --> 00:02:48,300 De ez a szépség, amelyek a programozási nyelv, mint a 57 00:02:48,300 --> 00:02:52,930 Scratch lehet egyedi blokkokat, így a C és a legtöbb bármilyen nyelven, ugye 58 00:02:52,930 --> 00:02:57,260 meg a saját funkció, lehet határozná meg a saját funkcióit. 59 00:02:57,260 --> 00:03:01,710 Így még akkor is, hogy a fő automatikusan ingyen, azt mondhatjuk 60 00:03:01,710 --> 00:03:02,730 saját funkciókat. 61 00:03:02,730 --> 00:03:05,670 >> Így fogok tenni néhány szoba itt fel tetején, és megyek, hogy állapítsa meg a 62 00:03:05,670 --> 00:03:08,210 saját funkciója, hogy fog kinézni a kicsit furcsa először, de mi jön 63 00:03:08,210 --> 00:03:09,400 vissza erre nemsokára. 64 00:03:09,400 --> 00:03:12,310 Fogok mondani érvénytelen, így jelezve, ez a funkció nem 65 00:03:12,310 --> 00:03:16,040 valami, van mellékhatása, de a nem tér vissza nekem valamit a 66 00:03:16,040 --> 00:03:18,810 ugyanúgy, hogy int vagy A string maga nem. 67 00:03:18,810 --> 00:03:22,450 És én fogom adni ezt a funkciót a nevét a nyomtatott név, és megyek 68 00:03:22,450 --> 00:03:26,470 meghatározza, hogy ez a fickó fog tartani egy string, és én fogom hívni, hogy 69 00:03:26,470 --> 00:03:27,600 karakterlánc nevét. 70 00:03:27,600 --> 00:03:32,100 Nevezhetném, amit akarok, de azt akarom kódot magától dokumentálása. 71 00:03:32,100 --> 00:03:34,770 Más szóval, ha az egyik meg volt, hogy nyissa meg ezt a fájlt, és olvasd el, akkor 72 00:03:34,770 --> 00:03:39,020 valami arra következtetnek a nevét, hogy a input milyen szerepet kéne játszani. 73 00:03:39,020 --> 00:03:42,270 >> És most elmaradt, fogok nyitni zárójel és zárt kapcsos zárójel, 74 00:03:42,270 --> 00:03:47,140 és így észre én ugyanezt a minta vonalakon négy a hét, mint 75 00:03:47,140 --> 00:03:51,622 Én már a következő egy jó hét + Most, mondjuk, vonalak és kilenc 76 00:03:51,622 --> 00:03:53,400 14 alkotó fő. 77 00:03:53,400 --> 00:03:56,160 Más szóval, nyomtatás név egy másik funkció. 78 00:03:56,160 --> 00:03:58,990 Most, a fordító nem fogja tudni nevezni ezt a dolgot automatikusan 79 00:03:58,990 --> 00:04:02,670 mert szó szerint csak kitalálták, de ez még mindig tudja, hogy hívja fő 80 00:04:02,670 --> 00:04:08,710 automatikusan, és persze a 13. sor, hívom a saját funkciója. 81 00:04:08,710 --> 00:04:12,805 És azért, mert én úgy nyilatkozott, hogy a funkció up on line négy főétkezések előtt, 82 00:04:12,805 --> 00:04:16,579 ez fog tanítani a fordító milyen idézet, idézet vége, "print name" 83 00:04:16,579 --> 00:04:18,140 jelent és mit kell tennie. 84 00:04:18,140 --> 00:04:22,700 Szóval valami, hogy ez egy új egyéni blokk keretében, mondjuk, semmiből. 85 00:04:22,700 --> 00:04:27,240 >> Tehát itt, tudom rakni, hogy nagyon gyakori vagy ismétlődő minta kódot tartok 86 00:04:27,240 --> 00:04:32,300 írásban az osztályban, printf % S hello,% s / n ", - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 mit szeretnénk, hogy itt? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 Szóval azt akarom, hogy név ebben az összefüggésben. 91 00:04:41,420 --> 00:04:43,440 Így észre egy kis kettősség itt. 92 00:04:43,440 --> 00:04:47,680 Mert én nyilvánította a saját funkciója és én kissé önkényesen hívott 93 00:04:47,680 --> 00:04:50,880 azt nyomtatandó nevet, mert én már meghatározott zárójelben, hogy ez a 94 00:04:50,880 --> 00:04:55,035 függvény egy argumentummal, hogy milyen amely a szöveg -, így ez egy szó 95 00:04:55,035 --> 00:05:00,010 vagy kifejezést, vagy valami ilyesmi - és Hívom ezt az érvet nevemben, hogy 96 00:05:00,010 --> 00:05:04,770 jelenti az egyetlen változó, hogy van a körét, hogy úgy mondjam, nem nevet. 97 00:05:04,770 --> 00:05:07,780 >> S csak azért létezik a között, amit két zárójelek, természetesen? 98 00:05:07,780 --> 00:05:12,990 Hát tényleg, mint egyenes 10 és 14, így, mint én, hétfőn nem használható 99 00:05:12,990 --> 00:05:17,650 S, de mit tehetünk, át S a nyomtatás nevét. 100 00:05:17,650 --> 00:05:21,030 Print név csak azért történik, hogy ez Alias, szinonimája, a becenevet, 101 00:05:21,030 --> 00:05:24,400 nevezni név, és most használja ebben a sorban. 102 00:05:24,400 --> 00:05:26,840 Tehát most hadd mentéséhez, kicsinyítés. 103 00:05:26,840 --> 00:05:31,250 >> Hadd menjek előre, és helló. 104 00:05:31,250 --> 00:05:32,400 Jól néz ki. 105 00:05:32,400 --> 00:05:36,110 Nem köpte ki a hibákat. . / Hello, Enter. 106 00:05:36,110 --> 00:05:37,020 Mi a nevem? 107 00:05:37,020 --> 00:05:38,060 David. 108 00:05:38,060 --> 00:05:39,270 És helló David. 109 00:05:39,270 --> 00:05:41,820 Tehát egyáltalán nem olyan izgalmas, de gondoljunk csak most. 110 00:05:41,820 --> 00:05:44,310 Most már, hogy ugyanazon összetevő mint mi a semmiből 111 00:05:44,310 --> 00:05:45,420 hogy saját funkcióit. 112 00:05:45,420 --> 00:05:46,770 >> De van egy kis megvagy. 113 00:05:46,770 --> 00:05:50,620 Tegyük fel, hogy én még nem gondoltam ezt át, és én tényleg nem 114 00:05:50,620 --> 00:05:54,250 igazán gondolkodtam rajta írta ezt a funkciót le ide. 115 00:05:54,250 --> 00:05:55,420 Olyan tökéletesen ésszerű. 116 00:05:55,420 --> 00:05:58,440 A Scratch nincs fogalom A helyet a szkripteket. 117 00:05:58,440 --> 00:06:00,670 Valaki tehetne egy ide, egy ide, Egy itt, és talán újra 118 00:06:00,670 --> 00:06:03,310 nézni egy kicsit rendetlen, ha nem tedd ki szépen, de nem 119 00:06:03,310 --> 00:06:05,910 számít, ahol fizikailag a szkripteket a képernyőn voltak. 120 00:06:05,910 --> 00:06:09,660 Sajnos C -, és ez nem olyan, mint nyelvek, mint a Java és Python 121 00:06:09,660 --> 00:06:13,600 és mások, hogy lehet, hogy ismerős a - sajnos C, sorrendben nem 122 00:06:13,600 --> 00:06:15,830 számít, mert nézni, mi fog most történni. 123 00:06:15,830 --> 00:06:19,010 >> Az alapértelmezett funkció folyik végrehajtani, természetesen, a fő. 124 00:06:19,010 --> 00:06:22,290 Fő fog hívni print név vonal nyolc, de sajnos, a 125 00:06:22,290 --> 00:06:26,660 fordító nem is tudják, hogy a nyomtatott név létezik, amíg nem lesz a 11. sor, 126 00:06:26,660 --> 00:06:28,520 ami sajnos lesz túl késő. 127 00:06:28,520 --> 00:06:30,660 Tehát lássuk, hogy helló. 128 00:06:30,660 --> 00:06:32,950 És most átkozott, két hiba keletkezik. 129 00:06:32,950 --> 00:06:36,050 Tehát most hadd lépjünk fel a nagyon először, hiszen mindig van, és 130 00:06:36,050 --> 00:06:39,560 észre, hogy kiabál rám, "Implicit nyilatkozat funkció 131 00:06:39,560 --> 00:06:40,540 nyomtatás nevét. " 132 00:06:40,540 --> 00:06:43,860 >> Így láttuk ezt az üzenetet korábban, implicit nyilatkozat funkciót. 133 00:06:43,860 --> 00:06:48,080 Amikor láttuk, hogy az ilyen hiba? 134 00:06:48,080 --> 00:06:49,180 Amikor nem könyvtár. 135 00:06:49,180 --> 00:06:53,470 Ha elfelejtettem cs50.h, és azt, hogy kiabált az, hogy szöveg vagy kap int. 136 00:06:53,470 --> 00:06:56,880 De ebben az esetben, ez a funkció nyomtatási Név nincs benne a könyvtár, nem igaz? 137 00:06:56,880 --> 00:07:00,230 Ez szó szerint ebben a fájlban, így ami igazán a probléma? 138 00:07:00,230 --> 00:07:04,660 >> Hát sajnos a C, ez visz hihetetlenül szó, hogy ha 139 00:07:04,660 --> 00:07:08,640 szeretnék egy függvényt nevű nyomtató nevét létezik, akkor sem kell végrehajtani 140 00:07:08,640 --> 00:07:11,940 ezt a funkciót az egyik legfontosabb a kódot, hogy ez elérhető, hogy alacsonyabb 141 00:07:11,940 --> 00:07:15,070 funkciók, de őszintén szólva, ez lesz hanyag nagyon gyorsan. 142 00:07:15,070 --> 00:07:18,160 Én személy szerint olyan, mintha az első fő mert akkor ez nagyon világos, hogy mi a 143 00:07:18,160 --> 00:07:19,890 program nem első pillantásra. 144 00:07:19,890 --> 00:07:23,290 És plusz, akkor kap a furcsa sarokba esetben, ahol, ha x akarja hívni 145 00:07:23,290 --> 00:07:27,530 y y de nevezhetnénk x, csak fizikailag nem lehet ténylegesen egy 146 00:07:27,530 --> 00:07:28,540 a másik felett. 147 00:07:28,540 --> 00:07:31,230 >> De kiderült C, akkor megoldani ezt a nagyon egyszerű. 148 00:07:31,230 --> 00:07:34,010 Megyek, hogy egy kis helyet itt, és én csak úgy 149 00:07:34,010 --> 00:07:38,170 megelőző jellegű, bár kissé redundáns, majd tanítani a 150 00:07:38,170 --> 00:07:42,320 fordító, hogy létezik egy függvény vagyis a nyomtató nevét, akkor vesz egy string, 151 00:07:42,320 --> 00:07:46,330 és én fogom hívni azt nevet pontosvessző. 152 00:07:46,330 --> 00:07:50,220 >> Szóval ez már sorban négy, amit még nem látott, a nyilatkozat 153 00:07:50,220 --> 00:07:53,940 függvény print nevet, de ez csak egy ígéretet, hogy ez a funkció 154 00:07:53,940 --> 00:07:56,620 végül meg, végül végre kell hajtani. 155 00:07:56,620 --> 00:08:00,180 Ez most már hagyja egyedül, mert most ez a definíció, a 156 00:08:00,180 --> 00:08:04,090 végrehajtása, a fajta az utolsó mérföld végrehajtásának a 157 00:08:04,090 --> 00:08:05,130 adott funkciót. 158 00:08:05,130 --> 00:08:08,450 Tehát őszintén szólva ez hülyeség, ez bosszantó, de ez az út C, és ez 159 00:08:08,450 --> 00:08:12,050 mert ez visz nagyon szó és, mint egy számítógép őszintén kellene, 160 00:08:12,050 --> 00:08:16,020 nemcsak hogy pontosan mit mondani, hogy van, és hogy a rendezés fontos. 161 00:08:16,020 --> 00:08:18,940 >> Így tartsa szem előtt, és ismét elkezdi észre az újabb mintákat. 162 00:08:18,940 --> 00:08:21,850 Esély lesz, ha nem Már kezd találkozni üzenetek 163 00:08:21,850 --> 00:08:24,700 mint ez, hogy első pillantásra úgy tűnik, teljesen rejtélyes, de ha elkezd 164 00:08:24,700 --> 00:08:29,000 keresni ezeket a kulcsszavakat, mint a "Implicit nyilatkozat" megemlíteni a 165 00:08:29,000 --> 00:08:32,380 funkció ebben az esetben - és őszintén szólva, néha kap egy kis zöld 166 00:08:32,380 --> 00:08:35,010 sárgarépa szimbólum, amely megmondja, hogy hol a probléma valószínűleg az - 167 00:08:35,010 --> 00:08:40,980 kezdhetjük a munkát végig még nem látott hibaüzenetek. 168 00:08:40,980 --> 00:08:45,860 Bármilyen kérdése az írásban a saját funkció ilyen módon? 169 00:08:45,860 --> 00:08:47,540 >> Csináljunk valamit, ami a kevés vonzóbb. 170 00:08:47,540 --> 00:08:51,760 Ahelyett, hogy csak tenni valamit, hogy van mellékhatása a nyomtatás, engedj el 171 00:08:51,760 --> 00:08:55,340 előre, és mentse az új fájlt, és mi hívja ezt positive.c, annak ellenére, hogy 172 00:08:55,340 --> 00:08:57,600 lesz egy kicsit más versus utoljára. 173 00:08:57,600 --> 00:09:01,910 És ebben az időben, azt akarom, hogy újra végrehajtani utoljára a positive.C például, amely 174 00:09:01,910 --> 00:09:04,430 az kényszeríti a felhasználót, hogy nekem egy pozitív egész szám. 175 00:09:04,430 --> 00:09:07,280 De meg kellett használni, hogy int utoljára. 176 00:09:07,280 --> 00:09:10,780 Nem lett volna szép, ha nem volt függvény neve kap pozitív int 177 00:09:10,780 --> 00:09:13,610 , hogy én is csak kiszervezik ezt darab funkciót? 178 00:09:13,610 --> 00:09:16,480 Tehát a különbség itt fogjuk végre kap pozitív int, de ellentétben 179 00:09:16,480 --> 00:09:20,330 print név, amely már a mellékhatással - nem tért vissza valamit, hogy nekem, mint 180 00:09:20,330 --> 00:09:21,710 a szám vagy a szöveg - 181 00:09:21,710 --> 00:09:25,510 kap pozitív int, természetesen, majd a vissza, remélhetőleg pozitív int. 182 00:09:25,510 --> 00:09:26,170 >> Szóval erre. 183 00:09:26,170 --> 00:09:30,840 Tartalmazza cs50.h, tartalmazzák a standard io.h. 184 00:09:30,840 --> 00:09:33,520 Int main semmis. 185 00:09:33,520 --> 00:09:42,160 És most itt, én megyek előre és mondjuk int, nevezzük n értéke 186 00:09:42,160 --> 00:09:44,270 kap pozitív int. 187 00:09:44,270 --> 00:09:49,080 És csakúgy, mint kapni int már létezik mert a személyzet írta, én megyek 188 00:09:49,080 --> 00:09:53,950 vállaljon a pillanatban, hogy kap pozitív int létezik, és most megyek 189 00:09:53,950 --> 00:09:57,730 hogy menjen előre, és azt mondja: printf, köszönöm a% i / n ", n. 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Tehát most, ha úgy fordítani ezt a programot, amit fog történni az én terminál 192 00:10:07,770 --> 00:10:09,075 ablak alján a képernyőn? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Megyek talán kap, hogy a ugyanazt a hibát, mint korábban. 195 00:10:13,900 --> 00:10:14,570 Így próbáljuk meg. 196 00:10:14,570 --> 00:10:16,450 Legyen pozitív. 197 00:10:16,450 --> 00:10:19,900 És ismét, implicit nyilatkozat funkció, hogy a pozitív int. 198 00:10:19,900 --> 00:10:21,970 Így meg tudjuk oldani ezt a egy pár módon. 199 00:10:21,970 --> 00:10:27,310 Fogom tartani, hogy egyszerű, és csak tette a nyilatkozatot, és itt kap 200 00:10:27,310 --> 00:10:28,120 pozitív int. 201 00:10:28,120 --> 00:10:29,720 Szükségem van az úgynevezett aláírás. 202 00:10:29,720 --> 00:10:32,410 Az aláírás csak utal Az esztétikum a 203 00:10:32,410 --> 00:10:34,090 első sorban a program. 204 00:10:34,090 --> 00:10:37,420 Szóval mit kéne pozitív int cserébe? 205 00:10:37,420 --> 00:10:37,970 >> Így egy int. 206 00:10:37,970 --> 00:10:41,540 Úgy értem Ideális esetben visszatér olyasmi, mint a pozitív int, de 207 00:10:41,540 --> 00:10:42,160 nem létezik. 208 00:10:42,160 --> 00:10:45,280 Már nem láttam, hogy többek között az adatok típus, ezért kell foglalkozni a 209 00:10:45,280 --> 00:10:47,170 tény, hogy nagyon kevés adattípusok dolgozni. 210 00:10:47,170 --> 00:10:50,360 De akkor vissza egy int, és csak bízom benne, hogy pozitív lesz. 211 00:10:50,360 --> 00:10:52,690 Ez lesz a címe kap pozitív int. 212 00:10:52,690 --> 00:10:55,122 >> És most mi a helyzet az érveit? 213 00:10:55,122 --> 00:10:56,440 Tart bármilyen adatot? 214 00:10:56,440 --> 00:10:58,280 Vajon szüksége nincs a felhasználók? 215 00:10:58,280 --> 00:11:00,900 Így nem kell tudni előre semmit. 216 00:11:00,900 --> 00:11:03,220 A string nem, hogy nem int. 217 00:11:03,220 --> 00:11:06,430 Printf nem - hogy szüksége van némi input átment - és print név 218 00:11:06,430 --> 00:11:09,020 kellett egy kis bemenet, de most pozitív int nem. 219 00:11:09,020 --> 00:11:11,530 Így fogok kifejezetten mondja a fordító semmis. 220 00:11:11,530 --> 00:11:13,470 Void, hogy nincs semmi másra. 221 00:11:13,470 --> 00:11:17,990 Így érvénytelen módon semmi sem fog benne azok zárójelek pontosvessző. 222 00:11:17,990 --> 00:11:20,840 >> És most az alján a fájl - és megint, én csak, hogy milyen az anális 223 00:11:20,840 --> 00:11:23,640 itt amivel fő a tetején, amely jó gyakorlat, mert így, 224 00:11:23,640 --> 00:11:26,220 amikor csak vagy valaki más megnyitja a fájlt, a 225 00:11:26,220 --> 00:11:27,400 funkció ott van. 226 00:11:27,400 --> 00:11:29,660 Lehet merülni a tér egy. 227 00:11:29,660 --> 00:11:34,190 Szóval most fogom megismételni ezt, kap pozitív int érvénytelen, de nem vagyok 228 00:11:34,190 --> 00:11:35,430 fog ütni a pontosvessző most. 229 00:11:35,430 --> 00:11:38,280 Fogom nyitni zárójelek, és most kölcsön kell kérnem 230 00:11:38,280 --> 00:11:39,700 néhány ötlet a hétfő. 231 00:11:39,700 --> 00:11:44,450 >> Szóval, ahogy emlékszem, csináltunk valamit mint ezt a következő, míg 232 00:11:44,450 --> 00:11:45,830 valami igaz. 233 00:11:45,830 --> 00:11:46,630 És mit tegyek? 234 00:11:46,630 --> 00:11:51,540 Én valami ilyesmit ad nekem egy pozitív egész szám, 235 00:11:51,540 --> 00:11:52,430 kicsit gyors. 236 00:11:52,430 --> 00:11:53,540 Jól jönne olyan szavakat akarok. 237 00:11:53,540 --> 00:11:54,960 És akkor én mit használt? 238 00:11:54,960 --> 00:11:59,530 Int n értéke int kap, nem érveket is. 239 00:11:59,530 --> 00:12:00,550 >> És vegyük észre a különbséget. 240 00:12:00,550 --> 00:12:04,680 Ha hívja a funkció, amikor használja egy funkciót, akkor nem hozott semmis. 241 00:12:04,680 --> 00:12:08,570 Csak csinálni, hogy amikor nyilvánító funkció, a tanítás a fordító milyen 242 00:12:08,570 --> 00:12:09,780 meg kell várni. 243 00:12:09,780 --> 00:12:11,650 Szóval nem kell tenni elvesztésével ott magad. 244 00:12:11,650 --> 00:12:12,940 >> És most mi volt az állapotom? 245 00:12:12,940 --> 00:12:19,670 Nos, n nem egyenlő a pozitív, de ez csak pszeudo-kódot. 246 00:12:19,670 --> 00:12:22,530 Szóval hogyan tudom kifejezni ezt tisztábban? 247 00:12:22,530 --> 00:12:24,090 Tehát kisebb vagy egyenlő nullával. 248 00:12:24,090 --> 00:12:26,250 Tehát még egyszer, észre meg tudod csinálni kisebb vagy egyenlő. 249 00:12:26,250 --> 00:12:28,100 Annak ellenére, hogy két külön szimbólumok, meg tudod csinálni a 250 00:12:28,100 --> 00:12:29,350 a billentyűzet, mint olyat. 251 00:12:29,350 --> 00:12:33,950 >> De van még egy hiba, ami Elcsesztem utoljára is. 252 00:12:33,950 --> 00:12:36,950 Azt be kell jelenteniük - 253 00:12:36,950 --> 00:12:37,460 Pontosan. 254 00:12:37,460 --> 00:12:39,640 Azt be kell jelenteniük n kívül a hurok. 255 00:12:39,640 --> 00:12:44,180 Szóval kell tenni n itt, és én nem szeretnénk, hogy újra nyilvánítja itt 256 00:12:44,180 --> 00:12:46,480 nehogy kapok egy új változó. 257 00:12:46,480 --> 00:12:48,860 Csak azt akarom, hogy értéket rendelni itt. 258 00:12:48,860 --> 00:12:54,320 >> És most nem is történt itt. 259 00:12:54,320 --> 00:12:57,290 Hadd túltenni magam és úgy tenni, mintha én végeztem. 260 00:12:57,290 --> 00:13:01,220 Legyen pozitív, és most van egy új hiba. 261 00:13:01,220 --> 00:13:04,550 A program eléri végén nem-void funkciót. 262 00:13:04,550 --> 00:13:07,760 Így az új hibaüzenet, de ha kedves Az kötekedik mellett minden szóval, 263 00:13:07,760 --> 00:13:09,620 valószínűleg utal, hogy mi a baj. 264 00:13:09,620 --> 00:13:11,240 >> Irányítani. 265 00:13:11,240 --> 00:13:14,250 Szabályozás csak azt jelenti, hogy a rend műveletek a programban. 266 00:13:14,250 --> 00:13:16,510 A számítógép a kontroll és valami elromlott. 267 00:13:16,510 --> 00:13:18,510 Tehát ez eléri a végét egy nem-void funkciót. 268 00:13:18,510 --> 00:13:21,760 Milyen funkció látszólag utalva? 269 00:13:21,760 --> 00:13:24,790 Milyen funkció nem érvénytelen? 270 00:13:24,790 --> 00:13:27,400 Szóval pozitív int, és egy kicsit zavaró, hogy jól, 271 00:13:27,400 --> 00:13:29,010 ez a fajta semmis. 272 00:13:29,010 --> 00:13:33,070 Ez egy specifikációját üres a maga érvek, de a kimenet fog 273 00:13:33,070 --> 00:13:34,540 lehet N típusú. 274 00:13:34,540 --> 00:13:37,260 Tehát a szó a bal oldalon a úgynevezett visszatérő típus. 275 00:13:37,260 --> 00:13:40,320 A szó a belső itt A nulla vagy több érvet 276 00:13:40,320 --> 00:13:41,970 hogy a függvény. 277 00:13:41,970 --> 00:13:44,060 >> Szóval mit kell tennem? 278 00:13:44,060 --> 00:13:47,650 Ezen a ponton az én kódot, line 21 ahol A villogó prompt most, én 279 00:13:47,650 --> 00:13:51,430 pozitív int belül A változó nevű n. 280 00:13:51,430 --> 00:13:55,200 Hogyan adja vissza a főoldalra? 281 00:13:55,200 --> 00:13:55,960 Szó szerint. 282 00:13:55,960 --> 00:13:59,320 Vissza N pontosvessző. 283 00:13:59,320 --> 00:14:04,090 >> Szóval, ahogy Colton visszatért egy darab papírt választ nekem csepegés 284 00:14:04,090 --> 00:14:07,020 hogy a darab papírt a kis fekete dobozt az asztalra, hogy ezt, hogy 285 00:14:07,020 --> 00:14:10,100 kódot, akkor a szó szoros értelmében csak írni, vissza n, és ez mintha Colton volt 286 00:14:10,100 --> 00:14:12,140 átadta nekem valami fizikai vissza. 287 00:14:12,140 --> 00:14:15,870 Ebben az esetben az történik, hogy pozitív int megy visszaszolgáltatni 288 00:14:15,870 --> 00:14:19,220 mi feltehetően pozitív integer kinek? 289 00:14:19,220 --> 00:14:21,380 Hol ez az érték a végén? 290 00:14:21,380 --> 00:14:29,080 Hogy végül ezt a változót, n, és akkor folytassa a vonal kilenc. 291 00:14:29,080 --> 00:14:31,920 >> Tehát más szóval, annak érdekében a műveletek, a program elindul 292 00:14:31,920 --> 00:14:34,430 végrehajtása, valamint a fordító rájön, ó, szeretné, hogy a könyvtár? 293 00:14:34,430 --> 00:14:36,310 Hadd menjek megragad bármi van benne, hogy az. 294 00:14:36,310 --> 00:14:37,750 Ó, akarsz a szokásos IO könyvtár? 295 00:14:37,750 --> 00:14:39,660 Hadd menjek megragad bármi van benne, hogy az. 296 00:14:39,660 --> 00:14:44,510 Mit jelent a fordító mondja magát amikor eléri a négy vonal? 297 00:14:44,510 --> 00:14:47,980 Ó, akkor megígérte, hogy hajtsák végre a nevű függvényt kap pozitív, de 298 00:14:47,980 --> 00:14:50,820 mi lesz vissza, hogy később, valami ilyesmi. 299 00:14:50,820 --> 00:14:53,450 >> Int main üresség csak azt jelenti, itt az a belek a programom. 300 00:14:53,450 --> 00:14:54,990 Vonal hét csak egy zárójel. 301 00:14:54,990 --> 00:14:59,540 Vonal nyolc azt mondja, a bal oldalon, hogy én 32 bit integer, hívják n. 302 00:14:59,540 --> 00:15:02,160 A jobb oldalon, ez mondván, hogy a pozitív int. 303 00:15:02,160 --> 00:15:07,120 Most szünet, hogy a történet, mert most Én nem úgy mozgatja a kurzort. 304 00:15:07,120 --> 00:15:11,720 Saját kurzor most megy le ide, mert most kap pozitív int végrehajtja. 305 00:15:11,720 --> 00:15:13,100 Int n nyilvánítják. 306 00:15:13,100 --> 00:15:14,040 Tegye a következőket. 307 00:15:14,040 --> 00:15:16,090 Printf ad nekem egy pozitív egész szám. 308 00:15:16,090 --> 00:15:19,740 >> Kap egy int a felhasználó, tárolja n és talán ezt újra és újra. 309 00:15:19,740 --> 00:15:23,010 Ez a ciklus azt jelenti, hogy ezt a kódot esetleg végre fel és le, mint ezt újra 310 00:15:23,010 --> 00:15:25,810 és újra, de amikor a felhasználó végül együttműködik, és ad nekem egy pozitív 311 00:15:25,810 --> 00:15:31,750 int, elütöttem line 21, ekkor a szám adják vissza, és melyik 312 00:15:31,750 --> 00:15:34,280 érdemes kiemelni most? 313 00:15:34,280 --> 00:15:35,070 Kilenc. 314 00:15:35,070 --> 00:15:39,010 Ellenőrzés, hogy úgy mondjam, visszatér a sorban kilenc. 315 00:15:39,010 --> 00:15:40,650 Ez az a vonal, amely most a főnök. 316 00:15:40,650 --> 00:15:43,250 >> Szóval ez az, mi történt az összes Ez idő alatt a motorháztető, de 317 00:15:43,250 --> 00:15:46,480 amikor már használt funkciókhoz, mint a printf vagy még csak szöveg, hogy valaki más 318 00:15:46,480 --> 00:15:50,600 írta neked, ellenőrzés volt, hogy átadta ki, hogy valaki másnak a kód sort 319 00:15:50,600 --> 00:15:51,290 a sorban. 320 00:15:51,290 --> 00:15:53,770 Ez egyszerűen nem lehetett látni, és nem igazán ábrázolni ebben a 321 00:15:53,770 --> 00:15:57,620 programot, mert ez valami más fájlt a merevlemezre 322 00:15:57,620 --> 00:16:00,000 tudtán kívül minket. 323 00:16:00,000 --> 00:16:02,100 Szóval tulajdonképpen össze és futtassa ezt most. 324 00:16:02,100 --> 00:16:03,890 >> Legyen pozitív. 325 00:16:03,890 --> 00:16:05,260 Töltsd ki, ez folyamatban van. 326 00:16:05,260 --> 00:16:06,650 . / Pozitív. 327 00:16:06,650 --> 00:16:08,020 Adj egy pozitív egész szám. 328 00:16:08,020 --> 00:16:08,800 Legyünk nehéz. 329 00:16:08,800 --> 00:16:10,430 Negatív 1. 330 00:16:10,430 --> 00:16:11,360 Zero. 331 00:16:11,360 --> 00:16:13,370 Adjunk 50. 332 00:16:13,370 --> 00:16:18,100 Köszönöm a 50, és így ellenőrzése most visszatért. 333 00:16:18,100 --> 00:16:21,750 Bármilyen kérdése van, akkor, hogy? 334 00:16:21,750 --> 00:16:23,180 Igen? 335 00:16:23,180 --> 00:16:25,630 >> [Hallható]. 336 00:16:25,630 --> 00:16:26,130 >> Mondd újra. 337 00:16:26,130 --> 00:16:27,860 Oh, jó kérdés. 338 00:16:27,860 --> 00:16:31,100 Szóval lehet, hogy észre a párhuzamot, amely Én vagyok a fajta vágás sarkot. 339 00:16:31,100 --> 00:16:35,420 A 12. sorban, azt mondom, hogy pozitív int vissza egy int, de ugyanez 340 00:16:35,420 --> 00:16:39,660 logika, most értetődik, hogy a soros hathengeres, azt mondom, hogy a fő tér vissza 341 00:16:39,660 --> 00:16:44,040 int, de mi van soha volt valamelyik program? 342 00:16:44,040 --> 00:16:46,470 Soha nem volt említés a ez a kulcsszó vissza. 343 00:16:46,470 --> 00:16:49,970 >> Így kiderül, hogy a C-ben, legalábbis változata az, hogy mi a 344 00:16:49,970 --> 00:16:55,750 1999-ben készült, gyakorlatilag ez történik automatikusan. 345 00:16:55,750 --> 00:16:59,300 Bármikor végre a programot, és végre egy funkciót nevű fő, 346 00:16:59,300 --> 00:17:04,230 hogy a függvény nullát fog visszaadni a alapértelmezés, ha nem mást, 347 00:17:04,230 --> 00:17:05,849 és nulla csak egy konvenció. 348 00:17:05,849 --> 00:17:09,430 A világ visszatér nulla ezáltal azt jelzi, hogy minden rendben van, 349 00:17:09,430 --> 00:17:13,040 hatékonyan így nekünk négymilliárd lehetséges dolog, hogy mehet 350 00:17:13,040 --> 00:17:17,530 rossz, hogy ha visszatérünk az egyik, hogy a talán jelzi a kód azt jelenti, hogy ez a 351 00:17:17,530 --> 00:17:18,310 dolog rosszul sült el. 352 00:17:18,310 --> 00:17:20,589 Tudtuk vissza két, ami azt jelenti, ez a dolog rosszul sült el. 353 00:17:20,589 --> 00:17:23,440 Tudtuk vissza négymilliárd, ami azt jelenti, ez a másik dolog rosszul sült el. 354 00:17:23,440 --> 00:17:27,170 >> És ha most gondolj a saját PC vagy Mac, akkor lehet, hogy emlékeztetni arra, hogy 355 00:17:27,170 --> 00:17:29,610 néha kap rejtélyes hibaüzenetek a szoftver, hogy te 356 00:17:29,610 --> 00:17:32,650 segítségével, és néha van egy ember barátságos leírás, de van 357 00:17:32,650 --> 00:17:35,265 gyakran kód vagy szám a képernyőn? 358 00:17:35,265 --> 00:17:37,800 Ha ez nem jön szóba, csak tartsa a szemét érte. 359 00:17:37,800 --> 00:17:40,790 Ez az, amit ezek a tipikusan kódok utalva. 360 00:17:40,790 --> 00:17:44,200 Ők szerepelnek a Microsoft Word és a más programok, így ha a fájl 361 00:17:44,200 --> 00:17:48,850 hibabejelentést a cég, akkor mondd meg nekik, ó, kaptam hibaszám 45. 362 00:17:48,850 --> 00:17:51,750 És néhány programozó vissza a vállalat nézd, hogy akár a saját 363 00:17:51,750 --> 00:17:54,940 kódot, és azt mondják, ó, ez azért van, mert csináltam ezt a hibát, és ezért a felhasználó 364 00:17:54,940 --> 00:17:56,240 kapta ezt az üzenetet. 365 00:17:56,240 --> 00:17:59,490 >> De őszintén szólva, ez csak egy kis zavaró és egy kicsit unalmas, hogy 366 00:17:59,490 --> 00:18:02,130 következtetni, hogy legalább a mi első néhány programot, így már 367 00:18:02,130 --> 00:18:02,970 már kihagyását. 368 00:18:02,970 --> 00:18:07,450 De ebben az időben mindenki a funkciók fő titokban volt ez 369 00:18:07,450 --> 00:18:11,600 sor automatikusan az Ön által fordító, csak megállapodás szerint a 370 00:18:11,600 --> 00:18:13,172 menteni egy kis időt. 371 00:18:13,172 --> 00:18:14,620 >> [Hallható]. 372 00:18:14,620 --> 00:18:16,250 >> Nem kell, hogy tartalmazza azt a fő. 373 00:18:16,250 --> 00:18:16,700 Ez rendben van. 374 00:18:16,700 --> 00:18:20,260 Önnek nem kell, hogy tartalmazza, ha volt, végrehajtó funkció, mint ez. 375 00:18:20,260 --> 00:18:22,850 Ellenkező esetben a funkció lapos ki nem fog működni. 376 00:18:22,850 --> 00:18:24,480 De fő, ez nem szükséges. 377 00:18:24,480 --> 00:18:28,450 Egy-két hét, akkor kezdeni, hogy abba a szokás, ha szeretnénk kezdeni 378 00:18:28,450 --> 00:18:29,690 jelezve hibákat. 379 00:18:29,690 --> 00:18:32,550 Nagyon jó kérdés. 380 00:18:32,550 --> 00:18:36,880 >> Olyan gyorsan verbális szünetet is beszélve, hogy ez a péntek, nem fogunk ebédelni 381 00:18:36,880 --> 00:18:39,980 önmagában, de fogunk vacsorázni néhány diák és a személyzet. 382 00:18:39,980 --> 00:18:42,940 Ha szeretné, hogy csatlakozzon hozzánk, érezd szabadon menni cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 06:00 a péntek. 384 00:18:45,030 --> 00:18:47,990 A tér, mint mindig, korlátozott, de majd továbbra is csinál ezeket közel 385 00:18:47,990 --> 00:18:51,420 heti, ha a tér elfogy ezen a héten. 386 00:18:51,420 --> 00:18:56,160 >> Tehát a Cliffhanger, hogy abbahagyta Hétfő volt, hogy a húrok valóban 387 00:18:56,160 --> 00:19:00,520 indexelt be, ami éppen azt jelenti, hogy lehet kapni az első karakter, a 388 00:19:00,520 --> 00:19:03,770 második karaktert, a harmadik karakter és így tovább, mert akkor 389 00:19:03,770 --> 00:19:07,860 hatékonyan gondolom, egy string, mint a hello, mint ebben az esetben öt 390 00:19:07,860 --> 00:19:09,670 levelek belsejében dobozok. 391 00:19:09,670 --> 00:19:13,370 És lehet kapni minden egyes ilyen doboz, amit szintaxis tettünk 392 00:19:13,370 --> 00:19:15,230 be hétfőn? 393 00:19:15,230 --> 00:19:16,760 Azok a szögletes zárójelek a billentyűzeten. 394 00:19:16,760 --> 00:19:18,980 Ez csak azt jelentette, menj helyre nulla. 395 00:19:18,980 --> 00:19:22,840 >> Kezdjük számláló nulla, így tartó nulla jelenti h, konzol egy 396 00:19:22,840 --> 00:19:25,170 jelenti e, és így tovább. 397 00:19:25,170 --> 00:19:28,490 És így minden alkalommal, amikor már a vonósok és beírni a "hello" 398 00:19:28,490 --> 00:19:31,250 és a "világ", és más dolgok a képernyőn, ez már tárolva 399 00:19:31,250 --> 00:19:32,820 dobozok, mint ez. 400 00:19:32,820 --> 00:19:33,370 És hogy egy kitalálni. 401 00:19:33,370 --> 00:19:37,470 Mit jelent fizikailag minden doboz belsejében a számítógép? 402 00:19:37,470 --> 00:19:38,250 >> [Hallható]. 403 00:19:38,250 --> 00:19:39,150 >> Tessék? 404 00:19:39,150 --> 00:19:39,580 >> Karakterek. 405 00:19:39,580 --> 00:19:44,760 >> Tehát egy karakter, természetesen abban az esetben, a vonósok, és a karakter csak 406 00:19:44,760 --> 00:19:46,800 nyolc bit vagy egy byte. 407 00:19:46,800 --> 00:19:49,550 Szóval valószínűleg legalább homályosan ismeri azt a tényt, hogy a 408 00:19:49,550 --> 00:19:50,500 számítógép memóriájában. 409 00:19:50,500 --> 00:19:52,110 Ez két típusú memória, legalább. 410 00:19:52,110 --> 00:19:54,810 Az egyik a merevlemez, ahol menteni dolgok folyamatosan, és ez 411 00:19:54,810 --> 00:19:57,400 általában nagy, így lehet filmeket és a zene, és így tovább. 412 00:19:57,400 --> 00:20:04,010 >> Aztán van egy másik típusú memória néven RAM, R-A-M, Random Access 413 00:20:04,010 --> 00:20:07,510 Memória, és ez a típusú memória használt, ha a számítógép 414 00:20:07,510 --> 00:20:11,520 fut, de ha elveszíti a hatalmat, vagy a akkumulátor meghal, bármit, hogy a tárolt 415 00:20:11,520 --> 00:20:15,300 A RAM eltűnik, ha elveszíti a hatalmat teljesen, mert ez nem 416 00:20:15,300 --> 00:20:16,060 tartós. 417 00:20:16,060 --> 00:20:19,120 Akkor általában, ezekben a napokban, a koncert is, két koncert, talán több. 418 00:20:19,120 --> 00:20:23,490 És a fejjel a RAM, hogy ez sokkal sokkal, sokkal gyorsabban, mint a merevlemezek 419 00:20:23,490 --> 00:20:27,390 vagy akár SSD meghajtók ezekben a napokban, de ez általában drágább, így 420 00:20:27,390 --> 00:20:28,480 akkor kevesebbet. 421 00:20:28,480 --> 00:20:32,400 >> Így a mai beszélgetés igazán utal RAM-ba, hogy a memóriával rendelkezik, amely 422 00:20:32,400 --> 00:20:35,270 már csak, amíg van áram hogy táplálják be a számítógépet. 423 00:20:35,270 --> 00:20:40,530 Tehát, amikor begépeli a H-E-L-L-O, meg az Enter a billentyűzet, a H megy egy 424 00:20:40,530 --> 00:20:44,550 byte RAM, az E megy a egy byte RAM, mint 425 00:20:44,550 --> 00:20:45,800 a többi szó. 426 00:20:45,800 --> 00:20:49,010 Tehát arra, amit sikerült hogy nem utoljára volt ez. 427 00:20:49,010 --> 00:20:53,940 Hadd menjek előre, és megnyitja a fájlt hogy hívják string.c, és felidézni 428 00:20:53,940 --> 00:20:56,860 hogy úgy nézett ki, egy kicsit valami ilyesmi. 429 00:20:56,860 --> 00:20:59,860 Hadd valóban visszatérhet, és változtassa hogy pontosan úgy nézett ki, 430 00:20:59,860 --> 00:21:02,654 húr hossza s. 431 00:21:02,654 --> 00:21:04,560 >> Tehát nézd meg a programot itt. 432 00:21:04,560 --> 00:21:08,530 Mi is a CS50 könyvtár olyan hogy tudjuk használni, hogy string. 433 00:21:08,530 --> 00:21:11,400 Mi is szabványos io.h így tudjuk használni printf. 434 00:21:11,400 --> 00:21:13,580 Miért mi is string.h? 435 00:21:13,580 --> 00:21:16,980 Ez az új, hétfőn. 436 00:21:16,980 --> 00:21:18,230 Így akartuk karakterlánc hosszát. 437 00:21:18,230 --> 00:21:19,090 Str leng. 438 00:21:19,090 --> 00:21:21,470 Az emberek úgy döntött évvel ezelőtt, nézzük csak rövid. 439 00:21:21,470 --> 00:21:24,290 Ahelyett, hogy "string hossza," nevezzük "str leng", és hagyja, hogy a 440 00:21:24,290 --> 00:21:28,540 világ kitalálni, és így ez amit kap hozzáférést a string.h. 441 00:21:28,540 --> 00:21:29,390 >> Ez ismerős. 442 00:21:29,390 --> 00:21:30,320 Ez ismerős. 443 00:21:30,320 --> 00:21:31,450 Ez ismerős. 444 00:21:31,450 --> 00:21:32,370 Ez egy kicsit új. 445 00:21:32,370 --> 00:21:35,420 A vonal 22 - és mi jön vissza erre, de most már tudjuk - 446 00:21:35,420 --> 00:21:37,880 és akkor csak azt tudják, ez attól olvasd el a dokumentációt, vagy 447 00:21:37,880 --> 00:21:39,010 Ön tudta, hogy már C - 448 00:21:39,010 --> 00:21:41,510 A string néha csavart ki. 449 00:21:41,510 --> 00:21:45,130 Ha a felhasználó valóban ellenséges vagy nem együttműködő, és ő csak 450 00:21:45,130 --> 00:21:49,450 nem írjon semmit a billentyűzeten, vagy típus annyira a billentyűzet 451 00:21:49,450 --> 00:21:53,760 hogy elnyomja a számítógép memóriájában, elméletben, hogy szöveg is visszatér 452 00:21:53,760 --> 00:21:56,270 valami más, mint egy karakterlánc. 453 00:21:56,270 --> 00:22:01,930 Ez lehet vissza egy speciális értéket nevezzük NULL minden sapkák, N-U-L-L, és ez az, 454 00:22:01,930 --> 00:22:03,390 csak egy úgynevezett sentinel értéket. 455 00:22:03,390 --> 00:22:08,010 Ez egy különleges értéket jelent valami rossz történt ebben az esetben. 456 00:22:08,010 --> 00:22:10,520 Ez az, hogy nincs a string. 457 00:22:10,520 --> 00:22:16,190 >> Így null én ellenőrzése egyszerűen úgy, hogy, Hosszú történet rövid, str leng és 458 00:22:16,190 --> 00:22:20,230 egyéb funkciók, hogy jön a C, ha a várnak a szöveg, de akkor át őket 459 00:22:20,230 --> 00:22:23,630 hiányában a húr, ha át őket NULL, a számítógép vagy a program 460 00:22:23,630 --> 00:22:25,000 majd csak összeomlik egyenesen. 461 00:22:25,000 --> 00:22:25,610 Fog lógni. 462 00:22:25,610 --> 00:22:27,250 Akkor dobja fel néhány hibaüzenetet. 463 00:22:27,250 --> 00:22:28,690 Rossz dolog fog történni. 464 00:22:28,690 --> 00:22:31,130 Így, bár ez még mindig nem jól definiált - 465 00:22:31,130 --> 00:22:33,730 ez több értelme egy hét vagy két - a 22. sor, ez csak egy 466 00:22:33,730 --> 00:22:38,790 Például a saját védekező hibajavítás csak abban az esetben, egy alkalommal ki 467 00:22:38,790 --> 00:22:42,040 egy millió valami elromlik, a legalábbis az én programomat nem fog összeomlani. 468 00:22:42,040 --> 00:22:45,960 >> Tehát, ha s nem egyenlő valami rossz, Van ez a hurok, és ez volt 469 00:22:45,960 --> 00:22:47,710 ahol volt, hogy más új darab szintaxis. 470 00:22:47,710 --> 00:22:51,580 Van egy for ciklus ismételve a akár nulla a hossza s. 471 00:22:51,580 --> 00:22:56,140 És akkor itt voltam kinyomtatása s konzol i, de miért használom% c minden 472 00:22:56,140 --> 00:23:00,770 hirtelen helyett% s még bár s egy szöveg? 473 00:23:00,770 --> 00:23:02,110 Ez egy karakter, nem igaz? 474 00:23:02,110 --> 00:23:06,560 S egy string, de s konzol valami, s konzol i ahol i nulla 475 00:23:06,560 --> 00:23:10,380 vagy egy-két, az egyéni karaktere, és így 476 00:23:10,380 --> 00:23:14,970 hogy printf tájékoztatni kell, hogy a ez valóban egy karaktert számíthat. 477 00:23:14,970 --> 00:23:18,096 >> Aztán emlékszem, mi volt ez a programot valójában? 478 00:23:18,096 --> 00:23:19,848 >> Kinyomtatta az oszlopok. 479 00:23:19,848 --> 00:23:21,120 >> Igen, pontosan. 480 00:23:21,120 --> 00:23:24,990 Csak nyomtatott szó, hogy írja be egy oszlop, egy karakter soronként. 481 00:23:24,990 --> 00:23:26,190 Nézzük meg még egyszer. 482 00:23:26,190 --> 00:23:27,810 Tehát, hogy string. 483 00:23:27,810 --> 00:23:30,200 Összeállította az OK gombra. . / String. 484 00:23:30,200 --> 00:23:35,560 Hadd írja be H-E-L-L-O, Enter, és Valóban értem, soronként egyet. 485 00:23:35,560 --> 00:23:37,280 >> Hadd tegye optimalizálás itt. 486 00:23:37,280 --> 00:23:40,240 Ha belegondolsz, különösen akkor, ha már beprogramozott, ott van 487 00:23:40,240 --> 00:23:43,340 vitathatatlanul a hatékonyság a sorban 24. 488 00:23:43,340 --> 00:23:46,160 Más szavakkal, ez nem feltétlenül a legjobb design. 489 00:23:46,160 --> 00:23:50,200 Egyszerű, legalább egyszer emlékszem, mit str leng az, de 490 00:23:50,200 --> 00:23:52,640 hogy valami buta potenciálisan. 491 00:23:52,640 --> 00:23:54,863 Mi lehet az? 492 00:23:54,863 --> 00:23:56,280 >> [Hallható]. 493 00:23:56,280 --> 00:23:56,800 >> Pontosan. 494 00:23:56,800 --> 00:24:00,340 Ez ellenőrzi a hossza s minden egyes alkalommal, még ha 495 00:24:00,340 --> 00:24:02,980 H-E-L-L-O mindig fog hogy öt karakter. 496 00:24:02,980 --> 00:24:05,490 Minden alkalommal, amikor ezzel a hurok, Az öt nem változik. 497 00:24:05,490 --> 00:24:08,750 Lehet, hogy megnő i, de mi a hossza s minden 498 00:24:08,750 --> 00:24:09,690 iteráció a hurok? 499 00:24:09,690 --> 00:24:15,810 Ez öt, ez az öt, ez az öt, és de én mégis fel ezt a 500 00:24:15,810 --> 00:24:18,320 kérdés újra és újra és újra. 501 00:24:18,320 --> 00:24:20,750 Most őszintén, a számítógép olyan átkozottul gyors, senki nem fogja észrevenni a 502 00:24:20,750 --> 00:24:23,780 különbség ebben az esetben, de az ilyen jellegű A rossz tervezés döntések 503 00:24:23,780 --> 00:24:28,330 elkezd összeadni, ha a fordító maga nem próbálja meg kijavítani ezt az Ön számára, amely 504 00:24:28,330 --> 00:24:30,630 jellemzően nem, a legalábbis a készülékben. 505 00:24:30,630 --> 00:24:31,540 >> Így fogom csinálni. 506 00:24:31,540 --> 00:24:34,580 Megyek, hogy adjunk egy vessző után az első változó, i. 507 00:24:34,580 --> 00:24:37,310 Én adok magamnak egy másik változó, amelyben ez n, csak a 508 00:24:37,310 --> 00:24:41,330 egyezmény a számok, és akkor én vagyok majd rendelni n értékét karakterlánc 509 00:24:41,330 --> 00:24:42,530 hossza s. 510 00:24:42,530 --> 00:24:46,060 És akkor fogok változtatni az állapotom, hogy mit? 511 00:24:46,060 --> 00:24:51,960 Én meg fog változni az állapotom hogy miközben kevesebb, mint n. 512 00:24:51,960 --> 00:24:55,700 >> Tehát most, hogy hányszor vagyok ellenőrzi a hossza s? 513 00:24:55,700 --> 00:25:00,110 Egyszer, de nem baj, hogy ellenőrizze i ellen n újra és újra, mert most ezek a 514 00:25:00,110 --> 00:25:03,170 értékek ténylegesen nem változnak. 515 00:25:03,170 --> 00:25:06,020 Most már, csak tudom, hogy bármikor hívja a függvényt, van egy kis 516 00:25:06,020 --> 00:25:09,930 fölött, nem elég, hogy gátolják meg tényleg a valaha funkciók használatát, de 517 00:25:09,930 --> 00:25:12,750 Természetesen, ha van egy sor kódot szeretem -, és a vonalak lesz 518 00:25:12,750 --> 00:25:15,490 érdekesebb nemsokára -, ahol van egy lehetőség, hogy hiszem, ha 519 00:25:15,490 --> 00:25:18,320 írja ezt a kódot, hogy hány alkalommal fog végre? 520 00:25:18,320 --> 00:25:20,950 Majd elkezd látni az idő múlásával a teljesítménye a programok 521 00:25:20,950 --> 00:25:21,660 Valóban változik. 522 00:25:21,660 --> 00:25:24,110 >> Sőt, az egyik probléma határozza voltunk végzett az elmúlt években jár 523 00:25:24,110 --> 00:25:27,600 végrehajtó, mint te is emlékszel a hét nulla, a helyesírás-ellenőrző, hanem egy 524 00:25:27,600 --> 00:25:31,380 helyesírás-ellenőrző úgy tervezték, hogy támogassa A szótár 150000 plusz 525 00:25:31,380 --> 00:25:32,860 szavakat, hogy adunk nektek. 526 00:25:32,860 --> 00:25:37,100 Meg kellett volna írni a kódot, amely betölti ezeket a szavakat a RAM-ba, így a 527 00:25:37,100 --> 00:25:40,700 dobozok, mint láttuk, a képernyőn egy pillanatra óra, majd amilyen gyorsan csak 528 00:25:40,700 --> 00:25:43,740 lehet, meg kell, hogy képes legyen válaszolni a kérdése a forma, ez a szó 529 00:25:43,740 --> 00:25:44,280 hibásan? 530 00:25:44,280 --> 00:25:45,420 Van ez a szó hibásan? 531 00:25:45,420 --> 00:25:46,770 Van ez a szó hibásan? 532 00:25:46,770 --> 00:25:49,525 >> És valami ilyesmi, amit már végzett az elmúlt években is belőle, 533 00:25:49,525 --> 00:25:53,500 bár egy opt-in választható alapon, a verseny a fajta, ahol a 534 00:25:53,500 --> 00:25:59,470 a diákok, akik a kevesebb RAM és kevésbé idő, kevesebb CPU ciklust, a végén 535 00:25:59,470 --> 00:26:02,640 bugyogott fel a tetejére egy kis ranglistán, illetve rangsorolását, hogy fel 536 00:26:02,640 --> 00:26:04,770 a kurzus honlapján, ahogy már végzett az elmúlt években. 537 00:26:04,770 --> 00:26:08,100 Tehát még egyszer, teljesen szabadon választható, de ez a beszél a tervezési lehetőségeket 538 00:26:08,100 --> 00:26:11,250 amelyek előttünk egyszer elkezdjük épület tetején néhány ilyen 539 00:26:11,250 --> 00:26:14,010 alapvető építőkövei. 540 00:26:14,010 --> 00:26:16,780 >> Hadd menjek vissza a diagram csak egy pillanatra, és láthatóvá válik egy kis 541 00:26:16,780 --> 00:26:17,610 valami. 542 00:26:17,610 --> 00:26:21,400 Ez valóban egy string, és vettünk néhány előnye könyvtárak, 543 00:26:21,400 --> 00:26:25,150 szabványos io.h amely - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, többek között. 546 00:26:27,860 --> 00:26:31,540 cs50.h, amely kap int, és kap húr és így tovább, string.h, mely 547 00:26:31,540 --> 00:26:32,570 volt str leng. 548 00:26:32,570 --> 00:26:34,800 De kiderül, van még egy. 549 00:26:34,800 --> 00:26:38,540 Őszintén szólva, van sok-sok header fájlokat kijelentik funkciók 550 00:26:38,540 --> 00:26:43,320 a könyvtárak, de ez az ctype.h valóban lesz kissé 551 00:26:43,320 --> 00:26:46,900 előnyös, mert megyek megy előre, és végre egy 552 00:26:46,900 --> 00:26:48,120 másik program itt. 553 00:26:48,120 --> 00:26:52,420 >> Hadd menjek előre, és nyisd ki valamit Írtam korábban hívott 554 00:26:52,420 --> 00:26:55,750 capitalize.c, és nézzük egy pillantást, hogyan is működik ez. 555 00:26:55,750 --> 00:27:00,340 Figyeljük meg, hogy én vagyok a, ebben a verzióban belőle, három ismerős fájlokat. 556 00:27:00,340 --> 00:27:04,110 Figyeljük meg, hogy a 18. sor, én vagyok kapok egy sort. 557 00:27:04,110 --> 00:27:07,660 Értesítés a sorban 21, én azt állítva, hogy a következő kódot fog 558 00:27:07,660 --> 00:27:12,170 tőkét s, amit a felhasználó beírt be, és hogyan csinálom ezt? 559 00:27:12,170 --> 00:27:13,300 Nos, én viszem - 560 00:27:13,300 --> 00:27:14,750 tanulsága utoljára - 561 00:27:14,750 --> 00:27:18,370 Én kijelentve i és n és iterációjával át a karaktereket a húr. 562 00:27:18,370 --> 00:27:22,720 És akkor mi ez a blokk kódot 24 vezetéken keresztül 27 563 00:27:22,720 --> 00:27:24,550 Ennek a laikus szempontból? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Kisbetű vissza. 566 00:27:29,730 --> 00:27:30,430 >> Pontosan. 567 00:27:30,430 --> 00:27:35,920 Ha s konzol i - tehát ha az i-edik jellegét s, ami egy speciális 568 00:27:35,920 --> 00:27:40,220 char a húr, nagyobb, mint egyenlő vagy kisbetűs és a - 569 00:27:40,220 --> 00:27:42,670 Emlékeztetünk arra, hogy dupla-jel jelent, és - 570 00:27:42,670 --> 00:27:46,810 és ugyanaz a karakter, s konzol i, az kevesebb vagy egyenlő, mint kisbetűs z, 571 00:27:46,810 --> 00:27:50,600 ez azt jelenti, hogy az A vagy a B vagy C vagy pont, pont, pont, vagy z, ami azt jelenti, 572 00:27:50,600 --> 00:27:51,340 ez kisbetűs. 573 00:27:51,340 --> 00:27:52,900 Mit akarok csinálni ebben az esetben? 574 00:27:52,900 --> 00:27:55,010 Nos, meg tudom csinálni ezt a kissé rejtélyes, de 575 00:27:55,010 --> 00:27:56,160 nézzük ezt kötekedik egymástól. 576 00:27:56,160 --> 00:28:00,210 >> Fogom hívni printf, kinyomtatja% c mert azt akarom, hogy nyomtassa ki ezt a 577 00:28:00,210 --> 00:28:01,580 karakter a képernyőn. 578 00:28:01,580 --> 00:28:06,650 Én akkor fog tartani s konzol i, a i-edik karaktere s, és akkor miért 579 00:28:06,650 --> 00:28:12,330 csinálom ezt a kis trükk, kisbetűs mínusz tőke A? 580 00:28:12,330 --> 00:28:16,352 Milyen az, hogy fog adni meg, általánosságban? 581 00:28:16,352 --> 00:28:18,600 >> [Hallható]. 582 00:28:18,600 --> 00:28:19,390 >> Pontosan. 583 00:28:19,390 --> 00:28:20,860 Nem igazán emlékszem - 584 00:28:20,860 --> 00:28:24,390 volt 65 tőke A. Nem igazán emlékszem, mi a kisbetűk is, 585 00:28:24,390 --> 00:28:25,540 De nem számít. 586 00:28:25,540 --> 00:28:26,580 A számítógép tudja. 587 00:28:26,580 --> 00:28:30,380 Tehát azt mondja, a kisbetűs mínusz A tőke, ez furcsa, hogy 588 00:28:30,380 --> 00:28:33,530 kivonásával egy char másik, de milyen karakter a motorháztető alatt? 589 00:28:33,530 --> 00:28:34,520 Ezek csak számok. 590 00:28:34,520 --> 00:28:36,980 Tehát bármit ezek a számok, hagyja, hogy a számítógép emlékszik rá 591 00:28:36,980 --> 00:28:38,240 nem én, az emberi. 592 00:28:38,240 --> 00:28:41,710 >> Tehát kisbetűs mínusz tőke A jelentése fog adni nekem a különbséget. 593 00:28:41,710 --> 00:28:45,370 Előfordul, hogy 32, és az lenne a helyzet a kisbetűs b és a tőke B 594 00:28:45,370 --> 00:28:45,930 és így tovább. 595 00:28:45,930 --> 00:28:47,710 Marad következetes, szerencsére. 596 00:28:47,710 --> 00:28:51,930 Szóval lényegében azt, hogy a kisbetű, kivonni ki, hogy 597 00:28:51,930 --> 00:28:55,340 szabvány a különbség, és hogy a hatékonyan változásokat s konzol i-től 598 00:28:55,340 --> 00:28:59,400 kisbetű, természetesen, nagybetűs, anélkül, hogy a tényleg, hogy gondolni 599 00:28:59,400 --> 00:29:03,040 szól, vagy ne felejtsd el, mi volt ez a számok beszélgettünk, amikor a nyolc 600 00:29:03,040 --> 00:29:04,800 önkéntes jött a színpadra? 601 00:29:04,800 --> 00:29:08,800 Most eközben az más, ha nem a kisbetű meghatározott 602 00:29:08,800 --> 00:29:10,400 a 24. sor, csak nyomtassa ki. 603 00:29:10,400 --> 00:29:12,590 Én csak azt akarom, hogy érintse meg a karakterek voltak 604 00:29:12,590 --> 00:29:14,410 valójában eredetileg kisbetűs. 605 00:29:14,410 --> 00:29:15,150 >> Nézzük ezt. 606 00:29:15,150 --> 00:29:17,400 Legyen kihasználni. 607 00:29:17,400 --> 00:29:18,470 Összeállította, OK. 608 00:29:18,470 --> 00:29:19,730 . / Kihasználni. 609 00:29:19,730 --> 00:29:23,530 És hadd beírni H-E-L-L-O A kisbetűs, Enter. 610 00:29:23,530 --> 00:29:26,370 És észre, hogy alakul a nagybetűs. 611 00:29:26,370 --> 00:29:27,940 Hadd ezt ismét egy másik szót. 612 00:29:27,940 --> 00:29:32,720 Mi lenne, D-A-V-I-D az első D aktiválásra név általában az? 613 00:29:32,720 --> 00:29:33,560 Enter. 614 00:29:33,560 --> 00:29:34,870 Figyeljük meg, hogy ez még mindig igaz. 615 00:29:34,870 --> 00:29:40,250 Csak kimenetre, hogy az első D változatlan keresztül, hogy más konstrukció. 616 00:29:40,250 --> 00:29:42,170 >> Tehát ne feledje, akkor a pár dolgot. 617 00:29:42,170 --> 00:29:45,060 Egy, ha valaha is szeretne ellenőrizni két feltételek egyszerre, akkor, és őket 618 00:29:45,060 --> 00:29:46,500 együtt, ahogy megjósolta. 619 00:29:46,500 --> 00:29:49,900 Össze lehet hasonlítani karakterek így és hatékonyan kezelni karaktereket 620 00:29:49,900 --> 00:29:53,050 számok, de őszintén szólva, ez annyira rohadt rejtélyes Én soha nem fog emlékezni 621 00:29:53,050 --> 00:29:56,510 hogyan jön ki ez a semmiből indokolás nélkül rajta elég 622 00:29:56,510 --> 00:29:57,140 egy kis időt. 623 00:29:57,140 --> 00:30:00,590 >> Nem lett volna szép, ha valaki ott írt egy függvényt hívott 624 00:30:00,590 --> 00:30:05,390 alacsonyabb, ami választ számomra igaz-e vagy hamis, ez a karakter kisbetűs? 625 00:30:05,390 --> 00:30:09,350 Hát szerencsére, aki írta ctype.h pontosan ezt tette. 626 00:30:09,350 --> 00:30:15,540 Hadd menjek fel ide, és adjunk hozzá ctype C típusú, és most hadd menjek le ide, és 627 00:30:15,540 --> 00:30:18,820 átírni ezt a sort a következő. 628 00:30:18,820 --> 00:30:27,510 >> Tehát ha ez a neve alacsonyabb, azt állítom, s konzol i, akkor fogok törölni 629 00:30:27,510 --> 00:30:29,400 a következő két sort összesen. 630 00:30:29,400 --> 00:30:32,570 Tehát most valaki, remélem, ezt írta függvény nevű kisebb, és 631 00:30:32,570 --> 00:30:36,250 Kiderült, hogy ők, és kijelentette, belsejébe a ctype.h. 632 00:30:36,250 --> 00:30:39,480 És most elmegyek vonal 27 Egyedül fogom hagyni line 31 633 00:30:39,480 --> 00:30:41,890 egyedül, de észre mennyire is szigorították a kódot. 634 00:30:41,890 --> 00:30:42,690 Ez most tisztább. 635 00:30:42,690 --> 00:30:47,250 Ez kevésbé nehéz, hogy nézze át mert most a funkciót, sőt, az 636 00:30:47,250 --> 00:30:50,080 olyan csodálatosan elnevezte csak teszi, amit mond. 637 00:30:50,080 --> 00:30:51,520 >> Szóval most fogom menteni ezt. 638 00:30:51,520 --> 00:30:52,930 Megyek kicsinyítéshez. 639 00:30:52,930 --> 00:30:56,650 És ahogy Scratch akkor lehetett volna Logikai, logikai értékek igaz vagy 640 00:30:56,650 --> 00:31:01,530 hamis, hogy pontosan mi az, alacsonyabb hatékonyan visszatér. 641 00:31:01,530 --> 00:31:02,960 Hadd újrafordítani. 642 00:31:02,960 --> 00:31:04,500 Hadd újra futni. 643 00:31:04,500 --> 00:31:07,350 És most próbáljuk meg újra, H-E-L-L-O, Enter. 644 00:31:07,350 --> 00:31:07,970 Ez elég jó. 645 00:31:07,970 --> 00:31:10,150 És próbáld meg újra, hogy biztos, hogy nem csavarja valamit. 646 00:31:10,150 --> 00:31:11,670 Ezt aktiválásra is. 647 00:31:11,670 --> 00:31:14,190 >> De ez nem elég jó, mert a másik dolog, hogy én soha nem fog 648 00:31:14,190 --> 00:31:19,090 eszébe jut, kivéve dolgozom rajta igazán óvatosan, mondjuk, a papír 649 00:31:19,090 --> 00:31:19,920 ez az átkozott sort. 650 00:31:19,920 --> 00:31:23,450 Nem lenne jó, ha lenne függvény neve a felső? 651 00:31:23,450 --> 00:31:26,930 Nos, kiderült, hogy ott van ctype.h is. 652 00:31:26,930 --> 00:31:30,150 Én megyek előre, és írja be - 653 00:31:30,150 --> 00:31:31,340 hadd hozza, hogy a vonal vissza. 654 00:31:31,340 --> 00:31:36,430 Ahelyett, hogy ez itt, hadd menjek előre és azt mondják, helyettesíti a% c az 655 00:31:36,430 --> 00:31:42,110 eredménye, hogy felhívja ezt a funkciót felső az i-edik jellegét s. 656 00:31:42,110 --> 00:31:45,430 És most észre, hogy egyre egy kis egyensúlyban. 657 00:31:45,430 --> 00:31:48,870 Meg kell nyomon követni, hogy hány zárójelben Már nyitott és zárt. 658 00:31:48,870 --> 00:31:50,050 >> Tehát most még tisztább. 659 00:31:50,050 --> 00:31:53,460 Most ez a program egyre jobb és jobban megtervezett vitathatatlanul, mert 660 00:31:53,460 --> 00:31:56,450 sokkal, de sokkal több olvasható, de ez nem nézzük korrigálni. 661 00:31:56,450 --> 00:31:57,600 Legyen kihasználni. 662 00:31:57,600 --> 00:31:58,930 . / Kihasználni. 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O. Fussunk újra, D-A-V-I-D. OK, így mi még mindig 664 00:32:03,220 --> 00:32:04,250 elég jó formában. 665 00:32:04,250 --> 00:32:06,030 >> De most a felső. 666 00:32:06,030 --> 00:32:09,720 Azt javaslom, hogy van még egy finomítás tudtuk, hogy lenne 667 00:32:09,720 --> 00:32:12,820 Nagyon szép, hogy tényleg húzza ezt a kódot, és valóban ad nekünk öt 668 00:32:12,820 --> 00:32:15,150 ötből a tervezés, például. 669 00:32:15,150 --> 00:32:16,510 Milyen jó lenne megszabadulni? 670 00:32:16,510 --> 00:32:20,770 Hát, nézd, milyen rohadt hosszú ez a blokk a kód csak nem valami egyszerű. 671 00:32:20,770 --> 00:32:23,850 >> Most, mint egy félre, ahogy lehet, hogy látható szuper részben az elmúlt 672 00:32:23,850 --> 00:32:27,570 hétvégén, akkor nem feltétlenül szükséges a zárójelek, amikor csak egy 673 00:32:27,570 --> 00:32:32,180 kódsor, még akkor is javasolt tartása, hogy ez teszi sokkal 674 00:32:32,180 --> 00:32:36,190 világosabb, mint Scratch U-alakú blokkok, mi van benne a szakmától. 675 00:32:36,190 --> 00:32:40,170 De nem lenne jó, ha a felső, adva a bemeneti, belőle 676 00:32:40,170 --> 00:32:44,730 nagybetűs, ha ez nem, és mit csodálatos ellenkező esetben, ha 677 00:32:44,730 --> 00:32:47,210 ez már nagybetűs? 678 00:32:47,210 --> 00:32:49,620 Csak add át és hagyja békén. 679 00:32:49,620 --> 00:32:50,660 >> Szóval lehet, hogy ezt csinálja. 680 00:32:50,660 --> 00:32:52,990 Tudtam próbálni, és csak remélem, hogy ez, de hadd 681 00:32:52,990 --> 00:32:54,450 be egy másik dolog. 682 00:32:54,450 --> 00:32:57,440 Ahelyett, hogy a beépített terminál ablakot itt emlékeztetni arra, hogy 683 00:32:57,440 --> 00:33:01,130 ezen a téren fekete ikon ad nagyobb terminál ablak, hogy tudok a teljes 684 00:33:01,130 --> 00:33:02,260 képernyőt, ha akarok? 685 00:33:02,260 --> 00:33:05,820 Így kiderül, ők valami furcsán megnevezve, de van ezek a dolgok néven 686 00:33:05,820 --> 00:33:10,970 man oldalak, man oldalak férfi rövid, és én is ezekhez a 687 00:33:10,970 --> 00:33:14,515 gépelés man - 688 00:33:14,515 --> 00:33:15,570 mit akarok, hogy írja? 689 00:33:15,570 --> 00:33:17,830 Az ember a felső. 690 00:33:17,830 --> 00:33:21,090 >> És most észre, ha létezik olyan működik a számítógép belseje, a 691 00:33:21,090 --> 00:33:23,970 Ebben az esetben a készüléket, ami csak Az operációs rendszer Linux, ez lesz 692 00:33:23,970 --> 00:33:27,920 hogy adjon nekem egy kissé rejtélyes sor kimenet, de rájössz, hogy idővel 693 00:33:27,920 --> 00:33:31,720 mindig van formázva nagyjából ugyanaz így kezdi szokni. 694 00:33:31,720 --> 00:33:35,130 Figyeljük meg a tetején a felső, és a látszólag ugyanazt a dokumentációt 695 00:33:35,130 --> 00:33:35,680 az alacsonyabb. 696 00:33:35,680 --> 00:33:38,740 Aki írta volt vágás néhány sarkok és tedd az egészet egy oldalon. 697 00:33:38,740 --> 00:33:40,720 Ezek a dolgok "célja az élet átalakítani egy 698 00:33:40,720 --> 00:33:42,780 levél kis-vagy nagy. 699 00:33:42,780 --> 00:33:46,290 >> Figyeljük meg, hogy az szinopszis, a man oldal tanít, mit fájl van 700 00:33:46,290 --> 00:33:48,130 tartalmazza, hogy ezt a dolgot. 701 00:33:48,130 --> 00:33:51,320 Ez ad nekem az aláírásokat ezen funkciókat, mind a kettőt, sőt 702 00:33:51,320 --> 00:33:53,510 de mi most csak a érdekel egy. 703 00:33:53,510 --> 00:33:54,730 Itt most egy leírást. 704 00:33:54,730 --> 00:33:58,800 A felső átalakítja a levél c nagybetűs lesz, ha lehetséges. 705 00:33:58,800 --> 00:34:02,280 >> Még mindig nem, hogy tanulságos, de hadd Most keresse visszatérési értéke, a dolog 706 00:34:02,280 --> 00:34:03,520 ez adta vissza. 707 00:34:03,520 --> 00:34:08,600 Így a visszaadott érték az, hogy a átalakított levélben vagy c, ha a 708 00:34:08,600 --> 00:34:09,870 konverzió nem volt lehetséges. 709 00:34:09,870 --> 00:34:11,202 Mi az a C? 710 00:34:11,202 --> 00:34:12,560 >> Az eredeti jellegét. 711 00:34:12,560 --> 00:34:15,370 >> Az eredeti jellegét, és tudjuk, hogy az ismét megy fel a 712 00:34:15,370 --> 00:34:19,179 szinopszis, és aki ezt írta funkció csak úgy döntött, hogy a bemeneti 713 00:34:19,179 --> 00:34:22,909 hogy a felső és az alsó csak önkényesen fogják hívni c. 714 00:34:22,909 --> 00:34:24,909 Ők nevezték, leginkább semmit akarnak, de tartotta 715 00:34:24,909 --> 00:34:26,270 egyszerű c. 716 00:34:26,270 --> 00:34:27,880 Szóval már konzultáltak a man oldalt. 717 00:34:27,880 --> 00:34:31,870 Ez a mondat megnyugtat, hogy ha ez nem kisbetű, akkor 718 00:34:31,870 --> 00:34:34,969 megy, csak add vissza a C, ami tökéletes, ami azt jelenti, hogy lehet megszabadulni 719 00:34:34,969 --> 00:34:36,199 a más állapot. 720 00:34:36,199 --> 00:34:39,679 >> Hadd menjek vissza a gedit, és Most hadd tegye ezt. 721 00:34:39,679 --> 00:34:41,960 Fogom másolni a printf nyilatkozatot. 722 00:34:41,960 --> 00:34:45,969 Én megyek előre, és jobb belső A for ciklus nyomtatási, hogy ki, és kap 723 00:34:45,969 --> 00:34:48,760 Dobjuk most ez az egész, ha konstrukció. 724 00:34:48,760 --> 00:34:51,860 Nem volt rossz ötlet volt, és nagyon sok helyes és összhangban 725 00:34:51,860 --> 00:34:54,100 mindent, amit prédikált, de csak nem szükséges. 726 00:34:54,100 --> 00:34:57,070 Amint rájössz, néhány könyvtár funkció létezik, hogy valaki más 727 00:34:57,070 --> 00:35:01,340 írta, vagy talán írta máshol a fájl, akkor azt, és tényleg 728 00:35:01,340 --> 00:35:02,690 elkezdi szigorítani a kódot. 729 00:35:02,690 --> 00:35:06,080 >> És amikor azt mondom, a dolgok, mint a jó stílus, az a tény, hogy ez a személy az úgynevezett 730 00:35:06,080 --> 00:35:11,490 működnek a felső, vagy már korábban is alsó csodálatosan hasznos, mert 731 00:35:11,490 --> 00:35:12,900 ők nagyon leíró jellegű. 732 00:35:12,900 --> 00:35:16,120 Ugye nem akarja, hogy hívja fel a funkciókat x és y és z, amelyek 733 00:35:16,120 --> 00:35:19,620 sokkal, de sokkal kevesebb értelme. 734 00:35:19,620 --> 00:35:25,160 Kérdése az, hogy a sorozatban fejlesztések? 735 00:35:25,160 --> 00:35:28,010 >> Tehát elég annyit mondani, az egyik elvitelre még, mint a saját problémáját 736 00:35:28,010 --> 00:35:30,960 set - talán probléma meg egyet, de bizonyára P meg két és újabb, még 737 00:35:30,960 --> 00:35:34,380 ha ők nem feltétlenül a helyes jelenti azt, hogy tökéletes, 738 00:35:34,380 --> 00:35:36,155 még vagy különösen jól megtervezett. 739 00:35:36,155 --> 00:35:38,420 Ez a másik tengely elkezd gondolkodni. 740 00:35:38,420 --> 00:35:41,730 Tehát ez volt a sor belsejében a számítógép memóriája, de ha van egy 741 00:35:41,730 --> 00:35:46,180 csomó karakter, mint a H-E-L-L-O belső RAM-mal, és tegyük fel, 742 00:35:46,180 --> 00:35:51,330 hogy a programban hívja kap húr többször olyan, hogy 743 00:35:51,330 --> 00:35:54,200 hívja kap húr egyszer, akkor hívja kap karakterlánc újra. 744 00:35:54,200 --> 00:35:55,880 Nos, mi fog történik az idők során? 745 00:35:55,880 --> 00:35:59,170 >> Más szóval, ha van egy sor kód, bár a kontextus, mint a 746 00:35:59,170 --> 00:36:02,120 sztring s lesz - 747 00:36:02,120 --> 00:36:02,960 csináljuk. 748 00:36:02,960 --> 00:36:05,270 String name egyenlő kap string. 749 00:36:05,270 --> 00:36:08,590 Tehát tegyük fel, hogy sor kódot jelent kérni a felhasználótól a nevét. 750 00:36:08,590 --> 00:36:14,580 Ez a következő sort is akartam kérdezni a felhasználó saját iskolában, 751 00:36:14,580 --> 00:36:15,920 a következő sort, és így tovább. 752 00:36:15,920 --> 00:36:18,150 Tegyük fel, hogy folyamatosan azt kérdezi, a felhasználó egy másik, és 753 00:36:18,150 --> 00:36:19,750 újabb és újabb string. 754 00:36:19,750 --> 00:36:22,390 Fognak maradni a memóriában ugyanabban az időben. 755 00:36:22,390 --> 00:36:24,280 Az egyik nem fog a cucc a többi. 756 00:36:24,280 --> 00:36:26,420 Iskola nem írja felül a másikat. 757 00:36:26,420 --> 00:36:28,520 De hol mind végül a memóriában? 758 00:36:28,520 --> 00:36:32,030 >> Nos, ha elkezdjük rajzolni a képernyőre, amit lehet használni ezt a dolgot 759 00:36:32,030 --> 00:36:35,800 itt, mint egy palatábla, ha ez a fekete téglalap a számítógép 760 00:36:35,800 --> 00:36:39,800 memória, fogom kezdeni önkényesen elosztjuk fel a kis négyzetek, 761 00:36:39,800 --> 00:36:42,120 melyek mindegyike egy byte memória. 762 00:36:42,120 --> 00:36:46,560 Őszintén szólva, ha van egy gigabájt RAM ezekben a napokban, van egy milliárd byte 763 00:36:46,560 --> 00:36:49,540 A memória méretét a számítógépében, így egy milliárd ilyen négyzet. 764 00:36:49,540 --> 00:36:52,110 Tehát elég annyit mondani, hogy ez nem igazán a skála. 765 00:36:52,110 --> 00:36:58,250 >> De ne rajz mindezen nyilvánvalóan nem méretarányosan terek, és ez a 766 00:36:58,250 --> 00:37:01,260 együttesen képviseli a számítógép memóriájában. 767 00:37:01,260 --> 00:37:03,136 Most majd csak nem pont, pont, pont. 768 00:37:03,136 --> 00:37:06,260 Más szóval, ha most kéri a felhasználó A string, hogy adjon nekem egy 769 00:37:06,260 --> 00:37:07,350 string, mi történik? 770 00:37:07,350 --> 00:37:14,270 Ha a felhasználó a "hello", hogy véget ér fel H-E-L-L-O. De tegyük fel, a 771 00:37:14,270 --> 00:37:15,720 felhasználó ezután típusok - 772 00:37:15,720 --> 00:37:17,250 valóban, nem kellett volna szia mert kérünk 773 00:37:17,250 --> 00:37:18,330 őket a nevüket. 774 00:37:18,330 --> 00:37:20,580 Szóval menjünk vissza, ha meg tudom csinálni. 775 00:37:20,580 --> 00:37:26,130 >> Tehát, ha azt írja be a D-A-V-I-D a nevem, de emlékeztet arra, hogy a második sor 776 00:37:26,130 --> 00:37:29,220 kódot kap szöveg újabb hogy az iskolában. 777 00:37:29,220 --> 00:37:32,090 Hol van az a szó, hogy a felhasználó típusok fog menni? 778 00:37:32,090 --> 00:37:38,290 Nos, lehet, hogy fog menni H-A-R-V-A-R-D. Így, bár én már 779 00:37:38,290 --> 00:37:41,560 készült, mint két sor, ez csak egy csomó bájt a 780 00:37:41,560 --> 00:37:42,710 számítógép RAM. 781 00:37:42,710 --> 00:37:46,560 Van egy probléma most, mert most, ha én vagyok a RAM ebben a nagyon ésszerű 782 00:37:46,560 --> 00:37:49,910 hanem egyfajta naiv, mit tud nem tűnik megkülönböztetni? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Ahol az ember elkezd, és ahol Egy véget ér, nem igaz? 785 00:37:54,680 --> 00:37:55,860 Ők olyan homályos össze. 786 00:37:55,860 --> 00:37:57,920 >> Így kiderült, hogy a számítógép nem ezt teszi. 787 00:37:57,920 --> 00:38:04,720 Hadd valójában lépjünk vissza az időben a néhány karakter, és ahelyett, hogy a Harvard 788 00:38:04,720 --> 00:38:09,570 majd után a felhasználó nevét, a felhasználó valóban kap mögött 789 00:38:09,570 --> 00:38:12,000 A jelenetek, speciális karakter által beillesztett 790 00:38:12,000 --> 00:38:13,885 számítógép neki. 791 00:38:13,885 --> 00:38:19,470 / 0, más néven a nul karaktert bosszantóan úgynevezett N-U-L, nem 792 00:38:19,470 --> 00:38:22,190 N-U-L-L, de írni azt / 0. 793 00:38:22,190 --> 00:38:27,130 Ez mind nulla bitet a marker az első szó, a felhasználó 794 00:38:27,130 --> 00:38:28,290 gépelt és a második. 795 00:38:28,290 --> 00:38:33,020 >> Tehát Harvard valójában most végül mivel ez a karaktersorozat 796 00:38:33,020 --> 00:38:36,110 és még egy / 0. 797 00:38:36,110 --> 00:38:41,690 Más szóval, azáltal, hogy ezek a sentinel értékek, nyolc egymást követő nulla 798 00:38:41,690 --> 00:38:45,220 bit, akkor most kezd megkülönböztetni egy karaktert másik. 799 00:38:45,220 --> 00:38:49,720 Tehát egész idő alatt mi volt "hello" a valójában "hello"-val a / 0, és 800 00:38:49,720 --> 00:38:53,580 Közben talán nagyon jól lehet egy kicsit több RAM 801 00:38:53,580 --> 00:38:56,400 a számítógép belsejébe. 802 00:38:56,400 --> 00:38:57,810 >> Hadd tegyek még egy dolog most. 803 00:38:57,810 --> 00:39:01,800 Kiderül, hogy az összes ilyen négyzet voltunk rajz, ők igen, 804 00:39:01,800 --> 00:39:06,140 húrok, hanem általánosságban, ezek a dolgok tömbök. 805 00:39:06,140 --> 00:39:10,590 Egy tömb csak egy darab memória ez háttal a háttal, 806 00:39:10,590 --> 00:39:15,130 és jellemzően egy tömböt útján Ennek szögletes zárójel jelölést. 807 00:39:15,130 --> 00:39:18,210 Így fogjuk, hogy ezek egy kicsit idővel, de hadd menjen előre, és 808 00:39:18,210 --> 00:39:21,160 nyit, nevezzük korosztály számára. 809 00:39:21,160 --> 00:39:23,920 És figyeld meg, mit tehetünk Ugyanezen trükkök, egy kicsit 810 00:39:23,920 --> 00:39:25,750 kicsit szintaxis itt. 811 00:39:25,750 --> 00:39:29,270 >> Így a 17. sorban a program - tényleg, hadd futtassa a program először 812 00:39:29,270 --> 00:39:30,770 így látjuk mi ez a dolog nem. 813 00:39:30,770 --> 00:39:33,530 Hadd hívjam fel, hogy az év fordítani ezt a programot. 814 00:39:33,530 --> 00:39:34,950 . / Év. 815 00:39:34,950 --> 00:39:36,480 Hány ember van a szobában? 816 00:39:36,480 --> 00:39:38,020 Nevezzük három. 817 00:39:38,020 --> 00:39:39,575 Életkora az első ember? 818 00:39:39,575 --> 00:39:42,710 18., 19., és 20.. 819 00:39:42,710 --> 00:39:46,770 És most kissé nevetségesen, csak tette a programot, hogy a kor 820 00:39:46,770 --> 00:39:47,740 három ember. 821 00:39:47,740 --> 00:39:50,390 >> Tehát van egyértelmű lehetőség a szórakozni számtani itt. 822 00:39:50,390 --> 00:39:51,560 Szerencsére a matematika helyes. 823 00:39:51,560 --> 00:39:54,720 18 ment 19, 19 ment 20 és így tovább. 824 00:39:54,720 --> 00:39:58,510 De ami igazán azt jelentette, hogy szemléltető itt van, hogy mi tárolás 825 00:39:58,510 --> 00:40:00,190 a három ember korosztály számára. 826 00:40:00,190 --> 00:40:02,370 Hadd nagyítani, mi van folyik itt. 827 00:40:02,370 --> 00:40:06,240 >> Tehát először, ezek az első néhány sor kell hogy kezd nagyon ismerős. 828 00:40:06,240 --> 00:40:08,770 Én csak kéri a felhasználótól a több ember a szobában. 829 00:40:08,770 --> 00:40:11,490 Akkor én a kap int, és nem, míg a Ezt újra és újra és újra. 830 00:40:11,490 --> 00:40:15,780 Láttuk, hogy a mintázat korábban, de vonal 27 új, és valóban nagyon 831 00:40:15,780 --> 00:40:18,160 hasznos, és lesz inkább hasznos. 832 00:40:18,160 --> 00:40:21,620 Figyeljük meg, hogy mi más a sorban 27 az, hogy úgy tűnik, hogy van érvényben, amely 833 00:40:21,620 --> 00:40:23,960 int hívott korosztály, de várj. 834 00:40:23,960 --> 00:40:27,140 Ez nem csak int korosztály számára. 835 00:40:27,140 --> 00:40:30,130 Vannak ezek a szögletes zárójelek, belsejében, amely n. 836 00:40:30,130 --> 00:40:35,150 >> Így a konzol n ebben az összefüggésben, nem belsejében egy printf kifejezést itt, de 837 00:40:35,150 --> 00:40:44,370 ebben az egyetlen sorban 27, ez a sor mondván, adj n ints, amelyek mindegyike 838 00:40:44,370 --> 00:40:46,080 a típusa int. 839 00:40:46,080 --> 00:40:49,870 Tehát ez egy vödör, hogy úgy mondjam, az, ebben az esetben három egész szám vissza 840 00:40:49,870 --> 00:40:52,770 háttal úgy, hogy hatékonyan három változó. 841 00:40:52,770 --> 00:40:54,890 A másik, hogy tiszta, ez lenne. 842 00:40:54,890 --> 00:40:57,400 >> Ha akartam az első tanuló kor, talán ezt. 843 00:40:57,400 --> 00:40:59,520 Ha akartam a második tanuló kor talán ezt. 844 00:40:59,520 --> 00:41:01,860 Ha akartam a harmadik tanuló kor, talán ezt. 845 00:41:01,860 --> 00:41:04,320 És Isten őrizz, szükségünk van mindenki kor ebben a szobában - 846 00:41:04,320 --> 00:41:07,670 Úgy értem, ez egy fene sok példány, be újra és újra és újra. 847 00:41:07,670 --> 00:41:10,870 És plusz egyszer fordítani ezt a programot, ha egy másik diák jár át ki 848 00:41:10,870 --> 00:41:14,200 azon az ajtón, most az én szám változók helytelen. 849 00:41:14,200 --> 00:41:17,450 >> Szóval, mi szép a tömb olyan amint elkezd érzi magát 850 00:41:17,450 --> 00:41:20,190 másolás és beillesztés, esély, hogy ez nem a legjobb megközelítés. 851 00:41:20,190 --> 00:41:22,240 Egy tömb dinamikus potenciálisan. 852 00:41:22,240 --> 00:41:24,610 Nem tudom előre, hogy sok ember lesznek a szobában, 853 00:41:24,610 --> 00:41:28,670 de azt tudom, hogy kell n őket, én pedig kitalálni, n, amikor eljön az ideje. 854 00:41:28,670 --> 00:41:35,500 Ez a vonal a kód már azt jelenti, hogy adj egy darab memória néz ki 855 00:41:35,500 --> 00:41:40,380 ahol a dobozok számát a képernyőn teljes mértékben függ, hogy n 856 00:41:40,380 --> 00:41:42,010 a felhasználó gépelt be 857 00:41:42,010 --> 00:41:44,850 >> Tehát most a többi ezt a program valójában nagyon hasonló ahhoz, amit 858 00:41:44,850 --> 00:41:46,860 csak nem a karakterek. 859 00:41:46,860 --> 00:41:49,970 Figyeljük Van egy for ciklus kezdődő 30. sorban. 860 00:41:49,970 --> 00:41:54,920 Így rögtön kapom a tömb, azt hajtogat az y értéke nulla n-ig. 861 00:41:54,920 --> 00:41:58,890 Csak van egy tanulságos printf üzenetet csak azt mondom, hogy nekem a kor 862 00:41:58,890 --> 00:42:03,690 személy #% i, így első számú, kettes, hármas számú. 863 00:42:03,690 --> 00:42:04,730 És miért tettem ezt? 864 00:42:04,730 --> 00:42:08,870 Őszintén szólva, az emberek inkább számít egy akár míg számítógépes szakemberek, 865 00:42:08,870 --> 00:42:09,620 nullára fel. 866 00:42:09,620 --> 00:42:11,700 számítógépes szakemberek nem fognak ezt a fajta program, így vagyunk 867 00:42:11,700 --> 00:42:13,990 majd csak elkezd számolás az egyik, mint a normális emberek. 868 00:42:13,990 --> 00:42:17,630 >> És most a sorban 33, észre a kissé különböző darab szintaxis. 869 00:42:17,630 --> 00:42:23,710 Az i-edik kor, hogy változó típusú tömb lesz, hogy kap egy int. 870 00:42:23,710 --> 00:42:25,770 És most végül, ez csak számtani ide. 871 00:42:25,770 --> 00:42:29,200 Úgy döntöttem, egy külön hurok igényt bizonyos idő halad, és most ebben a 872 00:42:29,200 --> 00:42:31,400 külön loop, ezeket a sorokat végrehajtani. 873 00:42:31,400 --> 00:42:35,810 >> Egy év múlva, akivel lesz i éves, de észre nem ez a 874 00:42:35,810 --> 00:42:36,500 i változó. 875 00:42:36,500 --> 00:42:38,390 Ez most% i az int. 876 00:42:38,390 --> 00:42:43,210 És figyeljük meg, mint az első helyőrző, azt csatlakoztassa i + 1, ezért számít, mint a 877 00:42:43,210 --> 00:42:44,250 normális ember. 878 00:42:44,250 --> 00:42:49,190 És akkor az értékét az életkor, a i éves, veszek korosztály tartó 879 00:42:49,190 --> 00:42:52,980 i - és miért csinálok plusz egy itt? 880 00:42:52,980 --> 00:42:53,760 Csak éves. 881 00:42:53,760 --> 00:42:55,030 Ez az én hülye választott programok. 882 00:42:55,030 --> 00:42:56,810 Ők csak év egy év. 883 00:42:56,810 --> 00:42:59,770 Én is írja be bármilyen számot Én tényleg szeretnék ott. 884 00:42:59,770 --> 00:43:02,430 >> Tehát mi valójában minden a jelentősége itt? 885 00:43:02,430 --> 00:43:07,610 Nos, hadd valójában lépjünk vissza itt, és festeni egy képet 886 00:43:07,610 --> 00:43:10,830 hogy mi vár ránk. 887 00:43:10,830 --> 00:43:15,720 Amit mi lesz ezzel a mi következő Probléma Set Kettes dabbling a 888 00:43:15,720 --> 00:43:17,070 világában titkosítás. 889 00:43:17,070 --> 00:43:22,500 Tehát ez egy karakterlánc, így a sorozat több karakter, és milyen 890 00:43:22,500 --> 00:43:23,750 mond ez? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 Ez nem az online verzió a diák. 893 00:43:30,600 --> 00:43:35,880 >> Szóval azt állítják, hogy ez felel meg ennek a hülye reklámok sok éven 894 00:43:35,880 --> 00:43:39,950 ezelőtt, hogy talán valóban emlékszem egyik eredete. 895 00:43:39,950 --> 00:43:42,740 Tehát ez egy példa a titkosítás vagy titkosítás. 896 00:43:42,740 --> 00:43:46,150 Kiderült, hogy ha azt akarjuk, valóban küld információt vagy részvény 897 00:43:46,150 --> 00:43:49,310 információ valakivel biztonságosan mint egy ilyen üzenetet, akkor 898 00:43:49,310 --> 00:43:50,500 tülekedés a leveleket. 899 00:43:50,500 --> 00:43:53,170 De általában, a szavak nem kódolt véletlenszerűen. 900 00:43:53,170 --> 00:43:56,365 Ők permutálódnak valamilyen módon megváltozott valamilyen módon, hogy - hoppá. 901 00:43:56,365 --> 00:43:59,040 Ez egy szórakoztató spoiler a következő alkalommal. 902 00:43:59,040 --> 00:44:04,390 >> Így megosztása Mi látszólag O B. Vegyük észre, hogy vonalban 903 00:44:04,390 --> 00:44:05,420 kapitalizáció bölcs. 904 00:44:05,420 --> 00:44:07,960 Úgy látszik, r lesz e. 905 00:44:07,960 --> 00:44:14,000 Úgy látszik, F-H-E-R válik S-U-R-E. Így Kiderült, hogy egy leképezés, és 906 00:44:14,000 --> 00:44:18,720 Ebben az esetben van egy elég hülye feltérképezése, ha valaki rájött? 907 00:44:18,720 --> 00:44:21,440 Ez egy úgynevezett Rot 13, Forgatás 13. 908 00:44:21,440 --> 00:44:24,760 Ez a leghülyébb a titkosítás mechanizmusokat, mert szó szerint csak 909 00:44:24,760 --> 00:44:29,160 ad 13 mindenkinek a betűk, hülye abban az értelemben, hogy ha csak 910 00:44:29,160 --> 00:44:31,890 van egy kis szabad ideje van a kezedben és egy ceruzát, vagy csak gondolom, hogy 911 00:44:31,890 --> 00:44:35,260 át a fejedben, akkor próbálja minden lehetséges feltöltött - egy, kettő, 912 00:44:35,260 --> 00:44:38,470 három, pont, pont, pont, 25 csak forgatni az egész ábécét, és 913 00:44:38,470 --> 00:44:40,860 végül, akkor kitalálni mi ez az üzenet. 914 00:44:40,860 --> 00:44:43,700 Tehát, ha nem valami ehhez hasonló iskolában halad üzeneteket a 915 00:44:43,700 --> 00:44:46,830 legjobb barátja, ha az általános iskola tanár csak olvassa el a 916 00:44:46,830 --> 00:44:50,320 üzenetet, és a nyers kényszerítette a megoldás, lehet, hogy ütött 917 00:44:50,320 --> 00:44:52,550 választ, hogy az. 918 00:44:52,550 --> 00:44:54,970 >> Most persze, a valós világban, kriptográfia kifinomultabb. 919 00:44:54,970 --> 00:45:00,120 Ez a részlet a szöveget a számítógépes rendszer, amely felhasználóneveket és 920 00:45:00,120 --> 00:45:03,630 jelszavakat, mivel majdnem minden a miénk nem, és ez az, amit a jelszó is 921 00:45:03,630 --> 00:45:07,260 úgy néz ki mint tárolva a merevlemezen vezetni, de titkosított formában. 922 00:45:07,260 --> 00:45:11,050 Ez nem csak a forgatás a betűk, A jelentése B és B jelentése C. Ez 923 00:45:11,050 --> 00:45:15,620 sokkal kifinomultabb, de használ mi általában az úgynevezett titkos kulcs 924 00:45:15,620 --> 00:45:16,690 titkosítás. 925 00:45:16,690 --> 00:45:20,210 Ez a kép azt a következő történet néhány ikonok. 926 00:45:20,210 --> 00:45:22,250 >> A bal oldalon van, amit hívjuk sima szöveg. 927 00:45:22,250 --> 00:45:25,420 A világ a kriptográfia, sima szöveg csak az eredeti üzenet 928 00:45:25,420 --> 00:45:29,050 írott angol vagy francia nyelven vagy nyelv nélkül. 929 00:45:29,050 --> 00:45:32,405 Ha azt szeretné, hogy titkosítja, majd át ez képileg egy lakat, így 930 00:45:32,405 --> 00:45:35,580 néhány olyan algoritmus, néhány funkció vagy program, hogy valaki azt írta 931 00:45:35,580 --> 00:45:39,880 hogy összekuszálja a betűk remélhetőleg több, mint bonyolultan hozzá 13 932 00:45:39,880 --> 00:45:40,980 hogy mindegyik. 933 00:45:40,980 --> 00:45:43,780 >> Mit kap ki, hogy a folyamat a Középen nevezzük kódolt szövegeket. 934 00:45:43,780 --> 00:45:44,850 Tehát egyfajta szexi szó. 935 00:45:44,850 --> 00:45:47,630 Ez csak azt jelenti, hogy a titkosított változata a sima szöveg. 936 00:45:47,630 --> 00:45:52,570 És csak akkor, ha van, hogy ugyanazt a titkos, 13 vagy mínusz 13, tudsz 937 00:45:52,570 --> 00:45:54,970 dekódolni az üzenetet, mint ezt. 938 00:45:54,970 --> 00:45:57,770 >> Így probléma meg két, a dolgok között akkor nem, ha a hacker 939 00:45:57,770 --> 00:46:01,860 Edition, akkor meg kell írni a kódot kiváló ezeket a jelszavakat, kitalálni 940 00:46:01,860 --> 00:46:05,170 mi volt és hogyan is titkosított, de mi nem kapsz egy kicsit 941 00:46:05,170 --> 00:46:06,460 útmutatás az út mentén. 942 00:46:06,460 --> 00:46:09,320 A Standard Edition, bemutatjuk pár algoritmusok titkosítás 943 00:46:09,320 --> 00:46:12,400 mechanizmusok, az egyik neve Caesar, egy nevezett Vigenère, amelyek még mindig 944 00:46:12,400 --> 00:46:16,100 rotációs ciphers ahol A válik valamit, B lesz valami, de 945 00:46:16,100 --> 00:46:18,820 meg kell csinálni, hogy programozottan mert valóban egy titkos 946 00:46:18,820 --> 00:46:22,840 kulcs szó, amely tipikusan egy szám vagy egy kulcsszó, hogy csak a 947 00:46:22,840 --> 00:46:26,420 feladó és a címzett e üzeneteket kell értenie. 948 00:46:26,420 --> 00:46:28,660 >> Nos, ez valójában inkarnációja a valós világban. 949 00:46:28,660 --> 00:46:32,910 Ez, például, kis árva Annie titkos dekóder gyűrűt, és 950 00:46:32,910 --> 00:46:35,180 ténylegesen végrehajtani ezeket rotációs ciphers - 951 00:46:35,180 --> 00:46:37,930 A lesz valami, B válik valami - egy pár kerék, 952 00:46:37,930 --> 00:46:40,840 az egyik a külső, az egyik a belső úgy, hogy ha forog a kerék vagy a 953 00:46:40,840 --> 00:46:44,170 a gyűrű, akkor valóban sorakoznak a betűk különböző betűk, 954 00:46:44,170 --> 00:46:45,430 kapok egy titkos kód. 955 00:46:45,430 --> 00:46:48,110 És így a Cliffhanger a mai, amit én gondoltam, nem is egy kicsit 956 00:46:48,110 --> 00:46:52,170 primitivizmus, hogy ha bekapcsolja a TV- december 24-én, meg lehet nézni a 957 00:46:52,170 --> 00:46:55,390 film csömörig a 24 óra egy sorban. 958 00:46:55,390 --> 00:47:06,030 De a mai, én nyisd ki itt és nekünk csak két perc a 959 00:47:06,030 --> 00:47:13,493 pedagógiailag releváns Christmas Story egy kis nevű fickó Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [VIDEÓ LEJÁTSZÁS] 961 00:47:14,400 --> 00:47:17,420 >> -Legyen ismert, minden rendű és rangú, hogy Ralph Parker-t nevezi ki a 962 00:47:17,420 --> 00:47:20,650 tagja a kis árva Annie titkos kör és jogosult minden 963 00:47:20,650 --> 00:47:23,460 A kitüntetés és előnyök előforduló hozzá. 964 00:47:23,460 --> 00:47:25,990 >> Aláírású, kis árva Annie. 965 00:47:25,990 --> 00:47:30,100 Ellenjegyezte, Pierre Andre tintával. 966 00:47:30,100 --> 00:47:34,270 Kitüntetések és előnyök már évesen kilenc. 967 00:47:34,270 --> 00:47:39,440 >> [Kiabált RADIO] 968 00:47:39,440 --> 00:47:40,770 >> Gyerünk, essünk túl rajta. 969 00:47:40,770 --> 00:47:44,965 Nem kell ez a jazz a csempészek és kalózok. 970 00:47:44,965 --> 00:47:48,270 >> -Figyelj holnap este a megkötése kaland a fekete 971 00:47:48,270 --> 00:47:49,650 kalózhajó. 972 00:47:49,650 --> 00:47:53,320 Nos, itt az ideje a Annie titkos Üzenet az Ön tagoknak 973 00:47:53,320 --> 00:47:55,720 a titkos kör. 974 00:47:55,720 --> 00:47:56,580 Ne feledje, a gyerekek. 975 00:47:56,580 --> 00:48:01,720 Csak a tagok Annie Secret Circle tudja dekódolni Annie titkos üzenetet. 976 00:48:01,720 --> 00:48:05,872 Ne feledje, Annie attól függően, hogy. 977 00:48:05,872 --> 00:48:08,670 Állítsa be a csap B2. 978 00:48:08,670 --> 00:48:11,000 Itt van az üzenet. 979 00:48:11,000 --> 00:48:12,335 12, 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Én vagyok az első titkos találkozón. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> Pierre-ben nagy hang ma este. 983 00:48:21,650 --> 00:48:24,830 Elmondhatom, hogy a ma esti üzenete nagyon fontos volt. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 Ez egy üzenet Annie magát. 986 00:48:28,540 --> 00:48:30,086 Ne feledd, ne mondd el senkinek. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Másodperc múlva, én vagyok az egyetlen szoba a házban, ahol a fiú kilenc 989 00:48:38,710 --> 00:48:42,668 lehet ülni a magánélet és dekódolni. 990 00:48:42,668 --> 00:48:47,628 Aha, B. mentem a másikra. 991 00:48:47,628 --> 00:48:53,060 E. Az első szó a "legyen". S. Úgy jött könnyebb most. 992 00:48:53,060 --> 00:48:54,980 U. 25.. 993 00:48:54,980 --> 00:48:55,940 Ez R. 994 00:48:55,940 --> 00:48:56,900 >> -Gyerünk, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Mennem kell. 996 00:48:57,860 --> 00:48:59,780 >> -Majd itt lesz, anya. 997 00:48:59,780 --> 00:49:01,030 Hoppá. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Mindenképpen. 1000 00:49:08,220 --> 00:49:09,500 Ügyeljen arra, hogy mit? 1001 00:49:09,500 --> 00:49:11,660 Mi volt kis árva Annie mondani? 1002 00:49:11,660 --> 00:49:12,844 Ügyeljen arra, hogy mit? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, Randy mennem kell. 1004 00:49:14,732 --> 00:49:16,148 Lenne szíves jönni? 1005 00:49:16,148 --> 00:49:17,092 >> -Jól van, anya. 1006 00:49:17,092 --> 00:49:18,510 Mindjárt ki. 1007 00:49:18,510 --> 00:49:20,270 >> -Én egyre közelebb van. 1008 00:49:20,270 --> 00:49:21,823 A feszültség rettenetes volt. 1009 00:49:21,823 --> 00:49:23,045 Mi volt ez? 1010 00:49:23,045 --> 00:49:26,510 A sorsa a bolygó lógnak a mérleg. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, Randy mennem kell. 1012 00:49:28,985 --> 00:49:32,680 >> -Majd lesz jobb ki sír hangosan. 1013 00:49:32,680 --> 00:49:33,956 >> -Majdnem ott. 1014 00:49:33,956 --> 00:49:35,140 Az ujjaim repült. 1015 00:49:35,140 --> 00:49:36,880 Az agyam egy acél csapda. 1016 00:49:36,880 --> 00:49:38,010 Minden pórus vibrált. 1017 00:49:38,010 --> 00:49:39,878 Már majdnem tiszta. 1018 00:49:39,878 --> 00:49:43,210 Igen, igen, igen, igen, igen. 1019 00:49:43,210 --> 00:49:49,030 >> -Ügyeljen arra, hogy igyon a Ovaltine. 1020 00:49:49,030 --> 00:49:50,280 Ovaltine? 1021 00:49:50,280 --> 00:49:53,980 1022 00:49:53,980 --> 00:49:55,230 Egy vacak kereskedelmi? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 A kurva anyját. 1025 00:50:00,694 --> 00:50:01,900 >> [END VIDEÓ LEJÁTSZÁS] 1026 00:50:01,900 --> 00:50:04,260 >> 1 hangszóró: Ez CS50, és hogy a lesz probléma Set Two. 1027 00:50:04,260 --> 00:50:06,305 Jövő héten találkozunk. 1028 00:50:06,305 --> 00:50:08,800 >> SPEAKER 2: A következő CS50, ez történik. 1029 00:50:08,800 --> 00:50:11,060 >> SPEAKER 1: Tehát az egyik téma mi nem nézett eddig is 1030 00:50:11,060 --> 00:50:12,220 hogy a függvény mutatók. 1031 00:50:12,220 --> 00:50:14,540 Most, a függvény mutató csak címének nyilvános 1032 00:50:14,540 --> 00:50:17,000 funkciót, de ugyanúgy, mint - 1033 00:50:17,000 --> 00:50:18,250 fia - 1034 00:50:18,250 --> 00:50:19,670