1 00:00:00,000 --> 00:00:07,070 [Powered by Google Translate] [♪ ♪ Buzzing] 2 00:00:07,070 --> 00:00:10,380 Então, para apresentar-lhe o que eu tenho na tela; 3 00:00:10,380 --> 00:00:12,710 é uma das ferramentas que desenvolvemos durante o verão; 4 00:00:12,710 --> 00:00:15,530 ele é chamado CS50 Spaces, 5 00:00:15,530 --> 00:00:18,860 e é nossa aplicação colaborativa de codificação 6 00:00:18,860 --> 00:00:20,180 que nós estamos indo para usar em seções. 7 00:00:20,180 --> 00:00:22,470 É muito legal. 8 00:00:22,470 --> 00:00:26,040 Algum de vocês já viu CS50 corrida ainda? 9 00:00:26,040 --> 00:00:29,760 Deixa-me tirar-se que em outra guia. 10 00:00:29,760 --> 00:00:33,440 Run.cs50.net 11 00:00:33,440 --> 00:00:36,230 Assim 12 00:00:36,230 --> 00:00:39,700 se você vai para run.cs50.net, 13 00:00:39,700 --> 00:00:43,030 você pode ver este é um navegador em seu caminho para 14 00:00:43,030 --> 00:00:45,940 na verdade, o código - escrever código C, 15 00:00:45,940 --> 00:00:47,460 e depois executá-lo, 16 00:00:47,460 --> 00:00:50,960 por isso tanto o compila, executa-lo, em seguida, retorna a saída para você, 17 00:00:50,960 --> 00:00:53,350 por isso este é um tipo de uma forma legal para experimentar 18 00:00:53,350 --> 00:00:56,060 com parte do código que David vai mais em palestras 19 00:00:56,060 --> 00:00:58,640 e nós damos a em você em conjuntos de problemas 20 00:00:58,640 --> 00:01:01,900 sem realmente ter que demitir-se do aparelho. 21 00:01:01,900 --> 00:01:04,489 >> Então, o que faz espaços que é diferente do que 22 00:01:04,489 --> 00:01:07,450 se eu voltar a este guia, 23 00:01:07,450 --> 00:01:11,580 Espaços é CS50 corrida, como você vê aqui, 24 00:01:11,580 --> 00:01:15,380 mas, se se deslocar sobre e olhar para o outro lado da janela, 25 00:01:15,380 --> 00:01:18,130 você vê a direita Eu sou a única pessoa neste espaço, 26 00:01:18,130 --> 00:01:21,030 mas o que eu vou fazer é pedir vocês para aderir a este espaço comigo 27 00:01:21,030 --> 00:01:24,590 e todos nós vamos chegar ao código na mesma janela pequena, 28 00:01:24,590 --> 00:01:26,070 partes de código com o outro, 29 00:01:26,070 --> 00:01:28,900 e falar sobre as diferenças entre o nosso código. 30 00:01:28,900 --> 00:01:31,530 Então, é um tipo de coisa legal - 31 00:01:31,530 --> 00:01:35,770 de modo a se juntar, se você visitar este link aqui no topo 32 00:01:35,770 --> 00:01:38,980 que eu destaque, 33 00:01:38,980 --> 00:01:53,860 você pode apenas digitar apps.cs50.net/spaces/vqcspSnO. 34 00:01:53,860 --> 00:01:56,610 >> Tudo bem, então, para começar, 35 00:01:56,610 --> 00:01:59,720 Eu vou dar-lhe um pouco de uma visita a este. 36 00:01:59,720 --> 00:02:01,720 Nós vamos fazer alguma codificação idiotas com ele em primeiro lugar, 37 00:02:01,720 --> 00:02:06,200 apenas para que todo mundo meio que fica uma sensação de que é como, 38 00:02:06,200 --> 00:02:09,000 mas o que eu fiz - 39 00:02:09,000 --> 00:02:11,830 ou o que eu vou fazer aqui é - 40 00:02:11,830 --> 00:02:13,480 Eu vou pegar o código que eu tenho escrito aqui, 41 00:02:13,480 --> 00:02:15,800 que, como você vê agora é vazio; 42 00:02:15,800 --> 00:02:17,090 ele não faz nada. 43 00:02:17,090 --> 00:02:21,080 É apenas o código placa de caldeira, vamos chamá-lo. 44 00:02:21,080 --> 00:02:23,820 Com um pouco de coisas a fazer comentário. 45 00:02:23,820 --> 00:02:27,850 Vou guardá-lo por bater este botão Salvar. 46 00:02:27,850 --> 00:02:30,190 E o que isso faz é 47 00:02:30,190 --> 00:02:34,400 destacou-lo aqui brevemente - que a revisão caixa salvar verde, 48 00:02:34,400 --> 00:02:37,570 e agora, se você procurar por mim no espaço, 49 00:02:37,570 --> 00:02:40,340 clicar em meu nome, 50 00:02:40,340 --> 00:02:43,370 você pode ver que eu tenho esta revisão aqui, 51 00:02:43,370 --> 00:02:45,490 e se você clicar sobre a revisão, 52 00:02:45,490 --> 00:02:48,240 ele vai carregar esse código no seu espaço, também. 53 00:02:50,510 --> 00:02:54,160 >> Então todo mundo tem carregado esse código em seu espaço? 54 00:02:54,160 --> 00:02:57,810 Tudo bem, se você ainda não tiver, vá em frente e fazer isso, 55 00:02:57,810 --> 00:03:01,120 e então o que eu quero que vocês fazem neste pouco a fazer parte 56 00:03:01,120 --> 00:03:05,940 é escrever um pouco sobre si mesmo usando printf, 57 00:03:05,940 --> 00:03:08,310 assim, por exemplo, eu iria escrever 58 00:03:08,310 --> 00:03:12,270 printf ("Meu nome é Nate"); 59 00:03:15,140 --> 00:03:17,700 e então eu ia escrever 60 00:03:17,700 --> 00:03:21,660 "Eu me formei em 2009 61 00:03:21,660 --> 00:03:24,440 de Stanford " 62 00:03:26,050 --> 00:03:28,390 e eu gostaria de ouvir sobre 63 00:03:28,390 --> 00:03:30,270 em que ano você está na escola, 64 00:03:30,270 --> 00:03:33,910 se você está na faculdade ou a escola de negócios 65 00:03:33,910 --> 00:03:36,130 ou uma outra escola de Harvard, 66 00:03:36,130 --> 00:03:39,200 o que você está estudando se é conhecido ainda; 67 00:03:39,200 --> 00:03:41,290 se não for conhecido, que é totalmente legal. 68 00:03:41,290 --> 00:03:45,170 Eu não decidir até que eu estava atrasado em meu segundo ano. 69 00:03:46,910 --> 00:03:49,210 e então eu também gostaria de saber 70 00:03:49,210 --> 00:03:51,610 nenhuma loucura que você quer me dizer ou 71 00:03:51,610 --> 00:03:54,790 algo sobre a classe ou simplesmente qualquer outra coisa. 72 00:03:56,930 --> 00:04:00,370 Quando você terminar de escrever que, com o seu printf pouco, 73 00:04:00,370 --> 00:04:03,480 se você vai salvar a revisão ou melhor 74 00:04:03,480 --> 00:04:06,080 primeiro certifique-se que você pode executá-lo 75 00:04:06,080 --> 00:04:10,640 e que mostra exatamente o que você quer imprimir, 76 00:04:14,050 --> 00:04:16,399 e então se você ir em frente e salve essa revisão 77 00:04:16,399 --> 00:04:21,600 Revisão usando o botão Salvar, esse cara primeiro pouco mais aqui, 78 00:04:24,080 --> 00:04:27,340 e nós meio que passar e fazer uma pequena introdução dessa maneira. 79 00:04:27,340 --> 00:04:30,150 Portanto, você deve apenas tem que apertar o botão Play, 80 00:04:30,150 --> 00:04:32,550 que está aqui em cima no canto superior esquerdo, 81 00:04:32,550 --> 00:04:35,340 por isso este botão Play no canto superior esquerdo vontade 82 00:04:35,340 --> 00:04:39,050 envie seu código fora para o nosso servidor onde ele é compilado e depois executado. 83 00:04:40,600 --> 00:04:43,300 Então, o que é meio louco por isso é 84 00:04:43,300 --> 00:04:46,550 esse código realmente não está sendo executado no seu computador; 85 00:04:46,550 --> 00:04:49,290 ele está realmente a ser enviados através da Internet. 86 00:04:49,290 --> 00:04:51,240 >> Como vai isso, Charlotte? 87 00:04:51,240 --> 00:04:54,810 >> I - bem. Eu - Eu acho que eu sou 88 00:04:54,810 --> 00:04:57,330 tendo dificuldades de salvá-lo 89 00:04:57,330 --> 00:05:00,530 no servidor de tal forma que posso - eu posso executar o programa. 90 00:05:02,090 --> 00:05:05,780 E então, quando eu tento rodar, ele diz que há um erro. 91 00:05:05,780 --> 00:05:08,850 Declarado como um vírus, o que não está lá mais. 92 00:05:08,850 --> 00:05:11,860 Oh, vamos ver, você pode bater em Salvar novamente? 93 00:05:11,860 --> 00:05:13,770 Eu vejo isso na tela. 94 00:05:13,770 --> 00:05:15,120 Direito >>, tudo bem, então é isso que eu tenho. 95 00:05:15,120 --> 00:05:19,430 E eu não sei por que não me deixa executá-lo. 96 00:05:22,990 --> 00:05:24,990 Ah, ok, desculpe. 97 00:05:27,930 --> 00:05:31,220 Você pode explicar por que - o que estava errado - o que não foi trabalhar com ele? 98 00:05:31,220 --> 00:05:34,760 >> Sim, porque eu não vi que havia uma última linha, onde ainda há uma variável 99 00:05:34,760 --> 00:05:37,700 que eu não tinha declarado, que eu não tinha a intenção de se estar lá. 100 00:05:37,700 --> 00:05:38,730 Sim, perfeito! 101 00:05:38,730 --> 00:05:40,390 >> Agora, se eu salvá-lo, eu acho que ele deve funcionar. 102 00:05:40,390 --> 00:05:42,970 Agora que você já salvou, ele funciona; impressionante. 103 00:05:42,970 --> 00:05:44,570 >> Então, sim, como nós atravessamos - 104 00:05:44,570 --> 00:05:46,690 Então, o que estava acontecendo, 105 00:05:46,690 --> 00:05:49,130 Eu só vou repetir isso para a câmera. 106 00:05:49,130 --> 00:05:51,760 O que estava acontecendo era que esta variável s 107 00:05:51,760 --> 00:05:54,310 foi deixado em pós - Eu suponho que você eliminado algumas outras coisas 108 00:05:54,310 --> 00:05:56,670 onde você declarou como, 109 00:05:56,670 --> 00:05:59,560 e por isso esta foi jogar coisas fora e não estava permitindo que você execute-o. 110 00:05:59,560 --> 00:06:02,540 Portanto, este é exatamente o que nós queremos fazer na seção 111 00:06:02,540 --> 00:06:05,690 é que as pessoas tentam escrever peças diferentes do código, 112 00:06:05,690 --> 00:06:08,490 compilá-lo, ver o que funciona, ver o que não faz, 113 00:06:08,490 --> 00:06:10,730 e depois meio que falar sobre essas coisas, porque são pontos de disparo que 114 00:06:10,730 --> 00:06:12,850 Eu ainda encontrar, 115 00:06:12,850 --> 00:06:15,470 Eu ainda - Eu faço muitas coisas bobas o tempo todo, 116 00:06:15,470 --> 00:06:17,820 e eu não sei por que ele não funciona, 117 00:06:17,820 --> 00:06:22,960 então vamos puxar revisão Charlotte 3, 118 00:06:23,980 --> 00:06:25,380 e vamos executá-lo. 119 00:06:25,380 --> 00:06:28,950 >> Então, quando eu correr, agora que eu tenho o código dela aqui, 120 00:06:28,950 --> 00:06:31,450 Posso aumentar o zoom, aperte o botão Run, 121 00:06:31,450 --> 00:06:33,680 envios isso, constrói, executa, 122 00:06:33,680 --> 00:06:36,980 diz que correu com sucesso, e se eu rolar para baixo, 123 00:06:36,980 --> 00:06:39,440 ver Charlotte é um júnior em Adams House, 124 00:06:39,440 --> 00:06:42,720 psicologia, secundário na economia; impressionante. 125 00:06:42,720 --> 00:06:44,310 Ótimo para conhecê-lo! 126 00:06:44,310 --> 00:06:46,550 Impressionante. 127 00:06:46,550 --> 00:06:49,670 Ok, seguindo em frente, vamos para Daniel, 128 00:06:49,670 --> 00:06:52,710 ir para revisão 3, 129 00:06:52,710 --> 00:06:54,180 compilar, executar; 130 00:06:54,180 --> 00:06:56,680 por que você não conte-nos um pouco sobre você, Daniel? 131 00:06:56,680 --> 00:06:59,380 Chame-me Dan >>. 132 00:06:59,380 --> 00:07:01,920 Eu estou indo para a escola de negócios através de vocês, 133 00:07:01,920 --> 00:07:05,020 e eu estava na Marinha antes aqui, 134 00:07:05,020 --> 00:07:08,020 e isto é tudo novo para mim, então sim. 135 00:07:08,020 --> 00:07:11,060 Não se sinta mal, eu sou 30 e eu não sei nada dessas coisas. 136 00:07:11,060 --> 00:07:13,800 Awesome; graças, Dan! 137 00:07:13,800 --> 00:07:17,300 Tudo bem, temos outro Daniel. 138 00:07:17,300 --> 00:07:20,930 Você vai por Daniel - você vai se apresentar, Daniel? 139 00:07:20,930 --> 00:07:22,260 >> >> Claro, eu sou o Daniel. 140 00:07:22,260 --> 00:07:24,330 Eu sou um estudante do segundo ano Mather agora. 141 00:07:24,330 --> 00:07:25,840 Estou me concentrando sobre o governo, 142 00:07:25,840 --> 00:07:28,760 mas eu queria levar CS50 porque já ouvi ótimas críticas sobre a classe 143 00:07:28,760 --> 00:07:30,750 e eu nunca tentei CS antes. 144 00:07:30,750 --> 00:07:34,680 Desça até aqui e mostrar isso - cool. 145 00:07:36,330 --> 00:07:39,090 Seguindo em frente, Jared. 146 00:07:39,090 --> 00:07:41,990 Como vai isso? 147 00:07:41,990 --> 00:07:43,430 >> Bom, como você está? 148 00:07:43,430 --> 00:07:47,520 Como você pode ver, eu sou um concentrador de filosofia júnior em Eliot, 149 00:07:47,520 --> 00:07:50,260 originalmente do sul da Califórnia, 150 00:07:50,260 --> 00:07:53,100 e eu estou interessado em tomar CS50 porque eu gosto da lógica de que, 151 00:07:53,100 --> 00:07:57,420 e parece muito legal de fazer as coisas no computador, então. 152 00:07:57,420 --> 00:07:59,570 Awesome; no sul da Califórnia, onde está você? 153 00:07:59,570 --> 00:08:02,340 >> Cerca de uma hora de [inaudível], uma pequena cidade [inaudível]. 154 00:08:02,340 --> 00:08:04,850 Ah, sim, meu pai é de Redlands. 155 00:08:04,850 --> 00:08:07,060 Coisas legais. 156 00:08:07,060 --> 00:08:12,130 >> Tudo bem, Jimmy, como vai, Jimmy? 157 00:08:12,130 --> 00:08:15,130 >> Bom, como você está? 158 00:08:15,130 --> 00:08:16,040 Indo muito bem! 159 00:08:16,040 --> 00:08:17,710 Conte-nos sobre si mesmo. 160 00:08:17,710 --> 00:08:20,840 >> Eu sou um calouro, e eu não estou totalmente certo do que estou formando em 161 00:08:20,840 --> 00:08:22,820 mas eu estou meio inclinado para a economia. 162 00:08:22,820 --> 00:08:25,680 Como Daniel antes de mim, eu nunca tinha feito qualquer CS, mas soa muito legal. 163 00:08:25,680 --> 00:08:28,120 Sou originalmente de Chicago. 164 00:08:28,120 --> 00:08:31,640 Impressionante. Então confira a sua impressão aqui. 165 00:08:31,640 --> 00:08:34,630 Eu queria perguntar, fez isso de impressão como você esperava? 166 00:08:34,630 --> 00:08:37,650 >> Não, eu esqueci de imprimir uma nova linha. 167 00:08:37,650 --> 00:08:41,270 Na verdade, eu esqueci que, quando eu estava escrevendo a minha coisa 168 00:08:41,270 --> 00:08:43,090 , pela primeira vez, também. 169 00:08:43,090 --> 00:08:46,330 É um tipo de dor que lembrar de colocar os manualmente. 170 00:08:46,330 --> 00:08:50,560 Seria bom se ele só sei que é o que você queria. 171 00:08:50,560 --> 00:08:53,630 >> Ok, Kelly. 172 00:08:53,630 --> 00:08:56,050 Uau, temos 2 Kellys; 2 Daniels, 2 Kellys. 173 00:08:56,050 --> 00:09:00,490 Então Kelly - você vai por Kelly Ren? 174 00:09:00,490 --> 00:09:03,870 Ok, impressionante. 175 00:09:03,870 --> 00:09:07,270 Ou Kelly, quero dizer. 176 00:09:07,270 --> 00:09:10,260 >> Então, sim, por isso estou Kelly. 177 00:09:10,260 --> 00:09:12,930 Eu sou um estudante de segundo ano em Pfoho. 178 00:09:12,930 --> 00:09:17,000 Recebi um e-mail hoje, que eu ainda tenho sete semanas para declarar a minha concentração, 179 00:09:17,000 --> 00:09:20,940 então eu estou tentando não pensar sobre isso, 180 00:09:20,940 --> 00:09:24,090 e eu gosto de fermento, corrida e craisins. 181 00:09:24,090 --> 00:09:29,110 Eu não tenho experiência com mais de CS; 182 00:09:29,110 --> 00:09:32,700 Aprendi a construir sites quando eu era muito jovem, 183 00:09:32,700 --> 00:09:35,750 mas eu acho que eu provavelmente me ensinou errado um monte de vezes. 184 00:09:35,750 --> 00:09:39,260 Espero aprender um pouco mais 185 00:09:39,260 --> 00:09:41,450 e - sim. 186 00:09:41,450 --> 00:09:44,100 >> Awesome; bem, obrigado. 187 00:09:44,100 --> 00:09:47,190 Vamos para o outro Kelly; 188 00:09:47,190 --> 00:09:48,880 Eu não tenho nada - disse alguma coisa aqui? 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 >> Tudo bem, então eu sou Kelly. 193 00:10:01,400 --> 00:10:03,980 Eu sou um estudante de graduação do primeiro ano. 194 00:10:03,980 --> 00:10:05,560 Estou formando em Mente, Cérebro Educação, e. 195 00:10:05,560 --> 00:10:07,940 Eu me formei em Franklin & Marshall College em 2008 196 00:10:07,940 --> 00:10:10,840 com especialização em psicologia e sociologia 197 00:10:10,840 --> 00:10:13,120 e um menor em 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 interessado em obter um doutorado em neurociência 200 00:10:18,080 --> 00:10:21,220 e eu sinto que isso irá me ajudar a entender as tecnologias que estão sendo usadas. 201 00:10:21,220 --> 00:10:23,150 Impressionante. 202 00:10:26,980 --> 00:10:29,390 Seguindo em frente, Mikaela. 203 00:10:29,390 --> 00:10:31,640 É que a pronúncia correta? 204 00:10:31,640 --> 00:10:32,990 Ok, impressionante. 205 00:10:32,990 --> 00:10:34,640 >> >> Sou Mikhaila. 206 00:10:34,640 --> 00:10:36,870 Eu sou um estudante de segundo ano em Kirkland House, 207 00:10:36,870 --> 00:10:39,950 e estou me concentrando em Engenharia Mecânica. 208 00:10:39,950 --> 00:10:43,180 Eu realmente gosto de ciclismo, construiu uma bicicleta neste verão. 209 00:10:43,180 --> 00:10:46,140 Estou levando CS, na verdade, 210 00:10:46,140 --> 00:10:48,350 como um requisito de concentração, 211 00:10:48,350 --> 00:10:52,550 mas você sabe, eu acho que ainda é tipo legal de classe de engenharia. 212 00:10:52,550 --> 00:10:55,150 Awesome - você construiu uma bicicleta neste verão? 213 00:10:55,150 --> 00:10:56,730 Sim >>. 214 00:10:56,730 --> 00:10:58,900 Uau, como a moldura e tudo isso? 215 00:10:58,900 --> 00:11:00,120 >> Uh-hunh (afirmativa). 216 00:11:00,120 --> 00:11:01,530 Uau, isso é muito legal. 217 00:11:01,530 --> 00:11:06,370 >> [Bate-papo fora da câmera inaudível] 218 00:11:06,370 --> 00:11:10,000 [Risos] 219 00:11:12,640 --> 00:11:14,200 Sim, tem sido assim por muito tempo. 220 00:11:14,200 --> 00:11:16,730 Você nunca sabe, né? 221 00:11:16,730 --> 00:11:19,420 Bem, legal; bem graças, Mikhaila. 222 00:11:19,420 --> 00:11:21,390 >> Tudo bem, Missy. 223 00:11:21,390 --> 00:11:23,280 Missy >> meu nome, eu sou um calouro, 224 00:11:23,280 --> 00:11:25,500 o que significa que eu não sei de nada! 225 00:11:25,500 --> 00:11:29,180 Eu quero me concentrar em astrofísica. 226 00:11:29,180 --> 00:11:31,220 Em CS50, 227 00:11:31,220 --> 00:11:33,350 Eu sinto que vai certamente ajudar com isso. 228 00:11:33,350 --> 00:11:37,750 Um fato estranho sobre mim é que eu sou um bombeiro nacional certificada. 229 00:11:37,750 --> 00:11:39,960 Wow! 230 00:11:39,960 --> 00:11:42,440 Como isso aconteceu? 231 00:11:42,440 --> 00:11:45,570 >> Eu participei de uma academia 232 00:11:45,570 --> 00:11:49,000 e passou por um inferno para um monte de semana 233 00:11:49,000 --> 00:11:51,200 e tenho a minha certificação. 234 00:11:51,200 --> 00:11:54,090 Uau, parabéns! 235 00:11:54,090 --> 00:11:57,280 Isso não é pouca coisa, com certeza. 236 00:11:57,280 --> 00:11:59,070 Ok, então agora vamos fazer de mim. 237 00:11:59,070 --> 00:12:01,290 Eu sou o próximo na linha. 238 00:12:01,290 --> 00:12:04,510 Eu - executá-lo. 239 00:12:04,510 --> 00:12:07,580 >> Então, meu nome é Nate. 240 00:12:07,580 --> 00:12:11,160 Eu era classe de 2009 em Stanford. 241 00:12:11,160 --> 00:12:13,840 Eu era um Sistemas Simbólicos principais, 242 00:12:13,840 --> 00:12:17,370 que é semelhante ao do, a concentração de Cérebro Mente Comportamento, aqui, 243 00:12:17,370 --> 00:12:19,300 mas é uma espécie de mistura de 244 00:12:19,300 --> 00:12:22,350 ciência da computação, lingüística, psicologia e filosofia. 245 00:12:22,350 --> 00:12:26,600 Tipo de - sim, um monte de coisas estranhas, mas foi ótimo, 246 00:12:26,600 --> 00:12:29,880 e então eu fiz o meu mestrado em Ciência da Computação lá, também. 247 00:12:29,880 --> 00:12:33,250 Então, eu sou novo para Harvard este ano. 248 00:12:33,250 --> 00:12:35,750 Eu realmente queria entrar no ensino. 249 00:12:35,750 --> 00:12:39,860 Eu passei os últimos quatro anos na Universidade de Stanford TA-ing aulas de informática 250 00:12:39,860 --> 00:12:43,370 e assim por David me venha, 251 00:12:43,370 --> 00:12:45,550 e eu vou estar ajudando com CS50, 252 00:12:45,550 --> 00:12:47,890 então eu faço isso em tempo integral, eu não estou na escola de pós-graduação. 253 00:12:47,890 --> 00:12:50,330 Tem sido divertido. 254 00:12:50,330 --> 00:12:53,130 Esperemos que ele vai continuar a ser divertido, eu tenho certeza que vai. 255 00:12:53,130 --> 00:12:56,040 >> Tudo bem, Sam. 256 00:13:01,910 --> 00:13:05,470 >> Meu nome é Sam, eu sou um estudante do segundo ano da faculdade, de direito, especificamente. 257 00:13:05,470 --> 00:13:10,110 Meu maior será a história da ciência, provavelmente, e VES secundário, 258 00:13:10,110 --> 00:13:13,240 e minha cor favorita é o amarelo. 259 00:13:18,790 --> 00:13:21,100 Não há necessidade de julgar nem nada, mas é uma boa cor! 260 00:13:21,100 --> 00:13:24,780 E Stella. 261 00:13:24,780 --> 00:13:26,980 >> Oi, eu sou Stella, eu sou um calouro na Grays. 262 00:13:26,980 --> 00:13:30,070 Eu não tenho idéia o que eu concentrada no entanto, 263 00:13:30,070 --> 00:13:32,500 assim CS50 era apenas uma espécie de forma aleatória, 264 00:13:32,500 --> 00:13:34,220 o que é interessante. 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 nós dois somos de Chicago. 267 00:13:38,360 --> 00:13:42,450 Cool, Graça e - que é suposto ser o único realmente bom, certo? 268 00:13:42,450 --> 00:13:45,220 >> Eu pensei que [inaudível]. 269 00:13:45,220 --> 00:13:46,690 Ah, sim. 270 00:13:46,690 --> 00:13:51,210 [Inaudível / chat câmera-] 271 00:13:51,210 --> 00:13:54,420 Ok, eu ainda estou aprendendo, ainda está aprendendo. 272 00:13:54,420 --> 00:13:57,800 >> Então temos outra coisa que é bem interessante aqui. 273 00:13:59,600 --> 00:14:02,870 Sim, eu estou pensando, você tem uma idéia que está acontecendo aqui? 274 00:14:02,870 --> 00:14:05,890 Você sabe como interpretar isso? 275 00:14:05,890 --> 00:14:13,340 >> Eu deveria ser colocado o ponto e vírgula após cada linha. 276 00:14:13,340 --> 00:14:16,370 Isso é um tipo de dor. 277 00:14:16,370 --> 00:14:19,100 Às vezes, essas vírgulas pode ser uma verdadeira dor de rastrear. 278 00:14:19,100 --> 00:14:21,420 Assim, verifica-se que 279 00:14:21,420 --> 00:14:22,820 o programa especial que estamos usando neste ano para 280 00:14:22,820 --> 00:14:26,670 compilar nosso código C é chamado Clang, 281 00:14:26,670 --> 00:14:29,460 eo motivo que começaram a usar Clang este ano - 282 00:14:29,460 --> 00:14:32,030 porque não ter usado esse programa no passado; 283 00:14:32,030 --> 00:14:35,710 nós usamos um outro chamado GCC que é realmente popular - 284 00:14:35,710 --> 00:14:38,420 Clang realmente lhe dá mensagens de erro que faz sentido. 285 00:14:38,420 --> 00:14:41,420 Este diz "esperar", "após a expressão", 286 00:14:41,420 --> 00:14:45,260 e ele ainda diz que a expressão depois que você precisava de um ponto e vírgula. 287 00:14:45,260 --> 00:14:47,830 Então você corrigi-lo? 288 00:14:47,830 --> 00:14:48,930 >> Sim, agora. 289 00:14:48,930 --> 00:14:52,040 Impressionante, deixe-me saber e nós vamos arrancá-la, e nós vamos executá-lo. 290 00:14:52,040 --> 00:14:55,830 Mas, sim, colocar essas vírgulas in é um tipo de dor. 291 00:14:55,830 --> 00:14:59,580 >> Eu fixa-lo, então eu acho que ele deve funcionar. 292 00:14:59,580 --> 00:15:02,760 Awesome - revisão 3. 293 00:15:02,760 --> 00:15:05,250 Que se parece com ele. 294 00:15:05,250 --> 00:15:08,580 Tudo bem, então agora se executá-lo, 295 00:15:08,580 --> 00:15:11,020 lá vai. 296 00:15:11,020 --> 00:15:13,830 Coisas legais. 297 00:15:13,830 --> 00:15:15,340 >> Tudo bem. 298 00:15:15,340 --> 00:15:18,230 Então, obrigado por fazer isso. 299 00:15:18,230 --> 00:15:20,210 É muito bom conhecer vocês. 300 00:15:20,210 --> 00:15:22,880 O que vamos fazer agora é passar o próximo bit pouco 301 00:15:22,880 --> 00:15:24,740 meio de mergulhar nos problemas de seção 302 00:15:24,740 --> 00:15:27,550 que vêm do conjunto de problemas a partir desta semana 303 00:15:27,550 --> 00:15:29,920 e nós faremos o que para a maioria das seções 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ão vamos salvar os últimos 15, 20 minutos ou mais 306 00:15:35,580 --> 00:15:38,490 para falar sobre o problema a si própria 307 00:15:38,490 --> 00:15:41,420 e depois apenas quaisquer outras perguntas que você tem, em geral, sobre a classe. 308 00:15:43,380 --> 00:15:45,670 Dito isso, o que realmente quero fazer 309 00:15:45,670 --> 00:15:49,390 é que todos os que participam 310 00:15:49,390 --> 00:15:51,500 usando o material Spaces, 311 00:15:51,500 --> 00:15:53,500 jogando em código, jogando em sugestões, 312 00:15:53,500 --> 00:15:56,500 e falando quando coisas como essa ruptura 313 00:15:56,500 --> 00:15:58,360 ou não funcionam, só porque estas são coisas que 314 00:15:58,360 --> 00:16:00,870 Eu sei que me deparei 315 00:16:00,870 --> 00:16:03,180 quando eu comecei a codificação, 316 00:16:03,180 --> 00:16:05,490 e foram realmente um bocado frustrante às vezes 317 00:16:05,490 --> 00:16:08,690 porque se é como duas horas antes de seu conjunto de problemas é devido, 318 00:16:08,690 --> 00:16:11,330 assim - apenas para divulgação, 319 00:16:11,330 --> 00:16:14,590 Eu não iniciar a programação até que eu estava no segundo ano na faculdade. 320 00:16:14,590 --> 00:16:17,360 Era uma espécie de esta coisa estranha, desconhecida 321 00:16:17,360 --> 00:16:20,360 que eu ouvi foi kinda cool 322 00:16:20,360 --> 00:16:23,590 e eu também ouvi que isso poderia ser uma verdadeira dor na bunda 323 00:16:23,590 --> 00:16:27,610 se você perder um ponto e vírgula e que é o único erro manter o seu programa de trabalho 324 00:16:27,610 --> 00:16:30,890 e mantendo-o de ir dormir, 325 00:16:30,890 --> 00:16:32,650 de forma definitiva, 326 00:16:32,650 --> 00:16:34,020 se você tem perguntas como essa, 327 00:16:34,020 --> 00:16:37,060 se você tem preocupações assim, deixe-me saber, 328 00:16:37,060 --> 00:16:40,050 porque eu quero fazer isso uma boa experiência para vocês. 329 00:16:40,050 --> 00:16:44,620 >> Assim que vocês todos o download do conjunto de problemas ainda? 330 00:16:44,620 --> 00:16:47,160 Meio que sabe onde é? Okay. 331 00:16:47,160 --> 00:16:51,490 Então vamos para cs50.net, porque eu não tê-lo nessa conta, 332 00:16:51,490 --> 00:16:54,110 puxar para cima os conjuntos de problemas, 333 00:16:54,110 --> 00:16:57,940 puxe conjunto de problemas 2, e vamos olhar para a edição padrão hoje. 334 00:16:57,940 --> 00:17:01,190 Vamos puxar para cima a especificação aqui. 335 00:17:02,640 --> 00:17:04,420 Rolar para baixo. 336 00:17:06,790 --> 00:17:11,109 Então, vamos começar a olhar para esta seção de perguntas. 337 00:17:14,069 --> 00:17:16,710 Vocês já assistiram esses shorts ainda? 338 00:17:16,710 --> 00:17:18,329 Okay. 339 00:17:18,329 --> 00:17:21,329 Portanto, há shorts em loops, 340 00:17:21,329 --> 00:17:24,700 que é feito por Tommy, um dos companheiros de ensino cabeça. 341 00:17:24,700 --> 00:17:27,230 Há um em escopo, 342 00:17:27,230 --> 00:17:30,530 Eu acredito feito por outro companheiro de ensino chamado David 343 00:17:30,530 --> 00:17:33,400 e depois em uma cifra de Caesar também feito por David. 344 00:17:33,400 --> 00:17:35,550 Eles são muito legal. 345 00:17:35,550 --> 00:17:37,770 Vocês já foram assistir seus calções até agora? 346 00:17:37,770 --> 00:17:39,270 Como tem sido eles? 347 00:17:39,270 --> 00:17:41,490 Útil? Ok, bom saber. 348 00:17:41,490 --> 00:17:44,210 Se eles não estiverem, você pode dizer isso. 349 00:17:46,290 --> 00:17:49,870 Mas antes que você, 350 00:17:49,870 --> 00:17:52,600 Vocês já olharam para estas perguntas 351 00:17:52,600 --> 00:17:55,430 em tudo? 352 00:17:55,430 --> 00:17:57,480 >> Vamos falar sobre isso um pouco. 353 00:17:57,480 --> 00:18:00,600 Então, nós introduzimos ao longo das duas últimas semanas 354 00:18:00,600 --> 00:18:02,480 em palestra 355 00:18:02,480 --> 00:18:04,910 um certo número de ciclos diferentes. 356 00:18:04,910 --> 00:18:06,140 Há o laço for, 357 00:18:06,140 --> 00:18:09,570 do loop while, e então o loop do-while, 358 00:18:09,570 --> 00:18:13,100 e na aula, nós temos falado muito sobre 359 00:18:13,100 --> 00:18:16,010 como esses laços são todos 360 00:18:16,010 --> 00:18:18,320 bastante similar em muitas maneiras, 361 00:18:18,320 --> 00:18:21,210 e você pode fazer muito das mesmas coisas com um loop while 362 00:18:21,210 --> 00:18:23,260 que você pode fazer com um loop para. 363 00:18:23,260 --> 00:18:26,300 Você apenas tem que tipo de usar as combinações certas de variáveis ​​e tal. 364 00:18:26,300 --> 00:18:28,680 e assim mesmo 365 00:18:28,680 --> 00:18:31,200 a distinção real entre todas as laçadas é que 366 00:18:31,200 --> 00:18:33,620 às vezes eles são mais úteis 367 00:18:33,620 --> 00:18:36,930 para usá-los de uma só vez do que em outro momento. 368 00:18:36,930 --> 00:18:39,340 >> Assim, por exemplo, 369 00:18:39,340 --> 00:18:42,260 o loop while diferindo de um loop do-while. 370 00:18:42,260 --> 00:18:45,680 Será que todo mundo sentem que têm um bom controle sobre quando 371 00:18:45,680 --> 00:18:48,650 um do-while é mais 372 00:18:48,650 --> 00:18:50,990 útil ou qual é a diferença? 373 00:18:50,990 --> 00:18:53,410 >> Acho que a diferença é um loop do-while 374 00:18:53,410 --> 00:18:56,960 corre - Eu não sei bem o que é a terminologia, 375 00:18:56,960 --> 00:18:59,750 mas a série de funções dentro do loop. 376 00:18:59,750 --> 00:19:02,020 Eles automaticamente - ele faz suas corridas pelo menos 377 00:19:02,020 --> 00:19:05,390 antes que verifica a condição, ou o loop while será executado apenas quando 378 00:19:05,390 --> 00:19:08,290 continuamente executado - ou não a condição está sendo satisfeita. 379 00:19:08,290 --> 00:19:11,010 Sim, isso faz sentido? 380 00:19:11,010 --> 00:19:14,200 >> Vamos dar uma olhada em um pouco de código. 381 00:19:14,200 --> 00:19:16,930 Então, só para repetir a pergunta, 382 00:19:16,930 --> 00:19:19,230 ou a resposta, em vez; 383 00:19:19,230 --> 00:19:22,050 a resposta foi que 384 00:19:22,050 --> 00:19:25,850 um loop while irá verificar para ver se a condição 385 00:19:25,850 --> 00:19:27,440 que você especificar for atendida 386 00:19:27,440 --> 00:19:31,320 antes de ser executado o corpo do laço, pela primeira vez, 387 00:19:31,320 --> 00:19:35,000 enquanto que o do-while será executado automaticamente o corpo do loop, 388 00:19:35,000 --> 00:19:38,450 é o que chamamos - é estranho terminologia, 389 00:19:38,450 --> 00:19:41,460 mas se eu dizer qualquer coisa que não faz sentido, deixe-me saber - 390 00:19:41,460 --> 00:19:45,360 o corpo do laço é que o material que você coloca entre as chaves. 391 00:19:45,360 --> 00:19:47,840 E em um loop do-while, 392 00:19:47,840 --> 00:19:50,220 que o corpo se executar pelo menos uma vez, 393 00:19:50,220 --> 00:19:54,460 e então a condição é verificado antes de ser executado a cada vez consecutiva. 394 00:19:54,460 --> 00:19:56,580 >> Então, na verdade, Sam, 395 00:19:56,580 --> 00:20:00,820 você se importa de escrever um simples loop while 396 00:20:00,820 --> 00:20:02,840 em espaços? 397 00:20:02,840 --> 00:20:05,600 >> Como você classifica como de 398 00:20:05,600 --> 00:20:07,060 fazer um novo ...? 399 00:20:07,060 --> 00:20:09,220 Eu simplesmente apagar tudo o que você tem aí. 400 00:20:09,220 --> 00:20:11,300 Sim, apenas limpá-lo. 401 00:20:11,300 --> 00:20:14,510 >> Bem, eu acredito que eu estou tendo essa - 402 00:20:14,510 --> 00:20:16,640 qual você quer, de um tempo, ou você quer ...? 403 00:20:16,640 --> 00:20:19,350 Sim, só que um pouco verdade, imprimir algo. 404 00:20:21,050 --> 00:20:23,140 E vamos ver. 405 00:20:23,140 --> 00:20:25,850 Alexander, eu percebi que nunca apresentei. 406 00:20:25,850 --> 00:20:27,510 >> Oh, isso é bom. 407 00:20:27,510 --> 00:20:30,760 Você - você pode codificar um loop do-while para nós? 408 00:20:30,760 --> 00:20:32,520 >> Sim, eu vou tentar. 409 00:20:32,520 --> 00:20:34,370 Tudo bem, nós vamos retirar estes na tela, 410 00:20:34,370 --> 00:20:38,240 de modo que você meio que tem uma alça sobre quais são as diferenças. 411 00:20:38,240 --> 00:20:41,280 >> Então, aqui está o que Sam fez. 412 00:20:41,280 --> 00:20:44,460 Ele tem um número inteiro chamado de i 413 00:20:44,460 --> 00:20:47,480 que ele é inicializado a 17. 414 00:20:47,480 --> 00:20:51,570 Em seguida, ele diz que enquanto (int i = 17) 415 00:20:51,570 --> 00:20:54,230 printf ("Meu nome é Sam."); 416 00:20:54,230 --> 00:20:57,300 Então o que acontece quando executamos esse código? 417 00:20:57,300 --> 00:21:00,340 Há um erro, o que é que o erro dizer? 418 00:21:00,340 --> 00:21:02,890 Vamos puxar-lo e falar sobre isso. 419 00:21:02,890 --> 00:21:05,040 Ocorreu um erro, que diz. 420 00:21:05,040 --> 00:21:07,400 Vamos rolar para baixo. 421 00:21:07,400 --> 00:21:09,460 Então, isso nos deu esse erro, e ele disse, 422 00:21:09,460 --> 00:21:12,690 "Ei, eu esperava uma expressão." 423 00:21:12,690 --> 00:21:16,180 Isso é meio misteriosa. 424 00:21:19,160 --> 00:21:23,140 Sim, então exatamente - e, novamente, 425 00:21:23,140 --> 00:21:27,140 haverá um outro pequeno bug que vai pegar em apenas um segundo. 426 00:21:27,140 --> 00:21:31,800 Mas este é mais um daqueles tipo de coisas estranhas terminologia, 427 00:21:31,800 --> 00:21:36,150 assim que esta int i = 17 428 00:21:36,150 --> 00:21:39,290 não é uma expressão. 429 00:21:39,290 --> 00:21:41,220 O que parece que ele está fazendo é que é 430 00:21:41,220 --> 00:21:43,410 declarar um inteiro chamado i 431 00:21:43,410 --> 00:21:45,540 e definindo-a igual a 17 432 00:21:45,540 --> 00:21:48,780 ou melhor, colocando 17 em que int chamado i. 433 00:21:50,560 --> 00:21:53,350 E isso não faz sentido 434 00:21:53,350 --> 00:21:55,790 no contexto da presente loop. 435 00:21:55,790 --> 00:21:58,190 Faz sentido, como veremos, 436 00:21:58,190 --> 00:22:01,250 no contexto de um loop for, porque para declarações de loop que começar 437 00:22:01,250 --> 00:22:05,800 com que, por int i é igual a algo 438 00:22:05,800 --> 00:22:07,830 e continua. 439 00:22:07,830 --> 00:22:09,500 >> E você também - 440 00:22:09,500 --> 00:22:12,630 corrigir alguma coisa, tudo bem. 441 00:22:12,630 --> 00:22:15,270 Aqui vai; impressionante. 442 00:22:15,270 --> 00:22:17,920 Então, agora as coisas parecem um pouco diferente. 443 00:22:17,920 --> 00:22:19,030 Um par de coisas mudaram. 444 00:22:19,030 --> 00:22:21,300 Você pode nos dizer o que as coisas mudaram? 445 00:22:21,300 --> 00:22:24,950 >> Tirei o int, então não há nenhuma declaração [inaudível] em vez de uma atribuição. 446 00:22:24,950 --> 00:22:28,770 O sinal de uma igual, eu coloquei dois sinais de igual, o que significa um igual. 447 00:22:28,770 --> 00:22:30,560 Impressionante. 448 00:22:30,560 --> 00:22:33,320 Sim, então o que Sam fez foi que ele tirou o int 449 00:22:33,320 --> 00:22:35,770 que estava aqui antes, 450 00:22:35,770 --> 00:22:39,340 por isso, se eu só olhar para isso - isso é o que era antes, disse int, 451 00:22:39,340 --> 00:22:41,970 que estava declarando-lo - portanto, levou o tipo. 452 00:22:41,970 --> 00:22:44,710 Há int, string, char, short, 453 00:22:44,710 --> 00:22:47,380 estes são chamados tipos. 454 00:22:47,380 --> 00:22:49,510 Então você pegou o tipo 455 00:22:49,510 --> 00:22:51,580 e, em seguida, previamente, 456 00:22:51,580 --> 00:22:54,190 ele tinha apenas o único sinal de igual 457 00:22:54,190 --> 00:22:57,300 eo que ele disse foi problemático sobre este foi 458 00:22:57,300 --> 00:22:59,580 quando você tem um sinal de igual, 459 00:22:59,580 --> 00:23:01,780 que é um operador de atribuição. 460 00:23:01,780 --> 00:23:04,930 Isso não está testando ou não 2 coisas são iguais. 461 00:23:04,930 --> 00:23:07,920 Isso é realmente definir algo igual a alguma coisa. 462 00:23:07,920 --> 00:23:11,110 Estamos colocando o número 17 na variável i. 463 00:23:11,110 --> 00:23:13,850 Então, para fazer esse tipo de comparação, 464 00:23:13,850 --> 00:23:16,430 você tem que usar o duplo igual, 465 00:23:16,430 --> 00:23:19,640 que é um tipo de coisa estranha 466 00:23:19,640 --> 00:23:22,760 mas é um erro bastante comum. 467 00:23:23,980 --> 00:23:27,830 Então, uma outra coisa que eu vou apontar, se você não se importa, 468 00:23:27,830 --> 00:23:30,610 é que, em 469 00:23:30,610 --> 00:23:33,210 nossa função aqui na principal int, 470 00:23:33,210 --> 00:23:36,740 você vê que o corpo de nossa função 471 00:23:36,740 --> 00:23:39,810 é deslocado a partir do lado esquerdo 472 00:23:39,810 --> 00:23:42,400 por 4 espaços ou uma guia. 473 00:23:42,400 --> 00:23:44,730 A razão por que fazer isso 474 00:23:44,730 --> 00:23:47,000 é apenas para facilitar a leitura. 475 00:23:47,000 --> 00:23:51,620 Como você pode ver na alça de Sam enquanto aqui, 476 00:23:51,620 --> 00:23:53,120 ele não travessão em tudo, 477 00:23:53,120 --> 00:23:55,390 e que não afeta a funcionalidade do código. 478 00:23:55,390 --> 00:23:57,860 Ele será executado exatamente o mesmo. 479 00:23:57,860 --> 00:24:00,950 >> Assim, por exemplo, se chegamos até o topo aqui 480 00:24:00,950 --> 00:24:02,680 e pressione o nosso botão Play, que vai construir, 481 00:24:02,680 --> 00:24:04,470 que vai executá-lo, 482 00:24:04,470 --> 00:24:06,700 eo que vai acontecer? 483 00:24:06,700 --> 00:24:08,360 Por que ainda dizem que correr? 484 00:24:08,360 --> 00:24:10,560 >> Porque vai ficar repetindo oi. 485 00:24:10,560 --> 00:24:12,900 Exatamente, e por que ficar repetindo um oi? 486 00:24:12,900 --> 00:24:15,850 >> Porque o inteiros nunca muda, por isso é sempre 17. 487 00:24:15,850 --> 00:24:18,030 Sim, exatamente, por isso 488 00:24:18,030 --> 00:24:20,970 vamos ver, depois - me lembrar do seu nome? 489 00:24:20,970 --> 00:24:24,020 Jimmy. Então Jimmy disse que 490 00:24:24,020 --> 00:24:27,340 a razão que esta continua a repetir oi uma e outra vez 491 00:24:27,340 --> 00:24:30,510 é porque essa condição é sempre verdadeira. 492 00:24:30,510 --> 00:24:33,270 Nós nunca mudamos o valor de i. 493 00:24:33,270 --> 00:24:36,170 Nós nunca alterar o conteúdo do que está armazenado nessa variável. 494 00:24:36,170 --> 00:24:39,180 Portanto, neste ponto temos este erro 495 00:24:39,180 --> 00:24:42,170 seu programa de saída gerado muito, 496 00:24:42,170 --> 00:24:45,100 e se desloque para baixo e tipo de olhar para o que está acontecendo aqui, 497 00:24:45,100 --> 00:24:49,160 você pode ver que é oi, oi, oi, oi, oi, oi, oi todo o caminho. 498 00:24:49,160 --> 00:24:51,200 Impressionante. 499 00:24:51,200 --> 00:24:53,750 >> Então tipo de volta ao ponto original 500 00:24:53,750 --> 00:24:57,020 que ter o recuo aqui 501 00:24:57,020 --> 00:25:00,110 no corpo do laço enquanto não afectou nada. 502 00:25:00,110 --> 00:25:03,050 O programa ainda correu muito bem. 503 00:25:03,050 --> 00:25:06,790 Normalmente, para um bom estilo - 504 00:25:06,790 --> 00:25:10,210 e isso é algo que nós procuramos em seus conjuntos de problemas - 505 00:25:10,210 --> 00:25:13,930 pedimos-lhe que este travessão por quatro espaços, que você pode fazer 506 00:25:13,930 --> 00:25:16,440 apenas pressionando a tecla tab 507 00:25:16,440 --> 00:25:18,860 ou manualmente, colocando em quatro espaços si mesmo. 508 00:25:21,880 --> 00:25:25,050 Cool, ok então vamos voltar e olhar para 509 00:25:25,050 --> 00:25:30,460 Alexandre fazer enquanto. 510 00:25:30,460 --> 00:25:32,980 Apenas meio >> tendo um pequeno problema. 511 00:25:32,980 --> 00:25:34,390 Ok, bem, vamos trabalhar com ele. 512 00:25:34,390 --> 00:25:36,400 Isso é legal? 513 00:25:36,400 --> 00:25:37,430 Sim >>. 514 00:25:37,430 --> 00:25:39,200 >> Ok, então aqui vamos nós. 515 00:25:39,200 --> 00:25:41,010 Este é o código que Alexandre escreveu. 516 00:25:41,010 --> 00:25:43,410 Você vai por Alex - ok. 517 00:25:43,410 --> 00:25:46,380 Então, aqui está o código que Alex tem escrito. 518 00:25:46,380 --> 00:25:50,500 Então, nós temos a nossa declaração de principal aqui, 519 00:25:50,500 --> 00:25:54,410 e depois temos esta variável inteiro chamado i 520 00:25:54,410 --> 00:25:57,320 sendo declarado aqui. 521 00:25:57,320 --> 00:26:01,060 Temos uma instrução do 522 00:26:01,060 --> 00:26:04,600 e, em seguida, o corpo de novo com estas chaves, 523 00:26:04,600 --> 00:26:06,520 por isso este é o corpo do do-tempo - 524 00:26:06,520 --> 00:26:09,210 deixe-me zoom e por isso é mais legível - 525 00:26:09,210 --> 00:26:12,730 e no corpo, estamos tentando 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 conteúdo de i e fazer isso 528 00:26:17,710 --> 00:26:19,470 até eu chega a ser 3, 529 00:26:19,470 --> 00:26:22,440 e então o nosso programa termina. 530 00:26:22,440 --> 00:26:24,680 >> Então o que acontece quando executamos esse programa? 531 00:26:24,680 --> 00:26:27,580 >> Eu esperava um identificador. 532 00:26:27,580 --> 00:26:32,070 Ok, então construir, executar erro ocorre. 533 00:26:32,070 --> 00:26:34,820 O que acontece? 534 00:26:34,820 --> 00:26:37,060 Nós rolar aqui, 535 00:26:37,060 --> 00:26:40,260 temos essa coisa um tanto enigmático olhar, 536 00:26:40,260 --> 00:26:43,930 espera-vírgula após a declaração de nível superior. 537 00:26:43,930 --> 00:26:46,620 Isso é meio estranho. 538 00:26:46,620 --> 00:26:50,990 Alguém tem uma idéia do que pode estar acontecendo? 539 00:26:53,080 --> 00:26:54,640 Meio estranho, sim. 540 00:26:54,640 --> 00:26:57,640 >> [Inaudível] ser declarada fora dos parênteses? 541 00:26:57,640 --> 00:27:03,480 Então, não que se aplicam, então quando você usar parênteses? 542 00:27:03,480 --> 00:27:07,390 Então, ele declarou esse cara fora da qual parênteses? 543 00:27:09,670 --> 00:27:12,240 Ah, esses caras - as chaves? 544 00:27:12,240 --> 00:27:13,850 Sim >>. 545 00:27:13,850 --> 00:27:15,310 Sim, exatamente. 546 00:27:15,310 --> 00:27:17,120 Assim, verifica-se que 547 00:27:17,120 --> 00:27:21,550 você realmente não pode declarar uma variável aqui como este. 548 00:27:23,750 --> 00:27:26,690 O que você poderia ter tentado fazer era - 549 00:27:26,690 --> 00:27:30,110 cortá-lo de lá - 550 00:27:30,110 --> 00:27:34,330 você pode colocá-lo dentro de chaves aqui 551 00:27:34,330 --> 00:27:37,400 ou outra alternativa 552 00:27:37,400 --> 00:27:40,350 é colocá-lo completamente fora. 553 00:27:42,480 --> 00:27:46,610 E assim estes - dependendo de onde você realmente colocar a declaração 554 00:27:46,610 --> 00:27:48,550 dessa variável inteiro, 555 00:27:48,550 --> 00:27:53,540 você pode obter dois tipos muito diferentes de variáveis; 556 00:27:53,540 --> 00:27:55,100 quando está fora do principal, 557 00:27:55,100 --> 00:27:58,240 é o que chamamos de uma variável global. 558 00:27:58,240 --> 00:28:00,070 Que está fora do âmbito de qualquer uma das funções - 559 00:28:00,070 --> 00:28:03,420 não é dentro de uma função - 560 00:28:03,420 --> 00:28:07,050 enquanto que se nós colocá-lo dentro de principal, 561 00:28:07,050 --> 00:28:10,000 como aqui, então ele é chamado de variável local, 562 00:28:10,000 --> 00:28:13,830 porque é local para o âmbito da principal. 563 00:28:13,830 --> 00:28:16,720 E vamos falar um pouco mais sobre o que as diferenças são 564 00:28:16,720 --> 00:28:20,970 entre os dois tipos e por que você usar diferentes tipos de variáveis, 565 00:28:20,970 --> 00:28:23,040 mas por agora, 566 00:28:23,040 --> 00:28:25,070 você pode apenas manter todas as variáveis ​​locais, 567 00:28:25,070 --> 00:28:28,320 porque não temos qualquer necessidade de variáveis ​​globais. 568 00:28:28,320 --> 00:28:31,390 >> Ok, então isso é uma coisa certa lá. 569 00:28:31,390 --> 00:28:34,680 Vamos tentar correr 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 em um pouco, o que é que vamos chegar? 572 00:28:45,110 --> 00:28:50,000 Recebemos este parêntese esperado depois do / while. 573 00:28:53,660 --> 00:28:55,260 Alguma idéia do que está acontecendo? Dan? 574 00:28:55,260 --> 00:28:58,880 É o tempo >> parênteses depois e depois - 575 00:28:58,880 --> 00:29:01,990 Eu não sei se você precisa redeclare int, 576 00:29:01,990 --> 00:29:04,980 mas o fazer enquanto (i <3). 577 00:29:04,980 --> 00:29:06,930 Exatamente, sim. 578 00:29:06,930 --> 00:29:08,830 Assim, verifica-se que Dan é exatamente certo. 579 00:29:08,830 --> 00:29:11,230 Nós não precisamos de colocar este tipo aqui novamente. 580 00:29:11,230 --> 00:29:14,440 Podemos, em vez do tipo de matar 581 00:29:14,440 --> 00:29:17,220 e apenas fazer isso. 582 00:29:19,270 --> 00:29:21,640 Tudo bem. 583 00:29:21,640 --> 00:29:24,950 Eu vou sair do zoom, tente mais uma vez. 584 00:29:26,360 --> 00:29:29,580 Olhe para isso, ele roda bem-sucedido. 585 00:29:29,580 --> 00:29:33,260 Se rolar para baixo, "este é o corpo" impresso 3 vezes. 586 00:29:33,260 --> 00:29:35,820 Isso é muito doce. 587 00:29:35,820 --> 00:29:38,670 Bem feito, bem feito, pessoal. 588 00:29:38,670 --> 00:29:41,080 Bem feito. 589 00:29:41,080 --> 00:29:43,250 Como é que isto vai tão longe? 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ão, como nós espécie de volta à questão original, 593 00:29:52,590 --> 00:29:55,430 nós - e agora se vê a diferença, 594 00:29:55,430 --> 00:29:58,240 você vê que neste loop do-while, 595 00:29:58,240 --> 00:30:00,030 a condição vem por último. 596 00:30:00,030 --> 00:30:02,530 Então, como o computador lê o programa 597 00:30:02,530 --> 00:30:06,050 desde programas em C são executados tipo de nesta ordem seqüencial, 598 00:30:06,050 --> 00:30:09,450 onde literalmente começar com a primeira linha de principal, 599 00:30:09,450 --> 00:30:13,450 e, em seguida, executar a linha 6, linha 7, linha 8, linha 9, 600 00:30:13,450 --> 00:30:16,150 linha 10, linha 11, 601 00:30:16,150 --> 00:30:18,440 tudo isso no topo aqui 602 00:30:18,440 --> 00:30:20,020 vai executar uma vez 603 00:30:20,020 --> 00:30:23,350 antes de nós sempre testar esta condição de ver 604 00:30:23,350 --> 00:30:26,240 ou não eu - ou o conteúdo de i, sim - 605 00:30:26,240 --> 00:30:29,750 são menos do que o número 3. 606 00:30:29,750 --> 00:30:33,300 E somente se, uma vez que começa a linha 12, 607 00:30:33,300 --> 00:30:36,260 o conteúdo de i são menos do que 3 608 00:30:36,260 --> 00:30:39,150 que nós realmente voltar-se para a linha 7 609 00:30:39,150 --> 00:30:41,140 e repita o processo, 610 00:30:41,140 --> 00:30:44,620 e, então, testar a condição de novo e de novo e de novo. 611 00:30:44,620 --> 00:30:47,440 >> Assim, podemos comparar esta 612 00:30:47,440 --> 00:30:50,240 com - o zoom para fora, 613 00:30:50,240 --> 00:30:56,500 desloque-se para a versão de Sam, 614 00:30:56,500 --> 00:31:00,760 vamos olhar para isso, ligeiramente alterado para que ele não é mais um 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 conteúdo de eu ser a 0, 619 00:31:12,030 --> 00:31:15,820 e, em seguida, ele atinge a condição de quando o primeiro loop, 620 00:31:15,820 --> 00:31:19,210 Portanto, neste caso, este corpo, esta printf ("oi") e i + + 621 00:31:19,210 --> 00:31:21,630 não vai mesmo executar 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 Portanto, se i é 3, por exemplo, 624 00:31:26,750 --> 00:31:28,840 se definir esta aqui 625 00:31:28,840 --> 00:31:32,160 igual a 4 - ou eu vou fazer 3, porque eu disse 3 - 626 00:31:32,160 --> 00:31:34,890 e depois executá-lo, 627 00:31:34,890 --> 00:31:38,320 vai construir, vai correr tudo bem, 628 00:31:38,320 --> 00:31:40,530 mas não vai realmente imprimir qualquer coisa, 629 00:31:40,530 --> 00:31:43,030 porque falharam no teste para o primeiro caso. 630 00:31:44,780 --> 00:31:47,530 Assim, na classe, tipo de falou sobre por que esses laços do-while 631 00:31:47,530 --> 00:31:49,800 são úteis, por vezes, 632 00:31:49,800 --> 00:31:53,140 e por que iria utilizá-lo ao invés de um loop while. 633 00:31:53,140 --> 00:31:56,450 >> Estão lá - vocês tem alguma sugestão 634 00:31:56,450 --> 00:31:59,090 por que um do-while pode ser mais útil? 635 00:31:59,090 --> 00:32:02,560 >> Bem, eu acho que do-while é se você quer a entrada do usuário, 636 00:32:02,560 --> 00:32:05,020 porque dessa forma você pode deixá-los 637 00:32:05,020 --> 00:32:07,780 colocar algo em uma vez, se é correto, 638 00:32:07,780 --> 00:32:09,300 que pode passar para o restante do programa, 639 00:32:09,300 --> 00:32:11,250 mas se não estiver correto, então você continuar a avisar o usuário 640 00:32:11,250 --> 00:32:13,250 até colocar a entrada à direita. 641 00:32:13,250 --> 00:32:14,260 Sim, exatamente - exatamente, 642 00:32:14,260 --> 00:32:16,840 assim um do-while é útil 643 00:32:16,840 --> 00:32:18,930 porque ao pedir a entrada do usuário 644 00:32:18,930 --> 00:32:23,000 porque você precisa para obter a entrada do usuário antes que você possa realmente verificar. 645 00:32:23,000 --> 00:32:27,330 Assim, em pset 1, em pset 2, 646 00:32:27,330 --> 00:32:29,650 onde você está solicitando a entrada do usuário muito, 647 00:32:29,650 --> 00:32:31,200 isso é uma coisa útil para usar 648 00:32:31,200 --> 00:32:33,740 ao invés de apenas um simples loop while. 649 00:32:33,740 --> 00:32:36,780 Se você usar um loop while, você pode fazer a mesma coisa - 650 00:32:36,780 --> 00:32:38,750 você pode fazer a mesma coisa com um loop while 651 00:32:38,750 --> 00:32:40,580 como você faz com um laço do-while. 652 00:32:40,580 --> 00:32:43,380 Você apenas tem que tipo de ter este processo duplicado 653 00:32:43,380 --> 00:32:47,010 onde você começa a primeira entrada e, em seguida, iniciar o seu loop while. 654 00:32:47,010 --> 00:32:49,800 Considerando um do-while, você apenas tem que escrever uma vez 655 00:32:49,800 --> 00:32:52,430 e é muito mais limpo. 656 00:32:52,430 --> 00:32:54,650 >> Tudo bem. 657 00:32:55,970 --> 00:32:57,330 Alguma pergunta? 658 00:32:59,350 --> 00:33:01,380 Faz sentido? 659 00:33:01,380 --> 00:33:06,200 >> O retorno 0 - que é apenas uma espécie de tenda ou é -? 660 00:33:06,200 --> 00:33:08,960 Sim, então nós podemos - 661 00:33:08,960 --> 00:33:11,960 bem, nós vamos cobrir este um pouco mais tarde 662 00:33:11,960 --> 00:33:13,290 mas verifica-se que 663 00:33:13,290 --> 00:33:15,720 este 0 retorno que nós colocamos 664 00:33:15,720 --> 00:33:19,090 no final de todo o tempo principal - 665 00:33:19,090 --> 00:33:21,980 você pode kinda apenas tomá-lo como algo que fazemos 666 00:33:21,980 --> 00:33:24,930 por enquanto. 667 00:33:24,930 --> 00:33:28,860 O que nós começamos a falar sobre com funções 668 00:33:28,860 --> 00:33:31,600 tipo de no final da semana passada e novamente esta semana 669 00:33:31,600 --> 00:33:33,550 é a de que uma função 670 00:33:33,550 --> 00:33:37,680 tem entradas que são essas coisas dentro dos parênteses; 671 00:33:37,680 --> 00:33:41,690 estas são duas entradas, nossos argumentos ou parâmetros, 672 00:33:41,690 --> 00:33:44,540 o que eles estão chamados também a nossa função principal, 673 00:33:44,540 --> 00:33:48,510 e, em seguida, uma função produz uma saída 674 00:33:48,510 --> 00:33:51,290 que chamamos de um 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 inteiro, 677 00:33:58,320 --> 00:34:01,160 e da maneira que você contar uma função: "Ei, isso é o que a sua saída 678 00:34:01,160 --> 00:34:05,840 vai ser ", é com essa palavra" retorno ", 679 00:34:05,840 --> 00:34:07,960 a palavra-chave, em vez disso, 680 00:34:07,960 --> 00:34:11,000 e assim 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 é padrão em programas C 683 00:34:15,139 --> 00:34:18,110 porque retornando 0 de meios principais que 684 00:34:18,110 --> 00:34:21,600 "Ei, tudo executado com meu programa muito bem." 685 00:34:21,600 --> 00:34:24,639 Se fôssemos colocar algo diferente de 0, 686 00:34:24,639 --> 00:34:27,440 como um, por exemplo, 687 00:34:27,440 --> 00:34:31,080 que é usada para dizer quem correu este programa 688 00:34:31,080 --> 00:34:33,540 que algo deu errado. 689 00:34:35,739 --> 00:34:39,989 Assim que tivermos mais envolvido com coisas ao longo do semestre, 690 00:34:39,989 --> 00:34:42,670 se você está sempre a necessidade de dizer, 691 00:34:42,670 --> 00:34:46,650 "Opa, você sabe, algo deu errado com este programa", 692 00:34:46,650 --> 00:34:49,409 em vez de ter o meu programa falhar, eu quero notificar 693 00:34:49,409 --> 00:34:52,310 o corredor do meu programa que algo deu errado, 694 00:34:52,310 --> 00:34:54,530 você pode usar o valor de retorno, 695 00:34:54,530 --> 00:34:57,230 como nós o chamamos, isso não é 0. 696 00:35:00,180 --> 00:35:02,240 >> Então, nós vamos cobrir esse um pouco mais 697 00:35:02,240 --> 00:35:05,480 uma vez que entrar em funções. 698 00:35:05,480 --> 00:35:09,030 Esse tipo de faz sentido? 699 00:35:09,030 --> 00:35:11,240 Okay. 700 00:35:11,240 --> 00:35:13,530 Funções são uma espécie de bizarro - 701 00:35:13,530 --> 00:35:17,270 Eu acho que para as pessoas que têm lotes de fundo de matemática, 702 00:35:17,270 --> 00:35:20,100 ele vem um pouco mais facilmente, 703 00:35:20,100 --> 00:35:22,540 especialmente se você tiver um pouco mais abstrata fundo de matemática 704 00:35:22,540 --> 00:35:24,240 e você está acostumado a falar de funções 705 00:35:24,240 --> 00:35:27,370 e todo esse tipo de coisa. 706 00:35:28,590 --> 00:35:30,610 Mas nós vamos tentar cobri-los 707 00:35:30,610 --> 00:35:33,280 e ir bem devagar e como eles vêm para cima. 708 00:35:34,730 --> 00:35:37,870 Da mesma forma, 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, você também pode ter que placa de caldeira como. 711 00:35:46,650 --> 00:35:49,050 Nós começamos a cobrir aqueles um pouco na palestra 712 00:35:49,050 --> 00:35:53,060 quando falamos sobre os argumentos que são passados ​​para programas na linha de comando, 713 00:35:53,060 --> 00:35:55,700 mas em seus conjuntos de problemas e de seus programas, 714 00:35:55,700 --> 00:35:58,760 é totalmente bem apenas para escrever vazio e mantê-lo simples. 715 00:35:58,760 --> 00:36:01,490 E o que isso significa é que vazio 716 00:36:01,490 --> 00:36:04,630 "Ei, principal não vai aceitar qualquer entrada; 717 00:36:04,630 --> 00:36:07,440 este é apenas um programa, nós vamos apenas executar. 718 00:36:07,440 --> 00:36:09,320 Nós não vamos dar qualquer informação extra 719 00:36:09,320 --> 00:36:12,420 cada vez que iniciá-lo em execução. " 720 00:36:14,730 --> 00:36:16,600 Então, por enquanto, você pode fazer isso; 721 00:36:16,600 --> 00:36:19,710 você também pode até omitir o 0 retorno 722 00:36:19,710 --> 00:36:22,650 no final dos seus programas e eles vão correr muito bem, 723 00:36:22,650 --> 00:36:26,150 mas eu recomendo que apenas manter dentro 724 00:36:26,150 --> 00:36:28,320 Em um par de semanas, nós vamos começar a espécie de 725 00:36:28,320 --> 00:36:31,340 puxar para trás a tampa um pouco e entender mais sobre 726 00:36:31,340 --> 00:36:34,380 todos esses diferentes pequenas partes móveis. 727 00:36:34,380 --> 00:36:38,160 >> Tudo bem, agora vamos falar sobre a nossa segunda pergunta aqui. 728 00:36:38,160 --> 00:36:43,190 Então, o que "identificador não declarado" geralmente indicam 729 00:36:43,190 --> 00:36:46,040 se produzida pelo Clang? 730 00:36:46,040 --> 00:36:49,290 Acho que poderia ter visto que já hoje. 731 00:36:51,170 --> 00:36:54,370 Alguém pode dar um resumo do que isso significa? 732 00:36:54,370 --> 00:36:57,680 Vamos ver, Kelly - um dos Kellys. 733 00:37:02,580 --> 00:37:05,300 Então >> - 734 00:37:05,300 --> 00:37:07,080 Sim, o que faz - 735 00:37:07,080 --> 00:37:10,140 >> Eu acho que quando você, como, não declarar as variáveis ​​e tentar usá-lo. 736 00:37:10,140 --> 00:37:13,310 Sim, exatamente, exatamente. 737 00:37:13,310 --> 00:37:15,250 Então, se você já viu essa saída 738 00:37:15,250 --> 00:37:17,690 quando você tenta e compilar seu programa, 739 00:37:17,690 --> 00:37:19,470 apenas como Kelly disse: 740 00:37:19,470 --> 00:37:24,210 isso significa que você usou uma variável que você não declarar, 741 00:37:24,210 --> 00:37:28,460 por isso, se eu voltar para o nosso espaço, 742 00:37:28,460 --> 00:37:31,150 e eu fazer algo assim 743 00:37:31,150 --> 00:37:34,800 printf ( 744 00:37:34,800 --> 00:37:38,260 "Olá% s") 745 00:37:40,070 --> 00:37:42,440 e tentar preencher esse s% 746 00:37:42,440 --> 00:37:45,640 s com uma variável que eu não declarei em qualquer lugar 747 00:37:45,640 --> 00:37:48,330 e eu tentar executá-lo, 748 00:37:48,330 --> 00:37:51,330 você vai ver o que eu baixo neste fundo aqui: 749 00:37:51,330 --> 00:37:54,010 "Utilização de identificador não declarado 's'"; 750 00:37:54,010 --> 00:37:57,710 isso apenas significa que você não declarar sua variável. 751 00:37:57,710 --> 00:38:00,750 A mesma coisa acontece se 752 00:38:00,750 --> 00:38:05,240 você tem x e tenta armazenar 7 nele 753 00:38:05,240 --> 00:38:08,720 e eu não declarar X. 754 00:38:08,720 --> 00:38:10,200 Eu recebo o mesmo erro: 755 00:38:10,200 --> 00:38:13,480 "Uso de 'x' identificador não declarado". 756 00:38:16,390 --> 00:38:18,250 >> Tudo bem, 757 00:38:18,250 --> 00:38:21,720 assim a cifra de César, não sendo muito seguro, 758 00:38:21,720 --> 00:38:24,590 Eu vou deixar vocês assistir a este tipo, longe de entender o porquê, 759 00:38:24,590 --> 00:38:27,590 e espero que depois de fazer o problema desta semana definir 760 00:38:27,590 --> 00:38:29,270 onde você realmente escrever uma cifra de César, você vai entender um pouco mais 761 00:38:29,270 --> 00:38:32,600 sobre o que significa ser um seguro e inseguro - 762 00:38:36,180 --> 00:38:38,960 ou não seguro, eu acho - inseguro é um pouco diferente. 763 00:38:40,560 --> 00:38:43,140 A outra coisa foi que temos essas outras questões aqui 764 00:38:43,140 --> 00:38:45,470 sobre as funções 765 00:38:45,470 --> 00:38:47,330 e que uma função é, 766 00:38:47,330 --> 00:38:52,820 e nós meio que falamos sobre isso, brevemente, quando falamos sobre valores de retorno; 767 00:38:52,820 --> 00:38:54,560 para alguém que esteve na palestra, 768 00:38:54,560 --> 00:38:57,790 você pode recapitular que tem sido a palestra de hoje? 769 00:38:57,790 --> 00:38:59,670 Tudo bem. 770 00:39:01,210 --> 00:39:04,320 Vamos ver, vamos ter - alguém pode nos dizer o que é uma função? 771 00:39:04,320 --> 00:39:06,060 Kelly? 772 00:39:07,800 --> 00:39:11,260 >> Basicamente >> algo que você desenhar em cima de algo que está escrito na biblioteca que é 773 00:39:11,260 --> 00:39:14,460 mais complicado por lá, e então você acabou de escrever um pequeno formulário da mesma, 774 00:39:14,460 --> 00:39:17,360 assim como você está se referindo a essa 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 Sim, exatamente, e então você quer adicionar algo a que? 777 00:39:22,680 --> 00:39:27,050 >> Sim, eu penso nisso como semelhante ao conceito de uma fórmula em matemática 778 00:39:27,050 --> 00:39:30,130 onde você acabou de escrever uma fórmula e, em seguida, você pode ligar as variáveis ​​em 779 00:39:30,130 --> 00:39:32,660 e é isso que uma função é [inaudível]. 780 00:39:32,660 --> 00:39:35,390 >> Sim, por isso temos um par de respostas aqui 781 00:39:35,390 --> 00:39:38,080 que são ambos muito bons e em direito. 782 00:39:38,080 --> 00:39:43,040 Não está se referindo ao código que foi escrito em algum lugar a biblioteca 783 00:39:43,040 --> 00:39:45,390 que é mais complicado 784 00:39:45,390 --> 00:39:47,130 e então você pode recorrer a esse código 785 00:39:47,130 --> 00:39:50,480 e realmente utilizá-lo por apenas escrever o formulário curto do que - 786 00:39:50,480 --> 00:39:54,060 ou melhor, o seu nome - 787 00:39:54,060 --> 00:39:57,590 e depois há também a comparação com uma fórmula de matemática 788 00:39:57,590 --> 00:40:00,400 ou física, todo esse tipo de coisa 789 00:40:00,400 --> 00:40:02,980 onde você tem uma fórmula 790 00:40:02,980 --> 00:40:05,690 e então você pode ligar 791 00:40:05,690 --> 00:40:08,100 as variáveis ​​para a fórmula 792 00:40:08,100 --> 00:40:11,130 para, em seguida, obter o resultado da fórmula, 793 00:40:11,130 --> 00:40:14,580 assim que você pensa sobre isso como como a equação quadrática. 794 00:40:14,580 --> 00:40:17,690 Imagine se, em vez de ter que aprender sobre 795 00:40:17,690 --> 00:40:21,310 o que a fórmula quadrática é na aula de matemática, 796 00:40:21,310 --> 00:40:24,610 você só tinha um programa de calculadora pouco que fez isso por você. 797 00:40:24,610 --> 00:40:28,930 Alguém usar programas de calculadora nas aulas de matemática na escola? 798 00:40:28,930 --> 00:40:31,020 Sim, as aulas de física? 799 00:40:31,020 --> 00:40:34,670 Onde você pode simplesmente dizer: "Ei, fórmula quadrática. 800 00:40:34,670 --> 00:40:37,740 Estas são as variáveis ​​que eu quero de entrada. 801 00:40:37,740 --> 00:40:40,250 Agora me dê a resposta. " 802 00:40:40,250 --> 00:40:42,170 Esse é o tipo do que uma função é. 803 00:40:42,170 --> 00:40:44,850 É uma maneira de nos 804 00:40:44,850 --> 00:40:47,720 tipo de gravação, como um pequeno programa pequena sub 805 00:40:47,720 --> 00:40:51,700 dentro do nosso programa maior 806 00:40:51,700 --> 00:40:55,090 e usá-lo uma e outra vez 807 00:40:55,090 --> 00:40:58,380 de modo que não temos que copiar e colar o código, 808 00:40:58,380 --> 00:41:04,220 podemos dar-lhe entradas diferentes e obter resultados diferentes, 809 00:41:04,220 --> 00:41:07,090 é super acessível 810 00:41:07,090 --> 00:41:11,420 quando você está tentando escrever programas diferentes em momentos diferentes. 811 00:41:11,420 --> 00:41:14,580 >> Assim, por exemplo, uma função que estamos usando mais e mais e mais uma 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 própria uma função 814 00:41:19,680 --> 00:41:23,360 e verifica-se que ele é realmente um muito longo e complicado, 815 00:41:23,360 --> 00:41:26,420 desagradável, funcionar a escrever. 816 00:41:26,420 --> 00:41:29,590 Assim tão simples como parece-nos 817 00:41:29,590 --> 00:41:31,810 para imprimir material para fora da tela, 818 00:41:31,810 --> 00:41:34,820 porque todos nós acabamos de fazer que, no início de hoje seção, 819 00:41:34,820 --> 00:41:36,870 verifica-se que é, na verdade, você sabe, 820 00:41:36,870 --> 00:41:39,900 um bom par de centenas de linhas de código. 821 00:41:42,030 --> 00:41:45,620 Não é algo que eu jamais iria querer escrever, com certeza, 822 00:41:45,620 --> 00:41:47,480 mas temos de usá-lo todos os dias, que é legal, 823 00:41:47,480 --> 00:41:49,020 então temos para compartilhar com os outros, 824 00:41:49,020 --> 00:41:51,790 com programas diferentes, 825 00:41:51,790 --> 00:41:54,520 por isso vamos estar mergulhando mais em funções; 826 00:41:54,520 --> 00:41:56,090 por enquanto, não estamos - 827 00:41:56,090 --> 00:41:59,150 a única função que vamos estar escrevendo é principal. 828 00:41:59,150 --> 00:42:01,570 Principal próprio é também uma função, 829 00:42:01,570 --> 00:42:04,270 e você pode ver ele tem sua saída, 830 00:42:04,270 --> 00:42:06,610 suas entradas, como falamos, 831 00:42:06,610 --> 00:42:08,930 e então seu nome, que é principal. 832 00:42:08,930 --> 00:42:11,800 Principal é uma espécie de - é uma função especial lá. 833 00:42:11,800 --> 00:42:14,800 Em seu programa de C, tem que haver uma função principal, 834 00:42:14,800 --> 00:42:17,900 e assim, por agora, nós meio da escrita omitido 835 00:42:17,900 --> 00:42:21,400 o protótipo, ou a declaração principal. 836 00:42:21,400 --> 00:42:23,050 Nós já que para você, 837 00:42:23,050 --> 00:42:25,650 e nós tivemos que preencher tipo de espaços em branco. 838 00:42:25,650 --> 00:42:29,120 >> >> Assim, para o conjunto segundo problema, que não precisa 839 00:42:29,120 --> 00:42:31,350 escrevê-lo na função de segundo? 840 00:42:31,350 --> 00:42:34,200 Eu não acredito. 841 00:42:34,200 --> 00:42:37,600 Eu acredito que é tudo aqui. 842 00:42:37,600 --> 00:42:41,710 Sim, então cifra de Caesar, 843 00:42:41,710 --> 00:42:45,000 você não tem que, não parece, 844 00:42:48,740 --> 00:42:53,150 e Vigenère, você não quer, 845 00:42:53,150 --> 00:42:56,400 assim - e não é que você nunca realmente tem que escrever 846 00:42:56,400 --> 00:42:58,250 uma função, certo? 847 00:42:58,250 --> 00:43:01,950 Você chama sempre colocar todo o seu código dentro de principal, 848 00:43:01,950 --> 00:43:04,500 e muitos programadores fazer isso. 849 00:43:04,500 --> 00:43:07,130 À medida que avançar, 850 00:43:07,130 --> 00:43:09,480 começamos introduzindo funções 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 torná-la mais elegante, 853 00:43:13,380 --> 00:43:16,890 no caso de ter tarefas - tipo como quando falamos sobre loops, 854 00:43:16,890 --> 00:43:20,400 como às vezes há coisas que você quer fazer de novo e de novo e de novo, 855 00:43:20,400 --> 00:43:23,510 e você tem o tipo de forma ingênua - 856 00:43:23,510 --> 00:43:26,360 ou o que, muitas vezes, chamam de "espantalho" solução, 857 00:43:26,360 --> 00:43:29,390 é só copiar e colar uma e outra vez - 858 00:43:29,390 --> 00:43:31,000 você pode fazer a mesma coisa com funções em que você simplesmente copiar e colar 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 mas que incha o seu código - 861 00:43:35,750 --> 00:43:38,550 acaba tornando o código muito longo - 862 00:43:38,550 --> 00:43:41,550 e também fica um pouco confuso, 863 00:43:41,550 --> 00:43:43,470 e, então isso significa que você não é capaz de gostar - 864 00:43:43,470 --> 00:43:45,250 se você quiser usar o código novamente em outro programa, 865 00:43:45,250 --> 00:43:48,610 você também está preso copiando e colando-o novamente, 866 00:43:48,610 --> 00:43:51,170 então uma das coisas que vamos falar é 867 00:43:51,170 --> 00:43:54,960 tipo de design e estilo de seus programas, 868 00:43:54,960 --> 00:43:57,010 e assim, quando faz sentido para o tipo de 869 00:43:57,010 --> 00:43:59,800 pacote de algo e colocá-lo como uma função separada, 870 00:43:59,800 --> 00:44:02,080 nós encorajamos você a fazer isso, 871 00:44:02,080 --> 00:44:04,700 e isso é algo que, novamente, 872 00:44:04,700 --> 00:44:07,790 não há nenhuma regra dura e rápida. 873 00:44:07,790 --> 00:44:11,540 Nós raramente dizer que você deve escrever uma função chamada isso, 874 00:44:12,870 --> 00:44:16,320 mas é mais uma daquelas coisas que você acabou de desenvolver ao longo do tempo 875 00:44:16,320 --> 00:44:19,470 como você escreve mais e mais programas. 876 00:44:21,940 --> 00:44:24,790 >> Mais alguma pergunta? 877 00:44:26,340 --> 00:44:30,610 Ok, então vamos agora 878 00:44:30,610 --> 00:44:34,750 volte até esse cara aqui, 879 00:44:34,750 --> 00:44:37,800 então eu estou ainda nesta seção de perguntas. 880 00:44:37,800 --> 00:44:39,900 Nós conversamos sobre todos esses diferentes, 881 00:44:39,900 --> 00:44:42,050 o que é uma função, por que escrever funções, 882 00:44:42,050 --> 00:44:44,700 quando você pode simplesmente copiar e colar? 883 00:44:44,700 --> 00:44:47,700 Espero que tenha convencido de que escrever funções é uma coisa boa. 884 00:44:47,700 --> 00:44:50,870 Então agora vamos passar para este programa MySpace, 885 00:44:50,870 --> 00:44:53,080 e nós vamos gastar um pouco de tempo fazendo isso. 886 00:44:54,600 --> 00:44:56,480 >> Então, vamos ver, 887 00:44:56,480 --> 00:45:00,230 posso ter alguém ler isso para mim? 888 00:45:02,640 --> 00:45:04,660 Vamos ter Mikhaila - você vai ler isso por nós? 889 00:45:07,660 --> 00:45:08,890 >> Você quer dizer quando volta MySpace - 890 00:45:08,890 --> 00:45:10,920 Backup quando o MySpace foi legal. 891 00:45:10,920 --> 00:45:12,070 >> "Voltar ao MySpace foi legal, 892 00:45:12,070 --> 00:45:14,900 era toda a raiva de tipo como este. 893 00:45:14,900 --> 00:45:17,320 Talvez ele ainda é? Eu não tenho certeza. 894 00:45:17,320 --> 00:45:19,990 Em qualquer caso, de utilizar o aparelho CS50, 895 00:45:19,990 --> 00:45:22,600 CS50 Run, ou CS50 Spaces, 896 00:45:22,600 --> 00:45:25,370 escrever um programa que solicita ao usuário uma mensagem 897 00:45:25,370 --> 00:45:29,350 e em seguida, gera a mensagem com sua primeira letra maiúscula, 898 00:45:29,350 --> 00:45:31,800 com todas as outras letras em caso de alternância, 899 00:45:31,800 --> 00:45:34,010 de acordo com a saída de amostra abaixo, 900 00:45:34,010 --> 00:45:37,060 onde o texto em negrito representa a entrada de algum usuário. 901 00:45:37,060 --> 00:45:39,800 Para simplificar, você pode assumir que o usuário 902 00:45:39,800 --> 00:45:42,810 vai apenas letras minúsculas de entrada e espaços. 903 00:45:42,810 --> 00:45:45,900 Considere este problema uma oportunidade de praticar; 904 00:45:45,900 --> 00:45:48,640 você não vai ser convidado para apresentar este programa. " 905 00:45:48,640 --> 00:45:51,640 >> Awesome, obrigado. 906 00:45:51,640 --> 00:45:54,750 Assim como Mikhaila disse, 907 00:45:54,750 --> 00:45:58,850 vamos escrever um programa que myspaces seu código. 908 00:45:58,850 --> 00:46:02,230 Então, se algum de vocês usam o MySpace? 909 00:46:02,230 --> 00:46:04,100 Algum de vocês tem contas do MySpace? 910 00:46:04,100 --> 00:46:05,920 Oh, yeah, yeah! 911 00:46:05,920 --> 00:46:08,300 Foi muito legal. 912 00:46:08,300 --> 00:46:09,950 [Risos] 913 00:46:09,950 --> 00:46:12,060 Eu sei. 914 00:46:12,060 --> 00:46:14,500 Encontros mim. 915 00:46:15,490 --> 00:46:18,300 Então o que estamos tentando fazer é escrever um programa 916 00:46:18,300 --> 00:46:21,110 que atravessa 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ão cada letra depois - 919 00:46:27,140 --> 00:46:29,350 ou todas as outras letras depois, eu sinto muito. 920 00:46:29,350 --> 00:46:32,910 >> Assim - e você pode ver neste exemplo, 921 00:46:32,910 --> 00:46:35,260 é assim que funciona o programa, 922 00:46:35,260 --> 00:46:38,780 e por isso este é apenas dizer: "Nós estamos executando um programa chamado a.out. 923 00:46:41,490 --> 00:46:44,630 A entrada que nós vamos dar-lhe 924 00:46:44,630 --> 00:46:47,090 vai ser solicitado. 925 00:46:47,090 --> 00:46:51,150 Nós não vamos fornecer a entrada na linha de comando. " 926 00:46:51,150 --> 00:46:54,100 Se você estiver seguindo todas as palestras 927 00:46:54,100 --> 00:46:56,710 e ouvir os argumentos de linha de comando, 928 00:46:57,810 --> 00:47:00,080 esse é o tipo de onde aqueles - que a sintaxe funk 929 00:47:00,080 --> 00:47:04,530 na principal vem com a argc int, tudo isso, 930 00:47:04,530 --> 00:47:07,630 então aqui nós não estamos usando isso, não estamos lidando com nada disso. 931 00:47:09,400 --> 00:47:12,650 Só vamos conseguir este digitados pelo usuário, 932 00:47:12,650 --> 00:47:15,700 e depois a linha esta segunda com a capitalização funk 933 00:47:15,700 --> 00:47:18,550 é o que queremos que o nosso programa para a saída. 934 00:47:19,790 --> 00:47:22,860 >> Então, ao invés de utilizar o aparelho ou Executar, vamos usar os espaços, 935 00:47:22,860 --> 00:47:25,360 porque temos espaços, 936 00:47:25,360 --> 00:47:28,640 e assim se vocês faria 937 00:47:28,640 --> 00:47:32,380 obter o seu código para algo parecido com isso, 938 00:47:32,380 --> 00:47:35,930 então eu estou indo para salvar esta revisão 939 00:47:35,930 --> 00:47:38,390 só assim você tem a placa de caldeira aqui 940 00:47:38,390 --> 00:47:42,840 parecida com esta, int main (void), nada nele. 941 00:47:44,480 --> 00:47:48,460 Na verdade, o que nós vamos fazer é que vamos simplesmente apagar tudo junto. 942 00:47:48,460 --> 00:47:50,330 Queremos uma lousa em branco, 943 00:47:50,330 --> 00:47:52,470 porque nós não vamos começar a escrever código; 944 00:47:52,470 --> 00:47:55,380 em vez disso, vamos tentar escrever um pseudocódigo 945 00:47:55,380 --> 00:47:58,580 o que realmente significa apenas que vai escrever algo que não é de código 946 00:47:58,580 --> 00:48:01,010 que tipo de descreve o que nós queremos fazer, 947 00:48:01,010 --> 00:48:05,180 meio como Davi fez no primeiro dia de aula, 948 00:48:05,180 --> 00:48:08,310 ou eu acho que foi o segundo dia de aula, quando ele fez a demonstração meias todo. 949 00:48:08,310 --> 00:48:10,990 Vocês se lembram que - vendo as meias? 950 00:48:10,990 --> 00:48:13,300 Joseph estava lá tipo de digitar em Inglês? 951 00:48:13,300 --> 00:48:16,300 Então, vamos fazer a mesma coisa. 952 00:48:16,300 --> 00:48:18,380 >> Então, quando eu começar a escrever pseudocódigo, 953 00:48:18,380 --> 00:48:22,640 Eu gostaria de começar por olhar para o que a entrada vai ser. 954 00:48:22,640 --> 00:48:24,950 E eu dou-me um caso de exemplo, 955 00:48:24,950 --> 00:48:28,780 assim como "obrigado pelo add!" 956 00:48:35,030 --> 00:48:38,010 E também eu escrever o que eu quero que a saída seja, 957 00:48:38,010 --> 00:48:42,210 que neste caso é algo parecido com isso. 958 00:48:53,790 --> 00:48:56,050 E esse tipo de dá-me um bom lugar, como, começando a pensar, 959 00:48:56,050 --> 00:48:59,730 "Ok, eu quero tomar a linha 1 960 00:48:59,730 --> 00:49:03,560 e quero transformá-lo em linha 2 ", 961 00:49:03,560 --> 00:49:06,570 e que tipo de ajuda a guiar o meu pensamento. 962 00:49:06,570 --> 00:49:09,990 Este é um bom lugar para começar. 963 00:49:09,990 --> 00:49:12,190 Outra maneira de pensar sobre isso, também, como meio que seguir em frente 964 00:49:12,190 --> 00:49:15,020 e como você faz isso em seus próprios programas, é 965 00:49:15,020 --> 00:49:18,530 pensar sobre o tipo de como o que são os casos de ponta para isso? 966 00:49:18,530 --> 00:49:20,740 Quais são os tipos de cenários estranhos? 967 00:49:20,740 --> 00:49:23,660 Quais são as entradas estranhas que podemos chegar? 968 00:49:23,660 --> 00:49:26,550 E o que essas saídas devem se parece? 969 00:49:26,550 --> 00:49:29,670 Por exemplo, uma entrada de estranho 970 00:49:29,670 --> 00:49:33,200 seria um presente, 971 00:49:33,200 --> 00:49:35,630 criando absolutamente nada, 972 00:49:35,630 --> 00:49:37,840 como o que devemos saída nesse caso? 973 00:49:37,840 --> 00:49:40,530 Algo que queremos pensar, também. 974 00:49:40,530 --> 00:49:44,450 >> Assim como uma pergunta, 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 nós não temos qualquer entrada em tudo, o que deve ser a saída do nosso programa? 977 00:49:53,740 --> 00:49:54,860 Nada. >> 978 00:49:54,860 --> 00:49:57,340 Nada? Parece ótimo. 979 00:49:57,340 --> 00:49:59,280 Então, nós queremos ter certeza de que não estamos escrevendo qualquer coisa fora 980 00:49:59,280 --> 00:50:01,500 se não conseguir nada dentro 981 00:50:01,500 --> 00:50:04,320 Cool. Okay. 982 00:50:04,320 --> 00:50:07,370 Assim 983 00:50:07,370 --> 00:50:09,380 Eu vou chamar um casal de pessoas como nós atravessamos 984 00:50:09,380 --> 00:50:12,790 e apenas descobrir o tipo de como o que o algoritmo geral é 985 00:50:12,790 --> 00:50:15,250 e nós vamos começar a trabalhar tipo por isso juntos. 986 00:50:16,240 --> 00:50:19,710 >> Então, vamos ver. Missy. 987 00:50:19,710 --> 00:50:21,220 Como você acha que ia começar? 988 00:50:21,220 --> 00:50:24,830 O que seria um bom lugar para começar aqui 989 00:50:24,830 --> 00:50:27,900 se queremos transformar, digamos, na linha 1 990 00:50:27,900 --> 00:50:29,440 na linha 2? 991 00:50:29,440 --> 00:50:32,650 Você pode tipo de apenas explicar-me, em Inglês, o que você está pensando? 992 00:50:32,650 --> 00:50:34,770 Não se preocupe com o código. 993 00:50:34,770 --> 00:50:38,250 >> Primeira coisa que eu faria seria para 994 00:50:38,250 --> 00:50:41,170 tipo de usuário direto para lhes dizer o que quiser. 995 00:50:41,170 --> 00:50:44,730 Ok, então, digamos, 996 00:50:44,730 --> 00:50:47,450 "Ei, usuário. Quero 997 00:50:47,450 --> 00:50:50,560 uma string "- incríveis. 998 00:50:50,560 --> 00:50:52,990 Então vamos escrever isso. 999 00:50:52,990 --> 00:50:56,140 Perguntar ao utilizador a uma corda. 1000 00:50:56,140 --> 00:50:59,270 Isso soa como um bom começo. 1001 00:51:03,920 --> 00:51:06,460 Tudo bem. 1002 00:51:06,460 --> 00:51:09,750 Vamos pedir Kelly Ren neste momento. 1003 00:51:09,750 --> 00:51:11,580 O que seria de nós, então quero fazer a seguir? 1004 00:51:11,580 --> 00:51:14,220 Qual é o tipo do nosso lado -? 1005 00:51:14,220 --> 00:51:18,080 Colete >> sua entrada e armazená-lo como uma variável. 1006 00:51:18,080 --> 00:51:20,470 Grande. 1007 00:51:20,470 --> 00:51:24,280 Então recolher a corda, 1008 00:51:25,450 --> 00:51:27,880 armazená-lo em uma variável. 1009 00:51:34,840 --> 00:51:36,460 Então, há algo especial que queremos fazer aqui? 1010 00:51:36,460 --> 00:51:39,700 Queremos verificar a sua entrada 1011 00:51:39,700 --> 00:51:42,260 antes -? 1012 00:51:42,260 --> 00:51:43,790 Sim >>. 1013 00:51:43,790 --> 00:51:46,330 O que podemos desejar verificar? 1014 00:51:46,330 --> 00:51:48,980 >> Bem, você disse que não tem que verificar se é um número, certo? 1015 00:51:48,980 --> 00:51:52,400 Porque ele vai assumir que é minúscula? 1016 00:51:52,400 --> 00:51:55,650 Sim. 1017 00:51:56,380 --> 00:51:58,920 >> Assim, verifica-se que - sim. 1018 00:51:58,920 --> 00:52:01,850 Então getString é garantida para retornar-nos uma corda. 1019 00:52:01,850 --> 00:52:05,050 Ele não vai retornar um número para nós ou qualquer coisa assim. 1020 00:52:05,050 --> 00:52:09,140 Pode haver caracteres dígito dentro dessa cadeia, no entanto. 1021 00:52:09,140 --> 00:52:13,460 E aqueles, podemos ignorar como fizemos a capitalização. 1022 00:52:13,460 --> 00:52:16,620 Mas uma cadeia vazia é totalmente bem, 1023 00:52:16,620 --> 00:52:19,900 então o caso aqui na linha 4 e 5, 1024 00:52:19,900 --> 00:52:22,020 direita, onde não há entrada, 1025 00:52:22,020 --> 00:52:25,190 e nós colocamos nada como a nossa saída. 1026 00:52:25,190 --> 00:52:28,730 Não temos que preocupar-se sobre a certeza de que há algo na cadeia 1027 00:52:28,730 --> 00:52:31,840 ou que a cadeia é de pelo menos quatro caracteres; 1028 00:52:31,840 --> 00:52:34,190 nada está bem. 1029 00:52:34,190 --> 00:52:38,270 Portanto, este é contrastado, por exemplo, com programas como os tostões que você escreveu 1030 00:52:38,270 --> 00:52:42,340 onde você teve a certeza que estavam recebendo números não negativos; 1031 00:52:42,340 --> 00:52:46,430 você tinha que ter certeza que você estava recebendo o número correto de dias em um mês. 1032 00:52:46,430 --> 00:52:49,630 E como é que vocês estão fazendo isso? 1033 00:52:49,630 --> 00:52:51,470 Como você faria esse teste? 1034 00:52:51,470 --> 00:52:54,090 O que isso exige que você usa? 1035 00:52:54,090 --> 00:52:55,650 >> Do-while. 1036 00:52:55,650 --> 00:53:00,840 Loops do-while; outros tipos de loops, também, sim. 1037 00:53:02,190 --> 00:53:04,520 Assim, verifica-se que não é necessário utilizar um circuito, neste caso, 1038 00:53:04,520 --> 00:53:07,360 quando estamos solicitando uma string, que é uma espécie de bom. 1039 00:53:08,280 --> 00:53:10,620 >> Tudo bem, seguindo em frente. 1040 00:53:12,410 --> 00:53:14,270 Então, Stella. 1041 00:53:14,270 --> 00:53:17,530 Você pode nos contar um pouco sobre o que devemos fazer em seguida? 1042 00:53:17,530 --> 00:53:20,270 Então, agora temos a cadeia, temos que armazenado em uma variável; 1043 00:53:20,270 --> 00:53:23,360 o que nós precisamos fazer com a corda? 1044 00:53:26,790 --> 00:53:33,530 Precisamos >> - 1045 00:53:33,530 --> 00:53:36,550 identificar o 2 - 1046 00:53:36,550 --> 00:53:39,290 Sim, basta dizer que em Inglês, que é incrível. 1047 00:53:39,290 --> 00:53:42,670 Identificar as >> [inaudível] capitais - ou, em maiúsculas. 1048 00:53:44,420 --> 00:53:48,130 Sim, assim que você identificar quais são maiúsculas e minúsculas. 1049 00:53:50,020 --> 00:53:54,180 Não podemos maiúsculas ou minúsculas-los até nós identificamos quais. 1050 00:54:03,790 --> 00:54:06,350 Então, vamos colocar isso aqui. 1051 00:54:06,350 --> 00:54:10,210 >> Então, só de pensar sobre este processo, 1052 00:54:10,210 --> 00:54:13,200 como vamos fazer essa identificação? 1053 00:54:13,200 --> 00:54:15,050 Sabe, Dan? 1054 00:54:15,050 --> 00:54:18,120 Tipo do que nós - que ferramenta que teria que usar de nossa caixa de ferramentas? 1055 00:54:18,120 --> 00:54:22,500 >> Eu colocá-lo em alguma forma, como uma matriz ou cada linha 1056 00:54:22,500 --> 00:54:24,240 é a sua própria caixa pouco, 1057 00:54:24,240 --> 00:54:27,240 e depois maiúsculas-lo de lá ou não. 1058 00:54:27,240 --> 00:54:30,440 Ok, então uma ferramenta que podemos usar é uma matriz. 1059 00:54:30,440 --> 00:54:33,760 O que temos de olhar para na seqüência, 1060 00:54:33,760 --> 00:54:36,680 porém, para descobrir - que tinha de olhar para os personagens. 1061 00:54:36,680 --> 00:54:40,890 >> Então você tem de olhar para o comprimento da corda? 1062 00:54:40,890 --> 00:54:43,880 Sim, então parte do que está recebendo o comprimento da corda. 1063 00:54:50,450 --> 00:54:54,150 Só por curiosidade, o que vamos usar para obter o comprimento de uma corda? 1064 00:54:54,150 --> 00:54:58,080 Strlen >>? 1065 00:54:58,080 --> 00:55:02,870 Sim, strlen, nós chamamos isso de "strlen" 1066 00:55:04,180 --> 00:55:08,620 Todas estas funções de cadeia, assim strlen é uma função, 1067 00:55:08,620 --> 00:55:10,670 e é super útil, porque podemos usá-lo apenas para dizer, 1068 00:55:10,670 --> 00:55:13,430 Ei, strlen: Aqui está uma corda, me diga quanto tempo é. 1069 00:55:13,430 --> 00:55:17,350 Na palestra de hoje, David falou muito sobre como strlen é implementado, 1070 00:55:17,350 --> 00:55:20,370 o que realmente está acontecendo nos bastidores. 1071 00:55:20,370 --> 00:55:25,450 Mas este é um dos muito super útil. 1072 00:55:25,450 --> 00:55:29,170 Existem outras que também estão na biblioteca string, 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 qual é usado para comparar strings umas às outras. 1075 00:55:41,220 --> 00:55:45,020 Os outros que você irá usar como strstr, 1076 00:55:45,020 --> 00:55:48,770 o que é bom para encontrar cadeias sub e assim por diante. 1077 00:55:48,770 --> 00:55:53,380 Para a maior parte, todos eles começam com str e depois passar a ser outra coisa. 1078 00:55:53,380 --> 00:55:57,080 A razão que eles realmente não escrevê-los como corda e assim por diante 1079 00:55:57,080 --> 00:56:00,260 é porque em como os primeiros dias de C, 1080 00:56:00,260 --> 00:56:04,100 quando as pessoas estavam escrevendo em primeiro lugar e tudo o que, 1081 00:56:04,100 --> 00:56:07,580 eles tinham limitações no número de caracteres que você pode usar 1082 00:56:07,580 --> 00:56:09,950 para nomes de funções e nomes de variáveis, 1083 00:56:09,950 --> 00:56:12,620 então tudo é como super condensado. 1084 00:56:12,620 --> 00:56:15,750 Mas quando você vê algo que começa com str, 1085 00:56:15,750 --> 00:56:18,600 que normalmente significa que isso tem algo a ver com uma corda. 1086 00:56:20,990 --> 00:56:23,350 >> Ok, então você tem que obter o comprimento da corda, 1087 00:56:23,350 --> 00:56:27,110 e então, o que vamos fazer com os personagens? 1088 00:56:27,110 --> 00:56:29,020 Sabe, Sam? 1089 00:56:29,020 --> 00:56:32,410 >> Eu não tenho idéia, eu estava tentando descobrir isso. 1090 00:56:32,410 --> 00:56:35,410 Eu realmente não sei - Eu gostaria que houvesse alguma maneira de - 1091 00:56:35,410 --> 00:56:38,990 Quer dizer, eu acho que talvez a gente pudesse fazer algo com probabilidades e pares, 1092 00:56:38,990 --> 00:56:40,860 mas eu não sei de qualquer função como essa. 1093 00:56:40,860 --> 00:56:42,240 Sim. 1094 00:56:43,160 --> 00:56:45,200 Mas >> isso - não necessariamente trabalhar, 1095 00:56:45,200 --> 00:56:48,690 porque então você obtém os espaços a ser - 1096 00:56:48,690 --> 00:56:51,130 você teria que ter o espaço para obter dicas sobre como - 1097 00:56:51,130 --> 00:56:54,310 Okay. 1098 00:56:54,310 --> 00:56:56,490 >> Eu não sei - eu sou tipo de perda neste momento. 1099 00:56:56,490 --> 00:56:58,120 Sim - não, não, não, estes são bons pontos. 1100 00:56:58,120 --> 00:57:00,420 Então, o que nós precisamos fazer é, como disse Sam, 1101 00:57:00,420 --> 00:57:02,970 precisamos para controlar quais cartas são as letras estranhas, 1102 00:57:02,970 --> 00:57:05,540 e quais são as letras mesmo. 1103 00:57:06,650 --> 00:57:09,090 Mas nós queremos ter certeza de que não estamos apenas à procura 1104 00:57:09,090 --> 00:57:12,110 no par e ímpar 1105 00:57:12,110 --> 00:57:14,030 índices na seqüência, 1106 00:57:14,030 --> 00:57:17,660 mas olhando para as letras pares e ímpares na seqüência, 1107 00:57:17,660 --> 00:57:20,190 por isso precisamos de um bocado têm essa distinção entre 1108 00:57:20,190 --> 00:57:25,190 letras - como o que na verdade é A, B, C, D, ou assim por diante, 1109 00:57:25,190 --> 00:57:29,090 e que as coisas não são letras, mas ainda em nossa string. 1110 00:57:29,090 --> 00:57:32,390 Por exemplo, aqui, como este ponto de exclamação não é uma letra, 1111 00:57:32,390 --> 00:57:36,060 mas ainda é parte da nossa cadeia, que ainda é um char. 1112 00:57:36,060 --> 00:57:38,820 Do mesmo modo, todos estes espaços - 1113 00:57:38,820 --> 00:57:41,710 não faz sentido para aproveitar um espaço, certo? 1114 00:57:41,710 --> 00:57:46,160 Então, nós queremos ter certeza de que nós de alguma forma ignorar os 1115 00:57:46,160 --> 00:57:49,410 enquanto ainda chances de rastreamento e nivela. 1116 00:57:50,900 --> 00:57:54,990 >> Então, meio que em nossa caixa de ferramentas de programação 1117 00:57:54,990 --> 00:57:57,270 até agora, se quiser, 1118 00:57:57,270 --> 00:58:01,310 temos um número de ferramentas diferentes que nós já conversamos sobre. 1119 00:58:01,310 --> 00:58:04,640 Assim, uma, por exemplo, são variáveis, 1120 00:58:04,640 --> 00:58:07,120 como falamos aqui. 1121 00:58:07,120 --> 00:58:10,730 Outra ferramenta que falamos são as funções. 1122 00:58:10,730 --> 00:58:15,800 Então, nós já conversamos sobre variáveis ​​em nosso pseudocódigo-se aqui 1123 00:58:15,800 --> 00:58:19,760 como o que nós vamos usar para armazenar nossa string. 1124 00:58:19,760 --> 00:58:24,630 Nós conversamos sobre funções para obter o comprimento de uma corda, como strlen. 1125 00:58:28,510 --> 00:58:31,170 Nós estamos falando de outra coisa, e nós já conversamos sobre isso 1126 00:58:31,170 --> 00:58:34,850 para muito mais cedo na seção de hoje: loops. 1127 00:58:39,390 --> 00:58:42,030 >> O que vocês pensam sobre o uso de um loop neste programa? 1128 00:58:42,030 --> 00:58:44,110 Jared, o que você acha? 1129 00:58:47,150 --> 00:58:50,030 Será que usar um loop neste programa? 1130 00:58:50,030 --> 00:58:52,500 >> Provavelmente não, não, porque você não tem que passar por isso mais de uma vez. 1131 00:58:52,500 --> 00:58:55,260 Ok, você não tem que passar pelo que mais de uma vez? 1132 00:58:55,260 --> 00:58:57,190 >> A seqüência inteira. 1133 00:58:57,190 --> 00:59:00,660 Certo, então você não tem que passar por toda a cadeia uma vez. 1134 00:59:00,660 --> 00:59:03,330 Desculpe que fez absolutamente nenhum sentido! 1135 00:59:03,330 --> 00:59:06,360 Você não tem que passar por toda a cadeia mais de uma vez. 1136 00:59:06,360 --> 00:59:08,660 Okay. 1137 00:59:09,790 --> 00:59:11,920 O que você acha? 1138 00:59:11,920 --> 00:59:14,110 >> Eu acho que é melhor usá-los 1139 00:59:14,110 --> 00:59:16,640 para que possamos fazer como capitalizar enquanto 1140 00:59:16,640 --> 00:59:19,750 a localização do seu número é [inaudível]. 1141 00:59:19,750 --> 00:59:22,940 Grande, e assim capitalizar o que? 1142 00:59:22,940 --> 00:59:25,200 Ok, então nós estamos dizendo que 1143 00:59:25,200 --> 00:59:28,130 devemos usar um loop, porque queremos 1144 00:59:28,130 --> 00:59:32,550 uma letra em maiúscula, enquanto não é um número. 1145 00:59:35,130 --> 00:59:37,140 Então, - desculpe, você quer adicionar? 1146 00:59:37,140 --> 00:59:39,340 >> Eu ia dizer que a maneira como você trata a string 1147 00:59:39,340 --> 00:59:42,290 e [inaudível] separar o [inaudível] sobre os personagens? 1148 00:59:42,290 --> 00:59:43,710 Sim. 1149 00:59:43,710 --> 00:59:45,850 >> E então podemos atribuir os números de - 1150 00:59:45,850 --> 00:59:47,780 ou com base na localização das letras na seqüência? 1151 00:59:47,780 --> 00:59:49,720 Sim. 1152 00:59:49,720 --> 00:59:53,640 E >> identificar se é par ou ímpar e capitalizar a carta em si 1153 00:59:53,640 --> 00:59:57,750 enquanto a localização da carta é [inaudível] - desculpe. 1154 00:59:57,750 --> 01:00:00,150 Grande. 1155 01:00:00,150 --> 01:00:03,430 >> Portanto, apenas uma recapitulação. 1156 01:00:03,430 --> 01:00:05,840 Você pode me lembrar do seu nome novamente - Sinto muito. 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ão, o que Charlotte está dizendo, 1160 01:00:11,130 --> 01:00:14,950 que é totalmente certo - Deus, este gosta de auto travessão em mim - 1161 01:00:14,950 --> 01:00:17,770 é que se olharmos para uma string 1162 01:00:17,770 --> 01:00:19,160 tal como este se encontra no topo - 1163 01:00:19,160 --> 01:00:21,590 "Obrigado por adicionar" - 1164 01:00:21,590 --> 01:00:24,790 como uma seqüência de caracteres 1165 01:00:24,790 --> 01:00:29,010 onde a é a posição 0, 1166 01:00:29,010 --> 01:00:32,260 o h está na posição 1. 1167 01:00:32,260 --> 01:00:36,880 Uma é a 2, então temos 3, 4, 5; 1168 01:00:36,880 --> 01:00:40,830 o espaço está na posição 6. 1169 01:00:42,380 --> 01:00:45,300 Considerando que: - o que é a posição 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ão nós temos 10, e então eu realmente não posso escrevê-lo sem ele 1174 01:00:54,340 --> 01:00:57,430 meio que ficar confuso na tela. 1175 01:00:57,430 --> 01:01:02,340 Mas esta é, na verdade, como podemos falar sobre strings na memória. 1176 01:01:02,340 --> 01:01:04,660 É uma string 1177 01:01:04,660 --> 01:01:07,920 é uma seqüência de caracteres, 1178 01:01:07,920 --> 01:01:12,430 e quando nos referimos a um caráter individual em uma corda, 1179 01:01:12,430 --> 01:01:15,280 que muitas vezes o fazem referindo-se a posição de que a personagem 1180 01:01:15,280 --> 01:01:17,620 dentro da cadeia, 1181 01:01:17,620 --> 01:01:19,910 provavelmente da mesma forma que falamos de setembro 1182 01:01:19,910 --> 01:01:22,870 sendo o nono mês do ano 1183 01:01:22,870 --> 01:01:27,730 ou Segunda sendo o primeiro dia da semana. 1184 01:01:29,280 --> 01:01:33,070 Portanto, este nos fornece uma maneira de 1185 01:01:33,070 --> 01:01:37,030 descobrir quais são estranhas mesmo contra 1186 01:01:37,030 --> 01:01:39,540 porque você pode ver aqui, 1187 01:01:39,540 --> 01:01:43,640 se combiná-lo com este T, 1188 01:01:46,310 --> 01:01:49,360 você pode ver que todos os capitalizados 1189 01:01:49,360 --> 01:01:53,040 estão em posições ainda, 1190 01:01:53,040 --> 01:01:55,880 pelo menos para a primeira palavra, 1191 01:01:55,880 --> 01:01:59,080 e então as coisas são jogados fora, uma vez que atingiu aquele espaço, 1192 01:01:59,080 --> 01:02:02,460 porque não contamos este espaço como uma carta, 1193 01:02:02,460 --> 01:02:05,150 por isso é como se começou 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 espaço, 6, 7, 8, espaço, 1196 01:02:12,600 --> 01:02:16,440 9, e, em seguida, 10, 11, 12, e assim por diante. 1197 01:02:19,300 --> 01:02:22,910 >> Legal, então nós definitivamente vai querer usar algum tipo de loop 1198 01:02:22,910 --> 01:02:27,760 passar por cima de cada um dos personagens, por sua vez. 1199 01:02:31,330 --> 01:02:34,580 Portanto, neste ponto, 1200 01:02:36,490 --> 01:02:38,360 vamos voltar para o nosso pseudocódigo velho aqui. 1201 01:02:40,970 --> 01:02:42,650 Como parte desta identificação de quais 1202 01:02:42,650 --> 01:02:45,350 são maiúsculas e quais são minúsculas, 1203 01:02:45,350 --> 01:02:48,340 vamos querer fazer isso em algum tipo de laço. 1204 01:02:51,080 --> 01:02:53,390 Cólon Loop,. 1205 01:02:55,070 --> 01:03:01,220 Que tipo de laço, dos tipos de loops que temos, 1206 01:03:01,220 --> 01:03:03,670 parece ser uma boa para usar neste caso? 1207 01:03:03,670 --> 01:03:05,610 >> Eu estava pensando para o laço. 1208 01:03:05,610 --> 01:03:07,500 E por que você está pensando em loop? 1209 01:03:07,500 --> 01:03:10,000 Porque ele >> começa em zero, e depois 1210 01:03:10,000 --> 01:03:13,000 quando alcançamos o comprimento da corda, 1211 01:03:13,000 --> 01:03:16,170 e então cada iteração, você pode [inaudível], também? 1212 01:03:16,170 --> 01:03:18,260 Sim, exatamente. 1213 01:03:18,260 --> 01:03:21,490 Assim, a partir dos diferentes escolhas 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 Quando um loop é particularmente útil 1216 01:03:28,550 --> 01:03:32,120 é quando você quer saber 1217 01:03:32,120 --> 01:03:34,940 tipo de onde você está no circuito, 1218 01:03:34,940 --> 01:03:38,520 quantas vezes o circuito tiver sido executada, até agora. 1219 01:03:38,520 --> 01:03:42,490 Que é exatamente o que queremos saber, nesta situação, 1220 01:03:42,490 --> 01:03:44,640 como Kelly disse: 1221 01:03:44,640 --> 01:03:47,400 baseado fora de comentário anterior de Charlotte, que queremos saber a posição 1222 01:03:47,400 --> 01:03:49,900 do personagem dentro da cadeia, 1223 01:03:49,900 --> 01:03:51,750 e para o laço nos dará apenas isso, 1224 01:03:51,750 --> 01:03:54,680 porque se começarmos tipo de olhar para trás em nossa string, 1225 01:03:54,680 --> 01:03:57,140 se começamos o nosso circuito para 0, 1226 01:03:57,140 --> 01:04:00,350 e subimos através do comprimento de toda a cadeia, 1227 01:04:00,350 --> 01:04:04,740 então podemos associar a letra T 1228 01:04:04,740 --> 01:04:08,110 com a 0 em nosso loop for, 1229 01:04:09,950 --> 01:04:13,080 H com a letra 1 em nosso loop, e assim por diante, 1230 01:04:13,080 --> 01:04:16,600 indo todo o caminho até o final da cadeia. 1231 01:04:18,810 --> 01:04:21,890 >> Então, vamos começar a programar este um pouco 1232 01:04:21,890 --> 01:04:24,930 só para vocês ter uma idéia de o que isso 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ão temos o nosso pseudo-código aqui, 1235 01:04:33,490 --> 01:04:38,120 e eu vou apagar tudo. 1236 01:04:38,120 --> 01:04:42,210 Então, eu tenho uma página em branco. 1237 01:04:42,210 --> 01:04:45,910 Vou começar por escrever int (void) principal 1238 01:04:45,910 --> 01:04:48,440 { 1239 01:04:48,440 --> 01:04:51,380 Eu vou colocar o 0 retorno em 1240 01:04:51,380 --> 01:04:53,320 e, em seguida, o.} 1241 01:04:53,320 --> 01:04:56,130 Por isso, normalmente quando eu começar a programar, é isso que eu começar. 1242 01:04:56,130 --> 01:04:59,370 Eu vou guardar isso para que vocês têm. 1243 01:05:06,290 --> 01:05:08,440 Então, uma das primeiras coisas que falamos foi 1244 01:05:08,440 --> 01:05:10,920 obter a entrada do usuário 1245 01:05:10,920 --> 01:05:13,740 e armazená-lo em uma corda. 1246 01:05:13,740 --> 01:05:16,420 Como chegamos a entrada de um usuário? 1247 01:05:16,420 --> 01:05:19,640 GetString. >> 1248 01:05:19,640 --> 01:05:21,870 GetString, tudo bem. 1249 01:05:23,150 --> 01:05:26,820 Então, se eu digitar GetString () 1250 01:05:26,820 --> 01:05:32,150 e um ponto e vírgula. 1251 01:05:32,150 --> 01:05:36,630 Vamos tentar executar este; será este prazo, antes de tudo? 1252 01:05:36,630 --> 01:05:38,430 E por que não esta correr? 1253 01:05:38,430 --> 01:05:40,090 >> Você tem que declarar a variável. 1254 01:05:40,090 --> 01:05:43,040 Eu tenho que declarar uma variável. Okay. 1255 01:05:43,040 --> 01:05:45,700 >> Então, como posso fazer isso? 1256 01:05:45,700 --> 01:05:48,400 Você se importa de escrever algo, compartilhando-o? 1257 01:05:48,400 --> 01:05:51,270 E então nós podemos puxá-lo para cima. 1258 01:05:51,270 --> 01:05:54,630 Vamos ver, Dan, certo, tudo bem. 1259 01:05:54,630 --> 01:05:59,100 Ou Daniel. Copie que em, entrada string = GetString (). 1260 01:05:59,100 --> 01:06:01,340 Impressionante. 1261 01:06:01,340 --> 01:06:02,890 Será que isto vai funcionar? 1262 01:06:02,890 --> 01:06:05,210 Vamos tentar. 1263 01:06:05,210 --> 01:06:08,890 Hit corrida, código de upload fonte, o edifício, um erro ocorreu. 1264 01:06:08,890 --> 01:06:11,040 Okay. 1265 01:06:11,040 --> 01:06:14,950 Então o que está acontecendo aqui? 1266 01:06:14,950 --> 01:06:18,700 Uso de 'string' identificador não declarado. 1267 01:06:18,700 --> 01:06:22,840 >> Temos que incluem as bibliotecas? 1268 01:06:22,840 --> 01:06:25,130 Sim, então Dan dizendo que temos de incluir as bibliotecas. 1269 01:06:25,130 --> 01:06:28,270 É isso que você ia dizer, Stella? Impressionante. 1270 01:06:29,450 --> 01:06:31,430 Isso é incrível, então Stella, não é 1271 01:06:31,430 --> 01:06:34,800 copiar este código fora do espaço de Daniel? 1272 01:06:34,800 --> 01:06:37,580 Se você clicar em Daniel Roland Ki, copiá-lo, 1273 01:06:37,580 --> 01:06:41,360 e então você vai colocar a linha include, e depois salvá-lo fora? 1274 01:06:46,580 --> 01:06:49,360 Deixe-me saber quando você estiver pronto. 1275 01:06:57,160 --> 01:06:59,490 Portanto, esta sintaxe de inclusão é também uma espécie de funk; 1276 01:06:59,490 --> 01:07:02,210 não há como a hash tag, 1277 01:07:02,210 --> 01:07:05,760 E há a incluir, e depois há estes colchetes. 1278 01:07:12,490 --> 01:07:15,360 Você se lembra de como isso funciona, ou eu deveria colocá-lo neste código aqui? 1279 01:07:15,360 --> 01:07:17,850 >> Eu sou bom. 1280 01:07:17,850 --> 01:07:19,810 Okay. 1281 01:07:19,810 --> 01:07:23,260 Eu imprimi-lo >> - Eu não tinha certeza de qual biblioteca, no entanto. 1282 01:07:23,260 --> 01:07:25,570 Ah, tudo bem - sim, por isso é a biblioteca CS50. 1283 01:07:25,570 --> 01:07:27,660 >> Ah, eu coloquei biblioteca stdio. 1284 01:07:27,660 --> 01:07:30,950 >> Ah, entendi - sim, não, isso é - 1285 01:07:30,950 --> 01:07:34,380 assim verifica-se que cadeia é realmente algo que é especial para CS50. 1286 01:07:36,590 --> 01:07:41,240 Há, na verdade, não é um tipo de cadeia verdadeiro 1287 01:07:41,240 --> 01:07:45,000 porque aqui, string está na posição, tipo - 1288 01:07:45,000 --> 01:07:49,140 estamos declarando uma variável chamada de entrada do tipo string - 1289 01:07:49,140 --> 01:07:53,320 e estamos colocando dentro de entrada 1290 01:07:53,320 --> 01:07:58,440 o valor que será devolvido a nós: a saída desta função GetString. 1291 01:07:58,440 --> 01:08:02,910 Você pode dizer isso é uma chamada de função, porque ele tem os parênteses, como printf faz, 1292 01:08:02,910 --> 01:08:05,920 como strlen faz. 1293 01:08:05,920 --> 01:08:09,860 Mas cadeia não é realmente um tipo real 1294 01:08:09,860 --> 01:08:11,760 na linguagem C. 1295 01:08:11,760 --> 01:08:15,710 Nós fizemos tudo em um tipo, e nós vamos levar cerca de mais o que realmente é 1296 01:08:15,710 --> 01:08:19,000 em C, porque não há uma maneira de trabalhar com cordas; 1297 01:08:19,000 --> 01:08:22,479 nós acabamos de fazer algo para torná-la um pouco melhor. 1298 01:08:22,479 --> 01:08:25,240 >> Então, vamos lá. 1299 01:08:25,240 --> 01:08:28,439 Aqui está o código de Stella. 1300 01:08:28,439 --> 01:08:32,470 Tem o # include . 1301 01:08:32,470 --> 01:08:36,390 Outras pessoas vão chamar isso como um hash incluem, por vezes, ou uma acentuada incluir. 1302 01:08:36,390 --> 01:08:39,580 Agora podemos iniciá-lo, executá-lo, 1303 01:08:39,580 --> 01:08:43,649 e ainda obter um erro. 1304 01:08:43,649 --> 01:08:46,290 Vamos ver o que está acontecendo. 1305 01:08:48,069 --> 01:08:50,569 "'Input' variável não utilizada." 1306 01:08:50,569 --> 01:08:53,350 Ok, então isso é legal, isso é legal. 1307 01:08:53,350 --> 01:08:55,859 Quero dizer, não é muito legal, 1308 01:08:55,859 --> 01:08:57,930 porque nós estamos recebendo um erro e ele não está funcionando, 1309 01:08:57,930 --> 01:09:00,410 mas o que isto quer dizer é que 1310 01:09:00,410 --> 01:09:03,130 nós não temos usado a nossa variável, o que faz sentido. 1311 01:09:03,130 --> 01:09:06,090 Nós não tentamos fazer nada com ele. 1312 01:09:07,819 --> 01:09:10,490 Trata-se de uma maneira que 1313 01:09:10,490 --> 01:09:14,170 Clang está tentando ajudar-nos a certeza de que não estamos apenas usando variáveis 1314 01:09:14,170 --> 01:09:18,819 e, em seguida, chamando-os inadvertidamente outra coisa mais tarde em nosso código, 1315 01:09:18,819 --> 01:09:21,649 ajudando-nos a evitar erros dessa forma. 1316 01:09:23,130 --> 01:09:28,810 >> Tudo bem, então nós temos de entrada de usuário, 1317 01:09:28,810 --> 01:09:31,910 que foi armazenada em uma variável. 1318 01:09:31,910 --> 01:09:34,569 O passo seguinte foi então 1319 01:09:34,569 --> 01:09:37,609 começar a olhar para todos os caracteres na cadeia 1320 01:09:37,609 --> 01:09:41,830 e identificar quais os que estão a ser maiúscula 1321 01:09:41,830 --> 01:09:44,600 e quais devem ser minúsculas. 1322 01:09:44,600 --> 01:09:49,439 E como Kelly e Charlotte trouxe, 1323 01:09:49,439 --> 01:09:52,340 Fazemos isso usando um loop for. 1324 01:09:52,340 --> 01:09:55,520 Então, se alguém se lembrar da sintaxe de um loop 1325 01:09:55,520 --> 01:09:58,670 e gostaria de tomar uma facada em apenas escrever 1326 01:09:58,670 --> 01:10:03,170 a primeira linha do loop, apenas o para pouco? 1327 01:10:05,740 --> 01:10:07,330 Kelly, você quer tentar? 1328 01:10:07,330 --> 01:10:10,300 >> Sim, então você tem que inicializar primeiro, 1329 01:10:10,300 --> 01:10:13,170 por isso eu coloquei i = 0, 1330 01:10:13,170 --> 01:10:15,390 e então eu fiz i 01:10:18,570 Está no seu espaço - eu posso puxar para cima? 1332 01:10:18,570 --> 01:10:21,330 >> Sim, eu estraguei tudo um pouco, mas sim. 1333 01:10:21,330 --> 01:10:24,180 >> Ok, vamos puxá-lo para cima. 1334 01:10:24,180 --> 01:10:26,490 Impressionante. 1335 01:10:26,490 --> 01:10:29,510 >> Mas então eu não sabia se você tinha que - 1336 01:10:29,510 --> 01:10:32,180 Sim, está bem. 1337 01:10:33,020 --> 01:10:36,030 Então, aqui está o que Kelly tem: vamos olhar rapidamente. 1338 01:10:36,030 --> 01:10:40,290 Então ela está incluída a biblioteca CS50 no topo. 1339 01:10:40,290 --> 01:10:44,790 Ela está incluída a biblioteca IO padrão no topo, 1340 01:10:45,550 --> 01:10:48,990 eo IO padrão tem funções como printf, 1341 01:10:48,990 --> 01:10:51,690 por isso, se você quiser usar printf, você precisa dessa linha. 1342 01:10:53,060 --> 01:10:56,140 E então ela incluiu a biblioteca string, 1343 01:10:56,140 --> 01:10:58,200 que vai precisar, 1344 01:10:58,200 --> 01:11:01,010 porque a biblioteca string tem strlen função, 1345 01:11:01,010 --> 01:11:04,320 que nós vamos chegar a um pouco. 1346 01:11:04,320 --> 01:11:07,560 Então, se olharmos para o que Kelly é feito aqui, 1347 01:11:07,560 --> 01:11:10,260 você pode andar nos o que você fez? 1348 01:11:10,260 --> 01:11:13,600 >> Sim, então - Quer dizer, eu tenho erros, então - 1349 01:11:13,600 --> 01:11:15,380 Sim, não, isto é - 1350 01:11:15,380 --> 01:11:18,580 >> Então, eu queria chamar a seqüência que eu tenho apenas "string". 1351 01:11:18,580 --> 01:11:22,230 Eu queria imprimir a string 1352 01:11:22,230 --> 01:11:25,640 e então eu - 1353 01:11:27,450 --> 01:11:30,930 Eu queria gostar definir a seqüência como como uma matriz de cada personagem 1354 01:11:30,930 --> 01:11:33,170 ser diferente [inaudível], certo? 1355 01:11:33,170 --> 01:11:38,080 E então eu queria começar na posição 0 1356 01:11:38,080 --> 01:11:40,630 e depois a cada dois espaços, 1357 01:11:40,630 --> 01:11:42,580 Eu estava indo para capitalizar, 1358 01:11:42,580 --> 01:11:45,680 então eu só descreveu como 23, porque eu estava olhando para a tabela ASCII. 1359 01:11:45,680 --> 01:11:48,730 Então é isso que eu estava pensando - Eu sei que não é certo. 1360 01:11:48,730 --> 01:11:50,920 >> Entendi, então este é um grande começo. 1361 01:11:50,920 --> 01:11:54,120 Eu acho que um monte de quadro está no lugar aqui. 1362 01:11:54,120 --> 01:11:57,500 Vamos passar por tipo de linha por linha e ver o que está acontecendo. 1363 01:11:57,500 --> 01:12:01,040 Assim, a maneira que eu gosto de fazer isso é só começar por compilar o código 1364 01:12:01,040 --> 01:12:04,300 e deixar o compilador me dizer como o que há de errado com o meu código, 1365 01:12:04,300 --> 01:12:07,450 porque o compilador é realmente boa em dizer o que está errado com o seu código. 1366 01:12:09,790 --> 01:12:12,780 Então, se nós jogá-lo, construindo, e não construir. 1367 01:12:12,780 --> 01:12:14,860 Ele diz que houve um erro, 1368 01:12:14,860 --> 01:12:17,320 assim, se rolar para baixo e olhar para o primeiro erro, 1369 01:12:17,320 --> 01:12:20,960 ele disse - 1370 01:12:20,960 --> 01:12:22,040 que rolar de volta até o topo, 1371 01:12:22,040 --> 01:12:26,070 podemos ver, existem 5 erros gerados aqui na parte inferior. 1372 01:12:26,070 --> 01:12:30,180 Opa, que está realmente cortada. 1373 01:12:31,810 --> 01:12:35,790 Eu acho que só não vai ficar melhor. 1374 01:12:36,970 --> 01:12:38,500 >> Aqui vamos nós. 1375 01:12:39,790 --> 01:12:42,530 Portanto, há 5 erros totais gerados. 1376 01:12:42,530 --> 01:12:45,140 Aqui eu só posso ver os 2 primeiros, 1377 01:12:45,140 --> 01:12:49,100 para que eu possa passar esta se um pouco e, em seguida, tipo de rolagem para cima. 1378 01:12:49,100 --> 01:12:53,220 Este é o comando que foi executado para compilar o código, 1379 01:12:53,220 --> 01:12:59,030 e, em seguida, o primeiro erro foi em file.c aqui: 1380 01:12:59,030 --> 01:13:03,300 "Esperado identificar ou '('", e foi nesta linha 1381 01:13:03,300 --> 01:13:06,680 onde disse string = GetString (). 1382 01:13:07,660 --> 01:13:12,920 Você pode ver aqui que era na linha 8 da file.c, 1383 01:13:12,920 --> 01:13:17,230 e então eu acredito que este é de 12 caracteres - que é o erro. 1384 01:13:17,230 --> 01:13:20,390 Então, o que está acontecendo de errado na linha 8 - Kelly? 1385 01:13:20,390 --> 01:13:22,810 >> Você só precisa de chamá-lo, como, uma carta ou algo assim, 1386 01:13:22,810 --> 01:13:24,400 como string s ou algo assim? 1387 01:13:24,400 --> 01:13:28,250 Sim, então verifica-se que estes nomes de tipos especiais, 1388 01:13:28,250 --> 01:13:31,770 para string, int, char, short, 1389 01:13:31,770 --> 01:13:35,740 todos eles são palavras-chave especiais, 1390 01:13:35,740 --> 01:13:38,940 e você não pode realmente usá-los como nomes de suas variáveis, 1391 01:13:38,940 --> 01:13:41,430 porque o compilador olha para aquilo e diz, 1392 01:13:41,430 --> 01:13:43,680 "Oh, eu sei que é um tipo", 1393 01:13:43,680 --> 01:13:46,530 para que você não pode realmente ter uma variável string chamada string, 1394 01:13:46,530 --> 01:13:50,800 como eu estou tentando fazer aqui, e isso não vai funcionar. 1395 01:13:52,610 --> 01:13:58,250 Mas em vez disso, podemos chamá-lo de algo como s ou st ou str. 1396 01:13:58,250 --> 01:14:01,540 Também não poderia chamá-lo de int. 1397 01:14:01,540 --> 01:14:03,740 Nós não podemos ter uma string chamada int. 1398 01:14:03,740 --> 01:14:06,740 Nós não podemos ter uma string chamada char; nenhum desses vai funcionar. 1399 01:14:06,740 --> 01:14:09,420 >> Então vamos chamá-lo s para o momento. 1400 01:14:10,630 --> 01:14:13,170 Impressionante. 1401 01:14:13,170 --> 01:14:17,500 Então, o que está acontecendo próximo nesta linha? 1402 01:14:21,390 --> 01:14:24,350 String - esta linha parece muito bom? 1403 01:14:24,350 --> 01:14:27,830 Vamos tentar mais uma vez, vamos executá-lo. 1404 01:14:27,830 --> 01:14:30,360 Ok, então nós ainda obter erros. 1405 01:14:30,360 --> 01:14:32,080 Desta vez, estamos reduzidos a quatro erros. 1406 01:14:32,080 --> 01:14:34,350 Então temos um deles. 1407 01:14:34,350 --> 01:14:36,130 Vamos subir. 1408 01:14:36,130 --> 01:14:38,890 "'String' nome do tipo inesperado: expressão esperado", sim? 1409 01:14:38,890 --> 01:14:41,780 >> Sim, isso é porque eu tentei citar a cadeia. 1410 01:14:41,780 --> 01:14:44,270 Sim, então parece que agora também tem que ir correção 1411 01:14:44,270 --> 01:14:46,560 todas estas referências a string. 1412 01:14:46,560 --> 01:14:50,070 Você pode ver que há uma referência a corda aqui, aqui, aqui, 1413 01:14:50,070 --> 01:14:53,440 para que possamos passar tudo isso para s. 1414 01:14:56,040 --> 01:15:00,930 Grande. Ok, executá-lo novamente. 1415 01:15:00,930 --> 01:15:03,260 Edifício - outro erro ocorreu. 1416 01:15:03,260 --> 01:15:06,900 >> Ok, agora estamos reduzidos a um erro, 1417 01:15:06,900 --> 01:15:11,090 assim int i = s e depois os colchetes. 1418 01:15:11,090 --> 01:15:14,880 Então você pode nos contar um pouco sobre o que você estava fazendo aqui, Kelly? 1419 01:15:14,880 --> 01:15:17,120 Sim >>. 1420 01:15:17,120 --> 01:15:19,410 Foi na linha 10. 1421 01:15:19,410 --> 01:15:22,760 >> Eu não sei se precisávamos de tudo, 1422 01:15:22,760 --> 01:15:25,560 mas eu acho que eu estava tentando - 1423 01:15:25,560 --> 01:15:27,580 Eu vou guardar isso para que você possa acompanhar. 1424 01:15:27,580 --> 01:15:30,470 >> Eu acho que foi 1425 01:15:30,470 --> 01:15:33,150 tentando dizer a ele para começar na posição 0 1426 01:15:33,150 --> 01:15:35,030 no começo do meu loop, 1427 01:15:35,030 --> 01:15:38,370 então eu acho que talvez dizendo era desnecessário. 1428 01:15:39,690 --> 01:15:41,350 Então, só para recapitular, 1429 01:15:41,350 --> 01:15:44,850 você estava dizendo que este - que estava a tentar iniciar este na posição 0 1430 01:15:44,850 --> 01:15:47,030 e esta - sim, 1431 01:15:47,030 --> 01:15:50,460 então eu acho que mais cedo, também, quando você estava andando pelo código, 1432 01:15:50,460 --> 01:15:54,070 você estava falando sobre como você queria tratar a string como um array 1433 01:15:54,070 --> 01:15:57,440 para que possamos acessar cada personagem individualmente. 1434 01:15:57,440 --> 01:16:00,660 Acho matrizes Dan mencionou, também, tentando converter strings em matrizes. 1435 01:16:01,400 --> 01:16:03,300 >> Acontece que tipo de sob o capô, 1436 01:16:03,300 --> 01:16:06,060 uma string é armazenado como uma matriz já, 1437 01:16:06,060 --> 01:16:08,060 e você pode acessá-lo como uma matriz; 1438 01:16:08,060 --> 01:16:12,390 não há nenhuma conversão que você tem que fazer. 1439 01:16:12,390 --> 01:16:15,770 A isnt string - assim - 1440 01:16:15,770 --> 01:16:18,200 uma corda não é realmente uma matriz, 1441 01:16:18,200 --> 01:16:21,940 mas você pode acessá-lo como tal, porque todos os personagens são armazenados 1442 01:16:21,940 --> 01:16:25,160 uma ao lado uns dos outros na memória, 1443 01:16:25,160 --> 01:16:28,310 por isso, se você deseja obter o primeiro caractere da string, 1444 01:16:28,310 --> 01:16:31,910 É o mesmo que pegar o primeiro número inteiro em uma matriz de inteiros. 1445 01:16:31,910 --> 01:16:35,010 Então, muitas vezes - nós 1446 01:16:35,010 --> 01:16:36,360 referem-se a dois como 1447 01:16:36,360 --> 01:16:38,590 oh, como sendo uma string, como sendo uma matriz, 1448 01:16:38,590 --> 01:16:40,830 embora ele realmente - eles são coisas muito diferentes, 1449 01:16:40,830 --> 01:16:43,410 mas você pode tratá-los muito muito mesmo. 1450 01:16:44,700 --> 01:16:47,400 Assim, verifica-se que esta linha de fato - 1451 01:16:47,400 --> 01:16:51,270 não precisa fazer qualquer conversão, 1452 01:16:51,270 --> 01:16:53,500 e, de facto, 1453 01:16:53,500 --> 01:16:56,790 isso na verdade não é uma expressão válida, 1454 01:16:56,790 --> 01:16:59,040 que é o que nosso compilador está nos dizendo. 1455 01:16:59,040 --> 01:17:01,290 Ele está dizendo: "Ei, é esperada uma expressão, 1456 01:17:01,290 --> 01:17:04,610 e que eu tenho aqui é algo que não é uma expressão. " 1457 01:17:04,610 --> 01:17:07,310 Para declarar uma matriz, 1458 01:17:07,310 --> 01:17:11,780 tudo que você precisa fazer é algo como este com um ponto e vírgula, 1459 01:17:11,780 --> 01:17:15,080 e depois dizer a matriz quanto tempo você quer que ele seja, 1460 01:17:15,080 --> 01:17:18,370 tal como 5, por isso esta linha 10 1461 01:17:18,370 --> 01:17:23,880 irá declarar uma matriz chamada i com 5 inteiros nele. 1462 01:17:23,880 --> 01:17:26,540 >> Trata-se de um lado, o que não é necessário para o código, 1463 01:17:26,540 --> 01:17:30,970 mas este é - este é o tipo do que a declaração parece. 1464 01:17:30,970 --> 01:17:35,310 >> Como você não iria usar 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 >> Caractere i, e depois dentro do parênteses, strlen (s). 1467 01:17:43,900 --> 01:17:47,710 Sim, para que pudéssemos - 1468 01:17:47,710 --> 01:17:49,460 nós poderíamos fazer isso, 1469 01:17:49,460 --> 01:17:52,160 e isso seria declarar - o que isso faz? 1470 01:17:52,160 --> 01:17:55,900 >> Eu acho que seria declarar uma matriz 1471 01:17:55,900 --> 01:18:01,780 de, como - de - 1472 01:18:01,780 --> 01:18:04,540 oh, você não precisa do i - oh, 1473 01:18:04,540 --> 01:18:06,420 sim, você definitivamente não precisa do i. 1474 01:18:06,420 --> 01:18:10,250 Você declara uma matriz de caracteres 1475 01:18:10,250 --> 01:18:13,150 s de comprimento. 1476 01:18:14,680 --> 01:18:16,770 E então o que Sam está dizendo é que 1477 01:18:16,770 --> 01:18:20,660 esta linha 10 - deixe-me colocar um pouco de espaço entre ele eo resto para que possamos isolar-lo - 1478 01:18:20,660 --> 01:18:23,440 esta linha 10 seria declarar uma matriz 1479 01:18:23,440 --> 01:18:28,520 de caracteres, strlen pena (s) deles, 1480 01:18:28,520 --> 01:18:32,270 mas nós realmente precisamos do i, 1481 01:18:32,270 --> 01:18:35,710 ea razão precisamos do i é porque precisamos dar a matriz um nome; 1482 01:18:35,710 --> 01:18:38,900 caso contrário, não teria uma maneira de se referir à matriz no final do código. 1483 01:18:38,900 --> 01:18:41,180 >> Então, isso aqui é o nome da matriz 1484 01:18:41,180 --> 01:18:43,420 e no interior é o comprimento. 1485 01:18:43,420 --> 01:18:45,010 Isso nos dará uma matriz, 1486 01:18:45,010 --> 01:18:47,430 mas isto é - mais uma vez, esta é uma declaração. 1487 01:18:47,430 --> 01:18:50,380 Não é uma tarefa, não é uma inicialização. 1488 01:18:50,380 --> 01:18:52,330 Se declarar esta matriz como este, 1489 01:18:52,330 --> 01:18:54,490 na verdade existe nada no conteúdo da matriz. 1490 01:18:54,490 --> 01:18:57,490 É apenas lixo - o que está lá dentro. 1491 01:18:57,490 --> 01:18:59,780 E, como dissemos, 1492 01:18:59,780 --> 01:19:01,340 nós realmente não precisa mesmo de fazer esta conversão, 1493 01:19:01,340 --> 01:19:04,810 porque já podemos tratar string s como uma matriz. 1494 01:19:06,750 --> 01:19:09,170 Eu sei que nós estamos correndo um pouco longo no tempo, 1495 01:19:09,170 --> 01:19:12,330 mas eu quero apenas realmente rapidamente chegar a este loop 1496 01:19:12,330 --> 01:19:14,850 e mostrar-lhe como acessar os caracteres individuais na matriz, 1497 01:19:14,850 --> 01:19:17,170 porque isso é fundamental para a nossa missão. 1498 01:19:17,170 --> 01:19:20,790 E então vamos deixá-lo de lá ir. 1499 01:19:20,790 --> 01:19:24,610 >> Então, aqui, nós temos um loop 1500 01:19:24,610 --> 01:19:28,310 que parece quase bom. 1501 01:19:28,310 --> 01:19:30,960 O que não é bem quase lá? 1502 01:19:30,960 --> 01:19:33,240 What's - o que não está certo sobre isso por laço? 1503 01:19:33,240 --> 01:19:36,010 Não >> chaves? 1504 01:19:36,010 --> 01:19:38,420 Não chaves, por exemplo. 1505 01:19:38,420 --> 01:19:42,580 Quero ter certeza de que temos o corpo do laço com chaves. 1506 01:19:42,580 --> 01:19:45,240 Oops, não cinta praça! 1507 01:19:45,240 --> 01:19:48,660 E qual é a próxima coisa que nós precisamos fazer com este ciclo? 1508 01:19:48,660 --> 01:19:52,640 Se eu tentar executá-lo, 1509 01:19:52,640 --> 01:19:56,740 o que é esse erro que eu recebo? 1510 01:19:56,740 --> 01:20:00,990 Eu recebo todos esses erros - Eu tenho que inicializar i. 1511 01:20:00,990 --> 01:20:03,610 Grande. 1512 01:20:03,610 --> 01:20:05,770 Então, isso vai ser um loop - isso não é muito lá, 1513 01:20:05,770 --> 01:20:08,680 mas está ficando muito perto. 1514 01:20:08,680 --> 01:20:11,260 Este código que pode correr, 1515 01:20:11,260 --> 01:20:14,620 construir, um erro ainda ocorre. 1516 01:20:17,960 --> 01:20:19,800 Por que ele ainda está reclamando, 1517 01:20:19,800 --> 01:20:22,030 dizendo que a expressão não é utilizada, 1518 01:20:22,030 --> 01:20:24,600 e isso é porque esta linha não faz nada. 1519 01:20:24,600 --> 01:20:27,620 Nós não armazená-lo em qualquer lugar, nós não salvar o resultado. 1520 01:20:27,620 --> 01:20:30,210 Onde devemos estar salvando esse resultado? 1521 01:20:30,210 --> 01:20:32,920 >> S ou i? 1522 01:20:32,920 --> 01:20:35,990 Exatamente, e sintaxe este funky, 1523 01:20:35,990 --> 01:20:38,550 este está com os colchetes 1524 01:20:38,550 --> 01:20:41,500 significa acessar o caractere i de s. 1525 01:20:41,500 --> 01:20:45,650 Isso vai ser algo que é realmente importante para a atribuição. 1526 01:20:45,650 --> 01:20:48,070 Infelizmente, vamos ter que parar por aqui, 1527 01:20:48,070 --> 01:20:50,550 para que a seção Sebastian pode entrar, 1528 01:20:50,550 --> 01:20:53,980 mas estou feliz de ficar fora e depois vai tirar alguma dúvida. 1529 01:20:53,980 --> 01:20:56,680 Por isso, agradeço a vocês por terem vindo. 1530 01:20:56,680 --> 01:20:59,730 Isto deve agora fazer o upload, construir, executar. 1531 01:21:01,570 --> 01:21:04,320 Podemos introduzir uma cadeia como "Olá" 1532 01:21:06,570 --> 01:21:08,730 e imprime "QOX". 1533 01:21:08,730 --> 01:21:11,030 [Risos] 1534 01:21:11,030 --> 01:21:14,640 >> Assim não chegamos lá, mas em movimento, ficando para os loops! 1535 01:21:14,640 --> 01:21:18,640 Obrigado por ter vindo, e eu vou estar fora.