1 00:00:00,000 --> 00:00:07,070 [Powered by Google Translate] [♪ ♪ Buzzing] 2 00:00:07,070 --> 00:00:10,380 Entón, para presentar-lle o que eu teño na pantalla; 3 00:00:10,380 --> 00:00:12,710 é unha das ferramentas que realizamos durante o verán; 4 00:00:12,710 --> 00:00:15,530 é chamado CS50 Spaces, 5 00:00:15,530 --> 00:00:18,860 e é a nosa aplicación colaborativa de codificación 6 00:00:18,860 --> 00:00:20,180 que nós estamos indo para usar en seccións. 7 00:00:20,180 --> 00:00:22,470 É moi legal. 8 00:00:22,470 --> 00:00:26,040 Algún de vós xa viu CS50 carreira aínda? 9 00:00:26,040 --> 00:00:29,760 Déixame sacar a que noutra pestana. 10 00:00:29,760 --> 00:00:33,440 Run.cs50.net 11 00:00:33,440 --> 00:00:36,230 Así 12 00:00:36,230 --> 00:00:39,700 se vai para run.cs50.net, 13 00:00:39,700 --> 00:00:43,030 podes ver este é un navegador no seu camiño para 14 00:00:43,030 --> 00:00:45,940 En realidade, o código - escribir código C, 15 00:00:45,940 --> 00:00:47,460 e despois executa-lo, 16 00:00:47,460 --> 00:00:50,960 por iso tanto o compila, executa-lo, a continuación, retorna a saída para vostede, 17 00:00:50,960 --> 00:00:53,350 por iso este é un tipo de unha forma legal para probar 18 00:00:53,350 --> 00:00:56,060 con parte do código que David vai máis en conferencias 19 00:00:56,060 --> 00:00:58,640 e nós damos a en ti en conxuntos de problemas 20 00:00:58,640 --> 00:01:01,900 sen realmente ter que dimitir do aparello. 21 00:01:01,900 --> 00:01:04,489 >> Entón, o que fai espazos que é diferente do que 22 00:01:04,489 --> 00:01:07,450 se eu volver a esta guía, 23 00:01:07,450 --> 00:01:11,580 Espazos é CS50 carreira, como ve aquí, 24 00:01:11,580 --> 00:01:15,380 mais, se cambiar sobre e mirar para o outro lado da ventá, 25 00:01:15,380 --> 00:01:18,130 ve á dereita Eu son a única persoa neste espazo, 26 00:01:18,130 --> 00:01:21,030 pero o que eu vou facer é pedir vostedes para unirse a este espazo comigo 27 00:01:21,030 --> 00:01:24,590 e todos nós imos chegar ao código na mesma xanela pequena, 28 00:01:24,590 --> 00:01:26,070 partes de código co outro, 29 00:01:26,070 --> 00:01:28,900 e falar sobre as diferenzas entre o noso código. 30 00:01:28,900 --> 00:01:31,530 Entón, é un tipo de cousa legal - 31 00:01:31,530 --> 00:01:35,770 para unirse, se visitar este enlace aquí arriba 32 00:01:35,770 --> 00:01:38,980 que eu destaque, 33 00:01:38,980 --> 00:01:53,860 pode só escribir apps.cs50.net/spaces/vqcspSnO. 34 00:01:53,860 --> 00:01:56,610 >> Todo ben, entón, para comezar, 35 00:01:56,610 --> 00:01:59,720 Vou dar-lle un pouco de unha visita a este. 36 00:01:59,720 --> 00:02:01,720 Nós imos facer algunha codificación idiotas con el en primeiro lugar, 37 00:02:01,720 --> 00:02:06,200 só para que todo o mundo medio que queda unha sensación de que é como, 38 00:02:06,200 --> 00:02:09,000 pero o que eu fixen - 39 00:02:09,000 --> 00:02:11,830 ou o que eu vou facer aquí é - 40 00:02:11,830 --> 00:02:13,480 Vou incorporarse o código que eu teño escrito aquí, 41 00:02:13,480 --> 00:02:15,800 que, como se ve agora é baleiro; 42 00:02:15,800 --> 00:02:17,090 el non fai nada. 43 00:02:17,090 --> 00:02:21,080 É só o código tarxeta de caldeira, imos chamalo. 44 00:02:21,080 --> 00:02:23,820 Con un pouco de cousas a facer comentario. 45 00:02:23,820 --> 00:02:27,850 Vou gardalo por bater este botón Gardar. 46 00:02:27,850 --> 00:02:30,190 E o que iso fai é 47 00:02:30,190 --> 00:02:34,400 destacouse aquí brevemente - que a revisión caixa gardar verde, 48 00:02:34,400 --> 00:02:37,570 e agora, se buscar por min no espazo, 49 00:02:37,570 --> 00:02:40,340 premer no meu nome, 50 00:02:40,340 --> 00:02:43,370 podes ver que eu teño esta revisión aquí, 51 00:02:43,370 --> 00:02:45,490 e fai clic sobre a revisión, 52 00:02:45,490 --> 00:02:48,240 vai subir este código no seu espazo, tamén. 53 00:02:50,510 --> 00:02:54,160 >> Entón todo o mundo ten cargado este código no seu espazo? 54 00:02:54,160 --> 00:02:57,810 Todo ben, se non ten, vai adiante e facelo, 55 00:02:57,810 --> 00:03:01,120 e entón o que quero que vostedes fan neste pouco a formar parte 56 00:03:01,120 --> 00:03:05,940 é escribir un pouco sobre si mesmo usando printf, 57 00:03:05,940 --> 00:03:08,310 así, por exemplo, eu ía escribir 58 00:03:08,310 --> 00:03:12,270 printf ("O meu nome é Nate"); 59 00:03:15,140 --> 00:03:17,700 e entón eu ía escribir 60 00:03:17,700 --> 00:03:21,660 "Eu me forma en 2009 61 00:03:21,660 --> 00:03:24,440 de Stanford " 62 00:03:26,050 --> 00:03:28,390 e gustaríame escoitar sobre 63 00:03:28,390 --> 00:03:30,270 en que ano está na escola, 64 00:03:30,270 --> 00:03:33,910 se está na facultade ou a escola de negocios 65 00:03:33,910 --> 00:03:36,130 ou outra escola de Harvard, 66 00:03:36,130 --> 00:03:39,200 o que está estudando se se coñece aínda, 67 00:03:39,200 --> 00:03:41,290 se non é coñecido, que é totalmente legal. 68 00:03:41,290 --> 00:03:45,170 Eu non decidir ata que eu estaba atrasado no meu segundo ano. 69 00:03:46,910 --> 00:03:49,210 e entón eu tamén quere saber 70 00:03:49,210 --> 00:03:51,610 ningunha tolemia que quere me dicir ou 71 00:03:51,610 --> 00:03:54,790 algo sobre a clase ou simplemente calquera outra cousa. 72 00:03:56,930 --> 00:04:00,370 Cando termine de escribir que, co seu printf pouco, 73 00:04:00,370 --> 00:04:03,480 se vai gardar a revisión ou mellor 74 00:04:03,480 --> 00:04:06,080 primeiro asegúrese de que pode executa-lo 75 00:04:06,080 --> 00:04:10,640 e que mostra exactamente o que quere imprimir, 76 00:04:14,050 --> 00:04:16,399 e entón ir adiante e salva esa revisión 77 00:04:16,399 --> 00:04:21,600 Revisión usando o botón Gardar, este cara primeiro pouco máis aquí, 78 00:04:24,080 --> 00:04:27,340 e nós medio que pasar e facer unha pequena introdución desa maneira. 79 00:04:27,340 --> 00:04:30,150 Polo tanto, ten que só ten que apertar o botón Play, 80 00:04:30,150 --> 00:04:32,550 que está aquí enriba na esquina superior esquerda, 81 00:04:32,550 --> 00:04:35,340 por iso este botón Play no ángulo superior esquerdo vontade 82 00:04:35,340 --> 00:04:39,050 envíe o seu código fóra para o noso servidor onde está feita e despois executado. 83 00:04:40,600 --> 00:04:43,300 Entón, o que é medio tolo por iso é 84 00:04:43,300 --> 00:04:46,550 este código realmente non está sendo executado no seu ordenador; 85 00:04:46,550 --> 00:04:49,290 está realmente a ser enviados a través de Internet. 86 00:04:49,290 --> 00:04:51,240 >> Como vai iso, Charlotte? 87 00:04:51,240 --> 00:04:54,810 >> I - ben. Eu - Eu creo que eu son 88 00:04:54,810 --> 00:04:57,330 tendo dificultades de garda-lo 89 00:04:57,330 --> 00:05:00,530 no servidor de tal forma que podo - eu podo executar o programa. 90 00:05:02,090 --> 00:05:05,780 E entón, cando intento executar, el di que hai un erro. 91 00:05:05,780 --> 00:05:08,850 Declarado como un virus, o que non está aí máis. 92 00:05:08,850 --> 00:05:11,860 Oh, imos ver, pode bater Gardar de novo? 93 00:05:11,860 --> 00:05:13,770 Eu vexo iso na pantalla. 94 00:05:13,770 --> 00:05:15,120 Dereito >>, todo ben, entón iso é o que eu teño. 95 00:05:15,120 --> 00:05:19,430 E eu non sei por que non me deixa executalo. 96 00:05:22,990 --> 00:05:24,990 Ah, ok, desculpe. 97 00:05:27,930 --> 00:05:31,220 Podes explicar por que - o que estaba mal - o que non foi traballar con el? 98 00:05:31,220 --> 00:05:34,760 >> Si, porque eu non vin que había unha última liña, onde aínda hai unha variable 99 00:05:34,760 --> 00:05:37,700 que non declarara que eu non tiña intención de estar alí. 100 00:05:37,700 --> 00:05:38,730 Si, perfecto! 101 00:05:38,730 --> 00:05:40,390 >> Agora, se eu garda-lo, eu creo que debe funcionar. 102 00:05:40,390 --> 00:05:42,970 Agora que xa salvou, funciona; impresionante. 103 00:05:42,970 --> 00:05:44,570 >> Entón, si, coma nós atravesamos - 104 00:05:44,570 --> 00:05:46,690 Entón, o que estaba acontecendo, 105 00:05:46,690 --> 00:05:49,130 Eu só vou repetir isto para a cámara. 106 00:05:49,130 --> 00:05:51,760 O que estaba acontecendo era que esta variable s 107 00:05:51,760 --> 00:05:54,310 foi deixado en post - Eu suponho que eliminar algunhas outras cousas 108 00:05:54,310 --> 00:05:56,670 onde declarou como, 109 00:05:56,670 --> 00:05:59,560 e por iso esta foi xogar cousas fóra e non estaba permitindo que executa-o. 110 00:05:59,560 --> 00:06:02,540 Polo tanto, este é exactamente o que queremos facer na sección 111 00:06:02,540 --> 00:06:05,690 é que as persoas tentan escribir pezas diferentes do código, 112 00:06:05,690 --> 00:06:08,490 recompila-lo, ver o que funciona, ver o que non fai, 113 00:06:08,490 --> 00:06:10,730 e despois medio que falar sobre estas cousas, porque son puntos de disparo que 114 00:06:10,730 --> 00:06:12,850 Eu aínda atopar, 115 00:06:12,850 --> 00:06:15,470 Eu aínda - Fago moitas cousas bobas todo o tempo, 116 00:06:15,470 --> 00:06:17,820 e eu non sei por que non funciona, 117 00:06:17,820 --> 00:06:22,960 entón imos tirar revisión Charlotte 3, 118 00:06:23,980 --> 00:06:25,380 e imos executalo. 119 00:06:25,380 --> 00:06:28,950 >> Entón, cando executar, agora que eu teño o código dela aquí, 120 00:06:28,950 --> 00:06:31,450 Podo aumentar o zoom, prema Executar, 121 00:06:31,450 --> 00:06:33,680 envios iso, constrúe, executa, 122 00:06:33,680 --> 00:06:36,980 di que foi con éxito, e eu rolar para abaixo, 123 00:06:36,980 --> 00:06:39,440 ver Charlotte é un Júnior na Adams House, 124 00:06:39,440 --> 00:06:42,720 psicoloxía, secundario na economía; impresionante. 125 00:06:42,720 --> 00:06:44,310 Gran para coñece-lo! 126 00:06:44,310 --> 00:06:46,550 Impresionante. 127 00:06:46,550 --> 00:06:49,670 Ok, seguindo adiante, imos para Daniel, 128 00:06:49,670 --> 00:06:52,710 ir revisión 3, 129 00:06:52,710 --> 00:06:54,180 compilar, executar; 130 00:06:54,180 --> 00:06:56,680 por que non conte-nos un pouco sobre ti, Daniel? 131 00:06:56,680 --> 00:06:59,380 Chama-me Dan >>. 132 00:06:59,380 --> 00:07:01,920 Eu estou indo para a escola de negocios a través de vostedes, 133 00:07:01,920 --> 00:07:05,020 e eu estaba na Mariña antes aquí, 134 00:07:05,020 --> 00:07:08,020 e iso é todo novo para min, entón si. 135 00:07:08,020 --> 00:07:11,060 Non se sinta mal, eu son 30 e eu non sei nada destas cousas. 136 00:07:11,060 --> 00:07:13,800 Awesome; grazas, Dan! 137 00:07:13,800 --> 00:07:17,300 Todo ben, temos outro Daniel. 138 00:07:17,300 --> 00:07:20,930 Vai por Daniel - vai presentar, Daniel? 139 00:07:20,930 --> 00:07:22,260 >> >> Claro, eu son o Daniel. 140 00:07:22,260 --> 00:07:24,330 Eu son un estudante do segundo ano Mather agora. 141 00:07:24,330 --> 00:07:25,840 Estou me concentrando sobre o goberno, 142 00:07:25,840 --> 00:07:28,760 pero eu quería levar CS50 porque xa oín excelente críticas sobre a clase 143 00:07:28,760 --> 00:07:30,750 e eu nunca tente CS antes. 144 00:07:30,750 --> 00:07:34,680 Desc ata aquí e amosar iso - cool. 145 00:07:36,330 --> 00:07:39,090 Seguindo adiante, Jared. 146 00:07:39,090 --> 00:07:41,990 Como vai iso? 147 00:07:41,990 --> 00:07:43,430 >> Bo, como está? 148 00:07:43,430 --> 00:07:47,520 Como podes ver, eu son un concentrador de filosofía júnior en Eliot, 149 00:07:47,520 --> 00:07:50,260 orixinalmente do sur de California, 150 00:07:50,260 --> 00:07:53,100 e eu estou interesado en tomar CS50 porque me gusta da lóxica de que, 151 00:07:53,100 --> 00:07:57,420 e parece moi legal de facer as cousas no ordenador, entón. 152 00:07:57,420 --> 00:07:59,570 Awesome; no sur de California, onde está vostede? 153 00:07:59,570 --> 00:08:02,340 >> Aproximadamente unha hora de [inaudível], unha pequena cidade [inaudível]. 154 00:08:02,340 --> 00:08:04,850 Ah, si, meu pai é de Redlands. 155 00:08:04,850 --> 00:08:07,060 Cousas legais. 156 00:08:07,060 --> 00:08:12,130 >> Todo ben, Jimmy, como vai, Jimmy? 157 00:08:12,130 --> 00:08:15,130 >> Bo, como está? 158 00:08:15,130 --> 00:08:16,040 Indo moi ben! 159 00:08:16,040 --> 00:08:17,710 Conta-nos sobre si mesmo. 160 00:08:17,710 --> 00:08:20,840 >> Eu son un calouro, e eu non estou totalmente seguro de que estou formando en 161 00:08:20,840 --> 00:08:22,820 pero eu estou medio inclinado para a economía. 162 00:08:22,820 --> 00:08:25,680 Como Daniel antes de min, eu nunca tiña feito calquera CS, pero soa moi legal. 163 00:08:25,680 --> 00:08:28,120 Son orixinalmente de Chicago. 164 00:08:28,120 --> 00:08:31,640 Impresionante. Entón confía a súa impresión aquí. 165 00:08:31,640 --> 00:08:34,630 Eu quería preguntar, fixo iso de impresión como esperaba? 166 00:08:34,630 --> 00:08:37,650 >> Non, eu esquezo de imprimir unha nova liña. 167 00:08:37,650 --> 00:08:41,270 En realidade, eu esquezo que, cando estaba escribindo a miña cousa 168 00:08:41,270 --> 00:08:43,090 , Por primeira vez, tamén. 169 00:08:43,090 --> 00:08:46,330 É un tipo de dor que lembrar de poñer os manualmente. 170 00:08:46,330 --> 00:08:50,560 Sería bo se só sei que é o que quería. 171 00:08:50,560 --> 00:08:53,630 >> Ok, Kelly. 172 00:08:53,630 --> 00:08:56,050 Guau, temos 2 Kellys, 2 Daniels, 2 Kellys. 173 00:08:56,050 --> 00:09:00,490 Entón Kelly - vai por Kelly Ren? 174 00:09:00,490 --> 00:09:03,870 Ok, impresionante. 175 00:09:03,870 --> 00:09:07,270 Ou Kelly, quero dicir. 176 00:09:07,270 --> 00:09:10,260 >> Entón, si, por iso estou Kelly. 177 00:09:10,260 --> 00:09:12,930 Eu son un estudante de segundo ano en Pfoho. 178 00:09:12,930 --> 00:09:17,000 Recibín un correo-e hoxe, que eu aínda teño sete semanas para declarar a miña concentración, 179 00:09:17,000 --> 00:09:20,940 entón eu estou tentando non pensar sobre iso, 180 00:09:20,940 --> 00:09:24,090 e eu gusto de levadura, carreira e craisins. 181 00:09:24,090 --> 00:09:29,110 Eu non teño experiencia con máis de CS; 182 00:09:29,110 --> 00:09:32,700 Aprende a construír sitios cando eu era moi novo, 183 00:09:32,700 --> 00:09:35,750 pero eu creo que eu probablemente me ensinou mal unha morea de veces. 184 00:09:35,750 --> 00:09:39,260 Espero aprender un pouco máis 185 00:09:39,260 --> 00:09:41,450 e - si. 186 00:09:41,450 --> 00:09:44,100 >> Awesome; ben, grazas. 187 00:09:44,100 --> 00:09:47,190 Imos a outro Kelly; 188 00:09:47,190 --> 00:09:48,880 Eu non teño nada - dixo algo aquí? 189 00:09:48,880 --> 00:09:51,880 >> [Inaudível] 190 00:09:51,880 --> 00:09:56,180 Aí está! 191 00:09:56,180 --> 00:09:58,120 Sweet! 192 00:09:58,120 --> 00:10:01,400 >> Todo ben, entón eu son Kelly. 193 00:10:01,400 --> 00:10:03,980 Eu son un estudante de graduación do primeiro ano. 194 00:10:03,980 --> 00:10:05,560 Estou formando en mente, cerebro Educación e. 195 00:10:05,560 --> 00:10:07,940 Eu me forma en Franklin & Marshall College en 2008 196 00:10:07,940 --> 00:10:10,840 con especialización en psicoloxía e socioloxía 197 00:10:10,840 --> 00:10:13,120 e un menor en francés. 198 00:10:13,120 --> 00:10:15,330 Estou levando CS50 199 00:10:15,330 --> 00:10:18,080 porque eu estou interesado en obter un doutorado en neurociencia 200 00:10:18,080 --> 00:10:21,220 e eu sinto que iso irá me axudar a entender as tecnoloxías que están sendo usadas. 201 00:10:21,220 --> 00:10:23,150 Impresionante. 202 00:10:26,980 --> 00:10:29,390 Seguindo adiante, Mikaela. 203 00:10:29,390 --> 00:10:31,640 É que a pronuncia correcta? 204 00:10:31,640 --> 00:10:32,990 Ok, impresionante. 205 00:10:32,990 --> 00:10:34,640 >> >> Son Mikhaila. 206 00:10:34,640 --> 00:10:36,870 Eu son un estudante de segundo ano en Kirkland House, 207 00:10:36,870 --> 00:10:39,950 e estou me concentrando en Enxeñaría mecánica. 208 00:10:39,950 --> 00:10:43,180 Eu realmente me gusta de ciclismo, construíu unha bicicleta este verán. 209 00:10:43,180 --> 00:10:46,140 Estou levando CS, en realidade, 210 00:10:46,140 --> 00:10:48,350 como un requisito de concentración, 211 00:10:48,350 --> 00:10:52,550 pero xa sabe, eu creo que aínda é tipo legal de clase de enxeñaría. 212 00:10:52,550 --> 00:10:55,150 Awesome - construíu unha bicicleta este verán? 213 00:10:55,150 --> 00:10:56,730 Si >>. 214 00:10:56,730 --> 00:10:58,900 Guau, como o marco e todo isto? 215 00:10:58,900 --> 00:11:00,120 >> Uh-hunh (afirmativa). 216 00:11:00,120 --> 00:11:01,530 Guau, iso é moi legal. 217 00:11:01,530 --> 00:11:06,370 >> [Chat fóra da cámara inaudível] 218 00:11:06,370 --> 00:11:10,000 [Risas] 219 00:11:12,640 --> 00:11:14,200 Si, foi así por moito tempo. 220 00:11:14,200 --> 00:11:16,730 Vostede non sabe, non? 221 00:11:16,730 --> 00:11:19,420 Ben, legal así grazas, Mikhaila. 222 00:11:19,420 --> 00:11:21,390 >> Todo ben, Missy. 223 00:11:21,390 --> 00:11:23,280 Missy >> meu nome, eu son un calouro, 224 00:11:23,280 --> 00:11:25,500 o que significa que eu non sei de nada! 225 00:11:25,500 --> 00:11:29,180 Eu quero me concentrar en astrofísica. 226 00:11:29,180 --> 00:11:31,220 En CS50, 227 00:11:31,220 --> 00:11:33,350 Eu sinto que vai certamente axudar con iso. 228 00:11:33,350 --> 00:11:37,750 Un feito estraño sobre min é que eu son un bombeiro nacional certificada. 229 00:11:37,750 --> 00:11:39,960 Wow! 230 00:11:39,960 --> 00:11:42,440 Como isto aconteceu? 231 00:11:42,440 --> 00:11:45,570 >> Eu participei unha academia 232 00:11:45,570 --> 00:11:49,000 e pasou por un inferno para unha morea de semana 233 00:11:49,000 --> 00:11:51,200 e teño a miña certificación. 234 00:11:51,200 --> 00:11:54,090 Guau, parabéns! 235 00:11:54,090 --> 00:11:57,280 Isto non é pouca cousa, con certeza. 236 00:11:57,280 --> 00:11:59,070 Ok, entón agora imos facer de min. 237 00:11:59,070 --> 00:12:01,290 Eu son o seguinte na liña. 238 00:12:01,290 --> 00:12:04,510 Eu - executalo. 239 00:12:04,510 --> 00:12:07,580 >> Entón, meu nome é Nate. 240 00:12:07,580 --> 00:12:11,160 Eu era clase de 2009 en Stanford. 241 00:12:11,160 --> 00:12:13,840 Eu era un Sistemas Simbólicos principais, 242 00:12:13,840 --> 00:12:17,370 que é semellante ao do, a concentración de Cerebro Mente Comportamento, aquí, 243 00:12:17,370 --> 00:12:19,300 pero é unha especie de mestura de 244 00:12:19,300 --> 00:12:22,350 ciencia da computación, lingüística, psicoloxía e filosofía. 245 00:12:22,350 --> 00:12:26,600 Tipo de - si, unha morea de cousas estrañas, pero foi óptimo, 246 00:12:26,600 --> 00:12:29,880 e entón eu fixen o meu máster en Ciencia da Computación alí, tamén. 247 00:12:29,880 --> 00:12:33,250 Entón, eu son novo para Harvard este ano. 248 00:12:33,250 --> 00:12:35,750 Eu realmente quería entrar no ensino. 249 00:12:35,750 --> 00:12:39,860 Eu pasei os últimos catro anos na Universidade de Stanford TA-ing aulas de informática 250 00:12:39,860 --> 00:12:43,370 e así por David me veña, 251 00:12:43,370 --> 00:12:45,550 e eu vou estar axudando con CS50, 252 00:12:45,550 --> 00:12:47,890 entón eu fago iso a tempo completo, eu non estou na escola de posgrao. 253 00:12:47,890 --> 00:12:50,330 Foi divertido. 254 00:12:50,330 --> 00:12:53,130 Esperamos que vai continuar a ser divertido, eu estou seguro que vai. 255 00:12:53,130 --> 00:12:56,040 >> Todo ben, Sam. 256 00:13:01,910 --> 00:13:05,470 >> O meu nome é Sam, eu son un estudante do segundo ano da facultade, de dereito, especificamente. 257 00:13:05,470 --> 00:13:10,110 O meu maior será a historia da ciencia, probablemente, e ves secundario, 258 00:13:10,110 --> 00:13:13,240 e miña cor favorita é o amarelo. 259 00:13:18,790 --> 00:13:21,100 Non hai necesidade de xulgar nin nada, pero é unha boa cor! 260 00:13:21,100 --> 00:13:24,780 E Stella. 261 00:13:24,780 --> 00:13:26,980 >> Ola, eu son Stella, eu son un calouro na Grays. 262 00:13:26,980 --> 00:13:30,070 Eu non teño idea o que eu concentrada no entanto, 263 00:13:30,070 --> 00:13:32,500 así CS50 era só unha especie de forma aleatoria, 264 00:13:32,500 --> 00:13:34,220 o que é interesante. 265 00:13:34,220 --> 00:13:36,080 Curiosidade, Jimmy foi o primeiro amigo de Harvard meu, 266 00:13:36,080 --> 00:13:38,360 porque dous somos de Chicago. 267 00:13:38,360 --> 00:13:42,450 Cool, Graza e - que é suposta ser o único realmente bo, non? 268 00:13:42,450 --> 00:13:45,220 >> Eu penso que [inaudível]. 269 00:13:45,220 --> 00:13:46,690 Ah, si. 270 00:13:46,690 --> 00:13:51,210 [Inaudível / chat cámara-] 271 00:13:51,210 --> 00:13:54,420 Ok, eu aínda estou aprendendo, aínda está aprendendo. 272 00:13:54,420 --> 00:13:57,800 >> Entón temos outra cousa que é ben interesante aquí. 273 00:13:59,600 --> 00:14:02,870 Si, eu estou pensando, vostede ten unha idea que está a suceder aquí? 274 00:14:02,870 --> 00:14:05,890 Vostede sabe como interpretar isto? 275 00:14:05,890 --> 00:14:13,340 >> Eu debería ser posto a punto e coma despois de cada liña. 276 00:14:13,340 --> 00:14:16,370 Isto é un tipo de dor. 277 00:14:16,370 --> 00:14:19,100 Ás veces, esas comas pode ser unha verdadeira dor de rastrexar. 278 00:14:19,100 --> 00:14:21,420 Así, verifícase que 279 00:14:21,420 --> 00:14:22,820 o programa especial que estamos usando este ano para 280 00:14:22,820 --> 00:14:26,670 compilar noso código C é chamado Clang, 281 00:14:26,670 --> 00:14:29,460 eo motivo que comezaron a usar Clang este ano - 282 00:14:29,460 --> 00:14:32,030 porque non usar ese programa no pasado; 283 00:14:32,030 --> 00:14:35,710 usamos outro chamado GCC que é realmente popular - 284 00:14:35,710 --> 00:14:38,420 Clang realmente lle dá mensaxes de erro que ten sentido. 285 00:14:38,420 --> 00:14:41,420 Este di "esperar", "tras a expresión", 286 00:14:41,420 --> 00:14:45,260 e aínda di que a expresión despois de que necesitaba un punto e coma. 287 00:14:45,260 --> 00:14:47,830 Entón resolve-lo? 288 00:14:47,830 --> 00:14:48,930 >> Si, agora. 289 00:14:48,930 --> 00:14:52,040 Impresionante, deixe-me saber e nós imos arrancala, e nós imos executalo. 290 00:14:52,040 --> 00:14:55,830 Pero, si, poñer esas comas in é un tipo de dor. 291 00:14:55,830 --> 00:14:59,580 >> Eu fixa-lo, entón eu creo que debe funcionar. 292 00:14:59,580 --> 00:15:02,760 Awesome - revisión 3. 293 00:15:02,760 --> 00:15:05,250 Que se parece con el. 294 00:15:05,250 --> 00:15:08,580 Todo ben, entón agora executalo, 295 00:15:08,580 --> 00:15:11,020 alí vai. 296 00:15:11,020 --> 00:15:13,830 Cousas legais. 297 00:15:13,830 --> 00:15:15,340 >> Todo ben. 298 00:15:15,340 --> 00:15:18,230 Entón, grazas por facelo. 299 00:15:18,230 --> 00:15:20,210 É moi bo saber vostedes. 300 00:15:20,210 --> 00:15:22,880 O que imos facer agora é pasar ao seguinte bit pouco 301 00:15:22,880 --> 00:15:24,740 medio de mergullo nos problemas de sección 302 00:15:24,740 --> 00:15:27,550 que veñen do conxunto de problemas a partir desta semana 303 00:15:27,550 --> 00:15:29,920 e nós faremos o que para a maioría das seccións 304 00:15:29,920 --> 00:15:32,110 para o resto do período, 305 00:15:32,110 --> 00:15:35,580 e entón imos gardar os últimos 15, 20 minutos ou máis 306 00:15:35,580 --> 00:15:38,490 para falar sobre o problema a si mesma 307 00:15:38,490 --> 00:15:41,420 e despois só calquera outras preguntas que ten, en xeral, sobre a clase. 308 00:15:43,380 --> 00:15:45,670 Dito isto, o que realmente quero facer 309 00:15:45,670 --> 00:15:49,390 é que todos os que participan 310 00:15:49,390 --> 00:15:51,500 usando o material Spaces, 311 00:15:51,500 --> 00:15:53,500 xogando en código, xogando en suxestións, 312 00:15:53,500 --> 00:15:56,500 e falando cando cousas como esa ruptura 313 00:15:56,500 --> 00:15:58,360 ou non funcionan, só porque estas son cousas que 314 00:15:58,360 --> 00:16:00,870 Sei que me deparei 315 00:16:00,870 --> 00:16:03,180 cando comece a codificación, 316 00:16:03,180 --> 00:16:05,490 e foron realmente un pouco frustrante ás veces 317 00:16:05,490 --> 00:16:08,690 porque se é como dúas horas antes do seu conxunto de problemas é debido, 318 00:16:08,690 --> 00:16:11,330 así - só para divulgación, 319 00:16:11,330 --> 00:16:14,590 Eu non iniciar a programación ata que eu estaba no segundo ano na facultade. 320 00:16:14,590 --> 00:16:17,360 Era unha especie de esta cousa estraña, descoñecida 321 00:16:17,360 --> 00:16:20,360 que eu oín foi kind cool 322 00:16:20,360 --> 00:16:23,590 e eu tamén oín que isto podería ser unha verdadeira dor na bunda 323 00:16:23,590 --> 00:16:27,610 se perder un punto e coma e que é o único erro manter o seu programa de traballo 324 00:16:27,610 --> 00:16:30,890 e mantendo-o ir durmir, 325 00:16:30,890 --> 00:16:32,650 de forma definitiva, 326 00:16:32,650 --> 00:16:34,020 se ten preguntas como esta, 327 00:16:34,020 --> 00:16:37,060 se ten problemas así, deixe-me saber, 328 00:16:37,060 --> 00:16:40,050 porque quero facelo unha boa experiencia para vós. 329 00:16:40,050 --> 00:16:44,620 >> Así que todos a descarga do conxunto de problemas aínda? 330 00:16:44,620 --> 00:16:47,160 Medio que sabe onde está? Okay. 331 00:16:47,160 --> 00:16:51,490 Entón imos para cs50.net, porque eu non telo nesta conta, 332 00:16:51,490 --> 00:16:54,110 puxar arriba os conxuntos de problemas, 333 00:16:54,110 --> 00:16:57,940 tire conxunto de problemas 2, e imos ollar para a edición estándar hoxe. 334 00:16:57,940 --> 00:17:01,190 Imos tirar cara arriba a especificación aquí. 335 00:17:02,640 --> 00:17:04,420 Rolar para abaixo. 336 00:17:06,790 --> 00:17:11,109 Entón, imos comezar a ollar para esta sección de preguntas. 337 00:17:14,069 --> 00:17:16,710 Vós xa asistiron estes shorts aínda? 338 00:17:16,710 --> 00:17:18,329 Okay. 339 00:17:18,329 --> 00:17:21,329 Polo tanto, hai shorts en loops, 340 00:17:21,329 --> 00:17:24,700 que está feito por Tommy, un dos compañeiros de ensino cabeza. 341 00:17:24,700 --> 00:17:27,230 Hai un en ámbito, 342 00:17:27,230 --> 00:17:30,530 Eu creo feito por outro compañeiro de ensino chamado David 343 00:17:30,530 --> 00:17:33,400 e despois nunha cifra de Caesar tamén feito por David. 344 00:17:33,400 --> 00:17:35,550 Son moi legal. 345 00:17:35,550 --> 00:17:37,770 Vós xa foron asistir os seus calzóns ata agora? 346 00:17:37,770 --> 00:17:39,270 Como foi eles? 347 00:17:39,270 --> 00:17:41,490 Útil? Ok, bo saber. 348 00:17:41,490 --> 00:17:44,210 Se eles non están, pode dicir iso. 349 00:17:46,290 --> 00:17:49,870 Pero antes de que ti, 350 00:17:49,870 --> 00:17:52,600 Vós xa miraron para estas preguntas 351 00:17:52,600 --> 00:17:55,430 en todo? 352 00:17:55,430 --> 00:17:57,480 >> Imos falar sobre iso un pouco. 353 00:17:57,480 --> 00:18:00,600 Entón, nós introducimos ao longo das dúas últimas semanas 354 00:18:00,600 --> 00:18:02,480 en charla 355 00:18:02,480 --> 00:18:04,910 un certo número de ciclos diferentes. 356 00:18:04,910 --> 00:18:06,140 Hai o lazo é, 357 00:18:06,140 --> 00:18:09,570 do loop while, e entón o loop do-while, 358 00:18:09,570 --> 00:18:13,100 e na clase, temos falado moito sobre 359 00:18:13,100 --> 00:18:16,010 como eses lazos son todos 360 00:18:16,010 --> 00:18:18,320 bastante similar en moitos aspectos, 361 00:18:18,320 --> 00:18:21,210 e pode facer moito das mesmas cousas con un loop while 362 00:18:21,210 --> 00:18:23,260 que pode facer un loop para. 363 00:18:23,260 --> 00:18:26,300 Vostede só ten que tipo de empregar as combinacións certas variables e tal. 364 00:18:26,300 --> 00:18:28,680 e así mesmo 365 00:18:28,680 --> 00:18:31,200 a distinción real entre todas as laçadas que 366 00:18:31,200 --> 00:18:33,620 ás veces son máis útiles 367 00:18:33,620 --> 00:18:36,930 para usalos dunha soa vez do que noutro momento. 368 00:18:36,930 --> 00:18:39,340 >> Así, por exemplo, 369 00:18:39,340 --> 00:18:42,260 o loop while diferindo dun loop do-while. 370 00:18:42,260 --> 00:18:45,680 Será que todo o mundo senten que teñen un bo control sobre cando 371 00:18:45,680 --> 00:18:48,650 un do-while é máis 372 00:18:48,650 --> 00:18:50,990 útil ou cal é a diferencia? 373 00:18:50,990 --> 00:18:53,410 >> Creo que a diferenza é un loop do-while 374 00:18:53,410 --> 00:18:56,960 corre - Eu non sei ben o que é a terminoloxía, 375 00:18:56,960 --> 00:18:59,750 pero a serie de funcións dentro do loop. 376 00:18:59,750 --> 00:19:02,020 Eles automaticamente - que fai as súas carreiras polo menos 377 00:19:02,020 --> 00:19:05,390 antes de que verifica a condición ou o loop while será executado só cando 378 00:19:05,390 --> 00:19:08,290 continuamente executado - ou non a condición está satisfeita. 379 00:19:08,290 --> 00:19:11,010 Si, iso ten sentido? 380 00:19:11,010 --> 00:19:14,200 >> Imos dar un ollo a un pouco de código. 381 00:19:14,200 --> 00:19:16,930 Entón, só para repetir a pregunta, 382 00:19:16,930 --> 00:19:19,230 ou a resposta, en vez; 383 00:19:19,230 --> 00:19:22,050 a resposta foi que 384 00:19:22,050 --> 00:19:25,850 un loop while pode comprobar a ver se a condición 385 00:19:25,850 --> 00:19:27,440 que se especifica se responde 386 00:19:27,440 --> 00:19:31,320 antes de ser executado o corpo do lazo, por primeira vez, 387 00:19:31,320 --> 00:19:35,000 mentres que o do-while será executado automaticamente o corpo do loop, 388 00:19:35,000 --> 00:19:38,450 é o que chamamos - é estraño terminoloxía, 389 00:19:38,450 --> 00:19:41,460 pero se eu dicir calquera cousa que non ten sentido, deixe-me saber - 390 00:19:41,460 --> 00:19:45,360 o corpo do lazo é que o material que se pon entre as chaves. 391 00:19:45,360 --> 00:19:47,840 E en un loop do-while, 392 00:19:47,840 --> 00:19:50,220 que o corpo se executar polo menos unha vez, 393 00:19:50,220 --> 00:19:54,460 e entón a condición é comprobado antes de ser executado cada vez consecutiva. 394 00:19:54,460 --> 00:19:56,580 >> Entón, en realidade, Sam, 395 00:19:56,580 --> 00:20:00,820 lle importa escribir un simple loop while 396 00:20:00,820 --> 00:20:02,840 en espazos? 397 00:20:02,840 --> 00:20:05,600 >> Como clasifica como de 398 00:20:05,600 --> 00:20:07,060 facer un novo ...? 399 00:20:07,060 --> 00:20:09,220 Eu simplemente borrar todo o que ten aí. 400 00:20:09,220 --> 00:20:11,300 Si, só limpa-lo. 401 00:20:11,300 --> 00:20:14,510 >> Ben, eu creo que eu estou tendo esa - 402 00:20:14,510 --> 00:20:16,640 que quere, dun tempo ou quere ...? 403 00:20:16,640 --> 00:20:19,350 Si, só que un pouco verdade, imprimir algo. 404 00:20:21,050 --> 00:20:23,140 E imos ver. 405 00:20:23,140 --> 00:20:25,850 Alexander, podo entender que non presentei. 406 00:20:25,850 --> 00:20:27,510 >> Oh, iso é bo. 407 00:20:27,510 --> 00:20:30,760 Ti - pode codificar un loop do-while para nós? 408 00:20:30,760 --> 00:20:32,520 >> Si, eu vou tentar. 409 00:20:32,520 --> 00:20:34,370 Todo ben, imos retirar estes na pantalla, 410 00:20:34,370 --> 00:20:38,240 de modo que medio que ten unha alza sobre cales son as diferenzas. 411 00:20:38,240 --> 00:20:41,280 >> Entón, aquí está o que Sam fixo. 412 00:20:41,280 --> 00:20:44,460 El ten un número enteiro chamado i 413 00:20:44,460 --> 00:20:47,480 que é inicializar a 17. 414 00:20:47,480 --> 00:20:51,570 A continuación, el di que mentres (int i = 17) 415 00:20:51,570 --> 00:20:54,230 printf ("O meu nome é Sam."); 416 00:20:54,230 --> 00:20:57,300 Entón o que ocorre cando executamos este código? 417 00:20:57,300 --> 00:21:00,340 Hai un erro, que é o que o erro dicir? 418 00:21:00,340 --> 00:21:02,890 Imos tirar-lo e falar sobre iso. 419 00:21:02,890 --> 00:21:05,040 Houbo un erro, que di. 420 00:21:05,040 --> 00:21:07,400 Imos rolar para abaixo. 421 00:21:07,400 --> 00:21:09,460 Entón, iso nos deu ese erro, e el dixo, 422 00:21:09,460 --> 00:21:12,690 "Ei, eu esperaba unha expresión." 423 00:21:12,690 --> 00:21:16,180 Isto é medio misteriosa. 424 00:21:19,160 --> 00:21:23,140 Si, entón exactamente - e, de novo, 425 00:21:23,140 --> 00:21:27,140 haberá un outro pequeno erro que vai coller só un segundo. 426 00:21:27,140 --> 00:21:31,800 Pero este é un destes tipo de cousas estrañas terminoloxía, 427 00:21:31,800 --> 00:21:36,150 así que esta int i = 17 428 00:21:36,150 --> 00:21:39,290 non é unha expresión. 429 00:21:39,290 --> 00:21:41,220 O que parece que está facendo é que é 430 00:21:41,220 --> 00:21:43,410 declarar un enteiro chamado i 431 00:21:43,410 --> 00:21:45,540 e definíndose a igual a 17 432 00:21:45,540 --> 00:21:48,780 ou mellor, poñendo 17 en que int chamado i. 433 00:21:50,560 --> 00:21:53,350 E iso non ten sentido 434 00:21:53,350 --> 00:21:55,790 no contexto da presente circular. 435 00:21:55,790 --> 00:21:58,190 Ten sentido, como veremos, 436 00:21:58,190 --> 00:22:01,250 no contexto dun loop for, porque declaracións de loop que comezar 437 00:22:01,250 --> 00:22:05,800 que, por int i é igual a algo 438 00:22:05,800 --> 00:22:07,830 e segue. 439 00:22:07,830 --> 00:22:09,500 >> E tamén - 440 00:22:09,500 --> 00:22:12,630 corrixir algunha cousa, todo ben. 441 00:22:12,630 --> 00:22:15,270 Aquí vai; impresionante. 442 00:22:15,270 --> 00:22:17,920 Entón, agora as cousas parecen un pouco diferente. 443 00:22:17,920 --> 00:22:19,030 Un par de cousas cambiaron. 444 00:22:19,030 --> 00:22:21,300 Pode dicir o que as cousas cambiaron? 445 00:22:21,300 --> 00:22:24,950 >> Tirei o int, entón non hai ningunha declaración [inaudível] en vez de unha asignación. 446 00:22:24,950 --> 00:22:28,770 O sinal dunha igual, eu coloque dous sinais igual, o que significa un igual. 447 00:22:28,770 --> 00:22:30,560 Impresionante. 448 00:22:30,560 --> 00:22:33,320 Si, entón o que Sam fixo foi que tirou o int 449 00:22:33,320 --> 00:22:35,770 que estaba aquí antes, 450 00:22:35,770 --> 00:22:39,340 por iso, se eu só ollar para iso - que é o que era antes, dixo int, 451 00:22:39,340 --> 00:22:41,970 que estaba declarando-lo - por tanto, levou tipo. 452 00:22:41,970 --> 00:22:44,710 Hai int, cadea, char, short, 453 00:22:44,710 --> 00:22:47,380 Estes son chamados tipos. 454 00:22:47,380 --> 00:22:49,510 Entón colleu o tipo 455 00:22:49,510 --> 00:22:51,580 e, a continuación, previamente, 456 00:22:51,580 --> 00:22:54,190 el tiña só o único signo igual 457 00:22:54,190 --> 00:22:57,300 eo que dixo foi problemático sobre este foi 458 00:22:57,300 --> 00:22:59,580 cando ten un sinal de igual, 459 00:22:59,580 --> 00:23:01,780 que é un operador de asignación. 460 00:23:01,780 --> 00:23:04,930 Isto non está probando ou non 2 cousas son iguais. 461 00:23:04,930 --> 00:23:07,920 Isto é realmente definir algo igual a algunha cousa. 462 00:23:07,920 --> 00:23:11,110 Estamos poñendo o número 17 na variable i. 463 00:23:11,110 --> 00:23:13,850 Entón, para facer este tipo de comparación, 464 00:23:13,850 --> 00:23:16,430 tes que usar o dobre igual, 465 00:23:16,430 --> 00:23:19,640 que é un tipo de cousa estraña 466 00:23:19,640 --> 00:23:22,760 pero é un erro bastante común. 467 00:23:23,980 --> 00:23:27,830 Entón, outra cousa que eu vou apuntar, se non lle importa, 468 00:23:27,830 --> 00:23:30,610 é que, en 469 00:23:30,610 --> 00:23:33,210 nosa función aquí na principal int, 470 00:23:33,210 --> 00:23:36,740 vostede ve que o corpo da nosa función 471 00:23:36,740 --> 00:23:39,810 é desprazado a partir do lado esquerdo 472 00:23:39,810 --> 00:23:42,400 por 4 espazos ou unha guía. 473 00:23:42,400 --> 00:23:44,730 A razón pola que iso 474 00:23:44,730 --> 00:23:47,000 é só para facilitar a lectura. 475 00:23:47,000 --> 00:23:51,620 Como podes ver na alza de Sam mentres aquí, 476 00:23:51,620 --> 00:23:53,120 non guión en todo, 477 00:23:53,120 --> 00:23:55,390 e que non afecta a función do código. 478 00:23:55,390 --> 00:23:57,860 Esta será executado exactamente o mesmo. 479 00:23:57,860 --> 00:24:00,950 >> Así, por exemplo, se chegamos ata o cumio aquí 480 00:24:00,950 --> 00:24:02,680 e preme o noso botón Play, que vai construír, 481 00:24:02,680 --> 00:24:04,470 que vai executa-lo, 482 00:24:04,470 --> 00:24:06,700 eo que vai ocorrer? 483 00:24:06,700 --> 00:24:08,360 Por que aínda din que correr? 484 00:24:08,360 --> 00:24:10,560 >> Porque vai estar repetindo ola. 485 00:24:10,560 --> 00:24:12,900 Exactamente, e por que estar repetindo unha ola? 486 00:24:12,900 --> 00:24:15,850 >> Porque o enteiros nunca cambia, por iso é sempre 17. 487 00:24:15,850 --> 00:24:18,030 Si, exactamente, así que 488 00:24:18,030 --> 00:24:20,970 imos ver, despois - me lembrar do seu nome? 489 00:24:20,970 --> 00:24:24,020 Jimmy. Entón Jimmy dixo que 490 00:24:24,020 --> 00:24:27,340 a razón que esta segue a repetir ola unha e outra vez 491 00:24:27,340 --> 00:24:30,510 é porque esa condición é sempre verdadeira. 492 00:24:30,510 --> 00:24:33,270 Nós nunca cambiamos o valor de i. 493 00:24:33,270 --> 00:24:36,170 Nós nunca cambiar o contido do que está almacenado nesta variable. 494 00:24:36,170 --> 00:24:39,180 Polo tanto, neste punto temos este erro 495 00:24:39,180 --> 00:24:42,170 seu programa de saída xerado moito, 496 00:24:42,170 --> 00:24:45,100 e desprácese cara abaixo e tipo de ollar para o que está a suceder aquí, 497 00:24:45,100 --> 00:24:49,160 podes ver que é Ola, ola, ola, ola, ola, ola, ola todo o camiño. 498 00:24:49,160 --> 00:24:51,200 Impresionante. 499 00:24:51,200 --> 00:24:53,750 >> Entón tipo de volta ao punto orixinal 500 00:24:53,750 --> 00:24:57,020 que ter o repregamento aquí 501 00:24:57,020 --> 00:25:00,110 no corpo do lazo mentres non afectou nada. 502 00:25:00,110 --> 00:25:03,050 O programa aínda correu moi ben. 503 00:25:03,050 --> 00:25:06,790 Normalmente, para un bo estilo - 504 00:25:06,790 --> 00:25:10,210 e iso é algo que buscamos nos seus conxuntos de problemas - 505 00:25:10,210 --> 00:25:13,930 pedimos-lle que este guión por catro espazos, que se pode facer 506 00:25:13,930 --> 00:25:16,440 só premendo a tecla tab 507 00:25:16,440 --> 00:25:18,860 ou manualmente, poñendo en catro espazos si mesmo. 508 00:25:21,880 --> 00:25:25,050 Cool, ok entón imos volver e mirar para 509 00:25:25,050 --> 00:25:30,460 Alexandre facer agora. 510 00:25:30,460 --> 00:25:32,980 Só medio >> tendo un pequeno problema. 511 00:25:32,980 --> 00:25:34,390 Ok, así, imos traballar con el. 512 00:25:34,390 --> 00:25:36,400 Isto é legal? 513 00:25:36,400 --> 00:25:37,430 Si >>. 514 00:25:37,430 --> 00:25:39,200 >> Ok, entón aquí imos nós. 515 00:25:39,200 --> 00:25:41,010 Este é o código que Alexandre escribiu. 516 00:25:41,010 --> 00:25:43,410 Vai por Alex - ok. 517 00:25:43,410 --> 00:25:46,380 Entón, aquí está o código que Alex ten escrito. 518 00:25:46,380 --> 00:25:50,500 Entón, nós temos a nosa declaración de inicio aquí, 519 00:25:50,500 --> 00:25:54,410 e despois temos esta variable enteiro chamado i 520 00:25:54,410 --> 00:25:57,320 sendo declarado aquí. 521 00:25:57,320 --> 00:26:01,060 Temos unha instrución do 522 00:26:01,060 --> 00:26:04,600 e, a continuación, o corpo de novo con estas claves, 523 00:26:04,600 --> 00:26:06,520 por iso este é o corpo do do-tempo - 524 00:26:06,520 --> 00:26:09,210 deixe-me zoom e por iso é máis lexible - 525 00:26:09,210 --> 00:26:12,730 e no corpo, estamos intentando imprimir "este é o corpo", 526 00:26:12,730 --> 00:26:14,300 i + +, 527 00:26:14,300 --> 00:26:17,710 para incrementar o contido de I e facelo 528 00:26:17,710 --> 00:26:19,470 ata eu chega a ser 3, 529 00:26:19,470 --> 00:26:22,440 e entón o noso programa remata. 530 00:26:22,440 --> 00:26:24,680 >> Entón o que ocorre cando executamos este programa? 531 00:26:24,680 --> 00:26:27,580 >> Eu esperaba un identificador. 532 00:26:27,580 --> 00:26:32,070 Ok, entón construír, executar erro ocorre. 533 00:26:32,070 --> 00:26:34,820 O que ocorre? 534 00:26:34,820 --> 00:26:37,060 Nós rolar aquí, 535 00:26:37,060 --> 00:26:40,260 temos esa cousa un tanto enigmático ollar, 536 00:26:40,260 --> 00:26:43,930 espérase coma tras a declaración de nivel superior. 537 00:26:43,930 --> 00:26:46,620 Isto é medio raro. 538 00:26:46,620 --> 00:26:50,990 Alguén ten unha idea do que pode estar a suceder? 539 00:26:53,080 --> 00:26:54,640 Medio raro, si. 540 00:26:54,640 --> 00:26:57,640 >> [Inaudível] ser declarada fóra dos parénteses? 541 00:26:57,640 --> 00:27:03,480 Entón, non que se aplican, entón cando usar parénteses? 542 00:27:03,480 --> 00:27:07,390 Entón, el declarou este cara fóra da cal parénteses? 543 00:27:09,670 --> 00:27:12,240 Ah, estes faces - as claves? 544 00:27:12,240 --> 00:27:13,850 Si >>. 545 00:27:13,850 --> 00:27:15,310 Si, exactamente. 546 00:27:15,310 --> 00:27:17,120 Así, verifícase que 547 00:27:17,120 --> 00:27:21,550 realmente non pode declarar unha variable aquí coma este. 548 00:27:23,750 --> 00:27:26,690 O que podería tentar facer era - 549 00:27:26,690 --> 00:27:30,110 corte-lo de alí - 550 00:27:30,110 --> 00:27:34,330 pode poñelas dentro claves aquí 551 00:27:34,330 --> 00:27:37,400 ou outra alternativa 552 00:27:37,400 --> 00:27:40,350 e poñelas completamente fóra. 553 00:27:42,480 --> 00:27:46,610 E así estes - dependendo de onde vostede realmente poñer a declaración 554 00:27:46,610 --> 00:27:48,550 desa variable enteiro, 555 00:27:48,550 --> 00:27:53,540 pode obter dous tipos moi diferentes de variables; 556 00:27:53,540 --> 00:27:55,100 cando está fóra do principal, 557 00:27:55,100 --> 00:27:58,240 é o que chamamos dunha variable global. 558 00:27:58,240 --> 00:28:00,070 Que está fóra do ámbito de calquera das funcións - 559 00:28:00,070 --> 00:28:03,420 non é dentro dunha función - 560 00:28:03,420 --> 00:28:07,050 mentres que se nos poñelas dentro principal, 561 00:28:07,050 --> 00:28:10,000 como aquí, entón é chamado de variable local, 562 00:28:10,000 --> 00:28:13,830 porque é lugar para o ámbito da principal. 563 00:28:13,830 --> 00:28:16,720 E imos falar un pouco máis sobre o que as diferenzas son 564 00:28:16,720 --> 00:28:20,970 entre os dous tipos e por que usar diferentes tipos de variables, 565 00:28:20,970 --> 00:28:23,040 pero por agora, 566 00:28:23,040 --> 00:28:25,070 pode só manter todas as variables locais, 567 00:28:25,070 --> 00:28:28,320 porque non temos ningunha necesidade de variables globais. 568 00:28:28,320 --> 00:28:31,390 >> Ok, entón iso é unha cousa certa alí. 569 00:28:31,390 --> 00:28:34,680 Imos tentar executar de novo, ver o que acontece. 570 00:28:37,420 --> 00:28:40,270 Executar, obter outro erro. 571 00:28:40,270 --> 00:28:43,320 Zoom un pouco, que é o que imos chegar? 572 00:28:45,110 --> 00:28:50,000 Recibimos este paréntesis esperado tras o / while. 573 00:28:53,660 --> 00:28:55,260 Algunha idea do que está a suceder? Dan? 574 00:28:55,260 --> 00:28:58,880 É o tempo >> parénteses despois e despois - 575 00:28:58,880 --> 00:29:01,990 Eu non sei se precisa redeclare int, 576 00:29:01,990 --> 00:29:04,980 pero facelo mentres (i <3). 577 00:29:04,980 --> 00:29:06,930 Exactamente, si. 578 00:29:06,930 --> 00:29:08,830 Así, verifícase que Dan é exactamente correcto. 579 00:29:08,830 --> 00:29:11,230 Nós non precisamos de poñer este tipo aquí de novo. 580 00:29:11,230 --> 00:29:14,440 Podemos, en vez do tipo de matar 581 00:29:14,440 --> 00:29:17,220 e só facelo. 582 00:29:19,270 --> 00:29:21,640 Todo ben. 583 00:29:21,640 --> 00:29:24,950 Vou saír do zoom, proba unha vez máis. 584 00:29:26,360 --> 00:29:29,580 Olle para iso, roda exitoso. 585 00:29:29,580 --> 00:29:33,260 Se rolar para abaixo, "este é o corpo" impreso 3 veces. 586 00:29:33,260 --> 00:29:35,820 Iso é moi doce. 587 00:29:35,820 --> 00:29:38,670 Ben feito, ben feito, persoal. 588 00:29:38,670 --> 00:29:41,080 Ben feito. 589 00:29:41,080 --> 00:29:43,250 Como é que isto vai tan lonxe? 590 00:29:43,250 --> 00:29:46,200 Ritmo decente? 591 00:29:46,200 --> 00:29:49,200 Ok, legal. 592 00:29:49,200 --> 00:29:52,590 >> Entón, como nós especie de volta á cuestión orixinal, 593 00:29:52,590 --> 00:29:55,430 nós - e agora vese a diferenza, 594 00:29:55,430 --> 00:29:58,240 vostede ve que neste loop do-while, 595 00:29:58,240 --> 00:30:00,030 a condición vén para rematar. 596 00:30:00,030 --> 00:30:02,530 Entón, como o ordenador le o programa 597 00:30:02,530 --> 00:30:06,050 desde programas en C son executados tipo de nesta orde secuencial, 598 00:30:06,050 --> 00:30:09,450 onde literalmente comezar coa primeira liña de inicio, 599 00:30:09,450 --> 00:30:13,450 e, a continuación, executar a liña 6, liña 7, liña 8, liña 9, 600 00:30:13,450 --> 00:30:16,150 liña 10, liña 11, 601 00:30:16,150 --> 00:30:18,440 todo isto na parte superior aquí 602 00:30:18,440 --> 00:30:20,020 vai realizar unha vez 603 00:30:20,020 --> 00:30:23,350 antes de sempre probar esta condición ver 604 00:30:23,350 --> 00:30:26,240 ou non eu - ou o contido de i, si - 605 00:30:26,240 --> 00:30:29,750 son menos que o número 3. 606 00:30:29,750 --> 00:30:33,300 E soamente se, unha vez que comeza a liña 12, 607 00:30:33,300 --> 00:30:36,260 o contido de i son menos que 3 608 00:30:36,260 --> 00:30:39,150 que realmente volver-se para a liña 7 609 00:30:39,150 --> 00:30:41,140 e repita o proceso, 610 00:30:41,140 --> 00:30:44,620 e, entón, comprobar a condición de novo e de novo e de novo. 611 00:30:44,620 --> 00:30:47,440 >> Así, podemos comparar esta 612 00:30:47,440 --> 00:30:50,240 con - o zoom cara a fóra, 613 00:30:50,240 --> 00:30:56,500 desprácese ata a versión de Sam, 614 00:30:56,500 --> 00:31:00,760 imos ollar para iso, lixeiramente modificado para que el non é máis un loop infinito - 615 00:31:00,760 --> 00:31:03,570 onde se ampliar, 616 00:31:03,570 --> 00:31:06,300 vemos que, como este programa é executado, 617 00:31:06,300 --> 00:31:09,120 Vai primeiro declarar int i, 618 00:31:09,120 --> 00:31:12,030 definir o contido de eu ser a 0, 619 00:31:12,030 --> 00:31:15,820 e, a continuación, el alcanza a condición de cando o primeiro bucle, 620 00:31:15,820 --> 00:31:19,210 Polo tanto, neste caso, este corpo, este printf ("ola") e i + + 621 00:31:19,210 --> 00:31:21,630 non vai mesmo facer 622 00:31:21,630 --> 00:31:24,310 a menos que i é realmente menor que ou igual a 2. 623 00:31:24,310 --> 00:31:26,750 Polo tanto, se i é 3, por exemplo, 624 00:31:26,750 --> 00:31:28,840 definir esta aquí 625 00:31:28,840 --> 00:31:32,160 igual a 4 - ou eu vou facer 3, porque eu dixen 3 - 626 00:31:32,160 --> 00:31:34,890 e despois executa-lo, 627 00:31:34,890 --> 00:31:38,320 vai construír, vai executar todo ben, 628 00:31:38,320 --> 00:31:40,530 pero non vai realmente imprimir calquera cousa, 629 00:31:40,530 --> 00:31:43,030 porque fallaron no exame para o primeiro caso. 630 00:31:44,780 --> 00:31:47,530 Así, na clase, tipo de falou sobre por que estes lazos do-while 631 00:31:47,530 --> 00:31:49,800 son útiles, por veces, 632 00:31:49,800 --> 00:31:53,140 e por que ía usalo en vez de un loop while. 633 00:31:53,140 --> 00:31:56,450 >> Están alí - vós ten algunha suxestión 634 00:31:56,450 --> 00:31:59,090 por que un do-while pode ser máis útil? 635 00:31:59,090 --> 00:32:02,560 >> Ben, eu creo que do-while é se quere a entrada do usuario, 636 00:32:02,560 --> 00:32:05,020 porque desa forma podes deixar los 637 00:32:05,020 --> 00:32:07,780 poñer algo en unha vez máis, se é correcto, 638 00:32:07,780 --> 00:32:09,300 que pode pasar para o resto do programa, 639 00:32:09,300 --> 00:32:11,250 pero se non está correcto, entón continuar a avisar o usuario 640 00:32:11,250 --> 00:32:13,250 ata colocar a entrada á dereita. 641 00:32:13,250 --> 00:32:14,260 Si, exactamente - exactamente, 642 00:32:14,260 --> 00:32:16,840 así un do-while é útil 643 00:32:16,840 --> 00:32:18,930 porque ao pedir a entrada do usuario 644 00:32:18,930 --> 00:32:23,000 porque precisa para obter a entrada do usuario antes que poida realmente comprobar. 645 00:32:23,000 --> 00:32:27,330 Así, en pset 1, en pset 2, 646 00:32:27,330 --> 00:32:29,650 onde está solicitando a entrada do usuario moito, 647 00:32:29,650 --> 00:32:31,200 iso é unha cousa útil para usar 648 00:32:31,200 --> 00:32:33,740 en vez de só un simple loop while. 649 00:32:33,740 --> 00:32:36,780 Se usar un loop while, pode facer a mesma cousa - 650 00:32:36,780 --> 00:32:38,750 pode facer a mesma cousa con un loop while 651 00:32:38,750 --> 00:32:40,580 como fai con un lazo do-while. 652 00:32:40,580 --> 00:32:43,380 Vostede só ten que tipo de este proceso duplicado 653 00:32:43,380 --> 00:32:47,010 onde comeza a primeira entrada e, a continuación, iniciar o seu loop while. 654 00:32:47,010 --> 00:32:49,800 Considerando un do-while, vostede só ten que escribir unha vez 655 00:32:49,800 --> 00:32:52,430 e é moito máis limpo. 656 00:32:52,430 --> 00:32:54,650 >> Todo ben. 657 00:32:55,970 --> 00:32:57,330 Algunha pregunta? 658 00:32:59,350 --> 00:33:01,380 Ten sentido? 659 00:33:01,380 --> 00:33:06,200 >> O retorno 0 - que é só unha especie de tenda ou é -? 660 00:33:06,200 --> 00:33:08,960 Si, entón podemos - 661 00:33:08,960 --> 00:33:11,960 así, imos cubrir este un pouco máis tarde 662 00:33:11,960 --> 00:33:13,290 pero verifícase que 663 00:33:13,290 --> 00:33:15,720 este 0 retorno que poñemos 664 00:33:15,720 --> 00:33:19,090 ao final de todo o tempo de inicio - 665 00:33:19,090 --> 00:33:21,980 pode kind só toma-lo como algo que facemos 666 00:33:21,980 --> 00:33:24,930 por agora. 667 00:33:24,930 --> 00:33:28,860 O que nós comezamos a falar sobre funcións 668 00:33:28,860 --> 00:33:31,600 tipo de finais da semana pasada e de novo esta semana 669 00:33:31,600 --> 00:33:33,550 é que unha función 670 00:33:33,550 --> 00:33:37,680 ten entradas que son esas cousas dentro dos parénteses; 671 00:33:37,680 --> 00:33:41,690 Estas son dúas entradas, os nosos argumentos ou parámetros, 672 00:33:41,690 --> 00:33:44,540 o que eles están chamados tamén a nosa función principal, 673 00:33:44,540 --> 00:33:48,510 e, a continuación, unha función produce unha saída 674 00:33:48,510 --> 00:33:51,290 que chamamos un valor de retorno. 675 00:33:51,290 --> 00:33:56,260 E o valor de retorno no caso da principal está presente int, 676 00:33:56,260 --> 00:33:58,320 este enteiro, 677 00:33:58,320 --> 00:34:01,160 e da forma que contar unha función: "Ei, iso é o que a súa saída 678 00:34:01,160 --> 00:34:05,840 vai ser ", é con esa palabra" retorno ", 679 00:34:05,840 --> 00:34:07,960 a palabra clave, en vez diso, 680 00:34:07,960 --> 00:34:11,000 e así principal retornando 0 681 00:34:11,000 --> 00:34:13,389 ou principal saída 0 682 00:34:13,389 --> 00:34:15,139 é estándar en programas C 683 00:34:15,139 --> 00:34:18,110 porque retornando 0 medios principais que 684 00:34:18,110 --> 00:34:21,600 "Ei, todo executado co meu programa moi ben." 685 00:34:21,600 --> 00:34:24,639 Se fósemos poñer algo diferente de 0, 686 00:34:24,639 --> 00:34:27,440 como un, por exemplo, 687 00:34:27,440 --> 00:34:31,080 que é usada para dicir quen foi este programa 688 00:34:31,080 --> 00:34:33,540 que algo deu errado. 689 00:34:35,739 --> 00:34:39,989 Así que temos máis implicado con cousas ao longo do semestre, 690 00:34:39,989 --> 00:34:42,670 se está sempre a necesidade de dicir, 691 00:34:42,670 --> 00:34:46,650 "Oops, vostede sabe, algo deu mal con este programa", 692 00:34:46,650 --> 00:34:49,409 en vez de ter o meu programa falla, quero notificar 693 00:34:49,409 --> 00:34:52,310 o corredor do meu programa que algo deu mal, 694 00:34:52,310 --> 00:34:54,530 pode utilizar o valor de retorno, 695 00:34:54,530 --> 00:34:57,230 como nós o chamamos, iso non é 0. 696 00:35:00,180 --> 00:35:02,240 >> Entón, nós imos cubrir ese un pouco máis 697 00:35:02,240 --> 00:35:05,480 unha vez que entrar en funcións. 698 00:35:05,480 --> 00:35:09,030 Este tipo de ten sentido? 699 00:35:09,030 --> 00:35:11,240 Okay. 700 00:35:11,240 --> 00:35:13,530 Funcións son unha especie de estraño - 701 00:35:13,530 --> 00:35:17,270 Eu creo que para as persoas que teñen lotes de fondo de matemáticas, 702 00:35:17,270 --> 00:35:20,100 vén un pouco máis facilmente, 703 00:35:20,100 --> 00:35:22,540 especialmente se ten un pouco máis abstracta fondo de matemáticas 704 00:35:22,540 --> 00:35:24,240 e está afeito a falar de funcións 705 00:35:24,240 --> 00:35:27,370 e todo este tipo de cousas. 706 00:35:28,590 --> 00:35:30,610 Pero nós imos tentar cobre-los 707 00:35:30,610 --> 00:35:33,280 e ir ben devagar e como eles veñen para arriba. 708 00:35:34,730 --> 00:35:37,870 Do mesmo xeito, este argc int todo, 709 00:35:37,870 --> 00:35:41,090 char * argv [], 710 00:35:41,090 --> 00:35:44,960 por agora, tamén pode ter que tarxeta de caldeira como. 711 00:35:46,650 --> 00:35:49,050 Nós comezamos a cubrir os un pouco na charla 712 00:35:49,050 --> 00:35:53,060 Cando falamos sobre os argumentos que se pasan para programas en liña de comandos, 713 00:35:53,060 --> 00:35:55,700 pero nos seus conxuntos de problemas e dos seus programas, 714 00:35:55,700 --> 00:35:58,760 é totalmente ben só para escribir baleiro e mantelo simple. 715 00:35:58,760 --> 00:36:01,490 E o que iso significa que baleiro 716 00:36:01,490 --> 00:36:04,630 "Ei, principal non vai aceptar calquera entrada; 717 00:36:04,630 --> 00:36:07,440 este é só un programa, nós imos só facer. 718 00:36:07,440 --> 00:36:09,320 Non imos dar calquera información adicional 719 00:36:09,320 --> 00:36:12,420 cada vez que inicia-lo en execución. " 720 00:36:14,730 --> 00:36:16,600 Entón, por agora, pode facelo; 721 00:36:16,600 --> 00:36:19,710 Tamén pode ata omitir o 0 retorno 722 00:36:19,710 --> 00:36:22,650 ao final do programa e eles van correr moi ben, 723 00:36:22,650 --> 00:36:26,150 pero eu recomendo que só manter dentro 724 00:36:26,150 --> 00:36:28,320 En un par de semanas, imos comezar a especie de 725 00:36:28,320 --> 00:36:31,340 tirar cara atrás a tapa un pouco e entender máis sobre 726 00:36:31,340 --> 00:36:34,380 todos estes diferentes pequenas partes móbiles. 727 00:36:34,380 --> 00:36:38,160 >> Todo ben, agora imos falar sobre a nosa segunda pregunta aquí. 728 00:36:38,160 --> 00:36:43,190 Entón, o que "identificador non declarado" xeralmente indican 729 00:36:43,190 --> 00:36:46,040 se producida polo Clang? 730 00:36:46,040 --> 00:36:49,290 Creo que podería ver que xa hoxe. 731 00:36:51,170 --> 00:36:54,370 Alguén pode dar un resumo do que significa isto? 732 00:36:54,370 --> 00:36:57,680 Imos ver, Kelly - un dos Kellys. 733 00:37:02,580 --> 00:37:05,300 Entón >> - 734 00:37:05,300 --> 00:37:07,080 Si, o que fai - 735 00:37:07,080 --> 00:37:10,140 >> Eu creo que cando, como, non declarar as variables e tentar usalo. 736 00:37:10,140 --> 00:37:13,310 Si, exactamente, exactamente. 737 00:37:13,310 --> 00:37:15,250 Entón, se xa viu esa saída 738 00:37:15,250 --> 00:37:17,690 cando intenta e compilar o seu programa, 739 00:37:17,690 --> 00:37:19,470 só como Kelly dixo: 740 00:37:19,470 --> 00:37:24,210 Isto significa que usou unha variable que non declarar, 741 00:37:24,210 --> 00:37:28,460 por iso, se eu atrás para o noso espazo, 742 00:37:28,460 --> 00:37:31,150 e eu facer algo así 743 00:37:31,150 --> 00:37:34,800 printf ( 744 00:37:34,800 --> 00:37:38,260 "Ola% s") 745 00:37:40,070 --> 00:37:42,440 e tentar encher ese s% 746 00:37:42,440 --> 00:37:45,640 s cunha variable que non declarei en calquera lugar 747 00:37:45,640 --> 00:37:48,330 e eu tentar executa-lo, 748 00:37:48,330 --> 00:37:51,330 vai ver o que eu baixo este fondo aquí: 749 00:37:51,330 --> 00:37:54,010 "Utilización de identificador non declarado 's'"; 750 00:37:54,010 --> 00:37:57,710 iso só significa que non declarar a súa variable. 751 00:37:57,710 --> 00:38:00,750 A mesma cousa sucede se 752 00:38:00,750 --> 00:38:05,240 ten X e intenta almacenar 7 nel 753 00:38:05,240 --> 00:38:08,720 e eu non declarar X. 754 00:38:08,720 --> 00:38:10,200 Eu recibín o mesmo erro: 755 00:38:10,200 --> 00:38:13,480 "Uso de 'x' identificador non declarado". 756 00:38:16,390 --> 00:38:18,250 >> Todo ben, 757 00:38:18,250 --> 00:38:21,720 así a cifra de César, non sendo moi seguro, 758 00:38:21,720 --> 00:38:24,590 Eu vou deixar vostedes asistir a este tipo, lonxe de entender o porqué, 759 00:38:24,590 --> 00:38:27,590 e espero que despois de facer o problema desta semana definir 760 00:38:27,590 --> 00:38:29,270 onde realmente escribir unha cifra de César, vai entender un pouco máis 761 00:38:29,270 --> 00:38:32,600 sobre o que significa ser un seguro e inseguro - 762 00:38:36,180 --> 00:38:38,960 ou non seguro, eu creo - inseguro é un pouco diferente. 763 00:38:40,560 --> 00:38:43,140 A outra cousa é que temos esas outras cuestións aquí 764 00:38:43,140 --> 00:38:45,470 sobre as funcións 765 00:38:45,470 --> 00:38:47,330 e que unha función é, 766 00:38:47,330 --> 00:38:52,820 e nós medio que falamos sobre isto, brevemente, cando falamos sobre valores de retorno; 767 00:38:52,820 --> 00:38:54,560 para alguén que estivo na charla, 768 00:38:54,560 --> 00:38:57,790 pode recapitular que foi a charla de hoxe? 769 00:38:57,790 --> 00:38:59,670 Todo ben. 770 00:39:01,210 --> 00:39:04,320 Imos ver, imos ter - alguén pode dicir o que é unha función? 771 00:39:04,320 --> 00:39:06,060 Kelly? 772 00:39:07,800 --> 00:39:11,260 >> Basicamente >> algo que deseñar enriba de algo que está escrito na biblioteca que é 773 00:39:11,260 --> 00:39:14,460 máis complicado por alí, e entón acaba de escribir un pequeno formulario da mesma, 774 00:39:14,460 --> 00:39:17,360 así como se está referindo a esa biblioteca, usando 775 00:39:17,360 --> 00:39:19,650 todo o código que longa e [inaudível]. 776 00:39:19,650 --> 00:39:22,680 Si, exactamente, e entón quere engadir algo a que? 777 00:39:22,680 --> 00:39:27,050 >> Si, eu penso niso como semellante ao concepto de fórmula matemática 778 00:39:27,050 --> 00:39:30,130 onde acaba de escribir unha fórmula e, a continuación, pode conectar as variables en 779 00:39:30,130 --> 00:39:32,660 e iso é o que unha función é [inaudível]. 780 00:39:32,660 --> 00:39:35,390 >> Si, por iso temos un par de respostas aquí 781 00:39:35,390 --> 00:39:38,080 que son ambos moi bos e en Dereito. 782 00:39:38,080 --> 00:39:43,040 Non está referíndose ao código que foi escrito nalgún lugar biblioteca 783 00:39:43,040 --> 00:39:45,390 que é máis complicado 784 00:39:45,390 --> 00:39:47,130 e entón pode recorrer a este código 785 00:39:47,130 --> 00:39:50,480 e realmente usalo por só escribir o formulario curto que - 786 00:39:50,480 --> 00:39:54,060 ou mellor, o seu nome - 787 00:39:54,060 --> 00:39:57,590 e despois hai tamén a comparación cunha fórmula matemática 788 00:39:57,590 --> 00:40:00,400 ou física, todo ese tipo de cousas 789 00:40:00,400 --> 00:40:02,980 onde ten unha fórmula 790 00:40:02,980 --> 00:40:05,690 e entón pode conectar 791 00:40:05,690 --> 00:40:08,100 as variables para a fórmula 792 00:40:08,100 --> 00:40:11,130 para, a continuación, obter o resultado da fórmula, 793 00:40:11,130 --> 00:40:14,580 así que pensa sobre iso como como a ecuación cuadrática. 794 00:40:14,580 --> 00:40:17,690 Imaxina se, en vez de ter que aprender sobre 795 00:40:17,690 --> 00:40:21,310 o que a fórmula cuadrática é na aula de matemáticas, 796 00:40:21,310 --> 00:40:24,610 só tiña un programa de calculadora pouco que fixo iso por ti. 797 00:40:24,610 --> 00:40:28,930 Alguén usar programas de calculadora nas clases de matemáticas na escola? 798 00:40:28,930 --> 00:40:31,020 Si, as clases de física? 799 00:40:31,020 --> 00:40:34,670 Onde pode simplemente dicir: "Ei, fórmula cuadrática. 800 00:40:34,670 --> 00:40:37,740 Estas son as variables que quero de entrada. 801 00:40:37,740 --> 00:40:40,250 Agora me dea a resposta. " 802 00:40:40,250 --> 00:40:42,170 Ese é o tipo que unha función é. 803 00:40:42,170 --> 00:40:44,850 É un xeito de nos 804 00:40:44,850 --> 00:40:47,720 tipo de gravación, como un pequeno programa pequena sub 805 00:40:47,720 --> 00:40:51,700 dentro do noso programa máis 806 00:40:51,700 --> 00:40:55,090 e usalo unha e outra vez 807 00:40:55,090 --> 00:40:58,380 de modo que non hai que copiar e pegar o código, 808 00:40:58,380 --> 00:41:04,220 podemos darlle entradas diferentes e obter resultados distintos, 809 00:41:04,220 --> 00:41:07,090 é super accesible 810 00:41:07,090 --> 00:41:11,420 cando está tentando escribir programas diferentes en momentos diferentes. 811 00:41:11,420 --> 00:41:14,580 >> Así, por exemplo, unha función que estamos usando máis e máis e máis unha vez 812 00:41:14,580 --> 00:41:17,310 ao longo do curso é printf. 813 00:41:17,310 --> 00:41:19,680 Printf é ela propia unha función 814 00:41:19,680 --> 00:41:23,360 e verifícase que el é realmente un moi longo e complicado, 815 00:41:23,360 --> 00:41:26,420 desagradable, funciona a escribir. 816 00:41:26,420 --> 00:41:29,590 Tan sinxelo como parece-nos 817 00:41:29,590 --> 00:41:31,810 para imprimir material para fóra da pantalla, 818 00:41:31,810 --> 00:41:34,820 porque todos nós acabamos de facer que, a comezos de hoxe sección, 819 00:41:34,820 --> 00:41:36,870 verifícase que é, en realidade, vostede sabe, 820 00:41:36,870 --> 00:41:39,900 un bo par de centos de liñas de código. 821 00:41:42,030 --> 00:41:45,620 Non é algo que eu xamais vai querer escribir, con certeza, 822 00:41:45,620 --> 00:41:47,480 pero temos que usalo todos os días, que é legal, 823 00:41:47,480 --> 00:41:49,020 entón temos para compartir cos outros, 824 00:41:49,020 --> 00:41:51,790 con programas diferentes, 825 00:41:51,790 --> 00:41:54,520 por iso imos estar mergullado máis funcións; 826 00:41:54,520 --> 00:41:56,090 polo de agora, non estamos - 827 00:41:56,090 --> 00:41:59,150 a única función que imos estar escribindo e principal. 828 00:41:59,150 --> 00:42:01,570 Inicio propio é tamén unha función, 829 00:42:01,570 --> 00:42:04,270 e podes ver que ten a súa saída, 830 00:42:04,270 --> 00:42:06,610 súas entradas, como falamos, 831 00:42:06,610 --> 00:42:08,930 e entón o seu nome, que é principal. 832 00:42:08,930 --> 00:42:11,800 Principal é unha especie de - é unha función especial alí. 833 00:42:11,800 --> 00:42:14,800 No seu programa de C, ten que haber unha función principal, 834 00:42:14,800 --> 00:42:17,900 e así, por agora, nós medio da escritura omitido 835 00:42:17,900 --> 00:42:21,400 o prototipo, ou a declaración de inicio. 836 00:42:21,400 --> 00:42:23,050 Xa que para ti, 837 00:42:23,050 --> 00:42:25,650 e tivemos que encher tipo de espazos en branco. 838 00:42:25,650 --> 00:42:29,120 >> >> Así, para o conxunto segundo problema, que non precisa 839 00:42:29,120 --> 00:42:31,350 gravala-lo en función de segundo? 840 00:42:31,350 --> 00:42:34,200 Eu non creo. 841 00:42:34,200 --> 00:42:37,600 Eu creo que é todo aquí. 842 00:42:37,600 --> 00:42:41,710 Si, entón cifra de Caesar, 843 00:42:41,710 --> 00:42:45,000 non ten que, non parece, 844 00:42:48,740 --> 00:42:53,150 e Vigenère, non quere, 845 00:42:53,150 --> 00:42:56,400 así - e non é que nunca realmente ten que escribir 846 00:42:56,400 --> 00:42:58,250 unha función, non? 847 00:42:58,250 --> 00:43:01,950 Vostede chama sempre poñer todo o seu código dentro principal, 848 00:43:01,950 --> 00:43:04,500 e moitos programadores facelo. 849 00:43:04,500 --> 00:43:07,130 A medida que avanzar, 850 00:43:07,130 --> 00:43:09,480 comezamos introducindo funcións como forma 851 00:43:09,480 --> 00:43:11,530 para limpar o seu código, 852 00:43:11,530 --> 00:43:13,380 para facela máis elegante, 853 00:43:13,380 --> 00:43:16,890 no caso de ter tarefas - tipo como cando falamos sobre loops, 854 00:43:16,890 --> 00:43:20,400 como ás veces hai cousas que quere facer de novo e de novo e de novo, 855 00:43:20,400 --> 00:43:23,510 e ten o tipo de forma inxenua - 856 00:43:23,510 --> 00:43:26,360 ou o que, moitas veces, chaman "espantalho" solución, 857 00:43:26,360 --> 00:43:29,390 é só copiar e pegar unha e outra vez - 858 00:43:29,390 --> 00:43:31,000 pode facer a mesma cousa con funcións que simplemente copiar e pegar 859 00:43:31,000 --> 00:43:33,360 o mesmo código e outra vez, 860 00:43:33,360 --> 00:43:35,750 pero que incha o seu código - 861 00:43:35,750 --> 00:43:38,550 acaba facendo o código moi longo - 862 00:43:38,550 --> 00:43:41,550 e tamén está un pouco confuso, 863 00:43:41,550 --> 00:43:43,470 e, entón iso significa que non é capaz de gustar - 864 00:43:43,470 --> 00:43:45,250 Se quere usar o código de novo en outro programa, 865 00:43:45,250 --> 00:43:48,610 Tamén está preso copiando e colando-o de novo, 866 00:43:48,610 --> 00:43:51,170 entón unha das cousas que imos falar é 867 00:43:51,170 --> 00:43:54,960 tipo de deseño e estilo dos seus programas, 868 00:43:54,960 --> 00:43:57,010 e así, cando ten sentido para o tipo de 869 00:43:57,010 --> 00:43:59,800 paquete de algo e poñelas como unha función separada, 870 00:43:59,800 --> 00:44:02,080 Nós encouraged vostede a facelo, 871 00:44:02,080 --> 00:44:04,700 e iso é algo que, de novo, 872 00:44:04,700 --> 00:44:07,790 non hai ningunha regra dura e rápida. 873 00:44:07,790 --> 00:44:11,540 Nós raramente dicir que ten que escribir unha función chamada iso, 874 00:44:12,870 --> 00:44:16,320 pero é unha desas cousas que acaba de desenvolver ao longo do tempo 875 00:44:16,320 --> 00:44:19,470 como escribe máis e máis programas. 876 00:44:21,940 --> 00:44:24,790 >> Algunha pregunta? 877 00:44:26,340 --> 00:44:30,610 Ok, entón imos agora 878 00:44:30,610 --> 00:44:34,750 volva ata este cara aquí, 879 00:44:34,750 --> 00:44:37,800 entón eu estou aínda nesta sección de preguntas. 880 00:44:37,800 --> 00:44:39,900 Nós conversas sobre todos estes diferentes, 881 00:44:39,900 --> 00:44:42,050 o que é unha función, por que escribir funcións, 882 00:44:42,050 --> 00:44:44,700 cando pode simplemente copiar e pegar? 883 00:44:44,700 --> 00:44:47,700 Espero que teña convencido de que escribir funcións é unha cousa boa. 884 00:44:47,700 --> 00:44:50,870 Entón agora imos pasar este programa MySpace, 885 00:44:50,870 --> 00:44:53,080 e nós imos gastar un pouco de tempo facendo isto. 886 00:44:54,600 --> 00:44:56,480 >> Entón, imos ver, 887 00:44:56,480 --> 00:45:00,230 podo ter alguén ler isto para min? 888 00:45:02,640 --> 00:45:04,660 Imos ter Mikhaila - vai ler isto por nós? 889 00:45:07,660 --> 00:45:08,890 >> Quere dicir cando volve MySpace - 890 00:45:08,890 --> 00:45:10,920 Backup cando o MySpace foi legal. 891 00:45:10,920 --> 00:45:12,070 >> "Volver MySpace foi legal, 892 00:45:12,070 --> 00:45:14,900 era toda a rabia de tipo coma este. 893 00:45:14,900 --> 00:45:17,320 Quizais aínda é? Eu non estou seguro. 894 00:45:17,320 --> 00:45:19,990 En calquera caso, utilizar o dispositivo CS50, 895 00:45:19,990 --> 00:45:22,600 CS50 Run, ou CS50 Spaces, 896 00:45:22,600 --> 00:45:25,370 escribir un programa que solicita ao usuario unha mensaxe 897 00:45:25,370 --> 00:45:29,350 e logo, xera a mensaxe coa súa primeira letra maiúscula, 898 00:45:29,350 --> 00:45:31,800 con todas as outras letras en caso de alternancia, 899 00:45:31,800 --> 00:45:34,010 de acordo coa saída de mostra a continuación, 900 00:45:34,010 --> 00:45:37,060 onde o texto en negra representa a entrada dalgún usuario. 901 00:45:37,060 --> 00:45:39,800 Para simplificar, pode asumir que o usuario 902 00:45:39,800 --> 00:45:42,810 vai só letras minúsculas de entrada e espazos. 903 00:45:42,810 --> 00:45:45,900 Considero este problema unha oportunidade de practicar; 904 00:45:45,900 --> 00:45:48,640 non vai ser invitado a presentar este programa. " 905 00:45:48,640 --> 00:45:51,640 >> Awesome, grazas. 906 00:45:51,640 --> 00:45:54,750 Así como Mikhaila dixo, 907 00:45:54,750 --> 00:45:58,850 imos escribir un programa que myspaces seu código. 908 00:45:58,850 --> 00:46:02,230 Entón, se algún de vós usan MySpace? 909 00:46:02,230 --> 00:46:04,100 Algún de vós ten contas de MySpace? 910 00:46:04,100 --> 00:46:05,920 Oh, yeah, yeah! 911 00:46:05,920 --> 00:46:08,300 Foi moi legal. 912 00:46:08,300 --> 00:46:09,950 [Risas] 913 00:46:09,950 --> 00:46:12,060 Sei. 914 00:46:12,060 --> 00:46:14,500 Encontros min. 915 00:46:15,490 --> 00:46:18,300 Entón o que estamos intentando facer é escribir un programa 916 00:46:18,300 --> 00:46:21,110 que atravesa 917 00:46:21,110 --> 00:46:24,490 e capitaliza a primeira letra 918 00:46:24,490 --> 00:46:27,140 e entón cada letra despois - 919 00:46:27,140 --> 00:46:29,350 ou todas as outras letras despois, eu sinto moito. 920 00:46:29,350 --> 00:46:32,910 >> Así - e podes ver neste exemplo, 921 00:46:32,910 --> 00:46:35,260 é así que funciona o programa, 922 00:46:35,260 --> 00:46:38,780 e por iso este é só dicir: "Estamos executando un programa chamado a.out. 923 00:46:41,490 --> 00:46:44,630 A entrada que nós imos dar-lle 924 00:46:44,630 --> 00:46:47,090 vai ser solicitado. 925 00:46:47,090 --> 00:46:51,150 Non imos facilitar a entrada na liña de comandos. " 926 00:46:51,150 --> 00:46:54,100 Se seguindo todas as conferencias 927 00:46:54,100 --> 00:46:56,710 e escoitar os argumentos de liña de comandos, 928 00:46:57,810 --> 00:47:00,080 ese é o tipo de onde os - que a sintaxe funk 929 00:47:00,080 --> 00:47:04,530 na principal vén coa argc int, todo isto, 930 00:47:04,530 --> 00:47:07,630 entón aquí non estamos a usar iso, non estamos lidando con nada diso. 931 00:47:09,400 --> 00:47:12,650 Só imos conseguir este tecleados polo usuario, 932 00:47:12,650 --> 00:47:15,700 e despois a liña esta segunda coa capitalización funk 933 00:47:15,700 --> 00:47:18,550 é o que queremos que o noso programa para a saída. 934 00:47:19,790 --> 00:47:22,860 >> Entón, en vez de usar o aparello ou executar, imos empregar os espazos, 935 00:47:22,860 --> 00:47:25,360 porque temos espazos, 936 00:47:25,360 --> 00:47:28,640 e así se vostedes faría 937 00:47:28,640 --> 00:47:32,380 obter o seu código para algo coma isto, 938 00:47:32,380 --> 00:47:35,930 entón eu estou indo para salvar esta revisión 939 00:47:35,930 --> 00:47:38,390 só así ten a tarxeta de caldeira aquí 940 00:47:38,390 --> 00:47:42,840 parecida con esta, int main (void), nada nel. 941 00:47:44,480 --> 00:47:48,460 En realidade, o que imos facer é que imos simplemente borrar todo xunto. 942 00:47:48,460 --> 00:47:50,330 Queremos unha lousa en branco, 943 00:47:50,330 --> 00:47:52,470 porque non imos comezar a escribir código; 944 00:47:52,470 --> 00:47:55,380 en vez diso, imos tentar escribir un pseudocódigo 945 00:47:55,380 --> 00:47:58,580 o que realmente significa só que vai escribir algo que non é de código 946 00:47:58,580 --> 00:48:01,010 que tipo de describe o que queremos facer, 947 00:48:01,010 --> 00:48:05,180 medio como David fixo no primeiro día de clase, 948 00:48:05,180 --> 00:48:08,310 ou eu creo que foi o segundo día de clase, cando fixo a demostración medias todo. 949 00:48:08,310 --> 00:48:10,990 Vostedes lembran que - vendo as medias? 950 00:48:10,990 --> 00:48:13,300 Joseph estaba alí tipo de escribir en inglés? 951 00:48:13,300 --> 00:48:16,300 Entón, imos facer o mesmo. 952 00:48:16,300 --> 00:48:18,380 >> Entón, cando comezar a escribir pseudocódigo, 953 00:48:18,380 --> 00:48:22,640 Gustaríame comezar por ollar para o que a entrada será. 954 00:48:22,640 --> 00:48:24,950 E eu doume un caso de exemplo, 955 00:48:24,950 --> 00:48:28,780 así como "grazas polo add!" 956 00:48:35,030 --> 00:48:38,010 E tamén eu escribir o que eu quero que a saída sexa, 957 00:48:38,010 --> 00:48:42,210 que neste caso é algo parecido con iso. 958 00:48:53,790 --> 00:48:56,050 E este tipo de dáme un bo lugar, como, comezando a pensar, 959 00:48:56,050 --> 00:48:59,730 "Ok, quero tomar a liña 1 960 00:48:59,730 --> 00:49:03,560 e quero transformalo en liña 2 ", 961 00:49:03,560 --> 00:49:06,570 e que tipo de axuda a guiar o meu pensamento. 962 00:49:06,570 --> 00:49:09,990 Este é un bo lugar para comezar. 963 00:49:09,990 --> 00:49:12,190 Outra forma de pensar sobre iso, tamén, como medio que seguir adiante 964 00:49:12,190 --> 00:49:15,020 e como fai iso nos seus propios programas, e 965 00:49:15,020 --> 00:49:18,530 pensar sobre o tipo de como o que son os casos de punta para iso? 966 00:49:18,530 --> 00:49:20,740 Cales son os tipos de escenarios estraños? 967 00:49:20,740 --> 00:49:23,660 Cales son as entradas estrañas que podemos chegar? 968 00:49:23,660 --> 00:49:26,550 E o que esas saídas deben se parece? 969 00:49:26,550 --> 00:49:29,670 Por exemplo, unha entrada de estraño 970 00:49:29,670 --> 00:49:33,200 sería un agasallo, 971 00:49:33,200 --> 00:49:35,630 creando absolutamente nada, 972 00:49:35,630 --> 00:49:37,840 como o que temos saída nese caso? 973 00:49:37,840 --> 00:49:40,530 Algo que queremos pensar, tamén. 974 00:49:40,530 --> 00:49:44,450 >> Así como unha pregunta, 975 00:49:44,450 --> 00:49:46,870 o que podemos querer de saída? 976 00:49:46,870 --> 00:49:50,740 Se non temos ningún entrada en todo, o que debe ser a saída do noso programa? 977 00:49:53,740 --> 00:49:54,860 Nada. >> 978 00:49:54,860 --> 00:49:57,340 Nada? Parece gran. 979 00:49:57,340 --> 00:49:59,280 Entón, nós queremos estar seguro de que non estamos escribindo algo fóra 980 00:49:59,280 --> 00:50:01,500 Se non atopas nada dentro 981 00:50:01,500 --> 00:50:04,320 Cool. Okay. 982 00:50:04,320 --> 00:50:07,370 Así 983 00:50:07,370 --> 00:50:09,380 Vou chamar unha parella de persoas coma nós atravesamos 984 00:50:09,380 --> 00:50:12,790 e só descubrir o tipo de como o que o algoritmo xeral é 985 00:50:12,790 --> 00:50:15,250 e nós imos comezar a traballar tipo por iso xuntos. 986 00:50:16,240 --> 00:50:19,710 >> Entón, imos ver. Missy. 987 00:50:19,710 --> 00:50:21,220 Como pensas que ía comezar? 988 00:50:21,220 --> 00:50:24,830 O que sería un bo lugar para comezar 989 00:50:24,830 --> 00:50:27,900 se queremos transformar, digamos, na liña 1 990 00:50:27,900 --> 00:50:29,440 na liña 2? 991 00:50:29,440 --> 00:50:32,650 Podes tipo de só explicar-me, en inglés, o que está a pensar? 992 00:50:32,650 --> 00:50:34,770 Non te preocupes co código. 993 00:50:34,770 --> 00:50:38,250 >> Primeiro que eu faría sería para 994 00:50:38,250 --> 00:50:41,170 tipo de usuario directo para lles dicir o que queiras. 995 00:50:41,170 --> 00:50:44,730 Ok, entón, digamos, 996 00:50:44,730 --> 00:50:47,450 "Ei, usuario. Quero 997 00:50:47,450 --> 00:50:50,560 unha cadea "- incribles. 998 00:50:50,560 --> 00:50:52,990 Entón imos escribir isto. 999 00:50:52,990 --> 00:50:56,140 Preguntar ao usuario a unha corda. 1000 00:50:56,140 --> 00:50:59,270 Isto soa como un bo comezo. 1001 00:51:03,920 --> 00:51:06,460 Todo ben. 1002 00:51:06,460 --> 00:51:09,750 Imos pedir Kelly Ren neste momento. 1003 00:51:09,750 --> 00:51:11,580 O que sería de nós, entón quero facer a continuación? 1004 00:51:11,580 --> 00:51:14,220 Cal é o tipo do noso lado -? 1005 00:51:14,220 --> 00:51:18,080 Peto >> súa entrada e almacena-lo como unha variable. 1006 00:51:18,080 --> 00:51:20,470 Grande. 1007 00:51:20,470 --> 00:51:24,280 Entón recoller a corda, 1008 00:51:25,450 --> 00:51:27,880 almacena-lo nunha variable. 1009 00:51:34,840 --> 00:51:36,460 Entón, hai algo especial que queremos facer aquí? 1010 00:51:36,460 --> 00:51:39,700 Queremos comprobar a súa entrada 1011 00:51:39,700 --> 00:51:42,260 antes -? 1012 00:51:42,260 --> 00:51:43,790 Si >>. 1013 00:51:43,790 --> 00:51:46,330 O que podemos desexar comprobar? 1014 00:51:46,330 --> 00:51:48,980 >> Ben, dixo que non ten que comprobar se é un número, non? 1015 00:51:48,980 --> 00:51:52,400 Porque el vai asumir que é minúscula? 1016 00:51:52,400 --> 00:51:55,650 Si 1017 00:51:56,380 --> 00:51:58,920 >> Así, verifícase que - si. 1018 00:51:58,920 --> 00:52:01,850 Entón getString é garantía para voltar-nos unha corda. 1019 00:52:01,850 --> 00:52:05,050 El non vai voltar un número para nós ou algo así. 1020 00:52:05,050 --> 00:52:09,140 Pode haber caracteres díxito dentro desa cadea, con todo. 1021 00:52:09,140 --> 00:52:13,460 E aqueles, podemos ignorar como fixemos a capitalización. 1022 00:52:13,460 --> 00:52:16,620 Pero unha cadea baleira é totalmente ben, 1023 00:52:16,620 --> 00:52:19,900 entón o caso aquí en liña 4 e 5, 1024 00:52:19,900 --> 00:52:22,020 dereita, onde non hai entrada, 1025 00:52:22,020 --> 00:52:25,190 e poñemos nada como a nosa saída. 1026 00:52:25,190 --> 00:52:28,730 Non temos que preocupar-se sobre a certeza de que hai algo na cadea 1027 00:52:28,730 --> 00:52:31,840 ou que a cadea é de polo menos catro caracteres; 1028 00:52:31,840 --> 00:52:34,190 nada está ben. 1029 00:52:34,190 --> 00:52:38,270 Polo tanto, este é contrastado, por exemplo, con programas como os tostões que escribiu 1030 00:52:38,270 --> 00:52:42,340 onde tivo a certeza de que estaban recibindo números non negativos; 1031 00:52:42,340 --> 00:52:46,430 tiña que ter seguro que estaba recibindo o número correcto de días nun mes. 1032 00:52:46,430 --> 00:52:49,630 E como é que vostedes están facendo iso? 1033 00:52:49,630 --> 00:52:51,470 Como faría ese exame? 1034 00:52:51,470 --> 00:52:54,090 O que isto esixe que utiliza? 1035 00:52:54,090 --> 00:52:55,650 >> Do-while. 1036 00:52:55,650 --> 00:53:00,840 Loops de-while; outros tipos de loops, tamén, si. 1037 00:53:02,190 --> 00:53:04,520 Así, verifícase que non é necesario utilizar un circuíto, neste caso, 1038 00:53:04,520 --> 00:53:07,360 cando estamos pedindo unha cadea, que é unha especie de bo. 1039 00:53:08,280 --> 00:53:10,620 >> Todo ben, seguindo adiante. 1040 00:53:12,410 --> 00:53:14,270 Entón, Stella. 1041 00:53:14,270 --> 00:53:17,530 Pode contar un pouco sobre o que temos que facer a continuación? 1042 00:53:17,530 --> 00:53:20,270 Entón, agora temos a cadea, temos que almacenado nunha variable; 1043 00:53:20,270 --> 00:53:23,360 o que necesitamos facer a corda? 1044 00:53:26,790 --> 00:53:33,530 Necesitamos >> - 1045 00:53:33,530 --> 00:53:36,550 identificar o 2 - 1046 00:53:36,550 --> 00:53:39,290 Si, basta dicir que en inglés, que é incrible. 1047 00:53:39,290 --> 00:53:42,670 Identificar as >> [inaudível] capitais - ou, en maiúsculas. 1048 00:53:44,420 --> 00:53:48,130 Si, así que identificar cales son maiúsculas e minúsculas. 1049 00:53:50,020 --> 00:53:54,180 Non podemos maiúsculas e minúsculas-los ata nós identificamos cales. 1050 00:54:03,790 --> 00:54:06,350 Entón, imos poñer isto aquí. 1051 00:54:06,350 --> 00:54:10,210 >> Entón, só de pensar sobre este proceso, 1052 00:54:10,210 --> 00:54:13,200 como imos facer esa identificación? 1053 00:54:13,200 --> 00:54:15,050 Sábese, Dan? 1054 00:54:15,050 --> 00:54:18,120 Tipo do que nós - que ferramenta que tería que usar a nosa caixa de ferramentas? 1055 00:54:18,120 --> 00:54:22,500 >> Eu poñelas algunha maneira, como unha matriz ou cada liña 1056 00:54:22,500 --> 00:54:24,240 é a súa propia caixa pouco, 1057 00:54:24,240 --> 00:54:27,240 e despois maiúsculas-lo de alí ou non. 1058 00:54:27,240 --> 00:54:30,440 Ok, entón unha ferramenta que podemos utilizar é unha matriz. 1059 00:54:30,440 --> 00:54:33,760 O que temos que mirar para na secuencia, 1060 00:54:33,760 --> 00:54:36,680 porén, para descubrir - que tiña de ollar para os personaxes. 1061 00:54:36,680 --> 00:54:40,890 >> Entón tes que mirar para a lonxitude da corda? 1062 00:54:40,890 --> 00:54:43,880 Si, entón parte do que está a recibir a lonxitude da corda. 1063 00:54:50,450 --> 00:54:54,150 Só por curiosidade, o que imos usar para obter a lonxitude dunha corda? 1064 00:54:54,150 --> 00:54:58,080 Strlen >>? 1065 00:54:58,080 --> 00:55:02,870 Si, strlen, chamamos iso de "strlen" 1066 00:55:04,180 --> 00:55:08,620 Todas estas funcións de cadea, así strlen é unha función, 1067 00:55:08,620 --> 00:55:10,670 e é super útil, porque podemos usalo só para dicir, 1068 00:55:10,670 --> 00:55:13,430 Ei, strlen: Aquí está unha corda, me diga canto tempo é. 1069 00:55:13,430 --> 00:55:17,350 Na charla de hoxe, David falou moito sobre como strlen é aplicado, 1070 00:55:17,350 --> 00:55:20,370 o que realmente está a suceder nos bastidores. 1071 00:55:20,370 --> 00:55:25,450 Pero este é un dos moi super útil. 1072 00:55:25,450 --> 00:55:29,170 Existen outras que tamén están na biblioteca cadea, 1073 00:55:29,170 --> 00:55:34,690 como strcmp, que está escrito "strcmp", 1074 00:55:34,690 --> 00:55:38,010 o cal é usado para comparar cadeas unhas ás outras. 1075 00:55:41,220 --> 00:55:45,020 Os outros que ha empregar como strstr, 1076 00:55:45,020 --> 00:55:48,770 o que é bo para atopar cadeas sub e así por diante. 1077 00:55:48,770 --> 00:55:53,380 Para a maior parte, todos eles comezan con str e despois pasar a ser outra cousa. 1078 00:55:53,380 --> 00:55:57,080 A razón que realmente non escribilos como corda e así por diante 1079 00:55:57,080 --> 00:56:00,260 é porque como os primeiros días de C, 1080 00:56:00,260 --> 00:56:04,100 cando as persoas estaban escribindo en primeiro lugar e todo o que, 1081 00:56:04,100 --> 00:56:07,580 eles tiñan limitacións no número de caracteres que pode usar 1082 00:56:07,580 --> 00:56:09,950 para os nomes de funcións e nomes de variables, 1083 00:56:09,950 --> 00:56:12,620 entón todo é como super condensado. 1084 00:56:12,620 --> 00:56:15,750 Pero cando ve algo que comeza con str, 1085 00:56:15,750 --> 00:56:18,600 que normalmente significa que iso ten algo que ver cunha corda. 1086 00:56:20,990 --> 00:56:23,350 >> Ok, entón ten que obter a lonxitude da corda, 1087 00:56:23,350 --> 00:56:27,110 e entón, o que imos facer cos personaxes? 1088 00:56:27,110 --> 00:56:29,020 Sabe, Sam? 1089 00:56:29,020 --> 00:56:32,410 >> Eu non teño idea, eu estaba tentando descubrir iso. 1090 00:56:32,410 --> 00:56:35,410 Eu realmente non sei - Gustaríame que houbese algunha maneira de - 1091 00:56:35,410 --> 00:56:38,990 É dicir, eu creo que quizais a xente puidese facer algo con probabilidades e parellas, 1092 00:56:38,990 --> 00:56:40,860 pero eu non sei de calquera función como esta. 1093 00:56:40,860 --> 00:56:42,240 Si 1094 00:56:43,160 --> 00:56:45,200 Pero >> iso - non necesariamente traballar, 1095 00:56:45,200 --> 00:56:48,690 porque entón vostede obtén os espazos a ser - 1096 00:56:48,690 --> 00:56:51,130 que tería que ter o espazo para obter consellos sobre como - 1097 00:56:51,130 --> 00:56:54,310 Okay. 1098 00:56:54,310 --> 00:56:56,490 >> Eu non sei - eu son tipo de perda neste momento. 1099 00:56:56,490 --> 00:56:58,120 Si - Non, non, non, estes son bos puntos. 1100 00:56:58,120 --> 00:57:00,420 Entón, o que necesitamos facer é, como dixo Sam, 1101 00:57:00,420 --> 00:57:02,970 necesitamos para controlar cales cartas son as letras estrañas, 1102 00:57:02,970 --> 00:57:05,540 e cales son as letras mesmo. 1103 00:57:06,650 --> 00:57:09,090 Pero queremos estar seguro de que non estamos só á procura 1104 00:57:09,090 --> 00:57:12,110 no par e impar 1105 00:57:12,110 --> 00:57:14,030 índices na secuencia, 1106 00:57:14,030 --> 00:57:17,660 pero mirando para as letras iguais e impares na secuencia, 1107 00:57:17,660 --> 00:57:20,190 por iso necesitamos un pouco teñen esa distinción entre 1108 00:57:20,190 --> 00:57:25,190 letras - como o que en realidade é A, B, C, D, ou así por diante, 1109 00:57:25,190 --> 00:57:29,090 e que as cousas non son letras, pero aínda na nosa cadea. 1110 00:57:29,090 --> 00:57:32,390 Por exemplo, aquí, como este punto de exclamación non é unha letra, 1111 00:57:32,390 --> 00:57:36,060 senón que é parte da nosa cadea, que aínda é un char. 1112 00:57:36,060 --> 00:57:38,820 Do mesmo xeito, todos estes espazos - 1113 00:57:38,820 --> 00:57:41,710 non ten sentido para aproveitar un espazo, non? 1114 00:57:41,710 --> 00:57:46,160 Entón, nós queremos estar seguro de que de algunha maneira ignorar os 1115 00:57:46,160 --> 00:57:49,410 mentres aínda posibilidades de seguimento e gradúa. 1116 00:57:50,900 --> 00:57:54,990 >> Entón, medio que na nosa caixa de ferramentas de programación 1117 00:57:54,990 --> 00:57:57,270 ata agora, se quere, 1118 00:57:57,270 --> 00:58:01,310 temos un número de ferramentas diferentes que nós xa conversas sobre. 1119 00:58:01,310 --> 00:58:04,640 Así, unha, por exemplo, son variables, 1120 00:58:04,640 --> 00:58:07,120 como falamos aquí. 1121 00:58:07,120 --> 00:58:10,730 Outra ferramenta que falamos son as funcións. 1122 00:58:10,730 --> 00:58:15,800 Entón, nós xa conversas sobre variables no noso pseudocódigo-aquí 1123 00:58:15,800 --> 00:58:19,760 como o que nós imos usar para almacenar a nosa cadea. 1124 00:58:19,760 --> 00:58:24,630 Nós conversas sobre funcións para a lonxitude dunha corda, como strlen. 1125 00:58:28,510 --> 00:58:31,170 Estamos falando de outra cousa, e xa falamos sobre iso 1126 00:58:31,170 --> 00:58:34,850 para moito máis cedo na sección de hoxe: loops. 1127 00:58:39,390 --> 00:58:42,030 >> O que vostedes pensan sobre o uso dun loop neste programa? 1128 00:58:42,030 --> 00:58:44,110 Jared, o que pensas? 1129 00:58:47,150 --> 00:58:50,030 Será que usar un loop neste programa? 1130 00:58:50,030 --> 00:58:52,500 >> Probablemente non, non, porque non ten que pasar por iso máis dunha vez. 1131 00:58:52,500 --> 00:58:55,260 Ok, non ten que pasar polo que máis de unha vez? 1132 00:58:55,260 --> 00:58:57,190 >> A secuencia enteira. 1133 00:58:57,190 --> 00:59:00,660 Certo, entón non tes que pasar por toda a cadea unha vez. 1134 00:59:00,660 --> 00:59:03,330 Sentímolo que fixo absolutamente ningún sentido! 1135 00:59:03,330 --> 00:59:06,360 Non ten que pasar por toda a cadea máis dunha vez. 1136 00:59:06,360 --> 00:59:08,660 Okay. 1137 00:59:09,790 --> 00:59:11,920 ¿Que pensas? 1138 00:59:11,920 --> 00:59:14,110 >> Eu creo que é mellor usalos 1139 00:59:14,110 --> 00:59:16,640 para que poidamos facer como capitalizar mentres 1140 00:59:16,640 --> 00:59:19,750 a localización do seu número é [inaudível]. 1141 00:59:19,750 --> 00:59:22,940 Grande, e así capitalizar o que? 1142 00:59:22,940 --> 00:59:25,200 Ok, entón nós estamos dicindo que 1143 00:59:25,200 --> 00:59:28,130 debemos usar un loop, porque queremos 1144 00:59:28,130 --> 00:59:32,550 unha letra en maiúscula, mentres non é un número. 1145 00:59:35,130 --> 00:59:37,140 Entón, - desculpe, quere engadir? 1146 00:59:37,140 --> 00:59:39,340 >> Eu ía dicir que o xeito no que trata a cadea 1147 00:59:39,340 --> 00:59:42,290 e [inaudível] separar o [inaudível] sobre os personaxes? 1148 00:59:42,290 --> 00:59:43,710 Si 1149 00:59:43,710 --> 00:59:45,850 >> E entón podemos asignar os números de - 1150 00:59:45,850 --> 00:59:47,780 ou con base na localización da fonte na secuencia? 1151 00:59:47,780 --> 00:59:49,720 Si 1152 00:59:49,720 --> 00:59:53,640 E >> identificar se é par ou impar e feito a carta en si 1153 00:59:53,640 --> 00:59:57,750 mentres que a ubicación da carta é [inaudível] - desculpe. 1154 00:59:57,750 --> 01:00:00,150 Grande. 1155 01:00:00,150 --> 01:00:03,430 >> Polo tanto, só unha recapitulación. 1156 01:00:03,430 --> 01:00:05,840 Vostede me pode lembrar do seu nome novo - Sinto moito. 1157 01:00:05,840 --> 01:00:06,900 >> Charlotte. 1158 01:00:06,900 --> 01:00:08,490 Charlotte, ok. 1159 01:00:08,490 --> 01:00:11,130 Entón, o que Charlotte está dicindo, 1160 01:00:11,130 --> 01:00:14,950 que é totalmente certo - Deus, este lle gusta de auto guión en min - 1161 01:00:14,950 --> 01:00:17,770 é que se miramos para unha cadea 1162 01:00:17,770 --> 01:00:19,160 como se atopa na parte superior - 1163 01:00:19,160 --> 01:00:21,590 "Grazas por engadir" - 1164 01:00:21,590 --> 01:00:24,790 como unha secuencia de caracteres 1165 01:00:24,790 --> 01:00:29,010 onde a é a posición 0, 1166 01:00:29,010 --> 01:00:32,260 o h está na posición 1. 1167 01:00:32,260 --> 01:00:36,880 Unha é a 2, entón temos 3, 4, 5; 1168 01:00:36,880 --> 01:00:40,830 o espazo está na posición 6. 1169 01:00:42,380 --> 01:00:45,300 Considerando que: - o que é a posición de f? 1170 01:00:45,300 --> 01:00:47,610 7! 1171 01:00:47,610 --> 01:00:49,300 O? 8. 1172 01:00:49,300 --> 01:00:52,070 R? 9. 1173 01:00:52,070 --> 01:00:54,340 E entón temos 10, e entón realmente non podo escribilo sen el 1174 01:00:54,340 --> 01:00:57,430 medio que ficar confuso na pantalla. 1175 01:00:57,430 --> 01:01:02,340 Pero esta é, en realidade, como podemos falar cadeas na memoria. 1176 01:01:02,340 --> 01:01:04,660 É unha cadea 1177 01:01:04,660 --> 01:01:07,920 é unha secuencia de caracteres, 1178 01:01:07,920 --> 01:01:12,430 e cando nos referimos a un carácter individual nunha corda, 1179 01:01:12,430 --> 01:01:15,280 que moitas veces o fan referíndose a posición de que o personaxe 1180 01:01:15,280 --> 01:01:17,620 dentro da cadea, 1181 01:01:17,620 --> 01:01:19,910 probablemente do mesmo xeito que falamos de setembro 1182 01:01:19,910 --> 01:01:22,870 sendo o noveno mes do ano 1183 01:01:22,870 --> 01:01:27,730 ou Segunda sendo o primeiro día da semana. 1184 01:01:29,280 --> 01:01:33,070 Polo tanto, este nos ofrece unha forma de 1185 01:01:33,070 --> 01:01:37,030 descubrir cales son estrañas mesmo contra 1186 01:01:37,030 --> 01:01:39,540 porque podes ver aquí, 1187 01:01:39,540 --> 01:01:43,640 se combina-lo con este T, 1188 01:01:46,310 --> 01:01:49,360 podes ver que todos os capitalizados 1189 01:01:49,360 --> 01:01:53,040 están en posicións aínda, 1190 01:01:53,040 --> 01:01:55,880 polo menos para a primeira palabra, 1191 01:01:55,880 --> 01:01:59,080 e entón as cousas son xogados fóra, xa que alcanzou aquel espazo, 1192 01:01:59,080 --> 01:02:02,460 porque non contamos este espazo como unha carta, 1193 01:02:02,460 --> 01:02:05,150 por iso é coma se comezou 1194 01:02:05,150 --> 01:02:08,930 e foi de 0, 1, 2, 3, 4, 5, 1195 01:02:08,930 --> 01:02:12,600 espazo, 6, 7, 8, espazo, 1196 01:02:12,600 --> 01:02:16,440 9, e, a continuación, 10, 11, 12, e así por diante. 1197 01:02:19,300 --> 01:02:22,910 >> Legal, entón definitivamente vai querer usar algún tipo de loop 1198 01:02:22,910 --> 01:02:27,760 pasar por riba de cada un dos personaxes, á súa vez. 1199 01:02:31,330 --> 01:02:34,580 Polo tanto, neste punto, 1200 01:02:36,490 --> 01:02:38,360 imos volver para o noso pseudocódigo vello aquí. 1201 01:02:40,970 --> 01:02:42,650 Como parte desta identificación de cales 1202 01:02:42,650 --> 01:02:45,350 son maiúsculas e cales son minúsculas, 1203 01:02:45,350 --> 01:02:48,340 imos querer facelo nalgún tipo de lazo. 1204 01:02:51,080 --> 01:02:53,390 Colon loop,. 1205 01:02:55,070 --> 01:03:01,220 Que tipo de lazo, dos tipos de loops que temos, 1206 01:03:01,220 --> 01:03:03,670 parece ser unha boa para usar neste caso? 1207 01:03:03,670 --> 01:03:05,610 >> Eu estaba a pensar para o lazo. 1208 01:03:05,610 --> 01:03:07,500 E por que está a pensar en loop? 1209 01:03:07,500 --> 01:03:10,000 Porque >> comeza en cero, e despois 1210 01:03:10,000 --> 01:03:13,000 cando alcanzamos a lonxitude da corda, 1211 01:03:13,000 --> 01:03:16,170 e entón cada iteração, pode [inaudível], tamén? 1212 01:03:16,170 --> 01:03:18,260 Si, exactamente. 1213 01:03:18,260 --> 01:03:21,490 Así, a partir dos diferentes opcións de loops, 1214 01:03:21,490 --> 01:03:25,350 que temos para loops, loops while, e do-while. 1215 01:03:25,350 --> 01:03:28,550 Cando un loop é particularmente útil 1216 01:03:28,550 --> 01:03:32,120 é cando quere saber 1217 01:03:32,120 --> 01:03:34,940 tipo de onde está no circuíto, 1218 01:03:34,940 --> 01:03:38,520 cantas veces o circuíto ten sido executada, ata agora. 1219 01:03:38,520 --> 01:03:42,490 Que é o que queremos saber, nesta situación, 1220 01:03:42,490 --> 01:03:44,640 como Kelly dixo: 1221 01:03:44,640 --> 01:03:47,400 baseado fóra de comentario anterior de Charlotte, que queremos saber a posición 1222 01:03:47,400 --> 01:03:49,900 do personaxe dentro da cadea, 1223 01:03:49,900 --> 01:03:51,750 e para o lazo nos dará só iso, 1224 01:03:51,750 --> 01:03:54,680 porque se comezar tipo de ollar cara atrás na nosa cadea, 1225 01:03:54,680 --> 01:03:57,140 se comezamos o noso circuíto para 0, 1226 01:03:57,140 --> 01:04:00,350 e subimos a través da lonxitude de toda a cadea, 1227 01:04:00,350 --> 01:04:04,740 entón podemos asociar a letra T 1228 01:04:04,740 --> 01:04:08,110 con a 0 no noso loop for, 1229 01:04:09,950 --> 01:04:13,080 H coa letra 1 en noso loop, e así por diante, 1230 01:04:13,080 --> 01:04:16,600 indo todo o camiño ata o final da cadea. 1231 01:04:18,810 --> 01:04:21,890 >> Entón, imos comezar a programar este un pouco 1232 01:04:21,890 --> 01:04:24,930 só para vós unha idea do que iso parece. 1233 01:04:24,930 --> 01:04:27,980 Eu estou indo para salvar este, 1234 01:04:27,980 --> 01:04:31,230 entón temos o noso pseudo-código aquí, 1235 01:04:33,490 --> 01:04:38,120 e eu vou borrar todo. 1236 01:04:38,120 --> 01:04:42,210 Entón, eu teño unha páxina en branco. 1237 01:04:42,210 --> 01:04:45,910 Vou comezar por escribir int (void) principal 1238 01:04:45,910 --> 01:04:48,440 { 1239 01:04:48,440 --> 01:04:51,380 Vou poñer o 0 retorno en 1240 01:04:51,380 --> 01:04:53,320 e, a continuación, o.} 1241 01:04:53,320 --> 01:04:56,130 Por iso, normalmente cando comezar a programar, é iso que eu comezar. 1242 01:04:56,130 --> 01:04:59,370 Vou gardar isto para que vostedes teñen. 1243 01:05:06,290 --> 01:05:08,440 Entón, unha das primeiras cousas que falamos foi 1244 01:05:08,440 --> 01:05:10,920 obter a entrada do usuario 1245 01:05:10,920 --> 01:05:13,740 e almacena-lo nunha corda. 1246 01:05:13,740 --> 01:05:16,420 Como chegamos a entrada dun usuario? 1247 01:05:16,420 --> 01:05:19,640 GetString. >> 1248 01:05:19,640 --> 01:05:21,870 GetString, todo ben. 1249 01:05:23,150 --> 01:05:26,820 Entón, se eu escribir GetString () 1250 01:05:26,820 --> 01:05:32,150 e un punto e coma. 1251 01:05:32,150 --> 01:05:36,630 Imos tentar executar este; será este prazo, antes de todo? 1252 01:05:36,630 --> 01:05:38,430 E por que non esta executar? 1253 01:05:38,430 --> 01:05:40,090 >> Ten que declarar a variable. 1254 01:05:40,090 --> 01:05:43,040 Eu teño que declarar unha variable. Okay. 1255 01:05:43,040 --> 01:05:45,700 >> Entón, como podo facer iso? 1256 01:05:45,700 --> 01:05:48,400 Vostede se importa de escribir algo, compartindo-o? 1257 01:05:48,400 --> 01:05:51,270 E entón podemos puxa-lo cara arriba. 1258 01:05:51,270 --> 01:05:54,630 Imos ver, Dan, non, todo ben. 1259 01:05:54,630 --> 01:05:59,100 Ou Daniel. Copia que, entrada cadea = GetString (). 1260 01:05:59,100 --> 01:06:01,340 Impresionante. 1261 01:06:01,340 --> 01:06:02,890 Será que isto vai funcionar? 1262 01:06:02,890 --> 01:06:05,210 Imos tentar. 1263 01:06:05,210 --> 01:06:08,890 Hit carreira, código de subida fonte, o edificio, un erro. 1264 01:06:08,890 --> 01:06:11,040 Okay. 1265 01:06:11,040 --> 01:06:14,950 Entón o que está a suceder aquí? 1266 01:06:14,950 --> 01:06:18,700 Uso de 'string' identificador non declarado. 1267 01:06:18,700 --> 01:06:22,840 >> Temos que inclúen as bibliotecas? 1268 01:06:22,840 --> 01:06:25,130 Si, entón Dan dicindo que temos que incluír as bibliotecas. 1269 01:06:25,130 --> 01:06:28,270 É iso que ía dicir, Stella? Impresionante. 1270 01:06:29,450 --> 01:06:31,430 Isto é incrible, entón Stella, non é 1271 01:06:31,430 --> 01:06:34,800 copiar este código fóra do espazo de Daniel? 1272 01:06:34,800 --> 01:06:37,580 Se fai clic en Daniel Roland Ki, copia-lo, 1273 01:06:37,580 --> 01:06:41,360 e entón vai poñer a liña include, e despois garda-lo fóra? 1274 01:06:46,580 --> 01:06:49,360 Deixe-me saber cando está listo. 1275 01:06:57,160 --> 01:06:59,490 Polo tanto, esta sintaxe de inclusión é tamén unha especie de funk; 1276 01:06:59,490 --> 01:07:02,210 non hai como a suma tag, 1277 01:07:02,210 --> 01:07:05,760 E hai a incluír, e despois hai estes corchetes. 1278 01:07:12,490 --> 01:07:15,360 Vostede recorda de como funciona isto, ou eu debería poñelas neste código aquí? 1279 01:07:15,360 --> 01:07:17,850 >> Eu son bo. 1280 01:07:17,850 --> 01:07:19,810 Okay. 1281 01:07:19,810 --> 01:07:23,260 Eu imprimir lo >> - Eu non tiña seguro de que biblioteca, con todo. 1282 01:07:23,260 --> 01:07:25,570 Ah, todo ben - Si, por iso é a biblioteca CS50. 1283 01:07:25,570 --> 01:07:27,660 >> Ah, eu coloque biblioteca stdio. 1284 01:07:27,660 --> 01:07:30,950 >> Ah, entendín - si, non, iso é - 1285 01:07:30,950 --> 01:07:34,380 así verifícase que cadea é realmente algo que é especial para CS50. 1286 01:07:36,590 --> 01:07:41,240 Hai, de feito, non é un tipo de cadea certo 1287 01:07:41,240 --> 01:07:45,000 porque aquí, string está na posición, tipo - 1288 01:07:45,000 --> 01:07:49,140 estamos declarando unha variable chamada de entrada do tipo cadea - 1289 01:07:49,140 --> 01:07:53,320 e estamos poñendo dentro de entrada 1290 01:07:53,320 --> 01:07:58,440 o valor que será devolto a nós: a saída desta función GetString. 1291 01:07:58,440 --> 01:08:02,910 Pode dicir isto é unha chamada de función, porque ten os parénteses, como printf fai, 1292 01:08:02,910 --> 01:08:05,920 como strlen fai. 1293 01:08:05,920 --> 01:08:09,860 Pero cadea non é realmente un tipo real 1294 01:08:09,860 --> 01:08:11,760 na linguaxe C. 1295 01:08:11,760 --> 01:08:15,710 Nós fixemos todo un tipo, e nós imos levar arredor de máis o que realmente é 1296 01:08:15,710 --> 01:08:19,000 C, porque non hai un xeito de traballar con cordas; 1297 01:08:19,000 --> 01:08:22,479 Nós acabamos de facer algo para facela un pouco mellor. 1298 01:08:22,479 --> 01:08:25,240 >> Entón, imos alí. 1299 01:08:25,240 --> 01:08:28,439 Aquí está o código de Stella. 1300 01:08:28,439 --> 01:08:32,470 Ten o # include . 1301 01:08:32,470 --> 01:08:36,390 Outras persoas van chamar isto como un hash inclúen, por veces, ou unha acentuada incluír. 1302 01:08:36,390 --> 01:08:39,580 Agora podemos inicia-lo, executalo, 1303 01:08:39,580 --> 01:08:43,649 e aínda obter un erro. 1304 01:08:43,649 --> 01:08:46,290 Imos ver o que está a suceder. 1305 01:08:48,069 --> 01:08:50,569 "'Input' variable non utilizada." 1306 01:08:50,569 --> 01:08:53,350 Ok, entón iso é legal, iso é legal. 1307 01:08:53,350 --> 01:08:55,859 Quero dicir, non é moi legal, 1308 01:08:55,859 --> 01:08:57,930 porque estamos a recibir un erro e non está funcionando, 1309 01:08:57,930 --> 01:09:00,410 pero o que isto quere dicir é que 1310 01:09:00,410 --> 01:09:03,130 Nós non temos usado a nosa variable, o que ten sentido. 1311 01:09:03,130 --> 01:09:06,090 Non pretendemos facer nada con el. 1312 01:09:07,819 --> 01:09:10,490 Trata-se dun xeito que 1313 01:09:10,490 --> 01:09:14,170 Clang está intentando axudarnos a certeza de que non estamos só usando variables 1314 01:09:14,170 --> 01:09:18,819 e, a continuación, chamando-os inadvertidamente outra cousa máis tarde no noso código, 1315 01:09:18,819 --> 01:09:21,649 axudándonos a evitar erros desa forma. 1316 01:09:23,130 --> 01:09:28,810 >> Todo ben, entón temos de entrada de usuario, 1317 01:09:28,810 --> 01:09:31,910 que foi almacenada nunha variable. 1318 01:09:31,910 --> 01:09:34,569 O paso seguinte foi entón 1319 01:09:34,569 --> 01:09:37,609 comezar a ollar para todos os carácteres na cadea 1320 01:09:37,609 --> 01:09:41,830 e identificar cales son os que están a ser maiúscula 1321 01:09:41,830 --> 01:09:44,600 e cales deben ser minúsculas. 1322 01:09:44,600 --> 01:09:49,439 E como Kelly e Charlotte trouxo, 1323 01:09:49,439 --> 01:09:52,340 Facemos isto usando un loop for. 1324 01:09:52,340 --> 01:09:55,520 Entón, se alguén se lembrar da sintaxe dun loop 1325 01:09:55,520 --> 01:09:58,670 e quere tomar unha facada en só escribir 1326 01:09:58,670 --> 01:10:03,170 a primeira liña do loop, só para pouco? 1327 01:10:05,740 --> 01:10:07,330 Kelly, quere tentar? 1328 01:10:07,330 --> 01:10:10,300 >> Si, entón ten que arrincar primeiro, 1329 01:10:10,300 --> 01:10:13,170 por iso eu coloque i = 0, 1330 01:10:13,170 --> 01:10:15,390 e entón eu fixen i 01:10:18,570 Está no seu espazo - podo tirar para arriba? 1332 01:10:18,570 --> 01:10:21,330 >> Si, eu estraguei todo un pouco, mais si. 1333 01:10:21,330 --> 01:10:24,180 >> Ok, imos puxa-lo cara arriba. 1334 01:10:24,180 --> 01:10:26,490 Impresionante. 1335 01:10:26,490 --> 01:10:29,510 >> Pero entón eu non sabía se tiña que - 1336 01:10:29,510 --> 01:10:32,180 Si, está ben. 1337 01:10:33,020 --> 01:10:36,030 Entón, aquí está o que Kelly ten: imos ollar rapidamente. 1338 01:10:36,030 --> 01:10:40,290 Entón está incluída a biblioteca CS50 na parte superior. 1339 01:10:40,290 --> 01:10:44,790 Ela está incluída a biblioteca IO estándar na parte superior, 1340 01:10:45,550 --> 01:10:48,990 eo IO estándar ten funcións como printf, 1341 01:10:48,990 --> 01:10:51,690 por iso, se quere usar printf, precisas desa liña. 1342 01:10:53,060 --> 01:10:56,140 E entón ela incluíu a biblioteca cadea, 1343 01:10:56,140 --> 01:10:58,200 que vai ter, 1344 01:10:58,200 --> 01:11:01,010 porque a biblioteca cadea ten strlen función, 1345 01:11:01,010 --> 01:11:04,320 que nós imos chegar a algo. 1346 01:11:04,320 --> 01:11:07,560 Entón, se olharmos para o que Kelly está feito aquí, 1347 01:11:07,560 --> 01:11:10,260 pode andar nos o que fixo? 1348 01:11:10,260 --> 01:11:13,600 >> Si, entón - É dicir, eu teño erros, entón - 1349 01:11:13,600 --> 01:11:15,380 Si, non, é dicir - 1350 01:11:15,380 --> 01:11:18,580 >> Entón, eu quería chamar a secuencia que eu teño só "cadea". 1351 01:11:18,580 --> 01:11:22,230 Eu quería imprimir a cadea 1352 01:11:22,230 --> 01:11:25,640 e entón eu - 1353 01:11:27,450 --> 01:11:30,930 Eu quería gusta definir a secuencia como como unha matriz de cada personaxe 1354 01:11:30,930 --> 01:11:33,170 ser diferente [inaudível], non? 1355 01:11:33,170 --> 01:11:38,080 E entón eu quería comezar na posición 0 1356 01:11:38,080 --> 01:11:40,630 e despois cada dous espazos, 1357 01:11:40,630 --> 01:11:42,580 Eu estaba indo para capitalizar, 1358 01:11:42,580 --> 01:11:45,680 entón eu só describiu como 23, porque eu estaba mirando para a táboa ASCII. 1359 01:11:45,680 --> 01:11:48,730 Entón é iso que eu estaba a pensar - Eu sei que non é certo. 1360 01:11:48,730 --> 01:11:50,920 >> Entendín, entón este é un gran comezo. 1361 01:11:50,920 --> 01:11:54,120 Eu creo que unha morea de cadro está no lugar aquí. 1362 01:11:54,120 --> 01:11:57,500 Imos pasar por tipo de liña por liña e ver o que está a suceder. 1363 01:11:57,500 --> 01:12:01,040 Así, o xeito que máis me gusta de facer isto é só comezar por compilar o código 1364 01:12:01,040 --> 01:12:04,300 e deixar o compilador me dicir como o que hai de malo co meu código, 1365 01:12:04,300 --> 01:12:07,450 porque o compilador é realmente boa en dicir o que está mal co seu código. 1366 01:12:09,790 --> 01:12:12,780 Entón, se nós xoga-lo, construíndo, e non construír. 1367 01:12:12,780 --> 01:12:14,860 El di que houbo un erro, 1368 01:12:14,860 --> 01:12:17,320 así, se rolar para abaixo e ollar para o primeiro erro, 1369 01:12:17,320 --> 01:12:20,960 el dixo - 1370 01:12:20,960 --> 01:12:22,040 que rolar de volta ata o cumio, 1371 01:12:22,040 --> 01:12:26,070 podemos ver, hai 5 erros xerados aquí na parte inferior. 1372 01:12:26,070 --> 01:12:30,180 Uups, que está realmente cortada. 1373 01:12:31,810 --> 01:12:35,790 Coido que só non pode ir mellor. 1374 01:12:36,970 --> 01:12:38,500 >> Aquí imos nós. 1375 01:12:39,790 --> 01:12:42,530 Polo tanto, hai 5 erros totais xerados. 1376 01:12:42,530 --> 01:12:45,140 Aquí eu só podo ver os 2 primeiros, 1377 01:12:45,140 --> 01:12:49,100 para que eu poida pasar esta un pouco e, a continuación, tipo de rolagem para arriba. 1378 01:12:49,100 --> 01:12:53,220 Este é o comando que se executa para compilar o código, 1379 01:12:53,220 --> 01:12:59,030 e, a continuación, o primeiro erro foi file.c aquí: 1380 01:12:59,030 --> 01:13:03,300 "Esperábase identificar ou '('", e foi nesta liña 1381 01:13:03,300 --> 01:13:06,680 onde dixen cadea = GetString (). 1382 01:13:07,660 --> 01:13:12,920 Podes ver aquí que era na liña 8 da file.c, 1383 01:13:12,920 --> 01:13:17,230 e entón eu creo que este é de 12 caracteres - que é o erro. 1384 01:13:17,230 --> 01:13:20,390 Entón, o que está a suceder de malo na liña 8 - Kelly? 1385 01:13:20,390 --> 01:13:22,810 >> Só ten que chamalo, como unha carta ou algo así, 1386 01:13:22,810 --> 01:13:24,400 como cadea s ou algo así? 1387 01:13:24,400 --> 01:13:28,250 Si, entón dedúcese que estes nomes de tipos especiais, 1388 01:13:28,250 --> 01:13:31,770 para cadea, int, char, short, 1389 01:13:31,770 --> 01:13:35,740 todos eles son palabras clave especiais, 1390 01:13:35,740 --> 01:13:38,940 e non pode realmente usalos como nomes das súas variables, 1391 01:13:38,940 --> 01:13:41,430 porque o compilador mira para o e di, 1392 01:13:41,430 --> 01:13:43,680 "Oh, eu sei que é un tipo", 1393 01:13:43,680 --> 01:13:46,530 para que non pode realmente ter unha variable cadea chamada cadea, 1394 01:13:46,530 --> 01:13:50,800 como eu estou tentando facer aquí, e iso non vai funcionar. 1395 01:13:52,610 --> 01:13:58,250 Pero en vez diso, podemos chamalo algo como s ou st ou str. 1396 01:13:58,250 --> 01:14:01,540 Tampouco podería chamalo de int. 1397 01:14:01,540 --> 01:14:03,740 Non podemos ter unha cadea chamada int. 1398 01:14:03,740 --> 01:14:06,740 Non podemos ter unha cadea chamada char; ningún deses vai funcionar. 1399 01:14:06,740 --> 01:14:09,420 >> Entón imos chamalo s para o momento. 1400 01:14:10,630 --> 01:14:13,170 Impresionante. 1401 01:14:13,170 --> 01:14:17,500 Entón, o que está a suceder próximo nesta liña? 1402 01:14:21,390 --> 01:14:24,350 Cadea - esta liña parece moi bo? 1403 01:14:24,350 --> 01:14:27,830 Imos tentar unha vez máis, imos executalo. 1404 01:14:27,830 --> 01:14:30,360 Ok, entón aínda obter erros. 1405 01:14:30,360 --> 01:14:32,080 Esta vez, estamos reducidos a catro erros. 1406 01:14:32,080 --> 01:14:34,350 Entón temos un deles. 1407 01:14:34,350 --> 01:14:36,130 Imos subir. 1408 01:14:36,130 --> 01:14:38,890 "'Cadea' nome do tipo inesperado: expresión esperado", si? 1409 01:14:38,890 --> 01:14:41,780 >> Si, iso é porque eu tente citar a cadea. 1410 01:14:41,780 --> 01:14:44,270 Si, entón parece que agora tamén ten que ir corrección 1411 01:14:44,270 --> 01:14:46,560 todas estas referencias a cadea. 1412 01:14:46,560 --> 01:14:50,070 Podes ver que hai unha referencia a corda aquí, aquí, aquí, 1413 01:14:50,070 --> 01:14:53,440 para que poidamos pasar todo isto para s. 1414 01:14:56,040 --> 01:15:00,930 Grande. Ok, executa-lo de novo. 1415 01:15:00,930 --> 01:15:03,260 Edificio - outro erro. 1416 01:15:03,260 --> 01:15:06,900 >> Ok, agora estamos reducidos a un erro, 1417 01:15:06,900 --> 01:15:11,090 así int i = S e despois os corchetes. 1418 01:15:11,090 --> 01:15:14,880 Entón podes contar un pouco sobre o que estaba facendo aquí, Kelly? 1419 01:15:14,880 --> 01:15:17,120 Si >>. 1420 01:15:17,120 --> 01:15:19,410 Foi na liña 10. 1421 01:15:19,410 --> 01:15:22,760 >> Eu non sei se necesitabamos de todo, 1422 01:15:22,760 --> 01:15:25,560 pero eu creo que eu estaba tentando - 1423 01:15:25,560 --> 01:15:27,580 Vou gardar isto para que poida seguir. 1424 01:15:27,580 --> 01:15:30,470 >> Eu creo que foi 1425 01:15:30,470 --> 01:15:33,150 tentando dicir a el para comezar na posición 0 1426 01:15:33,150 --> 01:15:35,030 no comezo do meu loop, 1427 01:15:35,030 --> 01:15:38,370 entón eu creo que quizais dicindo era innecesario. 1428 01:15:39,690 --> 01:15:41,350 Entón, só para recapitular, 1429 01:15:41,350 --> 01:15:44,850 estaba dicindo que este - que estaba a tentar iniciar este na posición 0 1430 01:15:44,850 --> 01:15:47,030 e esta - si, 1431 01:15:47,030 --> 01:15:50,460 entón eu creo que máis cedo, tamén, cando estaba camiñando polo código, 1432 01:15:50,460 --> 01:15:54,070 estaba falando sobre como quería tratar a cadea como un array 1433 01:15:54,070 --> 01:15:57,440 para que poidamos acceder cada personaxe individual. 1434 01:15:57,440 --> 01:16:00,660 Creo matrices Dan mencionar, tamén, intentando converter cadeas en matrices. 1435 01:16:01,400 --> 01:16:03,300 >> Acontece que tipo de baixo o capo, 1436 01:16:03,300 --> 01:16:06,060 unha cadea é almacenado como unha matriz xa, 1437 01:16:06,060 --> 01:16:08,060 e pode acceder a ela como unha matriz; 1438 01:16:08,060 --> 01:16:12,390 non hai ningunha conversión que ten que facer. 1439 01:16:12,390 --> 01:16:15,770 A isnt cadea - así - 1440 01:16:15,770 --> 01:16:18,200 unha corda non é realmente unha matriz, 1441 01:16:18,200 --> 01:16:21,940 pero pode acceder-lo como tal, porque todos os personaxes son almacenados 1442 01:16:21,940 --> 01:16:25,160 unha ao lado uns dos outros na memoria, 1443 01:16:25,160 --> 01:16:28,310 por iso, se quere obter o primeiro carácter da cadea, 1444 01:16:28,310 --> 01:16:31,910 É o mesmo que incorporarse o primeiro número enteiro nunha matriz de enteiros. 1445 01:16:31,910 --> 01:16:35,010 Entón, moitas veces - nós 1446 01:16:35,010 --> 01:16:36,360 refírense a dous como 1447 01:16:36,360 --> 01:16:38,590 oh, como unha cadea, como unha matriz, 1448 01:16:38,590 --> 01:16:40,830 aínda que en realidade - son cousas moi diferentes, 1449 01:16:40,830 --> 01:16:43,410 pero pode trata-los moi moi mesmo. 1450 01:16:44,700 --> 01:16:47,400 Así, verifícase que esta liña de feito - 1451 01:16:47,400 --> 01:16:51,270 Non é preciso facer calquera conversión, 1452 01:16:51,270 --> 01:16:53,500 e, de feito, 1453 01:16:53,500 --> 01:16:56,790 iso en realidade non é unha expresión válida, 1454 01:16:56,790 --> 01:16:59,040 que é o que o noso compilador está nos dicindo. 1455 01:16:59,040 --> 01:17:01,290 Está dicindo: "Ei, espérase unha expresión, 1456 01:17:01,290 --> 01:17:04,610 e que eu teño aquí é algo que non é unha expresión. " 1457 01:17:04,610 --> 01:17:07,310 Para declarar unha matriz, 1458 01:17:07,310 --> 01:17:11,780 todo o que precisa facer é algo así como este con un punto e coma, 1459 01:17:11,780 --> 01:17:15,080 e despois dicir a matriz canto tempo queres que sexa, 1460 01:17:15,080 --> 01:17:18,370 como 5, polo que esta liña 10 1461 01:17:18,370 --> 01:17:23,880 ha declarar unha matriz chamada i con 5 enteiros nel. 1462 01:17:23,880 --> 01:17:26,540 >> Trata-se dun lado, o que non é necesario para o código, 1463 01:17:26,540 --> 01:17:30,970 pero este é - este é o tipo que a declaración parece. 1464 01:17:30,970 --> 01:17:35,310 >> Como non ía utilizar char I [strlen (s)]? 1465 01:17:35,310 --> 01:17:38,500 Char I [strlen (s)]? 1466 01:17:38,500 --> 01:17:41,500 >> Carácter i, e despois dentro do paréntesis, strlen (s). 1467 01:17:43,900 --> 01:17:47,710 Si, para que pudéssemos - 1468 01:17:47,710 --> 01:17:49,460 poderiamos facelo, 1469 01:17:49,460 --> 01:17:52,160 e iso sería declarar - o que iso fai? 1470 01:17:52,160 --> 01:17:55,900 >> Eu penso que sería declarar unha matriz 1471 01:17:55,900 --> 01:18:01,780 de, como - de - 1472 01:18:01,780 --> 01:18:04,540 oh, non do I - oh, 1473 01:18:04,540 --> 01:18:06,420 Si, definitivamente non precisa do i. 1474 01:18:06,420 --> 01:18:10,250 Vostede declara unha matriz de caracteres 1475 01:18:10,250 --> 01:18:13,150 s de lonxitude. 1476 01:18:14,680 --> 01:18:16,770 E entón o que Sam está dicindo é que 1477 01:18:16,770 --> 01:18:20,660 esta liña 10 - deixe-me poñer un pouco de espazo entre el eo resto para que poidamos illar-lo - 1478 01:18:20,660 --> 01:18:23,440 esta liña 10 sería declarar unha matriz 1479 01:18:23,440 --> 01:18:28,520 caracteres, strlen pena (s) deles, 1480 01:18:28,520 --> 01:18:32,270 pero nós realmente necesitamos do i, 1481 01:18:32,270 --> 01:18:35,710 ea razón necesitamos do I é porque necesitamos dar a matriz un nome; 1482 01:18:35,710 --> 01:18:38,900 en caso contrario, non tería unha forma de referirse á matriz a finais do código. 1483 01:18:38,900 --> 01:18:41,180 >> Entón, iso aquí é o nome da matriz 1484 01:18:41,180 --> 01:18:43,420 e no interior é a lonxitude. 1485 01:18:43,420 --> 01:18:45,010 Isto dará unha matriz, 1486 01:18:45,010 --> 01:18:47,430 pero isto é - unha vez máis, esta é unha declaración. 1487 01:18:47,430 --> 01:18:50,380 Non é unha tarefa, non é unha inicialización. 1488 01:18:50,380 --> 01:18:52,330 Declararse esta matriz coma este, 1489 01:18:52,330 --> 01:18:54,490 en realidade existe nada no contido da matriz. 1490 01:18:54,490 --> 01:18:57,490 É só lixo - o que está aí dentro. 1491 01:18:57,490 --> 01:18:59,780 E, como dixemos, 1492 01:18:59,780 --> 01:19:01,340 nós realmente non precisa aínda de facer esta conversión, 1493 01:19:01,340 --> 01:19:04,810 porque xa podemos tratar cadea s como unha matriz. 1494 01:19:06,750 --> 01:19:09,170 Sei que estamos correndo un pouco longo no tempo, 1495 01:19:09,170 --> 01:19:12,330 pero eu quero só realmente rápido chegar a este loop 1496 01:19:12,330 --> 01:19:14,850 e amosar-lle como acceder os caracteres individuais na matriz, 1497 01:19:14,850 --> 01:19:17,170 porque iso é fundamental para a nosa misión. 1498 01:19:17,170 --> 01:19:20,790 E entón imos deixalo de alí ir. 1499 01:19:20,790 --> 01:19:24,610 >> Entón, aquí, temos un loop 1500 01:19:24,610 --> 01:19:28,310 que parece case bo. 1501 01:19:28,310 --> 01:19:30,960 O que non é así case alí? 1502 01:19:30,960 --> 01:19:33,240 What 's - o que non está seguro sobre iso por lazo? 1503 01:19:33,240 --> 01:19:36,010 Non >> claves? 1504 01:19:36,010 --> 01:19:38,420 Non chaves, por exemplo. 1505 01:19:38,420 --> 01:19:42,580 Quero estar seguro de que temos o corpo do lazo con chaves. 1506 01:19:42,580 --> 01:19:45,240 Oops, non cinta praza! 1507 01:19:45,240 --> 01:19:48,660 E cal é a seguinte cousa que cómpre facer con este ciclo? 1508 01:19:48,660 --> 01:19:52,640 Se eu tentar executa-lo, 1509 01:19:52,640 --> 01:19:56,740 o que é este erro que eu recibín? 1510 01:19:56,740 --> 01:20:00,990 Eu recibín todos estes erros - Eu teño que arrincar i. 1511 01:20:00,990 --> 01:20:03,610 Grande. 1512 01:20:03,610 --> 01:20:05,770 Entón, iso vai ser un loop - iso non é moi alá, 1513 01:20:05,770 --> 01:20:08,680 pero está quedando moi preto. 1514 01:20:08,680 --> 01:20:11,260 Este código que pode correr, 1515 01:20:11,260 --> 01:20:14,620 construír un erro aínda ocorre. 1516 01:20:17,960 --> 01:20:19,800 Por que aínda está reclamando, 1517 01:20:19,800 --> 01:20:22,030 dicindo que a expresión non é utilizada, 1518 01:20:22,030 --> 01:20:24,600 e iso é porque esta liña non fai nada. 1519 01:20:24,600 --> 01:20:27,620 Non almacena-lo en calquera lugar, non gardar o resultado. 1520 01:20:27,620 --> 01:20:30,210 Onde debemos estar salvando ese resultado? 1521 01:20:30,210 --> 01:20:32,920 >> S ou i? 1522 01:20:32,920 --> 01:20:35,990 Exactamente, e sintaxe este funky, 1523 01:20:35,990 --> 01:20:38,550 este está cos corchetes 1524 01:20:38,550 --> 01:20:41,500 significa acceder ao carácter i de s. 1525 01:20:41,500 --> 01:20:45,650 Isto vai ser algo que é realmente importante para a asignación. 1526 01:20:45,650 --> 01:20:48,070 Desafortunadamente, imos ter que deixar por aquí, 1527 01:20:48,070 --> 01:20:50,550 para que a sección Sebastian pode entrar, 1528 01:20:50,550 --> 01:20:53,980 pero estou feliz de estar fóra e despois vai sacar algunha dúbida. 1529 01:20:53,980 --> 01:20:56,680 Por iso, gracias a vós por teren benvida. 1530 01:20:56,680 --> 01:20:59,730 Isto debe agora facer a carga, construír, comunicar. 1531 01:21:01,570 --> 01:21:04,320 Podemos introducir unha cadea como "Ola" 1532 01:21:06,570 --> 01:21:08,730 e imprime "QOX". 1533 01:21:08,730 --> 01:21:11,030 [Risas] 1534 01:21:11,030 --> 01:21:14,640 >> Así non chegamos alí, pero en movemento, quedando para os loops! 1535 01:21:14,640 --> 01:21:18,640 Grazas por ter vido, e eu vou estar fóra.