1 00:00:00,000 --> 00:00:05,830 2 00:00:05,830 --> 00:00:08,650 >> JASON HIRSCHHORN: Bem-vindo à CS50 seção, todos. 3 00:00:08,650 --> 00:00:11,430 Meu nome é Jason Hirschhorn. 4 00:00:11,430 --> 00:00:15,850 Eu sou um monte de TFs seu, mas um monte de pessoas venha se juntar a nós 5 00:00:15,850 --> 00:00:20,420 estudantes, extensionistas e estudantes on-line tentando olhar a seção se 6 00:00:20,420 --> 00:00:22,830 perdeu sua seção naquela semana ou só pegar se quisessem 7 00:00:22,830 --> 00:00:24,510 rever algumas material. 8 00:00:24,510 --> 00:00:30,060 >> Assim, de acordo com o programa, que todos de que você leu, correto? 9 00:00:30,060 --> 00:00:31,390 Eu vejo um monte de acenos de cabeça. 10 00:00:31,390 --> 00:00:34,220 Seções lhe proporcionar oportunidades para explorar o campo de 11 00:00:34,220 --> 00:00:37,420 material em um ambiente mais íntimo, bem como mergulhar 12 00:00:37,420 --> 00:00:38,810 atividades hands-on. 13 00:00:38,810 --> 00:00:41,230 >> Então, isso é basicamente o que estamos vai estar fazendo a cada semana. 14 00:00:41,230 --> 00:00:45,090 Nós vamos passar por aquilo que temos determinado a ser o mais importante 15 00:00:45,090 --> 00:00:49,170 tópicos abordados na aula, e os Provavelmente a mais útil e também 16 00:00:49,170 --> 00:00:52,780 mais provável que venha em conjuntos de problemas e em testes, e na sua codificação 17 00:00:52,780 --> 00:00:53,970 vida fora do CS50. 18 00:00:53,970 --> 00:00:57,260 Então, nós estamos indo para ir para esses temas, discuti-los, passar por cima deles, 19 00:00:57,260 --> 00:01:00,660 responder a quaisquer perguntas que vocês têm, e então vamos fazer um monte de 20 00:01:00,660 --> 00:01:02,250 problemas práticos de codificação. 21 00:01:02,250 --> 00:01:04,239 >> Vocês todos trouxe laptops, o que é fantástico. 22 00:01:04,239 --> 00:01:05,710 Esta é uma aula de ciência da computação. 23 00:01:05,710 --> 00:01:10,070 No entanto, muitos dos exercícios que fazemos, você não vai precisar de seus laptops para. 24 00:01:10,070 --> 00:01:11,720 Você pode fazê-los em uma folha de papel. 25 00:01:11,720 --> 00:01:13,580 É assim que você está indo para fazê-las no quizzes. 26 00:01:13,580 --> 00:01:16,450 E, de fato, essa é uma ótima maneira de realmente sei que você como fazer 27 00:01:16,450 --> 00:01:19,720 alguma coisa, se você não tem 50 Verifique a dependem ou Fazer a confiar em nós, dizendo 28 00:01:19,720 --> 00:01:20,620 você cometeu algum erro. 29 00:01:20,620 --> 00:01:25,670 >> Então, você é bem-vindo ao código da run.cs50.net aparelho ou, o que é 30 00:01:25,670 --> 00:01:29,770 outra ferramenta que lhe permite codificar on-line, mas eu também recomendo, se 31 00:01:29,770 --> 00:01:32,280 você ainda não experimentou, usando uma folha de de papel e tentar estas práticas 32 00:01:32,280 --> 00:01:33,640 problemas em uma folha de papel. 33 00:01:33,640 --> 00:01:35,330 Porque mais uma vez, que é em última análise, o que você vai ser 34 00:01:35,330 --> 00:01:37,430 pediu para fazer em quizzes. 35 00:01:37,430 --> 00:01:44,080 >> Então, vamos começar com o nosso agenda para hoje. 36 00:01:44,080 --> 00:01:47,710 Nós vamos passar por cima de algumas normas para nossa seção, então vamos mergulhar 37 00:01:47,710 --> 00:01:51,180 em matrizes, funções e linha de comando argumentos, que é o que vocês 38 00:01:51,180 --> 00:01:56,200 cobrimos na semana passada, em palestra e segunda-feira, eo que você vai cobrir 39 00:01:56,200 --> 00:01:57,330 mais de amanhã. 40 00:01:57,330 --> 00:01:59,060 E então, finalmente, vamos para falar sobre pset2. 41 00:01:59,060 --> 00:02:03,640 Se eu pudesse ter um show de mãos se não olhei para o problema conjunto de dois 42 00:02:03,640 --> 00:02:04,890 especificação. 43 00:02:04,890 --> 00:02:07,060 44 00:02:07,060 --> 00:02:08,120 Vamos dizer todos. 45 00:02:08,120 --> 00:02:09,419 Fantástico. 46 00:02:09,419 --> 00:02:12,070 >> Vamos falar sobre conjuntos de problemas um pouco, mas se você ler o conjunto de problemas 47 00:02:12,070 --> 00:02:14,340 especificação, que é tudo que você precisa fazer. 48 00:02:14,340 --> 00:02:18,370 Se você ler isso antes de vir para classe e seção na terça-feira, você vai 49 00:02:18,370 --> 00:02:19,220 ser uma ótima posição. 50 00:02:19,220 --> 00:02:21,680 Podemos percorrer o conjunto de problemas, que é o que nós vamos 51 00:02:21,680 --> 00:02:22,090 para fazer no final. 52 00:02:22,090 --> 00:02:23,500 Nós vamos passar por a lógica, certifique-se 53 00:02:23,500 --> 00:02:24,710 todos estão na mesma página. 54 00:02:24,710 --> 00:02:28,650 >> Eu quero que você seja capaz de sair terça-feira me sentindo muito confortável com o que você 55 00:02:28,650 --> 00:02:31,560 precisa fazer para o conjunto de problemas desta semana, e se você não fizer isso, eu vou feliz 56 00:02:31,560 --> 00:02:33,050 ficar depois e trabalhar com você. 57 00:02:33,050 --> 00:02:36,850 Mas isso é uma coisa que você tem que fazer, mas eu acho que seria muito inteligente, 58 00:02:36,850 --> 00:02:40,500 apenas para ler o conjunto de problemas especificação de classe na terça-feira, 59 00:02:40,500 --> 00:02:42,640 que soa como uma muitos de vocês fizeram. 60 00:02:42,640 --> 00:02:45,810 >> Vou começar com uma agenda cada classe então você sabe para onde estamos indo. 61 00:02:45,810 --> 00:02:49,520 Isso também é útil para pessoas que assistem online, porque cada seção 62 00:02:49,520 --> 00:02:53,540 é codificado por cores, por isso, se você quiser vir para trás e apenas assistir a 10 minutos antes 63 00:02:53,540 --> 00:02:56,950 que toda a seção de 90 minutos, você pode simplesmente ir até a seção código de cores 64 00:02:56,950 --> 00:02:57,890 e olhar para essa parte. 65 00:02:57,890 --> 00:03:01,510 Então, eu tentei dividi-las em bom módulos que permitem a você - 66 00:03:01,510 --> 00:03:03,960 se você quiser voltar e rever, ou outros alunos que são apenas 67 00:03:03,960 --> 00:03:05,350 vendo uma seção para rever - 68 00:03:05,350 --> 00:03:08,130 para encontrar a coisa específica que querer prestar atenção para 69 00:03:08,130 --> 00:03:10,480 e aprender mais sobre. 70 00:03:10,480 --> 00:03:11,390 Doce. 71 00:03:11,390 --> 00:03:12,180 >> Normas. 72 00:03:12,180 --> 00:03:13,680 Eu sou um líder FOP no campus. 73 00:03:13,680 --> 00:03:14,900 Eu não sei se alguém fez FOP. 74 00:03:14,900 --> 00:03:16,280 Alguém fazer FOP? 75 00:03:16,280 --> 00:03:17,100 Uma pessoa fez FOP. 76 00:03:17,100 --> 00:03:18,430 Duas pessoas fizeram FOP. 77 00:03:18,430 --> 00:03:19,250 Incrível. 78 00:03:19,250 --> 00:03:22,360 Então FOP é o primeiro ano ao ar livre Programa de Orientação. 79 00:03:22,360 --> 00:03:27,240 Tomamos calouros para a floresta e fazer das experiências mais mágicas de 80 00:03:27,240 --> 00:03:28,830 suas vidas, correto? 81 00:03:28,830 --> 00:03:29,220 Sim. 82 00:03:29,220 --> 00:03:30,080 Soa sobre a direita. 83 00:03:30,080 --> 00:03:36,360 >> Então, eu só queria começar a nossa primeira seção discutindo algumas normas 84 00:03:36,360 --> 00:03:38,860 para a classe e nosso relacionamento porque eu acho que 85 00:03:38,860 --> 00:03:40,010 eles são muito importantes. 86 00:03:40,010 --> 00:03:43,630 Em primeiro lugar, como aqueles que são minha seção receberam e 87 00:03:43,630 --> 00:03:47,150 foi discutida em que e-mail, eu adoro isso. 88 00:03:47,150 --> 00:03:48,130 Esta é a minha parte favorita do ano. 89 00:03:48,130 --> 00:03:49,100 Eu estive tão animado. 90 00:03:49,100 --> 00:03:50,040 Estive aqui durante horas de hoje. 91 00:03:50,040 --> 00:03:54,560 Não deixei este edifício, exceto para ir comer, porque eu amo CS50 seção, 92 00:03:54,560 --> 00:03:58,620 amo ensinar, eu gosto muito de trabalhar com vocês. 93 00:03:58,620 --> 00:04:02,000 >> Uma das minhas maiores prioridades, se não meu prioridade número um, não só para 94 00:04:02,000 --> 00:04:05,130 esta classe, mas incluindo a minha outra classes e extracurriculares, é 95 00:04:05,130 --> 00:04:09,350 apoiar vocês e ajudar vocês, e fazer o meu melhor para ter certeza de que você 96 00:04:09,350 --> 00:04:13,780 caras têm um maravilhoso, divertido, produtivo envolvente, emocionante 97 00:04:13,780 --> 00:04:15,250 experiência nesta classe. 98 00:04:15,250 --> 00:04:16,190 Isso é o que eu estou comprometido. 99 00:04:16,190 --> 00:04:17,959 É por isso que eu amo fazer isso. 100 00:04:17,959 --> 00:04:20,190 Esse é o meu número de uma coisa, apoiar vocês. 101 00:04:20,190 --> 00:04:25,110 Se você tem alguma dúvida sobre palestra, o conjunto de problemas, seção, 102 00:04:25,110 --> 00:04:28,830 vida, mesmo se você quiser falar sobre vida, se sentir livre para chegar por favor. 103 00:04:28,830 --> 00:04:31,210 >> Você tem o número do meu telefone celular, você tem meu e-mail 104 00:04:31,210 --> 00:04:32,910 endereço, você tem a minha GChat. 105 00:04:32,910 --> 00:04:37,540 Você pode contactar-me em qualquer uma ou todas aqueles que sempre, mas provavelmente não vai conseguir 106 00:04:37,540 --> 00:04:38,720 a resposta sempre. 107 00:04:38,720 --> 00:04:41,020 Eu tento e voltar dentro de 24 horas. 108 00:04:41,020 --> 00:04:44,760 Muitas vezes será dentro 20 minutos ou 24 minutos. 109 00:04:44,760 --> 00:04:46,110 Eu deveria ter dito que para torná-la em paralelo. 110 00:04:46,110 --> 00:04:48,840 Mas você vai ter uma resposta muito rapidamente. 111 00:04:48,840 --> 00:04:54,220 >> Se você me texto de uma hora antes do conjunto de problemas é devido, vou acalmá-lo 112 00:04:54,220 --> 00:04:57,660 para baixo e fazer exercícios de respiração profunda com você, mas se você ainda não começou, 113 00:04:57,660 --> 00:05:00,270 você provavelmente não vai terminar, e Eu realmente não posso ajudá-lo lá fora 114 00:05:00,270 --> 00:05:01,710 mesmo que eu vou tentar o meu melhor. 115 00:05:01,710 --> 00:05:03,920 Então eu vou fazer de tudo Eu posso apoiá-lo. 116 00:05:03,920 --> 00:05:07,980 Por favor, sinta-se livre para se chegar é na seção de novo, em horário de expediente 117 00:05:07,980 --> 00:05:09,150 se você me ver, ou até mesmo do lado de fora. 118 00:05:09,150 --> 00:05:11,800 Estou feliz por marcar um horário para atender e trabalhar com problemas 119 00:05:11,800 --> 00:05:14,410 com ou passar por cima de material. 120 00:05:14,410 --> 00:05:15,990 Assim que é o número um, suporte. 121 00:05:15,990 --> 00:05:17,940 Eu vou fazer tudo que eu pode apoiá-lo. 122 00:05:17,940 --> 00:05:21,520 >> Número dois, reunião no meio. 123 00:05:21,520 --> 00:05:24,760 Tanto quanto eu gostaria de ser, eu sou não é onipotente ou todo-poderoso ou 124 00:05:24,760 --> 00:05:28,410 onisciente, então eu não sei tudo o tempo se o que estou fazendo está ficando 125 00:05:28,410 --> 00:05:33,410 transversalmente, se a maneira que eu estou ensinando a tópico ajuda você a aprender, ou se você 126 00:05:33,410 --> 00:05:36,120 estão confusos sobre um tópico, mas não levantar a mão ou pedir-me 127 00:05:36,120 --> 00:05:37,390 ou me envie um e-mail. 128 00:05:37,390 --> 00:05:42,150 Ou mesmo se você, mais uma vez, estão confusos sobre algo sobre o conjunto de problemas. 129 00:05:42,150 --> 00:05:44,240 Se você não chegar a mim, Eu não posso saber com certeza. 130 00:05:44,240 --> 00:05:46,950 Eu vou fazer o meu melhor para o check-in em Vocês, certifique-se que tudo é 131 00:05:46,950 --> 00:05:51,170 indo bem, tento ensinar as coisas de uma maneira que será propício para a maioria dos 132 00:05:51,170 --> 00:05:54,910 seus estilos de aprendizagem, mas se há nada que eu possa fazer, me avise. 133 00:05:54,910 --> 00:05:58,520 >> Ao longo destas linhas, se você quiser alguma ajuda com o conjunto de problemas, eu sou mais 134 00:05:58,520 --> 00:05:59,700 do que feliz em ajudá-lo com o conjunto de problemas. 135 00:05:59,700 --> 00:06:02,300 Nós vamos fazer um monte de que na direcção da segunda 136 00:06:02,300 --> 00:06:03,460 metade desta seção. 137 00:06:03,460 --> 00:06:06,040 Mas se você ainda não leu o problema define trás e ainda não assistiu a caminhada 138 00:06:06,040 --> 00:06:09,310 através e não assisti os shorts e esperando que eu te ensinar 139 00:06:09,310 --> 00:06:13,260 tudo o que foi filmado on-line ou que você pode encontrar em CS50 140 00:06:13,260 --> 00:06:16,720 estudo, isso não é realmente justo comigo ou com seus outros colegas. 141 00:06:16,720 --> 00:06:20,440 142 00:06:20,440 --> 00:06:25,730 >> Então, por favor, eu estou mais do que feliz em ajudar vocês, mas vocês tem que me conhecer em 143 00:06:25,730 --> 00:06:27,230 meio. 144 00:06:27,230 --> 00:06:30,100 Temos toneladas de recursos para Você está disponível no CS50. 145 00:06:30,100 --> 00:06:31,230 Eu mencionei alguns deles. 146 00:06:31,230 --> 00:06:32,960 Por favor, tirar proveito deles. 147 00:06:32,960 --> 00:06:35,140 Se você está confuso, eu estou mais do que feliz para ajudá-lo explicá-las em 148 00:06:35,140 --> 00:06:39,290 de outra forma, mas não é justo se alunos mostram-se em horário de expediente, 149 00:06:39,290 --> 00:06:42,530 não começou nada, e é Quinta à noite e eles estão esperando 150 00:06:42,530 --> 00:06:45,880 o TF para caminhar com eles através de cada coisa para o conjunto de problemas devido 151 00:06:45,880 --> 00:06:47,140 ao meio-dia do dia seguinte. 152 00:06:47,140 --> 00:06:48,300 Faz sentido? 153 00:06:48,300 --> 00:06:50,890 Mais uma vez, por favor, nos encontrar no meio. 154 00:06:50,890 --> 00:06:53,230 >> E, finalmente, as altas expectativas. 155 00:06:53,230 --> 00:06:58,010 Eu vou estar de classificação todo mundo que é na minha seção, ou marcando o seu 156 00:06:58,010 --> 00:06:59,020 conjuntos de problemas. 157 00:06:59,020 --> 00:07:01,240 Você não voltaram problema definir zero ou um ainda. 158 00:07:01,240 --> 00:07:02,250 Estamos muito sobre isso. 159 00:07:02,250 --> 00:07:04,970 Levou algum tempo para finalmente estabelecer seções, e agora 160 00:07:04,970 --> 00:07:05,560 podemos começar a classificação. 161 00:07:05,560 --> 00:07:09,560 >> Eu vou levá-los de volta para você o mais rapidamente possível. 162 00:07:09,560 --> 00:07:11,890 Esses são alguns dos meus orientandos lá fora. 163 00:07:11,890 --> 00:07:14,150 Eu vou levá-los de volta para você o mais rapidamente possível. 164 00:07:14,150 --> 00:07:18,046 E para o problema de conjunto de dois, estaremos em programar e vamos começar fazê-los 165 00:07:18,046 --> 00:07:20,440 para você muito rapidamente após você transformá-los dentro 166 00:07:20,440 --> 00:07:24,130 >> Quando você começa o seu conjunto de problemas para trás, você terá pontuação, como você sabe de 167 00:07:24,130 --> 00:07:28,150 leitura do currículo - exatidão, projeto, escopo e estilo pontuações. 168 00:07:28,150 --> 00:07:29,760 Você também terá comentários. 169 00:07:29,760 --> 00:07:32,160 Os comentários são mais importantes que os escores. 170 00:07:32,160 --> 00:07:33,780 Eu acho que é seguro dizer que. 171 00:07:33,780 --> 00:07:37,930 >> Pontuações são apenas um número de um a cinco. 172 00:07:37,930 --> 00:07:38,930 É difícil ler naqueles. 173 00:07:38,930 --> 00:07:40,720 É difícil melhorar daqueles. 174 00:07:40,720 --> 00:07:44,460 Mas os comentários serão apontar específico coisas que você fez bem ou áreas 175 00:07:44,460 --> 00:07:48,360 você pode melhorar e dar-lhe alguns ideias para o futuro ou alternativa 176 00:07:48,360 --> 00:07:49,160 maneiras de fazer as coisas. 177 00:07:49,160 --> 00:07:52,270 >> Então, por favor, por favor, por favor leia através dos comentários. 178 00:07:52,270 --> 00:07:54,190 Eu coloquei um monte de tempo em esses comentários. 179 00:07:54,190 --> 00:07:57,190 Por favor, leia com eles e não apenas deslocar para baixo para o fundo do 180 00:07:57,190 --> 00:08:01,890 PDF, procure a sua pontuação, ou ir em linha e encontrar a sua pontuação, e depois ignorar 181 00:08:01,890 --> 00:08:02,800 os comentários. 182 00:08:02,800 --> 00:08:03,910 Isso não é como você está vai ficar melhor. 183 00:08:03,910 --> 00:08:06,550 Isso não é como você está indo para aumentar sua pontuação final, apenas 184 00:08:06,550 --> 00:08:07,340 olhando para as pontuações. 185 00:08:07,340 --> 00:08:08,760 Por favor, olhe esses comentários. 186 00:08:08,760 --> 00:08:13,240 >> E ao longo da linha de grandes expectativas, mais uma vez, como eu disse, você 187 00:08:13,240 --> 00:08:14,260 podem ser pontuadas de um a cinco. 188 00:08:14,260 --> 00:08:17,120 Dois, Três, e quatros são os grande maioria das contagens 189 00:08:17,120 --> 00:08:17,940 você vai estar recebendo. 190 00:08:17,940 --> 00:08:20,180 E fives estão realmente raro. 191 00:08:20,180 --> 00:08:21,720 Há sempre coisas o que podemos fazer melhor. 192 00:08:21,720 --> 00:08:23,490 Sempre que eu codificar um programa, não há sempre algo que eu 193 00:08:23,490 --> 00:08:24,800 poderia ter feito melhor. 194 00:08:24,800 --> 00:08:28,740 >> Então, ao invés de dizer que você começa um período de cinco o tempo todo em tudo e fez 195 00:08:28,740 --> 00:08:31,960 tudo perfeito, eu não acho que qualquer de nós realmente acreditamos que nós - ou 196 00:08:31,960 --> 00:08:34,830 Felizmente, nós não fazemos tudo aperfeiçoar o tempo todo. 197 00:08:34,830 --> 00:08:37,010 Então não se preocupe se você não recebi cinco. 198 00:08:37,010 --> 00:08:40,470 A cinco não mapeia para um A, um quatro não mapeia para um B, três não 199 00:08:40,470 --> 00:08:42,950 não mapa em uma C. Isso não é como as pontuações trabalhar. 200 00:08:42,950 --> 00:08:48,140 >> Como Davi já disse muitas vezes, em final do semestre todas as suas pontuações e 201 00:08:48,140 --> 00:08:53,390 entrada de mim, seu TF, se reúnem e determinar a classificação final para você. 202 00:08:53,390 --> 00:08:56,760 Mas, novamente, não é cinco, A, quatro, B, et cetera. 203 00:08:56,760 --> 00:09:01,150 Então eu vou ter grandes expectativas para vocês. 204 00:09:01,150 --> 00:09:03,670 Vou esperar um bom problema conjuntos e eu vou dar 205 00:09:03,670 --> 00:09:05,010 o feedback como tal. 206 00:09:05,010 --> 00:09:07,430 E não vai dizer que você é indo para obter um grau pior. 207 00:09:07,430 --> 00:09:09,760 Está classificada em termos de o seu progresso de semana 208 00:09:09,760 --> 00:09:11,260 zero para o final do curso. 209 00:09:11,260 --> 00:09:17,190 >> E, finalmente, em termos de alta expectativas em sala de aula, eu adoro quando 210 00:09:17,190 --> 00:09:18,460 as pessoas participam. 211 00:09:18,460 --> 00:09:23,180 Entendo que algumas pessoas se sentem mais ou menos confortável participante. 212 00:09:23,180 --> 00:09:26,050 Outras pessoas estão participando não levantando a mão e 213 00:09:26,050 --> 00:09:27,320 falando o tempo todo. 214 00:09:27,320 --> 00:09:30,570 Mas nesta classe vão ser fazendo uma série de pequenos problemas, um monte 215 00:09:30,570 --> 00:09:33,770 de mini perguntas, e, em seguida, alguns maiores problemas de codificação. 216 00:09:33,770 --> 00:09:36,760 Então, definitivamente trabalhar estes exercícios fora quando fazê-las em seu computador ou em 217 00:09:36,760 --> 00:09:37,900 uma folha de papel. 218 00:09:37,900 --> 00:09:40,933 >> Mas eu também vou te dar algum tempo antes Alguém sempre tem que responder a algumas 219 00:09:40,933 --> 00:09:42,220 das perguntas que eu peço. 220 00:09:42,220 --> 00:09:44,930 Então porque eu vou dar-lhe algum tempo para pensar sobre isso, porque nós vamos 221 00:09:44,930 --> 00:09:49,380 fazer as coisas de parceiros, às vezes, Vou esperar que todos 222 00:09:49,380 --> 00:09:52,150 para ser contratado um pouco. 223 00:09:52,150 --> 00:09:56,030 E por falta de um termo melhor, não provavelmente será chamada fria, que 224 00:09:56,030 --> 00:09:59,045 é o lugar onde todo mundo vai ter a chance pensar sobre a resposta, e, em seguida, 225 00:09:59,045 --> 00:10:01,150 Eu ligo para você, e, em seguida, você vai dizer a resposta. 226 00:10:01,150 --> 00:10:05,200 >> Não se preocupe ou se assustar com isso. 227 00:10:05,200 --> 00:10:08,610 Já fiz isso no passado e nós encontramos que é muito mais bem-sucedido, 228 00:10:08,610 --> 00:10:11,810 também ler a pesquisa educacional em que a determinar se era ou não um 229 00:10:11,810 --> 00:10:12,640 boa tática. 230 00:10:12,640 --> 00:10:15,790 É muito útil, especialmente se você dar aos alunos tempo para pensar sobre o 231 00:10:15,790 --> 00:10:20,070 respostas e não torná-los apenas vir e dizer isso logo de cara. 232 00:10:20,070 --> 00:10:22,620 Mas se você não se sentir confortável responder, eu também sou muito bom em 233 00:10:22,620 --> 00:10:25,370 sentindo que fora, e nós não vamos colocá-lo no local, especialmente em 234 00:10:25,370 --> 00:10:28,240 a câmera, apesar de nenhum dos você está na câmera agora. 235 00:10:28,240 --> 00:10:32,250 >> Portanto, estas são as normas que eu tenho. 236 00:10:32,250 --> 00:10:34,670 Só mais uma coisa ao longo das linhas de encontrar no meio. 237 00:10:34,670 --> 00:10:36,490 Eu vou dar a vocês um monte de feedback. 238 00:10:36,490 --> 00:10:38,310 Por favor, me dê um feedback bem. 239 00:10:38,310 --> 00:10:46,190 Há um site, sayat.me/cs50. 240 00:10:46,190 --> 00:10:48,380 Portanto, é um feedback honesto. 241 00:10:48,380 --> 00:10:50,730 Se você quer dar a ele durante a seção, Eu recebo um e-mail sempre que isso acontece. 242 00:10:50,730 --> 00:10:53,820 Vamos fazer uma pausa um pouco, então eu vou olhar através do feedback depois. 243 00:10:53,820 --> 00:10:55,970 Se você tiver qualquer feedback, por favor, dê-me lá. 244 00:10:55,970 --> 00:11:01,380 >> Se você me dar feedback sobre o Q, que é maravilhoso, mas esse é o guia 245 00:11:01,380 --> 00:11:02,570 o que você faz no final. 246 00:11:02,570 --> 00:11:05,690 Mas isso vai ser no final do semestre para Eu não vou ser capaz de tirar qualquer um que 247 00:11:05,690 --> 00:11:08,620 feedback e transformá-lo em ensinar vocês melhor. 248 00:11:08,620 --> 00:11:11,020 Então, por favor, se você tem qualquer feedback, dê para mim. 249 00:11:11,020 --> 00:11:12,010 Eu amo feedback. 250 00:11:12,010 --> 00:11:14,490 Back to FOP, temos o feedback o tempo todo. 251 00:11:14,490 --> 00:11:18,610 >> Você pode me dar vantagens, coisas boas, deltas, coisas que eu posso melhorar. 252 00:11:18,610 --> 00:11:20,600 Você pode comentar sobre minhas roupas. 253 00:11:20,600 --> 00:11:24,170 Isso não vai ser tão útil, mas você é bem-vindos para comentar sobre qualquer e 254 00:11:24,170 --> 00:11:24,570 tudo. 255 00:11:24,570 --> 00:11:26,280 Por favor, por favor, me dê feedback. 256 00:11:26,280 --> 00:11:28,740 Eu valorizo ​​muito isso e Significa muito para mim. 257 00:11:28,740 --> 00:11:31,760 258 00:11:31,760 --> 00:11:33,280 >> Mais uma norma, divertido. 259 00:11:33,280 --> 00:11:34,530 Nós vamos ter um monte de diversão. 260 00:11:34,530 --> 00:11:36,930 Espero que neste curso, você vai tem um monte de diversão. 261 00:11:36,930 --> 00:11:38,780 Teremos doces na seção. 262 00:11:38,780 --> 00:11:40,040 Teremos música. 263 00:11:40,040 --> 00:11:45,510 Estaremos espero conhecer um outra um pouco bem, então eu quero 264 00:11:45,510 --> 00:11:47,690 que este seja um divertimento, experiência envolvente. 265 00:11:47,690 --> 00:11:50,890 >> Eu sei que alguns de vocês já dormiram em as palestras que você teve hoje mais cedo, 266 00:11:50,890 --> 00:11:53,750 por isso espero que não vai ser agora o caso. 267 00:11:53,750 --> 00:11:55,960 E se é o caso agora, apenas não ronco porque isso poderia 268 00:11:55,960 --> 00:11:57,580 ser travado na câmera. 269 00:11:57,580 --> 00:11:58,770 Doce. 270 00:11:58,770 --> 00:12:04,020 Quaisquer dúvidas, comentários ou preocupações Antes de passar qualquer coisa temos 271 00:12:04,020 --> 00:12:05,270 falou? 272 00:12:05,270 --> 00:12:08,620 273 00:12:08,620 --> 00:12:11,350 Grande. 274 00:12:11,350 --> 00:12:14,830 >> Então, nós estamos indo para ir em matrizes primeiro. 275 00:12:14,830 --> 00:12:17,140 Isto é como você fazer um array. 276 00:12:17,140 --> 00:12:18,410 Nós já vimos isso antes. 277 00:12:18,410 --> 00:12:21,830 Você tem um tipo de dados, você tem um nome, e então você tem um tamanho. 278 00:12:21,830 --> 00:12:24,430 Bem aqui, eu crio duas matrizes. 279 00:12:24,430 --> 00:12:30,360 O primeiro é um conjunto de caracteres, e tem 26 espaços. 280 00:12:30,360 --> 00:12:33,790 O segundo é um array de pontuação, e tem três 281 00:12:33,790 --> 00:12:35,390 espaços de três inteiros. 282 00:12:35,390 --> 00:12:35,827 Sim? 283 00:12:35,827 --> 00:12:38,200 >> ALUNO: São todos esses slides disponível em algum lugar para nós? 284 00:12:38,200 --> 00:12:38,850 >> JASON HIRSCHHORN: Ótima pergunta. 285 00:12:38,850 --> 00:12:40,650 A pergunta era: são todos Esses slides disponíveis? 286 00:12:40,650 --> 00:12:40,920 Sim. 287 00:12:40,920 --> 00:12:43,420 Todas estas lâminas estará disponível, e, no futuro, eu vou enviá-las para 288 00:12:43,420 --> 00:12:44,640 antes seção. 289 00:12:44,640 --> 00:12:47,340 Hoje, porém, porque este é o primeiro semana, tivemos um início tardio. 290 00:12:47,340 --> 00:12:49,675 Por isso, normalmente, você vai ter esses slides, mas elas estarão disponíveis on-line e 291 00:12:49,675 --> 00:12:52,420 Eu vou enviá-las para você logo após a aula. 292 00:12:52,420 --> 00:12:54,140 Quaisquer outras perguntas? 293 00:12:54,140 --> 00:13:01,330 >> Então, novamente, as matrizes são caixas, por falta de uma palavra melhor, que detêm múltipla 294 00:13:01,330 --> 00:13:06,420 elementos de um tipo de dados, e eles estão ao lado do outro na memória. 295 00:13:06,420 --> 00:13:11,370 E assim, mais uma vez, esta é a forma como você pode fazer dois tipos de matrizes. 296 00:13:11,370 --> 00:13:15,090 >> Então, depois que você fez com sua matriz que a primeira linha - pontuação int, suporte 297 00:13:15,090 --> 00:13:17,430 três, perto do suporte - você quer inicializar. 298 00:13:17,430 --> 00:13:19,050 Você quer colocar alguns valores lá. 299 00:13:19,050 --> 00:13:24,660 E é assim que você colocar alguns valores em lá, basta escolher o indice e 300 00:13:24,660 --> 00:13:25,670 escrever o número. 301 00:13:25,670 --> 00:13:27,130 Vamos tirar esta na placa. 302 00:13:27,130 --> 00:13:28,270 Todos podem ver? 303 00:13:28,270 --> 00:13:29,030 Todo mundo pode ver. 304 00:13:29,030 --> 00:13:30,790 Doce. 305 00:13:30,790 --> 00:13:36,550 >> Então isso vai ser meu array chamado Scores. 306 00:13:36,550 --> 00:13:37,730 Como você pode ver, é o tamanho três. 307 00:13:37,730 --> 00:13:39,210 Há três caixas de lá. 308 00:13:39,210 --> 00:13:43,120 Cada um pode caber o que tipo de tipo de dados? 309 00:13:43,120 --> 00:13:43,790 >> ALUNO: Integer. 310 00:13:43,790 --> 00:13:45,250 >> JASON HIRSCHHORN: Um inteiro em um presente. 311 00:13:45,250 --> 00:13:48,790 Nós escrevemos dezenas int, ea primeira palavra é o tipo de dados que vai 312 00:13:48,790 --> 00:13:50,910 ir nas caixas dessa matriz. 313 00:13:50,910 --> 00:13:52,160 Então, eu posso encaixar três. 314 00:13:52,160 --> 00:13:54,880 315 00:13:54,880 --> 00:13:57,000 Por que eu tenho zero até lá na placa? 316 00:13:57,000 --> 00:13:59,240 Por que dizer pontuação de zero é igual a 1? 317 00:13:59,240 --> 00:14:02,090 318 00:14:02,090 --> 00:14:03,180 Lembre-me de seu nome. 319 00:14:03,180 --> 00:14:03,470 >> ALUNO: Kurt. 320 00:14:03,470 --> 00:14:04,070 >> JASON HIRSCHHORN: Kurt. 321 00:14:04,070 --> 00:14:04,480 >> ESTUDANTE: sim. 322 00:14:04,480 --> 00:14:04,920 >> JASON HIRSCHHORN: Por quê? 323 00:14:04,920 --> 00:14:07,230 >> ALUNO: Porque o primeiro índice é zero, vamos começar a contar do zero. 324 00:14:07,230 --> 00:14:08,480 >> JASON HIRSCHHORN: Então, vamos começar a contar do zero. 325 00:14:08,480 --> 00:14:09,580 Isto é exatamente correto. 326 00:14:09,580 --> 00:14:12,340 Esta é a parte confusa e viagem vontade você, especialmente quando você está 327 00:14:12,340 --> 00:14:14,900 tentando percorrer matrizes, o que vamos fazer daqui a pouco. 328 00:14:14,900 --> 00:14:15,980 Começamos a contar do zero. 329 00:14:15,980 --> 00:14:19,170 Então, se eu quiser se referir ao primeiro caixa, não é uma caixa. 330 00:14:19,170 --> 00:14:22,290 Infelizmente, é caixa zero. 331 00:14:22,290 --> 00:14:26,460 A segunda é uma caixa, e no presente caso, o terceiro é uma caixa de duas. 332 00:14:26,460 --> 00:14:28,700 >> E sobre a caixa três? 333 00:14:28,700 --> 00:14:30,670 Onde caixa três é? 334 00:14:30,670 --> 00:14:34,750 Ou se eu quero fazer contagens, suporte três, faixa estreita, o que é isso? 335 00:14:34,750 --> 00:14:37,650 336 00:14:37,650 --> 00:14:39,760 Então, você disse que o personagem nulo. 337 00:14:39,760 --> 00:14:41,600 Quaisquer outros pensamentos? 338 00:14:41,600 --> 00:14:44,590 O que é o suporte de marcar três suporte? 339 00:14:44,590 --> 00:14:48,045 >> ALUNO: Realmente não existe porque só definida como pontuação, 340 00:14:48,045 --> 00:14:49,370 suporte de três. 341 00:14:49,370 --> 00:14:51,400 >> JASON HIRSCHHORN: Então você diz ele realmente não existe. 342 00:14:51,400 --> 00:14:54,230 Em alguns casos, quando estamos lidando com cordas, geralmente nós vamos colocar um valor nulo 343 00:14:54,230 --> 00:14:54,790 personagem no final. 344 00:14:54,790 --> 00:14:56,100 Nós vamos chegar a isso em um segundo. 345 00:14:56,100 --> 00:15:01,020 Mas, neste caso, não há há uma terceira caixa aqui. 346 00:15:01,020 --> 00:15:06,390 Assim, a última caixa em qualquer matriz tamanho é menos 1. 347 00:15:06,390 --> 00:15:11,310 Então, se temos uma matriz de tamanho n, a primeira caixa está no zero, a última é 348 00:15:11,310 --> 00:15:12,700 em n menos 1. 349 00:15:12,700 --> 00:15:14,970 E, neste caso, ela não existe. 350 00:15:14,970 --> 00:15:17,970 Há algo aqui em memória, mas não é o nosso. 351 00:15:17,970 --> 00:15:18,460 Nós não ele próprio. 352 00:15:18,460 --> 00:15:19,570 Nós não pedimos para ele. 353 00:15:19,570 --> 00:15:22,606 Portanto, se tentar acessá-lo, o que vamos fazer um pouco, estamos indo provavelmente para 354 00:15:22,606 --> 00:15:24,970 entrar em apuros. 355 00:15:24,970 --> 00:15:29,180 >> Neste caso, estou inicializando meu matriz com três variáveis. 356 00:15:29,180 --> 00:15:36,195 Estamos colocando uma em caixa zero, um dois na caixa um, e três na caixa dois. 357 00:15:36,195 --> 00:15:39,280 Alguém tem alguma dúvida sobre inicializar um array? 358 00:15:39,280 --> 00:15:44,540 359 00:15:44,540 --> 00:15:46,970 >> Então nós fomos ao longo deste agora. 360 00:15:46,970 --> 00:15:52,725 Scores, suporte de três, perto do suporte, que não existe. 361 00:15:52,725 --> 00:15:58,130 Estamos a zero indexados em ciência da computação, então começamos a contar do zero. 362 00:15:58,130 --> 00:16:01,860 A última caixa disponível para nós, é a terceira caixa, mas a caixa é chamado 363 00:16:01,860 --> 00:16:03,110 número dois. 364 00:16:03,110 --> 00:16:05,790 365 00:16:05,790 --> 00:16:09,710 >> Lá em baixo, esta é uma alternativa maneira de inicializar arrays. 366 00:16:09,710 --> 00:16:13,410 Assim, em vez de criar uma matriz sobre linha, preenchendo a primeira caixa e, em seguida 367 00:16:13,410 --> 00:16:17,070 a segunda caixa, em seguida, a terceira caixa, você pode fazer tudo em uma única linha. 368 00:16:17,070 --> 00:16:19,040 Então, nessa linha, ambas as matrizes. 369 00:16:19,040 --> 00:16:23,460 Isso cria a mesma matriz exata como o que nós criamos aqui, mas 370 00:16:23,460 --> 00:16:24,710 só faz isso em uma linha. 371 00:16:24,710 --> 00:16:29,740 372 00:16:29,740 --> 00:16:31,360 >> Agora nós criamos nossa matriz. 373 00:16:31,360 --> 00:16:34,100 Normalmente, uma vez que você criar uma matriz, você quero fazer alguma coisa com ele, se 374 00:16:34,100 --> 00:16:38,430 que é preenchê-lo ou fazer as coisas de fora e imprimi-los na tela. 375 00:16:38,430 --> 00:16:42,270 Neste caso, estamos passando por nossa conjunto pontuações, que inicializado em 376 00:16:42,270 --> 00:16:44,740 a primeira linha aqui em cinza. 377 00:16:44,740 --> 00:16:49,600 E, em seguida, na segunda linha, nós começamos iteração através da matriz. 378 00:16:49,600 --> 00:16:52,640 Alguém tem alguma dúvida sobre a estrutura de um loop? 379 00:16:52,640 --> 00:16:55,250 380 00:16:55,250 --> 00:16:56,400 >> Então este é o loop for. 381 00:16:56,400 --> 00:16:59,530 Nós temos nossa condição inicial, e, em seguida, nossa condição final, e então nós 382 00:16:59,530 --> 00:17:01,160 iteração, i, cada loop. 383 00:17:01,160 --> 00:17:05,579 E nas chaves no presente para loop, o que acontece se eu fosse para executar 384 00:17:05,579 --> 00:17:06,290 este programa? 385 00:17:06,290 --> 00:17:10,410 Alguém pode me dizer o que teríamos? 386 00:17:10,410 --> 00:17:11,589 [? Matu? ?] 387 00:17:11,589 --> 00:17:13,819 >> Matu: Imprima todos os resultados em cada linha. 388 00:17:13,819 --> 00:17:14,900 Seria imprimir cada pontuação em uma linha separada. 389 00:17:14,900 --> 00:17:16,300 >> JASON HIRSCHHORN: O que exatamente seria imprimir? 390 00:17:16,300 --> 00:17:19,790 >> ALUNO: Seria imprimir um, depois dois, depois três. 391 00:17:19,790 --> 00:17:20,235 >> JASON HIRSCHHORN: Exatamente. 392 00:17:20,235 --> 00:17:23,490 Ele iria imprimir um, depois dois, depois três, cada um em linhas separadas, porque 393 00:17:23,490 --> 00:17:27,810 vamos através da matriz e você vai ver que o segundo, o printf 394 00:17:27,810 --> 00:17:29,275 declaração, pontuações i. 395 00:17:29,275 --> 00:17:32,880 Assim, na primeira rodada por meio de nosso para loop, i é igual a zero, o que significa que estamos 396 00:17:32,880 --> 00:17:34,640 ficando o valor em pontuação de zero - 397 00:17:34,640 --> 00:17:36,900 que, se voltar para nosso diagrama, é um - 398 00:17:36,900 --> 00:17:38,630 e enchimento em - 399 00:17:38,630 --> 00:17:39,700 oh, ele diz que c. 400 00:17:39,700 --> 00:17:41,680 Isso deve ser% d. 401 00:17:41,680 --> 00:17:43,970 Vou corrigir isso em um pouco quando Eu entrego isso para vocês. 402 00:17:43,970 --> 00:17:48,670 Mas nós estamos apresentando um inteiro por isso deve ser% d aqui, não% c. 403 00:17:48,670 --> 00:17:50,340 O que é% c para? 404 00:17:50,340 --> 00:17:50,790 >> ESTUDANTE: Caráter. 405 00:17:50,790 --> 00:17:52,680 >> JASON HIRSCHHORN: Caráter, exatamente. 406 00:17:52,680 --> 00:17:53,690 O que é o outro? 407 00:17:53,690 --> 00:17:56,260 Se você não quer fazer d% para um inteiro, o que mais você pode fazer? 408 00:17:56,260 --> 00:17:57,000 >> ALUNO: i. 409 00:17:57,000 --> 00:17:59,180 >> JASON HIRSCHHORN:% i, exatamente. 410 00:17:59,180 --> 00:18:01,660 Então, qualquer dúvida sobre a iteração através da matriz? 411 00:18:01,660 --> 00:18:05,500 412 00:18:05,500 --> 00:18:07,800 Então o que acontece se não fizermos isso? 413 00:18:07,800 --> 00:18:10,290 Em vez de fazer i é inferior a três, nós i é menos 414 00:18:10,290 --> 00:18:11,390 que ou igual a três. 415 00:18:11,390 --> 00:18:13,420 O que acontece quando executar esse código? 416 00:18:13,420 --> 00:18:17,510 417 00:18:17,510 --> 00:18:18,940 Sim, Annie? 418 00:18:18,940 --> 00:18:22,030 >> ALUNO: Eles estão indo para imprimir coisas estranhas na quarta linha. 419 00:18:22,030 --> 00:18:23,850 >> JASON HIRSCHHORN: Então você disse, é vai imprimir coisas estranhas no 420 00:18:23,850 --> 00:18:24,390 quarta linha? 421 00:18:24,390 --> 00:18:25,750 Alguém tem uma resposta à sua pergunta? 422 00:18:25,750 --> 00:18:28,940 423 00:18:28,940 --> 00:18:33,160 Assim, as chances são de que, quando chegamos ao - 424 00:18:33,160 --> 00:18:36,700 Então, na quarta rodada através do nosso para loop, assim como você pensou, Annie, 425 00:18:36,700 --> 00:18:39,430 vai ser pontuações faixa três, que que já descobriu não 426 00:18:39,430 --> 00:18:41,990 existe, e nós vamos tentar e acessar isso, imprimi-lo 427 00:18:41,990 --> 00:18:43,350 fora, use-o de alguma forma. 428 00:18:43,350 --> 00:18:46,060 Assim, o computador provavelmente ficar com raiva de nós. 429 00:18:46,060 --> 00:18:46,760 Você está absolutamente certo. 430 00:18:46,760 --> 00:18:48,830 >> Pode fechar o programa completamente. 431 00:18:48,830 --> 00:18:52,222 Pode imprimir algo muito estranho. 432 00:18:52,222 --> 00:18:53,420 Você não pode dizer com certeza. 433 00:18:53,420 --> 00:18:56,210 As probabilidades são de que provavelmente vai ficar bravo com você e só sair imediatamente. 434 00:18:56,210 --> 00:19:00,100 >> Mas este é um erro comum que você vai ter onde você está apenas fora por um de 435 00:19:00,100 --> 00:19:05,110 o fim, e esse é um problema que vai praga que em toda a sua codificação. 436 00:19:05,110 --> 00:19:09,350 437 00:19:09,350 --> 00:19:14,150 Uma maneira que eu gosto de fazer é apenas em um quadro branco, passar por cada iteração 438 00:19:14,150 --> 00:19:18,190 do laço na mão ou no papel para ver o que está acontecendo, e então você 439 00:19:18,190 --> 00:19:20,440 geralmente percebem, oh wait, eu não deveria ter ido para a menor ou 440 00:19:20,440 --> 00:19:20,870 igual a três. 441 00:19:20,870 --> 00:19:24,730 Eu deveria ter parado a dois, que é o que acontece se a sua condição é menos 442 00:19:24,730 --> 00:19:26,206 do que três. 443 00:19:26,206 --> 00:19:29,120 Quaisquer dúvidas tão longe? 444 00:19:29,120 --> 00:19:31,010 Doce. 445 00:19:31,010 --> 00:19:33,360 >> Então, todos vocês têm os seus computadores aberto. 446 00:19:33,360 --> 00:19:36,760 Nós vamos dar-lhe 2-3 minutos para escrever um programa que 447 00:19:36,760 --> 00:19:40,460 cria um array com os inteiros uma por cinco anos e, em seguida, imprime cada 448 00:19:40,460 --> 00:19:41,720 inteiro em uma nova linha. 449 00:19:41,720 --> 00:19:44,330 450 00:19:44,330 --> 00:19:46,000 E se você tiver alguma dúvida, levante a mão. 451 00:19:46,000 --> 00:19:48,140 Estou feliz em passar por aqui. 452 00:19:48,140 --> 00:19:50,630 Como eu disse, vamos dar três minutos para escrever isso. 453 00:19:50,630 --> 00:20:41,300 454 00:20:41,300 --> 00:20:45,110 Estão todos OK, se eu for a um nova janela e fechar isso? 455 00:20:45,110 --> 00:22:13,420 456 00:22:13,420 --> 00:22:15,520 >> Sinto muito se você não teve a chance para terminar, mas vamos fazê-lo 457 00:22:15,520 --> 00:22:17,310 juntos agora. 458 00:22:17,310 --> 00:22:23,640 Então, na tela, eu # include cs50.h, # include stdio.h. 459 00:22:23,640 --> 00:22:26,090 Alguém pode me dizer o que essas duas linhas fazem? 460 00:22:26,090 --> 00:22:32,250 461 00:22:32,250 --> 00:22:33,155 Michael? 462 00:22:33,155 --> 00:22:40,030 >> ALUNO: Incluem as bibliotecas CS50 que feito e que tem Steve 463 00:22:40,030 --> 00:22:44,210 salvo para que você possa usar para tornar sua vida mais fácil. 464 00:22:44,210 --> 00:22:46,820 >> JASON HIRSCHHORN: Então você disse que eles incluir as bibliotecas, uma que CS50 465 00:22:46,820 --> 00:22:51,230 feita, cs50.h, e um que é apenas padrão, vem com 466 00:22:51,230 --> 00:22:53,510 o pacote C, stdio.h. 467 00:22:53,510 --> 00:22:54,890 O que quer dizer incluir as bibliotecas, embora? 468 00:22:54,890 --> 00:22:55,770 Você pode ser um pouco mais específico? 469 00:22:55,770 --> 00:23:01,180 >> ALUNO: Ele faz com que você pode utilizar certas palavras de código para uma 470 00:23:01,180 --> 00:23:05,710 funcionar acontecer sem ter que ir e fazer a função c si mesmo. 471 00:23:05,710 --> 00:23:08,730 >> JASON HIRSCHHORN: Você pode dar-me um exemplo? 472 00:23:08,730 --> 00:23:11,160 >> ESTUDANTE: Como printf é aquele que você pode usar. 473 00:23:11,160 --> 00:23:11,860 >> JASON HIRSCHHORN: printf. 474 00:23:11,860 --> 00:23:14,680 Então você disse que printf é um daqueles funções em vez de ter que 475 00:23:14,680 --> 00:23:19,840 printf escrever em seu próprio país, printf é incluído na verdade em stdio.h, assim você 476 00:23:19,840 --> 00:23:22,010 só pode usá-lo e assumir que ele vai trabalhar. 477 00:23:22,010 --> 00:23:28,270 Em stdio.h, se você abriu o arquivo, seria incluir como printf 478 00:23:28,270 --> 00:23:31,620 obras, todo o código para printf? 479 00:23:31,620 --> 00:23:33,105 Por que você está balançando a cabeça? 480 00:23:33,105 --> 00:23:35,710 >> ALUNO: Porque o arquivo de cabeçalho apenas inclui a declaração da função. 481 00:23:35,710 --> 00:23:36,400 >> JASON HIRSCHHORN: Exatamente. 482 00:23:36,400 --> 00:23:39,680 O arquivo de cabeçalho apenas inclui declaração da função. 483 00:23:39,680 --> 00:23:42,950 Então, basicamente, quando você compilar isso, bateu Faça a contagem, que vamos fazer em um 484 00:23:42,950 --> 00:23:48,070 segundo, o compilador sabe que se você usar printf, printf existe. 485 00:23:48,070 --> 00:23:49,370 Vai ser definido em algum lugar. 486 00:23:49,370 --> 00:23:51,200 Não é um problema para você usá-lo. 487 00:23:51,200 --> 00:23:55,490 E então, mais tarde, que vai incluir a zeros e uns que realmente contêm 488 00:23:55,490 --> 00:23:58,360 printf da implementação e fundi-los com o seu código. 489 00:23:58,360 --> 00:24:01,935 Como você se certificar de que inclui o uns e zeros para, por exemplo, obter corda? 490 00:24:01,935 --> 00:24:05,670 491 00:24:05,670 --> 00:24:07,210 >> ESTUDANTE: Obter corda está cs50.h. 492 00:24:07,210 --> 00:24:07,830 >> JASON HIRSCHHORN: Certo. 493 00:24:07,830 --> 00:24:11,110 Então, que diz ficar corda existe, declaração da função. 494 00:24:11,110 --> 00:24:15,410 Mas então os zeros e uns, o binário arquivo que realmente inclui a 495 00:24:15,410 --> 00:24:17,370 implementação de corda get? 496 00:24:17,370 --> 00:24:19,310 Como você se certificar de que vai com seu programa? 497 00:24:19,310 --> 00:24:23,220 >> ALUNO: Passe o vinculador o argumento de linha de comando. 498 00:24:23,220 --> 00:24:25,430 >> JASON HIRSCHHORN: Passe o ligador no argumento de linha de comando. 499 00:24:25,430 --> 00:24:26,700 Como você faz isso? 500 00:24:26,700 --> 00:24:29,730 >> ALUNO: É a l-linha no bumbum 501 00:24:29,730 --> 00:24:30,480 >> JASON HIRSCHHORN: Exatamente. 502 00:24:30,480 --> 00:24:32,900 Você diz-l CS50, certo? 503 00:24:32,900 --> 00:24:34,940 Isso inclui os uns e zeros. 504 00:24:34,940 --> 00:24:36,460 >> ALUNO: Mas Fazer faz que, para você, certo? 505 00:24:36,460 --> 00:24:37,010 >> JASON HIRSCHHORN: Exatamente. 506 00:24:37,010 --> 00:24:40,390 Faça isso por você, mas, eventualmente, Você não terá que fazer, ou 507 00:24:40,390 --> 00:24:43,220 você vai ter que fazer uma fazer em seu próprio país, de modo que é um 508 00:24:43,220 --> 00:24:43,940 coisa boa para lembrar. 509 00:24:43,940 --> 00:24:47,350 Se você estava indo para usar um desses outras bibliotecas, não só você tem 510 00:24:47,350 --> 00:24:49,490 para escrever # include e em seguida, a biblioteca. 511 00:24:49,490 --> 00:24:51,420 Você também precisa vinculá-lo dentro 512 00:24:51,420 --> 00:24:54,480 E essas duas coisas são diferentes. L-CS50 é diferente 513 00:24:54,480 --> 00:24:59,260 de # include cs50.h. 514 00:24:59,260 --> 00:25:02,870 >> Então nós temos int main vazio encaracolados chaves, e agora vamos ao código 515 00:25:02,870 --> 00:25:03,590 dentro principal. 516 00:25:03,590 --> 00:25:07,090 A primeira linha que eu tenho aqui é um comentário que diz, criar uma matriz 517 00:25:07,090 --> 00:25:08,820 com ints de um a cinco. 518 00:25:08,820 --> 00:25:12,600 O que é uma boa palavra para descrever o que eu tenho agora na tela, apenas 519 00:25:12,600 --> 00:25:14,170 comentários dentro principal? 520 00:25:14,170 --> 00:25:15,722 O que nós chamamos isso? 521 00:25:15,722 --> 00:25:16,820 >> ALUNO: Pseudocódigo. 522 00:25:16,820 --> 00:25:17,840 >> JASON HIRSCHHORN: Pseudocódigo. 523 00:25:17,840 --> 00:25:18,420 Obrigado, Jeffrey. 524 00:25:18,420 --> 00:25:19,540 Isto é exatamente correto. 525 00:25:19,540 --> 00:25:20,005 Pseudocódigo. 526 00:25:20,005 --> 00:25:22,854 Vocês viram pseudocódigo antes? 527 00:25:22,854 --> 00:25:28,340 Levante sua mão se você já usou pseudocódigo antes de definir um problema. 528 00:25:28,340 --> 00:25:29,400 Cerca de metade de vocês. 529 00:25:29,400 --> 00:25:32,700 >> Eu recomendo o uso pseudocódigo para quebrar os problemas em 530 00:25:32,700 --> 00:25:35,210 menor, mais fácil de morder pedaços. 531 00:25:35,210 --> 00:25:38,630 Além disso, se você fizer o pseudocódigo, você ter os seus comentários já largamente 532 00:25:38,630 --> 00:25:40,760 embutido, assim você não tem que voltar e tentar descobrir 533 00:25:40,760 --> 00:25:42,450 o que você estava fazendo. 534 00:25:42,450 --> 00:25:44,730 Então, alguém pode me dar essa primeira linha para criar um array com ints um 535 00:25:44,730 --> 00:25:45,980 a cinco anos? 536 00:25:45,980 --> 00:25:48,700 537 00:25:48,700 --> 00:25:49,130 Você? 538 00:25:49,130 --> 00:25:53,350 >> ALUNO: Int e, em seguida, você pode chamar qualquer número, e depois quadrado 539 00:25:53,350 --> 00:25:54,830 suporte de cinco anos. 540 00:25:54,830 --> 00:25:57,820 >> JASON HIRSCHHORN: números para int, colchete cinco. 541 00:25:57,820 --> 00:25:59,160 >> ALUNO: Igual, e então chaves. 542 00:25:59,160 --> 00:26:00,830 >> JASON HIRSCHHORN: Igual, chaves. 543 00:26:00,830 --> 00:26:01,830 >> ALUNO: Um, dois, três, quatro. 544 00:26:01,830 --> 00:26:05,566 >> JASON HIRSCHHORN: Um, dois, três, quatro, cinco. 545 00:26:05,566 --> 00:26:07,390 >> ALUNO: E então chaves e, em seguida, ponto e vírgula. 546 00:26:07,390 --> 00:26:09,240 >> JASON HIRSCHHORN: e Curly chaves e ponto e vírgula. 547 00:26:09,240 --> 00:26:10,330 Excelente. 548 00:26:10,330 --> 00:26:12,210 Imprimir cada int em uma nova linha. 549 00:26:12,210 --> 00:26:17,140 Pode alguém dar me que o código, por favor? 550 00:26:17,140 --> 00:26:17,530 [? Matu? ?] 551 00:26:17,530 --> 00:26:18,560 Vá em frente. 552 00:26:18,560 --> 00:26:20,440 >> ESTUDANTE: For ( 553 00:26:20,440 --> 00:26:21,750 >> JASON HIRSCHHORN: For ( 554 00:26:21,750 --> 00:26:23,740 >> ALUNO: int i = 0 555 00:26:23,740 --> 00:26:26,070 >> JASON HIRSCHHORN: int i = 0 556 00:26:26,070 --> 00:26:28,190 >> ALUNO: Ponto e vírgula i inferior a cinco. 557 00:26:28,190 --> 00:26:31,680 >> JASON HIRSCHHORN: Ponto e vírgula, i inferior a 5. 558 00:26:31,680 --> 00:26:33,600 >> ALUNO: Ponto e vírgula, i + +. 559 00:26:33,600 --> 00:26:35,140 >> JASON HIRSCHHORN: Ponto e vírgula, i + +. 560 00:26:35,140 --> 00:26:37,720 >> ALUNO: parênteses fechados, em seguida, chave de abertura. 561 00:26:37,720 --> 00:26:39,410 >> JASON HIRSCHHORN: parênteses fechados e duas chaves. 562 00:26:39,410 --> 00:26:40,510 Dentro das chaves? 563 00:26:40,510 --> 00:26:47,640 >> ALUNO: E então printf "% d / n" 564 00:26:47,640 --> 00:26:48,695 >> JASON HIRSCHHORN: Desculpe, espera. 565 00:26:48,695 --> 00:26:52,330 Printf "% d / n, citações fechada. 566 00:26:52,330 --> 00:26:55,980 >> ALUNO: E então citação fechado, vírgula, contagem, suporte i. 567 00:26:55,980 --> 00:26:58,350 >> JASON HIRSCHHORN: Comma, contagem, suporte i. 568 00:26:58,350 --> 00:26:59,970 >> ESTUDANTE: Desculpe, números suporte i. 569 00:26:59,970 --> 00:27:01,416 >> JASON HIRSCHHORN: Números, suporte de i. 570 00:27:01,416 --> 00:27:03,200 >> ALUNO: Desculpe. 571 00:27:03,200 --> 00:27:04,750 E, em seguida, fechado entre parênteses, ponto e vírgula. 572 00:27:04,750 --> 00:27:07,156 >> JASON HIRSCHHORN: Closed parênteses, ponto e vírgula. 573 00:27:07,156 --> 00:27:08,680 Vou guardar esse. 574 00:27:08,680 --> 00:27:12,670 Vamos fazer a conta. 575 00:27:12,670 --> 00:27:14,742 E como faço para executar o número? 576 00:27:14,742 --> 00:27:16,470 >> ALUNO: barra invertida. 577 00:27:16,470 --> 00:27:17,180 >> ALUNO: Dot barra - 578 00:27:17,180 --> 00:27:18,050 >> JASON HIRSCHHORN:. / Contar, exatamente. 579 00:27:18,050 --> 00:27:19,380 Obrigado. . / Contar. 580 00:27:19,380 --> 00:27:21,060 Um, dois, três, quatro, cinco em novas linhas. 581 00:27:21,060 --> 00:27:22,110 Parece que funcionou. 582 00:27:22,110 --> 00:27:23,200 Sim, Noah? 583 00:27:23,200 --> 00:27:26,660 >> ALUNO: Você também pode fazer igual ou igual a quatro, como i é inferior a 584 00:27:26,660 --> 00:27:27,630 ou igual a quatro? 585 00:27:27,630 --> 00:27:31,190 Existe alguma vantagem de fazer menos de cinco anos, ou apenas uma maneira diferente de 586 00:27:31,190 --> 00:27:31,610 escrevê-lo? 587 00:27:31,610 --> 00:27:35,280 >> JASON HIRSCHHORN: Então a questão é você poderia ter feito i é inferior ou 588 00:27:35,280 --> 00:27:37,450 igual a quatro, em vez de i é menor que cinco. 589 00:27:37,450 --> 00:27:38,935 Teria que ter trabalhado a mesma coisa? 590 00:27:38,935 --> 00:27:39,760 >> ALUNO: Deveria. 591 00:27:39,760 --> 00:27:39,860 >> JASON HIRSCHHORN: sim. 592 00:27:39,860 --> 00:27:41,660 É totalmente teria funcionam da mesma forma. 593 00:27:41,660 --> 00:27:44,780 Estilisticamente, é geralmente menor que, e você verá em um segundo quando 594 00:27:44,780 --> 00:27:48,160 nós cordas, você pode usar algo chamada strlen, que você já viu 595 00:27:48,160 --> 00:27:50,380 antes, para obter o comprimento da cadeia. 596 00:27:50,380 --> 00:27:54,090 E você não pode fazer menos do que ou igual strlen. 597 00:27:54,090 --> 00:27:56,500 Você poderia fazer menos do que ou igual strlen menos um. 598 00:27:56,500 --> 00:27:59,260 Então é só mais agradável para fazer menos do que strlen. 599 00:27:59,260 --> 00:28:00,240 Sim? 600 00:28:00,240 --> 00:28:03,270 >> ALUNO: E na real quizzes, fazer temos de fornecer comentários sobre o nosso 601 00:28:03,270 --> 00:28:04,620 código também? 602 00:28:04,620 --> 00:28:06,130 >> JASON HIRSCHHORN: A questão estava em testes, não é 603 00:28:06,130 --> 00:28:07,760 tem que fornecer comentários? 604 00:28:07,760 --> 00:28:12,050 Então, vamos falar mais sobre testes quando eles vêm para cima, mas em geral, um bom 605 00:28:12,050 --> 00:28:14,530 regra de ouro é sempre que você estiver escrever código, fornecer comentários. 606 00:28:14,530 --> 00:28:18,130 Se você obter o código errado, mas o comentar direito, você pode obter alguns 607 00:28:18,130 --> 00:28:22,280 crédito tanto de mim se eu estava classificação você em um conjunto de problemas ou em um quiz. 608 00:28:22,280 --> 00:28:24,660 Então, os comentários são sempre bom para oferecer. 609 00:28:24,660 --> 00:28:25,040 Doce. 610 00:28:25,040 --> 00:28:25,460 Conde. 611 00:28:25,460 --> 00:28:26,720 Excelente trabalho. 612 00:28:26,720 --> 00:28:28,570 Vamos seguir em frente. 613 00:28:28,570 --> 00:28:29,920 >> Strings. 614 00:28:29,920 --> 00:28:30,630 Strings. 615 00:28:30,630 --> 00:28:31,730 Nós já vimos isso antes na palestra. 616 00:28:31,730 --> 00:28:33,390 Isso fundiu minha mente quando eu encontrado pela primeira vez isso. 617 00:28:33,390 --> 00:28:37,240 Provavelmente não explodir de ninguém mente aqui, mas isso é OK. 618 00:28:37,240 --> 00:28:41,260 >> Strings são arrays de caracteres, e eles acabam com, como você disse antes, 619 00:28:41,260 --> 00:28:45,710 o terminador nulo, o que é este personagem / 0. 620 00:28:45,710 --> 00:28:47,740 Se vamos traçar uma corda no conselho, vamos desenhá-lo aqui. 621 00:28:47,740 --> 00:28:53,080 622 00:28:53,080 --> 00:28:56,420 Então, quanto tempo é essa corda? 623 00:28:56,420 --> 00:28:56,680 Desculpe. 624 00:28:56,680 --> 00:28:57,660 Quanto tempo dura essa string? 625 00:28:57,660 --> 00:28:57,910 >> Estudante: [inaudível]. 626 00:28:57,910 --> 00:28:59,010 >> JASON HIRSCHHORN: Quatro? 627 00:28:59,010 --> 00:28:59,880 Por que é quatro? 628 00:28:59,880 --> 00:29:02,240 >> ALUNO: Porque o quinto lugar é para o caractere nulo. 629 00:29:02,240 --> 00:29:04,070 >> JASON HIRSCHHORN: Então o quinto lugar é para o caractere nulo. 630 00:29:04,070 --> 00:29:07,130 Então, se eu fosse para executar strlen em isso, ele me daria quatro. 631 00:29:07,130 --> 00:29:07,850 Corrigir. 632 00:29:07,850 --> 00:29:11,640 E a matriz, no entanto, se eu fosse inicializar essa matriz, quantos espaços 633 00:29:11,640 --> 00:29:13,444 eu teria que pedir? 634 00:29:13,444 --> 00:29:13,821 >> ALUNO: Five. 635 00:29:13,821 --> 00:29:14,200 >> JASON HIRSCHHORN: Five. 636 00:29:14,200 --> 00:29:17,650 Eu teria que perguntar para cinco, mas eu posso só colocar quatro personagens aqui 637 00:29:17,650 --> 00:29:19,750 porque eu preciso colocar isso nulo terminador no final. 638 00:29:19,750 --> 00:29:25,260 Então vamos escrever em "ohai" e colocar o terminador nulo no final. 639 00:29:25,260 --> 00:29:31,820 640 00:29:31,820 --> 00:29:34,940 Vamos dizer que esta é uma string s é igual a este. 641 00:29:34,940 --> 00:29:36,610 Qual é a faixa de zero s? 642 00:29:36,610 --> 00:29:40,210 643 00:29:40,210 --> 00:29:41,550 s suporte zero, Annie? 644 00:29:41,550 --> 00:29:41,950 >> ALUNO: O. 645 00:29:41,950 --> 00:29:45,400 >> JASON HIRSCHHORN: O, exatamente. s um suporte? 646 00:29:45,400 --> 00:29:48,200 s suporte de cinco anos? 647 00:29:48,200 --> 00:29:52,670 648 00:29:52,670 --> 00:29:53,955 s suporte de cinco anos? 649 00:29:53,955 --> 00:29:54,740 >> ALUNO: Não existe. 650 00:29:54,740 --> 00:29:55,040 >> JASON HIRSCHHORN: Não existe. 651 00:29:55,040 --> 00:29:57,050 Exatamente. 652 00:29:57,050 --> 00:29:57,940 Legal. 653 00:29:57,940 --> 00:30:03,120 Qualquer dúvida sobre a compreensão strings como arrays de caracteres? 654 00:30:03,120 --> 00:30:03,870 OK, então. 655 00:30:03,870 --> 00:30:05,440 Mais um programa para vocês. 656 00:30:05,440 --> 00:30:09,190 Escreva um programa que pede ao usuário para uma string e então mostra cada 657 00:30:09,190 --> 00:30:11,880 personagem em uma nova linha. 658 00:30:11,880 --> 00:30:14,160 Então, vamos levar três minutos para escrever Neste programa, e depois vamos codificá-lo 659 00:30:14,160 --> 00:30:15,410 como um grupo. 660 00:30:15,410 --> 00:31:04,730 661 00:31:04,730 --> 00:31:04,830 >> Desculpe. 662 00:31:04,830 --> 00:31:06,470 Você precisa ver isso? 663 00:31:06,470 --> 00:31:07,410 >> ALUNO: Não. 664 00:31:07,410 --> 00:31:08,660 >> JASON HIRSCHHORN: OK. 665 00:31:08,660 --> 00:31:36,390 666 00:31:36,390 --> 00:31:40,605 Vamos dar mais um minuto para este código, ou pelo menos começar a fazer isso. 667 00:31:40,605 --> 00:32:13,900 668 00:32:13,900 --> 00:32:17,020 >> Assim, você pode continuar trabalhando, mas eu vou para começar a passar por isso. 669 00:32:17,020 --> 00:32:22,560 Assim como antes, eu tenho na tela # Include cs50.h, # include stdio.h. 670 00:32:22,560 --> 00:32:24,020 int void main. 671 00:32:24,020 --> 00:32:28,880 Dentro chaves do principal, eu tenho dois comentários, pseudocódigo. 672 00:32:28,880 --> 00:32:30,980 Uma delas é pedir uma string do usuário. 673 00:32:30,980 --> 00:32:33,900 A segunda é imprimir cada personagem em uma nova linha. 674 00:32:33,900 --> 00:32:39,780 Então, Anna, você pode dar-me perguntar para uma string do usuário? 675 00:32:39,780 --> 00:32:41,970 >> ESTUDANTE: printf. 676 00:32:41,970 --> 00:32:42,720 >> JASON HIRSCHHORN: printf? 677 00:32:42,720 --> 00:32:45,050 >> ESTUDANTE: sim. 678 00:32:45,050 --> 00:32:46,165 ( 679 00:32:46,165 --> 00:32:47,610 >> JASON HIRSCHHORN: ( 680 00:32:47,610 --> 00:32:49,300 >> ALUNO: "dá-me uma corda. 681 00:32:49,300 --> 00:32:52,380 >> JASON HIRSCHHORN: "dar me um str - oops - 682 00:32:52,380 --> 00:32:53,710 string. 683 00:32:53,710 --> 00:32:59,980 >> ALUNO: / n "), ponto e vírgula. 684 00:32:59,980 --> 00:33:02,300 >> JASON HIRSCHHORN: Acabar com a string, parênteses fechados, ponto e vírgula. 685 00:33:02,300 --> 00:33:03,550 >> ESTUDANTE: sim. 686 00:33:03,550 --> 00:33:09,080 E então a próxima linha, corda s = get string. 687 00:33:09,080 --> 00:33:11,240 >> JASON HIRSCHHORN: String s = get string. 688 00:33:11,240 --> 00:33:11,665 >> ESTUDANTE: sim. 689 00:33:11,665 --> 00:33:13,080 E, em seguida, () 690 00:33:13,080 --> 00:33:14,365 >> JASON HIRSCHHORN: () 691 00:33:14,365 --> 00:33:14,720 >> ALUNO: Ponto e vírgula. 692 00:33:14,720 --> 00:33:15,540 >> JASON HIRSCHHORN: Ponto e vírgula. 693 00:33:15,540 --> 00:33:16,890 Fantástico. 694 00:33:16,890 --> 00:33:19,000 Então, eu vou pegar uma corda e Vou guardá-lo em quê? 695 00:33:19,000 --> 00:33:21,830 Qual é a variável chamada que você criou? 696 00:33:21,830 --> 00:33:23,290 >> ESTUDANTE: String s. 697 00:33:23,290 --> 00:33:24,580 >> JASON HIRSCHHORN: A variável é chamado s. 698 00:33:24,580 --> 00:33:25,700 É tipo string. 699 00:33:25,700 --> 00:33:27,200 Exatamente. 700 00:33:27,200 --> 00:33:30,080 A próxima coisa que queremos é imprimir cada personagem em uma nova linha. 701 00:33:30,080 --> 00:33:31,710 Quem pode me dar esse código? 702 00:33:31,710 --> 00:33:32,110 [Inaudível]? 703 00:33:32,110 --> 00:33:33,000 Você pode dar isso para mim? 704 00:33:33,000 --> 00:33:33,580 >> ALUNO: Claro. 705 00:33:33,580 --> 00:33:35,420 >> JASON HIRSCHHORN: Vamos fazê-lo. 706 00:33:35,420 --> 00:33:36,080 E muito. 707 00:33:36,080 --> 00:33:38,896 Eu não gosto de repetir o que você diz porque você está fazendo a coisa certa, mas eu 708 00:33:38,896 --> 00:33:42,100 tem que repetir de modo que quando eles transcrever isso, eles podem obter todas 709 00:33:42,100 --> 00:33:44,870 a saída de texto no transcrições. 710 00:33:44,870 --> 00:33:47,180 Então você pode apenas continuar falando. 711 00:33:47,180 --> 00:33:48,590 Infelizmente, não tenho dizer sobre você. 712 00:33:48,590 --> 00:33:49,510 Sinto muito, mas - 713 00:33:49,510 --> 00:33:50,610 >> ALUNO: Isso é bom. 714 00:33:50,610 --> 00:33:53,010 Para int i = 0 715 00:33:53,010 --> 00:33:54,170 >> JASON HIRSCHHORN: Para int i = 0 716 00:33:54,170 --> 00:33:56,740 >> ALUNO: Eu menos - 717 00:33:56,740 --> 00:33:58,206 >> JASON HIRSCHHORN: Ponto e vírgula. 718 00:33:58,206 --> 00:34:00,650 >> ALUNO: Antes disso, podemos colocar um variável de modo a obter int comprimento do nome? 719 00:34:00,650 --> 00:34:01,870 >> JASON HIRSCHHORN: Oh, você não quero colocar o ponto e vírgula? 720 00:34:01,870 --> 00:34:02,310 OK. 721 00:34:02,310 --> 00:34:05,120 Então o que você quer fazer depois de zero? 722 00:34:05,120 --> 00:34:09,340 >> ALUNO: Eu quero começar o comprimento da corda de s e 723 00:34:09,340 --> 00:34:10,410 definir que uma variável? 724 00:34:10,410 --> 00:34:11,760 >> JASON HIRSCHHORN: OK, Então, como eu faço isso? 725 00:34:11,760 --> 00:34:17,636 >> ALUNO: Então você faz comprimento int = 726 00:34:17,636 --> 00:34:20,010 >> JASON HIRSCHHORN: Int length = 727 00:34:20,010 --> 00:34:22,230 >> ALUNO: S-T-R-L-E-N. 728 00:34:22,230 --> 00:34:24,260 >> JASON HIRSCHHORN: S-T-R-L-E-N - 729 00:34:24,260 --> 00:34:25,380 >> ALUNO: É s. 730 00:34:25,380 --> 00:34:25,790 Colchetes. 731 00:34:25,790 --> 00:34:27,920 >> Jason HIRSCHHORN: (s). 732 00:34:27,920 --> 00:34:33,040 >> ALUNO: E então eu acho que você tem que colocar um ponto e vírgula entre os dois ints. 733 00:34:33,040 --> 00:34:34,590 >> JASON HIRSCHHORN: Um ponto e vírgula após a zero? 734 00:34:34,590 --> 00:34:35,260 >> ESTUDANTE: Yeah. 735 00:34:35,260 --> 00:34:40,670 Em seguida, coloque um ponto e vírgula depois disso, e você diz, i menos de comprimento. 736 00:34:40,670 --> 00:34:43,250 i menos de comprimento, que é a variável. 737 00:34:43,250 --> 00:34:44,590 >> ALUNO: E depois ponto e vírgula. 738 00:34:44,590 --> 00:34:45,790 >> JASON HIRSCHHORN: Ponto e vírgula. 739 00:34:45,790 --> 00:34:46,290 >> ALUNO: i + +. 740 00:34:46,290 --> 00:34:46,909 >> JASON HIRSCHHORN: i + +. 741 00:34:46,909 --> 00:34:47,530 Não é o nosso loop for. 742 00:34:47,530 --> 00:34:48,860 OK, dentro do loop for. 743 00:34:48,860 --> 00:34:51,670 >> ALUNO: E depois fazer printf. 744 00:34:51,670 --> 00:34:53,340 >> JASON HIRSCHHORN: printf. 745 00:34:53,340 --> 00:34:53,889 >> ALUNO: Suportes. 746 00:34:53,889 --> 00:34:55,130 >> JASON HIRSCHHORN: entre parênteses, aspas. 747 00:34:55,130 --> 00:34:59,930 >> ALUNO: Parênteses, citações,% c / n. 748 00:34:59,930 --> 00:35:00,760 >> JASON HIRSCHHORN:% c, OK. 749 00:35:00,760 --> 00:35:01,670 >> ALUNO: / n. 750 00:35:01,670 --> 00:35:03,470 >> JASON HIRSCHHORN: / n. 751 00:35:03,470 --> 00:35:04,410 >> ALUNO: citações fechado. 752 00:35:04,410 --> 00:35:05,270 >> JASON HIRSCHHORN: citações fechado. 753 00:35:05,270 --> 00:35:05,810 >> ALUNO: Vírgula. 754 00:35:05,810 --> 00:35:06,860 >> JASON HIRSCHHORN: Vírgula. 755 00:35:06,860 --> 00:35:07,800 >> ALUNO: S. 756 00:35:07,800 --> 00:35:08,070 >> JASON HIRSCHHORN: S. 757 00:35:08,070 --> 00:35:08,690 >> ALUNO: Bracket i. 758 00:35:08,690 --> 00:35:10,230 >> JASON HIRSCHHORN: Bracket i. 759 00:35:10,230 --> 00:35:11,520 >> ALUNO: E parênteses, em seguida, fechado. 760 00:35:11,520 --> 00:35:12,540 >> JASON HIRSCHHORN: parênteses fechado. 761 00:35:12,540 --> 00:35:13,660 >> ALUNO: E depois ponto e vírgula. 762 00:35:13,660 --> 00:35:13,770 >> JASON HIRSCHHORN: Ponto e vírgula. 763 00:35:13,770 --> 00:35:14,380 Fantástico. 764 00:35:14,380 --> 00:35:16,890 Então, vamos salvar este. 765 00:35:16,890 --> 00:35:19,770 Faça soletrar. 766 00:35:19,770 --> 00:35:20,040 Oh boy. 767 00:35:20,040 --> 00:35:22,275 Eu tenho um par de erros. 768 00:35:22,275 --> 00:35:33,120 Primeiro erro na linha 11, ele diz: Espera expressão, e está dando 769 00:35:33,120 --> 00:35:36,910 me um erro que o segundo int, há o erro. 770 00:35:36,910 --> 00:35:38,430 Há algum erro em torno de lá. 771 00:35:38,430 --> 00:35:41,060 Alguém sabe o erro que é? 772 00:35:41,060 --> 00:35:41,640 Kurt? 773 00:35:41,640 --> 00:35:44,108 >> ALUNO: Eu acho que deveria ser uma vírgula e não um ponto e vírgula. 774 00:35:44,108 --> 00:35:46,010 >> JASON HIRSCHHORN: OK, uma vírgula em vez de um ponto e vírgula. 775 00:35:46,010 --> 00:35:47,340 Assim é que tudo o que precisamos para corrigir? 776 00:35:47,340 --> 00:35:47,655 >> ALUNO: Não. 777 00:35:47,655 --> 00:35:48,930 >> JASON HIRSCHHORN: O que mais precisamos consertar? 778 00:35:48,930 --> 00:35:50,920 >> ALUNO: Nós temos que incluir string.h. 779 00:35:50,920 --> 00:35:51,680 >> JASON HIRSCHHORN: Include string.h. 780 00:35:51,680 --> 00:35:53,730 Onde é que eu preciso incluir isso? 781 00:35:53,730 --> 00:35:57,085 >> ALUNO: No mesmo lugar que você está incluindo as outras coisas, certo 782 00:35:57,085 --> 00:35:59,560 após incluir stdio.h. 783 00:35:59,560 --> 00:36:01,610 >> JASON HIRSCHHORN: Vamos ver se isso funciona primeiro porque, geralmente, eu gosto 784 00:36:01,610 --> 00:36:06,360 para corrigir uma coisa primeiro, e depois executar , e, em seguida, ver os erros que temos. 785 00:36:06,360 --> 00:36:11,620 Então, nós estamos indo para limpar o terminal com o controle n, vamos fazer fazer feitiço. 786 00:36:11,620 --> 00:36:15,190 787 00:36:15,190 --> 00:36:18,770 Assim, outro erro na linha 11. 788 00:36:18,770 --> 00:36:20,540 Espera-vírgula. 789 00:36:20,540 --> 00:36:22,640 E eu ainda estou recebendo erros nesta linha. 790 00:36:22,640 --> 00:36:25,270 Por isso, não me deu um erro dizendo que não entende o que é strlen, 791 00:36:25,270 --> 00:36:28,980 mas ele está me dando erros neste linha, o que mais está errado? 792 00:36:28,980 --> 00:36:29,690 Mark? 793 00:36:29,690 --> 00:36:30,940 Marcus. 794 00:36:30,940 --> 00:36:32,570 >> ALUNO: Você tem que remover a segunda declaração int? 795 00:36:32,570 --> 00:36:34,990 >> JASON HIRSCHHORN: Remover o segundo int. 796 00:36:34,990 --> 00:36:35,710 Vamos tentar isso. 797 00:36:35,710 --> 00:36:37,600 Agora limpar o terminal. 798 00:36:37,600 --> 00:36:40,130 Faça soletrar. 799 00:36:40,130 --> 00:36:40,490 Erro. 800 00:36:40,490 --> 00:36:42,890 Implicitamente declarando biblioteca função strlen. 801 00:36:42,890 --> 00:36:44,270 Então, agora nós vemos esse erro. 802 00:36:44,270 --> 00:36:45,760 O que precisamos para incluir? 803 00:36:45,760 --> 00:36:46,660 >> ALUNO: STRING.H. 804 00:36:46,660 --> 00:36:51,880 >> JASON HIRSCHHORN: Include string.h, Vamos fazer # include string.h no topo 805 00:36:51,880 --> 00:36:52,920 da tela. 806 00:36:52,920 --> 00:36:55,450 Vamos salvar, faça soletrar. 807 00:36:55,450 --> 00:36:56,970 Agora compilado. 808 00:36:56,970 --> 00:37:01,970 Então, novamente, as coisas que precisava lembre-se a linha 12 em nosso loop para quando 809 00:37:01,970 --> 00:37:08,010 estamos a sua criação, int i = 0, comprimento = strlen (s). 810 00:37:08,010 --> 00:37:09,350 >> Esta é uma estratégia fantástica. 811 00:37:09,350 --> 00:37:12,590 O estilo deste é grande, o projeto deste é grande. 812 00:37:12,590 --> 00:37:15,620 Podemos ir para essas razões mais tarde, mas desta forma você só precisa chamar 813 00:37:15,620 --> 00:37:19,040 strlen uma vez, em vez de cada vez que você executa através do loop. 814 00:37:19,040 --> 00:37:22,255 No entanto, você precisa usar uma vírgula lá e você não precisa de novo int. 815 00:37:22,255 --> 00:37:24,180 Se você está declarando ambos os variáveis ​​em conjunto, você 816 00:37:24,180 --> 00:37:26,850 não precisa de novo int. 817 00:37:26,850 --> 00:37:29,820 E então, se você estiver indo para usar strlen, que é uma outra biblioteca 818 00:37:29,820 --> 00:37:33,560 função não incluído no stdio.h ou cs50.h, fazer 819 00:37:33,560 --> 00:37:35,310 -se de incluir string.h. 820 00:37:35,310 --> 00:37:35,900 Kurt? 821 00:37:35,900 --> 00:37:39,085 >> ALUNO: Então, se você não precisa dizer o tipo de comprimento é, isso 822 00:37:39,085 --> 00:37:40,290 significa que tem que ser um int? 823 00:37:40,290 --> 00:37:41,930 Você não pode ter dois diferentes tipos lá? 824 00:37:41,930 --> 00:37:43,290 >> JASON HIRSCHHORN: Então, você poderia tem dois tipos diferentes. 825 00:37:43,290 --> 00:37:45,730 O comprimento é um int aqui, no entanto. 826 00:37:45,730 --> 00:37:48,590 O comprimento é um int porque é vírgula e em seguida a mesma coisa. 827 00:37:48,590 --> 00:37:50,460 >> ALUNO: Então, ele assume que está acontecendo para ser o mesmo que o primeiro? 828 00:37:50,460 --> 00:37:52,423 >> JASON HIRSCHHORN: Exatamente. 829 00:37:52,423 --> 00:37:54,970 Nós não vamos fazer isso agora, mas você pode incluir duas variáveis ​​sobre a 830 00:37:54,970 --> 00:37:57,080 mesma linha usando um tipo de dados. 831 00:37:57,080 --> 00:38:01,415 Então, int x, y criaria duas variáveis. 832 00:38:01,415 --> 00:38:05,830 833 00:38:05,830 --> 00:38:10,770 Assim, int x, y, se fazer isso, dá me uma variável x e y não utilizado porque 834 00:38:10,770 --> 00:38:12,020 não usá-los. 835 00:38:12,020 --> 00:38:17,950 836 00:38:17,950 --> 00:38:21,650 Então, antes de colocar vazio é apenas um truque de fantasia, se você não usar 837 00:38:21,650 --> 00:38:22,810 algo, a usá-lo. 838 00:38:22,810 --> 00:38:26,300 Mas, como você vê, eu crio x e y na mesma linha, com uma vírgula. 839 00:38:26,300 --> 00:38:28,450 É a criação de dois inteiros ali mesmo. 840 00:38:28,450 --> 00:38:31,560 Então, sim, totalmente possível criar duas coisas na mesma linha 841 00:38:31,560 --> 00:38:33,720 separadas por uma vírgula. 842 00:38:33,720 --> 00:38:35,470 Vamos nos livrar daqueles que, no entanto. 843 00:38:35,470 --> 00:38:36,370 >> Portanto, não há mágica. 844 00:38:36,370 --> 00:38:39,200 Obrigado a vocês para codificá-lo para nós. 845 00:38:39,200 --> 00:38:43,040 Vamos fazer isso mais uma vez, execute-o. 846 00:38:43,040 --> 00:38:44,580 Dê-me uma string. 847 00:38:44,580 --> 00:38:45,580 [Inaudível], você fez mais do mesmo. 848 00:38:45,580 --> 00:38:47,910 Qual é a corda? 849 00:38:47,910 --> 00:38:48,250 >> ALUNO: Olá. 850 00:38:48,250 --> 00:38:50,110 >> JASON HIRSCHHORN: Olá. 851 00:38:50,110 --> 00:38:52,810 H-E-L-L-O, cada personagem em uma linha. 852 00:38:52,810 --> 00:38:53,700 Parece ótimo. 853 00:38:53,700 --> 00:38:54,750 Vamos executá-lo novamente. 854 00:38:54,750 --> 00:38:56,050 Sempre vai verificar para os casos de canto. 855 00:38:56,050 --> 00:38:57,750 O que é um bom caso para verificar canto? 856 00:38:57,750 --> 00:39:00,250 857 00:39:00,250 --> 00:39:00,890 >> ALUNO: Um número? 858 00:39:00,890 --> 00:39:02,240 >> JASON HIRSCHHORN: Um número. 859 00:39:02,240 --> 00:39:06,580 Então, eu vou colocar em um, e ele imprime um. 860 00:39:06,580 --> 00:39:08,970 Ele não está pedindo cartas, de modo parece que os números de trabalho. 861 00:39:08,970 --> 00:39:09,890 Bom caso canto para verificar. 862 00:39:09,890 --> 00:39:11,740 O que é um bom canto caso para verificar? 863 00:39:11,740 --> 00:39:12,420 >> ALUNO: A seqüência em branco. 864 00:39:12,420 --> 00:39:12,910 >> JASON HIRSCHHORN: Hm? 865 00:39:12,910 --> 00:39:13,880 >> ESTUDANTE: Como uma string vazia. 866 00:39:13,880 --> 00:39:14,400 >> JASON HIRSCHHORN: string vazio. 867 00:39:14,400 --> 00:39:16,730 Então, não vamos colocar em qualquer coisa. 868 00:39:16,730 --> 00:39:18,660 E o que é impresso? 869 00:39:18,660 --> 00:39:19,090 >> ALUNO: Nada. 870 00:39:19,090 --> 00:39:19,870 >> JASON HIRSCHHORN: Nada. 871 00:39:19,870 --> 00:39:20,555 Parece que ele funciona. 872 00:39:20,555 --> 00:39:23,790 Você poderia tentar mais casos de canto, mas em geral, os números, um de dados é diferente 873 00:39:23,790 --> 00:39:26,160 grande para tentar, assim não é nada. 874 00:39:26,160 --> 00:39:29,180 Nada, zero, negativos são sempre grandes coisas para tentar coisas que você 875 00:39:29,180 --> 00:39:33,140 Deve teste, as coisas certamente vamos testar para e check 50 vai testar. 876 00:39:33,140 --> 00:39:34,720 Qualquer dúvida sobre spell.c? 877 00:39:34,720 --> 00:39:37,752 878 00:39:37,752 --> 00:39:39,310 >> OK, vamos cabeça para trás. 879 00:39:39,310 --> 00:39:42,420 Eu tenho mais um programa para vocês escrevem. 880 00:39:42,420 --> 00:39:44,700 É chamado students.c. 881 00:39:44,700 --> 00:39:49,020 Este é um programa que pede ao usuário para cinco nomes, então escolhe aleatoriamente 882 00:39:49,020 --> 00:39:51,600 e imprime um dos nomes. 883 00:39:51,600 --> 00:39:54,840 Este programa é um pouco mais envolvido do que os dois últimos que escreveu, 884 00:39:54,840 --> 00:39:58,080 Então, por que não vamos demorar cinco minutos para codificá-lo individualmente, e depois vamos 885 00:39:58,080 --> 00:40:00,130 codificá-lo como um grupo. 886 00:40:00,130 --> 00:40:03,795 >> Este programa também envolvem algumas coisas você pode não ter visto antes, então se 887 00:40:03,795 --> 00:40:06,390 Você tem uma pergunta sobre, como fazer Eu faço isso, levante a mão. 888 00:40:06,390 --> 00:40:08,530 Eu vou vir e apontá-lo na direção certa. 889 00:40:08,530 --> 00:40:10,820 Mas nós também estamos fazendo isso porque esta vai ser uma boa maneira de introduzir algumas 890 00:40:10,820 --> 00:40:12,070 temas que são complicadas. 891 00:40:12,070 --> 00:44:14,600 892 00:44:14,600 --> 00:44:15,560 >> Então ele funciona, certo? 893 00:44:15,560 --> 00:44:17,580 >> ESTUDANTE: Yeah. 894 00:44:17,580 --> 00:44:19,180 >> JASON HIRSCHHORN: Sempre que você liga em um conjunto de problemas, há muitas maneiras de fazer 895 00:44:19,180 --> 00:44:20,790 , mas alguns são mais elegantes do que os outros. 896 00:44:20,790 --> 00:44:29,000 897 00:44:29,000 --> 00:44:31,110 Vamos mergulhar dentro 898 00:44:31,110 --> 00:44:32,880 # Include cs50.h. 899 00:44:32,880 --> 00:44:34,250 # Include stdio.h. 900 00:44:34,250 --> 00:44:37,240 void main int, chaves. 901 00:44:37,240 --> 00:44:39,430 Dentro das chaves, Eu tenho dois comentários. 902 00:44:39,430 --> 00:44:41,500 O primeiro é, pergunte ao usuário por cinco nomes. 903 00:44:41,500 --> 00:44:46,580 O segundo é, escolher aleatoriamente e imprimir um dos nomes. 904 00:44:46,580 --> 00:44:50,250 Então vamos fazer o primeiro, pergunte o utilizador durante cinco nomes. 905 00:44:50,250 --> 00:44:53,730 Quem pediu o usuário para cinco nomes e pode me dizer como fazer isso? 906 00:44:53,730 --> 00:44:56,760 907 00:44:56,760 --> 00:44:58,570 Apenas duas pessoas fizeram a primeira parte. 908 00:44:58,570 --> 00:45:00,150 Três pessoas fizeram a primeira parte. 909 00:45:00,150 --> 00:45:00,670 Quatro, cinco. 910 00:45:00,670 --> 00:45:03,140 Tom, como você faz isso? 911 00:45:03,140 --> 00:45:09,940 >> ALUNO: Você poderia declarar uma string e, em seguida, nome, faixa cinco. 912 00:45:09,940 --> 00:45:12,070 >> JASON HIRSCHHORN: String Nome Chave cinco. 913 00:45:12,070 --> 00:45:15,350 Então o que é esta linha fazendo, name string suporte de cinco? 914 00:45:15,350 --> 00:45:17,800 >> ALUNO: Você iria declarar uma matriz de strings. 915 00:45:17,800 --> 00:45:19,000 >> JASON HIRSCHHORN: Este é uma matriz de strings. 916 00:45:19,000 --> 00:45:21,590 Quantas cordas vão para caber aqui? 917 00:45:21,590 --> 00:45:22,010 >> ALUNO: Five. 918 00:45:22,010 --> 00:45:22,320 >> JASON HIRSCHHORN: Five. 919 00:45:22,320 --> 00:45:22,660 Excelente. 920 00:45:22,660 --> 00:45:26,360 Vamos chamá-lo de nomes porque estamos indo para obter vários. 921 00:45:26,360 --> 00:45:27,790 OK, o próximo? 922 00:45:27,790 --> 00:45:29,270 >> ALUNO: E então você tem um loop - 923 00:45:29,270 --> 00:45:30,060 >> JASON HIRSCHHORN: Para loop. 924 00:45:30,060 --> 00:45:33,035 >> ALUNO: - para i = 0. 925 00:45:33,035 --> 00:45:37,040 >> JASON HIRSCHHORN: For (int i = 0. 926 00:45:37,040 --> 00:45:38,270 >> ALUNO: Ponto e vírgula. 927 00:45:38,270 --> 00:45:38,880 >> JASON HIRSCHHORN: Ponto e vírgula. 928 00:45:38,880 --> 00:45:39,790 >> ALUNO: Eu inferior a cinco. 929 00:45:39,790 --> 00:45:41,310 >> JASON HIRSCHHORN: Eu inferior a cinco. 930 00:45:41,310 --> 00:45:42,230 >> ALUNO: Ponto e vírgula. 931 00:45:42,230 --> 00:45:42,560 >> JASON HIRSCHHORN: Ponto e vírgula. 932 00:45:42,560 --> 00:45:43,380 >> ALUNO: i + +. 933 00:45:43,380 --> 00:45:46,050 >> JASON HIRSCHHORN: i + +. 934 00:45:46,050 --> 00:45:47,100 >> ALUNO: E parênteses, em seguida, fechado. 935 00:45:47,100 --> 00:45:48,600 >> JASON HIRSCHHORN: parênteses fechados, e, em seguida, algumas chaves. 936 00:45:48,600 --> 00:45:50,050 Dentro das chaves? 937 00:45:50,050 --> 00:45:51,423 >> ALUNO: E então printf. 938 00:45:51,423 --> 00:45:52,535 >> JASON HIRSCHHORN: printf. 939 00:45:52,535 --> 00:45:56,200 >> ALUNO: parênteses abertas, name% d. 940 00:45:56,200 --> 00:45:57,090 >> JASON HIRSCHHORN: Desculpe? 941 00:45:57,090 --> 00:45:57,660 >> ALUNO: Nome. 942 00:45:57,660 --> 00:45:58,200 >> JASON HIRSCHHORN: Nome. 943 00:45:58,200 --> 00:46:01,700 >> ALUNO: E então o espaço, e, em seguida,% d. 944 00:46:01,700 --> 00:46:02,950 >> JASON HIRSCHHORN: Nome, espaço,% d. 945 00:46:02,950 --> 00:46:05,630 946 00:46:05,630 --> 00:46:10,820 >> ALUNO: E então / n, em seguida, fechado. 947 00:46:10,820 --> 00:46:15,070 >> JASON HIRSCHHORN: nome Então, espaço, % D / n, parênteses fechados. 948 00:46:15,070 --> 00:46:17,730 >> ALUNO: Comma, i + 1. 949 00:46:17,730 --> 00:46:19,390 Sinto muito. 950 00:46:19,390 --> 00:46:21,040 Citação fechado, e, em seguida, vírgula, i +1. 951 00:46:21,040 --> 00:46:24,400 >> JASON HIRSCHHORN: Closed citação, vírgula, i +1. 952 00:46:24,400 --> 00:46:25,850 >> ESTUDANTE: sim. 953 00:46:25,850 --> 00:46:27,650 E então a próxima linha - 954 00:46:27,650 --> 00:46:29,400 >> JASON HIRSCHHORN: i + 1. 955 00:46:29,400 --> 00:46:31,600 >> ESTUDANTE: sim. 956 00:46:31,600 --> 00:46:36,440 E então o próximo slide são os nomes suporte i. 957 00:46:36,440 --> 00:46:39,000 >> JASON HIRSCHHORN: Próxima linha são os nomes suporte i. 958 00:46:39,000 --> 00:46:41,360 >> ALUNO: = get string. 959 00:46:41,360 --> 00:46:43,460 >> JASON HIRSCHHORN: = Get - 960 00:46:43,460 --> 00:46:44,510 capital de G-E-T - 961 00:46:44,510 --> 00:46:45,530 string. 962 00:46:45,530 --> 00:46:47,800 Opa, desculpe. 963 00:46:47,800 --> 00:46:49,050 >> ALUNO: Open, parênteses fechados e depois - 964 00:46:49,050 --> 00:46:50,940 >> JASON HIRSCHHORN: aberto, fechado parêntese. 965 00:46:50,940 --> 00:46:51,030 >> ALUNO: Ponto e vírgula. 966 00:46:51,030 --> 00:46:52,500 >> JASON HIRSCHHORN: Ponto e vírgula. 967 00:46:52,500 --> 00:46:57,545 OK, então você inicializar a matriz de cordas, nomes e, em seguida, passar por uma 968 00:46:57,545 --> 00:47:02,720 loop for, e cinco vezes imprimir alguns pedir para o usuário e, em seguida, armazenar 969 00:47:02,720 --> 00:47:03,360 cinco cordas. 970 00:47:03,360 --> 00:47:08,090 Alguém tem alguma ajustes a isso? 971 00:47:08,090 --> 00:47:10,030 Tom, eu acho que todo mundo concorda com você. 972 00:47:10,030 --> 00:47:10,880 Parece muito bom. 973 00:47:10,880 --> 00:47:11,660 OK. 974 00:47:11,660 --> 00:47:14,830 Por que você fez i +1, embora? 975 00:47:14,830 --> 00:47:18,000 >> ALUNO: Eu quero dizer, não tem ser, mas i 1 de modo que seja 976 00:47:18,000 --> 00:47:19,700 um nome para nomear cinco. 977 00:47:19,700 --> 00:47:21,930 Caso contrário, seria nome zero a nomear quatro. 978 00:47:21,930 --> 00:47:24,400 >> JASON HIRSCHHORN: Então você fez i +1 porque senão ele teria 979 00:47:24,400 --> 00:47:27,060 impressos de zero a quatro, porque é assim que os computadores pensam, mas os seres humanos 980 00:47:27,060 --> 00:47:28,530 realmente não ler assim. 981 00:47:28,530 --> 00:47:30,190 Isso é outra coisa você vai encontrar. 982 00:47:30,190 --> 00:47:33,210 Às vezes, quando você imprimir algo para o usuário, você vai querer torná-lo um 983 00:47:33,210 --> 00:47:35,733 pouco mais bonita, e fazer i 1, neste caso, é um 984 00:47:35,733 --> 00:47:37,430 forma a torná-lo mais bonito. 985 00:47:37,430 --> 00:47:41,380 >> Eu também vejo cinco duas vezes, string nome é cinco, i é inferior a cinco. 986 00:47:41,380 --> 00:47:42,430 Eu sei onde você tem cinco. 987 00:47:42,430 --> 00:47:44,890 Você tem isso de mim dizendo Você cinco nomes. 988 00:47:44,890 --> 00:47:49,000 Mas se quisermos tornar o código um pouco mais robusto, uma coisa que nós 989 00:47:49,000 --> 00:47:53,110 poderia fazer é aqui, do lado de fora de int, nós poderíamos fazer algo como isso, 990 00:47:53,110 --> 00:47:57,070 # Define, e que nós poderíamos fazer NOMES 5. 991 00:47:57,070 --> 00:48:01,580 992 00:48:01,580 --> 00:48:05,390 >> Então, basicamente, onde quer que eu escreva de capital N, A Capital, o capital M, E maiúsculo, 993 00:48:05,390 --> 00:48:08,890 S maiúsculo, essa seqüência, que irá substituir 5, em que, com o código. 994 00:48:08,890 --> 00:48:11,530 995 00:48:11,530 --> 00:48:13,445 Ou vamos apenas chamá-lo - vamos basta chamá-lo NUMBER. 996 00:48:13,445 --> 00:48:17,190 Então, eu estou definindo todas as tampas NÚMERO ser 5. 997 00:48:17,190 --> 00:48:22,830 >> Então, agora, sempre que eu tenho o número 5, I pode substituí-lo com todos os números caps. 998 00:48:22,830 --> 00:48:26,880 E agora, se eu quiser mudar o número de nomes, tudo o que precisa fazer é 999 00:48:26,880 --> 00:48:31,350 esta linha, a linha de quatro, onde eu tenho # Define o número 5, mudar isso para 10, 1000 00:48:31,350 --> 00:48:34,340 ou que altere a 4. 1001 00:48:34,340 --> 00:48:37,400 Quando seu código fica maior, você não está vai se lembrar de você todos os lugares 1002 00:48:37,400 --> 00:48:41,630 colocar quantos nomes que você queria, e em Para que você não perca um, este é 1003 00:48:41,630 --> 00:48:45,490 uma boa maneira de fazê-lo, para encontrar algo lá em cima e depois é só usar essa frase 1004 00:48:45,490 --> 00:48:46,400 por todo o seu código. 1005 00:48:46,400 --> 00:48:46,780 Marcus? 1006 00:48:46,780 --> 00:48:49,780 >> ALUNO: É isso estilisticamente preferido de definir globalmente a 1007 00:48:49,780 --> 00:48:51,270 constantes n? 1008 00:48:51,270 --> 00:48:53,760 >> JASON HIRSCHHORN: Assim é que estilisticamente preferido de todo o mundo 1009 00:48:53,760 --> 00:48:54,980 definindo a n constante? 1010 00:48:54,980 --> 00:48:59,036 Então você está dizendo que você poderia fazer, int numero = 5? 1011 00:48:59,036 --> 00:49:01,300 >> ALUNO: Será que eles têm consoantes em C ou não? 1012 00:49:01,300 --> 00:49:02,720 >> JASON HIRSCHHORN: Ou const - em iguais. 1013 00:49:02,720 --> 00:49:04,275 Então você está dizendo apenas uma variável global? 1014 00:49:04,275 --> 00:49:04,990 >> ESTUDANTE: Yeah. 1015 00:49:04,990 --> 00:49:08,670 >> JASON HIRSCHHORN: Então, estilisticamente, não há, necessariamente, um direito 1016 00:49:08,670 --> 00:49:12,050 responder, mas as duas coisas são melhores que apenas jogando estes aleatória 1017 00:49:12,050 --> 00:49:12,960 números em todo o seu código. 1018 00:49:12,960 --> 00:49:14,650 Nós os chamamos de números mágicos. 1019 00:49:14,650 --> 00:49:16,450 Quando eu olhar para o seu código ou quando ninguém está lendo isso, eles 1020 00:49:16,450 --> 00:49:18,790 Não quero apenas estes números aleatórios que não faz sentido. 1021 00:49:18,790 --> 00:49:22,420 Mesmo o número 26, que é geralmente o número de letras do alfabeto, 1022 00:49:22,420 --> 00:49:28,870 é melhor para definir ALFABETO em cima e salvar o número 26 em que string, 1023 00:49:28,870 --> 00:49:29,550 se isso faz sentido. 1024 00:49:29,550 --> 00:49:33,210 >> Ou em um conjunto de problemas, ao invés de - mais uma vez, nós não falamos sobre isso em 1025 00:49:33,210 --> 00:49:37,020 o tempo, mas em vez de simplesmente jogá em todos os lugares a 25 ou 10, você pode 1026 00:49:37,020 --> 00:49:41,860 salvar o número 25 como quarto ou 10 como DIME, e isso torna mais fácil para 1027 00:49:41,860 --> 00:49:44,140 quem está lendo o seu código entender por que você escolheu esse número. 1028 00:49:44,140 --> 00:49:46,540 E também para você, se você quiser atualizar seu código, torna-se um pouco 1029 00:49:46,540 --> 00:49:47,290 mais robusto. 1030 00:49:47,290 --> 00:49:48,070 Sim? 1031 00:49:48,070 --> 00:49:50,830 >> ALUNO: É este código também vai estar disponível para nós depois? 1032 00:49:50,830 --> 00:49:52,453 >> JASON HIRSCHHORN: Todos esses códigos que nós escrevemos juntos são 1033 00:49:52,453 --> 00:49:54,620 vai ser enviado para você rapazes e disponíveis. 1034 00:49:54,620 --> 00:49:55,740 Sim. 1035 00:49:55,740 --> 00:49:58,040 Então, pergunte ao usuário cinco nomes. 1036 00:49:58,040 --> 00:50:00,280 Aleatoriamente escolher e imprimir um dos nomes. 1037 00:50:00,280 --> 00:50:00,940 Quem fez essa linha? 1038 00:50:00,940 --> 00:50:02,230 Esta é a linha mais complicada aqui. 1039 00:50:02,230 --> 00:50:02,450 Desculpe, Tom. 1040 00:50:02,450 --> 00:50:05,510 Você fez um bom trabalho, mas este é um pouco mais complicado. 1041 00:50:05,510 --> 00:50:06,600 Marcus, vá em frente. 1042 00:50:06,600 --> 00:50:10,180 >> ALUNO: Bem, primeiro, você vai precisa incluir stdlib.h e time.h. 1043 00:50:10,180 --> 00:50:13,200 >> JASON HIRSCHHORN: Então você está dizendo que a no topo, incluir mais duas bibliotecas. 1044 00:50:13,200 --> 00:50:18,830 Você quer me incluir S-T-D-L-I-B dot H, Biblioteca Padrão, e o 1045 00:50:18,830 --> 00:50:19,760 foi o outro? 1046 00:50:19,760 --> 00:50:21,010 >> ALUNO: Time.h. 1047 00:50:21,010 --> 00:50:25,130 1048 00:50:25,130 --> 00:50:27,840 >> JASON HIRSCHHORN: # include time.h. 1049 00:50:27,840 --> 00:50:29,470 Portanto, estas são mais duas bibliotecas. 1050 00:50:29,470 --> 00:50:31,790 Presumo que agora vamos estar usando funções que estão contidas nestes 1051 00:50:31,790 --> 00:50:34,240 dois, e é por isso que você precisava para incluí-los? 1052 00:50:34,240 --> 00:50:36,980 >> ALUNO: Então, primeiro você vai querer escrever srand. 1053 00:50:36,980 --> 00:50:38,770 >> JASON HIRSCHHORN: Srand. 1054 00:50:38,770 --> 00:50:42,070 >> ALUNO: (time (0) 1055 00:50:42,070 --> 00:50:42,700 >> JASON HIRSCHHORN: Desculpe. 1056 00:50:42,700 --> 00:50:45,580 Srand (time ( 1057 00:50:45,580 --> 00:50:46,890 >> ALUNO: 0. 1058 00:50:46,890 --> 00:50:47,230 >> JASON HIRSCHHORN: 0. 1059 00:50:47,230 --> 00:50:49,990 >> ALUNO:)), ponto e vírgula. 1060 00:50:49,990 --> 00:50:51,320 >> JASON HIRSCHHORN: Outro parêntese fechado? 1061 00:50:51,320 --> 00:50:51,650 Ponto e vírgula. 1062 00:50:51,650 --> 00:50:53,610 Vou apenas substituir o nulo com NULL. 1063 00:50:53,610 --> 00:50:55,980 Ele vai fazer a mesma coisa, mas Geralmente, você verá NULL, que 1064 00:50:55,980 --> 00:50:57,720 vamos falar sobre isso linha em um segundo. 1065 00:50:57,720 --> 00:50:58,580 >> ALUNO: Estilisticamente melhor? 1066 00:50:58,580 --> 00:51:02,240 >> JASON HIRSCHHORN: Geralmente, as pessoas NULL certo, mas mesma coisa. 1067 00:51:02,240 --> 00:51:05,010 >> ALUNO: E então o nome int. 1068 00:51:05,010 --> 00:51:06,490 >> JASON HIRSCHHORN: nome Int. 1069 00:51:06,490 --> 00:51:07,280 >> ALUNO: = 1070 00:51:07,280 --> 00:51:07,780 >> JASON HIRSCHHORN: = 1071 00:51:07,780 --> 00:51:08,580 >> ALUNO: Rand. 1072 00:51:08,580 --> 00:51:09,340 >> JASON HIRSCHHORN: Rand. 1073 00:51:09,340 --> 00:51:10,420 >> ESTUDANTE: () 1074 00:51:10,420 --> 00:51:11,500 >> JASON HIRSCHHORN: () 1075 00:51:11,500 --> 00:51:12,850 >> ALUNO: número Modulo. 1076 00:51:12,850 --> 00:51:14,310 >> JASON HIRSCHHORN: Qual é o modulo? 1077 00:51:14,310 --> 00:51:14,970 O personagem? 1078 00:51:14,970 --> 00:51:16,000 O personagem por cento? 1079 00:51:16,000 --> 00:51:17,790 >> ALUNO: caráter cento. 1080 00:51:17,790 --> 00:51:19,521 Modulo número que você definiu em cima. 1081 00:51:19,521 --> 00:51:22,030 >> JASON HIRSCHHORN: Modulo NUMBER. 1082 00:51:22,030 --> 00:51:24,052 >> ALUNO: E depois ponto e vírgula. 1083 00:51:24,052 --> 00:51:24,660 >> JASON HIRSCHHORN: Ponto e vírgula. 1084 00:51:24,660 --> 00:51:27,820 >> ALUNO: E então nova linha, printf. 1085 00:51:27,820 --> 00:51:28,460 >> JASON HIRSCHHORN: printf. 1086 00:51:28,460 --> 00:51:29,730 >> ALUNO: ( 1087 00:51:29,730 --> 00:51:30,620 >> JASON HIRSCHHORN: ( 1088 00:51:30,620 --> 00:51:31,650 >> ALUNO: " 1089 00:51:31,650 --> 00:51:32,630 >> JASON HIRSCHHORN: " 1090 00:51:32,630 --> 00:51:35,320 >> ALUNO:% s / n 1091 00:51:35,320 --> 00:51:37,220 >> JASON HIRSCHHORN:% s / n 1092 00:51:37,220 --> 00:51:38,420 >> ALUNO: " 1093 00:51:38,420 --> 00:51:40,640 >> JASON HIRSCHHORN:% s / n " 1094 00:51:40,640 --> 00:51:43,540 >> ALUNO: Comma, os nomes de espaço. 1095 00:51:43,540 --> 00:51:44,350 >> JASON HIRSCHHORN: Espaço - 1096 00:51:44,350 --> 00:51:46,300 >> ALUNO: Oh, eu acho, o que que chamamos aqui? 1097 00:51:46,300 --> 00:51:48,640 >> JASON HIRSCHHORN: Nós o chamamos de nomes. 1098 00:51:48,640 --> 00:51:52,360 >> ALUNO: suporte Open, nome. 1099 00:51:52,360 --> 00:51:55,090 >> JASON HIRSCHHORN: Abra o suporte, o nome. 1100 00:51:55,090 --> 00:51:55,850 >> ALUNO: suporte fechado. 1101 00:51:55,850 --> 00:51:56,490 >> JASON HIRSCHHORN: suporte fechado. 1102 00:51:56,490 --> 00:51:57,460 >> ALUNO:) 1103 00:51:57,460 --> 00:51:58,800 >> JASON HIRSCHHORN:) 1104 00:51:58,800 --> 00:51:59,440 >> ALUNO: Ponto e vírgula. 1105 00:51:59,440 --> 00:52:00,410 >> JASON HIRSCHHORN: Ponto e vírgula. 1106 00:52:00,410 --> 00:52:01,500 OK, vamos salvar. 1107 00:52:01,500 --> 00:52:04,410 Vamos fazer este código. 1108 00:52:04,410 --> 00:52:06,365 Alunos. 1109 00:52:06,365 --> 00:52:07,100 Vamos executar esse código. 1110 00:52:07,100 --> 00:52:08,480 Alunos. 1111 00:52:08,480 --> 00:52:11,630 Não. / Aluno. . / Alunos. 1112 00:52:11,630 --> 00:52:12,870 Nome. 1113 00:52:12,870 --> 00:52:15,490 Diremos David. 1114 00:52:15,490 --> 00:52:18,070 Nome dois, RJ. 1115 00:52:18,070 --> 00:52:20,561 Nome de três, Rob. 1116 00:52:20,561 --> 00:52:22,490 Nome quatro, Lucas. 1117 00:52:22,490 --> 00:52:26,060 Nome de cinco, Joseph. 1118 00:52:26,060 --> 00:52:28,850 E então ele imprime Joseph novamente. 1119 00:52:28,850 --> 00:52:31,730 >> Então deixe-me correr de novo. 1120 00:52:31,730 --> 00:52:32,460 Deixe-me fazer os mesmos nomes. 1121 00:52:32,460 --> 00:52:39,760 David, RJ, Rob, Lucas, Joseph. 1122 00:52:39,760 --> 00:52:41,070 E ele me deu a Davi neste momento. 1123 00:52:41,070 --> 00:52:43,030 Então eu fiz a mesma coisa, mas deu me uma coisa diferente, e isso é 1124 00:52:43,030 --> 00:52:45,410 porque, é claro, estamos pedindo para um nome aleatório. 1125 00:52:45,410 --> 00:52:50,950 Então eu acho que, a partir de cima de mim vagando ao redor da sala, que a maioria das pessoas 1126 00:52:50,950 --> 00:52:55,960 provavelmente tem a primeira parte direita, criação dessa matriz e, em seguida, ficando 1127 00:52:55,960 --> 00:52:56,430 todos os nomes. 1128 00:52:56,430 --> 00:52:59,320 Eu estou falando sobre as linhas 10 a 16. 1129 00:52:59,320 --> 00:53:02,150 Mas as linhas 18 a 21 são, provavelmente, algumas coisas que você não tenha visto antes, 1130 00:53:02,150 --> 00:53:03,750 então vamos passar por aqueles. 1131 00:53:03,750 --> 00:53:10,390 >> Esta linha, srand tempo NULL é essencialmente - 1132 00:53:10,390 --> 00:53:14,300 desculpe, vamos pular para baixo uma linha, rand (). 1133 00:53:14,300 --> 00:53:17,320 Isso dá-lhe um número aleatório, um número inteiro aleatório. 1134 00:53:17,320 --> 00:53:19,630 E se você bater em homem rand, que um monte de que você fez - 1135 00:53:19,630 --> 00:53:21,530 M-A-N espaço R-A-N-D - 1136 00:53:21,530 --> 00:53:25,910 no terminal como este, M-A-N espaço R-A-N-D, pressione Enter. 1137 00:53:25,910 --> 00:53:30,490 Você viria até o manual e seria capaz de ler que o rand 1138 00:53:30,490 --> 00:53:34,260 saídas de comando núme bytes pseudo-aleatórios Após a semeadura do número aleatório 1139 00:53:34,260 --> 00:53:35,510 gerador de uma vez. 1140 00:53:35,510 --> 00:53:38,450 1141 00:53:38,450 --> 00:53:39,700 >> Então, isso é uma descrição. 1142 00:53:39,700 --> 00:53:43,860 1143 00:53:43,860 --> 00:53:46,800 Isso é o rand faz, dá um número aleatório quando 1144 00:53:46,800 --> 00:53:48,610 você chamar essa função. 1145 00:53:48,610 --> 00:53:53,140 Infelizmente, não é realmente aleatória porque se você apenas chamar aleatória 1146 00:53:53,140 --> 00:53:55,970 sem ficar algumas sementes, alguns ponto de partida, ele sempre vai escolher 1147 00:53:55,970 --> 00:53:59,100 a mesma e que utiliza uma fórmula para determinar o próximo. 1148 00:53:59,100 --> 00:54:01,730 Então, se você chamar rand, ele só vai dar-lhe a mesma coisa. 1149 00:54:01,730 --> 00:54:02,610 Será muito previsível. 1150 00:54:02,610 --> 00:54:03,790 Na verdade, não será aleatória. 1151 00:54:03,790 --> 00:54:09,610 >> Então o que precisamos fazer, por Marcus instruções para mim, eram rand sementes 1152 00:54:09,610 --> 00:54:13,810 com outra coisa, que é o que a função srand faz. 1153 00:54:13,810 --> 00:54:18,055 Semeia rand com algo um pouco mais aleatória do que a mesma coisa, e 1154 00:54:18,055 --> 00:54:23,360 ele está semeando-lo com o tempo NULL, que é, apenas por convenção, o atual 1155 00:54:23,360 --> 00:54:24,650 o tempo em segundos. 1156 00:54:24,650 --> 00:54:29,790 >> Então você está assumindo que todo mundo não é vai executar o código no exato 1157 00:54:29,790 --> 00:54:33,620 mesmo segundo, por isso é uma aposta segura que tempo NULL vai ser diferente 1158 00:54:33,620 --> 00:54:35,250 cada vez que este código é executado. 1159 00:54:35,250 --> 00:54:39,020 Aposta segura que assim, srand vontade rand sementes com algo diferente a cada 1160 00:54:39,020 --> 00:54:39,990 vez. 1161 00:54:39,990 --> 00:54:44,110 Então, por convenção, quando quer um número aleatório, escrevemos esta linha, 1162 00:54:44,110 --> 00:54:50,540 srand NULL tempo, para nos dar uma grande semente mais aleatória, e depois corremos 1163 00:54:50,540 --> 00:54:52,080 rand, que nos dá um número aleatório. 1164 00:54:52,080 --> 00:54:52,840 Sim? 1165 00:54:52,840 --> 00:54:54,140 >> ALUNO: Você pode dizer o que você quer dizer com semente? 1166 00:54:54,140 --> 00:54:55,630 >> JASON HIRSCHHORN: Semente de in - 1167 00:54:55,630 --> 00:54:58,730 assim rand vai escolher um número e vai usar algum 1168 00:54:58,730 --> 00:55:00,060 fórmula para chegar lá. 1169 00:55:00,060 --> 00:55:03,250 Por isso, vai começar com algo e, em seguida, transformá-lo em algo baseado 1170 00:55:03,250 --> 00:55:03,890 fora dessa fórmula. 1171 00:55:03,890 --> 00:55:06,090 Se você sempre dar-lhe a mesma coisa, ele sempre vai transformá-lo no 1172 00:55:06,090 --> 00:55:06,790 mesma coisa. 1173 00:55:06,790 --> 00:55:08,450 Assim que a primeira coisa que você dar é a semente. 1174 00:55:08,450 --> 00:55:10,880 Então você quer dar algo diferente para começar com, e por isso 1175 00:55:10,880 --> 00:55:12,610 vai transformá-lo em algo diferente. 1176 00:55:12,610 --> 00:55:15,840 >> E, finalmente, a linha 20, isto é chamada a% 1177 00:55:15,840 --> 00:55:17,470 modulo, e isso é confuso. 1178 00:55:17,470 --> 00:55:19,850 Isso é algo que é um pouco diferente aqui que você realmente não 1179 00:55:19,850 --> 00:55:22,240 tem na matemática da vida real. 1180 00:55:22,240 --> 00:55:27,430 Mas, essencialmente, quando você toma um gigante número e dividir em C, o que 1181 00:55:27,430 --> 00:55:29,482 acontece com o restante? 1182 00:55:29,482 --> 00:55:30,510 >> ALUNO: Ele fica truncado. 1183 00:55:30,510 --> 00:55:31,220 >> JASON HIRSCHHORN: Ele fica truncado. 1184 00:55:31,220 --> 00:55:35,200 Então, 20 dividido por 3 é o quê? 1185 00:55:35,200 --> 00:55:37,950 O que isso quer retornar ao você, 20 dividido por 3. 1186 00:55:37,950 --> 00:55:39,260 Desculpe, 10 dividido por 3. 1187 00:55:39,260 --> 00:55:41,062 O que isso quer voltar para você? 1188 00:55:41,062 --> 00:55:41,540 >> Estudante: [inaudível]. 1189 00:55:41,540 --> 00:55:45,170 >> JASON HIRSCHHORN: 10 dividido por 3 apenas retorna 3, não 3 restante 1. 1190 00:55:45,170 --> 00:55:51,490 Então, o 10 módulo 3 retornos é apenas o restante, 1. 1191 00:55:51,490 --> 00:55:54,020 Então, se você queria saber o que 10 dividido por 3 realmente era, se fosse 1192 00:55:54,020 --> 00:55:58,950 fazer 10 dividido por 3, você terá a sua 3, e, em seguida, você faria 10 modulo 3 e 1193 00:55:58,950 --> 00:55:59,860 você deseja obter a 1. 1194 00:55:59,860 --> 00:56:04,630 Então você percebe que 10 dividido por 3 é 3, um resto. 1195 00:56:04,630 --> 00:56:07,990 >> E nesta linha, pode ser rand qualquer número inteiro, essencialmente. 1196 00:56:07,990 --> 00:56:12,660 Então modulo está dizendo, dividi-lo por número, o qual é, neste caso cinco. 1197 00:56:12,660 --> 00:56:16,420 E se você dividir por um número, o número inteiro sempre tem de ser inferior a 1198 00:56:16,420 --> 00:56:17,590 esse número. 1199 00:56:17,590 --> 00:56:22,200 Então, se você está dividindo por um número 5, o restante é sempre vai ser 1200 00:56:22,200 --> 00:56:23,396 de zero a quatro. 1201 00:56:23,396 --> 00:56:25,520 Isso é apenas a forma como a matemática funciona. 1202 00:56:25,520 --> 00:56:29,700 >> Assim, um grande número moduloed por um menor número sempre retornará 1203 00:56:29,700 --> 00:56:33,530 restante e sempre retornar algum número que é menor do que o número que você 1204 00:56:33,530 --> 00:56:34,693 dividido. 1205 00:56:34,693 --> 00:56:37,920 Alguém tem alguma dúvida sobre modulo, porque ele vai vir em muito, 1206 00:56:37,920 --> 00:56:41,450 muito útil, então eu quero ter certeza todo mundo entende isso? 1207 00:56:41,450 --> 00:56:43,710 Legal. 1208 00:56:43,710 --> 00:56:46,000 E vimos que este programa funcionou. 1209 00:56:46,000 --> 00:56:50,280 OK, seguindo em frente. 1210 00:56:50,280 --> 00:56:52,970 >> Assim, na próxima, vamos entrar em funções, e nós estamos indo para ir 1211 00:56:52,970 --> 00:56:55,580 através do resto das coisas muito rapidamente porque eu quero chegar 1212 00:56:55,580 --> 00:56:57,150 argumentos de linha de comando. 1213 00:56:57,150 --> 00:57:00,330 Assim, as funções são, essencialmente, Como você viu, as caixas pretas. 1214 00:57:00,330 --> 00:57:04,290 Eles levam as coisas chamados parâmetros, eles fazem alguma coisa para eles, seja 1215 00:57:04,290 --> 00:57:06,990 mudá-los ou criar alguns efeitos colaterais, e, finalmente, eles cospem 1216 00:57:06,990 --> 00:57:09,530 alguma coisa, o que é o valor de retorno. 1217 00:57:09,530 --> 00:57:12,495 Alguém pode me dar uma razão por isso que usaria funções? 1218 00:57:12,495 --> 00:57:15,870 1219 00:57:15,870 --> 00:57:16,360 Qualquer um? 1220 00:57:16,360 --> 00:57:19,360 Uma razão pela qual usaríamos funções? 1221 00:57:19,360 --> 00:57:21,280 Qualquer um? 1222 00:57:21,280 --> 00:57:22,700 Eu vi as duas mãos. 1223 00:57:22,700 --> 00:57:23,590 O que é um bom motivo? 1224 00:57:23,590 --> 00:57:24,930 Marcus? 1225 00:57:24,930 --> 00:57:27,730 >> ALUNO: Se você tiver que chamar o mesmo pedaço de código várias vezes. 1226 00:57:27,730 --> 00:57:29,150 >> JASON HIRSCHHORN: OK, se você precisa para chamar o mesmo pedaço de 1227 00:57:29,150 --> 00:57:30,040 codificar várias vezes. 1228 00:57:30,040 --> 00:57:32,470 Jeff, se você tem um motivo diferente? 1229 00:57:32,470 --> 00:57:34,230 >> ALUNO: Só para que você pode codificar menos. 1230 00:57:34,230 --> 00:57:35,070 >> JASON HIRSCHHORN: Você pode codificar menos. 1231 00:57:35,070 --> 00:57:35,320 Certo. 1232 00:57:35,320 --> 00:57:38,720 Se você quer fazer algo muito - 1233 00:57:38,720 --> 00:57:41,720 no código anterior, eu poderia ter escrito obter seqüência de cinco vezes, mas uma 1234 00:57:41,720 --> 00:57:44,620 loop faz com que pareça mais agradável e você tem que escrever menos código. 1235 00:57:44,620 --> 00:57:45,760 Funções são uma idéia similar. 1236 00:57:45,760 --> 00:57:48,720 Se eu quiser fazer a mesma coisa um monte, movê-lo para uma função e chamar isso de 1237 00:57:48,720 --> 00:57:49,610 funcionar cada vez. 1238 00:57:49,610 --> 00:57:51,190 Isso vai fazer aquela coisa para você. 1239 00:57:51,190 --> 00:57:53,740 Isso é um grande motivo utilizar funções. 1240 00:57:53,740 --> 00:57:54,870 >> Então, anatomia de uma função. 1241 00:57:54,870 --> 00:57:56,670 A função geral semelhante a este. 1242 00:57:56,670 --> 00:57:59,280 Vai começar com o tipo de retorno, então você vai ter o nome. 1243 00:57:59,280 --> 00:58:02,935 Vai levar os argumentos, caso contrário, conhecido como os parâmetros, e dentro 1244 00:58:02,935 --> 00:58:05,290 essas chaves, você vai escrever seu código. 1245 00:58:05,290 --> 00:58:07,150 >> Nós vimos uma função muito. 1246 00:58:07,150 --> 00:58:09,160 Essa é principal. 1247 00:58:09,160 --> 00:58:13,820 Aqui é principal sobreposta anatomia que eu tinha antes. 1248 00:58:13,820 --> 00:58:15,525 O que int aqui significa? 1249 00:58:15,525 --> 00:58:18,534 1250 00:58:18,534 --> 00:58:19,450 O que int significa? 1251 00:58:19,450 --> 00:58:21,026 Quando eu escrevo int main (void). 1252 00:58:21,026 --> 00:58:21,740 >> ALUNO: Tipo de retorno? 1253 00:58:21,740 --> 00:58:22,350 >> JASON HIRSCHHORN: Desculpe? 1254 00:58:22,350 --> 00:58:23,170 >> ALUNO: O tipo de retorno. 1255 00:58:23,170 --> 00:58:24,820 >> JASON HIRSCHHORN: Int é o tipo de retorno, exatamente correto. 1256 00:58:24,820 --> 00:58:25,870 Principal retorna um int. 1257 00:58:25,870 --> 00:58:28,678 O que é o principal? 1258 00:58:28,678 --> 00:58:29,510 >> ALUNO: nome da função. 1259 00:58:29,510 --> 00:58:30,800 >> JASON HIRSCHHORN: Principal é o nome da função. 1260 00:58:30,800 --> 00:58:31,510 Exatamente. 1261 00:58:31,510 --> 00:58:31,840 E vazio? 1262 00:58:31,840 --> 00:58:33,190 O que é o vazio dentro dos parênteses? 1263 00:58:33,190 --> 00:58:36,650 1264 00:58:36,650 --> 00:58:42,030 >> ALUNO: Não é preciso qualquer valor externo. 1265 00:58:42,030 --> 00:58:42,930 >> JASON HIRSCHHORN: void So - 1266 00:58:42,930 --> 00:58:43,240 direita. 1267 00:58:43,240 --> 00:58:45,940 Dentro dos parênteses, colocamos o parâmetros ou os argumentos dos 1268 00:58:45,940 --> 00:58:48,480 função recebe, o que se passa no interior da caixa preta. 1269 00:58:48,480 --> 00:58:50,760 Quando você escreve vazio, você está dizendo isso leva nada dentro 1270 00:58:50,760 --> 00:58:53,802 Então int void main principal meio de não ter nada dentro 1271 00:58:53,802 --> 00:58:56,950 >> Dentro das chaves, temos alguns código, e então vemos no final 1272 00:58:56,950 --> 00:58:57,640 retornar zero. 1273 00:58:57,640 --> 00:59:01,220 O que significa retorno de zero significa? 1274 00:59:01,220 --> 00:59:02,470 Bem, nós falamos sobre o tipo de retorno. 1275 00:59:02,470 --> 00:59:03,780 Principal precisa retornar um int. 1276 00:59:03,780 --> 00:59:04,960 Isso é o que esta linha faz. 1277 00:59:04,960 --> 00:59:07,330 Ele retorna um int, zero. 1278 00:59:07,330 --> 00:59:13,600 >> É claro que não temos visto que muitas porque na programação que fazemos com 1279 00:59:13,600 --> 00:59:16,070 as máquinas que fazemos e os compiladores nós usamos hoje em dia, você 1280 00:59:16,070 --> 00:59:16,990 não precisa dessa linha. 1281 00:59:16,990 --> 00:59:20,070 Principal é especial o suficiente para que ele saiba quando você chegar ao final do principal, apenas 1282 00:59:20,070 --> 00:59:22,060 retornar zero se tudo correu bem. 1283 00:59:22,060 --> 00:59:25,560 Na verdade, se alguma coisa não vai bem, principal, muitas vezes, retornar um diferente 1284 00:59:25,560 --> 00:59:28,500 número significando que algo deu errado com o seu programa. 1285 00:59:28,500 --> 00:59:32,470 >> Então, geralmente quando você ver o código, você Não escrevo retorno zero, mas é bom 1286 00:59:32,470 --> 00:59:34,770 para saber que isso está acontecendo por trás da cenas porque sempre que você escrever 1287 00:59:34,770 --> 00:59:36,370 um outro tipo de função, você está indo a necessidade de 1288 00:59:36,370 --> 00:59:37,400 incluir uma linha de retorno. 1289 00:59:37,400 --> 00:59:39,710 Se você está dizendo que eu vou retornar um int, você tem que 1290 00:59:39,710 --> 00:59:41,250 escrever retornar algo. 1291 00:59:41,250 --> 00:59:45,160 Se você disser vazio aqui no começo, void void principal, para 1292 00:59:45,160 --> 00:59:48,670 exemplo, então ele não está voltando nada - vazio não significa nada - 1293 00:59:48,670 --> 00:59:50,320 assim você não precisa que a linha de retorno. 1294 00:59:50,320 --> 00:59:53,610 Mas você sempre escrever algo que não é para anular o tipo de retorno, você precisa 1295 00:59:53,610 --> 00:59:55,950 uma linha que diz que retorno e você precisa colocar alguma coisa lá 1296 00:59:55,950 --> 00:59:57,650 que corresponde ao tipo. 1297 00:59:57,650 --> 00:59:58,900 Qualquer dúvida sobre isso? 1298 00:59:58,900 --> 01:00:03,110 1299 01:00:03,110 --> 01:00:04,680 Doce. 1300 01:00:04,680 --> 01:00:05,930 >> Scope. 1301 01:00:05,930 --> 01:00:07,360 Isso é algo que nós temos tocou também. 1302 01:00:07,360 --> 01:00:10,720 Cada variável, como sabemos, tem uma certa margem, e isso é basicamente 1303 01:00:10,720 --> 01:00:14,160 falando sobre onde a variável pode ou não pode ser referenciada. 1304 01:00:14,160 --> 01:00:16,310 E eu gostaria de dizer o que acontece entre chaves permanece 1305 01:00:16,310 --> 01:00:18,000 dentro das chaves. 1306 01:00:18,000 --> 01:00:21,490 Assim, por exemplo, se olharmos para este código, estamos definindo uma variável global 1307 01:00:21,490 --> 01:00:24,510 fora do principal, int a, aqui em cima no topo. 1308 01:00:24,510 --> 01:00:27,380 Estamos chamando outro int dentro de uma principal. 1309 01:00:27,380 --> 01:00:29,760 Temos algumas chaves mais crespos, e estamos chamando outro um int. 1310 01:00:29,760 --> 01:00:31,690 >> Temos três um no código. 1311 01:00:31,690 --> 01:00:32,550 Estes não são a mesma coisa. 1312 01:00:32,550 --> 01:00:34,880 Criei três variáveis ​​distintas. 1313 01:00:34,880 --> 01:00:39,370 Então dentro destas encaracolado interior suspensórios, eu digo a = 4. 1314 01:00:39,370 --> 01:00:44,130 Que um é que está falando, o primeiro, o segundo, 1315 01:00:44,130 --> 01:00:47,045 ou o terceiro? 1316 01:00:47,045 --> 01:00:47,920 >> ALUNO: o terceiro. 1317 01:00:47,920 --> 01:00:49,320 >> JASON HIRSCHHORN: Ele está falando sobre o terceiro. 1318 01:00:49,320 --> 01:00:52,850 Todos aqueles a realmente pode ser falou neste particular, 1319 01:00:52,850 --> 01:00:58,660 exemplo, porque seu alcance tudo correr para essas chaves mais íntimos. 1320 01:00:58,660 --> 01:01:02,360 No entanto, quando você chamar as coisas da mesma nome, há algo chamado escondido. 1321 01:01:02,360 --> 01:01:09,670 Assim, você só lidar com ou consertar ou usar o variável mais recente, ou a um 1322 01:01:09,670 --> 01:01:11,090 mais próxima de você. 1323 01:01:11,090 --> 01:01:14,760 Assim, aqui dentro, isto é mais próximo de uma terceira a essa linha, a = 4, então 1324 01:01:14,760 --> 01:01:16,550 afeta o terceiro. 1325 01:01:16,550 --> 01:01:19,890 E a última linha, a = 2, o qual é um que está falando, o primeiro, segundo, 1326 01:01:19,890 --> 01:01:20,805 ou um terceiro? 1327 01:01:20,805 --> 01:01:22,530 >> ALUNO: Segundo. 1328 01:01:22,530 --> 01:01:24,430 >> JASON HIRSCHHORN: Ele está falando sobre o segundo, uma. 1329 01:01:24,430 --> 01:01:27,970 Claro que, a um terceiro está mais próximo em que o código, mas o terceiro um 1330 01:01:27,970 --> 01:01:30,200 não existe fora essas chaves. 1331 01:01:30,200 --> 01:01:32,650 Uma vez que você chegar a esse fechado encaracolado cinta, como é que ele se foi, 1332 01:01:32,650 --> 01:01:33,570 essencialmente. 1333 01:01:33,570 --> 01:01:36,150 Então, os dois únicos que lhe resta são aqueles os dois primeiros e, é claro, já 1334 01:01:36,150 --> 01:01:37,960 que está mais próximo da segunda. 1335 01:01:37,960 --> 01:01:39,410 >> Então, isso é uma coisa boa para lembre-se sobre o escopo. 1336 01:01:39,410 --> 01:01:42,900 Por exemplo, eu tenho certeza que você encontrou fazer isso em um loop while. 1337 01:01:42,900 --> 01:01:46,680 Se você inicializar a variável dentro o que while e depois tentar 1338 01:01:46,680 --> 01:01:50,360 acessá-lo do lado de fora, você provavelmente tem algum aviso como, este 1339 01:01:50,360 --> 01:01:51,680 variável não existe. 1340 01:01:51,680 --> 01:01:54,370 Isso porque a idéia de escopo, que as coisas só existem 1341 01:01:54,370 --> 01:01:55,320 dentro dessas chaves. 1342 01:01:55,320 --> 01:01:59,320 Curly chaves são como um abraço gigante que você está dando ao seu código, é outro 1343 01:01:59,320 --> 01:02:01,380 maneira de pensar sobre isso. 1344 01:02:01,380 --> 01:02:05,280 >> Portanto, esta é uma outra função, algo para vocês código, hellofunction.c. 1345 01:02:05,280 --> 01:02:08,240 Nós vamos pular que, por agora, mas isso é algo que eu encorajá-lo a 1346 01:02:08,240 --> 01:02:09,740 praticar em seu próprio país. 1347 01:02:09,740 --> 01:02:12,510 Escreva um programa em que as chamadas principais outra função que imprime uma 1348 01:02:12,510 --> 01:02:13,750 saudação ao usuário. 1349 01:02:13,750 --> 01:02:17,750 É essencialmente tomando Olá mundo e abstraindo que printf em 1350 01:02:17,750 --> 01:02:18,680 outra função. 1351 01:02:18,680 --> 01:02:22,360 Mas nós não vamos fazer isso agora porque não temos tanto tempo 1352 01:02:22,360 --> 01:02:23,350 saiu como eu teria gostado. 1353 01:02:23,350 --> 01:02:26,250 >> Então declaração da função. 1354 01:02:26,250 --> 01:02:28,080 Nós já vimos isso antes também. 1355 01:02:28,080 --> 01:02:31,180 Se você quer escrever uma outra função, você precisa deixar o computador conhecer e 1356 01:02:31,180 --> 01:02:32,600 principal sabe que ela existe. 1357 01:02:32,600 --> 01:02:37,140 Então, o que fazemos é acima principal, escrevemos o tipo de retorno, o nome eo 1358 01:02:37,140 --> 01:02:42,970 parâmetros e, em seguida, abaixo principal, aqui, nós realmente copiar essa linha 1359 01:02:42,970 --> 01:02:45,080 e em seguida, escrever o código real. 1360 01:02:45,080 --> 01:02:50,990 Então, desta forma, se você chamar a função em principal no topo, principal sabe que 1361 01:02:50,990 --> 01:02:54,650 Olá existe, por exemplo, se eu fosse para chamar Olá, e, em seguida, olha para 1362 01:02:54,650 --> 01:02:56,710 a implementação abaixo. 1363 01:02:56,710 --> 01:02:59,680 O que acontece se eu não incluir este linha em cima, anular Olá (void)? 1364 01:02:59,680 --> 01:03:03,820 1365 01:03:03,820 --> 01:03:06,560 >> Se eu não incluir esta linha e chamadas principais Olá, eu sou 1366 01:03:06,560 --> 01:03:07,640 vai receber um erro. 1367 01:03:07,640 --> 01:03:10,090 Eu estou indo para obter um erro porque o compilador não sabe 1368 01:03:10,090 --> 01:03:13,070 que essa coisa existe. 1369 01:03:13,070 --> 01:03:16,680 Isto é semelhante a isso que não # include cs50.h. 1370 01:03:16,680 --> 01:03:21,390 O que essencialmente cs50.h está fazendo está colocando obter corda lá em cima. 1371 01:03:21,390 --> 01:03:23,120 É colocar obter int lá em cima. 1372 01:03:23,120 --> 01:03:26,570 É colocar todos aqueles função protótipos antes principal de modo que quando 1373 01:03:26,570 --> 01:03:29,900 você chamá-los em principal, principal sabe que essas coisas existem. 1374 01:03:29,900 --> 01:03:31,630 Isso é o que esses arquivos h. Fazer. 1375 01:03:31,630 --> 01:03:33,850 E por isso, se você estiver indo para fazer o seu próprio função, você tem que certificar-se de 1376 01:03:33,850 --> 01:03:36,690 você colocar esse protótipo lá em cima. 1377 01:03:36,690 --> 01:03:38,380 Qualquer dúvida sobre isso até agora? 1378 01:03:38,380 --> 01:03:41,630 1379 01:03:41,630 --> 01:03:42,490 >> Argumentos de linha de comando. 1380 01:03:42,490 --> 01:03:44,780 Isto é o que nós vamos terminar , e então espero que nós vamos 1381 01:03:44,780 --> 01:03:46,180 espremer em alguns pset. 1382 01:03:46,180 --> 01:03:48,700 Eu não sei se nós vamos ser capazes de espremer em que por causa do tempo, mas 1383 01:03:48,700 --> 01:03:51,560 com vocês que estão aqui, e se você Querem dizer que depois de um pouco, nós 1384 01:03:51,560 --> 01:03:54,290 pode passar por isso de fora. 1385 01:03:54,290 --> 01:03:56,020 Mas vamos acabar com argumentos de linha de comando 1386 01:03:56,020 --> 01:03:58,510 para os últimos 15 minutos. 1387 01:03:58,510 --> 01:03:59,930 Nós acordado, Michael? 1388 01:03:59,930 --> 01:04:01,180 Você está acordado? 1389 01:04:01,180 --> 01:04:01,660 Bom. 1390 01:04:01,660 --> 01:04:03,760 Eu não sei se você dormir com os olhos fechados. 1391 01:04:03,760 --> 01:04:05,800 Seria complicado. 1392 01:04:05,800 --> 01:04:07,180 >> Argumentos de linha de comando. 1393 01:04:07,180 --> 01:04:10,430 Aqueles que são uma forma de passar informações em um programa. 1394 01:04:10,430 --> 01:04:12,780 Eventualmente, nós vamos encontrar os outros. 1395 01:04:12,780 --> 01:04:15,600 Mas, essencialmente, vamos parar escrever int main (void) se quisermos 1396 01:04:15,600 --> 01:04:16,720 ter alguns argumentos de linha de comando. 1397 01:04:16,720 --> 01:04:19,850 Nós vamos escrever essa coisa chamado int main (int argc, 1398 01:04:19,850 --> 01:04:22,430 corda argv, colchetes. 1399 01:04:22,430 --> 01:04:23,710 Isso é confuso. 1400 01:04:23,710 --> 01:04:26,070 Isso é um monte de letras que não estão em Inglês humano, por isso estamos indo para 1401 01:04:26,070 --> 01:04:27,680 descompactá-los agora. 1402 01:04:27,680 --> 01:04:30,450 >> Argc significa contagem argumento - 1403 01:04:30,450 --> 01:04:32,600 e de novo, tudo isso vai estar disponível online - 1404 01:04:32,600 --> 01:04:34,280 e esse é o número de argumentos. 1405 01:04:34,280 --> 01:04:37,940 Argv significa argumento do vetor, e aqueles são os próprios argumentos. 1406 01:04:37,940 --> 01:04:38,830 É uma matriz de strings. 1407 01:04:38,830 --> 01:04:40,880 Nós temos realmente visto uma matriz de cordas antes de hoje. 1408 01:04:40,880 --> 01:04:44,390 Criamos um no último programa que codificada. 1409 01:04:44,390 --> 01:04:45,720 >> Então, aqui está um exemplo. 1410 01:04:45,720 --> 01:04:50,230 Eu escrevo. / Ohai CS50 seção na minha linha de comando. 1411 01:04:50,230 --> 01:04:54,090 Argc, neste caso é igual a 3. 1412 01:04:54,090 --> 01:05:01,170 Argv suporte 0 é ohai, argv suporte 1 é CS50, argv faixa 2 é a seção. 1413 01:05:01,170 --> 01:05:05,160 Novamente, argc é o número de argumentos, e para te enganar um pouco 1414 01:05:05,160 --> 01:05:08,710 bit, contamos sempre com o nome do funcionam como o primeiro argumento. 1415 01:05:08,710 --> 01:05:12,350 Portanto, neste caso, há três argumentos, o nome da função 1416 01:05:12,350 --> 01:05:14,590 e, em seguida, os dois que eu digitei dentro 1417 01:05:14,590 --> 01:05:18,900 >> Em seguida, vamos para salvar aqueles próprios argumentos em argv. 1418 01:05:18,900 --> 01:05:22,690 E, novamente, apenas, como vimos antes, fizemos esta última no programa que codificada. 1419 01:05:22,690 --> 01:05:27,110 Você pode mover-se através da matriz de argv e obter essas strings. 1420 01:05:27,110 --> 01:05:28,830 Isso é essencialmente o que fizemos no o fim do nosso último programa. 1421 01:05:28,830 --> 01:05:33,190 Nós escolhemos um nome aleatório e, em seguida, foi para a nomes de suporte que quer e impresso 1422 01:05:33,190 --> 01:05:34,580 a seqüência localizado lá. 1423 01:05:34,580 --> 01:05:39,870 1424 01:05:39,870 --> 01:05:43,670 >> Em cima de apenas uma matriz, porque próprias cordas são matrizes, como 1425 01:05:43,670 --> 01:05:46,320 falou, você pode ter matrizes de matrizes, que é 1426 01:05:46,320 --> 01:05:48,530 essencialmente o que argv é. 1427 01:05:48,530 --> 01:05:51,370 Uma maneira que você pode pensar sobre isto é as linhas e colunas. 1428 01:05:51,370 --> 01:05:54,750 Eu posso chamar isso agora. 1429 01:05:54,750 --> 01:05:57,370 Então argv - 1430 01:05:57,370 --> 01:05:58,630 que não está apagando. 1431 01:05:58,630 --> 01:05:59,880 Vamos desenhar sob ohai. 1432 01:05:59,880 --> 01:06:09,320 1433 01:06:09,320 --> 01:06:12,490 >> Então, se eu escrevi em, seção CS50 ohai, Eu estou indo para truncar 1434 01:06:12,490 --> 01:06:14,520 seção para este exemplo. 1435 01:06:14,520 --> 01:06:29,026 Mas, essencialmente, o meu multidimensional array, ohai CS50, 1436 01:06:29,026 --> 01:06:32,200 vamos fazer seita. 1437 01:06:32,200 --> 01:06:34,610 Então, aqui, eu posso acessar - 1438 01:06:34,610 --> 01:06:40,930 1439 01:06:40,930 --> 01:06:45,710 se eu apenas dar argv um número - 1440 01:06:45,710 --> 01:06:46,390 isso é errado. 1441 01:06:46,390 --> 01:06:49,020 O que há de errado neste diagrama? 1442 01:06:49,020 --> 01:06:49,690 >> ALUNO: Comece pelo zero. 1443 01:06:49,690 --> 01:06:50,350 >> JASON HIRSCHHORN: deve começar com zero. 1444 01:06:50,350 --> 01:06:52,940 Eu provavelmente deveria também girá-lo, mas pois eu já tenha desenhado isso, estou 1445 01:06:52,940 --> 01:06:54,120 vai deixá-lo lá por enquanto. 1446 01:06:54,120 --> 01:06:55,160 Mas começa a zero. 1447 01:06:55,160 --> 01:06:56,410 Isso é certo. 1448 01:06:56,410 --> 01:06:58,980 1449 01:06:58,980 --> 01:07:00,120 Me desculpe se isso é pequeno. 1450 01:07:00,120 --> 01:07:01,370 Vocês podem tipo de ver? 1451 01:07:01,370 --> 01:07:03,620 1452 01:07:03,620 --> 01:07:06,670 Então, se eu fizer argv 0, eu vou obter todas ohai. 1453 01:07:06,670 --> 01:07:08,555 Se eu fizer uma argv, eu vou pegar todos CS50. 1454 01:07:08,555 --> 01:07:10,720 Se eu fizer argv 2, eu vou pegar todos seita. 1455 01:07:10,720 --> 01:07:13,370 >> Mas agora, como dissemos, cordas são próprias matrizes. 1456 01:07:13,370 --> 01:07:19,740 Então, o que eu posso fazer é que eu posso tratar essa como uma matriz multi-dimensional, e eu 1457 01:07:19,740 --> 01:07:24,190 pode fazer algo ao longo das linhas de argv 0, 0, o que me dá apenas o 1458 01:07:24,190 --> 01:07:25,400 caractere 0. 1459 01:07:25,400 --> 01:07:28,760 Argv 0, 1, o que me dá apenas h. 1460 01:07:28,760 --> 01:07:33,960 Argv 1, 3, o que me dá apenas este 0 aqui no CS50. 1461 01:07:33,960 --> 01:07:37,690 >> Então, porque os próprios fios são matrizes, estamos colocando 1462 01:07:37,690 --> 01:07:38,540 que na outra matriz. 1463 01:07:38,540 --> 01:07:42,850 Temos agora array de arrays, e nós pode indexar a nossa primeira matriz e 1464 01:07:42,850 --> 01:07:44,840 então o índice para o nosso segundo array. 1465 01:07:44,840 --> 01:07:48,650 E, como seria de esperar, nós fazemos isso por apenas colocar os dois - 1466 01:07:48,650 --> 01:07:51,760 fazemos os colchetes apenas ao lado um do outro. 1467 01:07:51,760 --> 01:07:58,930 Portanto, neste exemplo, argv é uma CS50 e argv 1, 2, como dissemos, é apenas 5. 1468 01:07:58,930 --> 01:08:02,120 Alguém tem alguma dúvida sobre arrays multi-dimensionais? 1469 01:08:02,120 --> 01:08:05,090 1470 01:08:05,090 --> 01:08:06,380 Vocês estão fazendo incrível. 1471 01:08:06,380 --> 01:08:07,750 Doce. 1472 01:08:07,750 --> 01:08:11,980 >> Então, nós temos um outro programa aqui, e esta é a última coisa que nós somos 1473 01:08:11,980 --> 01:08:13,690 vai fazer agora. 1474 01:08:13,690 --> 01:08:18,160 Então, eu quero que você escreva um programa que leva o nome completo do usuário, duas e apenas 1475 01:08:18,160 --> 01:08:21,649 dois argumentos de linha de comando e, finalmente, imprimir uma saudação ao 1476 01:08:21,649 --> 01:08:24,180 usuário, que inclui seu primeiro nome. 1477 01:08:24,180 --> 01:08:27,800 Então, por que você não tomar três ou quatro minutos para fazer isso, e depois vamos 1478 01:08:27,800 --> 01:08:29,870 sobre ele como um grupo, e então vamos embrulhar? 1479 01:08:29,870 --> 01:09:44,189 1480 01:09:44,189 --> 01:09:48,084 >> E, novamente, aqui, quando nós dizemos ter um nome completo acordo com a descrição do usuário 1481 01:09:48,084 --> 01:09:54,473 deste problema, que deve ser de comando argumentos de linha, não utilizando obter string. 1482 01:09:54,473 --> 01:09:55,450 Sim, Marcus? 1483 01:09:55,450 --> 01:09:58,260 >> ALUNO: Então, quando você diz que dois comando argumentos de linha, é que, para além 1484 01:09:58,260 --> 01:10:00,000 . o / run, ou - 1485 01:10:00,000 --> 01:10:02,980 >> JASON HIRSCHHORN: Boa pergunta. 1486 01:10:02,980 --> 01:10:05,995 Fazer, incluindo o. / Run, três argumentos de linha de comando. 1487 01:10:05,995 --> 01:10:08,550 1488 01:10:08,550 --> 01:10:11,320 Ou, incluindo o. / Personalizado, em Neste caso, porque essa é a 1489 01:10:11,320 --> 01:10:12,360 nome desse arquivo. 1490 01:10:12,360 --> 01:10:13,300 Então argc seria três. 1491 01:10:13,300 --> 01:10:19,480 Mas eu quero apenas dois argumentos dado ao programa. 1492 01:10:19,480 --> 01:10:20,400 Devo especificar isso. 1493 01:10:20,400 --> 01:10:23,380 Eu vou fazer essa mudança antes de eu postar estes e enviá-los para vocês. 1494 01:10:23,380 --> 01:10:32,747 1495 01:10:32,747 --> 01:10:34,740 >> ESTUDANTE: E se você tem um nome do meio? 1496 01:10:34,740 --> 01:10:36,800 >> JASON HIRSCHHORN: Se você tem um meio nome, você está sem sorte. 1497 01:10:36,800 --> 01:10:38,050 Sinto muito. 1498 01:10:38,050 --> 01:10:40,320 1499 01:10:40,320 --> 01:10:43,744 Ou se você só vai por Shakira, você também está fora de sorte. 1500 01:10:43,744 --> 01:10:55,672 1501 01:10:55,672 --> 01:10:56,425 Sim? 1502 01:10:56,425 --> 01:11:00,760 >> ALUNO: Então, quando as pessoas não têm cs50.h, eles definem argv 1503 01:11:00,760 --> 01:11:03,450 como estrela argv de char? 1504 01:11:03,450 --> 01:11:05,160 Ou ainda é chamado de cadeia argv? 1505 01:11:05,160 --> 01:11:07,430 >> JASON HIRSCHHORN: sim. 1506 01:11:07,430 --> 01:11:10,480 Então, string, novamente, máscara sobre o que exatamente está acontecendo lá. 1507 01:11:10,480 --> 01:11:14,040 Isso vai ser descompactado talvez na quarta-feira, mas em breve. 1508 01:11:14,040 --> 01:11:16,380 É como rodinhas. 1509 01:11:16,380 --> 01:11:18,370 Porque essencialmente, é a mesma coisa. 1510 01:11:18,370 --> 01:11:37,040 1511 01:11:37,040 --> 01:11:42,560 >> Então, vamos dar um minuto para o programa este, em seguida, vamos falar sobre 1512 01:11:42,560 --> 01:11:45,130 como um grupo e, depois como eu disse, embrulhar. 1513 01:11:45,130 --> 01:11:47,770 E eu acho que eles ainda são doces extra, então vocês devem espero ter 1514 01:11:47,770 --> 01:11:49,790 que, ou por favor, tome isso. 1515 01:11:49,790 --> 01:12:20,380 1516 01:12:20,380 --> 01:12:22,560 >> Desculpe se você ainda está escrevendo, mas eu quero mergulhar e nós 1517 01:12:22,560 --> 01:12:24,010 pode terminá-lo juntos. 1518 01:12:24,010 --> 01:12:30,470 Então, eu tenho escrito, # include cs50.h, # include stdio.h. 1519 01:12:30,470 --> 01:12:33,970 int main (void), encaracolado cinta, encaracolado cinta, dentro de três linhas de 1520 01:12:33,970 --> 01:12:38,760 pseudocódigo, ter o nome completo do usuário, duas e apenas duas linha de comando 1521 01:12:38,760 --> 01:12:42,670 argumentos, imprima uma saudação ao usuário, que inclui seu primeiro nome. 1522 01:12:42,670 --> 01:12:45,810 >> Assim, o primeiro, tomar nome completo do usuário. 1523 01:12:45,810 --> 01:12:47,290 Quem pode me ajudar a tomar nome completo do usuário? 1524 01:12:47,290 --> 01:12:50,882 1525 01:12:50,882 --> 01:12:52,780 Como eu faço essa parte? 1526 01:12:52,780 --> 01:12:57,685 1527 01:12:57,685 --> 01:12:59,500 Vocês fazem a primeira parte? 1528 01:12:59,500 --> 01:13:02,587 1529 01:13:02,587 --> 01:13:03,894 Pegue o nome completo do usuário. 1530 01:13:03,894 --> 01:13:05,860 Bem, para que uma linha de comando argumento, o que devo escrever? 1531 01:13:05,860 --> 01:13:09,624 O que devo mudar em minha declaração de função? 1532 01:13:09,624 --> 01:13:11,140 >> ALUNO: Você não quer que ele seja mais vazio. 1533 01:13:11,140 --> 01:13:11,410 >> JASON HIRSCHHORN: Exatamente. 1534 01:13:11,410 --> 01:13:12,385 Eu não quero que ela seja anulada. 1535 01:13:12,385 --> 01:13:13,630 O que eu quero que ele seja? 1536 01:13:13,630 --> 01:13:14,650 >> ALUNO: argc Int. 1537 01:13:14,650 --> 01:13:15,720 >> JASON HIRSCHHORN: Int argc. 1538 01:13:15,720 --> 01:13:17,430 >> ALUNO: argv seqüência. 1539 01:13:17,430 --> 01:13:19,055 >> JASON HIRSCHHORN: String argv. 1540 01:13:19,055 --> 01:13:19,705 >> ALUNO: Suporte, suporte. 1541 01:13:19,705 --> 01:13:20,070 >> JASON HIRSCHHORN: Suporte, suporte. 1542 01:13:20,070 --> 01:13:21,780 É exatamente isso, e isso é na verdade, como eu vou conseguir 1543 01:13:21,780 --> 01:13:22,820 nome completo do usuário. 1544 01:13:22,820 --> 01:13:24,070 Eles estão indo para colocá-lo lá. 1545 01:13:24,070 --> 01:13:27,720 1546 01:13:27,720 --> 01:13:28,780 De modo que um é feito. 1547 01:13:28,780 --> 01:13:30,780 Então agora eu quero dois e apenas dois argumentos de linha de comando. 1548 01:13:30,780 --> 01:13:35,065 Então Noé, o que é uma maneira que eu puder verificar o número de comando 1549 01:13:35,065 --> 01:13:36,315 argumentos de linha que eu tenho? 1550 01:13:36,315 --> 01:13:39,676 1551 01:13:39,676 --> 01:13:40,725 >> ALUNO: Você faz um if. 1552 01:13:40,725 --> 01:13:42,270 >> JASON HIRSCHHORN: Se declaração, exatamente. 1553 01:13:42,270 --> 01:13:44,830 O que eu quero que a condição? 1554 01:13:44,830 --> 01:13:48,370 >> ESTUDANTE: Se argc superior a 3. 1555 01:13:48,370 --> 01:13:52,485 >> JASON HIRSCHHORN: Se argc é maior do que 3. 1556 01:13:52,485 --> 01:13:58,430 Se argc superior a 3, o que eu faço? 1557 01:13:58,430 --> 01:13:59,400 >> ESTUDANTE: Return 1. 1558 01:13:59,400 --> 01:14:01,856 >> JASON HIRSCHHORN: Return 1. 1559 01:14:01,856 --> 01:14:04,050 Será que garantir que tenho duas e apenas duas? 1560 01:14:04,050 --> 01:14:07,280 1561 01:14:07,280 --> 01:14:07,820 >> ALUNO: Não. 1562 01:14:07,820 --> 01:14:13,110 Se é maior que argc 3 e inferior a 2. 1563 01:14:13,110 --> 01:14:17,770 >> Jason HIRSCHHORN: Se argc é maior a 3 e argc é inferior a 2. 1564 01:14:17,770 --> 01:14:21,540 O que é uma maneira que eu posso escrever isso em apenas uma linha, ou sem o uso de que 1565 01:14:21,540 --> 01:14:23,890 e operador booleano? 1566 01:14:23,890 --> 01:14:25,942 >> ALUNO: Não é igual a 2. 1567 01:14:25,942 --> 01:14:28,790 >> JASON HIRSCHHORN: Se argc não é igual a 2. 1568 01:14:28,790 --> 01:14:29,260 Exatamente. 1569 01:14:29,260 --> 01:14:34,890 Então, se argc não é igual a 2, isto vai me dar a este programa, 1570 01:14:34,890 --> 01:14:37,250 personalizado, quando eu executá-lo, e que vai me dar quantos 1571 01:14:37,250 --> 01:14:38,740 argumentos de linha de comando? 1572 01:14:38,740 --> 01:14:42,110 Quantos eu vou procurar? 1573 01:14:42,110 --> 01:14:42,370 >> Desculpe. 1574 01:14:42,370 --> 01:14:43,400 Deixe-me reformular isso. 1575 01:14:43,400 --> 01:14:46,620 Se argc = 2, quantas coisas fez o usuário escrever na linha? 1576 01:14:46,620 --> 01:14:47,500 >> ALUNO: Uma. 1577 01:14:47,500 --> 01:14:49,120 >> JASON HIRSCHHORN: Apenas um. 1578 01:14:49,120 --> 01:14:50,430 Então, antes, você estava certo, Noah. 1579 01:14:50,430 --> 01:14:52,192 O que eu realmente preciso colocar lá? 1580 01:14:52,192 --> 01:14:53,640 >> ALUNO: Isso é igual a 3. 1581 01:14:53,640 --> 01:14:55,970 >> JASON HIRSCHHORN: ARGC não é igual a 3. 1582 01:14:55,970 --> 01:15:00,250 Eu quero ser igual 3 porque eu quero personalização mais dos outros dois. 1583 01:15:00,250 --> 01:15:02,560 Então, se argc não é igual a 3, o retorno 1. 1584 01:15:02,560 --> 01:15:04,475 Por que você diz retornar 1? 1585 01:15:04,475 --> 01:15:06,180 >> ALUNO: Porque isso significa que ele está errado. 1586 01:15:06,180 --> 01:15:08,420 >> JASON HIRSCHHORN: Isso significa que é errado, eo que é que vamos fazer? 1587 01:15:08,420 --> 01:15:10,360 >> ALUNO: Re-solicitar ao usuário. 1588 01:15:10,360 --> 01:15:11,940 >> JASON HIRSCHHORN: Vai sair o programa, por isso vai ter que correr 1589 01:15:11,940 --> 01:15:14,520 novamente, mas não temos nada aqui para pedir para eles novamente. 1590 01:15:14,520 --> 01:15:14,840 Eu não pedi por isso. 1591 01:15:14,840 --> 01:15:15,990 Então, isso é exatamente correto. 1592 01:15:15,990 --> 01:15:17,680 Retorno 1 apenas sai do programa. 1593 01:15:17,680 --> 01:15:18,520 Grande. 1594 01:15:18,520 --> 01:15:21,600 >> E imprimir uma saudação ao usuário que inclui seu primeiro nome. 1595 01:15:21,600 --> 01:15:24,010 Como posso fazer isso? 1596 01:15:24,010 --> 01:15:25,990 Anna? 1597 01:15:25,990 --> 01:15:26,580 >> ESTUDANTE: printf. 1598 01:15:26,580 --> 01:15:27,785 >> JASON HIRSCHHORN: printf. 1599 01:15:27,785 --> 01:15:28,640 >> ESTUDANTE: (" 1600 01:15:28,640 --> 01:15:30,460 >> JASON HIRSCHHORN: ( 1601 01:15:30,460 --> 01:15:31,600 >> ALUNO: "Olá 1602 01:15:31,600 --> 01:15:33,210 >> JASON HIRSCHHORN: "Olá 1603 01:15:33,210 --> 01:15:34,800 >> ALUNO:% s 1604 01:15:34,800 --> 01:15:37,230 >> JASON HIRSCHHORN:% s 1605 01:15:37,230 --> 01:15:38,840 >> ALUNO: / n 1606 01:15:38,840 --> 01:15:41,030 >> JASON HIRSCHHORN: / n 1607 01:15:41,030 --> 01:15:43,120 >> ALUNO: ", 1608 01:15:43,120 --> 01:15:45,130 >> JASON HIRSCHHORN: ", 1609 01:15:45,130 --> 01:15:46,620 >> ALUNO: argv 1610 01:15:46,620 --> 01:15:47,080 >> JASON HIRSCHHORN: Desculpe? 1611 01:15:47,080 --> 01:15:47,750 >> ALUNO: argv 1612 01:15:47,750 --> 01:15:48,840 >> JASON HIRSCHHORN: argv 1613 01:15:48,840 --> 01:15:50,190 >> ALUNO: colchetes 1. 1614 01:15:50,190 --> 01:15:51,230 >> JASON HIRSCHHORN: Colchetes? 1615 01:15:51,230 --> 01:15:51,870 >> ESTUDANTE: 1. 1616 01:15:51,870 --> 01:15:54,050 >> JASON HIRSCHHORN: 1. 1617 01:15:54,050 --> 01:15:55,850 >> ALUNO: E) ponto e vírgula. 1618 01:15:55,850 --> 01:15:58,290 >> JASON HIRSCHHORN:) vírgula. 1619 01:15:58,290 --> 01:16:00,250 Vamos executar este. 1620 01:16:00,250 --> 01:16:03,730 Faça personalizado. 1621 01:16:03,730 --> 01:16:06,392 . / Personalizado. 1622 01:16:06,392 --> 01:16:07,420 É só sair. 1623 01:16:07,420 --> 01:16:10,390 Por que sair? 1624 01:16:10,390 --> 01:16:11,310 >> ALUNO: Você não colocou nenhum argumento. 1625 01:16:11,310 --> 01:16:12,560 >> JASON HIRSCHHORN: Eu não fiz colocar todos os argumentos dentro 1626 01:16:12,560 --> 01:16:16,360 1627 01:16:16,360 --> 01:16:16,920 Parece ótimo. 1628 01:16:16,920 --> 01:16:18,130 Vocês acertaram em cheio. 1629 01:16:18,130 --> 01:16:22,420 Então, novamente, você entrou em argv e você verificado no início argc. 1630 01:16:22,420 --> 01:16:24,390 Esses são dois importantes coisas para lembrar. 1631 01:16:24,390 --> 01:16:29,250 Assim, em nossos dois últimos minutos antes de nós deixar, não vamos chegar a pset dois, mas 1632 01:16:29,250 --> 01:16:33,585 como eu disse, se você quiser ficar depois por 10 minutos, eu o faria ele feliz de ir 1633 01:16:33,585 --> 01:16:35,710 mais com vocês a lógica para esses conjuntos de problemas. 1634 01:16:35,710 --> 01:16:37,930 Nós tivemos um monte de cobrir hoje então eu não chegar até eles. 1635 01:16:37,930 --> 01:16:39,820 Geralmente, eu gostaria de incluir que, no final. 1636 01:16:39,820 --> 01:16:42,150 Então, se você quer ficar por aqui, ficar em torno de 10 minutos. 1637 01:16:42,150 --> 01:16:42,990 Nós vamos fazer isso. 1638 01:16:42,990 --> 01:16:46,250 >> Então, como eu mencionei no início, pset zero e um, teremos que 1639 01:16:46,250 --> 01:16:48,040 retorno de volta para você como logo que possível. 1640 01:16:48,040 --> 01:16:51,260 O objetivo é fazer com que pset um feedback, Comentários a parte, 1641 01:16:51,260 --> 01:16:52,850 antes pset dois é devido. 1642 01:16:52,850 --> 01:16:56,730 Então, se você cometeu alguns erros ou estilisticamente, as coisas poderiam ser melhores, 1643 01:16:56,730 --> 01:17:01,330 você vai ter essa informação para que você não vai fazer as mesmas coisas em pset dois. 1644 01:17:01,330 --> 01:17:06,140 E então, no futuro, você vai ter tudo de seu feedback e comentários pset 1645 01:17:06,140 --> 01:17:08,190 de volta antes que o próximo é devido. 1646 01:17:08,190 --> 01:17:12,695 >> Finalmente, se eu pudesse colocar em outro plugue para o gabarito. 1647 01:17:12,695 --> 01:17:13,935 Esta é a sua primeira seção. 1648 01:17:13,935 --> 01:17:15,920 Foi a minha primeira seção ensinar este ano. 1649 01:17:15,920 --> 01:17:16,930 Vá até lá. 1650 01:17:16,930 --> 01:17:19,800 Escrever coisas, boas e más, e eu vou usá-lo para fazer 1651 01:17:19,800 --> 01:17:21,320 seção melhor da próxima vez. 1652 01:17:21,320 --> 01:17:24,870 E por último, mais uma vez, se você precisa qualquer coisa, me avise. 1653 01:17:24,870 --> 01:17:26,410 Estou mais do que feliz em ajudar vocês. 1654 01:17:26,410 --> 01:17:28,420 Se você só quer doces, I terá doces extra. 1655 01:17:28,420 --> 01:17:29,800 Estou feliz em trazê-lo para você. 1656 01:17:29,800 --> 01:17:31,190 >> Este vai ser um curso incrível. 1657 01:17:31,190 --> 01:17:34,900 Este é um dos, se não o meu favorito Claro, eu tomei em toda a minha vida, 1658 01:17:34,900 --> 01:17:37,220 e eu espero que seja que maravilhoso para você. 1659 01:17:37,220 --> 01:17:40,090 Então, eu quero fazer tudo em meu poder para torná-lo incrível para você. 1660 01:17:40,090 --> 01:17:46,590 Vou enviar um e-mail se você estiver na minha seção ou Noah, e 1661 01:17:46,590 --> 01:17:50,310 vai tentar agendar com cada um dos vocês um tempo de check-in sobre o 1662 01:17:50,310 --> 01:17:53,820 próximo par de semanas para que eu possa obter um sensação de que seu fundo CS é, 1663 01:17:53,820 --> 01:17:58,170 e também vai me ajudar a adaptar estes seções para melhor atender às suas necessidades. 1664 01:17:58,170 --> 01:17:59,740 Então, isso é o que eu tenho alinhados. 1665 01:17:59,740 --> 01:18:02,260 Mais uma vez, eu vou vê-lo do lado de fora Se você quer estar lá. 1666 01:18:02,260 --> 01:18:03,700 Este foi de duas semanas secção. 1667 01:18:03,700 --> 01:18:04,950 Obrigado a vocês muito. 1668 01:18:04,950 --> 01:18:09,067