1 00:00:00,000 --> 00:00:02,742 >> [Música tocando] 2 00:00:02,742 --> 00:00:05,030 3 00:00:05,030 --> 00:00:09,090 >> ANDI Peng: Esta é CS50, e bem-vindo a semana dois de seção. 4 00:00:09,090 --> 00:00:11,740 Isto é, na verdade, enquanto semana dois de nossos class-- na verdade, 5 00:00:11,740 --> 00:00:14,550 a primeira semana nós tivemos seção. 6 00:00:14,550 --> 00:00:18,897 Show de mãos, como muitos de vocês todos veio a seção de super na semana passada? 7 00:00:18,897 --> 00:00:19,480 OK, isso é OK. 8 00:00:19,480 --> 00:00:20,020 Está ok. 9 00:00:20,020 --> 00:00:23,110 Quantos de vocês assistiram Super seção na semana passada? 10 00:00:23,110 --> 00:00:23,610 ESTÁ BEM. 11 00:00:23,610 --> 00:00:25,702 E vocês fizeram bem no problema definir um? 12 00:00:25,702 --> 00:00:28,660 Então, eu estou indo tomá-lo que nós temos um bando de garotos realmente inteligentes 13 00:00:28,660 --> 00:00:32,310 nesta classe e as coisas vão ficar bem. 14 00:00:32,310 --> 00:00:33,180 ESTÁ BEM. 15 00:00:33,180 --> 00:00:33,980 Então first-- 16 00:00:33,980 --> 00:00:37,900 17 00:00:37,900 --> 00:00:41,090 >> Em primeiro lugar, nós apenas estamos indo para brevemente atravesse a agenda para hoje. 18 00:00:41,090 --> 00:00:42,700 Vamos falar sobre a logística do curso. 19 00:00:42,700 --> 00:00:45,480 Muitos de vocês provavelmente tiver dúvidas sobre 20 00:00:45,480 --> 00:00:46,920 como as coisas funcionam neste curso. 21 00:00:46,920 --> 00:00:47,897 Vamos respondê-las. 22 00:00:47,897 --> 00:00:49,730 Nós vamos brevemente passar por cima de loops em caso 23 00:00:49,730 --> 00:00:51,410 algum de vocês perdeu seção de super. 24 00:00:51,410 --> 00:00:53,240 Vamos falar sobre o mapeamento de ASCII. 25 00:00:53,240 --> 00:00:56,180 Falaremos sobre matrizes, funções, argumentos de linha de comando. 26 00:00:56,180 --> 00:01:00,210 E, finalmente, o que vocês provavelmente todos realmente quero estar aqui para aprender sobre, 27 00:01:00,210 --> 00:01:01,270 é o seu pset2. 28 00:01:01,270 --> 00:01:04,209 Nós vamos ter alguns truques interessantes e dicas para como fazer isso. 29 00:01:04,209 --> 00:01:07,910 30 00:01:07,910 --> 00:01:08,690 >> ESTÁ BEM. 31 00:01:08,690 --> 00:01:11,450 Além disso, em segundo lugar, temos lotes de doces aqui. 32 00:01:11,450 --> 00:01:13,583 Quem gosta de doces, apenas chegar aqui. 33 00:01:13,583 --> 00:01:14,430 Pegue um pouco. 34 00:01:14,430 --> 00:01:15,100 Eu tenho um monte. 35 00:01:15,100 --> 00:01:16,390 Nós temos uma tonelada no escritório. 36 00:01:16,390 --> 00:01:18,230 Eu realmente não quero para comer doces durante todo o dia. 37 00:01:18,230 --> 00:01:20,300 Vocês devem comer todos os doces, porque eu o trouxe aqui para vocês. 38 00:01:20,300 --> 00:01:20,990 Basta comer doces. 39 00:01:20,990 --> 00:01:24,080 Haverá doces cada seção. 40 00:01:24,080 --> 00:01:25,330 >> Então, primeiro, quem sou eu? 41 00:01:25,330 --> 00:01:27,080 Meu nome é Andi Peng. 42 00:01:27,080 --> 00:01:30,270 Eu sou o chefe de TA CS50 aqui em Yale. 43 00:01:30,270 --> 00:01:32,540 E para além que, também eu me ser-- 44 00:01:32,540 --> 00:01:35,600 se alguém como-- sua corrida amigo, o seu ombro para chorar. 45 00:01:35,600 --> 00:01:39,140 Se a noite antes do seu devido pset, você não tem idéia do que está acontecendo, 46 00:01:39,140 --> 00:01:40,080 hit me up. 47 00:01:40,080 --> 00:01:42,770 Nós vamos lamentar juntos, et cetera. 48 00:01:42,770 --> 00:01:46,100 Só sei que eu estou aqui como um recurso para você como a linha de frente 49 00:01:46,100 --> 00:01:51,830 para ajudar você a descobrir como caras para resolver problemas em CS50 e além. 50 00:01:51,830 --> 00:01:54,590 >> Meu email é andi.peng@yale.edu. 51 00:01:54,590 --> 00:01:58,390 Eu também vou mandar um indivíduo enviar e-mail com o meu número de telefone nele 52 00:01:58,390 --> 00:02:01,860 de modo que nem todo mundo no internet podem ver o meu número de telefone. 53 00:02:01,860 --> 00:02:03,640 Sinta-se livre para me ligar a qualquer momento. 54 00:02:03,640 --> 00:02:07,510 Sério, meu telefone é geralmente ligadas a minha mão. 55 00:02:07,510 --> 00:02:10,240 Eu não posso responder dentro de alguns minutos. 56 00:02:10,240 --> 00:02:11,984 Eu posso não responder dentro de algumas horas. 57 00:02:11,984 --> 00:02:14,400 Mas posso garantir-lhe, se você me e-mail, se você me chamar, 58 00:02:14,400 --> 00:02:17,404 texto mim, vou responder no prazo de 24 horas. 59 00:02:17,404 --> 00:02:19,820 Muitas vezes, eu vou responder antes que, porque eu entendo 60 00:02:19,820 --> 00:02:23,900 que toda a gente tem alguns problemas, e você quer que as suas respostas 61 00:02:23,900 --> 00:02:26,110 a ser respondida muito rapidamente. 62 00:02:26,110 --> 00:02:28,945 >> No entanto, se você chamar me 30 minutos antes 63 00:02:28,945 --> 00:02:31,570 que peça que é devido quinta-feira noite-- ser como, Andi, me ajude, 64 00:02:31,570 --> 00:02:35,380 Eu não posso dar started-- você que ombro para chorar. 65 00:02:35,380 --> 00:02:41,520 Mas pode ser hora de pensar em como não fazer isso da próxima vez. 66 00:02:41,520 --> 00:02:44,040 ESTÁ BEM. 67 00:02:44,040 --> 00:02:44,944 Oops. 68 00:02:44,944 --> 00:02:45,850 Como faço para voltar? 69 00:02:45,850 --> 00:02:48,140 Aí vamos nós. 70 00:02:48,140 --> 00:02:52,310 >> Portanto, neste curso, nós temos um tonelada de apoio para todos. 71 00:02:52,310 --> 00:02:54,640 Além apenas seções aqui, que você 72 00:02:54,640 --> 00:02:57,000 cada semana começa a gastar 90 minutos maravilhosos comigo, 73 00:02:57,000 --> 00:02:58,330 temos também o horário de expediente. 74 00:02:58,330 --> 00:03:01,021 Quantos de vocês já tem foi para o horário de expediente para obter ajuda? 75 00:03:01,021 --> 00:03:01,520 Ótimo. 76 00:03:01,520 --> 00:03:05,700 Isso é realmente bom de ver, porque nós temos uma equipe de mais de 45 agências de viagens e CAs 77 00:03:05,700 --> 00:03:11,780 treinados para este curso que está aqui para ajudar vocês com seus Série de Exercícios. 78 00:03:11,780 --> 00:03:14,580 >> Segundas-feiras eles estão detidos na TEAL sala de aula em 17 Hill House aqui 79 00:03:14,580 --> 00:03:15,350 em Yale. 80 00:03:15,350 --> 00:03:17,349 Terças e quintas, eles são mantidos em commons. 81 00:03:17,349 --> 00:03:20,010 8:00-11:00 praticamente todos os dias da semana. 82 00:03:20,010 --> 00:03:21,620 Venha, venha para fora. 83 00:03:21,620 --> 00:03:24,030 Qualquer problema, não problema-- apenas venha, 84 00:03:24,030 --> 00:03:26,650 e então nós vamos ajudá-lo com isso. 85 00:03:26,650 --> 00:03:31,640 >> Em segundo lugar, para além do expediente e seções, temos também calções. 86 00:03:31,640 --> 00:03:35,930 Alguém já viu um casal do shorts ou orientações nos vídeos 87 00:03:35,930 --> 00:03:36,750 no site? 88 00:03:36,750 --> 00:03:37,250 ESTÁ BEM. 89 00:03:37,250 --> 00:03:39,510 Então eles são muito, muito útil. 90 00:03:39,510 --> 00:03:42,470 Nossa linda produção Harvard equipe lá naquela escola 91 00:03:42,470 --> 00:03:47,910 no norte, eles filmado e produzido esses vídeos passo a passo incríveis. 92 00:03:47,910 --> 00:03:52,290 >> Eles vão levá-lo passo a passo através como proceder para resolver um problema. 93 00:03:52,290 --> 00:03:56,340 Muitas vezes, se você está confuso sobre um conceito simples, um conceito singular, 94 00:03:56,340 --> 00:03:59,780 Dê uma olhada, porque nós provavelmente temos um curto em algum lugar no nosso site. 95 00:03:59,780 --> 00:04:03,800 E normalmente é um grande recurso para procurar quando você está primeiro 96 00:04:03,800 --> 00:04:06,510 perdido sobre como lidar com um problema. 97 00:04:06,510 --> 00:04:09,750 >> Em terceiro lugar, temos também study50 e reference50. 98 00:04:09,750 --> 00:04:15,650 Assim, no estudo 50 site é apenas um link. 99 00:04:15,650 --> 00:04:21,500 É, eu acho, study.cs50.net ou algo assim. 100 00:04:21,500 --> 00:04:22,860 Basta pesquisar no Google. 101 00:04:22,860 --> 00:04:24,229 Temos lotes de lâminas preparadas. 102 00:04:24,229 --> 00:04:26,770 Temos lotes de calções e coisas walkthroughs-- todos compilados 103 00:04:26,770 --> 00:04:31,070 muito agradável e limpo para vocês todos para percorrer, consulte quaisquer conceitos 104 00:04:31,070 --> 00:04:32,860 que você está confuso sobre. 105 00:04:32,860 --> 00:04:35,920 Ele provavelmente estaria coberta lá em study50. 106 00:04:35,920 --> 00:04:37,640 >> Reference50-- semelhante. 107 00:04:37,640 --> 00:04:41,510 Temos um monte de várias notas prontamente disponíveis para sua disposição. 108 00:04:41,510 --> 00:04:44,450 E, por último, temos o que é Discutir chamado CS50, 109 00:04:44,450 --> 00:04:48,082 um fórum no qual, se a noite anterior você está fazendo os seus problemas, dizem, 110 00:04:48,082 --> 00:04:49,880 Você tem uma pergunta. 111 00:04:49,880 --> 00:04:52,340 Entrar e CS50 Discutir. 112 00:04:52,340 --> 00:04:53,190 Poste sua pergunta. 113 00:04:53,190 --> 00:04:55,820 E, em seguida, um dos hundreds-- talvez, thousands-- de pares 114 00:04:55,820 --> 00:04:57,960 tomar esta classe on-line irá fazer login. 115 00:04:57,960 --> 00:05:01,182 E talvez alguém pode obter a sua resposta antes de uma lata TA. 116 00:05:01,182 --> 00:05:03,390 É essencialmente apenas uma fórum on-line que todos nós podemos 117 00:05:03,390 --> 00:05:04,556 utilizar para discutir os nossos problemas. 118 00:05:04,556 --> 00:05:06,483 Isso é legal. 119 00:05:06,483 --> 00:05:10,660 120 00:05:10,660 --> 00:05:11,550 >> ESTÁ BEM. 121 00:05:11,550 --> 00:05:13,220 Então, conjuntos de problema. 122 00:05:13,220 --> 00:05:17,840 Estamos prestes direita no espessura do conjunto de problemas dois. 123 00:05:17,840 --> 00:05:20,570 Muitos de nós já tem lutado por um conjunto de problemas. 124 00:05:20,570 --> 00:05:24,460 Nós já sabemos que talvez esperando para a última noite para fazer o seu pset 125 00:05:24,460 --> 00:05:28,170 não é a coisa mais inteligente a fazer em CS50. 126 00:05:28,170 --> 00:05:32,380 >> Dicas e dicas essencialmente para sucesso são ler todo o spec. 127 00:05:32,380 --> 00:05:36,270 Como muitos de vocês já tem ler a especificação para pset 2? 128 00:05:36,270 --> 00:05:36,770 ESTÁ BEM. 129 00:05:36,770 --> 00:05:39,840 Isso é um valor sólido. 130 00:05:39,840 --> 00:05:43,210 Eu sei que vocês provavelmente já reconhecido por agora, as especificações são muito longo. 131 00:05:43,210 --> 00:05:45,700 Eles são muito, muito longo. 132 00:05:45,700 --> 00:05:49,630 >> É realmente difícil de ler cada linha de que cuidadosamente palavra por palavra. 133 00:05:49,630 --> 00:05:52,780 Você quer apenas roçar para onde ele diz-lhe para fazer algo. 134 00:05:52,780 --> 00:05:54,459 Posso garantir que você, não faça isso. 135 00:05:54,459 --> 00:05:56,750 Se você fizer isso, você provavelmente está vai perder em algum lugar 136 00:05:56,750 --> 00:05:58,458 onde ele diz-lhe como começar um problema 137 00:05:58,458 --> 00:06:01,140 ou ele lhe diz o que nome o seu problema ou ela lhe diz, 138 00:06:01,140 --> 00:06:03,720 esta é provavelmente a melhor maneira para começar a fazer o seu problema. 139 00:06:03,720 --> 00:06:05,050 E então você vai ser perdida. 140 00:06:05,050 --> 00:06:08,219 >> Quando você tenta ler o seu especificação no meio, 141 00:06:08,219 --> 00:06:10,510 um monte de importante information-- em que você não está 142 00:06:10,510 --> 00:06:12,260 vai ser capaz de realmente acesso. 143 00:06:12,260 --> 00:06:13,219 Portanto, leia toda a spec. 144 00:06:13,219 --> 00:06:15,468 Tente ler toda a especificação antes de vir para a seção, 145 00:06:15,468 --> 00:06:17,360 porque então, quando nós falar sobre o pset, 146 00:06:17,360 --> 00:06:21,070 todos nós podemos ter uma idéia do que está acontecendo. 147 00:06:21,070 --> 00:06:25,169 >> Em segundo lugar, este é um conceito que eu vou gostar de referência 148 00:06:25,169 --> 00:06:26,710 muito ao longo do semestre do curso. 149 00:06:26,710 --> 00:06:30,070 Mas, essencialmente, conhecer-nos a meio caminho, certo? 150 00:06:30,070 --> 00:06:33,970 Me, como o seu TA e Jason como curso gerente e SCAZ como seu professor de 151 00:06:33,970 --> 00:06:37,120 e David como seu professor e todos os outros ATs adoráveis ​​neste curso, 152 00:06:37,120 --> 00:06:39,830 assistentes neste course-- nós faremos nosso melhor 153 00:06:39,830 --> 00:06:42,965 para garantir que você está definido para ter sucesso neste curso. 154 00:06:42,965 --> 00:06:43,840 Vamos realizar seção. 155 00:06:43,840 --> 00:06:44,870 Vamos realizar o horário de expediente. 156 00:06:44,870 --> 00:06:47,087 Nós responderemos seu telefone chamadas, responder a seus e-mails, 157 00:06:47,087 --> 00:06:49,670 fazer tudo o que pudermos para tornar Certifique-se suas perguntas são respondidas. 158 00:06:49,670 --> 00:06:51,460 >> No entanto, nos ajudar também. 159 00:06:51,460 --> 00:06:52,450 Encontre-nos no meio do caminho. 160 00:06:52,450 --> 00:06:56,040 Se você vem para o horário de expediente não ter ido para a secção, não 161 00:06:56,040 --> 00:07:02,060 tendo visto as palestras, não tendo idéia do que está acontecendo, seja como, me ajude. 162 00:07:02,060 --> 00:07:04,350 Eu vou ser como, bem, eu sinto muito. 163 00:07:04,350 --> 00:07:06,410 Pode ser o momento para emprestar que ombro para chorar, 164 00:07:06,410 --> 00:07:08,959 porque eu não tenho certeza o que posso fazer para ajudá-lo 165 00:07:08,959 --> 00:07:12,000 se você não tentar, pelo menos, ajuda -se um pouco no início. 166 00:07:12,000 --> 00:07:12,910 Encontre-nos no meio do caminho. 167 00:07:12,910 --> 00:07:15,020 Você sabe, por favor, venha preparado para responder e obter 168 00:07:15,020 --> 00:07:16,353 pronto para se engajar no material. 169 00:07:16,353 --> 00:07:19,342 Isso torna as coisas muito mais mais fácil para todos os envolvidos. 170 00:07:19,342 --> 00:07:22,970 Sim, isso é muito bonito isso. 171 00:07:22,970 --> 00:07:23,720 >> Grading. 172 00:07:23,720 --> 00:07:29,250 Assim, no plano de estudos, é bastante em profundidade a respeito de como nós grau. 173 00:07:29,250 --> 00:07:32,440 Mas, essencialmente, a repartição neste é de 50% de sua nota 174 00:07:32,440 --> 00:07:34,530 serão os quais, Série de Exercícios é lindo, porque é isso 175 00:07:34,530 --> 00:07:37,400 onde você está gastando a vasta maioria de seu tempo no curso. 176 00:07:37,400 --> 00:07:39,854 Quizzes 40%, e sua projeto final será de 10%. 177 00:07:39,854 --> 00:07:42,520 Haverá dois questionários durante todo o curso do semestre. 178 00:07:42,520 --> 00:07:47,050 Eu acho que as horas e datas são também listado no plano de estudos. 179 00:07:47,050 --> 00:07:49,210 >> A maneira que nós vamos ser grading seus Série de Exercícios 180 00:07:49,210 --> 00:07:53,930 é que temos essencialmente quatro valores que atribui a cada grau. 181 00:07:53,930 --> 00:07:57,250 Temos um valor de escopo, exatidão, design e estilo. 182 00:07:57,250 --> 00:08:01,530 Então, como você pode ver, esse é o tipo da nossa fórmula de cálculo Série de Exercícios. 183 00:08:01,530 --> 00:08:03,640 Três damos mais peso para correção, 184 00:08:03,640 --> 00:08:06,140 porque, obviamente, o seu treinador deve ser a testar para os casos 185 00:08:06,140 --> 00:08:08,480 que nós queremos que ele para testar. 186 00:08:08,480 --> 00:08:11,000 >> Vocês todos têm check50 à sua disposição. 187 00:08:11,000 --> 00:08:13,730 É uma função muito útil que vocês podem tudo 188 00:08:13,730 --> 00:08:17,560 carregar o seu código para os nossos servidores, onde vamos verificar isso para você. 189 00:08:17,560 --> 00:08:20,800 E você já viu aqueles frowny rostos, caras do smiley. 190 00:08:20,800 --> 00:08:22,119 Eles são realmente, realmente útil. 191 00:08:22,119 --> 00:08:23,910 Por favor, não ser a estudante que gosta de tentativas 192 00:08:23,910 --> 00:08:26,230 para codificar em todas as respostas para elas. 193 00:08:26,230 --> 00:08:30,050 Eu definitivamente vi um pset onde alguém viu todos os valores de check50 194 00:08:30,050 --> 00:08:33,429 e eles simplesmente codificado em-- se este número, imprimir este número. 195 00:08:33,429 --> 00:08:35,080 Se esse número, imprimir esse número. 196 00:08:35,080 --> 00:08:36,090 Não faça isso. 197 00:08:36,090 --> 00:08:39,360 >> Mesmo que tecnicamente check50 está correto, 198 00:08:39,360 --> 00:08:41,809 a sua maneira de resolver o problema não é correto. 199 00:08:41,809 --> 00:08:45,770 Então, basta usar check50 com moderação. 200 00:08:45,770 --> 00:08:48,497 Mas também certificar-se de que você entender como ele está funcionando, 201 00:08:48,497 --> 00:08:50,580 o programa está a funcionar Além de check50, 202 00:08:50,580 --> 00:08:53,120 porque não podemos testar todas as possível caso de check50. 203 00:08:53,120 --> 00:08:55,440 Nós vamos estar testando alguns deles. 204 00:08:55,440 --> 00:09:00,390 >> O design é essencial, como bem desenhado é o seu código? 205 00:09:00,390 --> 00:09:04,150 Se você é copiar-colar múltipla linhas de código muitos, muitas vezes. 206 00:09:04,150 --> 00:09:06,960 Talvez você não tem bastante o melhor design em seu código. 207 00:09:06,960 --> 00:09:09,470 Talvez seja hora de acrescentar que loop. 208 00:09:09,470 --> 00:09:12,090 Essencialmente, aqui é apenas tudo sobre a tentar fazer o seu código, 209 00:09:12,090 --> 00:09:17,010 tentando escrever seu código de forma tão eficiente possível, para que o seu programa é executado 210 00:09:17,010 --> 00:09:19,630 o mais rápido possível. 211 00:09:19,630 --> 00:09:20,996 >> Por último, temos estilo. 212 00:09:20,996 --> 00:09:24,360 Então, o estilo é uma espécie de arbitrário, termo subjetivo. 213 00:09:24,360 --> 00:09:27,470 Eu sei que nós temos oficialmente um guia de estilo para 50 CS50, 214 00:09:27,470 --> 00:09:30,050 onde ele diz que, oh, você deve ter um espaço aqui. 215 00:09:30,050 --> 00:09:32,220 Você deve tipo de formato seu código dessa maneira. 216 00:09:32,220 --> 00:09:34,070 Você deve nomear as coisas desta forma. 217 00:09:34,070 --> 00:09:38,180 >> Eu realmente não me importo, per se, como você escolhe o estilo do seu código, 218 00:09:38,180 --> 00:09:39,840 apenas contanto que você fique consistente. 219 00:09:39,840 --> 00:09:43,732 Por exemplo, se você gosta de deixar um espaço após o seu quatro 220 00:09:43,732 --> 00:09:45,690 antes de seu ciclo de quatro, apenas fazer isso o tempo todo. 221 00:09:45,690 --> 00:09:46,523 Não tipo de fazê-lo. 222 00:09:46,523 --> 00:09:47,730 Não fazê-lo outras vezes. 223 00:09:47,730 --> 00:09:51,046 Se você gosta de manter encaracolado espaço chaves de uma certa maneira, 224 00:09:51,046 --> 00:09:52,170 apenas sempre fazê-lo dessa forma. 225 00:09:52,170 --> 00:09:54,628 Não tipo de fazê-lo em algum lugar aqui e em algum lugar não existe. 226 00:09:54,628 --> 00:09:57,010 Quando estamos classificação, é realmente difícil 227 00:09:57,010 --> 00:09:59,420 se eu não tenho idéia de como você está formatando seu código, 228 00:09:59,420 --> 00:10:02,064 as coisas são loucas e fora de lugar. 229 00:10:02,064 --> 00:10:04,980 Se você apenas mantê-lo consistente, é muito mais fácil para mim como o maior 230 00:10:04,980 --> 00:10:06,310 para ser capaz de ler o seu código. 231 00:10:06,310 --> 00:10:09,393 É muito mais fácil para você como um estudante para ser capaz de olhar através de seu código 232 00:10:09,393 --> 00:10:11,720 e ver o que há de errado com que cortar porque há questões. 233 00:10:11,720 --> 00:10:15,740 O estilo é uma das coisas mais fáceis vocês podem fazer para obter escores completa. 234 00:10:15,740 --> 00:10:18,770 Essencialmente, se você só se preocupam, se você pagar cinco minutos de atenção 235 00:10:18,770 --> 00:10:22,760 ao seu código a cada semana, você deve estar recebendo pontos de estilo completos. 236 00:10:22,760 --> 00:10:26,020 >> Por último, temos o que é chamado o multiplicador do escopo. 237 00:10:26,020 --> 00:10:28,890 Scope-- Eu sei que é um grande palavra, especialmente nesta classe. 238 00:10:28,890 --> 00:10:31,030 Mas alcance, tudo o que meios é que você está tentando 239 00:10:31,030 --> 00:10:33,670 as Série de Exercícios para o melhor de sua capacidade. 240 00:10:33,670 --> 00:10:37,180 Se você virar em três dos seus quatro problemas 241 00:10:37,180 --> 00:10:39,460 e nem sequer tentar o última, provavelmente você está 242 00:10:39,460 --> 00:10:41,630 vai perder alguns pontos em escopo. 243 00:10:41,630 --> 00:10:44,560 >> Mesmo se você acabou de começar o problema, fazer o seu melhor para atravessá-la. 244 00:10:44,560 --> 00:10:47,691 Mesmo se ele não funcionar, transformá-lo em, pois que mostra e demonstra 245 00:10:47,691 --> 00:10:50,190 para nós que você está tentando, que você tentou o conjunto de problemas 246 00:10:50,190 --> 00:10:51,430 com o melhor de sua capacidade. 247 00:10:51,430 --> 00:10:53,800 E então nós podemos dar-lhe todos os pontos de escopo. 248 00:10:53,800 --> 00:10:58,715 >> Scope também é muito importante para quando nós falar sobre o menor gota pontuação pset. 249 00:10:58,715 --> 00:11:02,010 Assim, ao longo do curso do semestre, vocês têm nove Série de Exercícios. 250 00:11:02,010 --> 00:11:05,340 E nós vamos realmente estar caindo a menor pontuação fora daqueles nove, 251 00:11:05,340 --> 00:11:07,670 mas somente se você tem pontos de escopo completo. 252 00:11:07,670 --> 00:11:11,120 >> Então, se você transformar em um pset incompleta, infelizmente, não podemos deixar que um, 253 00:11:11,120 --> 00:11:13,540 porque o seu âmbito de aplicação Os pontos não foram concluídas. 254 00:11:13,540 --> 00:11:16,570 Assim, mesmo se você tiver a terrível semana onde você está morrendo e você está doente 255 00:11:16,570 --> 00:11:20,040 ou o seu cão morre, o seu gato morre, e você está sobrecarregado com a lição de casa, 256 00:11:20,040 --> 00:11:21,074 apenas tentar o pset. 257 00:11:21,074 --> 00:11:22,490 Fazê-lo com o melhor de sua capacidade. 258 00:11:22,490 --> 00:11:23,840 Se isso não funcionar, não importa. 259 00:11:23,840 --> 00:11:24,506 Basta ligá-lo em. 260 00:11:24,506 --> 00:11:26,590 Pelo menos podemos dar você aponta para o esforço. 261 00:11:26,590 --> 00:11:28,510 >> Um esforço para nesta classe. 262 00:11:28,510 --> 00:11:30,170 Pelo menos gota pontuação mais baixa para o esforço. 263 00:11:30,170 --> 00:11:32,354 Então sim. 264 00:11:32,354 --> 00:11:33,270 Isso é muito bonito isso. 265 00:11:33,270 --> 00:11:36,521 Alguém tem perguntas para agora sobre como nós grau na classe? 266 00:11:36,521 --> 00:11:37,187 Ou qualquer um desses? 267 00:11:37,187 --> 00:11:41,220 Qualquer um destes tão far-- seções, o horário de expediente? 268 00:11:41,220 --> 00:11:41,720 Legal. 269 00:11:41,720 --> 00:11:46,720 270 00:11:46,720 --> 00:11:47,800 ESTÁ BEM. 271 00:11:47,800 --> 00:11:51,260 >> Portanto, este é um assunto que não um realmente gosta de falar sobre. 272 00:11:51,260 --> 00:11:53,084 Eu realmente não gosto de falar sobre isso. 273 00:11:53,084 --> 00:11:55,250 Vocês realmente não quero para me ouvir falar sobre isso. 274 00:11:55,250 --> 00:11:57,690 Mas, infelizmente, todos nós tem que falar sobre isso. 275 00:11:57,690 --> 00:12:00,110 David passou 20 minutos a palestra falando sobre isso. 276 00:12:00,110 --> 00:12:02,580 E esse é o assunto de honestidade acadêmica. 277 00:12:02,580 --> 00:12:08,110 >> Então, nós todos aqui têm provavelmente escrito um ensaio em algum momento da nossa carreira Yale. 278 00:12:08,110 --> 00:12:11,800 Nós provavelmente já conquistou uma palestra onde temos foi dito para não plagiar nosso ensaio, 279 00:12:11,800 --> 00:12:13,940 porque esse trabalho não é nossa. 280 00:12:13,940 --> 00:12:18,109 Em ciência da computação, temos o mesmo tipo de conceito. 281 00:12:18,109 --> 00:12:20,150 Todo o trabalho que você enviar, todo o código que você escreve 282 00:12:20,150 --> 00:12:21,900 deve ser o código que você escreveu. 283 00:12:21,900 --> 00:12:24,280 Não deve ser o código que você tem copiado de outro lugar. 284 00:12:24,280 --> 00:12:26,777 Não deve ser um código que você já pesquisei e se estatelou no 285 00:12:26,777 --> 00:12:28,360 e você realmente não sei se funciona. 286 00:12:28,360 --> 00:12:32,440 Você meio que tem um senso de o que está fazendo, mas não realmente. 287 00:12:32,440 --> 00:12:36,562 Quando em dúvida, essencialmente, é só ser razoável. 288 00:12:36,562 --> 00:12:38,520 Em nosso programa, temos toda uma lista de coisas 289 00:12:38,520 --> 00:12:40,560 vemos como razoável contra não razoável. 290 00:12:40,560 --> 00:12:43,820 >> Por exemplo, razoável é você e seu amigo 291 00:12:43,820 --> 00:12:47,360 discutir qual o melhor caminho a percorrer logicamente sobre como resolver um problema. 292 00:12:47,360 --> 00:12:48,910 Isso é bastante razoável. 293 00:12:48,910 --> 00:12:53,244 O que não seria razoável é se você caras se reuniram, digitou o mesmo código, 294 00:12:53,244 --> 00:12:54,410 e virou-se no mesmo código. 295 00:12:54,410 --> 00:12:56,302 Isso não é razoável. 296 00:12:56,302 --> 00:12:57,510 Mesma coisa, tipo de um ensaio. 297 00:12:57,510 --> 00:12:59,290 Se você quiser discutir com seu amigo, hey, 298 00:12:59,290 --> 00:13:00,220 é isso que eu quero escrever sobre. 299 00:13:00,220 --> 00:13:02,500 Estas são as etapas que eu quero tomar para escrever sobre isso, ótimo. 300 00:13:02,500 --> 00:13:03,208 Isso é maravilhoso. 301 00:13:03,208 --> 00:13:04,790 Por favor, colaborar uns com os outros. 302 00:13:04,790 --> 00:13:06,540 Se vocês começar escrevendo a mesma coisa, 303 00:13:06,540 --> 00:13:10,020 transformar, no mesmo ensaio, que é menos OK. 304 00:13:10,020 --> 00:13:13,200 Assim, quando em dúvida, apenas não fazê-lo. 305 00:13:13,200 --> 00:13:16,940 >> Aqui, em CS50, temos roteiros que correm para automatizar a testar 306 00:13:16,940 --> 00:13:21,740 não só a correção do seu código, mas também a singularidade de seu código. 307 00:13:21,740 --> 00:13:25,920 Então, por favor não nos coloquem na posição de ter de submeter o seu caso para EXCOMM. 308 00:13:25,920 --> 00:13:31,110 Por favor, só para toda a gente, vamos apenas tornar esta uma experiência maravilhosa. 309 00:13:31,110 --> 00:13:33,600 Todo mundo aprende melhor, todos nós somos mais felizes, 310 00:13:33,600 --> 00:13:37,926 e nós são todos criados para ter sucesso neste curso. 311 00:13:37,926 --> 00:13:39,800 Algo que é muito único sobre esta classe 312 00:13:39,800 --> 00:13:42,660 que eu acho que todo mundo deve realmente prestar atenção é que temos 313 00:13:42,660 --> 00:13:44,930 que é chamado de arrependimento cláusula no nosso programa. 314 00:13:44,930 --> 00:13:50,010 Então, basicamente, no prazo de 72 horas, se Você acredita que você tenha feito algo 315 00:13:50,010 --> 00:13:53,240 você não está realmente certo foi adequado, por favor, venha para nós. 316 00:13:53,240 --> 00:13:57,220 Prometemos-lhe que dentro de 72 horas vamos lidar com o caso nos 317 00:13:57,220 --> 00:13:59,820 sem se referir a uma maior autoridade na administração. 318 00:13:59,820 --> 00:14:03,100 >> Portanto, se você vir a mim e dizer: Andi, hey, eu realmente sinto muito, 319 00:14:03,100 --> 00:14:07,620 mas eu acho que há algumas linhas no meu código de ontem à noite que eu meio que pesquisei, 320 00:14:07,620 --> 00:14:10,120 saiu de Pilha Overflow, copiar e colar, 321 00:14:10,120 --> 00:14:13,680 e eu estou muito, muito triste sobre isso, deixe-me saber. 322 00:14:13,680 --> 00:14:16,900 Por favor, não apenas deixá-lo apodrecer e só espero que eu pegá-lo. 323 00:14:16,900 --> 00:14:17,784 Vamos pegá-lo. 324 00:14:17,784 --> 00:14:18,450 Apenas venha para mim. 325 00:14:18,450 --> 00:14:20,520 Deixe-me saber dentro de 72 horas. 326 00:14:20,520 --> 00:14:22,240 Vamos descobrir uma solução. 327 00:14:22,240 --> 00:14:26,679 E nós prometemos que não vamos referir-se a autoridades universitárias essencialmente. 328 00:14:26,679 --> 00:14:29,220 Portanto, é no seu melhor interesse para ser apenas honesto com todos 329 00:14:29,220 --> 00:14:31,720 envolvida no curso. 330 00:14:31,720 --> 00:14:34,630 >> ESTÁ BEM. 331 00:14:34,630 --> 00:14:35,240 ESTÁ BEM. 332 00:14:35,240 --> 00:14:37,800 Então, agora, rapidamente, antes Eu seguir em frente, qualquer um 333 00:14:37,800 --> 00:14:42,670 tiver dúvidas sobre logística sobre a forma como os cursos que estamos indo para executar, 334 00:14:42,670 --> 00:14:45,982 como seções estão indo a correr, nada disso? 335 00:14:45,982 --> 00:14:46,711 ESTÁ BEM. 336 00:14:46,711 --> 00:14:47,210 Sim. 337 00:14:47,210 --> 00:14:48,126 >> AUDIÊNCIA: [inaudível]? 338 00:14:48,126 --> 00:14:50,414 339 00:14:50,414 --> 00:14:51,080 ANDI Peng: Sim. 340 00:14:51,080 --> 00:14:54,850 Então quizzes-- quantos de vocês são na seção segunda / quarta-feira? 341 00:14:54,850 --> 00:14:56,700 Quantos de vocês estão em terça-feira / quinta-feira? 342 00:14:56,700 --> 00:14:58,550 OK, por isso é uma fração sólida aqui. 343 00:14:58,550 --> 00:15:00,900 Assim, a maneira que nós funcionamos que em Yale é que nós 344 00:15:00,900 --> 00:15:04,040 vão ter dois separados quizzes-- um para cada section-- que 345 00:15:04,040 --> 00:15:06,160 serão tomadas durante a aula. 346 00:15:06,160 --> 00:15:09,310 Eu acho que é de outubro de final de outubro, algo assim, como uma semana 347 00:15:09,310 --> 00:15:10,794 do quiz. 348 00:15:10,794 --> 00:15:11,960 É, por isso só vir para a aula. 349 00:15:11,960 --> 00:15:13,920 Nessa segunda-feira ou quarta-feira, você vai fazer o teste. 350 00:15:13,920 --> 00:15:16,336 Nessa terça-feira ou quinta-feira, você vai fazer um teste diferente. 351 00:15:16,336 --> 00:15:18,570 Mas o mesmo material será coberto. 352 00:15:18,570 --> 00:15:19,160 Sim. 353 00:15:19,160 --> 00:15:20,660 Boa pergunta. 354 00:15:20,660 --> 00:15:21,160 Sim. 355 00:15:21,160 --> 00:15:23,260 >> AUDIÊNCIA: Onde nós ir para verificar nossas notas? 356 00:15:23,260 --> 00:15:23,926 >> ANDI Peng: Sim. 357 00:15:23,926 --> 00:15:28,420 Então eu vou estar enviando um e-mail qualquer que seja a cada semana 358 00:15:28,420 --> 00:15:31,460 quando os questionários são graded-- ou, pesaroso, quando Série de Exercícios são classificados. 359 00:15:31,460 --> 00:15:34,120 Série de Exercícios são geralmente girado ao meio-dia ou na sexta-feira. 360 00:15:34,120 --> 00:15:37,540 Então, eu prometo que vou tentar levá-los de volta para você 361 00:15:37,540 --> 00:15:40,000 pelo meio-dia da sexta-feira seguinte. 362 00:15:40,000 --> 00:15:44,950 >> Sempre que eu grau um pset, eu enviarei uma notificação sobre o livro de notas 363 00:15:44,950 --> 00:15:47,070 que lhe diz a sua pontuação pode ser visto online. 364 00:15:47,070 --> 00:15:52,022 Tão certo, esta semana, depois que eu nivelamento de acabamento Série de Exercícios da semana passada, 365 00:15:52,022 --> 00:15:54,230 vocês vão receber um e-mail notificação dizendo a você, 366 00:15:54,230 --> 00:15:55,870 hey este é o lugar onde você ir para ver suas notas. 367 00:15:55,870 --> 00:15:57,680 E você pode ver todos repartição das suas notas. 368 00:15:57,680 --> 00:15:58,555 Você pode ver os comentários. 369 00:15:58,555 --> 00:16:00,360 Oh, coisa rápida também. 370 00:16:00,360 --> 00:16:03,060 A seção de comentários na grande livro é onde eu provavelmente vou 371 00:16:03,060 --> 00:16:05,300 passam a maior parte do meu tempo de classificação. 372 00:16:05,300 --> 00:16:07,094 Então, uma coisa que é realmente importante quando 373 00:16:07,094 --> 00:16:09,010 vocês estão vendo suas notas em seus Série de Exercícios 374 00:16:09,010 --> 00:16:11,400 é não só olhando no escore físico 375 00:16:11,400 --> 00:16:14,630 mas também tendo tempo para realmente ler meus comentários. 376 00:16:14,630 --> 00:16:17,820 >> Muitas vezes, que lhe dá um feedback de como você está resolvendo um problema. 377 00:16:17,820 --> 00:16:20,480 Se você precisa fazer algo um pouco melhor, 378 00:16:20,480 --> 00:16:24,080 crítica construtiva é normalmente melhor dado naqueles seção de comentários. 379 00:16:24,080 --> 00:16:26,950 Então, por favor, por favor, eu vou para passar o tempo escrevendo comentários. 380 00:16:26,950 --> 00:16:30,440 Por favor, eu realmente aprecio isso se vocês iria ler esses comentários. 381 00:16:30,440 --> 00:16:31,170 ESTÁ BEM. 382 00:16:31,170 --> 00:16:34,150 Legal. 383 00:16:34,150 --> 00:16:34,680 >> Tudo certo. 384 00:16:34,680 --> 00:16:40,680 Então, vamos começar a falar e apenas rever rapidamente 385 00:16:40,680 --> 00:16:45,040 parte do material a partir de semana de zero apenas por isso estamos 386 00:16:45,040 --> 00:16:48,760 na página da direita para começando problemas desta semana. 387 00:16:48,760 --> 00:16:52,600 Assim, o loop while é um um dos três tipos de malhas 388 00:16:52,600 --> 00:16:54,510 discutimos anteriormente nesta classe. 389 00:16:54,510 --> 00:16:57,060 >> Um loop while essencialmente está escrito na sintaxe 390 00:16:57,060 --> 00:17:00,666 em que, quando uma determinada condição, fazer isso várias vezes, certo? 391 00:17:00,666 --> 00:17:02,040 Pense nisso neste gráfico aqui. 392 00:17:02,040 --> 00:17:04,780 Você está indo para começar em uma determinado ponto em seu código. 393 00:17:04,780 --> 00:17:09,030 Você vai entrar na condição de loop se-- Eu não sabe-- x é inferior a um. 394 00:17:09,030 --> 00:17:11,677 >> Se isso for verdade, você está indo para executar o corpo do loop. 395 00:17:11,677 --> 00:17:14,010 E você vai continuar fazendo que mais uma vez, de novo, de novo, 396 00:17:14,010 --> 00:17:17,900 mais e over-- que é por isso que é um loop-- até que sua condição torna-se 397 00:17:17,900 --> 00:17:19,079 falsa. 398 00:17:19,079 --> 00:17:22,140 Assim, deste modo, um loop while é uma das maneiras mais simples 399 00:17:22,140 --> 00:17:25,619 para escrever qualquer tipo de condição que precisa repetir mais e mais e mais. 400 00:17:25,619 --> 00:17:28,109 Basta ter cuidado sempre que você está escrevendo qualquer tipo de laço 401 00:17:28,109 --> 00:17:32,140 que você tem uma condição de saída como bem como uma atualização para o que quer que 402 00:17:32,140 --> 00:17:36,714 é para que o loop não faz apenas correr mais e mais infinitamente. 403 00:17:36,714 --> 00:17:38,630 Em qualquer caso, você está indo para querer certificar-se 404 00:17:38,630 --> 00:17:42,670 que você está mudando algum aspecto da seu código ou no final do ciclo 405 00:17:42,670 --> 00:17:46,680 apenas para se certificar de que você tem uma maneira para progredir no sentido da condição 406 00:17:46,680 --> 00:17:48,400 que pretende reunir-se para final. 407 00:17:48,400 --> 00:17:50,239 Isso faz sentido para todo mundo? 408 00:17:50,239 --> 00:17:52,530 Nós apenas não quero estar apanhados nesta espiral onde 409 00:17:52,530 --> 00:17:55,710 que ir ao redor e ao redor e não há nenhuma maneira de quebrar o ciclo. 410 00:17:55,710 --> 00:17:58,844 E cada laço essencialmente tem uma maneira de fazer isso. 411 00:17:58,844 --> 00:17:59,344 ESTÁ BEM. 412 00:17:59,344 --> 00:18:03,030 413 00:18:03,030 --> 00:18:06,060 >> Em segundo lugar, muitos de vocês Série de Exercícios em seus Mario 414 00:18:06,060 --> 00:18:08,910 provavelmente teve de contratar este tipo de loop. 415 00:18:08,910 --> 00:18:11,802 Ele é chamado um loop Do While. 416 00:18:11,802 --> 00:18:14,510 Primeiro de tudo, alguém pode me dizer qual a diferença entre um fazer 417 00:18:14,510 --> 00:18:16,586 while e um loop while é? 418 00:18:16,586 --> 00:18:17,086 Sim. 419 00:18:17,086 --> 00:18:21,030 >> AUDIÊNCIA: O loop Do While é executado em primeiro [inaudível]. 420 00:18:21,030 --> 00:18:22,120 >> ANDI Peng: Sim, exatamente. 421 00:18:22,120 --> 00:18:27,130 Assim, um loop Do While sempre faz tudo o que está dentro do fazer, dentro dos colchetes 422 00:18:27,130 --> 00:18:30,520 lá e faz essa condição antes de verificar as-- sorry, 423 00:18:30,520 --> 00:18:32,940 faz esse código antes verificando a condição. 424 00:18:32,940 --> 00:18:37,200 E isso é especialmente relevante para nós aqui nesta classe, porque na maioria das vezes 425 00:18:37,200 --> 00:18:41,450 vamos querer pedir o usuário por algum tipo de entrada. 426 00:18:41,450 --> 00:18:43,520 E então, dependendo a entrada que eles nos dão, 427 00:18:43,520 --> 00:18:46,150 então podemos avaliar, oh, fazer precisamos levá-los novamente? 428 00:18:46,150 --> 00:18:49,930 >> Assim, no Mario, se o usuário lhe deu uma altura negativo, por exemplo, 429 00:18:49,930 --> 00:18:52,990 você está indo para a primeira linha e fazer tudo o que está dentro. 430 00:18:52,990 --> 00:18:54,820 Então você está indo para verificar enquanto. 431 00:18:54,820 --> 00:18:57,570 Você sabe, é negativo 1, que é um número positivo? 432 00:18:57,570 --> 00:19:00,680 Se não for, eu estou indo para ir volta e repita o tumulto e repita 433 00:19:00,680 --> 00:19:03,950 e repetir e repetir até que eles finalmente, dar-lhe um número que você gosta, 434 00:19:03,950 --> 00:19:07,002 que todos nós podemos empregar no nosso código. 435 00:19:07,002 --> 00:19:09,210 É muito importante para essencialmente qualquer entrada do usuário. 436 00:19:09,210 --> 00:19:11,760 Posso garantir-lhe qualquer tempo num pset onde 437 00:19:11,760 --> 00:19:15,070 pedimos-lhe para introduzir qualquer tipo de código, nós somos 438 00:19:15,070 --> 00:19:17,540 provavelmente vai dar-lhe um caso de teste em que nós somos 439 00:19:17,540 --> 00:19:21,200 vai dar-lhe alguma coisa ruim é isso vai tentar quebrar seu código. 440 00:19:21,200 --> 00:19:25,044 >> Se tentarmos pedir-lhe para introduzir um inteiro, podemos apenas dar-lhe uma corda 441 00:19:25,044 --> 00:19:26,460 e ver como você lidaria com isso. 442 00:19:26,460 --> 00:19:30,610 Se nós lhes pedimos que empregam uma idade, podemos dar-lhe um número negativo 443 00:19:30,610 --> 00:19:32,340 para ver como você lidaria com isso. 444 00:19:32,340 --> 00:19:37,260 Apenas certifique-se que vocês estão testando para casos em que você não obter o melhor 445 00:19:37,260 --> 00:19:38,590 entrada, vamos apenas dizer. 446 00:19:38,590 --> 00:19:40,510 E um loop Do While é muitas vezes a melhor 447 00:19:40,510 --> 00:19:45,260 maneira de projetar seu código para que atende a esse escopo. 448 00:19:45,260 --> 00:19:45,760 ESTÁ BEM. 449 00:19:45,760 --> 00:19:48,930 450 00:19:48,930 --> 00:19:49,470 >> ESTÁ BEM. 451 00:19:49,470 --> 00:19:53,270 Portanto, esta é provavelmente a mais laço complexo dos três 452 00:19:53,270 --> 00:19:54,990 que nós olhamos até agora. 453 00:19:54,990 --> 00:19:56,689 E parece muito assustador no começo. 454 00:19:56,689 --> 00:19:59,730 Mas eu garanto que você, uma vez que vocês pegar o jeito de como usar um loop for, 455 00:19:59,730 --> 00:20:03,320 é uma das coisas mais úteis, a maioria das ferramentas úteis em seu arsenal 456 00:20:03,320 --> 00:20:05,300 para avançar nesta classe. 457 00:20:05,300 --> 00:20:09,920 >> Assim, por exemplo, em arranhões, tivemos este bloco muito simples 458 00:20:09,920 --> 00:20:13,180 que disse apenas repita esta certo Frases determinado número de vezes. 459 00:20:13,180 --> 00:20:16,260 By the way, SAJ-- isso é SCAZ Andi Jason. 460 00:20:16,260 --> 00:20:18,740 Nós muitas vezes assinar a nossa e-mails SAJ. 461 00:20:18,740 --> 00:20:20,360 Se dissermos SAJ, não seja confuso. 462 00:20:20,360 --> 00:20:22,630 Isso é apenas nós. 463 00:20:22,630 --> 00:20:28,600 >> Assim, em risco, fomos capazes de ter um bloco que disse, repita Eu amo SAJ! 464 00:20:28,600 --> 00:20:29,430 10 vezes. 465 00:20:29,430 --> 00:20:30,130 Muito simples. 466 00:20:30,130 --> 00:20:32,302 A lógica por trás disso é uma muito, muito simples, certo? 467 00:20:32,302 --> 00:20:35,260 Eu quero ir primeiro através do primeiro tempo e ver que, pela segunda vez 468 00:20:35,260 --> 00:20:38,510 e ver que, pela terceira vez, etc. e assim por diante, até chegar a 10. 469 00:20:38,510 --> 00:20:41,960 >> E a maneira que representamos que em código é apenas através de um loop for simples. 470 00:20:41,960 --> 00:20:45,440 Assim, para, você está indo para declarar sua variável aqui, neste caso, 471 00:20:45,440 --> 00:20:46,349 com um int. 472 00:20:46,349 --> 00:20:47,390 Nós estamos indo para nomeá-la i. 473 00:20:47,390 --> 00:20:49,500 Nós vamos inicializá-lo a 0. 474 00:20:49,500 --> 00:20:52,490 E a edição de parada é vai ser i é menos do que 10. 475 00:20:52,490 --> 00:20:54,622 E a atualização vai ser i ++. 476 00:20:54,622 --> 00:20:57,750 >> E dentro do loop, ele vai a executar até que, eventualmente, 477 00:20:57,750 --> 00:21:01,490 atinge o final do condition-- onde caso, ele vai quebrar o loop. 478 00:21:01,490 --> 00:21:04,600 Deve haver coisas que você caras têm todo o tipo de visto antes 479 00:21:04,600 --> 00:21:07,270 e tinha que fazer para o seu problema definido. 480 00:21:07,270 --> 00:21:12,310 Alguém tem alguma dúvida sobre loops agora? 481 00:21:12,310 --> 00:21:12,930 ESTÁ BEM. 482 00:21:12,930 --> 00:21:13,430 Ótimo. 483 00:21:13,430 --> 00:21:17,520 484 00:21:17,520 --> 00:21:18,620 >> ESTÁ BEM. 485 00:21:18,620 --> 00:21:22,270 Portanto, para aqueles de vocês que têm leia a especificação pset para esta semana 486 00:21:22,270 --> 00:21:27,690 sabemos que estamos indo ter que empregar algo chamado ASCII e tabela ASCII. 487 00:21:27,690 --> 00:21:32,380 Então David em palestra passaram brevemente como os computadores essentially-- tudo 488 00:21:32,380 --> 00:21:35,410 é codificado em um computador em binário, em zeros e uns. 489 00:21:35,410 --> 00:21:39,740 E a maneira que os computadores são capazes para armazenar os valores diferentes, além 490 00:21:39,740 --> 00:21:44,360 a zeros e uns são através de mapeamento esses números para representar outros dígitos 491 00:21:44,360 --> 00:21:47,220 ou essencialmente outros personagens. 492 00:21:47,220 --> 00:21:49,810 >> Portanto, neste caso, um ASCII mesa-- tudo que faz 493 00:21:49,810 --> 00:21:53,600 É personagens mapa, ou caracteres, para números. 494 00:21:53,600 --> 00:21:57,385 Assim, o arquivo de código fonte em seu Computador-- que vê, 495 00:21:57,385 --> 00:22:00,010 hey, um monte de zeros e uns, zeros e uns, zeros e uns. 496 00:22:00,010 --> 00:22:02,350 Isso é o que armazenado na memória real do computador. 497 00:22:02,350 --> 00:22:04,750 >> Mas quando nós, humanos, quer comunicar com o computador, 498 00:22:04,750 --> 00:22:08,249 nós want-- dizer, por exemplo, se eu quero a maiúsculas A, 499 00:22:08,249 --> 00:22:10,540 Eu vou precisar de alguma forma de dizer ao computador, oh, 500 00:22:10,540 --> 00:22:16,300 quando eu digitar letras maiúsculas A, quero dizer esta representação em binário. 501 00:22:16,300 --> 00:22:22,260 >> E assim a nossa forma de fazer isso é jogou um coisa arbitrária chamado uma tabela ASCII, 502 00:22:22,260 --> 00:22:25,020 onde nós, como seres humanos, como programadores, há algum tempo, 503 00:22:25,020 --> 00:22:28,660 decidimos que arbitrariamente estavam indo para atribuir esses números 504 00:22:28,660 --> 00:22:30,960 Os valores para esses personagens. 505 00:22:30,960 --> 00:22:32,720 >> Então vocês pode google isso on-line. 506 00:22:32,720 --> 00:22:37,120 Eu acho que há um link para ele no seu pset-- apenas um mapa da tabela ASCII, ASCII 507 00:22:37,120 --> 00:22:37,720 mesa. 508 00:22:37,720 --> 00:22:40,722 Ele só traduz binário números em caracteres. 509 00:22:40,722 --> 00:22:42,930 E isso vai ser muito útil para o seu conjunto de problemas 510 00:22:42,930 --> 00:22:45,470 quando tu quiseres calcular qualquer coisa ou se você 511 00:22:45,470 --> 00:22:47,880 deseja exibir certa caracteres ou números inteiros 512 00:22:47,880 --> 00:22:50,327 ou manipular certos personagens. 513 00:22:50,327 --> 00:22:52,160 Vai ser muito importante que todos vocês 514 00:22:52,160 --> 00:22:55,140 sabem como navegar uma tabela ASCII. 515 00:22:55,140 --> 00:23:01,260 >> Assim, por exemplo, a letra maiúscula A é representado pelo número 65. 516 00:23:01,260 --> 00:23:04,207 E a uma minúscula é representado por 97. 517 00:23:04,207 --> 00:23:07,040 Por isso, é importante saber que o diferença entre os dois valores 518 00:23:07,040 --> 00:23:08,320 é 32. 519 00:23:08,320 --> 00:23:13,210 Muitas vezes, se você precisa converter de um para o outro, a diferença é de 32. 520 00:23:13,210 --> 00:23:15,710 E não se preocupe se você é do tipo de confuso sobre isso em primeiro lugar. 521 00:23:15,710 --> 00:23:20,230 Nós falaremos sobre como iríamos em empregar este código real. 522 00:23:20,230 --> 00:23:24,700 523 00:23:24,700 --> 00:23:26,380 >> ESTÁ BEM. 524 00:23:26,380 --> 00:23:30,770 Portanto, para aqueles de vocês com laptops fora, sinta-se livre para puxar para cima uma tabela ASCII, 525 00:23:30,770 --> 00:23:36,030 porque estes, provavelmente, exigem vocês para fazer referência 526 00:23:36,030 --> 00:23:38,100 o que os personagens estão. 527 00:23:38,100 --> 00:23:38,640 ESTÁ BEM. 528 00:23:38,640 --> 00:23:42,840 >> Então, sabendo que certos caracteres Roteiro para determinados números, 529 00:23:42,840 --> 00:23:47,240 se eu fosse para executar apenas o primeiro linha de que code-- o printf um, 530 00:23:47,240 --> 00:23:50,900 minúsculas, um sinal de menos maiúscula A. Alguém 531 00:23:50,900 --> 00:23:55,880 tem um palpite sobre o que seria imprimindo da tela agora? 532 00:23:55,880 --> 00:23:58,190 >> Então, primeiro de tudo, o que faz minúsculas a representar? 533 00:23:58,190 --> 00:24:00,990 Qual é o número que codificado na tabela ASCII. 534 00:24:00,990 --> 00:24:01,490 Desculpa? 535 00:24:01,490 --> 00:24:02,630 >> AUDIÊNCIA: 97? 536 00:24:02,630 --> 00:24:03,630 >> ANDI Peng: 97, ótimo. 537 00:24:03,630 --> 00:24:05,077 E o que é maiúsculo? 538 00:24:05,077 --> 00:24:06,330 >> AUDIÊNCIA: 65. 539 00:24:06,330 --> 00:24:08,255 >> ANDI Peng: Então, o que é 97 menos 65? 540 00:24:08,255 --> 00:24:09,227 >> AUDIÊNCIA: 32. 541 00:24:09,227 --> 00:24:09,810 ANDI Peng: OK. 542 00:24:09,810 --> 00:24:13,530 Então, o que vocês acham que vai acontecer quando eu entrada que linha de código 543 00:24:13,530 --> 00:24:14,670 em meu computador? 544 00:24:14,670 --> 00:24:17,981 545 00:24:17,981 --> 00:24:19,896 >> AUDIÊNCIA: [inaudível]. 546 00:24:19,896 --> 00:24:21,020 ANDI Peng: Desculpe, fale. 547 00:24:21,020 --> 00:24:22,520 Não se preocupe. 548 00:24:22,520 --> 00:24:25,750 Este é um muito seguro ambiente, menos a câmera. 549 00:24:25,750 --> 00:24:27,550 Estamos todos indo a-- não se preocupe. 550 00:24:27,550 --> 00:24:30,940 Apenas vamos todos fingir é só nos refrigeração nesta sala. 551 00:24:30,940 --> 00:24:31,480 Não se preocupe. 552 00:24:31,480 --> 00:24:33,410 Nenhuma pergunta é muito estúpido. 553 00:24:33,410 --> 00:24:35,300 Nenhuma resposta é uma resposta estúpida. 554 00:24:35,300 --> 00:24:38,260 Eu provavelmente vou cometer erros no curso do meu ensino. 555 00:24:38,260 --> 00:24:40,740 Sério, gente, apenas deixar escapar para fora. 556 00:24:40,740 --> 00:24:43,092 Seja confiante em si mesmo, sabe? 557 00:24:43,092 --> 00:24:43,800 Então, o que foi isso? 558 00:24:43,800 --> 00:24:47,990 Quem disse que a última resposta? 559 00:24:47,990 --> 00:24:48,540 ESTÁ BEM. 560 00:24:48,540 --> 00:24:50,380 Gritar que bons e claros. 561 00:24:50,380 --> 00:24:51,220 >> AUDIÊNCIA: 32? 562 00:24:51,220 --> 00:24:51,850 >> ANDI Peng: 32. 563 00:24:51,850 --> 00:24:54,141 OK, vamos executar este código e ver se é isso que acontece. 564 00:24:54,141 --> 00:25:00,260 565 00:25:00,260 --> 00:25:00,760 ESTÁ BEM. 566 00:25:00,760 --> 00:25:03,300 567 00:25:03,300 --> 00:25:06,360 Então, como vocês podem tipo de ver, a notação típica tenho 568 00:25:06,360 --> 00:25:12,250 configurar aqui para saber como iria empregar qualquer tipo de programa em nosso computador. 569 00:25:12,250 --> 00:25:14,770 Nós temos nossa função principal dentro da nossa função principal. 570 00:25:14,770 --> 00:25:17,265 Eu só vou copiar e cole esta linha de código. 571 00:25:17,265 --> 00:25:21,082 572 00:25:21,082 --> 00:25:23,540 Também deve ter cuidado quando você caras estão copiando e colando código. 573 00:25:23,540 --> 00:25:28,750 Às vezes, certos operadores não colar mais corretamente. 574 00:25:28,750 --> 00:25:31,397 Nesse caso, a menos sinal era na verdade um traço. 575 00:25:31,397 --> 00:25:32,980 E assim o computador não buscá-lo. 576 00:25:32,980 --> 00:25:35,870 Então eu tive que ir para trás e redigitar fisicamente isso. 577 00:25:35,870 --> 00:25:37,846 Basta ter cuidado quando vocês estão fazendo isso. 578 00:25:37,846 --> 00:25:41,178 579 00:25:41,178 --> 00:25:42,660 >> ESTÁ BEM. 580 00:25:42,660 --> 00:25:43,980 Nós estamos indo para executar este aqui. 581 00:25:43,980 --> 00:25:45,670 Então, nós estamos indo para o nosso cd em section2. 582 00:25:45,670 --> 00:25:50,470 583 00:25:50,470 --> 00:25:52,030 Eu chamei este asciimath programa. 584 00:25:52,030 --> 00:25:55,690 Então lembre-se, quando executar qualquer programa, queremos primeiro compilá-lo 585 00:25:55,690 --> 00:25:57,150 executando-o através do nosso make. 586 00:25:57,150 --> 00:26:00,030 E então nós queremos realmente executado o programa fazendo dot-slash. 587 00:26:00,030 --> 00:26:01,280 Então, nós estamos indo para ./asciimath. 588 00:26:01,280 --> 00:26:05,780 589 00:26:05,780 --> 00:26:06,590 >> Certo, lá vamos nós. 590 00:26:06,590 --> 00:26:07,410 E nós vemos 32. 591 00:26:07,410 --> 00:26:07,930 Bem feito. 592 00:26:07,930 --> 00:26:10,340 Você merece um pedaço de doce. 593 00:26:10,340 --> 00:26:11,160 Doces para você. 594 00:26:11,160 --> 00:26:11,900 Desculpe. 595 00:26:11,900 --> 00:26:13,100 Tudo certo. 596 00:26:13,100 --> 00:26:13,670 ESTÁ BEM. 597 00:26:13,670 --> 00:26:18,070 Assim nós podemos voltar ao nosso exemplo aqui. 598 00:26:18,070 --> 00:26:23,530 599 00:26:23,530 --> 00:26:24,345 Aah, não. 600 00:26:24,345 --> 00:26:29,147 601 00:26:29,147 --> 00:26:31,090 Aah. 602 00:26:31,090 --> 00:26:32,490 ESTÁ BEM. 603 00:26:32,490 --> 00:26:34,610 Eu só vou mantê-lo assim. 604 00:26:34,610 --> 00:26:48,520 605 00:26:48,520 --> 00:26:51,240 ESTÁ BEM. 606 00:26:51,240 --> 00:26:51,740 ESTÁ BEM. 607 00:26:51,740 --> 00:26:55,340 Então, como vocês podem ver, nós podemos fazer um monte de coisas muito interessantes, 608 00:26:55,340 --> 00:26:58,880 um monte de coisas muito legal, um monte de coisas muito complicadas envolvendo 609 00:26:58,880 --> 00:27:02,720 Caracteres ASCII e números. 610 00:27:02,720 --> 00:27:05,890 Depois de descer para a linha de cinco, isso é um monte de seguir adiante. 611 00:27:05,890 --> 00:27:07,640 Nós não estamos indo para ir através da secção. 612 00:27:07,640 --> 00:27:10,720 Sinta-se livre para, se você puder, raciocinar em papel 613 00:27:10,720 --> 00:27:14,750 primeiro sobre o que deve estar acontecendo quando você introduzir tal uma seqüência de valores. 614 00:27:14,750 --> 00:27:19,720 Por exemplo, em que a última linha, temos z-- que representa um certo number-- 615 00:27:19,720 --> 00:27:24,740 A-- o que representa também uma certos number-- mais 1 modulos 26 616 00:27:24,740 --> 00:27:26,750 além de um minúsculas. 617 00:27:26,750 --> 00:27:29,220 >> Se vocês manter a leitura através destes, você 618 00:27:29,220 --> 00:27:34,009 pode ver um padrão surgem em como estamos manipulando o código. 619 00:27:34,009 --> 00:27:36,050 Bastante, altamente sugerir após a secção todos vocês 620 00:27:36,050 --> 00:27:38,160 caras ir em frente e entrada aqueles tudo em seu computador 621 00:27:38,160 --> 00:27:40,060 e ver que tipo de números estão saindo 622 00:27:40,060 --> 00:27:43,090 e raciocínio através porque aqueles são acontecendo, porque para os seus Série de Exercícios 623 00:27:43,090 --> 00:27:45,060 que vai ser muito importante para você entender 624 00:27:45,060 --> 00:27:47,132 por que certas coisas estão acontecendo. 625 00:27:47,132 --> 00:27:48,590 Todos esses slides será online. 626 00:27:48,590 --> 00:27:51,510 Assim, não preocupações sobre a tentativa de fisicamente copiar as notas. 627 00:27:51,510 --> 00:27:52,510 On-line de tudo. 628 00:27:52,510 --> 00:27:54,050 Isso por si só seção será online. 629 00:27:54,050 --> 00:27:57,500 Todo o meu código-fonte que Estou executando será online. 630 00:27:57,500 --> 00:27:58,180 Sim. 631 00:27:58,180 --> 00:27:59,430 Será que você ainda tiver alguma dúvida? 632 00:27:59,430 --> 00:28:00,587 AUDIÊNCIA: Qual é modulos? 633 00:28:00,587 --> 00:28:01,170 ANDI Peng: OK. 634 00:28:01,170 --> 00:28:05,620 Então modulo é um operador que vai ser muito importante para pset das suas caras 635 00:28:05,620 --> 00:28:06,690 Aqui. 636 00:28:06,690 --> 00:28:12,280 Assim, a maneira que os operadores no C e no trabalho de programação 637 00:28:12,280 --> 00:28:16,360 é que você tem o que é chamado a símbolo de divisão e o símbolo módulo, 638 00:28:16,360 --> 00:28:18,350 que é como o sinal de porcentagem. 639 00:28:18,350 --> 00:28:24,840 >> Assim, em C, quando você faz um inteiro dividido por um número inteiro com uma barra, 640 00:28:24,840 --> 00:28:27,720 C tem uma tendência para deseja cortar off todos os pontos decimais, 641 00:28:27,720 --> 00:28:30,290 quer porque um número inteiro para converter em um inteiro. 642 00:28:30,290 --> 00:28:33,550 Não vai querer ser um duplo com um monte de casas decimais após tudo isso. 643 00:28:33,550 --> 00:28:39,322 >> Então, se eu fizer 3 dividido por 2, vai para cortar a 0,5 e apenas dar-lhe um. 644 00:28:39,322 --> 00:28:41,530 Então, isso é algo a ser muito cuidado quando você estiver 645 00:28:41,530 --> 00:28:45,294 fazer qualquer tipo de matemática na programação, é que os números que você começa 646 00:28:45,294 --> 00:28:47,210 podem não ser os números que você estava pensando, 647 00:28:47,210 --> 00:28:50,190 é por isso que o arredondamento em sua última pset é tão importante. 648 00:28:50,190 --> 00:28:51,980 >> Modulo dá-lhe o resto. 649 00:28:51,980 --> 00:28:56,200 Assim, por exemplo, se eu fiz 3 modulo 2-- tão 3 por cento sinal 2-- 650 00:28:56,200 --> 00:28:58,020 que lhe daria o resto desse. 651 00:28:58,020 --> 00:29:00,460 Então 3 dividido por 2 é de 1,5. 652 00:29:00,460 --> 00:29:01,410 É um resto de 1. 653 00:29:01,410 --> 00:29:04,600 Seria dar-lhe o 1, que é o restante de que. 654 00:29:04,600 --> 00:29:07,361 >> Então, quando vocês estão se movendo através da tabela ASCII, 655 00:29:07,361 --> 00:29:09,735 modulo vai acabar por ser algo que é muito importante, 656 00:29:09,735 --> 00:29:11,240 e vamos discutir isso mais tarde. 657 00:29:11,240 --> 00:29:17,750 658 00:29:17,750 --> 00:29:19,040 >> ESTÁ BEM. 659 00:29:19,040 --> 00:29:27,300 Portanto, algo que é bastante, muito novo e bastante original 660 00:29:27,300 --> 00:29:31,920 que temos discutido nesta semana é o conceito do que é uma matriz. 661 00:29:31,920 --> 00:29:34,370 Então matriz é o primeiro tipo de estrutura de dados 662 00:29:34,370 --> 00:29:36,320 que vamos encontrar nesta classe. 663 00:29:36,320 --> 00:29:40,010 Toda a estrutura de dados está é algum tipo de arbitrariedade, 664 00:29:40,010 --> 00:29:43,370 literalmente coisas como estrutura que nós, como os programadores criaram, 665 00:29:43,370 --> 00:29:47,890 que nós colocamos no nosso código que pode conter outros pedaços de código. 666 00:29:47,890 --> 00:29:51,090 >> Portanto, neste sentido, uma array-- pense nisso como um armário de arquivo, 667 00:29:51,090 --> 00:29:53,470 onde se você abrir diferente prateleiras de seu armário de arquivo, 668 00:29:53,470 --> 00:29:55,630 você pode acessar coisas diferentes. 669 00:29:55,630 --> 00:29:58,630 Na memória, uma matriz é apenas a fazer a mesma coisa em seu computador. 670 00:29:58,630 --> 00:30:01,730 Você pode ter diferentes nós blocks-- chamá-los indices-- de uma matriz. 671 00:30:01,730 --> 00:30:04,210 É como um bloco, uma prateleira de memória 672 00:30:04,210 --> 00:30:07,580 que criamos dentro de seu computador que você pode introduzir 673 00:30:07,580 --> 00:30:10,270 certas coisas em diferentes espaços. 674 00:30:10,270 --> 00:30:18,000 >> Assim, com uma matriz, você sempre tem que specify-- 675 00:30:18,000 --> 00:30:22,360 você tem que especificar declarar um matriz no seguinte formato. 676 00:30:22,360 --> 00:30:24,290 Você vai primeiro especificar o tipo de dados 677 00:30:24,290 --> 00:30:25,831 que você quer criar da matriz. 678 00:30:25,831 --> 00:30:28,870 Se eu quiser um array de inteiros, Eu vou colocar int ali. 679 00:30:28,870 --> 00:30:32,079 Se eu quero uma matriz de strings, Eu vou colocar cordas lá, 680 00:30:32,079 --> 00:30:34,995 o nome de sua matriz, e, em seguida, você vai ter colchetes. 681 00:30:34,995 --> 00:30:39,580 E dentro dos colchetes, você é vai ter o tamanho de sua matriz. 682 00:30:39,580 --> 00:30:42,900 >> Algo que é realmente importante para manter em mente ao criar matrizes é 683 00:30:42,900 --> 00:30:46,530 que, uma vez que você criar um array, que tamanho não pode mudar. 684 00:30:46,530 --> 00:30:50,180 Então, se você sabe que agora você tem uma matriz de tamanho 10, 685 00:30:50,180 --> 00:30:54,550 você sabe que eu vou ter 10 células dentro de 10 ou índices dentro desta gama, 686 00:30:54,550 --> 00:30:56,830 e isso nunca vai para expandir ou diminuir 687 00:30:56,830 --> 00:30:59,850 não importa o que, e que não há Atualmente apenas 10 blocos de espaço 688 00:30:59,850 --> 00:31:04,490 alocados em sua memória que pode armazenar até 10 coisas do que quer que você colocou. 689 00:31:04,490 --> 00:31:08,790 >> Assim, deste modo, um tipo de dados de matriz, a estrutura de dados que é uma matriz 690 00:31:08,790 --> 00:31:13,392 é muito diferente de alguns outros nós vamos fazer a cobertura mais tarde neste curso. 691 00:31:13,392 --> 00:31:15,170 Sim. 692 00:31:15,170 --> 00:31:20,080 Por exemplo, se você queria criar uma matriz de tamanho 3 que 693 00:31:20,080 --> 00:31:23,670 contidos variáveis ​​de integer-- oh, desculpa, de temperature-- 694 00:31:23,670 --> 00:31:25,640 e temperatura, de é claro, é um número inteiro. 695 00:31:25,640 --> 00:31:28,710 >> Então, nós criaríamos int, que é o Tipo de dados do que queremos para armazenar. 696 00:31:28,710 --> 00:31:32,680 Vamos chamar esta temperaturas por uma questão de nomenclatura de nomeação 697 00:31:32,680 --> 00:31:34,200 algo que todos nós entendemos. 698 00:31:34,200 --> 00:31:35,900 E nós vamos ter colchetes. 699 00:31:35,900 --> 00:31:37,200 E queremos três números. 700 00:31:37,200 --> 00:31:39,000 Então, nós estamos indo para colocar três no interior do mesmo. 701 00:31:39,000 --> 00:31:41,041 >> Algo que é realmente importante manter em mente 702 00:31:41,041 --> 00:31:43,530 é que as matrizes são indexados zero. 703 00:31:43,530 --> 00:31:46,410 Tudo o que significa é que você começar com o índice de 0, 704 00:31:46,410 --> 00:31:49,800 e você corre para cima através da tamanho da matriz menos 1. 705 00:31:49,800 --> 00:31:52,730 Assim, por exemplo aqui, tenho uma matriz de tamanho 3. 706 00:31:52,730 --> 00:31:54,680 Vai poder para prender três valores. 707 00:31:54,680 --> 00:31:57,450 Mas os números que themselves-- número, a matriz, esse índice, 708 00:31:57,450 --> 00:32:00,271 a matriz, são de 0 a 2. 709 00:32:00,271 --> 00:32:03,520 Portanto, rapazes, ser muito, muito cuidado quando você está passando por seus problemas definidos 710 00:32:03,520 --> 00:32:06,500 ea criação de qualquer tipo de matriz, porque muitas das vezes é 711 00:32:06,500 --> 00:32:08,490 realmente, realmente fácil esquecer isso. 712 00:32:08,490 --> 00:32:11,840 Na verdade, eu não tenho o índice de 3, que actualmente apenas 713 00:32:11,840 --> 00:32:13,130 tem o índice de 2. 714 00:32:13,130 --> 00:32:16,046 E se você tentar aceder ao índice de terceira, 715 00:32:16,046 --> 00:32:18,170 que vai ser o que é chamado o terminador nulo. 716 00:32:18,170 --> 00:32:19,990 Ele não vai, na verdade, existem na matriz. 717 00:32:19,990 --> 00:32:21,781 E o computador é não vai gostar disso. 718 00:32:21,781 --> 00:32:24,570 Portanto, tenha cuidado sempre você está acessando as coisas apenas 719 00:32:24,570 --> 00:32:28,070 para garantir que você lembre- que as matrizes são zero-indexado. 720 00:32:28,070 --> 00:32:28,880 >> ESTÁ BEM. 721 00:32:28,880 --> 00:32:34,030 Assim, o primeiro exemplo é apenas uma maneira de criar uma matriz. 722 00:32:34,030 --> 00:32:36,790 O segundo exemplo, eu tenho abaixo é apenas uma maneira separada 723 00:32:36,790 --> 00:32:40,210 de criar o que é o mesmo dados estrutura que temos apenas introduzido. 724 00:32:40,210 --> 00:32:44,347 Então, ao invés de fisicamente executando através de e colocando em temperatura de 0 725 00:32:44,347 --> 00:32:47,180 é igual a qualquer outra coisa, temperatura 1 é igual a qualquer que seja, temperatura 2 equals 726 00:32:47,180 --> 00:32:50,950 qualquer que seja, eu poderia realmente apenas criar tudo isso diretamente em uma linha 727 00:32:50,950 --> 00:32:53,010 em temperatura entre colchetes é igual. 728 00:32:53,010 --> 00:32:56,536 >> E note, neste caso, você não precisa para especificar o tamanho da sua matriz é, 729 00:32:56,536 --> 00:32:59,160 porque o computador vai passar e ver que não há 730 00:32:59,160 --> 00:33:01,570 três elementos nessas chaves. 731 00:33:01,570 --> 00:33:04,000 E vai saber, OK, Eu preciso de uma matriz de tamanho 3. 732 00:33:04,000 --> 00:33:07,440 Você não está indo a necessidade de introduzi-lo da seguinte maneira. 733 00:33:07,440 --> 00:33:10,170 >> E também, sim, de que maneira. 734 00:33:10,170 --> 00:33:12,610 Alguém tem perguntas a respeito de como nós fazemos matrizes 735 00:33:12,610 --> 00:33:17,391 ou como a estrutura de uma matriz funciona? 736 00:33:17,391 --> 00:33:17,890 Sim. 737 00:33:17,890 --> 00:33:18,806 >> AUDIÊNCIA: [inaudível]? 738 00:33:18,806 --> 00:33:21,649 739 00:33:21,649 --> 00:33:22,690 ANDI Peng: Sim, exatamente. 740 00:33:22,690 --> 00:33:26,150 Então, se você fosse para declarar e inicializar uma matriz o seguinte método, 741 00:33:26,150 --> 00:33:28,477 que é a segunda forma, você pode apenas deixá-los. 742 00:33:28,477 --> 00:33:30,310 E o computador automaticamente sabe que 743 00:33:30,310 --> 00:33:33,950 precisa contar quantos elementos são nessas chaves, separados 744 00:33:33,950 --> 00:33:34,930 por vírgulas. 745 00:33:34,930 --> 00:33:37,517 >> Então, aqui eles vêem 65, 87, 30. 746 00:33:37,517 --> 00:33:39,600 Assim, o computador sabe, oh, há três inteiros. 747 00:33:39,600 --> 00:33:45,960 Eu sei que para criar um nome de matriz temperatura com três elementos nele. 748 00:33:45,960 --> 00:33:46,590 Boa pergunta. 749 00:33:46,590 --> 00:33:47,090 Sim. 750 00:33:47,090 --> 00:33:51,590 >> AUDIÊNCIA: Não é possível criar uma matriz com diferentes tipos de dados 751 00:33:51,590 --> 00:33:53,021 que poderiam ser celebrados isso? 752 00:33:53,021 --> 00:33:56,746 Por exemplo, com números inteiros [inaudível]? 753 00:33:56,746 --> 00:33:59,120 ANDI Peng: Para efeitos desta classe, não, no momento. 754 00:33:59,120 --> 00:34:03,070 Quando você cria um conjunto de dados estruturar como uma matriz, 755 00:34:03,070 --> 00:34:04,990 você está dizendo a computador, hey, eu preciso de você 756 00:34:04,990 --> 00:34:08,159 para alocar este muito memória no meu disco rígido, 757 00:34:08,159 --> 00:34:10,690 sendo cada célula um certo número de bits. 758 00:34:10,690 --> 00:34:13,429 >> Lembre-se que aprendemos na semana zero que dados diferente 759 00:34:13,429 --> 00:34:15,300 tipos têm tamanhos diferentes? 760 00:34:15,300 --> 00:34:17,630 Assim, por exemplo, uma cadeia é uma quantidade diferente 761 00:34:17,630 --> 00:34:20,719 de espaço do que um char, que é uma quantidade diferente de espaço 762 00:34:20,719 --> 00:34:21,830 a partir de um número inteiro. 763 00:34:21,830 --> 00:34:25,534 E por isso, se você não especificar e você misturar e combinar que tipos de variáveis 764 00:34:25,534 --> 00:34:27,659 você tem, o computador de vai ser muito confuso. 765 00:34:27,659 --> 00:34:29,950 E ele não vai saber a quantidade de memória para te dar. 766 00:34:29,950 --> 00:34:32,480 Assim, para efeitos do direito Agora, os computadores só podem 767 00:34:32,480 --> 00:34:36,120 reconhecer um tipo de uma matriz. 768 00:34:36,120 --> 00:34:37,940 Boa pergunta. 769 00:34:37,940 --> 00:34:38,440 ESTÁ BEM. 770 00:34:38,440 --> 00:34:45,179 771 00:34:45,179 --> 00:34:47,120 >> Então, naturalmente, o segunda pergunta que temos 772 00:34:47,120 --> 00:34:50,760 é, bem, agora que nós criamos um array e nós colocamos todas essas coisas 773 00:34:50,760 --> 00:34:54,190 na matriz, como é que vamos vai ser capaz de acessá-lo? 774 00:34:54,190 --> 00:34:59,710 Assim, a estrutura típica que sempre acessar uma matriz é a nossa linda para loop. 775 00:34:59,710 --> 00:35:03,830 Eu prometo a vocês que nós vamos ser vendo um monte de este companheiro aqui. 776 00:35:03,830 --> 00:35:06,470 >> Essencialmente, sempre que quiser para valores de entrada em uma matriz 777 00:35:06,470 --> 00:35:09,940 ou se você quiser acessá-los, o melhor maneira de fazer isso é um loop for, 778 00:35:09,940 --> 00:35:13,730 porque em um loop for, você sei quantas vezes você é 779 00:35:13,730 --> 00:35:17,290 vai querer correr pela matriz, porque você tem uma edição de parada, certo? 780 00:35:17,290 --> 00:35:19,680 E cada vez que você executa através, você pode acessar 781 00:35:19,680 --> 00:35:21,310 um elemento diferente da matriz. 782 00:35:21,310 --> 00:35:26,920 >> E também, esta é uma razão pela qual normalmente nós começamos nosso loops com o valor 0, 783 00:35:26,920 --> 00:35:30,080 porque quando você acessar arrays, você pode acessar o índice zero. 784 00:35:30,080 --> 00:35:32,070 E assim um paralelo muito bem. 785 00:35:32,070 --> 00:35:35,295 Vocês podem ter queria escrever para int i é igual a 1. 786 00:35:35,295 --> 00:35:37,330 i é menos do que ou igual a 3. 787 00:35:37,330 --> 00:35:39,890 >> Mas ele não iria funcionar tão bem aqui, porque você só 788 00:35:39,890 --> 00:35:42,010 têm elementos de 0, 1, e 2. 789 00:35:42,010 --> 00:35:45,815 E por isso, se você fosse começar o i no elemento 1, 2 e 3, 790 00:35:45,815 --> 00:35:48,440 você vai acabar sendo executado fora dos limites de sua matriz, 791 00:35:48,440 --> 00:35:50,440 e coisas ruins vão acontecer. 792 00:35:50,440 --> 00:35:54,480 >> Então, eu espero que vocês ver o segue de por que nas classes anteriores 793 00:35:54,480 --> 00:35:58,560 estávamos ensinando a vocês como executar e formatar um loop for do jeito que estávamos. 794 00:35:58,560 --> 00:36:01,900 É porque, agora nós temos transitou em matrizes, 795 00:36:01,900 --> 00:36:06,760 Você pode ver porque os empresta 0 -se muito bem para o acesso. 796 00:36:06,760 --> 00:36:09,880 >> Então, a nossa forma de fazer isso é isso-- eu sou apenas imprimi-lo aqui por causa 797 00:36:09,880 --> 00:36:10,830 de imprimi-los. 798 00:36:10,830 --> 00:36:13,750 Mas eu tenho o meu espaço reservado, vírgula. 799 00:36:13,750 --> 00:36:15,645 E o acessando real parte está acontecendo. 800 00:36:15,645 --> 00:36:17,520 O nome da matriz foi chamado de temperatura. 801 00:36:17,520 --> 00:36:21,570 Portanto, é de temperatura eo i-ésimo elemento da matriz. 802 00:36:21,570 --> 00:36:24,400 >> Assim como o loop for percorre, ele vai começar a 0. 803 00:36:24,400 --> 00:36:27,640 Vai para imprimir o Índice 0 desta matriz. 804 00:36:27,640 --> 00:36:29,599 Em seguida, ele vai para imprimir para fora do primeiro elemento. 805 00:36:29,599 --> 00:36:31,431 Em seguida, ele vai para imprimir a segunda. 806 00:36:31,431 --> 00:36:32,880 E então nós vamos quebrar. 807 00:36:32,880 --> 00:36:36,718 É clara sobre todos como isso está acontecendo? 808 00:36:36,718 --> 00:36:37,217 Ótimo. 809 00:36:37,217 --> 00:36:43,230 810 00:36:43,230 --> 00:36:44,100 >> Tudo certo. 811 00:36:44,100 --> 00:36:47,270 Portanto, temos aqui uma maneira de dizendo: se não quiser 812 00:36:47,270 --> 00:36:50,020 para codificar me em-- como o programador. 813 00:36:50,020 --> 00:36:53,320 Eu não queria realmente fisicamente colocar em cada elemento individual 814 00:36:53,320 --> 00:36:54,020 desta matriz. 815 00:36:54,020 --> 00:36:56,500 Se eu quisesse, em vez têm os valores de entrada do usuário, 816 00:36:56,500 --> 00:36:58,100 qual é a melhor maneira de fazer isso? 817 00:36:58,100 --> 00:37:00,920 >> Bem, aqui eu criei esta função adorável, 818 00:37:00,920 --> 00:37:03,560 em que eu possa declarar uma matriz. 819 00:37:03,560 --> 00:37:06,210 Então vamos int scores-- apenas dizer que nós queremos fazer 820 00:37:06,210 --> 00:37:10,660 uma matriz que continha as notas de todos os 18 dos alunos aqui nesta seção. 821 00:37:10,660 --> 00:37:12,670 Eu acho que nós temos um pouco mais de 18 crianças de hoje. 822 00:37:12,670 --> 00:37:16,460 Mas por causa do exemplo, vamos supor que tivemos 18. 823 00:37:16,460 --> 00:37:21,580 Gostaria de criar um nome de matriz com escores Tipo int, porque pontuações, é claro, 824 00:37:21,580 --> 00:37:22,987 são números. 825 00:37:22,987 --> 00:37:24,820 E eu vou ter 18 em colchetes, 826 00:37:24,820 --> 00:37:29,900 porque é assim que muitos estudantes I quero ser capaz de armazenar dezenas de. 827 00:37:29,900 --> 00:37:32,206 >> E a maneira que eu preencher a matriz é que eu tinha 828 00:37:32,206 --> 00:37:35,572 executá-lo através de um loop for, de Claro que, com 0 sendo meu índice 0. 829 00:37:35,572 --> 00:37:38,030 E, sendo, em seguida, com 18 meu parar edição, porque não há 830 00:37:38,030 --> 00:37:39,690 18 elementos na matriz. 831 00:37:39,690 --> 00:37:44,620 E então eu vou fazer printf, Enter marcar para student-- yada yada yada. 832 00:37:44,620 --> 00:37:51,171 >> Alguém pode me dizer por que aqui estou imprimir i + 1 e não eu? 833 00:37:51,171 --> 00:37:52,920 É uma espécie de um truque pergunta, não realmente. 834 00:37:52,920 --> 00:37:56,020 Na verdade, não fisicamente afetar o funcionamento do código. 835 00:37:56,020 --> 00:37:56,520 Sim. 836 00:37:56,520 --> 00:37:57,909 >> AUDIÊNCIA: [inaudível] 0? 837 00:37:57,909 --> 00:37:58,950 ANDI Peng: Sim, exatamente. 838 00:37:58,950 --> 00:38:02,620 É um pouco estranho dizer, hey, você é o estudante 0 nesta classe. 839 00:38:02,620 --> 00:38:03,780 É um pouco estranho. 840 00:38:03,780 --> 00:38:08,340 Então, nós, como seres humanos, realmente não gosto para pensar em como os computadores pensam. 841 00:38:08,340 --> 00:38:10,930 Assim, mesmo que no computador, é armazenar valores 842 00:38:10,930 --> 00:38:13,310 no 0-th índice, quando nós somos seres humanos, nós realmente não 843 00:38:13,310 --> 00:38:15,520 gostam de se referir a nós mesmos como zero. 844 00:38:15,520 --> 00:38:18,119 Então, quando eu apenas imprimi que, Eu estou indo para imprimir e adicionar 845 00:38:18,119 --> 00:38:19,410 1 apenas por uma questão de clareza. 846 00:38:19,410 --> 00:38:22,447 Então, quando eu imprimir, eu vou ser capaz de imprimir os alunos de 1 a 18. 847 00:38:22,447 --> 00:38:24,530 Na verdade, não ter impacto a execução de código 848 00:38:24,530 --> 00:38:27,110 de qualquer forma, do jeito que eu imprimir. 849 00:38:27,110 --> 00:38:30,380 >> Mas tenha cuidado quando você estiver na verdade, o acesso a matriz. 850 00:38:30,380 --> 00:38:32,780 Quando você ver as pontuações i, notar aqui que eu sou realmente 851 00:38:32,780 --> 00:38:38,200 acessar o índice 0 e não o mais 0-- 1 ou 1 + 1, 852 00:38:38,200 --> 00:38:45,530 Neste caso, o índice assim que ele é realmente clara. 853 00:38:45,530 --> 00:38:48,870 Está todo mundo tipo de OK em como isso está sendo executado através 854 00:38:48,870 --> 00:38:51,470 e com todos os índices que eu sou colocar um valor para a matriz 855 00:38:51,470 --> 00:38:55,340 e criar uma matriz com 18 números que o usuário está indo para entrada? 856 00:38:55,340 --> 00:38:58,780 857 00:38:58,780 --> 00:38:59,821 ESTÁ BEM. 858 00:38:59,821 --> 00:39:00,321 Legal. 859 00:39:00,321 --> 00:39:05,380 860 00:39:05,380 --> 00:39:07,400 >> ESTÁ BEM. 861 00:39:07,400 --> 00:39:12,220 Passamos agora em algo que é bastante relevante para esta peça, bem definido. 862 00:39:12,220 --> 00:39:15,020 Eu sei que na palestra, David-- desculpe, você tinha uma pergunta? 863 00:39:15,020 --> 00:39:16,840 >> AUDIÊNCIA: você pode aumentá-la? 864 00:39:16,840 --> 00:39:18,080 >> ANDI Peng: Sim, então eu tentei. 865 00:39:18,080 --> 00:39:18,788 Mas eu não sei. 866 00:39:18,788 --> 00:39:21,437 Por alguma razão, este versão do PowerPoint 867 00:39:21,437 --> 00:39:23,270 não é realmente trabalhar bem com o visor. 868 00:39:23,270 --> 00:39:25,260 Então, nós apenas estamos indo para mantê-lo assim. 869 00:39:25,260 --> 00:39:27,280 Todos estes serão enviados online. 870 00:39:27,280 --> 00:39:28,218 Desculpe, rapazes. 871 00:39:28,218 --> 00:39:30,090 Sim. 872 00:39:30,090 --> 00:39:30,980 ESTÁ BEM. 873 00:39:30,980 --> 00:39:35,530 >> Por isso, também pode ter cordas. 874 00:39:35,530 --> 00:39:39,320 Então, se vocês realmente notice-- I sabe Rob passou por cima este em que palestra 875 00:39:39,320 --> 00:39:43,652 que ele fez-- uma string é realmente apenas um array de caracteres, 876 00:39:43,652 --> 00:39:44,860 se você pensar sobre isso, certo? 877 00:39:44,860 --> 00:39:47,500 Uma seqüência de caracteres é um nome ou um frase ou uma palavra, certo? 878 00:39:47,500 --> 00:39:52,975 >> Se eu fosse para criar uma cadeia com o nome Andi-- apenas o meu nome, A-N-D-I. 879 00:39:52,975 --> 00:39:55,460 Você pensaria que isso fosse apenas uma variável. 880 00:39:55,460 --> 00:39:58,630 Mas, na verdade, ele é discriminado em apenas uma matriz de caracteres. 881 00:39:58,630 --> 00:40:01,910 Então, ele tem um caráter de um armazenado em um valor de matriz. 882 00:40:01,910 --> 00:40:05,420 Ele tem um caráter de n armazenado no segundo índice e assim por diante e assim por diante. 883 00:40:05,420 --> 00:40:08,660 >> Assim, de tal maneira, que realmente tem esse tipo 884 00:40:08,660 --> 00:40:10,970 de estrutura definida em colocar para nossas cordas. 885 00:40:10,970 --> 00:40:14,660 Então, aqui, se eu fosse para a entrada palavra "comer" - assim palavra é igual a cadeia 886 00:40:14,660 --> 00:40:15,540 obter string. 887 00:40:15,540 --> 00:40:19,260 Se eu fosse para introduzir a palavra "comer", que é fisicamente o caminho que o meu computador 888 00:40:19,260 --> 00:40:21,870 está armazenando essa seqüência em minha memória. 889 00:40:21,870 --> 00:40:27,140 >> E se eu queria correr por aquela e de impressão que out-- assim para em i 890 00:40:27,140 --> 00:40:30,890 é igual a zero, lembre-se, em palestra, que coberto algo que é chamado de strlen, 891 00:40:30,890 --> 00:40:32,990 ou o comprimento da corda. 892 00:40:32,990 --> 00:40:36,520 Porque eu realmente não saber o quão grande é a matriz 893 00:40:36,520 --> 00:40:38,210 de qualquer inputting-- do usuário 894 00:40:38,210 --> 00:40:40,370 >> Por exemplo, I introduzido a palavra "comer", e eu sei 895 00:40:40,370 --> 00:40:41,870 que é três caracteres, certo? 896 00:40:41,870 --> 00:40:44,700 Então, eu poderia colocar em um de três lá e tudo vai ficar bem. 897 00:40:44,700 --> 00:40:49,290 Mas se o seu algo a entrada do usuário que é um número diferente de valores, 898 00:40:49,290 --> 00:40:52,760 você está indo para não ser capaz de realmente sabe que quando você programar o seu código. 899 00:40:52,760 --> 00:40:56,040 >> Assim, a maneira que lidamos com casos de teste assim é que temos algo 900 00:40:56,040 --> 00:41:00,070 chamada strlen, que é apenas uma função que lhe diz quanto tempo uma string é. 901 00:41:00,070 --> 00:41:02,080 Então strlen da palavra. 902 00:41:02,080 --> 00:41:03,470 Minha palavra é comer. 903 00:41:03,470 --> 00:41:05,990 n é igual a strlen da palavra. 904 00:41:05,990 --> 00:41:08,930 Alguém pode me dizer o que valor, na verdade, é logo ali? 905 00:41:08,930 --> 00:41:12,550 O que n representando direita Agora, neste exemplo, se eu tivesse de comer? 906 00:41:12,550 --> 00:41:13,530 >> AUDIÊNCIA: 3. 907 00:41:13,530 --> 00:41:14,520 >> ANDI Peng: 3, exatamente. 908 00:41:14,520 --> 00:41:18,820 Portanto, temos para int i é igual a zero, n é igual a 3, essencialmente. 909 00:41:18,820 --> 00:41:22,355 E eu vai correr até que seja menos do que 3i ++. 910 00:41:22,355 --> 00:41:24,980 E está indo para ir essencialmente através de e fazer a mesma coisa. 911 00:41:24,980 --> 00:41:26,979 Vai para imprimir cada valor e dar-lhe 912 00:41:26,979 --> 00:41:29,700 E-A-T. É só denotando uma maneira diferente de escrevê-lo. 913 00:41:29,700 --> 00:41:31,170 Isso vai ser muito útil. 914 00:41:31,170 --> 00:41:31,670 Sim. 915 00:41:31,670 --> 00:41:35,174 AUDIÊNCIA: Qual é os benefícios de colocar o n é igual a palavra strlen interior que 916 00:41:35,174 --> 00:41:36,894 loop [inaudível]? 917 00:41:36,894 --> 00:41:37,560 ANDI Peng: Sim. 918 00:41:37,560 --> 00:41:44,880 Então, se eu fosse a-- dizer, por exemplo, se eu fosse para fazer isso e, em seguida, 919 00:41:44,880 --> 00:41:51,935 fazer-- oop-- que, no meu código, seria na verdade, estar fazendo como a mesma coisa. 920 00:41:51,935 --> 00:41:55,060 No entanto, a maneira que David explicou ele durante a palestra, se algum de vocês 921 00:41:55,060 --> 00:41:57,854 lembre-se, foi a de que, como os seres humanos, como programadores, 922 00:41:57,854 --> 00:42:00,270 nós realmente tentamos programar nossa código, de modo que o nosso computador tem 923 00:42:00,270 --> 00:42:04,070 para trabalhar o mínimo possível, de modo que o nosso código é muito eficiente. 924 00:42:04,070 --> 00:42:06,850 >> Então, se eu tivesse que lá, o que que aconteceria através do meu loop 925 00:42:06,850 --> 00:42:10,790 é que eu iria primeiro declarar uma variável i chamado vai ser 0. 926 00:42:10,790 --> 00:42:13,350 Vou verificar, oh, o que é a strlen de palavra? 927 00:42:13,350 --> 00:42:15,000 Oh, o strlen é 3. 928 00:42:15,000 --> 00:42:16,191 Então é i menos de três? 929 00:42:16,191 --> 00:42:16,690 Sim. 930 00:42:16,690 --> 00:42:17,870 Eu vou correr. 931 00:42:17,870 --> 00:42:21,130 >> E então a segunda vez de volta ao redor o laço, eu estou indo para incrementar i. 932 00:42:21,130 --> 00:42:22,550 i vai ser um. 933 00:42:22,550 --> 00:42:25,600 E eu vai verificar, oh, mas qual é a strlen da palavra? 934 00:42:25,600 --> 00:42:26,839 Oh, é três. 935 00:42:26,839 --> 00:42:29,880 E isso parece tipo de desperdício, cada vez que você executar através do laço, 936 00:42:29,880 --> 00:42:33,340 estar verificando a função, mesmo que os strlen de palavra 937 00:42:33,340 --> 00:42:35,490 nunca realmente muda? 938 00:42:35,490 --> 00:42:38,590 >> Portanto, é energia extra para um computador. 939 00:42:38,590 --> 00:42:42,180 Quando você começar a falar sobre as coisas que são bilhões e bilhões 940 00:42:42,180 --> 00:42:44,431 e milhares de milhões de lugares longo, imagine o seu computador 941 00:42:44,431 --> 00:42:47,430 ter que ir fisicamente através de e verificar todos os que a cada momento. 942 00:42:47,430 --> 00:42:53,170 É por isso que, para fazer apenas por uma questão de eficiência, 943 00:42:53,170 --> 00:42:57,620 nós só tendem a fazer isso, pois desta forma estamos apenas 944 00:42:57,620 --> 00:42:59,850 chamando a função uma vez no início, 945 00:42:59,850 --> 00:43:01,766 e que cada vez que passa por isso está acontecendo 946 00:43:01,766 --> 00:43:03,789 para armazenar o valor 3 lá, que você não 947 00:43:03,789 --> 00:43:05,330 tem que verificar continuamente o tempo todo. 948 00:43:05,330 --> 00:43:05,743 Sim. 949 00:43:05,743 --> 00:43:06,409 >> AUDIÊNCIA: Desculpe. 950 00:43:06,409 --> 00:43:09,070 Apenas [inaudível]. 951 00:43:09,070 --> 00:43:13,985 Poderia você int n é igual a strlen e colocá- que acima do lado de fora do loop 952 00:43:13,985 --> 00:43:15,364 também? 953 00:43:15,364 --> 00:43:16,030 ANDI Peng: Sim. 954 00:43:16,030 --> 00:43:17,100 Você poderia fazer isso, absolutamente. 955 00:43:17,100 --> 00:43:19,970 A razão pela qual nós temos isso aqui é porque a forma como um laço para obras 956 00:43:19,970 --> 00:43:23,500 é que ele é chamado de variável local no sentido 957 00:43:23,500 --> 00:43:26,150 que tudo o que você é criando dentro do loop for 958 00:43:26,150 --> 00:43:27,890 só existe dentro do loop for. 959 00:43:27,890 --> 00:43:31,530 >> Assim, a variável i only existe nesses suportes. 960 00:43:31,530 --> 00:43:35,260 E aqui as variáveis ​​de n também só existe nesses suportes. 961 00:43:35,260 --> 00:43:39,350 Então, se você fosse usar strlen de palavra várias vezes para baixo abaixo, 962 00:43:39,350 --> 00:43:42,230 absolutamente a melhor maneira de fazer isso seria declará-la até o topo 963 00:43:42,230 --> 00:43:43,563 assim você não tem que fazer isso uma vez. 964 00:43:43,563 --> 00:43:45,420 Sim. 965 00:43:45,420 --> 00:43:47,670 AUDIÊNCIA: Por que você tem um nova linha após a cento 966 00:43:47,670 --> 00:43:51,300 vendo se você quer colocar tudo as letras ao lado dele separam? 967 00:43:51,300 --> 00:43:54,140 >> ANDI Peng: Oh, eu queria imprimi-los todos em cada linha. 968 00:43:54,140 --> 00:43:54,890 Não importa. 969 00:43:54,890 --> 00:43:55,890 Sim, é uma formatação. 970 00:43:55,890 --> 00:43:57,181 Essa é uma boa pergunta. 971 00:43:57,181 --> 00:43:59,360 Sim, se eu quisesse imprimir tudo em apenas uma linha, 972 00:43:59,360 --> 00:44:02,731 Eu não teria o traço no. 973 00:44:02,731 --> 00:44:03,230 ESTÁ BEM. 974 00:44:03,230 --> 00:44:06,880 Todo mundo é bom? 975 00:44:06,880 --> 00:44:07,500 ESTÁ BEM. 976 00:44:07,500 --> 00:44:08,000 Legal. 977 00:44:08,000 --> 00:44:12,080 978 00:44:12,080 --> 00:44:14,750 >> Então eu acho que eu falei o suficiente. 979 00:44:14,750 --> 00:44:20,040 A vez de vocês para ser executado através do código e me diga o que está errado aqui. 980 00:44:20,040 --> 00:44:21,560 Onde está o erro? 981 00:44:21,560 --> 00:44:26,920 Então, como você pode ver, eu tenho declarado nova matriz do tipo string classe chamada. 982 00:44:26,920 --> 00:44:30,220 E eu tenho entrado Sam, Jess, e Kim para ele. 983 00:44:30,220 --> 00:44:33,400 E eu estou tentando imprimir todos os elementos da matriz. 984 00:44:33,400 --> 00:44:36,796 Alguém pode me dizer por que isso vai me dar problemas? 985 00:44:36,796 --> 00:44:39,320 Eu vou dar a vocês 10 segundos para pensar sobre isso. 986 00:44:39,320 --> 00:44:55,490 987 00:44:55,490 --> 00:44:56,619 >> ESTÁ BEM. 988 00:44:56,619 --> 00:44:57,118 Sim? 989 00:44:57,118 --> 00:45:01,972 >> AUDIÊNCIA: É o centro esquerda igual a 3 ou [inaudível]? 990 00:45:01,972 --> 00:45:02,680 ANDI PENG: Certo. 991 00:45:02,680 --> 00:45:06,784 Então, quantas vezes é que isso realmente indo para percorrer este ciclo? 992 00:45:06,784 --> 00:45:07,620 >> AUDIÊNCIA: Four. 993 00:45:07,620 --> 00:45:08,070 >> ANDI Peng: Exatamente. 994 00:45:08,070 --> 00:45:09,445 Vai por quatro vezes. 995 00:45:09,445 --> 00:45:12,250 Vai percorrer a 0, 1, 2, e 3, 996 00:45:12,250 --> 00:45:15,200 porque o seu elemento é i é inferior ou igual a 3. 997 00:45:15,200 --> 00:45:16,960 Ele não vai parar quando é 2. 998 00:45:16,960 --> 00:45:18,800 Vai mantê- indo até atingir 3. 999 00:45:18,800 --> 00:45:21,720 E, como sabemos, só há três elementos na nossa matriz real. 1000 00:45:21,720 --> 00:45:27,260 >> Se tentarmos acessar a quarta elemento ou o índice de 3, 1001 00:45:27,260 --> 00:45:30,357 você está indo bater em algum lugar na memória que não existe. 1002 00:45:30,357 --> 00:45:31,690 É chamado o terminador nulo. 1003 00:45:31,690 --> 00:45:32,856 Nada vai estar lá. 1004 00:45:32,856 --> 00:45:35,324 O seu computador não vai estar muito feliz com você. 1005 00:45:35,324 --> 00:45:36,170 Sim. 1006 00:45:36,170 --> 00:45:38,430 Alguém tem perguntas sobre por que estava acontecendo? 1007 00:45:38,430 --> 00:45:39,679 Essa é uma área comum para evitar. 1008 00:45:39,679 --> 00:45:40,712 Sim. 1009 00:45:40,712 --> 00:45:45,777 >> AUDIÊNCIA: Não faz o primeiro deslize também têm uma seqüência de 2? 1010 00:45:45,777 --> 00:45:46,360 ANDI Peng: Não. 1011 00:45:46,360 --> 00:45:49,610 Assim, essencialmente, quando você está fazendo uma matriz, 1012 00:45:49,610 --> 00:45:51,540 esse direito colchete Há, que number-- todos 1013 00:45:51,540 --> 00:45:53,480 ele está dizendo a você é como muitos elementos que eu tenho. 1014 00:45:53,480 --> 00:45:55,840 Não está realmente dizendo me os índices de nada. 1015 00:45:55,840 --> 00:45:58,760 Portanto, neste caso, eu sei que eu quero para escrever com três lugares, 1016 00:45:58,760 --> 00:46:02,690 com três lugares físicos para segure o que eu quero segurar. 1017 00:46:02,690 --> 00:46:04,510 É por isso que o número três está lá. 1018 00:46:04,510 --> 00:46:06,560 No entanto, se eu queria para realmente acessá-lo, 1019 00:46:06,560 --> 00:46:11,220 se eu queria dizer, printf número suporte de classe, em seguida, 1020 00:46:11,220 --> 00:46:14,560 você está indo para realmente colocar o índice física lá. 1021 00:46:14,560 --> 00:46:16,330 Sim, boa pergunta. 1022 00:46:16,330 --> 00:46:20,065 >> AUDIÊNCIA: Então é o físico índice deveria ser [inaudível]? 1023 00:46:20,065 --> 00:46:20,940 ANDI Peng: Eu sinto muito. 1024 00:46:20,940 --> 00:46:21,500 Você pode falar um pouco? 1025 00:46:21,500 --> 00:46:24,208 >> AUDIÊNCIA: Então é o índice físico [Inaudível] cada uma das caixas? 1026 00:46:24,208 --> 00:46:25,260 [Inaudível]? 1027 00:46:25,260 --> 00:46:26,040 >> ANDI Peng: Sim. 1028 00:46:26,040 --> 00:46:28,970 Então, eu vou voltar para a direita aqui. 1029 00:46:28,970 --> 00:46:31,120 Pense bem aqui. 1030 00:46:31,120 --> 00:46:32,820 Nós temos uma matriz de tamanho 3. 1031 00:46:32,820 --> 00:46:35,540 Há três lugares, como, espaços reservados físicos em aqui. 1032 00:46:35,540 --> 00:46:37,620 Mas eles são nomeados 0, 1 e 2. 1033 00:46:37,620 --> 00:46:40,700 Então, se eu quisesse acessá-los, a maneira que eu acessá-los 1034 00:46:40,700 --> 00:46:43,480 é printf de tudo o que eu queria aqui. 1035 00:46:43,480 --> 00:46:45,485 Você teria que imprimir o nome dele, 1036 00:46:45,485 --> 00:46:47,610 porque, então, o computador sabe, oh, eu preciso olhar 1037 00:46:47,610 --> 00:46:51,391 nessa matriz para o índice 0. 1038 00:46:51,391 --> 00:46:51,890 Sim. 1039 00:46:51,890 --> 00:46:53,306 Mas o tamanho não muda. 1040 00:46:53,306 --> 00:46:55,492 O tamanho é 3, independentemente de como você rotulá-los. 1041 00:46:55,492 --> 00:46:58,321 1042 00:46:58,321 --> 00:46:58,820 ESTÁ BEM. 1043 00:46:58,820 --> 00:47:01,387 Todo mundo é bom? 1044 00:47:01,387 --> 00:47:02,970 AUDIÊNCIA: Então, toda vez que eu [inaudível]? 1045 00:47:02,970 --> 00:47:06,357 1046 00:47:06,357 --> 00:47:06,940 ANDI Peng: OK. 1047 00:47:06,940 --> 00:47:13,270 Portanto, neste caso, nós realmente não chegar a ele neste momento em curso. 1048 00:47:13,270 --> 00:47:16,760 Mas saiba que um string-- como eu disse antes, uma string é essencialmente 1049 00:47:16,760 --> 00:47:18,440 um conjunto de caracteres. 1050 00:47:18,440 --> 00:47:21,430 Então, se eu criar uma matriz de cordas, eu meio que 1051 00:47:21,430 --> 00:47:24,430 tenho uma matriz de matriz de caracteres, certo? 1052 00:47:24,430 --> 00:47:27,720 >> Portanto, neste caso, porque eu tem uma matriz de strings, 1053 00:47:27,720 --> 00:47:31,340 se você fosse para introduzir uma palavra muito longa, que ainda ocupa apenas um espaço, 1054 00:47:31,340 --> 00:47:33,230 porque essa é a uma string. 1055 00:47:33,230 --> 00:47:37,492 Mas se você tivesse que pensar em os personagens dessa matriz, 1056 00:47:37,492 --> 00:47:40,450 em seguida, que está ocupando muito mais caracteres do que qualquer uma das outras palavras 1057 00:47:40,450 --> 00:47:41,372 estamos. 1058 00:47:41,372 --> 00:47:42,830 Não é realmente importante para agora. 1059 00:47:42,830 --> 00:47:44,921 Mas isso é apenas em geral como ele está trabalhando. 1060 00:47:44,921 --> 00:47:49,750 1061 00:47:49,750 --> 00:47:50,560 >> ESTÁ BEM. 1062 00:47:50,560 --> 00:47:55,840 Então, isso é algo que eu vou deixar você fazer muito ao longo do semestre. 1063 00:47:55,840 --> 00:47:57,500 Eu preciso descansar minha voz. 1064 00:47:57,500 --> 00:47:59,530 Vocês precisam para estimular a si mesmos. 1065 00:47:59,530 --> 00:48:02,300 Muitos de vocês provavelmente tenho que dormir agora. 1066 00:48:02,300 --> 00:48:05,960 Eu estou introduzindo problemas aleatórios onde nós, como uma classe ou você 1067 00:48:05,960 --> 00:48:09,480 com um parceiro próximo a você está indo para passar alguns minutos discutindo 1068 00:48:09,480 --> 00:48:14,980 sobre como nós iríamos sobre como resolver ou a criação de um programa como este. 1069 00:48:14,980 --> 00:48:17,100 >> Então, agora, queremos para criar um program-- 1070 00:48:17,100 --> 00:48:19,560 vamos chamá-lo upper.c-- que converte 1071 00:48:19,560 --> 00:48:24,787 uma palavra em minúsculas para uma classe alta maiúscula string--, desculpe. 1072 00:48:24,787 --> 00:48:26,370 Palavra em cordas, desculpe, é sinônimo. 1073 00:48:26,370 --> 00:48:28,370 Eu estou indo para alterá-los para significar a mesma coisa. 1074 00:48:28,370 --> 00:48:32,270 1075 00:48:32,270 --> 00:48:33,499 >> Sim. 1076 00:48:33,499 --> 00:48:34,540 Pegue um par de minutos. 1077 00:48:34,540 --> 00:48:37,130 Ele não tem de ser escrito em qualquer língua. 1078 00:48:37,130 --> 00:48:39,890 Apenas em código ou pseudocode logicamente como iríamos mesmo 1079 00:48:39,890 --> 00:48:42,083 vai fazer sobre tal problema. 1080 00:48:42,083 --> 00:48:42,583 Sim. 1081 00:48:42,583 --> 00:48:49,881 1082 00:48:49,881 --> 00:48:52,780 >> [SIDE CONVERSA] 1083 00:48:52,780 --> 00:49:18,680 1084 00:49:18,680 --> 00:49:22,130 >> Notei também que vocês can-- Eu meio que já ver o programa. 1085 00:49:22,130 --> 00:49:24,600 Eu acho que a minha falta de modo apresentador é um problema. 1086 00:49:24,600 --> 00:49:27,410 Mas está tudo bem. 1087 00:49:27,410 --> 00:49:30,410 >> [SIDE CONVERSA] 1088 00:49:30,410 --> 00:50:03,589 1089 00:50:03,589 --> 00:50:04,380 Sim, por favor, rapazes. 1090 00:50:04,380 --> 00:50:05,400 Venha pegar doces. 1091 00:50:05,400 --> 00:50:06,372 Venha pegar doces. 1092 00:50:06,372 --> 00:50:07,698 >> AUDIÊNCIA: Sim! 1093 00:50:07,698 --> 00:50:09,958 >> [SIDE CONVERSA] 1094 00:50:09,958 --> 00:50:16,101 1095 00:50:16,101 --> 00:50:18,100 ANDI Peng: Também, sim, Eu vou começar a atirar doces 1096 00:50:18,100 --> 00:50:20,280 em pessoas que não respondem a perguntas. 1097 00:50:20,280 --> 00:50:22,260 Portanto, você deve todas as perguntas de resposta. 1098 00:50:22,260 --> 00:50:24,895 Ou eu suponho que as pessoas que não responder a perguntas. 1099 00:50:24,895 --> 00:50:26,070 Sim, outra maneira ao redor. 1100 00:50:26,070 --> 00:50:28,570 >> [SIDE CONVERSA] 1101 00:50:28,570 --> 00:51:13,399 1102 00:51:13,399 --> 00:51:14,274 AUDIÊNCIA: [inaudível] 1103 00:51:14,274 --> 00:51:17,300 1104 00:51:17,300 --> 00:51:18,340 >> ANDI Peng: Sim. 1105 00:51:18,340 --> 00:51:19,340 Sim. 1106 00:51:19,340 --> 00:51:22,840 >> [SIDE CONVERSA] 1107 00:51:22,840 --> 00:51:40,700 1108 00:51:40,700 --> 00:51:41,590 >> Tudo bem, pessoal. 1109 00:51:41,590 --> 00:51:44,731 Tome-se, como, mais 10 segundos. 1110 00:51:44,731 --> 00:51:48,210 >> [SIDE CONVERSA] 1111 00:51:48,210 --> 00:52:10,600 1112 00:52:10,600 --> 00:52:11,750 >> OK pessoal. 1113 00:52:11,750 --> 00:52:14,920 Então, antes de começar a tentar realmente escrever fisicamente código, 1114 00:52:14,920 --> 00:52:20,650 um bom hábito para se desenvolver é que nós queremos primeiro tipo de razão 1115 00:52:20,650 --> 00:52:22,737 logicamente como iríamos fazê-lo. 1116 00:52:22,737 --> 00:52:24,570 Você quer ter a certeza, antes de você fisicamente 1117 00:52:24,570 --> 00:52:27,210 começar a tentar codificar em Mario, que você faça 1118 00:52:27,210 --> 00:52:28,870 Certifique-se de que você tem o seu pseudocódigo. 1119 00:52:28,870 --> 00:52:31,235 Que está levando-o através o que você precisa para criar assim 1120 00:52:31,235 --> 00:52:33,360 que, quando você fisicamente escrever o seu programa mais tarde, 1121 00:52:33,360 --> 00:52:36,640 você é mais capaz de detectar erros no seu código e coisas assim. 1122 00:52:36,640 --> 00:52:40,460 >> Então vamos apenas começar por-- em Inglês, em pseudocódigo, 1123 00:52:40,460 --> 00:52:43,320 será que alguém quer dar me uma explicação genérica 1124 00:52:43,320 --> 00:52:46,250 de como iria fazer isso? 1125 00:52:46,250 --> 00:52:48,102 Sim. 1126 00:52:48,102 --> 00:52:49,664 >> AUDIÊNCIA: [inaudível]. 1127 00:52:49,664 --> 00:52:50,830 ANDI Peng: Claro, não se preocupe. 1128 00:52:50,830 --> 00:52:57,233 AUDIÊNCIA: Você pode pedir para ele ou pedir alguém para obter corda 1-- sim, corda, 1129 00:52:57,233 --> 00:52:58,160 e depois-- 1130 00:52:58,160 --> 00:52:59,826 >> ANDI Peng: Sim, por isso este é um bom começo. 1131 00:52:59,826 --> 00:53:01,972 Eu vou começar a digitar, desculpe, como você fala. 1132 00:53:01,972 --> 00:53:02,471 Assim-- 1133 00:53:02,471 --> 00:53:05,698 >> AUDIÊNCIA: --o minúsculas números são mais elevados, certo? 1134 00:53:05,698 --> 00:53:08,519 Ou as letras minúsculas têm números elevados? 1135 00:53:08,519 --> 00:53:09,310 ANDI Peng: Exatamente. 1136 00:53:09,310 --> 00:53:16,156 AUDIÊNCIA: Então subtraímos 32 a partir de qualquer [inaudível]. 1137 00:53:16,156 --> 00:53:28,600 1138 00:53:28,600 --> 00:53:29,870 >> ANDI Peng: Grande. 1139 00:53:29,870 --> 00:53:35,020 Então nós meio que tem um sentido geral de como trabalhar sobre este problema. 1140 00:53:35,020 --> 00:53:40,060 Sabendo que nós meio que aprendeu a forma física que as cordas 1141 00:53:40,060 --> 00:53:43,320 são armazenadas na memória, o que você faz já 1142 00:53:43,320 --> 00:53:45,920 sei que você está indo provavelmente tem que escrever em seu código 1143 00:53:45,920 --> 00:53:48,288 a fim de percorrer a cadeia? 1144 00:53:48,288 --> 00:53:49,259 >> AUDIÊNCIA: Para loop. 1145 00:53:49,259 --> 00:53:50,550 ANDI Peng: Um laço for, exatamente. 1146 00:53:50,550 --> 00:53:56,540 1147 00:53:56,540 --> 00:53:57,220 Ótimo. 1148 00:53:57,220 --> 00:54:00,539 Então nós meio que temos um genérico pseudocódigo escrito 1149 00:54:00,539 --> 00:54:02,330 esse tipo de está dando você observa sobre como você 1150 00:54:02,330 --> 00:54:03,900 moveria sobre como resolver o problema. 1151 00:54:03,900 --> 00:54:06,150 Agora que você tem isso, você pode referenciá-lo para mais tarde 1152 00:54:06,150 --> 00:54:08,233 quando você está tentando realmente escrever seu código. 1153 00:54:08,233 --> 00:54:10,240 Assim, podemos realmente ir aqui. 1154 00:54:10,240 --> 00:54:25,130 E eu tenho uma função chamada upper.c-- lá ele é-- de apenas um modelo em branco 1155 00:54:25,130 --> 00:54:28,510 agora que vocês estão indo para me ajudar a descobrir sobre como escrever 1156 00:54:28,510 --> 00:54:30,430 esta linha de não code-- linha de código. 1157 00:54:30,430 --> 00:54:32,890 Vai ser várias linhas de código. 1158 00:54:32,890 --> 00:54:35,710 >> Ao iniciar qualquer tipo de pset em branco, o que é 1159 00:54:35,710 --> 00:54:37,418 a primeira coisa que eu preciso se lembrar de fazer? 1160 00:54:37,418 --> 00:54:39,290 >> AUDIÊNCIA: [inaudível]. 1161 00:54:39,290 --> 00:54:41,000 >> ANDI Peng: Grande Yep. 1162 00:54:41,000 --> 00:54:41,500 Incluir. 1163 00:54:41,500 --> 00:54:44,850 1164 00:54:44,850 --> 00:54:47,130 stdio.h. 1165 00:54:47,130 --> 00:54:49,640 Muitas vezes este é um dos Os erros mais fáceis pessoas 1166 00:54:49,640 --> 00:54:51,598 vai fazer quando eles estão escrevendo, é que eles vão 1167 00:54:51,598 --> 00:54:54,180 se esqueça de incluir um biblioteca importante que eles precisam. 1168 00:54:54,180 --> 00:54:57,689 Então, se é o horário de expediente e você fica tipo, Eu não sei por que meu código não funciona. 1169 00:54:57,689 --> 00:54:59,230 Você pode me dizer por que ele não está funcionando? 1170 00:54:59,230 --> 00:55:00,730 Vamos dizer que você # include? 1171 00:55:00,730 --> 00:55:02,520 Você deve # incluir isso. 1172 00:55:02,520 --> 00:55:03,270 ESTÁ BEM. 1173 00:55:03,270 --> 00:55:07,230 >> Então, nós temos o padrão de E / S aqui. 1174 00:55:07,230 --> 00:55:10,740 É que a única biblioteca nós vamos precisar aqui? 1175 00:55:10,740 --> 00:55:12,681 O que mais é que vamos fazer? 1176 00:55:12,681 --> 00:55:13,180 Desculpe. 1177 00:55:13,180 --> 00:55:14,562 Alguém acabou de gritar para fora? 1178 00:55:14,562 --> 00:55:15,666 >> AUDIÊNCIA: [inaudível]. 1179 00:55:15,666 --> 00:55:16,666 ANDI Peng: Lá você vai. 1180 00:55:16,666 --> 00:55:20,320 1181 00:55:20,320 --> 00:55:21,440 ESTÁ BEM. 1182 00:55:21,440 --> 00:55:26,070 E como faço para ir sobre como iniciar qualquer tipo da função, qualquer tipo de função principal 1183 00:55:26,070 --> 00:55:28,760 dentro do nosso programa? 1184 00:55:28,760 --> 00:55:30,020 Int principal. 1185 00:55:30,020 --> 00:55:34,531 1186 00:55:34,531 --> 00:55:35,030 ESTÁ BEM. 1187 00:55:35,030 --> 00:55:35,970 O que faço para colocar aqui dentro? 1188 00:55:35,970 --> 00:55:37,640 Qual é a primeira coisa que você quer fazer? 1189 00:55:37,640 --> 00:55:39,910 Se queremos obter um seqüência do usuário, 1190 00:55:39,910 --> 00:55:43,870 o que vamos ter para fazer nesta primeira linha? 1191 00:55:43,870 --> 00:55:46,120 Desculpe, vocês só sentem livre para falar e voz alta. 1192 00:55:46,120 --> 00:55:47,123 Apenas gritar o que quer. 1193 00:55:47,123 --> 00:55:48,772 >> AUDIÊNCIA: Peça ao usuário? 1194 00:55:48,772 --> 00:55:49,980 ANDI Peng: Como podemos fazer isso? 1195 00:55:49,980 --> 00:55:51,873 Ask-- sou eu que vou escrever "perguntar ao usuário"? 1196 00:55:51,873 --> 00:55:52,600 >> AUDIÊNCIA: Printf. 1197 00:55:52,600 --> 00:55:54,341 >> ANDI Peng: OK. 1198 00:55:54,341 --> 00:55:54,840 Printf. 1199 00:55:54,840 --> 00:55:57,372 O que eu quero para printf? 1200 00:55:57,372 --> 00:55:58,776 >> AUDIÊNCIA: Tipo em alguma coisa. 1201 00:55:58,776 --> 00:56:02,760 1202 00:56:02,760 --> 00:56:03,840 >> ANDI Peng: Como isso? 1203 00:56:03,840 --> 00:56:05,430 Gente, fingir que eu sou um computador. 1204 00:56:05,430 --> 00:56:08,475 Fisicamente me contar cada passo que eu preciso para digitar aqui? 1205 00:56:08,475 --> 00:56:09,600 Estou fazendo algo errado? 1206 00:56:09,600 --> 00:56:10,743 Devo ter escrito alguma coisa? 1207 00:56:10,743 --> 00:56:11,690 >> AUDIÊNCIA: Você precisa de aspas. 1208 00:56:11,690 --> 00:56:12,380 >> ANDI Peng: Eu preciso de citações? 1209 00:56:12,380 --> 00:56:12,880 ESTÁ BEM. 1210 00:56:12,880 --> 00:56:15,520 1211 00:56:15,520 --> 00:56:16,297 ESTÁ BEM. 1212 00:56:16,297 --> 00:56:17,698 >> AUDIÊNCIA: E, em seguida, nova linha. 1213 00:56:17,698 --> 00:56:21,434 1214 00:56:21,434 --> 00:56:22,465 Ponto e vírgula. 1215 00:56:22,465 --> 00:56:23,340 ANDI Peng: Semicolon? 1216 00:56:23,340 --> 00:56:24,060 ESTÁ BEM. 1217 00:56:24,060 --> 00:56:24,560 Boa. 1218 00:56:24,560 --> 00:56:27,060 >> AUDIÊNCIA: E talvez especificar que você o quer em minúsculas? 1219 00:56:27,060 --> 00:56:30,120 1220 00:56:30,120 --> 00:56:31,415 >> ANDI Peng: Grande. 1221 00:56:31,415 --> 00:56:33,540 Vocês riem de mim esquecendo de colocar um ponto e vírgula. 1222 00:56:33,540 --> 00:56:36,350 Eu garanto que você em algum lugar no decurso da presente classe, 1223 00:56:36,350 --> 00:56:38,260 você vai se esqueça de colocar um ponto e vírgula, e 1224 00:56:38,260 --> 00:56:41,116 levará três horas para descobrir por que seu código não está funcionando. 1225 00:56:41,116 --> 00:56:42,240 Já aconteceu com todos nós. 1226 00:56:42,240 --> 00:56:43,950 Ele provavelmente vai acontecer com você. 1227 00:56:43,950 --> 00:56:46,352 Obter um bom hábito de usar ponto e vírgula. 1228 00:56:46,352 --> 00:56:46,852 ESTÁ BEM. 1229 00:56:46,852 --> 00:56:49,010 >> AUDIÊNCIA: Você quer para fazer a barra invertida em? 1230 00:56:49,010 --> 00:56:50,398 >> ANDI Peng: Claro. 1231 00:56:50,398 --> 00:56:51,856 Você quer fazer a barra invertida em? 1232 00:56:51,856 --> 00:56:53,020 >> AUDIÊNCIA: Sim. 1233 00:56:53,020 --> 00:56:54,330 >> ANDI Peng: Grande. 1234 00:56:54,330 --> 00:56:54,830 ESTÁ BEM. 1235 00:56:54,830 --> 00:56:57,872 O que eu faço agora? 1236 00:56:57,872 --> 00:56:58,964 >> AUDIÊNCIA: Get string. 1237 00:56:58,964 --> 00:56:59,880 ANDI Peng: Obter string. 1238 00:56:59,880 --> 00:57:03,080 1239 00:57:03,080 --> 00:57:03,830 Então o que eu escreva? 1240 00:57:03,830 --> 00:57:04,233 Alguém? 1241 00:57:04,233 --> 00:57:05,040 >> AUDIÊNCIA: String s. 1242 00:57:05,040 --> 00:57:05,873 >> ANDI Peng: String s. 1243 00:57:05,873 --> 00:57:07,251 AUDIÊNCIA: GetString. 1244 00:57:07,251 --> 00:57:09,000 ANDI Peng: Alguém, você pode me dizer onde 1245 00:57:09,000 --> 00:57:12,000 esta função GetString está vindo? 1246 00:57:12,000 --> 00:57:13,660 >> AUDIÊNCIA: string.h. 1247 00:57:13,660 --> 00:57:15,256 >> ANDI Peng: string.h? 1248 00:57:15,256 --> 00:57:16,715 Você acha que é de string.h? 1249 00:57:16,715 --> 00:57:17,830 >> AUDIÊNCIA: [inaudível]. 1250 00:57:17,830 --> 00:57:18,830 >> ANDI Peng: Lá você vai. 1251 00:57:18,830 --> 00:57:21,280 É a partir CS50.h. 1252 00:57:21,280 --> 00:57:24,530 Se você está sempre confuso sobre onde um arquivo de biblioteca é um arquivo de cabeçalho ou seja, 1253 00:57:24,530 --> 00:57:28,450 google literalmente string.h, e eu vou te dizer 1254 00:57:28,450 --> 00:57:30,450 quais são todas as funções que estão em string.h. 1255 00:57:30,450 --> 00:57:31,340 ESTÁ BEM. 1256 00:57:31,340 --> 00:57:35,210 >> Portanto, agora que eu criei uma seqüência e eu tenho solicitar ao usuário que, 1257 00:57:35,210 --> 00:57:38,770 Eu armazenado em uma variável s nomeados, o que eu preciso fazer agora? 1258 00:57:38,770 --> 00:57:40,652 >> AUDIÊNCIA: Verifique se é em letras minúsculas. 1259 00:57:40,652 --> 00:57:41,360 ANDI Peng: Desculpe? 1260 00:57:41,360 --> 00:57:42,545 AUDIÊNCIA: Verifique se é em letras minúsculas. 1261 00:57:42,545 --> 00:57:44,045 ANDI Peng: Tudo bem, vamos fazer isso. 1262 00:57:44,045 --> 00:57:45,857 Como faço isso? 1263 00:57:45,857 --> 00:57:47,940 Na verdade, para os fins da classe agora, 1264 00:57:47,940 --> 00:57:50,330 nós apenas estamos indo para assumir que tudo 1265 00:57:50,330 --> 00:57:52,620 que a entrada que já está em minúsculas. 1266 00:57:52,620 --> 00:57:55,430 Se você queria verificar, você faria basta adicionar uma declaração condicional 1267 00:57:55,430 --> 00:57:59,640 que verifiquei, que percorreu cada elemento de matriz única 1268 00:57:59,640 --> 00:58:02,540 e verificado se ele é entre certos valores. 1269 00:58:02,540 --> 00:58:05,627 Eu esqueço o que o número de valores de são minúsculas. 1270 00:58:05,627 --> 00:58:07,210 Você pode procurá-lo na tabela ASCII. 1271 00:58:07,210 --> 00:58:08,800 Mas sim, isso é um ponto muito bom. 1272 00:58:08,800 --> 00:58:11,758 Mas agora, nós apenas estamos indo para assumir que todas as cordas que entrada 1273 00:58:11,758 --> 00:58:13,130 estão em minúsculas. 1274 00:58:13,130 --> 00:58:13,870 ESTÁ BEM. 1275 00:58:13,870 --> 00:58:18,069 >> Então, como eu iria sobre este problema vem depois? 1276 00:58:18,069 --> 00:58:18,860 AUDIÊNCIA: Para loop. 1277 00:58:18,860 --> 00:58:19,340 ANDI Peng: Para loop? 1278 00:58:19,340 --> 00:58:19,839 ESTÁ BEM. 1279 00:58:19,839 --> 00:58:20,847 Diga-me o que escrever. 1280 00:58:20,847 --> 00:58:25,230 >> AUDIÊNCIA: Para int i é igual a 0. 1281 00:58:25,230 --> 00:58:27,230 >> ANDI Peng: OK. 1282 00:58:27,230 --> 00:58:36,350 >> AUDIÊNCIA: Oh, na verdade, então você fazer uma vírgula e fazer n é igual a strlen. 1283 00:58:36,350 --> 00:58:38,940 >> ANDI Peng: coisa tão importante que eu acho que ela percebeu aqui 1284 00:58:38,940 --> 00:58:42,936 é que nós não têm a dizer int n a segunda vez que fez isso. 1285 00:58:42,936 --> 00:58:45,060 Só sei que em um de loop quando você está declarando: 1286 00:58:45,060 --> 00:58:47,934 você realmente não precisa do int de a segunda vez que você faz uma variável. 1287 00:58:47,934 --> 00:58:51,202 Você pode dizer n strlen. 1288 00:58:51,202 --> 00:58:52,620 >> AUDIÊNCIA: De s. 1289 00:58:52,620 --> 00:58:53,510 >> ANDI Peng: s. 1290 00:58:53,510 --> 00:58:54,706 ESTÁ BEM. 1291 00:58:54,706 --> 00:58:58,370 >> AUDIÊNCIA: Então um ponto e vírgula. 1292 00:58:58,370 --> 00:59:00,130 >> ANDI Peng: Claro. 1293 00:59:00,130 --> 00:59:04,050 >> AUDIÊNCIA: E então [inaudível] n. 1294 00:59:04,050 --> 00:59:07,480 1295 00:59:07,480 --> 00:59:09,460 Então i ++. 1296 00:59:09,460 --> 00:59:11,780 >> ANDI Peng: Grande. 1297 00:59:11,780 --> 00:59:12,280 Tudo certo. 1298 00:59:12,280 --> 00:59:14,690 O que queremos dentro deste loop for agora? 1299 00:59:14,690 --> 00:59:17,820 Lembre-se, se nós estamos indo para ser executado através uma corda e executado através de uma matriz, 1300 00:59:17,820 --> 00:59:19,287 queremos verificar as coisas nele. 1301 00:59:19,287 --> 00:59:20,370 O que vamos precisar? 1302 00:59:20,370 --> 00:59:23,070 1303 00:59:23,070 --> 00:59:26,900 Este é o tipo de parte complicada agora. 1304 00:59:26,900 --> 00:59:27,960 Alguém tem um palpite? 1305 00:59:27,960 --> 00:59:34,160 1306 00:59:34,160 --> 00:59:34,690 >> ESTÁ BEM. 1307 00:59:34,690 --> 00:59:37,830 Então, em primeiro lugar, como é que vamos mesmo acessar? 1308 00:59:37,830 --> 00:59:41,610 Como nós ainda primeiro cheque ou acessar um elemento na matriz? 1309 00:59:41,610 --> 00:59:42,920 Como fazemos isso? 1310 00:59:42,920 --> 00:59:47,120 Qual é a notação que usamos para fazer isso? 1311 00:59:47,120 --> 00:59:50,920 Qual é o nome desse array chamado? 1312 00:59:50,920 --> 00:59:52,400 É chamado de s, certo? 1313 00:59:52,400 --> 00:59:54,850 >> Lembre-se, qualquer seqüência de caracteres é sempre uma matriz. 1314 00:59:54,850 --> 00:59:58,210 Suporte de forma s i, certo? 1315 00:59:58,210 --> 01:00:01,360 Porque esse é o valor atual ou valor de índice que estamos verificando. 1316 01:00:01,360 --> 01:00:05,156 E nós estamos indo para definir que a igualdade de a-- queremos um valor minúsculas, certo? 1317 01:00:05,156 --> 01:00:07,530 Queremos transformar essa lower-- desculpe, queremos uma maiúscula. 1318 01:00:07,530 --> 01:00:10,014 Queremos transformar a minúscula valor em um maiúsculas. 1319 01:00:10,014 --> 01:00:11,805 E assim como-- Sinto muito, qual é o seu nome? 1320 01:00:11,805 --> 01:00:12,580 >> AUDIÊNCIA: Heidi. 1321 01:00:12,580 --> 01:00:12,940 >> ANDI Peng: Desculpe? 1322 01:00:12,940 --> 01:00:13,280 >> AUDIÊNCIA: Heidi. 1323 01:00:13,280 --> 01:00:13,988 >> ANDI Peng: Heidi. 1324 01:00:13,988 --> 01:00:15,850 Como disse Heidi Inicialmente, estamos, provavelmente, 1325 01:00:15,850 --> 01:00:20,330 vai precisar as-- estamos provavelmente vai ter que subtrair 1326 01:00:20,330 --> 01:00:22,630 32 a partir de qualquer charc que é, certo? 1327 01:00:22,630 --> 01:00:24,680 Porque em um ASCII tabela, a diferença 1328 01:00:24,680 --> 01:00:27,790 entre uma letra minúscula e uma letra maiúscula é de 32. 1329 01:00:27,790 --> 01:00:31,290 Então, quando nós estamos fazendo isso, estamos, provavelmente, vai querer subtrair 32, certo? 1330 01:00:31,290 --> 01:00:33,910 >> Então, nós vamos fazer s i. 1331 01:00:33,910 --> 01:00:37,590 1332 01:00:37,590 --> 01:00:41,200 Será que todo mundo entender por que eu fiz isso? 1333 01:00:41,200 --> 01:00:45,760 Porque agora, em nossa matriz, estamos verificando o índice 0, certo? 1334 01:00:45,760 --> 01:00:49,190 E no índice de 0 a corda, que é o primeiro caractere. 1335 01:00:49,190 --> 01:00:51,820 E esse personagem que vamos para supor que é minúscula. 1336 01:00:51,820 --> 01:00:55,980 Se queremos torná-lo maiúscula, nós tem que subtrair 32 a partir de seu valor, 1337 01:00:55,980 --> 01:00:58,620 porque em nosso ASCII mesa, é assim que nós obtê-lo 1338 01:00:58,620 --> 01:01:01,600 correspondente à próxima valor que torna maiúscula. 1339 01:01:01,600 --> 01:01:03,714 Será que todo mundo entende isso? 1340 01:01:03,714 --> 01:01:04,213 Sim. 1341 01:01:04,213 --> 01:01:06,530 >> AUDIÊNCIA: Poderia você também não minúsculas um minus-- 1342 01:01:06,530 --> 01:01:08,080 >> ANDI Peng: Sim, o que é realmente muito bom. 1343 01:01:08,080 --> 01:01:10,455 Eu vou voltar a isso pergunta depois fazemos isso. 1344 01:01:10,455 --> 01:01:11,060 Sim. 1345 01:01:11,060 --> 01:01:13,940 E então se eu quiser veja o que está acontecendo, 1346 01:01:13,940 --> 01:01:16,180 Eu provavelmente vou deseja imprimir, certo? 1347 01:01:16,180 --> 01:01:19,930 Alguém me diga o que Quero imprimir aqui. 1348 01:01:19,930 --> 01:01:29,160 >> AUDIÊNCIA: por cento printf c barra invertida [inaudível]. 1349 01:01:29,160 --> 01:01:33,570 Esse é o valor de [inaudível] s i. 1350 01:01:33,570 --> 01:01:34,614 >> ANDI Peng: s i, desculpe? 1351 01:01:34,614 --> 01:01:35,530 AUDIÊNCIA: [inaudível]. 1352 01:01:35,530 --> 01:01:38,550 1353 01:01:38,550 --> 01:01:39,550 ANDI Peng: Eu não sei. 1354 01:01:39,550 --> 01:01:40,600 O que você acha? 1355 01:01:40,600 --> 01:01:44,016 >> AUDIÊNCIA: Bem, eu wouldn't-- Eu acho que eu não teria bring-- 1356 01:01:44,016 --> 01:01:46,944 Eu iria levá-la para fora do dentro, porque [inaudível]. 1357 01:01:46,944 --> 01:01:49,726 1358 01:01:49,726 --> 01:01:51,392 ANDI Peng: Oh, você teria feito isso? 1359 01:01:51,392 --> 01:01:53,867 AUDIÊNCIA: É. 1360 01:01:53,867 --> 01:01:56,700 ANDI Peng: Vamos deixar do jeito que é, e eu vou explicar porque mais tarde. 1361 01:01:56,700 --> 01:01:58,533 Lembre-se, mesmo quando você tem um local reservado, 1362 01:01:58,533 --> 01:02:00,701 você quer colocar parênteses em torno dele. 1363 01:02:00,701 --> 01:02:01,200 Tudo certo. 1364 01:02:01,200 --> 01:02:04,810 Portanto, este deve ser uma função sólida aqui. 1365 01:02:04,810 --> 01:02:06,370 Vamos executá-lo e ver se ele compila. 1366 01:02:06,370 --> 01:02:08,750 Faça superior. 1367 01:02:08,750 --> 01:02:09,250 Uh oh. 1368 01:02:09,250 --> 01:02:12,030 1369 01:02:12,030 --> 01:02:13,340 Isso não parece muito bom. 1370 01:02:13,340 --> 01:02:14,507 Por que isto está acontecendo? 1371 01:02:14,507 --> 01:02:17,340 Como acontece com qualquer erro, você quer ir para trás e para começar com o primeiro, 1372 01:02:17,340 --> 01:02:20,630 porque normalmente provoca um erro lotes de outros erros depois. 1373 01:02:20,630 --> 01:02:26,700 Aqui vemos upper.c: 18: 25, que diz me neste programa chamado upper.c, 1374 01:02:26,700 --> 01:02:33,800 na linha 18, implicitamente declarando erro biblioteca de funções com o tipo strlen 1375 01:02:33,800 --> 01:02:36,330 blah unassigned--, eu não sei o que está acontecendo depois disso. 1376 01:02:36,330 --> 01:02:39,990 >> Tudo o que está me dizendo agora é que algo está acontecendo a strlen. 1377 01:02:39,990 --> 01:02:43,520 E o computador está confusa, porque é como, eu não sei o que strlen é? 1378 01:02:43,520 --> 01:02:45,520 O que significa que, provavelmente, dizer-lhe que está faltando? 1379 01:02:45,520 --> 01:02:46,490 >> AUDIÊNCIA: Você está perdendo [inaudível]. 1380 01:02:46,490 --> 01:02:47,630 >> ANDI Peng: Você está certo. 1381 01:02:47,630 --> 01:02:49,510 Exatamente. 1382 01:02:49,510 --> 01:02:52,140 Portanto, este é o lugar onde é importante certificar-se 1383 01:02:52,140 --> 01:02:56,970 que todas as funções que você usa no seu código está tendo o cabeçalho correto 1384 01:02:56,970 --> 01:02:59,660 arquivo para a biblioteca, ou então você vai obter lotes de erros 1385 01:02:59,660 --> 01:03:01,150 e seu código não vai para saber o que está acontecendo. 1386 01:03:01,150 --> 01:03:03,050 Então, nós estamos indo para incluir string.h aqui. 1387 01:03:03,050 --> 01:03:06,270 >> Agora, quando tenta compilar superior. 1388 01:03:06,270 --> 01:03:08,410 Compilar corretamente. 1389 01:03:08,410 --> 01:03:09,960 Vamos executar este programa. 1390 01:03:09,960 --> 01:03:12,000 Então digitar algo em letras minúsculas. 1391 01:03:12,000 --> 01:03:14,920 O que vocês querem escrever? 1392 01:03:14,920 --> 01:03:16,546 Grito para fora algo. 1393 01:03:16,546 --> 01:03:17,920 Tudo bem, Charly acabou de entrar. 1394 01:03:17,920 --> 01:03:18,990 Nós vamos digitar o nome de Charly. 1395 01:03:18,990 --> 01:03:21,670 1396 01:03:21,670 --> 01:03:22,840 >> Charly em letras minúsculas. 1397 01:03:22,840 --> 01:03:27,742 E espero que, esperançosamente, este é vai gritar e cuspir 1398 01:03:27,742 --> 01:03:28,575 Charly em letras maiúsculas. 1399 01:03:28,575 --> 01:03:30,830 Uhul! 1400 01:03:30,830 --> 01:03:33,430 que todo mundo entender como Eu fui sobre como resolver isso? 1401 01:03:33,430 --> 01:03:36,190 A maneira que eu puder manipular usando números inteiros 1402 01:03:36,190 --> 01:03:39,410 algo que para resolver Eu quero fazer em cordas, 1403 01:03:39,410 --> 01:03:44,390 porque os caracteres e inteiros pode ser referenciado da mesma forma, porque 1404 01:03:44,390 --> 01:03:45,540 de mapeamento ASCII. 1405 01:03:45,540 --> 01:03:52,890 >> Então, para voltar ao seu ponto, se eu queria colocar aqui em vez de 32 1406 01:03:52,890 --> 01:03:58,959 A maiúsculo menos minúsculas apenas como um que, que funcionaria igualmente bem, 1407 01:03:58,959 --> 01:04:01,750 porque isso é simplesmente o diferença entre estes dois valores. 1408 01:04:01,750 --> 01:04:09,570 Se eu quiser fazer esta charly novamente--. 1409 01:04:09,570 --> 01:04:10,320 Ah não. 1410 01:04:10,320 --> 01:04:11,820 Eu acho que nós fomos pelo caminho errado, certo? 1411 01:04:11,820 --> 01:04:13,260 >> AUDIÊNCIA: [inaudível] um minúsculas. 1412 01:04:13,260 --> 01:04:14,260 >> ANDI Peng: Lá você vai. 1413 01:04:14,260 --> 01:04:22,380 1414 01:04:22,380 --> 01:04:22,880 Sim. 1415 01:04:22,880 --> 01:04:24,920 E fora cospe charly. 1416 01:04:24,920 --> 01:04:28,020 Portanto, tenha cuidado quando você está subtraindo valores 1417 01:04:28,020 --> 01:04:30,400 para lembrar qual é maior do que o outro. 1418 01:04:30,400 --> 01:04:35,220 Por exemplo, aqui eu esqueci que é, na verdade, uma minúscula 1419 01:04:35,220 --> 01:04:38,540 maior do que A. maiúsculas Então, quando eu tentou subtrair-los para o outro lado 1420 01:04:38,540 --> 01:04:40,600 ao redor, eu tenho 32 negativo. 1421 01:04:40,600 --> 01:04:42,800 E meu computador era como, Eu não sei o que é. 1422 01:04:42,800 --> 01:04:45,810 É probabilidade apenas algumas aleatória valor que não é muito boa. 1423 01:04:45,810 --> 01:04:48,760 E assim se certificar de que você é subtraindo no comprimento correcto 1424 01:04:48,760 --> 01:04:52,831 para encontrar o personagem que você deseja. 1425 01:04:52,831 --> 01:04:53,330 ESTÁ BEM. 1426 01:04:53,330 --> 01:04:58,550 Alguém está confuso sobre como nós foi sobre como escrever esta função? 1427 01:04:58,550 --> 01:04:59,180 ESTÁ BEM. 1428 01:04:59,180 --> 01:05:04,830 Então, na verdade, uma função já existe na biblioteca chamada ctype.h. 1429 01:05:04,830 --> 01:05:06,417 Chamado ctype.h da biblioteca. 1430 01:05:06,417 --> 01:05:08,500 Esta função é, na verdade já escrito para você. 1431 01:05:08,500 --> 01:05:10,820 Chama-se a superior. 1432 01:05:10,820 --> 01:05:13,027 >> E assim, para fins de este pset, você está indo 1433 01:05:13,027 --> 01:05:15,860 para descobrir que você realmente quer usar muitas das funções contidas 1434 01:05:15,860 --> 01:05:17,390 dentro da biblioteca ctype. 1435 01:05:17,390 --> 01:05:21,040 Para cima, para baixar, é superior, é lower-- aqueles são todos funções 1436 01:05:21,040 --> 01:05:24,914 que você vai ser capaz de usar muito, muito rapidamente em seu próprio código que 1437 01:05:24,914 --> 01:05:26,080 faz exatamente o que isso faz. 1438 01:05:26,080 --> 01:05:28,941 Nós escrevemos para fora como converter uma cadeia para maiúsculas. 1439 01:05:28,941 --> 01:05:31,440 Mas este é realmente o código que alguém tem escrito 1440 01:05:31,440 --> 01:05:33,800 e que você pode acessar através de uma função diferente. 1441 01:05:33,800 --> 01:05:34,300 Sim? 1442 01:05:34,300 --> 01:05:39,570 >> AUDIÊNCIA: Então você acabou de copiar um está lá e fazê-lo para cada carta? 1443 01:05:39,570 --> 01:05:42,070 >> ANDI Peng: Sim, porque eu não fazer se preocupam com os valores de um. 1444 01:05:42,070 --> 01:05:44,540 Eu só me importo que a diferença entre eles é de 32, certo? 1445 01:05:44,540 --> 01:05:48,210 A diferença entre letras minúsculas b maiúsculas e B também é 32. 1446 01:05:48,210 --> 01:05:50,860 E a diferença entre C e maiúsculas C é sempre 32. 1447 01:05:50,860 --> 01:05:53,235 >> Eu só tenho que se preocupam com o diferença entre os dois, 1448 01:05:53,235 --> 01:05:56,666 porque todas as cartas seguem o mesmo padrão, certo? 1449 01:05:56,666 --> 01:05:58,540 Se eu tiver a diferença entre um deles, 1450 01:05:58,540 --> 01:06:01,050 Eu sei o que a diferença entre todos eles é. 1451 01:06:01,050 --> 01:06:01,740 Boa pergunta. 1452 01:06:01,740 --> 01:06:04,090 Sim. 1453 01:06:04,090 --> 01:06:06,660 Todo mundo é bom? 1454 01:06:06,660 --> 01:06:09,080 ESTÁ BEM. 1455 01:06:09,080 --> 01:06:09,580 Oop. 1456 01:06:09,580 --> 01:06:14,380 1457 01:06:14,380 --> 01:06:15,270 >> ESTÁ BEM. 1458 01:06:15,270 --> 01:06:20,310 Então, um outro conceito que é vai ser muito útil como você 1459 01:06:20,310 --> 01:06:22,570 continuar a desenvolver seu código é essa idéia 1460 01:06:22,570 --> 01:06:25,430 da criação de funções ou abstração. 1461 01:06:25,430 --> 01:06:28,479 Então, agora, todos nós temos tomado álgebra. 1462 01:06:28,479 --> 01:06:31,770 Em álgebra, você é ensinado que não há esta coisa maravilhosa chamada uma função 1463 01:06:31,770 --> 01:06:35,300 máquina, onde se entrada de um tipo de número, 1464 01:06:35,300 --> 01:06:38,720 ele é executado através desta função maravilhosa e fora aparece uma saída diferente, certo? 1465 01:06:38,720 --> 01:06:42,220 No código, a mesma coisa acontece em qualquer tipo de função. 1466 01:06:42,220 --> 01:06:48,230 >> Para que eu pudesse fisicamente escrever no meu corpo do meu código 1467 01:06:48,230 --> 01:06:52,357 uma declaração principal que realmente faz qualquer que seja o corpo do código está fazendo. 1468 01:06:52,357 --> 01:06:54,940 Mas fora isso, eu também posso escrever muitas funções diferentes 1469 01:06:54,940 --> 01:06:56,320 que fazer muitas coisas diferentes. 1470 01:06:56,320 --> 01:06:58,570 Por exemplo, nós já começou a usar alguns deles. 1471 01:06:58,570 --> 01:07:00,610 Que é um Printf-- função que outra pessoa 1472 01:07:00,610 --> 01:07:02,870 já escrito que podemos chamar no nosso código. 1473 01:07:02,870 --> 01:07:05,410 Para upper-- neste caso, upper-- é outra função 1474 01:07:05,410 --> 01:07:07,330 temos escrito que nós pode chamar no nosso código. 1475 01:07:07,330 --> 01:07:09,520 E então eu acho que por isso que fazer temos até funções? 1476 01:07:09,520 --> 01:07:12,100 Por que nós não apenas plop-lo todos na mesma linha de código? 1477 01:07:12,100 --> 01:07:13,730 Isso torna mais fácil para todos. 1478 01:07:13,730 --> 01:07:19,200 >> Bem, o raciocínio por trás disso é, antes de tudo, da organização. 1479 01:07:19,200 --> 01:07:21,880 É realmente irritante ir por meio de código de alguém 1480 01:07:21,880 --> 01:07:25,110 e uma função como printf. 1481 01:07:25,110 --> 01:07:28,570 Se vocês realmente sabia o que o função printf implicou a escrever, 1482 01:07:28,570 --> 01:07:30,530 é, tipo, 1.000 linhas de código. 1483 01:07:30,530 --> 01:07:32,357 >> Se cada vez que eu queria para printf alguma coisa, 1484 01:07:32,357 --> 01:07:35,440 Eu tinha que escrever 1,000 linhas de código, que seria muito chato de ler, 1485 01:07:35,440 --> 01:07:36,290 certo? 1486 01:07:36,290 --> 01:07:38,860 É por isso que nós temos apenas criou esta função abstrato 1487 01:07:38,860 --> 01:07:41,670 que já temos alguém outra pessoa escreveu em outro lugar. 1488 01:07:41,670 --> 01:07:44,920 E cada vez que precisar usá-lo em nosso código, nós apenas temos que dizer printf. 1489 01:07:44,920 --> 01:07:48,070 E que é capaz de utilizar a função alguém tenha escrito no nosso código. 1490 01:07:48,070 --> 01:07:51,020 Ela torna mais fácil organizacionalmente de ler o código. 1491 01:07:51,020 --> 01:07:53,460 >> Em segundo lugar, é a simplificação. 1492 01:07:53,460 --> 01:07:56,750 Ele simplifica os passos que temos a tomar para resolver o nosso problema. 1493 01:07:56,750 --> 01:07:59,300 Printf, funções como printf, funções como a superior 1494 01:07:59,300 --> 01:08:03,560 são todas as coisas que nos permitem simplificar o nosso código para baixo por isso é mais fácil. 1495 01:08:03,560 --> 01:08:05,830 Ea última coisa é a capacidade de reutilização. 1496 01:08:05,830 --> 01:08:08,710 >> Assim, o fato de que temos uma função chamada printf 1497 01:08:08,710 --> 01:08:11,990 que podemos chamar de muitos diferente vezes e permite que seja reutilizável. 1498 01:08:11,990 --> 01:08:14,980 Se eu fosse escrever printf, Eu só escrevê-lo uma vez. 1499 01:08:14,980 --> 01:08:16,439 Ele só existe na medida em que um só lugar. 1500 01:08:16,439 --> 01:08:19,890 Se eu quisesse fazer isso de novo, eu faria tem que copiar e colar tudo isso 1501 01:08:19,890 --> 01:08:21,760 em minha segunda linha de código. 1502 01:08:21,760 --> 01:08:24,880 É por isso que se criarmos uma função que existe fora do nosso principal, 1503 01:08:24,880 --> 01:08:26,880 podemos simplesmente invocar -lo e reutilizá-la sempre 1504 01:08:26,880 --> 01:08:29,604 precisamos de modo que é muito mais fácil para nós, como programas de escrever. 1505 01:08:29,604 --> 01:08:32,220 1506 01:08:32,220 --> 01:08:35,549 >> Assim, a maneira que nós realmente escrever uma função é muito semelhante, certo? 1507 01:08:35,549 --> 01:08:37,590 Este é o tipo do primeiro caso em que nós vamos 1508 01:08:37,590 --> 01:08:42,830 ver um take função em um estilo diferente do nosso void main int. 1509 01:08:42,830 --> 01:08:46,779 Neste caso, se eu quisesse escrever uma função chamada q, certo? 1510 01:08:46,779 --> 01:08:49,370 >> E o valor int aqui é tudo a dizer-me, 1511 01:08:49,370 --> 01:08:51,649 o que eu quero isso funcionar para voltar para mim? 1512 01:08:51,649 --> 01:08:54,484 Se eu quiser cubo um número inteiro, Vou deseja introduzir. 1513 01:08:54,484 --> 01:08:55,525 Estes são os parâmetros. 1514 01:08:55,525 --> 01:08:58,490 Eu estou indo para entradas um valor do tipo int. 1515 01:08:58,490 --> 01:09:01,300 E eu vou voltar outro tipo de valor int. 1516 01:09:01,300 --> 01:09:03,050 E aqui, como você pode ver, tudo o que eu estou fazendo 1517 01:09:03,050 --> 01:09:07,300 é cubing qualquer que seja a minha entrada é como a minha saída e devolvê-lo. 1518 01:09:07,300 --> 01:09:10,790 >> Então, tudo isso faz é função toma algum tipo de número inteiro. 1519 01:09:10,790 --> 01:09:14,979 Ele multiplica por si só duas vezes de modo que em cubos efeito. 1520 01:09:14,979 --> 01:09:17,729 E, em seguida, ele retorna o que quer que a saída é. 1521 01:09:17,729 --> 01:09:20,540 Portanto, neste caso, é duas linhas de código que tínhamos de escrever extra. 1522 01:09:20,540 --> 01:09:22,880 Mas se nós queria chamar sobre isso várias vezes, 1523 01:09:22,880 --> 01:09:26,210 é muito mais fácil de escrever que um linha aqui que é no cubo de 1524 01:09:26,210 --> 01:09:28,830 tem que passar por várias vezes. 1525 01:09:28,830 --> 01:09:34,180 >> Assim, a maneira que, essencialmente, qualquer formatação para qualquer tipo de função 1526 01:09:34,180 --> 01:09:36,420 vai existir é como aqui. 1527 01:09:36,420 --> 01:09:38,659 Então nós temos o nome da função. 1528 01:09:38,659 --> 01:09:39,950 Neste caso, ele é chamado cubo. 1529 01:09:39,950 --> 01:09:42,033 E nós nomeá-lo porque cubo é fácil de lembrar. 1530 01:09:42,033 --> 01:09:44,220 Você pode nomeá-lo quadrados e ele pode realmente ser em cubos. 1531 01:09:44,220 --> 01:09:45,500 Não importa. 1532 01:09:45,500 --> 01:09:48,020 Apenas um nome que você está atribuindo a sua função. 1533 01:09:48,020 --> 01:09:51,660 >> Este aqui, int, é a tipo do parâmetro que você precisa. 1534 01:09:51,660 --> 01:09:54,149 Então, o que faz esta função precisa, a fim de operar? 1535 01:09:54,149 --> 01:09:55,990 Bem, ele precisa de uma entrada. 1536 01:09:55,990 --> 01:09:56,704 Eu nomeei-entrada. 1537 01:09:56,704 --> 01:09:58,120 Você pode nomeá-lo o que quiser. 1538 01:09:58,120 --> 01:10:00,500 Mas eu preciso de algo do tipo int. 1539 01:10:00,500 --> 01:10:03,730 Ele vai realmente executar o que está dentro de aqui, 1540 01:10:03,730 --> 01:10:04,990 o corpo da função. 1541 01:10:04,990 --> 01:10:07,847 E, em seguida, o tipo de retorno aqui mesmo, este int-- 1542 01:10:07,847 --> 01:10:09,680 tudo isso está me dizendo é que esta função é 1543 01:10:09,680 --> 01:10:11,250 vai voltar para mim em int. 1544 01:10:11,250 --> 01:10:14,460 Por isso, vai levar em um int, e ele vai lhe dar de volta um int. 1545 01:10:14,460 --> 01:10:17,750 Será que todo mundo entender como o formatação desse tipo funciona? 1546 01:10:17,750 --> 01:10:18,250 Legal. 1547 01:10:18,250 --> 01:10:24,690 1548 01:10:24,690 --> 01:10:25,740 >> ESTÁ BEM. 1549 01:10:25,740 --> 01:10:31,770 Portanto, não se preocupe se isso parece um pouco direito abstrato agora. 1550 01:10:31,770 --> 01:10:33,450 Isso é algo que nós vamos falar sobre. 1551 01:10:33,450 --> 01:10:36,310 Vamos mergulhar no mais profundo mais tarde no curso. 1552 01:10:36,310 --> 01:10:41,170 A maneira que qualquer tipo de nível superior abstração destas coisas trabalho 1553 01:10:41,170 --> 01:10:43,530 é que, em memória, em seu computador, tudo 1554 01:10:43,530 --> 01:10:47,660 é armazenado neste tipo de pilha, eu vou dizer. 1555 01:10:47,660 --> 01:10:49,070 >> Então, lá em cima no topo. 1556 01:10:49,070 --> 01:10:50,861 Eu não sei se você vocês podem ver que bem. 1557 01:10:50,861 --> 01:10:52,590 Vou tentar fazer zoom. 1558 01:10:52,590 --> 01:10:55,111 Aqui, na parte superior, nós ter o texto físico 1559 01:10:55,111 --> 01:10:57,860 do que o computador é interpreting-- todos os zeros e uns que 1560 01:10:57,860 --> 01:10:59,540 existe dentro do nosso computador. 1561 01:10:59,540 --> 01:11:03,390 E então temos o inicializado dados de dados e não inicializadas, 1562 01:11:03,390 --> 01:11:05,340 o que chamamos de variáveis ​​globais. 1563 01:11:05,340 --> 01:11:08,200 Assim, as variáveis ​​que existem em todos os programas 1564 01:11:08,200 --> 01:11:11,815 e em toda a sua totalidade, essencialmente, código. 1565 01:11:11,815 --> 01:11:13,940 Não se preocupe se vocês são tipo de claro a este respeito. 1566 01:11:13,940 --> 01:11:16,060 Ele realmente não importa agora. 1567 01:11:16,060 --> 01:11:18,680 >> E então nós temos o que é chamado de uma pilha de uma pilha. 1568 01:11:18,680 --> 01:11:21,140 Pense em uma pilha literalmente como apenas como uma pilha de coisas, 1569 01:11:21,140 --> 01:11:23,098 uma pilha de diferente coisas que estão sendo empurrados em cima 1570 01:11:23,098 --> 01:11:27,870 um do outro que armazenar os diversos variáveis ​​e sintaxe em seu código. 1571 01:11:27,870 --> 01:11:31,460 E, em seguida, aqui na parte inferior, nós temos as variáveis ​​de ambiente 1572 01:11:31,460 --> 01:11:35,480 do que você está executando dentro apenas a sua pequena linha de código. 1573 01:11:35,480 --> 01:11:40,510 >> E nós apenas estamos indo para zoom no da parte real da pilha. 1574 01:11:40,510 --> 01:11:43,880 Então, aqui mesmo, se fôssemos para aumentar em apenas nesta área da pilha, 1575 01:11:43,880 --> 01:11:45,140 este é o que parece. 1576 01:11:45,140 --> 01:11:48,590 E isso é realmente muito importante quando vocês falam sobre funções, 1577 01:11:48,590 --> 01:11:52,330 porque aviso de que o memória do seu computador 1578 01:11:52,330 --> 01:11:55,600 é armazenar as variáveis e as funções 1579 01:11:55,600 --> 01:11:58,790 e os parâmetros de ambos seu função e suas principais variáveis 1580 01:11:58,790 --> 01:12:00,190 em lugares diferentes. 1581 01:12:00,190 --> 01:12:03,390 >> Então, agora, a principal é a função real 1582 01:12:03,390 --> 01:12:04,780 que você está executando em um código. 1583 01:12:04,780 --> 01:12:08,050 Você seus parâmetros armazenados aqui e suas variáveis ​​locais armazenados aqui. 1584 01:12:08,050 --> 01:12:12,270 Variável local significa apenas que qualquer variável que existe apenas dentro dessa função. 1585 01:12:12,270 --> 01:12:15,610 E em cima disso, você tem esse função separada chamada cubo. 1586 01:12:15,610 --> 01:12:18,240 Você tem que é parâmetros bem como os moradores locais. 1587 01:12:18,240 --> 01:12:21,540 >> E a razão que você pode veja aqui é que o que 1588 01:12:21,540 --> 01:12:25,030 acontece quando cubo leva numa valor de sua função principal 1589 01:12:25,030 --> 01:12:27,640 é que, na verdade, ele está copiando que acabou. 1590 01:12:27,640 --> 01:12:31,470 Então, se eu queria cubo 2 e 8 de regresso, que 2 1591 01:12:31,470 --> 01:12:33,730 na verdade, é introduzido como um parâmetro e está 1592 01:12:33,730 --> 01:12:37,690 copiado de forma que você tem isso já existente em dois lugares diferentes na memória. 1593 01:12:37,690 --> 01:12:40,520 E você tem que ter muito cuidado em lembrança de que um daqueles 1594 01:12:40,520 --> 01:12:42,520 na verdade você está manipulando. 1595 01:12:42,520 --> 01:12:47,170 E um exemplo do que aconteceu que seria muito, muito ruim 1596 01:12:47,170 --> 01:12:48,050 existe aqui. 1597 01:12:48,050 --> 01:12:50,760 1598 01:12:50,760 --> 01:12:58,650 >> Então aqui, eu tenho, em teoria, um programa aqui, uma função principal 1599 01:12:58,650 --> 01:13:02,180 que eu estou declarando um int x é igual a 1. 1600 01:13:02,180 --> 01:13:04,505 Eu estou declarando outro int y é igual a 2. 1601 01:13:04,505 --> 01:13:06,380 E então eu estou funcionando- através desta função 1602 01:13:06,380 --> 01:13:09,647 chamado swap, onde eu supor que ele está trocando os dois valores. 1603 01:13:09,647 --> 01:13:11,480 E então eu vou imprimi-los, certo? 1604 01:13:11,480 --> 01:13:13,220 Isso é o que eu quero que este programa para fazer. 1605 01:13:13,220 --> 01:13:15,180 >> Então, vamos descer e dar uma olhada. 1606 01:13:15,180 --> 01:13:18,200 Então, se eu realmente escrever um diferente função, como você pode ver, 1607 01:13:18,200 --> 01:13:19,750 nós temos nossa principal função aqui. 1608 01:13:19,750 --> 01:13:22,860 E então temos o nosso segunda função aqui. 1609 01:13:22,860 --> 01:13:24,520 Void swap. 1610 01:13:24,520 --> 01:13:27,090 Vazio significa apenas que é não vai retornar nada. 1611 01:13:27,090 --> 01:13:28,930 O nome da função é chamado swap, e é 1612 01:13:28,930 --> 01:13:33,730 indo a duas variáveis ​​de entrada, e um int int b, a partir de sua função [inaudível]. 1613 01:13:33,730 --> 01:13:39,010 >> Então, basicamente aqui, nós somos X e Y que passa para esta função. 1614 01:13:39,010 --> 01:13:40,760 E se fôssemos criar isto-- assim que nós queremos 1615 01:13:40,760 --> 01:13:42,420 para criar um valor temporário, certo? 1616 01:13:42,420 --> 01:13:43,930 Vamos atribuir isso a um. 1617 01:13:43,930 --> 01:13:45,388 E então um vai agora igual b. 1618 01:13:45,388 --> 01:13:47,660 E b vai estar de volta onde o valor temporário foi, 1619 01:13:47,660 --> 01:13:51,070 que é um, porque quando você quiser trocar coisas, 1620 01:13:51,070 --> 01:13:52,320 você não pode simplesmente gostar trocá-los. 1621 01:13:52,320 --> 01:13:54,360 >> Você tem que manter um fora para que ele se lembra 1622 01:13:54,360 --> 01:13:56,485 o que é isso, porque uma vez você trocar um, você esquece 1623 01:13:56,485 --> 01:13:58,200 o que esse valor original, certo? 1624 01:13:58,200 --> 01:14:00,990 Portanto, em teoria, este programa deve funcionar, certo? 1625 01:14:00,990 --> 01:14:03,630 Se eu quisesse trocar o dois, eles devem trocar. 1626 01:14:03,630 --> 01:14:05,490 Então, vamos executá-lo e ver se funciona. 1627 01:14:05,490 --> 01:14:11,130 1628 01:14:11,130 --> 01:14:16,940 >> Então, como vocês podem ver, x Era uma vez um e y era uma vez dois. 1629 01:14:16,940 --> 01:14:21,475 E se eu imprimi-lo, X ainda é 1 e y é 2. 1630 01:14:21,475 --> 01:14:25,970 Hmm, este programa não parece ser funcionando da maneira que eu quero que ele funcione. 1631 01:14:25,970 --> 01:14:29,950 Alguém quer tomar um tiro em adivinhando porque isso estava acontecendo? 1632 01:14:29,950 --> 01:14:34,430 Tem a ver com a forma como que as coisas são diferentes 1633 01:14:34,430 --> 01:14:38,172 armazenados em locais diferentes na memória. 1634 01:14:38,172 --> 01:14:39,377 >> ESTÁ BEM. 1635 01:14:39,377 --> 01:14:41,960 Então vocês não têm que se preocupar muito sobre isso agora. 1636 01:14:41,960 --> 01:14:46,610 Mas sei que o cubo dos locais variáveis ​​foram a e b, 1637 01:14:46,610 --> 01:14:49,230 porque aqui na nossa função, temos declarou a e b 1638 01:14:49,230 --> 01:14:53,570 como as variáveis ​​que existem dentro do cubo, que a função. 1639 01:14:53,570 --> 01:14:59,490 Mas como você pode ver, os parâmetros que ele está tomando em estavam sendo armazenados aqui. 1640 01:14:59,490 --> 01:15:01,370 Mas não estávamos realmente retornando nada. 1641 01:15:01,370 --> 01:15:03,120 Nós não estávamos realmente mudando xe y. 1642 01:15:03,120 --> 01:15:04,440 Nós estávamos apenas mudando a e b. 1643 01:15:04,440 --> 01:15:08,340 >> Nós tinha copiado x e y em algo chamado a e b. 1644 01:15:08,340 --> 01:15:11,092 Mas nós nunca realmente manipulado x e y si. 1645 01:15:11,092 --> 01:15:12,800 Vocês estão vendo como isso está acontecendo? 1646 01:15:12,800 --> 01:15:16,140 É que nós simplesmente copiou acabou, mas nós não, na verdade, mantido 1647 01:15:16,140 --> 01:15:18,030 o controle de onde eles estavam na memória. 1648 01:15:18,030 --> 01:15:20,127 >> E agora o computador está procurando, oh, eu tenho 1649 01:15:20,127 --> 01:15:21,960 executar essa coisa meio esta função encantadora. 1650 01:15:21,960 --> 01:15:23,690 Mas, x e y são ainda x e y. 1651 01:15:23,690 --> 01:15:26,240 Nada aconteceu com -los por causa do fato 1652 01:15:26,240 --> 01:15:28,340 que esses parâmetros e variáveis ​​locais 1653 01:15:28,340 --> 01:15:30,150 são armazenados em uma diferente colocar na memória. 1654 01:15:30,150 --> 01:15:32,030 E este é um de nível superior conceito que vamos 1655 01:15:32,030 --> 01:15:34,300 começar a ver mais tarde no curso. 1656 01:15:34,300 --> 01:15:36,950 Mas só sei que este é um problema que pode acontecer 1657 01:15:36,950 --> 01:15:41,400 e que nós vamos descobrir maneiras de como lidar com isso mais tarde no curso. 1658 01:15:41,400 --> 01:15:41,900 ESTÁ BEM. 1659 01:15:41,900 --> 01:15:47,750 1660 01:15:47,750 --> 01:15:48,250 Tudo certo. 1661 01:15:48,250 --> 01:15:51,780 Assim, o último conceito que estamos realmente vai cobrir 1662 01:15:51,780 --> 01:15:53,880 que vai ser útil para o pset esta semana 1663 01:15:53,880 --> 01:15:56,060 são o que são chamados argumentos de linha de comando. 1664 01:15:56,060 --> 01:16:00,820 Então Rob em sua palestra atravessou tipo de brevemente sobre como esses trabalhos. 1665 01:16:00,820 --> 01:16:02,770 Essencialmente sabe que quando você está escrevendo 1666 01:16:02,770 --> 01:16:06,280 como uma função principal, quando escreveu funções antes no passado, 1667 01:16:06,280 --> 01:16:07,804 tivemos void main int. 1668 01:16:07,804 --> 01:16:10,470 E a razão que tivemos lá vazio foi porque os nossos programas não 1669 01:16:10,470 --> 01:16:12,520 precisa os valores de entrada para executar, certo? 1670 01:16:12,520 --> 01:16:16,020 Quando eu corri Mario, eu não precisava para realmente basta digitar algo 1671 01:16:16,020 --> 01:16:16,970 quando eu corri Mario. 1672 01:16:16,970 --> 01:16:20,170 Eu poderia pedir ao utilizador mais tarde. 1673 01:16:20,170 --> 01:16:22,450 Mas isto não será sempre o caso. 1674 01:16:22,450 --> 01:16:24,980 >> Por exemplo, neste O problema de semana define, 1675 01:16:24,980 --> 01:16:28,365 você vai ser pedido que, em Além de executar o seu programa, 1676 01:16:28,365 --> 01:16:30,990 você vai querer entrada certas coisas em linha reta como você 1677 01:16:30,990 --> 01:16:32,050 executar o seu programa. 1678 01:16:32,050 --> 01:16:34,720 Então, a nossa forma de fazer isso é chamado um argumento de linha de comando, que 1679 01:16:34,720 --> 01:16:37,280 é como um argumento você pode inserir diretamente 1680 01:16:37,280 --> 01:16:39,260 como você está tentando executar o programa. 1681 01:16:39,260 --> 01:16:44,680 >> Assim, a notação para isso, é bastante complexo para o futuro, 1682 01:16:44,680 --> 01:16:47,320 mas realmente não é tão difícil. Então int main-- 1683 01:16:47,320 --> 01:16:48,910 que é apenas a sua função principal. 1684 01:16:48,910 --> 01:16:52,110 Em argc vírgula suportes seqüência argv. 1685 01:16:52,110 --> 01:16:56,040 Então, tudo o que está dizendo é que este int argc-- tudo o que está dizendo a você 1686 01:16:56,040 --> 01:17:00,560 é que aqueles são o número de argumentos do computador deve esperar. 1687 01:17:00,560 --> 01:17:03,130 >> Então, uma coisa que é realmente importante para manter o controle de 1688 01:17:03,130 --> 01:17:07,080 é o nome físico do seu programa conta como um daqueles argumentos. 1689 01:17:07,080 --> 01:17:11,080 Então, se eu queria ter meu programa executar mais uma linha de comando adicional 1690 01:17:11,080 --> 01:17:13,310 argumento, eu sou realmente vai ter dois. 1691 01:17:13,310 --> 01:17:15,080 Argc realmente vai ser dois. 1692 01:17:15,080 --> 01:17:18,010 E então seqüência argv bracket-- tudo o que está fazendo, 1693 01:17:18,010 --> 01:17:20,410 isso está me dando uma matriz de cadeias que é 1694 01:17:20,410 --> 01:17:24,870 indo apenas para exibir e armazenar o que todos estes argumentos linha de comando são. 1695 01:17:24,870 --> 01:17:34,090 >> Assim, por exemplo, se eu quisesse ter essa programa, ./copy infile outfile, certo? 1696 01:17:34,090 --> 01:17:37,330 Isso é apenas um típico comando Linux. 1697 01:17:37,330 --> 01:17:38,830 O que realmente é argc? 1698 01:17:38,830 --> 01:17:41,320 Quantos argumentos de linha de comando estão lá realmente nisso? 1699 01:17:41,320 --> 01:17:45,130 Tudo isso faz é fazer uma cópia do um infile do nome de um arquivo 1700 01:17:45,130 --> 01:17:47,070 e ele copia para outro arquivo, certo? 1701 01:17:47,070 --> 01:17:48,700 Isso é tudo isso está fazendo. 1702 01:17:48,700 --> 01:17:53,080 Como você pode ver, eu estou fazendo isso em uma linha sem realmente precisar do programa. 1703 01:17:53,080 --> 01:17:55,380 >> Qual é a nossa argc neste caso? 1704 01:17:55,380 --> 01:17:58,968 Quantos argumentos que nós temos? 1705 01:17:58,968 --> 01:17:59,634 AUDIÊNCIA: Três? 1706 01:17:59,634 --> 01:18:01,200 ANDI Peng: Temos três, exatamente. 1707 01:18:01,200 --> 01:18:05,030 Portanto, é muito intuitiva para só acho que é apenas 1708 01:18:05,030 --> 01:18:06,290 o infile e outfile o. 1709 01:18:06,290 --> 01:18:10,190 Mas sei que o nome físico do programa que você está executando conta como uma. 1710 01:18:10,190 --> 01:18:13,220 Portanto, neste caso, argc é, na verdade, três. 1711 01:18:13,220 --> 01:18:15,860 Que tal, o que é argv 0? 1712 01:18:15,860 --> 01:18:18,180 Lembre-se, todo o Argumentos da linha de comando 1713 01:18:18,180 --> 01:18:20,500 foram armazenados em uma matriz de cadeias. 1714 01:18:20,500 --> 01:18:24,140 Então, se eu tentar acessá-lo, o que seria argv suporte 0 dá-me? 1715 01:18:24,140 --> 01:18:25,364 >> AUDIÊNCIA: [inaudível]. 1716 01:18:25,364 --> 01:18:26,155 ANDI Peng: Exatamente. 1717 01:18:26,155 --> 01:18:28,550 Ele me daria o ponto cortar cópia, porque é isso 1718 01:18:28,550 --> 01:18:31,070 o elemento 0, o primeiro elemento da minha matriz. 1719 01:18:31,070 --> 01:18:33,236 E sobre argv 1? 1720 01:18:33,236 --> 01:18:33,945 >> AUDIÊNCIA: INFILE. 1721 01:18:33,945 --> 01:18:35,070 ANDI Peng: INFILE, exatamente. 1722 01:18:35,070 --> 01:18:36,272 E sobre argv 2? 1723 01:18:36,272 --> 01:18:37,022 AUDIÊNCIA: OutFile. 1724 01:18:37,022 --> 01:18:38,190 ANDI Peng: OutFile. 1725 01:18:38,190 --> 01:18:39,290 Isto é um pouco complicado agora. 1726 01:18:39,290 --> 01:18:42,630 O que vocês acham argv 3 vai estar me dando 1727 01:18:42,630 --> 01:18:45,522 se eu tentasse imprimir isso? 1728 01:18:45,522 --> 01:18:48,260 >> AUDIÊNCIA: [inaudível]? 1729 01:18:48,260 --> 01:18:50,164 >> ANDI Peng: Será que você tem uma mão acima? 1730 01:18:50,164 --> 01:18:50,663 Sim. 1731 01:18:50,663 --> 01:18:51,550 >> AUDIÊNCIA: Uma alternativa. 1732 01:18:51,550 --> 01:18:52,341 >> ANDI Peng: Exatamente. 1733 01:18:52,341 --> 01:18:55,440 Então lembre-se de uma conferência que tem no final de uma corrida algo 1734 01:18:55,440 --> 01:18:56,640 chamado um terminador nulo? 1735 01:18:56,640 --> 01:18:58,890 Nós vamos chegar a esta também mais adiante, na classe. 1736 01:18:58,890 --> 01:19:02,472 Mas sabemos que na notação, a forma como o computador 1737 01:19:02,472 --> 01:19:04,430 sabe que é o fim da matriz é que ele 1738 01:19:04,430 --> 01:19:07,310 coloca algo chamado um nulo terminator ou um traço zero. 1739 01:19:07,310 --> 01:19:12,047 >> Então, se você tentar acessar argv 3, você está indo bater esse traço 0. 1740 01:19:12,047 --> 01:19:13,630 Isto é ainda mais de uma pergunta capciosa. 1741 01:19:13,630 --> 01:19:17,020 E sobre argv 4? 1742 01:19:17,020 --> 01:19:20,920 Portanto, este é terminador nulo passado, passado dos limites da nossa matriz. 1743 01:19:20,920 --> 01:19:24,380 O que você acha que vai acontecer quando tentamos fazer isso? 1744 01:19:24,380 --> 01:19:25,842 >> AUDIÊNCIA: [inaudível]? 1745 01:19:25,842 --> 01:19:26,550 ANDI Peng: Desculpe? 1746 01:19:26,550 --> 01:19:28,025 Digamos que um pouco mais alto? 1747 01:19:28,025 --> 01:19:29,086 >> AUDIÊNCIA: [inaudível]. 1748 01:19:29,086 --> 01:19:29,710 ANDI Peng: Sim. 1749 01:19:29,710 --> 01:19:32,420 Que é o nome do área que você provavelmente vai conseguir. 1750 01:19:32,420 --> 01:19:36,610 Mas saiba que argv 4-- que permite o acesso 1751 01:19:36,610 --> 01:19:38,610 lugares em seu computador de memória que você realmente 1752 01:19:38,610 --> 01:19:41,650 não deve ser comovente, porque agora você sabe o que é argv. 1753 01:19:41,650 --> 01:19:46,220 Você sabe que é uma matriz de tamanho 3 que tem dot cópia, infile e outfile. 1754 01:19:46,220 --> 01:19:50,200 >> Se você tentar ir tão além que que você é passado o terminador nulo, 1755 01:19:50,200 --> 01:19:53,050 seu computador tem, provavelmente, armazenado algo em argv 4. 1756 01:19:53,050 --> 01:19:55,790 E você realmente não deve ser permitido o acesso às argv 4, 1757 01:19:55,790 --> 01:19:58,130 porque você tem um arquivo armário e você só está 1758 01:19:58,130 --> 01:19:59,790 permitiu o acesso a esses três prateleiras. 1759 01:19:59,790 --> 01:20:02,870 Mas se você tentar chegar muito além a plataforma de onde você está autorizado, 1760 01:20:02,870 --> 01:20:04,930 você vai começar a brincar com outras coisas na memória do computador. 1761 01:20:04,930 --> 01:20:06,690 Isso vai ser muito, muito ruim. 1762 01:20:06,690 --> 01:20:07,440 Então, só sei que. 1763 01:20:07,440 --> 01:20:10,370 Tenha muito cuidado para que você não basta começar aleatoriamente 1764 01:20:10,370 --> 01:20:14,772 acessar elementos em uma matriz que não estavam em o que você queria criar. 1765 01:20:14,772 --> 01:20:17,114 Sim. 1766 01:20:17,114 --> 01:20:18,430 >> ESTÁ BEM. 1767 01:20:18,430 --> 01:20:26,360 Então, vamos fazer outro exemplo do terminal aqui. 1768 01:20:26,360 --> 01:20:27,300 ESTÁ BEM. 1769 01:20:27,300 --> 01:20:29,900 Então Rob rapidamente em palestra no outro dia fui 1770 01:20:29,900 --> 01:20:35,040 através deste exemplo, onde ele teve int main int argc argv cadeia 1771 01:20:35,040 --> 01:20:39,090 colchetes, o que está me dizendo que eu sou vai ter argumentos de linha de comando. 1772 01:20:39,090 --> 01:20:41,860 >> Ele tem, se é igual a argc é igual a 2-- lembre-se, 1773 01:20:41,860 --> 01:20:45,070 é igual a igual significa comparação. 1774 01:20:45,070 --> 01:20:47,980 Se for igual a 2, então eu sou indo para imprimir Olá, 1775 01:20:47,980 --> 01:20:51,190 qualquer que seja o primeiro elemento da matriz é. 1776 01:20:51,190 --> 01:20:54,100 Impressão Else, Olá mundo. 1777 01:20:54,100 --> 01:20:56,300 O que é que isto vai essencialmente acontecer? 1778 01:20:56,300 --> 01:21:00,570 Alguém pode explicar apenas em Inglês o que este programa está fazendo? 1779 01:21:00,570 --> 01:21:01,272 Sim. 1780 01:21:01,272 --> 01:21:08,160 >> AUDIÊNCIA: Se alguém digitou em um comando e disse que seu primeiro e último nome, 1781 01:21:08,160 --> 01:21:12,096 ele não vai apenas imprimir o primeiro e dizer: Olá, 1782 01:21:12,096 --> 01:21:14,090 seja qual for o seu primeiro nome é. 1783 01:21:14,090 --> 01:21:15,410 >> ANDI Peng: OK, vamos executá-lo. 1784 01:21:15,410 --> 01:21:22,470 Assim, por exemplo, se eu fosse fazer esse arquivo fazer Olá Olá a-- 1785 01:21:22,470 --> 01:21:24,500 a-- o que você me quer de entrada? 1786 01:21:24,500 --> 01:21:25,900 >> AUDIÊNCIA: Primeiro e último nome. 1787 01:21:25,900 --> 01:21:27,280 >> ANDI Peng: Primeiro e último nome? 1788 01:21:27,280 --> 01:21:28,180 Espaços? 1789 01:21:28,180 --> 01:21:29,690 >> AUDIÊNCIA: É. 1790 01:21:29,690 --> 01:21:33,490 >> ANDI Peng: Pode alguém dizer- me agora, o que é argc? 1791 01:21:33,490 --> 01:21:35,630 Apenas para a direita lá? 1792 01:21:35,630 --> 01:21:36,290 OPA, desculpe. 1793 01:21:36,290 --> 01:21:37,920 Deixe-me voltar. 1794 01:21:37,920 --> 01:21:40,740 Quantos argumentos de linha de comando é-- vocês não podem realmente ver. 1795 01:21:40,740 --> 01:21:43,760 Mas eu vou tentar fazer zoom. 1796 01:21:43,760 --> 01:21:44,290 Estou tentando. 1797 01:21:44,290 --> 01:21:45,414 Sim, há três, certo? 1798 01:21:45,414 --> 01:21:48,750 É barra dot Olá, é Andi, e é Peng. 1799 01:21:48,750 --> 01:21:51,870 >> Então, o que vocês acham que esta programa vai ser imprimir? 1800 01:21:51,870 --> 01:21:55,550 1801 01:21:55,550 --> 01:21:56,060 Oh. 1802 01:21:56,060 --> 01:21:57,120 Oh, desculpe. 1803 01:21:57,120 --> 01:21:57,810 Nome errado. 1804 01:21:57,810 --> 01:22:03,630 1805 01:22:03,630 --> 01:22:06,130 Ele está imprimindo, Olá mundo. 1806 01:22:06,130 --> 01:22:09,603 Alguém quer explicar por que isso está acontecendo? 1807 01:22:09,603 --> 01:22:10,103 Sim? 1808 01:22:10,103 --> 01:22:11,019 >> AUDIÊNCIA: [inaudível]. 1809 01:22:11,019 --> 01:22:14,439 1810 01:22:14,439 --> 01:22:15,230 ANDI Peng: Exatamente. 1811 01:22:15,230 --> 01:22:19,940 Então, aqui, são condicionais é, se argc é igual é igual a 2. 1812 01:22:19,940 --> 01:22:23,650 Assim, apenas no caso em que há dois argumentos de linha de comando. 1813 01:22:23,650 --> 01:22:25,850 Então eu estou indo para imprimir, Olá, seja ele qual for. 1814 01:22:25,850 --> 01:22:28,210 Mas mais, eu vou imprimir apenas, Olá mundo. 1815 01:22:28,210 --> 01:22:30,040 Assim que alguém quer para me dar um exemplo 1816 01:22:30,040 --> 01:22:35,050 de como eu seria capaz de realmente obtê-lo para imprimir o valor de argv 1? 1817 01:22:35,050 --> 01:22:38,600 >> O que eu teria a entrada aqui? 1818 01:22:38,600 --> 01:22:39,840 Só uma coisa, certo? 1819 01:22:39,840 --> 01:22:42,900 Porque o Olá ponto para já conta como o primeiro argumento. 1820 01:22:42,900 --> 01:22:43,930 Eu só tenho mais uma. 1821 01:22:43,930 --> 01:22:46,470 Então dot Olá se eu só faço Andi. 1822 01:22:46,470 --> 01:22:47,270 Olá, Andi. 1823 01:22:47,270 --> 01:22:49,186 Será que todo mundo entender por que isso está acontecendo? 1824 01:22:49,186 --> 01:22:49,602 Sim. 1825 01:22:49,602 --> 01:22:52,500 >> AUDIÊNCIA: Então, o espaço entre a linha-- comando é [inaudível]? 1826 01:22:52,500 --> 01:22:56,247 1827 01:22:56,247 --> 01:22:56,830 ANDI Peng: Não. 1828 01:22:56,830 --> 01:23:03,810 Assim, o espaço em uma linha de comando argumento, x, para dizer a seu computador 1829 01:23:03,810 --> 01:23:06,820 que este é o começo de uma nova sequência. 1830 01:23:06,820 --> 01:23:11,130 Então seqüência argv aqui-- ele lojas todos os seus argumentos de linha de comandos 1831 01:23:11,130 --> 01:23:13,110 em cordas. 1832 01:23:13,110 --> 01:23:17,420 E assim o espaço na linha de comando argument-- tudo o que faz é dizer-lhe, 1833 01:23:17,420 --> 01:23:21,030 isto é, no final de uma cadeia e é hora de seguir em frente para outro. 1834 01:23:21,030 --> 01:23:21,990 >> Sim. 1835 01:23:21,990 --> 01:23:23,530 Isso é muito importante para seu pset, porque você é 1836 01:23:23,530 --> 01:23:24,613 vai ser testar estes. 1837 01:23:24,613 --> 01:23:29,300 Então, alguém tem dúvidas sobre este assunto? 1838 01:23:29,300 --> 01:23:30,016 OK legal. 1839 01:23:30,016 --> 01:23:30,515 Sim? 1840 01:23:30,515 --> 01:23:35,008 >> AUDIÊNCIA: Então a razão que você faria colocar inteiro argumento calc vez 1841 01:23:35,008 --> 01:23:40,059 de [inaudível] seria quando quiser para digitar informações adicionais para 1842 01:23:40,059 --> 01:23:41,030 [Inaudível]? 1843 01:23:41,030 --> 01:23:42,090 >> ANDI Peng: Sim, exatamente. 1844 01:23:42,090 --> 01:23:45,370 Alguns programas exigem que você a entrada de um argumento de linha de comando 1845 01:23:45,370 --> 01:23:47,732 que entra e que usa isso. 1846 01:23:47,732 --> 01:23:49,035 Sim. 1847 01:23:49,035 --> 01:23:50,410 AUDIÊNCIA: Então, o que se [inaudível]? 1848 01:23:50,410 --> 01:23:55,440 1849 01:23:55,440 --> 01:23:58,870 >> ANDI Peng: Bem, o que eu tenho em seguida, a alteração na minha programa? 1850 01:23:58,870 --> 01:23:59,870 >> AUDIÊNCIA: Apenas 3. 1851 01:23:59,870 --> 01:24:12,460 1852 01:24:12,460 --> 01:24:15,020 >> ANDI Peng: Por que é que acontecendo, que você acha? 1853 01:24:15,020 --> 01:24:18,940 >> AUDIÊNCIA: Porque o [inaudível]. 1854 01:24:18,940 --> 01:24:22,370 >> AUDIÊNCIA: Você teria que alterá-lo para 2 [inaudível]. 1855 01:24:22,370 --> 01:24:23,484 >> AUDIÊNCIA: 1 e 2. 1856 01:24:23,484 --> 01:24:24,650 ANDI Peng: 1 e 2, exatamente. 1857 01:24:24,650 --> 01:24:29,150 Portanto, neste caso, você provavelmente quer ter dois printf statements-- 1858 01:24:29,150 --> 01:24:32,601 um impresso que 1 e argv o que impresso argv 2. 1859 01:24:32,601 --> 01:24:33,100 Aqui. 1860 01:24:33,100 --> 01:24:34,516 Eu posso realmente fazer isso rápido real. 1861 01:24:34,516 --> 01:24:46,720 1862 01:24:46,720 --> 01:24:47,320 Ai está. 1863 01:24:47,320 --> 01:24:48,287 Oh. 1864 01:24:48,287 --> 01:24:49,370 Não é o que você queria. 1865 01:24:49,370 --> 01:24:52,590 Mas se vocês mexer com a formatação, ele vai sair. 1866 01:24:52,590 --> 01:24:54,981 Sim. 1867 01:24:54,981 --> 01:24:55,480 Legal. 1868 01:24:55,480 --> 01:24:57,670 Eu sei que estamos um pouco curto no tempo. 1869 01:24:57,670 --> 01:25:02,469 Mas eu estou indo só para passar rapidamente um alguns minutos passando por atenciosa-- 1870 01:25:02,469 --> 01:25:03,760 AUDIÊNCIA: Você tem dois minutos. 1871 01:25:03,760 --> 01:25:05,010 ANDI Peng: Eu tenho dois minutos? 1872 01:25:05,010 --> 01:25:06,340 Obrigado. 1873 01:25:06,340 --> 01:25:09,180 Algumas dicas PSet rápido. 1874 01:25:09,180 --> 01:25:13,100 Portanto, para este pset, eu recomendo, como eu disse, todos poderão ler o spec. 1875 01:25:13,100 --> 01:25:16,804 Você vai estar escrevendo um três programs-- chamado initials.c, um chamado caesar.c, 1876 01:25:16,804 --> 01:25:17,720 um chamado vigenere.c. 1877 01:25:17,720 --> 01:25:20,465 1878 01:25:20,465 --> 01:25:22,340 Algumas dicas importantes que vocês realmente querem 1879 01:25:22,340 --> 01:25:25,040 para se manter em tão mente-- há essa função 1880 01:25:25,040 --> 01:25:27,770 chamado atoi-- como eu gosto de dizer, a trois. 1881 01:25:27,770 --> 01:25:29,520 Claro se isso é na verdade, como você diz. 1882 01:25:29,520 --> 01:25:32,510 Mas tudo o que está fazendo, está introduzindo. 1883 01:25:32,510 --> 01:25:34,320 Converte uma string para um int. 1884 01:25:34,320 --> 01:25:37,490 Assim, um representa ASCII para i inteiro. 1885 01:25:37,490 --> 01:25:40,310 É apenas a conversão ASCII valores para valores inteiros. 1886 01:25:40,310 --> 01:25:44,510 Então lembre-se argv, a matriz que armazena todos os seus comandos de linha arguments-- 1887 01:25:44,510 --> 01:25:46,300 ele armazena-los todos como strings. 1888 01:25:46,300 --> 01:25:50,010 E por isso, se você quer ser capaz de ter um deles tornar-se um número inteiro, 1889 01:25:50,010 --> 01:25:52,750 você vai ter para usar esse valor aqui. 1890 01:25:52,750 --> 01:25:56,690 >> Modulo, como nós cobrimos mais cedo na aula hoje, 1891 01:25:56,690 --> 01:25:59,550 permite que você tenha o resto do que você tem. 1892 01:25:59,550 --> 01:26:03,620 Então, se temos realmente, realmente grandes números em Caesar, 1893 01:26:03,620 --> 01:26:06,117 E se tivermos o fim de uma série de Vigenere? 1894 01:26:06,117 --> 01:26:08,450 Como você está indo para ser capaz para conseguir que a envolver em torno de? 1895 01:26:08,450 --> 01:26:11,330 Se eu acertar z e eu quero -lo para voltar a um, 1896 01:26:11,330 --> 01:26:13,650 como eu vou chegar que para embrulhar ao redor? 1897 01:26:13,650 --> 01:26:15,960 Provavelmente vai querer usar modulo em algum lugar. 1898 01:26:15,960 --> 01:26:19,190 >> Em segundo lugar, navegar ao redor sua biblioteca. ctype.h. 1899 01:26:19,190 --> 01:26:20,680 Essa é uma nova biblioteca que temos. 1900 01:26:20,680 --> 01:26:25,270 Você vai encontrar um monte de muito, muito isupper funções no útil, islower, 1901 01:26:25,270 --> 01:26:27,681 toupper, tolower, isalpha, et cetera. 1902 01:26:27,681 --> 01:26:30,680 Todas as funções que serão muito úteis quando você está tentando descobrir, 1903 01:26:30,680 --> 01:26:33,780 é uma letra minúscula esse personagem? 1904 01:26:33,780 --> 01:26:35,730 Como faço para converter este string para um maiúscula? 1905 01:26:35,730 --> 01:26:38,146 Todas estas coisas vão ser muito, muito útil para o seu pset. 1906 01:26:38,146 --> 01:26:42,720 1907 01:26:42,720 --> 01:26:45,500 ESTÁ BEM. 1908 01:26:45,500 --> 01:26:49,644 >> O horário de expediente hoje à noite são 8:00 às 11:00 na sala de aula TEAL amanhã 1909 01:26:49,644 --> 01:26:51,310 bem como quarta-feira e quinta-feira. 1910 01:26:51,310 --> 01:26:53,280 Horário de atendimento estão em commons. 1911 01:26:53,280 --> 01:26:56,180 Sugiro que você caras tudo começar imediatamente, 1912 01:26:56,180 --> 01:27:00,490 porque você não quer ser que miúdo que quinta-feira tem problemas 1913 01:27:00,490 --> 01:27:03,870 submeter o seu pset e é como, eu não sei o que fazer. 1914 01:27:03,870 --> 01:27:05,870 Eu comecei, eu terminei, eu submetidos. 1915 01:27:05,870 --> 01:27:09,737 Tente dar-se algum espaço, por causa dos problemas de código sempre ocorrer. 1916 01:27:09,737 --> 01:27:11,570 Você quer ter a certeza que você dá a si mesmo 1917 01:27:11,570 --> 01:27:14,810 uma grande quantidade de tempo para ser capaz para completar as Série de Exercícios. 1918 01:27:14,810 --> 01:27:15,310 Legal. 1919 01:27:15,310 --> 01:27:16,720 Vou ficar por aqui. 1920 01:27:16,720 --> 01:27:18,226 >> AUDIÊNCIA: É isso on-line já? 1921 01:27:18,226 --> 01:27:20,850 ANDI Peng: Eu não sei se é on-line já, mas vai ser. 1922 01:27:20,850 --> 01:27:23,500 Vou ficar por aqui, se alguém tem dúvidas já. 1923 01:27:23,500 --> 01:27:25,390 Obrigado por ter vindo. 1924 01:27:25,390 --> 01:27:27,105