1 00:00:00,000 --> 00:00:11,736 2 00:00:11,736 --> 00:00:16,626 >> [REPRODUCCIÓN DE VÍDEO] 3 00:00:16,626 --> 00:00:19,410 >> -A Triunfo de matemática y habilidad mecánica 4 00:00:19,410 --> 00:00:23,270 es esta gran nueva automática calculadora de la Universidad de Harvard. 5 00:00:23,270 --> 00:00:27,140 Un complejo entramado de problemas en matemáticas puesto a través de la máquina en forma codificada 6 00:00:27,140 --> 00:00:31,710 en la cinta se resuelven con precisión en un diminuta fracción del tiempo requerido 7 00:00:31,710 --> 00:00:32,819 para el cálculo humano. 8 00:00:32,819 --> 00:00:44,280 9 00:00:44,280 --> 00:00:48,220 Diseñado para agilizar todas las formas de la investigación matemática y científica, 10 00:00:48,220 --> 00:00:53,840 el cerebro mecánico gigante va a trabajar para la Marina de los Estados Unidos hasta el final de la guerra. 11 00:00:53,840 --> 00:01:03,620 12 00:01:03,620 --> 00:01:06,570 >> [FIN DE REPRODUCCIÓN] 13 00:01:06,570 --> 00:01:08,590 >> DAVID J. MALAN: Esta, es CS50. 14 00:01:08,590 --> 00:01:10,590 El pasado fue un mágico lugar, pero si alguna vez has 15 00:01:10,590 --> 00:01:13,366 preguntó qué ese dispositivo es en Harvard Science Center, 16 00:01:13,366 --> 00:01:16,150 es de hecho parte de la Harvard Mark I, y es 17 00:01:16,150 --> 00:01:18,710 en exhibición en la actualidad durante los últimos años. 18 00:01:18,710 --> 00:01:20,590 Y lo que verás incrustado en conjunto de problemas 19 00:01:20,590 --> 00:01:24,416 uno es una mirada detrás de las escenas a lo que hizo ese dispositivo, y lo hace, 20 00:01:24,416 --> 00:01:27,540 del profesor Harry Lewis, quien se encuentra en el departamento de ciencias de la computación aquí. 21 00:01:27,540 --> 00:01:29,440 Así que más en que en sólo un poco. 22 00:01:29,440 --> 00:01:33,990 >> Pero hoy empezamos a transición desde la semana pasada a esta, 23 00:01:33,990 --> 00:01:37,290 y vamos a traer mención de una fotografía aquí 24 00:01:37,290 --> 00:01:38,630 que en realidad es bastante famoso. 25 00:01:38,630 --> 00:01:42,270 ¿Alguien sabe lo que esto aquí está en la pantalla? 26 00:01:42,270 --> 00:01:43,880 Al menos según el mito. 27 00:01:43,880 --> 00:01:44,837 Sí. 28 00:01:44,837 --> 00:01:45,920 AUDIENCIA: El primer virus. 29 00:01:45,920 --> 00:01:49,570 DAVID J. MALAN: Así que fue supuestamente el primer fallo real en un ordenador. 30 00:01:49,570 --> 00:01:52,490 Ahora bien, en la realidad la palabra bicho, por un error en un programa, 31 00:01:52,490 --> 00:01:55,250 ha estado con nosotros desde hace algún tiempo en el mundo físico, 32 00:01:55,250 --> 00:01:58,190 y este fue uno de los primeros tiempos documentados donde alguien realmente 33 00:01:58,190 --> 00:02:02,280 arrancó una gran polilla de la Marca Computadora II, lo puso en el ligante, 34 00:02:02,280 --> 00:02:05,006 y luego lo grabó como el primer error conocido 35 00:02:05,006 --> 00:02:06,630 en realidad se han encontrado físicamente. 36 00:02:06,630 --> 00:02:10,104 Así que por lo tanto fue introducida que en la tradición de hoy. 37 00:02:10,104 --> 00:02:12,020 Todo, desde la última semana está disponible en línea. 38 00:02:12,020 --> 00:02:14,840 En particular, los recursos que usted puede ser no necesariamente notar, especialmente 39 00:02:14,840 --> 00:02:15,881 si viene aquí en persona. 40 00:02:15,881 --> 00:02:20,230 Así que uno de los becarios de enseñanza cada años hace que un conjunto canónico de notas, 41 00:02:20,230 --> 00:02:22,010 por lo que no es necesario mantener la cabeza hacia abajo, tratando 42 00:02:22,010 --> 00:02:24,410 transcribir casi cualquier cosa eso podría suceder aquí en clase. 43 00:02:24,410 --> 00:02:25,940 Así que darse cuenta de que aquellos llamado [? Scribd?] Notas 44 00:02:25,940 --> 00:02:29,350 están en línea, sin duda las diapositivas y código fuente que usamos en clase. 45 00:02:29,350 --> 00:02:31,436 Hacemos transcripciones de texto completo disponibles también. 46 00:02:31,436 --> 00:02:34,310 Así que si usted recuerda vagamente algunos plazo, y quieren mirar hacia arriba un poco 47 00:02:34,310 --> 00:02:37,280 más fácilmente, se dan cuenta de que todo de que se puede buscar en línea. 48 00:02:37,280 --> 00:02:38,930 Además de tutoriales también. 49 00:02:38,930 --> 00:02:42,710 De hecho, hoy comenzamos a mirar un lenguaje de programación de nivel inferior, 50 00:02:42,710 --> 00:02:45,290 que pronto será conocido por nosotros como C, y es muy fácil 51 00:02:45,290 --> 00:02:48,820 al tipo de perderse después de sólo unos pocos tiempo de momentos, y luego una especie de maravilla 52 00:02:48,820 --> 00:02:52,370 cómo en realidad nos dieron a algunos más ejemplo complejo desde el más simple. 53 00:02:52,370 --> 00:02:54,975 Y así vamos a darnos cuenta de la cereza recoger durante la clase algunos 54 00:02:54,975 --> 00:02:57,850 de los ejemplos representativos, pero dan cuenta de que mucho más es también 55 00:02:57,850 --> 00:03:01,140 disponible en línea para que pueda trabajar a través de él a su propio ritmo, 56 00:03:01,140 --> 00:03:02,950 sin embargo, usted está más cómodo. 57 00:03:02,950 --> 00:03:05,200 >> Pero lo dejamos con programas que eran sólo eso. 58 00:03:05,200 --> 00:03:09,690 Así que hago clic en la bandera verde, y qué hace este programa? 59 00:03:09,690 --> 00:03:10,710 Dice, hola, mundo. 60 00:03:10,710 --> 00:03:13,180 Esto hace que el gato decir hola en su pequeño mundo 61 00:03:13,180 --> 00:03:15,990 en la parte superior izquierda de interfaz de usuario de Scratch. 62 00:03:15,990 --> 00:03:18,810 Pero empezamos a introducir alguna terminología semana pasada. 63 00:03:18,810 --> 00:03:23,614 Y así, este tipo de cosas nos llaman y qué? 64 00:03:23,614 --> 00:03:25,280 ¿Cuál podría ser el término genérico para esto? 65 00:03:25,280 --> 00:03:26,266 Sí. 66 00:03:26,266 --> 00:03:28,210 Un método o una declaración. 67 00:03:28,210 --> 00:03:29,280 Claro, es una acción. 68 00:03:29,280 --> 00:03:30,140 Hacer esto. 69 00:03:30,140 --> 00:03:32,400 Y sin embargo, había otras formas a cero, 70 00:03:32,400 --> 00:03:35,360 además de estos llamados declaración, que eran también 71 00:03:35,360 --> 00:03:38,221 cosas como esta, que llamamos qué? 72 00:03:38,221 --> 00:03:38,720 Sí. 73 00:03:38,720 --> 00:03:39,634 Por lo tanto un bucle. 74 00:03:39,634 --> 00:03:42,050 Y en este caso, esta cosa repeticiones, obviamente, 10 veces. 75 00:03:42,050 --> 00:03:43,040 Hay un bloque de siempre. 76 00:03:43,040 --> 00:03:44,164 Hay un par de los demás. 77 00:03:44,164 --> 00:03:48,309 Y hoy vamos a ver la forma de traducir esto a un mundo más moderno, 78 00:03:48,309 --> 00:03:50,850 si se quiere, aunque es va a parecer a primera vista 79 00:03:50,850 --> 00:03:52,024 ser mucho más arcano. 80 00:03:52,024 --> 00:03:53,190 Pero esos eran de hecho los bucles. 81 00:03:53,190 --> 00:03:56,182 Y luego tenemos cosas como esto, que tenía esta forma, 82 00:03:56,182 --> 00:03:57,515 y esencialmente preguntas. 83 00:03:57,515 --> 00:03:58,890 Y nos referimos a estos como qué? 84 00:03:58,890 --> 00:03:59,762 >> AUDIENCIA: expresión booleana. 85 00:03:59,762 --> 00:04:00,320 >> DAVID J. MALAN: Sí. 86 00:04:00,320 --> 00:04:01,340 Expresión booleana. 87 00:04:01,340 --> 00:04:04,502 Algo que es verdadero o falso, sí o no, uno o cero, 88 00:04:04,502 --> 00:04:05,960 sin embargo usted desea ver el mundo. 89 00:04:05,960 --> 00:04:08,335 Pero llamamos los booleana expresiones, y les enchufe 90 00:04:08,335 --> 00:04:09,900 en condiciones, o ramas. 91 00:04:09,900 --> 00:04:12,170 Y en el mundo de Scratch, todo muy bien 92 00:04:12,170 --> 00:04:15,460 enclavamientos en cuanto a su forma, si tiene sentido lógico para hacerlo, 93 00:04:15,460 --> 00:04:18,490 pero usted no tiene que parar en solo haciendo una cosa condicionalmente, 94 00:04:18,490 --> 00:04:20,450 usted puede tener una proverbial bifurcación en el camino 95 00:04:20,450 --> 00:04:24,040 y hacer esto o que si la condición es verdadera o no. 96 00:04:24,040 --> 00:04:26,040 Y entonces, como se verá, si usted no lo ha hecho, 97 00:04:26,040 --> 00:04:27,480 Usted puede incluso anidan estos bloques. 98 00:04:27,480 --> 00:04:32,110 Así arañazos crece para llenar las formas que es posible que desee insertar en él, 99 00:04:32,110 --> 00:04:35,330 por lo que en realidad se puede expresar más cualquier lógica de que es posible que desee hacer. 100 00:04:35,330 --> 00:04:38,220 >> Ahora unas palabras de anuncio por tanto aquí como en New Haven. 101 00:04:38,220 --> 00:04:39,370 Así seccionamiento comienza hoy. 102 00:04:39,370 --> 00:04:42,120 La dirección de esta se encuentra en el curso de sitio web, para quienes no están familiarizados. 103 00:04:42,120 --> 00:04:43,970 Secciones serán un oportunidad de reunirse 104 00:04:43,970 --> 00:04:46,553 en un ambiente mucho más íntimo que no sea [? Sanders?] Permite, 105 00:04:46,553 --> 00:04:50,347 con 10 a 20 compañeros de clase con una enseñanza compañero en diferentes pistas, 106 00:04:50,347 --> 00:04:51,930 y ritmos diferentes, si así lo desean. 107 00:04:51,930 --> 00:04:54,080 De hecho las ofertas de cursos diferentes secciones 108 00:04:54,080 --> 00:04:57,340 para los menos cómodo, más cómodo, y en algún punto intermedio, 109 00:04:57,340 --> 00:04:59,860 y el papel de oro aquí, es no hay una definición formal, 110 00:04:59,860 --> 00:05:04,600 pero si usted es menos cómodo, que tipo de darte cuenta. 111 00:05:04,600 --> 00:05:07,470 Estás un poco intrépido sobre la idea de poner un pie, tal vez, de vuelta 112 00:05:07,470 --> 00:05:10,130 en el aula, o mostrar hasta una de entre la sección. 113 00:05:10,130 --> 00:05:12,770 Si has estado en la programación ya que fueron seis años de edad, más cómodo, 114 00:05:12,770 --> 00:05:13,400 tal vez para usted. 115 00:05:13,400 --> 00:05:16,150 Y si se trata de una especie de cara o cruz, eso es exactamente lo que el intermedio 116 00:05:16,150 --> 00:05:17,190 está destinado a ser. 117 00:05:17,190 --> 00:05:18,410 >> Ahora, en el ínterin, para una clase de este tamaño, 118 00:05:18,410 --> 00:05:21,326 nos lleva bastante tiempo a la sección todos, por lo que hemos llamados, 119 00:05:21,326 --> 00:05:24,030 secciones súper, que hasta este fin de semana y principios de la próxima semana, 120 00:05:24,030 --> 00:05:26,570 así que échale un vistazo a la página web del curso para aquellos que son por supuesto de ancho, 121 00:05:26,570 --> 00:05:28,610 y también filmó para aquellos que no puede hacerlos. 122 00:05:28,610 --> 00:05:33,470 Y secciones mismos comenzarán en la semana tres de CS50 índice cero. 123 00:05:33,470 --> 00:05:35,880 CONJUNTO DE PROBLEMAS 0 ya está en la página web del curso. 124 00:05:35,880 --> 00:05:40,010 Y darse cuenta de que usted tiene nueve días finales de este semestre. 125 00:05:40,010 --> 00:05:43,240 Así que esta es una actualización de la última años, cuando teníamos cinco días de retraso. 126 00:05:43,240 --> 00:05:46,210 >> Así que si usted se está preguntando, tenemos nueve boletines de problemas. 127 00:05:46,210 --> 00:05:53,200 Tiene nueve días finales, cada uno de los cuales sólo se puede pasar una semana en. 128 00:05:53,200 --> 00:05:56,089 Eso hace que efectivamente todos el problema establece debido Viernes, 129 00:05:56,089 --> 00:05:58,630 pero el objetivo es poner un poco de poco de presión psicológica 130 00:05:58,630 --> 00:06:01,100 con ustedes para tratar de conseguir cosas en el jueves 131 00:06:01,100 --> 00:06:03,960 porque tan pronto descubrirá, para bien o para mal, la mayoría 132 00:06:03,960 --> 00:06:07,820 todo en el mundo del software termina tomar mucho más tiempo que usted anticipa. 133 00:06:07,820 --> 00:06:10,620 Así que considera que una especie de oportunidad de ayudar 134 00:06:10,620 --> 00:06:13,880 a ti mismo para apuntar jueves pero tranquilo por eso, sí, 135 00:06:13,880 --> 00:06:14,950 todo se debe Viernes. 136 00:06:14,950 --> 00:06:17,590 Y si envía ellos en Jueves, eso es maravilloso. 137 00:06:17,590 --> 00:06:21,020 No hay puntos de bonificación o adicional el crédito para cumplir con ese plazo. 138 00:06:21,020 --> 00:06:23,250 Es la intención de ser sólo una muleta. 139 00:06:23,250 --> 00:06:25,810 >> Y las horas de oficina, tanto aquí y en New Haven, 140 00:06:25,810 --> 00:06:28,840 en persona, si desea cumplir con cualquiera de nuestros cursos 141 00:06:28,840 --> 00:06:31,060 la enseñanza de los becarios y las entidades emisoras de asistencia. 142 00:06:31,060 --> 00:06:31,640 >> Correcto. 143 00:06:31,640 --> 00:06:33,110 Así que ahora, vamos a hacer esto más real. 144 00:06:33,110 --> 00:06:35,470 Y por un momento que va a comenzar para conseguir un poco más arcano, pero muy 145 00:06:35,470 --> 00:06:37,310 rápidamente el viernes y la semana que viene vamos a estar 146 00:06:37,310 --> 00:06:41,230 capaz de hacer mucho más que que pudimos hasta ahora en Scratch. 147 00:06:41,230 --> 00:06:44,350 Así que introdujimos último código semanas, aunque pictoral. 148 00:06:44,350 --> 00:06:45,620 Fue piezas del rompecabezas. 149 00:06:45,620 --> 00:06:48,800 Y formalizamos que es algo que se llama código fuente, 150 00:06:48,800 --> 00:06:50,330 sino que hizo parece? 151 00:06:50,330 --> 00:06:52,550 Bueno, parecía un poco algo como esto. 152 00:06:52,550 --> 00:06:55,410 Y, de hecho, sólo para la clase de embromar donde podemos ir con esto. 153 00:06:55,410 --> 00:06:57,800 Voy a seguir adelante y abrir una ventana aquí, 154 00:06:57,800 --> 00:06:59,810 y yo sólo voy a elegir nuevo archivo. 155 00:06:59,810 --> 00:07:03,200 Y me voy a guardar este archivo como algo parecido a punto hola c. 156 00:07:03,200 --> 00:07:05,700 Más acerca de que la elección de palabras un momento. 157 00:07:05,700 --> 00:07:08,630 Y esto es cómo alguien podría ir sobre la escritura de un programa. 158 00:07:08,630 --> 00:07:13,990 Incluya E / S estándar de punto h, int main vacío, y luego abrir corchete, cerca 159 00:07:13,990 --> 00:07:19,430 corchete, printf hola mundo coma, barra invertida n, punto y coma, Guardar, hecho. 160 00:07:19,430 --> 00:07:19,930 OK. 161 00:07:19,930 --> 00:07:21,670 He escrito mi primera programa, pero va 162 00:07:21,670 --> 00:07:23,878 a ser increíblemente decepcionados porque cuando en realidad 163 00:07:23,878 --> 00:07:27,352 ejecutar este programa, por supuesto, por primera escritura que hola, 164 00:07:27,352 --> 00:07:30,310 y luego dot recortar hola, y vamos a pasar por esto con mucho más detalle 165 00:07:30,310 --> 00:07:31,730 en un momento, eso es todo lo que hace. 166 00:07:31,730 --> 00:07:33,270 No estallar abierto todas las ventanas. 167 00:07:33,270 --> 00:07:35,070 No hace nada particularmente elegante. 168 00:07:35,070 --> 00:07:38,830 Todo lo que hace es lo que le dije a hacemos, pero ¿cómo llegamos a eso? 169 00:07:38,830 --> 00:07:40,560 Y ¿cómo construir sobre eso? 170 00:07:40,560 --> 00:07:43,430 Bueno, vamos a introducir algunos diferentes conceptos aquí. 171 00:07:43,430 --> 00:07:47,170 >> Así que uno, estamos a punto de comenzar utilizando un programa llamado un compilador. 172 00:07:47,170 --> 00:07:51,470 Existe un compilador para Mac OS, Windows, Linux, cualquier número de sistemas operativos, 173 00:07:51,470 --> 00:07:54,540 y pronto le presentaremos a la ambiente que vamos a utilizar, 174 00:07:54,540 --> 00:07:57,410 pero un compilador es sólo un general plazo para una pieza de software 175 00:07:57,410 --> 00:08:01,940 que lleva código fuente y produce código objeto de la misma. 176 00:08:01,940 --> 00:08:03,940 En otras palabras, si usted tiene como entrada la fuente 177 00:08:03,940 --> 00:08:08,250 código, algo así como lo que acaba de escribir, que en última instancia produce código objeto. 178 00:08:08,250 --> 00:08:11,780 Y el código objeto es en realidad una forma elegante de decir que las salidas 179 00:08:11,780 --> 00:08:12,926 de cero y uno. 180 00:08:12,926 --> 00:08:14,800 En otras palabras, la fuente código, aunque es 181 00:08:14,800 --> 00:08:17,240 va a parecer un poco misterioso, y un poco menos agradable 182 00:08:17,240 --> 00:08:19,590 de arañazos, a primera vista, es por lo menos algo 183 00:08:19,590 --> 00:08:21,120 que los seres humanos pueden entender. 184 00:08:21,120 --> 00:08:24,360 En cierto modo se ve y suena como Inglés pesar de que es muy sucinta. 185 00:08:24,360 --> 00:08:28,040 Considerando que la programación en de cero y uno, como nuestros predecesores tenían que hacer, 186 00:08:28,040 --> 00:08:30,920 Hace algunos años, no era una entrada muy divertido. 187 00:08:30,920 --> 00:08:33,710 Y, sin embargo, esto es lo que el equipo todavía entiende. 188 00:08:33,710 --> 00:08:37,010 Así compilador nos lleva desde código fuente del código objeto. 189 00:08:37,010 --> 00:08:39,860 Es como abrir un archivo con el compilador, y al guardarlo, 190 00:08:39,860 --> 00:08:41,419 usted consigue esos ceros y unos. 191 00:08:41,419 --> 00:08:43,419 Así que veremos cómo hacerlo que, en un momento. 192 00:08:43,419 --> 00:08:47,400 >> Pero ahora vamos a tratar de proporcionar una tender un puente entre la semana pasada y presente, 193 00:08:47,400 --> 00:08:50,660 de modo que incluso a medida que se obsesione en cosas como llaves, 194 00:08:50,660 --> 00:08:54,100 y punto y coma y paréntesis y todos estos intelectualmente interesante 195 00:08:54,100 --> 00:08:57,620 aspectos de la programación, que muy comprensiblemente disparar a la gente desde el principio, 196 00:08:57,620 --> 00:09:00,930 darse cuenta de que todas las ideas Hoy en día, son los mismos que pasado. 197 00:09:00,930 --> 00:09:03,975 Así que ayer, vimos este ejemplo aquí, el programa Hola Mundo. 198 00:09:03,975 --> 00:09:07,500 Bueno, a partir de hoy, si queremos para poner en práctica ese mismo programa, 199 00:09:07,500 --> 00:09:10,800 que va a buscar un poco algo como esto. 200 00:09:10,800 --> 00:09:14,040 Y vamos a explicar en poco tiempo lo que int, y principal, y sin efecto, y todo eso 201 00:09:14,040 --> 00:09:18,770 es, pero al menos yo veo aquí Ya lo familiar Hello World. 202 00:09:18,770 --> 00:09:20,860 >> Mientras tanto, cosas como función, saluda, 203 00:09:20,860 --> 00:09:23,570 es muy sencillo va a ser un declaración muy simple como esto. 204 00:09:23,570 --> 00:09:26,930 Printf hola mundo, con un poco de cita, con una barra invertida, 205 00:09:26,930 --> 00:09:29,780 con un punto y coma, pero más sobre esto más por venir. 206 00:09:29,780 --> 00:09:34,066 Loops, por su parte, se trata de un bucle que, por supuesto, dice hola mundo para siempre, 207 00:09:34,066 --> 00:09:36,690 y éste va a parecer un poco más raro que en el pasado, 208 00:09:36,690 --> 00:09:39,530 pero si digo algo al igual que, mientras cierto, 209 00:09:39,530 --> 00:09:44,050 puede luego imprimir Hola mundo una y otra vez y otra vez y otra vez. 210 00:09:44,050 --> 00:09:46,660 Y luego como puedas tipo de empezar a inferir aquí, 211 00:09:46,660 --> 00:09:49,070 esta convención de usar llaves es una especie 212 00:09:49,070 --> 00:09:52,050 de como abrazar la línea de sangría de código de allí. 213 00:09:52,050 --> 00:09:55,840 La línea printf de código muy parecido la pieza del rompecabezas de color amarillo por encima. 214 00:09:55,840 --> 00:09:58,740 Así que no vamos a decir siempre, vamos a decir, mientras que la verdadera, 215 00:09:58,740 --> 00:10:01,020 pero vamos a ver qué es en sólo un poco. 216 00:10:01,020 --> 00:10:04,210 >> Mientras tanto, si tenemos un circuito como este, donde repites algo un finita 217 00:10:04,210 --> 00:10:07,730 número de veces, este también es Va a tomar un poco de tiempo para acostumbrarse 218 00:10:07,730 --> 00:10:12,820 , pero que va a decir con int i se pone a cero, i menos de 10, i ++, 219 00:10:12,820 --> 00:10:14,056 y luego printf de nuevo. 220 00:10:14,056 --> 00:10:15,430 Pero no va a ser patrones. 221 00:10:15,430 --> 00:10:18,434 Y para aquellos de ustedes familiarizados con AP Ciencias de la Computación, o Java, 222 00:10:18,434 --> 00:10:21,100 o cualquier número de otros idiomas, Casi todos estos constructos 223 00:10:21,100 --> 00:10:23,820 hasta ahora deben buscar sobre todo familiar. 224 00:10:23,820 --> 00:10:24,680 >> Así variable. 225 00:10:24,680 --> 00:10:29,270 Así que aquí está un sencillo fragmento de Scratch que establece una variable llamada contador a cero, 226 00:10:29,270 --> 00:10:33,150 y luego dice siempre el mostrador, y entonces se cambia el contador en uno. 227 00:10:33,150 --> 00:10:37,030 Así que comienza con cero, y luego uno, dos, tres. 228 00:10:37,030 --> 00:10:42,560 Bueno, ¿cómo podemos introducir de que en este nuevo lenguaje un poco similar? 229 00:10:42,560 --> 00:10:45,460 Contador Int es igual cero, mientras que la verdadera, la que 230 00:10:45,460 --> 00:10:48,100 es la misma idea de antes de hacer algo para siempre, 231 00:10:48,100 --> 00:10:49,530 y yo sólo voy a printf. 232 00:10:49,530 --> 00:10:53,310 Y ahora se está haciendo un poco extraño, i por ciento, pero más sobre esto más por venir, 233 00:10:53,310 --> 00:10:55,140 pero estas ideas son exactamente los mismos. 234 00:10:55,140 --> 00:10:58,820 Sólo ahora tenemos que cumplir con la sintaxis que el equipo está 235 00:10:58,820 --> 00:11:00,010 va a exigir de nosotros. 236 00:11:00,010 --> 00:11:04,620 >> Expresión booleana, algo así como sx menor que y, x o menos y, 237 00:11:04,620 --> 00:11:06,354 e y menos de z. 238 00:11:06,354 --> 00:11:09,270 Se va a ver un poco de algo así, con paréntesis sólo 239 00:11:09,270 --> 00:11:13,020 como en matemáticas por si acaso sólo asegurarse de que el orden de las operaciones 240 00:11:13,020 --> 00:11:14,750 es como pretendemos. 241 00:11:14,750 --> 00:11:15,600 Y ahora, las condiciones. 242 00:11:15,600 --> 00:11:21,220 Así que si x menor que y, digamos x es menor que Y, más si x es mayor que y, 243 00:11:21,220 --> 00:11:26,020 decir x es mayor que y, de lo contrario lógicamente, x debe ser igual a y. 244 00:11:26,020 --> 00:11:28,710 Así que se podría poner en práctica algo como esto en Scratch, 245 00:11:28,710 --> 00:11:31,230 o puede aplicar en esta sintaxis. 246 00:11:31,230 --> 00:11:35,090 Y de nuevo, las llaves son una especie de nos da la misma forma que el rompecabezas 247 00:11:35,090 --> 00:11:40,750 piezas, pero la sintaxis, ahora, es tal vez empezando a seguir algunas pautas. 248 00:11:40,750 --> 00:11:42,910 >> Así que, ¿qué nos dan aquí? 249 00:11:42,910 --> 00:11:45,260 Así que estamos en ese entonces en nuestro programa principal. 250 00:11:45,260 --> 00:11:47,930 Vamos en realidad, ahora, hacer algo con él. 251 00:11:47,930 --> 00:11:50,660 Así que en este primer línea que vemos aguda incluimos, 252 00:11:50,660 --> 00:11:53,160 E / S estándar, punto h, y a continuación, un ángulo raro 253 00:11:53,160 --> 00:11:57,330 soportes debajo de eso. int main vacío, y luego printf hola mundo. 254 00:11:57,330 --> 00:11:58,200 Así que dar un paso. 255 00:11:58,200 --> 00:12:02,440 Alguien que nunca ha programado antes, al menos explicar una de estas líneas. 256 00:12:02,440 --> 00:12:04,490 Usando tal vez algunos de la jerga de la semana pasada. 257 00:12:04,490 --> 00:12:06,942 ¿Cuál es printf, por ejemplo? 258 00:12:06,942 --> 00:12:07,442 Sí. 259 00:12:07,442 --> 00:12:08,410 >> AUDIENCIA: [inaudible] 260 00:12:08,410 --> 00:12:08,610 >> DAVID J. MALAN: Sí. 261 00:12:08,610 --> 00:12:11,380 Es una función, o una declaración, de la terminología de la semana pasada. 262 00:12:11,380 --> 00:12:13,470 Y es una acción que está haciendo algo. 263 00:12:13,470 --> 00:12:15,855 Ahora esta función, o esta declaración, hace 264 00:12:15,855 --> 00:12:17,550 que parece tener algún tipo de entrada? 265 00:12:17,550 --> 00:12:20,080 266 00:12:20,080 --> 00:12:24,380 Y ¿en qué sentido lo hace parecen tener de entrada, de ser así? 267 00:12:24,380 --> 00:12:26,180 De entrada, ¿qué quiero decir con eso? 268 00:12:26,180 --> 00:12:26,720 Sí. 269 00:12:26,720 --> 00:12:27,595 >> AUDIENCIA: [inaudible] 270 00:12:27,595 --> 00:12:30,565 271 00:12:30,565 --> 00:12:31,440 DAVID J. MALAN: Sí. 272 00:12:31,440 --> 00:12:34,890 Así ganarse unas cuantas piezas del rompecabezas donde se puede parametrizar ella. 273 00:12:34,890 --> 00:12:37,980 Se notaba la repetición bloquear cuántas veces repetir, 274 00:12:37,980 --> 00:12:40,320 así que fue una entrada de clases, y al igual que los arañazos 275 00:12:40,320 --> 00:12:43,060 tenía un pequeño marcador de posición blanco para el número debería escribir en, 276 00:12:43,060 --> 00:12:45,810 así que usamos en este paréntesis mundiales texto 277 00:12:45,810 --> 00:12:49,910 para darnos esa forma circular en el que podemos conectar nuestra entrada. 278 00:12:49,910 --> 00:12:53,180 Después de todo, hace decenas de años cuando este lenguaje, llamado C, 279 00:12:53,180 --> 00:12:55,950 fue inventado nadie anticipó que es uno de nosotros, 280 00:12:55,950 --> 00:12:59,420 estos algunos años más tarde, estaríamos quieren una función que dice hola. 281 00:12:59,420 --> 00:12:59,920 ¿Correcto? 282 00:12:59,920 --> 00:13:02,880 Sería bueno si hubiera un pieza del rompecabezas, o unas palabras clave, 283 00:13:02,880 --> 00:13:05,502 eso se llama hola, que literalmente, sólo dice hola. 284 00:13:05,502 --> 00:13:06,460 Pero no necesitamos eso. 285 00:13:06,460 --> 00:13:09,320 Podemos tener algo mucho más bajo nivel, como una impresión genérica 286 00:13:09,320 --> 00:13:12,760 comando, que toma la entrada, e imprime lo que queramos. 287 00:13:12,760 --> 00:13:14,960 Así notar ahora el patrón que comenzará a emerger. 288 00:13:14,960 --> 00:13:19,310 Paren Abiertas, cerca paren es aparentemente abrazando la entrada, 289 00:13:19,310 --> 00:13:21,770 y luego veo doble cita en ambos extremos. 290 00:13:21,770 --> 00:13:25,110 Todavía hay barra invertida raro n, pero espero que ahora usted 291 00:13:25,110 --> 00:13:29,900 puede comenzar a visualizar al menos esa printf está tomando algún tipo de entrada. 292 00:13:29,900 --> 00:13:31,850 No es tan fácil de usar como Cero, pero es sólo 293 00:13:31,850 --> 00:13:34,920 como haber enchufado algún valor allí. 294 00:13:34,920 --> 00:13:38,306 >> Muy bien, ahora vamos a realidad hacer algo con esto. 295 00:13:38,306 --> 00:13:40,930 Así que algunos de ustedes podrían saber de teniendo comprado la clase antes, 296 00:13:40,930 --> 00:13:42,638 charlado con los amigos, que durante muchos años 297 00:13:42,638 --> 00:13:44,590 usamos algo llamado el aparato CS50. 298 00:13:44,590 --> 00:13:49,160 Este era un término que describe una tecnología llama la máquina virtual, que 299 00:13:49,160 --> 00:13:51,870 es una pieza de software que su predecesores se descarga fuera 300 00:13:51,870 --> 00:13:53,360 la página web del curso de forma gratuita. 301 00:13:53,360 --> 00:13:56,550 También se descarga una pieza libre de software llamado un hipervisor, 302 00:13:56,550 --> 00:14:00,590 algo que se llama como VMware, o VirtualBox, o cualquier número 303 00:14:00,590 --> 00:14:04,450 de otras herramientas, y en su Mac o PC o cualquier equipo que tenían el año pasado 304 00:14:04,450 --> 00:14:06,620 y en el año pasado, duplicaría clic en un icono 305 00:14:06,620 --> 00:14:08,860 para ejecutar este software llamado el hipervisor. 306 00:14:08,860 --> 00:14:12,220 Y luego en el interior de ese programa abrirían el aparato CS50. 307 00:14:12,220 --> 00:14:14,710 Y el efecto fue que si un antecesor suyo 308 00:14:14,710 --> 00:14:17,780 estaba ejecutando Mac OS o De Windows, él o ella entonces 309 00:14:17,780 --> 00:14:22,910 posteriormente tuvo una nueva ventana en su pantalla de correr el entorno del CS50. 310 00:14:22,910 --> 00:14:27,370 Así que una máquina virtual le permite ejecutar un solo sistema operativo dentro de otro, 311 00:14:27,370 --> 00:14:28,785 y eso es exactamente lo que hicimos. 312 00:14:28,785 --> 00:14:31,410 A lo largo de la mayor parte del supuesto que utilizar un sistema operativo llamado 313 00:14:31,410 --> 00:14:34,070 Linux, específicamente Ubuntu Linux, y esto 314 00:14:34,070 --> 00:14:37,590 es una forma muy agradable en los últimos años de asegurándose de que todo el mundo en el curso 315 00:14:37,590 --> 00:14:38,840 sólo tenía el mismo ambiente. 316 00:14:38,840 --> 00:14:41,339 Y usted puede utilizar cualquier tipo de equipo que usted realmente desea. 317 00:14:41,339 --> 00:14:43,930 Entre las desventajas, sin embargo, eran que era como dos gigabytes 318 00:14:43,930 --> 00:14:45,480 descargar gratis la cosa. 319 00:14:45,480 --> 00:14:50,310 No necesariamente funciona muy bien en personas cuyas computadoras que quizás sólo 320 00:14:50,310 --> 00:14:54,570 tuvo una actuación más o menos de RAM, o no demasiados gigahercios de velocidad de la CPU, 321 00:14:54,570 --> 00:14:56,750 por lo que este año, por esta y otras razones, 322 00:14:56,750 --> 00:14:59,140 ¿Hemos sido transicionando a este entorno. 323 00:14:59,140 --> 00:15:03,730 El llamado CS50 IDE, que es basado en software de código abierto, 324 00:15:03,730 --> 00:15:07,380 y una plataforma compatible que una compañía llamada Cloud9 325 00:15:07,380 --> 00:15:11,110 apoya en Europa, que nos permite tenemos esencialmente 326 00:15:11,110 --> 00:15:15,770 ese mismo ambiente exacta como en año pasado, pero en la llamada en la nube. 327 00:15:15,770 --> 00:15:17,532 >> Entonces, ¿qué es la nube? 328 00:15:17,532 --> 00:15:20,480 Usted probablemente ha hecho clic su icono en tu Mac o PC. 329 00:15:20,480 --> 00:15:22,210 ¿Qué es la nube? 330 00:15:22,210 --> 00:15:22,709 ¿Sí? 331 00:15:22,709 --> 00:15:25,880 332 00:15:25,880 --> 00:15:26,780 Un poco más fuerte. 333 00:15:26,780 --> 00:15:30,510 334 00:15:30,510 --> 00:15:31,010 Sí. 335 00:15:31,010 --> 00:15:33,770 Es sólo un montón de ordenadores en otros lugares que los datos de la tienda y de ejecución 336 00:15:33,770 --> 00:15:34,880 software y similares. 337 00:15:34,880 --> 00:15:39,390 Así que es realmente sólo a la palabra de jure de describir [? vienen alquiladas?] 338 00:15:39,390 --> 00:15:40,930 equipos que no viven más en. 339 00:15:40,930 --> 00:15:42,810 Que usted, usted mismo, no necesariamente poseer. 340 00:15:42,810 --> 00:15:45,256 Así que cuando sus datos, o su programas, están en la nube, 341 00:15:45,256 --> 00:15:47,630 sólo significa que es de alguien computadoras de otra persona en otro lugar, 342 00:15:47,630 --> 00:15:50,510 y no, lo más probable, en su ordenador portátil o de escritorio físico. 343 00:15:50,510 --> 00:15:52,990 Y eso es lo CS50 IDE ahora es. 344 00:15:52,990 --> 00:15:55,670 >> A partir de ahora irás a una cierta URL que presentarles 345 00:15:55,670 --> 00:16:00,090 que, en el conjunto de problemas 1, a finales de este semana, que entonces, al iniciar la sesión, 346 00:16:00,090 --> 00:16:01,480 darle este entorno. 347 00:16:01,480 --> 00:16:03,896 Y mucho de Scratch como tenía un unos paneles diferentes involucrados, 348 00:16:03,896 --> 00:16:06,030 lo mismo ocurre con el IDE de CS50 tiene exactamente eso. 349 00:16:06,030 --> 00:16:09,480 En la parte superior izquierda mano aquí, eres ir a ver a un explorador de archivos familiares. 350 00:16:09,480 --> 00:16:11,930 Así que cualquiera de los archivos que puesto en este entorno 351 00:16:11,930 --> 00:16:13,346 sólo se va a figurar allí. 352 00:16:13,346 --> 00:16:14,350 Los archivos y carpetas. 353 00:16:14,350 --> 00:16:16,790 En la parte superior derecha aquí, usted va a ver un lugar 354 00:16:16,790 --> 00:16:18,420 donde realmente se puede escribir su código. 355 00:16:18,420 --> 00:16:21,860 Inicialmente en C, más adelante en el plazo en PHP y JavaScript, 356 00:16:21,860 --> 00:16:24,739 y, tal vez por última proyectos, Ruby o Java o Python 357 00:16:24,739 --> 00:16:27,280 o cualquier número de idiomas son apoyado en este entorno. 358 00:16:27,280 --> 00:16:30,130 No es en absoluto atado a CS50 específicamente. 359 00:16:30,130 --> 00:16:33,390 >> Y luego, en la esquina de fondo aquí, especialmente para los más cómodos, 360 00:16:33,390 --> 00:16:35,590 tienes algo llamada una ventana de terminal. 361 00:16:35,590 --> 00:16:38,770 Y esta ventana de terminal permite que permite ejecutar cualquier comando que usted 362 00:16:38,770 --> 00:16:40,860 desear en este entorno de nube. 363 00:16:40,860 --> 00:16:42,860 Se le permite instalar ningún software adicional 364 00:16:42,860 --> 00:16:46,810 que desea, porque usted ha llamada raíz o de administrador privilegios. 365 00:16:46,810 --> 00:16:49,930 Así, en otras palabras, a pesar de que este está instalado en última instancia, en la nube, 366 00:16:49,930 --> 00:16:52,400 ya pesar de que tenemos simplificada hasta cierto punto 367 00:16:52,400 --> 00:16:57,110 por defecto, literalmente, la introducción, gracias a Dan Armendariz, y Dino, 368 00:16:57,110 --> 00:17:01,070 y Dan Bradley en el equipo de CS50 sobre el pasado muchos meses, una menos cómodo 369 00:17:01,070 --> 00:17:05,140 modo que se esconde una gran cantidad de la distracciones inicialmente confusas. 370 00:17:05,140 --> 00:17:10,119 Todo existe para representar un sistema informático típico 371 00:17:10,119 --> 00:17:12,319 que usted puede utilizar en el mundo real. 372 00:17:12,319 --> 00:17:15,640 >> Entonces, ¿qué significa todo esto, y ¿qué podemos realmente hacer con él? 373 00:17:15,640 --> 00:17:19,124 Vamos realmente echar un vistazo a un programa. 374 00:17:19,124 --> 00:17:21,290 Así que voy a abrir el entorno real aquí, 375 00:17:21,290 --> 00:17:23,894 que es sólo nuestra Cromo navegador, que podría ser Firefox, 376 00:17:23,894 --> 00:17:26,640 podría ser Internet Explorer, o algún otro navegador también. 377 00:17:26,640 --> 00:17:28,400 Está llena proyectó aquí por el momento. 378 00:17:28,400 --> 00:17:31,580 Y quiero molestar realidad aparte lo que era este programa. 379 00:17:31,580 --> 00:17:36,170 Así que vamos a echar un vistazo, haciendo zoom en hasta arriba, en lo que hice, y cómo llegué aquí. 380 00:17:36,170 --> 00:17:38,315 Así que aquí está los exacta mismas líneas de código. 381 00:17:38,315 --> 00:17:40,440 Así que esta es la declaración, como usted ha mencionado antes. 382 00:17:40,440 --> 00:17:42,580 La función que dice hola. 383 00:17:42,580 --> 00:17:45,870 Las llaves, en línea de cuatro y línea de seis, 384 00:17:45,870 --> 00:17:49,290 presumiblemente tipo de envoltura esa línea para asociarlo 385 00:17:49,290 --> 00:17:50,890 con la esencia de mi programa. 386 00:17:50,890 --> 00:17:54,890 Así que de hecho, esta palabra clave principal, eso es allá arriba en la línea tres, 387 00:17:54,890 --> 00:17:59,450 usted puede pensar que como el equivalente de que cuando hace clic en bandera verde, 388 00:17:59,450 --> 00:18:01,080 bloquear en Scratch. 389 00:18:01,080 --> 00:18:05,280 Así que eso es todo lo que tenemos aquí, es cuando bandera verde se hace clic, impresión, o decir, 390 00:18:05,280 --> 00:18:06,700 Hola mundo. 391 00:18:06,700 --> 00:18:11,210 >> Pero vamos a tomar una conjetura, ahora, en lo que esta primera línea, más arcano, es. 392 00:18:11,210 --> 00:18:15,100 Agudo incluyen, abierta en ángulo soporte, E / S estándar de punto h, 393 00:18:15,100 --> 00:18:17,320 cerrar horca. 394 00:18:17,320 --> 00:18:19,850 Lo que se que tal vez haciendo, especialmente si usted ha programado 395 00:18:19,850 --> 00:18:21,390 antes en algún otro lenguaje. 396 00:18:21,390 --> 00:18:21,890 ¿Sí? 397 00:18:21,890 --> 00:18:22,765 >> AUDIENCIA: [inaudible] 398 00:18:22,765 --> 00:18:25,095 399 00:18:25,095 --> 00:18:25,970 DAVID J. MALAN: Sí. 400 00:18:25,970 --> 00:18:26,470 Exactamente. 401 00:18:26,470 --> 00:18:29,455 Así que esto está dando acceso a una biblioteca, por así decirlo, de las funciones. 402 00:18:29,455 --> 00:18:31,830 Y una biblioteca de funciones es funciones que otra persona 403 00:18:31,830 --> 00:18:34,406 escribió, ya sea recientemente o hace mucho tiempo, de modo que usted 404 00:18:34,406 --> 00:18:35,780 no tienen que reinventar la rueda. 405 00:18:35,780 --> 00:18:39,020 Por ejemplo, no lo hacemos tiene que saber, en 2015, 406 00:18:39,020 --> 00:18:42,280 cómo escribir código que pone un personaje en mi pantalla. 407 00:18:42,280 --> 00:18:44,820 Alguien se ha dado cuenta de que con la función printf 408 00:18:44,820 --> 00:18:47,280 para que yo pueda ordenar de abstracta lejos de eso, o capa de 409 00:18:47,280 --> 00:18:49,350 en la parte superior de su código, y ahora acaba de tomar 410 00:18:49,350 --> 00:18:52,760 por sentado que cualquier programa que escriba puede imprimir algo en la pantalla. 411 00:18:52,760 --> 00:18:58,150 Así que esta primera línea de allí en el paso uno incluye el denominado archivo de cabecera 412 00:18:58,150 --> 00:18:59,980 para la biblioteca estándar. 413 00:18:59,980 --> 00:19:02,630 Así que ver, el idioma en que ahora estamos trabajando 414 00:19:02,630 --> 00:19:05,010 tenido una biblioteca estándar con una gran cantidad de funciones. 415 00:19:05,010 --> 00:19:07,240 Printf es uno de ellos, y esa primera línea de código 416 00:19:07,240 --> 00:19:10,040 me significa dar acceso a esas funciones, por lo que yo 417 00:19:10,040 --> 00:19:12,300 no tienen que reinventar la rueda. 418 00:19:12,300 --> 00:19:15,940 >> Ahora vamos a ir a la ventana inferior y hacer exactamente lo que hice antes. 419 00:19:15,940 --> 00:19:18,520 Hace un momento, cuando yo era zumbando a través del código, 420 00:19:18,520 --> 00:19:24,540 escribiéndolo a cabo por primera vez, Yo muy rápidamente escrito, hago hola. 421 00:19:24,540 --> 00:19:28,250 ¿Qué fue todo eso habría que adivinar? 422 00:19:28,250 --> 00:19:29,150 ¿Qué estaba haciendo? 423 00:19:29,150 --> 00:19:29,649 ¿Sí? 424 00:19:29,649 --> 00:19:31,810 425 00:19:31,810 --> 00:19:32,310 Olvídalo. 426 00:19:32,310 --> 00:19:32,970 Esta bien. 427 00:19:32,970 --> 00:19:33,492 Sí. 428 00:19:33,492 --> 00:19:34,450 AUDIENCIA: Compilación de ella. 429 00:19:34,450 --> 00:19:34,700 DAVID J. MALAN: Sí. 430 00:19:34,700 --> 00:19:35,770 Se acaba de compilarlo. 431 00:19:35,770 --> 00:19:36,270 ¿Correcto? 432 00:19:36,270 --> 00:19:39,280 Incluso si esto es completamente desconocida a usted, que es bastante Inglés similares. 433 00:19:39,280 --> 00:19:41,155 Ciertamente no es ceros y unos, así que todavía 434 00:19:41,155 --> 00:19:44,220 tenga que ejecutar a través de que la llamada programa, un compilador, que va 435 00:19:44,220 --> 00:19:46,060 tomarlo como entrada y producir una salida. 436 00:19:46,060 --> 00:19:48,270 Y por lo menos, por ahora, en este entorno Linux, 437 00:19:48,270 --> 00:19:51,030 pero esto no es un requisito previo, esto es justo donde vamos a empezar, 438 00:19:51,030 --> 00:19:53,960 por lo general, interactuar con sistemas informáticos como este 439 00:19:53,960 --> 00:19:55,770 mediante una línea de comandos llamada. 440 00:19:55,770 --> 00:19:57,790 Así que con un parpadeo pronta y su teclado, 441 00:19:57,790 --> 00:20:01,630 y no tanto el puntero del ratón, y no tanto las ventanas y los iconos y menús, 442 00:20:01,630 --> 00:20:02,980 más bien todo es textual. 443 00:20:02,980 --> 00:20:06,180 Y a pesar de esto se siente, en un primer momento vista, tal vez, como un paso hacia atrás, 444 00:20:06,180 --> 00:20:08,437 en realidad es una forma mucho más forma poderosa y expresiva 445 00:20:08,437 --> 00:20:10,270 de controlar un ordenador especialmente a medida que, 446 00:20:10,270 --> 00:20:12,950 usted mismo, se vuelven más cómodo desde menos. 447 00:20:12,950 --> 00:20:16,790 Esto va a permitir que usted hace un montón más cosas que simplemente lo que Microsoft 448 00:20:16,790 --> 00:20:20,390 o Apple le permite hacer con su sistema operativo gráfico. 449 00:20:20,390 --> 00:20:23,270 >> Así que cuando llegué a Enter, ahora, no pasa nada en esta ocasión 450 00:20:23,270 --> 00:20:25,960 porque al parecer la hola programa está actualizado. 451 00:20:25,960 --> 00:20:28,250 Y lo que era el comando Corrí detrás de eso? 452 00:20:28,250 --> 00:20:32,370 Dot slash hola, y hola mundo. 453 00:20:32,370 --> 00:20:34,350 Ahora vamos a dar un paso copia de un momento. 454 00:20:34,350 --> 00:20:39,510 Resulta que hacen hola es sólo una forma simplificada de la compilación de un programa. 455 00:20:39,510 --> 00:20:41,670 Vamos a introducir una pieza de la jerga, 456 00:20:41,670 --> 00:20:43,470 pero luego alejarse de ella, ya que no es 457 00:20:43,470 --> 00:20:46,640 tan interesante para los propósitos de la actualidad. 458 00:20:46,640 --> 00:20:51,000 El compilador que vamos a empezar a utilizar se llama Clang, para el lenguaje C. 459 00:20:51,000 --> 00:20:54,280 Y este es un programa que se ejecuta solo como lo hicimos en la línea de comandos allí. 460 00:20:54,280 --> 00:20:56,580 Y así, si quiero compilar un programa que yo 461 00:20:56,580 --> 00:21:00,790 han escrito en un archivo denominado hola dot c, que, literalmente, sólo escribo clang hola c 462 00:21:00,790 --> 00:21:02,100 entrar. 463 00:21:02,100 --> 00:21:04,880 >> Lo gracioso es que, por razones históricas, 464 00:21:04,880 --> 00:21:07,750 si no se especifica la nombre del programa 465 00:21:07,750 --> 00:21:11,690 que yo quiero a la salida, si no lo hago especificar un nombre de archivo para los ceros 466 00:21:11,690 --> 00:21:14,990 y unos, muy raro Hace años se adoptó la convención 467 00:21:14,990 --> 00:21:17,390 donde se sentía una especie de buena respuesta en el momento, 468 00:21:17,390 --> 00:21:21,650 así que vamos a llamar arbitrariamente el primer programa que compila un punto fuera. 469 00:21:21,650 --> 00:21:22,900 Una es lo primero en el alfabeto. 470 00:21:22,900 --> 00:21:23,920 Out, que es la salida. 471 00:21:23,920 --> 00:21:26,210 Así que vamos a llamar al programa por defecto un punto fuera. 472 00:21:26,210 --> 00:21:29,550 Y eso está bien, porque si quiero ejecutar el programa en este texto basado 473 00:21:29,550 --> 00:21:33,590 medio ambiente, yo sólo escribo dot recortar un punto a cabo entrar. 474 00:21:33,590 --> 00:21:35,250 Y sería ejecutar exactamente igual que antes. 475 00:21:35,250 --> 00:21:36,880 Así que vamos a ver que realmente rápido. 476 00:21:36,880 --> 00:21:40,370 >> Así que si vuelvo a mi código fuente en CS50 IDE, 477 00:21:40,370 --> 00:21:47,860 y yo en vez hago esto, clang hola cuna c entrar, aviso nada parece suceder, 478 00:21:47,860 --> 00:21:49,790 pero casi siempre en este entorno Linux, 479 00:21:49,790 --> 00:21:53,310 cuando nada malo parece suceder, que significa algo bueno en realidad sucedió. 480 00:21:53,310 --> 00:21:56,270 Si usted no ve un error mensaje, todo es probablemente también. 481 00:21:56,270 --> 00:22:01,930 Y de hecho, si ahora lo hago punto slash un punto cabo entro, me he encontrado a mi mismo programa. 482 00:22:01,930 --> 00:22:04,610 Todavía tengo el programa hola de antes, porque de hecho, es 483 00:22:04,610 --> 00:22:07,430 va a ser mucho más agradable justo escriba hacer en lugar de recordar 484 00:22:07,430 --> 00:22:10,240 estos conjuros de comandos, pero vamos a ver cómo nos 485 00:22:10,240 --> 00:22:12,890 podría mejorar en esto, no obstante. 486 00:22:12,890 --> 00:22:15,340 >> Por lo tanto, este es el comando para compilar el código. 487 00:22:15,340 --> 00:22:19,100 Este es el comando para ejecutar el código compilado a partir de entonces. 488 00:22:19,100 --> 00:22:20,546 ¿Cómo puedo especificar un nombre de archivo? 489 00:22:20,546 --> 00:22:22,670 Bueno vamos a introducir una pieza más de la jerga. 490 00:22:22,670 --> 00:22:24,461 Cuando estás en esta entorno basado en texto, 491 00:22:24,461 --> 00:22:27,400 usted va a querer especificar cosas que se llaman argumentos de la línea de comandos. 492 00:22:27,400 --> 00:22:31,380 Lo cual es sólo una forma elegante de decir, Es decir en el símbolo que 493 00:22:31,380 --> 00:22:33,860 modificar el comportamiento de lo que sea programa que se está ejecutando. 494 00:22:33,860 --> 00:22:37,320 Así específicamente el programa que estoy correr, escribiendo el nombre del sonido metálico, 495 00:22:37,320 --> 00:22:38,504 es el programa llamado Clang. 496 00:22:38,504 --> 00:22:40,920 Así que esto es o la vieja escuela equivalente a un doble clic 497 00:22:40,920 --> 00:22:42,860 en Microsoft Word o icono de algún programa. 498 00:22:42,860 --> 00:22:46,360 Estoy en vez simplemente escribiendo su nombre, pero en esta versión de la orden, 499 00:22:46,360 --> 00:22:51,334 Entonces tengo dash espacio o hola hola espacio del punto c. 500 00:22:51,334 --> 00:22:53,500 Así que incluso si usted nunca ha jugado en este mundo antes, 501 00:22:53,500 --> 00:22:58,160 simplemente tomar una conjetura lo Qué rociada o hola hacer? 502 00:22:58,160 --> 00:23:00,620 O ¿qué dirá sonido metálico que hacer? 503 00:23:00,620 --> 00:23:01,386 Sí. 504 00:23:01,386 --> 00:23:02,455 >> AUDIENCIA: [inaudible] 505 00:23:02,455 --> 00:23:03,330 DAVID J. MALAN: Sí. 506 00:23:03,330 --> 00:23:08,614 Simplemente establece la salida del archivo a ser hola en lugar del más tonto un punto fuera. 507 00:23:08,614 --> 00:23:09,780 Y, de hecho, vamos a probar esto. 508 00:23:09,780 --> 00:23:14,250 Así que si ahora lo hago, primero vamos a hacer esto, r m hola. 509 00:23:14,250 --> 00:23:15,590 Eso es quitar. 510 00:23:15,590 --> 00:23:18,450 Y que va a decir remove fichero regular hola, que 511 00:23:18,450 --> 00:23:22,210 es innecesariamente arcano, pero simplemente medios hacen que desea borrar el archivo, 512 00:23:22,210 --> 00:23:23,230 y yo escribo y para sí. 513 00:23:23,230 --> 00:23:27,340 Y note, si estuviera mirando a la parte superior a la izquierda, que desapareció desde allá arriba. 514 00:23:27,340 --> 00:23:32,180 Permítanme ahora hago ruido metálico guión o, y Voy a seguir adelante y hacerlo hola, 515 00:23:32,180 --> 00:23:34,890 en mayúsculas, hola punto c. 516 00:23:34,890 --> 00:23:37,775 Ahora, si lo hago slash dot Buenos días, qué se puede esperar? 517 00:23:37,775 --> 00:23:41,240 518 00:23:41,240 --> 00:23:42,430 >> Tal vez es sensible a mayúsculas. 519 00:23:42,430 --> 00:23:43,070 Tal vez no lo es. 520 00:23:43,070 --> 00:23:44,030 Vamos a ver. 521 00:23:44,030 --> 00:23:45,230 El fichero o directorio no existe. 522 00:23:45,230 --> 00:23:47,438 Y podemos tipo de trampas por sólo mirar en la parte superior izquierda. 523 00:23:47,438 --> 00:23:49,630 Lo hice yo, obviamente, guardar el programa como? 524 00:23:49,630 --> 00:23:51,070 Todas las tapas hola. 525 00:23:51,070 --> 00:23:53,020 Así que de hecho, eso es ir marcar la diferencia. 526 00:23:53,020 --> 00:23:54,540 Así que ahora hola mundo está de vuelta. 527 00:23:54,540 --> 00:23:56,969 Ahora bien, esto es todo fino y bueno, y todo muy mente-anestésica, 528 00:23:56,969 --> 00:23:59,760 al tipo de empantanarse en estos detalles, pero entendiéndolos 529 00:23:59,760 --> 00:24:00,500 es bueno. 530 00:24:00,500 --> 00:24:02,675 >> Escribiendo un vistazo a estos cada vez más conjuros largos 531 00:24:02,675 --> 00:24:05,980 no va a ser particularmente diversión, así que la gente en el mundo 532 00:24:05,980 --> 00:24:08,260 inventado otro programa, Hace algunos años, llamado 533 00:24:08,260 --> 00:24:12,190 hacer, que, sencillamente, le permite escribir marca, 534 00:24:12,190 --> 00:24:14,530 el nombre del programa usted quiere hacer, y hacer 535 00:24:14,530 --> 00:24:18,580 es inteligente en que se verá en la carpeta actual, también conocido como el directorio, 536 00:24:18,580 --> 00:24:21,440 y si usted tiene un archivo llamada hola punto c, 537 00:24:21,440 --> 00:24:25,800 que es el archivo que se compilará para usted en un programa que se llama hola. 538 00:24:25,800 --> 00:24:29,950 Así que es una manera mucho más simple de haciendo los comandos más crípticos 539 00:24:29,950 --> 00:24:30,800 que hicimos antes. 540 00:24:30,800 --> 00:24:34,080 Y hemos preconfigurado CS50 IDE saber 541 00:24:34,080 --> 00:24:38,560 que debería hacer o guión y un número de otras banderas o argumentos de la línea de comandos, 542 00:24:38,560 --> 00:24:40,670 que vamos a ver en poco tiempo. 543 00:24:40,670 --> 00:24:43,700 >> Pero vamos a hacer ahora en realidad algo más interesante. 544 00:24:43,700 --> 00:24:46,950 Simplemente tecleando fuera el mundo hola a todos el tiempo no es tan convincente. 545 00:24:46,950 --> 00:24:52,280 Así que déjame ir por delante y el cambio este programa y decir hola David. 546 00:24:52,280 --> 00:24:54,120 Ahora me voy a ir por aquí. 547 00:24:54,120 --> 00:24:57,360 Voy a seguir adelante y hacer que saludar. 548 00:24:57,360 --> 00:25:00,652 Y de nuevo ahora que se está viendo hacer que se muestra el tiempo 549 00:25:00,652 --> 00:25:03,360 secuencia de comandos que es haciendo porque hemos configurado previamente 550 00:25:03,360 --> 00:25:05,200 de esa manera, pero nosotros no tiene por qué preocuparse por el momento 551 00:25:05,200 --> 00:25:10,735 lo que está haciendo aparte de que es dot compilación slash hola, hola mundo. 552 00:25:10,735 --> 00:25:14,969 553 00:25:14,969 --> 00:25:15,510 ¿Que esta mal? 554 00:25:15,510 --> 00:25:16,177 Sí. 555 00:25:16,177 --> 00:25:17,370 >> AUDIENCIA: [inaudible] 556 00:25:17,370 --> 00:25:18,203 >> DAVID J. MALAN: Sí. 557 00:25:18,203 --> 00:25:19,600 Así, el error noobie. 558 00:25:19,600 --> 00:25:22,394 Me doy cuenta de que esto es muy sutil, pero el asterisco que aquí, en la ficha, 559 00:25:22,394 --> 00:25:25,060 simplemente significa que no haya guardado, y los navegadores y otros programas 560 00:25:25,060 --> 00:25:25,930 hacer esto a veces. 561 00:25:25,930 --> 00:25:27,939 Así de control o de mando s s debe salvarlo. 562 00:25:27,939 --> 00:25:29,730 Ahora déjame ir por delante y volver a ejecutar el programa. 563 00:25:29,730 --> 00:25:33,360 564 00:25:33,360 --> 00:25:34,260 Recompilado. 565 00:25:34,260 --> 00:25:36,050 Derecho, por lo que es un proceso de múltiples pasos. 566 00:25:36,050 --> 00:25:39,400 Ninguno de los cuales es particularmente complejo, pero cada vez que cambie el archivo, 567 00:25:39,400 --> 00:25:43,450 tenemos que cambiar la resultante ceros y unos, y slash dot hola. 568 00:25:43,450 --> 00:25:43,950 Guau. 569 00:25:43,950 --> 00:25:46,450 Así que esto es muy decepcionante que simplemente imprimimos esto. 570 00:25:46,450 --> 00:25:48,360 Vamos a hacer las cosas un poco más dinámico, ahora. 571 00:25:48,360 --> 00:25:52,280 >> Pues resulta, que al igual que Scratch, C soporta variables. 572 00:25:52,280 --> 00:25:54,790 Y resulta que si quieres tener una variable que almacena, 573 00:25:54,790 --> 00:25:57,300 no es un número como si típicamente hizo con Scratch, 574 00:25:57,300 --> 00:26:01,300 pero al igual que una palabra, o una frase o un nombre, 575 00:26:01,300 --> 00:26:04,837 puede especificar una variable al ser de tipo cadena. 576 00:26:04,837 --> 00:26:06,670 Así que vamos a ver más de estos en un momento, 577 00:26:06,670 --> 00:26:09,090 pero resulta que C, y una gran cantidad de lenguajes como él, 578 00:26:09,090 --> 00:26:11,240 tienen tipos muy específicos de variables. 579 00:26:11,240 --> 00:26:13,810 No es justo como álgebra, donde se obtiene una x, a y, z 580 00:26:13,810 --> 00:26:16,940 y esos son sólo siempre números, en un lenguaje de programación 581 00:26:16,940 --> 00:26:20,030 usted puede almacenar números, puede almacenar caracteres individuales, 582 00:26:20,030 --> 00:26:24,619 podría almacenar palabras completas, podría almacenar imágenes enteros, archivos de sonido enteros, 583 00:26:24,619 --> 00:26:25,160 y similares. 584 00:26:25,160 --> 00:26:28,362 Así que tenemos que especificar qué el tipo de la variable es. 585 00:26:28,362 --> 00:26:31,570 Y, por convención, voy a llamar a mi s variables sólo porque es sucinta, 586 00:26:31,570 --> 00:26:33,510 y s significa cadena. 587 00:26:33,510 --> 00:26:36,400 >> Y luego me voy a guardar dentro de esta variable, 588 00:26:36,400 --> 00:26:39,570 Al igual que con los arañazos cuando se utiliza el bloque conjunto, 589 00:26:39,570 --> 00:26:41,950 Voy a utilizar el operador de asignación en C, 590 00:26:41,950 --> 00:26:45,290 que muy bien lo suficiente es la igualdad firmar, pero el signo igual hace esto. 591 00:26:45,290 --> 00:26:53,220 Se mueve algo de la derecha en el lado izquierdo de la expresión. 592 00:26:53,220 --> 00:26:57,170 Así que lo que he hecho, para ser claros en línea de cinco, es que he declarado una variable. 593 00:26:57,170 --> 00:27:01,284 Le he dicho a la computadora, dame memoria para una variable, lo llaman es, 594 00:27:01,284 --> 00:27:03,950 y sé de antemano que voy a poner una cadena en el mismo. 595 00:27:03,950 --> 00:27:05,950 Y una cadena es sólo un secuencia de caracteres. 596 00:27:05,950 --> 00:27:09,190 Es una palabra o una frase o párrafo, pero es una secuencia de caracteres. 597 00:27:09,190 --> 00:27:10,610 No es números. 598 00:27:10,610 --> 00:27:13,800 ¿Qué cadena voy a ser puesta en esa variable? 599 00:27:13,800 --> 00:27:16,185 Bueno, al parecer citar Lo dijeron ellos, "Hannah". 600 00:27:16,185 --> 00:27:17,810 Ahora note el patrón que está emergiendo. 601 00:27:17,810 --> 00:27:19,260 Hay una expresión de la izquierda. 602 00:27:19,260 --> 00:27:21,810 Hay una expresión de la derecha, separados por el signo igual. 603 00:27:21,810 --> 00:27:24,390 Y acaba de tomar una conjetura, si desconocido, no obstante, 604 00:27:24,390 --> 00:27:27,430 con lo que el punto y coma que está haciendo. 605 00:27:27,430 --> 00:27:28,865 Lo que es de suponer que hacer por nosotros? 606 00:27:28,865 --> 00:27:29,365 ¿Sí? 607 00:27:29,365 --> 00:27:29,840 >> AUDIENCIA: [inaudible] 608 00:27:29,840 --> 00:27:29,980 >> DAVID J. MALAN: Sí. 609 00:27:29,980 --> 00:27:31,170 Es sólo que termina la línea. 610 00:27:31,170 --> 00:27:31,669 ¿Correcto? 611 00:27:31,669 --> 00:27:34,260 Los equipos quieren estar sin rodeos dijo, literalmente, lo que debe hacer. 612 00:27:34,260 --> 00:27:36,343 Al igual que la mantequilla de maní y ejemplo mermelada, 613 00:27:36,343 --> 00:27:39,360 si no se especifica exactamente lo que se propone, 614 00:27:39,360 --> 00:27:42,190 podría dejarse a juicio o error. 615 00:27:42,190 --> 00:27:44,890 Los medios de punto y coma, eso es todo por este comando. 616 00:27:44,890 --> 00:27:48,310 Se trata de ser muy precisa, y es una cosa muy fácil de dejar fuera. 617 00:27:48,310 --> 00:27:52,240 Así que ahora este programa no parece se comportan de manera diferente hasta que 618 00:27:52,240 --> 00:27:53,500 hacerlo más dinámico. 619 00:27:53,500 --> 00:27:57,107 Así que en lugar de disco podía mi propia nombrar, déjame poner un valor de marcador de posición. 620 00:27:57,107 --> 00:28:00,190 Y resulta que, y lo sé de haber leído la documentación, 621 00:28:00,190 --> 00:28:04,080 y se utiliza la función durante años, que printf fue diseñado para ser dinámico. 622 00:28:04,080 --> 00:28:07,510 Usted no tiene que saber de antemano lo que las palabras que usted quiere poner en él. 623 00:28:07,510 --> 00:28:11,290 Usted puede tener un lugar marcador de posición, como por ciento s, que 624 00:28:11,290 --> 00:28:15,500 que va a decir la computadora, puso una cadena aquí. 625 00:28:15,500 --> 00:28:17,740 >> ¿Qué cadena de qué queremos poner allí? 626 00:28:17,740 --> 00:28:22,430 Will Resulta que entre estos paréntesis, que recuerdan, demarcan 627 00:28:22,430 --> 00:28:28,020 la entrada a una función, si usted tiene coma lista de cosas separado aquí, 628 00:28:28,020 --> 00:28:31,790 que en realidad pasa en múltiples entradas a una función. 629 00:28:31,790 --> 00:28:33,901 Así que al igual que algunos de Scratch bloques, puede que no 630 00:28:33,901 --> 00:28:36,150 han jugado con ellos sus proyectos aún o en todo, 631 00:28:36,150 --> 00:28:38,250 algunos bloques de Scratch tienen dos entradas. 632 00:28:38,250 --> 00:28:41,220 Dos cajas blancas que puedas escribir números o palabras en. 633 00:28:41,220 --> 00:28:45,210 Así que para no C tiene funciones como printf que puede tomar dos entradas. 634 00:28:45,210 --> 00:28:48,050 Y de nuevo, esta comas se separa. 635 00:28:48,050 --> 00:28:51,070 Así que en Inglés, de nuevo, incluso si nunca has programado antes, 636 00:28:51,070 --> 00:28:55,320 por que printf lógica es una función, toma dos entradas, una de las cuales 637 00:28:55,320 --> 00:28:58,810 es un marcador de posición, ¿qué esperanza printf se va a hacer con esta entrada? 638 00:28:58,810 --> 00:29:01,470 639 00:29:01,470 --> 00:29:03,220 Va a decir hola Hannah, con suerte. 640 00:29:03,220 --> 00:29:05,274 Así que para hacer esto tenemos que salvarlo. 641 00:29:05,274 --> 00:29:06,190 Me voy a alejar. 642 00:29:06,190 --> 00:29:10,701 Voy a volver a bajar aquí y decir hola hacen entrar. 643 00:29:10,701 --> 00:29:11,200 Oh. 644 00:29:11,200 --> 00:29:14,830 Algo está mal, y de hecho esto es bastante abrumador. 645 00:29:14,830 --> 00:29:18,400 Tengo seis líneas de código y al igual que 12 líneas de errores. 646 00:29:18,400 --> 00:29:22,120 Por lo tanto, esperamos que esto. 647 00:29:22,120 --> 00:29:24,260 Entonces, ¿qué está pasando aquí? 648 00:29:24,260 --> 00:29:27,370 Así que la mejor regla de oro aquí, sobre todo cuando estás empezando, 649 00:29:27,370 --> 00:29:29,370 no distraerse por las cosas en la parte inferior. 650 00:29:29,370 --> 00:29:31,220 De hecho, muy deliberadamente simplemente desplazado hasta 651 00:29:31,220 --> 00:29:33,930 porque muy a menudo, una computadora es no todo lo que brillante de un dispositivo. 652 00:29:33,930 --> 00:29:35,054 Se va a confundirse. 653 00:29:35,054 --> 00:29:37,220 Si ve una cosa que que no entiende, 654 00:29:37,220 --> 00:29:40,030 podría confundir otra líneas de código como incorrectas, 655 00:29:40,030 --> 00:29:41,649 aunque son perfectamente bien. 656 00:29:41,649 --> 00:29:43,940 Así que siempre quiere trabajar de arriba hacia abajo a través de los errores. 657 00:29:43,940 --> 00:29:47,850 Y la verdad es que esto es súper arcano en el momento. 658 00:29:47,850 --> 00:29:50,830 >> Error, el uso de no declarado cadena de identificador. 659 00:29:50,830 --> 00:29:52,130 ¿Me refiero estándar? 660 00:29:52,130 --> 00:29:53,720 No, me refería cadena. 661 00:29:53,720 --> 00:29:55,830 Y está apuntando a, tal vez es un error tipográfico. 662 00:29:55,830 --> 00:30:00,570 Algo así como, comprobación de ortografía en un manera muy geek, pero la razón aquí, 663 00:30:00,570 --> 00:30:02,840 y sabrás esto simplemente por la práctica, es 664 00:30:02,840 --> 00:30:06,390 que resulta que la cadena no existe en C. De hecho, C 665 00:30:06,390 --> 00:30:08,820 es un lenguaje particularmente de edad, y es muy bajo nivel, 666 00:30:08,820 --> 00:30:11,361 y no lo hace un montón de características que podría haber crecido 667 00:30:11,361 --> 00:30:14,620 con si usted tiene, de hecho, programada en Java, como algunos de ustedes tienen, 668 00:30:14,620 --> 00:30:16,980 pero se puede enseñar cosas nuevas. 669 00:30:16,980 --> 00:30:20,900 Y, de hecho, hemos hecho esto CS50, a pesar de que al final del semestre, 670 00:30:20,900 --> 00:30:23,512 todas estas ruedas de entrenamiento se habrá quitado, 671 00:30:23,512 --> 00:30:25,220 lo que hacemos en estos primer par de semanas 672 00:30:25,220 --> 00:30:29,830 inicialmente es también tenemos incluir CS50 punto h. 673 00:30:29,830 --> 00:30:31,230 ¿Qué es un archivo de cabecera. 674 00:30:31,230 --> 00:30:32,440 Más sobre esto en el futuro. 675 00:30:32,440 --> 00:30:36,430 >> Es un archivo que contiene funciones que hemos escrito para ti. 676 00:30:36,430 --> 00:30:39,180 Y entre esas funciones es funciones, para sacar de entrada 677 00:30:39,180 --> 00:30:43,520 por parte del usuario, como cuerdas, y números y los números reales, y más. 678 00:30:43,520 --> 00:30:45,550 Pero también tiene algunos atajos. 679 00:30:45,550 --> 00:30:48,200 Define un booleano como un tipo de datos. 680 00:30:48,200 --> 00:30:50,340 C no tiene verdaderas o falsas. 681 00:30:50,340 --> 00:30:53,880 Pero podemos darle la noción de verdadero o falso a través de esta biblioteca. 682 00:30:53,880 --> 00:30:57,670 Y también no tiene una cadena construida en hasta incluimos esta línea. 683 00:30:57,670 --> 00:31:01,090 Así que esta línea de código indica el compilador, hey, Clang, mira 684 00:31:01,090 --> 00:31:03,570 en este archivo para un conjunto montón de código que CS50 685 00:31:03,570 --> 00:31:06,330 ha escrito de manera que cualquier persona que utilice este archivo 686 00:31:06,330 --> 00:31:09,330 puede dar por sentada la características han añadido. 687 00:31:09,330 --> 00:31:11,220 >> Así que ahora me dejes ir por delante y borrar la pantalla, 688 00:31:11,220 --> 00:31:14,178 y si curiosa Sólo digo de control l cada vez para borrar la pantalla, 689 00:31:14,178 --> 00:31:15,500 o puede escribir claro. 690 00:31:15,500 --> 00:31:19,220 Yo sólo voy a seguir adelante y ahora Tipo hacen hola, y todo está bien. 691 00:31:19,220 --> 00:31:22,550 Aún así una salida arcano, pero no es un mensaje erróneo. 692 00:31:22,550 --> 00:31:28,300 Y si hago punto slash hola, y como a un lado, slash dot es desconocido para la mayoría. 693 00:31:28,300 --> 00:31:30,430 Sólo significa, medio punto el directorio actual. 694 00:31:30,430 --> 00:31:33,120 Así que si usted ha utilizado alguna vez DOS o Linux o Unix 695 00:31:33,120 --> 00:31:35,410 usted podría haber hecho algo como cd punto punto, donde 696 00:31:35,410 --> 00:31:39,220 punto punto significa ir hacia atrás en el tiempo, o ir hacia atrás, o más arriba 697 00:31:39,220 --> 00:31:40,370 en su directorio. 698 00:31:40,370 --> 00:31:43,090 Dot sólo significa mirar en el directorio actual. 699 00:31:43,090 --> 00:31:45,670 Quiero saludar, que está justo aquí. 700 00:31:45,670 --> 00:31:47,750 Y, de hecho, ahora se dice hola Hannah. 701 00:31:47,750 --> 00:31:51,120 Y si cambio de nuevo a María, recompilar 702 00:31:51,120 --> 00:31:55,650 haría hola, slash dot hola, el programa sigue cambiando. 703 00:31:55,650 --> 00:31:58,060 >> Pero esto sigue siendo una programa bastante estúpido. 704 00:31:58,060 --> 00:32:00,972 Si quiero enviar este programa, o dárselo a un amigo, 705 00:32:00,972 --> 00:32:03,430 o dárselo a María o Ana para el caso, eso está bien. 706 00:32:03,430 --> 00:32:07,300 Puedo personalizarlo para ambos, pero nunca va a ser dinámico. 707 00:32:07,300 --> 00:32:10,870 No pueden cambiar una vez que se compiló abajo en esos ceros y unos. 708 00:32:10,870 --> 00:32:12,350 Así que lo que hicimos algo más inteligente? 709 00:32:12,350 --> 00:32:17,100 ¿Qué pasaría si, en lugar de duro-codificación en el programa el nombre de esta persona, 710 00:32:17,100 --> 00:32:20,890 ¿y si nos acaba de llegar la cadena de la demanda? 711 00:32:20,890 --> 00:32:22,430 >> En otras palabras, déjame hacer esto. 712 00:32:22,430 --> 00:32:24,030 Voy a volver a compilar este programa. 713 00:32:24,030 --> 00:32:25,710 Y permítanme el zoom en la parte inferior ahora. 714 00:32:25,710 --> 00:32:29,920 Hacer hola slash dot hola. 715 00:32:29,920 --> 00:32:31,710 Ahora no está pasando nada. 716 00:32:31,710 --> 00:32:35,860 ¿Podemos obtener un voluntario rápida ¿hacer que algo suceda? 717 00:32:35,860 --> 00:32:36,360 Vamos arriba. 718 00:32:36,360 --> 00:32:37,020 ¿Cómo te llamas? 719 00:32:37,020 --> 00:32:37,445 >> PANCHO: Pancho. 720 00:32:37,445 --> 00:32:38,361 >> DAVID J. MALAN: Pacho? 721 00:32:38,361 --> 00:32:39,609 Vamos arriba. 722 00:32:39,609 --> 00:32:42,150 Una vez que llegue aquí, esto es va a ser muy decepcionante, 723 00:32:42,150 --> 00:32:44,060 pero es más interesante que yo escribiéndolo. 724 00:32:44,060 --> 00:32:49,007 Si quieres seguir adelante y escriba su nombre, me hizo este programa sólo para usted. 725 00:32:49,007 --> 00:32:49,840 Sólo tienes que escribir tu nombre. 726 00:32:49,840 --> 00:32:52,380 727 00:32:52,380 --> 00:32:53,900 Intro. 728 00:32:53,900 --> 00:32:54,489 Maravilloso. 729 00:32:54,489 --> 00:32:55,780 Muy bien, muchas gracias. 730 00:32:55,780 --> 00:32:56,708 >> PANCHO: Muchas gracias. 731 00:32:56,708 --> 00:32:57,636 >> DAVID J. MALAN: OK. 732 00:32:57,636 --> 00:32:59,028 >> [Aplausos] 733 00:32:59,028 --> 00:33:00,884 734 00:33:00,884 --> 00:33:01,840 >> Eso fue muy amable. 735 00:33:01,840 --> 00:33:03,145 Aqui tienes. 736 00:33:03,145 --> 00:33:03,770 ¿Qué hicimos? 737 00:33:03,770 --> 00:33:05,930 Así que finalmente, al menos, hecho este programa dinámico. 738 00:33:05,930 --> 00:33:08,400 Ahora sigue siendo duda por diseño decepcionante, 739 00:33:08,400 --> 00:33:11,480 pero por fin tenemos la capacidad ahora que escribir código de antemano, mucho 740 00:33:11,480 --> 00:33:13,770 al igual que los autores de printf, y luego dinámicamente 741 00:33:13,770 --> 00:33:17,550 ADAPT basado en la entrada somos entregado, ya sea por el programador, 742 00:33:17,550 --> 00:33:20,610 o por el ser humano que es en realidad interactuar con el programa. 743 00:33:20,610 --> 00:33:22,990 Así que vamos a tratar en realidad ahora hacer algunas otras construcciones 744 00:33:22,990 --> 00:33:26,625 y ver si no podemos hacer que los programas a sí mismos más sofisticado. 745 00:33:26,625 --> 00:33:29,250 Así que vamos a seguir adelante y en lugar de escribir esta uno desde cero, 746 00:33:29,250 --> 00:33:31,540 Voy a ir a hoy código fuente, y todo esto 747 00:33:31,540 --> 00:33:34,290 está disponible en el curso de sitio web, y usted puede arrastrarlo 748 00:33:34,290 --> 00:33:36,590 en su propio entorno llegado Viernes vez problema 749 00:33:36,590 --> 00:33:38,506 conjunto 1 le da la instrucciones, o usted podría 750 00:33:38,506 --> 00:33:41,200 hacerlo en la línea de comandos bien, pero más por venir en conjunto 1 p. 751 00:33:41,200 --> 00:33:44,940 >> Vamos a ver lo que hay en este programa aquí se llama, punto sumador c. 752 00:33:44,940 --> 00:33:47,970 Ahora que ya he comentado , pero ¿qué hay de nuevo? 753 00:33:47,970 --> 00:33:51,230 A primera vista, qué línea del código es absolutamente nuevo? 754 00:33:51,230 --> 00:33:53,930 755 00:33:53,930 --> 00:33:56,780 Probablemente no, fundamentalmente, familiarizados ahora. 756 00:33:56,780 --> 00:33:58,417 >> AUDIENCIA: [inaudible] 757 00:33:58,417 --> 00:34:00,250 DAVID J. MALAN: Sí, así int x es igual a tener n. 758 00:34:00,250 --> 00:34:03,760 Nunca hemos visto algo de esto antes, pero int es probablemente 759 00:34:03,760 --> 00:34:08,179 el símbolo de la clase de variables, [? de?] un número entero. 760 00:34:08,179 --> 00:34:09,040 Así int por entero. 761 00:34:09,040 --> 00:34:11,420 Es sólo siendo más sucinta. x es sólo arbitraria. 762 00:34:11,420 --> 00:34:13,920 x y y y z son todavía bastante razonable para los números, 763 00:34:13,920 --> 00:34:16,790 pero en general vamos a utilizar palabras una vez nuestros programas se vuelven más complejas. 764 00:34:16,790 --> 00:34:18,940 Obtener int, por supuesto, al igual que la cadena get, 765 00:34:18,940 --> 00:34:21,629 es, probablemente, va a conseguir un int del usuario, 766 00:34:21,629 --> 00:34:23,670 y luego vamos a hacer lo mismo con y. 767 00:34:23,670 --> 00:34:27,610 Y al parecer, a pesar de que este última línea, de 24 años, parece más compleja, 768 00:34:27,610 --> 00:34:32,679 que va a decir la suma de esta y es esta otra cosa. 769 00:34:32,679 --> 00:34:35,840 >> Y fíjense ciento i probablemente denota qué? 770 00:34:35,840 --> 00:34:38,190 ¿Qué papel hace ciento i aparentemente sirvo? 771 00:34:38,190 --> 00:34:40,739 772 00:34:40,739 --> 00:34:41,719 Es sólo marcadores de posición. 773 00:34:41,719 --> 00:34:42,219 ¿Correcto? 774 00:34:42,219 --> 00:34:45,149 Porcentaje s era para cuerda, ciento i es por entero. 775 00:34:45,149 --> 00:34:47,690 No va a ser ciento f por valor de punto, flotante que 776 00:34:47,690 --> 00:34:49,273 es sólo un número con un punto decimal. 777 00:34:49,273 --> 00:34:50,590 En otras palabras, un número real. 778 00:34:50,590 --> 00:34:55,270 Así que vamos a compilar esta realidad programar muy rápido y no hacer víbora. 779 00:34:55,270 --> 00:34:57,962 ¡Vaya. 780 00:34:57,962 --> 00:34:58,670 Buena oportunidad. 781 00:34:58,670 --> 00:35:02,970 Así que notar aquí, todo este tiempo mi usuario nombre para se jharvard esta cuenta. 782 00:35:02,970 --> 00:35:06,620 Estoy en IDE CS50, alias IDE50. 783 00:35:06,620 --> 00:35:11,030 Y ahora en azul aquí, es una mención, pero del medio ambiente, de donde yo soy. 784 00:35:11,030 --> 00:35:16,050 Y de hecho, si el zoom hasta la cima aquí, fíjate que tengo una IDE50 785 00:35:16,050 --> 00:35:19,490 y veo esta palabra, si la clase de gire la cabeza hacia un lado, espacio de trabajo. 786 00:35:19,490 --> 00:35:23,890 En pocas palabras, el hecho de que Estoy viendo espacio de trabajo de tala tilde 787 00:35:23,890 --> 00:35:26,910 significa que en este texto entorno de comandos basada, 788 00:35:26,910 --> 00:35:32,300 Estoy en el texto equivalente de esta gráfica carpeta aquí. 789 00:35:32,300 --> 00:35:35,730 Así que cuando lo hago slash dot víbora, es decir no la regla 790 00:35:35,730 --> 00:35:37,372 hacer parada sumador objetivo. 791 00:35:37,372 --> 00:35:39,830 No sé lo que eso significa, pero es malo por alguna razón. 792 00:35:39,830 --> 00:35:43,310 El fichero o directorio no existe es aún más clara. 793 00:35:43,310 --> 00:35:45,670 ¿Dónde está entonces? 794 00:35:45,670 --> 00:35:47,820 Basado en donde hice clic para abrir el archivo anterior. 795 00:35:47,820 --> 00:35:49,442 ¿Dónde podría ser? 796 00:35:49,442 --> 00:35:52,050 >> Es probablemente en la fuente un solo w, para el miércoles, 797 00:35:52,050 --> 00:35:53,960 y puedo ver que, en efecto, si abro eso. 798 00:35:53,960 --> 00:35:57,220 Hay sumador de punto c, pero en este entorno basado en texto, 799 00:35:57,220 --> 00:35:59,380 de nuevo, tengo que ser muy explícito. 800 00:35:59,380 --> 00:36:03,950 Si quiero cambiar de directorio en fuente de un miércoles, necesito escribir, 801 00:36:03,950 --> 00:36:07,210 cd espacio de origen se Miércoles entrar y ahora 802 00:36:07,210 --> 00:36:09,810 mis prompt cambia a dame una señal visual que 803 00:36:09,810 --> 00:36:12,330 Yo soy, de hecho, en otros lugares en mi entorno, 804 00:36:12,330 --> 00:36:15,710 pero ahora que puedo hacer hacer víbora, parece que funciona, 805 00:36:15,710 --> 00:36:18,190 punto slash víbora, dame un entero. 806 00:36:18,190 --> 00:36:19,080 Uno. 807 00:36:19,080 --> 00:36:20,070 Dos. 808 00:36:20,070 --> 00:36:21,630 La suma de uno y dos es tres. 809 00:36:21,630 --> 00:36:24,140 Pero si yo no coopero, vamos a ver lo consigue int hace. 810 00:36:24,140 --> 00:36:25,200 Dame un entero. 811 00:36:25,200 --> 00:36:26,590 No. 812 00:36:26,590 --> 00:36:27,350 Vuelva a intentarlo. 813 00:36:27,350 --> 00:36:29,060 OK. 814 00:36:29,060 --> 00:36:30,520 Fine. 815 00:36:30,520 --> 00:36:32,130 50. 816 00:36:32,130 --> 00:36:32,680 50. 817 00:36:32,680 --> 00:36:33,010 Correcto. 818 00:36:33,010 --> 00:36:34,055 Por lo tanto, finalmente coopera. 819 00:36:34,055 --> 00:36:36,430 Y eso es parte de la funcionalidad que estas funciones 820 00:36:36,430 --> 00:36:37,760 se han incorporado para usted. 821 00:36:37,760 --> 00:36:43,330 >> Por lo tanto dentro de la implementación de conseguir int, lo que la programación 822 00:36:43,330 --> 00:36:47,990 construir a partir de la semana pasada es probablemente en no para obligar a este comportamiento de reintento, 823 00:36:47,990 --> 00:36:49,962 reintentar, vuelva a intentar? 824 00:36:49,962 --> 00:36:51,670 Sí, es probable que haya algún tipo de bucle. 825 00:36:51,670 --> 00:36:54,160 Se va a ver sintácticamente diferente de bloques de Scratch, 826 00:36:54,160 --> 00:36:55,880 pero eso es de hecho lo que hay dentro del archivo. 827 00:36:55,880 --> 00:36:58,505 Y en unas semanas vamos a realmente se ven en la biblioteca CS50 828 00:36:58,505 --> 00:37:02,000 en cuanto a lo que hay dentro, pero hay un bucle imponer exactamente eso. 829 00:37:02,000 --> 00:37:04,840 >> Vamos a jugar un poco tonto juego aquí con este archivo. 830 00:37:04,840 --> 00:37:06,550 Condición del cero punto c. 831 00:37:06,550 --> 00:37:08,960 Sólo vamos a general comenzará a contar desde cero. 832 00:37:08,960 --> 00:37:11,220 Y sigo desplazamiento pasado algunas de las cosas en la parte superior. 833 00:37:11,220 --> 00:37:15,390 En azul aquí, demarcada con todo de estas estrellas y las barras, 834 00:37:15,390 --> 00:37:17,310 aquellos de ustedes que programar antes, ¿qué es eso? 835 00:37:17,310 --> 00:37:18,690 ¿Por qué seguimos saltando sobre ella? 836 00:37:18,690 --> 00:37:19,110 ¿Qué? 837 00:37:19,110 --> 00:37:19,490 >> AUDIENCIA: Es un comentario. 838 00:37:19,490 --> 00:37:19,800 >> DAVID J. MALAN: Sí. 839 00:37:19,800 --> 00:37:20,633 Es sólo un comentario. 840 00:37:20,633 --> 00:37:24,160 Este es un comentario para los seres humanos para leer, que en nuestro caso, 841 00:37:24,160 --> 00:37:27,120 nos dice lo que el nombre del archivo es decir, que la escribió, y lo que hace, 842 00:37:27,120 --> 00:37:28,610 de modo que usted no tiene para leer el código 843 00:37:28,610 --> 00:37:30,110 saber lo que este archivo se trata. 844 00:37:30,110 --> 00:37:33,110 Es sólo una descripción, pero funcionalmente es irrelevante. 845 00:37:33,110 --> 00:37:35,930 Y yo ni siquiera puedo borrarlo de mi archivo y que no tiene ningún impacto. 846 00:37:35,930 --> 00:37:38,740 Las líneas jugosas son éstos primero dos aquí, ahora. 847 00:37:38,740 --> 00:37:41,405 void main int es el equivalente de nuestra bandera verde cuando se hace clic, 848 00:37:41,405 --> 00:37:44,030 así que vamos a dejar que sea para hoy, y vamos a volver, 849 00:37:44,030 --> 00:37:46,940 Finalmente, en cuanto a lo int y sin efecto son, pero ahora, 850 00:37:46,940 --> 00:37:49,500 cuenta de lo que he hecho también en este caso, también puede, 851 00:37:49,500 --> 00:37:51,736 si tiene una en línea comentar, si usted tiene 852 00:37:51,736 --> 00:37:54,670 Un pensamiento que desea compartir sobre una determinada línea de código, 853 00:37:54,670 --> 00:37:58,910 convención en C es hacer slash recortar, y luego unas palabras breves, 854 00:37:58,910 --> 00:38:01,500 no una frase completa, generalmente no un párrafo, 855 00:38:01,500 --> 00:38:05,310 que simplemente explica a usted, o su TF, u otros lectores o compañeros de trabajo, 856 00:38:05,310 --> 00:38:06,990 lo que su código está haciendo. 857 00:38:06,990 --> 00:38:10,150 Así que en lugar de tener que mirar en este e inferir a partir de líneas 858 00:38:10,150 --> 00:38:12,550 nueve y 10, lo que es esta haciendo, en la línea de ocho 859 00:38:12,550 --> 00:38:14,945 Acabo de hacer un comentario al preguntar al usuario un número entero, 860 00:38:14,945 --> 00:38:17,820 entonces yo no tengo que pensar mucho acerca de lo que las líneas de nueve y 10 son. 861 00:38:17,820 --> 00:38:19,720 Sólo sé que eso es lo que colectivamente que están haciendo. 862 00:38:19,720 --> 00:38:20,460 >> ¿Cómo? 863 00:38:20,460 --> 00:38:22,060 Bueno, aquí está el símbolo. 864 00:38:22,060 --> 00:38:23,610 Aquí está el conseguir del int. 865 00:38:23,610 --> 00:38:25,984 Y en base a la anterior comportamiento, parece que get int 866 00:38:25,984 --> 00:38:29,080 es lo suficientemente inteligente como para asegurarse de que lo humano coopera y se lo da 867 00:38:29,080 --> 00:38:30,090 un entero. 868 00:38:30,090 --> 00:38:32,270 Pero ahora vemos esto. 869 00:38:32,270 --> 00:38:33,740 Y esto es una reminiscencia de Scratch. 870 00:38:33,740 --> 00:38:36,140 Estoy diciendo que estoy el análisis de la entrada del usuario, 871 00:38:36,140 --> 00:38:39,050 pero algo inexacta. 872 00:38:39,050 --> 00:38:43,200 Y esto al parecer en C es como expresamos un caso más, una rama, 873 00:38:43,200 --> 00:38:46,320 un tenedor en la carretera, pero yo decir algo imprecisa. 874 00:38:46,320 --> 00:38:50,470 ¿Cuál es el error en este programa? 875 00:38:50,470 --> 00:38:51,610 Acerca de respaldar aún más? 876 00:38:51,610 --> 00:38:52,223 Sí. 877 00:38:52,223 --> 00:38:53,150 >> AUDIENCIA: [inaudible] cero. 878 00:38:53,150 --> 00:38:54,025 >> DAVID J. MALAN: Sí. 879 00:38:54,025 --> 00:38:57,630 Así que si yo escribo en cero, vamos a considerar exactamente ese caso caso, o en la esquina, 880 00:38:57,630 --> 00:38:58,450 si se quiere. 881 00:38:58,450 --> 00:39:02,790 Así que si yo escribo en cero, lo que del bloques va aparentemente para apoderarse de él? 882 00:39:02,790 --> 00:39:04,660 El caso o de la otra persona? 883 00:39:04,660 --> 00:39:07,340 La otra persona, y que va a decir, que eligió un número negativo. 884 00:39:07,340 --> 00:39:10,476 Y, en efecto, no se supone cero a ser positivo o negativo, 885 00:39:10,476 --> 00:39:11,850 y por lo que sería erróneamente. 886 00:39:11,850 --> 00:39:12,930 Eso sería un error. 887 00:39:12,930 --> 00:39:14,580 Entonces, ¿cómo podemos solucionar este problema? 888 00:39:14,580 --> 00:39:16,360 Alguien que nunca ha programado antes? 889 00:39:16,360 --> 00:39:16,570 Quieres-- 890 00:39:16,570 --> 00:39:17,480 >> AUDIENCIA: [inaudible] 891 00:39:17,480 --> 00:39:17,990 >> DAVID J. MALAN: Retracción? 892 00:39:17,990 --> 00:39:18,570 >> AUDIENCIA: [inaudible] 893 00:39:18,570 --> 00:39:18,930 >> DAVID J. MALAN: Oh, usted tiene? 894 00:39:18,930 --> 00:39:20,350 Alguien que nunca ha programado antes. 895 00:39:20,350 --> 00:39:21,750 ¿Quieres probar su suerte en la esto, en la camisa roja? 896 00:39:21,750 --> 00:39:22,600 Vamos arriba. 897 00:39:22,600 --> 00:39:25,320 Oh sí, vamos para arriba, si no te importa. 898 00:39:25,320 --> 00:39:27,586 Así que nunca haber programado antes, ¿cómo te llamas? 899 00:39:27,586 --> 00:39:28,210 LAUREN: Lauren. 900 00:39:28,210 --> 00:39:29,626 DAVID J. MALAN: Lauren, de acuerdo. 901 00:39:29,626 --> 00:39:31,150 Así que corregir este error para nosotros. 902 00:39:31,150 --> 00:39:35,070 Usted no ha visto C, presumiblemente, y probablemente ningún otro idioma. 903 00:39:35,070 --> 00:39:38,380 Así que arreglar este programa para nosotros. 904 00:39:38,380 --> 00:39:39,100 Encantado de conocerte. 905 00:39:39,100 --> 00:39:39,615 Sin presiones. 906 00:39:39,615 --> 00:39:40,156 LAUREN: Sí. 907 00:39:40,156 --> 00:39:43,350 908 00:39:43,350 --> 00:39:46,270 >> DAVID J. MALAN: Pero, de nuevo, si esto apuesta va de acuerdo al plan, 909 00:39:46,270 --> 00:39:48,350 la comida para llevar aquí lo hará ser, simplemente de nuevo, para iniciar 910 00:39:48,350 --> 00:39:51,080 a notar patrones y inferir de sintaxis existente 911 00:39:51,080 --> 00:39:55,420 cómo es posible expresar lo demás usted mismo, sin juego de palabras, con el fin 912 00:39:55,420 --> 00:39:58,410 capturar algo escenario adicional. 913 00:39:58,410 --> 00:39:59,603 Así que estamos diciendo else if. 914 00:39:59,603 --> 00:40:04,040 915 00:40:04,040 --> 00:40:05,230 printf, bueno. 916 00:40:05,230 --> 00:40:09,120 Y cuenta con CS50 IDE, y el IDE frankly-- 917 00:40:09,120 --> 00:40:11,110 representa Integrado Entorno de desarrollo. 918 00:40:11,110 --> 00:40:14,110 Es sólo una forma elegante de decir un programa que ayuda a los programas. 919 00:40:14,110 --> 00:40:16,779 Lo hace fáciles de usar cosas como cuando se escribe un solo paréntesis, 920 00:40:16,779 --> 00:40:18,320 te da automáticamente el otro. 921 00:40:18,320 --> 00:40:20,760 La presunción es que eres finalmente va a querer escribir que, 922 00:40:20,760 --> 00:40:22,400 y también lo hace con comillas. 923 00:40:22,400 --> 00:40:24,190 >> Por eso me gusta la línea 23. 924 00:40:24,190 --> 00:40:26,400 El 99% del camino. 925 00:40:26,400 --> 00:40:29,920 Alguien quiere meter su cuchara con una punta? 926 00:40:29,920 --> 00:40:31,420 Oí punto y coma de la audiencia. 927 00:40:31,420 --> 00:40:32,080 Bien. 928 00:40:32,080 --> 00:40:33,260 Así que completa eso. 929 00:40:33,260 --> 00:40:37,930 Y ahora, sólo tengo un poco consternación con la línea 21. 930 00:40:37,930 --> 00:40:41,370 ¿Cómo queremos expresar esto? 931 00:40:41,370 --> 00:40:43,370 ¿Qué pregunta qué queremos preguntar, qué te parece? 932 00:40:43,370 --> 00:40:46,870 933 00:40:46,870 --> 00:40:50,330 Así que anteriormente hicimos la pregunta, si n es mayor que cero, hacer esto. 934 00:40:50,330 --> 00:40:51,870 Si no, hacer eso. 935 00:40:51,870 --> 00:40:54,317 Así que tenemos que elegir un pregunta que hacer aquí. 936 00:40:54,317 --> 00:40:55,192 AUDIENCIA: [inaudible] 937 00:40:55,192 --> 00:40:56,530 DAVID J. MALAN: Good. 938 00:40:56,530 --> 00:40:58,290 Así que si n es igual a cero. 939 00:40:58,290 --> 00:41:01,140 940 00:41:01,140 --> 00:41:02,100 Excelente. 941 00:41:02,100 --> 00:41:03,080 Así que vamos a hacer una pausa aquí. 942 00:41:03,080 --> 00:41:04,850 Muchas gracias por desafiar esto. 943 00:41:04,850 --> 00:41:10,890 Déjeme darle un poco merecido bola de la tensión, tal vez no. 944 00:41:10,890 --> 00:41:11,900 Así que estamos casi allí. 945 00:41:11,900 --> 00:41:14,790 De hecho, Lauren, si no lo hace mente, permítanme hacer un solo tweak aquí, 946 00:41:14,790 --> 00:41:17,850 sólo para ser coherente, incluso con lo que vimos en Scratch, lo 947 00:41:17,850 --> 00:41:21,080 hago lo que quiero hacer con líneas 21 y 24, sólo se basa de nuevo 948 00:41:21,080 --> 00:41:23,290 de cómo lo hicimos en Scratch, tal vez? 949 00:41:23,290 --> 00:41:24,230 >> AUDIENCIA: Mueva hacia arriba. 950 00:41:24,230 --> 00:41:25,605 >> DAVID J. MALAN: Sí, moverlo hacia arriba. 951 00:41:25,605 --> 00:41:30,260 Así la condición más, la tercera, o cuarta, o quinta, o rama final, 952 00:41:30,260 --> 00:41:34,100 de hecho había de venir después, y eso es sólo por convención, 953 00:41:34,100 --> 00:41:36,047 porque si se quiere. 954 00:41:36,047 --> 00:41:37,380 Así que necesito para hacer este truco. 955 00:41:37,380 --> 00:41:39,660 Y tengo que poner mi llave de vuelta aquí. 956 00:41:39,660 --> 00:41:42,700 Y ahora, este programa se compilará. 957 00:41:42,700 --> 00:41:46,140 Estamos tan cerca, pero hay un error muy, muy sutil. 958 00:41:46,140 --> 00:41:47,200 Veamos qué pasa. 959 00:41:47,200 --> 00:41:49,660 >> En primer lugar, déjame ir adelante y alejar la imagen. 960 00:41:49,660 --> 00:41:53,405 Voy a seguir adelante y escriba hacer condición cero. 961 00:41:53,405 --> 00:41:55,070 Oh, mentí. 962 00:41:55,070 --> 00:41:58,760 Ahora es el compilador realmente muy inteligente. 963 00:41:58,760 --> 00:42:00,950 Y yo no entiendo muy bien es un mensaje de error. 964 00:42:00,950 --> 00:42:04,310 Utilizando el resultado de una asignación como una condición sin paréntesis, 965 00:42:04,310 --> 00:42:05,740 aparentemente es malo. 966 00:42:05,740 --> 00:42:07,100 Pero ¿qué significa eso? 967 00:42:07,100 --> 00:42:10,860 >> Pues de nuevo, en busca de patrones en el código que hemos visto antes, 968 00:42:10,860 --> 00:42:16,640 lo que es la línea 17 realmente hacer, a pesar de que Lauren pretende ligeramente 969 00:42:16,640 --> 00:42:18,790 de otra manera? 970 00:42:18,790 --> 00:42:19,290 Sí. 971 00:42:19,290 --> 00:42:21,565 >> AUDIENCIA: [inaudible] 972 00:42:21,565 --> 00:42:22,440 DAVID J. MALAN: Sí. 973 00:42:22,440 --> 00:42:26,610 Así que recuerda el signo igual, al parecer, como hemos usado antes, no es igual. 974 00:42:26,610 --> 00:42:29,240 Su misión, de derecha a izquierda. 975 00:42:29,240 --> 00:42:33,810 Así que la línea 17 por el momento es una condición, y es 976 00:42:33,810 --> 00:42:37,890 la ejecución de código dentro de los paréntesis, pero cuando ese código se ejecuta, 977 00:42:37,890 --> 00:42:42,140 lo que está sucediendo con el valor de cero? 978 00:42:42,140 --> 00:42:45,250 ¿Qué está pasando con el valor de n? 979 00:42:45,250 --> 00:42:46,810 Convertirse en cero. 980 00:42:46,810 --> 00:42:50,520 Así que si n se está convirtiendo en cero, y otra vez, como la semana pasada, 981 00:42:50,520 --> 00:42:54,690 generalmente decimos que cero es falso y uno es verdadero, 982 00:42:54,690 --> 00:42:57,410 o si es una sola y no es cero. 983 00:42:57,410 --> 00:42:59,590 Así verdadero y lo falso, uno y 0. 984 00:42:59,590 --> 00:43:06,090 Si n como de la línea 17 ha sido dado el valor 0, es cero cierto? 985 00:43:06,090 --> 00:43:06,590 No. 986 00:43:06,590 --> 00:43:08,280 Por definición, el cero es falso. 987 00:43:08,280 --> 00:43:10,860 Esa es la convención que estamos va a aferrarse a seguir adelante. 988 00:43:10,860 --> 00:43:17,320 Lo mismo ocurrirá con las líneas 18, 19 y 20 cada vez se aplican ahora, lógicamente? 989 00:43:17,320 --> 00:43:18,320 No pueden. 990 00:43:18,320 --> 00:43:21,640 Así que le preguntamos a la pregunta pero no con bastante precisión, 991 00:43:21,640 --> 00:43:25,620 y no vas a saber esto a menos usted lo ha visto, la solución en C 992 00:43:25,620 --> 00:43:29,610 es cuando se quiere expresar la igualdad, dices iguales iguales. 993 00:43:29,610 --> 00:43:33,140 Así signo igual ya estaba agotado mediante cesión, de derecha a izquierda. 994 00:43:33,140 --> 00:43:35,110 Es igual a igual a los medios es igual. 995 00:43:35,110 --> 00:43:37,950 Y si realmente quieres que tu mente a doblar, en JavaScript y PHP, 996 00:43:37,950 --> 00:43:40,490 no es igual a igual a los iguales, que significa algo completamente distinto, 997 00:43:40,490 --> 00:43:41,990 pero vamos a llegar a que en poco tiempo. 998 00:43:41,990 --> 00:43:45,760 >> Así que esta es una solución simple, pero se dan cuenta super fácil de hacer de este error, 999 00:43:45,760 --> 00:43:48,700 y luego se preguntan y la lucha por minuto, si no una hora, 1000 00:43:48,700 --> 00:43:51,490 ¿por qué es mi código no ejecutar como tengo la intención? 1001 00:43:51,490 --> 00:43:54,140 Es porque no se lo dijiste es exactamente lo que quería decir. 1002 00:43:54,140 --> 00:43:56,450 Así que era casi perfecto, y fue genial 1003 00:43:56,450 --> 00:44:00,760 que nos tropezamos con estos dos pequeños cosas porque ahora si las arreglamos, 1004 00:44:00,760 --> 00:44:06,240 y lo hago hacer condición de cero punto slash condición cero, 1005 00:44:06,240 --> 00:44:07,490 Me gustaría un entero por favor. 1006 00:44:07,490 --> 00:44:08,090 Vamos a ver. 1007 00:44:08,090 --> 00:44:09,160 No. 1008 00:44:09,160 --> 00:44:10,740 Se va a obligarme a hacerlo. 1009 00:44:10,740 --> 00:44:11,990 Así que 42. 1010 00:44:11,990 --> 00:44:13,590 Elegí un número positivo. 1011 00:44:13,590 --> 00:44:16,470 Así que ahora ¿Cómo demuestro este programa correcto? 1012 00:44:16,470 --> 00:44:19,990 Si usted es un matemático, no se puede realmente probar esto por ensayo y error, 1013 00:44:19,990 --> 00:44:20,490 ¿derecho? 1014 00:44:20,490 --> 00:44:23,180 Usted puede impermeabilizar no sólo por ejemplo, pero al menos 1015 00:44:23,180 --> 00:44:25,494 como programador no estamos va a tratar de demostrar por el momento 1016 00:44:25,494 --> 00:44:27,660 que este es en realidad correcto, pero probablemente debería 1017 00:44:27,660 --> 00:44:29,470 probar algunos casos representativos. 1018 00:44:29,470 --> 00:44:31,070 >> He probado 42. 1019 00:44:31,070 --> 00:44:33,030 Pude probar 43. 1020 00:44:33,030 --> 00:44:34,910 Pude probar 44. 1021 00:44:34,910 --> 00:44:35,640 Prueba 45. 1022 00:44:35,640 --> 00:44:36,140 ¿Correcto? 1023 00:44:36,140 --> 00:44:37,860 Pero podría hacerlo un tiempo muy largo. 1024 00:44:37,860 --> 00:44:39,925 ¿Cuál sería un poco más casos interesantes para probar? 1025 00:44:39,925 --> 00:44:41,050 AUDIENCIA: [inaudible] cero. 1026 00:44:41,050 --> 00:44:41,740 DAVID J. MALAN: Así que cero. 1027 00:44:41,740 --> 00:44:42,297 Ciertamente. 1028 00:44:42,297 --> 00:44:44,880 Y bueno, lo tenemos en esta ocasión, gracias al nuevo código de Lauren. 1029 00:44:44,880 --> 00:44:46,213 ¿Qué hay otro buen caso para tratar? 1030 00:44:46,213 --> 00:44:47,320 AUDIENCIA: Un punto negativo. 1031 00:44:47,320 --> 00:44:50,070 >> DAVID J. MALAN: un negativo, y tal vez algo un poco más grande, 1032 00:44:50,070 --> 00:44:52,617 así que tal vez negativo 42, pero en general, cuando 1033 00:44:52,617 --> 00:44:54,450 probar sus programas seguir adelante, eres 1034 00:44:54,450 --> 00:44:56,325 va a querer pensar a sí mismo, como lo 1035 00:44:56,325 --> 00:44:58,050 son los casos fundamentales diferentes. 1036 00:44:58,050 --> 00:45:01,720 Y me atrevo a decir un caso negativo, un caso positivo, y un caso cero 1037 00:45:01,720 --> 00:45:03,365 casi redondea a cabo. 1038 00:45:03,365 --> 00:45:04,990 Echemos un vistazo a una variante de este embargo. 1039 00:45:04,990 --> 00:45:06,930 Condiciones una. 1040 00:45:06,930 --> 00:45:11,224 Esta es una solución correcta aquí, de modo que usted verá dos y en línea, 1041 00:45:11,224 --> 00:45:13,390 si usted camina a través de la tutoriales, generalmente, 1042 00:45:13,390 --> 00:45:18,090 incrementar paso a paso hasta que éstos obtener exactamente el enfoque correcto. 1043 00:45:18,090 --> 00:45:20,070 Lo que si queríamos pedir dos preguntas a la vez? 1044 00:45:20,070 --> 00:45:22,200 >> Permítanme abrir este lugar. 1045 00:45:22,200 --> 00:45:26,740 Non-switch, por razones vamos a ver otra vez. 1046 00:45:26,740 --> 00:45:29,610 ¿Qué hay de nuevo sintácticamente aquí? 1047 00:45:29,610 --> 00:45:32,760 Actualmente estoy jugando un juego donde el equipo está diciendo 1048 00:45:32,760 --> 00:45:35,550 yo, yo doy un entero entre uno y 10, 1049 00:45:35,550 --> 00:45:37,180 y luego me estoy juzgando la entrada del usuario. 1050 00:45:37,180 --> 00:45:39,180 En Inglés, basado en el código que ves aquí 1051 00:45:39,180 --> 00:45:41,530 en azul, lo que hace este programa? 1052 00:45:41,530 --> 00:45:44,256 1053 00:45:44,256 --> 00:45:46,380 AUDIENCIA: [inaudible] recogido un número grande o pequeño. 1054 00:45:46,380 --> 00:45:46,484 DAVID J. MALAN: Sí. 1055 00:45:46,484 --> 00:45:49,450 Es sólo la adjudicación si Elegí un grande, o medio, 1056 00:45:49,450 --> 00:45:53,900 o número pequeño basa en una muy definición arbitraria de pequeñas, medianas, 1057 00:45:53,900 --> 00:45:58,510 y grandes aquí, pero aviso la sintaxis que es nuevo es la siguiente. 1058 00:45:58,510 --> 00:46:02,340 Hay no menos de int o igual a firmar, o mayor que o igual a firmar, 1059 00:46:02,340 --> 00:46:05,430 donde uno es sobre el otro, que puede expresar en como Microsoft Word. 1060 00:46:05,430 --> 00:46:08,180 Así que en un lenguaje de programación que normalmente sólo hacer dos personajes, 1061 00:46:08,180 --> 00:46:09,450 uno después del otro. 1062 00:46:09,450 --> 00:46:12,695 ¿Y qué tiene esto probablemente representar, signo ampersand. 1063 00:46:12,695 --> 00:46:13,570 AUDIENCIA: [inaudible] 1064 00:46:13,570 --> 00:46:13,680 DAVID J. MALAN: Sí. 1065 00:46:13,680 --> 00:46:16,910 Sólo significa y porque Resulta que los autores de C 1066 00:46:16,910 --> 00:46:19,120 utilizado un solo signo, que se podría pensar 1067 00:46:19,120 --> 00:46:22,430 sería perfecto para la noción y de, ya está agotado, 1068 00:46:22,430 --> 00:46:27,300 signo tan ampersand realidad capta el caso que realmente queremos. 1069 00:46:27,300 --> 00:46:30,610 >> Así que ahora vamos a tropezar a través de dos cosas. 1070 00:46:30,610 --> 00:46:32,640 Déjame ir por delante y abrir una. 1071 00:46:32,640 --> 00:46:36,590 Algo que es un poco preocupante. 1072 00:46:36,590 --> 00:46:37,970 La imprecisión del punto c. 1073 00:46:37,970 --> 00:46:40,260 Permítanme presentarles a dos cosas aquí. 1074 00:46:40,260 --> 00:46:44,720 Uno, el aviso de que podemos hacer matemáticas, ya que al igual que antes, cuando 1075 00:46:44,720 --> 00:46:47,797 hicimos más de dos números, x e y. 1076 00:46:47,797 --> 00:46:49,380 ¿Qué es este programa, aparentemente haciendo? 1077 00:46:49,380 --> 00:46:52,140 Yo no he comentado todavía, y yo he introducido ciento f, 1078 00:46:52,140 --> 00:46:55,720 pero rápidamente he dicho antes ciento f significa punto flotante 1079 00:46:55,720 --> 00:46:56,970 valor, que es un número real. 1080 00:46:56,970 --> 00:46:59,520 Algo con un decimal punto, que no es un entero. 1081 00:46:59,520 --> 00:47:02,270 ¿Qué crees que este programa es tratando de mostrar en la pantalla? 1082 00:47:02,270 --> 00:47:05,060 1083 00:47:05,060 --> 00:47:06,050 ¿Sí? 1084 00:47:06,050 --> 00:47:07,550 AUDIENCIA: El resultado de una sobre 10. 1085 00:47:07,550 --> 00:47:07,780 DAVID J. MALAN: Sí. 1086 00:47:07,780 --> 00:47:09,680 ¿Cuál es el resultado de uno dividido por 10. 1087 00:47:09,680 --> 00:47:12,721 Claro, porque todos ustedes tienen probablemente crecido sabiendo que uno de más de 10 1088 00:47:12,721 --> 00:47:14,502 ¿Es que? 1089 00:47:14,502 --> 00:47:16,220 Sí, es sólo un décima o 0.1. 1090 00:47:16,220 --> 00:47:16,720 ¿Correcto? 1091 00:47:16,720 --> 00:47:19,010 Así que vamos a ver lo que esto realmente es. 1092 00:47:19,010 --> 00:47:21,010 Así que déjame ir adelante y salvar esto. 1093 00:47:21,010 --> 00:47:21,970 Déjame ir aquí. 1094 00:47:21,970 --> 00:47:26,360 Hacer slash dot imprecisión imprecisión y aviso, también, 1095 00:47:26,360 --> 00:47:29,380 en un entorno Linux, no lo hace tener que escribir la imprecisión y tomar 1096 00:47:29,380 --> 00:47:30,010 todo el día. 1097 00:47:30,010 --> 00:47:32,910 Por lo general, si se golpea Tab, se terminará su pensamiento para usted, 1098 00:47:32,910 --> 00:47:36,660 basado en las palabras que están disponible en el directorio actual. 1099 00:47:36,660 --> 00:47:37,160 OK. 1100 00:47:37,160 --> 00:47:37,970 Así que usted tenía razón. 1101 00:47:37,970 --> 00:47:41,239 Uno dividido por 10 es, de hecho, 0,1. 1102 00:47:41,239 --> 00:47:42,280 Pero yo soy un poco curioso. 1103 00:47:42,280 --> 00:47:44,196 Y resulta printf apoya algunas características 1104 00:47:44,196 --> 00:47:48,700 mediante el cual se puede especificar más de el número predeterminado de puntos decimales. 1105 00:47:48,700 --> 00:47:52,140 Así que si quiero ver 10 decimal puntos que puedo hacer por ciento, 1106 00:47:52,140 --> 00:47:55,510 para el símbolo de marcador de posición, punto 10 para, dame 10 puntos decimales, 1107 00:47:55,510 --> 00:47:58,140 y luego sigue en coma flotante valor, y, como un aparte, 1108 00:47:58,140 --> 00:48:01,550 ¿qué es esta barra invertida n al parecer seguimos usando? 1109 00:48:01,550 --> 00:48:03,450 Resulta que es un símbolo de una nueva línea. 1110 00:48:03,450 --> 00:48:05,970 Es la manera muy explícita de decir a la computadora, 1111 00:48:05,970 --> 00:48:08,759 mover el cursor a la siguiente línea después ya está. 1112 00:48:08,759 --> 00:48:10,800 Y vamos a ver qué pasa cuando no hacemos eso. 1113 00:48:10,800 --> 00:48:12,430 >> Permítanme recompilar hacer imprecisión. 1114 00:48:12,430 --> 00:48:15,320 1115 00:48:15,320 --> 00:48:18,356 Ahora dot recortar imprecisión. 1116 00:48:18,356 --> 00:48:18,930 OK. 1117 00:48:18,930 --> 00:48:19,780 Aún derecha. 1118 00:48:19,780 --> 00:48:21,512 Uno dividido por 10. 1119 00:48:21,512 --> 00:48:23,220 Ahora me estoy poniendo un poco curioso, sin embargo. 1120 00:48:23,220 --> 00:48:27,599 ¿Qué pasa si me veo 20 decimal señala, recompilar, vuelva a ejecutar, 1121 00:48:27,599 --> 00:48:29,390 y como un lado para velocidad, también puede utilizar 1122 00:48:29,390 --> 00:48:31,800 la flechas arriba y abajo para desplazarse a través de su historia, 1123 00:48:31,800 --> 00:48:35,476 por lo que no tiene que mantener volver a escribir estos comandos, introduzca. 1124 00:48:35,476 --> 00:48:36,910 ¿Eh. 1125 00:48:36,910 --> 00:48:39,220 No aprendí que en la escuela primaria. 1126 00:48:39,220 --> 00:48:43,260 Muy bien, así que me dejó ver como 29 lugares fuera. 1127 00:48:43,260 --> 00:48:44,300 Tal vez es sólo una casualidad. 1128 00:48:44,300 --> 00:48:46,907 Tal vez mi ordenador está actuando raro. 1129 00:48:46,907 --> 00:48:47,990 Eso no es una cosa, ¿verdad? 1130 00:48:47,990 --> 00:48:50,300 Se está haciendo algo determinista. 1131 00:48:50,300 --> 00:48:53,410 Así que la imprecisión. 1132 00:48:53,410 --> 00:48:54,890 OK, nada bueno. 1133 00:48:54,890 --> 00:48:57,620 ¿Entonces qué está pasando? 1134 00:48:57,620 --> 00:49:00,160 >> Así que al parecer su profesor ha estado mintiendo 1135 00:49:00,160 --> 00:49:03,900 para que todo este tiempo para razones que veremos en poco tiempo. 1136 00:49:03,900 --> 00:49:05,569 Pero vamos a terminar con otro programa. 1137 00:49:05,569 --> 00:49:07,860 Esto es un poco de los programas alguien escribió hace algunos años, 1138 00:49:07,860 --> 00:49:08,990 y es en realidad parte de un concurso. 1139 00:49:08,990 --> 00:49:11,198 En realidad, nadie escribe código así, y si lo hace, 1140 00:49:11,198 --> 00:49:12,880 esto es estilísticamente un problema. 1141 00:49:12,880 --> 00:49:14,660 Pero la gente hace esto para exigir derechos. 1142 00:49:14,660 --> 00:49:17,260 Para escribir el más confuso programa que busca 1143 00:49:17,260 --> 00:49:19,110 sin embargo, hace algo interesante. 1144 00:49:19,110 --> 00:49:23,930 Y la nota que pensamos que lo dejamos en hoy, antes de Colton nos toca aquí, 1145 00:49:23,930 --> 00:49:27,840 es ejecutar este programa, que, incluso en sólo usar 1146 00:49:27,840 --> 00:49:31,450 C en esta basado en texto medio ambiente, nosotros esto da. 1147 00:49:31,450 --> 00:49:32,264 Maldita sea. 1148 00:49:32,264 --> 00:49:34,930 >> [Risas] 1149 00:49:34,930 --> 00:49:36,800 >> Colocarse. 1150 00:49:36,800 --> 00:49:39,340 [Inaudible] c tablero l m. 1151 00:49:39,340 --> 00:49:42,885 Vas a ver el mágico encantamiento que vamos a ver en poco tiempo. 1152 00:49:42,885 --> 00:49:45,780 [Inaudible] Muy bien. 1153 00:49:45,780 --> 00:49:51,592 Y ahora usted puede incluso hacer cosas como esta. 1154 00:49:51,592 --> 00:49:52,340 Eso es. 1155 00:49:52,340 --> 00:49:56,410 Porque nosotros CS50, verá que el viernes. 1156 00:49:56,410 --> 00:49:58,910 >> [REPRODUCCIÓN DE MÚSICA] 1157 00:49:58,910 --> 00:52:38,390 1158 00:52:38,390 --> 00:52:41,440 >> [Aplausos] 1159 00:52:41,440 --> 00:52:42,812