1 00:00:00,000 --> 00:00:11,952 2 00:00:11,952 --> 00:00:13,800 >> DAVID J. MALAN: Então este é CS50. 3 00:00:13,800 --> 00:00:18,970 E isso foi o próprio Colton Ogden do CS50, por mais de quem é a música que você pode 4 00:00:18,970 --> 00:00:22,820 download em soundcloud.com/cs50. 5 00:00:22,820 --> 00:00:26,690 >> Então, hoje vamos nos concentrar ainda mais sobre a arte da programação. 6 00:00:26,690 --> 00:00:28,980 E tomamos onde paramos na semana passada, com foco 7 00:00:28,980 --> 00:00:31,660 em zero, o que foi isso linguagem de programação gráfica. 8 00:00:31,660 --> 00:00:35,490 E levar as coisas a um nível inferior, usando uma programação mais tradicional 9 00:00:35,490 --> 00:00:38,420 linguagem conhecida como C. Mas ao longo do caminho, percebendo 10 00:00:38,420 --> 00:00:40,730 que as mesmas idéias que falou na sexta-feira 11 00:00:40,730 --> 00:00:44,390 deverá repetir-se não só no presente linguagem C, mas na maior parte todos os outros 12 00:00:44,390 --> 00:00:46,350 que olhamos para este semestre. 13 00:00:46,350 --> 00:00:50,247 >> Então chamamos essa coisa aqui o que da última vez? 14 00:00:50,247 --> 00:00:51,830 Este é representante de um comunicado. 15 00:00:51,830 --> 00:00:53,080 Por isso, chamou este comunicado. 16 00:00:53,080 --> 00:00:54,100 E ele faz alguma coisa. 17 00:00:54,100 --> 00:00:56,910 É uma instrução que um computador ou arranhão pode executar. 18 00:00:56,910 --> 00:00:59,910 E a partir de agora, vamos também começar chamando algo assim uma função, 19 00:00:59,910 --> 00:01:02,070 por razões veremos em breve. 20 00:01:02,070 --> 00:01:03,681 >> Enquanto isso, vimos coisas como esta. 21 00:01:03,681 --> 00:01:05,680 E estes são geralmente conhecido como o que construir? 22 00:01:05,680 --> 00:01:06,240 >> AUDIÊNCIA: Loop. 23 00:01:06,240 --> 00:01:06,860 >> DAVID J. MALAN: Então um loop. 24 00:01:06,860 --> 00:01:07,943 Assim, bastante simples. 25 00:01:07,943 --> 00:01:09,470 É, literalmente, faz o que diz. 26 00:01:09,470 --> 00:01:12,210 E em risco, se você quiser empinar mais peças do quebra-lá, 27 00:01:12,210 --> 00:01:13,950 a peça vai crescer para se encaixar. 28 00:01:13,950 --> 00:01:16,790 E vamos ver no que C nós podemos fazer a mesma coisa. 29 00:01:16,790 --> 00:01:20,000 >> Outro tipo de circuito, embora, em risco pode ser para sempre, 30 00:01:20,000 --> 00:01:21,820 ou há qualquer número de outras abordagens. 31 00:01:21,820 --> 00:01:24,150 Mas vamos dar uma mais olhar generalista, com um rosto 32 00:01:24,150 --> 00:01:27,402 que é provável bastante familiar, em laços mais geral. 33 00:01:27,402 --> 00:01:29,110 Mark Zuckerberg: Uma coisa que computadores 34 00:01:29,110 --> 00:01:31,860 é realmente bom é comandos de repetição. 35 00:01:31,860 --> 00:01:33,910 Como uma pessoa, você pegaria realmente entediado, se você 36 00:01:33,910 --> 00:01:36,730 tinha que fazer a mesma coisa muitas vezes em uma fileira. 37 00:01:36,730 --> 00:01:40,530 Mas um computador pode fazer a mesma coisa milhões ou até bilhões de vezes, 38 00:01:40,530 --> 00:01:43,290 e não se cansar, e ser capaz para realizar essa vontade muito bem. 39 00:01:43,290 --> 00:01:45,650 >> Assim, por exemplo, se eu queria desejar a todos 40 00:01:45,650 --> 00:01:48,840 no Facebook um feliz aniversário enviando um e-mail, 41 00:01:48,840 --> 00:01:51,550 ele pode me levar mais de um século para escrever, na verdade, fora 42 00:01:51,550 --> 00:01:53,000 todos esses e-mails para todos. 43 00:01:53,000 --> 00:01:57,780 Mas, com apenas algumas linhas de código, eu posso ter um sistema de enviar um e-mail para todos 44 00:01:57,780 --> 00:01:59,930 no Facebook desejando lhes um feliz aniversário. 45 00:01:59,930 --> 00:02:02,730 Então é isso que laços são e por que eles são valiosos e algo 46 00:02:02,730 --> 00:02:04,740 que os computadores podem fazer muito bem. 47 00:02:04,740 --> 00:02:05,630 >> DAVID J. MALAN: Então, se você foi o destinatário 48 00:02:05,630 --> 00:02:07,820 de alguns dos CS50 e do Espaço de Dropbox de tarde, 49 00:02:07,820 --> 00:02:10,590 que na verdade é precisamente o que nós fazer, usando o código bem assim. 50 00:02:10,590 --> 00:02:12,600 Nós essencialmente ter um grande planilha em que 51 00:02:12,600 --> 00:02:15,016 pessoas foram entrando seu nomes e endereços de e-mail. 52 00:02:15,016 --> 00:02:18,160 E nós escrevemos um pouco de código que podem interagir sobre esses endereços 53 00:02:18,160 --> 00:02:21,860 e cuspir endereços exclusivos em Caso alguém submetido várias vezes. 54 00:02:21,860 --> 00:02:25,120 E depois disso, enviamos uma automatizada e-mail do bot do CS50, 55 00:02:25,120 --> 00:02:27,190 incluindo o código do cupom. 56 00:02:27,190 --> 00:02:29,290 >> Agora nós também analisaram Nesta construção da última vez. 57 00:02:29,290 --> 00:02:33,100 E este é um especial exemplo do que? 58 00:02:33,100 --> 00:02:35,050 Então, sim, uma expressão booleana. 59 00:02:35,050 --> 00:02:37,050 E a forma se entende para capturar isso também. 60 00:02:37,050 --> 00:02:39,966 Todas essas questões do formar verdadeiras ou falsas em risco 61 00:02:39,966 --> 00:02:41,590 vai parecer um pouco algo como isto. 62 00:02:41,590 --> 00:02:43,200 E chamamos isso de uma expressão booleana. 63 00:02:43,200 --> 00:02:46,170 Isso é de fato verdadeiro ou falso, sim ou não. 64 00:02:46,170 --> 00:02:49,150 É uma maneira de responder a uma pergunta. 65 00:02:49,150 --> 00:02:52,420 >> E Enquanto isso, você pode usar estes booleana expressões dentro de construções 66 00:02:52,420 --> 00:02:54,720 como estes, que de Claro que são condições 67 00:02:54,720 --> 00:02:57,259 ou ramos, proverbial garfos na estrada. 68 00:02:57,259 --> 00:02:59,550 E eles podem olhar não só como este, mas eles também podem 69 00:02:59,550 --> 00:03:02,080 ter elses que lhes estão associados. 70 00:03:02,080 --> 00:03:05,820 E você pode realmente ter uma de três vias bifurcação na estrada ou um quatro garfos 71 00:03:05,820 --> 00:03:08,340 na estrada, simplesmente por nidificação destas coisas, 72 00:03:08,340 --> 00:03:10,510 como você verá em risco se você não tiver já. 73 00:03:10,510 --> 00:03:13,550 E, como você pode fazer em C também. 74 00:03:13,550 --> 00:03:16,810 >> Vamos dar mais generalista olhar para um alumnist, assim, que 75 00:03:16,810 --> 00:03:21,490 pode apresentar uma abordagem diferente para essas coisas chamadas condições. 76 00:03:21,490 --> 00:03:24,060 >> BILL GATES: As pessoas fazem decisões todos os dias. 77 00:03:24,060 --> 00:03:27,530 Por exemplo, antes de ir para fora de você meio que temos uma instrução if que diz: 78 00:03:27,530 --> 00:03:31,480 Se está chovendo, então eu Preciso ter minha jaqueta. 79 00:03:31,480 --> 00:03:36,820 E os computadores são surpreendentes, uma vez que decidir esses tipos de declarações, 80 00:03:36,820 --> 00:03:42,280 que se pode executar de forma fiável essas coisas a uma velocidade inacreditável. 81 00:03:42,280 --> 00:03:48,240 E assim, um programa de computador realmente é um pouco de matemática e alguns 82 00:03:48,240 --> 00:03:53,050 if onde a decisão seja feito. 83 00:03:53,050 --> 00:03:55,020 >> DAVID J. MALAN: Assim como você deve saber, que era 84 00:03:55,020 --> 00:03:57,880 pessoas como Bill Gates, Paul Allen, e outros 85 00:03:57,880 --> 00:04:00,240 que realmente deu início à chamado computador pessoal 86 00:04:00,240 --> 00:04:01,990 revolução, há alguns anos. 87 00:04:01,990 --> 00:04:04,140 Eu pensei, antes de mergulhar em alguns administrivia, 88 00:04:04,140 --> 00:04:09,920 nós relacionar um conto do Albuquerque, New Mexico Museum of Natural History 89 00:04:09,920 --> 00:04:13,650 e ciência, onde alguns dos Bill Gates e primeiras histórias de Paul Allen 90 00:04:13,650 --> 00:04:17,470 são contadas como temos agora PCs de hoje e Macs e muito mais. 91 00:04:17,470 --> 00:04:22,390 Para isso, porém, precisamos de dois voluntários que têm muito boas vozes de narração 92 00:04:22,390 --> 00:04:23,735 para ler um roteiro em voz alta. 93 00:04:23,735 --> 00:04:25,530 >> Tudo bem, que tal em voltar para lá. 94 00:04:25,530 --> 00:04:26,120 Vamos lá para cima. 95 00:04:26,120 --> 00:04:27,770 E que tal na frente aqui. 96 00:04:27,770 --> 00:04:28,340 Vamos lá para baixo. 97 00:04:28,340 --> 00:04:29,600 Tomem seus lugares aqui. 98 00:04:29,600 --> 00:04:32,444 Como vocês vêm para cima, um casal de avisos administrativos. 99 00:04:32,444 --> 00:04:34,360 seccionamento, o processo de escolha de uma secção, 100 00:04:34,360 --> 00:04:36,068 vai iniciar este De quarta a sexta-feira. 101 00:04:36,068 --> 00:04:38,400 Mais sobre isso no próximo Quarta-feira em palestra. 102 00:04:38,400 --> 00:04:41,770 >> Super seções, entretanto, são algo que nós oferecemos na próxima semana 103 00:04:41,770 --> 00:04:45,310 em que toda a classe é convidado para participar de escala bastante grande 104 00:04:45,310 --> 00:04:47,690 seções, uma mais confortável, um menos confortável. 105 00:04:47,690 --> 00:04:51,340 E vamos anunciar as indicações de que, assim, no final desta semana. 106 00:04:51,340 --> 00:04:53,310 >> Seções Enquanto isso, si, vai começar 107 00:04:53,310 --> 00:04:57,241 na terceira semana do curso, o grau zero, o que significa que esses são um par de semanas 108 00:04:57,241 --> 00:04:57,740 fora. 109 00:04:57,740 --> 00:04:58,450 Então não se preocupe. 110 00:04:58,450 --> 00:05:01,014 Você ainda não perdeu qualquer coisa nesse sentido. 111 00:05:01,014 --> 00:05:03,930 Enquanto isso, entretanto, se você tiver dúvidas administrativamente, 112 00:05:03,930 --> 00:05:08,120 enviar e-mail mim e Devon e Gabe e Rob neste endereço aqui. 113 00:05:08,120 --> 00:05:10,320 >> Finalmente, conjuntos de problemas 0 é, é claro, para fora. 114 00:05:10,320 --> 00:05:12,320 Você deve ter notado que no site do curso. 115 00:05:12,320 --> 00:05:14,840 Deve fornecer-lhe todas as respostas para as perguntas 116 00:05:14,840 --> 00:05:18,250 você pode ter ao longo do caminho para começando com o conjunto de problemas. 117 00:05:18,250 --> 00:05:21,430 Mas se você se encontrar precisando de uma mão amiga, 118 00:05:21,430 --> 00:05:25,020 por todos os meios assistir o horário de expediente, Segunda, terça, quarta, quinta 119 00:05:25,020 --> 00:05:27,290 desta semana, à noite em quatro salas de jantar. 120 00:05:27,290 --> 00:05:31,650 Veja que URL lá pelas indicações de onde o horário de expediente será. 121 00:05:31,650 --> 00:05:34,000 >> Agora vamos conhecer o nosso dois convidados aqui hoje. 122 00:05:34,000 --> 00:05:34,740 Qual o seu nome? 123 00:05:34,740 --> 00:05:35,290 >> JAY PAUL: Jay Paul. 124 00:05:35,290 --> 00:05:36,880 >> DAVID J. MALAN: Jay Paul, prazer em conhecê-lo. 125 00:05:36,880 --> 00:05:37,330 >> HIKARI: Hikari. 126 00:05:37,330 --> 00:05:37,975 >> DAVID J. MALAN: Hikari? 127 00:05:37,975 --> 00:05:38,250 >> HIKARI: Hikari. 128 00:05:38,250 --> 00:05:38,810 >> DAVID J. MALAN: Hikari. 129 00:05:38,810 --> 00:05:39,790 Prazer em conhecê-lo bem. 130 00:05:39,790 --> 00:05:42,123 Jay Paul e Hikari têm em frente nestes música 131 00:05:42,123 --> 00:05:45,100 se dois roteiros que eu impressos esta manhã a partir do Novo México 132 00:05:45,100 --> 00:05:46,692 Museu de História Natural e da Ciência. 133 00:05:46,692 --> 00:05:48,400 E o que eu pensava Eu faria na sobrecarga 134 00:05:48,400 --> 00:05:52,830 é acompanhar a sua recitação do roteiro e esta história 135 00:05:52,830 --> 00:05:54,700 com algumas imagens visuais, sem surpresas. 136 00:05:54,700 --> 00:05:57,512 >> E o que eu tenho feito com antecedência é prehighlight em seu roteiro 137 00:05:57,512 --> 00:05:59,470 o que você deve ler, eo que você deve ler. 138 00:05:59,470 --> 00:06:00,920 E nós vamos essencialmente parágrafos apenas alternativos. 139 00:06:00,920 --> 00:06:03,211 Por isso, é muito parecido com que você pode ter feito na aula de Inglês. 140 00:06:03,211 --> 00:06:06,875 Isso é realmente obrigar o público a acreditar em seu conto aqui. 141 00:06:06,875 --> 00:06:07,600 Devemos nós? 142 00:06:07,600 --> 00:06:13,272 Assim, a história aqui é que temos uma BASIC, e começa em Cambridge. 143 00:06:13,272 --> 00:06:18,750 >> JAY PAUL: Era inverno de 1974, em Cambridge, Massachusetts 144 00:06:18,750 --> 00:06:20,240 onde os invernos podem ser frios. 145 00:06:20,240 --> 00:06:22,800 Um barbudo, de cabelos compridos abandono da faculdade chamado 146 00:06:22,800 --> 00:06:27,280 Paul Allen foi drudging através de Harvard Square, absorto em seus pensamentos. 147 00:06:27,280 --> 00:06:31,050 Sua principal preocupação naqueles dias era como conseguir seu amigo, Bill Gates, 148 00:06:31,050 --> 00:06:34,974 a abandonar a escola e ir no negócio com ele. 149 00:06:34,974 --> 00:06:37,890 HIKARI: Os dois já tinham ido através de uma série de empreendimentos comerciais 150 00:06:37,890 --> 00:06:40,850 juntos, com início às Lakeside escola em Seattle, onde 151 00:06:40,850 --> 00:06:45,220 foram pagos em tempo de computador livres para testar um computador PDP-10 a uma hora local 152 00:06:45,220 --> 00:06:46,580 partilha empresa. 153 00:06:46,580 --> 00:06:50,930 O plano mais recente havia sido a parar escola e formar uma empresa de software. 154 00:06:50,930 --> 00:06:53,440 Allen tinha deixado Washington Universidade Estadual. 155 00:06:53,440 --> 00:06:58,380 Mas, no último minuto, Portões decidiu ficar com Harvard. 156 00:06:58,380 --> 00:07:02,080 >> JAY PAUL: Naquele dia, cruzando Harvard Square, Allen viu a janeiro de 157 00:07:02,080 --> 00:07:07,530 1975 da Popular Electronics com o título de parada terra, 158 00:07:07,530 --> 00:07:11,900 Kit Primeiro minicomputador do mundo para rivalizar Modelos Comerciais. 159 00:07:11,900 --> 00:07:14,430 Sob a manchete era uma imagem de uma pequena caixa 160 00:07:14,430 --> 00:07:16,160 enfeitadas com luzes e interruptores. 161 00:07:16,160 --> 00:07:19,770 Foi chamado o MITS Altair 8800. 162 00:07:19,770 --> 00:07:24,100 E Allen sabia que isso era o que ele estava procurando. 163 00:07:24,100 --> 00:07:26,350 >> HIKARI: Dias de discussão seguiu. 164 00:07:26,350 --> 00:07:30,170 Allen e Gates entendeu a importância do Altair. 165 00:07:30,170 --> 00:07:32,480 Tinham falado muitas vezes sobre microprocessadores 166 00:07:32,480 --> 00:07:35,250 e estavam esperando para ver o que seria feito com eles. 167 00:07:35,250 --> 00:07:39,770 Agora havia um kit de minicomputador em capa da eletrônica popular. 168 00:07:39,770 --> 00:07:42,830 Aparentemente, não tinha ainda software. 169 00:07:42,830 --> 00:07:46,830 Eles imaginaram uma nação de programadores descendo sobre MITS. 170 00:07:46,830 --> 00:07:49,590 E assim eles chamaram Ed Roberts, o chefe da empresa, 171 00:07:49,590 --> 00:07:53,330 alegando ter uma versão do Linguagem de programação BASIC quase pronto 172 00:07:53,330 --> 00:07:54,710 para o Altair. 173 00:07:54,710 --> 00:07:55,570 Eles não o fez. 174 00:07:55,570 --> 00:07:58,910 E Roberts deve ter sabido que não. 175 00:07:58,910 --> 00:08:03,170 Ele estava ficando 10 chamadas por dia a partir de pessoas que tinham um BASIC quase pronto. 176 00:08:03,170 --> 00:08:05,570 E sua resposta estoque era ", a primeira pessoa 177 00:08:05,570 --> 00:08:11,090 que aparece com um trabalho BASIC recebe o contrato. " 178 00:08:11,090 --> 00:08:13,910 >> JAY PAUL: Gates e Allen nunca tinha visto um Altair. 179 00:08:13,910 --> 00:08:17,600 Eles nunca tinham visto o Intel microprocessador 8080 180 00:08:17,600 --> 00:08:19,060 no coração do Altair. 181 00:08:19,060 --> 00:08:21,470 Mas um par de anos mais cedo Allen tinha escrito um programa 182 00:08:21,470 --> 00:08:25,220 em um computador mainframe que emulado a operação de um Intel anterior 183 00:08:25,220 --> 00:08:26,217 microprocessador. 184 00:08:26,217 --> 00:08:28,300 E desta vez eles faria a mesma coisa. 185 00:08:28,300 --> 00:08:31,530 186 00:08:31,530 --> 00:08:34,380 >> HIKARI: Com um processador Intel 8080 Manual ao seu lado, 187 00:08:34,380 --> 00:08:37,770 Allen sentou-se em um Harvard PDP-10 computador 188 00:08:37,770 --> 00:08:42,010 e escreveu o emulador e software ferramentas necessárias para fazer a programação. 189 00:08:42,010 --> 00:08:45,820 Enquanto isso, Gates, parou de ir às aulas e se dedicou 190 00:08:45,820 --> 00:08:48,120 para projetar o BASIC, usando cada truque 191 00:08:48,120 --> 00:08:53,130 ele sabia que para obter o tamanho abaixo de 4 kilobytes. 192 00:08:53,130 --> 00:08:55,870 >> JAY PAULO: Fora de Albuquerque, Ed Roberts recebeu um telefonema de Gates 193 00:08:55,870 --> 00:08:59,754 pedindo detalhes sobre como o Altair tratadas rotinas específicas. 194 00:08:59,754 --> 00:09:01,170 Ninguém nunca tinha perguntado isso antes. 195 00:09:01,170 --> 00:09:02,670 E Roberts começou a se interessar. 196 00:09:02,670 --> 00:09:05,240 197 00:09:05,240 --> 00:09:07,970 >> HIKARI: Com o desenvolvimento ferramentas eo projeto pronto, 198 00:09:07,970 --> 00:09:10,780 Gates e Allen escreveu o código no PDP-10, 199 00:09:10,780 --> 00:09:16,060 alistar outro estudante de Harvard, Monte Davidoff, para escrever rotinas de matemática. 200 00:09:16,060 --> 00:09:19,450 Depois de uma noite final programação, Allen entrou num avião 201 00:09:19,450 --> 00:09:22,970 para entregar sua BASIC para o MITS. 202 00:09:22,970 --> 00:09:25,800 Passou o avião enfrentar preocupante. 203 00:09:25,800 --> 00:09:28,490 E de volta em Cambridge Gates estava preocupando. 204 00:09:28,490 --> 00:09:32,100 Eles testaram seus BASIC e ele tinha trabalhado no emulador. 205 00:09:32,100 --> 00:09:35,444 Mas e se o emulador estava errado? 206 00:09:35,444 --> 00:09:37,360 JAY PAUL: Quando o avião aproximou Albuquerque, 207 00:09:37,360 --> 00:09:40,070 Allen percebeu que sua BASIC, agora perfeitamente contido 208 00:09:40,070 --> 00:09:42,460 em um pequeno rolo de fita de papel perfurado, que 209 00:09:42,460 --> 00:09:44,970 será inútil sem um separado programa, chamado de carregador, que 210 00:09:44,970 --> 00:09:47,550 diria o Altair como ler a ser uma fita de papel 211 00:09:47,550 --> 00:09:49,620 introduzidos na máquina de teletipo. 212 00:09:49,620 --> 00:09:52,970 Tirou o notebook e rapidamente rabiscou um programa gerenciador de 213 00:09:52,970 --> 00:09:56,819 em linguagem Assembly, então manualmente trasladado para nos 1s e 0s 214 00:09:56,819 --> 00:09:57,985 Altair entenderia. 215 00:09:57,985 --> 00:10:00,530 216 00:10:00,530 --> 00:10:03,830 >> HIKARI: Allen estava esperando um , pouco, empresa de alta tecnologia limpa 217 00:10:03,830 --> 00:10:05,470 executado por homens de terno. 218 00:10:05,470 --> 00:10:09,210 Assim, ele ficou surpreso quando encontrou Roberts ele no aeroporto parecendo um rancho 219 00:10:09,210 --> 00:10:10,270 mão. 220 00:10:10,270 --> 00:10:12,070 Roberts também foi surpreendido. 221 00:10:12,070 --> 00:10:16,340 Quando ele soltou a Harvard programador em um hotel caro, 222 00:10:16,340 --> 00:10:20,790 Allen teve de confessar que ele não podia pagar o quarto. 223 00:10:20,790 --> 00:10:24,510 >> JAY Paulo: MITS, em si, foi localizado em um shopping center empoeirado. 224 00:10:24,510 --> 00:10:27,040 Dentro de um desordenado bancada era um Altair 225 00:10:27,040 --> 00:10:30,390 carregado com 5 kilobytes de memória e ligado por um cabo 226 00:10:30,390 --> 00:10:32,030 a um teletipo. 227 00:10:32,030 --> 00:10:37,200 Roberts e Engenheiro-Chefe, Bill Yates, esperou ansiosamente 228 00:10:37,200 --> 00:10:40,660 como Allen alternado seu carregador programa para o Altair. 229 00:10:40,660 --> 00:10:44,980 O teletipo começou chugging que puxou a fita de papel através do leitor de cassetes. 230 00:10:44,980 --> 00:10:47,215 Levou 15 minutos talvez para carregar o programa. 231 00:10:47,215 --> 00:10:52,110 Em seguida, o teletipo impresso abruptamente um prompt de memória, em seguida, uma linha de pronto, 232 00:10:52,110 --> 00:10:55,340 e Allen começou a digitar Comandos de alguns testes. 233 00:10:55,340 --> 00:10:57,400 Para espanto de todos, o software trabalhado. 234 00:10:57,400 --> 00:10:58,525 Houve erros, é claro. 235 00:10:58,525 --> 00:11:02,070 Mas o principal era que funcionava. 236 00:11:02,070 --> 00:11:06,570 >> HIKARI: Mais tarde, em seu caminho para uma $ 3,00 almoço no Pancho, uma vespa voou 237 00:11:06,570 --> 00:11:10,470 na janela da picape caminhão e picado Allen no braço. 238 00:11:10,470 --> 00:11:13,070 Mas naquele momento nada poderia estragar o clima. 239 00:11:13,070 --> 00:11:17,210 O Altair agora teve sua BASIC, o primeiro software comercial para uma casa 240 00:11:17,210 --> 00:11:23,260 computador, feita por Paul Allen e Bill Gates, fazendo negócios como Microsoft. 241 00:11:23,260 --> 00:11:25,336 >> DAVID J. MALAN: Muitos graças aos nossos dois leitores. 242 00:11:25,336 --> 00:11:30,690 >> [Aplausos] 243 00:11:30,690 --> 00:11:32,520 >> DAVID J. MALAN: Agora você tem a sua escolha, 244 00:11:32,520 --> 00:11:35,880 antes de sair, de um brilhante ou um brilho no dark-- oh, 245 00:11:35,880 --> 00:11:40,810 espere um segundo, wait-- brilhante e um brilho no escuro elefante 246 00:11:40,810 --> 00:11:42,534 da própria Cheng Gong do CS50. 247 00:11:42,534 --> 00:11:43,450 HIKARI: Ah, obrigado. 248 00:11:43,450 --> 00:11:45,324 David J. MALAN: Todos certo, muito obrigado. 249 00:11:45,324 --> 00:11:49,855 [Aplausos] 250 00:11:49,855 --> 00:11:51,105 DAVID J. MALAN: Então verdadeira história. 251 00:11:51,105 --> 00:11:54,380 Isto é para dizer que todos estes máquinas e a facilidade com a qual 252 00:11:54,380 --> 00:11:56,270 usá-los agora e tomar por certo, muito 253 00:11:56,270 --> 00:12:00,070 começou aqui, a poucos passos deste teatro real. 254 00:12:00,070 --> 00:12:03,930 E hoje, se você não foi, este é Maxwell Dworkin, o computador 255 00:12:03,930 --> 00:12:05,810 ciências edifício, também ao virar da esquina. 256 00:12:05,810 --> 00:12:09,760 E no segundo andar deste prédio não pendurar três páginas 257 00:12:09,760 --> 00:12:12,740 a partir do código-fonte original que Bill Gates e Paul Allen escreveu. 258 00:12:12,740 --> 00:12:14,770 Na verdade, se você usar zoom em que você pode ver não só 259 00:12:14,770 --> 00:12:17,350 seus nomes no Tipo de original, mas também 260 00:12:17,350 --> 00:12:22,100 suas assinaturas que adornavam a Alguns anos atrás, quando visitou pela última vez. 261 00:12:22,100 --> 00:12:25,800 >> Mas o que era particularmente atraente sobre isso é o que se propôs a fazer 262 00:12:25,800 --> 00:12:29,760 era escrever um programa que permitir que outras pessoas a escrever 263 00:12:29,760 --> 00:12:30,950 seus próprios programas. 264 00:12:30,950 --> 00:12:34,280 Na época tudo o que havia com esta máquina Altair feita pela MITS. 265 00:12:34,280 --> 00:12:40,020 E tudo o que precisava era uma maneira de tornando mais fácil para amadores e pessoas 266 00:12:40,020 --> 00:12:45,300 gostam de nós nesta sala para realmente programa que sem compreender necessariamente 267 00:12:45,300 --> 00:12:49,060 Código Assembly, ou máquina código, ou Deus me livre, 0s e 1s. 268 00:12:49,060 --> 00:12:51,190 Nós, programadores, como aqueles nesta sala, nós 269 00:12:51,190 --> 00:12:54,070 quero ser capaz de expressar nós mesmos muito mais como código pseudo 270 00:12:54,070 --> 00:12:57,330 mesmo que seja um pouco mais nit exigente do que falamos na semana passada. 271 00:12:57,330 --> 00:13:00,970 Não quero escrever um código como este, que Paul Allen e Bill Gates fez. 272 00:13:00,970 --> 00:13:04,850 Nós, ao contrário, quero escrever um código que parece um pouco mais amigável. 273 00:13:04,850 --> 00:13:07,150 >> Agora, esta é uma linguagem conhecida como BASIC. 274 00:13:07,150 --> 00:13:11,497 E os números de linha não são o que você usar simplesmente numerar as linhas de código 275 00:13:11,497 --> 00:13:12,330 que você está escrevendo. 276 00:13:12,330 --> 00:13:14,038 Não precisa nem fazer isso nos dias de hoje. 277 00:13:14,038 --> 00:13:16,060 Mas você pode ver aqui como print "Olá, mundo" 278 00:13:16,060 --> 00:13:18,660 seria, de fato, presumivelmente, imprimir apenas isso. 279 00:13:18,660 --> 00:13:22,710 E então o que Bill e Paul fez foi capacitar as pessoas para escrever um código como este 280 00:13:22,710 --> 00:13:27,240 em vez de-- se você der uma olhada no ciência da computação wall-- código como este. 281 00:13:27,240 --> 00:13:29,290 >> Na verdade, CS50 recentemente teve a oportunidade 282 00:13:29,290 --> 00:13:32,540 sentar-se com o professor Harry Lewis no departamento de Ciência da Computação, que 283 00:13:32,540 --> 00:13:34,640 realmente ensinou Bill Portões há alguns anos, 284 00:13:34,640 --> 00:13:38,460 e está aqui diante de esses três páginas de trechos. 285 00:13:38,460 --> 00:13:39,560 Vamos dar uma olhada. 286 00:13:39,560 --> 00:13:45,520 >> HARRY LEWIS: O que você tem aqui é um perfil de uma peça inicial de software 287 00:13:45,520 --> 00:13:50,240 escrito por Bill Gates e Paul Allen, fundadores da Microsoft. 288 00:13:50,240 --> 00:13:52,570 Assim, o código é interessante por duas razões. 289 00:13:52,570 --> 00:13:55,480 Em primeiro lugar, transformou-se O primeiro produto da Microsoft, 290 00:13:55,480 --> 00:14:01,810 que era um intérprete para a linguagem de programação BASIC. 291 00:14:01,810 --> 00:14:04,940 E em segundo lugar, esta foi uma das primeiras tentativas 292 00:14:04,940 --> 00:14:10,580 para criar um intérprete de modo ordinário pessoas poderiam usar computadores pessoais. 293 00:14:10,580 --> 00:14:12,670 >> Então Bill Gates era um graduação em Harvard. 294 00:14:12,670 --> 00:14:14,820 Comecei a ensinar em Harvard em 1974. 295 00:14:14,820 --> 00:14:16,560 Isto foi feito em 1975. 296 00:14:16,560 --> 00:14:20,180 Assim foi no início de sua carreira e no início da minha carreira. 297 00:14:20,180 --> 00:14:23,790 Eu realmente ensinou Bill em um curso em torno deste tempo. 298 00:14:23,790 --> 00:14:27,130 Paul Allen não era um Harvard estudante, mas ele 299 00:14:27,130 --> 00:14:31,020 tinha sido uma escola colega de classe de Bill Gates. 300 00:14:31,020 --> 00:14:33,740 Se você vir e olhar no perfil, você vai 301 00:14:33,740 --> 00:14:36,230 realmente encontrar uma terceira nome, Monte Davidoff, 302 00:14:36,230 --> 00:14:39,260 que era colega de classe de Gates aqui em Harvard. 303 00:14:39,260 --> 00:14:41,340 >> OK, então aqui está um interessante comentário aqui. 304 00:14:41,340 --> 00:14:47,150 Ele diz: "Em 4K pode excluir raiz quadrada mas para loops ainda deve funcionar. " 305 00:14:47,150 --> 00:14:53,080 OK, então o que significa que há que duas maneiras de compilar este programa. 306 00:14:53,080 --> 00:14:57,860 Um era para ser executado em uma versão deste computador Altair 307 00:14:57,860 --> 00:15:04,310 que apenas tinha 4K palavras de memória, 4096 palavras de memória. 308 00:15:04,310 --> 00:15:07,050 Mas a versão teve grande 8K. 309 00:15:07,050 --> 00:15:09,770 E então o que isto diz é que na versão 4K 310 00:15:09,770 --> 00:15:12,770 você tinha que excluir alguns código para torná-lo apto. 311 00:15:12,770 --> 00:15:14,790 E uma das coisas que seriam excluídos 312 00:15:14,790 --> 00:15:16,290 seria a rotina de raiz quadrada. 313 00:15:16,290 --> 00:15:20,360 Mas, aparentemente, a loops ainda deve 314 00:15:20,360 --> 00:15:26,392 trabalhar, mesmo quando você está compilando para baixo para apenas a versão 4K do computador. 315 00:15:26,392 --> 00:15:29,350 DAVID J. MALAN: Então um dos temas, como veremos em ciência da computação, 316 00:15:29,350 --> 00:15:31,430 É essa noção de estratificação e abstração, 317 00:15:31,430 --> 00:15:34,670 e realmente estar sobre os ombros de pessoas que vieram antes de nós, não 318 00:15:34,670 --> 00:15:37,890 ao contrário de alguns do Bill Gates e Paul Allen narrativa aqui. 319 00:15:37,890 --> 00:15:40,080 E o que isto significa é que hoje podemos tomar para 320 00:15:40,080 --> 00:15:43,490 certo que as coisas são, na verdade, mais fácil para nós para escrever código. 321 00:15:43,490 --> 00:15:47,170 De fato código, como dissemos na sexta-feira, é mais tecnicamente conhecido como código fonte. 322 00:15:47,170 --> 00:15:52,210 E é este Inglês como sintaxe que é mais adequado e mais bem definida 323 00:15:52,210 --> 00:15:55,480 do que algo como pseudo-código, para que não há nenhuma definição formal. 324 00:15:55,480 --> 00:15:58,320 >> E hoje o que vamos focar é o código-fonte 325 00:15:58,320 --> 00:16:01,010 que se parece com isso, que reconhecidamente, à primeira vista 326 00:16:01,010 --> 00:16:02,690 parece completamente enigmática. 327 00:16:02,690 --> 00:16:08,540 E, francamente, é uma maneira mais esteticamente complexo do que o programa subjacente é. 328 00:16:08,540 --> 00:16:13,300 Todo este programa faz, recall, é o que podemos dizer? 329 00:16:13,300 --> 00:16:14,990 Ele só imprime "Olá mundo". 330 00:16:14,990 --> 00:16:19,600 E, no entanto olhar para todas as coisas que precisamos para envolver essa frase muito simples. 331 00:16:19,600 --> 00:16:21,750 Mas em pouco tempo todos estas linhas e mais 332 00:16:21,750 --> 00:16:24,800 vai fazer muito mais sentido para você. 333 00:16:24,800 --> 00:16:26,940 >> E o fluxo é como se segue. 334 00:16:26,940 --> 00:16:31,220 O que precisamos à nossa disposição é tomar código, como fonte 335 00:16:31,220 --> 00:16:32,340 código que acabamos de ver. 336 00:16:32,340 --> 00:16:35,060 E precisamos de um novo programa para executá-lo completamente. 337 00:16:35,060 --> 00:16:39,130 Precisamos de algoritmos que podem converter o código fonte, assim, 338 00:16:39,130 --> 00:16:41,932 em código objeto, 0s e 1s. 339 00:16:41,932 --> 00:16:43,890 Em outras palavras, o que vamos aprender hoje 340 00:16:43,890 --> 00:16:46,620 é como fazer isso, escrever código-fonte em cima, 341 00:16:46,620 --> 00:16:49,930 passá-lo como entrada para um especial programa conhecido como um compilador, 342 00:16:49,930 --> 00:16:52,140 e nós vamos produzir código objeto. 343 00:16:52,140 --> 00:16:54,600 Que é apenas uma maneira elegante de dizendo que vai levar alguma coisa 344 00:16:54,600 --> 00:16:58,350 que se parece com isso, passá-lo em um programa chamado compilador, 345 00:16:58,350 --> 00:17:01,210 produzir código objeto que se parece com isso. 346 00:17:01,210 --> 00:17:04,720 >> Portanto, estas são literalmente os padrões de 0s e 1s 347 00:17:04,720 --> 00:17:08,550 que são compreendidas por um Intel computador nos dias de hoje, 348 00:17:08,550 --> 00:17:12,480 que, se interpretado pela CPU, os cérebros no interior de um computador, 349 00:17:12,480 --> 00:17:16,130 vai, literalmente, imprimir, simplesmente, "Olá mundo". 350 00:17:16,130 --> 00:17:19,670 Agora não há maneira mais 0s e 1s do que você seria de esperar pode ser necessário para isso. 351 00:17:19,670 --> 00:17:22,520 Mas isso é porque estamos construindo em uma boa dose de complexidade 352 00:17:22,520 --> 00:17:24,270 que podemos doravante tomar para concedido. 353 00:17:24,270 --> 00:17:27,869 Em outras palavras, um monte de pessoas inteligentes nos deram um monte de ferramentas legais 354 00:17:27,869 --> 00:17:32,480 e um poderoso software com o qual agora pode fazer projetos de nossa própria. 355 00:17:32,480 --> 00:17:33,400 >> Então, vamos começar. 356 00:17:33,400 --> 00:17:36,640 Considerando última sexta-feira, e Conjunto de Problemas para 0, esta semana, 357 00:17:36,640 --> 00:17:39,000 você estará jogando em um mundo que se parece com isso. 358 00:17:39,000 --> 00:17:42,180 A partir de hoje e para o problema Conjunto 1 na próxima semana, o código 359 00:17:42,180 --> 00:17:45,410 vai parecer um pouco mais enigmático, mas funcionalmente é 360 00:17:45,410 --> 00:17:46,940 vai ser o mesmo. 361 00:17:46,940 --> 00:17:50,770 Assim, o aviso prévio, superior é zero, inferior é C. Francamente Raspadinha 362 00:17:50,770 --> 00:17:52,780 é muito mais user amigável e acessível. 363 00:17:52,780 --> 00:17:56,890 Mas se você agora comparar visualmente superior ao inferior, há uma espécie de 1-1 364 00:17:56,890 --> 00:17:59,690 a correspondência entre o peças do puzzle e da linguagem 365 00:17:59,690 --> 00:18:00,870 estamos prestes a jogar. 366 00:18:00,870 --> 00:18:04,420 Em particular, dizer, o quebra-cabeça azul pedaço em cima, 367 00:18:04,420 --> 00:18:08,370 aparentemente é equivalente ao que palavra-chave ou frase especial nesta língua 368 00:18:08,370 --> 00:18:09,062 chamado C? 369 00:18:09,062 --> 00:18:09,770 AUDIÊNCIA: printf. 370 00:18:09,770 --> 00:18:10,728 DAVID J. MALAN: printf. 371 00:18:10,728 --> 00:18:12,140 Isso significa que a impressão formatada. 372 00:18:12,140 --> 00:18:15,240 E isso é apenas uma fantasia maneira de dizer printf em C 373 00:18:15,240 --> 00:18:18,615 vai ser uma declaração ou uma função que imprime algo na tela. 374 00:18:18,615 --> 00:18:19,990 O que é impresso na tela? 375 00:18:19,990 --> 00:18:23,627 Tudo o que você diga a ele para dentro de citações, dentro de parênteses. 376 00:18:23,627 --> 00:18:25,460 Então, novamente, é certo, há um monte de coisas 377 00:18:25,460 --> 00:18:27,990 que você tem que ter em mente, parênteses, aspas, ponto e vírgula, 378 00:18:27,990 --> 00:18:28,656 e tudo isto. 379 00:18:28,656 --> 00:18:30,600 Mas tudo isso é uma espécie do lado do ponto. 380 00:18:30,600 --> 00:18:33,660 O takeaway interessante para agora é que o bloco digamos em risco 381 00:18:33,660 --> 00:18:37,520 é praticamente equivalente a a instrução printf em C. 382 00:18:37,520 --> 00:18:41,390 >> Enquanto isso, a peça de quebra-cabeça amarela em cima, quando a bandeira verde clicado, 383 00:18:41,390 --> 00:18:44,736 é provavelmente equivalente o que palavra-chave aqui? 384 00:18:44,736 --> 00:18:45,360 AUDIÊNCIA: Main. 385 00:18:45,360 --> 00:18:46,359 DAVID J. MALAN: Então principal. 386 00:18:46,359 --> 00:18:47,410 Talvez int, talvez vazio. 387 00:18:47,410 --> 00:18:51,280 Mas tipo principal de sons como é importante, e de fato é. 388 00:18:51,280 --> 00:18:54,080 Então, quando a bandeira verde clicado é, novamente, a peça de quebra-cabeça 389 00:18:54,080 --> 00:18:56,390 que começa uma todo o programa de Notas. 390 00:18:56,390 --> 00:19:02,140 Mas vamos agora começar a chamar que o principal, esta função conhecida como principal. 391 00:19:02,140 --> 00:19:06,410 >> Agora, entretanto, nós vamos generalizar esta como se segue. 392 00:19:06,410 --> 00:19:08,780 Podemos chamar dizer uma função. 393 00:19:08,780 --> 00:19:10,580 E isso pode parecer especificamente como este. 394 00:19:10,580 --> 00:19:11,770 Bem, o que dizer de laços? 395 00:19:11,770 --> 00:19:16,540 Se quisermos iniciar a conversão ou traduzindo mais em risco para C, 396 00:19:16,540 --> 00:19:19,400 esta coisa aqui, aparentemente, apenas diz: "Olá, mundo" para sempre. 397 00:19:19,400 --> 00:19:23,060 Então, se você associar estes scripts com um gato em risco, 398 00:19:23,060 --> 00:19:26,560 ele só vai continuar a dizer em algum tipo de bolha dos desenhos animados, 399 00:19:26,560 --> 00:19:29,922 "Olá mundo, Olá mundo, Olá mundo ", ad nauseum, para sempre. 400 00:19:29,922 --> 00:19:33,130 Se quisermos fazer algo semelhante no C, que vai olhar um pouco enigmática. 401 00:19:33,130 --> 00:19:35,463 Mas podemos conseguir o mesmo resulta, como veremos eventualmente 402 00:19:35,463 --> 00:19:36,861 descobrir, com sintaxe como esta. 403 00:19:36,861 --> 00:19:39,360 Eu vou usar printf novamente, porque no fim do dia 404 00:19:39,360 --> 00:19:42,040 Quero imprimir "Olá mundo". 405 00:19:42,040 --> 00:19:45,610 E eu estou aparentemente usando um palavra-chave que não é para sempre. 406 00:19:45,610 --> 00:19:47,320 É, em vez da palavra tempo. 407 00:19:47,320 --> 00:19:49,650 Mas apenas semanticamente em Inglês, enquanto que o tipo de 408 00:19:49,650 --> 00:19:52,120 sugere algum tipo de laço ou ciclo. 409 00:19:52,120 --> 00:19:55,070 >> Então, que passa a ser a palavra-chave que usa C. 410 00:19:55,070 --> 00:20:00,700 E, embora verdadeiro, por que enquanto verdade significa efetivamente para sempre? 411 00:20:00,700 --> 00:20:04,240 Bem, embora, como veremos em breve apreciar tudo o mais, 412 00:20:04,240 --> 00:20:08,140 tem este parênteses ao lado dele onde você pode colocar uma expressão booleana. 413 00:20:08,140 --> 00:20:11,360 E enquanto esse expressão é verdadeira, este código, 414 00:20:11,360 --> 00:20:14,750 como é indicado entre estes dois chaves como vamos chamá-los, 415 00:20:14,750 --> 00:20:16,880 vai apenas manter funcionando novamente e novamente. 416 00:20:16,880 --> 00:20:18,410 >> Tanto é verdade. 417 00:20:18,410 --> 00:20:20,900 Assim, enquanto os verdadeiros meios apenas fazer isso para sempre. 418 00:20:20,900 --> 00:20:23,480 É quase um estúpido construir para se expressar. 419 00:20:23,480 --> 00:20:26,590 Mas lá não era para sempre palavra-chave em C. Houve tempo. 420 00:20:26,590 --> 00:20:29,390 E havia uma forma muito simples Expressão booleana como verdade. 421 00:20:29,390 --> 00:20:32,210 E assim, este, vamos ver, obtém o mesmo resultado. 422 00:20:32,210 --> 00:20:33,890 >> De que outra forma você pode implementar um loop? 423 00:20:33,890 --> 00:20:36,980 Bem, em risco que você pode codificar um número específico 424 00:20:36,980 --> 00:20:39,430 de iterações no loop aqui. 425 00:20:39,430 --> 00:20:43,210 E isso é exatamente o que nós pode fazer nesta versão de C, 426 00:20:43,210 --> 00:20:46,140 pelo que temos uma chamada para o circuito. 427 00:20:46,140 --> 00:20:49,850 E o loop for aqui vai a iteração, um tanto enigmaticamente, 428 00:20:49,850 --> 00:20:54,100 do valor 0 em cima a, mas menor do que 10. 429 00:20:54,100 --> 00:20:55,955 >> Agora variáveis ​​em zero. 430 00:20:55,955 --> 00:20:57,830 Você pode não ter tido ocasião para usá-los. 431 00:20:57,830 --> 00:21:02,516 Mas qual é o ponto, em geral, de uma variável que nós dissemos na semana passada? 432 00:21:02,516 --> 00:21:03,015 O que é isso? 433 00:21:03,015 --> 00:21:03,780 >> Audiência: pontos. 434 00:21:03,780 --> 00:21:05,200 >> DAVID J. MALAN: Para apontar? 435 00:21:05,200 --> 00:21:05,700 Oh, aponta. 436 00:21:05,700 --> 00:21:07,620 OK, mantendo o controle de pontos, por exemplo, num jogo. 437 00:21:07,620 --> 00:21:09,510 Ou, mais geralmente fazendo que com a variável? 438 00:21:09,510 --> 00:21:10,450 Qual é a utilidade deles? 439 00:21:10,450 --> 00:21:10,825 >> AUDIÊNCIA: Memória. 440 00:21:10,825 --> 00:21:11,750 >> DAVID J. MALAN: Sim, então memória. 441 00:21:11,750 --> 00:21:13,000 É para guardar alguma coisa. 442 00:21:13,000 --> 00:21:17,336 E o tipo de bobagem que eu visual utilizado última vez foi como esta tigela de vidro. 443 00:21:17,336 --> 00:21:19,710 E se quiséssemos armazenar algo dentro de uma variável, 444 00:21:19,710 --> 00:21:21,918 por exemplo, no momento da valor é porque há seis 445 00:21:21,918 --> 00:21:23,450 São seis bolas de ping pong em aqui. 446 00:21:23,450 --> 00:21:26,158 É apenas algum tipo de armazenamento recipiente que debaixo do capô 447 00:21:26,158 --> 00:21:30,030 é implementado mediante bits, 0s e 1s, no entanto, um computador passa a fazer isso. 448 00:21:30,030 --> 00:21:32,900 >> Assim, em risco, se nós quer ter uma variável, 449 00:21:32,900 --> 00:21:34,840 podemos usar um bloco de laranja assim. 450 00:21:34,840 --> 00:21:37,050 Vamos chamar esse contador neste caso particular. 451 00:21:37,050 --> 00:21:38,890 Eu inicializado para 0. 452 00:21:38,890 --> 00:21:41,080 E o que eu então fazer? 453 00:21:41,080 --> 00:21:44,780 Para sempre, dizem balcão, que se você joga com isso em risco, 454 00:21:44,780 --> 00:21:45,780 você só verá zero. 455 00:21:45,780 --> 00:21:49,920 O gato ou o que você colocar em traje ele vai falar o número em questão. 456 00:21:49,920 --> 00:21:52,840 >> Mudança de contador 1 é como incrementar em 1. 457 00:21:52,840 --> 00:21:56,580 E assim é que isto vai contar com o que então? 458 00:21:56,580 --> 00:21:59,114 De 0 até o infinito, ou até quebras de raspadinhas, 459 00:21:59,114 --> 00:22:01,030 ou até que tipo de perder o interesse em assistir 460 00:22:01,030 --> 00:22:02,650 quão alto ele pode realmente contar. 461 00:22:02,650 --> 00:22:04,800 >> Então, como podemos converter isso em C? 462 00:22:04,800 --> 00:22:06,480 Vai parecer um pouco enigmática. 463 00:22:06,480 --> 00:22:08,896 Mas, novamente, se você olhar para cada destas linhas individualmente 464 00:22:08,896 --> 00:22:10,410 que tipo de programação em geral. 465 00:22:10,410 --> 00:22:13,526 Então, aparentemente int vai tem algum significado especial em C. 466 00:22:13,526 --> 00:22:14,400 Vamos ver isso de novo. 467 00:22:14,400 --> 00:22:15,810 Como um aparte, significa inteiro. 468 00:22:15,810 --> 00:22:16,990 Então, isso significa apenas número. 469 00:22:16,990 --> 00:22:18,920 Então esse é o tipo de tigela de vidro que eu quero, um 470 00:22:18,920 --> 00:22:21,120 que pode armazenar números, não executar ping pong bolas. 471 00:22:21,120 --> 00:22:25,520 E eu vou usar o sinal de igual não para atribuir-lhe um valor de 0. 472 00:22:25,520 --> 00:22:29,440 Então, isso é completamente como conjunto contador a 0, mas em C. 473 00:22:29,440 --> 00:22:32,840 >> Enquanto isso, embora verdadeira, que era equivalente, é claro, para sempre, 474 00:22:32,840 --> 00:22:35,980 mesmo que seja um pouco enigmática, e, em seguida, dentro das chaves. 475 00:22:35,980 --> 00:22:39,188 E você pode pensar nessas chaves, qual você pode digitar no teclado, 476 00:22:39,188 --> 00:22:43,110 como realmente ser como a curvatura em destes blocos circulares amarelos em zero. 477 00:22:43,110 --> 00:22:45,700 Ela abrange várias linhas de código. 478 00:22:45,700 --> 00:22:48,120 >> Printf está recebendo uma pouco assustador, porque agora eu 479 00:22:48,120 --> 00:22:51,120 ver não só cita entre parênteses. 480 00:22:51,120 --> 00:22:55,160 Mas o que mais há de novo sintaticamente neste exemplo? 481 00:22:55,160 --> 00:22:57,300 Há um por cento d. 482 00:22:57,300 --> 00:22:58,551 E então barra invertida n está lá. 483 00:22:58,551 --> 00:23:00,883 Fizemos ver que antes, mesmo embora eu não mencioná-lo. 484 00:23:00,883 --> 00:23:01,886 Depois, há uma vírgula. 485 00:23:01,886 --> 00:23:03,010 E depois há um contador. 486 00:23:03,010 --> 00:23:05,010 >> Mas vamos ver em apenas um momento em que este é apenas 487 00:23:05,010 --> 00:23:09,080 uma forma padrão de dizer uma impressão "Número decimal", citação, fecha aspas, 488 00:23:09,080 --> 00:23:10,500 um número decimal. 489 00:23:10,500 --> 00:23:13,370 Mas eu vou te dizer mais tarde o que esse número decimal é. 490 00:23:13,370 --> 00:23:16,835 Assim, o fato de que há uma vírgula nesta linha ditado printf, 491 00:23:16,835 --> 00:23:18,710 significa ir em frente e impressão um número decimal. 492 00:23:18,710 --> 00:23:23,110 Ah, e por falar nisso, o número é qualquer que seja o valor dessa variável é. 493 00:23:23,110 --> 00:23:25,880 E assim, para tornar isso mais claro, vamos ver um exemplo 494 00:23:25,880 --> 00:23:30,930 em pouco tempo, envolvendo exatamente printf no contexto dos programas de reais C. 495 00:23:30,930 --> 00:23:33,472 >> Agora é só para embrulhar alguns destas construções. 496 00:23:33,472 --> 00:23:36,680 Expressões booleanas, você pode não ter ocasião para usá-los em seu programa 497 00:23:36,680 --> 00:23:39,450 mas você pode muito bem, especialmente se utilizando condições. 498 00:23:39,450 --> 00:23:43,460 E assim estes dois exemplos de Raspe dizer, se x é menor que y, 499 00:23:43,460 --> 00:23:48,770 ou, se x é menor que y e y é menos de z, como podemos traduzir isso? 500 00:23:48,770 --> 00:23:50,810 >> Bem, em C é apenas vai ficar assim. 501 00:23:50,810 --> 00:23:55,300 Um pouco enigmático, mais parênteses, alguns ampersands estranho, mas fundamentalmente 502 00:23:55,300 --> 00:23:59,160 as idéias são tão simples como eles estão no mundo da peça do puzzle. 503 00:23:59,160 --> 00:24:02,690 Estamos apenas verificando se algo é menor do que qualquer outra coisa. 504 00:24:02,690 --> 00:24:03,910 >> Que tal condições? 505 00:24:03,910 --> 00:24:09,710 Em poucas palavras em Inglês, o que isso pedaço de código do risco que você diria? 506 00:24:09,710 --> 00:24:11,050 >> AUDIÊNCIA: Compara dois números. 507 00:24:11,050 --> 00:24:13,760 >> DAVID J. MALAN: Compara dois números, e, se x é menor que y 508 00:24:13,760 --> 00:24:14,860 ele diz tanto. 509 00:24:14,860 --> 00:24:18,080 Se x for maior do que y ele diz tanto quanto, senão 510 00:24:18,080 --> 00:24:20,740 Se x é igual a y que diz tanto. 511 00:24:20,740 --> 00:24:22,180 Agora onde x e y vem? 512 00:24:22,180 --> 00:24:22,680 Quem sabe. 513 00:24:22,680 --> 00:24:25,380 Este pedaço do Scratch código está fora de contexto. 514 00:24:25,380 --> 00:24:29,050 Mas o que queremos fazer agora é traduzir isso por apenas um momento para ver. 515 00:24:29,050 --> 00:24:31,660 >> Então, como você se sentir confortável esta semana no Conjunto de Problemas 516 00:24:31,660 --> 00:24:34,190 0 jogando neste mundo no lado esquerdo, perceber 517 00:24:34,190 --> 00:24:36,940 que as idéias não estão mudando esta semana ou no próximo ou além. 518 00:24:36,940 --> 00:24:38,690 Estamos indo simplesmente para começar a escrever coisas 519 00:24:38,690 --> 00:24:41,240 de um modo diferente com o nosso teclado em vez do nosso mouse. 520 00:24:41,240 --> 00:24:44,577 >> Portanto, se x é menor que y e há alguns parênteses lá, 521 00:24:44,577 --> 00:24:47,160 então há algumas chaves de novo para o tipo de encapsular 522 00:24:47,160 --> 00:24:48,970 assim como as peças do puzzle amarelo fazer. 523 00:24:48,970 --> 00:24:53,000 E eu estou indo para printf x é menor que y e assim por diante. 524 00:24:53,000 --> 00:24:56,540 >> O que é agradável sobre C, como você pode ver aqui, 525 00:24:56,540 --> 00:25:00,480 é que você não obter este assentamento, do assentamento, assentamento que é necessariamente 526 00:25:00,480 --> 00:25:02,220 vai empurrar o seu código para a direita. 527 00:25:02,220 --> 00:25:04,990 Em vez disso você pode ter tudo lineup ordenadamente assim. 528 00:25:04,990 --> 00:25:08,960 Mas isso é apenas uma estética detalhe veremos novamente em pouco tempo. 529 00:25:08,960 --> 00:25:09,660 >> Tudo certo. 530 00:25:09,660 --> 00:25:13,290 Isso nos traz de volta ao este programa olhar enigmático. 531 00:25:13,290 --> 00:25:15,180 Vamos realmente escrever algum código. 532 00:25:15,180 --> 00:25:16,830 Agora, como é que você vai escrever o código? 533 00:25:16,830 --> 00:25:21,310 Todos esses anos que você possuiu um Mac ou PC, desktop ou laptop, 534 00:25:21,310 --> 00:25:24,520 você realmente tinha a capacidade para começar a escrever código de programação. 535 00:25:24,520 --> 00:25:27,050 Mas você provavelmente está faltando um tipo especial de programa. 536 00:25:27,050 --> 00:25:28,470 Você certamente pode escrever código. 537 00:25:28,470 --> 00:25:30,740 Mas você não pode, necessariamente, fora da caixa, 538 00:25:30,740 --> 00:25:34,210 converter o código-fonte em código objeto, 0s e 1s 539 00:25:34,210 --> 00:25:35,619 sem o que no seu computador? 540 00:25:35,619 --> 00:25:36,410 AUDIÊNCIA: Compiler. 541 00:25:36,410 --> 00:25:37,630 DAVID J. MALAN: Então, um compilador, certo. 542 00:25:37,630 --> 00:25:39,730 Agora, a maioria de vocês provavelmente não possui um compilador, 543 00:25:39,730 --> 00:25:41,259 nunca ter baixado um compilador. 544 00:25:41,259 --> 00:25:44,300 Mas você vai ver que você pode baixá-lo como a maioria qualquer outra peça de software. 545 00:25:44,300 --> 00:25:47,470 No mundo do Mac OS, você pode baixar ou já baixou 546 00:25:47,470 --> 00:25:50,437 algo chamado Xcode ou GCC ou Clang. 547 00:25:50,437 --> 00:25:52,270 Se você vem do Mundo Windows que você pode 548 00:25:52,270 --> 00:25:56,190 ter feito o download do Visual Studio, Visual Basic, ambientes como esse. 549 00:25:56,190 --> 00:25:59,200 Há dezenas de compiladores estes dias que você pode usar. 550 00:25:59,200 --> 00:26:01,940 Mas o curto do que aqui é que seria uma dor 551 00:26:01,940 --> 00:26:04,480 e, francamente, um tecnológico pesadelo para centenas 552 00:26:04,480 --> 00:26:07,680 de pessoas com diferentes configurações do computador para todos 553 00:26:07,680 --> 00:26:09,800 configurar suas máquinas exatamente da mesma maneira 554 00:26:09,800 --> 00:26:11,700 para que todos nós possamos estar na mesma página. 555 00:26:11,700 --> 00:26:15,240 >> Então, o que nós, em vez disso, fazer em CS50 é nós damos-lhe 556 00:26:15,240 --> 00:26:18,349 um ambiente normal, uma Ambiente Linux que é 557 00:26:18,349 --> 00:26:20,140 vai parecer um pouco algo como isto. 558 00:26:20,140 --> 00:26:22,980 Você vai ver mais disso no Conjunto de Problemas 1 especificação que 559 00:26:22,980 --> 00:26:25,330 será disponibilizada online nesta noite de sexta. 560 00:26:25,330 --> 00:26:28,360 >> E o que isso significa é que, doravante 561 00:26:28,360 --> 00:26:32,060 vão ser capazes de baixar e instalar um programa 562 00:26:32,060 --> 00:26:33,650 chamado o CS50 Appliance. 563 00:26:33,650 --> 00:26:36,275 E você vai fazer o download e instalar outro programa chamado 564 00:26:36,275 --> 00:26:40,300 um hypervisor, que é apenas uma maneira extravagante de conseguir isso. 565 00:26:40,300 --> 00:26:44,600 Se você possui um Mac ou PC ou um Computador Linux ou em um computador Solaris, 566 00:26:44,600 --> 00:26:46,830 ou qualquer que seja louco operacional sistema que está sendo executado, 567 00:26:46,830 --> 00:26:49,820 você vai baixar um programa chamado de hypervisor que é 568 00:26:49,820 --> 00:26:53,350 vai executar o CS50 Appliance no seu computador 569 00:26:53,350 --> 00:26:55,430 não importa o que seu sistema operacional é. 570 00:26:55,430 --> 00:27:00,640 Um hipervisor em outras palavras converte nosso material para qualquer língua, 571 00:27:00,640 --> 00:27:03,850 o que quer que suas instruções próprio computador entende. 572 00:27:03,850 --> 00:27:04,962 >> Portanto, esta é uma estratificação. 573 00:27:04,962 --> 00:27:06,920 E mais uma vez, este é o tipo da temática em computador 574 00:27:06,920 --> 00:27:08,722 ciência, o edifício em cima das coisas. 575 00:27:08,722 --> 00:27:09,680 Você pode ter o Windows. 576 00:27:09,680 --> 00:27:10,710 Você pode ter o Mac OS. 577 00:27:10,710 --> 00:27:12,960 Mas a partir da próxima semana você está vai ter baixado 578 00:27:12,960 --> 00:27:14,980 um software gratuito chamado de hypervisor. 579 00:27:14,980 --> 00:27:17,800 Você vai ter baixado um pedaço de software chamado de CS50 Appliance. 580 00:27:17,800 --> 00:27:21,050 >> Isso vai funcionar no hypervisor, que vai rodar em seu computador. 581 00:27:21,050 --> 00:27:23,030 E o resultado final é que todos nós 582 00:27:23,030 --> 00:27:26,220 ter uma simples janela como esta no seu Mac ou PC 583 00:27:26,220 --> 00:27:30,160 que nos dá a ilusão de tudo executando o mesmo sistema operacional, 584 00:27:30,160 --> 00:27:32,800 sem qualquer outra impacto no seu computador. 585 00:27:32,800 --> 00:27:34,870 E você pode tela cheia isto e, essencialmente, se comportam 586 00:27:34,870 --> 00:27:37,550 como se você estiver executando uma sistema operacional chamado Linux, 587 00:27:37,550 --> 00:27:40,270 que é o que o CS50 Appliance é baseado. 588 00:27:40,270 --> 00:27:42,930 >> Então, vamos realmente usar este agora escrever um programa. 589 00:27:42,930 --> 00:27:45,450 Você pode escrever um programa usando o Microsoft Word. 590 00:27:45,450 --> 00:27:48,160 Você pode escrever um programa usando o TextEdit, ou bloco de notas, 591 00:27:48,160 --> 00:27:51,880 ou WordPad, ou praticamente qualquer palavra programa de processamento que você já usou. 592 00:27:51,880 --> 00:27:55,174 Mas a realidade é que você não deve utilizar realmente qualquer um desses programas. 593 00:27:55,174 --> 00:27:57,840 Você certamente não deve usar algo como o Microsoft Word, que 594 00:27:57,840 --> 00:28:01,120 tem virado e negrito e itálico, e fontes maiores e fontes menores, 595 00:28:01,120 --> 00:28:03,560 porque o computador não se preocupam com nada disso. 596 00:28:03,560 --> 00:28:05,600 Todo o computador está vai interessa é 597 00:28:05,600 --> 00:28:09,040 Inglês como instruções escritas em C. 598 00:28:09,040 --> 00:28:12,050 >> Então, o que nós vamos fazer dentro do Appliance CS50 599 00:28:12,050 --> 00:28:14,290 é usar um programa livremente disponível, e é 600 00:28:14,290 --> 00:28:17,360 pré-instalado neste aparelho, chamado Gedit. 601 00:28:17,360 --> 00:28:22,280 E Gedit é apenas um super simples editor de texto como o TextEdit do Mac OS, 602 00:28:22,280 --> 00:28:26,200 como o Notepad do Windows que vai olhar um pouco algo como isto. 603 00:28:26,200 --> 00:28:28,910 >> Então, vamos realmente não olhar slides desta. 604 00:28:28,910 --> 00:28:32,580 Mas vamos realmente entrar em o próprio ambiente. 605 00:28:32,580 --> 00:28:36,090 Eu estou indo para ir em frente e Conecte-se, nesta outra janela, 606 00:28:36,090 --> 00:28:40,910 ao meu CS50 Appliance, que eu tenho pré-instalado no meu laptop aqui. 607 00:28:40,910 --> 00:28:43,771 >> Observe que, como o Windows e Mac OS, ele tem alguns menus. 608 00:28:43,771 --> 00:28:45,520 Como o Windows coloca lá em baixo, em vez 609 00:28:45,520 --> 00:28:47,020 do Mac OS, o que o coloca lá em baixo. 610 00:28:47,020 --> 00:28:48,930 Mas a realidade é que é todo o tipo do mesmo. 611 00:28:48,930 --> 00:28:50,770 E aqui é um todo bando de software. 612 00:28:50,770 --> 00:28:51,770 Há Dropbox. 613 00:28:51,770 --> 00:28:54,780 Há um monte de acessórios, programas gráficos que vamos 614 00:28:54,780 --> 00:28:56,430 usar mais tarde no prazo de conjuntos de problemas. 615 00:28:56,430 --> 00:28:59,650 Há um navegador construído na que este é um verdadeiro computador completo 616 00:28:59,650 --> 00:29:01,240 no interior de um computador. 617 00:29:01,240 --> 00:29:04,170 >> Mas eu vou clicar neste mais à esquerda ícone branco aqui, 618 00:29:04,170 --> 00:29:05,890 que é o ícone para Gedit. 619 00:29:05,890 --> 00:29:09,650 E isso vai abrir uma janela que tem três painéis de que, 620 00:29:09,650 --> 00:29:12,590 um lado esquerdo, um topo, e uma parte inferior. 621 00:29:12,590 --> 00:29:16,071 >> Agora é em um presente superior direito que Eu vou realmente escrever algum código. 622 00:29:16,071 --> 00:29:16,820 Então, vamos fazer isso ,. 623 00:29:16,820 --> 00:29:19,040 Eu estou indo para ir em File, Save. 624 00:29:19,040 --> 00:29:22,100 E você não pode nunca ter visto esta janela específica antes. 625 00:29:22,100 --> 00:29:23,620 Mas isto é como Mac OS ou Windows. 626 00:29:23,620 --> 00:29:25,490 É apenas uma janela com todas as pastas 627 00:29:25,490 --> 00:29:27,290 que eu tenho dentro deste computador. 628 00:29:27,290 --> 00:29:30,320 >> E eu estou indo para salvar o arquivo como ola.c. 629 00:29:30,320 --> 00:29:32,690 E eu estou indo para ir em frente e clique em Salvar. 630 00:29:32,690 --> 00:29:36,364 E agora percebe que eu tenho um guia no canto superior esquerdo chamado ola.c. 631 00:29:36,364 --> 00:29:38,280 Então, provavelmente, muito familiarizados, mesmo que você não tenha 632 00:29:38,280 --> 00:29:40,240 utilizado este programa específico antes. 633 00:29:40,240 --> 00:29:44,890 >> E agora estou indo para digitar os sequência críptica de comandos 634 00:29:44,890 --> 00:29:46,360 que vimos há pouco. 635 00:29:46,360 --> 00:29:49,330 Incluir, eu standard / O.h. 636 00:29:49,330 --> 00:29:50,600 Mais sobre isso em breve. 637 00:29:50,600 --> 00:29:55,670 Void main Int, encaracolado aberto cinta, fechou chaveta. 638 00:29:55,670 --> 00:30:01,570 E então lá dentro eu acho que é onde tivemos "Olá mundo", ponto e vírgula. 639 00:30:01,570 --> 00:30:03,100 E agora salvar. 640 00:30:03,100 --> 00:30:08,780 >> Portanto, este é um programa escrito em C, escrito, por conseguinte, no código de fonte. 641 00:30:08,780 --> 00:30:10,720 Mas eu não posso simplesmente executar este programa. 642 00:30:10,720 --> 00:30:13,390 Eu meio que quero dobrar clicar em um ícone algum lugar, 643 00:30:13,390 --> 00:30:16,390 mas nenhum ícone existe outro que o arquivo de código-fonte. 644 00:30:16,390 --> 00:30:20,359 O que, novamente, é o processo que agora Eu preciso executar esse arquivo através de? 645 00:30:20,359 --> 00:30:21,150 AUDIÊNCIA: Compiler. 646 00:30:21,150 --> 00:30:22,399 DAVID J. MALAN: Então um compilador. 647 00:30:22,399 --> 00:30:24,890 Assim, em diferentes computadores você fazer isso de diferentes maneiras. 648 00:30:24,890 --> 00:30:27,480 Mas o que temos feito aqui em o Appliance CS50 que é 649 00:30:27,480 --> 00:30:31,260 representante de como você pode fazer isso em muitos sistemas diferentes, 650 00:30:31,260 --> 00:30:34,036 é que eu vou simplesmente executar um comando chamado make. 651 00:30:34,036 --> 00:30:35,660 E o make é literalmente vai fazer isso. 652 00:30:35,660 --> 00:30:36,640 Faça-me um programa. 653 00:30:36,640 --> 00:30:39,060 >> Então faça vai executar um compilador para mim. 654 00:30:39,060 --> 00:30:42,160 E o nome do programa Eu quero fazer é Olá. 655 00:30:42,160 --> 00:30:43,510 Agora, fazer um programa. 656 00:30:43,510 --> 00:30:47,170 E fazer é inteligente o suficiente para perceber que, se eu digo fazer Olá, 657 00:30:47,170 --> 00:30:50,980 ele vai procurar automaticamente para um ficheiro chamado ola.c 658 00:30:50,980 --> 00:30:53,420 apenas porque essa é a forma como está configurado. 659 00:30:53,420 --> 00:31:00,300 >> Então, quando eu agora pressione Enter aqui, este linha enigmática louco acabou de ser executado. 660 00:31:00,300 --> 00:31:02,720 E confiem em mim, antes de longo, dentro de poucos dias, 661 00:31:02,720 --> 00:31:05,590 você vai entender o que todos de que os meios sem sentido. 662 00:31:05,590 --> 00:31:11,150 Mas, por enquanto, só sei que fazer execução desencadeada de um compilador. 663 00:31:11,150 --> 00:31:13,290 Por outras palavras, encontrou um compilador no meu computador 664 00:31:13,290 --> 00:31:14,820 que é pré-instalado no aparelho CS50 665 00:31:14,820 --> 00:31:16,560 que nós vamos entregar para você em Conjunto de Problemas 1. 666 00:31:16,560 --> 00:31:20,990 E em seguida, levou ola.c como de entrada, e, aparentemente produzido 667 00:31:20,990 --> 00:31:23,040 0s e 1s como saída. 668 00:31:23,040 --> 00:31:29,410 >> E, por padrão, o que ele faz é salva esses 0s e 1s em um arquivo chamado Olá. 669 00:31:29,410 --> 00:31:33,180 E embora esta sintaxe também pode ser novidade para você, simplesmente dizendo dot 670 00:31:33,180 --> 00:31:37,110 Olá cortar vai ser a meios pelos quais eu executar este programa. 671 00:31:37,110 --> 00:31:40,360 >> Por agora e para, pelo menos, um par semanas, quase todos os programas 672 00:31:40,360 --> 00:31:44,230 escrevemos vão estar em janelas de texto preto e branco. 673 00:31:44,230 --> 00:31:47,006 No ratinhos, não clicar, sem janelas, sem ícones. 674 00:31:47,006 --> 00:31:49,630 Vamos mantê-lo simples e concentrar-se nas ideias subjacentes 675 00:31:49,630 --> 00:31:52,490 inicialmente, antes de chegarmos a algo nível mais elevado, por exemplo, 676 00:31:52,490 --> 00:31:56,410 como o jogo pausa que nós falamos sobre na primeira aula na semana passada. 677 00:31:56,410 --> 00:32:00,820 >> Então, quando eu pressione Enter aqui, é equivalente em um texto único ambiente 678 00:32:00,820 --> 00:32:03,272 dobrar clicar em um ícone chamado Olá. 679 00:32:03,272 --> 00:32:05,480 O que você espera vontade acontecer quando eu pressione Enter em seguida? 680 00:32:05,480 --> 00:32:07,120 >> AUDIÊNCIA: Ele vai imprimir "Olá mundo". 681 00:32:07,120 --> 00:32:10,000 >> DAVID J. MALAN: Esperemos ele irá imprimir "Olá mundo". 682 00:32:10,000 --> 00:32:11,370 E de fato o fez. 683 00:32:11,370 --> 00:32:13,690 Agora que houve algum sintaxe enigmática aqui. 684 00:32:13,690 --> 00:32:15,950 Vamos rebobinar para apenas um momento e ver se 685 00:32:15,950 --> 00:32:19,530 Não é possível iniciar inferir apenas por mexer, tentar e falhar, 686 00:32:19,530 --> 00:32:21,130 quanto ao que está acontecendo aqui. 687 00:32:21,130 --> 00:32:23,609 E se eu me livrar da barra invertida n? 688 00:32:23,609 --> 00:32:25,650 Agora, alguns de vocês que tenho programado antes, provavelmente, 689 00:32:25,650 --> 00:32:27,054 saber instantaneamente o que isso significa. 690 00:32:27,054 --> 00:32:29,220 Mas para aqueles de vocês que tenho nunca programou antes, 691 00:32:29,220 --> 00:32:34,052 pelo menos pensar a si mesmo o que está acontecendo a mudar quando eu executar novamente este programa? 692 00:32:34,052 --> 00:32:37,010 Então, eu vou voltar para o meu janelinha preto e branco, que 693 00:32:37,010 --> 00:32:39,290 é a janela em que Posso compilar este. 694 00:32:39,290 --> 00:32:41,130 Vou recompilar Olá. 695 00:32:41,130 --> 00:32:43,520 Nós vamos ver a mesma seqüência de comandos crípticos. 696 00:32:43,520 --> 00:32:45,719 E eu vou fazer barra dot Olá. 697 00:32:45,719 --> 00:32:48,260 E agora alguém, se você, que nunca programou antes, 698 00:32:48,260 --> 00:32:49,770 o que pode ser diferente desta vez? 699 00:32:49,770 --> 00:32:50,020 Sim. 700 00:32:50,020 --> 00:32:51,840 >> AUDIÊNCIA: Ela não vai parar impressão "Olá mundo". 701 00:32:51,840 --> 00:32:52,660 >> DAVID J. MALAN: Vai para-- arrependido? 702 00:32:52,660 --> 00:32:54,210 >> AUDIÊNCIA: Ela não vai parar de imprimi-lo? 703 00:32:54,210 --> 00:32:55,810 >> DAVID J. MALAN: não vai parar de imprimir "Olá mundo". 704 00:32:55,810 --> 00:32:56,560 Então, não é uma má idéia. 705 00:32:56,560 --> 00:32:58,633 Outras idéias? 706 00:32:58,633 --> 00:32:59,132 Sim. 707 00:32:59,132 --> 00:33:00,060 >> AUDIÊNCIA: mensagem de erro? 708 00:33:00,060 --> 00:33:01,750 >> DAVID J. MALAN: Erro mensagem, OK, pode ser. 709 00:33:01,750 --> 00:33:02,250 O que mais? 710 00:33:02,250 --> 00:33:05,479 AUDIÊNCIA: Pode imprimir o suporte com o ponto e vírgula também? 711 00:33:05,479 --> 00:33:08,270 DAVID J. MALAN: Pode imprimir o suporte com o ponto e vírgula também. 712 00:33:08,270 --> 00:33:11,950 Então talvez essa barra invertida então é alguma tipo de terminous isso é importante. 713 00:33:11,950 --> 00:33:14,860 Quaisquer outros pensamentos? 714 00:33:14,860 --> 00:33:16,412 >> Assim, todas as boas idéias. 715 00:33:16,412 --> 00:33:18,370 E, na verdade, vai ser uma mensagem de erro. 716 00:33:18,370 --> 00:33:20,400 Isso é provavelmente mais provável ser a resposta em geral 717 00:33:20,400 --> 00:33:22,420 para as próximas semanas quando aprendemos a código aqui. 718 00:33:22,420 --> 00:33:27,680 >> Mas, por enquanto lembre-se de que os computadores apenas faça o que você diga a eles para fazer. 719 00:33:27,680 --> 00:33:30,400 Muito parecido com o de amendoim ridículo manteiga e geléia exemplo. 720 00:33:30,400 --> 00:33:33,860 Nossos computadores humanos só deveriam para fazer o que você disse para eles fazerem. 721 00:33:33,860 --> 00:33:36,250 Portanto, neste caso, se você não diga o computador 722 00:33:36,250 --> 00:33:41,190 para mover esse cursor piscando à linha seguinte, ele não vai fazê-lo. 723 00:33:41,190 --> 00:33:45,390 Então, quando eu executar este programa Agora, observe a diferença. 724 00:33:45,390 --> 00:33:46,900 >> Parece um bug. 725 00:33:46,900 --> 00:33:49,190 É um bug estética, talvez. 726 00:33:49,190 --> 00:33:53,310 Mas o que é diferente sobre este de saída em relação ao último obviamente? 727 00:33:53,310 --> 00:33:53,810 Sim. 728 00:33:53,810 --> 00:33:54,920 >> AUDIÊNCIA: Não fez uma nova linha. 729 00:33:54,920 --> 00:33:56,586 >> DAVID J. MALAN: Ele não fez uma nova linha. 730 00:33:56,586 --> 00:33:58,740 Agora, aqueles de vocês que tem páginas da web talvez feitas 731 00:33:58,740 --> 00:34:01,910 antes, você pode saber do BR tag ou a marca de parágrafo, 732 00:34:01,910 --> 00:34:03,120 muito semelhante em espírito. 733 00:34:03,120 --> 00:34:06,680 Um navegador da Web vão ignorá-lo até que você diga a ele exatamente o que fazer. 734 00:34:06,680 --> 00:34:10,020 Da mesma forma, é uma linguagem como C apenas vai fazer o que você diga a ele para fazer. 735 00:34:10,020 --> 00:34:12,730 >> Assim, o motivo que todos estes exemplos, 736 00:34:12,730 --> 00:34:15,350 até agora, temos uma espécie de casualmente tinha essa barra invertida 737 00:34:15,350 --> 00:34:18,560 lá dentro, que é o meio pelo qual você se expressa 738 00:34:18,560 --> 00:34:21,380 como um caractere de nova linha, por assim dizer. 739 00:34:21,380 --> 00:34:26,219 E você pode tipo de apreciar, talvez, que esta seria uma espécie de idiota 740 00:34:26,219 --> 00:34:27,070 se nada mais. 741 00:34:27,070 --> 00:34:29,150 Se eu quisesse uma nova linha, apenas pressionar Enter e, em seguida, tipo 742 00:34:29,150 --> 00:34:32,219 de massacrar o código assim realmente não deve esfregar-lhe o caminho certo. 743 00:34:32,219 --> 00:34:33,830 E mesmo se você não fizer isso realmente importa neste momento, 744 00:34:33,830 --> 00:34:35,830 você vai perceber que este não é particularmente 745 00:34:35,830 --> 00:34:37,870 boa parte de vista de código. 746 00:34:37,870 --> 00:34:39,969 >> E assim que o mundo anos atrás é decidido 747 00:34:39,969 --> 00:34:43,420 que quando você quer colocar o cursor para uma nova linha explicitamente, 748 00:34:43,420 --> 00:34:46,332 você deve dizer explicitamente nova linha, barra invertida n. 749 00:34:46,332 --> 00:34:48,040 E há alguma outra símbolos assim. 750 00:34:48,040 --> 00:34:50,719 Mas por enquanto vamos apenas concentrar em barra invertida n. 751 00:34:50,719 --> 00:34:53,790 >> Agora vamos fazer o programa um pouco mais interessante. 752 00:34:53,790 --> 00:34:59,200 Eu estou indo para ir em frente e desta vez abrir um novo arquivo. 753 00:34:59,200 --> 00:35:02,520 Vou guardá-lo como Olá-1.c. 754 00:35:02,520 --> 00:35:05,540 E apenas por diversão, eu vou ir colocá-lo em minha pasta Dropbox. 755 00:35:05,540 --> 00:35:09,030 >> Como você verá na CS50 documentação para o aparelho, 756 00:35:09,030 --> 00:35:11,210 ainda esta semana para o problema Conjunto 1, vamos incentivar 757 00:35:11,210 --> 00:35:13,230 você usar Dropbox ou algum serviço equivalente, 758 00:35:13,230 --> 00:35:15,430 porque, então, todo o seu código de vai ser feito automaticamente. 759 00:35:15,430 --> 00:35:17,830 E é por isso que eu tenho ido para essa pasta aqui. 760 00:35:17,830 --> 00:35:20,230 >> E agora eu vou escrever um programa um pouco diferente. 761 00:35:20,230 --> 00:35:24,740 Incluir, eu standard / O.h, void main int. 762 00:35:24,740 --> 00:35:29,660 E então aqui printf, Olá mundo, que é exatamente a mesma de antes. 763 00:35:29,660 --> 00:35:32,450 >> Mas agora eu quero imprimir algo isso é um pouco diferente. 764 00:35:32,450 --> 00:35:34,800 Eu quero imprimir, dizer: "Olá, David." 765 00:35:34,800 --> 00:35:37,590 Tudo bem, então, obviamente, deveria esperemos 766 00:35:37,590 --> 00:35:40,360 ser o caso de que se eu recompilar Neste programa, executá-lo novamente, 767 00:35:40,360 --> 00:35:41,840 ele vai dizer "Olá, David." 768 00:35:41,840 --> 00:35:45,160 >> Mas e se eu quiser introduzir este tipo de variável, 769 00:35:45,160 --> 00:35:49,240 a noção de um recipiente que está acontecendo para armazenar D-a-v-i-d e não é difícil de código que 770 00:35:49,240 --> 00:35:50,600 em meu programa. 771 00:35:50,600 --> 00:35:53,430 Bem, o que se eu começar fazer algo assim? 772 00:35:53,430 --> 00:35:57,120 >> String s, por isso esta é uma variável. 773 00:35:57,120 --> 00:36:00,250 Se você quer uma corda, A.K.A. uma palavra ou uma frase. 774 00:36:00,250 --> 00:36:03,485 Uma seqüência de caracteres é o que nós na programação chamar uma string. 775 00:36:03,485 --> 00:36:06,610 Nós apenas estamos indo para genericamente chamada ele é, porque ele é um bom nome simples. 776 00:36:06,610 --> 00:36:08,010 Mas eu poderia chamá-lo de nada. 777 00:36:08,010 --> 00:36:12,920 >> Eu vou dizer iguais string s entre aspas, "David", ponto e vírgula. 778 00:36:12,920 --> 00:36:18,330 E agora eu quero inserir D-a-v-i-d para o que eu sou impressão. 779 00:36:18,330 --> 00:36:23,720 E antes que vimos um teaser em a tela de uma sintaxe especial 780 00:36:23,720 --> 00:36:26,050 que nos permitiu substituto em um valor. 781 00:36:26,050 --> 00:36:29,250 Qual foi o especial símbolo alguns slides atrás? 782 00:36:29,250 --> 00:36:30,040 >> Assim por cento. 783 00:36:30,040 --> 00:36:33,830 Na época, era por cento d para o número decimal. 784 00:36:33,830 --> 00:36:35,850 Isso não parece realmente relevante aqui. 785 00:36:35,850 --> 00:36:38,650 Acontece que há outro símbolo de porcentagem, 786 00:36:38,650 --> 00:36:42,810 que representa a percentagem de s, que se encontra para um espaço reservado para a string. 787 00:36:42,810 --> 00:36:49,350 >> Então, agora, de forma muito simples, eu sou indo para ir fazer Olá-1, 788 00:36:49,350 --> 00:36:54,210 porque este arquivo é chamado Olá-1.c, e pressione Enter. 789 00:36:54,210 --> 00:36:56,230 E eu estraguei tudo. 790 00:36:56,230 --> 00:36:57,394 O que está acontecendo? 791 00:36:57,394 --> 00:37:00,560 Bem, aqui é onde nós temos que começar a Compreendo que estamos neste comando 792 00:37:00,560 --> 00:37:02,810 ambiente de linha, isto texto único ambiente. 793 00:37:02,810 --> 00:37:06,114 Não há clicando em ícones como pastas agora. 794 00:37:06,114 --> 00:37:07,280 E relembre um momento atrás. 795 00:37:07,280 --> 00:37:10,740 Em que pasta que eu disse Eu estava guardando meu código? 796 00:37:10,740 --> 00:37:11,657 Então a pasta Dropbox. 797 00:37:11,657 --> 00:37:12,989 Poderia ter sido chamado de qualquer coisa. 798 00:37:12,989 --> 00:37:14,530 Mas ele passa a ser chamado Dropbox. 799 00:37:14,530 --> 00:37:18,380 Então, eu de alguma forma precisa clicar duas vezes no essa pasta Dropbox, a fim de obter 800 00:37:18,380 --> 00:37:21,657 para ele e chegar a minha código chamado Olá-1.c. 801 00:37:21,657 --> 00:37:24,490 Na verdade, deixe-me ir em frente e minimizar Nesta janela por um momento. 802 00:37:24,490 --> 00:37:27,560 Assim como o Windows e Mac OS, existem pastas no Linux. 803 00:37:27,560 --> 00:37:29,410 Existem pastas na CS50 Appliance. 804 00:37:29,410 --> 00:37:32,380 É só agora estamos confinando nos a este ambiente texto. 805 00:37:32,380 --> 00:37:34,700 >> Mas se eu clicar duas vezes no Dropbox, notar que há 806 00:37:34,700 --> 00:37:37,210 é o arquivo que eu quero para compilar. 807 00:37:37,210 --> 00:37:41,430 Mas eu preciso esta em preto e branco janela de terminal, por assim dizer. 808 00:37:41,430 --> 00:37:45,750 Mas eu preciso, portanto, para se deslocar para essa pasta ou diretório. 809 00:37:45,750 --> 00:37:48,290 Então, um pouco misterioso, mas você vai se acostumar com isso também. 810 00:37:48,290 --> 00:37:50,430 >> No mundo do Linux, que por sua vez é o operacional 811 00:37:50,430 --> 00:37:54,860 sistema que está sendo executado dentro do CS50 Appliance, há um comando chamado CD. 812 00:37:54,860 --> 00:37:58,310 O que significa que eu posso fazer CD, espaço, Dropbox. 813 00:37:58,310 --> 00:37:59,900 CD, altere o diretório. 814 00:37:59,900 --> 00:38:00,400 Certo. 815 00:38:00,400 --> 00:38:02,890 De volta ao dia em que as pessoas eram inventando computadores e operando 816 00:38:02,890 --> 00:38:05,806 sistemas como esse, eles queriam digite o menor número de teclas digitadas possível. 817 00:38:05,806 --> 00:38:08,760 Assim, a maneira mais fácil de dizer diretório mudança foi CD. 818 00:38:08,760 --> 00:38:13,910 >> Então, se eu bater CD, espaço Dropbox, perceber o que mudou aqui. 819 00:38:13,910 --> 00:38:16,480 Dentro dos parênteses o aparelho é uma espécie 820 00:38:16,480 --> 00:38:19,360 de me agradando e lembrando-me onde estou. 821 00:38:19,360 --> 00:38:21,480 Assim, a pasta aberta é Dropbox. 822 00:38:21,480 --> 00:38:24,950 Se eu agora digite ls para lista, novamente sucinta, 823 00:38:24,950 --> 00:38:27,540 porque as pessoas não queriam escreva de volta no dia l-i-s-t. 824 00:38:27,540 --> 00:38:29,300 Então, eles, em vez tornou sl. 825 00:38:29,300 --> 00:38:30,110 >> Enter. 826 00:38:30,110 --> 00:38:35,740 Repare que eu ver duas coisas, Olá-1.c, e então essa coisa enigmática, fonte 1m. 827 00:38:35,740 --> 00:38:38,310 Isso é apenas minha maneira de dizer código-fonte para a semana 1 segunda-feira. 828 00:38:38,310 --> 00:38:42,020 Isso é uma pasta que eu baixei do Site da CS50 que fiz hoje cedo 829 00:38:42,020 --> 00:38:43,990 e basta colocá-lo no aparelho com antecedência. 830 00:38:43,990 --> 00:38:47,550 >> Mas, por enquanto a única coisa que interessa é fazer este programa. 831 00:38:47,550 --> 00:38:50,440 Então, quando eu digitar make Olá-1, Enter. 832 00:38:50,440 --> 00:38:51,320 Caramba. 833 00:38:51,320 --> 00:38:53,060 Algo deu errado. 834 00:38:53,060 --> 00:38:54,580 Então, vamos brincar com este apart. 835 00:38:54,580 --> 00:38:58,489 E, infelizmente, este é o lugar onde as coisas ficar um pouco estressante no início, 836 00:38:58,489 --> 00:39:00,280 pelo menos se você tiver Nunca programado antes. 837 00:39:00,280 --> 00:39:00,980 >> Meu Deus. 838 00:39:00,980 --> 00:39:04,990 Eu escrevi um programa de duas linhas e Eu tenho quatro linhas de erros. 839 00:39:04,990 --> 00:39:07,180 Então, o que está acontecendo aqui. 840 00:39:07,180 --> 00:39:11,370 Em primeiro lugar sempre rolar para trás e encontrar a primeira mensagem de erro, 841 00:39:11,370 --> 00:39:15,730 porque muitas vezes apenas compiladores se confundem com o que você e eu. 842 00:39:15,730 --> 00:39:17,000 Compiladores são muito burro. 843 00:39:17,000 --> 00:39:18,360 Eles só vou fazer o que você dizer-lhes o que fazer. 844 00:39:18,360 --> 00:39:21,484 E se você confundi-los, eles são apenas vai tipo de vomitar suas mãos 845 00:39:21,484 --> 00:39:25,010 e talvez lançar mais mensagens de erro que são realmente relevantes. 846 00:39:25,010 --> 00:39:26,380 >> Então, vamos olhar para o primeiro. 847 00:39:26,380 --> 00:39:27,540 Super enigmática em primeiro lugar. 848 00:39:27,540 --> 00:39:31,050 Mas aviso, aqui está o nome do arquivo em que eu estraguei tudo aparentemente. 849 00:39:31,050 --> 00:39:36,570 Colon 5, cólon 5 significa apenas em linha 5 no quinto personagem. 850 00:39:36,570 --> 00:39:39,760 Então quinta coluna de caracteres, se quiserem, de erro. 851 00:39:39,760 --> 00:39:41,870 Uso de seqüência de identificador não declarado. 852 00:39:41,870 --> 00:39:43,120 Você quis dizer padrão n? 853 00:39:43,120 --> 00:39:44,850 >> Não, eu quis dizer string. 854 00:39:44,850 --> 00:39:47,640 E então, é uma espécie de copiando e colando 855 00:39:47,640 --> 00:39:50,700 o que eu digitei para realmente chamar a minha atenção para onde eu estraguei tudo. 856 00:39:50,700 --> 00:39:54,260 Então, por algum motivo C, ou, pelo menos, o compilador 857 00:39:54,260 --> 00:39:56,470 não compreende a seqüência de palavras. 858 00:39:56,470 --> 00:39:57,890 E isso é porque nós o fizemos acima. 859 00:39:57,890 --> 00:40:01,440 Então cadeia não existir em C. O CS50 faz, 860 00:40:01,440 --> 00:40:03,380 para as primeiras semanas só da classe, 861 00:40:03,380 --> 00:40:05,700 é nós fornecemos alguma formação rodas, por assim dizer. 862 00:40:05,700 --> 00:40:11,160 E nós colocamos essas rodinhas dentro de um arquivo especial chamado CS50.h. 863 00:40:11,160 --> 00:40:14,970 >> Portanto, este é o segundo de dois arquivos nomes que aparentemente terminam em ponto h. 864 00:40:14,970 --> 00:40:16,300 Vamos rebobinar. 865 00:40:16,300 --> 00:40:19,360 Printf é uma declaração ou função que, aparentemente, imprime algo 866 00:40:19,360 --> 00:40:20,580 para a tela. 867 00:40:20,580 --> 00:40:23,470 Mas você não me viu implementar printf, certo. 868 00:40:23,470 --> 00:40:26,360 Alguém anos atrás implementado printf. 869 00:40:26,360 --> 00:40:30,420 Em que arquivo se você apostar que ele ou ela colocou a implementação 870 00:40:30,420 --> 00:40:34,270 para printf, o código para printf? 871 00:40:34,270 --> 00:40:36,860 >> Em um arquivo chamado padrão I / O.h. 872 00:40:36,860 --> 00:40:39,930 Na verdade, é provavelmente em dois arquivos, eu standard / O.h, 873 00:40:39,930 --> 00:40:42,650 que significa cabeçalho arquivo, e eu standard / O.c, 874 00:40:42,650 --> 00:40:44,060 que significa o código-fonte C. 875 00:40:44,060 --> 00:40:48,220 Que ele ou ela, há alguns anos se jogou o código que eles escreveram para o arquivo 876 00:40:48,220 --> 00:40:51,240 para que pessoas como nós anos mais tarde, pode incluí-lo, 877 00:40:51,240 --> 00:40:53,040 por assim dizer, em nossos próprios programas. 878 00:40:53,040 --> 00:40:56,320 >> E, de fato, é o que o sinal de libra seguido da palavra incluem faz. 879 00:40:56,320 --> 00:41:00,250 Ele olha para o disco rígido local, encontra o arquivo chamado padrão I / O.h, 880 00:41:00,250 --> 00:41:03,840 e, em seguida, de forma eficaz e cópias cola-lo dentro do meu próprio arquivo. 881 00:41:03,840 --> 00:41:07,210 Então agora o meu programa sabe como imprimir a tela. 882 00:41:07,210 --> 00:41:11,120 >> Então, por essa lógica, onde é definido corda? 883 00:41:11,120 --> 00:41:12,260 >> AUDIÊNCIA: CS50.h. 884 00:41:12,260 --> 00:41:13,290 >> DAVID J. MALAN: CS50.h. 885 00:41:13,290 --> 00:41:15,540 E, de fato, é isso que nós, o pessoal do núcleo, têm feito. 886 00:41:15,540 --> 00:41:19,590 Nós inventou alguns tipos de dados, por assim dizer, como uma corda, 887 00:41:19,590 --> 00:41:22,370 além de que você obter de graça, como um int. 888 00:41:22,370 --> 00:41:26,010 E vamos ver os outros como um char para um personagem e um pouco mais. 889 00:41:26,010 --> 00:41:30,670 Dentro de CS50.h aparentemente é pelo menos alguma menção de string. 890 00:41:30,670 --> 00:41:34,980 >> Então, agora deixe-me ir em frente e make reprise Olá-1. 891 00:41:34,980 --> 00:41:37,100 Vou aumentar o zoom novamente e cruzar os dedos. 892 00:41:37,100 --> 00:41:41,370 Agora por ter feito uma mudar Eu fixo a maioria das coisas. 893 00:41:41,370 --> 00:41:42,100 Mas dane-se. 894 00:41:42,100 --> 00:41:44,290 Mais por cento do que os argumentos dados. 895 00:41:44,290 --> 00:41:45,980 O que eu fiz de errado desta vez? 896 00:41:45,980 --> 00:41:47,420 >> Por isso, ainda é bastante enigmática. 897 00:41:47,420 --> 00:41:51,560 Mas este erro está na linha 7 e 21 caracteres. 898 00:41:51,560 --> 00:41:53,880 Então, vamos olhar para cima aqui. 899 00:41:53,880 --> 00:41:55,350 É um pouco sutil. 900 00:41:55,350 --> 00:41:59,167 Mas se você pensar sobre o que as idéias fundamentais aqui são, 901 00:41:59,167 --> 00:42:00,500 talvez possamos provocar este apart. 902 00:42:00,500 --> 00:42:02,300 >> Assim printf é o nome da função. 903 00:42:02,300 --> 00:42:04,960 Parênteses, até o momento, é assim como o que colocamos em torno 904 00:42:04,960 --> 00:42:07,005 as coisas que estamos passando como entradas para uma função. 905 00:42:07,005 --> 00:42:08,921 Tudo bem, apenas um convenção humana arbitrária. 906 00:42:08,921 --> 00:42:09,919 Use parênteses. 907 00:42:09,919 --> 00:42:12,460 Dentro desses parênteses temos vindo a colocar aspas duplas, 908 00:42:12,460 --> 00:42:14,810 e, em seguida, uma string como "Olá mundo". 909 00:42:14,810 --> 00:42:18,160 >> Mas nesse exemplo anterior muito brevemente fez olharmos com o Scratch. 910 00:42:18,160 --> 00:42:22,590 E nós tivemos o percentual d, o que mais estava dentro destes parênteses 911 00:42:22,590 --> 00:42:23,730 que eu chamei verbalmente? 912 00:42:23,730 --> 00:42:24,230 Sim. 913 00:42:24,230 --> 00:42:28,166 >> AUDIÊNCIA: Então é o que você está tomando [Inaudível] dentro [inaudível] 914 00:42:28,166 --> 00:42:30,200 o que estes [inaudível]? 915 00:42:30,200 --> 00:42:31,200 DAVID J. MALAN: Exatamente. 916 00:42:31,200 --> 00:42:32,700 Então tivemos a porcentagem d. 917 00:42:32,700 --> 00:42:36,620 Mas depois tivemos perto citação, vírgula, contador. 918 00:42:36,620 --> 00:42:37,120 Certo. 919 00:42:37,120 --> 00:42:40,680 Nós especificamos o que queremos fazer como o espaço reservado. 920 00:42:40,680 --> 00:42:44,621 Então o que eu vou fazer aqui é vírgula, o que você quer que eu coloque? 921 00:42:44,621 --> 00:42:45,120 AUDIÊNCIA: S. 922 00:42:45,120 --> 00:42:46,828 DAVID J. MALAN: S, porque s neste caso 923 00:42:46,828 --> 00:42:48,700 é o nome do recipiente de armazenamento. 924 00:42:48,700 --> 00:42:50,180 É o nome da taça de vidro. 925 00:42:50,180 --> 00:42:53,610 Enquanto antes era contador em que exemplo simples arranhão nós olhamos. 926 00:42:53,610 --> 00:42:56,630 Então, agora, tendo feito dois alterações, deixe-me aproximar 927 00:42:56,630 --> 00:42:59,800 e tentar mais uma vez compilar este programa. 928 00:42:59,800 --> 00:43:01,596 >> Agora eu vejo que a linha enigmática. 929 00:43:01,596 --> 00:43:03,470 Mas isso é realmente o nome do compilador. 930 00:43:03,470 --> 00:43:04,886 Tinido é o nome do compilador. 931 00:43:04,886 --> 00:43:07,100 Faça apenas está me salvando a dor de cabeça de sempre 932 00:43:07,100 --> 00:43:09,830 digitando o comando longo louca para fora. 933 00:43:09,830 --> 00:43:14,900 Portanto, agora se eu cortar ponto Olá-1, Eu veria "Olá, David." 934 00:43:14,900 --> 00:43:16,450 >> Muito abaixo do esperado, porém, certo? 935 00:43:16,450 --> 00:43:18,158 Poderíamos ter feito esta muito mais simplesmente 936 00:43:18,158 --> 00:43:20,940 sem falar sobre variáveis e CS50.h e tudo isso. 937 00:43:20,940 --> 00:43:23,080 Então, vamos torná-lo um pouco mais interessante. 938 00:43:23,080 --> 00:43:31,010 >> Além CS50.h, ter coisas como cordas 939 00:43:31,010 --> 00:43:34,550 declarada, a biblioteca CS50 também tem algumas funções. 940 00:43:34,550 --> 00:43:38,520 Então, assim como anos atrás, alguém escreveu printf e colocá-lo no padrão I / O.h 941 00:43:38,520 --> 00:43:39,530 e algum outro arquivo. 942 00:43:39,530 --> 00:43:44,010 >> Nós, a equipe CS50, escreveu uma função chamado nextchar, GetDouble, GetFloat, 943 00:43:44,010 --> 00:43:47,610 GetInt, GetLongLong, GetString, e colocamos aqueles dentro de um arquivo 944 00:43:47,610 --> 00:43:49,890 chamado CS50.h e CS50.c. 945 00:43:49,890 --> 00:43:51,880 E nós colocá-los dentro do CS50 Appliance. 946 00:43:51,880 --> 00:43:53,880 E as pessoas também podem baixá-los on-line se 947 00:43:53,880 --> 00:43:55,880 quer colocá-los em seu próprios computadores também. 948 00:43:55,880 --> 00:44:00,880 O que significa dizer que criamos funções que obter a entrada do usuário. 949 00:44:00,880 --> 00:44:02,930 Eu não sei o que todos desses tipos de dados são. 950 00:44:02,930 --> 00:44:06,490 GetInt é meio simples, como obter um número inteiro de alguma forma do utilizador. 951 00:44:06,490 --> 00:44:09,980 E GetString é, provavelmente, como get uma palavra ou uma frase do usuário. 952 00:44:09,980 --> 00:44:11,770 >> Então vamos focar nisso. 953 00:44:11,770 --> 00:44:14,710 E eu vou voltar para o aparelho e eu estou indo para ir em frente 954 00:44:14,710 --> 00:44:20,790 e salve este arquivo como, digamos Olá ele-2.c como minha segunda versão. 955 00:44:20,790 --> 00:44:23,030 E vamos fazer algumas mudanças. 956 00:44:23,030 --> 00:44:25,800 >> Desta vez, em vez de difícil codificação David, que 957 00:44:25,800 --> 00:44:29,120 torna incrivelmente consistente mas o programa abaixo do esperado, 958 00:44:29,120 --> 00:44:32,640 e se eu, em vez fazer GetString? 959 00:44:32,640 --> 00:44:35,660 Agora note GetString tem um parêntese de abertura, 960 00:44:35,660 --> 00:44:38,500 parêntesis fechado, porque ele não precisa de qualquer entrada. 961 00:44:38,500 --> 00:44:40,850 Ele só vai pegar uma string do usuário. 962 00:44:40,850 --> 00:44:42,460 >> E agora uma palavra em outra sintaxe. 963 00:44:42,460 --> 00:44:45,439 Semicolons apenas terminar uma linha de código. 964 00:44:45,439 --> 00:44:46,730 Você não precisa de todos os lugares. 965 00:44:46,730 --> 00:44:48,896 Mas isso só significa que eu sou feito com esta linha de código. 966 00:44:48,896 --> 00:44:51,080 Deixe-me passar para outro declaração ou função. 967 00:44:51,080 --> 00:44:53,010 Corda declara uma variável. 968 00:44:53,010 --> 00:44:55,920 Cadeia é como dizer dá-me uma tigela, por favor. 969 00:44:55,920 --> 00:44:57,940 E deixe-me colocar uma corda nele. 970 00:44:57,940 --> 00:44:59,430 >> E agora o sinal de igual. 971 00:44:59,430 --> 00:45:03,510 Qual é o sinal de igual essencialmente equivalente a? 972 00:45:03,510 --> 00:45:04,500 >> AUDIÊNCIA: Atribuir. 973 00:45:04,500 --> 00:45:06,190 >> DAVID J. MALAN: Sim, atribuindo um valor. 974 00:45:06,190 --> 00:45:09,872 Então, se eu, por exemplo, chamada esta função GetString, 975 00:45:09,872 --> 00:45:12,830 e vamos ver em um momento que é vai solicitar ao usuário uma string. 976 00:45:12,830 --> 00:45:17,810 Isso é como me deixar em seguida, escrever D--a-v i-d sobre um pedaço de papel. 977 00:45:17,810 --> 00:45:21,060 E quando eu digo cadeia s é igual a GetString, 978 00:45:21,060 --> 00:45:24,140 igual não significa realmente igual em programação C. 979 00:45:24,140 --> 00:45:27,880 Significa atribuir da direita lado para o lado esquerdo. 980 00:45:27,880 --> 00:45:29,510 >> Então eu comecei uma string. 981 00:45:29,510 --> 00:45:32,785 E o sinal de igual significa colocá-la no armazenamento recipiente chamado s. 982 00:45:32,785 --> 00:45:36,730 E Em seguida, passe esta off para printf para realmente fazer a sua coisa. 983 00:45:36,730 --> 00:45:39,790 >> Assim, o resultado final, então vai a olhar um pouco diferente. 984 00:45:39,790 --> 00:45:40,840 Vamos fazem Olá-2. 985 00:45:40,840 --> 00:45:43,940 986 00:45:43,940 --> 00:45:45,260 Ou poderia trabalhar. 987 00:45:45,260 --> 00:45:46,450 Você está acompanhando. 988 00:45:46,450 --> 00:45:47,940 Faça Olá-2 funcionou. 989 00:45:47,940 --> 00:45:52,640 Dot cortar Olá-2, Enter. 990 00:45:52,640 --> 00:45:54,620 >> Eu pareço ter um infinito loop ou algo assim. 991 00:45:54,620 --> 00:45:55,453 Não está acontecendo nada. 992 00:45:55,453 --> 00:45:56,134 Por quê? 993 00:45:56,134 --> 00:45:57,805 >> AUDIÊNCIA: Está fazendo um loop infinito. 994 00:45:57,805 --> 00:45:59,430 DAVID J. MALAN: É um loop infinito. 995 00:45:59,430 --> 00:46:02,710 É uma espécie de me esperando para realmente fornecê-lo com algumas entradas. 996 00:46:02,710 --> 00:46:05,800 Então deixe-me ir em frente e escrever em David, e pressione Enter. 997 00:46:05,800 --> 00:46:07,230 E agora ele diz "Olá, David." 998 00:46:07,230 --> 00:46:09,040 Se eu executá-lo novamente. 999 00:46:09,040 --> 00:46:11,530 Vamos digitar Rob, "Olá, Rob." 1000 00:46:11,530 --> 00:46:13,900 >> Agora este é o pior interface com o usuário de sempre. 1001 00:46:13,900 --> 00:46:16,110 O usuário é aparentemente deveria saber o que fazer. 1002 00:46:16,110 --> 00:46:17,120 Mas não importa. 1003 00:46:17,120 --> 00:46:19,570 Usando estes mesmo edifício blocos assim como no risco, 1004 00:46:19,570 --> 00:46:24,980 podemos resolver esse problema e dizer algo como o seu nome, por favor, cólon, 1005 00:46:24,980 --> 00:46:27,820 espaço, fechado citação, perto parêntese, ponto e vírgula. 1006 00:46:27,820 --> 00:46:30,680 Então, um monte de novo disparate com a sintaxe. 1007 00:46:30,680 --> 00:46:34,040 >> Mas repare que eu acabei de adicionar um parte do enigma acima desta 1008 00:46:34,040 --> 00:46:35,280 e acima deste. 1009 00:46:35,280 --> 00:46:38,870 Portanto, agora se eu executar novamente este, Olá-2, Enter. 1010 00:46:38,870 --> 00:46:41,180 Espere um minuto. 1011 00:46:41,180 --> 00:46:41,830 O que está errado? 1012 00:46:41,830 --> 00:46:43,570 Não está se comportando de forma diferente. 1013 00:46:43,570 --> 00:46:44,200 Sim. 1014 00:46:44,200 --> 00:46:46,010 >> AUDIÊNCIA: você não executar make novamente. 1015 00:46:46,010 --> 00:46:47,968 >> DAVID J. MALAN: Eu não fiz executar make de novo, certo. 1016 00:46:47,968 --> 00:46:49,430 Então eu mudei de código-fonte. 1017 00:46:49,430 --> 00:46:50,638 Mas, novamente, não há esse fluxo. 1018 00:46:50,638 --> 00:46:54,530 O código-fonte através do compilador dá Você é novo código objeto, ou 0s e 1s. 1019 00:46:54,530 --> 00:47:00,209 Então eu preciso realmente make reprise Olá-2 Enter. 1020 00:47:00,209 --> 00:47:01,750 OK, algo parece ter acontecido. 1021 00:47:01,750 --> 00:47:04,220 Dot cortar Olá-2. 1022 00:47:04,220 --> 00:47:05,390 Seu nome, por favor. 1023 00:47:05,390 --> 00:47:09,990 E para ser claro agora, porque é que o cursor na mesma linha? 1024 00:47:09,990 --> 00:47:10,490 Exatamente. 1025 00:47:10,490 --> 00:47:13,020 Eu não coloquei a barra invertida n-se aqui no meu código. 1026 00:47:13,020 --> 00:47:16,110 Então agora eu posso escrever algo como Daven, Enter. 1027 00:47:16,110 --> 00:47:18,710 Eu posso executá-lo novamente e digite algo como Gabe, Enter, 1028 00:47:18,710 --> 00:47:22,250 e nós temos um programa diferente de novo e de novo e de novo. 1029 00:47:22,250 --> 00:47:28,940 >> Agora, em última análise, vamos precisar utilizar algumas capacidades diferentes. 1030 00:47:28,940 --> 00:47:32,860 Precisamos introduzir em última análise, alguns condições de fazer as coisas condicionalmente. 1031 00:47:32,860 --> 00:47:35,550 Talvez laços para que possamos fazer coisas repetidas vezes. 1032 00:47:35,550 --> 00:47:38,220 >> Talvez seria bom se nós poderia implementar as nossas próprias funções, 1033 00:47:38,220 --> 00:47:41,355 como podemos implementar nosso próprio printf ou a nossa própria versão do GetString 1034 00:47:41,355 --> 00:47:45,870 GetFlow e, em última análise, porque mesmo usando este ambiente de linha de comando 1035 00:47:45,870 --> 00:47:49,780 que podemos fazer até o mais visualmente interessante de coisas. 1036 00:47:49,780 --> 00:47:51,950 >> De fato, em conclusão, deixe-me fazer isso. 1037 00:47:51,950 --> 00:47:54,020 Eu estou indo para ir em frente e fechar essas janelas 1038 00:47:54,020 --> 00:47:57,400 e abrir esse ícone aqui, que é apenas uma maior 1039 00:47:57,400 --> 00:48:00,020 versão do que incorporado janela de terminal. 1040 00:48:00,020 --> 00:48:02,329 Então Gedit tem não só o lugar para o meu código, 1041 00:48:02,329 --> 00:48:05,620 mas também construído em uma janela de terminal, o janela preto e branco onde eu possa correr 1042 00:48:05,620 --> 00:48:06,230 comandos. 1043 00:48:06,230 --> 00:48:08,600 >> Aconteceu de eu abrir uma versão maior desta. 1044 00:48:08,600 --> 00:48:11,170 E agora eu estou indo para ir para a pasta que eu já 1045 00:48:11,170 --> 00:48:13,150 colocar com antecedência no site do curso. 1046 00:48:13,150 --> 00:48:16,720 E eu estou indo para ir em frente e abrir um arquivo chamado thadgavin.c, 1047 00:48:16,720 --> 00:48:18,710 que foi escrito por outra pessoa. 1048 00:48:18,710 --> 00:48:21,220 >> E se olharmos para isso, este não é o tipo de código 1049 00:48:21,220 --> 00:48:24,370 vamos estar escrevendo desde O objetivo deste código 1050 00:48:24,370 --> 00:48:28,450 era escrever a mais bonita procurando o código que ele ou ela poderia, 1051 00:48:28,450 --> 00:48:31,290 independentemente de terem ou não outro ser humano jamais poderia 1052 00:48:31,290 --> 00:48:33,660 compreender este código. 1053 00:48:33,660 --> 00:48:37,050 >> Na verdade, todos os anos há é o que é chamado de um concurso C ofuscado, que 1054 00:48:37,050 --> 00:48:39,570 é para geeks reais que escrevem código que ninguém mais pode ler, 1055 00:48:39,570 --> 00:48:42,050 mas que faz algo ou realmente simples ou realmente incrível. 1056 00:48:42,050 --> 00:48:43,890 E nós pensamos Concluímos com este olhar 1057 00:48:43,890 --> 00:48:48,300 em algo que é bastante surpreendente você pode ter visto antes. 1058 00:48:48,300 --> 00:48:52,650 Mas vamos terminar nesta nota, corte de ponto, thadgavin. 1059 00:48:52,650 --> 00:48:53,860 Isso, então, é o que espera. 1060 00:48:53,860 --> 00:48:57,140 1061 00:48:57,140 --> 00:48:58,500 >> Isso é tudo para CS50. 1062 00:48:58,500 --> 00:48:59,935 Vamos vê-lo na quarta-feira. 1063 00:48:59,935 --> 00:49:04,284 1064 00:49:04,284 --> 00:49:10,016 >> [MÚSICA DE JOGO] 1065 00:49:10,016 --> 00:53:31,883