1 00:00:00,000 --> 00:00:11,736 2 00:00:11,736 --> 00:00:16,626 >> [REPRODUÇÃO DE VÍDEO] 3 00:00:16,626 --> 00:00:19,410 >> -A Triunfo de matemática e habilidade mecânica 4 00:00:19,410 --> 00:00:23,270 é esta nova grande automática calculadora na Universidade de Harvard. 5 00:00:23,270 --> 00:00:27,140 Intrincados problemas em matemática colocar através da máquina sob forma codificada, 6 00:00:27,140 --> 00:00:31,710 na fita com precisão são resolvidos em um diminuta fração do tempo necessário 7 00:00:31,710 --> 00:00:32,819 para o cálculo humano. 8 00:00:32,819 --> 00:00:44,280 9 00:00:44,280 --> 00:00:48,220 Projetado para agilizar todas as formas de pesquisa matemática e científica, 10 00:00:48,220 --> 00:00:53,840 o cérebro mecânico gigante vai trabalhar para Marinha dos Estados Unidos até o final da guerra. 11 00:00:53,840 --> 00:01:03,620 12 00:01:03,620 --> 00:01:06,570 >> [FIM DE REPRODUÇÃO] 13 00:01:06,570 --> 00:01:08,590 >> David J. MALAN: Este, é CS50. 14 00:01:08,590 --> 00:01:10,590 O passado era um mágico lugar, mas se você já 15 00:01:10,590 --> 00:01:13,366 perguntou o que esse dispositivo é em Harvard Science Center, 16 00:01:13,366 --> 00:01:16,150 é de facto parte do Harvard Mark I, e é 17 00:01:16,150 --> 00:01:18,710 em exposição lá agora nos últimos muitos anos. 18 00:01:18,710 --> 00:01:20,590 E o que você verá incorporado no conjunto de problemas 19 00:01:20,590 --> 00:01:24,416 um é um olhar por trás das cenas em que esse dispositivo fez, e faz, 20 00:01:24,416 --> 00:01:27,540 Professor de Harry Lewis, que está em o departamento de ciência da computação aqui. 21 00:01:27,540 --> 00:01:29,440 Assim, mais do que em um pouco. 22 00:01:29,440 --> 00:01:33,990 >> Mas hoje nós começamos a transição desde a semana passada para esta, 23 00:01:33,990 --> 00:01:37,290 e nós vamos trazer menção de uma fotografia aqui 24 00:01:37,290 --> 00:01:38,630 isso é realmente muito famoso. 25 00:01:38,630 --> 00:01:42,270 Alguém sabe o que esta aqui está na tela? 26 00:01:42,270 --> 00:01:43,880 Pelo menos de acordo com o mito. 27 00:01:43,880 --> 00:01:44,837 Sim. 28 00:01:44,837 --> 00:01:45,920 AUDIÊNCIA: O primeiro vírus. 29 00:01:45,920 --> 00:01:49,570 DAVID J. MALAN: Então foi supostamente o primeiro bug real em um computador. 30 00:01:49,570 --> 00:01:52,490 Agora, na realidade, a palavra erro, por um erro em um programa, 31 00:01:52,490 --> 00:01:55,250 tem estado conosco por algum tempo do mundo físico, 32 00:01:55,250 --> 00:01:58,190 e este foi um dos primeiros vezes documentados em que alguém realmente 33 00:01:58,190 --> 00:02:02,280 arrancou uma grande traça fora do Mark Computador II, colocá-lo na pasta, 34 00:02:02,280 --> 00:02:05,006 e depois gravamos como o primeiro bug conhecido 35 00:02:05,006 --> 00:02:06,630 ter sido realmente encontrado fisicamente. 36 00:02:06,630 --> 00:02:10,104 Assim, portanto, foi inserido que em lore de hoje. 37 00:02:10,104 --> 00:02:12,020 Tudo, desde a última semana está disponível online. 38 00:02:12,020 --> 00:02:14,840 Em recursos particulares que você pode não necessariamente observar, especialmente 39 00:02:14,840 --> 00:02:15,881 se vir aqui pessoalmente. 40 00:02:15,881 --> 00:02:20,230 Assim, um dos companheiros de ensino cada ano faz um conjunto canônico de notas, 41 00:02:20,230 --> 00:02:22,010 assim você não precisa manter sua cabeça para baixo, tentando 42 00:02:22,010 --> 00:02:24,410 transcrever mais nada que poderia acontecer aqui na sala de aula. 43 00:02:24,410 --> 00:02:25,940 Assim, perceber que aqueles assim-chamada [? Scribd?] Notas 44 00:02:25,940 --> 00:02:29,350 estão on-line, certamente os slides e código-fonte que usamos em sala de aula. 45 00:02:29,350 --> 00:02:31,436 Tornamos transcrições de texto integral disponível também. 46 00:02:31,436 --> 00:02:34,310 Então, se você me lembro vagamente alguns prazo, e quer procurá-lo um pouco 47 00:02:34,310 --> 00:02:37,280 mais facilmente, perceber que todos de que é pesquisável on-line. 48 00:02:37,280 --> 00:02:38,930 Bem como instruções passo a passo, bem. 49 00:02:38,930 --> 00:02:42,710 Na verdade, hoje nós começamos a olhar para uma linguagem de programação de baixo nível, 50 00:02:42,710 --> 00:02:45,290 logo a ser conhecido por nós como C, e é muito fácil 51 00:02:45,290 --> 00:02:48,820 a sorte de se perder depois de apenas alguns momentos do tempo, e, em seguida, tipo de maravilha 52 00:02:48,820 --> 00:02:52,370 como nós realmente comecei a um pouco mais exemplo complexa desde as mais simples. 53 00:02:52,370 --> 00:02:54,975 E assim nós vamos perceber cereja escolher durante a aula de alguma 54 00:02:54,975 --> 00:02:57,850 dos exemplos representativos, mas perceber que muito mais é também 55 00:02:57,850 --> 00:03:01,140 disponível on-line para que você possa trabalhar através dele no seu próprio ritmo, 56 00:03:01,140 --> 00:03:02,950 no entanto, você está mais confortável. 57 00:03:02,950 --> 00:03:05,200 >> Mas paramos com programas que eram apenas isso. 58 00:03:05,200 --> 00:03:09,690 Então eu clicar a bandeira verde, e o que este programa faz? 59 00:03:09,690 --> 00:03:10,710 Diz: Olá, mundo. 60 00:03:10,710 --> 00:03:13,180 Faz o gato dizer Olá em seu pequeno mundo 61 00:03:13,180 --> 00:03:15,990 na parte superior esquerda de interface do usuário do zero. 62 00:03:15,990 --> 00:03:18,810 Mas começamos a introduzir algumas terminologias na semana passada. 63 00:03:18,810 --> 00:03:23,614 E assim, coisas como esta que chamou o quê? 64 00:03:23,614 --> 00:03:25,280 O que poderia ser o termo genérico para isso? 65 00:03:25,280 --> 00:03:26,266 Sim. 66 00:03:26,266 --> 00:03:28,210 Um método ou uma declaração. 67 00:03:28,210 --> 00:03:29,280 Claro, é uma ação. 68 00:03:29,280 --> 00:03:30,140 Faz isto. 69 00:03:30,140 --> 00:03:32,400 E ainda havia outras formas para zero, 70 00:03:32,400 --> 00:03:35,360 além destes chamados declaração, eles também foram 71 00:03:35,360 --> 00:03:38,221 coisas como esta, que nós chamamos o quê? 72 00:03:38,221 --> 00:03:38,720 Sim. 73 00:03:38,720 --> 00:03:39,634 Assim, um loop. 74 00:03:39,634 --> 00:03:42,050 E, neste caso, essa coisa repetições, obviamente, 10 vezes. 75 00:03:42,050 --> 00:03:43,040 Há um bloco para sempre. 76 00:03:43,040 --> 00:03:44,164 Há um par de outros. 77 00:03:44,164 --> 00:03:48,309 E hoje vamos ver como traduzir isso para um mundo mais moderno, 78 00:03:48,309 --> 00:03:50,850 se quiserem, mesmo que seja vai parecer à primeira vista 79 00:03:50,850 --> 00:03:52,024 a ser muito mais misterioso. 80 00:03:52,024 --> 00:03:53,190 Mas aqueles eram de fato laços. 81 00:03:53,190 --> 00:03:56,182 E então nós temos coisas como este, que tinha essa forma, 82 00:03:56,182 --> 00:03:57,515 e essencialmente perguntas. 83 00:03:57,515 --> 00:03:58,890 E nos referimos a elas como o quê? 84 00:03:58,890 --> 00:03:59,762 >> AUDIÊNCIA: expressão booleana. 85 00:03:59,762 --> 00:04:00,320 >> DAVID J. MALAN: Yeah. 86 00:04:00,320 --> 00:04:01,340 Expressão booleana. 87 00:04:01,340 --> 00:04:04,502 Algo que é verdadeiro ou falso, sim ou não, um ou zero, 88 00:04:04,502 --> 00:04:05,960 no entanto, você quer ver o mundo. 89 00:04:05,960 --> 00:04:08,335 Mas nós chamamos aqueles booleana expressões, e ligá-los 90 00:04:08,335 --> 00:04:09,900 em condições, ou ramos. 91 00:04:09,900 --> 00:04:12,170 E no mundo de Zero, tudo bem 92 00:04:12,170 --> 00:04:15,460 travas em termos de sua forma, se faz sentido lógico fazê-lo, 93 00:04:15,460 --> 00:04:18,490 mas você não tem que parar em apenas fazendo uma coisa condicionalmente, 94 00:04:18,490 --> 00:04:20,450 você pode ter uma proverbial bifurcação na estrada 95 00:04:20,450 --> 00:04:24,040 e fazer isto ou aquilo se a condição é verdadeira ou não. 96 00:04:24,040 --> 00:04:26,040 E então, como você vai ver, se você não tiver, 97 00:04:26,040 --> 00:04:27,480 Você pode até mesmo ninho esses blocos. 98 00:04:27,480 --> 00:04:32,110 Assim arranhões cresce para preencher as formas que você pode querer inserir-lo, 99 00:04:32,110 --> 00:04:35,330 assim você pode realmente expressar mais qualquer lógica que você pode querer fazer. 100 00:04:35,330 --> 00:04:38,220 >> Agora algumas palavras de anúncio para tanto aqui como New Haven. 101 00:04:38,220 --> 00:04:39,370 Então corte começa hoje. 102 00:04:39,370 --> 00:04:42,120 O URL para isso é no curso de website, para aqueles não familiarizados. 103 00:04:42,120 --> 00:04:43,970 Seções será um oportunidade de se reunir 104 00:04:43,970 --> 00:04:46,553 em um ambiente muito mais intimista do que [? Sanders?] Permite, 105 00:04:46,553 --> 00:04:50,347 com 10 a 20 com um colegas ensinando companheiro em diferentes faixas, 106 00:04:50,347 --> 00:04:51,930 e ritmos diferentes, se assim o desejarem. 107 00:04:51,930 --> 00:04:54,080 Na verdade as ofertas de cursos seções diferentes 108 00:04:54,080 --> 00:04:57,340 para aqueles menos confortável, mais confortável, e em algum lugar no meio, 109 00:04:57,340 --> 00:04:59,860 eo papel de ouro aqui, é não há uma definição formal, 110 00:04:59,860 --> 00:05:04,600 mas se você é menos confortável, você meio que conhecemos. 111 00:05:04,600 --> 00:05:07,470 Você está um pouco sobre o intrépido idéia de entrar a pé, talvez, de volta 112 00:05:07,470 --> 00:05:10,130 na sala de aula, ou mostrar até uma seção no meio. 113 00:05:10,130 --> 00:05:12,770 Se você já esteve programação desde que você foram seis anos de idade, mais confortável, 114 00:05:12,770 --> 00:05:13,400 talvez para você. 115 00:05:13,400 --> 00:05:16,150 E se é um tipo de lance-up, isso é exatamente o que o in-between 116 00:05:16,150 --> 00:05:17,190 está destinado a ser. 117 00:05:17,190 --> 00:05:18,410 >> Agora, entretanto, para uma classe deste tamanho, 118 00:05:18,410 --> 00:05:21,326 ela nos leva algum tempo para seção todos, por isso temos chamado, 119 00:05:21,326 --> 00:05:24,030 seções de super, chegando este fim de semana e início da próxima semana, 120 00:05:24,030 --> 00:05:26,570 então dê uma olhada no site do curso para aqueles que estão naturalmente ampla, 121 00:05:26,570 --> 00:05:28,610 e também filmou para aqueles que não pode fazê-los. 122 00:05:28,610 --> 00:05:33,470 E seções si vai começar na semana três dos CS50 índice zero. 123 00:05:33,470 --> 00:05:35,880 Problema já está definido 0 no site do curso. 124 00:05:35,880 --> 00:05:40,010 E perceber que você tem nove dias de atraso neste semestre. 125 00:05:40,010 --> 00:05:43,240 Portanto, esta é uma atualização do passado ano, quando tivemos cinco dias de atraso. 126 00:05:43,240 --> 00:05:46,210 >> Então, se você está se perguntando, temos nove conjuntos de problemas. 127 00:05:46,210 --> 00:05:53,200 Você tem nove dias de atraso, cada um dos quais você só pode gastar um por semana no. 128 00:05:53,200 --> 00:05:56,089 Isso faz de forma eficaz todos o problema define devido sexta-feira, 129 00:05:56,089 --> 00:05:58,630 mas o objetivo é colocar um pouco pouco de pressão psicológica 130 00:05:58,630 --> 00:06:01,100 em você para tentar obter coisas em na quinta-feira 131 00:06:01,100 --> 00:06:03,960 porque como você vai descobrir logo, para melhor ou para pior, a maioria 132 00:06:03,960 --> 00:06:07,820 tudo no mundo do software acaba levando mais tempo do que se antecipa. 133 00:06:07,820 --> 00:06:10,620 Por isso, considero-o uma espécie de oportunidade de ajudar 134 00:06:10,620 --> 00:06:13,880 mesmo para direcionar quinta-feira, mas ter conforto em que, sim, 135 00:06:13,880 --> 00:06:14,950 tudo é devido sexta-feira. 136 00:06:14,950 --> 00:06:17,590 E se você submetê-los em Quinta-feira, que é maravilhoso. 137 00:06:17,590 --> 00:06:21,020 Não há pontos de bônus ou extras crédito para cumprir este prazo. 138 00:06:21,020 --> 00:06:23,250 Era para ser apenas uma muleta. 139 00:06:23,250 --> 00:06:25,810 >> E o horário de expediente, tanto aqui e em New Haven, 140 00:06:25,810 --> 00:06:28,840 em pessoa, se você gostaria de reunir-se com qualquer um dos nossos cursos 141 00:06:28,840 --> 00:06:31,060 ensinando bolsistas e CAs de assistência. 142 00:06:31,060 --> 00:06:31,640 >> Tudo certo. 143 00:06:31,640 --> 00:06:33,110 Então, agora, vamos fazer isso mais real. 144 00:06:33,110 --> 00:06:35,470 E por um momento que vai começar para obter um pouco mais misterioso, mas muito 145 00:06:35,470 --> 00:06:37,310 rapidamente na sexta-feira e próxima semana estaremos 146 00:06:37,310 --> 00:06:41,230 capaz de fazer muito mais do que poderíamos até agora no Scratch. 147 00:06:41,230 --> 00:06:44,350 Então, nós introduzimos último código semana, embora pictórica. 148 00:06:44,350 --> 00:06:45,620 Foi peças do puzzle. 149 00:06:45,620 --> 00:06:48,800 E nós formalizado que é algo chamado código-fonte, 150 00:06:48,800 --> 00:06:50,330 mas que se parecia? 151 00:06:50,330 --> 00:06:52,550 Bem, ele parecia um pouco algo assim. 152 00:06:52,550 --> 00:06:55,410 E, de fato, apenas para o tipo de provocá onde podemos ir com este. 153 00:06:55,410 --> 00:06:57,800 Eu estou indo para ir em frente e abrir uma janela aqui, 154 00:06:57,800 --> 00:06:59,810 e eu só vou escolher Novo arquivo. 155 00:06:59,810 --> 00:07:03,200 E eu estou indo para salvar este arquivo como algo como Olá ponto c. 156 00:07:03,200 --> 00:07:05,700 Mais sobre isso escolha de palavras apenas um momento. 157 00:07:05,700 --> 00:07:08,630 E é assim que alguém poderia vai escrever sobre um programa. 158 00:07:08,630 --> 00:07:13,990 Incluir padrão I / O ponto h, int main vazio, em seguida, abra chaveta, perto 159 00:07:13,990 --> 00:07:19,430 chaveta, printf Olá mundo vírgula, barra invertida n, ponto e vírgula, Salvar feito. 160 00:07:19,430 --> 00:07:19,930 ESTÁ BEM. 161 00:07:19,930 --> 00:07:21,670 Eu escrevi meu primeiro programa, mas vai 162 00:07:21,670 --> 00:07:23,878 para ser incrivelmente desapontados porque quando eu, na verdade, 163 00:07:23,878 --> 00:07:27,352 executar este programa, é claro, pela primeira escritura fazer Olá, 164 00:07:27,352 --> 00:07:30,310 e, em seguida, dot cortar Olá, e nós vamos passar por isso com muito mais detalhes 165 00:07:30,310 --> 00:07:31,730 em um momento, isso é tudo que ele faz. 166 00:07:31,730 --> 00:07:33,270 Não abrirem as janelas. 167 00:07:33,270 --> 00:07:35,070 Ele não faz nada particularmente extravagante. 168 00:07:35,070 --> 00:07:38,830 Tudo que faz é o que eu disse para ele fazer, mas como é que vamos chegar a isso? 169 00:07:38,830 --> 00:07:40,560 E como é que vamos construir em cima disso? 170 00:07:40,560 --> 00:07:43,430 Bem, vamos introduzir algumas diferentes conceitos aqui. 171 00:07:43,430 --> 00:07:47,170 >> Então um, que estamos prestes a começar usando um programa chamado compilador. 172 00:07:47,170 --> 00:07:51,470 Existe um compilador para Mac OS, Windows, Linux, qualquer número de sistemas operacionais, 173 00:07:51,470 --> 00:07:54,540 e em breve iremos apresentá-lo ao ambiente que iremos utilizar, 174 00:07:54,540 --> 00:07:57,410 mas um compilador é apenas um general prazo para uma peça de software 175 00:07:57,410 --> 00:08:01,940 que leva o código fonte e produz o código objeto da mesma. 176 00:08:01,940 --> 00:08:03,940 Em outras palavras, se tem como entrada a sua fonte 177 00:08:03,940 --> 00:08:08,250 código, algo como o que eu digitei, em última análise, produz o código objeto. 178 00:08:08,250 --> 00:08:11,780 E código-objeto é realmente apenas uma maneira elegante de dizer ele produz 179 00:08:11,780 --> 00:08:12,926 de zero e um de. 180 00:08:12,926 --> 00:08:14,800 Em outras palavras, a fonte código, mesmo que seja 181 00:08:14,800 --> 00:08:17,240 vai olhar um pouco misterioso, e um pouco menos amigável 182 00:08:17,240 --> 00:08:19,590 do que zero, à primeira vista, é, pelo menos, algo 183 00:08:19,590 --> 00:08:21,120 que nós, seres humanos podem entender. 184 00:08:21,120 --> 00:08:24,360 É o tipo de parece e soa como Inglês mesmo que seja muito sucinta. 185 00:08:24,360 --> 00:08:28,040 Considerando que a programação do zero e em one, como nossos antecessores tinha que fazer, 186 00:08:28,040 --> 00:08:30,920 alguns anos atrás, não era um particularmente divertido desafio. 187 00:08:30,920 --> 00:08:33,710 E, no entanto, este é o que o computador ainda entende. 188 00:08:33,710 --> 00:08:37,010 Então compilador fica-nos a partir de código-fonte do código-objeto. 189 00:08:37,010 --> 00:08:39,860 É como abrir um arquivo com o compilador, e quando você salvá-lo, 190 00:08:39,860 --> 00:08:41,419 você obter esses zeros e uns. 191 00:08:41,419 --> 00:08:43,419 Então, vamos ver como fazer que em apenas um momento. 192 00:08:43,419 --> 00:08:47,400 >> Mas vamos agora tentar fornecer um ponte entre a semana passada e esta, 193 00:08:47,400 --> 00:08:50,660 de modo que mesmo como nós ficam penduradas em coisas como chaves, 194 00:08:50,660 --> 00:08:54,100 e-vírgulas e parênteses, e todos estes intelectualmente interessante 195 00:08:54,100 --> 00:08:57,620 aspectos da programação, que muito compreensivelmente tropeçar pessoas se logo no início, 196 00:08:57,620 --> 00:09:00,930 perceber que todas as ideias Hoje em dia, são o mesmo que na última. 197 00:09:00,930 --> 00:09:03,975 Então passado, vimos este exemplo aqui, o programa Olá Mundo. 198 00:09:03,975 --> 00:09:07,500 Bem, a partir de hoje, se quisermos para implementar esse mesmo programa, 199 00:09:07,500 --> 00:09:10,800 ele vai olhar um pouco algo como isto. 200 00:09:10,800 --> 00:09:14,040 E nós vamos explicar em pouco tempo o que int, e principal, e vazio, e tudo isso 201 00:09:14,040 --> 00:09:18,770 é, mas pelo menos eu vejo aqui já o familiar Olá Mundo. 202 00:09:18,770 --> 00:09:20,860 >> Enquanto isso, coisas como função, digamos Olá, 203 00:09:20,860 --> 00:09:23,570 é muito simplesmente vai ser um declaração muito simples como este. 204 00:09:23,570 --> 00:09:26,930 Printf Olá mundo, com alguns cita, com uma barra invertida, 205 00:09:26,930 --> 00:09:29,780 com um ponto e vírgula, mas mais de que para vir. 206 00:09:29,780 --> 00:09:34,066 Loops, por sua vez, este é um circuito que, é claro, diz Olá mundo para sempre, 207 00:09:34,066 --> 00:09:36,690 e este está indo olhar um pouco mais estranho do que no passado, 208 00:09:36,690 --> 00:09:39,530 mas se eu disser algo como, ao mesmo tempo verdadeiro, I 209 00:09:39,530 --> 00:09:44,050 pode então imprimir Olá, mundo novo e de novo e de novo e de novo. 210 00:09:44,050 --> 00:09:46,660 E então, como você pode tipo de começar a inferir aqui, 211 00:09:46,660 --> 00:09:49,070 esta convenção de usar chaves é amável 212 00:09:49,070 --> 00:09:52,050 de como abraçar o linha recuada de código lá. 213 00:09:52,050 --> 00:09:55,840 A linha printf de código muito parecido a peça do puzzle amarelo em cima. 214 00:09:55,840 --> 00:09:58,740 Então, não vamos dizer para sempre, vamos dizer enquanto verdadeiro, 215 00:09:58,740 --> 00:10:01,020 mas vamos ver por que isso acontece em apenas um pouco. 216 00:10:01,020 --> 00:10:04,210 >> Enquanto isso, se temos um loop como este, onde você repetir algo finito 217 00:10:04,210 --> 00:10:07,730 número de vezes, este também é vai demorar um pouco para se acostumar 218 00:10:07,730 --> 00:10:12,820 para, mas vai dizer para int i recebe zero, i inferior a 10, i ++, 219 00:10:12,820 --> 00:10:14,056 e, em seguida, novamente printf. 220 00:10:14,056 --> 00:10:15,430 Mas não vai ser padrões. 221 00:10:15,430 --> 00:10:18,434 E para aqueles que estão familiarizados com AP Ciência da Computação, ou Java, 222 00:10:18,434 --> 00:10:21,100 ou qualquer número de outras línguas, quase todas estas construções 223 00:10:21,100 --> 00:10:23,820 até agora deve olhar principalmente familiar. 224 00:10:23,820 --> 00:10:24,680 >> Então variável. 225 00:10:24,680 --> 00:10:29,270 Então aqui está um simples trecho risco que define uma variável chamada contador a zero, 226 00:10:29,270 --> 00:10:33,150 e, em seguida, para sempre, diz o contador, e em seguida, ela muda o contador a uma. 227 00:10:33,150 --> 00:10:37,030 Assim que começa com zero, e, em seguida, um, dois, três. 228 00:10:37,030 --> 00:10:42,560 Bem, como podemos introduzir que, em essa nova linguagem um pouco semelhante? 229 00:10:42,560 --> 00:10:45,460 Int contador é igual a zero, enquanto verdadeiro, que 230 00:10:45,460 --> 00:10:48,100 é que mesmo idéia de antes de fazer algo para sempre, 231 00:10:48,100 --> 00:10:49,530 e eu estou indo só para printf. 232 00:10:49,530 --> 00:10:53,310 E agora ele está ficando um pouco estranho, i por cento, mas mais sobre isso para vir, 233 00:10:53,310 --> 00:10:55,140 mas essas idéias são exatamente os mesmos. 234 00:10:55,140 --> 00:10:58,820 Nós apenas agora têm que aderir a a sintaxe que o computador está 235 00:10:58,820 --> 00:11:00,010 vai exigir de nós. 236 00:11:00,010 --> 00:11:04,620 >> Expressão booleana, algo como sx menor que y, ou x menos do que Y, 237 00:11:04,620 --> 00:11:06,354 e y inferior a z. 238 00:11:06,354 --> 00:11:09,270 Vai parecer um pouco algo assim, com parênteses apenas 239 00:11:09,270 --> 00:11:13,020 como em matemática para uma boa medida para apenas assegurar que a ordem das operações 240 00:11:13,020 --> 00:11:14,750 é como pretendemos. 241 00:11:14,750 --> 00:11:15,600 E agora, condições. 242 00:11:15,600 --> 00:11:21,220 Então, se x menos de y, digamos x é menor de Y, o resto, se x for maior do que Y, 243 00:11:21,220 --> 00:11:26,020 dizer que x é maior do que Y, caso contrário logicamente, x tem de ser igual a y. 244 00:11:26,020 --> 00:11:28,710 Então você pode implementar algo assim em risco, 245 00:11:28,710 --> 00:11:31,230 ou você pode implementar que nesta sintaxe. 246 00:11:31,230 --> 00:11:35,090 E, novamente, as chaves são uma espécie de dando-nos a mesma forma como o quebra-cabeça 247 00:11:35,090 --> 00:11:40,750 peças, mas a sintaxe, agora, é talvez começando a seguir alguns padrões. 248 00:11:40,750 --> 00:11:42,910 >> Então, o que isso nos dê aqui? 249 00:11:42,910 --> 00:11:45,260 Então, nós estamos de volta, em seguida, no nosso programa principal. 250 00:11:45,260 --> 00:11:47,930 Vamos realmente, agora, fazer algo com ele. 251 00:11:47,930 --> 00:11:50,660 Assim, neste primeiro linha vemos incluem afiada, 252 00:11:50,660 --> 00:11:53,160 E / S padrão, dot h, e em seguida, algum ângulo esquisito 253 00:11:53,160 --> 00:11:57,330 suportes abaixo disso. int main vazio, e depois printf Olá mundo. 254 00:11:57,330 --> 00:11:58,200 Então, basta dar um passo. 255 00:11:58,200 --> 00:12:02,440 Alguém que nunca programou antes, explicar, pelo menos, uma dessas linhas. 256 00:12:02,440 --> 00:12:04,490 Usando talvez alguns de o jargão da semana passada. 257 00:12:04,490 --> 00:12:06,942 O que é printf, por exemplo? 258 00:12:06,942 --> 00:12:07,442 Sim. 259 00:12:07,442 --> 00:12:08,410 >> AUDIÊNCIA: [inaudível] 260 00:12:08,410 --> 00:12:08,610 >> DAVID J. MALAN: Yeah. 261 00:12:08,610 --> 00:12:11,380 É uma função, ou uma declaração, da terminologia da semana passada. 262 00:12:11,380 --> 00:12:13,470 E é uma ação que está fazendo alguma coisa. 263 00:12:13,470 --> 00:12:15,855 Agora esta função, ou esta declaração, faz 264 00:12:15,855 --> 00:12:17,550 que parecem ter algum tipo de entrada? 265 00:12:17,550 --> 00:12:20,080 266 00:12:20,080 --> 00:12:24,380 E em que sentido faz isso parecem ter entrada, em caso afirmativo? 267 00:12:24,380 --> 00:12:26,180 Entrada, o que quero dizer com isso? 268 00:12:26,180 --> 00:12:26,720 Sim. 269 00:12:26,720 --> 00:12:27,595 >> AUDIÊNCIA: [inaudível] 270 00:12:27,595 --> 00:12:30,565 271 00:12:30,565 --> 00:12:31,440 DAVID J. MALAN: Yeah. 272 00:12:31,440 --> 00:12:34,890 Então Raspe fora algumas peças do puzzle onde você pode parametrizar isso. 273 00:12:34,890 --> 00:12:37,980 Você poderia dizer que a repetição bloquear quantas vezes para repetir, 274 00:12:37,980 --> 00:12:40,320 de modo que era uma entrada de tipos, e apenas como zero 275 00:12:40,320 --> 00:12:43,060 teve um pouco de espaço reservado branco para o número que você digitar, 276 00:12:43,060 --> 00:12:45,810 nós também usar neste parênteses mundo texto 277 00:12:45,810 --> 00:12:49,910 para nos dar essa forma circular em que podemos ligar o nosso contributo. 278 00:12:49,910 --> 00:12:53,180 Afinal, dezenas de anos atrás quando esta linguagem, chamado C, 279 00:12:53,180 --> 00:12:55,950 foi inventado ninguém antecipou que é um de nós, 280 00:12:55,950 --> 00:12:59,420 estes, alguns anos depois, estaríamos deseja uma função que diz Olá. 281 00:12:59,420 --> 00:12:59,920 Certo? 282 00:12:59,920 --> 00:13:02,880 Seria bom se houvesse uma parte do enigma, ou algumas palavras-chave, 283 00:13:02,880 --> 00:13:05,502 que é chamado Olá, que literalmente apenas diz Olá. 284 00:13:05,502 --> 00:13:06,460 Mas nós não precisamos disso. 285 00:13:06,460 --> 00:13:09,320 Nós podemos ter algo muito mais baixo nível, como uma impressão genérico 286 00:13:09,320 --> 00:13:12,760 comando, que leva entrada, e imprime o que quer que nós queremos. 287 00:13:12,760 --> 00:13:14,960 Então, observe agora o padrão que vai começar a emergir. 288 00:13:14,960 --> 00:13:19,310 Parêntese aberto, perto parêntese é aparentemente abraçando a entrada, 289 00:13:19,310 --> 00:13:21,770 e então eu vejo duplo cita em ambas as extremidades. 290 00:13:21,770 --> 00:13:25,110 Há ainda barra invertida estranho n, mas espero que agora você 291 00:13:25,110 --> 00:13:29,900 pode começar a visualizar, pelo menos, que printf está tomando em alguma forma de entrada. 292 00:13:29,900 --> 00:13:31,850 Não tão amigável quanto Arranhar, mas é apenas 293 00:13:31,850 --> 00:13:34,920 como ter ligado algum valor lá. 294 00:13:34,920 --> 00:13:38,306 >> Tudo bem, agora vamos realmente fazer algo com isso. 295 00:13:38,306 --> 00:13:40,930 Então, alguns de vocês podem saber a partir de ter comprado a classe antes, 296 00:13:40,930 --> 00:13:42,638 conversou com os amigos, que, para muitos anos 297 00:13:42,638 --> 00:13:44,590 nós usamos algo chamado o aparelho CS50. 298 00:13:44,590 --> 00:13:49,160 Este foi um termo que descreve uma tecnologia chamado de máquina virtual, o qual 299 00:13:49,160 --> 00:13:51,870 é um pedaço de software que a sua antecessores iria baixar off 300 00:13:51,870 --> 00:13:53,360 o site do curso gratuitamente. 301 00:13:53,360 --> 00:13:56,550 Eles também poderiam baixar um pedaço livre de software chamada de hypervisor, 302 00:13:56,550 --> 00:14:00,590 algo chamado como VMware, ou VirtualBox, ou qualquer número 303 00:14:00,590 --> 00:14:04,450 de outras ferramentas, e em seu Mac ou PC ou qualquer computador que tivemos no ano passado 304 00:14:04,450 --> 00:14:06,620 e no ano passado, eles dobraria clique em um ícone 305 00:14:06,620 --> 00:14:08,860 para executar este software chamado de hypervisor. 306 00:14:08,860 --> 00:14:12,220 E, em seguida, no interior do referido programa que abriria o aparelho CS50. 307 00:14:12,220 --> 00:14:14,710 E o efeito que era se um predecessor de vocês 308 00:14:14,710 --> 00:14:17,780 foi rodando Mac OS ou O Windows, ele ou ela, em seguida, 309 00:14:17,780 --> 00:14:22,910 posteriormente, teve uma nova janela em seu tela em execução ambiente de CS50. 310 00:14:22,910 --> 00:14:27,370 Assim, uma máquina virtual permite que você execute um sistema operacional dentro de outro, 311 00:14:27,370 --> 00:14:28,785 e isso é exatamente o que fizemos. 312 00:14:28,785 --> 00:14:31,410 Durante a maior parte do que claro usar um sistema operacional chamado 313 00:14:31,410 --> 00:14:34,070 Linux, especificamente Ubuntu Linux, e isso 314 00:14:34,070 --> 00:14:37,590 é uma maneira muito agradável no ano passado de certificando-se de que todos no curso 315 00:14:37,590 --> 00:14:38,840 só tinha o mesmo ambiente. 316 00:14:38,840 --> 00:14:41,339 E você pode usar qualquer tipo de computador que você realmente quer. 317 00:14:41,339 --> 00:14:43,930 Entre as desvantagens, porém, foram foi como dois gigabytes 318 00:14:43,930 --> 00:14:45,480 Para baixar essa coisa. 319 00:14:45,480 --> 00:14:50,310 Não necessariamente trabalhar bem em super- pessoas cujos computadores que talvez única 320 00:14:50,310 --> 00:14:54,570 tinha um show ou mais de RAM, ou não muitas gigahertz de velocidade da CPU, 321 00:14:54,570 --> 00:14:56,750 e por isso este ano, para esta e outras razões, 322 00:14:56,750 --> 00:14:59,140 temos sido transição a este ambiente. 323 00:14:59,140 --> 00:15:03,730 O chamado CS50 IDE, que é baseado em software open source, 324 00:15:03,730 --> 00:15:07,380 e uma plataforma suportada que uma empresa chamada Cloud9 325 00:15:07,380 --> 00:15:11,110 apoia na Europa, que permite-nos ter, essencialmente, 326 00:15:11,110 --> 00:15:15,770 que mesmo ambiente como na exacta ano passado, mas no assim chamado nuvem. 327 00:15:15,770 --> 00:15:17,532 >> Então, qual é a nuvem? 328 00:15:17,532 --> 00:15:20,480 Você provavelmente clicou seu ícone no seu Mac ou PC. 329 00:15:20,480 --> 00:15:22,210 O que é a nuvem? 330 00:15:22,210 --> 00:15:22,709 Sim? 331 00:15:22,709 --> 00:15:25,880 332 00:15:25,880 --> 00:15:26,780 Um pouco mais alto. 333 00:15:26,780 --> 00:15:30,510 334 00:15:30,510 --> 00:15:31,010 Sim. 335 00:15:31,010 --> 00:15:33,770 É apenas um monte de computadores em outro lugar que armazenam dados e execução 336 00:15:33,770 --> 00:15:34,880 software e semelhantes. 337 00:15:34,880 --> 00:15:39,390 Então, é realmente apenas para a palavra de jure de descrever [? alugados?] 338 00:15:39,390 --> 00:15:40,930 computadores que vivem em casa. 339 00:15:40,930 --> 00:15:42,810 Que você, você mesmo, não necessariamente possui. 340 00:15:42,810 --> 00:15:45,256 Então, quando seus dados, ou o seu programas, estão na nuvem, 341 00:15:45,256 --> 00:15:47,630 isso apenas significa que é em alguém computadores de outras pessoas em outros lugares, 342 00:15:47,630 --> 00:15:50,510 e não, muito provavelmente, no seu laptop ou desktop físico. 343 00:15:50,510 --> 00:15:52,990 E é isso que CS50 IDE é agora. 344 00:15:52,990 --> 00:15:55,670 >> A partir de agora você vai para um certo URL que irá apresentá-lo 345 00:15:55,670 --> 00:16:00,090 para, em conjunto de problemas 1, no final deste semana, que irá, em seguida, após o login, 346 00:16:00,090 --> 00:16:01,480 dar-lhe esse ambiente. 347 00:16:01,480 --> 00:16:03,896 E muito scratch como tinha uma Alguns painéis de diferentes envolvidas, 348 00:16:03,896 --> 00:16:06,030 o mesmo acontece com IDE do CS50 temos exatamente aquele. 349 00:16:06,030 --> 00:16:09,480 Na parte superior esquerda aqui, você está vai ver um navegador de arquivos familiar. 350 00:16:09,480 --> 00:16:11,930 Então, qualquer um dos arquivos que você colocado neste ambiente 351 00:16:11,930 --> 00:16:13,346 está indo só para ser listado lá. 352 00:16:13,346 --> 00:16:14,350 Arquivos e pastas. 353 00:16:14,350 --> 00:16:16,790 No canto superior direito aqui, você vai ver um lugar 354 00:16:16,790 --> 00:16:18,420 onde você pode realmente escrever seu código. 355 00:16:18,420 --> 00:16:21,860 Inicialmente em C, no final do prazo em PHP e JavaScript, 356 00:16:21,860 --> 00:16:24,739 e, talvez, para a final projetos, Ruby ou Python ou Java 357 00:16:24,739 --> 00:16:27,280 ou qualquer número de línguas são suportado nesse ambiente. 358 00:16:27,280 --> 00:16:30,130 Não é de todo amarrado especificamente para CS50. 359 00:16:30,130 --> 00:16:33,390 >> E, em seguida, no canto inferior aqui, especialmente para aqueles mais confortável, 360 00:16:33,390 --> 00:16:35,590 você tem algo chamado uma janela de terminal. 361 00:16:35,590 --> 00:16:38,770 E esta janela de terminal permite que você execute qualquer comando que você 362 00:16:38,770 --> 00:16:40,860 queremos neste ambiente de nuvem. 363 00:16:40,860 --> 00:16:42,860 Ele permite que você instale qualquer software adicional 364 00:16:42,860 --> 00:16:46,810 que você quer porque você chamado raiz ou de administrador privilégios. 365 00:16:46,810 --> 00:16:49,930 Portanto, em outras palavras, embora esta em última análise é hospedado na nuvem, 366 00:16:49,930 --> 00:16:52,400 e mesmo que nós temos simplificado que, até certo ponto 367 00:16:52,400 --> 00:16:57,110 por padrão, literalmente, introduzindo, graças a Dan Armendariz, e Dino, 368 00:16:57,110 --> 00:17:01,070 e Dan Bradley na equipe do CS50 sobre o passado muitos meses, um menos confortável 369 00:17:01,070 --> 00:17:05,140 Modo que esconde um monte de distrações inicialmente confusos. 370 00:17:05,140 --> 00:17:10,119 Tudo existe para representam um sistema de computador típico 371 00:17:10,119 --> 00:17:12,319 que você pode usar no mundo real. 372 00:17:12,319 --> 00:17:15,640 >> Então, o que tudo isso significa, e o que podemos realmente fazer com ele? 373 00:17:15,640 --> 00:17:19,124 Vamos realmente dar uma olhada em um programa. 374 00:17:19,124 --> 00:17:21,290 Então, eu estou indo para abrir o ambiente real aqui, 375 00:17:21,290 --> 00:17:23,894 que é apenas a nossa Chrome navegador, o que poderia ser o Firefox, 376 00:17:23,894 --> 00:17:26,640 poderia ser o Internet Explorer, ou algum outro navegador também. 377 00:17:26,640 --> 00:17:28,400 É cheio rastreados aqui para o momento. 378 00:17:28,400 --> 00:17:31,580 E eu quero realmente provocá além o que este programa era. 379 00:17:31,580 --> 00:17:36,170 Então, vamos dar uma olhada, por zoom em até topo, pelo o que eu fiz, e como eu cheguei aqui. 380 00:17:36,170 --> 00:17:38,315 Então aqui está aqueles exata mesmas linhas de código. 381 00:17:38,315 --> 00:17:40,440 Portanto, esta é a declaração, como você mencionou anteriormente. 382 00:17:40,440 --> 00:17:42,580 A função que diz Olá. 383 00:17:42,580 --> 00:17:45,870 As chaves, sobre linha de quatro e seis linha, 384 00:17:45,870 --> 00:17:49,290 presumivelmente tipo de envelope essa linha para associá-lo 385 00:17:49,290 --> 00:17:50,890 com a essência do meu programa. 386 00:17:50,890 --> 00:17:54,890 Então, na verdade, esta palavra-chave principal, que está lá em cima na linha três, 387 00:17:54,890 --> 00:17:59,450 você pode pensar que como o equivalente de que, quando clicado bandeira verde, 388 00:17:59,450 --> 00:18:01,080 bloquear no Scratch. 389 00:18:01,080 --> 00:18:05,280 Então, isso é tudo o que temos aqui, é quando bandeira verde clicado, impressão, ou dizer, 390 00:18:05,280 --> 00:18:06,700 Ola mundo. 391 00:18:06,700 --> 00:18:11,210 >> Mas vamos dar um palpite, agora, o que esta primeira linha, mais misterioso, é. 392 00:18:11,210 --> 00:18:15,100 Afiado incluem, aberto angular suporte, E / S padrão dot h, 393 00:18:15,100 --> 00:18:17,320 fechar suporte angular. 394 00:18:17,320 --> 00:18:19,850 O que é que talvez fazendo, especialmente se você já programou 395 00:18:19,850 --> 00:18:21,390 antes de qualquer outra língua. 396 00:18:21,390 --> 00:18:21,890 Sim? 397 00:18:21,890 --> 00:18:22,765 >> AUDIÊNCIA: [inaudível] 398 00:18:22,765 --> 00:18:25,095 399 00:18:25,095 --> 00:18:25,970 DAVID J. MALAN: Yeah. 400 00:18:25,970 --> 00:18:26,470 Exatamente. 401 00:18:26,470 --> 00:18:29,455 Então, isso é dando-lhe acesso a um biblioteca, por assim dizer, de funções. 402 00:18:29,455 --> 00:18:31,830 E uma biblioteca de funções é funções que outra pessoa 403 00:18:31,830 --> 00:18:34,406 escreveu, quer recentemente ou há muito tempo, de modo que você 404 00:18:34,406 --> 00:18:35,780 não tem que reinventar a roda. 405 00:18:35,780 --> 00:18:39,020 Por exemplo, nós não tem que saber, em 2015, 406 00:18:39,020 --> 00:18:42,280 como escrever código que puts um personagem na tela. 407 00:18:42,280 --> 00:18:44,820 Outra pessoa que tem figurado com a função printf 408 00:18:44,820 --> 00:18:47,280 para que eu possa classificar de resumo longe do que, ou camada 409 00:18:47,280 --> 00:18:49,350 no topo de sua código, e agora apenas tomar 410 00:18:49,350 --> 00:18:52,760 por certo que qualquer programa que eu escrever pode imprimir algo na tela. 411 00:18:52,760 --> 00:18:58,150 Portanto, esta primeira linha lá na primeira etapa inclui o chamado ficheiro de cabeçalho 412 00:18:58,150 --> 00:18:59,980 para a biblioteca padrão. 413 00:18:59,980 --> 00:19:02,630 Então veja, a língua em que estamos trabalhando agora 414 00:19:02,630 --> 00:19:05,010 tinha uma biblioteca padrão com muitas funções. 415 00:19:05,010 --> 00:19:07,240 Printf é um deles, e que a primeira linha de código 416 00:19:07,240 --> 00:19:10,040 significa me dar acesso a essas funções, para que eu 417 00:19:10,040 --> 00:19:12,300 não tem que reinventar a roda. 418 00:19:12,300 --> 00:19:15,940 >> Agora vamos para a parte inferior da janela e fazer exatamente o que eu fiz antes. 419 00:19:15,940 --> 00:19:18,520 Um momento atrás, quando eu era zunindo através do código, 420 00:19:18,520 --> 00:19:24,540 digitando-o para fora pela primeira vez, I muito rapidamente digitado, faça Olá. 421 00:19:24,540 --> 00:19:28,250 O que foi aquilo que você diria? 422 00:19:28,250 --> 00:19:29,150 O que eu estava fazendo? 423 00:19:29,150 --> 00:19:29,649 Sim? 424 00:19:29,649 --> 00:19:31,810 425 00:19:31,810 --> 00:19:32,310 Esqueçe. 426 00:19:32,310 --> 00:19:32,970 Está certo. 427 00:19:32,970 --> 00:19:33,492 Sim. 428 00:19:33,492 --> 00:19:34,450 AUDIÊNCIA: compilá-lo. 429 00:19:34,450 --> 00:19:34,700 DAVID J. MALAN: Yeah. 430 00:19:34,700 --> 00:19:35,770 Foi apenas compilá-lo. 431 00:19:35,770 --> 00:19:36,270 Certo? 432 00:19:36,270 --> 00:19:39,280 Mesmo se isso é completamente desconhecido para você, é muito Inglês como. 433 00:19:39,280 --> 00:19:41,155 Certamente não é zeros e uns, então eu ainda 434 00:19:41,155 --> 00:19:44,220 precisa executá-lo através do que os chamados programa, um compilador, que vai 435 00:19:44,220 --> 00:19:46,060 para levá-lo como entrada e produzir saída. 436 00:19:46,060 --> 00:19:48,270 E, pelo menos, por agora, em Neste ambiente Linux, 437 00:19:48,270 --> 00:19:51,030 mas este não é um pré-requisito, este é apenas onde nós vamos começar, 438 00:19:51,030 --> 00:19:53,960 você geralmente interagir com sistemas de computador como este 439 00:19:53,960 --> 00:19:55,770 por uma linha de comando chamada. 440 00:19:55,770 --> 00:19:57,790 Assim, com um piscar pronto e seu teclado, 441 00:19:57,790 --> 00:20:01,630 e não tanto o mouse, e não tanto janelas e ícones e menus, 442 00:20:01,630 --> 00:20:02,980 em vez tudo é textual. 443 00:20:02,980 --> 00:20:06,180 E mesmo que este se sente, à primeira vista, talvez, como um passo para trás, 444 00:20:06,180 --> 00:20:08,437 é realmente um muito mais maneira poderosa e expressiva 445 00:20:08,437 --> 00:20:10,270 do controlo de um computador especialmente como você, 446 00:20:10,270 --> 00:20:12,950 mesmo, tornar-se mais confortável de menos. 447 00:20:12,950 --> 00:20:16,790 Ele vai permitir que você faça um monte mais coisas do que apenas o Microsoft 448 00:20:16,790 --> 00:20:20,390 ou a Apple permite que você faça com seu sistema operacional gráfico. 449 00:20:20,390 --> 00:20:23,270 >> Então, quando eu pressione Enter, agora, nada acontece neste momento 450 00:20:23,270 --> 00:20:25,960 porque aparentemente o Olá programa está atualizado. 451 00:20:25,960 --> 00:20:28,250 E qual foi o comando Corri depois disso? 452 00:20:28,250 --> 00:20:32,370 Dot cortar Olá, e Olá mundo. 453 00:20:32,370 --> 00:20:34,350 Agora vamos dar um passo voltar para apenas um momento. 454 00:20:34,350 --> 00:20:39,510 Acontece que fazer Olá é apenas um forma simplificada de compilar um programa. 455 00:20:39,510 --> 00:20:41,670 Vamos apenas introduzir um pedaço de jargão, 456 00:20:41,670 --> 00:20:43,470 mas, em seguida, se afastar a partir dele, já que não é 457 00:20:43,470 --> 00:20:46,640 tudo o que interessante para fins de hoje. 458 00:20:46,640 --> 00:20:51,000 O compilador vamos começar a usar Clang é chamado, para a linguagem C. 459 00:20:51,000 --> 00:20:54,280 E este é um programa que é executado apenas como fizemos na linha de comando lá. 460 00:20:54,280 --> 00:20:56,580 E assim se eu quiser compilar um programa que eu 461 00:20:56,580 --> 00:21:00,790 ter escrito em um arquivo chamado Olá dot c, eu literalmente basta digitar clang Olá c 462 00:21:00,790 --> 00:21:02,100 inserir. 463 00:21:02,100 --> 00:21:04,880 >> O engraçado é que, por razões históricas, 464 00:21:04,880 --> 00:21:07,750 se eu não especificar o nome do programa 465 00:21:07,750 --> 00:21:11,690 que eu quero para a saída, se não o fizer especificar um nome de arquivo para esses zeros 466 00:21:11,690 --> 00:21:14,990 e uns, muito estranho Convenção foi adoptada anos atrás 467 00:21:14,990 --> 00:21:17,390 onde ele sentiu uma espécie de boa resposta no momento, 468 00:21:17,390 --> 00:21:21,650 bem, vamos apenas arbitrariamente chamar a primeiro programa que compilar um ponto fora. 469 00:21:21,650 --> 00:21:22,900 Um vem em primeiro lugar no alfabeto. 470 00:21:22,900 --> 00:21:23,920 Fora, é a saída. 471 00:21:23,920 --> 00:21:26,210 Então, vamos chamar o programa por padrão um ponto fora. 472 00:21:26,210 --> 00:21:29,550 E isso é bom, porque se eu quiser executar o programa neste texto base 473 00:21:29,550 --> 00:21:33,590 ambiente, eu só digitar dot cortar um ponto fora entrar. 474 00:21:33,590 --> 00:21:35,250 E ele seria executado exatamente como antes. 475 00:21:35,250 --> 00:21:36,880 Então vamos ver o que realmente rápido. 476 00:21:36,880 --> 00:21:40,370 >> Então, se eu voltar para o meu código-fonte no IDE CS50, 477 00:21:40,370 --> 00:21:47,860 e eu, em vez fazer isso, clang Olá berço c entrar, aviso nada parece acontecer, 478 00:21:47,860 --> 00:21:49,790 mas quase sempre Neste ambiente Linux, 479 00:21:49,790 --> 00:21:53,310 quando nada de ruim parece acontecer, que significa algo de bom realmente aconteceu. 480 00:21:53,310 --> 00:21:56,270 Se você não ver um erro mensagem, tudo é provavelmente bem. 481 00:21:56,270 --> 00:22:01,930 E, de fato, se eu faço agora dot cortar um ponto a entrar, eu executar o meu mesmo programa. 482 00:22:01,930 --> 00:22:04,610 Eu ainda tenho o programa Olá de mais cedo, porque, na verdade, é 483 00:22:04,610 --> 00:22:07,430 vai ser muito melhor apenas escreva fazer, em vez de se lembrar 484 00:22:07,430 --> 00:22:10,240 estes encantamentos de comandos, mas vamos ver como nós 485 00:22:10,240 --> 00:22:12,890 pode melhorar esse, no entanto. 486 00:22:12,890 --> 00:22:15,340 >> Então, este é o comando para compilar o código. 487 00:22:15,340 --> 00:22:19,100 Este é o comando a ser executado o código compilado posteriormente. 488 00:22:19,100 --> 00:22:20,546 Como posso especificar um nome de arquivo? 489 00:22:20,546 --> 00:22:22,670 Bem, vamos apenas introduzir mais um pedaço de jargão. 490 00:22:22,670 --> 00:22:24,461 Quando você está neste ambiente baseado em texto, 491 00:22:24,461 --> 00:22:27,400 você vai querer especificar coisas chamadas argumentos de linha de comando. 492 00:22:27,400 --> 00:22:31,380 Que é apenas uma maneira elegante de dizer, Ou seja, no prompt 493 00:22:31,380 --> 00:22:33,860 ajustar o comportamento de qualquer programa que você está executando. 494 00:22:33,860 --> 00:22:37,320 Então, especificamente o programa que eu sou em execução, digitando o nome do clang, 495 00:22:37,320 --> 00:22:38,504 é chamado o programa Clang. 496 00:22:38,504 --> 00:22:40,920 Portanto, esta é a velha escola ou equivalente a um clique duplo 497 00:22:40,920 --> 00:22:42,860 no Microsoft Word ou ícone de algum programa. 498 00:22:42,860 --> 00:22:46,360 Estou em vez apenas digitando o seu nome, mas nesta versão do comando, 499 00:22:46,360 --> 00:22:51,334 Em seguida, tenho o traço espaço Olá espaço Olá ponto c. 500 00:22:51,334 --> 00:22:53,500 Assim, mesmo se você nunca desempenhado neste mundo antes, 501 00:22:53,500 --> 00:22:58,160 apenas dar um palpite que O traço o Olá fazer? 502 00:22:58,160 --> 00:23:00,620 Ou o que é dizer clang que fazer? 503 00:23:00,620 --> 00:23:01,386 Sim. 504 00:23:01,386 --> 00:23:02,455 >> AUDIÊNCIA: [inaudível] 505 00:23:02,455 --> 00:23:03,330 DAVID J. MALAN: Yeah. 506 00:23:03,330 --> 00:23:08,614 Ele apenas define a saída do arquivo a ser Olá, em vez do mais tolo um ponto fora. 507 00:23:08,614 --> 00:23:09,780 E, de fato, vamos tentar isso. 508 00:23:09,780 --> 00:23:14,250 Então, se eu agora fazer, em primeiro lugar vamos fazer isso, r m Olá. 509 00:23:14,250 --> 00:23:15,590 Isso é remover. 510 00:23:15,590 --> 00:23:18,450 E vai dizer remove Olá arquivo regular, que 511 00:23:18,450 --> 00:23:22,210 é desnecessariamente arcano, mas apenas meios que você quer excluir o arquivo, 512 00:23:22,210 --> 00:23:23,230 e eu digite y para sim. 513 00:23:23,230 --> 00:23:27,340 E note, se você estivesse olhando para cima à esquerda, o fez desaparecer de lá de cima. 514 00:23:27,340 --> 00:23:32,180 Deixe-me agora fazer clang traço o, e Eu estou indo para ir em frente e fazer Olá, 515 00:23:32,180 --> 00:23:34,890 em todos os tampões, Olá ponto c. 516 00:23:34,890 --> 00:23:37,775 Agora, se eu fizer barra dot Olá, o que você esperaria? 517 00:23:37,775 --> 00:23:41,240 518 00:23:41,240 --> 00:23:42,430 >> Talvez seja a maiúsculas e minúsculas. 519 00:23:42,430 --> 00:23:43,070 Talvez não seja. 520 00:23:43,070 --> 00:23:44,030 Vamos ver. 521 00:23:44,030 --> 00:23:45,230 Não existe tal arquivo ou diretório. 522 00:23:45,230 --> 00:23:47,438 E nós podemos tipo de trapacear só de olhar para cima à esquerda. 523 00:23:47,438 --> 00:23:49,630 O que eu fiz, obviamente, salvar o programa como? 524 00:23:49,630 --> 00:23:51,070 Todas as tampas Olá. 525 00:23:51,070 --> 00:23:53,020 Então, na verdade, o que está acontecendo para fazer a diferença. 526 00:23:53,020 --> 00:23:54,540 Então, agora Olá mundo está de volta. 527 00:23:54,540 --> 00:23:56,969 Agora, isso é tudo muito bem e bom, e todos muito de entorpecimento mental, 528 00:23:56,969 --> 00:23:59,760 a sorte de se atolar em estes detalhes, mas compreendê-los 529 00:23:59,760 --> 00:24:00,500 é bom. 530 00:24:00,500 --> 00:24:02,675 >> Digitando estes cada vez mais encantamentos longos 531 00:24:02,675 --> 00:24:05,980 não vai ser particularmente divertimento, assim que as pessoas no mundo 532 00:24:05,980 --> 00:24:08,260 inventou outro programa, há alguns anos, chamado 533 00:24:08,260 --> 00:24:12,190 fazer, que pura e simplesmente permite que você digite make, 534 00:24:12,190 --> 00:24:14,530 o nome do programa você quer fazer, e fazer 535 00:24:14,530 --> 00:24:18,580 é inteligente na medida em que ele vai olhar em a pasta atual, também conhecido como diretório, 536 00:24:18,580 --> 00:24:21,440 e se você tem um arquivo Olá chamado ponto c, 537 00:24:21,440 --> 00:24:25,800 que é o arquivo ele irá compilar para você em um programa chamado Olá. 538 00:24:25,800 --> 00:24:29,950 Portanto, é uma maneira muito mais simples de fazendo os comandos mais enigmáticas 539 00:24:29,950 --> 00:24:30,800 que fizemos anteriormente. 540 00:24:30,800 --> 00:24:34,080 E temos pré-configurado CS50 IDE de saber 541 00:24:34,080 --> 00:24:38,560 que ele deve fazer o traço e um número de outras bandeiras, ou argumentos de linha de comando, 542 00:24:38,560 --> 00:24:40,670 que veremos em breve. 543 00:24:40,670 --> 00:24:43,700 >> Mas vamos agora realmente fazer algo mais interessante. 544 00:24:43,700 --> 00:24:46,950 Apenas digitando Olá mundo todo o tempo não é tão atraente. 545 00:24:46,950 --> 00:24:52,280 Então deixe-me ir em frente e mudança este programa e dizer: Olá David. 546 00:24:52,280 --> 00:24:54,120 Agora eu estou indo para ir para baixo aqui. 547 00:24:54,120 --> 00:24:57,360 Eu estou indo para ir em frente e fazem Olá. 548 00:24:57,360 --> 00:25:00,652 E mais uma vez, agora você está vendo fazer é mostrar-lhe o mais longo 549 00:25:00,652 --> 00:25:03,360 seqüência de comandos que é fazendo, porque nós temos pré-configurado 550 00:25:03,360 --> 00:25:05,200 dessa maneira, mas nós não precisa se preocupar por enquanto 551 00:25:05,200 --> 00:25:10,735 o que está fazendo diferente do que é compilando dot cortar Olá, Olá mundo. 552 00:25:10,735 --> 00:25:14,969 553 00:25:14,969 --> 00:25:15,510 O que está errado? 554 00:25:15,510 --> 00:25:16,177 Sim. 555 00:25:16,177 --> 00:25:17,370 >> AUDIÊNCIA: [inaudível] 556 00:25:17,370 --> 00:25:18,203 >> DAVID J. MALAN: Sim. 557 00:25:18,203 --> 00:25:19,600 Então, erro noobie. 558 00:25:19,600 --> 00:25:22,394 Eu observo isso é super sutil, mas o asterisco aqui, na guia, 559 00:25:22,394 --> 00:25:25,060 Significa apenas que você não salvou-lo, e navegadores e outros programas 560 00:25:25,060 --> 00:25:25,930 fazer isso às vezes. 561 00:25:25,930 --> 00:25:27,939 Assim, o controle s ou comando s deve salvá-lo. 562 00:25:27,939 --> 00:25:29,730 Agora, deixe-me ir em frente e re-executar o programa. 563 00:25:29,730 --> 00:25:33,360 564 00:25:33,360 --> 00:25:34,260 Recompilados. 565 00:25:34,260 --> 00:25:36,050 Certo, por isso é um processo de várias etapas. 566 00:25:36,050 --> 00:25:39,400 Nenhum dos quais é particularmente complexo, mas a qualquer momento que alterar o arquivo, 567 00:25:39,400 --> 00:25:43,450 precisamos mudar a resultante zeros e uns, e Slash dot Olá. 568 00:25:43,450 --> 00:25:43,950 Uau. 569 00:25:43,950 --> 00:25:46,450 Então isso é muito underwhelming que acabamos impresso isso. 570 00:25:46,450 --> 00:25:48,360 Vamos tornar as coisas um pouco mais dinâmico, agora. 571 00:25:48,360 --> 00:25:52,280 >> Bem se vê, que gosta Zero, C suporta variáveis. 572 00:25:52,280 --> 00:25:54,790 E acontece que se você quiser ter uma variável que armazena, 573 00:25:54,790 --> 00:25:57,300 não um número como nós tipicamente fez com o Scratch, 574 00:25:57,300 --> 00:26:01,300 mas como uma palavra, ou uma frase ou um nome, você 575 00:26:01,300 --> 00:26:04,837 pode especificar uma variável para ser do tipo string. 576 00:26:04,837 --> 00:26:06,670 Então, vamos ver mais de estes em apenas um momento, 577 00:26:06,670 --> 00:26:09,090 mas verifica-se que C, e um monte de línguas como ele, 578 00:26:09,090 --> 00:26:11,240 têm tipos muito específicos de variáveis. 579 00:26:11,240 --> 00:26:13,810 Não é só gosta de álgebra, onde você receber um x, uma y, z e 580 00:26:13,810 --> 00:26:16,940 e esses são apenas sempre números, em uma linguagem de programação 581 00:26:16,940 --> 00:26:20,030 você pode armazenar números, você pode armazenar caracteres individuais, 582 00:26:20,030 --> 00:26:24,619 você pode armazenar palavras inteiras, você poderia armazenar imagens inteiras, arquivos de som integrais, 583 00:26:24,619 --> 00:26:25,160 e similar. 584 00:26:25,160 --> 00:26:28,362 Então, precisamos especificar o que o tipo de variável é nosso. 585 00:26:28,362 --> 00:26:31,570 E, por convenção, eu vou ligar para o meu s variáveis ​​só porque ele é sucinto, 586 00:26:31,570 --> 00:26:33,510 e s significa string. 587 00:26:33,510 --> 00:26:36,400 >> E então eu estou indo para armazenar dentro desta variável, 588 00:26:36,400 --> 00:26:39,570 assim como com o Scratch quando eu uso o bloco set, 589 00:26:39,570 --> 00:26:41,950 Vou usar o operador de atribuição em C, 590 00:26:41,950 --> 00:26:45,290 que bem o suficiente é o igual assinar, mas o sinal de igual faz isso. 591 00:26:45,290 --> 00:26:53,220 Ela se move alguma coisa da direita para o lado esquerdo da expressão. 592 00:26:53,220 --> 00:26:57,170 Então, o que eu fiz, para ser claro em linha de cinco, é que eu declarou uma variável. 593 00:26:57,170 --> 00:27:01,284 Eu disse ao computador, dá-me memória para uma variável, chame-s, 594 00:27:01,284 --> 00:27:03,950 e saber de antemão que eu vou estar colocando uma corda nele. 595 00:27:03,950 --> 00:27:05,950 E uma string é apenas um sequência de caracteres. 596 00:27:05,950 --> 00:27:09,190 É uma palavra ou uma frase, ou parágrafo, mas é uma sequência de caracteres. 597 00:27:09,190 --> 00:27:10,610 Não é números. 598 00:27:10,610 --> 00:27:13,800 O seqüência de caracteres que eu vou ser colocando em que variável? 599 00:27:13,800 --> 00:27:16,185 Bem, aparentemente, citá unquote, "Hannah". 600 00:27:16,185 --> 00:27:17,810 Agora, observe o padrão que está emergindo. 601 00:27:17,810 --> 00:27:19,260 Há uma expressão mão esquerda. 602 00:27:19,260 --> 00:27:21,810 Há uma expressão mão direita, separados pelo sinal de igual. 603 00:27:21,810 --> 00:27:24,390 E apenas dar um palpite, se desconhecido, no entanto, 604 00:27:24,390 --> 00:27:27,430 com o que o ponto e vírgula é fazendo. 605 00:27:27,430 --> 00:27:28,865 O que é que presumivelmente fazendo por nós? 606 00:27:28,865 --> 00:27:29,365 Sim? 607 00:27:29,365 --> 00:27:29,840 >> AUDIÊNCIA: [inaudível] 608 00:27:29,840 --> 00:27:29,980 >> DAVID J. MALAN: Yeah. 609 00:27:29,980 --> 00:27:31,170 É só que encerra o line. 610 00:27:31,170 --> 00:27:31,669 Certo? 611 00:27:31,669 --> 00:27:34,260 Os computadores querem estar sem rodeios disse, literalmente, o que fazer. 612 00:27:34,260 --> 00:27:36,343 Tal como a manteiga de amendoim e exemplo sanduíche de geléia, 613 00:27:36,343 --> 00:27:39,360 se você não especificar exatamente o que você pretende, 614 00:27:39,360 --> 00:27:42,190 ele pode ser deixado ao julgamento ou erro. 615 00:27:42,190 --> 00:27:44,890 O ponto e vírgula significa, é isso para este comando. 616 00:27:44,890 --> 00:27:48,310 Tem de ser super precisa, e é uma coisa muito fácil de sair fora. 617 00:27:48,310 --> 00:27:52,240 Então agora este programa não parece estar se comportando de maneira diferente até que eu 618 00:27:52,240 --> 00:27:53,500 torná-lo mais dinâmico. 619 00:27:53,500 --> 00:27:57,107 Então ao invés de disco poderia minha própria citar, deixe-me colocar um valor do espaço reservado. 620 00:27:57,107 --> 00:28:00,190 E verifica-se que, e eu sei disso de ter lido a documentação, 621 00:28:00,190 --> 00:28:04,080 e utilizada para a função anos, que printf foi projetado para ser dinâmico. 622 00:28:04,080 --> 00:28:07,510 Você não tem que saber com antecedência o que palavras você quer colocar nele. 623 00:28:07,510 --> 00:28:11,290 Em vez disso você pode ter um espaço reservado, como por cento s, que 624 00:28:11,290 --> 00:28:15,500 vai contar a computador, colocar uma corda aqui. 625 00:28:15,500 --> 00:28:17,740 >> Que seqüência queremos colocar lá? 626 00:28:17,740 --> 00:28:22,430 Will se que entre estes parênteses, que se lembrar, demarcar 627 00:28:22,430 --> 00:28:28,020 a entrada para uma função, se você tiver vírgula lista de coisas separadas aqui, 628 00:28:28,020 --> 00:28:31,790 nós realmente passar em múltiplos entradas para uma função. 629 00:28:31,790 --> 00:28:33,901 Então, basta um pouco de risco blocos, você talvez não 630 00:28:33,901 --> 00:28:36,150 ter jogado com eles por seus projetos ainda ou em todos, 631 00:28:36,150 --> 00:28:38,250 alguns blocos de raspadinhas tem duas entradas. 632 00:28:38,250 --> 00:28:41,220 Duas caixas brancas que você pode digitar números ou palavras em. 633 00:28:41,220 --> 00:28:45,210 Então, para não ter funções como C printf que pode levar duas entradas. 634 00:28:45,210 --> 00:28:48,050 E, novamente, este vírgula é separá-los. 635 00:28:48,050 --> 00:28:51,070 Assim, em Inglês, novamente, mesmo se você nunca programou antes, 636 00:28:51,070 --> 00:28:55,320 pelo que printf lógica é uma função, leva duas entradas, uma das quais 637 00:28:55,320 --> 00:28:58,810 é um espaço reservado, o que você espera printf vai fazer com essa entrada? 638 00:28:58,810 --> 00:29:01,470 639 00:29:01,470 --> 00:29:03,220 Vai dizer Olá Hannah, eu espero. 640 00:29:03,220 --> 00:29:05,274 Então, para fazer isso, precisamos salvá-lo. 641 00:29:05,274 --> 00:29:06,190 Eu estou indo para afastar. 642 00:29:06,190 --> 00:29:10,701 Eu vou voltar para baixo aqui e dizer, fazer Olá entrar. 643 00:29:10,701 --> 00:29:11,200 Oh. 644 00:29:11,200 --> 00:29:14,830 Alguma coisa está errada, e, na verdade, este é muito grande. 645 00:29:14,830 --> 00:29:18,400 Tenho seis linhas de código e como 12 linhas de erros. 646 00:29:18,400 --> 00:29:22,120 Então, estamos ansiosos para isso. 647 00:29:22,120 --> 00:29:24,260 Então, o que está acontecendo aqui? 648 00:29:24,260 --> 00:29:27,370 Portanto, a melhor regra de ouro aqui, especialmente quando você está começando, 649 00:29:27,370 --> 00:29:29,370 não se distrair com o material na parte inferior. 650 00:29:29,370 --> 00:29:31,220 Na verdade, eu muito deliberadamente apenas rolou para cima 651 00:29:31,220 --> 00:29:33,930 porque muitas vezes, um computador é tudo o que não brilhante de um dispositivo. 652 00:29:33,930 --> 00:29:35,054 Vai ficar confuso. 653 00:29:35,054 --> 00:29:37,220 Se ele vê uma coisa que ele não entende, 654 00:29:37,220 --> 00:29:40,030 pode confundir outros linhas de código como incorretas, 655 00:29:40,030 --> 00:29:41,649 mesmo que eles são perfeitamente bem. 656 00:29:41,649 --> 00:29:43,940 Assim, você sempre quer trabalhar de cima para baixo através dos erros. 657 00:29:43,940 --> 00:29:47,850 E é certo que este é Super arcano no momento. 658 00:29:47,850 --> 00:29:50,830 >> Erro, o uso de não declarado seqüência de identificador. 659 00:29:50,830 --> 00:29:52,130 Será que eu quero dizer no padrão? 660 00:29:52,130 --> 00:29:53,720 Não, eu quis dizer string. 661 00:29:53,720 --> 00:29:55,830 E ele está apontando para, talvez seja um erro de digitação. 662 00:29:55,830 --> 00:30:00,570 Mais ou menos como, verificação ortográfica em um maneira muito geeky, mas a razão aqui, 663 00:30:00,570 --> 00:30:02,840 e você saberá que este apenas pela prática, é 664 00:30:02,840 --> 00:30:06,390 que verifica-se que cadeia não existe em C. Na verdade, C 665 00:30:06,390 --> 00:30:08,820 é um idioma em particular de idade, e é muito baixo nível, 666 00:30:08,820 --> 00:30:11,361 e não faz um monte de recursos que você pode ter crescido 667 00:30:11,361 --> 00:30:14,620 com se você tem, na verdade, programado em Java, como alguns de vocês têm, 668 00:30:14,620 --> 00:30:16,980 mas você pode ensiná-lo coisas novas. 669 00:30:16,980 --> 00:30:20,900 E, de fato, temos feito isso CS50, embora até o final do semestre, 670 00:30:20,900 --> 00:30:23,512 todas essas rodinhas terá sido retirado, 671 00:30:23,512 --> 00:30:25,220 o que fazemos nestes primeiro par de semanas 672 00:30:25,220 --> 00:30:29,830 inicialmente é também temos você incluir CS50 dot h. 673 00:30:29,830 --> 00:30:31,230 Que é um arquivo de cabeçalho. 674 00:30:31,230 --> 00:30:32,440 Mais sobre isso no futuro. 675 00:30:32,440 --> 00:30:36,430 >> É um arquivo que contém funções que nós escrevemos para você. 676 00:30:36,430 --> 00:30:39,180 E entre essas funções é funções para aproveitar entrada 677 00:30:39,180 --> 00:30:43,520 do usuário, como cordas, e números, e números reais, e muito mais. 678 00:30:43,520 --> 00:30:45,550 Mas também tem alguns atalhos. 679 00:30:45,550 --> 00:30:48,200 Ele define um valor booleano como um tipo de dados. 680 00:30:48,200 --> 00:30:50,340 C não tem verdadeiro ou falso. 681 00:30:50,340 --> 00:30:53,880 Mas podemos dar-lhe a noção de verdadeiro ou falso através desta biblioteca. 682 00:30:53,880 --> 00:30:57,670 E também não tem uma seqüência construído em até incluir esta linha. 683 00:30:57,670 --> 00:31:01,090 Então esta linha de código diz o compilador, hey, Clang, olhar 684 00:31:01,090 --> 00:31:03,570 neste arquivo para um todo monte de código que CS50 685 00:31:03,570 --> 00:31:06,330 tem escrito para que qualquer pessoa que use este arquivo 686 00:31:06,330 --> 00:31:09,330 pode tomar para concedido a recursos eles adicionaram. 687 00:31:09,330 --> 00:31:11,220 >> Então, agora deixe-me ir em frente e limpar a tela, 688 00:31:11,220 --> 00:31:14,178 e se curioso Só estou dizendo controle l cada vez para limpar a tela, 689 00:31:14,178 --> 00:31:15,500 ou você pode digitar clara. 690 00:31:15,500 --> 00:31:19,220 Eu só estou indo para ir em frente agora e Tipo de fazer Olá, e está tudo bem. 691 00:31:19,220 --> 00:31:22,550 Ainda uma saída arcano, mas não é uma mensagem errada. 692 00:31:22,550 --> 00:31:28,300 Ora, se faço dot cortar Olá, e como um de lado, corte de ponto é desconhecido para a maioria. 693 00:31:28,300 --> 00:31:30,430 Significa apenas que, meio ponto o diretório atual. 694 00:31:30,430 --> 00:31:33,120 Então, se você já usou DOS ou Linux, ou Unix 695 00:31:33,120 --> 00:31:35,410 você poderia ter feito algo como cd dot dot, onde 696 00:31:35,410 --> 00:31:39,220 dot dot significa ir para trás em tempo, ou ir para trás, ou mais acima 697 00:31:39,220 --> 00:31:40,370 em seu diretório. 698 00:31:40,370 --> 00:31:43,090 Dot significa apenas olhar em o diretório atual. 699 00:31:43,090 --> 00:31:45,670 Eu quero Olá, o que está bem aqui. 700 00:31:45,670 --> 00:31:47,750 E, de fato, agora ele diz Olá Hannah. 701 00:31:47,750 --> 00:31:51,120 E se eu mudar isso de novo a Maria, recompilar 702 00:31:51,120 --> 00:31:55,650 faria Olá, Slash dot Olá, o programa continua a mudar. 703 00:31:55,650 --> 00:31:58,060 >> Mas isso ainda é uma programa muito estúpido. 704 00:31:58,060 --> 00:32:00,972 Se eu quiser enviar este programa, ou dá-lo a um amigo, 705 00:32:00,972 --> 00:32:03,430 ou dá-la a Maria ou Hannah para que o assunto, isso é bom. 706 00:32:03,430 --> 00:32:07,300 Eu posso personalizá-lo para ambos, mas nunca vai ser dinâmico. 707 00:32:07,300 --> 00:32:10,870 Eles não podem alterá-lo depois que ele é compilado dentro daqueles zeros e uns. 708 00:32:10,870 --> 00:32:12,350 Então, o que nós fizemos algo mais inteligente? 709 00:32:12,350 --> 00:32:17,100 E se, em vez de hard-codificação no programa o nome dessa pessoa, 710 00:32:17,100 --> 00:32:20,890 E se nós apenas obter a seqüência de caracteres sob demanda? 711 00:32:20,890 --> 00:32:22,430 >> Portanto, em outras palavras, deixe-me fazer isso. 712 00:32:22,430 --> 00:32:24,030 Eu estou indo para recompilar este programa. 713 00:32:24,030 --> 00:32:25,710 E deixe-me fazer zoom na parte inferior agora. 714 00:32:25,710 --> 00:32:29,920 Faça Olá barra dot Olá. 715 00:32:29,920 --> 00:32:31,710 Agora nada está acontecendo. 716 00:32:31,710 --> 00:32:35,860 Podemos obter um voluntário rápida para fazer algo acontecer? 717 00:32:35,860 --> 00:32:36,360 Vamos lá para cima. 718 00:32:36,360 --> 00:32:37,020 Qual o seu nome? 719 00:32:37,020 --> 00:32:37,445 >> PANCHO: Pancho. 720 00:32:37,445 --> 00:32:38,361 >> DAVID J. MALAN: Pacho? 721 00:32:38,361 --> 00:32:39,609 Vamos lá para cima. 722 00:32:39,609 --> 00:32:42,150 Uma vez que você se levanta aqui, este é vai ser muito decepcionante, 723 00:32:42,150 --> 00:32:44,060 mas é mais interessante do que eu escrever o mesmo. 724 00:32:44,060 --> 00:32:49,007 Se você quiser ir em frente e digite sua nome, eu fiz este programa apenas para você. 725 00:32:49,007 --> 00:32:49,840 Basta digitar o seu nome. 726 00:32:49,840 --> 00:32:52,380 727 00:32:52,380 --> 00:32:53,900 Enter. 728 00:32:53,900 --> 00:32:54,489 Maravilhoso. 729 00:32:54,489 --> 00:32:55,780 Tudo bem, muito obrigado. 730 00:32:55,780 --> 00:32:56,708 >> PANCHO: Thank you very much. 731 00:32:56,708 --> 00:32:57,636 >> DAVID J. MALAN: OK. 732 00:32:57,636 --> 00:32:59,028 >> [Aplausos] 733 00:32:59,028 --> 00:33:00,884 734 00:33:00,884 --> 00:33:01,840 >> Isso foi muito gentil. 735 00:33:01,840 --> 00:33:03,145 Aqui vai você. 736 00:33:03,145 --> 00:33:03,770 O que nós fizemos? 737 00:33:03,770 --> 00:33:05,930 Portanto, finalmente, pelo menos, fez este programa dinâmico. 738 00:33:05,930 --> 00:33:08,400 Agora ainda é, certamente, por underwhelming design, 739 00:33:08,400 --> 00:33:11,480 mas finalmente temos a capacidade agora a escrever código de antecedência, muito 740 00:33:11,480 --> 00:33:13,770 como os autores do printf, e, em seguida, dinamicamente 741 00:33:13,770 --> 00:33:17,550 adaptar com base na entrada somos entregues, quer pelo programador, 742 00:33:17,550 --> 00:33:20,610 ou pelo ser humano que é, na verdade, interagir com o programa. 743 00:33:20,610 --> 00:33:22,990 Então, vamos tentar agora, na verdade, para fazer algumas outras construções 744 00:33:22,990 --> 00:33:26,625 e ver se nós não podemos fazer os programas -se mais sofisticada. 745 00:33:26,625 --> 00:33:29,250 Então, vamos em frente e em vez de escrevendo isso a partir do zero, 746 00:33:29,250 --> 00:33:31,540 Eu estou indo para ir para hoje código fonte, e tudo isto 747 00:33:31,540 --> 00:33:34,290 está disponível no curso de site, e você pode arrastar e soltá-lo 748 00:33:34,290 --> 00:33:36,590 em seu próprio ambiente sexta-feira, uma vez vir problema 749 00:33:36,590 --> 00:33:38,506 1 conjunto dá-lhe a instruções, ou você pode 750 00:33:38,506 --> 00:33:41,200 fazê-lo na linha de comando como bem, mas mais para vir no jogo 1 p. 751 00:33:41,200 --> 00:33:44,940 >> Vamos ver o que está neste programa aqui chamado, somador ponto c. 752 00:33:44,940 --> 00:33:47,970 Agora eu já comentou -lo, mas o que há de novo? 753 00:33:47,970 --> 00:33:51,230 À primeira vista, o que linha de código é absolutamente novo? 754 00:33:51,230 --> 00:33:53,930 755 00:33:53,930 --> 00:33:56,780 Provavelmente não fundamentalmente estranho agora. 756 00:33:56,780 --> 00:33:58,417 >> AUDIÊNCIA: [inaudível] 757 00:33:58,417 --> 00:34:00,250 DAVID J. MALAN: Sim, assim int x é igual a obter n. 758 00:34:00,250 --> 00:34:03,760 Nós nunca vimos nada disso antes, mas é provavelmente int 759 00:34:03,760 --> 00:34:08,179 o símbolo para que tipo de variável, [? de?] um número inteiro. 760 00:34:08,179 --> 00:34:09,040 Assim, int por inteiro. 761 00:34:09,040 --> 00:34:11,420 Ele está apenas sendo mais sucinto. x é apenas arbitrária. 762 00:34:11,420 --> 00:34:13,920 X e Y e Z são ainda bastante razoável para números, 763 00:34:13,920 --> 00:34:16,790 mas geralmente nós vamos usar palavras uma vez nossos programas se tornam mais complexas. 764 00:34:16,790 --> 00:34:18,940 Obter int, é claro, muito parecido com corda get, 765 00:34:18,940 --> 00:34:21,629 é provavelmente vai obter um int do usuário, 766 00:34:21,629 --> 00:34:23,670 e, em seguida, vamos fazer a mesma coisa com y. 767 00:34:23,670 --> 00:34:27,610 E, aparentemente, embora esta última linha, 24, parece mais complexo, 768 00:34:27,610 --> 00:34:32,679 ele vai dizer a soma deste e que é essa outra coisa. 769 00:34:32,679 --> 00:34:35,840 >> E notem por cento i provavelmente denota o quê? 770 00:34:35,840 --> 00:34:38,190 Que papel por cento i aparentemente servir? 771 00:34:38,190 --> 00:34:40,739 772 00:34:40,739 --> 00:34:41,719 É apenas espaços reservados. 773 00:34:41,719 --> 00:34:42,219 Certo? 774 00:34:42,219 --> 00:34:45,149 S por cento foi para corda, i por cento é para inteiro. 775 00:34:45,149 --> 00:34:47,690 Não vai ser por cento f para valor de ponto flutuante que 776 00:34:47,690 --> 00:34:49,273 é apenas um número com um ponto decimal. 777 00:34:49,273 --> 00:34:50,590 Em outras palavras, um número real. 778 00:34:50,590 --> 00:34:55,270 Então vamos realmente compilar este programar rápido real e fazem víbora. 779 00:34:55,270 --> 00:34:57,962 Whoops. 780 00:34:57,962 --> 00:34:58,670 Boa oportunidade. 781 00:34:58,670 --> 00:35:02,970 Então, observe aqui, todo esse tempo meu usuário nome para essa conta é jharvard. 782 00:35:02,970 --> 00:35:06,620 Estou em CS50 IDE, aka IDE50. 783 00:35:06,620 --> 00:35:11,030 E agora aqui em azul, é uma menção, mas do meio ambiente, de onde eu sou. 784 00:35:11,030 --> 00:35:16,050 E, de fato, se eu aumentar até o topo aqui, repare que eu tenho uma IDE50 785 00:35:16,050 --> 00:35:19,490 e eu vejo esta palavra, se você tipo de virar a cabeça para o lado, espaço de trabalho. 786 00:35:19,490 --> 00:35:23,890 Em poucas palavras, o fato de que Eu estou vendo til barra de espaço de trabalho 787 00:35:23,890 --> 00:35:26,910 significa que no presente texto ambiente de comando com base, 788 00:35:26,910 --> 00:35:32,300 Eu estou no equivalente de texto este gráfica pasta aqui. 789 00:35:32,300 --> 00:35:35,730 Então, quando eu faço barra dot víbora, ele está dizendo nenhuma regra 790 00:35:35,730 --> 00:35:37,372 para tornar alvo parada víbora. 791 00:35:37,372 --> 00:35:39,830 Eu não sei o que isso significa, mas é ruim por algum motivo. 792 00:35:39,830 --> 00:35:43,310 Não existe tal arquivo ou diretório é ainda mais claro. 793 00:35:43,310 --> 00:35:45,670 Onde está, então? 794 00:35:45,670 --> 00:35:47,820 Com base em onde eu cliquei para abrir o arquivo antes. 795 00:35:47,820 --> 00:35:49,442 Onde poderia estar? 796 00:35:49,442 --> 00:35:52,050 >> É provavelmente na fonte um w, para a quarta- 797 00:35:52,050 --> 00:35:53,960 e eu posso vê-lo, de fato, se eu abrir isso. 798 00:35:53,960 --> 00:35:57,220 Há somador de ponto C, mas em Neste ambiente baseado em texto, 799 00:35:57,220 --> 00:35:59,380 novamente, eu tenho que ser super explícito. 800 00:35:59,380 --> 00:36:03,950 Se eu quiser alterar os diretórios em fonte de uma quarta-feira, eu preciso digitar, 801 00:36:03,950 --> 00:36:07,210 cd fonte espaço um Quarta-feira e entra agora 802 00:36:07,210 --> 00:36:09,810 meus prompt muda para me dar uma dica visual que 803 00:36:09,810 --> 00:36:12,330 Estou, na verdade, em outro lugar no meu ambiente, 804 00:36:12,330 --> 00:36:15,710 mas agora eu posso fazem víbora, parece funcionar, 805 00:36:15,710 --> 00:36:18,190 dot cortar víbora, me dar um inteiro. 806 00:36:18,190 --> 00:36:19,080 Uma. 807 00:36:19,080 --> 00:36:20,070 Dois. 808 00:36:20,070 --> 00:36:21,630 A soma de um e dois é três. 809 00:36:21,630 --> 00:36:24,140 Mas se eu não cooperar, vamos ver o que chegar int faz. 810 00:36:24,140 --> 00:36:25,200 Dê-me um inteiro. 811 00:36:25,200 --> 00:36:26,590 Não. 812 00:36:26,590 --> 00:36:27,350 Tente novamente. 813 00:36:27,350 --> 00:36:29,060 ESTÁ BEM. 814 00:36:29,060 --> 00:36:30,520 Bem. 815 00:36:30,520 --> 00:36:32,130 50. 816 00:36:32,130 --> 00:36:32,680 50. 817 00:36:32,680 --> 00:36:33,010 Tudo certo. 818 00:36:33,010 --> 00:36:34,055 Por isso, finalmente coopera. 819 00:36:34,055 --> 00:36:36,430 E isso é parte do funcionalidade que estas funções 820 00:36:36,430 --> 00:36:37,760 pode ter construído em para você. 821 00:36:37,760 --> 00:36:43,330 >> Então, dentro da implementação de obter int, o que de programação 822 00:36:43,330 --> 00:36:47,990 construir desde a semana passada é, provavelmente, lá para obrigar este comportamento de repetição, 823 00:36:47,990 --> 00:36:49,962 repetir, repetir? 824 00:36:49,962 --> 00:36:51,670 Sim, há, provavelmente, algum tipo de loop. 825 00:36:51,670 --> 00:36:54,160 Vai olhar sintaticamente diferente a partir de blocos de raspadinhas, 826 00:36:54,160 --> 00:36:55,880 mas isso é de fato o que está dentro do arquivo. 827 00:36:55,880 --> 00:36:58,505 E em algumas semanas nós vamos realmente olhar para a biblioteca CS50 828 00:36:58,505 --> 00:37:02,000 como o que está dentro, mas há um loop impor exatamente isso. 829 00:37:02,000 --> 00:37:04,840 >> Vamos jogar um pouco bobo jogo aqui com este arquivo. 830 00:37:04,840 --> 00:37:06,550 Condition Zero ponto c. 831 00:37:06,550 --> 00:37:08,960 Nós apenas estamos indo em geral começar a contar em zero. 832 00:37:08,960 --> 00:37:11,220 E eu manter a rolagem passado algum do material na parte superior. 833 00:37:11,220 --> 00:37:15,390 Em azul aqui, com toda demarcada destas estrelas e as barras, 834 00:37:15,390 --> 00:37:17,310 aqueles de vocês que programar antes, o que é isso? 835 00:37:17,310 --> 00:37:18,690 Por que continuamos a ignorar sobre ele? 836 00:37:18,690 --> 00:37:19,110 O quê? 837 00:37:19,110 --> 00:37:19,490 >> AUDIÊNCIA: É um comentário. 838 00:37:19,490 --> 00:37:19,800 >> DAVID J. MALAN: Yeah. 839 00:37:19,800 --> 00:37:20,633 É só um comentário. 840 00:37:20,633 --> 00:37:24,160 Este é um comentário para o ser humano ler, que, no nosso caso, 841 00:37:24,160 --> 00:37:27,120 diz-nos que o nome do arquivo é, quem o escreveu, eo que ele faz, 842 00:37:27,120 --> 00:37:28,610 de modo que você não tem para ler o código 843 00:37:28,610 --> 00:37:30,110 para saber o que este arquivo é tudo. 844 00:37:30,110 --> 00:37:33,110 É apenas uma descrição, mas funcionalmente é irrelevante. 845 00:37:33,110 --> 00:37:35,930 E eu posso até mesmo excluí-lo meu arquivo e ele não tem impacto. 846 00:37:35,930 --> 00:37:38,740 As linhas são estes suculentos primeiro dois aqui, agora. 847 00:37:38,740 --> 00:37:41,405 void main int é o equivalente da nossa bandeira verde quando clicado, 848 00:37:41,405 --> 00:37:44,030 então vamos deixar que seja para hoje, e nós vamos voltar, 849 00:37:44,030 --> 00:37:46,940 eventualmente, sobre o que int e vazio são, mas agora, 850 00:37:46,940 --> 00:37:49,500 perceber o que eu fiz aqui também, você também pode, 851 00:37:49,500 --> 00:37:51,736 se você tem um em linha comentar, se você tiver 852 00:37:51,736 --> 00:37:54,670 um que você quer compartilhar sobre uma determinada linha de código, 853 00:37:54,670 --> 00:37:58,910 convenção em C é fazer barra slash, e, em seguida, algumas palavras sucintas, 854 00:37:58,910 --> 00:38:01,500 não uma frase completa, geralmente não um parágrafo, 855 00:38:01,500 --> 00:38:05,310 que apenas explica para você, ou seu TF, ou outros leitores ou colegas, 856 00:38:05,310 --> 00:38:06,990 o que o código está fazendo. 857 00:38:06,990 --> 00:38:10,150 Então ao invés de ter que olhar para isso e inferir a partir de linhas 858 00:38:10,150 --> 00:38:12,550 nove e 10, o que é esta fazendo, na linha oito 859 00:38:12,550 --> 00:38:14,945 Acabei de dar um comentário a pedir ao usuário para um número inteiro, 860 00:38:14,945 --> 00:38:17,820 então eu não tenho que pensar muito sobre o que linhas nove e 10 são. 861 00:38:17,820 --> 00:38:19,720 Eu só sei que isso é o que coletivamente eles estão fazendo. 862 00:38:19,720 --> 00:38:20,460 >> Como? 863 00:38:20,460 --> 00:38:22,060 Bem, aqui está o prompt. 864 00:38:22,060 --> 00:38:23,610 Aqui é a obtenção do int. 865 00:38:23,610 --> 00:38:25,984 E com base na anterior comportamento, parece que get int 866 00:38:25,984 --> 00:38:29,080 é inteligente o suficiente para se certificar de que o humano coopera e dá-lhe 867 00:38:29,080 --> 00:38:30,090 um inteiro. 868 00:38:30,090 --> 00:38:32,270 Mas agora vemos isso. 869 00:38:32,270 --> 00:38:33,740 E esta é uma reminiscência do Scratch. 870 00:38:33,740 --> 00:38:36,140 Eu estou dizendo que eu sou analisando a entrada do usuário, 871 00:38:36,140 --> 00:38:39,050 mas um pouco imprecisa. 872 00:38:39,050 --> 00:38:43,200 E isso aparentemente em C é como expressamos uma se mais, de uma sucursal, 873 00:38:43,200 --> 00:38:46,320 uma bifurcação na estrada, mas eu dizer um pouco imprecisa. 874 00:38:46,320 --> 00:38:50,470 Qual é o erro neste programa? 875 00:38:50,470 --> 00:38:51,610 Sobre ainda mais para trás? 876 00:38:51,610 --> 00:38:52,223 Sim. 877 00:38:52,223 --> 00:38:53,150 >> AUDIÊNCIA: [inaudível] zero. 878 00:38:53,150 --> 00:38:54,025 >> DAVID J. MALAN: Yeah. 879 00:38:54,025 --> 00:38:57,630 Então, se eu digitar zero, vamos considerar exatamente nesse caso caso, ou canto, 880 00:38:57,630 --> 00:38:58,450 Se você for. 881 00:38:58,450 --> 00:39:02,790 Então, se eu digitar zero, qual dos blocos vai aparentemente agarrá-lo? 882 00:39:02,790 --> 00:39:04,660 O caso ou a pessoa? 883 00:39:04,660 --> 00:39:07,340 A outra coisa, e ele vai dizer, você escolheu um número negativo. 884 00:39:07,340 --> 00:39:10,476 E, de fato, zero não é suposto para ser positiva ou negativa, 885 00:39:10,476 --> 00:39:11,850 e de modo que seria erroneamente. 886 00:39:11,850 --> 00:39:12,930 Isso seria um erro. 887 00:39:12,930 --> 00:39:14,580 Então, como podemos corrigir isso? 888 00:39:14,580 --> 00:39:16,360 Alguém que nunca tenha programado antes? 889 00:39:16,360 --> 00:39:16,570 Você quer-- 890 00:39:16,570 --> 00:39:17,480 >> AUDIÊNCIA: [inaudível] 891 00:39:17,480 --> 00:39:17,990 >> DAVID J. MALAN: Retraindo? 892 00:39:17,990 --> 00:39:18,570 >> AUDIÊNCIA: [inaudível] 893 00:39:18,570 --> 00:39:18,930 >> DAVID J. MALAN: Oh, você tem? 894 00:39:18,930 --> 00:39:20,350 Alguém que nunca tenha programado antes. 895 00:39:20,350 --> 00:39:21,750 Quer tentar sua mão em este, com a camisa vermelha? 896 00:39:21,750 --> 00:39:22,600 Vamos lá para cima. 897 00:39:22,600 --> 00:39:25,320 Oh yeah, vamos lá para cima, se você não se importa. 898 00:39:25,320 --> 00:39:27,586 Por isso, nunca ter programado antes, o que é seu nome? 899 00:39:27,586 --> 00:39:28,210 LAUREN: Lauren. 900 00:39:28,210 --> 00:39:29,626 DAVID J. MALAN: Lauren, tudo bem. 901 00:39:29,626 --> 00:39:31,150 Então corrigir esse bug para nós. 902 00:39:31,150 --> 00:39:35,070 Você não vi C, presumivelmente, e, provavelmente, nenhum outro idioma. 903 00:39:35,070 --> 00:39:38,380 Então corrigir esse programa para nós. 904 00:39:38,380 --> 00:39:39,100 Prazer em conhecê-ya. 905 00:39:39,100 --> 00:39:39,615 Sem pressão. 906 00:39:39,615 --> 00:39:40,156 LAUREN: Yeah. 907 00:39:40,156 --> 00:39:43,350 908 00:39:43,350 --> 00:39:46,270 >> DAVID J. MALAN: Mas, novamente, se este gamble correr conforme o planejado, 909 00:39:46,270 --> 00:39:48,350 o takeaway aqui vai ser, apenas uma vez, para iniciar 910 00:39:48,350 --> 00:39:51,080 a notar padrões e deduzir sintaxe existente 911 00:39:51,080 --> 00:39:55,420 de que outra forma você pode expressar mesmo, sem trocadilhos, a fim 912 00:39:55,420 --> 00:39:58,410 para capturar algum cenário adicional. 913 00:39:58,410 --> 00:39:59,603 Então, nós estamos dizendo else if. 914 00:39:59,603 --> 00:40:04,040 915 00:40:04,040 --> 00:40:05,230 printf, bom. 916 00:40:05,230 --> 00:40:09,120 E observe com CS50 IDE e IDE frankly-- 917 00:40:09,120 --> 00:40:11,110 significa Integrado Ambiente de desenvolvimento. 918 00:40:11,110 --> 00:40:14,110 É apenas uma maneira elegante de dizer um programa que ajuda você programa. 919 00:40:14,110 --> 00:40:16,779 Ele faz coisas como usuário amigável quando você digitar um parêntese, 920 00:40:16,779 --> 00:40:18,320 ele dá-lhe automaticamente o outro. 921 00:40:18,320 --> 00:40:20,760 A presunção é que você é eventualmente vai querer escrever que, 922 00:40:20,760 --> 00:40:22,400 e ele também faz isso com aspas. 923 00:40:22,400 --> 00:40:24,190 >> Então, eu gosto linha 23. 924 00:40:24,190 --> 00:40:26,400 99% do caminho até lá. 925 00:40:26,400 --> 00:40:29,920 Alguém quer dialogar com uma dica? 926 00:40:29,920 --> 00:40:31,420 Ouvi ponto e vírgula da platéia. 927 00:40:31,420 --> 00:40:32,080 Boa. 928 00:40:32,080 --> 00:40:33,260 Assim que termina que. 929 00:40:33,260 --> 00:40:37,930 E agora, eu só tenho um pouco consternação com a linha 21. 930 00:40:37,930 --> 00:40:41,370 Como queremos expressar isso? 931 00:40:41,370 --> 00:40:43,370 Que pergunta queremos de pedir, que você acha? 932 00:40:43,370 --> 00:40:46,870 933 00:40:46,870 --> 00:40:50,330 Então anteriormente que fez a pergunta, se n for maior do que zero, fazer isso. 934 00:40:50,330 --> 00:40:51,870 Else, fazer isso. 935 00:40:51,870 --> 00:40:54,317 Então, precisamos escolher um pergunta a fazer aqui. 936 00:40:54,317 --> 00:40:55,192 AUDIÊNCIA: [inaudível] 937 00:40:55,192 --> 00:40:56,530 DAVID J. MALAN: Good. 938 00:40:56,530 --> 00:40:58,290 Assim, se n for igual a zero. 939 00:40:58,290 --> 00:41:01,140 940 00:41:01,140 --> 00:41:02,100 Excelente. 941 00:41:02,100 --> 00:41:03,080 Então, vamos fazer uma pausa aqui. 942 00:41:03,080 --> 00:41:04,850 Muito obrigado por esta enfrentando. 943 00:41:04,850 --> 00:41:10,890 Deixe-me dar-lhe um pouco merecida bola de stress, talvez não. 944 00:41:10,890 --> 00:41:11,900 Então, nós estamos quase lá. 945 00:41:11,900 --> 00:41:14,790 Na verdade, Lauren, se você não mente, deixe-me fazer uma emenda aqui, 946 00:41:14,790 --> 00:41:17,850 apenas para ser mais consistente, mesmo com o que vimos em risco, o que 947 00:41:17,850 --> 00:41:21,080 eu quero fazer com linhas 21 e 24, apenas com base novamente 948 00:41:21,080 --> 00:41:23,290 sobre como nós fizemos isso em risco, talvez? 949 00:41:23,290 --> 00:41:24,230 >> AUDIÊNCIA: Mova-se. 950 00:41:24,230 --> 00:41:25,605 >> DAVID J. MALAN: Sim, movê-lo para cima. 951 00:41:25,605 --> 00:41:30,260 Assim, a condição mais, a terceira, ou quarto, quinto ou, ou ramo final, 952 00:41:30,260 --> 00:41:34,100 deve realmente vir depois, e isso é só por convenção, 953 00:41:34,100 --> 00:41:36,047 só porque se você quiser. 954 00:41:36,047 --> 00:41:37,380 Então, eu preciso fazer este ajuste. 955 00:41:37,380 --> 00:41:39,660 E eu preciso para colocar o meu chaveta de volta aqui. 956 00:41:39,660 --> 00:41:42,700 E agora, este programa irá compilar. 957 00:41:42,700 --> 00:41:46,140 Estamos tão perto, mas não há um erro muito, muito sutil. 958 00:41:46,140 --> 00:41:47,200 Vamos ver o que acontece. 959 00:41:47,200 --> 00:41:49,660 >> Primeiro, deixe-me ir em frente e diminuir o zoom. 960 00:41:49,660 --> 00:41:53,405 Eu estou indo para ir em frente e digite make condição zero. 961 00:41:53,405 --> 00:41:55,070 Oh, eu menti. 962 00:41:55,070 --> 00:41:58,760 Agora, o compilador é realmente muito inteligente. 963 00:41:58,760 --> 00:42:00,950 E eu realmente não entendo é mensagem de erro. 964 00:42:00,950 --> 00:42:04,310 Usando o resultado de uma atribuição como condição sem parênteses, 965 00:42:04,310 --> 00:42:05,740 aparentemente é má. 966 00:42:05,740 --> 00:42:07,100 Mas o quê isso significa? 967 00:42:07,100 --> 00:42:10,860 >> Bem novamente, procurando por padrões no código que vimos antes, 968 00:42:10,860 --> 00:42:16,640 o que é linha 17, na verdade, fazendo, embora Lauren destina ligeiramente 969 00:42:16,640 --> 00:42:18,790 de outra forma? 970 00:42:18,790 --> 00:42:19,290 Sim. 971 00:42:19,290 --> 00:42:21,565 >> AUDIÊNCIA: [inaudível] 972 00:42:21,565 --> 00:42:22,440 DAVID J. MALAN: Yeah. 973 00:42:22,440 --> 00:42:26,610 Então lembre-se o sinal de igual, aparentemente como nós usei isso antes, não é igual. 974 00:42:26,610 --> 00:42:29,240 A sua atribuição, da direita para a esquerda. 975 00:42:29,240 --> 00:42:33,810 Assim a linha 17 no momento é uma condição, e é 976 00:42:33,810 --> 00:42:37,890 execução de código dentro dos parênteses, mas quando esse código é executado, 977 00:42:37,890 --> 00:42:42,140 o que está acontecendo com o valor de zero? 978 00:42:42,140 --> 00:42:45,250 O que está a acontecer para o valor de n? 979 00:42:45,250 --> 00:42:46,810 Tornando-se zero. 980 00:42:46,810 --> 00:42:50,520 Portanto, se se tornar n é zero, e de novo, como por na semana passada, 981 00:42:50,520 --> 00:42:54,690 nós geralmente dizem que o zero é falsa e uma é verdadeira, 982 00:42:54,690 --> 00:42:57,410 ou sim é um e não é zero. 983 00:42:57,410 --> 00:42:59,590 Assim, o verdadeiro eo falso, e um 0. 984 00:42:59,590 --> 00:43:06,090 Se n a partir de linha 17 tem sido dado o valor 0, é zero verdadeiro? 985 00:43:06,090 --> 00:43:06,590 Não. 986 00:43:06,590 --> 00:43:08,280 Por definição, zero é falso. 987 00:43:08,280 --> 00:43:10,860 Essa é a convenção que estamos vai agarrar-se a seguir em frente. 988 00:43:10,860 --> 00:43:17,320 O mesmo acontecerá com as linhas 18, 19 e 20 sempre aplique agora, logicamente? 989 00:43:17,320 --> 00:43:18,320 Eles não podem. 990 00:43:18,320 --> 00:43:21,640 Por isso, a pergunta mas não com bastante precisão, 991 00:43:21,640 --> 00:43:25,620 e você não sabe isso, a menos você já viu isso, a solução em C 992 00:43:25,620 --> 00:43:29,610 é quando você quer expressar igualdade, você diz iguais iguais. 993 00:43:29,610 --> 00:43:33,140 Então, o sinal de igual já foi usado para cima por cessão, da direita para a esquerda. 994 00:43:33,140 --> 00:43:35,110 É igual a é igual a meio iguais. 995 00:43:35,110 --> 00:43:37,950 E se você realmente quer que sua mente para ser dobrado, em JavaScript e PHP, 996 00:43:37,950 --> 00:43:40,490 há igual iguais, o que é igual significar algo completamente diferente, 997 00:43:40,490 --> 00:43:41,990 mas nós vamos chegar a isso em pouco tempo. 998 00:43:41,990 --> 00:43:45,760 >> Portanto, esta é uma solução simples, mas perceber super fácil de fazer esse erro, 999 00:43:45,760 --> 00:43:48,700 e depois perguntam e luta para minutos, se não uma hora, 1000 00:43:48,700 --> 00:43:51,490 porque é o meu código não execução como eu pretendo? 1001 00:43:51,490 --> 00:43:54,140 É porque você não disse ele exatamente o que você quis dizer. 1002 00:43:54,140 --> 00:43:56,450 Assim que foi quase perfeito, e foi ótimo 1003 00:43:56,450 --> 00:44:00,760 que nós tropeçamos por estes dois pouco coisas, porque agora se corrigi-los, 1004 00:44:00,760 --> 00:44:06,240 e eu faço condição de zero dot cortar condição zero, 1005 00:44:06,240 --> 00:44:07,490 Eu gostaria um número inteiro, por favor. 1006 00:44:07,490 --> 00:44:08,090 Vamos ver. 1007 00:44:08,090 --> 00:44:09,160 Não. 1008 00:44:09,160 --> 00:44:10,740 Vai me obrigar a fazê-lo. 1009 00:44:10,740 --> 00:44:11,990 Então, 42. 1010 00:44:11,990 --> 00:44:13,590 Eu escolhi um número positivo. 1011 00:44:13,590 --> 00:44:16,470 Então, agora como faço para provar este programa correto? 1012 00:44:16,470 --> 00:44:19,990 Se você é um matemático, você não pode realmente provar isso por tentativa e erro, 1013 00:44:19,990 --> 00:44:20,490 certo? 1014 00:44:20,490 --> 00:44:23,180 Você pode prova não apenas por exemplo, mas pelo menos 1015 00:44:23,180 --> 00:44:25,494 como um programador que não estamos vai tentar provar por enquanto 1016 00:44:25,494 --> 00:44:27,660 que esta é realmente correto, mas eu provavelmente deveria 1017 00:44:27,660 --> 00:44:29,470 testar alguns casos representativos. 1018 00:44:29,470 --> 00:44:31,070 >> Eu testei 42. 1019 00:44:31,070 --> 00:44:33,030 Eu podia testar 43. 1020 00:44:33,030 --> 00:44:34,910 Eu podia testar 44. 1021 00:44:34,910 --> 00:44:35,640 Teste 45. 1022 00:44:35,640 --> 00:44:36,140 Certo? 1023 00:44:36,140 --> 00:44:37,860 Mas eu poderia fazer isso um tempo muito longo. 1024 00:44:37,860 --> 00:44:39,925 O que seria um pouco mais casos interessantes de tentar? 1025 00:44:39,925 --> 00:44:41,050 AUDIÊNCIA: [inaudível] zero. 1026 00:44:41,050 --> 00:44:41,740 DAVID J. MALAN: Então zero. 1027 00:44:41,740 --> 00:44:42,297 Certamente. 1028 00:44:42,297 --> 00:44:44,880 E bom, temos que ter isso, desta vez, graças ao novo código de Lauren. 1029 00:44:44,880 --> 00:44:46,213 O que é mais um bom caso para tentar? 1030 00:44:46,213 --> 00:44:47,320 AUDIÊNCIA: uma negativa. 1031 00:44:47,320 --> 00:44:50,070 >> DAVID J. MALAN: uma negativa, e talvez algo um pouco maior, 1032 00:44:50,070 --> 00:44:52,617 então talvez negativo 42, mas, em geral, quando 1033 00:44:52,617 --> 00:44:54,450 testar seus programas avançar, você está 1034 00:44:54,450 --> 00:44:56,325 vai querer pensar para si mesmo, como o que 1035 00:44:56,325 --> 00:44:58,050 são os casos fundamentais diferentes. 1036 00:44:58,050 --> 00:45:01,720 E ouso dizer que um caso negativo, um caso positivo, e um caso de zero 1037 00:45:01,720 --> 00:45:03,365 praticamente rodadas estes para fora. 1038 00:45:03,365 --> 00:45:04,990 Vamos olhar para uma variante deste embora. 1039 00:45:04,990 --> 00:45:06,930 Condições um. 1040 00:45:06,930 --> 00:45:11,224 Esta é uma solução correcta aqui, de modo que você vai ver dois e on-line, 1041 00:45:11,224 --> 00:45:13,390 se você caminhar através da orientações, a vontade geral 1042 00:45:13,390 --> 00:45:18,090 incrementar estes passo a passo até que obter exatamente a abordagem certa. 1043 00:45:18,090 --> 00:45:20,070 E se a gente queria perguntar duas perguntas ao mesmo tempo? 1044 00:45:20,070 --> 00:45:22,200 >> Deixe-me abrir esta vez. 1045 00:45:22,200 --> 00:45:26,740 Non-switch, por razões vamos ver outra vez. 1046 00:45:26,740 --> 00:45:29,610 O que há de novo sintaticamente aqui? 1047 00:45:29,610 --> 00:45:32,760 Atualmente estou jogando um jogo onde o computador está dizendo 1048 00:45:32,760 --> 00:45:35,550 me, dá-me um número inteiro entre um e 10, 1049 00:45:35,550 --> 00:45:37,180 e então eu estou julgando a entrada do usuário. 1050 00:45:37,180 --> 00:45:39,180 Em Inglês, com base em o código que você vê aqui 1051 00:45:39,180 --> 00:45:41,530 em azul, o que é este programa está fazendo? 1052 00:45:41,530 --> 00:45:44,256 1053 00:45:44,256 --> 00:45:46,380 AUDIÊNCIA: [inaudível] colhidos um número grande ou pequeno. 1054 00:45:46,380 --> 00:45:46,484 DAVID J. MALAN: Yeah. 1055 00:45:46,484 --> 00:45:49,450 É só se pronunciarão Eu escolhi um grande, ou médio, 1056 00:45:49,450 --> 00:45:53,900 ou um número pequeno com base em uma muito definição arbitrária de pequeno, médio, 1057 00:45:53,900 --> 00:45:58,510 e grande aqui, mas aviso prévio a sintaxe que é novo é este. 1058 00:45:58,510 --> 00:46:02,340 Não há menos de int ou igual a sinal, ou maior do que ou igual a assinar, 1059 00:46:02,340 --> 00:46:05,430 onde é uma sobre a outra, que você pode expressar em como o Microsoft Word. 1060 00:46:05,430 --> 00:46:08,180 Assim, em uma linguagem de programação você normalmente apenas fazer dois personagens, 1061 00:46:08,180 --> 00:46:09,450 um após o outro. 1062 00:46:09,450 --> 00:46:12,695 E o que isso provavelmente representam, comercial e comercial. 1063 00:46:12,695 --> 00:46:13,570 AUDIÊNCIA: [inaudível] 1064 00:46:13,570 --> 00:46:13,680 DAVID J. MALAN: Yeah. 1065 00:46:13,680 --> 00:46:16,910 Significa apenas que e porque Acontece que os autores do C 1066 00:46:16,910 --> 00:46:19,120 utilizado um único e comercial, que você pode pensar 1067 00:46:19,120 --> 00:46:22,430 seria perfeito para a noção e de, já é usado para cima, 1068 00:46:22,430 --> 00:46:27,300 E comercial e comercial, na verdade, tão capta o caso que realmente quer. 1069 00:46:27,300 --> 00:46:30,610 >> Então, vamos agora tropeçar em duas coisas. 1070 00:46:30,610 --> 00:46:32,640 Deixe-me ir em frente e abrir uma. 1071 00:46:32,640 --> 00:46:36,590 Algo que é um pouco preocupante. 1072 00:46:36,590 --> 00:46:37,970 Imprecisão ponto c. 1073 00:46:37,970 --> 00:46:40,260 Deixe-me apresentar duas coisas aqui. 1074 00:46:40,260 --> 00:46:44,720 Um, aviso que podemos fazer matemática, como apenas como antes, quando 1075 00:46:44,720 --> 00:46:47,797 fizemos sinal de adição de dois números, X e Y. 1076 00:46:47,797 --> 00:46:49,380 O que é este programa, aparentemente fazendo? 1077 00:46:49,380 --> 00:46:52,140 Eu não tenho comentou ainda, e eu tenho apresentado por cento f, 1078 00:46:52,140 --> 00:46:55,720 mas eu rapidamente disse anteriormente por cento f significa ponto flutuante 1079 00:46:55,720 --> 00:46:56,970 valor, que é o número real. 1080 00:46:56,970 --> 00:46:59,520 Algo com um decimal pontos, que não é um número inteiro. 1081 00:46:59,520 --> 00:47:02,270 O que você acha que este programa é tentando me mostrar na tela? 1082 00:47:02,270 --> 00:47:05,060 1083 00:47:05,060 --> 00:47:06,050 Sim? 1084 00:47:06,050 --> 00:47:07,550 AUDIÊNCIA: O resultado de um sobre 10. 1085 00:47:07,550 --> 00:47:07,780 DAVID J. MALAN: Yeah. 1086 00:47:07,780 --> 00:47:09,680 Qual é o resultado de um dividido por 10. 1087 00:47:09,680 --> 00:47:12,721 Certo, porque todos vocês têm, provavelmente, crescido sabendo que um mais de 10 1088 00:47:12,721 --> 00:47:14,502 é o que? 1089 00:47:14,502 --> 00:47:16,220 Sim, é apenas 1/10 ou 0,1. 1090 00:47:16,220 --> 00:47:16,720 Certo? 1091 00:47:16,720 --> 00:47:19,010 Então, vamos ver o que isto realmente é. 1092 00:47:19,010 --> 00:47:21,010 Então deixe-me ir em frente e salvar este. 1093 00:47:21,010 --> 00:47:21,970 Deixe-me ir para baixo aqui. 1094 00:47:21,970 --> 00:47:26,360 Faça barra imprecisão dot imprecisão, e aviso prévio, também, 1095 00:47:26,360 --> 00:47:29,380 em um ambiente Linux, você não tem que digitar a imprecisão e levá 1096 00:47:29,380 --> 00:47:30,010 o dia inteiro. 1097 00:47:30,010 --> 00:47:32,910 Geralmente, se você pressionar Tab, ele vai terminar o seu pensamento para você, 1098 00:47:32,910 --> 00:47:36,660 com base nas palavras que sejam disponível no diretório atual. 1099 00:47:36,660 --> 00:47:37,160 ESTÁ BEM. 1100 00:47:37,160 --> 00:47:37,970 Então, você estava certo. 1101 00:47:37,970 --> 00:47:41,239 Uma dividido por 10 é, de facto, 0,1. 1102 00:47:41,239 --> 00:47:42,280 Mas eu sou um pouco curioso. 1103 00:47:42,280 --> 00:47:44,196 E acontece que printf suporta alguns recursos 1104 00:47:44,196 --> 00:47:48,700 através do qual você pode especificar mais de o número padrão de pontos decimais. 1105 00:47:48,700 --> 00:47:52,140 Então, se eu quero ver 10 decimal Os pontos que eu posso fazer por cento, 1106 00:47:52,140 --> 00:47:55,510 para o símbolo de espaço reservado, dot 10 para, dá-me 10 pontos decimais, 1107 00:47:55,510 --> 00:47:58,140 e, em seguida, ainda de ponto flutuante valor, e, como um aparte, 1108 00:47:58,140 --> 00:48:01,550 o que é essa barra invertida n aparentemente continuamos usando? 1109 00:48:01,550 --> 00:48:03,450 Acontece que é uma símbolo para uma nova linha. 1110 00:48:03,450 --> 00:48:05,970 É a maneira muito explícita de dizer ao computador, 1111 00:48:05,970 --> 00:48:08,759 mover o cursor para a próxima linha depois que você fez. 1112 00:48:08,759 --> 00:48:10,800 E vamos ver o que acontece quando nós não fazemos isso. 1113 00:48:10,800 --> 00:48:12,430 >> Deixe-me fazer recompilar imprecisão. 1114 00:48:12,430 --> 00:48:15,320 1115 00:48:15,320 --> 00:48:18,356 Agora dot cortar imprecisão. 1116 00:48:18,356 --> 00:48:18,930 ESTÁ BEM. 1117 00:48:18,930 --> 00:48:19,780 Ainda direita. 1118 00:48:19,780 --> 00:48:21,512 Uma dividido por 10. 1119 00:48:21,512 --> 00:48:23,220 Agora eu estou ficando um pouco curioso, no entanto. 1120 00:48:23,220 --> 00:48:27,599 E se eu olhar 20 decimal salienta, recompilar, reprise, 1121 00:48:27,599 --> 00:48:29,390 e como um aparte para velocidade, você também pode usar 1122 00:48:29,390 --> 00:48:31,800 seu cima e para baixo setas para rolar através de sua história, 1123 00:48:31,800 --> 00:48:35,476 assim você não tem que manter redigitar esses comandos, digite. 1124 00:48:35,476 --> 00:48:36,910 Huh. 1125 00:48:36,910 --> 00:48:39,220 Eu não aprendi que na escola. 1126 00:48:39,220 --> 00:48:43,260 Tudo bem, então deixem-me ver como 29 lugares fora. 1127 00:48:43,260 --> 00:48:44,300 Talvez seja apenas um acaso. 1128 00:48:44,300 --> 00:48:46,907 Talvez o meu computador está agindo de forma estranha. 1129 00:48:46,907 --> 00:48:47,990 Isso não é uma coisa, certo? 1130 00:48:47,990 --> 00:48:50,300 Ele está fazendo algo de forma determinística. 1131 00:48:50,300 --> 00:48:53,410 Então faça imprecisão. 1132 00:48:53,410 --> 00:48:54,890 OK, isso é confuso. 1133 00:48:54,890 --> 00:48:57,620 Então, o que está acontecendo? 1134 00:48:57,620 --> 00:49:00,160 >> Então, aparentemente, o seu professor foi deitado 1135 00:49:00,160 --> 00:49:03,900 para você todo esse tempo para razões que veremos em breve. 1136 00:49:03,900 --> 00:49:05,569 Mas vamos terminar com um outro programa. 1137 00:49:05,569 --> 00:49:07,860 Esta é uma pequena programas alguém escreveu há alguns anos, 1138 00:49:07,860 --> 00:49:08,990 e é realmente parte de um concurso. 1139 00:49:08,990 --> 00:49:11,198 Ninguém realmente escreve código como este, e se o fizer, 1140 00:49:11,198 --> 00:49:12,880 este é um problema estilìstica. 1141 00:49:12,880 --> 00:49:14,660 Mas as pessoas fazem isso para exigir direitos. 1142 00:49:14,660 --> 00:49:17,260 Para escrever o mais confuso programa que procura 1143 00:49:17,260 --> 00:49:19,110 no entanto, faz algo interessante. 1144 00:49:19,110 --> 00:49:23,930 E a nota eu pensei que ia sair em hoje, antes de Colton joga nós aqui fora, 1145 00:49:23,930 --> 00:49:27,840 é para executar este programa, que, mesmo em apenas usando 1146 00:49:27,840 --> 00:49:31,450 C neste texto-base meio ambiente, nós, isto dá. 1147 00:49:31,450 --> 00:49:32,264 Droga. 1148 00:49:32,264 --> 00:49:34,930 >> [Risos] 1149 00:49:34,930 --> 00:49:36,800 >> Estar por. 1150 00:49:36,800 --> 00:49:39,340 [Inaudível] c traço l m. 1151 00:49:39,340 --> 00:49:42,885 Você vai ver a mágica encantamento que veremos em breve. 1152 00:49:42,885 --> 00:49:45,780 [Inaudível] Tudo bem. 1153 00:49:45,780 --> 00:49:51,592 E agora você pode até mesmo fazer coisas como esta. 1154 00:49:51,592 --> 00:49:52,340 É isso aí. 1155 00:49:52,340 --> 00:49:56,410 Para CS50 nós, vai vê-lo na sexta-feira. 1156 00:49:56,410 --> 00:49:58,910 >> [Música tocando] 1157 00:49:58,910 --> 00:52:38,390 1158 00:52:38,390 --> 00:52:41,440 >> [Aplausos] 1159 00:52:41,440 --> 00:52:42,812