1 00:00:00,000 --> 00:00:11,952 2 00:00:11,952 --> 00:00:13,800 >> DAVID J. Malan: Entón este é CS50. 3 00:00:13,800 --> 00:00:18,970 E iso foi o propio Colton Ogden do CS50, por máis de quen é a música que pode 4 00:00:18,970 --> 00:00:22,820 descargar en soundcloud.com/cs50. 5 00:00:22,820 --> 00:00:26,690 >> Entón, hoxe imos concentrar aínda máis sobre a arte da programación. 6 00:00:26,690 --> 00:00:28,980 E tomamos onde paramos a semana pasada, con foco 7 00:00:28,980 --> 00:00:31,660 en cero, o que se isto linguaxe de programación gráfica. 8 00:00:31,660 --> 00:00:35,490 E levar as cousas a un nivel inferior, usando unha programación máis tradicional 9 00:00:35,490 --> 00:00:38,420 linguaxe coñecida como C. Pero ao longo do camiño, entendendo 10 00:00:38,420 --> 00:00:40,730 que as mesmas ideas que falou o venres 11 00:00:40,730 --> 00:00:44,390 deberá repetir-se non só no presente linguaxe C, pero na maior parte todos os outros 12 00:00:44,390 --> 00:00:46,350 que miramos para este semestre. 13 00:00:46,350 --> 00:00:50,247 >> Entón chamamos esa cousa aquí o que a última vez? 14 00:00:50,247 --> 00:00:51,830 Este é representante dun comunicado. 15 00:00:51,830 --> 00:00:53,080 Por iso, chamou este comunicado. 16 00:00:53,080 --> 00:00:54,100 E fai algo. 17 00:00:54,100 --> 00:00:56,910 É unha instrución que un ordenador ou arranhão pode executar. 18 00:00:56,910 --> 00:00:59,910 E a partir de agora, imos tamén comezar chamando algo así unha función, 19 00:00:59,910 --> 00:01:02,070 por razóns veremos en breve. 20 00:01:02,070 --> 00:01:03,681 >> Mentres tanto, vimos cousas como esta. 21 00:01:03,681 --> 00:01:05,680 E estes son xeralmente coñecido como o que construír? 22 00:01:05,680 --> 00:01:06,240 >> Audiencia: loop. 23 00:01:06,240 --> 00:01:06,860 >> DAVID J. Malan: Entón un loop. 24 00:01:06,860 --> 00:01:07,943 Así, moi sinxelo. 25 00:01:07,943 --> 00:01:09,470 É, literalmente, fai o que di. 26 00:01:09,470 --> 00:01:12,210 E en perigo, se quere empinar máis pezas do quebra-alí, 27 00:01:12,210 --> 00:01:13,950 a peza vai medrar para encaixar. 28 00:01:13,950 --> 00:01:16,790 E veremos no que C podemos facer o mesmo. 29 00:01:16,790 --> 00:01:20,000 >> Outro tipo de circuíto, aínda que, en risco pode ser para sempre, 30 00:01:20,000 --> 00:01:21,820 ou hai calquera número doutras enfoques. 31 00:01:21,820 --> 00:01:24,150 Pero imos dar un máis ollar generalista, cun rostro 32 00:01:24,150 --> 00:01:27,402 que é probable moi familiar, en lazos máis xeral. 33 00:01:27,402 --> 00:01:29,110 Mark Zuckerberg: Unha cousa que ordenadores 34 00:01:29,110 --> 00:01:31,860 é realmente bo é ordes de repetición. 35 00:01:31,860 --> 00:01:33,910 Como unha persoa, pegaría realmente aburrido, se 36 00:01:33,910 --> 00:01:36,730 tiña que facer o mesmo moitas veces nunha fileira. 37 00:01:36,730 --> 00:01:40,530 Pero un ordenador pode facer o mesmo millóns ou billóns de veces, 38 00:01:40,530 --> 00:01:43,290 e non se cansar, e ser capaz para realizar a vontade moi ben. 39 00:01:43,290 --> 00:01:45,650 >> Así, por exemplo, se eu quería desexar a todos 40 00:01:45,650 --> 00:01:48,840 en Facebook un feliz aniversario enviando un correo electrónico, 41 00:01:48,840 --> 00:01:51,550 el me pode levar máis dun século para escribir, en realidade, fóra 42 00:01:51,550 --> 00:01:53,000 todos estes correos electrónicos para todos. 43 00:01:53,000 --> 00:01:57,780 Pero, con só algunhas liñas de código, podo ter un sistema de enviar un correo-e para todos 44 00:01:57,780 --> 00:01:59,930 en Facebook desexando lles un feliz aniversario. 45 00:01:59,930 --> 00:02:02,730 Entón é iso que lazos son e por que son valiosos e algo 46 00:02:02,730 --> 00:02:04,740 que os ordenadores poden facer moi ben. 47 00:02:04,740 --> 00:02:05,630 >> DAVID J. Malan: Entón, se foi o destinatario 48 00:02:05,630 --> 00:02:07,820 dalgúns dos CS50 e do Espazo de Dropbox de tarde, 49 00:02:07,820 --> 00:02:10,590 que en realidade é precisamente o que nos facer, usando o código ben así. 50 00:02:10,590 --> 00:02:12,600 Nós esencialmente ter un gran folla en que 51 00:02:12,600 --> 00:02:15,016 persoas foron entrando seu nomes e enderezos de correo-e. 52 00:02:15,016 --> 00:02:18,160 E escribimos algo de código que poden interactuar sobre estes enderezos 53 00:02:18,160 --> 00:02:21,860 e cuspir enderezos exclusivos en Se alguén sometido varias veces. 54 00:02:21,860 --> 00:02:25,120 E despois diso, enviamos unha automática correo electrónico do bot do CS50, 55 00:02:25,120 --> 00:02:27,190 incluíndo o código do cupón. 56 00:02:27,190 --> 00:02:29,290 >> Agora nós tamén analizaron Nesta construción da última vez. 57 00:02:29,290 --> 00:02:33,100 E este é un especial exemplo do que? 58 00:02:33,100 --> 00:02:35,050 Entón, si, unha expresión booleana. 59 00:02:35,050 --> 00:02:37,050 E o xeito enténdese para capturar iso tamén. 60 00:02:37,050 --> 00:02:39,966 Todas estas cuestións do formar verdadeiras ou falsas en perigo 61 00:02:39,966 --> 00:02:41,590 vai parecer un pouco algo como isto. 62 00:02:41,590 --> 00:02:43,200 E chamamos iso de unha expresión booleana. 63 00:02:43,200 --> 00:02:46,170 Isto é de feito verdadeiro ou falso, si ou non. 64 00:02:46,170 --> 00:02:49,150 É unha forma de responder a unha pregunta. 65 00:02:49,150 --> 00:02:52,420 >> E Mentres tanto, pode utilizar estes booleana expresións dentro construcións 66 00:02:52,420 --> 00:02:54,720 como estes, que de Claro que son condicións 67 00:02:54,720 --> 00:02:57,259 ou ramas, proverbial garfos na estrada. 68 00:02:57,259 --> 00:02:59,550 E poden ollar non só como este, pero eles tamén poden 69 00:02:59,550 --> 00:03:02,080 ter elses que lles están asociados. 70 00:03:02,080 --> 00:03:05,820 E realmente pode ter unha de tres vías bifurcación na estrada ou un catro garfos 71 00:03:05,820 --> 00:03:08,340 na estrada, simplemente por nidificación destas cousas, 72 00:03:08,340 --> 00:03:10,510 como podes ver en perigo se non ten xa. 73 00:03:10,510 --> 00:03:13,550 E, como pode facer en C tamén. 74 00:03:13,550 --> 00:03:16,810 >> Imos dar máis generalista ollar para un alumnist, así, que 75 00:03:16,810 --> 00:03:21,490 pode presentar unha visión diferente para esas cousas chamadas condicións. 76 00:03:21,490 --> 00:03:24,060 >> BILL GATES: As persoas fan decisións todos os días. 77 00:03:24,060 --> 00:03:27,530 Por exemplo, antes de ir para fóra de ti medio que temos unha instrución if que di: 78 00:03:27,530 --> 00:03:31,480 Se está chovendo, entón eu Necesito ter miña chaqueta. 79 00:03:31,480 --> 00:03:36,820 E os ordenadores son sorprendentes, xa que decidir estes tipos de declaracións, 80 00:03:36,820 --> 00:03:42,280 que se pode realizar de forma fiable isto a unha velocidade incrible. 81 00:03:42,280 --> 00:03:48,240 E así, un programa de ordenador realmente é un pouco de matemáticas e algúns 82 00:03:48,240 --> 00:03:53,050 if onde a decisión sexa feito. 83 00:03:53,050 --> 00:03:55,020 >> DAVID J. Malan: Así como ten que saber, que era 84 00:03:55,020 --> 00:03:57,880 persoas como Bill Gates, Paul Allen, e outros 85 00:03:57,880 --> 00:04:00,240 que realmente deu inicio á chamado computador persoal 86 00:04:00,240 --> 00:04:01,990 revolución, hai uns anos. 87 00:04:01,990 --> 00:04:04,140 Eu penso, antes de mergullo nalgúns administrivia, 88 00:04:04,140 --> 00:04:09,920 nós relacionar un conto do Albuquerque, New Mexico Museum of Natural History 89 00:04:09,920 --> 00:04:13,650 e ciencia, onde algúns dos Bill Gates e primeiras historias de Paul Allen 90 00:04:13,650 --> 00:04:17,470 son contadas como temos agora PCs de hoxe e Macs e moito máis. 91 00:04:17,470 --> 00:04:22,390 Para iso, con todo, necesitamos dous voluntarios que teñen moi boas voces de narración 92 00:04:22,390 --> 00:04:23,735 para ler un guión en voz alta. 93 00:04:23,735 --> 00:04:25,530 >> Todo ben, que tal en volver para alí. 94 00:04:25,530 --> 00:04:26,120 Imos cara arriba. 95 00:04:26,120 --> 00:04:27,770 E que tal diante aquí. 96 00:04:27,770 --> 00:04:28,340 Imos cara a abaixo. 97 00:04:28,340 --> 00:04:29,600 Tomen seus lugares aquí. 98 00:04:29,600 --> 00:04:32,444 Como vostedes veñen para arriba, unha parella de anuncios administrativos. 99 00:04:32,444 --> 00:04:34,360 paso, o proceso de elección dunha sección, 100 00:04:34,360 --> 00:04:36,068 vai iniciar este De mércores a venres. 101 00:04:36,068 --> 00:04:38,400 Máis sobre iso no seguinte Mércores en charla. 102 00:04:38,400 --> 00:04:41,770 >> Super seccións, mentres, son algo que nos ofrece a próxima semana 103 00:04:41,770 --> 00:04:45,310 en que toda a clase é invitado para participar en escala moi grande 104 00:04:45,310 --> 00:04:47,690 seccións, unha máis cómodo, un menos cómodo. 105 00:04:47,690 --> 00:04:51,340 E imos anunciar as indicacións de que, así, ao final desta semana. 106 00:04:51,340 --> 00:04:53,310 >> Seccións Mentres tanto, si, comezará 107 00:04:53,310 --> 00:04:57,241 na terceira semana do curso, o grao cero, o que significa que estes son un par de semanas 108 00:04:57,241 --> 00:04:57,740 fóra. 109 00:04:57,740 --> 00:04:58,450 Entón non se preocupe. 110 00:04:58,450 --> 00:05:01,014 Aínda non perdeu algo nese sentido. 111 00:05:01,014 --> 00:05:03,930 Mentres tanto, con todo, se ten dúbidas administrativamente, 112 00:05:03,930 --> 00:05:08,120 enviar correo-e min e Devon e Gabe e Rob neste enderezo aquí. 113 00:05:08,120 --> 00:05:10,320 >> Finalmente, conxuntos de problemas 0 é, por suposto, para fóra. 114 00:05:10,320 --> 00:05:12,320 Debe ter notado que na páxina web do curso. 115 00:05:12,320 --> 00:05:14,840 Debe fornecer-lle as respostas para as preguntas 116 00:05:14,840 --> 00:05:18,250 pode que ao longo do camiño para comezando co conxunto de problemas. 117 00:05:18,250 --> 00:05:21,430 Pero se se atopa precisando unha man amiga, 118 00:05:21,430 --> 00:05:25,020 por todos os medios asistir o horario de expediente, Luns, martes, mércores, xoves 119 00:05:25,020 --> 00:05:27,290 esta semana, á noite en catro comedores. 120 00:05:27,290 --> 00:05:31,650 Mira que URL alí polas indicacións de onde o horario de expediente será. 121 00:05:31,650 --> 00:05:34,000 >> Agora imos coñecer o noso dous invitados aquí hoxe. 122 00:05:34,000 --> 00:05:34,740 Cal é o seu nome? 123 00:05:34,740 --> 00:05:35,290 >> JAY PAUL: Jay Paul. 124 00:05:35,290 --> 00:05:36,880 >> DAVID J. Malan: Jay Paul, pracer de coñece-lo. 125 00:05:36,880 --> 00:05:37,330 >> Hikari: Hikari. 126 00:05:37,330 --> 00:05:37,975 >> DAVID J. Malan: Hikari? 127 00:05:37,975 --> 00:05:38,250 >> Hikari: Hikari. 128 00:05:38,250 --> 00:05:38,810 >> DAVID J. Malan: Hikari. 129 00:05:38,810 --> 00:05:39,790 Pracer en coñece-lo ben. 130 00:05:39,790 --> 00:05:42,123 Jay Paul e Hikari teñen en fronte nestes música 131 00:05:42,123 --> 00:05:45,100 dous guións que impresos esta mañá desde o Novo México 132 00:05:45,100 --> 00:05:46,692 Museo de Historia Natural e da Ciencia. 133 00:05:46,692 --> 00:05:48,400 E o que eu pensaba Eu faría na sobrecarga 134 00:05:48,400 --> 00:05:52,830 é seguir a súa recitação do guión e esta historia 135 00:05:52,830 --> 00:05:54,700 con algunhas imaxes visuais, sen sorpresas. 136 00:05:54,700 --> 00:05:57,512 >> E o que eu teño feito con antelación é prehighlight no seu guión 137 00:05:57,512 --> 00:05:59,470 o que ten que ler, eo que ten que ler. 138 00:05:59,470 --> 00:06:00,920 E nós imos esencialmente parágrafos só alternativos. 139 00:06:00,920 --> 00:06:03,211 Por iso, é moi parecido que pode ter feito na aula de inglés. 140 00:06:03,211 --> 00:06:06,875 Isto é realmente obrigar ao público a crer no seu conto aquí. 141 00:06:06,875 --> 00:06:07,600 Debemos nós? 142 00:06:07,600 --> 00:06:13,272 Así, a historia aquí é que temos unha BASIC, e comeza en Cambridge. 143 00:06:13,272 --> 00:06:18,750 >> JAY PAUL: Era inverno de 1974, en Cambridge, Massachusetts 144 00:06:18,750 --> 00:06:20,240 onde os invernos poden ser fríos. 145 00:06:20,240 --> 00:06:22,800 Un barbudo, de cabelos longos abandono da facultade chamado 146 00:06:22,800 --> 00:06:27,280 Paul Allen foi drudging través de Harvard Square, absorto nos seus pensamentos. 147 00:06:27,280 --> 00:06:31,050 A súa principal preocupación naqueles días era como lograr o seu amigo, Bill Gates, 148 00:06:31,050 --> 00:06:34,974 a abandonar a escola e ir na empresa con el. 149 00:06:34,974 --> 00:06:37,890 Hikari: Os dous xa foran a través dunha serie de proxectos comerciais 150 00:06:37,890 --> 00:06:40,850 xuntos, con inicio ás Lakeside escola en Seattle, onde 151 00:06:40,850 --> 00:06:45,220 foron pagados en tempo de ordenador libres para probar un ordenador PDP-10 a unha hora local 152 00:06:45,220 --> 00:06:46,580 compartir empresa. 153 00:06:46,580 --> 00:06:50,930 O plan última fora a parar escola e formar unha empresa de software. 154 00:06:50,930 --> 00:06:53,440 Allen deixara Washington Universidade Estadual. 155 00:06:53,440 --> 00:06:58,380 Pero no último minuto, Portas decidiu ir con Harvard. 156 00:06:58,380 --> 00:07:02,080 >> JAY PAUL: Aquel día, cruzando Harvard Square, Allen viu a xaneiro de 157 00:07:02,080 --> 00:07:07,530 1975 da Popular Electronics co título de parada terra, 158 00:07:07,530 --> 00:07:11,900 Kit primeiro minicomputador do mundo para rivalizar Modelos Comerciais. 159 00:07:11,900 --> 00:07:14,430 Baixo o titular era unha imaxe dunha pequena caixa 160 00:07:14,430 --> 00:07:16,160 adornadas con luces e interruptores. 161 00:07:16,160 --> 00:07:19,770 Foi chamado o MITS Altair 8800. 162 00:07:19,770 --> 00:07:24,100 E Allen sabía que iso era o que estaba a buscar. 163 00:07:24,100 --> 00:07:26,350 >> Hikari: Días de discusión seguiu. 164 00:07:26,350 --> 00:07:30,170 Allen e Gates entendeu a importancia do Altair. 165 00:07:30,170 --> 00:07:32,480 Tiñan falado moitas veces sobre microprocesadores 166 00:07:32,480 --> 00:07:35,250 e estaban esperando a ver que sería feito con eles. 167 00:07:35,250 --> 00:07:39,770 Agora había un kit de minicomputador en portada da electrónica popular. 168 00:07:39,770 --> 00:07:42,830 Ao parecer, non tiña aínda software. 169 00:07:42,830 --> 00:07:46,830 Eles imaxinaron unha nación de programadores descendendo sobre MITS. 170 00:07:46,830 --> 00:07:49,590 E así eles chamaron Ed Roberts, o xefe da empresa, 171 00:07:49,590 --> 00:07:53,330 alegando ter unha versión do Linguaxe de programación BASIC case listo 172 00:07:53,330 --> 00:07:54,710 ao Altair. 173 00:07:54,710 --> 00:07:55,570 Non o fixo. 174 00:07:55,570 --> 00:07:58,910 E Roberts debe ter sabido que non. 175 00:07:58,910 --> 00:08:03,170 Estaba quedando 10 chamadas por día a partir de persoas que tiñan un BASIC case listo. 176 00:08:03,170 --> 00:08:05,570 E a súa resposta stock era ", a primeira persoa 177 00:08:05,570 --> 00:08:11,090 que aparece cun traballo BASIC recibe o contrato. " 178 00:08:11,090 --> 00:08:13,910 >> JAY PAUL: Gates e Allen nunca vira un Altair. 179 00:08:13,910 --> 00:08:17,600 Nunca viran o Intel microprocesador 8080 180 00:08:17,600 --> 00:08:19,060 no corazón do Altair. 181 00:08:19,060 --> 00:08:21,470 Pero un par de anos máis tarde Allen escribira un programa 182 00:08:21,470 --> 00:08:25,220 nun ordenador Exposicións que emulado a operación dun Intel anterior 183 00:08:25,220 --> 00:08:26,217 microprocesador. 184 00:08:26,217 --> 00:08:28,300 E esta vez faría o mesmo. 185 00:08:28,300 --> 00:08:31,530 186 00:08:31,530 --> 00:08:34,380 >> Hikari: Cun procesador Intel 8080 Manual ao seu lado, 187 00:08:34,380 --> 00:08:37,770 Allen sentou-se nun Harvard PDP-10 ordenador 188 00:08:37,770 --> 00:08:42,010 e escribiu o emulador e software ferramentas necesarias para facer a programación. 189 00:08:42,010 --> 00:08:45,820 Mentres tanto, Gates, deixou de ir ás clases e se dedicou 190 00:08:45,820 --> 00:08:48,120 para proxectar o BASIC, usando cada truco 191 00:08:48,120 --> 00:08:53,130 el sabía que para obter o tamaño por baixo de 4 kilobytes. 192 00:08:53,130 --> 00:08:55,870 >> JAY PAULO: Fóra de Albuquerque, Ed Roberts recibiu unha chamada de Gates 193 00:08:55,870 --> 00:08:59,754 pedindo detalles sobre como o Altair tratadas rutinas específicas. 194 00:08:59,754 --> 00:09:01,170 Ninguén nunca lle preguntaron iso antes. 195 00:09:01,170 --> 00:09:02,670 E Roberts comezou a se interesar. 196 00:09:02,670 --> 00:09:05,240 197 00:09:05,240 --> 00:09:07,970 >> Hikari: Co desenvolvemento ferramentas eo proxecto listo, 198 00:09:07,970 --> 00:09:10,780 Gates e Allen escribiu o código no PDP-10, 199 00:09:10,780 --> 00:09:16,060 alistar outro estudante de Harvard, Monte Davidoff para escribir rutinas de matemáticas. 200 00:09:16,060 --> 00:09:19,450 Tras unha noite final programación, Allen entrou nun avión 201 00:09:19,450 --> 00:09:22,970 para entregar a súa BASIC para o MITS. 202 00:09:22,970 --> 00:09:25,800 Pasou o avión afrontar preocupante. 203 00:09:25,800 --> 00:09:28,490 E de volta en Cambridge Gates estaba preocupando. 204 00:09:28,490 --> 00:09:32,100 Eles probaron seus BASIC e el traballara no emulador. 205 00:09:32,100 --> 00:09:35,444 Pero e se o emulador estaba mal? 206 00:09:35,444 --> 00:09:37,360 JAY PAUL: Cando o avión achegouse Albuquerque, 207 00:09:37,360 --> 00:09:40,070 Allen entendeu que a súa BASIC, agora perfectamente contido 208 00:09:40,070 --> 00:09:42,460 nun pequeno rolo de cinta de papel perforado, que 209 00:09:42,460 --> 00:09:44,970 será inútil sen un separado programa, chamado de cargador, que 210 00:09:44,970 --> 00:09:47,550 diría o Altair como ler a ser unha cinta de papel 211 00:09:47,550 --> 00:09:49,620 introducidos na máquina de teletipo. 212 00:09:49,620 --> 00:09:52,970 Tirou o portátil e axiña rabiscos un programa de xestión de 213 00:09:52,970 --> 00:09:56,819 en linguaxe Assembly, entón a man trasladado para 1s e 0s 214 00:09:56,819 --> 00:09:57,985 Altair entendería. 215 00:09:57,985 --> 00:10:00,530 216 00:10:00,530 --> 00:10:03,830 >> Hikari: Allen estaba esperando un , Pouco, empresa de alta tecnoloxía limpa 217 00:10:03,830 --> 00:10:05,470 executado por homes de traxe. 218 00:10:05,470 --> 00:10:09,210 Así, el ficou sorprendido cando atopou Roberts el no aeroporto parecendo un rancho 219 00:10:09,210 --> 00:10:10,270 man. 220 00:10:10,270 --> 00:10:12,070 Roberts tamén foi sorprendido. 221 00:10:12,070 --> 00:10:16,340 Cando soltou a Harvard programador nun hotel caro, 222 00:10:16,340 --> 00:10:20,790 Allen tivo de confesar que el non podía pagar o cuarto. 223 00:10:20,790 --> 00:10:24,510 >> JAY Galicia: MITS, en si, foi situado nun centro comercial empoeirados. 224 00:10:24,510 --> 00:10:27,040 Dentro dun desordenado banca era un Altair 225 00:10:27,040 --> 00:10:30,390 cargado con 5 kilobytes de memoria e conectado por un cable 226 00:10:30,390 --> 00:10:32,030 a un teletipo. 227 00:10:32,030 --> 00:10:37,200 Roberts e Enxeñeiro-Xefe, Bill Yates, esperou ansiosamente 228 00:10:37,200 --> 00:10:40,660 como Allen alternado seu cargador programa para o Altair. 229 00:10:40,660 --> 00:10:44,980 O teletipo comezou chugging que tirou a cinta de papel a través do lector de cintas. 230 00:10:44,980 --> 00:10:47,215 Levou 15 minutos quizais para cargar o programa. 231 00:10:47,215 --> 00:10:52,110 A continuación, o teletipo impreso abruptamente dun ventá de memoria, a continuación, unha liña de pronto, 232 00:10:52,110 --> 00:10:55,340 e Allen comezou a escribir Comandos de algunhas probas. 233 00:10:55,340 --> 00:10:57,400 Para asombro de todos, o software traballado. 234 00:10:57,400 --> 00:10:58,525 Houbo erros, claro. 235 00:10:58,525 --> 00:11:02,070 Pero o principal era que funcionaba. 236 00:11:02,070 --> 00:11:06,570 >> Hikari: Posteriormente, no seu camiño para unha $ 3,00 xantar no Pancho, unha vespa voou 237 00:11:06,570 --> 00:11:10,470 na fiestra da picape camión e picado Allen no brazo. 238 00:11:10,470 --> 00:11:13,070 Pero naquel momento nada podería romper o clima. 239 00:11:13,070 --> 00:11:17,210 O Altair agora tivo súa BASIC, o primeiro software comercial para unha casa 240 00:11:17,210 --> 00:11:23,260 ordenador, feita por Paul Allen e Bill Gates, facendo negocios como Microsoft. 241 00:11:23,260 --> 00:11:25,336 >> DAVID J. Malan: Moitos grazas aos nosos dous lectores. 242 00:11:25,336 --> 00:11:30,690 >> [Aplausos] 243 00:11:30,690 --> 00:11:32,520 >> DAVID J. Malan: Agora ten a súa elección, 244 00:11:32,520 --> 00:11:35,880 antes de saír, dun brillante ou un brillo no dark-- oh, 245 00:11:35,880 --> 00:11:40,810 agarde un segundo, wait-- brillante e un brillo na escuridade elefante 246 00:11:40,810 --> 00:11:42,534 da propia Cheng Gong do CS50. 247 00:11:42,534 --> 00:11:43,450 Hikari: Ah, grazas. 248 00:11:43,450 --> 00:11:45,324 David J. Malan: Todos seguro, moitas grazas. 249 00:11:45,324 --> 00:11:49,855 [Aplausos] 250 00:11:49,855 --> 00:11:51,105 DAVID J. Malan: Entón verdadeira historia. 251 00:11:51,105 --> 00:11:54,380 É dicir, para dicir que todos estes máquinas e a facilidade coa que 252 00:11:54,380 --> 00:11:56,270 usalos agora e tomar por certo, moi 253 00:11:56,270 --> 00:12:00,070 comezou aquí, a poucos pasos deste teatro real. 254 00:12:00,070 --> 00:12:03,930 E hoxe, se non foi, este é Maxwell Dworkin, o ordenador 255 00:12:03,930 --> 00:12:05,810 ciencias edificio, tamén á volta da esquina. 256 00:12:05,810 --> 00:12:09,760 E no segundo piso deste edificio non colgar tres páxinas 257 00:12:09,760 --> 00:12:12,740 dende o código fonte orixinal que Bill Gates e Paul Allen escribiu. 258 00:12:12,740 --> 00:12:14,770 En realidade, se usa zoom en que se pode ver non só 259 00:12:14,770 --> 00:12:17,350 os seus nomes no Tipo de orixinal, pero tamén 260 00:12:17,350 --> 00:12:22,100 súas firmas que adornaban a Hai uns anos, cando visitou por última vez. 261 00:12:22,100 --> 00:12:25,800 >> Pero o que era particularmente atractivo sobre iso é o que se propuxo a facer 262 00:12:25,800 --> 00:12:29,760 era escribir un programa que permitir que outras persoas escribindo 263 00:12:29,760 --> 00:12:30,950 seus propios programas. 264 00:12:30,950 --> 00:12:34,280 Na época todo o que había con esta máquina Altair feita pola MITS. 265 00:12:34,280 --> 00:12:40,020 E todo o que precisaba era unha forma de facendo máis doado para afeccionados e persoas 266 00:12:40,020 --> 00:12:45,300 quere nós nesta sala para realmente programa que sen entender necesariamente 267 00:12:45,300 --> 00:12:49,060 Código Assembly, ou máquina código, ou Deus me libre, 0s e 1s. 268 00:12:49,060 --> 00:12:51,190 Nós, programadores, como aqueles nesta sala, nos 269 00:12:51,190 --> 00:12:54,070 quero ser capaz de expresar nós mesmos moito máis como código pseudo 270 00:12:54,070 --> 00:12:57,330 aínda que sexa un pouco máis nit esixente do que falamos a semana pasada. 271 00:12:57,330 --> 00:13:00,970 Non quero escribir un código coma este, que Paul Allen e Bill Gates fixo. 272 00:13:00,970 --> 00:13:04,850 Nós, pola contra, quero escribir un código que parece un pouco máis agradable. 273 00:13:04,850 --> 00:13:07,150 >> Agora, esta é unha linguaxe coñecida como BASIC. 274 00:13:07,150 --> 00:13:11,497 E os números de liña non son o que usar simplemente numerar as liñas de código 275 00:13:11,497 --> 00:13:12,330 que está escribindo. 276 00:13:12,330 --> 00:13:14,038 Non ten nin facelo nos días de hoxe. 277 00:13:14,038 --> 00:13:16,060 Pero pode ver aquí como print "Ola, mundo" 278 00:13:16,060 --> 00:13:18,660 sería, de feito, presuntamente, imprimir só iso. 279 00:13:18,660 --> 00:13:22,710 E entón o que Bill e Paul fixo foi capacitar as persoas para escribir un código coma este 280 00:13:22,710 --> 00:13:27,240 no canto de-- se der un ollo ao ciencia da computación wall-- código coma este. 281 00:13:27,240 --> 00:13:29,290 >> De feito, CS50 recentemente tivo a oportunidade 282 00:13:29,290 --> 00:13:32,540 sentir-se co profesor Harry Lewis no departamento de Ciencia da Computación, que 283 00:13:32,540 --> 00:13:34,640 realmente ensinou Bill Portas hai uns anos, 284 00:13:34,640 --> 00:13:38,460 e está aquí diante de estes tres páxinas de fragmentos. 285 00:13:38,460 --> 00:13:39,560 Imos dar un ollo. 286 00:13:39,560 --> 00:13:45,520 >> HARRY LEWIS: O que ten aquí é un perfil dunha peza inicial de software 287 00:13:45,520 --> 00:13:50,240 escrito por Bill Gates e Paul Allen, fundadores de Microsoft. 288 00:13:50,240 --> 00:13:52,570 Así, o código é interesante por dúas razóns. 289 00:13:52,570 --> 00:13:55,480 En primeiro lugar, converteu-se O primeiro produto de Microsoft, 290 00:13:55,480 --> 00:14:01,810 que era un intérprete para a linguaxe de programación BASIC. 291 00:14:01,810 --> 00:14:04,940 E en segundo lugar, esta foi unha das primeiras tentativas 292 00:14:04,940 --> 00:14:10,580 para crear un intérprete de xeito ordinario persoas poderían usar ordenadores persoais. 293 00:14:10,580 --> 00:14:12,670 >> Entón Bill Gates era un graduación en Harvard. 294 00:14:12,670 --> 00:14:14,820 Comecei a ensinar en Harvard en 1974. 295 00:14:14,820 --> 00:14:16,560 Isto foi feito en 1975. 296 00:14:16,560 --> 00:14:20,180 Así foi o inicio da súa carreira e no inicio da miña carreira. 297 00:14:20,180 --> 00:14:23,790 Realmente ensinou Bill en un curso en torno a este tempo. 298 00:14:23,790 --> 00:14:27,130 Paul Allen non era un Harvard estudante, pero el 299 00:14:27,130 --> 00:14:31,020 fora unha escola compañeiro de clase de Bill Gates. 300 00:14:31,020 --> 00:14:33,740 Se ve e ollar en o perfil, vai 301 00:14:33,740 --> 00:14:36,230 realmente atopar unha terceira nome, Monte Davidoff, 302 00:14:36,230 --> 00:14:39,260 que era compañeiro de clase de Gates aquí en Harvard. 303 00:14:39,260 --> 00:14:41,340 >> OK, entón aquí está un interesante comentario aquí. 304 00:14:41,340 --> 00:14:47,150 El di: "En 4K podes borrar raíz cadrada pero para loops aínda debe funcionar. " 305 00:14:47,150 --> 00:14:53,080 OK, entón o que quere dicir que hai que dous xeitos de compilar este programa. 306 00:14:53,080 --> 00:14:57,860 Un estaba a ser executado nunha versión deste ordenador Altair 307 00:14:57,860 --> 00:15:04,310 que só tiña 4K palabras de memoria, 4096 palabras de memoria. 308 00:15:04,310 --> 00:15:07,050 Pero a versión tivo gran 8K. 309 00:15:07,050 --> 00:15:09,770 E entón o que isto di é que na versión 4K 310 00:15:09,770 --> 00:15:12,770 tiña que eliminar algúns código para facelo apto. 311 00:15:12,770 --> 00:15:14,790 E unha das cousas que serían eliminados 312 00:15:14,790 --> 00:15:16,290 sería a rutina de raíz cadrada. 313 00:15:16,290 --> 00:15:20,360 Pero, ao parecer, a loops aínda debe 314 00:15:20,360 --> 00:15:26,392 traballar, mesmo cando está compilando abaixo para só a versión 4K do ordenador. 315 00:15:26,392 --> 00:15:29,350 DAVID J. Malan: Entón un dos temas, como veremos en ciencia da computación, 316 00:15:29,350 --> 00:15:31,430 É esa noción de estratificación e abstracción, 317 00:15:31,430 --> 00:15:34,670 e realmente estar sobre os ombreiros de persoas que viñeron antes de nós, non 318 00:15:34,670 --> 00:15:37,890 ao contrario de algúns do Bill Gates e Paul Allen narrativa aquí. 319 00:15:37,890 --> 00:15:40,080 E o que isto significa que hoxe podemos tomar para 320 00:15:40,080 --> 00:15:43,490 seguro que as cousas son, en realidade, máis doado para nós a escribir código. 321 00:15:43,490 --> 00:15:47,170 De feito código, como dixemos o venres, é máis tecnicamente coñecido como código fonte. 322 00:15:47,170 --> 00:15:52,210 E é este inglés como sintaxe que é máis axeitado e máis ben definida 323 00:15:52,210 --> 00:15:55,480 que algo como pseudo-código, para que non hai ningunha definición formal. 324 00:15:55,480 --> 00:15:58,320 >> E hoxe o que imos centrar é o código fonte 325 00:15:58,320 --> 00:16:01,010 que se parece con isto, que reconhecidamente, a primeira vista 326 00:16:01,010 --> 00:16:02,690 parece totalmente enigmática. 327 00:16:02,690 --> 00:16:08,540 E, francamente, é un xeito máis esteticamente complexo do que o programa subxacente é. 328 00:16:08,540 --> 00:16:13,300 Todo este programa fai, recall, é o que podemos dicir? 329 00:16:13,300 --> 00:16:14,990 El só imprime "Ola mundo". 330 00:16:14,990 --> 00:16:19,600 E, con todo ollar para todas as cousas que necesitamos para involucrar esa frase moi sinxelo. 331 00:16:19,600 --> 00:16:21,750 Pero en pouco tempo todo estas liñas e máis 332 00:16:21,750 --> 00:16:24,800 vai facer máis sentido para ti. 333 00:16:24,800 --> 00:16:26,940 >> E o fluxo é como segue. 334 00:16:26,940 --> 00:16:31,220 O que necesitamos á nosa disposición é tomar código, como fonte 335 00:16:31,220 --> 00:16:32,340 código que acabamos de ver. 336 00:16:32,340 --> 00:16:35,060 E necesitamos un novo programa para executa-lo completamente. 337 00:16:35,060 --> 00:16:39,130 Necesitamos algoritmos que poden converter o código fonte, así, 338 00:16:39,130 --> 00:16:41,932 en código obxecto, 0s e 1s. 339 00:16:41,932 --> 00:16:43,890 Noutras palabras, o que imos aprender hoxe 340 00:16:43,890 --> 00:16:46,620 é como facelo, escribir código fonte encima, 341 00:16:46,620 --> 00:16:49,930 pasalo como entrada para un especial programa coñecido como un compilador, 342 00:16:49,930 --> 00:16:52,140 e nós imos producir código obxecto. 343 00:16:52,140 --> 00:16:54,600 Que é só un xeito elegante de dicindo que vai levar algo 344 00:16:54,600 --> 00:16:58,350 que se parece iso, pasalo nun programa chamado compilador, 345 00:16:58,350 --> 00:17:01,210 producir código obxecto que se parece con isto. 346 00:17:01,210 --> 00:17:04,720 >> Polo tanto, estas son literalmente os patróns de 0s e 1s 347 00:17:04,720 --> 00:17:08,550 que son comprendidas por un Intel ordenador nos días de hoxe, 348 00:17:08,550 --> 00:17:12,480 que, se interpretado pola CPU, os cerebros no interior dun ordenador, 349 00:17:12,480 --> 00:17:16,130 vai, literalmente, imprimir, simplemente, "Ola mundo". 350 00:17:16,130 --> 00:17:19,670 Agora non hai forma máis 0s e 1s do que sería de esperar pode ser necesario para iso. 351 00:17:19,670 --> 00:17:22,520 Pero iso é porque estamos construíndo nunha boa dose de complexidade 352 00:17:22,520 --> 00:17:24,270 que podemos adiante tomar para concedida. 353 00:17:24,270 --> 00:17:27,869 Noutras palabras, unha morea de persoas intelixentes nos deron unha morea de ferramentas legais 354 00:17:27,869 --> 00:17:32,480 e un poderoso software co cal agora pode facer proxectos da nosa propia. 355 00:17:32,480 --> 00:17:33,400 >> Entón, imos comezar. 356 00:17:33,400 --> 00:17:36,640 Considerando o venres pasado, e Conxunto de problemas a 0, esta semana, 357 00:17:36,640 --> 00:17:39,000 estará botando nun o mundo que se parece con isto. 358 00:17:39,000 --> 00:17:42,180 A partir de hoxe e para o problema Conxunto 1 a próxima semana, o código 359 00:17:42,180 --> 00:17:45,410 vai parecer un pouco máis enigmático, pero funcionalmente é 360 00:17:45,410 --> 00:17:46,940 será o mesmo. 361 00:17:46,940 --> 00:17:50,770 Así, o aviso previo, superior é cero, inferior é C. France Raspadinha 362 00:17:50,770 --> 00:17:52,780 é moito máis user agradable e accesible. 363 00:17:52,780 --> 00:17:56,890 Pero se agora comparar visualmente superior ao inferior, hai unha especie de 1-1 364 00:17:56,890 --> 00:17:59,690 a correspondencia entre o pezas do puzzle e da linguaxe 365 00:17:59,690 --> 00:18:00,870 estamos a piques de xogar. 366 00:18:00,870 --> 00:18:04,420 En particular, dicir, o puzzle azul peza enriba, 367 00:18:04,420 --> 00:18:08,370 aparentemente é equivalente ao que contrasinal ou frase especial nesta lingua 368 00:18:08,370 --> 00:18:09,062 chamado C? 369 00:18:09,062 --> 00:18:09,770 Audiencia: printf. 370 00:18:09,770 --> 00:18:10,728 DAVID J. Malan: printf. 371 00:18:10,728 --> 00:18:12,140 Isto significa que a impresión formatado. 372 00:18:12,140 --> 00:18:15,240 E iso é só unha fantasía forma de dicir printf en C 373 00:18:15,240 --> 00:18:18,615 vai ser unha declaración ou unha función que imprime algo na pantalla. 374 00:18:18,615 --> 00:18:19,990 Que é impreso na pantalla? 375 00:18:19,990 --> 00:18:23,627 Todo o que diga a el para dentro de citas, dentro parénteses. 376 00:18:23,627 --> 00:18:25,460 Entón, de novo, é certo, hai unha morea de cousas 377 00:18:25,460 --> 00:18:27,990 que ten que ter presente, parénteses, comiñas, punto e coma, 378 00:18:27,990 --> 00:18:28,656 e todo isto. 379 00:18:28,656 --> 00:18:30,600 Pero todo isto é unha especie ao lado do punto. 380 00:18:30,600 --> 00:18:33,660 O takeaway interesante para agora é que o bloque digamos en perigo 381 00:18:33,660 --> 00:18:37,520 é practicamente equivalente a a instrución printf en C. 382 00:18:37,520 --> 00:18:41,390 >> Mentres tanto, a peza de puzzle amarela enriba, cando a bandeira verde premendo, 383 00:18:41,390 --> 00:18:44,736 é probablemente equivalente o que contrasinal aquí? 384 00:18:44,736 --> 00:18:45,360 Audiencia: Páxina. 385 00:18:45,360 --> 00:18:46,359 DAVID J. Malan: Entón principal. 386 00:18:46,359 --> 00:18:47,410 Quizais int, quizais baleiro. 387 00:18:47,410 --> 00:18:51,280 Pero tipo principal de sons como é importante, e de feito é. 388 00:18:51,280 --> 00:18:54,080 Entón, cando a bandeira verde premendo é, de novo, a peza de puzzle 389 00:18:54,080 --> 00:18:56,390 que comeza unha todo o programa de Notas. 390 00:18:56,390 --> 00:19:02,140 Pero imos agora comezar a chamar que o principal, esta función coñecida como principal. 391 00:19:02,140 --> 00:19:06,410 >> Agora, con todo, nós imos xeneralizar esta como segue. 392 00:19:06,410 --> 00:19:08,780 Podemos chamar dicir unha función. 393 00:19:08,780 --> 00:19:10,580 E iso pode parecer especialmente como este. 394 00:19:10,580 --> 00:19:11,770 Ben, o que dicir de lazos? 395 00:19:11,770 --> 00:19:16,540 Se queremos iniciar a conversión ou traducindo máis en perigo para C, 396 00:19:16,540 --> 00:19:19,400 esta cousa aquí, ao parecer, só di: "Ola, mundo" para sempre. 397 00:19:19,400 --> 00:19:23,060 Entón, se asociar estes scripts cun gato en perigo, 398 00:19:23,060 --> 00:19:26,560 el só vai continuar a dicir nalgún tipo de burbulla dos debuxos animados, 399 00:19:26,560 --> 00:19:29,922 "Ola mundo, Ola mundo, Ola mundo ", ad nauseum, para sempre. 400 00:19:29,922 --> 00:19:33,130 Se queremos facer algo semellante no C, que vai mirar un pouco enigmática. 401 00:19:33,130 --> 00:19:35,463 Pero podemos conseguir o mesmo resulta, como veremos finalmente 402 00:19:35,463 --> 00:19:36,861 descubrir, con sintaxe como esta. 403 00:19:36,861 --> 00:19:39,360 Vou usar printf de novo, porque ao final do día 404 00:19:39,360 --> 00:19:42,040 Quero imprimir "Ola mundo". 405 00:19:42,040 --> 00:19:45,610 E eu estou aparentemente usando un contrasinal que non é para sempre. 406 00:19:45,610 --> 00:19:47,320 É, no canto da palabra tempo. 407 00:19:47,320 --> 00:19:49,650 Pero só semanticamente en Inglés, mentres que o tipo de 408 00:19:49,650 --> 00:19:52,120 suxire algún tipo de lazo ou ciclo. 409 00:19:52,120 --> 00:19:55,070 >> Entón, que pasa a ser a palabra clave que usa C. 410 00:19:55,070 --> 00:20:00,700 E, aínda que certo, por que mentres realidade significa efectivamente para sempre? 411 00:20:00,700 --> 00:20:04,240 Ben, aínda que, como veremos en breve apreciar todo o máis, 412 00:20:04,240 --> 00:20:08,140 ten este parénteses ao lado del onde podes poñer unha expresión booleana. 413 00:20:08,140 --> 00:20:11,360 E mentres ese expresión é verdadeira, este código, 414 00:20:11,360 --> 00:20:14,750 como indícase entre estes dous claves como imos chamalos, 415 00:20:14,750 --> 00:20:16,880 vai só manter funcionando de novo e de novo. 416 00:20:16,880 --> 00:20:18,410 >> Tanto é así. 417 00:20:18,410 --> 00:20:20,900 Así, mentres que os verdadeiros medios só facelo para sempre. 418 00:20:20,900 --> 00:20:23,480 É case un estúpido construír para se expresar. 419 00:20:23,480 --> 00:20:26,590 Pero alí non era para sempre contrasinal en C. Houbo tempo. 420 00:20:26,590 --> 00:20:29,390 E había unha forma moi simple Expresión booleana como verdade. 421 00:20:29,390 --> 00:20:32,210 E así, este, imos ver, obtén o mesmo resultado. 422 00:20:32,210 --> 00:20:33,890 >> De que outra forma podes aplicar un loop? 423 00:20:33,890 --> 00:20:36,980 Ben, en risco que pode codificar un número específico 424 00:20:36,980 --> 00:20:39,430 de iteracións no loop aquí. 425 00:20:39,430 --> 00:20:43,210 E iso é o que nós pode facer nesta versión de C, 426 00:20:43,210 --> 00:20:46,140 polo que temos unha chamada ao circuíto. 427 00:20:46,140 --> 00:20:49,850 E o loop for aquí vai a iteración, un tanto enigmaticamente, 428 00:20:49,850 --> 00:20:54,100 do valor 0 enriba a, pero menor que 10. 429 00:20:54,100 --> 00:20:55,955 >> Agora variables en cero. 430 00:20:55,955 --> 00:20:57,830 Pode non ter ocasión para usalos. 431 00:20:57,830 --> 00:21:02,516 Pero cal é o punto, en xeral, dunha variable que nós dixemos a semana pasada? 432 00:21:02,516 --> 00:21:03,015 ¿Que é iso? 433 00:21:03,015 --> 00:21:03,780 >> Audiencia: puntos. 434 00:21:03,780 --> 00:21:05,200 >> DAVID J. Malan: Para apuntar? 435 00:21:05,200 --> 00:21:05,700 Oh, apunta. 436 00:21:05,700 --> 00:21:07,620 OK, mantendo o control de puntos, por exemplo, nun xogo. 437 00:21:07,620 --> 00:21:09,510 Ou, máis xeralmente facendo que coa variable? 438 00:21:09,510 --> 00:21:10,450 Cal é a utilidade deles? 439 00:21:10,450 --> 00:21:10,825 >> Audiencia: Memoria. 440 00:21:10,825 --> 00:21:11,750 >> DAVID J. Malan: Si, entón memoria. 441 00:21:11,750 --> 00:21:13,000 É para gardar algo. 442 00:21:13,000 --> 00:21:17,336 E o tipo de bobada que me visual utilizado última vez foi como esta cunca de vidro. 443 00:21:17,336 --> 00:21:19,710 E se quixésemos almacenar algo dentro dunha variable, 444 00:21:19,710 --> 00:21:21,918 por exemplo, no momento da valor é porque hai seis 445 00:21:21,918 --> 00:21:23,450 San seis bolas de ping pong en aquí. 446 00:21:23,450 --> 00:21:26,158 É só algún tipo de almacenamento recipiente que debaixo do capó 447 00:21:26,158 --> 00:21:30,030 é aplicado mediante bits, 0s e 1s, con todo, un equipo pasa a facelo. 448 00:21:30,030 --> 00:21:32,900 >> Así, en perigo, se nós Quere ter unha variable, 449 00:21:32,900 --> 00:21:34,840 podemos utilizar un bloque de laranxa así. 450 00:21:34,840 --> 00:21:37,050 Imos chamar ese contador neste caso particular. 451 00:21:37,050 --> 00:21:38,890 Eu inicializar a 0. 452 00:21:38,890 --> 00:21:41,080 E o que eu entón facer? 453 00:21:41,080 --> 00:21:44,780 Para sempre, din balcón, que se xoga con iso en perigo, 454 00:21:44,780 --> 00:21:45,780 só verá cero. 455 00:21:45,780 --> 00:21:49,920 O gato é o que poñer en traxe vai falar o número en cuestión. 456 00:21:49,920 --> 00:21:52,840 >> Cambio de contador 1 é como incrementar en 1. 457 00:21:52,840 --> 00:21:56,580 E así é que isto vai contar co que entón? 458 00:21:56,580 --> 00:21:59,114 De 0 ata o infinito, ou ata saltos de raspadinhas, 459 00:21:59,114 --> 00:22:01,030 ou que tipo de perder o interese en asistir 460 00:22:01,030 --> 00:22:02,650 ; alto pode realmente contar. 461 00:22:02,650 --> 00:22:04,800 >> Entón, como podemos converter isto en C? 462 00:22:04,800 --> 00:22:06,480 Vai parecer un pouco enigmática. 463 00:22:06,480 --> 00:22:08,896 Pero, de novo, se ollar para cada destas liñas individualmente 464 00:22:08,896 --> 00:22:10,410 que tipo de programación en xeral. 465 00:22:10,410 --> 00:22:13,526 Entón, ao parecer int vai ten algún significado especial en C. 466 00:22:13,526 --> 00:22:14,400 A ver iso de novo. 467 00:22:14,400 --> 00:22:15,810 Como un aparte, significa enteiro. 468 00:22:15,810 --> 00:22:16,990 Entón, isto significa só número. 469 00:22:16,990 --> 00:22:18,920 Entón ese é o tipo de recipiente de vidro que quero, un 470 00:22:18,920 --> 00:22:21,120 que pode almacenar números, non executar ping pong bolas. 471 00:22:21,120 --> 00:22:25,520 E eu vou usar o signo igual non para asignar-lle un valor de 0. 472 00:22:25,520 --> 00:22:29,440 Entón, iso é completamente como conxunto contador a 0, pero en C. 473 00:22:29,440 --> 00:22:32,840 >> Mentres tanto, aínda certa, que era equivalente, por suposto, para sempre, 474 00:22:32,840 --> 00:22:35,980 aínda que sexa un pouco enigmática, e logo, dentro das chaves. 475 00:22:35,980 --> 00:22:39,188 E pode pensar nesas claves, cal podes escribir no teclado, 476 00:22:39,188 --> 00:22:43,110 como realmente ser como a curvatura en destes bloques circulares amarelos en cero. 477 00:22:43,110 --> 00:22:45,700 Ela abrangue varias liñas de código. 478 00:22:45,700 --> 00:22:48,120 >> Printf está a recibir unha pouco asustado, porque agora eu 479 00:22:48,120 --> 00:22:51,120 ver non só cita entre parénteses. 480 00:22:51,120 --> 00:22:55,160 Pero o que máis hai de novo sintaticamente neste exemplo? 481 00:22:55,160 --> 00:22:57,300 Hai un por cento d. 482 00:22:57,300 --> 00:22:58,551 E entón barra invertida n está aí. 483 00:22:58,551 --> 00:23:00,883 Fixemos ver que antes, aínda aínda que eu non mencionalo-lo. 484 00:23:00,883 --> 00:23:01,886 Despois, hai unha coma. 485 00:23:01,886 --> 00:23:03,010 E despois hai un contador. 486 00:23:03,010 --> 00:23:05,010 >> Pero imos ver en só un momento no que este é só 487 00:23:05,010 --> 00:23:09,080 unha forma estándar de dicir unha impresión "Número decimal", cita, pecha comiñas, 488 00:23:09,080 --> 00:23:10,500 un número decimal. 489 00:23:10,500 --> 00:23:13,370 Pero eu vou che dicir máis tarde o que este número decimal é. 490 00:23:13,370 --> 00:23:16,835 Así, o feito de que hai unha coma nesta liña dito printf, 491 00:23:16,835 --> 00:23:18,710 significa ir adiante e impresión un número decimal. 492 00:23:18,710 --> 00:23:23,110 Ah, e por certo, o número é calquera que sexa o valor desta variable é. 493 00:23:23,110 --> 00:23:25,880 E así, para facer isto máis suposto, imos ver un exemplo 494 00:23:25,880 --> 00:23:30,930 en pouco tempo, que inclúen exactamente printf no contexto dos programas de reais C. 495 00:23:30,930 --> 00:23:33,472 >> Agora é só para embrulhar algúns destas construcións. 496 00:23:33,472 --> 00:23:36,680 Expresións booleanas, pode non ter ocasión para usalos no seu programa 497 00:23:36,680 --> 00:23:39,450 pero pode moi ben, especialmente utilizando condicións. 498 00:23:39,450 --> 00:23:43,460 E así estes dous exemplos de Acoitelado dicir, se x é menor que y, 499 00:23:43,460 --> 00:23:48,770 ou, se x é menor que y e y é menos de z, como podemos traducir isto? 500 00:23:48,770 --> 00:23:50,810 >> Ben, en C é só se ve así. 501 00:23:50,810 --> 00:23:55,300 Un pouco enigmático, máis parénteses, algúns ampersands raro, pero fundamentalmente 502 00:23:55,300 --> 00:23:59,160 as ideas son tan sinxelo coma eles están no mundo da peza do puzzle. 503 00:23:59,160 --> 00:24:02,690 Estamos só comprobando se algo é menor que calquera outra cousa. 504 00:24:02,690 --> 00:24:03,910 >> Que tal condicións? 505 00:24:03,910 --> 00:24:09,710 En poucas palabras en inglés, o que iso anaco de código do risco que diría? 506 00:24:09,710 --> 00:24:11,050 >> Audiencia: Compara dous números. 507 00:24:11,050 --> 00:24:13,760 >> DAVID J. Malan: Compara dous números, e, se x é menor que y 508 00:24:13,760 --> 00:24:14,860 el di tanto. 509 00:24:14,860 --> 00:24:18,080 Se x é maior que y el di tanto como, senón 510 00:24:18,080 --> 00:24:20,740 Se x é igual a y que di tanto. 511 00:24:20,740 --> 00:24:22,180 Agora onde x e y vén? 512 00:24:22,180 --> 00:24:22,680 Quen sabe. 513 00:24:22,680 --> 00:24:25,380 Este anaco do scratch código está fóra de contexto. 514 00:24:25,380 --> 00:24:29,050 Pero o que queremos facer agora é traducir isto por só un momento para ver. 515 00:24:29,050 --> 00:24:31,660 >> Entón, como vostede se sentir cómodo esta semana no Conxunto de Problemas 516 00:24:31,660 --> 00:24:34,190 0 xogando neste mundo na parte esquerda, entender 517 00:24:34,190 --> 00:24:36,940 que as ideas non están cambiando esta semana ou o próximo ou aló. 518 00:24:36,940 --> 00:24:38,690 Estamos indo simplemente para comezar a escribir cousas 519 00:24:38,690 --> 00:24:41,240 dun modo diferente co noso teclado en vez do noso rato. 520 00:24:41,240 --> 00:24:44,577 >> Polo tanto, se x é menor que y e hai algúns parénteses alí, 521 00:24:44,577 --> 00:24:47,160 entón hai algunhas claves de novo para o tipo de encapsulado 522 00:24:47,160 --> 00:24:48,970 así como as pezas do puzzle amarelo facer. 523 00:24:48,970 --> 00:24:53,000 E eu estou indo a printf x é menor que y e así por diante. 524 00:24:53,000 --> 00:24:56,540 >> Que é agradable sobre C, como podes ver aquí, 525 00:24:56,540 --> 00:25:00,480 é que non obter este asento, do asento, asento que é necesariamente 526 00:25:00,480 --> 00:25:02,220 vai empurrar o seu código á dereita. 527 00:25:02,220 --> 00:25:04,990 Pola contra pode ter todo lineup ordenadamente así. 528 00:25:04,990 --> 00:25:08,960 Pero isto é só unha estética detalle veremos de novo en pouco tempo. 529 00:25:08,960 --> 00:25:09,660 >> Todo correcto. 530 00:25:09,660 --> 00:25:13,290 Isto nos trae de volta ao este programa ollar enigmático. 531 00:25:13,290 --> 00:25:15,180 Imos realmente escribir un código. 532 00:25:15,180 --> 00:25:16,830 Agora, como é que vai escribir o código? 533 00:25:16,830 --> 00:25:21,310 Todos estes anos que posuíu un Mac ou PC, escritorio ou portátil, 534 00:25:21,310 --> 00:25:24,520 realmente tiña a capacidade para comezar a escribir código de programación. 535 00:25:24,520 --> 00:25:27,050 Pero probablemente falta un tipo especial de programa. 536 00:25:27,050 --> 00:25:28,470 Certamente pode escribir código. 537 00:25:28,470 --> 00:25:30,740 Pero non pode, necesariamente, fóra da caixa, 538 00:25:30,740 --> 00:25:34,210 converter o código fonte en código obxecto, 0s e 1s 539 00:25:34,210 --> 00:25:35,619 sen o que o seu ordenador? 540 00:25:35,619 --> 00:25:36,410 Audiencia: Compiler. 541 00:25:36,410 --> 00:25:37,630 DAVID J. Malan: Entón, un compilador, certo. 542 00:25:37,630 --> 00:25:39,730 Agora, a maioría de vostedes probablemente non posúe un compilador, 543 00:25:39,730 --> 00:25:41,259 nunca baixar un compilador. 544 00:25:41,259 --> 00:25:44,300 Pero vai ver que pode baixa-lo como a maioría calquera outra peza de software. 545 00:25:44,300 --> 00:25:47,470 No mundo do Mac OS, pode descargar ou xa baixou 546 00:25:47,470 --> 00:25:50,437 algo chamado Xcode ou GCC ou Clang. 547 00:25:50,437 --> 00:25:52,270 Se vén do Mundo Windows que pode 548 00:25:52,270 --> 00:25:56,190 ter feito a descarga do Visual Studio, Visual Basic, ambientes como ese. 549 00:25:56,190 --> 00:25:59,200 Hai decenas de compiladores estes días que pode usar. 550 00:25:59,200 --> 00:26:01,940 Pero o curto que aquí é que sería unha dor 551 00:26:01,940 --> 00:26:04,480 e, a verdade, un tecnolóxico pesadelo para centos 552 00:26:04,480 --> 00:26:07,680 de persoas con diferentes configuración do ordenador para todos 553 00:26:07,680 --> 00:26:09,800 configurar as súas máquinas exactamente da mesma maneira 554 00:26:09,800 --> 00:26:11,700 para que todos poidamos estar na mesma páxina. 555 00:26:11,700 --> 00:26:15,240 >> Entón, o que nós, en vez diso, facer en CS50 é nós dámoslle 556 00:26:15,240 --> 00:26:18,349 un ambiente normal, unha Ambiente Linux que é 557 00:26:18,349 --> 00:26:20,140 vai parecer un pouco algo así. 558 00:26:20,140 --> 00:26:22,980 Vai ver máis diso no Conxunto de problemas 1 especificación que 559 00:26:22,980 --> 00:26:25,330 será facilitada liña nesta noite de venres. 560 00:26:25,330 --> 00:26:28,360 >> E o que iso significa é que, de agora en diante 561 00:26:28,360 --> 00:26:32,060 van ser capaces de descargar e instalar un programa 562 00:26:32,060 --> 00:26:33,650 chamado o CS50 Appliance. 563 00:26:33,650 --> 00:26:36,275 E vai facer a descarga e instalar outro programa chamado 564 00:26:36,275 --> 00:26:40,300 un hypervisor, que é só unha forma elegante de conseguir isto. 565 00:26:40,300 --> 00:26:44,600 Se tes un Mac ou PC ou un Ordenador Linux ou nun ordenador Solaris, 566 00:26:44,600 --> 00:26:46,830 ou calquera que sexa tolo operativo sistema que está a ser executado, 567 00:26:46,830 --> 00:26:49,820 vai baixar un programa chamado hypervisor que é 568 00:26:49,820 --> 00:26:53,350 vai realizar o CS50 Appliance no seu ordenador 569 00:26:53,350 --> 00:26:55,430 non importa o que o seu sistema operativo é. 570 00:26:55,430 --> 00:27:00,640 Un hipervisor noutras palabras converte noso material para calquera lingua, 571 00:27:00,640 --> 00:27:03,850 o que quere que as súas instrucións propio ordenador entende. 572 00:27:03,850 --> 00:27:04,962 >> Polo tanto, esta é unha estratificación. 573 00:27:04,962 --> 00:27:06,920 E unha vez máis, este é o tipo da temática en ordenador 574 00:27:06,920 --> 00:27:08,722 ciencia, o edificio enriba das cousas. 575 00:27:08,722 --> 00:27:09,680 Pode que o Windows. 576 00:27:09,680 --> 00:27:10,710 Pode que o Mac OS. 577 00:27:10,710 --> 00:27:12,960 Pero a partir da próxima semana está terá descargada 578 00:27:12,960 --> 00:27:14,980 un programa gratuito chamado hypervisor. 579 00:27:14,980 --> 00:27:17,800 Vai baixar unha peza de software chamado CS50 Appliance. 580 00:27:17,800 --> 00:27:21,050 >> Isto vai funcionar no hypervisor, que vai executar no seu ordenador. 581 00:27:21,050 --> 00:27:23,030 E o resultado final é que todos nós 582 00:27:23,030 --> 00:27:26,220 ter unha simple fiestra como esta no seu Mac ou PC 583 00:27:26,220 --> 00:27:30,160 que nos dá a ilusión de todo executando o mesmo sistema operativo, 584 00:27:30,160 --> 00:27:32,800 sen calquera outra impacto no seu ordenador. 585 00:27:32,800 --> 00:27:34,870 E pode pantalla completa isto e, esencialmente, se comportan 586 00:27:34,870 --> 00:27:37,550 como se está executando unha sistema operativo chamado Linux, 587 00:27:37,550 --> 00:27:40,270 que é o que o CS50 Appliance baséase. 588 00:27:40,270 --> 00:27:42,930 >> Entón, imos realmente usar este agora escribir un programa. 589 00:27:42,930 --> 00:27:45,450 Pode escribir un programa usando Microsoft Word. 590 00:27:45,450 --> 00:27:48,160 Pode escribir un programa usando o TextEdit, ou bloque de notas, 591 00:27:48,160 --> 00:27:51,880 ou Wordpad, ou practicamente calquera palabra programa de procesamento que xa usou. 592 00:27:51,880 --> 00:27:55,174 Pero a realidade é que non debe utilizar realmente calquera destes programas. 593 00:27:55,174 --> 00:27:57,840 Certamente non debe usar algo así como o Microsoft Word, que 594 00:27:57,840 --> 00:28:01,120 ten virado e negra e cursiva, e fontes grandes e fontes pequenas, 595 00:28:01,120 --> 00:28:03,560 porque o ordenador non se preocupan nada diso. 596 00:28:03,560 --> 00:28:05,600 Todo o equipo está vai interesa é 597 00:28:05,600 --> 00:28:09,040 Inglés como instrucións escritas en C. 598 00:28:09,040 --> 00:28:12,050 >> Entón, o que nós imos facer dentro do Appliance CS50 599 00:28:12,050 --> 00:28:14,290 é usar un programa libremente dispoñible, e é 600 00:28:14,290 --> 00:28:17,360 preinstalado neste aparello, chamado Gedit. 601 00:28:17,360 --> 00:28:22,280 E Gedit é só un super sinxelo editor de texto como o TextEdit de Mac VOS, 602 00:28:22,280 --> 00:28:26,200 como o Bloc de Notas de Windows que vai mirar un pouco algo como isto. 603 00:28:26,200 --> 00:28:28,910 >> Entón, imos realmente non ollar diapositivas desta. 604 00:28:28,910 --> 00:28:32,580 Pero imos realmente entrar o propio ambiente. 605 00:28:32,580 --> 00:28:36,090 Eu estou indo a ir adiante e Póñase-se, nesta outra xanela, 606 00:28:36,090 --> 00:28:40,910 ao meu CS50 Appliance, que eu teño pre-instalado no meu portátil aquí. 607 00:28:40,910 --> 00:28:43,771 >> Teña en conta que, como Windows e VOS, ten algúns menús. 608 00:28:43,771 --> 00:28:45,520 Como Windows pon alí en baixo, no canto 609 00:28:45,520 --> 00:28:47,020 Mac OS, o que o sitúa alí en baixo. 610 00:28:47,020 --> 00:28:48,930 Pero a realidade é que é todo tipo do mesmo. 611 00:28:48,930 --> 00:28:50,770 E aquí é un todo banda de software. 612 00:28:50,770 --> 00:28:51,770 Hai Dropbox. 613 00:28:51,770 --> 00:28:54,780 Hai unha morea de accesorios, programas gráficos que imos 614 00:28:54,780 --> 00:28:56,430 usar máis tarde no prazo de conxuntos de problemas. 615 00:28:56,430 --> 00:28:59,650 Hai un navegador construído en que se trata dun verdadeiro ordenador completo 616 00:28:59,650 --> 00:29:01,240 no interior dun ordenador. 617 00:29:01,240 --> 00:29:04,170 >> Pero eu vou facer clic neste máis á esquerda icono branco aquí, 618 00:29:04,170 --> 00:29:05,890 que é a icona para Gedit. 619 00:29:05,890 --> 00:29:09,650 E iso vai abrir unha xanela que ten tres paneis de que, 620 00:29:09,650 --> 00:29:12,590 un á esquerda, un alto, e unha parte inferior. 621 00:29:12,590 --> 00:29:16,071 >> Agora é nun presente superior dereita que Vou realmente escribir un código. 622 00:29:16,071 --> 00:29:16,820 Entón, imos facelo,. 623 00:29:16,820 --> 00:29:19,040 Eu estou indo a ir en File, Save. 624 00:29:19,040 --> 00:29:22,100 E non pode nunca ver este diálogo específica antes. 625 00:29:22,100 --> 00:29:23,620 Pero isto é como VOS ou Windows. 626 00:29:23,620 --> 00:29:25,490 É só unha fiestra con todos os cartafoles 627 00:29:25,490 --> 00:29:27,290 que eu teño dentro deste ordenador. 628 00:29:27,290 --> 00:29:30,320 >> E eu estou indo a gardar o ficheiro como ola.c. 629 00:29:30,320 --> 00:29:32,690 E eu estou indo a ir adiante e prema Gardar. 630 00:29:32,690 --> 00:29:36,364 E agora entende que eu teño unha guía na esquina superior esquerda chamado ola.c. 631 00:29:36,364 --> 00:29:38,280 Entón, probablemente, moi familiarizado, aínda que non teña 632 00:29:38,280 --> 00:29:40,240 utilizando este programa específico antes. 633 00:29:40,240 --> 00:29:44,890 >> E agora estou indo a escribir os secuencia críptica de comandos 634 00:29:44,890 --> 00:29:46,360 que vimos hai pouco. 635 00:29:46,360 --> 00:29:49,330 Incluír, eu estándar / O.h. 636 00:29:49,330 --> 00:29:50,600 Máis sobre iso en breve. 637 00:29:50,600 --> 00:29:55,670 Void main Int, rizado aberto cinta, pechou chaveta. 638 00:29:55,670 --> 00:30:01,570 E entón alí dentro eu creo que é onde tivemos "Ola mundo", punto e coma. 639 00:30:01,570 --> 00:30:03,100 E agora gardar. 640 00:30:03,100 --> 00:30:08,780 >> Polo tanto, este é un programa escrito en C, escrito, polo tanto, no código de fonte. 641 00:30:08,780 --> 00:30:10,720 Pero eu non podo simplemente executar este programa. 642 00:30:10,720 --> 00:30:13,390 Eu medio que quero dobrar facer clic nun icono algún lugar, 643 00:30:13,390 --> 00:30:16,390 pero ningunha icona existe outro que o ficheiro de código fonte. 644 00:30:16,390 --> 00:30:20,359 O que, de novo, é o proceso que agora Necesito realizar este ficheiro a través de? 645 00:30:20,359 --> 00:30:21,150 Audiencia: Compiler. 646 00:30:21,150 --> 00:30:22,399 DAVID J. Malan: Entón un compilador. 647 00:30:22,399 --> 00:30:24,890 Así, en diferentes ordenadores ti facelo de diferentes maneiras. 648 00:30:24,890 --> 00:30:27,480 Pero o que fixemos aquí en o Appliance CS50 que é 649 00:30:27,480 --> 00:30:31,260 representante como pode facelo en moitos sistemas diferentes, 650 00:30:31,260 --> 00:30:34,036 é que eu vou simplemente executar un comando chamado make. 651 00:30:34,036 --> 00:30:35,660 E o make é literalmente vai facelo. 652 00:30:35,660 --> 00:30:36,640 Fai-me un programa. 653 00:30:36,640 --> 00:30:39,060 >> Entón faga vai executar un compilador para min. 654 00:30:39,060 --> 00:30:42,160 E o nome do programa Eu quero facer é Ola. 655 00:30:42,160 --> 00:30:43,510 Agora, facer un programa. 656 00:30:43,510 --> 00:30:47,170 E facer é intelixente dabondo para entender que, se eu digo facer Ola, 657 00:30:47,170 --> 00:30:50,980 vai buscar automaticamente para un ficheiro chamado ola.c 658 00:30:50,980 --> 00:30:53,420 só porque esa é a forma como está configurado. 659 00:30:53,420 --> 00:31:00,300 >> Entón, cando eu agora prema Intro aquí, este liña enigmática tolo acaba de ser executado. 660 00:31:00,300 --> 00:31:02,720 E confíen en min, antes de longo, dentro de poucos días, 661 00:31:02,720 --> 00:31:05,590 vai entender o que todos de que os medios sen sentido. 662 00:31:05,590 --> 00:31:11,150 Pero, polo de agora, só sei que facer execución desencadeada dun compilador. 663 00:31:11,150 --> 00:31:13,290 Por outras palabras, atopou un compilador no meu ordenador 664 00:31:13,290 --> 00:31:14,820 que é pre-instalado no aparello CS50 665 00:31:14,820 --> 00:31:16,560 que nós imos entregar para ti en Conxunto de problemas 1. 666 00:31:16,560 --> 00:31:20,990 E logo levou ola.c como de entrada, e ao parecer producido 667 00:31:20,990 --> 00:31:23,040 0s e 1s como saída. 668 00:31:23,040 --> 00:31:29,410 >> E, por defecto, o que fai é gardada eses 0s e 1s nun ficheiro chamado Ola. 669 00:31:29,410 --> 00:31:33,180 E aínda que esta sintaxe tamén pode ser novidade para ti, simplemente dicindo dot 670 00:31:33,180 --> 00:31:37,110 Ola cortar será a medios polos que eu executar este programa. 671 00:31:37,110 --> 00:31:40,360 >> De momento e para, polo menos, un par semanas, case todos os programas 672 00:31:40,360 --> 00:31:44,230 escribimos van estar en fiestras de texto branco e negro. 673 00:31:44,230 --> 00:31:47,006 No Ratinho, non premer, sen fiestras, sen iconas. 674 00:31:47,006 --> 00:31:49,630 Imos mantelo simple e concentrar-se nas ideas subxacentes 675 00:31:49,630 --> 00:31:52,490 inicialmente, antes de chegar a algo nivel máis elevado, por exemplo, 676 00:31:52,490 --> 00:31:56,410 como o xogo pausa que falamos sobre a primeira clase a semana pasada. 677 00:31:56,410 --> 00:32:00,820 >> Entón, cando eu prema Intro aquí, é equivalente nun texto único ambiente 678 00:32:00,820 --> 00:32:03,272 dobrar premer nun icono chamado Ola. 679 00:32:03,272 --> 00:32:05,480 O que espera vontade pasar cando prema Intro logo? 680 00:32:05,480 --> 00:32:07,120 >> Audiencia: El vai imprimir "Ola mundo". 681 00:32:07,120 --> 00:32:10,000 >> DAVID J. Malan: Esperemos el ha imprimir "Ola mundo". 682 00:32:10,000 --> 00:32:11,370 E de feito o fixo. 683 00:32:11,370 --> 00:32:13,690 Agora que houbo algún sintaxe enigmática aquí. 684 00:32:13,690 --> 00:32:15,950 Imos rebobinar para só un momento para ver se 685 00:32:15,950 --> 00:32:19,530 Non se pode iniciar inferir só por xogar, probar e falla, 686 00:32:19,530 --> 00:32:21,130 acerca do que está pasando aquí. 687 00:32:21,130 --> 00:32:23,609 E se eu me librar da barra invertida n? 688 00:32:23,609 --> 00:32:25,650 Agora, algúns de vostedes que teño programado antes, probablemente, 689 00:32:25,650 --> 00:32:27,054 saber instantáneamente o que iso significa. 690 00:32:27,054 --> 00:32:29,220 Pero para aqueles de vostedes que teño nunca programou antes, 691 00:32:29,220 --> 00:32:34,052 polo menos pensar a si mesmo o que está a suceder cambiando cando executar novamente este programa? 692 00:32:34,052 --> 00:32:37,010 Entón, eu vou volver para o meu janelinha branco e negro, que 693 00:32:37,010 --> 00:32:39,290 é a fiestra na que Podo compilar este. 694 00:32:39,290 --> 00:32:41,130 Vou recompilar Ola. 695 00:32:41,130 --> 00:32:43,520 Nós imos ver o mesmo secuencia de comandos crípticos. 696 00:32:43,520 --> 00:32:45,719 E eu vou facer barra dot Ola. 697 00:32:45,719 --> 00:32:48,260 E agora alguén, se, que nunca programou antes, 698 00:32:48,260 --> 00:32:49,770 o que pode ser diferente esta vez? 699 00:32:49,770 --> 00:32:50,020 Si. 700 00:32:50,020 --> 00:32:51,840 >> Audiencia: Ela non vai parar impresión "Ola mundo". 701 00:32:51,840 --> 00:32:52,660 >> DAVID J. Malan: Vai para-- arrepentido? 702 00:32:52,660 --> 00:32:54,210 >> Audiencia: Ela non vai deixar de imprimir lo? 703 00:32:54,210 --> 00:32:55,810 >> DAVID J. Malan: non deixar de imprimir "Ola mundo". 704 00:32:55,810 --> 00:32:56,560 Entón, non é unha mala idea. 705 00:32:56,560 --> 00:32:58,633 Outras ideas? 706 00:32:58,633 --> 00:32:59,132 Si. 707 00:32:59,132 --> 00:33:00,060 >> Audiencia: mensaxe de erro? 708 00:33:00,060 --> 00:33:01,750 >> DAVID J. Malan: Erro mensaxe, OK, pode ser. 709 00:33:01,750 --> 00:33:02,250 Que máis? 710 00:33:02,250 --> 00:33:05,479 Audiencia: Pode imprimir o soporte co punto e coma tamén? 711 00:33:05,479 --> 00:33:08,270 DAVID J. Malan: Pode imprimir o soporte co punto e coma tamén. 712 00:33:08,270 --> 00:33:11,950 Entón quizais esta barra invertida entón é algunha tipo de terminous iso é importante. 713 00:33:11,950 --> 00:33:14,860 Calquera outros pensamentos? 714 00:33:14,860 --> 00:33:16,412 >> Así, as boas ideas. 715 00:33:16,412 --> 00:33:18,370 E, de feito, vai ser unha mensaxe de erro. 716 00:33:18,370 --> 00:33:20,400 Isto pode ser máis probable ser a resposta en xeral 717 00:33:20,400 --> 00:33:22,420 para as próximas semanas cando aprendemos a código aquí. 718 00:33:22,420 --> 00:33:27,680 >> Pero, polo de agora lembre de que os ordenadores só faga o que diga a eles para facer. 719 00:33:27,680 --> 00:33:30,400 Moi parecido ao de cacahuete ridículo manteiga e marmelada exemplo. 720 00:33:30,400 --> 00:33:33,860 Os nosos ordenadores humanos só deberían para facer o que dixo a eles faceren. 721 00:33:33,860 --> 00:33:36,250 Polo tanto, neste caso, se non diga o ordenador 722 00:33:36,250 --> 00:33:41,190 para mover ese cursor piscando á liña seguinte, el non vai facelo. 723 00:33:41,190 --> 00:33:45,390 Entón, cando eu executar este programa Agora, teña en conta a diferenza. 724 00:33:45,390 --> 00:33:46,900 >> Parece un erro. 725 00:33:46,900 --> 00:33:49,190 É un erro estética, quizais. 726 00:33:49,190 --> 00:33:53,310 Pero o que é diferente sobre este de saída con respecto ao último obviamente? 727 00:33:53,310 --> 00:33:53,810 Si. 728 00:33:53,810 --> 00:33:54,920 >> Audiencia: Non fixo unha nova liña. 729 00:33:54,920 --> 00:33:56,586 >> DAVID J. Malan: El non fixo unha nova liña. 730 00:33:56,586 --> 00:33:58,740 Agora, aqueles de vostedes que ten páxinas web quizais feitas 731 00:33:58,740 --> 00:34:01,910 antes, pode saber do BR etiqueta ou marca de parágrafo, 732 00:34:01,910 --> 00:34:03,120 moi semellante en espírito. 733 00:34:03,120 --> 00:34:06,680 Un navegador web van ignore-lo ata que diga a el o que facer. 734 00:34:06,680 --> 00:34:10,020 Do mesmo xeito, é unha linguaxe como C só vai facer o que diga a el para facer. 735 00:34:10,020 --> 00:34:12,730 >> Así, a razón que todos estes exemplos, 736 00:34:12,730 --> 00:34:15,350 ata agora, temos unha especie de casualmente tiña esa barra invertida 737 00:34:15,350 --> 00:34:18,560 alí dentro, que é o medio polo cal se expresa 738 00:34:18,560 --> 00:34:21,380 como un carácter de nova liña, por así dicir. 739 00:34:21,380 --> 00:34:26,219 E pode tipo de apreciar, se cadra, que esta sería unha especie de idiota 740 00:34:26,219 --> 00:34:27,070 se nada máis. 741 00:34:27,070 --> 00:34:29,150 Se eu quixese unha nova liña, só premer Intro e logo, tipo 742 00:34:29,150 --> 00:34:32,219 de masacrar o código así Realmente non debe fregar-lle o camiño certo. 743 00:34:32,219 --> 00:34:33,830 E mesmo se non fai iso realmente importa neste momento, 744 00:34:33,830 --> 00:34:35,830 notarás que este non é especialmente 745 00:34:35,830 --> 00:34:37,870 boa parte de vista de código. 746 00:34:37,870 --> 00:34:39,969 >> E así que o mundo anos é decidido 747 00:34:39,969 --> 00:34:43,420 que cando quere poñer o cursor unha nova liña explicitamente, 748 00:34:43,420 --> 00:34:46,332 ten que dicir explicitamente nova liña, barra invertida n. 749 00:34:46,332 --> 00:34:48,040 E hai algunha outra símbolos así. 750 00:34:48,040 --> 00:34:50,719 Pero polo de agora imos só concentrarse en barra invertida n. 751 00:34:50,719 --> 00:34:53,790 >> Agora imos facer o programa algo máis interesante. 752 00:34:53,790 --> 00:34:59,200 Eu estou indo a ir adiante e esta vez abrir un novo ficheiro. 753 00:34:59,200 --> 00:35:02,520 Vou gardalo como Ola-1.c. 754 00:35:02,520 --> 00:35:05,540 E só por diversión, eu vou ir poñelas na miña carpeta Dropbox. 755 00:35:05,540 --> 00:35:09,030 >> Como verás na CS50 documentación para o seu dispositivo, 756 00:35:09,030 --> 00:35:11,210 aínda esta semana para o problema Conxunto 1, imos impulsar 757 00:35:11,210 --> 00:35:13,230 usa Dropbox ou algún servizo equivalente, 758 00:35:13,230 --> 00:35:15,430 porque, entón, todo o seu código de será feito automaticamente. 759 00:35:15,430 --> 00:35:17,830 E é por iso que eu teño ir a esa carpeta aquí. 760 00:35:17,830 --> 00:35:20,230 >> E agora eu vou escribir un programa un pouco diferente. 761 00:35:20,230 --> 00:35:24,740 Incluír, eu estándar / O.h, void main int. 762 00:35:24,740 --> 00:35:29,660 E entón aquí printf, Ola mundo, que é exactamente a mesma de antes. 763 00:35:29,660 --> 00:35:32,450 >> Pero agora quero imprimir algo iso é un pouco diferente. 764 00:35:32,450 --> 00:35:34,800 Quero imprimir, dicir: "Ola, David." 765 00:35:34,800 --> 00:35:37,590 Todo ben, entón, obviamente, debería esperemos 766 00:35:37,590 --> 00:35:40,360 ser o caso de que se eu recompilar Neste programa, executa-lo de novo, 767 00:35:40,360 --> 00:35:41,840 vai dicir "Ola, David." 768 00:35:41,840 --> 00:35:45,160 >> Pero e se eu queira introducir este tipo de variable, 769 00:35:45,160 --> 00:35:49,240 a noción de un recipiente que está a suceder para almacenar D-a-v-i-d e non é difícil de código que 770 00:35:49,240 --> 00:35:50,600 no meu programa. 771 00:35:50,600 --> 00:35:53,430 Ben, o que se eu comezar facer algo así? 772 00:35:53,430 --> 00:35:57,120 >> Cadea s, polo que esta é unha variable. 773 00:35:57,120 --> 00:36:00,250 Se queres unha corda, A.K.A. unha palabra ou unha frase. 774 00:36:00,250 --> 00:36:03,485 Unha secuencia de caracteres é a que nós na programación chamar unha cadea. 775 00:36:03,485 --> 00:36:06,610 Nós só estamos indo a xenericamente chamadas el é, porque é un bo nome simple. 776 00:36:06,610 --> 00:36:08,010 Pero eu podería chamalo de nada. 777 00:36:08,010 --> 00:36:12,920 >> Vou dicir iguais cadea s entre comiñas, "David", punto e coma. 778 00:36:12,920 --> 00:36:18,330 E agora quero inserir D-a-v-i-d para o que eu son impresión. 779 00:36:18,330 --> 00:36:23,720 E antes de que vimos un teaser en a pantalla dunha sintaxe especial 780 00:36:23,720 --> 00:36:26,050 que nos permitiu substituto nun valor. 781 00:36:26,050 --> 00:36:29,250 Cal foi o especial símbolo algúns diapositivas detrás? 782 00:36:29,250 --> 00:36:30,040 >> Así por cento. 783 00:36:30,040 --> 00:36:33,830 Na época, era por cento d ao número decimal. 784 00:36:33,830 --> 00:36:35,850 Isto non parece realmente relevante aquí. 785 00:36:35,850 --> 00:36:38,650 Acontece que hai outro símbolo de porcentaxe, 786 00:36:38,650 --> 00:36:42,810 que representa a porcentaxe de s, que se atopa para un espazo reservado para a cadea. 787 00:36:42,810 --> 00:36:49,350 >> Entón, agora, de forma moi simple, eu son indo a ir facer Ola-1, 788 00:36:49,350 --> 00:36:54,210 porque este ficheiro chámase Ola-1.c, e prema Intro. 789 00:36:54,210 --> 00:36:56,230 E eu estraguei todo. 790 00:36:56,230 --> 00:36:57,394 O que está pasando? 791 00:36:57,394 --> 00:37:00,560 Ben, aquí é onde temos que comezar a Entendo que estamos neste comando 792 00:37:00,560 --> 00:37:02,810 ambiente de liña, isto texto único ambiente. 793 00:37:02,810 --> 00:37:06,114 Non hai premendo en iconas como carpetas agora. 794 00:37:06,114 --> 00:37:07,280 E lembra un momento atrás. 795 00:37:07,280 --> 00:37:10,740 En que cartafol que dixen Eu estaba gardando o meu código? 796 00:37:10,740 --> 00:37:11,657 Entón o cartafol Dropbox. 797 00:37:11,657 --> 00:37:12,989 Podería ser chamado de calquera cousa. 798 00:37:12,989 --> 00:37:14,530 Pero el pasa a chamarse Dropbox. 799 00:37:14,530 --> 00:37:18,380 Entón, eu dalgún xeito ten que premer dúas veces no esta carpeta Dropbox, a fin de obter 800 00:37:18,380 --> 00:37:21,657 para el e chegar a miña código chamado Ola-1.c. 801 00:37:21,657 --> 00:37:24,490 En realidade, deixe-me ir adiante e minimizar Nesta fiestra por un momento. 802 00:37:24,490 --> 00:37:27,560 Así como Windows e Mac OS, existen carpetas en Linux. 803 00:37:27,560 --> 00:37:29,410 Existen directorios en CS50 Appliance. 804 00:37:29,410 --> 00:37:32,380 É só agora estamos confinando nos a este ambiente texto. 805 00:37:32,380 --> 00:37:34,700 >> Pero se eu premer dúas veces no Dropbox, ter en conta que hai 806 00:37:34,700 --> 00:37:37,210 é o arquivo que quero para compilar. 807 00:37:37,210 --> 00:37:41,430 Pero eu teño esta en branco e negro fiestra de terminal, por así dicir. 808 00:37:41,430 --> 00:37:45,750 Pero eu teño, polo tanto, para desprazarse para esa carpeta ou directorio. 809 00:37:45,750 --> 00:37:48,290 Entón, un pouco misterioso, pero vai se acostumar con iso tamén. 810 00:37:48,290 --> 00:37:50,430 >> No mundo de Linux, que á súa vez é o operativo 811 00:37:50,430 --> 00:37:54,860 sistema que está a ser executado dentro do CS50 Appliance, hai unha orde chamado CD. 812 00:37:54,860 --> 00:37:58,310 O que significa que podo facer CD, espazo, Dropbox. 813 00:37:58,310 --> 00:37:59,900 CD, cambie o directorio. 814 00:37:59,900 --> 00:38:00,400 Certo. 815 00:38:00,400 --> 00:38:02,890 De volta ao día en que as persoas eran inventando ordenadores e operando 816 00:38:02,890 --> 00:38:05,806 sistemas coma este, querían escriba o menor número de teclas escritas posible. 817 00:38:05,806 --> 00:38:08,760 Así, o xeito máis doado de dicir directorio cambio foi CD. 818 00:38:08,760 --> 00:38:13,910 >> Entón, se eu bater CD, espazo Dropbox, entender o que cambiou aquí. 819 00:38:13,910 --> 00:38:16,480 Dentro dos parénteses o aparello é unha especie 820 00:38:16,480 --> 00:38:19,360 de me agradar e lembrándome onde estou. 821 00:38:19,360 --> 00:38:21,480 Así, o cartafol aberto é Dropbox. 822 00:38:21,480 --> 00:38:24,950 Se eu agora escriba ls para lista, de novo sucinta, 823 00:38:24,950 --> 00:38:27,540 porque a xente non querían escriba de novo o día l-i-s-t. 824 00:38:27,540 --> 00:38:29,300 Entón, eles, en vez fixo sl. 825 00:38:29,300 --> 00:38:30,110 >> Intro. 826 00:38:30,110 --> 00:38:35,740 Repare que eu ver dúas cousas, Ola-1.c, e entón esa cousa enigmática, fonte 1m. 827 00:38:35,740 --> 00:38:38,310 Isto é só a miña forma de dicir código fonte para a semana 1 luns. 828 00:38:38,310 --> 00:38:42,020 Isto é un cartafol que eu baixei do Sitio web da CS50 que fixen hoxe cedo 829 00:38:42,020 --> 00:38:43,990 e basta colocar-lo no aparello con antelación. 830 00:38:43,990 --> 00:38:47,550 >> Pero, polo de agora o único que interesa é facer este programa. 831 00:38:47,550 --> 00:38:50,440 Entón, cando eu introducir make Ola-1, Intro. 832 00:38:50,440 --> 00:38:51,320 Caramba. 833 00:38:51,320 --> 00:38:53,060 Algo deu mal. 834 00:38:53,060 --> 00:38:54,580 Entón, imos xogar con este apart. 835 00:38:54,580 --> 00:38:58,489 E, por desgraza, este é o lugar onde as cousas estar un pouco estresante no inicio, 836 00:38:58,489 --> 00:39:00,280 polo menos se ten Nunca programado antes. 837 00:39:00,280 --> 00:39:00,980 >> Meu Deus. 838 00:39:00,980 --> 00:39:04,990 Eu escribín un programa de dúas liñas e Teño catro liñas de erros. 839 00:39:04,990 --> 00:39:07,180 Entón, o que está pasando aquí. 840 00:39:07,180 --> 00:39:11,370 En primeiro lugar sempre rolar para atrás e atopar a primeira mensaxe de erro, 841 00:39:11,370 --> 00:39:15,730 porque moitas veces só compiladores se confunden co que vostede e eu. 842 00:39:15,730 --> 00:39:17,000 Compiladores son moi burro. 843 00:39:17,000 --> 00:39:18,360 Eles só vou facer o que ti dicirlles o que facer. 844 00:39:18,360 --> 00:39:21,484 E se confundir-los, son só vai tipo de vomitar as súas mans 845 00:39:21,484 --> 00:39:25,010 e quizais lanzar máis mensaxes de erro que son realmente relevantes. 846 00:39:25,010 --> 00:39:26,380 >> Entón, imos ollar para a primeira. 847 00:39:26,380 --> 00:39:27,540 Super enigmática en primeiro lugar. 848 00:39:27,540 --> 00:39:31,050 Pero aviso, aquí está o nome do ficheiro no que eu estraguei todo parecer. 849 00:39:31,050 --> 00:39:36,570 Colón 5, colon 5 significa só en liña 5 no quinto personaxe. 850 00:39:36,570 --> 00:39:39,760 Entón quinta columna de caracteres, se quixeren, de erro. 851 00:39:39,760 --> 00:39:41,870 Uso de secuencia de identificador non declarado. 852 00:39:41,870 --> 00:39:43,120 Quixo dicir estándar n? 853 00:39:43,120 --> 00:39:44,850 >> Non, eu quería dicir cadea. 854 00:39:44,850 --> 00:39:47,640 E entón, é unha especie de copiando e colando 855 00:39:47,640 --> 00:39:50,700 o que eu escriba para realmente chamar a miña atención a onde eu estraguei todo. 856 00:39:50,700 --> 00:39:54,260 Entón, por algún motivo C, ou, polo menos, o compilador 857 00:39:54,260 --> 00:39:56,470 non comprende a secuencia de palabras. 858 00:39:56,470 --> 00:39:57,890 E iso é porque o fixemos anteriormente. 859 00:39:57,890 --> 00:40:01,440 Entón cadea non existir en C. O CS50 fai, 860 00:40:01,440 --> 00:40:03,380 para as primeiras semanas só da clase, 861 00:40:03,380 --> 00:40:05,700 é nos das algunha formación rodas, por así dicir. 862 00:40:05,700 --> 00:40:11,160 E poñemos esas Rodas pequenas dentro dun arquivo especial chamado CS50.h. 863 00:40:11,160 --> 00:40:14,970 >> Polo tanto, este é o segundo de dous ficheiros nomes que aparentemente terminan en punto h. 864 00:40:14,970 --> 00:40:16,300 Imos rebobinar. 865 00:40:16,300 --> 00:40:19,360 Printf é unha declaración ou función que ao parecer imprime algo 866 00:40:19,360 --> 00:40:20,580 á pantalla. 867 00:40:20,580 --> 00:40:23,470 Pero non me viu aplicar printf, certo. 868 00:40:23,470 --> 00:40:26,360 Alguén anos aplicado printf. 869 00:40:26,360 --> 00:40:30,420 En que ficheiro se apostar que ou ela puxo a implantación 870 00:40:30,420 --> 00:40:34,270 para printf, o código para printf? 871 00:40:34,270 --> 00:40:36,860 >> Nun ficheiro chamado estándar I / O.h. 872 00:40:36,860 --> 00:40:39,930 En realidade, é probablemente en dous arquivos, eu estándar / O.h, 873 00:40:39,930 --> 00:40:42,650 que significa cabeceira ficheiro, e eu estándar / O.c, 874 00:40:42,650 --> 00:40:44,060 que significa o código fonte C. 875 00:40:44,060 --> 00:40:48,220 Que el ou ela, hai algúns anos se xogou o código que eles escribiron ao arquivo 876 00:40:48,220 --> 00:40:51,240 para que persoas coma nós anos máis tarde, pode inclui-lo, 877 00:40:51,240 --> 00:40:53,040 por así dicir, nos nosos propios programas. 878 00:40:53,040 --> 00:40:56,320 >> E, de feito, é o que o sinal de libra seguido da palabra inclúen fai. 879 00:40:56,320 --> 00:41:00,250 El mira para o disco duro local, atopa o ficheiro chamado estándar I / O.h, 880 00:41:00,250 --> 00:41:03,840 e logo, de forma eficaz e copias cola-lo dentro do meu propio arquivo. 881 00:41:03,840 --> 00:41:07,210 Entón agora o meu programa sabe como imprimir a pantalla. 882 00:41:07,210 --> 00:41:11,120 >> Entón, por esa lóxica, onde defínese corda? 883 00:41:11,120 --> 00:41:12,260 >> Audiencia: CS50.h. 884 00:41:12,260 --> 00:41:13,290 >> DAVID J. Malan: CS50.h. 885 00:41:13,290 --> 00:41:15,540 E, de feito, iso é o que nós, o persoal do núcleo, teñen feito. 886 00:41:15,540 --> 00:41:19,590 Nós inventou algúns tipos de datos, por así dicir, como unha corda, 887 00:41:19,590 --> 00:41:22,370 ademais de que obter de balde, como un int. 888 00:41:22,370 --> 00:41:26,010 E veremos os outros como un char para un personaxe e un pouco máis. 889 00:41:26,010 --> 00:41:30,670 Dentro CS50.h aparentemente é polo menos algunha mención de cadea. 890 00:41:30,670 --> 00:41:34,980 >> Entón, agora deixe-me ir adiante e make reprise Ola-1. 891 00:41:34,980 --> 00:41:37,100 Vou aumentar o zoom novo e cruzar os dedos. 892 00:41:37,100 --> 00:41:41,370 Agora por ter feito unha cambiar Eu fixo a maioría das cousas. 893 00:41:41,370 --> 00:41:42,100 Pero dane-se. 894 00:41:42,100 --> 00:41:44,290 Máis por cento do que os argumentos datos. 895 00:41:44,290 --> 00:41:45,980 O que eu fixen de malo esta vez? 896 00:41:45,980 --> 00:41:47,420 >> Por iso, aínda é moi enigmática. 897 00:41:47,420 --> 00:41:51,560 Pero este erro está na liña 7 e 21 caracteres. 898 00:41:51,560 --> 00:41:53,880 Entón, imos ollar para arriba aquí. 899 00:41:53,880 --> 00:41:55,350 É un pouco sutil. 900 00:41:55,350 --> 00:41:59,167 Pero se pensar sobre o que as ideas fundamentais aquí son, 901 00:41:59,167 --> 00:42:00,500 quizais poidamos provocar este apart. 902 00:42:00,500 --> 00:42:02,300 >> Así printf é o nome da función. 903 00:42:02,300 --> 00:42:04,960 Parénteses, ata o momento, é así como o que poñemos en torno 904 00:42:04,960 --> 00:42:07,005 as cousas que estamos pasando como entradas para unha función. 905 00:42:07,005 --> 00:42:08,921 Todo ben, só un convención humana arbitraria. 906 00:42:08,921 --> 00:42:09,919 Use parénteses. 907 00:42:09,919 --> 00:42:12,460 Dentro destes parénteses vimos poñer comiñas dobres, 908 00:42:12,460 --> 00:42:14,810 e, a continuación, unha cadea como "Ola mundo". 909 00:42:14,810 --> 00:42:18,160 >> Pero nese exemplo anterior moi brevemente fixo miramos co Scratch. 910 00:42:18,160 --> 00:42:22,590 E tivemos a porcentaxe d, o que máis estaba dentro destes parénteses 911 00:42:22,590 --> 00:42:23,730 que eu chamei verbalmente? 912 00:42:23,730 --> 00:42:24,230 Si. 913 00:42:24,230 --> 00:42:28,166 >> Audiencia: Entón é o que está tomando [Inaudível] dentro [inaudível] 914 00:42:28,166 --> 00:42:30,200 o que estes [inaudível]? 915 00:42:30,200 --> 00:42:31,200 DAVID J. Malan: Exactamente. 916 00:42:31,200 --> 00:42:32,700 Entón tivemos a porcentaxe d. 917 00:42:32,700 --> 00:42:36,620 Pero despois tivemos preto cita, coma, contador. 918 00:42:36,620 --> 00:42:37,120 Certo. 919 00:42:37,120 --> 00:42:40,680 Nós especificados que queremos facer como o espazo reservado. 920 00:42:40,680 --> 00:42:44,621 Entón o que eu vou facer aquí é coma, o que quere que eu poña? 921 00:42:44,621 --> 00:42:45,120 Audiencia: S. 922 00:42:45,120 --> 00:42:46,828 DAVID J. Malan: S, porque s neste caso 923 00:42:46,828 --> 00:42:48,700 é o nome do recipiente de almacenamento. 924 00:42:48,700 --> 00:42:50,180 É o nome da copa de cristal. 925 00:42:50,180 --> 00:42:53,610 Mentres antes era contador en que exemplo simple arranhão nós miramos. 926 00:42:53,610 --> 00:42:56,630 Entón, agora, tendo feito dous cambios, déixeme achegar 927 00:42:56,630 --> 00:42:59,800 e intentar unha vez máis compilar este programa. 928 00:42:59,800 --> 00:43:01,596 >> Agora vexo que a liña enigmática. 929 00:43:01,596 --> 00:43:03,470 Pero iso é realmente o nome do compilador. 930 00:43:03,470 --> 00:43:04,886 Tinido é o nome do compilador. 931 00:43:04,886 --> 00:43:07,100 Fai só me salvando a dor de cabeza de sempre 932 00:43:07,100 --> 00:43:09,830 escribindo o comando longo tolo para fóra. 933 00:43:09,830 --> 00:43:14,900 Polo tanto, agora se eu cortar punto Ola-1, Eu vería "Ola, David." 934 00:43:14,900 --> 00:43:16,450 >> Moi por baixo do esperado, con todo, non? 935 00:43:16,450 --> 00:43:18,158 Poderiamos ter feito esta moito máis simplemente 936 00:43:18,158 --> 00:43:20,940 sen falar de variables e CS50.h e todo iso. 937 00:43:20,940 --> 00:43:23,080 Entón, imos facelo un pouco máis interesante. 938 00:43:23,080 --> 00:43:31,010 >> Ademais CS50.h, ter cousas como cordas 939 00:43:31,010 --> 00:43:34,550 declarada, a biblioteca CS50 tamén ten algunhas funcións. 940 00:43:34,550 --> 00:43:38,520 Entón, así como anos atrás, alguén escribiu printf e poñelas no estándar I / O.h 941 00:43:38,520 --> 00:43:39,530 e algún outro ficheiro. 942 00:43:39,530 --> 00:43:44,010 >> Nós, o equipo CS50, escribiu unha función chamado nextchar, GetDouble, GetFloat, 943 00:43:44,010 --> 00:43:47,610 GetInt, GetLongLong, GetString, e poñemos os dentro dun ficheiro 944 00:43:47,610 --> 00:43:49,890 chamado CS50.h e CS50.c. 945 00:43:49,890 --> 00:43:51,880 E nós poñer-los dentro do CS50 Appliance. 946 00:43:51,880 --> 00:43:53,880 E a xente tamén poden baixa-los en liña se 947 00:43:53,880 --> 00:43:55,880 quere poñer-los no seu propios ordenadores tamén. 948 00:43:55,880 --> 00:44:00,880 Que significa dicir que creamos funcións que obter a entrada do usuario. 949 00:44:00,880 --> 00:44:02,930 Eu non sei que todos destes tipos de datos son. 950 00:44:02,930 --> 00:44:06,490 GetInt é medio sinxelo, como obter un número enteiro de algunha maneira do usuario. 951 00:44:06,490 --> 00:44:09,980 E GetString é, probablemente, como get unha palabra ou unha frase do usuario. 952 00:44:09,980 --> 00:44:11,770 >> Entón imos centrar niso. 953 00:44:11,770 --> 00:44:14,710 E eu vou volver para o aparello e eu estou indo a ir adiante 954 00:44:14,710 --> 00:44:20,790 e salva este ficheiro como, digamos Ola el-2.c como miña segunda versión. 955 00:44:20,790 --> 00:44:23,030 E imos facer algúns cambios. 956 00:44:23,030 --> 00:44:25,800 >> Esta vez, en vez de difícil codificación David, que 957 00:44:25,800 --> 00:44:29,120 fai incrible consistente pero o programa baixo do esperado, 958 00:44:29,120 --> 00:44:32,640 e se eu, no canto facer GetString? 959 00:44:32,640 --> 00:44:35,660 Agora conta GetString ten un paréntese de apertura, 960 00:44:35,660 --> 00:44:38,500 parénteses pechado, porque non precisa de calquera entrada. 961 00:44:38,500 --> 00:44:40,850 El só vai pegar unha cadea de usuario. 962 00:44:40,850 --> 00:44:42,460 >> E agora unha palabra noutra sintaxe. 963 00:44:42,460 --> 00:44:45,439 Semicolons só rematar unha liña de código. 964 00:44:45,439 --> 00:44:46,730 Non precisa de todas as partes. 965 00:44:46,730 --> 00:44:48,896 Pero iso só quere dicir que eu son feito con esta liña de código. 966 00:44:48,896 --> 00:44:51,080 Déixeme pasar a outro declaración ou función. 967 00:44:51,080 --> 00:44:53,010 Corda declara unha variable. 968 00:44:53,010 --> 00:44:55,920 Cadea é como dicir dáme un recipiente, por favor. 969 00:44:55,920 --> 00:44:57,940 E deixe-me poñer unha corda nel. 970 00:44:57,940 --> 00:44:59,430 >> E agora o signo igual. 971 00:44:59,430 --> 00:45:03,510 Cal é o signo igual esencialmente equivalente a? 972 00:45:03,510 --> 00:45:04,500 >> Audiencia: Asignar. 973 00:45:04,500 --> 00:45:06,190 >> DAVID J. Malan: Si, atribuíndo un valor. 974 00:45:06,190 --> 00:45:09,872 Entón, se eu, por exemplo, chamada esta función GetString, 975 00:45:09,872 --> 00:45:12,830 e veremos en un momento que é vai solicitar ao usuario unha cadea. 976 00:45:12,830 --> 00:45:17,810 Isto é como me deixar logo escribir D - a-v i-d sobre unha peza de papel. 977 00:45:17,810 --> 00:45:21,060 E cando digo cadea s é igual a GetString, 978 00:45:21,060 --> 00:45:24,140 igual non significa realmente igual en programación C. 979 00:45:24,140 --> 00:45:27,880 Significa atribuír da dereita lado a lado esquerdo. 980 00:45:27,880 --> 00:45:29,510 >> Entón eu comece unha cadea. 981 00:45:29,510 --> 00:45:32,785 E o signo igual significa poñela no almacenamento recipiente chamado s. 982 00:45:32,785 --> 00:45:36,730 E A continuación, pase esta off para printf para realmente facer a súa cousa. 983 00:45:36,730 --> 00:45:39,790 >> Así, o resultado final, entón vai a ollar un pouco diferente. 984 00:45:39,790 --> 00:45:40,840 Imos fan Ola-2. 985 00:45:40,840 --> 00:45:43,940 986 00:45:43,940 --> 00:45:45,260 Ou podería traballar. 987 00:45:45,260 --> 00:45:46,450 Está acompañando. 988 00:45:46,450 --> 00:45:47,940 Fai Ola-2 funcionou. 989 00:45:47,940 --> 00:45:52,640 Dot cortar Ola-2, Intro. 990 00:45:52,640 --> 00:45:54,620 >> Eu parezo ter un infinito loop ou algo así. 991 00:45:54,620 --> 00:45:55,453 Non está pasando nada. 992 00:45:55,453 --> 00:45:56,134 Por que? 993 00:45:56,134 --> 00:45:57,805 >> Audiencia: Está facendo un loop infinito. 994 00:45:57,805 --> 00:45:59,430 DAVID J. Malan: É un loop infinito. 995 00:45:59,430 --> 00:46:02,710 É unha especie de me esperando para realmente fornece-lo con algunhas entradas. 996 00:46:02,710 --> 00:46:05,800 Entón deixe-me ir adiante e escribir en David, e prema Intro. 997 00:46:05,800 --> 00:46:07,230 E agora di "Ola, David." 998 00:46:07,230 --> 00:46:09,040 Se eu executa-lo de novo. 999 00:46:09,040 --> 00:46:11,530 Imos escribir Rob, "Ola, Rob." 1000 00:46:11,530 --> 00:46:13,900 >> Agora que é o peor interface co usuario de sempre. 1001 00:46:13,900 --> 00:46:16,110 O usuario é aparentemente debería saber o que facer. 1002 00:46:16,110 --> 00:46:17,120 Pero non importa. 1003 00:46:17,120 --> 00:46:19,570 Usando estes mesmo edificio bloques así como no risco, 1004 00:46:19,570 --> 00:46:24,980 podemos resolver este problema e dicir algo así como o seu nome, por favor, colonos, 1005 00:46:24,980 --> 00:46:27,820 espazo, pechado cita, preto paréntese, punto e coma. 1006 00:46:27,820 --> 00:46:30,680 Entón, unha morea de novo disparate coa sintaxe. 1007 00:46:30,680 --> 00:46:34,040 >> Pero repare que eu acaba de engadir un parte do enigma enriba desta 1008 00:46:34,040 --> 00:46:35,280 e por riba deste. 1009 00:46:35,280 --> 00:46:38,870 Polo tanto, agora se eu executar novamente este, Ola-2, Intro. 1010 00:46:38,870 --> 00:46:41,180 Espere un minuto. 1011 00:46:41,180 --> 00:46:41,830 O que está mal? 1012 00:46:41,830 --> 00:46:43,570 Non está comportándose de forma diferente. 1013 00:46:43,570 --> 00:46:44,200 Si. 1014 00:46:44,200 --> 00:46:46,010 >> Audiencia: non executar make novo. 1015 00:46:46,010 --> 00:46:47,968 >> DAVID J. Malan: Eu non fixen executar make de novo, certo. 1016 00:46:47,968 --> 00:46:49,430 Entón eu mudei de código fonte. 1017 00:46:49,430 --> 00:46:50,638 Pero, de novo, non hai ese fluxo. 1018 00:46:50,638 --> 00:46:54,530 O código fonte a través do compilador dá Vostede é novo código obxecto, ou 0s e 1s. 1019 00:46:54,530 --> 00:47:00,209 Entón eu teño realmente make reprise Ola-2 Intro. 1020 00:47:00,209 --> 00:47:01,750 OK, algo parece acontecer. 1021 00:47:01,750 --> 00:47:04,220 Dot cortar Ola-2. 1022 00:47:04,220 --> 00:47:05,390 O seu nome, por favor. 1023 00:47:05,390 --> 00:47:09,990 E para ser claro agora, por que o cursor na mesma liña? 1024 00:47:09,990 --> 00:47:10,490 Exactamente. 1025 00:47:10,490 --> 00:47:13,020 Non coloque a barra invertida n-se aquí no meu código. 1026 00:47:13,020 --> 00:47:16,110 Entón agora podo escribir algo así como Daven, Intro. 1027 00:47:16,110 --> 00:47:18,710 Podo executa-lo de novo e escriba algo así como Gabe, Intro, 1028 00:47:18,710 --> 00:47:22,250 e temos un programa diferente de novo e de novo e de novo. 1029 00:47:22,250 --> 00:47:28,940 >> Agora, en definitiva, imos ter usar algunhas capacidades diferentes. 1030 00:47:28,940 --> 00:47:32,860 Necesitamos introducir en definitiva, algúns condicións de facer as cousas condicional. 1031 00:47:32,860 --> 00:47:35,550 Quizais lazos para que poidamos facer cousas repetidas veces. 1032 00:47:35,550 --> 00:47:38,220 >> Quizais sería bo se nós podería aplicar as nosas propias funcións, 1033 00:47:38,220 --> 00:47:41,355 como podemos aplicar o noso propio printf ou a nosa propia versión do GetString 1034 00:47:41,355 --> 00:47:45,870 GetFlow e, en definitiva, porque aínda usando este medio de liña de comandos 1035 00:47:45,870 --> 00:47:49,780 que podemos facer ata o máis visualmente interesante de cousas. 1036 00:47:49,780 --> 00:47:51,950 >> De feito, en conclusión, déixeme facer. 1037 00:47:51,950 --> 00:47:54,020 Eu estou indo a ir adiante e pechar esas fiestras 1038 00:47:54,020 --> 00:47:57,400 e abrir ese icono aquí, que é só unha maior 1039 00:47:57,400 --> 00:48:00,020 versión que incorporado fiestra de terminal. 1040 00:48:00,020 --> 00:48:02,329 Entón Gedit ten non só o lugar para o meu código, 1041 00:48:02,329 --> 00:48:05,620 pero tamén construído nunha fiestra de terminal, o fiestra branco e negro onde eu poida executar 1042 00:48:05,620 --> 00:48:06,230 comandos. 1043 00:48:06,230 --> 00:48:08,600 >> Aconteceu de eu abrir unha versión maior desta. 1044 00:48:08,600 --> 00:48:11,170 E agora eu estou indo a ir a o cartafol que eu xa 1045 00:48:11,170 --> 00:48:13,150 poñer con antelación na páxina web do curso. 1046 00:48:13,150 --> 00:48:16,720 E eu estou indo a ir adiante e abrir un ficheiro chamado thadgavin.c, 1047 00:48:16,720 --> 00:48:18,710 que foi escrito por alguén máis. 1048 00:48:18,710 --> 00:48:21,220 >> E se miramos para iso, este non é o tipo de código 1049 00:48:21,220 --> 00:48:24,370 estaremos escribindo desde O obxectivo deste código 1050 00:48:24,370 --> 00:48:28,450 era escribir a máis fermosa buscando o código que el ou ela podería, 1051 00:48:28,450 --> 00:48:31,290 sen importar se ou non outro ser humano xamais podería 1052 00:48:31,290 --> 00:48:33,660 comprender este código. 1053 00:48:33,660 --> 00:48:37,050 >> De feito, todos os anos hai é o que se chamado un concurso C ofuscado, que 1054 00:48:37,050 --> 00:48:39,570 é para geeks reais que escriben código que ninguén máis pode ler, 1055 00:48:39,570 --> 00:48:42,050 pero que fai algo ou realmente simple ou realmente incrible. 1056 00:48:42,050 --> 00:48:43,890 E pensamos Concluímos con este ollar 1057 00:48:43,890 --> 00:48:48,300 en algo que é bastante sorprendente pode ter visto antes. 1058 00:48:48,300 --> 00:48:52,650 Pero imos rematar nesta nota, corte de punto, thadgavin. 1059 00:48:52,650 --> 00:48:53,860 Iso, entón, é o que espera. 1060 00:48:53,860 --> 00:48:57,140 1061 00:48:57,140 --> 00:48:58,500 >> Isto é todo para CS50. 1062 00:48:58,500 --> 00:48:59,935 Imos velo na Mércores. 1063 00:48:59,935 --> 00:49:04,284 1064 00:49:04,284 --> 00:49:10,016 >> [MÚSICA DE XOGO] 1065 00:49:10,016 --> 00:53:31,883