1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> ALTAVEU 1: D'acord. 3 00:00:13,650 --> 00:00:14,390 Benvingut de nou. 4 00:00:14,390 --> 00:00:19,260 Aquesta és la segona setmana de CS50, i tenim fins al moment han utilitzant funcions però 5 00:00:19,260 --> 00:00:20,830 en gran mesura a donar per fet. 6 00:00:20,830 --> 00:00:23,430 Hem utilitzat printf que té la efecte secundari d'impressió 7 00:00:23,430 --> 00:00:24,110 coses a la pantalla. 8 00:00:24,110 --> 00:00:25,790 Hem utilitzat get-int, aconsegueixi surar. 9 00:00:25,790 --> 00:00:29,230 >> Però el que si vostè realment vol crear seves pròpies funcions, com alguns 10 00:00:29,230 --> 00:00:31,740 és possible que ja hagi començat a Problemes de fer per un, encara que 11 00:00:31,740 --> 00:00:33,140 no és estrictament necessari? 12 00:00:33,140 --> 00:00:37,150 Bé, seguirem endavant i tornar a que problema de només demanar a l'usuari 13 00:00:37,150 --> 00:00:40,660 el seu nom i una mica d'impressió a la pantalla, però intenta factoritzar alguns 14 00:00:40,660 --> 00:00:44,000 de la comunalitat que hem vist en el nostre codi fins ara. 15 00:00:44,000 --> 00:00:45,120 Així que amb això vull dir el següent. 16 00:00:45,120 --> 00:00:47,315 >> Vaig a seguir endavant i crear un nou programa, a només una trucada 17 00:00:47,315 --> 00:00:49,320 que hola.c com de costum. 18 00:00:49,320 --> 00:00:53,730 Vaig a seguir endavant i donar-me incloure io.h estàndard en la part superior. 19 00:00:53,730 --> 00:00:57,040 Vaig a donar-me també preventivament la biblioteca CS50 de manera que 20 00:00:57,040 --> 00:00:59,080 No em va cridar pel compilador. 21 00:00:59,080 --> 00:01:02,400 I ara em vaig a anar per davant i declarar int, principal, nul · la. 22 00:01:02,400 --> 00:01:09,020 >> I després aquí, aquí és on vull per començar a externalitzar funcions a 23 00:01:09,020 --> 00:01:12,090 altra funció que jo mateix sóc va a escriure, però això no 24 00:01:12,090 --> 00:01:13,820 existeixen en l'actualitat. 25 00:01:13,820 --> 00:01:19,210 Per exemple, suposem que volia escriure una funció que em permet 26 00:01:19,210 --> 00:01:23,830 imprimir hola, coma i llavors el nom d'algun usuari. 27 00:01:23,830 --> 00:01:29,010 En lloc de seguir fent printf hola,% s, no seria agradable si 28 00:01:29,010 --> 00:01:33,380 havia només una funció anomenada No printf, però en lletra d'impremta? 29 00:01:33,380 --> 00:01:36,600 >> En altres paraules, vull ser capaç de escriure un programa que fa una mica de 30 00:01:36,600 --> 00:01:37,710 alguna cosa com això. 31 00:01:37,710 --> 00:01:42,070 En primer lloc, vaig a dir printf seu nom, provocant amb això que l'usuari 32 00:01:42,070 --> 00:01:46,150 donar-me el seu nom, i després em vaig va a utilitzar les cordes s familiars per 33 00:01:46,150 --> 00:01:47,290 declarar una cadena. 34 00:01:47,290 --> 00:01:50,420 Dóna'm una variable de tipus cadena, diuen s, i deseu-lo en què el 35 00:01:50,420 --> 00:01:52,120 resultat de cridar a obtenir cadena. 36 00:01:52,120 --> 00:01:56,060 Però ara, en les últimes setmanes, hauria de una mica tediós fer hola,% s / n. 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> I en altres paraules, que hem vist aquesta exemple, un munt de vegades, i és un 39 00:02:02,570 --> 00:02:05,280 exemple trivial, ja que només hi ha una línia de codi així que no és realment un 40 00:02:05,280 --> 00:02:06,860 gran cosa que constantment escriure de nou. 41 00:02:06,860 --> 00:02:09,990 Però suposem que aquesta línia de codi en realitat s'estaven convertint en una càrrega, i 42 00:02:09,990 --> 00:02:12,900 que no és una línia de codi, però és 10 línies de codi d'un parell de setmanes a partir d'ara, 43 00:02:12,900 --> 00:02:15,190 i estàs cansant de copiar i enganxar o 44 00:02:15,190 --> 00:02:17,180 tornar a escriure el mateix codi. 45 00:02:17,180 --> 00:02:22,100 ¿No seria agradable en lloc de fer printf hola,% s, etc, 46 00:02:22,100 --> 00:02:26,500 ¿No seria agradable si hi havia només una funció anomenada nom d'impressió que 47 00:02:26,500 --> 00:02:27,560 pren un argument - 48 00:02:27,560 --> 00:02:29,120 en altres paraules, es pren l'entrada - 49 00:02:29,120 --> 00:02:30,620 i després punt i coma. 50 00:02:30,620 --> 00:02:33,240 Perquè la funció, no seria bo que el que existia? 51 00:02:33,240 --> 00:02:36,690 Llavors jo no hauria de preocupar-se per printf ho és, què% s i tots 52 00:02:36,690 --> 00:02:39,400 aquestes complexitats que són no és tan interessant. 53 00:02:39,400 --> 00:02:40,570 Són útils. 54 00:02:40,570 --> 00:02:44,700 >> Així que escrigui el seu nom, per desgràcia, no era inventat fa uns 40 anys més. 55 00:02:44,700 --> 00:02:45,980 No se li va acudir escriure. 56 00:02:45,980 --> 00:02:48,300 Però aquesta és la bellesa de tenir una llenguatge de programació, igual que en 57 00:02:48,300 --> 00:02:52,930 Rasguño pot definir blocs personalitzats, pel en C, i la majoria de qualsevol idioma, oi 58 00:02:52,930 --> 00:02:57,260 definir la seva pròpia funcionalitat, pot a definir les seves pròpies funcions. 59 00:02:57,260 --> 00:03:01,710 Així que, encara que tinguem principal per automàticament de forma gratuïta, es pot declarar 60 00:03:01,710 --> 00:03:02,730 les nostres pròpies funcions. 61 00:03:02,730 --> 00:03:05,670 >> Així que em vaig a fer una mica d'espai aquí al capdamunt, i jo vaig a declarar el meu 62 00:03:05,670 --> 00:03:08,210 pròpia funció que va a semblar un mica estrany al principi, però anem a arribar 63 00:03:08,210 --> 00:03:09,400 de nou a aquest poc temps. 64 00:03:09,400 --> 00:03:12,310 Vaig a dir nul · la, amb el que que indica aquesta funció fa 65 00:03:12,310 --> 00:03:16,040 alguna cosa, té un efecte secundari, però no tornar alguna cosa a mi en el 66 00:03:16,040 --> 00:03:18,810 mateixa manera que rep int o aconseguir string sí que ho fa. 67 00:03:18,810 --> 00:03:22,450 I jo vaig a donar a aquesta funció una Nom de la lletra d'impremta, i jo vaig a 68 00:03:22,450 --> 00:03:26,470 especifica que aquest tipus tindrà una cadena, i jo vaig a trucar a aquest 69 00:03:26,470 --> 00:03:27,600 nom de la cadena. 70 00:03:27,600 --> 00:03:32,100 Podria dir-el que vulgui, però jo vull que el meu codi sigui auto-documentat. 71 00:03:32,100 --> 00:03:34,770 En altres paraules, si un de vosaltres fora a obrir aquest arxiu i llegir-lo, vostè podria 72 00:03:34,770 --> 00:03:39,020 tipus d'inferir a partir del nom d'aquest entrada de la funció que se suposa que ha de jugar. 73 00:03:39,020 --> 00:03:42,270 >> I ara per sota d'això, jo vaig a obrir clau de tancament i clau d'obertura, 74 00:03:42,270 --> 00:03:47,140 i així adonar que he seguit el mateix patró de línies de quatre a set anys com a 75 00:03:47,140 --> 00:03:51,622 He estat seguint per una bona setmana més ara entre, per exemple, les línies i nou 76 00:03:51,622 --> 00:03:53,400 14 que componen principal. 77 00:03:53,400 --> 00:03:56,160 En altres paraules, escriviu el nom és una altra funció. 78 00:03:56,160 --> 00:03:58,990 Ara, el compilador no sabrà trucar a això de forma automàtica 79 00:03:58,990 --> 00:04:02,670 perquè, literalment, acabo d'inventar, però se sap encara de trucar principal 80 00:04:02,670 --> 00:04:08,710 automàticament i després, per descomptat, en línia 13, dic la meva pròpia funció. 81 00:04:08,710 --> 00:04:12,805 I com he declarat que la funció fins a la línia 4 abans principal, 82 00:04:12,805 --> 00:04:16,579 això va a ensenyar el compilador el que van dir ells, "escrigui el seu nom" 83 00:04:16,579 --> 00:04:18,140 significa i el que ha de fer. 84 00:04:18,140 --> 00:04:22,700 Així que sóc una espècie del que suposa una nova costum bloquejar en el context de, per exemple, a les ratllades. 85 00:04:22,700 --> 00:04:27,240 >> Així que aquí, puc posar això molt comú o un patró recurrent de codi segueixo 86 00:04:27,240 --> 00:04:32,300 escriure a classe, printf % S hola,% s / n ", - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 ¿Què és el que vull posar aquí? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 Així que vull posar el nom en aquest context. 91 00:04:41,420 --> 00:04:43,440 Així notar una mica d'una dicotomia aquí. 92 00:04:43,440 --> 00:04:47,680 Perquè jo estic declarant la meva pròpia funció i he mica arbitràriament anomenada 93 00:04:47,680 --> 00:04:50,880 s'imprimeix el nom, i perquè m'he especificat en parèntesi que aquest 94 00:04:50,880 --> 00:04:55,035 funció pren un argument, el tipus de que és una cadena - pel que és una paraula 95 00:04:55,035 --> 00:05:00,010 o una frase o alguna cosa així - i Vaig a trucar a aquest nom d'argumentació, que 96 00:05:00,010 --> 00:05:04,770 significa que l'única variable que està en àmbit d'aplicació, per així dir-ho, és nom. 97 00:05:04,770 --> 00:05:07,780 >> S només hi ha entre el 2 claus, és clar? 98 00:05:07,780 --> 00:05:12,990 Bé, en realitat, igual que la línia 10 a través 14, per la qual cosa igual que dilluns no pot utilitzar 99 00:05:12,990 --> 00:05:17,650 S, però el que puc fer és passar S en lletra d'impremta. 100 00:05:17,650 --> 00:05:21,030 Escriu el nom que passa és donar-li un àlies, un sinònim, un sobrenom, 101 00:05:21,030 --> 00:05:24,400 trucant al seu nom, i ara seu ús en aquesta línia. 102 00:05:24,400 --> 00:05:26,840 Així que ara anem a salvar això, allunyar el zoom. 103 00:05:26,840 --> 00:05:31,250 >> Deixin-me seguir endavant i fer hola. 104 00:05:31,250 --> 00:05:32,400 Es veu bé. 105 00:05:32,400 --> 00:05:36,110 No escupi qualsevol error. . / Hola Retorn. 106 00:05:36,110 --> 00:05:37,020 Quin és el meu nom? 107 00:05:37,020 --> 00:05:38,060 David. 108 00:05:38,060 --> 00:05:39,270 I hola David. 109 00:05:39,270 --> 00:05:41,820 Així que no és tan emocionant, però només pensar ara. 110 00:05:41,820 --> 00:05:44,310 Ara té el mateix ingredient com ho vam fer en Scratch 111 00:05:44,310 --> 00:05:45,420 fer les nostres pròpies funcions. 112 00:05:45,420 --> 00:05:46,770 >> Però hi ha una mica de Gotcha. 113 00:05:46,770 --> 00:05:50,620 Suposem que jo no havia pensat això a través de i en realitat sense 114 00:05:50,620 --> 00:05:54,250 pensar realment en això va escriure que funcionen aquí. 115 00:05:54,250 --> 00:05:55,420 Sembla perfectament raonable. 116 00:05:55,420 --> 00:05:58,440 En zero no existeix la noció de la ubicació dels scripts. 117 00:05:58,440 --> 00:06:00,670 Es pot posar un gol amunt a aquí, un aquí, un aquí, i podria començar a 118 00:06:00,670 --> 00:06:03,310 a semblar una mica desordenat si no ho fa seure a terme ordenadament, però no ho fa 119 00:06:03,310 --> 00:06:05,910 importa on físicament els scripts estaven a la pantalla. 120 00:06:05,910 --> 00:06:09,660 Desafortunadament en C - i això és a diferència llenguatges com Java i Python 121 00:06:09,660 --> 00:06:13,600 i altres que vostè pot estar familiaritzat amb - per desgràcia, en C, per no 122 00:06:13,600 --> 00:06:15,830 importa perquè el que és rellotge passarà ara. 123 00:06:15,830 --> 00:06:19,010 >> La funció per defecte que està passant a executar és, per descomptat, el principal. 124 00:06:19,010 --> 00:06:22,290 Principal es va a cridar el nom d'impressió en la línia huit, però per desgràcia, el 125 00:06:22,290 --> 00:06:26,660 compilador ni tan sols sabrà que escrigui el seu nom existeix fins que arribi a la línia 11, 126 00:06:26,660 --> 00:06:28,520 que, malauradament, és serà massa tard. 127 00:06:28,520 --> 00:06:30,660 Així que farem fer hola. 128 00:06:30,660 --> 00:06:32,950 I ara maleït, dos errors generats. 129 00:06:32,950 --> 00:06:36,050 Així que ara vull desplaçar fins al primer, com sempre hem de fer, i 130 00:06:36,050 --> 00:06:39,560 adonar que està cridant a mi, "Declaració implícita de la funció 131 00:06:39,560 --> 00:06:40,540 imprimir el nom ". 132 00:06:40,540 --> 00:06:43,860 >> Així que hem vist aquest missatge abans, declaració implícita de la funció. 133 00:06:43,860 --> 00:06:48,080 Quan hem vist aquest tipus d'error? 134 00:06:48,080 --> 00:06:49,180 Quan no vaig incloure una biblioteca. 135 00:06:49,180 --> 00:06:53,470 Si oblit cs50.h i m'agradaria tenir va cridar per obtenir cadena o aconseguir int. 136 00:06:53,470 --> 00:06:56,880 Però en aquest cas, aquesta funció d'impressió nom no està en una biblioteca, oi? 137 00:06:56,880 --> 00:07:00,230 És, literalment, en aquest arxiu, pel que Quin és realment el problema? 138 00:07:00,230 --> 00:07:04,660 >> Bé, per desgràcia, en C, que et porta tan increïblement literalment que si 139 00:07:04,660 --> 00:07:08,640 vol una funció anomenada nom d'impressió per existeix, o bé han de posar en pràctica 140 00:07:08,640 --> 00:07:11,940 que funcionen a la part superior del seu Codi perquè sigui accessible a baixar 141 00:07:11,940 --> 00:07:15,070 funcions, però, francament, que esdevé descuidat molt ràpidament. 142 00:07:15,070 --> 00:07:18,160 Personalment, m'agrada posar primer principal perquè llavors és molt clar el que això 143 00:07:18,160 --> 00:07:19,890 programa fa a primera vista. 144 00:07:19,890 --> 00:07:23,290 I a més, es pot arribar a la cantonada rar casos on si x vol cridar 145 00:07:23,290 --> 00:07:27,530 i, però i podrien anomenar x, només físicament no pot realment posar un 146 00:07:27,530 --> 00:07:28,540 per sobre de l'altra. 147 00:07:28,540 --> 00:07:31,230 >> Però resulta que al C, que pot resoldre aquest molt simplement. 148 00:07:31,230 --> 00:07:34,010 Vaig a posar una mica d'espai aquí, i jo només vaig a 149 00:07:34,010 --> 00:07:38,170 preventivament, encara que una mica redundant, va a ensenyar als 150 00:07:38,170 --> 00:07:42,320 compilador que hi ha una funció va cridar el nom de la seva impressió, pren una cadena, 151 00:07:42,320 --> 00:07:46,330 i jo vaig a trucar de nomenar i coma. 152 00:07:46,330 --> 00:07:50,220 >> Així que aquesta ara en la línia de quatre, el que ens no han vist abans, és una declaració 153 00:07:50,220 --> 00:07:53,940 d'un nom de funció d'impressió, però és només la promesa que aquesta funció es 154 00:07:53,940 --> 00:07:56,620 eventualment ser definit, eventualment implementar. 155 00:07:56,620 --> 00:08:00,180 Això ara pot deixar sols perquè Ara es tracta de la definició, la 156 00:08:00,180 --> 00:08:04,090 aplicació, tipus de l'última milla de l'aplicació de la present 157 00:08:04,090 --> 00:08:05,130 funció en particular. 158 00:08:05,130 --> 00:08:08,450 Així que, francament, és estúpid, és molest, però aquesta és la forma C és, i és 159 00:08:08,450 --> 00:08:12,050 perquè et porta molt literalment i, com un ordinador francament haurien, 160 00:08:12,050 --> 00:08:16,020 només fa exactament el que li dius a fer, i el que ordre és important. 161 00:08:16,020 --> 00:08:18,940 >> Així que tingues en compte i una altra, començar a compte la repetició de patrons. 162 00:08:18,940 --> 00:08:21,850 El més probable és que vostè vol, si no ho ha ja, començar a trobar missatges 163 00:08:21,850 --> 00:08:24,700 així que a primera vista semblen completament críptica, però si comença 164 00:08:24,700 --> 00:08:29,000 a la recerca d'aquestes paraules clau, com "Declaració implícita", l'esment d'un 165 00:08:29,000 --> 00:08:32,380 funció, en aquest cas - i francament, fins i tot a vegades ser una mica verd 166 00:08:32,380 --> 00:08:35,010 pastanaga símbol que indica on el problema probablement és - 167 00:08:35,010 --> 00:08:40,980 vostè pot començar a treballar el seu camí a través de Encara missatges d'error que no es veuen. 168 00:08:40,980 --> 00:08:45,860 Qualsevol pregunta sobre l'escriptura de la seva funció pròpia d'aquesta manera? 169 00:08:45,860 --> 00:08:47,540 >> Farem una cosa que és un poc més convincent. 170 00:08:47,540 --> 00:08:51,760 En lloc de fer alguna cosa que té un efecte secundari de la impremta, em va deixar anar 171 00:08:51,760 --> 00:08:55,340 endavant i desar un nou arxiu, i anem a anomenar aquest positive.c, tot i que és 172 00:08:55,340 --> 00:08:57,600 serà una mica diferent en comparació amb l'última vegada. 173 00:08:57,600 --> 00:09:01,910 I aquesta vegada, vull tornar a implementar exemple positive.C l'última vegada, que 174 00:09:01,910 --> 00:09:04,430 es força a l'usuari donar m'assabento positiu. 175 00:09:04,430 --> 00:09:07,280 Però vaig haver d'usar aconseguir int última vegada. 176 00:09:07,280 --> 00:09:10,780 ¿No hauria estat agradable si hi havia una funció anomenada aconseguir int positiu 177 00:09:10,780 --> 00:09:13,610 que només podia encarregar el part de la funcionalitat que? 178 00:09:13,610 --> 00:09:16,480 Així que la diferència aquí és que vaig a implementar aconseguir int positiu, però a diferència d' 179 00:09:16,480 --> 00:09:20,330 escrigui el seu nom, que tenia un efecte secundari - és no tornar alguna cosa a mi com 180 00:09:20,330 --> 00:09:21,710 un nombre o una cadena - 181 00:09:21,710 --> 00:09:25,510 aconseguir int positiu és, per descomptat, va a tornar, amb sort, un int positiu. 182 00:09:25,510 --> 00:09:26,170 >> Així que anem a fer això. 183 00:09:26,170 --> 00:09:30,840 Incloure cs50.h, Incloure estàndard io.h. 184 00:09:30,840 --> 00:09:33,520 Internacional void main. 185 00:09:33,520 --> 00:09:42,160 I ara aquí, seguiré endavant i diguem que int, en diuen n, és igual a 186 00:09:42,160 --> 00:09:44,270 aconseguir int positiu. 187 00:09:44,270 --> 00:09:49,080 I igual que aconseguir ja existeix int perquè el personal el va escriure, em vaig 188 00:09:49,080 --> 00:09:53,950 a assumir en el moment en què rep existeix int positiu, i ara em vaig 189 00:09:53,950 --> 00:09:57,730 seguir endavant i dir printf, gràcies pel% i / n ", n. 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Així que ara si puc compilar aquest programa, el que que passarà en el meu terminal 192 00:10:07,770 --> 00:10:09,075 finestra a la part inferior de la pantalla? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Jo vaig a aconseguir, probablement, que mateix error com abans. 195 00:10:13,900 --> 00:10:14,570 Així que anem a provar això. 196 00:10:14,570 --> 00:10:16,450 Fer positiu. 197 00:10:16,450 --> 00:10:19,900 I un cop més, la declaració implícita de la funció, aconseguir int positiu. 198 00:10:19,900 --> 00:10:21,970 Així que podem resoldre això en un parell de maneres. 199 00:10:21,970 --> 00:10:27,310 Vaig a mantenir simple i just posar la meva declaració aquí i obtenir 200 00:10:27,310 --> 00:10:28,120 int positiu. 201 00:10:28,120 --> 00:10:29,720 Necessito l'anomenada signatura. 202 00:10:29,720 --> 00:10:32,410 La signatura només es refereix a l'estètica de la 203 00:10:32,410 --> 00:10:34,090 primera línia del programa. 204 00:10:34,090 --> 00:10:37,420 Llavors, què ha de rebre positiu int retorn? 205 00:10:37,420 --> 00:10:37,970 >> Així que un int. 206 00:10:37,970 --> 00:10:41,540 Em refereixo a l'ideal seria tornar alguna cosa així com int positiu, però que 207 00:10:41,540 --> 00:10:42,160 no existeix. 208 00:10:42,160 --> 00:10:45,280 No hem vist que entre les dades tipus, per el que han de fer front a la 209 00:10:45,280 --> 00:10:47,170 fet que tenim molt pocs tipus de dades per treballar. 210 00:10:47,170 --> 00:10:50,360 Però podem tornar un int i just confiar que serà positiu. 211 00:10:50,360 --> 00:10:52,690 Es va a cridar aconseguir int positiu. 212 00:10:52,690 --> 00:10:55,122 >> I ara, què hi ha dels seus arguments? 213 00:10:55,122 --> 00:10:56,440 Es necessita alguna entrada? 214 00:10:56,440 --> 00:10:58,280 És necessari qualsevol entrada? 215 00:10:58,280 --> 00:11:00,900 Per tant, no necessita saber per endavant res. 216 00:11:00,900 --> 00:11:03,220 Com cadena no, obtenir int no. 217 00:11:03,220 --> 00:11:06,430 Fa Printf - que ha de tenir algun entrada que passa en ell - i el nom d'impressió 218 00:11:06,430 --> 00:11:09,020 necessària alguna entrada, però arribar int positiu no. 219 00:11:09,020 --> 00:11:11,530 Així que vaig a explícitament dirà el buit compilador. 220 00:11:11,530 --> 00:11:13,470 Buit és l'absència de qualsevol altra cosa. 221 00:11:13,470 --> 00:11:17,990 Així mitjans void res va dins d'aquests parèntesis, punt i coma. 222 00:11:17,990 --> 00:11:20,840 >> I ara en el fons del meu expedient - i una vegada més, només estic sent classe de anal 223 00:11:20,840 --> 00:11:23,640 aquí posant principal a la part superior, que és una bona pràctica perquè d'aquesta manera, 224 00:11:23,640 --> 00:11:26,220 en qualsevol moment que vostè o algú més obre l'arxiu, el 225 00:11:26,220 --> 00:11:27,400 funcionalitat està aquí. 226 00:11:27,400 --> 00:11:29,660 Es pot bussejar des de zero. 227 00:11:29,660 --> 00:11:34,190 Així que ara vaig a duplicar el, quedaria invalidada int positiu, però no estic 228 00:11:34,190 --> 00:11:35,430 va a colpejar un punt i coma ara. 229 00:11:35,430 --> 00:11:38,280 Vaig a obrir les claus, i ara necessito que em prestis 230 00:11:38,280 --> 00:11:39,700 algunes idees del Dilluns. 231 00:11:39,700 --> 00:11:44,450 >> Així com vostè recorda, vam fer alguna cosa agradaria fer el següent mentre 232 00:11:44,450 --> 00:11:45,830 cosa que era cert. 233 00:11:45,830 --> 00:11:46,630 I el que vaig fer? 234 00:11:46,630 --> 00:11:51,540 Vaig fer una cosa així com donar em un nombre enter positiu, 235 00:11:51,540 --> 00:11:52,430 poc més d'un sistema. 236 00:11:52,430 --> 00:11:53,540 Podria utilitzar qualsevol paraula que vull. 237 00:11:53,540 --> 00:11:54,960 I llavors jo solia què? 238 00:11:54,960 --> 00:11:59,530 Int n és igual a aconseguir int, sense arguments a la mateixa. 239 00:11:59,530 --> 00:12:00,550 >> I noti la diferència. 240 00:12:00,550 --> 00:12:04,680 Quan es diu a una funció, quan s'utilitza una funció, que no posa en efecte. 241 00:12:04,680 --> 00:12:08,570 Només fa que quan es declara una funció, l'ensenyament que el compilador ho 242 00:12:08,570 --> 00:12:09,780 cal esperar. 243 00:12:09,780 --> 00:12:11,650 Així que vostè no ha de posar anul · lar allà mateix. 244 00:12:11,650 --> 00:12:12,940 >> I ara el que era la meva condició? 245 00:12:12,940 --> 00:12:19,670 Bé, n no és igual a positiu, però això és només pseudocodi. 246 00:12:19,670 --> 00:12:22,530 Llavors, com expressar això més neta? 247 00:12:22,530 --> 00:12:24,090 Per tant menor o igual a zero. 248 00:12:24,090 --> 00:12:26,250 Així que de nou, noti que vostè pot fer menys de o igual a. 249 00:12:26,250 --> 00:12:28,100 Tot i ser dos separats símbols, pot fer-ho en 250 00:12:28,100 --> 00:12:29,350 el teclat com a tal. 251 00:12:29,350 --> 00:12:33,950 >> Però encara hi ha un bug que Vaig cometre un error última vegada també. 252 00:12:33,950 --> 00:12:36,950 He de declarar - 253 00:12:36,950 --> 00:12:37,460 exactament. 254 00:12:37,460 --> 00:12:39,640 He de declarar n fora del bucle. 255 00:12:39,640 --> 00:12:44,180 Així que he de posar n fins aquí, i jo no vol tornar a declarar en aquesta 256 00:12:44,180 --> 00:12:46,480 no sigui que arribi una nova variable. 257 00:12:46,480 --> 00:12:48,860 Només vull assignar un valor aquí. 258 00:12:48,860 --> 00:12:54,320 >> I ara no estic molt fet aquí. 259 00:12:54,320 --> 00:12:57,290 A veure si per davant de mi mateix i fer veure que estic fet. 260 00:12:57,290 --> 00:13:01,220 Fer positiu, i ara hi ha un nou error. 261 00:13:01,220 --> 00:13:04,550 Control arriba al final de funció no nul · la. 262 00:13:04,550 --> 00:13:07,760 Tan nou missatge d'error, però si que tipus d'esmicolar cadascuna de les paraules, 263 00:13:07,760 --> 00:13:09,620 probablement una pista del que està malament. 264 00:13:09,620 --> 00:13:11,240 >> Controlar. 265 00:13:11,240 --> 00:13:14,250 Control només significa que l'ordre de les operacions en un programa. 266 00:13:14,250 --> 00:13:16,510 L'equip té el control i alguna cosa va sortir malament. 267 00:13:16,510 --> 00:13:18,510 Per tant, arriba al final de una funció no nul · la. 268 00:13:18,510 --> 00:13:21,760 Què és la funció que aparentment referint? 269 00:13:21,760 --> 00:13:24,790 Quina funció és no buit? 270 00:13:24,790 --> 00:13:27,400 Així que int positiu, i una mica de confús en aquest pou, 271 00:13:27,400 --> 00:13:29,010 és una espècie de buit. 272 00:13:29,010 --> 00:13:33,070 Té una especificació de buit per a la seva arguments, però la seva sortida es va a 273 00:13:33,070 --> 00:13:34,540 ser de tipus n. 274 00:13:34,540 --> 00:13:37,260 Així que la paraula de l'esquerra és el els anomenats tipus de retorn. 275 00:13:37,260 --> 00:13:40,320 La paraula a l'interior aquí és les zero o més arguments 276 00:13:40,320 --> 00:13:41,970 que la funció pren. 277 00:13:41,970 --> 00:13:44,060 >> Llavors, què he de fer? 278 00:13:44,060 --> 00:13:47,650 En aquest punt del meu codi, la línia 21, on l'indicador parpelleja ara és que 279 00:13:47,650 --> 00:13:51,430 tenir un int positiu dins de la variable anomenada núm. 280 00:13:51,430 --> 00:13:55,200 Com li dono volta a principal? 281 00:13:55,200 --> 00:13:55,960 Literalment. 282 00:13:55,960 --> 00:13:59,320 Torneu n punt i coma. 283 00:13:59,320 --> 00:14:04,090 >> Així com Colton tornat un tros de paper amb una resposta que em deixant caure 284 00:14:04,090 --> 00:14:07,020 aquest tros de paper al petit negre caixa sobre la taula, per fer que a 285 00:14:07,020 --> 00:14:10,100 codi, literalment, acaba d'escriure, torni n, i és com si Colton eren 286 00:14:10,100 --> 00:14:12,140 em va lliurar alguna cosa a canvi físic. 287 00:14:12,140 --> 00:14:15,870 En aquest cas, el que està succeint és aconseguir int positiu va a tornar 288 00:14:15,870 --> 00:14:19,220 el que és probablement una positiva sencer a qui? 289 00:14:19,220 --> 00:14:21,380 D'on ve aquest valor a acabar? 290 00:14:21,380 --> 00:14:29,080 Això acaba a aquesta variable, n, i a continuació, es procedeix amb la línia de nou. 291 00:14:29,080 --> 00:14:31,920 >> Així, en altres paraules, per tal de operacions, aquest programa s'inicia 292 00:14:31,920 --> 00:14:34,430 execució i el compilador s'adona, oh, vol que la biblioteca? 293 00:14:34,430 --> 00:14:36,310 Déjame anar a prendre el que hi ha dins d'això. 294 00:14:36,310 --> 00:14:37,750 Oh, vostè vol la biblioteca IO estàndard? 295 00:14:37,750 --> 00:14:39,660 Déjame anar a prendre el que hi ha dins d'això. 296 00:14:39,660 --> 00:14:44,510 Què fa el compilador diu a si mateix quan arriba a la línia de quatre? 297 00:14:44,510 --> 00:14:47,980 Oh, vostè es va comprometre a posar en pràctica el funció anomenada obtenir positiu, però 298 00:14:47,980 --> 00:14:50,820 ens posarem en contacte al vespre, alguna cosa per l'estil. 299 00:14:50,820 --> 00:14:53,450 >> Void main Int només significa aquí està les entranyes del meu programa. 300 00:14:53,450 --> 00:14:54,990 Línia 7 és només una clau de tall. 301 00:14:54,990 --> 00:14:59,540 Línia 8 està dient a l'esquerra, donen em 32 bits per un enter, diuen núm. 302 00:14:59,540 --> 00:15:02,160 Al costat dret, és dient aconseguir int positiu. 303 00:15:02,160 --> 00:15:07,120 Ara fem una pausa aquesta història perquè ara No porto movent el cursor cap avall. 304 00:15:07,120 --> 00:15:11,720 El meu cursor passa ara aquí perquè ara rep int positiu s'executa. 305 00:15:11,720 --> 00:15:13,100 Int n es declara. 306 00:15:13,100 --> 00:15:14,040 Feu el següent. 307 00:15:14,040 --> 00:15:16,090 Printf em dóna un nombre enter positiu. 308 00:15:16,090 --> 00:15:19,740 >> Obtenir un int de l'usuari, guardi-la en n, i potser fer això una i altra vegada. 309 00:15:19,740 --> 00:15:23,010 Aquest bucle significa que aquest codi podria executar amunt i avall com això una altra vegada 310 00:15:23,010 --> 00:15:25,810 i de nou, però quan l'usuari finalment coopera i em dóna un resultat positiu 311 00:15:25,810 --> 00:15:31,750 int, em va colpejar la línia 21, moment en què el nombre es va retornar, i que un 312 00:15:31,750 --> 00:15:34,280 he de destacar ara? 313 00:15:34,280 --> 00:15:35,070 Nou. 314 00:15:35,070 --> 00:15:39,010 De control, per així dir-ho, torna a la línia de nou. 315 00:15:39,010 --> 00:15:40,650 Aquesta és la línia que està ara a càrrec. 316 00:15:40,650 --> 00:15:43,250 >> Així que això és el que ha estat succeint en tot aquesta vegada per sota de la caputxa, però 317 00:15:43,250 --> 00:15:46,480 quan hem fet servir funcions com printf o fins i tot obtenir cadena que algú més 318 00:15:46,480 --> 00:15:50,600 escriure per a tu, control estava sent lliurat línia de codi lliure per algú més 319 00:15:50,600 --> 00:15:51,290 per línia per línia. 320 00:15:51,290 --> 00:15:53,770 És només que no podia veure, i ens realment no podia representar en aquest 321 00:15:53,770 --> 00:15:57,620 programa, ja que és d'alguna altra arxiu al disc dur 322 00:15:57,620 --> 00:16:00,000 desconegut per a nosaltres. 323 00:16:00,000 --> 00:16:02,100 Així que en realitat compilar i executar aquest moment. 324 00:16:02,100 --> 00:16:03,890 >> Fer positiu. 325 00:16:03,890 --> 00:16:05,260 Compilació, això és progrés. 326 00:16:05,260 --> 00:16:06,650 . / Positiu. 327 00:16:06,650 --> 00:16:08,020 Dóna'm un nombre enter positiu. 328 00:16:08,020 --> 00:16:08,800 Anem a ser difícil. 329 00:16:08,800 --> 00:16:10,430 Negatiu 1. 330 00:16:10,430 --> 00:16:11,360 Zero. 331 00:16:11,360 --> 00:16:13,370 Anem a donar-li 50. 332 00:16:13,370 --> 00:16:18,100 Gràcies pel 50, i el que el control ara ha tornat. 333 00:16:18,100 --> 00:16:21,750 Qualsevol pregunta, llavors, en què? 334 00:16:21,750 --> 00:16:23,180 Sí? 335 00:16:23,180 --> 00:16:25,630 >> [Inaudible]. 336 00:16:25,630 --> 00:16:26,130 >> Digues-ho de nou. 337 00:16:26,130 --> 00:16:27,860 Ah, bona pregunta. 338 00:16:27,860 --> 00:16:31,100 Així que vostè pot notar un paral · lel que Sóc una mena de tall d'una cantonada. 339 00:16:31,100 --> 00:16:35,420 En la línia 12, que dic, aconseguir int positiu retorna un int, però per aquest mateix 340 00:16:35,420 --> 00:16:39,660 lògica, ara lògic pensar que, en línia de sis, estic dient que les principals declaracions 341 00:16:39,660 --> 00:16:44,040 01:00 int, però el que han de mai tingut en qualsevol dels nostres programes? 342 00:16:44,040 --> 00:16:46,470 Mai hem tingut esment de aquesta paraula clau a canvi. 343 00:16:46,470 --> 00:16:49,970 >> Així que resulta que a C, almenys la versió que estem utilitzant 344 00:16:49,970 --> 00:16:55,750 va fer el 1999, tècnicament, es tracta de passa de forma automàtica. 345 00:16:55,750 --> 00:16:59,300 En qualsevol moment d'implementar un programa i implementar una funció de trucada principal, 346 00:16:59,300 --> 00:17:04,230 que la funció retornarà zero per defecte si vostè no diu el contrari, 347 00:17:04,230 --> 00:17:05,849 i zero és només una convenció. 348 00:17:05,849 --> 00:17:09,430 El món torna zero amb això el que indica que tot està bé, 349 00:17:09,430 --> 00:17:13,040 deixant-nos efectivament amb 4000000000 possibles coses que podrien sortir 350 00:17:13,040 --> 00:17:17,530 malament, així que si tornem un, perquè podria significar un codi que significa això 351 00:17:17,530 --> 00:17:18,310 El que va sortir malament. 352 00:17:18,310 --> 00:17:20,589 Podríem tornar dos, el que significa aquesta altra cosa que va sortir malament. 353 00:17:20,589 --> 00:17:23,440 Podríem tornar 4000000000, el que significa això una altra cosa que va sortir malament. 354 00:17:23,440 --> 00:17:27,170 >> I si ara pensa en el seu propi PC o Mac, és possible recordar que 355 00:17:27,170 --> 00:17:29,610 de vegades apareixen missatges d'error críptic des el programari que 356 00:17:29,610 --> 00:17:32,650 utilitzant, de vegades, té un ésser humà Descripció amable, però hi ha 357 00:17:32,650 --> 00:17:35,265 ser un codi o un nombre a la pantalla? 358 00:17:35,265 --> 00:17:37,800 Si això no ve a la ment, només mantenir un ull cap a fora per a ell. 359 00:17:37,800 --> 00:17:40,790 Això és en general el que aquests els codis es refereixen. 360 00:17:40,790 --> 00:17:44,200 Estan inclosos en Microsoft Word i altres programes de manera que si vostè presenta una 361 00:17:44,200 --> 00:17:48,850 informe d'error amb l'empresa, es pot diuen ells, oh, tinc el número d'error 45. 362 00:17:48,850 --> 00:17:51,750 I algun programador de tornada a l'empresa pot semblar que en la seva 363 00:17:51,750 --> 00:17:54,940 codi i dir: Oh, això és perquè jo vaig aquest error i per això l'usuari 364 00:17:54,940 --> 00:17:56,240 obtingut aquest missatge. 365 00:17:56,240 --> 00:17:59,490 >> Però, francament, és només una mica distracció i una mica tediós 366 00:17:59,490 --> 00:18:02,130 concloure que, almenys en la nostra primers programes, pel que hem 367 00:18:02,130 --> 00:18:02,970 estat ometre. 368 00:18:02,970 --> 00:18:07,450 Però tot aquest temps cadascun dels seus principals funcions ha tingut en secret aquest 369 00:18:07,450 --> 00:18:11,600 línia agregada automàticament per vostè pel compilador, només per convenció 370 00:18:11,600 --> 00:18:13,172 estalviar una mica de temps. 371 00:18:13,172 --> 00:18:14,620 >> [Inaudible]. 372 00:18:14,620 --> 00:18:16,250 >> No cal incloure-ho en el principal. 373 00:18:16,250 --> 00:18:16,700 Això està bé. 374 00:18:16,700 --> 00:18:20,260 Sí que és necessari incloure'l si fossis implementació d'una funció com aquesta. 375 00:18:20,260 --> 00:18:22,850 En cas contrari la funció plana terme no anava a funcionar. 376 00:18:22,850 --> 00:18:24,480 Però en la principal, no cal. 377 00:18:24,480 --> 00:18:28,450 En una o dues setmanes, anem a començar a aconseguir en aquest hàbit un cop que volem començar 378 00:18:28,450 --> 00:18:29,690 significant errors. 379 00:18:29,690 --> 00:18:32,550 Molt bona pregunta. 380 00:18:32,550 --> 00:18:36,880 >> Pausa verbal Així ràpida d'esmentar que aquest divendres, no estarem dinant 381 00:18:36,880 --> 00:18:39,980 per se, però tindrem un sopar amb alguns dels estudiants i el personal. 382 00:18:39,980 --> 00:18:42,940 Si desitja unir-se a nosaltres, no dubti lliure d'anar a cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 18:00 aquest divendres. 384 00:18:45,030 --> 00:18:47,990 L'espai és, com sempre, limitat, però anem a seguir fent això en un gairebé 385 00:18:47,990 --> 00:18:51,420 setmanalment si l'espai acabi aquesta setmana. 386 00:18:51,420 --> 00:18:56,160 >> Així que el drama d'suspens que ho deixem en Dilluns va ser que les cadenes poden realment 387 00:18:56,160 --> 00:19:00,520 ser indexats en què acabo de dir es pot obtenir en el primer caràcter, el 388 00:19:00,520 --> 00:19:03,770 segon personatge, el tercer personatge i així successivament, perquè es pot 389 00:19:03,770 --> 00:19:07,860 pensar efectivament en una cadena, com hola, com en aquest cas, 5:00 390 00:19:07,860 --> 00:19:09,670 lletres a l'interior de les caixes. 391 00:19:09,670 --> 00:19:13,370 I vostè pot aconseguir en cada un dels caixes amb el que va fer que la sintaxi 392 00:19:13,370 --> 00:19:15,230 introduir el dilluns? 393 00:19:15,230 --> 00:19:16,760 Els claudàtors en el teclat. 394 00:19:16,760 --> 00:19:18,980 Això només significava anar a la posició zero. 395 00:19:18,980 --> 00:19:22,840 >> Comencem a comptar des de zero, per la qual cosa el suport zero significa h, suport d'un 396 00:19:22,840 --> 00:19:25,170 significa i, i així successivament. 397 00:19:25,170 --> 00:19:28,490 I així tot el temps en el qual hem estat l'ús de cadenes i escriure "hola" 398 00:19:28,490 --> 00:19:31,250 i "món" i altres coses en la pantalla, s'ha emmagatzemat 399 00:19:31,250 --> 00:19:32,820 en caixes com aquesta. 400 00:19:32,820 --> 00:19:33,370 I prendre una conjectura. 401 00:19:33,370 --> 00:19:37,470 Què fa cada caixa representen físicament en l'interior del seu equip? 402 00:19:37,470 --> 00:19:38,250 >> [Inaudible]. 403 00:19:38,250 --> 00:19:39,150 >> Com? 404 00:19:39,150 --> 00:19:39,580 >> Personatges. 405 00:19:39,580 --> 00:19:44,760 >> Així que un personatge, sobretot en el cas de cadenes, i un caràcter és només 406 00:19:44,760 --> 00:19:46,800 vuit bits o un byte. 407 00:19:46,800 --> 00:19:49,550 Així que és probable que almenys vagament familiaritzat amb el fet que la seva 408 00:19:49,550 --> 00:19:50,500 equip té memòria. 409 00:19:50,500 --> 00:19:52,110 Té dos tipus de memòria com a mínim. 410 00:19:52,110 --> 00:19:54,810 Un d'ells és el disc dur on es guarda embotir de forma permanent, i això és 411 00:19:54,810 --> 00:19:57,400 típicament gran, així que vostè pot tenir les pel · lícules i la música i així successivament. 412 00:19:57,400 --> 00:20:04,010 >> Llavors vostè té un altre tipus de memòria anomenada RAM, R-A-M, d'accés aleatori 413 00:20:04,010 --> 00:20:07,510 Memòria, i aquest és el tipus de memòria que s'utilitza quan l'equip està 414 00:20:07,510 --> 00:20:11,520 funcionant, però si perd el poder o el seu bateria s'esgota, tot el que s'emmagatzema 415 00:20:11,520 --> 00:20:15,300 en la memòria RAM desapareix si se'n va la electricitat complet, ja que no és 416 00:20:15,300 --> 00:20:16,060 persistent. 417 00:20:16,060 --> 00:20:19,120 Normalment té, en aquests dies, un concert d'ella, dos concerts, potser més. 418 00:20:19,120 --> 00:20:23,490 I el bo de RAM és que és molt més molt, molt més ràpid que els discos durs 419 00:20:23,490 --> 00:20:27,390 o unitats d'estat sòlid en aquests dies, però és generalment més car, així 420 00:20:27,390 --> 00:20:28,480 vostè té menys d'ell. 421 00:20:28,480 --> 00:20:32,400 >> Així que la conversa d'avui realment es refereix a la RAM, quin tipus de memòria que 422 00:20:32,400 --> 00:20:35,270 existeix només quan hi ha poder d'introduir a l'ordinador. 423 00:20:35,270 --> 00:20:40,530 Així que quan s'escriu en H-I-L-L-O, anoti en el teclat, l'H es va en un 424 00:20:40,530 --> 00:20:44,550 byte de RAM, el correu va en un altre byte de RAM, com és 425 00:20:44,550 --> 00:20:45,800 la resta de la paraula. 426 00:20:45,800 --> 00:20:49,010 Així que recordem el que hem pogut fer l'última vegada va ser això. 427 00:20:49,010 --> 00:20:53,940 Déjame anar per davant i obrir l'arxiu que anomenem string.c i recordar 428 00:20:53,940 --> 00:20:56,860 que semblava una mica alguna cosa com això. 429 00:20:56,860 --> 00:20:59,860 Permetin-me realitat rodar cap enrere i canviar que és exactament el que semblava, 430 00:20:59,860 --> 00:21:02,654 longitud de la cadena del s. 431 00:21:02,654 --> 00:21:04,560 >> Així que busqui en el programa aquí. 432 00:21:04,560 --> 00:21:08,530 Incloem la biblioteca CS50 per que podem utilitzar arribar cadena. 433 00:21:08,530 --> 00:21:11,400 Incloem io.h estàndard així que podem usar printf. 434 00:21:11,400 --> 00:21:13,580 Per què incloem string.h? 435 00:21:13,580 --> 00:21:16,980 Això era nou per al Dilluns. 436 00:21:16,980 --> 00:21:18,230 Així que volíem longitud de la cadena. 437 00:21:18,230 --> 00:21:19,090 Str lleng. 438 00:21:19,090 --> 00:21:21,470 La gent va decidir fa anys, serem breu. 439 00:21:21,470 --> 00:21:24,290 En lloc de cridar "longitud de la cadena" diguem "str lleng" i deixar que el 440 00:21:24,290 --> 00:21:28,540 figura mundial que fos, i el que és el que tenim accés a amb string.h. 441 00:21:28,540 --> 00:21:29,390 >> Aquesta és familiar. 442 00:21:29,390 --> 00:21:30,320 Aquesta és familiar. 443 00:21:30,320 --> 00:21:31,450 Aquesta és familiar. 444 00:21:31,450 --> 00:21:32,370 Això és una mica nou. 445 00:21:32,370 --> 00:21:35,420 En la línia 22 - i tornarem a això, però per ara saber - 446 00:21:35,420 --> 00:21:37,880 i només se sabria que això té llegir la documentació o si 447 00:21:37,880 --> 00:21:39,010 sabies C ia - 448 00:21:39,010 --> 00:21:41,510 aconseguir string vegades pot ficar la pota. 449 00:21:41,510 --> 00:21:45,130 Si l'usuari és realment contradictori o falta de cooperació i ell o ella 450 00:21:45,130 --> 00:21:49,450 no escrigui res al teclat o tipus tant en el teclat que 451 00:21:49,450 --> 00:21:53,760 que aclapara la memòria de l'ordinador, en teoria, arribar cadena podria tornar 452 00:21:53,760 --> 00:21:56,270 alguna cosa que no sigui un cadena de caràcters. 453 00:21:56,270 --> 00:22:01,930 Pot retornar un valor especial anomenat NULL en majúscules, N-O-L-L, i això és 454 00:22:01,930 --> 00:22:03,390 només un valor sentinella anomenat. 455 00:22:03,390 --> 00:22:08,010 És un valor especial que significa una cosa dolenta va passar en aquest cas. 456 00:22:08,010 --> 00:22:10,520 És l'absència d'una cadena. 457 00:22:10,520 --> 00:22:16,190 >> Així NULL Estic comprovant simplement perquè, el conte llarg, str lleng i 458 00:22:16,190 --> 00:22:20,230 altres funcions que vénen amb C, si que esperen una cadena però ells passen 459 00:22:20,230 --> 00:22:23,630 l'absència d'una cadena, si passa nul · les, l'ordinador o el programa d' 460 00:22:23,630 --> 00:22:25,000 s'acaba de fallar per complet. 461 00:22:25,000 --> 00:22:25,610 Es penjarà. 462 00:22:25,610 --> 00:22:27,250 Es va a tirar una mica de missatge d'error. 463 00:22:27,250 --> 00:22:28,690 Succeiran coses dolentes. 464 00:22:28,690 --> 00:22:31,130 Així que, encara que això segueix sent no està ben definit - 465 00:22:31,130 --> 00:22:33,730 això tindrà més sentit en una setmana o 2 - a la línia 22, això és només una 466 00:22:33,730 --> 00:22:38,790 exemple de comprovació d'errors en defensa pròpia només en cas d'un cop d' 467 00:22:38,790 --> 00:22:42,040 un milió de que alguna cosa va malament, l' menys el meu programa no es bloquejarà. 468 00:22:42,040 --> 00:22:45,960 >> Així que si s no és igual a una cosa dolenta, Tinc un bucle for, i això va ser 469 00:22:45,960 --> 00:22:47,710 on havíem de altres nova peça de sintaxi. 470 00:22:47,710 --> 00:22:51,580 Tinc un bucle d'iteració a zero fins a la longitud de s. 471 00:22:51,580 --> 00:22:56,140 I llavors aquí, jo era un fora de impressió s suport de i, però per què vaig fer servir% c tots 472 00:22:56,140 --> 00:23:00,770 sobte en lloc de% s encara si s és una cadena? 473 00:23:00,770 --> 00:23:02,110 És un personatge, no? 474 00:23:02,110 --> 00:23:06,560 S és una cadena, per s suport d'alguna cosa, s abraçadora i on i és zero 475 00:23:06,560 --> 00:23:10,380 o un o dos, això és un individu caràcter de la cadena, i així per 476 00:23:10,380 --> 00:23:14,970 que necessita printf per ser informat que és de fet un personatge que pot esperar. 477 00:23:14,970 --> 00:23:18,096 >> I llavors recordo, el que va fer aquest programa realment? 478 00:23:18,096 --> 00:23:19,848 >> Imprès a terme en columnes. 479 00:23:19,848 --> 00:23:21,120 >> Sí, exactament. 480 00:23:21,120 --> 00:23:24,990 Simplement imprimeix la paraula que escric en una columna, un caràcter per línia. 481 00:23:24,990 --> 00:23:26,190 Així que anem a veure de nou. 482 00:23:26,190 --> 00:23:27,810 Així que cadena. 483 00:23:27,810 --> 00:23:30,200 Compilat acord. . / String. 484 00:23:30,200 --> 00:23:35,560 Permetin-me escric en H-I-L-L-O, introduir i de fet ho entenc, un per línia. 485 00:23:35,560 --> 00:23:37,280 >> Així que permetin-me fer una optimització d'aquí. 486 00:23:37,280 --> 00:23:40,240 Si es pensa en això, sobretot si que hagi programat abans, hi ha 487 00:23:40,240 --> 00:23:43,340 possiblement una ineficiència en la línia 24. 488 00:23:43,340 --> 00:23:46,160 En altres paraules, no és necessàriament el millor disseny. 489 00:23:46,160 --> 00:23:50,200 Senzill, almenys, una vegada que recorda el str lleng és, però és 490 00:23:50,200 --> 00:23:52,640 fer alguna cosa ximple potencialment. 491 00:23:52,640 --> 00:23:54,863 Què podria ser? 492 00:23:54,863 --> 00:23:56,280 >> [Inaudible]. 493 00:23:56,280 --> 00:23:56,800 >> Exactament. 494 00:23:56,800 --> 00:24:00,340 És la comprovació de la longitud de s cada vegada que tot i que 495 00:24:00,340 --> 00:24:02,980 H-I-L-L-O sempre va a ser de cinc caràcters. 496 00:24:02,980 --> 00:24:05,490 Cada vegada que a través d'aquest bucle, els cinc no està canviant. 497 00:24:05,490 --> 00:24:08,750 Jo podria estar incrementant i, però el és la longitud de s en tots els 498 00:24:08,750 --> 00:24:09,690 iteració d'aquest bucle? 499 00:24:09,690 --> 00:24:15,810 Són les cinc, són cinc, són cinc, i però, estic demanant això, però, 500 00:24:15,810 --> 00:24:18,320 pregunta una i altra vegada i una altra. 501 00:24:18,320 --> 00:24:20,750 Ara, francament, l'ordinador és tan condemnadament ràpid, ningú va a notar una 502 00:24:20,750 --> 00:24:23,780 diferència en aquest cas, però aquests tipus de les decisions de disseny deficient pot 503 00:24:23,780 --> 00:24:28,330 començar a sumar si el propi compilador no tractar d'arreglar això per a vostè que 504 00:24:28,330 --> 00:24:30,630 que en general no ho faria, per la menys en l'aparell. 505 00:24:30,630 --> 00:24:31,540 >> Així que vaig a fer això. 506 00:24:31,540 --> 00:24:34,580 Vaig a afegir una coma després de la meva primera variable, i. 507 00:24:34,580 --> 00:24:37,310 Vaig a donar-me una altra variables, cridant n, amb només 508 00:24:37,310 --> 00:24:41,330 convenció per als nombres, i llavors estic va a assignar n el valor de cadena 509 00:24:41,330 --> 00:24:42,530 longitud de s. 510 00:24:42,530 --> 00:24:46,060 I després em canviaré la meva condició de ser què? 511 00:24:46,060 --> 00:24:51,960 Jo canviaré la meva condició al mateix temps i és menor que n. 512 00:24:51,960 --> 00:24:55,700 >> Així que ara, quantes vegades he de comprovar la longitud de s? 513 00:24:55,700 --> 00:25:00,110 Un cop, però està bé per comprovar i contra n una i altra vegada perquè ara els 514 00:25:00,110 --> 00:25:03,170 Els valors no són en realitat canviant. 515 00:25:03,170 --> 00:25:06,020 Ara per ara, només sé que cada vegada que cridar a una funció, hi ha una mica de 516 00:25:06,020 --> 00:25:09,930 despeses generals, no és suficient per descoratjar realitat d'haver d'utilitzar funcions, però 517 00:25:09,930 --> 00:25:12,750 sens dubte quan hi ha una línia de codi d'aquesta manera - i les línies tindran 518 00:25:12,750 --> 00:25:15,490 més interessant en poc temps - en hi ha una oportunitat per pensar, si 519 00:25:15,490 --> 00:25:18,320 escrigui aquest codi, el nombre de vegades que s'executi? 520 00:25:18,320 --> 00:25:20,950 Vostè començarà a veure amb el temps el rendiment dels programes poden 521 00:25:20,950 --> 00:25:21,660 de fet canviaran. 522 00:25:21,660 --> 00:25:24,110 >> De fet, un dels problemes conjunts que hem fet en anys anteriors implica 523 00:25:24,110 --> 00:25:27,600 implementació, com es recordarà de setmana zero, un corrector ortogràfic, sinó una 524 00:25:27,600 --> 00:25:31,380 Corrector ortogràfic que està dissenyat per suportar un diccionari de més de 150.000 525 00:25:31,380 --> 00:25:32,860 paraules que li donem nois. 526 00:25:32,860 --> 00:25:37,100 Vostè hauria d'escriure el codi que es carrega aquestes paraules en la memòria RAM, així que en 527 00:25:37,100 --> 00:25:40,700 caixes, com vam veure en la pantalla d'un moment enrere, i després el més ràpid que 528 00:25:40,700 --> 00:25:43,740 pot, vostè ha de ser capaç de respondre a una qüestió de la forma, és la paraula 529 00:25:43,740 --> 00:25:44,280 mal escrita? 530 00:25:44,280 --> 00:25:45,420 És la paraula mal escrita? 531 00:25:45,420 --> 00:25:46,770 És la paraula mal escrita? 532 00:25:46,770 --> 00:25:49,525 >> I en una cosa així el que hem fet en anys anteriors es va convertir en, 533 00:25:49,525 --> 00:25:53,500 encara que en un opt-en forma opcional, 1 la competència de les classes, de manera que el 534 00:25:53,500 --> 00:25:59,470 els estudiants que utilitzen el menys RAM i menys temps, menys cicles de CPU, acaben 535 00:25:59,470 --> 00:26:02,640 bombolles fins a la part superior d'un petit taula de classificació o rànquing que ens posem 536 00:26:02,640 --> 00:26:04,770 pàgina d'inici del curs, ja que hem fet en anys anteriors. 537 00:26:04,770 --> 00:26:08,100 Així que de nou, totalment opcional, però això parla de les oportunitats de disseny 538 00:26:08,100 --> 00:26:11,250 que per davant un cop que vam començar la construcció del cim d'alguns d'aquests 539 00:26:11,250 --> 00:26:14,010 blocs de construcció bàsics. 540 00:26:14,010 --> 00:26:16,780 >> Així que permetin-me tornar a aquest diagrama per un moment i mostrar una mica de 541 00:26:16,780 --> 00:26:17,610 una mica més. 542 00:26:17,610 --> 00:26:21,400 De fet, això és una cadena, i hem pres avantatge d'unes poques biblioteques, 543 00:26:21,400 --> 00:26:25,150 io.h norma que té - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, entre altres coses. 546 00:26:27,860 --> 00:26:31,540 cs50.h, que ha aconseguir int i obtenir string i així successivament, string.h, el qual 547 00:26:31,540 --> 00:26:32,570 tingut str lleng. 548 00:26:32,570 --> 00:26:34,800 Però resulta que encara hi ha un altre. 549 00:26:34,800 --> 00:26:38,540 Francament, hi ha munts i munts de capçalera arxius que declaren funcions 550 00:26:38,540 --> 00:26:43,320 per a les biblioteques, però això és ctype.h en realitat serà una cosa 551 00:26:43,320 --> 00:26:46,900 avantatjosa perquè vaig seguir endavant i posar en pràctica una 552 00:26:46,900 --> 00:26:48,120 altre programa aquí. 553 00:26:48,120 --> 00:26:52,420 >> Déjame anar per davant i obrir una mica Vaig escriure abans anomenat 554 00:26:52,420 --> 00:26:55,750 capitalize.c i tirem una ullada a com funciona això. 555 00:26:55,750 --> 00:27:00,340 Tingueu en compte que estic fent servir, en aquesta versió d'ella, tres arxius familiars. 556 00:27:00,340 --> 00:27:04,110 Tingueu en compte que en la línia 18, que sóc obtenir una línia de text. 557 00:27:04,110 --> 00:27:07,660 Observeu en la línia 21, estic afirmant que el codi següent es va a 558 00:27:07,660 --> 00:27:12,170 capitalitzar s, el que l'usuari escriu , I com faig això? 559 00:27:12,170 --> 00:27:13,300 Bé, jo estic prenent - 560 00:27:13,300 --> 00:27:14,750 aprendre la lliçó de l'última vegada - 561 00:27:14,750 --> 00:27:18,370 Estic declarant i i n i la iteració sobre els caràcters de la cadena. 562 00:27:18,370 --> 00:27:22,720 I llavors, què és aquest bloc de codi a la línia 24 fins al 27 de 563 00:27:22,720 --> 00:27:24,550 fent en termes senzills? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Canviar a minúscula carta de tornada. 566 00:27:29,730 --> 00:27:30,430 >> Exactament. 567 00:27:30,430 --> 00:27:35,920 Si s suport d'i - pel que si la i-èsima caràcter de s, que és una específica 568 00:27:35,920 --> 00:27:40,220 caràcters en la cadena, és més gran que o igual a minúscules ai - 569 00:27:40,220 --> 00:27:42,670 recordar que el signe doble significar i - 570 00:27:42,670 --> 00:27:46,810 i el mateix caràcter, s suport de i, és menys de o igual a minúscules z, 571 00:27:46,810 --> 00:27:50,600 això vol dir que és un b o o a a c o punt, punt, punt, o un z, el que significa 572 00:27:50,600 --> 00:27:51,340 és minúscula. 573 00:27:51,340 --> 00:27:52,900 Què és el que vull fer en aquest cas? 574 00:27:52,900 --> 00:27:55,010 Bé, jo puc fer això d'alguna manera crípticament, però 575 00:27:55,010 --> 00:27:56,160 anem burlen d'aquesta separació. 576 00:27:56,160 --> 00:28:00,210 >> Vaig a trucar a printf, imprimeix% c perquè vull fer ús d'aquest 577 00:28:00,210 --> 00:28:01,580 caràcter en la pantalla. 578 00:28:01,580 --> 00:28:06,650 Després vaig a prendre s suport i, la i-èsim caràcter de s, i llavors per què 579 00:28:06,650 --> 00:28:12,330 estic fent aquest petit truc, minúscules a una capital menys? 580 00:28:12,330 --> 00:28:16,352 El que és que va a donar jo, en termes generals? 581 00:28:16,352 --> 00:28:18,600 >> [Inaudible]. 582 00:28:18,600 --> 00:28:19,390 >> Exactament. 583 00:28:19,390 --> 00:28:20,860 Jo no recordo - 584 00:28:20,860 --> 00:28:24,390 era 65 per al capital A. En realitat no em Recorda el minúscula és a dir, 585 00:28:24,390 --> 00:28:25,540 però no importa. 586 00:28:25,540 --> 00:28:26,580 L'ordinador sap. 587 00:28:26,580 --> 00:28:30,380 Així dient, minúscules a menys A majúscula, és estrany que 588 00:28:30,380 --> 00:28:33,530 restar una xerrada d'un altre, però Quins són caràcters sota la campana? 589 00:28:33,530 --> 00:28:34,520 No són més que números. 590 00:28:34,520 --> 00:28:36,980 Així que el que aquests números són, deixar que l'ordinador recordi que 591 00:28:36,980 --> 00:28:38,240 i no m'ho humà. 592 00:28:38,240 --> 00:28:41,710 >> Així minúscules un capital menys A és em va a donar la diferència. 593 00:28:41,710 --> 00:28:45,370 Li passa a ser 32, i que seria el cas de la b minúscula i majúscula B 594 00:28:45,370 --> 00:28:45,930 i així successivament. 595 00:28:45,930 --> 00:28:47,710 Es manté constant, gràcies a Déu. 596 00:28:47,710 --> 00:28:51,930 Així que estic dient bàsicament, prendre el lletra minúscula, restar que 597 00:28:51,930 --> 00:28:55,340 diferència estàndard, i que eficaçment els canvis s suport d'i des 598 00:28:55,340 --> 00:28:59,400 minúscules, per descomptat, en majúscules, sense que jo realment haver de pensar 599 00:28:59,400 --> 00:29:03,040 sobre o recordar, quins van ser els números dels quals parlem sobre quan els vuit 600 00:29:03,040 --> 00:29:04,800 voluntaris van pujar a l'escenari? 601 00:29:04,800 --> 00:29:08,800 Ara, mentrestant, en l'altre, si no és una lletra minúscula segons ho determini 602 00:29:08,800 --> 00:29:10,400 per la línia 24, a imprimir-lo. 603 00:29:10,400 --> 00:29:12,590 Jo només vull tocar el caràcters que eren 604 00:29:12,590 --> 00:29:14,410 fet originalment minúscules. 605 00:29:14,410 --> 00:29:15,150 >> Així que anem a veure això. 606 00:29:15,150 --> 00:29:17,400 Assegureu-vos d'aprofitar. 607 00:29:17,400 --> 00:29:18,470 Compilat, OK. 608 00:29:18,470 --> 00:29:19,730 . / Profit. 609 00:29:19,730 --> 00:29:23,530 I permetin-me escric en H-I-L-L-O en minúscules, Retorn. 610 00:29:23,530 --> 00:29:26,370 I es va adonar que esdevé en majúscules. 611 00:29:26,370 --> 00:29:27,940 Déjame fer això de nou amb una paraula diferent. 612 00:29:27,940 --> 00:29:32,720 Què hi ha de D-A-V-I-D amb la primera D capitalitzats com un nom típicament és? 613 00:29:32,720 --> 00:29:33,560 Intro. 614 00:29:33,560 --> 00:29:34,870 Observeu que segueix sent correcta. 615 00:29:34,870 --> 00:29:40,250 Només emet la primera sense canvis D que a través d'una altra construcció. 616 00:29:40,250 --> 00:29:42,170 >> Així que tingui en compte, doncs, una parell de coses aquí. 617 00:29:42,170 --> 00:29:45,060 Un, si mai voleu comprovar dues condicions alhora, es pot i ells 618 00:29:45,060 --> 00:29:46,500 junts com ho havíem previst. 619 00:29:46,500 --> 00:29:49,900 Pot comparar els caràcters d'aquesta manera i tractar eficaçment caràcters com 620 00:29:49,900 --> 00:29:53,050 números, però, francament, això és tan condemnadament críptic que mai vaig a recordar 621 00:29:53,050 --> 00:29:56,510 com arribar a aquest des de zero sense raonar a través d'ell durant força 622 00:29:56,510 --> 00:29:57,140 una mica de temps. 623 00:29:57,140 --> 00:30:00,590 >> ¿No hauria estat agradable si algú allí va escriure una funció anomenada és 624 00:30:00,590 --> 00:30:05,390 un menor que podria respondre per mi veritable o fals, aquest personatge és minúscula? 625 00:30:05,390 --> 00:30:09,350 Bé, gràcies a Déu, qui va escriure ctype.h va fer exactament això. 626 00:30:09,350 --> 00:30:15,540 Déjame anar aquí i afegir ctype per c tipus, i ara me n'aniré aquí i 627 00:30:15,540 --> 00:30:18,820 reescriure aquesta línia com segueix. 628 00:30:18,820 --> 00:30:27,510 >> Així que si es diu és menor, reclam, s suport de i, llavors vaig a esborrar 629 00:30:27,510 --> 00:30:29,400 aquestes dues línies en total. 630 00:30:29,400 --> 00:30:32,570 Així que ara algú més, estic esperant, va escriure una funció anomenada és més baix, i 631 00:30:32,570 --> 00:30:36,250 Resulta que ho van fer i van ser reunits dins ctype.h. 632 00:30:36,250 --> 00:30:39,480 I ara vaig a sortir de la línia 27 sol, vaig a sortir de la línia 31 633 00:30:39,480 --> 00:30:41,890 sol, però vaig notar el que he reforçat el meu codi. 634 00:30:41,890 --> 00:30:42,690 Ara és més net. 635 00:30:42,690 --> 00:30:47,250 És menys difícil de veure a través de perquè ara la funció, per altra banda, és 636 00:30:47,250 --> 00:30:50,080 tan meravellosament nomenat només fa el que diu. 637 00:30:50,080 --> 00:30:51,520 >> Així que ara vaig a guardar això. 638 00:30:51,520 --> 00:30:52,930 Me'n vaig a allunyar el zoom. 639 00:30:52,930 --> 00:30:56,650 I igual que en scratch que podria tenir Booleans, valors booleans true o 640 00:30:56,650 --> 00:31:01,530 fals, això és exactament el que és reduir eficaçment devolucions. 641 00:31:01,530 --> 00:31:02,960 Déjame a compilar. 642 00:31:02,960 --> 00:31:04,500 Déjame tornar a executar. 643 00:31:04,500 --> 00:31:07,350 I ara anem a intentar-ho de nou, H-I-L-L-O, Enter. 644 00:31:07,350 --> 00:31:07,970 Això és bastant bo. 645 00:31:07,970 --> 00:31:10,150 I tractar de nou, assegureu-vos que no arruïnar una mica. 646 00:31:10,150 --> 00:31:11,670 S'activa com així. 647 00:31:11,670 --> 00:31:14,190 >> Però això no és suficient ja que el Una altra cosa que jo mai vaig a 648 00:31:14,190 --> 00:31:19,090 recordi a menys que treballi a través del que realment acuradament sobre, per exemple, el paper és 649 00:31:19,090 --> 00:31:19,920 aquesta línia maleïda. 650 00:31:19,920 --> 00:31:23,450 ¿No seria agradable si hi havia una funció crida a la part superior? 651 00:31:23,450 --> 00:31:26,930 Doncs resulta que hi ha és a ctype.h així. 652 00:31:26,930 --> 00:31:30,150 Vaig a seguir endavant i escriure - 653 00:31:30,150 --> 00:31:31,340 permetin-me portar aquesta línia de fons. 654 00:31:31,340 --> 00:31:36,430 En lloc d'això aquí, que em deixi anar per davant i dir, substituir el% c de l' 655 00:31:36,430 --> 00:31:42,110 resultat de cridar a aquesta funció per superior en l'i-èsim caràcter de s. 656 00:31:42,110 --> 00:31:45,430 I ara es va adonar que s'està fent una mica equilibrat. 657 00:31:45,430 --> 00:31:48,870 He de portar un registre de quantes parèntesi, he obert i tancat. 658 00:31:48,870 --> 00:31:50,050 >> Així que ara és encara més net. 659 00:31:50,050 --> 00:31:53,460 Ara bé, aquest programa està cada vegada millor i millor dissenyats possiblement perquè és 660 00:31:53,460 --> 00:31:56,450 molt, molt més fàcil de llegir, però no és que anem a corregir. 661 00:31:56,450 --> 00:31:57,600 Assegureu-vos d'aprofitar. 662 00:31:57,600 --> 00:31:58,930 . / Profit. 663 00:31:58,930 --> 00:32:03,220 H-I-L-L-O. Anem a córrer de nou, D-A-V-I-D. Acceptar, de manera que encara estem en 664 00:32:03,220 --> 00:32:04,250 forma bastant bo. 665 00:32:04,250 --> 00:32:06,030 >> Però ara a la part superior. 666 00:32:06,030 --> 00:32:09,720 Proposo que hi ha una major refinament podríem fer això seria 667 00:32:09,720 --> 00:32:12,820 molt agradable, que realment podria estrènyer fins aquest codi i realment ens donen cinc 668 00:32:12,820 --> 00:32:15,150 de cada cinc per al disseny, per exemple. 669 00:32:15,150 --> 00:32:16,510 El que seria bo per desfer-? 670 00:32:16,510 --> 00:32:20,770 Bé, mira el maleïdament llarg d'aquest bloc de codi és només per fer alguna cosa simple. 671 00:32:20,770 --> 00:32:23,850 >> Ara, en un apart, ja que podria tenir vist en l'article fantàstic, el passat 672 00:32:23,850 --> 00:32:27,570 cap de setmana, no cal estrictament el claus en els que tenen una 673 00:32:27,570 --> 00:32:32,180 línia de codi, tot i que hem proposat mantenir perquè faci molt 674 00:32:32,180 --> 00:32:36,190 més clar, com en forma d'U de zero blocs, el que està dins de la sucursal. 675 00:32:36,190 --> 00:32:40,170 Però no seria bo si a la part superior, quan se'ls dóna la seva entrada, el va convertir en 676 00:32:40,170 --> 00:32:44,730 majúscules, si no ho és, i el que faria ser meravellós en el cas contrari, si 677 00:32:44,730 --> 00:32:47,210 ja està en majúscules? 678 00:32:47,210 --> 00:32:49,620 Només ha de passar a través de i deixar-lo sol. 679 00:32:49,620 --> 00:32:50,660 >> Així que potser ho fa. 680 00:32:50,660 --> 00:32:52,990 Podria intentar-ho i només espero que no, però em va deixar 681 00:32:52,990 --> 00:32:54,450 introduir una cosa més. 682 00:32:54,450 --> 00:32:57,440 En lloc d'utilitzar aquesta funció de terminal de finestra d'aquí baix, recordem que 683 00:32:57,440 --> 00:33:01,130 aquesta icona quadrat negre li dóna un finestra de terminal més gran que puc Complet 684 00:33:01,130 --> 00:33:02,260 pantalla si vull? 685 00:33:02,260 --> 00:33:05,820 Així que resulta que són una mena d'estranya nomenat, però hi ha aquestes coses anomenades 686 00:33:05,820 --> 00:33:10,970 pàgines de manual, pàgines de manual, home, per abreujar, i puc accedir-hi 687 00:33:10,970 --> 00:33:14,515 escrivint man - 688 00:33:14,515 --> 00:33:15,570 ¿Què vol escriure? 689 00:33:15,570 --> 00:33:17,830 Home de superior. 690 00:33:17,830 --> 00:33:21,090 >> I ara compte si hi ha un funcionar a l'interior de l'ordinador, en 691 00:33:21,090 --> 00:33:23,970 aquest cas l'aparell, que es troba el sistema operatiu Linux, que va 692 00:33:23,970 --> 00:33:27,920 per donar-me un conjunt una mica críptica de de sortida, però trobarà amb el temps que 693 00:33:27,920 --> 00:33:31,720 sempre té un format més o menys la mateixa de manera que començar a acostumar-se a ell. 694 00:33:31,720 --> 00:33:35,130 Fixeu-vos en la part superior a la part superior, i aparentment és la mateixa documentació 695 00:33:35,130 --> 00:33:35,680 per baixar. 696 00:33:35,680 --> 00:33:38,740 Qui va escriure que estava retallant alguns cantonades i posar tot en una pàgina. 697 00:33:38,740 --> 00:33:40,720 Aquests efectes coses 'a la vida és la de convertir una 698 00:33:40,720 --> 00:33:42,780 carta a majúscules o minúscules. 699 00:33:42,780 --> 00:33:46,290 >> Observeu que sota Sinopsi, la pàgina de manual m'està ensenyant un arxiu tinc 700 00:33:46,290 --> 00:33:48,130 per incloure a fer servir aquesta cosa. 701 00:33:48,130 --> 00:33:51,320 M'està donant a les firmes per a aquests funcions, tant d'ells, fins i tot 702 00:33:51,320 --> 00:33:53,510 tot i que en aquest moment només es preocupen per un. 703 00:33:53,510 --> 00:33:54,730 Heus aquí ara una descripció. 704 00:33:54,730 --> 00:33:58,800 Per UPPER converteix la lletra c a majúscules si és possible. 705 00:33:58,800 --> 00:34:02,280 >> Encara no és tan instructiva, però m'ho dius a mi Ara miri sota de valor de retorn, el 706 00:34:02,280 --> 00:34:03,520 això és tornar. 707 00:34:03,520 --> 00:34:08,600 Per tant el valor retornat és el de la carta o c convertida si l' 708 00:34:08,600 --> 00:34:09,870 conversió no era possible. 709 00:34:09,870 --> 00:34:11,202 Què és el c? 710 00:34:11,202 --> 00:34:12,560 >> El caràcter original. 711 00:34:12,560 --> 00:34:15,370 >> El caràcter original i sabem que per, de nou, pujant a la 712 00:34:15,370 --> 00:34:19,179 sinopsi, i el que va escriure això funció acaba de decidir que l'entrada 713 00:34:19,179 --> 00:34:22,909 que a la part superior i més baixa és només arbitràriament va a cridar c. 714 00:34:22,909 --> 00:34:24,909 Es podria haver cridat més res que vulguin, però el van mantenir en 715 00:34:24,909 --> 00:34:26,270 simple com c. 716 00:34:26,270 --> 00:34:27,880 Així que he consultat la pàgina de manual. 717 00:34:27,880 --> 00:34:31,870 Aquesta frase m'assegura que si que no és una lletra minúscula, és 718 00:34:31,870 --> 00:34:34,969 va a donar-me volta c, que és perfecte, el que significa que pot desfer- 719 00:34:34,969 --> 00:34:36,199 la meva condició de persona. 720 00:34:36,199 --> 00:34:39,679 >> Així que em torno a gedit, i Ara m'ho dius fer això. 721 00:34:39,679 --> 00:34:41,960 Vaig a copiar la meva sentència printf. 722 00:34:41,960 --> 00:34:45,969 Vaig a seguir endavant i la dreta a l'interior la impressió de bucle que fos, i obtenir 723 00:34:45,969 --> 00:34:48,760 Desfés-te d'ara aquest conjunt si constructe. 724 00:34:48,760 --> 00:34:51,860 No era una mala idea, i era molt més correcta i coherent amb 725 00:34:51,860 --> 00:34:54,100 tot el que hem predicat, però no és necessari. 726 00:34:54,100 --> 00:34:57,070 Tan aviat com t'adones d'alguna biblioteca funció que existeix algú més 727 00:34:57,070 --> 00:35:01,340 escriure, o potser vostè va escriure en un altre lloc l'arxiu, es pot usar i realment 728 00:35:01,340 --> 00:35:02,690 començar a endurir el codi. 729 00:35:02,690 --> 00:35:06,080 >> I quan dic coses com bon estil, el fet que aquesta persona que es denominarà 730 00:35:06,080 --> 00:35:11,490 funcionar a la part superior, o prèviament menor és meravellosament útil perquè 731 00:35:11,490 --> 00:35:12,900 que són molt descriptius. 732 00:35:12,900 --> 00:35:16,120 No vol cridar a les seves funcions x i y i z, que tenen 733 00:35:16,120 --> 00:35:19,620 molt, molt menys significat. 734 00:35:19,620 --> 00:35:25,160 Teniu preguntes sobre la sèrie de millores? 735 00:35:25,160 --> 00:35:28,010 >> Així que només cal dir una de les menjar per emportar és com el vostre propi problema 736 00:35:28,010 --> 00:35:30,960 conjunt - potser un problema conjunt, però Certament P va fixar dos en endavant, fins i tot 737 00:35:30,960 --> 00:35:34,380 quan són correctes no necessàriament vol dir que siguin perfectes només 738 00:35:34,380 --> 00:35:36,155 però, o particularment ben dissenyada. 739 00:35:36,155 --> 00:35:38,420 Aquest és l'altre eix de començar a pensar. 740 00:35:38,420 --> 00:35:41,730 Així que això era una cadena dins de la seva la memòria de l'ordinador, però si vostè té un 741 00:35:41,730 --> 00:35:46,180 manat sencer de personatges com l'H-I-L-L-O interior de RAM, i suposem 742 00:35:46,180 --> 00:35:51,330 que al seu programa crida a aconseguir string diverses vegades de manera que vostè 743 00:35:51,330 --> 00:35:54,200 trucar a obtenir una cadena, llavors trucar a obtenir string nou. 744 00:35:54,200 --> 00:35:55,880 Bé, el que va a passar el temps? 745 00:35:55,880 --> 00:35:59,170 >> En altres paraules, si vostè té una línia de codi, encara que fora de context, com 746 00:35:59,170 --> 00:36:02,120 string s aconsegueix - 747 00:36:02,120 --> 00:36:02,960 Farem això. 748 00:36:02,960 --> 00:36:05,270 String nom és igual a tenir cadena. 749 00:36:05,270 --> 00:36:08,590 Així que suposo que la línia de codi està destinat preguntar a l'usuari pel seu nom. 750 00:36:08,590 --> 00:36:14,580 La següent línia de codi té la intenció de demanar l'usuari de la seva escola, i 751 00:36:14,580 --> 00:36:15,920 aquesta línia següent, i així successivament. 752 00:36:15,920 --> 00:36:18,150 Suposem que seguim demanant l'usuari per a un altre i 753 00:36:18,150 --> 00:36:19,750 altra, i una altra cadena. 754 00:36:19,750 --> 00:36:22,390 Ells van a romandre en la memòria al mateix temps. 755 00:36:22,390 --> 00:36:24,280 Un no va a donar-li una pallissa a l'altre. 756 00:36:24,280 --> 00:36:26,420 L'escola no es sobreescriu l'altre. 757 00:36:26,420 --> 00:36:28,520 Però quan ho fan tots acabar en la memòria? 758 00:36:28,520 --> 00:36:32,030 >> Bé, si ens posem a dibuixar a la pantalla, que podem fer servir aquesta cosa 759 00:36:32,030 --> 00:36:35,800 aquí, com una pissarra, si aquest negre rectangle representa l'ordinador de 760 00:36:35,800 --> 00:36:39,800 memòria, vaig a començar arbitràriament dividir en petits quadrats, 761 00:36:39,800 --> 00:36:42,120 cadascun dels quals representa un byte de la memòria. 762 00:36:42,120 --> 00:36:46,560 Francament, si vostè té un gigabyte de RAM en aquests dies, vostè té un bilió de bytes 763 00:36:46,560 --> 00:36:49,540 de la memòria en el seu ordinador, per la qual cosa 1000000000 d'aquestes places. 764 00:36:49,540 --> 00:36:52,110 Així que només cal dir que aquesta en realitat no és a escala. 765 00:36:52,110 --> 00:36:58,250 >> Però podríem seguir dibuixant tot això clarament no és a escala quadrats, i aquesta 766 00:36:58,250 --> 00:37:01,260 representa col · lectivament la memòria del meu ordinador. 767 00:37:01,260 --> 00:37:03,136 Ara només haurem de fer punt, punt, punt. 768 00:37:03,136 --> 00:37:06,260 En altres paraules, quan ara el símbol de l' usuari amb una corda get em donés un 769 00:37:06,260 --> 00:37:07,350 corda, què passa? 770 00:37:07,350 --> 00:37:14,270 Si l'usuari escriu a "hola", que acaba en H-I-L-L-O. Però suposem que el 771 00:37:14,270 --> 00:37:15,720 llavors l'usuari tipus en - 772 00:37:15,720 --> 00:37:17,250 En realitat, no hauria d'haver fet hola ja estem demanant 773 00:37:17,250 --> 00:37:18,330 ells pels seus noms. 774 00:37:18,330 --> 00:37:20,580 Així que anem a tornar si puc fer això. 775 00:37:20,580 --> 00:37:26,130 >> Així que si escric en D-A-V-I-D al meu nom, però recordar que la segona línia de 776 00:37:26,130 --> 00:37:29,220 codi de cadena s'aconsegueix de nou per arribar a la seva escola. 777 00:37:29,220 --> 00:37:32,090 On és la paraula que l'usuari tipus a anar a anar ara? 778 00:37:32,090 --> 00:37:38,290 Bé, potser anirà a H-A-R-V-A-R-D. Així que, encara que no tinc 779 00:37:38,290 --> 00:37:41,560 dibuixat com dues files, això és només un munt de bytes al 780 00:37:41,560 --> 00:37:42,710 RAM de l'ordinador. 781 00:37:42,710 --> 00:37:46,560 Hi ha un problema ara, perquè ara si estic l'ús de memòria RAM en aquest molt raonable 782 00:37:46,560 --> 00:37:49,910 però alguna cosa de manera ingènua, què es pot aparentment no distingir? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Quan un comença i on acaba un, oi? 785 00:37:54,680 --> 00:37:55,860 Són una espècie de desenfocament junts. 786 00:37:55,860 --> 00:37:57,920 >> Així que resulta que l'equip no fa això. 787 00:37:57,920 --> 00:38:04,720 Déjame realitat retrocedir en el temps a pocs caràcters, i en lloc de Harvard 788 00:38:04,720 --> 00:38:09,570 anar immediatament després del nom de l'usuari, l'usuari obté en realitat, darrere de 789 00:38:09,570 --> 00:38:12,000 les escenes, un caràcter especial introduït per la 790 00:38:12,000 --> 00:38:13,885 equip per a ell o ella. 791 00:38:13,885 --> 00:38:19,470 / 0, també conegut com el caràcter nul molest anomenat N-O-L, no 792 00:38:19,470 --> 00:38:22,190 N-O-L-L, però s'escriu com / 0. 793 00:38:22,190 --> 00:38:27,130 És que tots els bits zero és un marcador de entre la primera paraula que l'usuari 794 00:38:27,130 --> 00:38:28,290 escrit i la segona. 795 00:38:28,290 --> 00:38:33,020 >> Així Harvard realitat ara acaba com aquesta seqüència de caràcters 796 00:38:33,020 --> 00:38:36,110 i un més / 0. 797 00:38:36,110 --> 00:38:41,690 Així, en altres paraules, al tenir aquests valors de sentinella, vuit zero contigua 798 00:38:41,690 --> 00:38:45,220 trossos, ara pot començar a distingir un personatge d'un altre. 799 00:38:45,220 --> 00:38:49,720 Així que tot aquest temps el que estava "hello" és realitat "hola" amb un / 0, i 800 00:38:49,720 --> 00:38:53,580 Mentrestant, no molt bé podria ser una mica més RAM 801 00:38:53,580 --> 00:38:56,400 a l'interior de l'ordinador. 802 00:38:56,400 --> 00:38:57,810 >> Déjame fer una altra cosa. 803 00:38:57,810 --> 00:39:01,800 Resulta que tots aquests quadrats hem vingut assenyalant, que són, sí, 804 00:39:01,800 --> 00:39:06,140 cadenes, però més en general, aquestes coses són arrays. 805 00:39:06,140 --> 00:39:10,590 Una matriu és simplement un tros de memòria això és tornar a l'esquena amb esquena amb esquena, 806 00:39:10,590 --> 00:39:15,130 i normalment s'utilitza una matriu per mitjà d'aquesta notació de claudàtors. 807 00:39:15,130 --> 00:39:18,210 Així que anem a veure a aquests una mica amb el temps, però m'ho dius a mi seguir endavant i 808 00:39:18,210 --> 00:39:21,160 obrir, anem a anomenar edats. 809 00:39:21,160 --> 00:39:23,920 I fixin-se el que podem fer amb aquests mateixos trucs, una mica 810 00:39:23,920 --> 00:39:25,750 poc més de la sintaxi aquí. 811 00:39:25,750 --> 00:39:29,270 >> Així, en la línia 17 d'aquest programa - En realitat, vull córrer el programa primer 812 00:39:29,270 --> 00:39:30,770 perquè puguem veure el que fa aquesta cosa. 813 00:39:30,770 --> 00:39:33,530 Vaig a trucar a prendre les edats per compilar aquest programa. 814 00:39:33,530 --> 00:39:34,950 . / Edats. 815 00:39:34,950 --> 00:39:36,480 Quantes persones hi ha a l'habitació? 816 00:39:36,480 --> 00:39:38,020 Diguem que és tres. 817 00:39:38,020 --> 00:39:39,575 Edat de la primera persona? 818 00:39:39,575 --> 00:39:42,710 18, 19, i 20. 819 00:39:42,710 --> 00:39:46,770 I ara una mica ridícul, només han fet un programa que les edats de les persones 820 00:39:46,770 --> 00:39:47,740 3 persones. 821 00:39:47,740 --> 00:39:50,390 >> Així que hi ha clarament una oportunitat per alguna aritmètica diversió aquí. 822 00:39:50,390 --> 00:39:51,560 Afortunadament, la matemàtica és correcta. 823 00:39:51,560 --> 00:39:54,720 18 van ser a 19, 19 van ser a 20 i així successivament. 824 00:39:54,720 --> 00:39:58,510 Però el que realment significa ser il · lustrativa aquí és com ho estem emmagatzemant 825 00:39:58,510 --> 00:40:00,190 edats aquestes tres persones. 826 00:40:00,190 --> 00:40:02,370 Permetin-me ampliar des del que és passant aquí. 827 00:40:02,370 --> 00:40:06,240 >> Així que en primer lloc, aquestes primeres línies han estar rebent molt familiar. 828 00:40:06,240 --> 00:40:08,770 Només estic preguntant a l'usuari la nombre de persones a l'habitació. 829 00:40:08,770 --> 00:40:11,490 Llavors estic fent servir arribar int i fer temps per fer això una i altra vegada i una altra. 830 00:40:11,490 --> 00:40:15,780 Hem vist que el model anterior, però línia 27 és nou i bastant 831 00:40:15,780 --> 00:40:18,160 útil, i es convertirà en cada vegada més útil. 832 00:40:18,160 --> 00:40:21,620 Tingueu en compte que el que és diferent en la línia 27 és que em sembla que hagi declarat un 833 00:40:21,620 --> 00:40:23,960 int anomenats edats, però espera. 834 00:40:23,960 --> 00:40:27,140 No són només les edats int. 835 00:40:27,140 --> 00:40:30,130 Hi ha aquests claudàtors, dins del qual és n. 836 00:40:30,130 --> 00:40:35,150 >> Així el suport de n en aquest context, no dins d'una instrucció printf aquí, però 837 00:40:35,150 --> 00:40:44,370 en aquesta única línia 27, aquesta línia és dient: em n sencers donen, cadascuna d'elles 838 00:40:44,370 --> 00:40:46,080 és de tipus int. 839 00:40:46,080 --> 00:40:49,870 Així que aquest és un cub, per així dir-ho, de, en aquest cas, tres enters de nou a 840 00:40:49,870 --> 00:40:52,770 esquena amb esquena perquè efectivament tenir tres variables. 841 00:40:52,770 --> 00:40:54,890 L'alternativa, per a ser clar, seria això. 842 00:40:54,890 --> 00:40:57,400 >> Si volgués de la primera estudiant edat, podria fer això. 843 00:40:57,400 --> 00:40:59,520 Si volgués de l'estudiant de segon edat que podria fer això. 844 00:40:59,520 --> 00:41:01,860 Si volgués de l'estudiant de tercer edat, podria fer això. 845 00:41:01,860 --> 00:41:04,320 I Déu no ho vulgui que necessitem de tots edat en aquesta sala - 846 00:41:04,320 --> 00:41:07,670 Vull dir, aquesta és una diables d'un munt d'espai, pega una i altra vegada i una altra. 847 00:41:07,670 --> 00:41:10,870 I un cop més puc compilar aquest programa, si un altre estudiant camina a terme en més de 848 00:41:10,870 --> 00:41:14,200 d'aquesta porta, ara el meu número de variables és incorrecta. 849 00:41:14,200 --> 00:41:17,450 >> Així el bo d'una matriu és com abans de començar a sentir-se a si mateix 850 00:41:17,450 --> 00:41:20,190 copiar i enganxar, les probabilitats són que és no és el millor enfocament. 851 00:41:20,190 --> 00:41:22,240 Una matriu és dinàmica potencialment. 852 00:41:22,240 --> 00:41:24,610 No sé per endavant quantes persones estaran a la sala, 853 00:41:24,610 --> 00:41:28,670 però sí que sé que necessito n d'ells, i jo esbrinar n quan arribi el moment. 854 00:41:28,670 --> 00:41:35,500 Aquesta línia de codi significa que ara, dóna'm un tros de memòria que té aquest aspecte 855 00:41:35,500 --> 00:41:40,380 on el nombre de caixes a la pantalla és totalment dependent de n que 856 00:41:40,380 --> 00:41:42,010 l'usuari va escriure polz 857 00:41:42,010 --> 00:41:44,850 >> Així que ara la resta d'aquest programa és En realitat és bastant similar al que 858 00:41:44,850 --> 00:41:46,860 acabo de fer amb els personatges. 859 00:41:46,860 --> 00:41:49,970 Fixa't que tinc un bucle comença en la línia 30. 860 00:41:49,970 --> 00:41:54,920 Així que just després d'obtenir la matriu, que iteració de i és igual a zero en un màxim de n. 861 00:41:54,920 --> 00:41:58,890 Només tinc aquest instructiu printf missatge que acaba de dir, em fa l'edat 862 00:41:58,890 --> 00:42:03,690 de la persona #% I, pel que el número u, número dos, nombre tres. 863 00:42:03,690 --> 00:42:04,730 ¿I per què faig això? 864 00:42:04,730 --> 00:42:08,870 Francament, els éssers humans prefereixen comptar d'un pujant mentre que els informàtics, 865 00:42:08,870 --> 00:42:09,620 zero en endavant. 866 00:42:09,620 --> 00:42:11,700 els informàtics no van utilitzar aquest tipus de programes, pel que estem 867 00:42:11,700 --> 00:42:13,990 va tot just comença a comptar a l'una com la gent normal. 868 00:42:13,990 --> 00:42:17,630 >> I ara, en la línia 33, observi el poc peça diferent de la sintaxi. 869 00:42:17,630 --> 00:42:23,710 L'i-èsim edat en què la variable de tipus matriu es va a posar un int. 870 00:42:23,710 --> 00:42:25,770 I ara, finalment, això és només aritmètica aquí. 871 00:42:25,770 --> 00:42:29,200 Vaig decidir en un circuit separat per reclamar passa algun temps, i ara en aquesta 872 00:42:29,200 --> 00:42:31,400 loop independent, aquestes línies executar. 873 00:42:31,400 --> 00:42:35,810 >> Dins d'un any, persona seré jo anys d'edat, de notar que això no és el 874 00:42:35,810 --> 00:42:36,500 la variable i. 875 00:42:36,500 --> 00:42:38,390 Això és ara% i per int. 876 00:42:38,390 --> 00:42:43,210 I noti que el primer marcador de posició, que connecti i + 1, pel que conta com una 877 00:42:43,210 --> 00:42:44,250 persona normal. 878 00:42:44,250 --> 00:42:49,190 I després pel valor de la seva edat, per i anys d'edat, em prenc les edats suport 879 00:42:49,190 --> 00:42:52,980 i - i per què estic fent més un aquí? 880 00:42:52,980 --> 00:42:53,760 Simplement edat. 881 00:42:53,760 --> 00:42:55,030 És la meva estúpida elecció dels programes. 882 00:42:55,030 --> 00:42:56,810 Acaben d'entre un any. 883 00:42:56,810 --> 00:42:59,770 Podria escriure en qualsevol nombre que Jo realment vull allà. 884 00:42:59,770 --> 00:43:02,430 >> Llavors, què és en realitat tots la rellevància aquí? 885 00:43:02,430 --> 00:43:07,610 Bé, deixa realitat retrocedir aquí i pintar un quadre 886 00:43:07,610 --> 00:43:10,830 del que s'acosta. 887 00:43:10,830 --> 00:43:15,720 Què farem amb el nostre pròxim Butlletí de problemes Two està fent incursions en el 888 00:43:15,720 --> 00:43:17,070 món de la criptografia. 889 00:43:17,070 --> 00:43:22,500 Així que això és una cadena de caràcters, de manera que un seqüència de múltiples caràcters, i el que 890 00:43:22,500 --> 00:43:23,750 Què ens diu això? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 No està en la versió en línia de les diapositives. 893 00:43:30,600 --> 00:43:35,880 >> Per això afirmo que això és igual i això, un anunci estúpid de molts anys 894 00:43:35,880 --> 00:43:39,950 fa que en realitat podria recordar un dels seus orígens. 895 00:43:39,950 --> 00:43:42,740 Així que aquest és un exemple de xifrat o criptografia. 896 00:43:42,740 --> 00:43:46,150 Resulta que si vols en realitat enviar informació o compartir 897 00:43:46,150 --> 00:43:49,310 informació amb algú amb seguretat, com un missatge d'aquest tipus, es pot 898 00:43:49,310 --> 00:43:50,500 codificar les lletres. 899 00:43:50,500 --> 00:43:53,170 Però en general, les paraules són no barrejats a l'atzar. 900 00:43:53,170 --> 00:43:56,365 Ells estan permutades d'alguna manera o canviat d'alguna manera, de manera que - Ui. 901 00:43:56,365 --> 00:43:59,040 Això és un spoiler diversió per a la propera vegada. 902 00:43:59,040 --> 00:44:04,390 >> Així que vostè pot assignar el que és aparentment O a B. Tingueu en compte que s'alinea 903 00:44:04,390 --> 00:44:05,420 capitalització es refereix. 904 00:44:05,420 --> 00:44:07,960 Aparentment r esdevé i. 905 00:44:07,960 --> 00:44:14,000 Aparentment F-H-I-R es converteix en S-U-R-I. Així Resulta que hi ha una assignació, i en 906 00:44:14,000 --> 00:44:18,720 aquest cas hi ha una força estúpid mapatge si algú ha descobert? 907 00:44:18,720 --> 00:44:21,440 Això és una cosa que es diu Rot 13, Girar 13. 908 00:44:21,440 --> 00:44:24,760 És el més estúpid de xifrat mecanismes, ja que, literalment, només 909 00:44:24,760 --> 00:44:29,160 afegeix 13 a cadascuna de les cartes, estúpid en el sentit que si només 910 00:44:29,160 --> 00:44:31,890 tenir una mica de temps lliure a les mans i un llapis, o simplement creus que 911 00:44:31,890 --> 00:44:35,260 a través del seu cap, vostè podria intentar totes les possibles pujades - un, dos, 912 00:44:35,260 --> 00:44:38,470 3, punt, punt, punt, 25 a girar tot l'alfabet, i 913 00:44:38,470 --> 00:44:40,860 finalment, t'assabentaràs Quin és aquest missatge. 914 00:44:40,860 --> 00:44:43,700 Així que si vostè va fer alguna cosa com això en l'escola primària passant missatges al seu 915 00:44:43,700 --> 00:44:46,830 millor amic, si la seva escola primària mestre simplement llegir a través de la 916 00:44:46,830 --> 00:44:50,320 missatge i la força bruta de la solució, és possible que hagi arribat 917 00:44:50,320 --> 00:44:52,550 una resposta per això. 918 00:44:52,550 --> 00:44:54,970 >> Ara, per descomptat, en el món real, criptografia és més sofisticat. 919 00:44:54,970 --> 00:45:00,120 Es tracta d'un fragment de text d'un sistema informàtic que té noms d'usuari i 920 00:45:00,120 --> 00:45:03,630 contrasenyes, ja que gairebé tots els nostres ho fan, i això és el que la contrasenya pot 921 00:45:03,630 --> 00:45:07,260 veus com si s'emmagatzema en el disc conduir, però en forma encriptada. 922 00:45:07,260 --> 00:45:11,050 Això no és només una rotació de lletres, A és B i B és C. Això és 923 00:45:11,050 --> 00:45:15,620 molt més sofisticat, però utilitza el que generalment es coneix com a clau secreta 924 00:45:15,620 --> 00:45:16,690 criptografia. 925 00:45:16,690 --> 00:45:20,210 Aquesta imatge diu el següent història amb algunes icones. 926 00:45:20,210 --> 00:45:22,250 >> A l'esquerra, tenim el que anem a trucar a text sense format. 927 00:45:22,250 --> 00:45:25,420 En el món de la criptografia, simple text és el missatge original 928 00:45:25,420 --> 00:45:29,050 escrit en anglès o francès o qualsevol que sigui la llengua. 929 00:45:29,050 --> 00:45:32,405 Per xifrar, passarem l'il · lustrat a través d'un cadenat, per la 930 00:45:32,405 --> 00:45:35,580 algun tipus d'algorisme de, alguna funció o programa que algú va escriure 931 00:45:35,580 --> 00:45:39,880 que regira les cartes amb sort més complicadament que simplement afegir 13 932 00:45:39,880 --> 00:45:40,980 per a cada un d'ells. 933 00:45:40,980 --> 00:45:43,780 >> El que s'obté d'aquest procés en el centre es diu text xifrat. 934 00:45:43,780 --> 00:45:44,850 Així que tipus d'una paraula sexy. 935 00:45:44,850 --> 00:45:47,630 Només vol dir que és la xifra versió del text sense format. 936 00:45:47,630 --> 00:45:52,570 I només si té el mateix secret, 13 o menys 13, és vostè capaç de 937 00:45:52,570 --> 00:45:54,970 desxifrar un missatge així. 938 00:45:54,970 --> 00:45:57,770 >> Així que en el problema setembre Two, entre les coses que farà si en el Hacker 939 00:45:57,770 --> 00:46:01,860 Edition, haurà d'escriure codi per desxifrar aquestes contrasenyes, esbrinar 940 00:46:01,860 --> 00:46:05,170 el que eren i com eren xifrat, encara que sí donar-li una mica 941 00:46:05,170 --> 00:46:06,460 d'orientació al llarg del camí. 942 00:46:06,460 --> 00:46:09,320 En l'edició estàndard, s'introdueix un parell de claus, xifrat 943 00:46:09,320 --> 00:46:12,400 mecanismes, un anomenat César, un diu Vigenère, que segueixen sent 944 00:46:12,400 --> 00:46:16,100 xifres de rotació en la qual A esdevé alguna cosa, B es converteix en alguna cosa, però 945 00:46:16,100 --> 00:46:18,820 cal fer-ho mitjançant programació perquè haurà fet ser un secret 946 00:46:18,820 --> 00:46:22,840 clau implicada que és típicament un nombre o una paraula clau que només el 947 00:46:22,840 --> 00:46:26,420 remitent i el destinatari d'aquests missatges han d'entendre. 948 00:46:26,420 --> 00:46:28,660 >> Ara bé, aquesta realitat té encarnacions en el món real. 949 00:46:28,660 --> 00:46:32,910 Això, per exemple, és petit orfe Anell descodificador secret d'Annie, i 950 00:46:32,910 --> 00:46:35,180 en realitat pot posar en pràctica aquests xifres de rotació - 951 00:46:35,180 --> 00:46:37,930 A esdevé alguna cosa, esdevé B alguna cosa - amb un parell de rodes, 952 00:46:37,930 --> 00:46:40,840 una a l'exterior, un a l'interior de tal manera que en girar la roda o 953 00:46:40,840 --> 00:46:44,170 l'anell, en realitat es pot alinear el cartes amb diferents lletres, 954 00:46:44,170 --> 00:46:45,430 l'obtenció d'un codi secret. 955 00:46:45,430 --> 00:46:48,110 I així com el melodrama per avui, que vaig pensar que faria una mica de 956 00:46:48,110 --> 00:46:52,170 recordo que si s'encén el TV el 24 de desembre, es pot veure el 957 00:46:52,170 --> 00:46:55,390 pel · lícula fins a la sacietat per 24 hores en una fila. 958 00:46:55,390 --> 00:47:06,030 Però per ara, jo obriré aquí i ens donen només dos minuts d'un 959 00:47:06,030 --> 00:47:13,493 Història del Nadal pedagògicament rellevant amb un petit tipus anomenat Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [REPRODUIR VIDEO] 961 00:47:14,400 --> 00:47:17,420 >> -Sigui notori a tothom que Ralph Parker Es nomena el 962 00:47:17,420 --> 00:47:20,650 membre de la Little Orphan Annie secret cercle i té dret a totes les 963 00:47:20,650 --> 00:47:23,460 els honors i beneficis que ocorren al mateix. 964 00:47:23,460 --> 00:47:25,990 >> -Signat, Little Orphan Annie. 965 00:47:25,990 --> 00:47:30,100 Confirmat, Pierre Andre en tinta. 966 00:47:30,100 --> 00:47:34,270 Honors i beneficis ja a l'edat de nou anys. 967 00:47:34,270 --> 00:47:39,440 >> [CRIDA A RÀDIO] 968 00:47:39,440 --> 00:47:40,770 >> Anem, anem a seguir endavant amb ella. 969 00:47:40,770 --> 00:47:44,965 Jo no necessito tot aquest jazz sobre contrabandistes i pirates. 970 00:47:44,965 --> 00:47:48,270 >> -Escolti demà a la nit per a la aventura de cloenda del negre 971 00:47:48,270 --> 00:47:49,650 vaixell pirata. 972 00:47:49,650 --> 00:47:53,320 Ara, és temps de secret d'Annie Missatge per a vostès, membres 973 00:47:53,320 --> 00:47:55,720 del cercle secret. 974 00:47:55,720 --> 00:47:56,580 Recordeu, els nens. 975 00:47:56,580 --> 00:48:01,720 Només els membres del Cercle Secret d'Annie pot descodificar el missatge secret d'Annie. 976 00:48:01,720 --> 00:48:05,872 Recordeu, Annie depèn de tu. 977 00:48:05,872 --> 00:48:08,670 Establiu les seves agulles per B2. 978 00:48:08,670 --> 00:48:11,000 Aquí està el missatge. 979 00:48:11,000 --> 00:48:12,335 12, 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Estic en la meva primera reunió secreta. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> -Pierre estava en veu alta aquesta nit. 983 00:48:21,650 --> 00:48:24,830 Em vaig adonar que el missatge d'aquesta nit que era realment important. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 Aquest és un missatge d'Annie si mateixa. 986 00:48:28,540 --> 00:48:30,086 Recordeu, no ho diguis a ningú. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Segons després, estic a l'única habitació a la casa on un nen de nou anys 989 00:48:38,710 --> 00:48:42,668 podia seure a privacitat i descodificació. 990 00:48:42,668 --> 00:48:47,628 Ajá, B. Vaig anar a la següent. 991 00:48:47,628 --> 00:48:53,060 E. La primera paraula és "ser". S. Venia més fàcil ara. 992 00:48:53,060 --> 00:48:54,980 U. 25. 993 00:48:54,980 --> 00:48:55,940 Això és R. 994 00:48:55,940 --> 00:48:56,900 >> -Anem, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Em he d'anar. 996 00:48:57,860 --> 00:48:59,780 >> -Estaré just a sota, Ma 997 00:48:59,780 --> 00:49:01,030 Caram. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Comproveu. 1000 00:49:08,220 --> 00:49:09,500 Assegureu-vos que? 1001 00:49:09,500 --> 00:49:11,660 Quina era la huerfanita Annie tractant de dir? 1002 00:49:11,660 --> 00:49:12,844 Assegureu-vos que? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, Randy ha d'anar. 1004 00:49:14,732 --> 00:49:16,148 Feu el favor de sortir? 1005 00:49:16,148 --> 00:49:17,092 >> -Està bé, mare. 1006 00:49:17,092 --> 00:49:18,510 Vaig a estar fora. 1007 00:49:18,510 --> 00:49:20,270 >> -Jo estava més a prop ara. 1008 00:49:20,270 --> 00:49:21,823 La tensió era terrible. 1009 00:49:21,823 --> 00:49:23,045 Què era? 1010 00:49:23,045 --> 00:49:26,510 El destí del planeta pot penjar d'un fil. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, ha de marxar de Randy. 1012 00:49:28,985 --> 00:49:32,680 >> -Vaig a estar a dret per l'amor de Déu. 1013 00:49:32,680 --> 00:49:33,956 >> -Ja gairebé. 1014 00:49:33,956 --> 00:49:35,140 Els meus dits volaven. 1015 00:49:35,140 --> 00:49:36,880 La meva ment era un parany d'acer. 1016 00:49:36,880 --> 00:49:38,010 Cada porus vibrar. 1017 00:49:38,010 --> 00:49:39,878 Era gairebé transparent. 1018 00:49:39,878 --> 00:49:43,210 Sí, sí, sí, sí, sí. 1019 00:49:43,210 --> 00:49:49,030 >> -Assegureu-vos de prendre la seva 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 Un comercial de mala mort? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 Fill de puta. 1025 00:50:00,694 --> 00:50:01,900 >> [FI REPRODUCCIÓ DE VÍDEO] 1026 00:50:01,900 --> 00:50:04,260 >> ALTAVEU 1: Aquesta és CS50, i que s'establirà Problema Dos. 1027 00:50:04,260 --> 00:50:06,305 Ens veiem la setmana que ve. 1028 00:50:06,305 --> 00:50:08,800 >> ALTAVEU 2: En la següent CS50, això succeeix. 1029 00:50:08,800 --> 00:50:11,060 >> ALTAVEU 1: Així que un tema que no tenim mirat fins ara és 1030 00:50:11,060 --> 00:50:12,220 la dels punters de funció. 1031 00:50:12,220 --> 00:50:14,540 Ara, un punter de funció és la direcció d'un públic 1032 00:50:14,540 --> 00:50:17,000 funció, però igual que - 1033 00:50:17,000 --> 00:50:18,250 fill d'un - 1034 00:50:18,250 --> 00:50:19,670