1 00:00:00,000 --> 00:00:01,500 >> [MÚSICA DE JOGO] 2 00:00:01,500 --> 00:00:11,000 3 00:00:11,000 --> 00:00:16,110 >> DAVID MALAN: Tudo bem essa é CS50 e este é o fim de uma semana. 4 00:00:16,110 --> 00:00:20,760 Então, eu gostaria de apresentar a minha ex- orientando, Andel Duff, que não só faz 5 00:00:20,760 --> 00:00:25,460 iPhone 5 está, assim como este púlpito, ele também faz carros. 6 00:00:25,460 --> 00:00:27,927 7 00:00:27,927 --> 00:00:29,510 ANSEL DUFF: Como vai, pessoal? 8 00:00:29,510 --> 00:00:31,980 Eu só quero dizer-lhe um pouco pouco sobre Formula SAE, da qual eu 9 00:00:31,980 --> 00:00:32,604 sou o capitão. 10 00:00:32,604 --> 00:00:33,437 É uma equipe do MIT. 11 00:00:33,437 --> 00:00:35,520 Eu só quero te dizer vocês um pouco sobre isso 12 00:00:35,520 --> 00:00:37,520 e esperamos gerar algum interesse. 13 00:00:37,520 --> 00:00:41,590 >> Então deixe-me passar por um algumas coisas sobre a nossa equipe. 14 00:00:41,590 --> 00:00:43,640 Então, nós estamos completamente funcionamento do estudante, em que todos 15 00:00:43,640 --> 00:00:47,300 do desenho membros, simular teste, e fabricante de um subsistema 16 00:00:47,300 --> 00:00:48,090 do carro. 17 00:00:48,090 --> 00:00:51,240 Nós temos nossa própria oficina mecânica e garagens, e N52-- ou muito, 18 00:00:51,240 --> 00:00:54,140 N51-- que é o mesmo edifício como o Museu da Ciência MIT. 19 00:00:54,140 --> 00:00:55,990 E nós somos o povo que dirigir o carro. 20 00:00:55,990 --> 00:00:58,340 Há uma competição nacional no inicio do verão, 21 00:00:58,340 --> 00:01:01,215 e depois há menor tiroteio competições ao longo do ano. 22 00:01:01,215 --> 00:01:04,400 E, então, fazer o treinamento de motorista dias para receber novos membros familiarizado. 23 00:01:04,400 --> 00:01:08,280 >> Nossos dias são de construção em Sábados onze horas - oito horas. 24 00:01:08,280 --> 00:01:11,060 O almoço eo jantar estão cuidando de, a partir de Bertucci e Beantown 25 00:01:11,060 --> 00:01:12,130 respectivamente. 26 00:01:12,130 --> 00:01:15,260 Temos uma reunião semanal e seminário, que é um curso de créditos. 27 00:01:15,260 --> 00:01:18,560 O que é novo a partir deste semestre, e também será para o próximo semestre, 28 00:01:18,560 --> 00:01:19,940 assim você pode cruzar-reg por isso. 29 00:01:19,940 --> 00:01:22,960 E depois temos a concepção, loja, e dias de CAD durante a semana, 30 00:01:22,960 --> 00:01:26,870 Considerando que os membros de forma autónoma Peças CAD, da ordem et cetera. 31 00:01:26,870 --> 00:01:29,200 >> Assim, para elétrica engenharia na equipe 32 00:01:29,200 --> 00:01:31,110 temos o nosso motor, sistema de alta tensão, 33 00:01:31,110 --> 00:01:33,390 que é executado em uma nominal 300 volts, que inclui 34 00:01:33,390 --> 00:01:35,360 motores, reguladores de motor, e baterias. 35 00:01:35,360 --> 00:01:37,235 Então, temos um baixo sistema de tensão, o qual é executado 36 00:01:37,235 --> 00:01:40,180 a 12 volts, que inclui controles, PODE nós, o cérebro 37 00:01:40,180 --> 00:01:41,570 caixa, e no painel de instrumentos. 38 00:01:41,570 --> 00:01:43,890 No que diz CS vai, o que fazemos tem manutenção do site 39 00:01:43,890 --> 00:01:47,940 que precisamos fazer para eventos, a adesão mudanças, novas imagens e material de PR. 40 00:01:47,940 --> 00:01:51,540 E depois temos o código que controla a carro para o nosso controle de tração, lançamento 41 00:01:51,540 --> 00:01:55,750 controle, controle painel, vetorização de torque, e sistemas de travagem regenerativa, que 42 00:01:55,750 --> 00:01:59,170 executar normalmente em MATLAB, Simulink e LabView. 43 00:01:59,170 --> 00:02:00,910 >> Diga-lhe um pouco sobre o carro. 44 00:02:00,910 --> 00:02:02,470 Portanto, é de cerca de 500 quilos. 45 00:02:02,470 --> 00:02:04,285 É regras limitados a 85 quilowatts. 46 00:02:04,285 --> 00:02:08,310 Tem 2 EMRAX 207 motores na para trás, um para cada roda traseira. 47 00:02:08,310 --> 00:02:11,880 Tem baterias custom-built a partir de células A123 bolsa prismáticos, 48 00:02:11,880 --> 00:02:14,780 num total de 300 volts e 5,6 quilowatts-hora. 49 00:02:14,780 --> 00:02:17,950 E é de acionamento direto com uma relação 2,64-1 unidade. 50 00:02:17,950 --> 00:02:20,970 Aqui estão algumas fotos que tomou dele em competição. 51 00:02:20,970 --> 00:02:25,820 Aqui está o cone de volta, nariz, e aqui estão os motores, 52 00:02:25,820 --> 00:02:29,682 os grandes discos pretos debaixo da mens et manus. 53 00:02:29,682 --> 00:02:32,140 Aqui está um slide que eu puxei fora do nosso sistema de competição. 54 00:02:32,140 --> 00:02:35,389 E esta é apenas a comparação de nosso carro para um par de carros disponíveis no mercado, 55 00:02:35,389 --> 00:02:38,380 como a KTM XBOW, Ariel Atom, e Caterha M 7-280. 56 00:02:38,380 --> 00:02:42,110 Se você estiver familiarizado com o preço, poder puxar peso, dólares por cavalos de potência, 57 00:02:42,110 --> 00:02:44,930 dólares por binário, e nosso carro sopra-los todos para fora da água. 58 00:02:44,930 --> 00:02:47,520 Se você tiver alguma dúvida, anote este endereço de e-mail. 59 00:02:47,520 --> 00:02:50,800 Atire nos um email para fsae@mit.edu. 60 00:02:50,800 --> 00:02:53,350 >> Estamos felizes em falar sobre qualquer coisa que você gostaria. 61 00:02:53,350 --> 00:02:55,600 Estudantes de Harvard são do tipo da minoria na equipe. 62 00:02:55,600 --> 00:02:58,350 Se você tiver alguma dúvida sobre que faça disparar um e-mail, 63 00:02:58,350 --> 00:03:00,810 feliz de falar, e eu vou a cabeça de volta para David. 64 00:03:00,810 --> 00:03:01,550 Obrigado. 65 00:03:01,550 --> 00:03:02,466 Eu aprecio isso, pessoal. 66 00:03:02,466 --> 00:03:03,615 [Aplausos] 67 00:03:03,615 --> 00:03:07,080 68 00:03:07,080 --> 00:03:10,980 >> DAVID MALAN: Ansel passou o verão trabalhar com a gente aqui no campus em CS50 69 00:03:10,980 --> 00:03:11,480 neste verão. 70 00:03:11,480 --> 00:03:13,505 E, além de trabalhar em coisas como as lâmpadas de binários, 71 00:03:13,505 --> 00:03:16,090 na verdade ele realmente abriu nossa eyes-- ea minha em particular-- 72 00:03:16,090 --> 00:03:20,535 para o que realmente a intersecção de não de hardware e software pode ser. 73 00:03:20,535 --> 00:03:23,410 Na verdade, um monte de coisas que ele só excursionou-lo através de, em última análise 74 00:03:23,410 --> 00:03:26,030 criado em software, e, em seguida, em última análise, fabricado 75 00:03:26,030 --> 00:03:27,299 no mundo real em hardware. 76 00:03:27,299 --> 00:03:29,590 Então, se você estiver interessado em explorar naquele cruzamento, 77 00:03:29,590 --> 00:03:31,430 talvez levar até esse grupo. 78 00:03:31,430 --> 00:03:34,140 >> Agora, entretanto, aqueles de vocês que são fãs de tecnologia, 79 00:03:34,140 --> 00:03:36,140 e os produtos da Apple em especial saber que há 80 00:03:36,140 --> 00:03:37,860 eram um casal de anúncios ontem. 81 00:03:37,860 --> 00:03:39,776 Mas nós pensamos em mostrar você que saiu 82 00:03:39,776 --> 00:03:43,590 alguns dias antes que você pode não ter visto. 83 00:03:43,590 --> 00:03:46,150 >> JORGEN EGHAMMER: Você sabe, uma vez em algum tempo algo 84 00:03:46,150 --> 00:03:49,540 vem que muda a forma como vivemos. 85 00:03:49,540 --> 00:03:53,479 Um dispositivo tão simples e intuitivo usá-lo se sente quase familiar. 86 00:03:53,479 --> 00:03:59,710 87 00:03:59,710 --> 00:04:04,138 Apresentando 2015 Catálogo IKEA. 88 00:04:04,138 --> 00:04:10,420 Não é um livro digital ou um e-book, é um livro-book. 89 00:04:10,420 --> 00:04:14,440 >> A primeira coisa a notar é nenhuma cabos, nem mesmo um cabo de alimentação. 90 00:04:14,440 --> 00:04:18,519 O Catálogo IKEA 2015 vem totalmente carregada, 91 00:04:18,519 --> 00:04:20,550 ea duração da bateria é eterna. 92 00:04:20,550 --> 00:04:27,300 A interface é de 7,5 por 8 polegadas, mas pode se expandir para 15 por 8 polegadas. 93 00:04:27,300 --> 00:04:32,410 A navegação é baseada em toque tátil tecnologia que você pode realmente sentir. 94 00:04:32,410 --> 00:04:37,120 >> Conteúdo vem pré-instalado via 328 páginas de alta definição 95 00:04:37,120 --> 00:04:40,180 de inspirar idéias de decoração para casa. 96 00:04:40,180 --> 00:04:43,740 Para iniciar a navegação, basta tocar e arrastar. 97 00:04:43,740 --> 00:04:50,870 Direita para a esquerda para mover para a frente, esquerda para a direita para se mover para trás. 98 00:04:50,870 --> 00:04:52,770 >> Observe outra coisa? 99 00:04:52,770 --> 00:04:53,780 Está certo. 100 00:04:53,780 --> 00:04:55,190 Sem lag. 101 00:04:55,190 --> 00:04:58,400 Cada página cristalina cargas instantaneamente, 102 00:04:58,400 --> 00:05:00,586 não importa o quão rápido você rolar. 103 00:05:00,586 --> 00:05:03,710 Se você quiser ter uma visão geral, apenas segure-o na palma da sua mão, 104 00:05:03,710 --> 00:05:06,816 e usando apenas o polegar, Velocidade navegar pelo conteúdo. 105 00:05:06,816 --> 00:05:10,930 >> Se você encontrar algo que você deseja salvar para mais tarde, você pode simplesmente marcar. 106 00:05:10,930 --> 00:05:17,620 E mesmo se você fechar o aplicativo, você pode facilmente encontrar o marcador novamente. 107 00:05:17,620 --> 00:05:18,490 Incrível. 108 00:05:18,490 --> 00:05:20,434 >> [Risos] 109 00:05:20,434 --> 00:05:21,406 [Aplausos] 110 00:05:21,406 --> 00:05:26,760 111 00:05:26,760 --> 00:05:29,870 Então, isso nos leva a o fim de semana um. 112 00:05:29,870 --> 00:05:31,760 Alguns anúncios agora. 113 00:05:31,760 --> 00:05:33,440 Assim, o corte está agora em progresso. 114 00:05:33,440 --> 00:05:36,860 Ir para este URL aqui em algum momento entre hoje e sexta-feira ao meio-dia 115 00:05:36,860 --> 00:05:39,960 realmente especificar se você está entre aqueles menos confortável, mais 116 00:05:39,960 --> 00:05:41,690 confortável, ou algures no meio. 117 00:05:41,690 --> 00:05:44,511 >> Este é tipicamente um daqueles coisas que você só tipo de saber. 118 00:05:44,511 --> 00:05:47,510 E, de fato, aqueles que são menos confortável provavelmente sabe tanto, 119 00:05:47,510 --> 00:05:49,634 aqueles de vocês que são mais confortável saber tanto, 120 00:05:49,634 --> 00:05:54,960 e, novamente, se você não tem certeza de que daqueles baldes você cair você está 121 00:05:54,960 --> 00:05:56,210 provavelmente em algum lugar no meio. 122 00:05:56,210 --> 00:05:59,810 Mas a certeza de que você pode trocar depois de algumas semanas se for necessário. 123 00:05:59,810 --> 00:06:02,620 >> Enquanto isso, para a próxima semana nós não começarmos secções por si só, 124 00:06:02,620 --> 00:06:04,760 mas seções super, que estão abertas a todos os alunos. 125 00:06:04,760 --> 00:06:08,220 No próximo domingo em um local para ser anunciado no site do curso 126 00:06:08,220 --> 00:06:10,190 teremos um para os menos confortáveis, 127 00:06:10,190 --> 00:06:12,470 , bem como para uma os mais confortável. 128 00:06:12,470 --> 00:06:15,460 E aqueles em algum lugar entre pode escolher qual dos dois, 129 00:06:15,460 --> 00:06:17,360 ou ambos, se você quiser, para sentar-in on. 130 00:06:17,360 --> 00:06:19,630 E o foco daqueles será, em última análise em C, 131 00:06:19,630 --> 00:06:22,440 que nós vamos continuar a nossa conversa de hoje. 132 00:06:22,440 --> 00:06:25,070 >> Problema definir 0, entretanto, é espero que em suas mãos. 133 00:06:25,070 --> 00:06:27,500 Oficialmente devido amanhã, Quinta-feira, ao meio-dia. 134 00:06:27,500 --> 00:06:29,490 A menos que você ganhar dinheiro com um de seus cinco dias de atraso, 135 00:06:29,490 --> 00:06:31,780 que traria até sexta-feira ao meio-dia. 136 00:06:31,780 --> 00:06:34,420 Conjunto de problemas 1 entretanto será publicado no site do curso. 137 00:06:34,420 --> 00:06:37,381 E esta será a nossa primeira incursão como uma classe em C. 138 00:06:37,381 --> 00:06:40,630 E esse conjunto de problemas de especificação irá orientá-lo por meio de um monte de a mecânica do que 139 00:06:40,630 --> 00:06:43,960 Começamos a conversar sobre na segunda-feira, e vamos continuar a falar sobre hoje. 140 00:06:43,960 --> 00:06:46,770 C, Linux, o CS50 aparelho, tudo isso 141 00:06:46,770 --> 00:06:48,990 esperam por você na especificação. 142 00:06:48,990 --> 00:06:52,840 >> Horário de atendimento entretanto estão em andamento, na sala de jantar de graduação. 143 00:06:52,840 --> 00:06:56,240 Confronto esta URL aqui para ver o agendar para hoje à noite e amanhã, 144 00:06:56,240 --> 00:06:57,930 Se você gostaria de participar. 145 00:06:57,930 --> 00:07:01,920 Perguntas Entretanto, para que você têm a oportunidade de fazer perguntas 146 00:07:01,920 --> 00:07:05,860 de forma assíncrona, 24/7, percebe que você é não se limitando a seções e escritório 147 00:07:05,860 --> 00:07:09,530 horas, mas sim esta ferramenta aqui, CS50 Discutir nesse URL 148 00:07:09,530 --> 00:07:12,150 será o de curso on-line software BBS, através do qual 149 00:07:12,150 --> 00:07:15,030 você pode fazer perguntas de colegas e também pessoal. 150 00:07:15,030 --> 00:07:18,492 Portanto, tenha em mente que o recurso também. 151 00:07:18,492 --> 00:07:20,200 Enquanto isso, uma tradição começa nesta sexta-feira. 152 00:07:20,200 --> 00:07:23,200 Como você deve ter vislumbrado a partir de vídeo teaser da quarta-feira passada, 153 00:07:23,200 --> 00:07:25,510 temos uma tradição mais toda sexta-feira durante o mandato 154 00:07:25,510 --> 00:07:28,750 de levar cerca de 50 alunos e funcionários de um restaurante local chamado 155 00:07:28,750 --> 00:07:31,510 Fogo e gelo, em que estamos tipicamente acompanhado por alguns ex-alunos 156 00:07:31,510 --> 00:07:33,850 ou amigos da indústria geralmente para aspirar 157 00:07:33,850 --> 00:07:35,780 para fazer uma grande classe sentir menor. 158 00:07:35,780 --> 00:07:37,560 Portanto, é um almoço completamente casual. 159 00:07:37,560 --> 00:07:40,160 Um grupo de nós, a equipe especialmente, vai jogar cadeiras musicais 160 00:07:40,160 --> 00:07:43,360 e conversar com os alunos sobre 50, a vida fora de 50, 161 00:07:43,360 --> 00:07:46,510 vida no futuro, o mundo real, Eu estou falando sobre as oportunidades de emprego 162 00:07:46,510 --> 00:07:47,680 com os amigos na indústria. 163 00:07:47,680 --> 00:07:51,110 >> Então, se você gostaria de se juntar a nós nesta sexta-feira, a cabeça a esta URL aqui. 164 00:07:51,110 --> 00:07:54,180 O espaço é limitado, mas vamos fazer isso recorrentemente ao longo do prazo. 165 00:07:54,180 --> 00:07:57,380 Chefe lá para cs50.harvard.edu/rsvp. 166 00:07:57,380 --> 00:07:59,380 E se você não entrar em desta vez, não se preocupe. 167 00:07:59,380 --> 00:08:02,390 Vamos fazê-lo novamente em Nas próximas semanas também. 168 00:08:02,390 --> 00:08:05,434 >> Portanto, esta é a imagem pintamos na semana passada, 169 00:08:05,434 --> 00:08:07,350 e você já deve ter sido meter na até agora. 170 00:08:07,350 --> 00:08:10,360 Mas vamos tentar ligar isso agora para o que vamos fazer hoje 171 00:08:10,360 --> 00:08:11,440 e daí em diante. 172 00:08:11,440 --> 00:08:14,760 Posso ter um voluntário? 173 00:08:14,760 --> 00:08:16,000 Tudo bem, ou vários. 174 00:08:16,000 --> 00:08:18,460 E aqui na final, com a camisa azul. 175 00:08:18,460 --> 00:08:20,329 Vamos para cima, qual o seu nome? 176 00:08:20,329 --> 00:08:20,870 ALANA: Alana. 177 00:08:20,870 --> 00:08:21,661 DAVID MALAN: Alana. 178 00:08:21,661 --> 00:08:25,100 Então Alana, por apenas um moment-- bom conhecer você-- 179 00:08:25,100 --> 00:08:28,260 vai desempenhar o papel desta função aqui. 180 00:08:28,260 --> 00:08:31,290 O bloco roxo temos chamado, até agora, uma função. 181 00:08:31,290 --> 00:08:34,830 Então o que eu estou indo para ir frente aqui e oferecer Alana 182 00:08:34,830 --> 00:08:38,380 é um pouco tag nome, para fazer claro qual o papel que você está jogando. 183 00:08:38,380 --> 00:08:39,753 >> Então você deve ser o bloco digamos. 184 00:08:39,753 --> 00:08:41,419 Se você quiser ir em frente e colocar isso no. 185 00:08:41,419 --> 00:08:43,169 E nós vamos manter esta super simples. 186 00:08:43,169 --> 00:08:46,180 Se o objetivo em questão é simplesmente agora a implementar com Alana, 187 00:08:46,180 --> 00:08:49,710 este chamado dizer bloco, aqui está como ele vai funcionar. 188 00:08:49,710 --> 00:08:52,574 Eu have-- vamos chamá-lo um argumento ou parâmetro, 189 00:08:52,574 --> 00:08:54,240 é realmente apenas uma folha de papel em branco. 190 00:08:54,240 --> 00:08:57,239 E é branco ao tipo de ser uma reminiscência da caixa branca na qual você 191 00:08:57,239 --> 00:08:58,080 pode escrever palavras. 192 00:08:58,080 --> 00:09:00,660 >> Enquanto isso, eu estou indo para ir aqui. 193 00:09:00,660 --> 00:09:06,560 Eu estou indo para ir em frente e escrever H-E G L-O--vírgula mundo. 194 00:09:06,560 --> 00:09:09,972 E agora eu, como diz o programador, não realmente sabe dizer alguma coisa. 195 00:09:09,972 --> 00:09:12,180 Eu posso vir acima com as palavras, mas eu não necessariamente 196 00:09:12,180 --> 00:09:15,220 sei como me expressar verbalmente ou na tela. 197 00:09:15,220 --> 00:09:17,280 E assim que eu vou a fazer é levar esta peça 198 00:09:17,280 --> 00:09:21,157 de funcionalidades, cuja input-- ou argumento, como vamos chamá-lo, 199 00:09:21,157 --> 00:09:23,990 Eu tenho escrito sobre este pedaço de paper-- e eu estou indo para terceirizar. 200 00:09:23,990 --> 00:09:26,831 >> E, na verdade esse é o papel que funciona de uma linguagem de programação 201 00:09:26,831 --> 00:09:27,330 pode jogar. 202 00:09:27,330 --> 00:09:29,246 Algo parecido com a palavra bloco pode ser terceirizado 203 00:09:29,246 --> 00:09:32,074 para alguém que realmente sabe o que ela ou ele está falando. 204 00:09:32,074 --> 00:09:33,990 Então, se você vai passar por cima aqui só por um momento, 205 00:09:33,990 --> 00:09:40,092 Vou passar esta entrada Alana, e pedir que você diz isso de entrada. 206 00:09:40,092 --> 00:09:41,202 >> ALANA: Olá, mundo. 207 00:09:41,202 --> 00:09:42,160 DAVID MALAN: É isso. 208 00:09:42,160 --> 00:09:43,326 Assim que existe uma função. 209 00:09:43,326 --> 00:09:46,556 Agora nós podemos tomá-lo um pouco mais, podemos dar um passo adiante aqui. 210 00:09:46,556 --> 00:09:48,180 Porque isso era claramente abaixo do esperado. 211 00:09:48,180 --> 00:09:51,670 Então, vamos agora converter isso em algo um pouco mais sofisticado. 212 00:09:51,670 --> 00:09:53,630 >> Então, isso, claro, é a nossa versão C. 213 00:09:53,630 --> 00:09:56,760 Portanto, agora se você quiser ter que um fora, que tag nome fora, 214 00:09:56,760 --> 00:09:58,530 e vamos ter que colocar em um novo nome. 215 00:09:58,530 --> 00:10:00,850 Mas, fundamentalmente, você está interpretando o mesmo papel, 216 00:10:00,850 --> 00:10:03,400 isso só acontece a ser chamado printf agora. 217 00:10:03,400 --> 00:10:06,930 >> O artigo é, é claro, vai provavelmente ser-- 218 00:10:06,930 --> 00:10:09,317 tal como é underwhelming-- vai ser o seguinte. 219 00:10:09,317 --> 00:10:10,650 Você agora é o printf função. 220 00:10:10,650 --> 00:10:13,300 Eu sou o chamador ou a programador, que quer 221 00:10:13,300 --> 00:10:15,745 ficar sobre os ombros de pessoas no passado como você, 222 00:10:15,745 --> 00:10:18,670 que já descobri como para realmente escrever algo. 223 00:10:18,670 --> 00:10:20,650 E assim, neste momento, em vez de dizer que vamos 224 00:10:20,650 --> 00:10:22,255 realmente usar nossa tela aqui. 225 00:10:22,255 --> 00:10:24,130 Então, se você gostaria de intensificar aqui, eu vou 226 00:10:24,130 --> 00:10:27,196 para passar novamente esta como entrada para meu amigo printf. 227 00:10:27,196 --> 00:10:29,320 Se você pudesse ir em frente e imprimir isso na tela, 228 00:10:29,320 --> 00:10:31,611 simplesmente desenhando com o dedo sobre o ecrã preto. 229 00:10:31,611 --> 00:10:43,680 230 00:10:43,680 --> 00:10:44,180 Excelente. 231 00:10:44,180 --> 00:10:47,350 Tudo bem, então um monte de suspense para como que ia jogar fora. 232 00:10:47,350 --> 00:10:51,390 >> Então agora vamos levar as coisas até um entalhe final, se pudéssemos, como se segue. 233 00:10:51,390 --> 00:10:53,980 Portanto, este é um programa C como se disse da última vez. 234 00:10:53,980 --> 00:10:57,460 E isso só faz o que você fez, imprime na tela, Olá, mundo. 235 00:10:57,460 --> 00:11:00,290 Mesmo que não haja claramente um monte material de distração lá em cima. 236 00:11:00,290 --> 00:11:03,630 Mas vamos levar as coisas acima de um entalhe e introduzir esta versão, que recordam 237 00:11:03,630 --> 00:11:06,160 foi a terceira versão acabamos com a última vez. 238 00:11:06,160 --> 00:11:09,120 >> E agora não há clareza dois usos de printf. 239 00:11:09,120 --> 00:11:12,280 Há duas chamadas para Alana neste caso para printf, 240 00:11:12,280 --> 00:11:14,740 mas há também uma chamada a outra função. 241 00:11:14,740 --> 00:11:17,150 O que é que a função claramente? 242 00:11:17,150 --> 00:11:17,650 GetString. 243 00:11:17,650 --> 00:11:18,980 >> Podemos conseguir mais um voluntário? 244 00:11:18,980 --> 00:11:20,980 OK, vamos lá para cima. 245 00:11:20,980 --> 00:11:21,805 Qual o seu nome? 246 00:11:21,805 --> 00:11:22,990 >> JAVIER: Javier. 247 00:11:22,990 --> 00:11:24,750 >> DAVID MALAN: Javier, vamos lá para cima. 248 00:11:24,750 --> 00:11:27,270 Assim, o papel de Javier é em este pedaço de papel. 249 00:11:27,270 --> 00:11:28,860 O que eu vou chamar genericamente s. 250 00:11:28,860 --> 00:11:32,250 Agora, esta é uma variável, é do tipo string, como se depreende 251 00:11:32,250 --> 00:11:34,290 pelo que a segunda linha do meio aí. 252 00:11:34,290 --> 00:11:36,540 E eu gostaria que você para ir buscar-me uma corda. 253 00:11:36,540 --> 00:11:40,120 Especificamente cabeça para baixo para a orquestra seção e obter-me o nome de alguém, 254 00:11:40,120 --> 00:11:43,142 e voltar com uma variável que contém esse valor. 255 00:11:43,142 --> 00:11:44,225 Ele pode ser quem você quiser. 256 00:11:44,225 --> 00:11:47,590 257 00:11:47,590 --> 00:11:48,520 >> Aqui vamos nós. 258 00:11:48,520 --> 00:11:53,620 259 00:11:53,620 --> 00:11:55,960 Tudo bem, Javier é escrevendo o nome. 260 00:11:55,960 --> 00:12:02,210 261 00:12:02,210 --> 00:12:03,280 Tudo certo. 262 00:12:03,280 --> 00:12:05,740 Todos nós podemos provavelmente imaginar como isso vai jogar fora. 263 00:12:05,740 --> 00:12:07,489 Nós talvez esteja belaboring o ponto de que 264 00:12:07,489 --> 00:12:10,320 uma função está fazendo, mas mesmo assim muito obrigado. 265 00:12:10,320 --> 00:12:13,890 >> Então Javier voltou esta cadeia aqui, o que, não consigo ver, 266 00:12:13,890 --> 00:12:15,800 Jonathan é a string que temos obtido. 267 00:12:15,800 --> 00:12:18,330 Então, agora que eu estou indo realmente para fornecer a Alana embora 268 00:12:18,330 --> 00:12:20,150 é algo um pouco diferente. 269 00:12:20,150 --> 00:12:23,800 Porque nesta versão do programa, em primeiro lugar, há o seu nome. 270 00:12:23,800 --> 00:12:26,160 Assim, o primeiro argumento Eu preciso fornecer Alana 271 00:12:26,160 --> 00:12:33,030 com vai ser literalmente o seu nome. 272 00:12:33,030 --> 00:12:35,280 Tudo bem, tão simples como isso Eu iria entregar isso a você. 273 00:12:35,280 --> 00:12:36,730 E enquanto eu escrevo o próximo argumento, se você 274 00:12:36,730 --> 00:12:39,230 quer ir em frente e escrever este na placa, vamos em frente 275 00:12:39,230 --> 00:12:42,659 e fazer o último exemplo aqui para fazer limpar o que está em última análise, tem que acontecer. 276 00:12:42,659 --> 00:12:44,450 Então diga o seu nome, escrevê-lo em direção ao topo 277 00:12:44,450 --> 00:12:47,220 se você não se importa, apenas para que temos espaço para uma segunda linha. 278 00:12:47,220 --> 00:12:52,890 Porque a última coisa que eu vou agora fornecer-lhe não uma, 279 00:12:52,890 --> 00:12:57,220 mas dois pedaços de papel. 280 00:12:57,220 --> 00:12:58,074 >> Tudo certo. 281 00:12:58,074 --> 00:13:01,920 H-L-L-L-S vírgula e, em seguida, uma linha em branco. 282 00:13:01,920 --> 00:13:04,780 Então o que eu estou prestes a entregar Alana agora é algo um pouco diferente. 283 00:13:04,780 --> 00:13:08,600 Não só ela está recebendo este, onde preencher o vazio representa 284 00:13:08,600 --> 00:13:12,050 que percent-- qual foi o espaço reservado estamos usando? 285 00:13:12,050 --> 00:13:13,890 Sim, então por cento s. 286 00:13:13,890 --> 00:13:16,530 Enquanto isso, eu vou passar ela em um segundo argumento, que 287 00:13:16,530 --> 00:13:19,290 é precisamente o que Javier recuperado a partir de Jonathan. 288 00:13:19,290 --> 00:13:20,534 >> Então deixe-me dar-lhe os dois. 289 00:13:20,534 --> 00:13:22,575 Se você gostaria de, vá em frente e imprimir o efeito. 290 00:13:22,575 --> 00:13:25,660 291 00:13:25,660 --> 00:13:28,130 O que está acontecendo em última análise, agora é, Alana novamente 292 00:13:28,130 --> 00:13:29,410 está fazendo o papel de printf. 293 00:13:29,410 --> 00:13:32,160 Javier estava jogando o papel de GetString. 294 00:13:32,160 --> 00:13:34,700 Então essa será a sua lembrança. 295 00:13:34,700 --> 00:13:39,910 E, finalmente, o que está acontecendo, apesar de este hello-- sim ir em frente e vírgula. 296 00:13:39,910 --> 00:13:41,410 ALANA: Recebi este ainda ou não? 297 00:13:41,410 --> 00:13:43,451 DAVID MALAN: Sim, você recebeu os dois ao mesmo tempo. 298 00:13:43,451 --> 00:13:45,740 Assim, a idéia é que você agora pode virar a página 299 00:13:45,740 --> 00:13:50,000 para lidar com o segundo destas duas entradas. 300 00:13:50,000 --> 00:13:53,280 Portanto, esta é apenas a martelar a apontam que, enquanto Alana executado 301 00:13:53,280 --> 00:13:55,830 esta linha verde aqui, e então Javier fez isso para nós 302 00:13:55,830 --> 00:13:57,820 e voltar para me algo vamos chamá-s, mas foi realmente 303 00:13:57,820 --> 00:13:59,520 apenas aquele pedaço de papel de seu próprio. 304 00:13:59,520 --> 00:14:02,320 E agora Alana fez esta terceira linha. 305 00:14:02,320 --> 00:14:06,010 >> E apesar de tudo isso parece tão incrivelmente enigmática talvez 306 00:14:06,010 --> 00:14:08,870 à primeira vista, é realmente É tão simples como isso. 307 00:14:08,870 --> 00:14:11,390 Passando entradas ao redor, obter resultados, quer 308 00:14:11,390 --> 00:14:14,560 sendo entregue fisicamente para trás alguma coisa, ou vendo um efeito colateral desse jeito. 309 00:14:14,560 --> 00:14:17,170 Algo visualmente escrito na tela. 310 00:14:17,170 --> 00:14:19,990 Então, vamos em frente e agradecer Alana e Javier, 311 00:14:19,990 --> 00:14:25,012 que estava aqui embaixo, para se juntar a nós aqui em cima. 312 00:14:25,012 --> 00:14:25,934 >> [Aplausos] 313 00:14:25,934 --> 00:14:29,360 314 00:14:29,360 --> 00:14:33,480 >> Então agora vamos tomar como certo o quão simples tudo isso poderia ser. 315 00:14:33,480 --> 00:14:36,775 E vamos continuar a verdade fazer alguma coisa no código atual. 316 00:14:36,775 --> 00:14:40,620 Então, na tela aqui está um screenshot do assim chamado aparelho CS50. 317 00:14:40,620 --> 00:14:43,980 E se você tivesse que no, como um 02:00 de quarta-feira à tarde, 318 00:14:43,980 --> 00:14:46,602 explicar para algum amigo CS50 que o aparelho é, 319 00:14:46,602 --> 00:14:48,185 como você definiria em uma frase? 320 00:14:48,185 --> 00:14:52,160 321 00:14:52,160 --> 00:14:53,240 Qualquer uma frase? 322 00:14:53,240 --> 00:14:54,876 Sim? 323 00:14:54,876 --> 00:14:57,334 ALUNO: É como um programa que faz com que o computador de todos 324 00:14:57,334 --> 00:14:58,460 rodar com o mesmo sistema. 325 00:14:58,460 --> 00:14:59,210 DAVID MALAN: Good! 326 00:14:59,210 --> 00:15:02,810 É um programa que permite que todo mundo computador para executar com o mesmo sistema. 327 00:15:02,810 --> 00:15:04,920 É uma espécie de seu próprio exemplar de uma operação 328 00:15:04,920 --> 00:15:07,540 sistema que passa a ser chamado Ubuntu Linux. 329 00:15:07,540 --> 00:15:11,070 E ele é executado de forma eficaz dentro de uma janela em seu próprio Mac ou PC, 330 00:15:11,070 --> 00:15:15,080 para que este caminho certo para fora do portão Na 1 ª semana, todos aqui na classe 331 00:15:15,080 --> 00:15:17,590 tem acesso às mesmas ferramentas, a mesma configuração, 332 00:15:17,590 --> 00:15:21,250 e não há nenhuma curva de aprendizagem específica a um Mac ou um PC em particular. 333 00:15:21,250 --> 00:15:25,620 >> Agora abrimos, dentro do CS50 aparelho na segunda-feira, aqui neste programa. 334 00:15:25,620 --> 00:15:27,040 Acontece a ser chamado gedit. 335 00:15:27,040 --> 00:15:29,050 Mas isso é realmente apenas um editor gráfico. 336 00:15:29,050 --> 00:15:33,170 É algo como o bloco de notas ou texto Editar no Windows ou Mac OS, respectivamente. 337 00:15:33,170 --> 00:15:36,720 E eu propus que houve realmente três peças importantes para esta tela. 338 00:15:36,720 --> 00:15:39,560 A parte superior é onde você iria escrever seu código. 339 00:15:39,560 --> 00:15:44,080 E é aí que passamos grande parte do nosso três exemplos na aula de segunda-feira. 340 00:15:44,080 --> 00:15:47,650 O fundo chamamos o que, esta janela preta, certo? 341 00:15:47,650 --> 00:15:48,640 >> ALUNO: Compiler? 342 00:15:48,640 --> 00:15:51,500 >> DAVID MALAN: Compiler nós acessado por meio dessa janela. 343 00:15:51,500 --> 00:15:53,040 Mas de modo geral. 344 00:15:53,040 --> 00:15:54,540 Sim, era apenas uma janela de terminal. 345 00:15:54,540 --> 00:15:57,780 Este é um termo antigo que era apenas descreve essencialmente um piscar 346 00:15:57,780 --> 00:16:01,910 rápida, que anos atrás costumava ser em um desses grandes monitores CRT estilo. 347 00:16:01,910 --> 00:16:04,300 Mas hoje em dia é uma espécie de virtual no software. 348 00:16:04,300 --> 00:16:06,710 E as janelas de terminal nos permitirá digitar comandos. 349 00:16:06,710 --> 00:16:11,750 É uma espécie de versão simplificada da interface do usuário ou interface do usuário. 350 00:16:11,750 --> 00:16:14,060 Não é uma gráfica interface do usuário ou GUI, 351 00:16:14,060 --> 00:16:17,250 é uma interface baseada em texto ou uma interface de linha de comando. 352 00:16:17,250 --> 00:16:20,770 >> E de fato é aí que, em última instância Eu era capaz de escrever algum código. 353 00:16:20,770 --> 00:16:24,200 Uma vez que eu tinha escrito algum código, porém, lembro que eu usei este comando. 354 00:16:24,200 --> 00:16:26,210 E, como o nome tipo de sugere, esta 355 00:16:26,210 --> 00:16:29,860 me permite fazer uma programa chamado Olá. 356 00:16:29,860 --> 00:16:33,400 Mas o que ele realmente está fazendo? 357 00:16:33,400 --> 00:16:36,180 Bem make estava tomando meu entrada, o meu código-fonte, 358 00:16:36,180 --> 00:16:39,380 e convertê-lo para o que, em última análise,? 359 00:16:39,380 --> 00:16:40,060 >> Código objeto. 360 00:16:40,060 --> 00:16:42,790 E código objeto é apenas uma fantasia maneira de dizer zeros e uns. 361 00:16:42,790 --> 00:16:46,420 E, em seguida, uma vez que eu queria para executar esse código objeto, 362 00:16:46,420 --> 00:16:50,940 Uma vez eu quis passar como entrada os zeros e uns em meu computador de 363 00:16:50,940 --> 00:16:54,430 cérebro, o chamado CPU ou a unidade de processamento central, 364 00:16:54,430 --> 00:16:55,730 Eu tinha que executar o programa. 365 00:16:55,730 --> 00:16:59,042 Mas não foi um simples na segunda-feira como apenas um duplo clique algum ícone. 366 00:16:59,042 --> 00:17:01,375 O que em vez que eu tenho que fazer, a fim de executar um programa? 367 00:17:01,375 --> 00:17:04,130 368 00:17:04,130 --> 00:17:07,890 >> O que foi segundo comando? 369 00:17:07,890 --> 00:17:09,619 Estou ouvindo um pouco de barras? 370 00:17:09,619 --> 00:17:10,544 Sim, sim? 371 00:17:10,544 --> 00:17:12,474 >> ALUNO: Dot corte e o nome do programa. 372 00:17:12,474 --> 00:17:13,349 DAVID MALAN: Exatamente. 373 00:17:13,349 --> 00:17:15,030 Dot barra eo nome do programa. 374 00:17:15,030 --> 00:17:16,210 Agora o que isso significa? 375 00:17:16,210 --> 00:17:19,470 Bem dot é apenas uma maneira misteriosa de dizer diretório atual. 376 00:17:19,470 --> 00:17:23,440 Seja qual for a pasta que você está é como referenciado, é representado como ponto. 377 00:17:23,440 --> 00:17:26,680 A barra é apenas o que você já viu no Mac OS e Windows há anos, 378 00:17:26,680 --> 00:17:30,329 é um separador entre um diretório ou pasta e do resto de algum nome. 379 00:17:30,329 --> 00:17:32,620 No Windows isso acontece para ir para trás, em Linux e Mac 380 00:17:32,620 --> 00:17:34,210 OS acontece a ir para a frente. 381 00:17:34,210 --> 00:17:37,560 Mas é apenas o separador, por isso é apenas um detalhe sintático desinteressante. 382 00:17:37,560 --> 00:17:40,440 >> A parte suculenta do curso é o nome do programa, Olá. 383 00:17:40,440 --> 00:17:42,650 E é isso que fazem criou para nós. 384 00:17:42,650 --> 00:17:44,910 É emitido o arquivo para nós. 385 00:17:44,910 --> 00:17:46,700 Mas como chegamos a esse ponto? 386 00:17:46,700 --> 00:17:48,870 Vamos agora pedir ao pergunta, o que foi realmente 387 00:17:48,870 --> 00:17:52,470 acontecendo aqui, pelo menos com relação a alguma desta sintaxe? 388 00:17:52,470 --> 00:17:57,000 >> Assim, em uma frase mais ou menos, como é que vamos explicar afastado 389 00:17:57,000 --> 00:17:59,020 Nesta primeira linha que é destacadas em verde? 390 00:17:59,020 --> 00:18:02,998 O que foi que a primeira linha fazendo, no que diz respeito ao meu programa? 391 00:18:02,998 --> 00:18:03,974 Sim? 392 00:18:03,974 --> 00:18:05,067 >> Estudante: [inaudível]. 393 00:18:05,067 --> 00:18:06,150 DAVID MALAN: Diga isso de novo? 394 00:18:06,150 --> 00:18:08,734 ALUNO: Incluindo e download funções passadas [inaudível]. 395 00:18:08,734 --> 00:18:09,483 DAVID MALAN: Good. 396 00:18:09,483 --> 00:18:11,900 Incluindo, eu não vou dizer o download, mas digamos 397 00:18:11,900 --> 00:18:15,500 incluindo funções que as pessoas ter escrito no passado. 398 00:18:15,500 --> 00:18:18,260 E essas funções são implementadas em algum lugar no meu computador. 399 00:18:18,260 --> 00:18:20,470 Alguém escreveu um arquivo anos atrás, e esse arquivo 400 00:18:20,470 --> 00:18:23,490 está em algum lugar dentro do CS50 aparelho, ou no meu disco rígido 401 00:18:23,490 --> 00:18:24,480 de modo mais geral. 402 00:18:24,480 --> 00:18:27,810 E assim, esta linha é essencialmente dizendo: ir encontrar esse arquivo, E / S padrão dot 403 00:18:27,810 --> 00:18:31,740 h, e copiar e colar o seu conteúdo aqui no topo do meu arquivo 404 00:18:31,740 --> 00:18:33,860 para que eu não tenho que fazer isso manualmente mim. 405 00:18:33,860 --> 00:18:40,970 >> E entre as peças mais suculentas dentro de que arquivo que dizia ser o que função? 406 00:18:40,970 --> 00:18:45,740 Qual a função que nós dissemos foi declarado ou mencionado em E / S padrão dot h 407 00:18:45,740 --> 00:18:47,120 provavelmente? 408 00:18:47,120 --> 00:18:47,900 Printf, certo? 409 00:18:47,900 --> 00:18:50,797 Nós não escrevemos sobre printf Segunda-feira, ele só existiu. 410 00:18:50,797 --> 00:18:52,880 Muito parecido com Alana acabou em cima do palco e ela só 411 00:18:52,880 --> 00:18:55,540 existia e sabia como desenhar algo na tela, 412 00:18:55,540 --> 00:18:58,660 de modo que printf existir durante muitos anos. 413 00:18:58,660 --> 00:19:00,240 E assim é assim que acessá-lo. 414 00:19:00,240 --> 00:19:03,280 Agora, se vamos passar aqui, principal era que análogo 415 00:19:03,280 --> 00:19:06,620 disse para a peça de quebra-cabeça chamado quando clicado bandeira verde 416 00:19:06,620 --> 00:19:07,620 no mundo do Scratch. 417 00:19:07,620 --> 00:19:10,130 É apenas uma espécie de nome padrão que os seres humanos 418 00:19:10,130 --> 00:19:13,340 Decidiu representaria o padrão ponto de entrada para um programa. 419 00:19:13,340 --> 00:19:16,540 O pedaço de código de programação que é executado pela primeira vez. 420 00:19:16,540 --> 00:19:19,700 >> Enquanto isso, estas chaves são como o tipo de formato curvo 421 00:19:19,700 --> 00:19:21,410 de muitas dessas peças arranhar amarelas. 422 00:19:21,410 --> 00:19:24,860 Eles tipo de encapsular um conjunto bando de instruções juntos. 423 00:19:24,860 --> 00:19:28,350 Por isso, apenas uma espécie de ligação entre as algumas funcionalidades relacionadas. 424 00:19:28,350 --> 00:19:33,750 printf, claro, é uma função que imprime na tela, como acabamos de fazer. 425 00:19:33,750 --> 00:19:35,190 >> E esses parênteses? 426 00:19:35,190 --> 00:19:38,770 Como você define-- Mesmo que você tenha nunca programou antes, mas apenas com base 427 00:19:38,770 --> 00:19:41,320 agora um aumento espero que a intuição, o que 428 00:19:41,320 --> 00:19:43,290 são os parênteses fazendo por nós aqui? 429 00:19:43,290 --> 00:19:45,450 Ou o que eles estão ao redor? 430 00:19:45,450 --> 00:19:46,360 Sim? 431 00:19:46,360 --> 00:19:49,360 >> ALUNO: Eles estão dizendo que você vai imprimir com printf. 432 00:19:49,360 --> 00:19:52,401 >> DAVID MALAN: Sim, eles estão dizendo que você vai imprimir com printf. 433 00:19:52,401 --> 00:19:56,260 Ou, mais geralmente, eles são em torno das entradas para a função. 434 00:19:56,260 --> 00:19:58,530 Então, você quase pode pensar desses parênteses 435 00:19:58,530 --> 00:20:01,620 como sendo o metal clipe nesta área de transferência. 436 00:20:01,620 --> 00:20:05,940 É o que está segurando, é o que é vai ser usado para fornecer argumentos 437 00:20:05,940 --> 00:20:08,500 para a função, em que Neste caso é chamado de printf. 438 00:20:08,500 --> 00:20:12,390 >> Assim, em geral, quase qualquer vez que chamar uma função, 439 00:20:12,390 --> 00:20:14,280 vamos ver um par de parênteses. 440 00:20:14,280 --> 00:20:17,000 Talvez com alguma coisa nele, como agora, talvez nada nele. 441 00:20:17,000 --> 00:20:19,770 Mas é aí que você colocaria as entradas ou os chamados argumentos 442 00:20:19,770 --> 00:20:20,680 a uma função. 443 00:20:20,680 --> 00:20:22,470 >> Aqui está um tal argumento. 444 00:20:22,470 --> 00:20:24,467 Eu destacou tudo entre as aspas, 445 00:20:24,467 --> 00:20:26,300 pois verifica-se neste linguagem chamada 446 00:20:26,300 --> 00:20:29,950 C, quando pretender representar uma string-- que é uma palavra ou uma frase 447 00:20:29,950 --> 00:20:33,470 ou até mesmo uma paragraph-- você tem que cercá-la com aspas duplas. 448 00:20:33,470 --> 00:20:35,420 Não citações simples, aspas duplas. 449 00:20:35,420 --> 00:20:37,460 E isso é exatamente o que eu fiz aqui. 450 00:20:37,460 --> 00:20:39,900 >> Enquanto isso, há um mal-cheiroso símbolo para o fim ali. 451 00:20:39,900 --> 00:20:41,600 A barra invertida n. 452 00:20:41,600 --> 00:20:43,460 O que nós dizemos que representou? 453 00:20:43,460 --> 00:20:44,093 Sim? 454 00:20:44,093 --> 00:20:44,980 >> ALUNO: A nova linha. 455 00:20:44,980 --> 00:20:45,896 >> DAVID MALAN: Nova linha. 456 00:20:45,896 --> 00:20:47,910 Certo, você não geralmente pressione Enter quando 457 00:20:47,910 --> 00:20:50,430 você deseja que o programa para cuspir uma nova linha. 458 00:20:50,430 --> 00:20:54,210 Em vez disso você diga a ele explicitamente com esta peça reconhecidamente arcano 459 00:20:54,210 --> 00:20:58,770 de sintaxe, barra invertida n, que você quer uma nova linha para ir lá. 460 00:20:58,770 --> 00:20:59,810 Finalmente, o ponto e vírgula. 461 00:20:59,810 --> 00:21:01,560 Nós realmente não falar muito sobre isso, 462 00:21:01,560 --> 00:21:04,893 e, de longe, esta será a ruína de alguns de sua existência para o primeiro problema 463 00:21:04,893 --> 00:21:07,990 definido, quando você apenas não percebeu você esqueceu algo tão estúpido 464 00:21:07,990 --> 00:21:08,614 como um ponto e vírgula. 465 00:21:08,614 --> 00:21:11,600 E geralmente colocando-a não vai resolver esse problema. 466 00:21:11,600 --> 00:21:13,511 Mas o que ele está fazendo para nós, você diria? 467 00:21:13,511 --> 00:21:15,670 >> Estudante: [inaudível]. 468 00:21:15,670 --> 00:21:17,484 >> DAVID MALAN: Desculpe? 469 00:21:17,484 --> 00:21:18,532 >> Estudante: [inaudível]. 470 00:21:18,532 --> 00:21:19,990 DAVID MALAN: Finalizando um comunicado. 471 00:21:19,990 --> 00:21:22,770 É mais ou menos como o período em o fim de uma frase Inglês, 472 00:21:22,770 --> 00:21:25,790 Considerando que, neste idioma C está terminando um comunicado. 473 00:21:25,790 --> 00:21:29,250 Uma instrução de programação código que você apenas quer dizer, 474 00:21:29,250 --> 00:21:30,500 Eu estou satisfeito com isso. 475 00:21:30,500 --> 00:21:32,240 Agora note que é o único aqui. 476 00:21:32,240 --> 00:21:34,614 Então você não quer entrar em o hábito de colocar pontos e vírgulas 477 00:21:34,614 --> 00:21:36,190 após cada parêntese fechado. 478 00:21:36,190 --> 00:21:38,610 Por exemplo não há nenhum ao lado de anular, e nós vamos 479 00:21:38,610 --> 00:21:40,430 voltar no futuro para o meio vazio. 480 00:21:40,430 --> 00:21:44,080 Mas neste caso o printf é uma função, ou uma declaração de que está sendo usado, 481 00:21:44,080 --> 00:21:47,420 e por isso queremos ter que terminal no final do mesmo. 482 00:21:47,420 --> 00:21:50,980 >> E eu estou intencionalmente pegando no C. E francamente um monte de linguagens como C, C ++ 483 00:21:50,980 --> 00:21:55,000 Java, JavaScript, e qualquer número de outras línguas tem um monte delas 484 00:21:55,000 --> 00:21:56,730 tipo de detalhes sintáticos. 485 00:21:56,730 --> 00:22:00,120 Isso, certamente, se você é novo para programação pode realmente te enganar. 486 00:22:00,120 --> 00:22:02,307 E você vai, marcar meu palavras, alguns de vocês vão 487 00:22:02,307 --> 00:22:04,140 ter essa experiência em horário de expediente ou tarde 488 00:22:04,140 --> 00:22:07,554 à noite trabalhando em algum p-set, onde seu programa maldita só não compila, 489 00:22:07,554 --> 00:22:09,470 ele não é executado, você tem nenhuma idéia o que está errado, 490 00:22:09,470 --> 00:22:11,513 parece completamente logicamente correta para você. 491 00:22:11,513 --> 00:22:13,596 E é porque você se esqueceu algo como bater 492 00:22:13,596 --> 00:22:15,250 um ponto e vírgula no final da linha de alguns. 493 00:22:15,250 --> 00:22:17,590 >> Mas estes são os tipos de coisas que você é vai aprender imediatamente para ver. 494 00:22:17,590 --> 00:22:20,048 E, na verdade estas são as coisas que e TF da do CA tem 495 00:22:20,048 --> 00:22:23,210 foi uma espécie de treinamento para ver muito mais rapidamente do que você. 496 00:22:23,210 --> 00:22:26,610 E assim, esta é apenas a dizer, como você mergulho no conjunto de problemas 1, especialmente, 497 00:22:26,610 --> 00:22:28,217 não se sente frustrado por isso. 498 00:22:28,217 --> 00:22:30,050 Assim que tipo de aclimatar para o mundo, você 499 00:22:30,050 --> 00:22:35,130 começar a ver coisas que você não pode ver à primeira vista, esta primeira semana. 500 00:22:35,130 --> 00:22:37,440 >> Assim, o código fonte é algo parecido. 501 00:22:37,440 --> 00:22:40,370 Nós queremos passá-lo para o chamado compilador. 502 00:22:40,370 --> 00:22:42,850 E isso compilador como dissemos fornece saída 503 00:22:42,850 --> 00:22:45,660 conhecido como código objeto, o chamado zeros e uns. 504 00:22:45,660 --> 00:22:47,747 Mas a partir daí, o que isso nos dá? 505 00:22:47,747 --> 00:22:49,080 Bem, isso nos dá esses padrões. 506 00:22:49,080 --> 00:22:52,020 E mais uma vez o seu computador, o Intel inside, 507 00:22:52,020 --> 00:22:54,350 entende esses padrões de zeros e uns. 508 00:22:54,350 --> 00:22:57,300 E às vezes o padrão representa um número decimal real 509 00:22:57,300 --> 00:22:59,770 como vimos na semana passada, por vezes, representa uma carta 510 00:22:59,770 --> 00:23:02,730 como vimos na semana passada, por vezes, representa uma instrução, 511 00:23:02,730 --> 00:23:05,460 como imprimir algo na tela. 512 00:23:05,460 --> 00:23:08,782 >> Então printf para instance-- mas sim, deixe-me voltar atrás. 513 00:23:08,782 --> 00:23:11,240 Temos vindo a tomar para concedido que esses zeros e uns são 514 00:23:11,240 --> 00:23:14,200 produzido por este comando make. 515 00:23:14,200 --> 00:23:16,050 Mas make não é um compilador. 516 00:23:16,050 --> 00:23:19,370 Fazer não é a coisa no meio que está produzindo os zeros e uns. 517 00:23:19,370 --> 00:23:23,780 Prefere fazer é apenas um muito convenientemente programa chamado cujo propósito na vida 518 00:23:23,780 --> 00:23:27,267 é, essencialmente, para descobrir como compilar o seu programa. 519 00:23:27,267 --> 00:23:29,350 E nós usá-lo nessas primeiras semanas, porque só 520 00:23:29,350 --> 00:23:30,910 nos salva um monte de problemas. 521 00:23:30,910 --> 00:23:34,080 >> Mas o que fazer é realmente fazendo quando você compilar Olá, 522 00:23:34,080 --> 00:23:36,690 é, como se disse da última vez, é olhando em seu disco rígido 523 00:23:36,690 --> 00:23:40,620 ou na pasta atual, para arquivo chamado que, aparentemente? 524 00:23:40,620 --> 00:23:41,815 Hello.c, certo? 525 00:23:41,815 --> 00:23:43,190 Isso é apenas uma espécie de convenção. 526 00:23:43,190 --> 00:23:45,620 É arbitrário, mas essa é a maneira como as coisas são. 527 00:23:45,620 --> 00:23:48,620 Faça, se você acabou de especificar o nome de um programa que ainda não existe, 528 00:23:48,620 --> 00:23:52,200 ele vai olhar para o código-fonte em um arquivo, por padrão significa ola.c. 529 00:23:52,200 --> 00:23:53,530 E se ele encontrar, ótimo. 530 00:23:53,530 --> 00:23:56,650 Vai converter essa fonte código em código objeto para você. 531 00:23:56,650 --> 00:23:59,670 >> Mas cada vez que eu pressione Enter depois de executar o make Olá, 532 00:23:59,670 --> 00:24:03,560 Você se lembra de ver uma última vez bastante longo e seqüência enigmática 533 00:24:03,560 --> 00:24:06,430 de outras letras brancas e caracteres na tela? 534 00:24:06,430 --> 00:24:11,220 Bem, isso foi o comando real, o compilador real, que estava sendo executado. 535 00:24:11,220 --> 00:24:15,500 Assim, o compilador real, vamos usar a maioria dos do semestre é algo chamado clang. 536 00:24:15,500 --> 00:24:19,280 Alguns de vocês podem ter usado Visual Studio antes, ou GCC, 537 00:24:19,280 --> 00:24:21,340 ou qualquer número de outros compiladores. 538 00:24:21,340 --> 00:24:22,620 Usaremos clang. 539 00:24:22,620 --> 00:24:26,950 >> E clang nos permite realmente converter que o código fonte do código-objeto. 540 00:24:26,950 --> 00:24:29,430 O que isso realmente significa na prática? 541 00:24:29,430 --> 00:24:33,390 Bem, deixe-me entrar em um dos minhas pastas de última hora. 542 00:24:33,390 --> 00:24:35,760 Dentro do aparelho CS50. 543 00:24:35,760 --> 00:24:42,080 E deixe-me ir em frente e criar esta mesmo arquivo, incluem padrão I / O ponto h. 544 00:24:42,080 --> 00:24:42,875 Void main Int. 545 00:24:42,875 --> 00:24:46,000 E nós vamos voltar no futuro como ao que int meios e que significa vazio. 546 00:24:46,000 --> 00:24:49,130 Mas, por agora, vamos fazer Olá barra invertida mundo n, 547 00:24:49,130 --> 00:24:50,500 Assim como fizemos no tabuleiro. 548 00:24:50,500 --> 00:24:53,930 >> Deixe-me salvar este arquivo chamado ola.c. 549 00:24:53,930 --> 00:24:58,280 E agora, se eu quiser compilar este Eu could-- me deixe zoom prazo em-- 550 00:24:58,280 --> 00:25:00,450 Olá fazer entrar. 551 00:25:00,450 --> 00:25:02,645 E esta foi novamente essa linha muito enigmática. 552 00:25:02,645 --> 00:25:05,120 Mas agora, pelo menos, uma palavra provavelmente salta em você. 553 00:25:05,120 --> 00:25:07,087 Clang é nessa linha que vimos antes. 554 00:25:07,087 --> 00:25:10,420 Agora há um monte de outras coisas francamente que vamos agitar as mãos no para hoje. 555 00:25:10,420 --> 00:25:14,020 Mas há alguns subconjuntos, alguns personagens aqui 556 00:25:14,020 --> 00:25:14,907 que são de interesse. 557 00:25:14,907 --> 00:25:16,490 Mas eu estou indo para ir em frente e fazer isso. 558 00:25:16,490 --> 00:25:18,281 Eu estou indo para primeira corrida Olá, só para provar 559 00:25:18,281 --> 00:25:20,320 que este está a funcionar como era segunda-feira. 560 00:25:20,320 --> 00:25:22,330 Mas agora eu vou excluir o programa. 561 00:25:22,330 --> 00:25:25,870 E assim como nós tivemos estes nomes curtos última vez, 562 00:25:25,870 --> 00:25:29,787 o comando para a remoção algo é rm, remover entrar. 563 00:25:29,787 --> 00:25:31,870 Você está indo para obter algum questões bastante enigmática. 564 00:25:31,870 --> 00:25:35,210 Difícil de acreditar que você pode fazer mesmo esta pergunta difícil de entender. 565 00:25:35,210 --> 00:25:38,100 Mas remover Olá arquivo regular apenas meios quer apagar Olá. 566 00:25:38,100 --> 00:25:42,650 >> E eu posso ir em frente e digite y para sim, Enter, e agora ela se foi. 567 00:25:42,650 --> 00:25:45,130 O que isso significa agora, se eu limpar minha tela, 568 00:25:45,130 --> 00:25:47,301 é que, em vez de que faz você hello-- 569 00:25:47,301 --> 00:25:48,800 Sabe, eu estou ficando bom nisso. 570 00:25:48,800 --> 00:25:50,690 Eu estou indo para executar o compilador mim. 571 00:25:50,690 --> 00:25:53,330 Eu não preciso de algum programa para descobrir o que meu arquivo é chamado. 572 00:25:53,330 --> 00:25:55,370 Escrevi ola.c, I sabe o que é chamado, 573 00:25:55,370 --> 00:25:57,640 Estou claramente capaz de digitar isso. 574 00:25:57,640 --> 00:26:02,620 Então, eu estou indo para a frente e não clang ola.c Enter. 575 00:26:02,620 --> 00:26:03,264 >> Parece funcionar. 576 00:26:03,264 --> 00:26:05,930 E não há nenhuma saída adicional, porque clang é o compilador. 577 00:26:05,930 --> 00:26:08,590 É o que está convertendo a código-fonte para zeros e uns. 578 00:26:08,590 --> 00:26:12,870 Então, se eu faço agora dot reduzir Olá Enter, hm. 579 00:26:12,870 --> 00:26:14,630 Nova mensagem de erro hoje. 580 00:26:14,630 --> 00:26:17,610 Então bash é apenas o nome do piscar prompt que estamos usando. 581 00:26:17,610 --> 00:26:20,360 Isso é uma simplificação grosseira, mas por enquanto isso é tudo o que é, 582 00:26:20,360 --> 00:26:21,401 é o prompt piscando. 583 00:26:21,401 --> 00:26:22,880 E é por isso que ele está gritando com a gente. 584 00:26:22,880 --> 00:26:25,690 >> Nenhum arquivo ou diretório é um pouco mais simples. 585 00:26:25,690 --> 00:26:28,190 Mas, certamente, eu fiz esse código objeto. 586 00:26:28,190 --> 00:26:30,930 Mas o problema é que, se eu digitar o comando 587 00:26:30,930 --> 00:26:34,650 para listar o conteúdo deste diretório, que é o que? 588 00:26:34,650 --> 00:26:36,210 ls para lista. 589 00:26:36,210 --> 00:26:39,332 Há um monte de coisas aqui, alguns dos quais vieram com o aparelho, 590 00:26:39,332 --> 00:26:42,040 como a minha pasta Desktop, Download pasta, pasta Dropbox, e todos 591 00:26:42,040 --> 00:26:42,850 essas coisas. 592 00:26:42,850 --> 00:26:45,410 Mas o que é interessante é ola.c, que 593 00:26:45,410 --> 00:26:47,286 Eu criei um momento atrás, com gedit. 594 00:26:47,286 --> 00:26:49,160 E o que é o mais estranho olhando nome aqui, 595 00:26:49,160 --> 00:26:53,110 talvez que não fez veja última hora em tudo? 596 00:26:53,110 --> 00:26:54,710 >> a.out, certo? 597 00:26:54,710 --> 00:26:56,920 Então, de volta ao dia, ele foi decidido que apenas quando 598 00:26:56,920 --> 00:26:58,760 você compilar um programa , pela primeira vez, 599 00:26:58,760 --> 00:27:02,360 e você não especificar o nome de um arquivo, vamos chamá-lo a. 600 00:27:02,360 --> 00:27:05,800 E a.out significa apenas que esta foi a saída do compilador. 601 00:27:05,800 --> 00:27:07,790 Portanto, é um nome horrível para um programa. 602 00:27:07,790 --> 00:27:12,820 Mas por essa lógica, ponto para cortar diretório atual, cortar a.out, 603 00:27:12,820 --> 00:27:16,102 deve dizer que há, de fato, Olá meu programa mundial. 604 00:27:16,102 --> 00:27:17,560 Agora um pouco aquecer exercício também. 605 00:27:17,560 --> 00:27:20,420 Se eu quiser mudar o nome desta arquivo, acontece que você 606 00:27:20,420 --> 00:27:23,000 mover um arquivo de um nome para outro. 607 00:27:23,000 --> 00:27:28,750 A.out Então mv, e então eu pode chamá-lo Olá Enter. 608 00:27:28,750 --> 00:27:30,940 Portanto, este é um comando Linux. 609 00:27:30,940 --> 00:27:34,370 DOS tinha isso há alguns anos, O Windows tem uma janela de terminal 610 00:27:34,370 --> 00:27:36,460 de algum tipo que parece assim, Linux e Mac 611 00:27:36,460 --> 00:27:38,140 computadores têm este prompt piscando. 612 00:27:38,140 --> 00:27:41,490 Mesmo que a maioria de nós provavelmente raramente, ou nunca, usá-lo. 613 00:27:41,490 --> 00:27:44,590 >> Mas o que eu tenho feito é executar um programa, cujo nome é mv, 614 00:27:44,590 --> 00:27:47,900 e eu tenho desde que com dois argumentos, por assim dizer. 615 00:27:47,900 --> 00:27:48,630 Duas entradas. 616 00:27:48,630 --> 00:27:50,260 a.out é o nome original. 617 00:27:50,260 --> 00:27:51,630 Olá é o novo nome. 618 00:27:51,630 --> 00:27:55,670 Então, se eu agora fazer corte de ponto Olá, Enter, o que existe. 619 00:27:55,670 --> 00:28:00,770 E se eu fizer dot a.out barra, o que você espera que eu deveria ver? 620 00:28:00,770 --> 00:28:02,250 >> Bash, não existe tal arquivo ou diretório. 621 00:28:02,250 --> 00:28:03,350 Porque eu só renomeou. 622 00:28:03,350 --> 00:28:04,975 Então, isso leva um pouco de tempo para se acostumar. 623 00:28:04,975 --> 00:28:06,977 Mas o conjunto de problemas 1 especificação será verdadeiramente 624 00:28:06,977 --> 00:28:08,810 segurar sua mão algumas dessas minúcia. 625 00:28:08,810 --> 00:28:11,050 Porque este é um completo distração intelectual 626 00:28:11,050 --> 00:28:12,966 do mais interessante idéias em mãos, que 627 00:28:12,966 --> 00:28:15,310 é, na verdade, criando algo fora do código. 628 00:28:15,310 --> 00:28:18,830 Mas vamos fazer uma modificação agora a este programa. 629 00:28:18,830 --> 00:28:23,150 >> Lembre-se que da última vez que fiz algo assim, printf, diga seu nome. 630 00:28:23,150 --> 00:28:25,790 E, de fato nós só fez isso na tela grande por lá. 631 00:28:25,790 --> 00:28:30,640 E então eu fiz string s fica GetString parêntese aberto, perto parêntese. 632 00:28:30,640 --> 00:28:33,430 E paren apenas taquigrafia notação de parênteses. 633 00:28:33,430 --> 00:28:36,460 Então não GetString tomar quaisquer argumentos? 634 00:28:36,460 --> 00:28:38,440 Não há entradas Não, mas precisa dos parênteses, 635 00:28:38,440 --> 00:28:41,830 porque é isso que demarca a convocação de uma função. 636 00:28:41,830 --> 00:28:46,440 >> Então, eu estou indo para ir em frente e tentar executar o compilador sobre este programa agora. 637 00:28:46,440 --> 00:28:50,774 Clang ola.c, porque eu não alterou o seu nome para agora. 638 00:28:50,774 --> 00:28:51,940 E eu tenho um monte de erros. 639 00:28:51,940 --> 00:28:53,570 Vamos diminuir o zoom aqui. 640 00:28:53,570 --> 00:28:55,420 Se eu rolar para cima novamente, como eu disse da última vez, 641 00:28:55,420 --> 00:28:58,420 para o primeiro, mesmo erro que eu tenho a última vez. 642 00:28:58,420 --> 00:29:04,210 Na linha 6 do ola.c eu tive uma seqüência de identificador não declarado, 643 00:29:04,210 --> 00:29:05,590 eu quero dizer padrão em? 644 00:29:05,590 --> 00:29:06,750 Eu não. 645 00:29:06,750 --> 00:29:10,050 Porque o erro já fiz nesta programa, se você se lembra da última vez? 646 00:29:10,050 --> 00:29:13,219 647 00:29:13,219 --> 00:29:15,010 Sim, precisamos da chamado rodinhas 648 00:29:15,010 --> 00:29:16,510 que nós vamos usar apenas por algumas semanas. 649 00:29:16,510 --> 00:29:19,480 Mas eu preciso especificar que também, em algum lugar dentro do aparelho, 650 00:29:19,480 --> 00:29:22,720 é um arquivo que nós escrevemos apenas alguns anos atrás. 651 00:29:22,720 --> 00:29:26,500 Dentro dos quais são funções como aparentemente GetString. 652 00:29:26,500 --> 00:29:35,160 Portanto, agora se eu voltar aqui, aumentar o zoom, e re-executar clang ola.c. 653 00:29:35,160 --> 00:29:36,500 Droga, outro erro. 654 00:29:36,500 --> 00:29:38,590 Mas nós não vimos isso antes. 655 00:29:38,590 --> 00:29:41,900 >> Essa é um pouco mais esotérico para descobrir. 656 00:29:41,900 --> 00:29:46,910 Mas esta é deliberadamente no ecrã, porque queria contar essa história. 657 00:29:46,910 --> 00:29:51,280 Quando você compila ola.c, assim como a imagem de antes sugerido, 658 00:29:51,280 --> 00:29:54,650 você está convertendo apenas que código-fonte para zeros e uns. 659 00:29:54,650 --> 00:30:00,340 Agora a equipe CS50 há alguns anos escreveu CS50.h, e um arquivo correspondente, 660 00:30:00,340 --> 00:30:01,640 CS50.c. 661 00:30:01,640 --> 00:30:04,490 E nós, há alguns anos atrás, compilou os arquivos 662 00:30:04,490 --> 00:30:07,290 em um arquivo que acontece para ser chamado CS50.o. 663 00:30:07,290 --> 00:30:09,180 >> Ou ele pode ser renomeado uma algumas coisas diferentes. 664 00:30:09,180 --> 00:30:11,054 Mas isso é uma maneira simples de pensar sobre isso. 665 00:30:11,054 --> 00:30:14,960 Então, nós compilamos CS50 da biblioteca em zeros e uns. 666 00:30:14,960 --> 00:30:20,340 Mas em nenhum lugar que eu especificada que eu quero juntar os zeros 667 00:30:20,340 --> 00:30:24,030 e aqueles para minha Olá mundo programa com os zeros e uns 668 00:30:24,030 --> 00:30:29,760 que o pessoal CS50 criei há alguns anos atrás em um programa completo. 669 00:30:29,760 --> 00:30:34,100 Tudo o que eu especificado por escrito ola.c clang é compilar ola.c. 670 00:30:34,100 --> 00:30:38,380 >> Eu não contei para clang link nos zeros e uns 671 00:30:38,380 --> 00:30:41,650 que o pessoal CS50 criado para você há algum tempo. 672 00:30:41,650 --> 00:30:48,280 Por isso é fácil de resolver, traço l para link, CS50. 673 00:30:48,280 --> 00:30:52,600 E nós vamos voltar a ver esta em pouco tempo uma e outra vez. 674 00:30:52,600 --> 00:30:54,420 Mas observe agora não houve queixas. 675 00:30:54,420 --> 00:30:59,770 Portanto, agora se eu corro barra dot Olá, agora ele está trabalhando. 676 00:30:59,770 --> 00:31:03,840 Apesar de que é um pouco enganosa desde que eu apenas recriou o arquivo? 677 00:31:03,840 --> 00:31:05,880 a.out. 678 00:31:05,880 --> 00:31:07,930 >> Então deixe-me recuar por um momento. 679 00:31:07,930 --> 00:31:10,900 O programa que acaba de compilar tem as três linhas de código. 680 00:31:10,900 --> 00:31:14,710 Quando eu corri Olá mundo, Olá um momento atrás, eu não vi o seu nome. 681 00:31:14,710 --> 00:31:17,080 E isso é porque eu corri o versão antiga do programa. 682 00:31:17,080 --> 00:31:22,700 Mas se eu, de fato, executar dot a.out barra Entre, diga o seu nome, Rob, Olá, 683 00:31:22,700 --> 00:31:23,370 mundo. 684 00:31:23,370 --> 00:31:23,870 Hm. 685 00:31:23,870 --> 00:31:26,110 Isso é um tipo de bug. 686 00:31:26,110 --> 00:31:28,560 Provavelmente queria dizer Rob, certo? 687 00:31:28,560 --> 00:31:30,997 Então, qual é a correção aqui no código. 688 00:31:30,997 --> 00:31:31,872 Estudante: [inaudível]. 689 00:31:31,872 --> 00:31:38,415 690 00:31:38,415 --> 00:31:39,290 DAVID MALAN: Exatamente. 691 00:31:39,290 --> 00:31:43,160 Então eu só preciso fazer essa emenda definitiva por isso que eu estou passando em um espaço reservado, 692 00:31:43,160 --> 00:31:45,690 como um preencher o vazio, como fizemos há pouco. 693 00:31:45,690 --> 00:31:47,870 Mas por cento s é agora que preencher o vazio. 694 00:31:47,870 --> 00:31:52,100 Então finalmente vamos revelar uma última detalhe para que não há mágica. 695 00:31:52,100 --> 00:31:54,090 Eu estou indo para ir em frente e se livrar de hellow. 696 00:31:54,090 --> 00:31:56,070 Eu estou indo para ir em frente e se livrar de a.out. 697 00:31:56,070 --> 00:31:58,410 Então agora eu tenho nenhum programa, apenas o meu código fonte. 698 00:31:58,410 --> 00:32:01,100 E eu estou indo para executar um um pouco mais de comando, clang 699 00:32:01,100 --> 00:32:05,650 traço o Olá ola.c traço LCS50. 700 00:32:05,650 --> 00:32:08,700 >> Agora isso está começando a sorte de ir por um ouvido e sai pelo outro, talvez. 701 00:32:08,700 --> 00:32:10,366 Mas apenas desmembrar o que este está fazendo. 702 00:32:10,366 --> 00:32:14,910 Clang é o compilador, LCS50 traço deliberadamente no final 703 00:32:14,910 --> 00:32:18,330 faz o que em uma frase? 704 00:32:18,330 --> 00:32:19,607 Links para a biblioteca CS50. 705 00:32:19,607 --> 00:32:21,440 Agarra os zeros e aqueles que a equipe fez 706 00:32:21,440 --> 00:32:23,310 e abarrota-los em meu próprio programa. 707 00:32:23,310 --> 00:32:27,040 Assim, a última questão em apreço é, o que é o traço Olá provavelmente 708 00:32:27,040 --> 00:32:30,530 fazendo, mesmo se você nunca visto esta sintaxe antes? 709 00:32:30,530 --> 00:32:34,920 >> Produzir um programa que é não nomeou o a.out padrão. 710 00:32:34,920 --> 00:32:37,330 Pelo contrário, é chamado Olá. 711 00:32:37,330 --> 00:32:39,460 Portanto, agora não há a.out. 712 00:32:39,460 --> 00:32:42,660 Não existe tal arquivo ou diretório, porque eu disse explicitamente 713 00:32:42,660 --> 00:32:46,720 chamar este programa Olá, de modo que Agora eu posso digitar um nome como esse 714 00:32:46,720 --> 00:32:47,790 e tê-lo se comportar. 715 00:32:47,790 --> 00:32:50,180 >> Agora, francamente, menino é que desinteressante para ter 716 00:32:50,180 --> 00:32:52,170 para lembrar de todos que minúcia pouco, certo? 717 00:32:52,170 --> 00:32:54,180 Então, vamos em frente e se livrar Olá novamente. 718 00:32:54,180 --> 00:32:57,880 E vamos agora voltar a um mundo em que basta dizer Olá fazer. 719 00:32:57,880 --> 00:33:00,410 Mas essa é a mágica que fazer está fazendo por você, 720 00:33:00,410 --> 00:33:02,320 que é o tédio que que está fazendo para você. 721 00:33:02,320 --> 00:33:04,630 E, como nossos programas e problemas se tornam mais complexos, 722 00:33:04,630 --> 00:33:06,142 fazer vai realmente ser seu amigo. 723 00:33:06,142 --> 00:33:07,850 Porque não muito tempo a partir de agora nós vamos 724 00:33:07,850 --> 00:33:11,150 ter programas que são escritos não com um arquivo, mas vários arquivos, 725 00:33:11,150 --> 00:33:16,310 e fazer irá automatizar o processo de compilando tudo isso para nós juntos. 726 00:33:16,310 --> 00:33:20,620 >> Então agora imprimir. 727 00:33:20,620 --> 00:33:24,960 printf está dentro desse arquivo, padrão I / O ponto h, que já vimos antes, 728 00:33:24,960 --> 00:33:26,980 mas há mais para printf do que isso. 729 00:33:26,980 --> 00:33:30,482 Não há barra invertida n, mas há também um monte de outras seqüências de escape. 730 00:33:30,482 --> 00:33:32,940 E sequência de escape é apenas um maneira elegante de dizer algo 731 00:33:32,940 --> 00:33:35,990 que começa com uma barra invertida, não uma barra, uma barra invertida 732 00:33:35,990 --> 00:33:37,920 e faz alguma coisa especial. 733 00:33:37,920 --> 00:33:43,770 E não vou me debruçar sobre a maioria destes, mas porque é que há barra invertida aspas duplas, 734 00:33:43,770 --> 00:33:44,830 que você acha? 735 00:33:44,830 --> 00:33:48,010 Por que há essa seqüência estranha de caracteres, aspas duplas barra invertida, 736 00:33:48,010 --> 00:33:50,505 por que pode que pode ser útil? 737 00:33:50,505 --> 00:33:51,380 Estudante: [inaudível]. 738 00:33:51,380 --> 00:33:56,594 739 00:33:56,594 --> 00:33:57,760 DAVID MALAN: Exatamente, certo? 740 00:33:57,760 --> 00:34:01,830 Pense de volta para o nosso programa Olá mundo que temos visto algumas vezes agora, 741 00:34:01,830 --> 00:34:05,880 cada vez que vimos que Olá mundo programa tivemos aspas dentro 742 00:34:05,880 --> 00:34:08,210 de que é Olá vírgula barra invertida mundo n. 743 00:34:08,210 --> 00:34:10,070 Mas pensar a si mesmo, E se você realmente 744 00:34:10,070 --> 00:34:12,520 queria imprimir uma aspas? 745 00:34:12,520 --> 00:34:16,100 Seu primeiro instinto pode ser, eu não sei sabe por que eu poderia querer fazer-- aqui, 746 00:34:16,100 --> 00:34:18,780 que pode ser um pouco passiva agressivo, Olá amigo. 747 00:34:18,780 --> 00:34:21,350 Podemos querer fazer algo assim. 748 00:34:21,350 --> 00:34:25,230 >> Mas por que isso agora é problemático? 749 00:34:25,230 --> 00:34:28,730 Ignorando as aspas curvas de lado que keynote fez por nós automaticamente. 750 00:34:28,730 --> 00:34:29,730 Por isso é problemático? 751 00:34:29,730 --> 00:34:36,719 752 00:34:36,719 --> 00:34:37,270 >> Exatamente. 753 00:34:37,270 --> 00:34:39,022 Porque nós temos como 4 aspas. 754 00:34:39,022 --> 00:34:41,230 Bem, o primeiro provavelmente continua com a segunda, 755 00:34:41,230 --> 00:34:43,271 e talvez a uma quarta continua com a terceira, 756 00:34:43,271 --> 00:34:46,170 ou, eu quero dizer que eu não tenho certeza, nem é o computador vai ser. 757 00:34:46,170 --> 00:34:48,352 Computadores novamente, compiladores mais uma vez, são bastante idiota. 758 00:34:48,352 --> 00:34:50,060 Eles só vou fazer o que você dizer-lhes o que fazer. 759 00:34:50,060 --> 00:34:54,270 E se você não é inequívoco que provavelmente vai lançar um erro. 760 00:34:54,270 --> 00:34:57,700 >> Se você não é inequívoca quanto à forma de fazer uma manteiga de amendoim e geléia sanduíche 761 00:34:57,700 --> 00:34:59,510 coisas estranhas poderiam chegar. 762 00:34:59,510 --> 00:35:00,580 É a mesma idéia. 763 00:35:00,580 --> 00:35:03,100 Agora basta dizer que há algumas outras seqüências de escape, 764 00:35:03,100 --> 00:35:04,820 mas nós vamos chegar a aqueles antes do tempo. 765 00:35:04,820 --> 00:35:07,410 Essencialmente, estas fuga seqüências representam algo 766 00:35:07,410 --> 00:35:10,480 que você pode não ser capaz muito facilmente no teclado, 767 00:35:10,480 --> 00:35:12,010 sem confundir o computador. 768 00:35:12,010 --> 00:35:15,733 >> Agora, entretanto, temos espaços reservados no printf. 769 00:35:15,733 --> 00:35:19,630 Por cento d, que também pode ser escrito em quase todos os casos por cento i, 770 00:35:19,630 --> 00:35:21,610 é um espaço reservado para que tipo de dados? 771 00:35:21,610 --> 00:35:23,920 Que tipo de valor? 772 00:35:23,920 --> 00:35:24,920 Um número decimal. 773 00:35:24,920 --> 00:35:27,234 Então, na verdade nós vamos começar usando por cento i porque é 774 00:35:27,234 --> 00:35:28,650 um pouco mais simples, como um número inteiro. 775 00:35:28,650 --> 00:35:29,550 I por cento. 776 00:35:29,550 --> 00:35:31,320 Um inteiro que passa a ser decimal. 777 00:35:31,320 --> 00:35:35,690 >> Porcentagem s já disse foi um espaço reservado para a string. 778 00:35:35,690 --> 00:35:38,630 Que é apenas uma palavra, uma frase, um parágrafo, um ensaio, qualquer que seja. 779 00:35:38,630 --> 00:35:40,830 É uma seqüência de personagens de algum tempo. 780 00:35:40,830 --> 00:35:42,820 E veremos em breve alguns destes outros. 781 00:35:42,820 --> 00:35:45,950 Mas por cento c é para uma única personagem. 782 00:35:45,950 --> 00:35:48,500 Porcentagem f é para um número de ponto flutuante, 783 00:35:48,500 --> 00:35:50,860 como um número real que tem um ponto decimal na mesma, que 784 00:35:50,860 --> 00:35:52,550 é claro que não um inteiro. 785 00:35:52,550 --> 00:35:54,670 E não há um todo monte de outras pessoas também. 786 00:35:54,670 --> 00:35:56,990 >> Enquanto isso, na C, e em muitas línguas, 787 00:35:56,990 --> 00:35:58,650 temos diferentes tipos de dados. 788 00:35:58,650 --> 00:36:00,650 Diferentes tipos de bacias de vidro se você quiser. 789 00:36:00,650 --> 00:36:03,830 A taça que eu usei última vez foi para as bolas de pingue-pongue, 790 00:36:03,830 --> 00:36:06,990 mas também podemos armazenar diferente valores como caracteres e strings 791 00:36:06,990 --> 00:36:10,820 e inteiros em um recipiente, como uma variável, e C tem estes. 792 00:36:10,820 --> 00:36:14,020 Char é o tipo de dados, o tipo de variável, 793 00:36:14,020 --> 00:36:15,700 no qual você pode armazenar um caractere. 794 00:36:15,700 --> 00:36:19,560 Float é um tipo de variável em que você pode armazenar um número real. 795 00:36:19,560 --> 00:36:21,220 >> Int é, naturalmente, para um int. 796 00:36:21,220 --> 00:36:23,760 E, em vez ridiculamente nomeado um longo 797 00:36:23,760 --> 00:36:26,830 é o lugar onde você pode armazenar essencialmente um número muito longo, mesmo com 798 00:36:26,830 --> 00:36:29,930 mais dígitos, em seguida, uma típico loja pode int. 799 00:36:29,930 --> 00:36:32,420 Mas vamos voltar a isso em pouco tempo. 800 00:36:32,420 --> 00:36:35,520 >> Em CS50 dot h enquanto isso o outro arquivo de cabeçalho 801 00:36:35,520 --> 00:36:37,630 que vimos um casal vezes em uso, há 802 00:36:37,630 --> 00:36:41,350 dois outros tipos de dados que não existem em C normalmente. 803 00:36:41,350 --> 00:36:45,000 Um deles é de cordas, e vamos ver no algumas semanas que linhas realmente 804 00:36:45,000 --> 00:36:46,610 estão debaixo do capô. 805 00:36:46,610 --> 00:36:47,950 E é bool. 806 00:36:47,950 --> 00:36:51,650 E um bool é uma variável que só pode assumir certos valores. 807 00:36:51,650 --> 00:36:54,370 E apenas com base na última semana explicação do Scratch, 808 00:36:54,370 --> 00:36:56,680 e, mais recentemente, C, o que você imaginar 809 00:36:56,680 --> 00:37:01,770 são os dois valores possíveis para algum recipiente que é do tipo bool? 810 00:37:01,770 --> 00:37:02,860 >> Sim e não. 811 00:37:02,860 --> 00:37:03,870 Um e zero. 812 00:37:03,870 --> 00:37:04,502 Verdadeiro ou falso. 813 00:37:04,502 --> 00:37:07,460 E, de fato, é o último que tende ser convencional em uma programação 814 00:37:07,460 --> 00:37:10,030 linguagem, dizendo algo como verdadeiro ou falso. 815 00:37:10,030 --> 00:37:13,160 >> Enquanto isso, a biblioteca CS50 vem com um monte de funcionalidade 816 00:37:13,160 --> 00:37:16,640 que o pessoal escreveu para você, além de apenas recebendo uma string. 817 00:37:16,640 --> 00:37:20,910 Nós escrevemos em funções de avanço que pode obter um número inteiro a partir do utilizador, 818 00:37:20,910 --> 00:37:22,990 obter um único personagem, obter uma bóia, que 819 00:37:22,990 --> 00:37:25,160 é apenas um número com ponto decimal. 820 00:37:25,160 --> 00:37:28,290 Obter um longo tempo, realmente grande valor para o usuário. 821 00:37:28,290 --> 00:37:30,930 Por isso, só vi isso em ação na forma de GetString. 822 00:37:30,930 --> 00:37:33,230 Mas através destas funções em breve será capaz de escrever 823 00:37:33,230 --> 00:37:36,070 programas que recebem a entrada do usuário. 824 00:37:36,070 --> 00:37:39,230 >> Enquanto isso considero este programa, e considerar 825 00:37:39,230 --> 00:37:42,600 como podemos agora começar a adicionar a com novas construções. 826 00:37:42,600 --> 00:37:44,530 Um rápido tour rápido e depois veremos 827 00:37:44,530 --> 00:37:47,340 em algum escrever algum programas manualmente nós mesmos. 828 00:37:47,340 --> 00:37:49,700 A partir de agora, se quisermos aplicar uma condição, 829 00:37:49,700 --> 00:37:52,790 ele não vai olhar como um bom pedaço de quebra-cabeça bonito. 830 00:37:52,790 --> 00:37:54,460 Vai parecer um pouco mais misteriosa. 831 00:37:54,460 --> 00:37:57,620 Mas esta é a canônica estrutura de uma condição em C. 832 00:37:57,620 --> 00:38:00,380 >> A palavra se, dois parênteses, no interior dos quais 833 00:38:00,380 --> 00:38:02,590 vai ser algum tipo de expressão booleana. 834 00:38:02,590 --> 00:38:04,999 Agora a barra barra no meio, isto é 835 00:38:04,999 --> 00:38:07,290 no momento mais ou menos como espaço reservado código pseudocódigo. 836 00:38:07,290 --> 00:38:11,576 Mas, mais propriamente, qualquer linha de código em C que começa com slash slash 837 00:38:11,576 --> 00:38:12,850 é um comentário. 838 00:38:12,850 --> 00:38:15,920 >> É como uma nota que você pode colocar em um ensaio, impresso em papel. 839 00:38:15,920 --> 00:38:17,290 É uma nota para si mesmo. 840 00:38:17,290 --> 00:38:20,100 Não tem nenhum funcional impacto sobre o programa. 841 00:38:20,100 --> 00:38:23,580 É uma espécie de lembrete, é a sua própria documentação sobre o que está acontecendo. 842 00:38:23,580 --> 00:38:25,720 Então faça isso no momento é uma espécie de espaço reservado 843 00:38:25,720 --> 00:38:27,560 para o que está dentro dessas chaves 844 00:38:27,560 --> 00:38:29,810 eventualmente, vai fazer alguma coisa. 845 00:38:29,810 --> 00:38:35,160 >> Enquanto isso, você tem dois garfos na estrada, uma outra se construir como este. 846 00:38:35,160 --> 00:38:37,024 Você pode, se, elseif, else. 847 00:38:37,024 --> 00:38:39,690 Agora é importante notar, especialmente se você tiver sido pesquisando por aí 848 00:38:39,690 --> 00:38:42,480 recursos on-line para fora da curiosidade, ou se você pegar 849 00:38:42,480 --> 00:38:44,575 um do curso de livros recomendados sobre C, 850 00:38:44,575 --> 00:38:48,430 você vai ver que os seres humanos têm muitas de diferentes preferências de como 851 00:38:48,430 --> 00:38:50,510 de se expressar em código. 852 00:38:50,510 --> 00:38:53,800 Algumas pessoas gostam de colocar o chaves como eu fiz aqui. 853 00:38:53,800 --> 00:38:57,760 Algumas pessoas gostam de colocar o encaracolado suspensórios, por exemplo, aqui em cima. 854 00:38:57,760 --> 00:39:01,700 >> Algumas pessoas gostam de colocar a elses aqui em cima e, em seguida, este aqui. 855 00:39:01,700 --> 00:39:05,120 Não há qualquer número de maneiras de escrever código, e nenhum deles 856 00:39:05,120 --> 00:39:06,566 tem razão per se. 857 00:39:06,566 --> 00:39:08,440 Embora há alguns que são muito errado. 858 00:39:08,440 --> 00:39:11,315 Mas existem no-- se este for em última análise, um debate muito religioso. 859 00:39:11,315 --> 00:39:13,940 De fato, um dos mais irritantes coisas sobre ciência da computação 860 00:39:13,940 --> 00:39:16,310 é como opinativo cientistas da computação pode ser. 861 00:39:16,310 --> 00:39:19,880 E você vai encontrar ao longo do tempo que até mesmo a desenvolver preferências pessoais 862 00:39:19,880 --> 00:39:22,130 sobre a forma como o código deve olhar. 863 00:39:22,130 --> 00:39:27,162 >> Não apenas se comportam, e não apenas criar uma saída, mas como se deve olhar esteticamente. 864 00:39:27,162 --> 00:39:30,120 Então, o que vamos fazer é orientá-lo ao longo o caminho para, pelo menos por agora, 865 00:39:30,120 --> 00:39:34,825 CS50 um estilo padrão que pelo menos mantém as coisas uniforme e fácil de ler. 866 00:39:34,825 --> 00:39:37,330 Mas mais sobre os distinções antes do tempo. 867 00:39:37,330 --> 00:39:41,830 >> Uma expressão booleana em C, se você quis dizer se essa condição for verdadeira 868 00:39:41,830 --> 00:39:44,650 e esta é outra condição verdadeiro, você não escrever a palavra 869 00:39:44,650 --> 00:39:46,610 e, como você faria em Inglês. 870 00:39:46,610 --> 00:39:50,580 Você sim usar e comercial e comercial, por razões que vou voltar. 871 00:39:50,580 --> 00:39:54,520 Se você quiser dizer ou você usar dois barras verticais, que em um teclado americano 872 00:39:54,520 --> 00:39:57,650 é geralmente acima do Enter próxima chave para a barra invertida. 873 00:39:57,650 --> 00:40:03,080 E isso apenas significa que se esta condição este ou outra condição é verdadeira fazer isso. 874 00:40:03,080 --> 00:40:05,210 >> Enquanto isso há essa coisa louca, que 875 00:40:05,210 --> 00:40:07,760 você vai ter ocasião usar de vez em quando. 876 00:40:07,760 --> 00:40:10,390 Mas é apenas uma alternativa maneira de se expressar. 877 00:40:10,390 --> 00:40:12,400 Este, por agora, vamos estipular, é apenas 878 00:40:12,400 --> 00:40:16,880 uma outra maneira divertida de expressar se, elseif, elseif, elseif, elseif. 879 00:40:16,880 --> 00:40:19,720 É só formatado em termos de casos, onde você literalmente 880 00:40:19,720 --> 00:40:23,420 enumerar os valores que você pode querer verificar. 881 00:40:23,420 --> 00:40:24,410 >> Enquanto isso laços. 882 00:40:24,410 --> 00:40:26,842 Vimos uma comparação de Raspe com um laço. 883 00:40:26,842 --> 00:40:29,550 E eu vou acenar minha mão em o que cada uma dessas coisas significa. 884 00:40:29,550 --> 00:40:33,520 Mas note que um loop será muito muitas vezes começam com a palavra-chave para. 885 00:40:33,520 --> 00:40:36,350 Ou será que vai começar com a palavra-chave quando. 886 00:40:36,350 --> 00:40:41,360 Ou será que vai começar com a palavra-chave fazer, e terminam com a palavra-chave ao mesmo tempo. 887 00:40:41,360 --> 00:40:43,920 >> Mas o que estamos prestes a ver é as coisas mais como este. 888 00:40:43,920 --> 00:40:47,950 Aqui está, em geral, em C, como você pode declarar uma variável e dar-lhe um valor. 889 00:40:47,950 --> 00:40:50,610 Em C não basta, como em risco, você só 890 00:40:50,610 --> 00:40:52,810 dizer-me dar uma variável chamada alguma coisa. 891 00:40:52,810 --> 00:40:55,960 Você tem que dizer C, e dizer seu compilador, mais especificamente, 892 00:40:55,960 --> 00:40:58,680 que tipo de valor você quero colocar na tigela de vidro. 893 00:40:58,680 --> 00:40:59,610 >> É um inteiro? 894 00:40:59,610 --> 00:41:02,210 Se assim for, você tem que literalmente dizer int e depois 895 00:41:02,210 --> 00:41:04,220 o nome da variável, em seguida, um ponto e vírgula. 896 00:41:04,220 --> 00:41:08,050 Se você em vez queria corda e chamado É como eu fiz o meu código aqui hoje, 897 00:41:08,050 --> 00:41:10,920 você diria vírgula string s. 898 00:41:10,920 --> 00:41:14,200 Uma vez que você quiser dar-lhe um valor então você pode usar o sinal de igual, 899 00:41:14,200 --> 00:41:16,211 também conhecida como a operador de atribuição. 900 00:41:16,211 --> 00:41:17,960 E perceba como cada destas linhas de código 901 00:41:17,960 --> 00:41:20,650 tem o ponto e vírgula no final do mesmo. 902 00:41:20,650 --> 00:41:22,550 >> Mas, francamente, isso só parece um pouco feio. 903 00:41:22,550 --> 00:41:26,580 Por que eu não posso dizer para o computador, dar me uma variável e inicializá-lo para zero. 904 00:41:26,580 --> 00:41:28,380 Ou seja, dá-me uma tigela de vidro vazio. 905 00:41:28,380 --> 00:41:28,980 Enquanto você puder. 906 00:41:28,980 --> 00:41:32,250 E assim uma das juízo chama você tem que fazer durante o tempo estilìstica 907 00:41:32,250 --> 00:41:36,290 é, você escreve seu código como este, ou você tipo de limpá-lo e impressionar 908 00:41:36,290 --> 00:41:39,040 pessoas por escrever duas linhas como apenas um. 909 00:41:39,040 --> 00:41:41,830 E isto seria considerado em geral, uma forma mais elegante 910 00:41:41,830 --> 00:41:43,870 de escrever o seu código estilisticamente. 911 00:41:43,870 --> 00:41:45,200 >> Funções estamos naturalmente visto. 912 00:41:45,200 --> 00:41:46,340 Eles vão ter este formato. 913 00:41:46,340 --> 00:41:48,881 O nome de uma função, alguns parênteses, e depois talvez alguns 914 00:41:48,881 --> 00:41:49,910 coisas dentro. 915 00:41:49,910 --> 00:41:52,540 Ou você pode ver os usos de múltiplas funções lado 916 00:41:52,540 --> 00:41:55,980 a lado, como algo parecido com isto. 917 00:41:55,980 --> 00:41:59,390 Agora como uma tangente, faz essa piada agora faz sentido? 918 00:41:59,390 --> 00:42:03,566 919 00:42:03,566 --> 00:42:04,960 >> [Risos] 920 00:42:04,960 --> 00:42:09,360 Isso não significa que é engraçado, mas não, talvez, fazer um pouco mais de sentido. 921 00:42:09,360 --> 00:42:12,140 Então agora vamos entrar na Aparelho CS50 por um momento. 922 00:42:12,140 --> 00:42:14,640 E deixe-me abrir uma provocação aqui. 923 00:42:14,640 --> 00:42:17,470 >> E, de fato uma das razões para a introdução de catálogo IKEA 924 00:42:17,470 --> 00:42:20,080 e piscando a imagem do iPhone um pouco atrás 925 00:42:20,080 --> 00:42:24,700 era, na verdade, o laço em conjunto fato de que apenas alguns anos atrás, em 2007, 926 00:42:24,700 --> 00:42:26,540 este pedaço de código foi liberada, o que foi 927 00:42:26,540 --> 00:42:29,820 um dos primeiros implementação de uma parte do software 928 00:42:29,820 --> 00:42:31,494 que faz o que é chamado de jailbreaking. 929 00:42:31,494 --> 00:42:34,410 Para quem não conhece, o jailbreak algo como um telefone ou um iPhone 930 00:42:34,410 --> 00:42:37,680 significa, essencialmente, figurando como fazer as coisas 931 00:42:37,680 --> 00:42:39,864 com que a empresa quem fez isso não tinha a intenção. 932 00:42:39,864 --> 00:42:42,780 Como você quer instalar determinado software que não é na loja de aplicativos, 933 00:42:42,780 --> 00:42:45,405 jailbreaking o telefone que você faz coisas como essa e muito mais. 934 00:42:45,405 --> 00:42:47,447 Mas o que era diversão em 2007-- e houve 935 00:42:47,447 --> 00:42:49,780 dezenas de versões diferentes essas coisas, desde então, 936 00:42:49,780 --> 00:42:53,540 em todos os tipos de languages-- é que este programa aqui, chamado iUnlock, 937 00:42:53,540 --> 00:42:57,036 foi realmente escrito em C. E assim eu puxado para cima o código-fonte para isso, 938 00:42:57,036 --> 00:42:59,910 apenas para o tipo de mostrar alguns dos as semelhanças com as construções 939 00:42:59,910 --> 00:43:01,450 estamos discutindo até agora. 940 00:43:01,450 --> 00:43:05,150 Agora há muito mais complexidade aqui do que já vimos em sala de aula. 941 00:43:05,150 --> 00:43:07,160 Deixe-me ir para cima um pouco aqui. 942 00:43:07,160 --> 00:43:11,520 >> Mas note bem these-- notamos alguns coisas-- mas observar estas linhas aqui, 943 00:43:11,520 --> 00:43:14,090 incluindo o padrão I / O ponto h. 944 00:43:14,090 --> 00:43:17,660 E tudo-- linha 24, por favor-- notar E / S padrão 945 00:43:17,660 --> 00:43:21,380 dot h e um monte de outros arquivos que aparentemente outras pessoas 946 00:43:21,380 --> 00:43:22,160 ter escrito. 947 00:43:22,160 --> 00:43:24,850 E, se deslocar para baixo esta, pouco arbitrária, 948 00:43:24,850 --> 00:43:27,910 Repare que eu não sei como escrever tudo isto ainda me necessariamente, 949 00:43:27,910 --> 00:43:28,880 mas não há se. 950 00:43:28,880 --> 00:43:30,400 Então, aparentemente, isso tem uma filial. 951 00:43:30,400 --> 00:43:33,210 >> E se eu rolar para baixo um pouco ainda há um outro caso. 952 00:43:33,210 --> 00:43:38,210 Se eu rolar para cima, eu acho que em torno da linha 100 que eu vi para. 953 00:43:38,210 --> 00:43:40,020 Então, eu não estou muito certo como isso funciona ainda, 954 00:43:40,020 --> 00:43:43,180 mas isso é um loop que vai deixe-me iterar um determinado número de vezes. 955 00:43:43,180 --> 00:43:45,230 E se eu percorrer todo o caminho para o fundo 956 00:43:45,230 --> 00:43:51,020 Eu vejo que há uma funcionar aqui chamado 957 00:43:51,020 --> 00:43:54,570 principal, e alguns créditos adicionais para seu prazer da leitura. 958 00:43:54,570 --> 00:43:57,830 >> Portanto, esta é apenas a dizer-- e colocaremos esta linha entre a fonte do curso 959 00:43:57,830 --> 00:44:01,480 código hoje-- que mesmo alguns destes dispositivos que nós tomamos para concedido, 960 00:44:01,480 --> 00:44:05,130 no final do dia você ainda está usando essas construções básicas que nós 961 00:44:05,130 --> 00:44:07,430 já foi introduzindo até agora. 962 00:44:07,430 --> 00:44:08,620 Isso é o suficiente daquele. 963 00:44:08,620 --> 00:44:11,480 Tudo bem, então agora vamos realmente construir algo. 964 00:44:11,480 --> 00:44:15,640 >> Vamos além algo como ola.c, e abrir isto, 965 00:44:15,640 --> 00:44:17,170 vamos escrever este programa aqui. 966 00:44:17,170 --> 00:44:19,850 Eu estou indo para ir em frente e escrever um programa chamado adder.c, 967 00:44:19,850 --> 00:44:23,310 cujo propósito na vida vai ser como a minha primeira calculadora super simples 968 00:44:23,310 --> 00:44:24,840 que acrescenta um par de números. 969 00:44:24,840 --> 00:44:27,050 Não porque é um disco problema, mas porque 970 00:44:27,050 --> 00:44:29,390 permite-me agora amarrar juntos algumas coisas. 971 00:44:29,390 --> 00:44:33,100 Então, eu estou indo para ir em frente e incluem E / S padrão dot h e CS50 ponto h. 972 00:44:33,100 --> 00:44:34,670 Eu vou dizer void main int. 973 00:44:34,670 --> 00:44:36,545 E novamente no futuro vamos voltar a ele 974 00:44:36,545 --> 00:44:38,560 em neste contexto e meio vazios. 975 00:44:38,560 --> 00:44:43,340 >> E agora eu vou dizer uma coisa como printf, dá-me um inteiro. 976 00:44:43,340 --> 00:44:47,610 E agora na minha segunda linha, como faço para me expressar tal 977 00:44:47,610 --> 00:44:50,980 que eu quero declarar uma variável que vai armazenar um int? 978 00:44:50,980 --> 00:44:55,470 Literalmente, o que eu escreva, se eu quiser criar uma variável que armazena um int 979 00:44:55,470 --> 00:44:58,270 que você diria? 980 00:44:58,270 --> 00:44:59,650 int a igual getInt. 981 00:44:59,650 --> 00:45:00,485 Claro, assim que funciona. 982 00:45:00,485 --> 00:45:02,360 E apenas para consistência com o código que você 983 00:45:02,360 --> 00:45:04,485 ver on-line, deixe-me mudar isso para x, só porque x 984 00:45:04,485 --> 00:45:06,830 é um nome comum variável de usar, pelo menos em álgebra. 985 00:45:06,830 --> 00:45:08,720 Agora deixe-me ir em frente e fazer printf novamente. 986 00:45:08,720 --> 00:45:10,692 Dê-me outro inteiro. 987 00:45:10,692 --> 00:45:12,900 E agora eu vou tipo de aprender com esse padrão, 988 00:45:12,900 --> 00:45:14,490 Eu vou dizer int y começa a getInt. 989 00:45:14,490 --> 00:45:16,340 >> E nós não usei GetInt antes, mas apenas 990 00:45:16,340 --> 00:45:19,860 como GetString vai e pega uma corda, como Javier fez da platéia, 991 00:45:19,860 --> 00:45:22,780 similarmente faz GetInt começar a piscar o prompt. 992 00:45:22,780 --> 00:45:26,750 E efetivamente espera para o usuário para dar-lhe um número inteiro, digitando-o 993 00:45:26,750 --> 00:45:27,900 e pressionar Enter. 994 00:45:27,900 --> 00:45:30,850 Agora finalmente eu vou fazer esta, a soma printf de-- 995 00:45:30,850 --> 00:45:36,080 e me deixe agora-- fantasia i por cento e cento i está presente 996 00:45:36,080 --> 00:45:39,270 i Ponto de Exclamação barra invertida n. 997 00:45:39,270 --> 00:45:42,750 E o que você acha que eu vou colocar agora como as entradas adicionais 998 00:45:42,750 --> 00:45:44,620 para printf? 999 00:45:44,620 --> 00:45:47,380 >> Eu não quero dizer literalmente entre aspas x. 1000 00:45:47,380 --> 00:45:52,210 Quero classe em x e então, e agora vamos começar a fantasia 1001 00:45:52,210 --> 00:45:54,420 e vamos supor nós podemos fazer o que queremos. 1002 00:45:54,420 --> 00:45:56,330 O que você quer dizer em seguida? 1003 00:45:56,330 --> 00:45:57,070 x mais y. 1004 00:45:57,070 --> 00:45:58,520 E, de fato, que vai funcionar. 1005 00:45:58,520 --> 00:46:01,760 É minimamente linguagens de programação fazer entender a aritmética básica, 1006 00:46:01,760 --> 00:46:03,500 e por isso deve de fato funcionam. 1007 00:46:03,500 --> 00:46:06,730 >> Então deixe-me ir em frente e fazem víbora em minha janela preto e branco 1008 00:46:06,730 --> 00:46:08,090 aqui em baixo, Enter. 1009 00:46:08,090 --> 00:46:10,830 Linha críptica mas nenhum erro mensagem, então isso é bom. 1010 00:46:10,830 --> 00:46:14,410 Dot cortar víbora, me dê um número inteiro, 1. 1011 00:46:14,410 --> 00:46:16,230 Dê-me outro inteiro, 2. 1012 00:46:16,230 --> 00:46:18,770 A soma de 1 e 2 é 3. 1013 00:46:18,770 --> 00:46:21,730 >> Tudo bem, então uma bem simples programa, mas o que está feito? 1014 00:46:21,730 --> 00:46:25,680 Ele me permitiu usar uma função chamar aqui, chamar uma outra função aqui, 1015 00:46:25,680 --> 00:46:29,260 duas chamadas para GetInt, um terceira chamada para printf, 1016 00:46:29,260 --> 00:46:30,720 e em seguida, usando esses espaços reservados. 1017 00:46:30,720 --> 00:46:33,160 Portanto, é um pouco mais sofisticado do que da última vez. 1018 00:46:33,160 --> 00:46:35,260 Mas e se eu quiser ficar um pouco mais extravagante? 1019 00:46:35,260 --> 00:46:38,900 >> Deixe-me ir em frente e fazer isso agora. 1020 00:46:38,900 --> 00:46:42,890 Deixe-me ir em frente e criar um novo arquivo chamado condições zero. 1021 00:46:42,890 --> 00:46:44,890 E eu estou indo para salvar algum tempo para as aulas de amor 1022 00:46:44,890 --> 00:46:48,260 e basta colar em que código como um ponto de partida. 1023 00:46:48,260 --> 00:46:51,510 E agora eu só vou colocar algo novo aqui no meio. 1024 00:46:51,510 --> 00:46:55,889 Então printf Eu gostaria de um número inteiro por favor. 1025 00:46:55,889 --> 00:46:58,180 E todo este código está disponível no site do curso, 1026 00:46:58,180 --> 00:47:00,556 você não precisa digitá-lo todo para fora em sala de aula, se você preferir não. 1027 00:47:00,556 --> 00:47:02,638 int, e agora eu vou utilizar, em vez de x e y, 1028 00:47:02,638 --> 00:47:05,270 Eu vou usar n, que é provavelmente o nome mais comum 1029 00:47:05,270 --> 00:47:09,220 para um número inteiro de um programa de computador. 1030 00:47:09,220 --> 00:47:12,060 E agora eu quero fazer um pouco julgamento aqui. 1031 00:47:12,060 --> 00:47:15,460 Vou ver se n é maior que 0, então 1032 00:47:15,460 --> 00:47:23,670 Eu vou dizer gritos printf--, printf-- você escolheu um número positivo, 1033 00:47:23,670 --> 00:47:25,370 ponto de exclamação barra invertida n. 1034 00:47:25,370 --> 00:47:26,460 Feche essa. 1035 00:47:26,460 --> 00:47:33,150 Mais eu vou imprimir printf você escolheu um número negativo. 1036 00:47:33,150 --> 00:47:35,377 >> Agora, antes de gritar comigo, vamos executar este programa. 1037 00:47:35,377 --> 00:47:36,210 Deixe-me ir para baixo aqui. 1038 00:47:36,210 --> 00:47:40,730 E como faço para compilar um programa chamado condições traço 0? 1039 00:47:40,730 --> 00:47:42,300 Faça condições traço 0. 1040 00:47:42,300 --> 00:47:45,560 Tipo de um nome estúpido, mas-- caramba. 1041 00:47:45,560 --> 00:47:47,560 OK, bom momento de ensino. 1042 00:47:47,560 --> 00:47:48,410 Por que que quebrar? 1043 00:47:48,410 --> 00:47:51,360 1044 00:47:51,360 --> 00:47:54,710 >> O que eu acidentalmente chamar este arquivo? 1045 00:47:54,710 --> 00:47:56,876 Você pode tipo de inferir a partir da guia aqui. 1046 00:47:56,876 --> 00:47:58,750 Portanto, não é ruim que eu fez isso, porque esta 1047 00:47:58,750 --> 00:48:00,208 vai acontecer, talvez, para alguns de vocês. 1048 00:48:00,208 --> 00:48:03,880 Então eu chamei minha acidentalmente 0 código fonte condição. 1049 00:48:03,880 --> 00:48:09,950 Mas o meu código fonte por convenção deve estar em um arquivo chamado condição 0 traço c, 1050 00:48:09,950 --> 00:48:11,720 ou seja lá o ponto c. 1051 00:48:11,720 --> 00:48:12,610 >> Então deixe-me corrigir isso. 1052 00:48:12,610 --> 00:48:16,880 Assim como o Microsoft Word que eu posso ir para cima para Salvar como e fazer condição 0 ponto c. 1053 00:48:16,880 --> 00:48:20,100 Agora é só para ser arrumado eu sou indo para a frente e remova 1054 00:48:20,100 --> 00:48:23,020 condição 0, o que foi a minha versão antiga. 1055 00:48:23,020 --> 00:48:26,550 E agora vamos fazer fazer condição 0, Enter. 1056 00:48:26,550 --> 00:48:27,870 OK, parece bom. 1057 00:48:27,870 --> 00:48:29,510 >> Condição 0, Enter. 1058 00:48:29,510 --> 00:48:33,530 Eu gostaria de um número inteiro, por favor, 50, você escolheu um número positivo. 1059 00:48:33,530 --> 00:48:35,390 Agora, que tal negativa de 50? 1060 00:48:35,390 --> 00:48:37,660 Você escolheu um número negativo. 1061 00:48:37,660 --> 00:48:39,605 Que tal agora, 0. 1062 00:48:39,605 --> 00:48:42,250 1063 00:48:42,250 --> 00:48:45,350 Certeza que 0 não é negativo. 1064 00:48:45,350 --> 00:48:47,780 >> Portanto, este é um tipo de erro lógico. 1065 00:48:47,780 --> 00:48:50,680 Como faço para corrigir isso? 1066 00:48:50,680 --> 00:48:57,260 Else se n for menor que 0, faça isso, senão podemos ter uma de três vias filial aqui, 1067 00:48:57,260 --> 00:49:01,740 printf você escolheu 0. 1068 00:49:01,740 --> 00:49:06,150 Portanto, agora se eu executar novamente este programa, depois de compilá-lo 1069 00:49:06,150 --> 00:49:10,790 novamente com o make, e agora executar novamente condição 0, o que eu vou ver aqui 1070 00:49:10,790 --> 00:49:14,570 é 0 me dá essa saída. 1071 00:49:14,570 --> 00:49:16,280 Então para onde estamos indo com isso? 1072 00:49:16,280 --> 00:49:18,930 >> Bem, é muito fácil perder de vista da floresta para as árvores. 1073 00:49:18,930 --> 00:49:23,590 E assim nos permitem concluir com esse vídeo de 2 minutos e meia 1074 00:49:23,590 --> 00:49:25,710 em última análise, que é um pouco de um anúncio do Google, 1075 00:49:25,710 --> 00:49:28,850 mas que realmente é a prova que mesmo utilizando estes construção básico 1076 00:49:28,850 --> 00:49:33,020 blocos que podem finalmente fazer uma vez nós temos um pouco de programação 1077 00:49:33,020 --> 00:49:34,463 esclarecido sob nossos cintos. 1078 00:49:34,463 --> 00:49:35,150 >> [MÚSICA DE JOGO] 1079 00:49:35,150 --> 00:49:38,370 1080 00:49:38,370 --> 00:49:40,540 >> SAROO BRIERLEY (narração): Foi há 26 anos, 1081 00:49:40,540 --> 00:49:42,470 e eu estava prestes a completar 5. 1082 00:49:42,470 --> 00:49:45,465 Chegamos à estação de trem e embarcamos nosso trem juntos. 1083 00:49:45,465 --> 00:49:48,010 Meu irmão acabou de dizer que eu vou ficar aqui, e eu vou voltar. 1084 00:49:48,010 --> 00:49:51,140 E eu pensei, bem, você sabe, Eu poderia muito bem apenas ir dormir 1085 00:49:51,140 --> 00:49:52,690 e ele só vai me acordar. 1086 00:49:52,690 --> 00:49:55,145 E quando eu acordei a próxima dia, o conjunto de carro 1087 00:49:55,145 --> 00:49:59,125 estava vazio em um trem desgovernado, um fantasma trem me levar Eu não sei onde. 1088 00:49:59,125 --> 00:50:01,980 1089 00:50:01,980 --> 00:50:06,280 >> Eu fui adotado para a Austrália, para uma família australiana. 1090 00:50:06,280 --> 00:50:09,710 E a mãe tinha decorado minha sala com o mapa da Índia, 1091 00:50:09,710 --> 00:50:11,950 que ela colocou ao lado de minha cama. 1092 00:50:11,950 --> 00:50:15,830 Eu acordei todas as manhãs vendo esse mapa, e, portanto, 1093 00:50:15,830 --> 00:50:18,530 que tipo de mantidas as memórias vivas. 1094 00:50:18,530 --> 00:50:20,530 As pessoas diziam: você é tentando encontrar uma agulha 1095 00:50:20,530 --> 00:50:23,560 em um palheiro, Saroo você nunca vai encontrá-lo. 1096 00:50:23,560 --> 00:50:28,540 >> Eu teria brilhou dos lugares que eu costumava ir, os flashes de minha família 1097 00:50:28,540 --> 00:50:29,890 enfrenta. 1098 00:50:29,890 --> 00:50:34,060 Havia a imagem de minha mãe, sentar-se com as pernas cruzadas, 1099 00:50:34,060 --> 00:50:35,740 apenas observando-a chorar. 1100 00:50:35,740 --> 00:50:38,160 A vida é tão difícil. 1101 00:50:38,160 --> 00:50:41,237 Esse era o meu tesouro. 1102 00:50:41,237 --> 00:50:44,320 E eu estava olhando para o Google Map e percebi que não é o Google Earth também. 1103 00:50:44,320 --> 00:50:48,140 Em um mundo onde você pode aumentar o zoom, Eu comecei a ter todos esses pensamentos 1104 00:50:48,140 --> 00:50:51,500 e quais as possibilidades que isso poderia fazer por mim. 1105 00:50:51,500 --> 00:50:54,890 Eu disse a mim mesmo, você sabe, você tem tem todas aquelas memórias fotográficas 1106 00:50:54,890 --> 00:50:58,590 e marcos de onde você é, e Você sabe o que a cidade se parece. 1107 00:50:58,590 --> 00:51:03,060 Esta poderia ser uma aplicação que você pode usar para encontrar o seu caminho de volta. 1108 00:51:03,060 --> 00:51:06,720 >> Eu pensei, bem, eu vou colocar uma ponto na estação de trem de Calcutá, 1109 00:51:06,720 --> 00:51:10,890 e uma linha de raio, você sabe, que você deve estar procurando em torno desta área. 1110 00:51:10,890 --> 00:51:13,750 Eu meio que me deparei estes trilhos do trem. 1111 00:51:13,750 --> 00:51:18,160 E eu comecei a segui-la, e Cheguei a uma estação de trem que 1112 00:51:18,160 --> 00:51:22,228 refletia a mesma imagem que estava em minhas memórias. 1113 00:51:22,228 --> 00:51:23,707 Tudo combinado. 1114 00:51:23,707 --> 00:51:27,950 Eu apenas pensei que sim, eu sei para onde estou indo. 1115 00:51:27,950 --> 00:51:30,116 Eu só vou deixar o mapa que eu tenho na minha cabeça 1116 00:51:30,116 --> 00:51:33,080 guia-me e levar-me de volta para minha cidade natal. 1117 00:51:33,080 --> 00:51:36,420 >> Cheguei à porta do a casa em que eu nasci. 1118 00:51:36,420 --> 00:51:39,140 E andava cerca de 15 metros em torno do canto, 1119 00:51:39,140 --> 00:51:42,980 havia três senhoras em pé fora, adjacentes uns aos outros. 1120 00:51:42,980 --> 00:51:47,830 E o do meio deu um passo adiante, e Eu apenas pensei, esta é a sua mãe. 1121 00:51:47,830 --> 00:51:53,450 Ela veio para a frente, ela me abraçou, e estávamos lá por cerca de cinco minutos. 1122 00:51:53,450 --> 00:51:56,530 1123 00:51:56,530 --> 00:51:59,000 >> Ela pegou minha mão e ela me levou para a casa 1124 00:51:59,000 --> 00:52:02,450 e pegou o telefone, onde ela tocou a minha irmã e meu irmão 1125 00:52:02,450 --> 00:52:05,600 dizer que, você sabe, teu irmão tem apenas 1126 00:52:05,600 --> 00:52:09,340 de repente apareceu como um fantasma. 1127 00:52:09,340 --> 00:52:12,440 E então a família estava reunida novamente. 1128 00:52:12,440 --> 00:52:15,110 Tudo é tudo de bom, Eu ajudei a minha mãe para fora, 1129 00:52:15,110 --> 00:52:17,110 ela não tem que ser escravizado. 1130 00:52:17,110 --> 00:52:19,555 Ela pode viver o resto de sua vida em paz. 1131 00:52:19,555 --> 00:52:23,460 >> Foi uma agulha num palheiro, mas a agulha estava lá. 1132 00:52:23,460 --> 00:52:24,400 Tudo está lá. 1133 00:52:24,400 --> 00:52:28,260 Tudo o que temos no mundo é, ao toque de um botão. 1134 00:52:28,260 --> 00:52:32,010 Mas você tem que ter a vontade ea a determinação de querer. 1135 00:52:32,010 --> 00:52:32,950 >> [MÚSICA DE JOGO] 1136 00:52:32,950 --> 00:52:36,420 1137 00:52:36,420 --> 00:52:38,170 DAVID MALAN: Maravilhosamente depoimento doce 1138 00:52:38,170 --> 00:52:40,540 apenas o que você pode agora fazer com a tecnologia. 1139 00:52:40,540 --> 00:52:43,390 Vamos vê-lo na próxima semana. 1140 00:52:43,390 --> 00:52:44,374