1 00:00:00,000 --> 00:00:11,952 2 00:00:11,952 --> 00:00:13,800 >> DAVID J. MALAN: Así que esto es CS50. 3 00:00:13,800 --> 00:00:18,970 Y esto era propio Colton Ogden del CS50, para más de quién es la música que se puede 4 00:00:18,970 --> 00:00:22,820 descargar en soundcloud.com/cs50. 5 00:00:22,820 --> 00:00:26,690 >> Así que hoy nos enfocamos tanto más en el arte de la programación. 6 00:00:26,690 --> 00:00:28,980 Y tomamos donde lo dejamos la semana pasada, centrándose 7 00:00:28,980 --> 00:00:31,660 en Scratch, que era esta lenguaje de programación gráfica. 8 00:00:31,660 --> 00:00:35,490 Y tomar las cosas a un nivel más bajo, utilizando una programación más tradicional 9 00:00:35,490 --> 00:00:38,420 lenguaje conocido como C. Pero en el camino, al darse cuenta 10 00:00:38,420 --> 00:00:40,730 que las mismas ideas que habló sobre el pasado viernes 11 00:00:40,730 --> 00:00:44,390 se repetirá, no sólo en este lenguaje C, pero en la mayoría de todos los demás 12 00:00:44,390 --> 00:00:46,350 que nos fijamos en este semestre. 13 00:00:46,350 --> 00:00:50,247 >> Así que llamamos a esta cosa aquí lo que la última vez? 14 00:00:50,247 --> 00:00:51,830 Esto es representativo de un comunicado. 15 00:00:51,830 --> 00:00:53,080 Así que llamamos a esto un comunicado. 16 00:00:53,080 --> 00:00:54,100 Y lo hace algo. 17 00:00:54,100 --> 00:00:56,910 Es una instrucción que un ordenador o arañazos podrían ejecutar. 18 00:00:56,910 --> 00:00:59,910 Y a partir de ahora, vamos a empezar también llamar algo como esto una función, 19 00:00:59,910 --> 00:01:02,070 por razones que pronto veremos. 20 00:01:02,070 --> 00:01:03,681 >> Mientras tanto, hemos visto cosas como esta. 21 00:01:03,681 --> 00:01:05,680 Y estos son por lo general conocido como lo construir? 22 00:01:05,680 --> 00:01:06,240 >> AUDIENCIA: Loop. 23 00:01:06,240 --> 00:01:06,860 >> DAVID J. MALAN: Así que un bucle. 24 00:01:06,860 --> 00:01:07,943 Así que bastante sencillo. 25 00:01:07,943 --> 00:01:09,470 Es, literalmente, hace lo que dice. 26 00:01:09,470 --> 00:01:12,210 Y en Scratch, si quieres meter más piezas del rompecabezas en allí, 27 00:01:12,210 --> 00:01:13,950 la pieza crecerá para adaptarse a ella. 28 00:01:13,950 --> 00:01:16,790 Y veremos en C que podemos hacer lo mismo. 29 00:01:16,790 --> 00:01:20,000 >> Otro tipo de bucle, sin embargo, en scratch podría ser para siempre, 30 00:01:20,000 --> 00:01:21,820 o hay cualquier número de otros enfoques. 31 00:01:21,820 --> 00:01:24,150 Pero echemos una más mirada generalista, con una cara 32 00:01:24,150 --> 00:01:27,402 eso es probablemente muy familiar, en bucles de manera más general. 33 00:01:27,402 --> 00:01:29,110 Mark Zuckerberg: Uno cosa que las computadoras 34 00:01:29,110 --> 00:01:31,860 son realmente buenos en es repitiendo comandos. 35 00:01:31,860 --> 00:01:33,910 Como persona, se obtendría muy aburrido si 36 00:01:33,910 --> 00:01:36,730 tenido que hacer lo mismo un montón de veces en una fila. 37 00:01:36,730 --> 00:01:40,530 Pero una computadora puede hacer la misma cosa millones o incluso miles de millones de veces, 38 00:01:40,530 --> 00:01:43,290 y no se aburren, y poder para cumplirla realmente bien. 39 00:01:43,290 --> 00:01:45,650 >> Así, por ejemplo, si quería desearles a todos 40 00:01:45,650 --> 00:01:48,840 en Facebook un feliz cumpleaños mediante el envío de un correo electrónico, 41 00:01:48,840 --> 00:01:51,550 me podría tomar más de una siglo para escribir realmente a cabo 42 00:01:51,550 --> 00:01:53,000 todos los correos electrónicos a todo el mundo. 43 00:01:53,000 --> 00:01:57,780 Pero con sólo unas pocas líneas de código, lo que pueda tiene un sistema de enviar un correo electrónico a todo el mundo 44 00:01:57,780 --> 00:01:59,930 en Facebook que deseen un feliz cumpleaños. 45 00:01:59,930 --> 00:02:02,730 Así que eso es lo que los bucles son y por qué son valiosas y algo 46 00:02:02,730 --> 00:02:04,740 que las computadoras pueden hacer muy bien. 47 00:02:04,740 --> 00:02:05,630 >> DAVID J. MALAN: Así que si usted ha sido el destinatario 48 00:02:05,630 --> 00:02:07,820 de algunos de CS50 y de Espacio de Dropbox en los últimos tiempos, 49 00:02:07,820 --> 00:02:10,590 que en realidad es precisamente lo que hacer, utilizando el código exactamente así. 50 00:02:10,590 --> 00:02:12,600 Esencialmente tenemos una gran hoja de cálculo en la cual 51 00:02:12,600 --> 00:02:15,016 la gente ha sido la introducción de su nombres y direcciones de correo electrónico. 52 00:02:15,016 --> 00:02:18,160 Y escribimos un poco de código que puede iterar sobre esas direcciones 53 00:02:18,160 --> 00:02:21,860 y escupir direcciones únicas en si alguien ha presentado varias veces. 54 00:02:21,860 --> 00:02:25,120 Y a partir de entonces, le enviaremos un automatizado de bot de CS50, 55 00:02:25,120 --> 00:02:27,190 incluyendo el código de cupón. 56 00:02:27,190 --> 00:02:29,290 >> Ahora también hemos buscado en esta construcción última vez. 57 00:02:29,290 --> 00:02:33,100 Y este es un particular, ejemplo de qué? 58 00:02:33,100 --> 00:02:35,050 Así que, sí, una expresión booleana. 59 00:02:35,050 --> 00:02:37,050 Y la forma se significa para capturar eso también. 60 00:02:37,050 --> 00:02:39,966 Todas estas cuestiones de la formar verdaderas o falsas en scratch 61 00:02:39,966 --> 00:02:41,590 se verá un poco de algo como esto. 62 00:02:41,590 --> 00:02:43,200 Y llamamos a esto una expresión booleana. 63 00:02:43,200 --> 00:02:46,170 Eso es realmente cierto o falso, sí o no. 64 00:02:46,170 --> 00:02:49,150 Es una manera de responder a una pregunta. 65 00:02:49,150 --> 00:02:52,420 >> Y Mientras tanto usted puede utilizar éstos Boolean expresiones dentro de constructos 66 00:02:52,420 --> 00:02:54,720 como éstos, que de curso son condiciones 67 00:02:54,720 --> 00:02:57,259 o ramas, proverbial bifurcaciones en el camino. 68 00:02:57,259 --> 00:02:59,550 Y pueden ver no sólo de esta manera, pero también pueden 69 00:02:59,550 --> 00:03:02,080 vigilara han asociado con ellos. 70 00:03:02,080 --> 00:03:05,820 Y en realidad se puede tener una forma de tres tenedor en la carretera o un tenedor de cuatro vías 71 00:03:05,820 --> 00:03:08,340 en el camino, simplemente por anidación de estas cosas, 72 00:03:08,340 --> 00:03:10,510 como verás en scratch si usted no tiene ya. 73 00:03:10,510 --> 00:03:13,550 Y como se puede hacer en C también. 74 00:03:13,550 --> 00:03:16,810 >> Tomemos otro generalista mirar un alumnist, además, que 75 00:03:16,810 --> 00:03:21,490 podría presentar un enfoque diferente a estas cosas llamadas condiciones. 76 00:03:21,490 --> 00:03:24,060 >> BILL GATES: La gente hace decisiones todos los días. 77 00:03:24,060 --> 00:03:27,530 Por ejemplo, antes de salir afuera que tipo de tener una sentencia if que dice: 78 00:03:27,530 --> 00:03:31,480 si está lloviendo entonces necesitará conseguir mi chaqueta. 79 00:03:31,480 --> 00:03:36,820 Y las computadoras son increíbles una vez que decidir ese tipo de declaraciones, 80 00:03:36,820 --> 00:03:42,280 que pueden ejecutar de forma fiable esas cosas a una velocidad increíble. 81 00:03:42,280 --> 00:03:48,240 Y por lo que un programa de ordenador realmente es un poco de matemáticas y algunos 82 00:03:48,240 --> 00:03:53,050 si los estados donde la decisión se hizo. 83 00:03:53,050 --> 00:03:55,020 >> DAVID J. MALAN: Así como ustedes saben, fue 84 00:03:55,020 --> 00:03:57,880 gente como Bill Gates, Paul Allen, y otros 85 00:03:57,880 --> 00:04:00,240 que realmente dio inicio a la llamado ordenador personal 86 00:04:00,240 --> 00:04:01,990 revolución hace unos años. 87 00:04:01,990 --> 00:04:04,140 Pensé, antes de sumergirnos en algunos administrivia, 88 00:04:04,140 --> 00:04:09,920 nos gustaría relacionarnos un cuento desde el Albuquerque, Nuevo México Museo de Historia Natural 89 00:04:09,920 --> 00:04:13,650 y la ciencia, donde algunos de Bill Gates y las historias más tempranas de Pablo Allen 90 00:04:13,650 --> 00:04:17,470 se relata la forma en que tenemos ahora PC actuales y las Macs y más. 91 00:04:17,470 --> 00:04:22,390 Para esto, sin embargo, necesitamos dos voluntarios que tienen muy buenas voces de narración 92 00:04:22,390 --> 00:04:23,735 para leer un guión en voz alta. 93 00:04:23,735 --> 00:04:25,530 >> Muy bien, ¿qué hay en volver allí. 94 00:04:25,530 --> 00:04:26,120 Vamos arriba. 95 00:04:26,120 --> 00:04:27,770 ¿Y qué hay en frente aquí. 96 00:04:27,770 --> 00:04:28,340 Vamos hacia abajo. 97 00:04:28,340 --> 00:04:29,600 Tome sus lugares aquí. 98 00:04:29,600 --> 00:04:32,444 Como ustedes vienen para arriba, un par de anuncios administrativos. 99 00:04:32,444 --> 00:04:34,360 seccionar, el proceso de la elección de una sección, 100 00:04:34,360 --> 00:04:36,068 comenzará este De miércoles a viernes. 101 00:04:36,068 --> 00:04:38,400 Más sobre esto el próximo Miércoles en conferencia. 102 00:04:38,400 --> 00:04:41,770 >> Secciones Súper, por su parte, son algo que le ofrecemos la próxima semana 103 00:04:41,770 --> 00:04:45,310 la cual se invita a toda la clase para participar en escala bastante grande 104 00:04:45,310 --> 00:04:47,690 secciones, una más cómoda, uno menos cómodo. 105 00:04:47,690 --> 00:04:51,340 Y vamos a anunciar los detalles de que, además, esta misma semana. 106 00:04:51,340 --> 00:04:53,310 >> Mientras tanto, las secciones sí, se iniciará 107 00:04:53,310 --> 00:04:57,241 en la tercera semana del curso, el índice cero, lo que significa que estos son un par de semanas 108 00:04:57,241 --> 00:04:57,740 fuera. 109 00:04:57,740 --> 00:04:58,450 Así que no se preocupe. 110 00:04:58,450 --> 00:05:01,014 Aún no ha perdido nada por el estilo. 111 00:05:01,014 --> 00:05:03,930 Mientras tanto, en el ínterin, si usted tiene alguna pregunta administrativamente, 112 00:05:03,930 --> 00:05:08,120 un correo electrónico a mí mismo y Devon y Gabe y Rob en esta dirección aquí. 113 00:05:08,120 --> 00:05:10,320 >> Por último, establece problema 0 es, por supuesto, fuera. 114 00:05:10,320 --> 00:05:12,320 Usted puede haber notado que en la página web del curso. 115 00:05:12,320 --> 00:05:14,840 Se debe proveer de usted todas las respuestas a las preguntas 116 00:05:14,840 --> 00:05:18,250 es posible que tenga a lo largo del camino para comenzar a utilizar el conjunto de problemas. 117 00:05:18,250 --> 00:05:21,430 Pero si usted se encuentra en la necesidad de una mano de ayuda, 118 00:05:21,430 --> 00:05:25,020 por todos los medios atender las horas de oficina, Lunes, martes, miércoles, jueves 119 00:05:25,020 --> 00:05:27,290 de esta semana por la tarde en cuatro comedores. 120 00:05:27,290 --> 00:05:31,650 Ver URL que hay de las indicaciones de donde las horas de oficina serán. 121 00:05:31,650 --> 00:05:34,000 >> Ahora Vamos a cumplir nuestro dos invitados aquí presentes. 122 00:05:34,000 --> 00:05:34,740 Cuál es tu nombre? 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, un placer conocerte. 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 Encantado de conocerte también. 130 00:05:39,790 --> 00:05:42,123 Jay Paul y Hikari tienen en frente a ellos en estos música 131 00:05:42,123 --> 00:05:45,100 destaca dos scripts que imprimí a cabo esta mañana en el Nuevo Mexico 132 00:05:45,100 --> 00:05:46,692 Museo de Historia Natural y Ciencia. 133 00:05:46,692 --> 00:05:48,400 Y lo que yo pensaba Lo haría en el proyector 134 00:05:48,400 --> 00:05:52,830 es acompañar a su recitación del guión y esta historia 135 00:05:52,830 --> 00:05:54,700 con algunas imágenes visuales, no hay sorpresas. 136 00:05:54,700 --> 00:05:57,512 >> Y lo que he hecho con antelación está resaltado previo en la secuencia de comandos 137 00:05:57,512 --> 00:05:59,470 lo que usted debe leer, y lo que debe leer. 138 00:05:59,470 --> 00:06:00,920 Y vamos esencialmente párrafos sólo alternos. 139 00:06:00,920 --> 00:06:03,211 Así que es muy parecido que te pueden lo han hecho en la clase de Inglés. 140 00:06:03,211 --> 00:06:06,875 Eso es realmente obligar a la audiencia creer en su historia aquí. 141 00:06:06,875 --> 00:06:07,600 Debemos? 142 00:06:07,600 --> 00:06:13,272 Así que la historia aquí es que tenemos un BASIC, y comienza en Cambridge. 143 00:06:13,272 --> 00:06:18,750 >> JAY PAUL: Era invierno de 1974, en Cambridge, Massachusetts 144 00:06:18,750 --> 00:06:20,240 donde los inviernos pueden ser fríos. 145 00:06:20,240 --> 00:06:22,800 Un barbudo, de pelo largo desertor de la universidad nombrada 146 00:06:22,800 --> 00:06:27,280 Paul Allen fue drudging través Harvard Cuadrado, absorto en sus pensamientos. 147 00:06:27,280 --> 00:06:31,050 Su principal preocupación en estos días era cómo llegar a su amigo, Bill Gates, 148 00:06:31,050 --> 00:06:34,974 que dejar la escuela e ir en negocios con él. 149 00:06:34,974 --> 00:06:37,890 HIKARI: Los dos ya habían ido a través de una serie de proyectos empresariales 150 00:06:37,890 --> 00:06:40,850 juntos, a partir de la orilla del lago escuela en Seattle, donde 151 00:06:40,850 --> 00:06:45,220 se les pagaba en el tiempo libre de la computadora a probar un ordenador PDP-10 a una hora local 152 00:06:45,220 --> 00:06:46,580 compartir compañía. 153 00:06:46,580 --> 00:06:50,930 El plan más reciente había sido la de dejar de fumar escuela y formar una compañía de software. 154 00:06:50,930 --> 00:06:53,440 Allen había dejado Washington Universidad del Estado. 155 00:06:53,440 --> 00:06:58,380 Pero en el último minuto, Puertas decidido seguir con Harvard. 156 00:06:58,380 --> 00:07:02,080 >> JAY PAUL: Ese día, cruzando Harvard Cuadrado, Allen descubrió el enero 157 00:07:02,080 --> 00:07:07,530 1975 emisión de Popular Electronics con el titular de parada de la tierra, 158 00:07:07,530 --> 00:07:11,900 Kit del Primer Mundo para miniordenadores para rivalizar Modelos Comerciales. 159 00:07:11,900 --> 00:07:14,430 Bajo el titular era una imagen de una pequeña caja 160 00:07:14,430 --> 00:07:16,160 adornado con luces e interruptores. 161 00:07:16,160 --> 00:07:19,770 Se llamaba el MITS Altair 8800. 162 00:07:19,770 --> 00:07:24,100 Y Allen sabía que esto era lo que que había estado buscando. 163 00:07:24,100 --> 00:07:26,350 >> HIKARI: Días de debate siguió. 164 00:07:26,350 --> 00:07:30,170 Allen y Gates entienden la importancia de la Altair. 165 00:07:30,170 --> 00:07:32,480 Habían hablado a menudo sobre microprocesadores 166 00:07:32,480 --> 00:07:35,250 y estaban esperando a ver qué que se haría con ellos. 167 00:07:35,250 --> 00:07:39,770 Ahora había un kit minicomputadora en la portada de Popular Electronics. 168 00:07:39,770 --> 00:07:42,830 Al parecer, no tenía el software todavía. 169 00:07:42,830 --> 00:07:46,830 Se imaginaban una nación de programadores descendían por MITS. 170 00:07:46,830 --> 00:07:49,590 Y por lo que llamaron Ed Roberts, el jefe de la empresa, 171 00:07:49,590 --> 00:07:53,330 alegando tener una versión de la Lenguaje de programación BASIC casi listo 172 00:07:53,330 --> 00:07:54,710 para el Altair. 173 00:07:54,710 --> 00:07:55,570 No lo hicieron. 174 00:07:55,570 --> 00:07:58,910 Y Roberts debe haber sabido que no lo hicieron. 175 00:07:58,910 --> 00:08:03,170 Se estaba haciendo 10 llamadas al día de personas que tenían un BASIC casi listo. 176 00:08:03,170 --> 00:08:05,570 Y su respuesta de stock fue: "La primera persona 177 00:08:05,570 --> 00:08:11,090 que se presenta con un trabajo BASIC obtiene el contrato. " 178 00:08:11,090 --> 00:08:13,910 >> JAY PAUL: Gates y Allen Nunca había visto un Altair. 179 00:08:13,910 --> 00:08:17,600 Ellos nunca habían visto la Intel 8080 microprocesadores 180 00:08:17,600 --> 00:08:19,060 en el corazón de la Altair. 181 00:08:19,060 --> 00:08:21,470 Pero un par de años antes Allen había escrito un programa 182 00:08:21,470 --> 00:08:25,220 en una computadora central que emulaba la operación de un Intel anterior 183 00:08:25,220 --> 00:08:26,217 microprocesador. 184 00:08:26,217 --> 00:08:28,300 Y esta vez se haría lo mismo. 185 00:08:28,300 --> 00:08:31,530 186 00:08:31,530 --> 00:08:34,380 >> HIKARI: Con un procesador Intel 8080 Manual a su lado, 187 00:08:34,380 --> 00:08:37,770 Allen se sentó a una Harvard ordenador PDP-10 188 00:08:37,770 --> 00:08:42,010 y escribió el emulador y software herramientas necesarias para hacer la programación. 189 00:08:42,010 --> 00:08:45,820 Mientras tanto Gates, dejó de ir a las clases y se dedicó 190 00:08:45,820 --> 00:08:48,120 para diseñar el BASIC, usando todos los trucos 191 00:08:48,120 --> 00:08:53,130 él sabía que para obtener el tamaño por debajo de 4 kilobytes. 192 00:08:53,130 --> 00:08:55,870 >> JAY PAUL: Out in Albuquerque, Ed Roberts recibió una llamada de Gates 193 00:08:55,870 --> 00:08:59,754 pidiendo información acerca de cómo el Altair maneja rutinas específicas. 194 00:08:59,754 --> 00:09:01,170 Nadie le había preguntado eso antes. 195 00:09:01,170 --> 00:09:02,670 Y Roberts comenzó a interesarse. 196 00:09:02,670 --> 00:09:05,240 197 00:09:05,240 --> 00:09:07,970 >> HIKARI: Con el desarrollo herramientas y el diseño listo, 198 00:09:07,970 --> 00:09:10,780 Gates y Allen escribieron el código de la PDP-10, 199 00:09:10,780 --> 00:09:16,060 alistar otro estudiante de Harvard, Monte Davidoff, escribir rutinas matemáticas. 200 00:09:16,060 --> 00:09:19,450 Después de una última noche de programación, Allen tomó un avión 201 00:09:19,450 --> 00:09:22,970 para entregar su BASIC para MITS. 202 00:09:22,970 --> 00:09:25,800 Pasó el viaje en avión a preocuparse. 203 00:09:25,800 --> 00:09:28,490 Y de vuelta en Cambridge Gates, era preocupante. 204 00:09:28,490 --> 00:09:32,100 Habían probado su BASIC y que había trabajado en el emulador. 205 00:09:32,100 --> 00:09:35,444 Pero ¿y si el emulador se equivocó? 206 00:09:35,444 --> 00:09:37,360 JAY PAUL: Cuando el avión acercado a Albuquerque, 207 00:09:37,360 --> 00:09:40,070 Allen se dio cuenta de que su BASIC, ahora contenida prolijamente 208 00:09:40,070 --> 00:09:42,460 en un pequeño rollo de cinta perforada, se 209 00:09:42,460 --> 00:09:44,970 inútil sin una separada programa, llamado un cargador, que 210 00:09:44,970 --> 00:09:47,550 diría el Altair cómo para leer el ser cinta de papel 211 00:09:47,550 --> 00:09:49,620 alimentado a la máquina de teletipo. 212 00:09:49,620 --> 00:09:52,970 Sacó su libreta y rápidamente garabateó un programa cargador 213 00:09:52,970 --> 00:09:56,819 en lenguaje ensamblador, a continuación, de forma manual traducido en que los 1s y 0s 214 00:09:56,819 --> 00:09:57,985 el Altair entendería. 215 00:09:57,985 --> 00:10:00,530 216 00:10:00,530 --> 00:10:03,830 >> HIKARI: Allen esperaba un limpia poco, la compañía, de alta tecnología 217 00:10:03,830 --> 00:10:05,470 dirigido por hombres en trajes de negocios. 218 00:10:05,470 --> 00:10:09,210 Así que se sorprendió cuando Roberts se reunió él en el aeropuerto el aspecto de un rancho 219 00:10:09,210 --> 00:10:10,270 mano. 220 00:10:10,270 --> 00:10:12,070 Roberts también se sorprendió. 221 00:10:12,070 --> 00:10:16,340 Cuando se le cayó la Harvard programador en un hotel caro, 222 00:10:16,340 --> 00:10:20,790 Allen tuvo que confesar que no podía darse el lujo de la habitación. 223 00:10:20,790 --> 00:10:24,510 >> JAY PAUL: MITS, en sí, era ubicado en un centro comercial con mucho polvo. 224 00:10:24,510 --> 00:10:27,040 Dentro de un desordenado banco de trabajo fue un Altair 225 00:10:27,040 --> 00:10:30,390 cargado con 5 kilobytes de memoria y conectado por un cable 226 00:10:30,390 --> 00:10:32,030 a una máquina de teletipo. 227 00:10:32,030 --> 00:10:37,200 Roberts y el Ingeniero Jefe, Bill Yates, esperó expectante 228 00:10:37,200 --> 00:10:40,660 como Allen alternar su cargador programa en el Altair. 229 00:10:40,660 --> 00:10:44,980 El teletipo comenzó resoplando cuando se detuvo la cinta de papel a través del lector de cinta. 230 00:10:44,980 --> 00:10:47,215 Tomó tal vez 15 minutos para cargar el programa. 231 00:10:47,215 --> 00:10:52,110 Entonces el teletipo impreso abruptamente una pronta memoria, entonces el símbolo del preparado, 232 00:10:52,110 --> 00:10:55,340 y Allen empezó a teclear algunos comandos de prueba. 233 00:10:55,340 --> 00:10:57,400 Para sorpresa de todos, el software funcionó. 234 00:10:57,400 --> 00:10:58,525 Había bichos, por supuesto. 235 00:10:58,525 --> 00:11:02,070 Pero lo principal era que funcionaba. 236 00:11:02,070 --> 00:11:06,570 >> HIKARI: Más tarde, en su camino a un $ 3.00 almuerzo en Pancho, una avispa voló 237 00:11:06,570 --> 00:11:10,470 en la ventana de la camioneta camión y picó Allen en el brazo. 238 00:11:10,470 --> 00:11:13,070 Pero en ese momento nada podría estropear el estado de ánimo. 239 00:11:13,070 --> 00:11:17,210 El Altair ahora tenía su BASIC, el primer software comercial para un hogar 240 00:11:17,210 --> 00:11:23,260 ordenador, hecho por Paul Allen y Bill Gates, haciendo negocios como Microsoft. 241 00:11:23,260 --> 00:11:25,336 >> DAVID J. MALAN: Muchos gracias a nuestros dos lectores. 242 00:11:25,336 --> 00:11:30,690 >> [Aplausos] 243 00:11:30,690 --> 00:11:32,520 >> DAVID J. MALAN: Ahora usted tiene su opción, 244 00:11:32,520 --> 00:11:35,880 antes de salir, de un brillante o un resplandor en el dark-- oh, 245 00:11:35,880 --> 00:11:40,810 espere un segundo, Espera-- brillante y un resplandor en la oscuridad elefante 246 00:11:40,810 --> 00:11:42,534 a partir del CS50 propio Cheng Gong. 247 00:11:42,534 --> 00:11:43,450 HIKARI: Aw, gracias. 248 00:11:43,450 --> 00:11:45,324 DAVID J. MALAN: Todos bien, muchas gracias. 249 00:11:45,324 --> 00:11:49,855 [Aplausos] 250 00:11:49,855 --> 00:11:51,105 DAVID J. MALAN: Así verdadera historia. 251 00:11:51,105 --> 00:11:54,380 Esto es para decir que todos estos máquinas y la facilidad con la que 252 00:11:54,380 --> 00:11:56,270 utilizarlas ahora y tomar por descontado, de verdad 253 00:11:56,270 --> 00:12:00,070 comenzado aquí, a sólo unos pasos de este teatro real. 254 00:12:00,070 --> 00:12:03,930 Y hoy, si no has estado, esto es Maxwell Dworkin, el ordenador 255 00:12:03,930 --> 00:12:05,810 edificio de ciencias, También alrededor de la esquina. 256 00:12:05,810 --> 00:12:09,760 Y en la segunda planta de este edificio hace colgar tres páginas 257 00:12:09,760 --> 00:12:12,740 a partir del código fuente original que Bill Gates y Paul Allen escribieron. 258 00:12:12,740 --> 00:12:14,770 De hecho, si el uso que un zoom en se puede ver no sólo 259 00:12:14,770 --> 00:12:17,350 sus nombres en la Tipo de original, sino también 260 00:12:17,350 --> 00:12:22,100 sus firmas que adornaban un unos años la última vez que visitaron. 261 00:12:22,100 --> 00:12:25,800 >> Pero lo que era especialmente convincente sobre esto es lo que se propusieron hacer 262 00:12:25,800 --> 00:12:29,760 era escribir un programa que haría permitir a otras personas a escribir 263 00:12:29,760 --> 00:12:30,950 sus propios programas. 264 00:12:30,950 --> 00:12:34,280 En ese momento todo lo que había con esta máquina Altair hecha por MITS. 265 00:12:34,280 --> 00:12:40,020 Y todo lo que necesitaban era alguna forma de por lo que es fácil para los aficionados y la gente 266 00:12:40,020 --> 00:12:45,300 Nos gustaría en este espacio para realmente programa que sin necesariamente comprender 267 00:12:45,300 --> 00:12:49,060 Código ensamblador o máquina código, o Dios no lo quiera, 0s y 1s. 268 00:12:49,060 --> 00:12:51,190 Nosotros los programadores, como los que en esta habitación, nos 269 00:12:51,190 --> 00:12:54,070 quiero ser capaz de expresar nosotros mismos mucho más como pseudo código 270 00:12:54,070 --> 00:12:57,330 incluso si es un poco más nit exigente de lo que hablamos la semana pasada. 271 00:12:57,330 --> 00:13:00,970 No queremos escribir código como este, que hicieron Paul Allen y Bill Gates. 272 00:13:00,970 --> 00:13:04,850 Nosotros, en cambio, queremos escribir código que se ve un poco más fácil de usar. 273 00:13:04,850 --> 00:13:07,150 >> Ahora bien, este es un lenguaje conocido como BASIC. 274 00:13:07,150 --> 00:13:11,497 Y los números de línea no son lo que utilizar simplemente contar las líneas de código 275 00:13:11,497 --> 00:13:12,330 que usted está escribiendo. 276 00:13:12,330 --> 00:13:14,038 Ni siquiera tenemos que hacer eso en estos días. 277 00:13:14,038 --> 00:13:16,060 Pero se puede ver aquí cómo escribir "Hola, mundo" 278 00:13:16,060 --> 00:13:18,660 sería de hecho presumiblemente imprimir precisamente eso. 279 00:13:18,660 --> 00:13:22,710 Y así lo que Bill y Paul hicieron fue empoderar a la gente a escribir código como este 280 00:13:22,710 --> 00:13:27,240 lugar de-- si usted toma una mirada en el ciencias de la computación pared-- código como este. 281 00:13:27,240 --> 00:13:29,290 >> De hecho, recientemente CS50 tenido la oportunidad 282 00:13:29,290 --> 00:13:32,540 sentarse con el profesor Harry Lewis en el departamento de ciencia de computadoras, que 283 00:13:32,540 --> 00:13:34,640 realmente enseñado Bill Gates, hace algunos años, 284 00:13:34,640 --> 00:13:38,460 y está aquí de pie ante esas tres páginas de extractos. 285 00:13:38,460 --> 00:13:39,560 Vamos a echar un vistazo. 286 00:13:39,560 --> 00:13:45,520 >> HARRY LEWIS: Lo que tenemos aquí es una la oferta de una pieza temprana de software 287 00:13:45,520 --> 00:13:50,240 escrito por Bill Gates y Paul Allen, los fundadores de Microsoft. 288 00:13:50,240 --> 00:13:52,570 Así que el código es interesante por dos razones. 289 00:13:52,570 --> 00:13:55,480 En primer lugar, se hizo El primer producto de Microsoft, 290 00:13:55,480 --> 00:14:01,810 que era un intérprete para el lenguaje de programación BASIC. 291 00:14:01,810 --> 00:14:04,940 Y en segundo lugar, se trataba de uno de los primeros intentos 292 00:14:04,940 --> 00:14:10,580 para crear un intérprete tan ordinario la gente podría utilizar las computadoras personales. 293 00:14:10,580 --> 00:14:12,670 >> Así que Bill Gates fue una estudiante en Harvard. 294 00:14:12,670 --> 00:14:14,820 Empecé a enseñar en Harvard en 1974. 295 00:14:14,820 --> 00:14:16,560 Esto se hizo en 1975. 296 00:14:16,560 --> 00:14:20,180 Así que fue a principios de su carrera y al principio de mi carrera. 297 00:14:20,180 --> 00:14:23,790 De hecho, me enseñaron a Bill en un curso en esta época. 298 00:14:23,790 --> 00:14:27,130 Paul Allen no era un Harvard estudiante, pero 299 00:14:27,130 --> 00:14:31,020 había sido una escuela secundaria compañero de Bill Gates. 300 00:14:31,020 --> 00:14:33,740 Si vienes y miras en la lista, podrás 301 00:14:33,740 --> 00:14:36,230 en realidad encontrar tercera nombre, Monte Davidoff, 302 00:14:36,230 --> 00:14:39,260 quien fue compañero de clase de Gates aquí en Harvard. 303 00:14:39,260 --> 00:14:41,340 >> OK, así que aquí hay un interesante comentario aquí. 304 00:14:41,340 --> 00:14:47,150 Dice "En 4K puede eliminar de raíz cuadrada pero para bucles aún deben trabajar ". 305 00:14:47,150 --> 00:14:53,080 OK, así que lo que eso significa es que hay Había dos formas de compilar este programa. 306 00:14:53,080 --> 00:14:57,860 Uno era para ejecutarse en una versión de este equipo Altair 307 00:14:57,860 --> 00:15:04,310 que sólo tenía 4K palabras de memoria, 4.096 palabras de memoria. 308 00:15:04,310 --> 00:15:07,050 Pero la gran versión tenía 8K. 309 00:15:07,050 --> 00:15:09,770 Y así, lo que dice es que en la versión 4K 310 00:15:09,770 --> 00:15:12,770 había que borrar algunos código para que se ajuste. 311 00:15:12,770 --> 00:15:14,790 Y una de las cosas que se suprimiría 312 00:15:14,790 --> 00:15:16,290 sería la rutina de raíz cuadrada. 313 00:15:16,290 --> 00:15:20,360 Pero al parecer, la para lazos aún debe 314 00:15:20,360 --> 00:15:26,392 trabajar incluso cuando estás compilando abajo por sólo la versión de 4K de la computadora. 315 00:15:26,392 --> 00:15:29,350 DAVID J. MALAN: Así que uno de los temas, como veremos en ciencias de la computación, 316 00:15:29,350 --> 00:15:31,430 Es esta noción de capas y la abstracción, 317 00:15:31,430 --> 00:15:34,670 y realmente de pie sobre los hombros de personas que nos han precedido, no 318 00:15:34,670 --> 00:15:37,890 a diferencia de algunos de los Bill Gates y narrativa Paul Allen aquí. 319 00:15:37,890 --> 00:15:40,080 Y lo que esto significa es que hoy podemos dar por 320 00:15:40,080 --> 00:15:43,490 sentado que las cosas son en realidad más fácil para nosotros para escribir código. 321 00:15:43,490 --> 00:15:47,170 De hecho el código, como dijimos el viernes, es más técnicamente conocido como código fuente. 322 00:15:47,170 --> 00:15:52,210 Y es este Inglés como sintaxis eso es más propio y más bien definido 323 00:15:52,210 --> 00:15:55,480 que algo como pseudo código, para que no existe una definición formal. 324 00:15:55,480 --> 00:15:58,320 >> Y hoy lo vamos es centrarse en el código fuente 325 00:15:58,320 --> 00:16:01,010 que tiene este aspecto, lo que es cierto que a primera vista 326 00:16:01,010 --> 00:16:02,690 parece completamente críptica. 327 00:16:02,690 --> 00:16:08,540 Y, francamente, es mucho más estético complejo que el programa subyacente es. 328 00:16:08,540 --> 00:16:13,300 Todo este programa lo hace, recuerdo, es lo que dijimos? 329 00:16:13,300 --> 00:16:14,990 Simplemente imprime "hola mundo". 330 00:16:14,990 --> 00:16:19,600 Y sin embargo, mira todas las cosas que necesitamos para envolver alrededor de esa frase muy simple. 331 00:16:19,600 --> 00:16:21,750 Pero al poco tiempo todos estas líneas y más 332 00:16:21,750 --> 00:16:24,800 hará mucho mejor sentido para usted. 333 00:16:24,800 --> 00:16:26,940 >> Y el flujo es como sigue. 334 00:16:26,940 --> 00:16:31,220 Lo que necesitamos a nuestra disposición es tomar código, como fuente 335 00:16:31,220 --> 00:16:32,340 código que acabamos de ver. 336 00:16:32,340 --> 00:16:35,060 Y necesitamos un nuevo programa para ejecutarlo a través. 337 00:16:35,060 --> 00:16:39,130 Necesitamos algoritmos que pueden convertir el código fuente, así, 338 00:16:39,130 --> 00:16:41,932 en código objeto, 0s y 1s. 339 00:16:41,932 --> 00:16:43,890 En otras palabras, lo que vamos a aprender hoy 340 00:16:43,890 --> 00:16:46,620 es cómo hacer esto, escribir código fuente encima de la tapa, 341 00:16:46,620 --> 00:16:49,930 pasarlo como entrada a un especial programa conocido como un compilador, 342 00:16:49,930 --> 00:16:52,140 y vamos a producir código objeto. 343 00:16:52,140 --> 00:16:54,600 Lo cual es sólo una forma elegante de diciendo vamos a tomar algo 344 00:16:54,600 --> 00:16:58,350 que se parece a esto, pasarlo en un programa llamado un compilador, 345 00:16:58,350 --> 00:17:01,210 producir código objeto que se parece a esto. 346 00:17:01,210 --> 00:17:04,720 >> Así que estos son literalmente los patrones de 0s y 1s 347 00:17:04,720 --> 00:17:08,550 que se entiende por un Ordenador Intel en estos días, 348 00:17:08,550 --> 00:17:12,480 que si se interpreta por la CPU, los cerebros en el interior de una computadora, 349 00:17:12,480 --> 00:17:16,130 literalmente imprimir, simplemente, "hola mundo". 350 00:17:16,130 --> 00:17:19,670 Ahora no hay manera más 0s y 1s que usted que espero pueda ser necesaria para eso. 351 00:17:19,670 --> 00:17:22,520 Pero eso es porque estamos construyendo en una buena parte de la complejidad 352 00:17:22,520 --> 00:17:24,270 que a partir de ahora podemos dar por sentado. 353 00:17:24,270 --> 00:17:27,869 En otras palabras, un montón de gente inteligente nos han dado una gran cantidad de herramientas interesantes 354 00:17:27,869 --> 00:17:32,480 y software de gran alcance con el que ahora puede hacer proyectos propios. 355 00:17:32,480 --> 00:17:33,400 >> Así que vamos a empezar. 356 00:17:33,400 --> 00:17:36,640 Mientras que el viernes pasado, y para Problemas de 0 esta semana, 357 00:17:36,640 --> 00:17:39,000 estarás jugando en un mundo que se parece a esto. 358 00:17:39,000 --> 00:17:42,180 A partir de hoy y para el problema Set 1 la próxima semana, el código 359 00:17:42,180 --> 00:17:45,410 va a mirar un poco más críptica, pero funcionalmente es 360 00:17:45,410 --> 00:17:46,940 va a ser el mismo. 361 00:17:46,940 --> 00:17:50,770 Así previo aviso, la parte superior es Scratch, conclusión es C. Francamente arañazos 362 00:17:50,770 --> 00:17:52,780 es mucho más fácil amable y accesible. 363 00:17:52,780 --> 00:17:56,890 Pero si ahora comparar visualmente superior a parte inferior, hay una especie de uno a uno 364 00:17:56,890 --> 00:17:59,690 correspondencia entre el piezas de un rompecabezas y el idioma 365 00:17:59,690 --> 00:18:00,870 estamos a punto de jugar. 366 00:18:00,870 --> 00:18:04,420 En particular, por ejemplo, la rompecabezas azul pieza encima de la tapa, 367 00:18:04,420 --> 00:18:08,370 aparentemente es equivalente a lo que la palabra clave o frase especial en este idioma 368 00:18:08,370 --> 00:18:09,062 llamado 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 Eso significa que la impresión con formato. 372 00:18:12,140 --> 00:18:15,240 Y eso es sólo una fantasía manera de decir printf en C 373 00:18:15,240 --> 00:18:18,615 va a ser una declaración o una función que imprime algo a la pantalla. 374 00:18:18,615 --> 00:18:19,990 ¿Qué quiere imprimir a la pantalla? 375 00:18:19,990 --> 00:18:23,627 Lo que usted le diga que en el interior de cotizaciones, dentro de paréntesis. 376 00:18:23,627 --> 00:18:25,460 Así que de nuevo, es cierto, hay un montón de cosas 377 00:18:25,460 --> 00:18:27,990 que hay que tener en cuenta, paréntesis, comillas, puntos y comas, 378 00:18:27,990 --> 00:18:28,656 y todo esto. 379 00:18:28,656 --> 00:18:30,600 Pero todo eso es una especie de fuera de lugar. 380 00:18:30,600 --> 00:18:33,660 La lección interesante por ahora es que el bloque de voz en scratch 381 00:18:33,660 --> 00:18:37,520 es más o menos equivalente a la sentencia printf en C. 382 00:18:37,520 --> 00:18:41,390 >> Mientras tanto, la pieza del rompecabezas de color amarillo encima de la tapa, cuando la bandera verde se hace clic, 383 00:18:41,390 --> 00:18:44,736 es probablemente equivalente a lo que la palabra clave aquí? 384 00:18:44,736 --> 00:18:45,360 AUDIENCIA: Principal. 385 00:18:45,360 --> 00:18:46,359 DAVID J. MALAN: Así principal. 386 00:18:46,359 --> 00:18:47,410 Quizás int, tal vez sin efecto. 387 00:18:47,410 --> 00:18:51,280 Pero principal tipo de sonidos como que es importante, y de hecho lo es. 388 00:18:51,280 --> 00:18:54,080 Así que cuando la bandera verde hace clic es, de nuevo, la pieza del rompecabezas 389 00:18:54,080 --> 00:18:56,390 que arranca un programa de Scratch entero. 390 00:18:56,390 --> 00:19:02,140 Pero vamos a empezar ahora llamando que la principal, esta función conocida como principal. 391 00:19:02,140 --> 00:19:06,410 >> Ahora mientras tanto vamos a generalizar de la siguiente manera. 392 00:19:06,410 --> 00:19:08,780 Podríamos llamar a decir una función. 393 00:19:08,780 --> 00:19:10,580 Y puede parecer específicamente como este. 394 00:19:10,580 --> 00:19:11,770 Bueno, ¿qué pasa con bucles? 395 00:19:11,770 --> 00:19:16,540 Si queremos iniciar la conversión o traducir más en Scratch para C, 396 00:19:16,540 --> 00:19:19,400 esta cosa aparentemente sólo dice "hola mundo" para siempre. 397 00:19:19,400 --> 00:19:23,060 Así que si usted asocia estos scripts con un gato en Scratch, 398 00:19:23,060 --> 00:19:26,560 que sólo va a seguir diciendo en una especie de burbuja de la historieta, 399 00:19:26,560 --> 00:19:29,922 "Hola mundo, hola mundo, hola mundo ", hasta la saciedad, para siempre. 400 00:19:29,922 --> 00:19:33,130 Si queremos hacer algo similar en C, va a parecer un poco críptico. 401 00:19:33,130 --> 00:19:35,463 Pero podemos lograr el mismo resultados, ya que con el tiempo 402 00:19:35,463 --> 00:19:36,861 averiguar, con una sintaxis como esta. 403 00:19:36,861 --> 00:19:39,360 Voy a utilizar printf de nuevo, porque al final del día 404 00:19:39,360 --> 00:19:42,040 Quiero imprimir "hola mundo". 405 00:19:42,040 --> 00:19:45,610 Y estoy parecer utilizando un palabra clave que no es para siempre. 406 00:19:45,610 --> 00:19:47,320 Es su lugar, mientras que la palabra. 407 00:19:47,320 --> 00:19:49,650 Pero sólo semánticamente en Inglés, mientras que tipo de 408 00:19:49,650 --> 00:19:52,120 sugiere algún tipo de bucle o ciclo. 409 00:19:52,120 --> 00:19:55,070 >> Así que pasa a ser la palabra clave que utiliza C. 410 00:19:55,070 --> 00:20:00,700 Y aunque es cierto, ¿por qué, mientras que verdadero valor eficaz para siempre? 411 00:20:00,700 --> 00:20:04,240 Bueno, mientras que, como veremos pronto apreciar aún más, 412 00:20:04,240 --> 00:20:08,140 tiene esta entre paréntesis al lado de él donde usted puede poner una expresión booleana. 413 00:20:08,140 --> 00:20:11,360 Y mientras que expresión es verdadera, el código, 414 00:20:11,360 --> 00:20:14,750 como se indica entre estos dos llaves como vamos a llamarlos, 415 00:20:14,750 --> 00:20:16,880 se acaba de seguir corriendo una y otra vez. 416 00:20:16,880 --> 00:20:18,410 >> Tan cierto es cierto. 417 00:20:18,410 --> 00:20:20,900 Así, mientras que los medios verdaderos sólo hacer esto para siempre. 418 00:20:20,900 --> 00:20:23,480 Es casi un estúpido construcción de expresarse. 419 00:20:23,480 --> 00:20:26,590 Pero allí no era siempre palabra clave en C. No había tiempo. 420 00:20:26,590 --> 00:20:29,390 Y había una muy simple Expresión booleana como verdadera. 421 00:20:29,390 --> 00:20:32,210 Y por lo que este, ya veremos, logra el mismo resultado. 422 00:20:32,210 --> 00:20:33,890 >> ¿Cómo más podría implementar un bucle? 423 00:20:33,890 --> 00:20:36,980 Bueno, en scratch que te pueden codificar un número específico 424 00:20:36,980 --> 00:20:39,430 de iteraciones en el bucle aquí. 425 00:20:39,430 --> 00:20:43,210 Y eso es exactamente lo que podría hacer en esta versión de C, 426 00:20:43,210 --> 00:20:46,140 por lo que tenemos una llamada para el bucle. 427 00:20:46,140 --> 00:20:49,850 Y el bucle aquí va para repetir, de manera algo críptica, 428 00:20:49,850 --> 00:20:54,100 desde el valor 0 en hasta a pero menos de 10. 429 00:20:54,100 --> 00:20:55,955 >> Ahora variables en cero. 430 00:20:55,955 --> 00:20:57,830 Puede que no haya tenido ocasión de utilizar estos. 431 00:20:57,830 --> 00:21:02,516 Pero ¿qué sentido tiene, en general, de una variable dijimos la semana pasada? 432 00:21:02,516 --> 00:21:03,015 Qué es eso? 433 00:21:03,015 --> 00:21:03,780 >> AUDIENCIA: Puntos. 434 00:21:03,780 --> 00:21:05,200 >> DAVID J. MALAN: destacar? 435 00:21:05,200 --> 00:21:05,700 Oh, señala. 436 00:21:05,700 --> 00:21:07,620 Aceptar, hacer el seguimiento de los puntos, por ejemplo, en un juego. 437 00:21:07,620 --> 00:21:09,510 O más en general hacer lo que con la variable? 438 00:21:09,510 --> 00:21:10,450 ¿Cuál es la utilidad de ellos? 439 00:21:10,450 --> 00:21:10,825 >> AUDIENCIA: Memoria. 440 00:21:10,825 --> 00:21:11,750 >> DAVID J. MALAN: Sí, ¿y la memoria. 441 00:21:11,750 --> 00:21:13,000 Es para guardar algo. 442 00:21:13,000 --> 00:21:17,336 Y la clase de tonto me visual utilizado la última vez fue como este recipiente de vidrio. 443 00:21:17,336 --> 00:21:19,710 Y si quisiéramos almacenar algo dentro de una variable, 444 00:21:19,710 --> 00:21:21,918 por ejemplo, en este momento el valor es seis porque hay 445 00:21:21,918 --> 00:21:23,450 son seis pelotas de ping pong en aquí. 446 00:21:23,450 --> 00:21:26,158 Es sólo una especie de almacenamiento contenedor que debajo del capó 447 00:21:26,158 --> 00:21:30,030 se implementa con bits, 0 y 1, sin embargo, un equipo pasa a hacer eso. 448 00:21:30,030 --> 00:21:32,900 >> Así que en Scratch, si quieren tener una variable, 449 00:21:32,900 --> 00:21:34,840 podemos utilizar un bloque de color naranja como este. 450 00:21:34,840 --> 00:21:37,050 Llamaremos a ese contador en este caso particular. 451 00:21:37,050 --> 00:21:38,890 Yo inicializa a 0. 452 00:21:38,890 --> 00:21:41,080 Y lo que yo hago entonces? 453 00:21:41,080 --> 00:21:44,780 Siempre, decir contador, que si juegas con eso en Scratch, 454 00:21:44,780 --> 00:21:45,780 usted sólo ve los arañazos. 455 00:21:45,780 --> 00:21:49,920 El gato o lo que sea el traje se pone en él hablará el número en cuestión. 456 00:21:49,920 --> 00:21:52,840 >> Cambiar contador en 1 es como incremento a 1. 457 00:21:52,840 --> 00:21:56,580 Y así esto va a contar de qué y qué? 458 00:21:56,580 --> 00:21:59,114 Desde 0 hasta el infinito, o hasta que se rompe de Scratch, 459 00:21:59,114 --> 00:22:01,030 o hasta que tipo de perder interés en ver 460 00:22:01,030 --> 00:22:02,650 qué tan alto que realmente puede contar. 461 00:22:02,650 --> 00:22:04,800 >> Así que ¿cómo podemos convertir esto en C? 462 00:22:04,800 --> 00:22:06,480 Va a parecer un poco críptico. 463 00:22:06,480 --> 00:22:08,896 Pero, de nuevo, si nos fijamos en cada de estas líneas individualmente 464 00:22:08,896 --> 00:22:10,410 que tipo de formación general. 465 00:22:10,410 --> 00:22:13,526 Así que al parecer int va a tener algún significado especial en C. 466 00:22:13,526 --> 00:22:14,400 Vamos a ver eso de nuevo. 467 00:22:14,400 --> 00:22:15,810 Como acotación al margen que significa entero. 468 00:22:15,810 --> 00:22:16,990 Así que sólo significa número. 469 00:22:16,990 --> 00:22:18,920 Así que ese es el tipo de recipiente de vidrio que quiero, una 470 00:22:18,920 --> 00:22:21,120 que puede almacenar números, No un ping pong bolas. 471 00:22:21,120 --> 00:22:25,520 Y yo voy a utilizar el signo igual hay que asignarle un valor de 0. 472 00:22:25,520 --> 00:22:29,440 Así que eso es bastante como conjunto contador a 0, pero en C. 473 00:22:29,440 --> 00:22:32,840 >> Mientras tanto, mientras que la verdadera, que era equivalente, por supuesto, para siempre, 474 00:22:32,840 --> 00:22:35,980 a pesar de que es un poco críptico, y luego dentro de las llaves. 475 00:22:35,980 --> 00:22:39,188 Y usted puede pensar en estas llaves, el que puede escribir en el teclado, 476 00:22:39,188 --> 00:22:43,110 como realmente ser como la curvatura en estos bloques de lazo de color amarillo en el principio. 477 00:22:43,110 --> 00:22:45,700 Abarca varias líneas de código. 478 00:22:45,700 --> 00:22:48,120 >> Printf es cada vez un poco de miedo ahora porque 479 00:22:48,120 --> 00:22:51,120 ver no sólo cita entre paréntesis. 480 00:22:51,120 --> 00:22:55,160 Pero, ¿qué más hay de nuevo sintácticamente en este ejemplo? 481 00:22:55,160 --> 00:22:57,300 Hay un porcentaje d. 482 00:22:57,300 --> 00:22:58,551 Y a continuación, la barra invertida n está ahí. 483 00:22:58,551 --> 00:23:00,883 Nos hicieron ver que antes, incluso aunque yo no lo mencioné. 484 00:23:00,883 --> 00:23:01,886 Entonces hay una coma. 485 00:23:01,886 --> 00:23:03,010 Y luego hay un mostrador. 486 00:23:03,010 --> 00:23:05,010 >> Pero ya veremos en tan sólo un momento en que esto es sólo 487 00:23:05,010 --> 00:23:09,080 una forma estándar de decir una impresión "Número decimal", comillas, cierra, 488 00:23:09,080 --> 00:23:10,500 un número decimal. 489 00:23:10,500 --> 00:23:13,370 Pero yo voy a decir más tarde lo que el número decimal es. 490 00:23:13,370 --> 00:23:16,835 Así que el hecho de que hay una coma en esta línea refrán printf, 491 00:23:16,835 --> 00:23:18,710 significa seguir adelante y de impresión un número decimal. 492 00:23:18,710 --> 00:23:23,110 Ah, y por cierto, el número es cualquiera que sea el valor de esta variable es. 493 00:23:23,110 --> 00:23:25,880 Y así, para hacer esto más claro, vamos a ver un ejemplo 494 00:23:25,880 --> 00:23:30,930 poco tiempo que implica exactamente printf en el contexto de los programas de real c. 495 00:23:30,930 --> 00:23:33,472 >> Ahora acaba de concluir algunos de estas construcciones. 496 00:23:33,472 --> 00:23:36,680 Expresiones booleanas, puede que no tenga ocasión para utilizar estos en su programa 497 00:23:36,680 --> 00:23:39,450 Pero es posible que muy bien, especialmente si el uso de condiciones. 498 00:23:39,450 --> 00:23:43,460 Y por lo que estos dos ejemplos de Raspe significaría si x es menor que y, 499 00:23:43,460 --> 00:23:48,770 o si x es menor que y e y es menos de z, ¿cómo podríamos traducir eso? 500 00:23:48,770 --> 00:23:50,810 >> Bueno, en C es sólo va a tener este aspecto. 501 00:23:50,810 --> 00:23:55,300 Un poco crípticas, más paréntesis, algunos símbolos de unión extraño, pero fundamentalmente 502 00:23:55,300 --> 00:23:59,160 las ideas son tan simples como están en el mundo pieza del rompecabezas. 503 00:23:59,160 --> 00:24:02,690 Simplemente estamos comprobando si algo es menor que otra cosa. 504 00:24:02,690 --> 00:24:03,910 >> ¿Qué hay de las condiciones? 505 00:24:03,910 --> 00:24:09,710 En pocas palabras en Inglés, lo que hace este trozo de código de Scratch do le dirías? 506 00:24:09,710 --> 00:24:11,050 >> AUDIENCIA: Compara dos números. 507 00:24:11,050 --> 00:24:13,760 >> DAVID J. MALAN: Compara dos números, y si x es menor que y 508 00:24:13,760 --> 00:24:14,860 dice tanto. 509 00:24:14,860 --> 00:24:18,080 Si x es mayor que y dice tanto, otra cosa 510 00:24:18,080 --> 00:24:20,740 si x es igual a y dice tanto. 511 00:24:20,740 --> 00:24:22,180 Ahora donde x e y vienen? 512 00:24:22,180 --> 00:24:22,680 Quién sabe. 513 00:24:22,680 --> 00:24:25,380 Este trozo de arañazos código está fuera de contexto. 514 00:24:25,380 --> 00:24:29,050 Pero lo que queremos hacer ahora es traducir esto por un momento para ver. 515 00:24:29,050 --> 00:24:31,660 >> Así como usted se sienta cómodo esta semana en de problemas 516 00:24:31,660 --> 00:24:34,190 0 jugando en este mundo a la izquierda, se dan cuenta 517 00:24:34,190 --> 00:24:36,940 que las ideas no están cambiando esta semana o la próxima o más allá. 518 00:24:36,940 --> 00:24:38,690 Estamos simplemente ir a empezar a escribir cosas 519 00:24:38,690 --> 00:24:41,240 de una manera diferente con nuestra teclado en lugar de nuestro ratón. 520 00:24:41,240 --> 00:24:44,577 >> Así que si x es menor que y, y hay algunos paréntesis, allí, 521 00:24:44,577 --> 00:24:47,160 entonces hay algunas llaves de nuevo al tipo de encapsular 522 00:24:47,160 --> 00:24:48,970 al igual que las piezas de un rompecabezas de color amarillo hacen. 523 00:24:48,970 --> 00:24:53,000 Y voy a printf x es menor que y y así sucesivamente. 524 00:24:53,000 --> 00:24:56,540 >> Lo bueno de C, como se puede ver aquí, 525 00:24:56,540 --> 00:25:00,480 es que usted no obtiene esta jerarquización, anidación, anidando eso es necesariamente 526 00:25:00,480 --> 00:25:02,220 va a empujar a su código a la derecha. 527 00:25:02,220 --> 00:25:04,990 Usted puede tener todo en su lugar alineación gusta prolijamente esto. 528 00:25:04,990 --> 00:25:08,960 Pero eso es sólo una estética detalle veremos de nuevo en poco tiempo. 529 00:25:08,960 --> 00:25:09,660 >> Bien. 530 00:25:09,660 --> 00:25:13,290 Así que eso nos lleva de nuevo a este programa busca críptica. 531 00:25:13,290 --> 00:25:15,180 Vamos a realmente escribir algo de código. 532 00:25:15,180 --> 00:25:16,830 Ahora, ¿cómo ir sobre la escritura de código? 533 00:25:16,830 --> 00:25:21,310 Todos estos años que he poseído un Mac o un PC, de escritorio o portátil, 534 00:25:21,310 --> 00:25:24,520 que realmente ha tenido la capacidad de para empezar a escribir código de programación. 535 00:25:24,520 --> 00:25:27,050 Pero es probable que falta un tipo especial de programa. 536 00:25:27,050 --> 00:25:28,470 Por supuesto que puede escribir código. 537 00:25:28,470 --> 00:25:30,740 Pero no se puede necesariamente, fuera de la caja, 538 00:25:30,740 --> 00:25:34,210 convertir ese código fuente en código objeto, 0s y 1s 539 00:25:34,210 --> 00:25:35,619 sin lo que en su computadora? 540 00:25:35,619 --> 00:25:36,410 AUDIENCIA: Compiler. 541 00:25:36,410 --> 00:25:37,630 DAVID J. MALAN: Así que un compilador, derecha. 542 00:25:37,630 --> 00:25:39,730 Ahora, la mayoría de ustedes probablemente no son dueños de un compilador, 543 00:25:39,730 --> 00:25:41,259 nunca han descargado un compilador. 544 00:25:41,259 --> 00:25:44,300 Pero verás lo puede descargar como la mayoría de cualquier otra pieza de software. 545 00:25:44,300 --> 00:25:47,470 En el mundo de Mac OS, es posible que descargar o ya han descargado 546 00:25:47,470 --> 00:25:50,437 algo llamado Xcode o GCC o Clang. 547 00:25:50,437 --> 00:25:52,270 Si usted viene de la Ventanas mundo que te pueden 548 00:25:52,270 --> 00:25:56,190 han descargado Visual Studio, Visual Basic, entornos como eso. 549 00:25:56,190 --> 00:25:59,200 Hay docenas de compiladores en estos días en que puede usar. 550 00:25:59,200 --> 00:26:01,940 Sin embargo, el corto de él aquí es que sería un dolor 551 00:26:01,940 --> 00:26:04,480 y, francamente, una tecnológica pesadilla para cientos 552 00:26:04,480 --> 00:26:07,680 de las personas con diferente configuraciones de ordenador a todo 553 00:26:07,680 --> 00:26:09,800 configurar sus máquinas exactamente de la misma manera 554 00:26:09,800 --> 00:26:11,700 por lo que todos podemos estar en la misma página. 555 00:26:11,700 --> 00:26:15,240 >> Así que lo que, en cambio, hacemos CS50 está en que le damos 556 00:26:15,240 --> 00:26:18,349 un entorno estándar, una Entorno de Linux que es 557 00:26:18,349 --> 00:26:20,140 va a parecer un poco algo como esto. 558 00:26:20,140 --> 00:26:22,980 Vas a ver más de esto en el Problema Set 1 especificación que 559 00:26:22,980 --> 00:26:25,330 irá en línea este viernes por la noche. 560 00:26:25,330 --> 00:26:28,360 >> Y lo que esto significa es que de ahora en adelante 561 00:26:28,360 --> 00:26:32,060 van a ser capaces de descargar e instalar un programa 562 00:26:32,060 --> 00:26:33,650 llamado el CS50 Appliance. 563 00:26:33,650 --> 00:26:36,275 Y usted va a descargar e instalar otro programa llamado 564 00:26:36,275 --> 00:26:40,300 un hipervisor, que es sólo un forma elegante de lograrlo. 565 00:26:40,300 --> 00:26:44,600 Si usted es dueño de un Mac o un PC o una Ordenador Linux o un ordenador Solaris, 566 00:26:44,600 --> 00:26:46,830 o lo que sea operativo loco sistema que se está ejecutando, 567 00:26:46,830 --> 00:26:49,820 vas a descargar un programa llamado el hipervisor que es 568 00:26:49,820 --> 00:26:53,350 va a ejecutar el CS50 Appliance en su ordenador 569 00:26:53,350 --> 00:26:55,430 no importa cuál sea su sistema operativo es. 570 00:26:55,430 --> 00:27:00,640 Un hipervisor es decir convierte nuestras cosas a cualquier idioma, 571 00:27:00,640 --> 00:27:03,850 cualquier instrucción que sus propia computadora entiende. 572 00:27:03,850 --> 00:27:04,962 >> Así que esta es una estratificación. 573 00:27:04,962 --> 00:27:06,920 Y de nuevo, esto es una especie de temática en el ordenador 574 00:27:06,920 --> 00:27:08,722 la ciencia, el edificio en la parte superior de las cosas. 575 00:27:08,722 --> 00:27:09,680 Es posible tener Windows. 576 00:27:09,680 --> 00:27:10,710 Es posible que tenga Mac OS. 577 00:27:10,710 --> 00:27:12,960 Pero a partir de la próxima semana usted es va a haber descargado 578 00:27:12,960 --> 00:27:14,980 un software gratuito llamado el hipervisor. 579 00:27:14,980 --> 00:27:17,800 Usted va a haber descargado una pieza de software llamado el CS50 Appliance. 580 00:27:17,800 --> 00:27:21,050 >> Eso va a ejecutar en el hipervisor, que se va a ejecutar en su equipo. 581 00:27:21,050 --> 00:27:23,030 Y el resultado final es que todos nosotros 582 00:27:23,030 --> 00:27:26,220 tener una ventana simple como esto en su Mac o PC 583 00:27:26,220 --> 00:27:30,160 eso nos da la ilusión de todos ejecutar el mismo sistema operativo, 584 00:27:30,160 --> 00:27:32,800 sin ningún otro impacto en el equipo. 585 00:27:32,800 --> 00:27:34,870 Y usted puede pantalla completa y esencialmente comportarse 586 00:27:34,870 --> 00:27:37,550 como si usted está ejecutando una sistema operativo llamado Linux, 587 00:27:37,550 --> 00:27:40,270 que es lo que el CS50 Appliance se basa en. 588 00:27:40,270 --> 00:27:42,930 >> Así que vamos a utilizar realmente este ahora a escribir un programa. 589 00:27:42,930 --> 00:27:45,450 Usted puede escribir un programa utilizando Microsoft Word. 590 00:27:45,450 --> 00:27:48,160 Usted puede escribir un programa utilizando TextEdit o Bloc de notas, 591 00:27:48,160 --> 00:27:51,880 o WordPad, o casi cualquier palabra programa de procesamiento que jamás ha utilizado. 592 00:27:51,880 --> 00:27:55,174 Pero la realidad es que no debería utilizar realmente cualquiera de esos programas. 593 00:27:55,174 --> 00:27:57,840 Por cierto, no debe usar algo como Microsoft Word, que 594 00:27:57,840 --> 00:28:01,120 tiene orientación y cursiva negrita, y fuentes más grandes y fuentes más pequeñas, 595 00:28:01,120 --> 00:28:03,560 porque el equipo no preocuparse por nada de eso. 596 00:28:03,560 --> 00:28:05,600 Todo el equipo está va a tener en cuenta es 597 00:28:05,600 --> 00:28:09,040 Inglés como instrucciones escritas en C. 598 00:28:09,040 --> 00:28:12,050 >> Así que lo que haremos dentro del Appliance CS50 599 00:28:12,050 --> 00:28:14,290 es utilizar un programa de libre disponibles, y es 600 00:28:14,290 --> 00:28:17,360 pre-instalado en este aparato, llamado Gedit. 601 00:28:17,360 --> 00:28:22,280 Y Gedit es sólo un super simple editor de texto como TextEdit de Mac OS, 602 00:28:22,280 --> 00:28:26,200 como el Notepad de Windows que va a mirar un poco algo como esto. 603 00:28:26,200 --> 00:28:28,910 >> Así que vamos en realidad no mirar las diapositivas de esta. 604 00:28:28,910 --> 00:28:32,580 Pero vamos a ir en realidad en el propio medio ambiente. 605 00:28:32,580 --> 00:28:36,090 Voy a seguir adelante y iniciar la sesión, en esta otra ventana, 606 00:28:36,090 --> 00:28:40,910 a mi CS50 Appliance, que tengo pre-instalado en mi ordenador portátil aquí. 607 00:28:40,910 --> 00:28:43,771 >> Tenga en cuenta que, al igual que Windows y Mac OS, tiene algunos menús. 608 00:28:43,771 --> 00:28:45,520 Al igual que Windows pone allí abajo en vez 609 00:28:45,520 --> 00:28:47,020 de Mac OS, lo que lo coloca allí. 610 00:28:47,020 --> 00:28:48,930 Pero la realidad es que es todo tipo de la misma. 611 00:28:48,930 --> 00:28:50,770 Y aquí es en su conjunto manojo de software. 612 00:28:50,770 --> 00:28:51,770 Hay Dropbox. 613 00:28:51,770 --> 00:28:54,780 Hay un montón de accesorios, programas gráficos que vamos a 614 00:28:54,780 --> 00:28:56,430 utilizar más tarde en el término de los boletines de problemas. 615 00:28:56,430 --> 00:28:59,650 Hay un navegador web integrado en la que se trata de un ordenador de pleno derecho 616 00:28:59,650 --> 00:29:01,240 en el interior de una computadora. 617 00:29:01,240 --> 00:29:04,170 >> Pero yo voy a hacer clic en este más a la izquierda icono blanco aquí, 618 00:29:04,170 --> 00:29:05,890 que es el icono para Gedit. 619 00:29:05,890 --> 00:29:09,650 Y se va a abrir una ventana que cuenta con tres paneles a la misma, 620 00:29:09,650 --> 00:29:12,590 una izquierda, una superior y una inferior. 621 00:29:12,590 --> 00:29:16,071 >> Ahora está en la parte superior de este derecho que Voy a escribir algo de código en realidad. 622 00:29:16,071 --> 00:29:16,820 Así que vamos a hacer esto ,. 623 00:29:16,820 --> 00:29:19,040 Voy a ir a Archivo, Guardar. 624 00:29:19,040 --> 00:29:22,100 Y no puede ser que alguna vez ha visto esta ventana particular antes. 625 00:29:22,100 --> 00:29:23,620 Pero esto es como Mac OS o Windows. 626 00:29:23,620 --> 00:29:25,490 Es sólo una ventana con todas las carpetas 627 00:29:25,490 --> 00:29:27,290 que tengo dentro de este equipo. 628 00:29:27,290 --> 00:29:30,320 >> Y me voy a guardar el archivo como hello.c. 629 00:29:30,320 --> 00:29:32,690 Y yo voy a ir adelante y haga clic en Guardar. 630 00:29:32,690 --> 00:29:36,364 Y ahora noto que tengo una pestaña en la parte superior izquierda llamado hello.c. 631 00:29:36,364 --> 00:29:38,280 Así que, probablemente, bastante familiarizados, incluso si no tienes 632 00:29:38,280 --> 00:29:40,240 utilizado este programa en particular antes. 633 00:29:40,240 --> 00:29:44,890 >> Y ahora voy a escribir en los secuencia bastante críptica de comandos 634 00:29:44,890 --> 00:29:46,360 que vimos hace un momento. 635 00:29:46,360 --> 00:29:49,330 Incluya, I estándar / O.h. 636 00:29:49,330 --> 00:29:50,600 Más sobre esto pronto. 637 00:29:50,600 --> 00:29:55,670 Void main Int, rizado abierto corsé, cerrado corchete. 638 00:29:55,670 --> 00:30:01,570 Y luego dentro de allí, creo que es donde tuvimos "hola mundo", punto y coma. 639 00:30:01,570 --> 00:30:03,100 Y ahora ahorrar. 640 00:30:03,100 --> 00:30:08,780 >> Así que este es un programa escrito en C, escrito, por lo tanto, en el código fuente. 641 00:30:08,780 --> 00:30:10,720 Pero yo no puedo ejecutar este programa. 642 00:30:10,720 --> 00:30:13,390 Yo como que quiero duplicar haga clic en un icono en alguna parte, 643 00:30:13,390 --> 00:30:16,390 pero no existe otro icono que el archivo de código fuente. 644 00:30:16,390 --> 00:30:20,359 Lo que, de nuevo, es el proceso ahora que Tengo que ejecutar este archivo 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: Así que un compilador. 647 00:30:22,399 --> 00:30:24,890 Así que en diferentes equipos que hacer esto de diferentes maneras. 648 00:30:24,890 --> 00:30:27,480 Pero lo que hemos hecho aquí en el Appliance CS50 que es 649 00:30:27,480 --> 00:30:31,260 representativo de cómo te pueden hacer esto en muchos sistemas diferentes, 650 00:30:31,260 --> 00:30:34,036 es que estoy simplemente yendo a ejecutar un comando llamado make. 651 00:30:34,036 --> 00:30:35,660 Y marca es, literalmente, va a hacer eso. 652 00:30:35,660 --> 00:30:36,640 Me un programa Make. 653 00:30:36,640 --> 00:30:39,060 >> Así que va a ejecutar un compilador para mí. 654 00:30:39,060 --> 00:30:42,160 Y el nombre del programa Quiero hacer es saludar. 655 00:30:42,160 --> 00:30:43,510 Ahora que es un programa. 656 00:30:43,510 --> 00:30:47,170 Y que es lo suficientemente inteligente para darse cuenta de que si yo digo hola hacen, 657 00:30:47,170 --> 00:30:50,980 que va a buscar automáticamente un archivo llamado hello.c 658 00:30:50,980 --> 00:30:53,420 simplemente porque esa es la forma en que está configurado. 659 00:30:53,420 --> 00:31:00,300 >> Así que cuando me golpeó ahora Ingrese aquí, esta línea críptica loco acaba de ser ejecutado. 660 00:31:00,300 --> 00:31:02,720 Y confía en mí, antes de de largo, dentro de pocos días, 661 00:31:02,720 --> 00:31:05,590 vas a entender lo que todos de que los medios sin sentido. 662 00:31:05,590 --> 00:31:11,150 Pero por ahora, sólo sé que hacer ejecución disparada de un compilador. 663 00:31:11,150 --> 00:31:13,290 En otras palabras, se encontró un compilador en mi ordenador 664 00:31:13,290 --> 00:31:14,820 eso es pre-instalado en el Appliance CS50 665 00:31:14,820 --> 00:31:16,560 que le entregaremos a usted en el problema Set 1. 666 00:31:16,560 --> 00:31:20,990 Y entonces tomó hola.c como de entrada, y producido aparentemente 667 00:31:20,990 --> 00:31:23,040 0 y 1 como salida. 668 00:31:23,040 --> 00:31:29,410 >> Y por defecto lo que hace es que ahorra los 0s y 1s en un archivo denominado hola. 669 00:31:29,410 --> 00:31:33,180 Y aunque esta sintaxis también podría ser nuevo para usted, simplemente diciendo dot 670 00:31:33,180 --> 00:31:37,110 slash hola va a ser la medio por el cual ejecuto este programa. 671 00:31:37,110 --> 00:31:40,360 >> Por ahora, y durante al menos un par de semana, casi todos los programas 672 00:31:40,360 --> 00:31:44,230 escribimos vamos a estar en ventanas de texto en blanco y negro. 673 00:31:44,230 --> 00:31:47,006 No ratones, sin hacer clic, sin ventanas, sin iconos. 674 00:31:47,006 --> 00:31:49,630 Vamos a mantenerlo simple y centrarse en las ideas subyacentes 675 00:31:49,630 --> 00:31:52,490 inicialmente antes de que lleguemos a algo nivel superior, por ejemplo, 676 00:31:52,490 --> 00:31:56,410 como el juego de ruptura que hablamos aproximadamente en la primera conferencia la semana pasada. 677 00:31:56,410 --> 00:32:00,820 >> Así que cuando me golpeó Ingrese aquí, es equivalente en un texto único entorno 678 00:32:00,820 --> 00:32:03,272 al hacer doble clic en un icono llamado hola. 679 00:32:03,272 --> 00:32:05,480 ¿Qué esperas voluntad suceder cuando golpeo Introduzca entonces? 680 00:32:05,480 --> 00:32:07,120 >> AUDIENCIA: Se va a imprimir "hola mundo". 681 00:32:07,120 --> 00:32:10,000 >> DAVID J. MALAN: Esperemos se imprimirá "hola mundo". 682 00:32:10,000 --> 00:32:11,370 Y de hecho lo hizo. 683 00:32:11,370 --> 00:32:13,690 Ahora que ha habido un sintaxis críptica aquí. 684 00:32:13,690 --> 00:32:15,950 Vamos a retroceder por sólo un momento y ver si podemos 685 00:32:15,950 --> 00:32:19,530 no se puede iniciar inferir con sólo retoques, intentos y fracasos, 686 00:32:19,530 --> 00:32:21,130 en cuanto a lo que está pasando aquí. 687 00:32:21,130 --> 00:32:23,609 ¿Qué pasa si me deshago de la barra invertida n? 688 00:32:23,609 --> 00:32:25,650 Ahora algunos de ustedes que han programada antes probablemente 689 00:32:25,650 --> 00:32:27,054 saben al instante lo que eso significa. 690 00:32:27,054 --> 00:32:29,220 Pero para aquellos de ustedes que han nunca programada antes, 691 00:32:29,220 --> 00:32:34,052 al menos, piensa a sí mismo lo que está pasando cambiar cuando vuelva a ejecutar este programa? 692 00:32:34,052 --> 00:32:37,010 Así que voy a volver a mi pequeña ventana en blanco y negro, que 693 00:32:37,010 --> 00:32:39,290 es la ventana en la que Puedo compilar este. 694 00:32:39,290 --> 00:32:41,130 Voy a volver a compilar hola. 695 00:32:41,130 --> 00:32:43,520 Vamos a ver el mismo secuencia críptica de comandos. 696 00:32:43,520 --> 00:32:45,719 Y yo voy a hacer slash dot hola. 697 00:32:45,719 --> 00:32:48,260 Y ahora alguien, si lo haría, que nunca ha programado antes, 698 00:32:48,260 --> 00:32:49,770 lo que podría ser diferente esta vez? 699 00:32:49,770 --> 00:32:50,020 Sí. 700 00:32:50,020 --> 00:32:51,840 >> AUDIENCIA: No se detendrá imprimir "hola mundo". 701 00:32:51,840 --> 00:32:52,660 >> DAVID J. MALAN: Va a-- lo siento? 702 00:32:52,660 --> 00:32:54,210 >> AUDIENCIA: No va a dejar de imprimirlo? 703 00:32:54,210 --> 00:32:55,810 >> DAVID J. MALAN: No lo hará dejar de imprimir "hola mundo". 704 00:32:55,810 --> 00:32:56,560 Así que no es una mala idea. 705 00:32:56,560 --> 00:32:58,633 Otras ideas? 706 00:32:58,633 --> 00:32:59,132 Sí. 707 00:32:59,132 --> 00:33:00,060 >> AUDIENCIA: Mensaje de error? 708 00:33:00,060 --> 00:33:01,750 >> DAVID J. MALAN: Error mensaje, OK, podría ser. 709 00:33:01,750 --> 00:33:02,250 Qué otra cosa? 710 00:33:02,250 --> 00:33:05,479 AUDIENCIA: Puede imprimir el soporte con el punto y coma así? 711 00:33:05,479 --> 00:33:08,270 DAVID J. MALAN: Podría imprimir la soporte con el punto y coma también. 712 00:33:08,270 --> 00:33:11,950 Así que tal vez que la barra invertida es, entonces, algunos tipo de terminous que es importante. 713 00:33:11,950 --> 00:33:14,860 ¿Alguna otra idea? 714 00:33:14,860 --> 00:33:16,412 >> Así que todas las buenas ideas. 715 00:33:16,412 --> 00:33:18,370 Y, de hecho, va ser un mensaje de error. 716 00:33:18,370 --> 00:33:20,400 Eso es probablemente lo más probable ser la respuesta en general 717 00:33:20,400 --> 00:33:22,420 para las próximas semanas a medida que aprendemos a codificar aquí. 718 00:33:22,420 --> 00:33:27,680 >> Pero por ahora recordar que los ordenadores sólo hacer lo que les dicen que hagan. 719 00:33:27,680 --> 00:33:30,400 Al igual que el maní ridículo mantequilla y jalea de ejemplo. 720 00:33:30,400 --> 00:33:33,860 Nuestros equipos humanos sólo se suponía para hacer lo que usted les dijo que hacer. 721 00:33:33,860 --> 00:33:36,250 Así que en este caso, si no le digas a la computadora 722 00:33:36,250 --> 00:33:41,190 para mover ese cursor parpadeante a la siguiente línea, que no va a hacerlo. 723 00:33:41,190 --> 00:33:45,390 Así que cuando ejecuto este programa ahora, notará la diferencia. 724 00:33:45,390 --> 00:33:46,900 >> Parece un error. 725 00:33:46,900 --> 00:33:49,190 Es un error estético, tal vez. 726 00:33:49,190 --> 00:33:53,310 Pero lo que es diferente acerca de esta salida en función de la última obviamente? 727 00:33:53,310 --> 00:33:53,810 Sí. 728 00:33:53,810 --> 00:33:54,920 >> AUDIENCIA: No hizo una nueva línea. 729 00:33:54,920 --> 00:33:56,586 >> DAVID J. MALAN: No hizo una nueva línea. 730 00:33:56,586 --> 00:33:58,740 Ahora bien, aquellos de ustedes que tienen páginas web tal vez hechas 731 00:33:58,740 --> 00:34:01,910 antes, usted puede ser que sepa de la BR etiqueta o la etiqueta de párrafo, 732 00:34:01,910 --> 00:34:03,120 muy similar en espíritu. 733 00:34:03,120 --> 00:34:06,680 Un navegador web le ignorar hasta usted le dice exactamente qué hacer. 734 00:34:06,680 --> 00:34:10,020 Del mismo modo, es un lenguaje como C sólo vamos a hacer lo que usted diga que haga. 735 00:34:10,020 --> 00:34:12,730 >> Así que la razón por la que todos estos ejemplos, 736 00:34:12,730 --> 00:34:15,350 hasta el momento, tiene tipo de casualmente tenía esta barra invertida 737 00:34:15,350 --> 00:34:18,560 allí, eso es los medios por el cual usted se expresa 738 00:34:18,560 --> 00:34:21,380 como un carácter de nueva línea, por así decirlo. 739 00:34:21,380 --> 00:34:26,219 Y usted puede tipo de apreciar, tal vez, que este sería un poco estúpido 740 00:34:26,219 --> 00:34:27,070 si nada más. 741 00:34:27,070 --> 00:34:29,150 Si quería una nueva línea, simplemente pulsando Enter y luego tipo 742 00:34:29,150 --> 00:34:32,219 de descuartizar el código como ese no debe realmente le frote el camino correcto. 743 00:34:32,219 --> 00:34:33,830 E incluso si no lo hace me importa en este momento, 744 00:34:33,830 --> 00:34:35,830 te darás cuenta de que esto no es un particular 745 00:34:35,830 --> 00:34:37,870 buena pieza en busca de código. 746 00:34:37,870 --> 00:34:39,969 >> Y así, lo que el mundo Hace años decidido es 747 00:34:39,969 --> 00:34:43,420 que cuando se quiere poner el cursor en una nueva línea de forma explícita, 748 00:34:43,420 --> 00:34:46,332 debe decir explícitamente nueva línea, la barra invertida n. 749 00:34:46,332 --> 00:34:48,040 Y hay alguna otra símbolos como esas. 750 00:34:48,040 --> 00:34:50,719 Pero por ahora sólo tendremos que centrarse en la barra invertida n. 751 00:34:50,719 --> 00:34:53,790 >> Ahora vamos a hacer el programa un poco más interesante. 752 00:34:53,790 --> 00:34:59,200 Voy a seguir adelante y esta vez a abrir un nuevo archivo. 753 00:34:59,200 --> 00:35:02,520 Voy a guardar esto como hola-1.c. 754 00:35:02,520 --> 00:35:05,540 Y sólo por diversión, me voy a ir lo puso en mi carpeta de Dropbox. 755 00:35:05,540 --> 00:35:09,030 >> Como verás en el CS50 documentación del aparato, 756 00:35:09,030 --> 00:35:11,210 finales de esta semana para el problema Set 1, nos animaremos 757 00:35:11,210 --> 00:35:13,230 utilizar Dropbox o algún servicio equivalente, 758 00:35:13,230 --> 00:35:15,430 porque entonces todo el código de va a ser una copia de seguridad automáticamente. 759 00:35:15,430 --> 00:35:17,830 Y por eso es que tengo entrado en esta carpeta aquí. 760 00:35:17,830 --> 00:35:20,230 >> Y ahora voy a escribir una ligeramente diferente programa. 761 00:35:20,230 --> 00:35:24,740 Incluya, I estándar / O.h, void main int. 762 00:35:24,740 --> 00:35:29,660 Y entonces aquí printf, hola mundo, que es exactamente el mismo que antes. 763 00:35:29,660 --> 00:35:32,450 >> Pero ahora quiero imprimir algo eso es un poco diferente. 764 00:35:32,450 --> 00:35:34,800 Quiero imprimir a cabo, decir: "Hola, David." 765 00:35:34,800 --> 00:35:37,590 Muy bien, así que obviamente, lo que debería de esperar 766 00:35:37,590 --> 00:35:40,360 ser el caso que si recompilar este programa, volver a ejecutarlo, 767 00:35:40,360 --> 00:35:41,840 que va a decir "hola, David." 768 00:35:41,840 --> 00:35:45,160 >> Pero lo que si quiero introducir este tipo de la variable, 769 00:35:45,160 --> 00:35:49,240 la noción de un contenedor que está pasando para almacenar D-a-v-i-d y no es difícil de código que 770 00:35:49,240 --> 00:35:50,600 en mi programa. 771 00:35:50,600 --> 00:35:53,430 Bueno, ¿y si me pongo hacer algo como esto? 772 00:35:53,430 --> 00:35:57,120 >> String s, por lo que esta es una variable. 773 00:35:57,120 --> 00:36:00,250 Si quieres una cadena, alias una palabra o una frase. 774 00:36:00,250 --> 00:36:03,485 Una secuencia de caracteres es lo que que en la programación llamamos una cadena. 775 00:36:03,485 --> 00:36:06,610 Sólo vamos a genéricamente llamada que s, porque es un nombre simple agradable. 776 00:36:06,610 --> 00:36:08,010 Pero yo podría llamarlo nada. 777 00:36:08,010 --> 00:36:12,920 >> Voy a decir iguales cadena s entre comillas, "David," punto y coma. 778 00:36:12,920 --> 00:36:18,330 Y ahora quiero insertar D-una-v-i-d en lo que yo soy la impresión. 779 00:36:18,330 --> 00:36:23,720 Y antes de que nos vimos un teaser en la pantalla de una sintaxis especial 780 00:36:23,720 --> 00:36:26,050 que nos permitió suplente en un valor. 781 00:36:26,050 --> 00:36:29,250 ¿Cuál fue el especial símbolo hace unas diapositivas? 782 00:36:29,250 --> 00:36:30,040 >> Así por ciento. 783 00:36:30,040 --> 00:36:33,830 En el momento que era ciento d para el número decimal. 784 00:36:33,830 --> 00:36:35,850 Eso realmente no son relevantes aquí. 785 00:36:35,850 --> 00:36:38,650 Resulta que hay otro símbolo de porcentaje, 786 00:36:38,650 --> 00:36:42,810 que es por ciento s, que significa para un marcador de posición para una cadena. 787 00:36:42,810 --> 00:36:49,350 >> Así que ahora, simplemente, estoy va a ir a hacer hola-1, 788 00:36:49,350 --> 00:36:54,210 porque este archivo se llama hola-1.c, y pulse Enter. 789 00:36:54,210 --> 00:36:56,230 Y la he cagado. 790 00:36:56,230 --> 00:36:57,394 Qué está pasando? 791 00:36:57,394 --> 00:37:00,560 Bueno, aquí es donde tenemos que empezar a Apreciamos que estamos en este comando 792 00:37:00,560 --> 00:37:02,810 entorno de línea, esta texto único entorno. 793 00:37:02,810 --> 00:37:06,114 No hay click en los iconos como carpetas en estos momentos. 794 00:37:06,114 --> 00:37:07,280 Y pensar de nuevo hace un momento. 795 00:37:07,280 --> 00:37:10,740 ¿En qué carpeta hizo que digo Lo estaba guardando mi código? 796 00:37:10,740 --> 00:37:11,657 Así que la carpeta de Dropbox. 797 00:37:11,657 --> 00:37:12,989 Podría haber sido llamado nada. 798 00:37:12,989 --> 00:37:14,530 Pero pasa a llamarse Dropbox. 799 00:37:14,530 --> 00:37:18,380 Así que de alguna manera tengo que hacer doble clic en esa carpeta Dropbox con el fin de conseguir 800 00:37:18,380 --> 00:37:21,657 en él y llegar a mi código llama hola-1.c. 801 00:37:21,657 --> 00:37:24,490 De hecho, déjame ir por delante y minimizar esta ventana sólo por un momento. 802 00:37:24,490 --> 00:37:27,560 Al igual que Windows y Mac OS, hay carpetas en Linux. 803 00:37:27,560 --> 00:37:29,410 Hay carpetas en el CS50 Appliance. 804 00:37:29,410 --> 00:37:32,380 Es sólo ahora estamos confinando nosotros mismos a este entorno de texto. 805 00:37:32,380 --> 00:37:34,700 >> Pero si hago doble clic en Dropbox, notará que hay 806 00:37:34,700 --> 00:37:37,210 es el archivo que quiero compilar. 807 00:37:37,210 --> 00:37:41,430 Pero yo necesito esto en blanco y negro ventana de terminal, por así decirlo. 808 00:37:41,430 --> 00:37:45,750 Pero necesito, por lo tanto, para mover en esa carpeta o directorio. 809 00:37:45,750 --> 00:37:48,290 Así que un poco arcano, pero Ya te acostumbrarás a esto también. 810 00:37:48,290 --> 00:37:50,430 >> En el mundo de Linux, que a su vez es el operativo 811 00:37:50,430 --> 00:37:54,860 sistema nos estamos quedando en el interior de la CS50 Appliance, hay un comando llamado CD. 812 00:37:54,860 --> 00:37:58,310 Lo que significa que puedo hacer CD, espacio, Dropbox. 813 00:37:58,310 --> 00:37:59,900 CD, cambio de directorio. 814 00:37:59,900 --> 00:38:00,400 Derecha. 815 00:38:00,400 --> 00:38:02,890 De vuelta en el día, cuando la gente estaba inventar las computadoras y operar 816 00:38:02,890 --> 00:38:05,806 sistemas como éste, que querían escriba las pulsaciones de teclado menor cantidad posible. 817 00:38:05,806 --> 00:38:08,760 Así que la forma más fácil de decir directorio de cambio era de CD. 818 00:38:08,760 --> 00:38:13,910 >> Así que si me golpeó CD, espacio Dropbox, cuenta de lo que ha cambiado aquí. 819 00:38:13,910 --> 00:38:16,480 Dentro de los paréntesis el aparato es una especie 820 00:38:16,480 --> 00:38:19,360 de seguirme la corriente y recordarme donde estoy. 821 00:38:19,360 --> 00:38:21,480 Así que la carpeta abierta es Dropbox. 822 00:38:21,480 --> 00:38:24,950 Si ahora escribo ls para lista, una vez más sucinta, 823 00:38:24,950 --> 00:38:27,540 porque la gente no quería escriba en su día l-i-s-t. 824 00:38:27,540 --> 00:38:29,300 Así que en lugar hicieron ls. 825 00:38:29,300 --> 00:38:30,110 >> Intro. 826 00:38:30,110 --> 00:38:35,740 Note que veo dos cosas, hola-1.c, y luego esta cosa críptica, 1m fuente. 827 00:38:35,740 --> 00:38:38,310 Esa es mi manera de decir código fuente de la semana 1 Lunes. 828 00:38:38,310 --> 00:38:42,020 Eso es una carpeta que descargué El sitio web de CS50 que hice el día de hoy 829 00:38:42,020 --> 00:38:43,990 y sólo hay que poner en el aparato de antemano. 830 00:38:43,990 --> 00:38:47,550 >> Pero por ahora lo único que importa es hacer este programa. 831 00:38:47,550 --> 00:38:50,440 Así que cuando escribo hacen hola-1, Enter. 832 00:38:50,440 --> 00:38:51,320 Maldita sea. 833 00:38:51,320 --> 00:38:53,060 Algo salió mal. 834 00:38:53,060 --> 00:38:54,580 Así que vamos a burlan de esta separación. 835 00:38:54,580 --> 00:38:58,489 Y, por desgracia esto es donde las cosas ser un poco estresante al principio, 836 00:38:58,489 --> 00:39:00,280 por lo menos si usted tiene nunca programada antes. 837 00:39:00,280 --> 00:39:00,980 >> Dios mío. 838 00:39:00,980 --> 00:39:04,990 Escribí un programa de dos líneas y Tengo cuatro líneas de errores. 839 00:39:04,990 --> 00:39:07,180 Entonces, ¿qué está pasando aquí. 840 00:39:07,180 --> 00:39:11,370 Primero y ante todo siempre desplazarse hacia atrás y encontrar el primer mensaje de error, 841 00:39:11,370 --> 00:39:15,730 porque muchas veces compiladores sólo confundirse por lo que tú y yo lo hacemos. 842 00:39:15,730 --> 00:39:17,000 Los compiladores son bastante tonto. 843 00:39:17,000 --> 00:39:18,360 Ellos sólo hacen lo usted les dice que hacer. 844 00:39:18,360 --> 00:39:21,484 Y si se les confunde, son sólo va a lanzar tipo de sus manos 845 00:39:21,484 --> 00:39:25,010 y tal vez lanzar más mensajes de error que son realmente relevantes. 846 00:39:25,010 --> 00:39:26,380 >> Así que echemos un vistazo a la primera. 847 00:39:26,380 --> 00:39:27,540 Súper críptica al principio. 848 00:39:27,540 --> 00:39:31,050 Pero aviso, aquí está el nombre de la archivo en el que me metió la pata al parecer. 849 00:39:31,050 --> 00:39:36,570 Colon 5, colon 5 sólo significa el la línea 5 en el quinto carácter. 850 00:39:36,570 --> 00:39:39,760 Así quinta columna de caracteres, si se quiere, de error. 851 00:39:39,760 --> 00:39:41,870 El uso de cadena de identificador no declarado. 852 00:39:41,870 --> 00:39:43,120 ¿Quiere norma n? 853 00:39:43,120 --> 00:39:44,850 >> No, me refería a la cadena. 854 00:39:44,850 --> 00:39:47,640 Y entonces es el tipo de copiar y pegar 855 00:39:47,640 --> 00:39:50,700 lo que he escrito para realmente sacar mi atención a donde metí la pata. 856 00:39:50,700 --> 00:39:54,260 Así que por alguna razón C, o al menos el compilador 857 00:39:54,260 --> 00:39:56,470 no entiende la cadena de palabras. 858 00:39:56,470 --> 00:39:57,890 Y eso es porque nos lo inventamos. 859 00:39:57,890 --> 00:40:01,440 Así cadena no existe en C. ¿Qué hace CS50, 860 00:40:01,440 --> 00:40:03,380 durante las primeras semanas sólo de la clase, 861 00:40:03,380 --> 00:40:05,700 está proporcionamos algún tipo de formación ruedas, por así decirlo. 862 00:40:05,700 --> 00:40:11,160 Y ponemos estas ruedas de entrenamiento dentro de un archivo especial llamado CS50.h. 863 00:40:11,160 --> 00:40:14,970 >> Así que este es el segundo de dos archivos nombres que aparentemente terminan en punto h. 864 00:40:14,970 --> 00:40:16,300 Vamos a rebobinar. 865 00:40:16,300 --> 00:40:19,360 Printf es una declaración o función que aparentemente imprime algo 866 00:40:19,360 --> 00:40:20,580 a la pantalla. 867 00:40:20,580 --> 00:40:23,470 Pero usted no me vio implementar printf, derecha. 868 00:40:23,470 --> 00:40:26,360 Hace años alguien implementadas printf. 869 00:40:26,360 --> 00:40:30,420 ¿En qué archivo quieres apostar que o ella puso la implementación 870 00:40:30,420 --> 00:40:34,270 para printf, el código para printf? 871 00:40:34,270 --> 00:40:36,860 >> En un archivo llamado estándar de E / O.h. 872 00:40:36,860 --> 00:40:39,930 De hecho, es probable que en dos archivos, I estándar / O.h, 873 00:40:39,930 --> 00:40:42,650 que es sinónimo de cabecera archivo, y yo estándar / O.c, 874 00:40:42,650 --> 00:40:44,060 que significa el código fuente C. 875 00:40:44,060 --> 00:40:48,220 Así que hace él o ella algunos años plopped el código que ellos escribieron en ese archivo 876 00:40:48,220 --> 00:40:51,240 para que la gente como nosotros años más tarde pueden incluirlo, 877 00:40:51,240 --> 00:40:53,040 por así decirlo, en nuestros propios programas. 878 00:40:53,040 --> 00:40:56,320 >> Y de hecho, eso es lo que el signo de libra seguido de la palabra incluyen lo hace. 879 00:40:56,320 --> 00:41:00,250 Se ve en el disco duro local, encuentra el archivo llamado estándar de E / O.h, 880 00:41:00,250 --> 00:41:03,840 y luego copia eficazmente y lo pega en el interior de mi propio archivo. 881 00:41:03,840 --> 00:41:07,210 Así que ahora mi programa sabe cómo imprimir a la pantalla. 882 00:41:07,210 --> 00:41:11,120 >> Así que por esa lógica, donde se define la cadena? 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 Y de hecho, eso es lo que nosotros, el personal de base, habría hecho. 886 00:41:15,540 --> 00:41:19,590 Hemos inventado unos tipos de datos, por así decirlo, como una cadena, 887 00:41:19,590 --> 00:41:22,370 además de los que obtener de forma gratuita, como un int. 888 00:41:22,370 --> 00:41:26,010 Y vamos a ver a otros como un char para un carácter y unos cuantos más. 889 00:41:26,010 --> 00:41:30,670 En el interior de CS50.h es aparentemente al menos alguna mención de cadena. 890 00:41:30,670 --> 00:41:34,980 >> Así que ahora me dejes ir por delante y vuelva a ejecutar make hola-1. 891 00:41:34,980 --> 00:41:37,100 Voy a acercar un nuevo y cruzo los dedos. 892 00:41:37,100 --> 00:41:41,370 Ahora por haber hecho una cambiar Fijé la mayoría de las cosas. 893 00:41:41,370 --> 00:41:42,100 Pero maldita sea. 894 00:41:42,100 --> 00:41:44,290 Más porcentajes que los argumentos de datos. 895 00:41:44,290 --> 00:41:45,980 ¿Qué hice mal esta vez? 896 00:41:45,980 --> 00:41:47,420 >> Así que aún así es bastante críptico. 897 00:41:47,420 --> 00:41:51,560 Pero este error está en la línea 7 y el carácter 21. 898 00:41:51,560 --> 00:41:53,880 Así que vamos a mirar hacia arriba aquí. 899 00:41:53,880 --> 00:41:55,350 Es un poco sutil. 900 00:41:55,350 --> 00:41:59,167 Pero si usted piensa acerca de lo que las ideas fundamentales de aquí son, 901 00:41:59,167 --> 00:42:00,500 tal vez podamos bromear esto aparte. 902 00:42:00,500 --> 00:42:02,300 >> Así printf es el nombre de la función. 903 00:42:02,300 --> 00:42:04,960 Los paréntesis, hasta el momento, es al igual que lo que ponemos en todo 904 00:42:04,960 --> 00:42:07,005 las cosas que estamos pasando como entradas a una función. 905 00:42:07,005 --> 00:42:08,921 Muy bien, sólo un convención humana arbitraria. 906 00:42:08,921 --> 00:42:09,919 Utilice paréntesis. 907 00:42:09,919 --> 00:42:12,460 Dentro de esos paréntesis hemos estado poniendo comillas dobles, 908 00:42:12,460 --> 00:42:14,810 y luego una cadena como "hola mundo". 909 00:42:14,810 --> 00:42:18,160 >> Pero muy en ese ejemplo anterior brevemente hizo miramos con arañazos. 910 00:42:18,160 --> 00:42:22,590 Y tuvimos el porcentaje d, ¿qué otra cosa estaba dentro de los paréntesis 911 00:42:22,590 --> 00:42:23,730 que llamé a cabo verbalmente? 912 00:42:23,730 --> 00:42:24,230 Sí. 913 00:42:24,230 --> 00:42:28,166 >> AUDIENCIA: Así que es lo que está tomando [Inaudible] en el plazo de [inaudible] 914 00:42:28,166 --> 00:42:30,200 qué es esto [inaudible]? 915 00:42:30,200 --> 00:42:31,200 DAVID J. MALAN: Exactamente. 916 00:42:31,200 --> 00:42:32,700 Así que tuvimos el porcentaje d. 917 00:42:32,700 --> 00:42:36,620 Pero luego tuvimos cerca cita, coma, mostrador. 918 00:42:36,620 --> 00:42:37,120 Derecha. 919 00:42:37,120 --> 00:42:40,680 Nosotros especificamos lo que queremos para hacer lo que el marcador de posición. 920 00:42:40,680 --> 00:42:44,621 Así que lo que voy a hacer aquí es coma, ¿qué quieres que me ponga? 921 00:42:44,621 --> 00:42:45,120 AUDIENCIA: S. 922 00:42:45,120 --> 00:42:46,828 DAVID J. MALAN: S, s porque en este caso 923 00:42:46,828 --> 00:42:48,700 es el nombre del contenedor de almacenamiento. 924 00:42:48,700 --> 00:42:50,180 Es el nombre de ese recipiente de vidrio. 925 00:42:50,180 --> 00:42:53,610 Mientras que antes era contador en que ejemplo simple rasguño mirábamos. 926 00:42:53,610 --> 00:42:56,630 Así que ahora, habiendo realizado dos cambios, me dejaron el zoom 927 00:42:56,630 --> 00:42:59,800 y tratar una vez más para compilar este programa. 928 00:42:59,800 --> 00:43:01,596 >> Ahora veo que la línea críptica. 929 00:43:01,596 --> 00:43:03,470 Pero eso es en realidad el nombre del compilador. 930 00:43:03,470 --> 00:43:04,886 Clang es el nombre del compilador. 931 00:43:04,886 --> 00:43:07,100 Hacer que se me acaba de salvar el dolor de cabeza de vez 932 00:43:07,100 --> 00:43:09,830 escribir ese comando largo loco fuera. 933 00:43:09,830 --> 00:43:14,900 Así que ahora si me dot slash hola-1, Debería ver "hola, David." 934 00:43:14,900 --> 00:43:16,450 >> Bastante decepcionante, sin embargo, ¿no? 935 00:43:16,450 --> 00:43:18,158 Podríamos haber hecho esto mucho más simple 936 00:43:18,158 --> 00:43:20,940 sin hablar de las variables y CS50.h y todo eso. 937 00:43:20,940 --> 00:43:23,080 Así que vamos a hacer que un poco más interesante. 938 00:43:23,080 --> 00:43:31,010 >> Además de CS50.h, tener cosas como cuerdas 939 00:43:31,010 --> 00:43:34,550 declarada, la biblioteca CS50 también tiene algunas funciones. 940 00:43:34,550 --> 00:43:38,520 Así que hace como año, alguien escribió printf y lo puso en el estándar de E / O.h 941 00:43:38,520 --> 00:43:39,530 y algún otro archivo. 942 00:43:39,530 --> 00:43:44,010 >> Nosotros, el personal CS50, escribimos una función llamado GetChar, GetDouble GetFloat, 943 00:43:44,010 --> 00:43:47,610 GetInt, GetLongLong, GetString, y ponemos los que están dentro de un archivo 944 00:43:47,610 --> 00:43:49,890 llamado CS50.h y CS50.c. 945 00:43:49,890 --> 00:43:51,880 Y los ponemos dentro del CS50 Appliance. 946 00:43:51,880 --> 00:43:53,880 Y la gente también puede descargarlos en línea si 947 00:43:53,880 --> 00:43:55,880 quieren ponerlos en su ordenadores propios también. 948 00:43:55,880 --> 00:44:00,880 Lo que equivale a decir que hemos creado funciones que consiguen la entrada del usuario. 949 00:44:00,880 --> 00:44:02,930 No sé lo que todo de estos tipos de datos son. 950 00:44:02,930 --> 00:44:06,490 GetInt es algo sencillo, como obtener un número entero de alguna manera al usuario. 951 00:44:06,490 --> 00:44:09,980 Y GetString es probablemente como get una palabra o una frase del usuario. 952 00:44:09,980 --> 00:44:11,770 >> Así que vamos a centrarnos en eso. 953 00:44:11,770 --> 00:44:14,710 Y me voy a ir de nuevo en el aparato y voy a seguir adelante 954 00:44:14,710 --> 00:44:20,790 y guarde este archivo como, vamos a llamar a que hola-2.c como mi segunda versión. 955 00:44:20,790 --> 00:44:23,030 Y vamos a hacer un par de cambios. 956 00:44:23,030 --> 00:44:25,800 >> Esta vez en lugar de David codificación duro, que 957 00:44:25,800 --> 00:44:29,120 hace un increíblemente consistente pero el programa lo esperado, 958 00:44:29,120 --> 00:44:32,640 ¿y si en lugar de hacer GetString? 959 00:44:32,640 --> 00:44:35,660 Ahora note GetString tiene un paréntesis de apertura, 960 00:44:35,660 --> 00:44:38,500 paréntesis cerrado, porque no necesita ninguna entrada. 961 00:44:38,500 --> 00:44:40,850 Sólo va a ir a buscar una cadena del usuario. 962 00:44:40,850 --> 00:44:42,460 >> Y ahora unas palabras sobre otra sintaxis. 963 00:44:42,460 --> 00:44:45,439 Punto y coma acaba de terminar una línea de código. 964 00:44:45,439 --> 00:44:46,730 No es necesario en todas partes. 965 00:44:46,730 --> 00:44:48,896 Pero eso sólo significa que estoy hecho con esta línea de código. 966 00:44:48,896 --> 00:44:51,080 Pasemos a otro declaración o función. 967 00:44:51,080 --> 00:44:53,010 Cadena declara una variable. 968 00:44:53,010 --> 00:44:55,920 La cadena es como decir dame un tazón, por favor. 969 00:44:55,920 --> 00:44:57,940 Y déjame poner una cadena en el mismo. 970 00:44:57,940 --> 00:44:59,430 >> Y ahora el signo igual. 971 00:44:59,430 --> 00:45:03,510 ¿Cuál es el 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: Sí, la asignación de un valor. 974 00:45:06,190 --> 00:45:09,872 Así que si, por ejemplo, la llamada GetString esta función, 975 00:45:09,872 --> 00:45:12,830 y vamos a ver en un momento que es va a solicitar al usuario una cadena. 976 00:45:12,830 --> 00:45:17,810 Esto es como dejarme luego escribo D-una-v-i-d en un pedazo de papel. 977 00:45:17,810 --> 00:45:21,060 Y cuando digo cadena s es igual a GetString, 978 00:45:21,060 --> 00:45:24,140 igual no significa realmente igualdad en la programación C. 979 00:45:24,140 --> 00:45:27,880 Esto significa asignar desde la derecha lado de la mano izquierda. 980 00:45:27,880 --> 00:45:29,510 >> Así que me he metido una cadena. 981 00:45:29,510 --> 00:45:32,785 Y el signo de igualdad que significa poner en el almacenamiento de contenedores llama s. 982 00:45:32,785 --> 00:45:36,730 Y entonces pasar esto a printf hacer realidad su cosa. 983 00:45:36,730 --> 00:45:39,790 >> Así, el resultado final, entonces se va a mirar un poco diferente. 984 00:45:39,790 --> 00:45:40,840 Hagámoslo hacen hola-2. 985 00:45:40,840 --> 00:45:43,940 986 00:45:43,940 --> 00:45:45,260 O bien podría funcionar. 987 00:45:45,260 --> 00:45:46,450 Usted está siguiendo a lo largo. 988 00:45:46,450 --> 00:45:47,940 Haz hola-2 funcionó. 989 00:45:47,940 --> 00:45:52,640 Dot slash hola-2, Enter. 990 00:45:52,640 --> 00:45:54,620 >> Parece que tengo un infinito bucle o algo. 991 00:45:54,620 --> 00:45:55,453 Nada está sucediendo. 992 00:45:55,453 --> 00:45:56,134 ¿Por qué? 993 00:45:56,134 --> 00:45:57,805 >> AUDIENCIA: Está haciendo un bucle infinito. 994 00:45:57,805 --> 00:45:59,430 DAVID J. MALAN: Es un bucle infinito. 995 00:45:59,430 --> 00:46:02,710 Es un poco esperando a que yo realmente dotarla de alguna entrada. 996 00:46:02,710 --> 00:46:05,800 Así que déjame ir adelante y escribo en David, y pulse Enter. 997 00:46:05,800 --> 00:46:07,230 Y ahora se dice "hola, David." 998 00:46:07,230 --> 00:46:09,040 Si me quedo de nuevo. 999 00:46:09,040 --> 00:46:11,530 Escribamos en Rob, "hola, Rob." 1000 00:46:11,530 --> 00:46:13,900 >> Ahora bien, este es el peor interfaz de usuario cada vez. 1001 00:46:13,900 --> 00:46:16,110 El usuario es aparentemente supuesto saber qué hacer. 1002 00:46:16,110 --> 00:46:17,120 Pero no importa. 1003 00:46:17,120 --> 00:46:19,570 El uso de estos mismo edificio bloques al igual que en Scratch, 1004 00:46:19,570 --> 00:46:24,980 podemos resolver ese problema y decir algo así como su nombre, por favor, colon, 1005 00:46:24,980 --> 00:46:27,820 espacio, cerrado cita, cerca paréntesis, coma. 1006 00:46:27,820 --> 00:46:30,680 Así que un montón de nuevo estupidez con la sintaxis. 1007 00:46:30,680 --> 00:46:34,040 >> Pero noto Acabo de añadir un pieza del rompecabezas encima de ésta 1008 00:46:34,040 --> 00:46:35,280 y por encima de éste. 1009 00:46:35,280 --> 00:46:38,870 Así que ahora si me vuelva a ejecutar esto, hola-2, Enter. 1010 00:46:38,870 --> 00:46:41,180 Espera un minuto. 1011 00:46:41,180 --> 00:46:41,830 Lo que pasa / lo que está mal? 1012 00:46:41,830 --> 00:46:43,570 No se comporta de manera diferente. 1013 00:46:43,570 --> 00:46:44,200 Sí. 1014 00:46:44,200 --> 00:46:46,010 >> AUDIENCIA: Usted no hiciera make de nuevo. 1015 00:46:46,010 --> 00:46:47,968 >> DAVID J. MALAN: no lo hice ejecutar make nuevamente, derecha. 1016 00:46:47,968 --> 00:46:49,430 Así que he cambiado de código fuente. 1017 00:46:49,430 --> 00:46:50,638 Pero de nuevo, no hay ese flujo. 1018 00:46:50,638 --> 00:46:54,530 El código fuente a través del compilador da Eres nuevo código objeto o 0s y 1s. 1019 00:46:54,530 --> 00:47:00,209 Así que tengo que realmente make reestreno hola-2 Intro. 1020 00:47:00,209 --> 00:47:01,750 Bien, algo que parece haber sucedido. 1021 00:47:01,750 --> 00:47:04,220 Dot slash hola-2. 1022 00:47:04,220 --> 00:47:05,390 Su nombre, por favor. 1023 00:47:05,390 --> 00:47:09,990 Y para ser claro ahora, ¿por qué es el cursor en la misma línea? 1024 00:47:09,990 --> 00:47:10,490 Exactamente. 1025 00:47:10,490 --> 00:47:13,020 No puse la barra invertida n hasta aquí en mi código. 1026 00:47:13,020 --> 00:47:16,110 Así que ahora puedo escribir algo así como Daven, Enter. 1027 00:47:16,110 --> 00:47:18,710 Puedo correr de nuevo y escriba algo así como Gabe, Enter, 1028 00:47:18,710 --> 00:47:22,250 y tenemos un programa diferente una y otra vez y otra vez. 1029 00:47:22,250 --> 00:47:28,940 >> Ahora en última instancia, vamos a necesitar utilizar unos pocos capacidades diferentes. 1030 00:47:28,940 --> 00:47:32,860 Hay que introducir en última instancia alguna condiciones que se pueden hacer las cosas de forma condicional. 1031 00:47:32,860 --> 00:47:35,550 Quizás bucles para que podamos hacer cosas una y otra vez. 1032 00:47:35,550 --> 00:47:38,220 >> Tal vez sería bueno si nos podría implementar nuestras propias funciones, 1033 00:47:38,220 --> 00:47:41,355 como si pudiéramos implementar nuestra propia printf o nuestra propia versión de GetString 1034 00:47:41,355 --> 00:47:45,870 y GetFlow, porque en última instancia, incluso utilizando este entorno de línea de comandos 1035 00:47:45,870 --> 00:47:49,780 podemos hacer incluso el más visualmente interesante de las cosas. 1036 00:47:49,780 --> 00:47:51,950 >> De hecho, en conclusión déjame hacer esto. 1037 00:47:51,950 --> 00:47:54,020 Voy a seguir adelante y cerrar estas ventanas 1038 00:47:54,020 --> 00:47:57,400 y abrir este icono aquí, que es sólo una más grande 1039 00:47:57,400 --> 00:48:00,020 versión de que incrusta ventana de terminal. 1040 00:48:00,020 --> 00:48:02,329 Así Gedit tiene no sólo el lugar de mi código, 1041 00:48:02,329 --> 00:48:05,620 sino también construido en la ventana de terminal, la ventana en blanco y negro donde puedo correr 1042 00:48:05,620 --> 00:48:06,230 los comandos. 1043 00:48:06,230 --> 00:48:08,600 >> Me acaba de pasar para abrir una versión más grande de esta. 1044 00:48:08,600 --> 00:48:11,170 Y ahora voy a entrar en la carpeta que ya he 1045 00:48:11,170 --> 00:48:13,150 poner por adelantado en la página web del curso. 1046 00:48:13,150 --> 00:48:16,720 Y yo voy a seguir adelante y abrir un archivo llamado thadgavin.c, 1047 00:48:16,720 --> 00:48:18,710 que fue escrito por otra persona. 1048 00:48:18,710 --> 00:48:21,220 >> Y si nos fijamos en esto, este no es el tipo de código 1049 00:48:21,220 --> 00:48:24,370 vamos a estar escribiendo desde el objetivo de este código 1050 00:48:24,370 --> 00:48:28,450 era escribir la más bonita mirando código que él o ella podría, 1051 00:48:28,450 --> 00:48:31,290 independientemente de si o no otro ser humano jamás podría 1052 00:48:31,290 --> 00:48:33,660 entender el código. 1053 00:48:33,660 --> 00:48:37,050 >> De hecho, cada año hay es lo que hay llamado un concurso ofuscado C, que 1054 00:48:37,050 --> 00:48:39,570 es para los frikis reales que escriben código que nadie más puede leer, 1055 00:48:39,570 --> 00:48:42,050 sino que hace algo bien realmente simple o realmente increíble. 1056 00:48:42,050 --> 00:48:43,890 Y pensamos que sería mejor concluir con este look 1057 00:48:43,890 --> 00:48:48,300 en algo que es bastante increíble que podría haber visto una vez antes. 1058 00:48:48,300 --> 00:48:52,650 Pero vamos a terminar en este nota, slash dot, thadgavin. 1059 00:48:52,650 --> 00:48:53,860 Esta es, entonces, lo que le espera. 1060 00:48:53,860 --> 00:48:57,140 1061 00:48:57,140 --> 00:48:58,500 >> Eso es todo por CS50. 1062 00:48:58,500 --> 00:48:59,935 Nos vemos el miércoles. 1063 00:48:59,935 --> 00:49:04,284 1064 00:49:04,284 --> 00:49:10,016 >> [REPRODUCCIÓN DE MÚSICA] 1065 00:49:10,016 --> 00:53:31,883