[REPRODUCCIÓN DE VÍDEO] -A Triunfo de matemática y habilidad mecánica es esta gran nueva automática calculadora de la Universidad de Harvard. Un complejo entramado de problemas en matemáticas puesto a través de la máquina en forma codificada en la cinta se resuelven con precisión en un diminuta fracción del tiempo requerido para el cálculo humano. Diseñado para agilizar todas las formas de la investigación matemática y científica, el cerebro mecánico gigante va a trabajar para la Marina de los Estados Unidos hasta el final de la guerra. [FIN DE REPRODUCCIÓN] DAVID J. MALAN: Esta, es CS50. El pasado fue un mágico lugar, pero si alguna vez has preguntó qué ese dispositivo es en Harvard Science Center, es de hecho parte de la Harvard Mark I, y es en exhibición en la actualidad durante los últimos años. Y lo que verás incrustado en conjunto de problemas uno es una mirada detrás de las escenas a lo que hizo ese dispositivo, y lo hace, del profesor Harry Lewis, quien se encuentra en el departamento de ciencias de la computación aquí. Así que más en que en sólo un poco. Pero hoy empezamos a transición desde la semana pasada a esta, y vamos a traer mención de una fotografía aquí que en realidad es bastante famoso. ¿Alguien sabe lo que esto aquí está en la pantalla? Al menos según el mito. Sí. AUDIENCIA: El primer virus. DAVID J. MALAN: Así que fue supuestamente el primer fallo real en un ordenador. Ahora bien, en la realidad la palabra bicho, por un error en un programa, ha estado con nosotros desde hace algún tiempo en el mundo físico, y este fue uno de los primeros tiempos documentados donde alguien realmente arrancó una gran polilla de la Marca Computadora II, lo puso en el ligante, y luego lo grabó como el primer error conocido en realidad se han encontrado físicamente. Así que por lo tanto fue introducida que en la tradición de hoy. Todo, desde la última semana está disponible en línea. En particular, los recursos que usted puede ser no necesariamente notar, especialmente si viene aquí en persona. Así que uno de los becarios de enseñanza cada años hace que un conjunto canónico de notas, por lo que no es necesario mantener la cabeza hacia abajo, tratando transcribir casi cualquier cosa eso podría suceder aquí en clase. Así que darse cuenta de que aquellos llamado [? Scribd?] Notas están en línea, sin duda las diapositivas y código fuente que usamos en clase. Hacemos transcripciones de texto completo disponibles también. Así que si usted recuerda vagamente algunos plazo, y quieren mirar hacia arriba un poco más fácilmente, se dan cuenta de que todo de que se puede buscar en línea. Además de tutoriales también. De hecho, hoy comenzamos a mirar un lenguaje de programación de nivel inferior, que pronto será conocido por nosotros como C, y es muy fácil al tipo de perderse después de sólo unos pocos tiempo de momentos, y luego una especie de maravilla cómo en realidad nos dieron a algunos más ejemplo complejo desde el más simple. Y así vamos a darnos cuenta de la cereza recoger durante la clase algunos de los ejemplos representativos, pero dan cuenta de que mucho más es también disponible en línea para que pueda trabajar a través de él a su propio ritmo, sin embargo, usted está más cómodo. Pero lo dejamos con programas que eran sólo eso. Así que hago clic en la bandera verde, y qué hace este programa? Dice, hola, mundo. Esto hace que el gato decir hola en su pequeño mundo en la parte superior izquierda de interfaz de usuario de Scratch. Pero empezamos a introducir alguna terminología semana pasada. Y así, este tipo de cosas nos llaman y qué? ¿Cuál podría ser el término genérico para esto? Sí. Un método o una declaración. Claro, es una acción. Hacer esto. Y sin embargo, había otras formas a cero, además de estos llamados declaración, que eran también cosas como esta, que llamamos qué? Sí. Por lo tanto un bucle. Y en este caso, esta cosa repeticiones, obviamente, 10 veces. Hay un bloque de siempre. Hay un par de los demás. Y hoy vamos a ver la forma de traducir esto a un mundo más moderno, si se quiere, aunque es va a parecer a primera vista ser mucho más arcano. Pero esos eran de hecho los bucles. Y luego tenemos cosas como esto, que tenía esta forma, y esencialmente preguntas. Y nos referimos a estos como qué? AUDIENCIA: expresión booleana. DAVID J. MALAN: Sí. Expresión booleana. Algo que es verdadero o falso, sí o no, uno o cero, sin embargo usted desea ver el mundo. Pero llamamos los booleana expresiones, y les enchufe en condiciones, o ramas. Y en el mundo de Scratch, todo muy bien enclavamientos en cuanto a su forma, si tiene sentido lógico para hacerlo, pero usted no tiene que parar en solo haciendo una cosa condicionalmente, usted puede tener una proverbial bifurcación en el camino y hacer esto o que si la condición es verdadera o no. Y entonces, como se verá, si usted no lo ha hecho, Usted puede incluso anidan estos bloques. Así arañazos crece para llenar las formas que es posible que desee insertar en él, por lo que en realidad se puede expresar más cualquier lógica de que es posible que desee hacer. Ahora unas palabras de anuncio por tanto aquí como en New Haven. Así seccionamiento comienza hoy. La dirección de esta se encuentra en el curso de sitio web, para quienes no están familiarizados. Secciones serán un oportunidad de reunirse en un ambiente mucho más íntimo que no sea [? Sanders?] Permite, con 10 a 20 compañeros de clase con una enseñanza compañero en diferentes pistas, y ritmos diferentes, si así lo desean. De hecho las ofertas de cursos diferentes secciones para los menos cómodo, más cómodo, y en algún punto intermedio, y el papel de oro aquí, es no hay una definición formal, pero si usted es menos cómodo, que tipo de darte cuenta. Estás un poco intrépido sobre la idea de poner un pie, tal vez, de vuelta en el aula, o mostrar hasta una de entre la sección. Si has estado en la programación ya que fueron seis años de edad, más cómodo, tal vez para usted. Y si se trata de una especie de cara o cruz, eso es exactamente lo que el intermedio está destinado a ser. Ahora, en el ínterin, para una clase de este tamaño, nos lleva bastante tiempo a la sección todos, por lo que hemos llamados, secciones súper, que hasta este fin de semana y principios de la próxima semana, así que échale un vistazo a la página web del curso para aquellos que son por supuesto de ancho, y también filmó para aquellos que no puede hacerlos. Y secciones mismos comenzarán en la semana tres de CS50 índice cero. CONJUNTO DE PROBLEMAS 0 ya está en la página web del curso. Y darse cuenta de que usted tiene nueve días finales de este semestre. Así que esta es una actualización de la última años, cuando teníamos cinco días de retraso. Así que si usted se está preguntando, tenemos nueve boletines de problemas. Tiene nueve días finales, cada uno de los cuales sólo se puede pasar una semana en. Eso hace que efectivamente todos el problema establece debido Viernes, pero el objetivo es poner un poco de poco de presión psicológica con ustedes para tratar de conseguir cosas en el jueves porque tan pronto descubrirá, para bien o para mal, la mayoría todo en el mundo del software termina tomar mucho más tiempo que usted anticipa. Así que considera que una especie de oportunidad de ayudar a ti mismo para apuntar jueves pero tranquilo por eso, sí, todo se debe Viernes. Y si envía ellos en Jueves, eso es maravilloso. No hay puntos de bonificación o adicional el crédito para cumplir con ese plazo. Es la intención de ser sólo una muleta. Y las horas de oficina, tanto aquí y en New Haven, en persona, si desea cumplir con cualquiera de nuestros cursos la enseñanza de los becarios y las entidades emisoras de asistencia. Correcto. Así que ahora, vamos a hacer esto más real. Y por un momento que va a comenzar para conseguir un poco más arcano, pero muy rápidamente el viernes y la semana que viene vamos a estar capaz de hacer mucho más que que pudimos hasta ahora en Scratch. Así que introdujimos último código semanas, aunque pictoral. Fue piezas del rompecabezas. Y formalizamos que es algo que se llama código fuente, sino que hizo parece? Bueno, parecía un poco algo como esto. Y, de hecho, sólo para la clase de embromar donde podemos ir con esto. Voy a seguir adelante y abrir una ventana aquí, y yo sólo voy a elegir nuevo archivo. Y me voy a guardar este archivo como algo parecido a punto hola c. Más acerca de que la elección de palabras un momento. Y esto es cómo alguien podría ir sobre la escritura de un programa. Incluya E / S estándar de punto h, int main vacío, y luego abrir corchete, cerca corchete, printf hola mundo coma, barra invertida n, punto y coma, Guardar, hecho. OK. He escrito mi primera programa, pero va a ser increíblemente decepcionados porque cuando en realidad ejecutar este programa, por supuesto, por primera escritura que hola, y luego dot recortar hola, y vamos a pasar por esto con mucho más detalle en un momento, eso es todo lo que hace. No estallar abierto todas las ventanas. No hace nada particularmente elegante. Todo lo que hace es lo que le dije a hacemos, pero ¿cómo llegamos a eso? Y ¿cómo construir sobre eso? Bueno, vamos a introducir algunos diferentes conceptos aquí. Así que uno, estamos a punto de comenzar utilizando un programa llamado un compilador. Existe un compilador para Mac OS, Windows, Linux, cualquier número de sistemas operativos, y pronto le presentaremos a la ambiente que vamos a utilizar, pero un compilador es sólo un general plazo para una pieza de software que lleva código fuente y produce código objeto de la misma. En otras palabras, si usted tiene como entrada la fuente código, algo así como lo que acaba de escribir, que en última instancia produce código objeto. Y el código objeto es en realidad una forma elegante de decir que las salidas de cero y uno. En otras palabras, la fuente código, aunque es va a parecer un poco misterioso, y un poco menos agradable de arañazos, a primera vista, es por lo menos algo que los seres humanos pueden entender. En cierto modo se ve y suena como Inglés pesar de que es muy sucinta. Considerando que la programación en de cero y uno, como nuestros predecesores tenían que hacer, Hace algunos años, no era una entrada muy divertido. Y, sin embargo, esto es lo que el equipo todavía entiende. Así compilador nos lleva desde código fuente del código objeto. Es como abrir un archivo con el compilador, y al guardarlo, usted consigue esos ceros y unos. Así que veremos cómo hacerlo que, en un momento. Pero ahora vamos a tratar de proporcionar una tender un puente entre la semana pasada y presente, de modo que incluso a medida que se obsesione en cosas como llaves, y punto y coma y paréntesis y todos estos intelectualmente interesante aspectos de la programación, que muy comprensiblemente disparar a la gente desde el principio, darse cuenta de que todas las ideas Hoy en día, son los mismos que pasado. Así que ayer, vimos este ejemplo aquí, el programa Hola Mundo. Bueno, a partir de hoy, si queremos para poner en práctica ese mismo programa, que va a buscar un poco algo como esto. Y vamos a explicar en poco tiempo lo que int, y principal, y sin efecto, y todo eso es, pero al menos yo veo aquí Ya lo familiar Hello World. Mientras tanto, cosas como función, saluda, es muy sencillo va a ser un declaración muy simple como esto. Printf hola mundo, con un poco de cita, con una barra invertida, con un punto y coma, pero más sobre esto más por venir. Loops, por su parte, se trata de un bucle que, por supuesto, dice hola mundo para siempre, y éste va a parecer un poco más raro que en el pasado, pero si digo algo al igual que, mientras cierto, puede luego imprimir Hola mundo una y otra vez y otra vez y otra vez. Y luego como puedas tipo de empezar a inferir aquí, esta convención de usar llaves es una especie de como abrazar la línea de sangría de código de allí. La línea printf de código muy parecido la pieza del rompecabezas de color amarillo por encima. Así que no vamos a decir siempre, vamos a decir, mientras que la verdadera, pero vamos a ver qué es en sólo un poco. Mientras tanto, si tenemos un circuito como este, donde repites algo un finita número de veces, este también es Va a tomar un poco de tiempo para acostumbrarse , pero que va a decir con int i se pone a cero, i menos de 10, i ++, y luego printf de nuevo. Pero no va a ser patrones. Y para aquellos de ustedes familiarizados con AP Ciencias de la Computación, o Java, o cualquier número de otros idiomas, Casi todos estos constructos hasta ahora deben buscar sobre todo familiar. Así variable. Así que aquí está un sencillo fragmento de Scratch que establece una variable llamada contador a cero, y luego dice siempre el mostrador, y entonces se cambia el contador en uno. Así que comienza con cero, y luego uno, dos, tres. Bueno, ¿cómo podemos introducir de que en este nuevo lenguaje un poco similar? Contador Int es igual cero, mientras que la verdadera, la que es la misma idea de antes de hacer algo para siempre, y yo sólo voy a printf. Y ahora se está haciendo un poco extraño, i por ciento, pero más sobre esto más por venir, pero estas ideas son exactamente los mismos. Sólo ahora tenemos que cumplir con la sintaxis que el equipo está va a exigir de nosotros. Expresión booleana, algo así como sx menor que y, x o menos y, e y menos de z. Se va a ver un poco de algo así, con paréntesis sólo como en matemáticas por si acaso sólo asegurarse de que el orden de las operaciones es como pretendemos. Y ahora, las condiciones. Así que si x menor que y, digamos x es menor que Y, más si x es mayor que y, decir x es mayor que y, de lo contrario lógicamente, x debe ser igual a y. Así que se podría poner en práctica algo como esto en Scratch, o puede aplicar en esta sintaxis. Y de nuevo, las llaves son una especie de nos da la misma forma que el rompecabezas piezas, pero la sintaxis, ahora, es tal vez empezando a seguir algunas pautas. Así que, ¿qué nos dan aquí? Así que estamos en ese entonces en nuestro programa principal. Vamos en realidad, ahora, hacer algo con él. Así que en este primer línea que vemos aguda incluimos, E / S estándar, punto h, y a continuación, un ángulo raro soportes debajo de eso. int main vacío, y luego printf hola mundo. Así que dar un paso. Alguien que nunca ha programado antes, al menos explicar una de estas líneas. Usando tal vez algunos de la jerga de la semana pasada. ¿Cuál es printf, por ejemplo? Sí. AUDIENCIA: [inaudible] DAVID J. MALAN: Sí. Es una función, o una declaración, de la terminología de la semana pasada. Y es una acción que está haciendo algo. Ahora esta función, o esta declaración, hace que parece tener algún tipo de entrada? Y ¿en qué sentido lo hace parecen tener de entrada, de ser así? De entrada, ¿qué quiero decir con eso? Sí. AUDIENCIA: [inaudible] DAVID J. MALAN: Sí. Así ganarse unas cuantas piezas del rompecabezas donde se puede parametrizar ella. Se notaba la repetición bloquear cuántas veces repetir, así que fue una entrada de clases, y al igual que los arañazos tenía un pequeño marcador de posición blanco para el número debería escribir en, así que usamos en este paréntesis mundiales texto para darnos esa forma circular en el que podemos conectar nuestra entrada. Después de todo, hace decenas de años cuando este lenguaje, llamado C, fue inventado nadie anticipó que es uno de nosotros, estos algunos años más tarde, estaríamos quieren una función que dice hola. ¿Correcto? Sería bueno si hubiera un pieza del rompecabezas, o unas palabras clave, eso se llama hola, que literalmente, sólo dice hola. Pero no necesitamos eso. Podemos tener algo mucho más bajo nivel, como una impresión genérica comando, que toma la entrada, e imprime lo que queramos. Así notar ahora el patrón que comenzará a emerger. Paren Abiertas, cerca paren es aparentemente abrazando la entrada, y luego veo doble cita en ambos extremos. Todavía hay barra invertida raro n, pero espero que ahora usted puede comenzar a visualizar al menos esa printf está tomando algún tipo de entrada. No es tan fácil de usar como Cero, pero es sólo como haber enchufado algún valor allí. Muy bien, ahora vamos a realidad hacer algo con esto. Así que algunos de ustedes podrían saber de teniendo comprado la clase antes, charlado con los amigos, que durante muchos años usamos algo llamado el aparato CS50. Este era un término que describe una tecnología llama la máquina virtual, que es una pieza de software que su predecesores se descarga fuera la página web del curso de forma gratuita. También se descarga una pieza libre de software llamado un hipervisor, algo que se llama como VMware, o VirtualBox, o cualquier número de otras herramientas, y en su Mac o PC o cualquier equipo que tenían el año pasado y en el año pasado, duplicaría clic en un icono para ejecutar este software llamado el hipervisor. Y luego en el interior de ese programa abrirían el aparato CS50. Y el efecto fue que si un antecesor suyo estaba ejecutando Mac OS o De Windows, él o ella entonces posteriormente tuvo una nueva ventana en su pantalla de correr el entorno del CS50. Así que una máquina virtual le permite ejecutar un solo sistema operativo dentro de otro, y eso es exactamente lo que hicimos. A lo largo de la mayor parte del supuesto que utilizar un sistema operativo llamado Linux, específicamente Ubuntu Linux, y esto es una forma muy agradable en los últimos años de asegurándose de que todo el mundo en el curso sólo tenía el mismo ambiente. Y usted puede utilizar cualquier tipo de equipo que usted realmente desea. Entre las desventajas, sin embargo, eran que era como dos gigabytes descargar gratis la cosa. No necesariamente funciona muy bien en personas cuyas computadoras que quizás sólo tuvo una actuación más o menos de RAM, o no demasiados gigahercios de velocidad de la CPU, por lo que este año, por esta y otras razones, ¿Hemos sido transicionando a este entorno. El llamado CS50 IDE, que es basado en software de código abierto, y una plataforma compatible que una compañía llamada Cloud9 apoya en Europa, que nos permite tenemos esencialmente ese mismo ambiente exacta como en año pasado, pero en la llamada en la nube. Entonces, ¿qué es la nube? Usted probablemente ha hecho clic su icono en tu Mac o PC. ¿Qué es la nube? ¿Sí? Un poco más fuerte. Sí. Es sólo un montón de ordenadores en otros lugares que los datos de la tienda y de ejecución software y similares. Así que es realmente sólo a la palabra de jure de describir [? vienen alquiladas?] equipos que no viven más en. Que usted, usted mismo, no necesariamente poseer. Así que cuando sus datos, o su programas, están en la nube, sólo significa que es de alguien computadoras de otra persona en otro lugar, y no, lo más probable, en su ordenador portátil o de escritorio físico. Y eso es lo CS50 IDE ahora es. A partir de ahora irás a una cierta URL que presentarles que, en el conjunto de problemas 1, a finales de este semana, que entonces, al iniciar la sesión, darle este entorno. Y mucho de Scratch como tenía un unos paneles diferentes involucrados, lo mismo ocurre con el IDE de CS50 tiene exactamente eso. En la parte superior izquierda mano aquí, eres ir a ver a un explorador de archivos familiares. Así que cualquiera de los archivos que puesto en este entorno sólo se va a figurar allí. Los archivos y carpetas. En la parte superior derecha aquí, usted va a ver un lugar donde realmente se puede escribir su código. Inicialmente en C, más adelante en el plazo en PHP y JavaScript, y, tal vez por última proyectos, Ruby o Java o Python o cualquier número de idiomas son apoyado en este entorno. No es en absoluto atado a CS50 específicamente. Y luego, en la esquina de fondo aquí, especialmente para los más cómodos, tienes algo llamada una ventana de terminal. Y esta ventana de terminal permite que permite ejecutar cualquier comando que usted desear en este entorno de nube. Se le permite instalar ningún software adicional que desea, porque usted ha llamada raíz o de administrador privilegios. Así, en otras palabras, a pesar de que este está instalado en última instancia, en la nube, ya pesar de que tenemos simplificada hasta cierto punto por defecto, literalmente, la introducción, gracias a Dan Armendariz, y Dino, y Dan Bradley en el equipo de CS50 sobre el pasado muchos meses, una menos cómodo modo que se esconde una gran cantidad de la distracciones inicialmente confusas. Todo existe para representar un sistema informático típico que usted puede utilizar en el mundo real. Entonces, ¿qué significa todo esto, y ¿qué podemos realmente hacer con él? Vamos realmente echar un vistazo a un programa. Así que voy a abrir el entorno real aquí, que es sólo nuestra Cromo navegador, que podría ser Firefox, podría ser Internet Explorer, o algún otro navegador también. Está llena proyectó aquí por el momento. Y quiero molestar realidad aparte lo que era este programa. Así que vamos a echar un vistazo, haciendo zoom en hasta arriba, en lo que hice, y cómo llegué aquí. Así que aquí está los exacta mismas líneas de código. Así que esta es la declaración, como usted ha mencionado antes. La función que dice hola. Las llaves, en línea de cuatro y línea de seis, presumiblemente tipo de envoltura esa línea para asociarlo con la esencia de mi programa. Así que de hecho, esta palabra clave principal, eso es allá arriba en la línea tres, usted puede pensar que como el equivalente de que cuando hace clic en bandera verde, bloquear en Scratch. Así que eso es todo lo que tenemos aquí, es cuando bandera verde se hace clic, impresión, o decir, Hola mundo. Pero vamos a tomar una conjetura, ahora, en lo que esta primera línea, más arcano, es. Agudo incluyen, abierta en ángulo soporte, E / S estándar de punto h, cerrar horca. Lo que se que tal vez haciendo, especialmente si usted ha programado antes en algún otro lenguaje. ¿Sí? AUDIENCIA: [inaudible] DAVID J. MALAN: Sí. Exactamente. Así que esto está dando acceso a una biblioteca, por así decirlo, de las funciones. Y una biblioteca de funciones es funciones que otra persona escribió, ya sea recientemente o hace mucho tiempo, de modo que usted no tienen que reinventar la rueda. Por ejemplo, no lo hacemos tiene que saber, en 2015, cómo escribir código que pone un personaje en mi pantalla. Alguien se ha dado cuenta de que con la función printf para que yo pueda ordenar de abstracta lejos de eso, o capa de en la parte superior de su código, y ahora acaba de tomar por sentado que cualquier programa que escriba puede imprimir algo en la pantalla. Así que esta primera línea de allí en el paso uno incluye el denominado archivo de cabecera para la biblioteca estándar. Así que ver, el idioma en que ahora estamos trabajando tenido una biblioteca estándar con una gran cantidad de funciones. Printf es uno de ellos, y esa primera línea de código me significa dar acceso a esas funciones, por lo que yo no tienen que reinventar la rueda. Ahora vamos a ir a la ventana inferior y hacer exactamente lo que hice antes. Hace un momento, cuando yo era zumbando a través del código, escribiéndolo a cabo por primera vez, Yo muy rápidamente escrito, hago hola. ¿Qué fue todo eso habría que adivinar? ¿Qué estaba haciendo? ¿Sí? Olvídalo. Esta bien. Sí. AUDIENCIA: Compilación de ella. DAVID J. MALAN: Sí. Se acaba de compilarlo. ¿Correcto? Incluso si esto es completamente desconocida a usted, que es bastante Inglés similares. Ciertamente no es ceros y unos, así que todavía tenga que ejecutar a través de que la llamada programa, un compilador, que va tomarlo como entrada y producir una salida. Y por lo menos, por ahora, en este entorno Linux, pero esto no es un requisito previo, esto es justo donde vamos a empezar, por lo general, interactuar con sistemas informáticos como este mediante una línea de comandos llamada. Así que con un parpadeo pronta y su teclado, y no tanto el puntero del ratón, y no tanto las ventanas y los iconos y menús, más bien todo es textual. Y a pesar de esto se siente, en un primer momento vista, tal vez, como un paso hacia atrás, en realidad es una forma mucho más forma poderosa y expresiva de controlar un ordenador especialmente a medida que, usted mismo, se vuelven más cómodo desde menos. Esto va a permitir que usted hace un montón más cosas que simplemente lo que Microsoft o Apple le permite hacer con su sistema operativo gráfico. Así que cuando llegué a Enter, ahora, no pasa nada en esta ocasión porque al parecer la hola programa está actualizado. Y lo que era el comando Corrí detrás de eso? Dot slash hola, y hola mundo. Ahora vamos a dar un paso copia de un momento. Resulta que hacen hola es sólo una forma simplificada de la compilación de un programa. Vamos a introducir una pieza de la jerga, pero luego alejarse de ella, ya que no es tan interesante para los propósitos de la actualidad. El compilador que vamos a empezar a utilizar se llama Clang, para el lenguaje C. Y este es un programa que se ejecuta solo como lo hicimos en la línea de comandos allí. Y así, si quiero compilar un programa que yo han escrito en un archivo denominado hola dot c, que, literalmente, sólo escribo clang hola c entrar. Lo gracioso es que, por razones históricas, si no se especifica la nombre del programa que yo quiero a la salida, si no lo hago especificar un nombre de archivo para los ceros y unos, muy raro Hace años se adoptó la convención donde se sentía una especie de buena respuesta en el momento, así que vamos a llamar arbitrariamente el primer programa que compila un punto fuera. Una es lo primero en el alfabeto. Out, que es la salida. Así que vamos a llamar al programa por defecto un punto fuera. Y eso está bien, porque si quiero ejecutar el programa en este texto basado medio ambiente, yo sólo escribo dot recortar un punto a cabo entrar. Y sería ejecutar exactamente igual que antes. Así que vamos a ver que realmente rápido. Así que si vuelvo a mi código fuente en CS50 IDE, y yo en vez hago esto, clang hola cuna c entrar, aviso nada parece suceder, pero casi siempre en este entorno Linux, cuando nada malo parece suceder, que significa algo bueno en realidad sucedió. Si usted no ve un error mensaje, todo es probablemente también. Y de hecho, si ahora lo hago punto slash un punto cabo entro, me he encontrado a mi mismo programa. Todavía tengo el programa hola de antes, porque de hecho, es va a ser mucho más agradable justo escriba hacer en lugar de recordar estos conjuros de comandos, pero vamos a ver cómo nos podría mejorar en esto, no obstante. Por lo tanto, este es el comando para compilar el código. Este es el comando para ejecutar el código compilado a partir de entonces. ¿Cómo puedo especificar un nombre de archivo? Bueno vamos a introducir una pieza más de la jerga. Cuando estás en esta entorno basado en texto, usted va a querer especificar cosas que se llaman argumentos de la línea de comandos. Lo cual es sólo una forma elegante de decir, Es decir en el símbolo que modificar el comportamiento de lo que sea programa que se está ejecutando. Así específicamente el programa que estoy correr, escribiendo el nombre del sonido metálico, es el programa llamado Clang. Así que esto es o la vieja escuela equivalente a un doble clic en Microsoft Word o icono de algún programa. Estoy en vez simplemente escribiendo su nombre, pero en esta versión de la orden, Entonces tengo dash espacio o hola hola espacio del punto c. Así que incluso si usted nunca ha jugado en este mundo antes, simplemente tomar una conjetura lo Qué rociada o hola hacer? O ¿qué dirá sonido metálico que hacer? Sí. AUDIENCIA: [inaudible] DAVID J. MALAN: Sí. Simplemente establece la salida del archivo a ser hola en lugar del más tonto un punto fuera. Y, de hecho, vamos a probar esto. Así que si ahora lo hago, primero vamos a hacer esto, r m hola. Eso es quitar. Y que va a decir remove fichero regular hola, que es innecesariamente arcano, pero simplemente medios hacen que desea borrar el archivo, y yo escribo y para sí. Y note, si estuviera mirando a la parte superior a la izquierda, que desapareció desde allá arriba. Permítanme ahora hago ruido metálico guión o, y Voy a seguir adelante y hacerlo hola, en mayúsculas, hola punto c. Ahora, si lo hago slash dot Buenos días, qué se puede esperar? Tal vez es sensible a mayúsculas. Tal vez no lo es. Vamos a ver. El fichero o directorio no existe. Y podemos tipo de trampas por sólo mirar en la parte superior izquierda. Lo hice yo, obviamente, guardar el programa como? Todas las tapas hola. Así que de hecho, eso es ir marcar la diferencia. Así que ahora hola mundo está de vuelta. Ahora bien, esto es todo fino y bueno, y todo muy mente-anestésica, al tipo de empantanarse en estos detalles, pero entendiéndolos es bueno. Escribiendo un vistazo a estos cada vez más conjuros largos no va a ser particularmente diversión, así que la gente en el mundo inventado otro programa, Hace algunos años, llamado hacer, que, sencillamente, le permite escribir marca, el nombre del programa usted quiere hacer, y hacer es inteligente en que se verá en la carpeta actual, también conocido como el directorio, y si usted tiene un archivo llamada hola punto c, que es el archivo que se compilará para usted en un programa que se llama hola. Así que es una manera mucho más simple de haciendo los comandos más crípticos que hicimos antes. Y hemos preconfigurado CS50 IDE saber que debería hacer o guión y un número de otras banderas o argumentos de la línea de comandos, que vamos a ver en poco tiempo. Pero vamos a hacer ahora en realidad algo más interesante. Simplemente tecleando fuera el mundo hola a todos el tiempo no es tan convincente. Así que déjame ir por delante y el cambio este programa y decir hola David. Ahora me voy a ir por aquí. Voy a seguir adelante y hacer que saludar. Y de nuevo ahora que se está viendo hacer que se muestra el tiempo secuencia de comandos que es haciendo porque hemos configurado previamente de esa manera, pero nosotros no tiene por qué preocuparse por el momento lo que está haciendo aparte de que es dot compilación slash hola, hola mundo. ¿Que esta mal? Sí. AUDIENCIA: [inaudible] DAVID J. MALAN: Sí. Así, el error noobie. Me doy cuenta de que esto es muy sutil, pero el asterisco que aquí, en la ficha, simplemente significa que no haya guardado, y los navegadores y otros programas hacer esto a veces. Así de control o de mando s s debe salvarlo. Ahora déjame ir por delante y volver a ejecutar el programa. Recompilado. Derecho, por lo que es un proceso de múltiples pasos. Ninguno de los cuales es particularmente complejo, pero cada vez que cambie el archivo, tenemos que cambiar la resultante ceros y unos, y slash dot hola. Guau. Así que esto es muy decepcionante que simplemente imprimimos esto. Vamos a hacer las cosas un poco más dinámico, ahora. Pues resulta, que al igual que Scratch, C soporta variables. Y resulta que si quieres tener una variable que almacena, no es un número como si típicamente hizo con Scratch, pero al igual que una palabra, o una frase o un nombre, puede especificar una variable al ser de tipo cadena. Así que vamos a ver más de estos en un momento, pero resulta que C, y una gran cantidad de lenguajes como él, tienen tipos muy específicos de variables. No es justo como álgebra, donde se obtiene una x, a y, z y esos son sólo siempre números, en un lenguaje de programación usted puede almacenar números, puede almacenar caracteres individuales, podría almacenar palabras completas, podría almacenar imágenes enteros, archivos de sonido enteros, y similares. Así que tenemos que especificar qué el tipo de la variable es. Y, por convención, voy a llamar a mi s variables sólo porque es sucinta, y s significa cadena. Y luego me voy a guardar dentro de esta variable, Al igual que con los arañazos cuando se utiliza el bloque conjunto, Voy a utilizar el operador de asignación en C, que muy bien lo suficiente es la igualdad firmar, pero el signo igual hace esto. Se mueve algo de la derecha en el lado izquierdo de la expresión. Así que lo que he hecho, para ser claros en línea de cinco, es que he declarado una variable. Le he dicho a la computadora, dame memoria para una variable, lo llaman es, y sé de antemano que voy a poner una cadena en el mismo. Y una cadena es sólo un secuencia de caracteres. Es una palabra o una frase o párrafo, pero es una secuencia de caracteres. No es números. ¿Qué cadena voy a ser puesta en esa variable? Bueno, al parecer citar Lo dijeron ellos, "Hannah". Ahora note el patrón que está emergiendo. Hay una expresión de la izquierda. Hay una expresión de la derecha, separados por el signo igual. Y acaba de tomar una conjetura, si desconocido, no obstante, con lo que el punto y coma que está haciendo. Lo que es de suponer que hacer por nosotros? ¿Sí? AUDIENCIA: [inaudible] DAVID J. MALAN: Sí. Es sólo que termina la línea. ¿Correcto? Los equipos quieren estar sin rodeos dijo, literalmente, lo que debe hacer. Al igual que la mantequilla de maní y ejemplo mermelada, si no se especifica exactamente lo que se propone, podría dejarse a juicio o error. Los medios de punto y coma, eso es todo por este comando. Se trata de ser muy precisa, y es una cosa muy fácil de dejar fuera. Así que ahora este programa no parece se comportan de manera diferente hasta que hacerlo más dinámico. Así que en lugar de disco podía mi propia nombrar, déjame poner un valor de marcador de posición. Y resulta que, y lo sé de haber leído la documentación, y se utiliza la función durante años, que printf fue diseñado para ser dinámico. Usted no tiene que saber de antemano lo que las palabras que usted quiere poner en él. Usted puede tener un lugar marcador de posición, como por ciento s, que que va a decir la computadora, puso una cadena aquí. ¿Qué cadena de qué queremos poner allí? Will Resulta que entre estos paréntesis, que recuerdan, demarcan la entrada a una función, si usted tiene coma lista de cosas separado aquí, que en realidad pasa en múltiples entradas a una función. Así que al igual que algunos de Scratch bloques, puede que no han jugado con ellos sus proyectos aún o en todo, algunos bloques de Scratch tienen dos entradas. Dos cajas blancas que puedas escribir números o palabras en. Así que para no C tiene funciones como printf que puede tomar dos entradas. Y de nuevo, esta comas se separa. Así que en Inglés, de nuevo, incluso si nunca has programado antes, por que printf lógica es una función, toma dos entradas, una de las cuales es un marcador de posición, ¿qué esperanza printf se va a hacer con esta entrada? Va a decir hola Hannah, con suerte. Así que para hacer esto tenemos que salvarlo. Me voy a alejar. Voy a volver a bajar aquí y decir hola hacen entrar. Oh. Algo está mal, y de hecho esto es bastante abrumador. Tengo seis líneas de código y al igual que 12 líneas de errores. Por lo tanto, esperamos que esto. Entonces, ¿qué está pasando aquí? Así que la mejor regla de oro aquí, sobre todo cuando estás empezando, no distraerse por las cosas en la parte inferior. De hecho, muy deliberadamente simplemente desplazado hasta porque muy a menudo, una computadora es no todo lo que brillante de un dispositivo. Se va a confundirse. Si ve una cosa que que no entiende, podría confundir otra líneas de código como incorrectas, aunque son perfectamente bien. Así que siempre quiere trabajar de arriba hacia abajo a través de los errores. Y la verdad es que esto es súper arcano en el momento. Error, el uso de no declarado cadena de identificador. ¿Me refiero estándar? No, me refería cadena. Y está apuntando a, tal vez es un error tipográfico. Algo así como, comprobación de ortografía en un manera muy geek, pero la razón aquí, y sabrás esto simplemente por la práctica, es que resulta que la cadena no existe en C. De hecho, C es un lenguaje particularmente de edad, y es muy bajo nivel, y no lo hace un montón de características que podría haber crecido con si usted tiene, de hecho, programada en Java, como algunos de ustedes tienen, pero se puede enseñar cosas nuevas. Y, de hecho, hemos hecho esto CS50, a pesar de que al final del semestre, todas estas ruedas de entrenamiento se habrá quitado, lo que hacemos en estos primer par de semanas inicialmente es también tenemos incluir CS50 punto h. ¿Qué es un archivo de cabecera. Más sobre esto en el futuro. Es un archivo que contiene funciones que hemos escrito para ti. Y entre esas funciones es funciones, para sacar de entrada por parte del usuario, como cuerdas, y números y los números reales, y más. Pero también tiene algunos atajos. Define un booleano como un tipo de datos. C no tiene verdaderas o falsas. Pero podemos darle la noción de verdadero o falso a través de esta biblioteca. Y también no tiene una cadena construida en hasta incluimos esta línea. Así que esta línea de código indica el compilador, hey, Clang, mira en este archivo para un conjunto montón de código que CS50 ha escrito de manera que cualquier persona que utilice este archivo puede dar por sentada la características han añadido. Así que ahora me dejes ir por delante y borrar la pantalla, y si curiosa Sólo digo de control l cada vez para borrar la pantalla, o puede escribir claro. Yo sólo voy a seguir adelante y ahora Tipo hacen hola, y todo está bien. Aún así una salida arcano, pero no es un mensaje erróneo. Y si hago punto slash hola, y como a un lado, slash dot es desconocido para la mayoría. Sólo significa, medio punto el directorio actual. Así que si usted ha utilizado alguna vez DOS o Linux o Unix usted podría haber hecho algo como cd punto punto, donde punto punto significa ir hacia atrás en el tiempo, o ir hacia atrás, o más arriba en su directorio. Dot sólo significa mirar en el directorio actual. Quiero saludar, que está justo aquí. Y, de hecho, ahora se dice hola Hannah. Y si cambio de nuevo a María, recompilar haría hola, slash dot hola, el programa sigue cambiando. Pero esto sigue siendo una programa bastante estúpido. Si quiero enviar este programa, o dárselo a un amigo, o dárselo a María o Ana para el caso, eso está bien. Puedo personalizarlo para ambos, pero nunca va a ser dinámico. No pueden cambiar una vez que se compiló abajo en esos ceros y unos. Así que lo que hicimos algo más inteligente? ¿Qué pasaría si, en lugar de duro-codificación en el programa el nombre de esta persona, ¿y si nos acaba de llegar la cadena de la demanda? En otras palabras, déjame hacer esto. Voy a volver a compilar este programa. Y permítanme el zoom en la parte inferior ahora. Hacer hola slash dot hola. Ahora no está pasando nada. ¿Podemos obtener un voluntario rápida ¿hacer que algo suceda? Vamos arriba. ¿Cómo te llamas? PANCHO: Pancho. DAVID J. MALAN: Pacho? Vamos arriba. Una vez que llegue aquí, esto es va a ser muy decepcionante, pero es más interesante que yo escribiéndolo. Si quieres seguir adelante y escriba su nombre, me hizo este programa sólo para usted. Sólo tienes que escribir tu nombre. Intro. Maravilloso. Muy bien, muchas gracias. PANCHO: Muchas gracias. DAVID J. MALAN: OK. [Aplausos] Eso fue muy amable. Aqui tienes. ¿Qué hicimos? Así que finalmente, al menos, hecho este programa dinámico. Ahora sigue siendo duda por diseño decepcionante, pero por fin tenemos la capacidad ahora que escribir código de antemano, mucho al igual que los autores de printf, y luego dinámicamente ADAPT basado en la entrada somos entregado, ya sea por el programador, o por el ser humano que es en realidad interactuar con el programa. Así que vamos a tratar en realidad ahora hacer algunas otras construcciones y ver si no podemos hacer que los programas a sí mismos más sofisticado. Así que vamos a seguir adelante y en lugar de escribir esta uno desde cero, Voy a ir a hoy código fuente, y todo esto está disponible en el curso de sitio web, y usted puede arrastrarlo en su propio entorno llegado Viernes vez problema conjunto 1 le da la instrucciones, o usted podría hacerlo en la línea de comandos bien, pero más por venir en conjunto 1 p. Vamos a ver lo que hay en este programa aquí se llama, punto sumador c. Ahora que ya he comentado , pero ¿qué hay de nuevo? A primera vista, qué línea del código es absolutamente nuevo? Probablemente no, fundamentalmente, familiarizados ahora. AUDIENCIA: [inaudible] DAVID J. MALAN: Sí, así int x es igual a tener n. Nunca hemos visto algo de esto antes, pero int es probablemente el símbolo de la clase de variables, [? de?] un número entero. Así int por entero. Es sólo siendo más sucinta. x es sólo arbitraria. x y y y z son todavía bastante razonable para los números, pero en general vamos a utilizar palabras una vez nuestros programas se vuelven más complejas. Obtener int, por supuesto, al igual que la cadena get, es, probablemente, va a conseguir un int del usuario, y luego vamos a hacer lo mismo con y. Y al parecer, a pesar de que este última línea, de 24 años, parece más compleja, que va a decir la suma de esta y es esta otra cosa. Y fíjense ciento i probablemente denota qué? ¿Qué papel hace ciento i aparentemente sirvo? Es sólo marcadores de posición. ¿Correcto? Porcentaje s era para cuerda, ciento i es por entero. No va a ser ciento f por valor de punto, flotante que es sólo un número con un punto decimal. En otras palabras, un número real. Así que vamos a compilar esta realidad programar muy rápido y no hacer víbora. ¡Vaya. Buena oportunidad. Así que notar aquí, todo este tiempo mi usuario nombre para se jharvard esta cuenta. Estoy en IDE CS50, alias IDE50. Y ahora en azul aquí, es una mención, pero del medio ambiente, de donde yo soy. Y de hecho, si el zoom hasta la cima aquí, fíjate que tengo una IDE50 y veo esta palabra, si la clase de gire la cabeza hacia un lado, espacio de trabajo. En pocas palabras, el hecho de que Estoy viendo espacio de trabajo de tala tilde significa que en este texto entorno de comandos basada, Estoy en el texto equivalente de esta gráfica carpeta aquí. Así que cuando lo hago slash dot víbora, es decir no la regla hacer parada sumador objetivo. No sé lo que eso significa, pero es malo por alguna razón. El fichero o directorio no existe es aún más clara. ¿Dónde está entonces? Basado en donde hice clic para abrir el archivo anterior. ¿Dónde podría ser? Es probablemente en la fuente un solo w, para el miércoles, y puedo ver que, en efecto, si abro eso. Hay sumador de punto c, pero en este entorno basado en texto, de nuevo, tengo que ser muy explícito. Si quiero cambiar de directorio en fuente de un miércoles, necesito escribir, cd espacio de origen se Miércoles entrar y ahora mis prompt cambia a dame una señal visual que Yo soy, de hecho, en otros lugares en mi entorno, pero ahora que puedo hacer hacer víbora, parece que funciona, punto slash víbora, dame un entero. Uno. Dos. La suma de uno y dos es tres. Pero si yo no coopero, vamos a ver lo consigue int hace. Dame un entero. No. Vuelva a intentarlo. OK. Fine. 50. 50. Correcto. Por lo tanto, finalmente coopera. Y eso es parte de la funcionalidad que estas funciones se han incorporado para usted. Por lo tanto dentro de la implementación de conseguir int, lo que la programación construir a partir de la semana pasada es probablemente en no para obligar a este comportamiento de reintento, reintentar, vuelva a intentar? Sí, es probable que haya algún tipo de bucle. Se va a ver sintácticamente diferente de bloques de Scratch, pero eso es de hecho lo que hay dentro del archivo. Y en unas semanas vamos a realmente se ven en la biblioteca CS50 en cuanto a lo que hay dentro, pero hay un bucle imponer exactamente eso. Vamos a jugar un poco tonto juego aquí con este archivo. Condición del cero punto c. Sólo vamos a general comenzará a contar desde cero. Y sigo desplazamiento pasado algunas de las cosas en la parte superior. En azul aquí, demarcada con todo de estas estrellas y las barras, aquellos de ustedes que programar antes, ¿qué es eso? ¿Por qué seguimos saltando sobre ella? ¿Qué? AUDIENCIA: Es un comentario. DAVID J. MALAN: Sí. Es sólo un comentario. Este es un comentario para los seres humanos para leer, que en nuestro caso, nos dice lo que el nombre del archivo es decir, que la escribió, y lo que hace, de modo que usted no tiene para leer el código saber lo que este archivo se trata. Es sólo una descripción, pero funcionalmente es irrelevante. Y yo ni siquiera puedo borrarlo de mi archivo y que no tiene ningún impacto. Las líneas jugosas son éstos primero dos aquí, ahora. void main int es el equivalente de nuestra bandera verde cuando se hace clic, así que vamos a dejar que sea para hoy, y vamos a volver, Finalmente, en cuanto a lo int y sin efecto son, pero ahora, cuenta de lo que he hecho también en este caso, también puede, si tiene una en línea comentar, si usted tiene Un pensamiento que desea compartir sobre una determinada línea de código, convención en C es hacer slash recortar, y luego unas palabras breves, no una frase completa, generalmente no un párrafo, que simplemente explica a usted, o su TF, u otros lectores o compañeros de trabajo, lo que su código está haciendo. Así que en lugar de tener que mirar en este e inferir a partir de líneas nueve y 10, lo que es esta haciendo, en la línea de ocho Acabo de hacer un comentario al preguntar al usuario un número entero, entonces yo no tengo que pensar mucho acerca de lo que las líneas de nueve y 10 son. Sólo sé que eso es lo que colectivamente que están haciendo. ¿Cómo? Bueno, aquí está el símbolo. Aquí está el conseguir del int. Y en base a la anterior comportamiento, parece que get int es lo suficientemente inteligente como para asegurarse de que lo humano coopera y se lo da un entero. Pero ahora vemos esto. Y esto es una reminiscencia de Scratch. Estoy diciendo que estoy el análisis de la entrada del usuario, pero algo inexacta. Y esto al parecer en C es como expresamos un caso más, una rama, un tenedor en la carretera, pero yo decir algo imprecisa. ¿Cuál es el error en este programa? Acerca de respaldar aún más? Sí. AUDIENCIA: [inaudible] cero. DAVID J. MALAN: Sí. Así que si yo escribo en cero, vamos a considerar exactamente ese caso caso, o en la esquina, si se quiere. Así que si yo escribo en cero, lo que del bloques va aparentemente para apoderarse de él? El caso o de la otra persona? La otra persona, y que va a decir, que eligió un número negativo. Y, en efecto, no se supone cero a ser positivo o negativo, y por lo que sería erróneamente. Eso sería un error. Entonces, ¿cómo podemos solucionar este problema? Alguien que nunca ha programado antes? Quieres-- AUDIENCIA: [inaudible] DAVID J. MALAN: Retracción? AUDIENCIA: [inaudible] DAVID J. MALAN: Oh, usted tiene? Alguien que nunca ha programado antes. ¿Quieres probar su suerte en la esto, en la camisa roja? Vamos arriba. Oh sí, vamos para arriba, si no te importa. Así que nunca haber programado antes, ¿cómo te llamas? LAUREN: Lauren. DAVID J. MALAN: Lauren, de acuerdo. Así que corregir este error para nosotros. Usted no ha visto C, presumiblemente, y probablemente ningún otro idioma. Así que arreglar este programa para nosotros. Encantado de conocerte. Sin presiones. LAUREN: Sí. DAVID J. MALAN: Pero, de nuevo, si esto apuesta va de acuerdo al plan, la comida para llevar aquí lo hará ser, simplemente de nuevo, para iniciar a notar patrones y inferir de sintaxis existente cómo es posible expresar lo demás usted mismo, sin juego de palabras, con el fin capturar algo escenario adicional. Así que estamos diciendo else if. printf, bueno. Y cuenta con CS50 IDE, y el IDE frankly-- representa Integrado Entorno de desarrollo. Es sólo una forma elegante de decir un programa que ayuda a los programas. Lo hace fáciles de usar cosas como cuando se escribe un solo paréntesis, te da automáticamente el otro. La presunción es que eres finalmente va a querer escribir que, y también lo hace con comillas. Por eso me gusta la línea 23. El 99% del camino. Alguien quiere meter su cuchara con una punta? Oí punto y coma de la audiencia. Bien. Así que completa eso. Y ahora, sólo tengo un poco consternación con la línea 21. ¿Cómo queremos expresar esto? ¿Qué pregunta qué queremos preguntar, qué te parece? Así que anteriormente hicimos la pregunta, si n es mayor que cero, hacer esto. Si no, hacer eso. Así que tenemos que elegir un pregunta que hacer aquí. AUDIENCIA: [inaudible] DAVID J. MALAN: Good. Así que si n es igual a cero. Excelente. Así que vamos a hacer una pausa aquí. Muchas gracias por desafiar esto. Déjeme darle un poco merecido bola de la tensión, tal vez no. Así que estamos casi allí. De hecho, Lauren, si no lo hace mente, permítanme hacer un solo tweak aquí, sólo para ser coherente, incluso con lo que vimos en Scratch, lo hago lo que quiero hacer con líneas 21 y 24, sólo se basa de nuevo de cómo lo hicimos en Scratch, tal vez? AUDIENCIA: Mueva hacia arriba. DAVID J. MALAN: Sí, moverlo hacia arriba. Así la condición más, la tercera, o cuarta, o quinta, o rama final, de hecho había de venir después, y eso es sólo por convención, porque si se quiere. Así que necesito para hacer este truco. Y tengo que poner mi llave de vuelta aquí. Y ahora, este programa se compilará. Estamos tan cerca, pero hay un error muy, muy sutil. Veamos qué pasa. En primer lugar, déjame ir adelante y alejar la imagen. Voy a seguir adelante y escriba hacer condición cero. Oh, mentí. Ahora es el compilador realmente muy inteligente. Y yo no entiendo muy bien es un mensaje de error. Utilizando el resultado de una asignación como una condición sin paréntesis, aparentemente es malo. Pero ¿qué significa eso? Pues de nuevo, en busca de patrones en el código que hemos visto antes, lo que es la línea 17 realmente hacer, a pesar de que Lauren pretende ligeramente de otra manera? Sí. AUDIENCIA: [inaudible] DAVID J. MALAN: Sí. Así que recuerda el signo igual, al parecer, como hemos usado antes, no es igual. Su misión, de derecha a izquierda. Así que la línea 17 por el momento es una condición, y es la ejecución de código dentro de los paréntesis, pero cuando ese código se ejecuta, lo que está sucediendo con el valor de cero? ¿Qué está pasando con el valor de n? Convertirse en cero. Así que si n se está convirtiendo en cero, y otra vez, como la semana pasada, generalmente decimos que cero es falso y uno es verdadero, o si es una sola y no es cero. Así verdadero y lo falso, uno y 0. Si n como de la línea 17 ha sido dado el valor 0, es cero cierto? No. Por definición, el cero es falso. Esa es la convención que estamos va a aferrarse a seguir adelante. Lo mismo ocurrirá con las líneas 18, 19 y 20 cada vez se aplican ahora, lógicamente? No pueden. Así que le preguntamos a la pregunta pero no con bastante precisión, y no vas a saber esto a menos usted lo ha visto, la solución en C es cuando se quiere expresar la igualdad, dices iguales iguales. Así signo igual ya estaba agotado mediante cesión, de derecha a izquierda. Es igual a igual a los medios es igual. Y si realmente quieres que tu mente a doblar, en JavaScript y PHP, no es igual a igual a los iguales, que significa algo completamente distinto, pero vamos a llegar a que en poco tiempo. Así que esta es una solución simple, pero se dan cuenta super fácil de hacer de este error, y luego se preguntan y la lucha por minuto, si no una hora, ¿por qué es mi código no ejecutar como tengo la intención? Es porque no se lo dijiste es exactamente lo que quería decir. Así que era casi perfecto, y fue genial que nos tropezamos con estos dos pequeños cosas porque ahora si las arreglamos, y lo hago hacer condición de cero punto slash condición cero, Me gustaría un entero por favor. Vamos a ver. No. Se va a obligarme a hacerlo. Así que 42. Elegí un número positivo. Así que ahora ¿Cómo demuestro este programa correcto? Si usted es un matemático, no se puede realmente probar esto por ensayo y error, ¿derecho? Usted puede impermeabilizar no sólo por ejemplo, pero al menos como programador no estamos va a tratar de demostrar por el momento que este es en realidad correcto, pero probablemente debería probar algunos casos representativos. He probado 42. Pude probar 43. Pude probar 44. Prueba 45. ¿Correcto? Pero podría hacerlo un tiempo muy largo. ¿Cuál sería un poco más casos interesantes para probar? AUDIENCIA: [inaudible] cero. DAVID J. MALAN: Así que cero. Ciertamente. Y bueno, lo tenemos en esta ocasión, gracias al nuevo código de Lauren. ¿Qué hay otro buen caso para tratar? AUDIENCIA: Un punto negativo. DAVID J. MALAN: un negativo, y tal vez algo un poco más grande, así que tal vez negativo 42, pero en general, cuando probar sus programas seguir adelante, eres va a querer pensar a sí mismo, como lo son los casos fundamentales diferentes. Y me atrevo a decir un caso negativo, un caso positivo, y un caso cero casi redondea a cabo. Echemos un vistazo a una variante de este embargo. Condiciones una. Esta es una solución correcta aquí, de modo que usted verá dos y en línea, si usted camina a través de la tutoriales, generalmente, incrementar paso a paso hasta que éstos obtener exactamente el enfoque correcto. Lo que si queríamos pedir dos preguntas a la vez? Permítanme abrir este lugar. Non-switch, por razones vamos a ver otra vez. ¿Qué hay de nuevo sintácticamente aquí? Actualmente estoy jugando un juego donde el equipo está diciendo yo, yo doy un entero entre uno y 10, y luego me estoy juzgando la entrada del usuario. En Inglés, basado en el código que ves aquí en azul, lo que hace este programa? AUDIENCIA: [inaudible] recogido un número grande o pequeño. DAVID J. MALAN: Sí. Es sólo la adjudicación si Elegí un grande, o medio, o número pequeño basa en una muy definición arbitraria de pequeñas, medianas, y grandes aquí, pero aviso la sintaxis que es nuevo es la siguiente. Hay no menos de int o igual a firmar, o mayor que o igual a firmar, donde uno es sobre el otro, que puede expresar en como Microsoft Word. Así que en un lenguaje de programación que normalmente sólo hacer dos personajes, uno después del otro. ¿Y qué tiene esto probablemente representar, signo ampersand. AUDIENCIA: [inaudible] DAVID J. MALAN: Sí. Sólo significa y porque Resulta que los autores de C utilizado un solo signo, que se podría pensar sería perfecto para la noción y de, ya está agotado, signo tan ampersand realidad capta el caso que realmente queremos. Así que ahora vamos a tropezar a través de dos cosas. Déjame ir por delante y abrir una. Algo que es un poco preocupante. La imprecisión del punto c. Permítanme presentarles a dos cosas aquí. Uno, el aviso de que podemos hacer matemáticas, ya que al igual que antes, cuando hicimos más de dos números, x e y. ¿Qué es este programa, aparentemente haciendo? Yo no he comentado todavía, y yo he introducido ciento f, pero rápidamente he dicho antes ciento f significa punto flotante valor, que es un número real. Algo con un decimal punto, que no es un entero. ¿Qué crees que este programa es tratando de mostrar en la pantalla? ¿Sí? AUDIENCIA: El resultado de una sobre 10. DAVID J. MALAN: Sí. ¿Cuál es el resultado de uno dividido por 10. Claro, porque todos ustedes tienen probablemente crecido sabiendo que uno de más de 10 ¿Es que? Sí, es sólo un décima o 0.1. ¿Correcto? Así que vamos a ver lo que esto realmente es. Así que déjame ir adelante y salvar esto. Déjame ir aquí. Hacer slash dot imprecisión imprecisión y aviso, también, en un entorno Linux, no lo hace tener que escribir la imprecisión y tomar todo el día. Por lo general, si se golpea Tab, se terminará su pensamiento para usted, basado en las palabras que están disponible en el directorio actual. OK. Así que usted tenía razón. Uno dividido por 10 es, de hecho, 0,1. Pero yo soy un poco curioso. Y resulta printf apoya algunas características mediante el cual se puede especificar más de el número predeterminado de puntos decimales. Así que si quiero ver 10 decimal puntos que puedo hacer por ciento, para el símbolo de marcador de posición, punto 10 para, dame 10 puntos decimales, y luego sigue en coma flotante valor, y, como un aparte, ¿qué es esta barra invertida n al parecer seguimos usando? Resulta que es un símbolo de una nueva línea. Es la manera muy explícita de decir a la computadora, mover el cursor a la siguiente línea después ya está. Y vamos a ver qué pasa cuando no hacemos eso. Permítanme recompilar hacer imprecisión. Ahora dot recortar imprecisión. OK. Aún derecha. Uno dividido por 10. Ahora me estoy poniendo un poco curioso, sin embargo. ¿Qué pasa si me veo 20 decimal señala, recompilar, vuelva a ejecutar, y como un lado para velocidad, también puede utilizar la flechas arriba y abajo para desplazarse a través de su historia, por lo que no tiene que mantener volver a escribir estos comandos, introduzca. ¿Eh. No aprendí que en la escuela primaria. Muy bien, así que me dejó ver como 29 lugares fuera. Tal vez es sólo una casualidad. Tal vez mi ordenador está actuando raro. Eso no es una cosa, ¿verdad? Se está haciendo algo determinista. Así que la imprecisión. OK, nada bueno. ¿Entonces qué está pasando? Así que al parecer su profesor ha estado mintiendo para que todo este tiempo para razones que veremos en poco tiempo. Pero vamos a terminar con otro programa. Esto es un poco de los programas alguien escribió hace algunos años, y es en realidad parte de un concurso. En realidad, nadie escribe código así, y si lo hace, esto es estilísticamente un problema. Pero la gente hace esto para exigir derechos. Para escribir el más confuso programa que busca sin embargo, hace algo interesante. Y la nota que pensamos que lo dejamos en hoy, antes de Colton nos toca aquí, es ejecutar este programa, que, incluso en sólo usar C en esta basado en texto medio ambiente, nosotros esto da. Maldita sea. [Risas] Colocarse. [Inaudible] c tablero l m. Vas a ver el mágico encantamiento que vamos a ver en poco tiempo. [Inaudible] Muy bien. Y ahora usted puede incluso hacer cosas como esta. Eso es. Porque nosotros CS50, verá que el viernes. [REPRODUCCIÓN DE MÚSICA] [Aplausos]