DAVID J. MALAN: Así que esto es CS50. Y esto era propio Colton Ogden del CS50, para más de quién es la música que se puede descargar en soundcloud.com/cs50. Así que hoy nos enfocamos tanto más en el arte de la programación. Y tomamos donde lo dejamos la semana pasada, centrándose en Scratch, que era esta lenguaje de programación gráfica. Y tomar las cosas a un nivel más bajo, utilizando una programación más tradicional lenguaje conocido como C. Pero en el camino, al darse cuenta que las mismas ideas que habló sobre el pasado viernes se repetirá, no sólo en este lenguaje C, pero en la mayoría de todos los demás que nos fijamos en este semestre. Así que llamamos a esta cosa aquí lo que la última vez? Esto es representativo de un comunicado. Así que llamamos a esto un comunicado. Y lo hace algo. Es una instrucción que un ordenador o arañazos podrían ejecutar. Y a partir de ahora, vamos a empezar también llamar algo como esto una función, por razones que pronto veremos. Mientras tanto, hemos visto cosas como esta. Y estos son por lo general conocido como lo construir? AUDIENCIA: Loop. DAVID J. MALAN: Así que un bucle. Así que bastante sencillo. Es, literalmente, hace lo que dice. Y en Scratch, si quieres meter más piezas del rompecabezas en allí, la pieza crecerá para adaptarse a ella. Y veremos en C que podemos hacer lo mismo. Otro tipo de bucle, sin embargo, en scratch podría ser para siempre, o hay cualquier número de otros enfoques. Pero echemos una más mirada generalista, con una cara eso es probablemente muy familiar, en bucles de manera más general. Mark Zuckerberg: Uno cosa que las computadoras son realmente buenos en es repitiendo comandos. Como persona, se obtendría muy aburrido si tenido que hacer lo mismo un montón de veces en una fila. Pero una computadora puede hacer la misma cosa millones o incluso miles de millones de veces, y no se aburren, y poder para cumplirla realmente bien. Así, por ejemplo, si quería desearles a todos en Facebook un feliz cumpleaños mediante el envío de un correo electrónico, me podría tomar más de una siglo para escribir realmente a cabo todos los correos electrónicos a todo el mundo. Pero con sólo unas pocas líneas de código, lo que pueda tiene un sistema de enviar un correo electrónico a todo el mundo en Facebook que deseen un feliz cumpleaños. Así que eso es lo que los bucles son y por qué son valiosas y algo que las computadoras pueden hacer muy bien. DAVID J. MALAN: Así que si usted ha sido el destinatario de algunos de CS50 y de Espacio de Dropbox en los últimos tiempos, que en realidad es precisamente lo que hacer, utilizando el código exactamente así. Esencialmente tenemos una gran hoja de cálculo en la cual la gente ha sido la introducción de su nombres y direcciones de correo electrónico. Y escribimos un poco de código que puede iterar sobre esas direcciones y escupir direcciones únicas en si alguien ha presentado varias veces. Y a partir de entonces, le enviaremos un automatizado de bot de CS50, incluyendo el código de cupón. Ahora también hemos buscado en esta construcción última vez. Y este es un particular, ejemplo de qué? Así que, sí, una expresión booleana. Y la forma se significa para capturar eso también. Todas estas cuestiones de la formar verdaderas o falsas en scratch se verá un poco de algo como esto. Y llamamos a esto una expresión booleana. Eso es realmente cierto o falso, sí o no. Es una manera de responder a una pregunta. Y Mientras tanto usted puede utilizar éstos Boolean expresiones dentro de constructos como éstos, que de curso son condiciones o ramas, proverbial bifurcaciones en el camino. Y pueden ver no sólo de esta manera, pero también pueden vigilara han asociado con ellos. Y en realidad se puede tener una forma de tres tenedor en la carretera o un tenedor de cuatro vías en el camino, simplemente por anidación de estas cosas, como verás en scratch si usted no tiene ya. Y como se puede hacer en C también. Tomemos otro generalista mirar un alumnist, además, que podría presentar un enfoque diferente a estas cosas llamadas condiciones. BILL GATES: La gente hace decisiones todos los días. Por ejemplo, antes de salir afuera que tipo de tener una sentencia if que dice: si está lloviendo entonces necesitará conseguir mi chaqueta. Y las computadoras son increíbles una vez que decidir ese tipo de declaraciones, que pueden ejecutar de forma fiable esas cosas a una velocidad increíble. Y por lo que un programa de ordenador realmente es un poco de matemáticas y algunos si los estados donde la decisión se hizo. DAVID J. MALAN: Así como ustedes saben, fue gente como Bill Gates, Paul Allen, y otros que realmente dio inicio a la llamado ordenador personal revolución hace unos años. Pensé, antes de sumergirnos en algunos administrivia, nos gustaría relacionarnos un cuento desde el Albuquerque, Nuevo México Museo de Historia Natural y la ciencia, donde algunos de Bill Gates y las historias más tempranas de Pablo Allen se relata la forma en que tenemos ahora PC actuales y las Macs y más. Para esto, sin embargo, necesitamos dos voluntarios que tienen muy buenas voces de narración para leer un guión en voz alta. Muy bien, ¿qué hay en volver allí. Vamos arriba. ¿Y qué hay en frente aquí. Vamos hacia abajo. Tome sus lugares aquí. Como ustedes vienen para arriba, un par de anuncios administrativos. seccionar, el proceso de la elección de una sección, comenzará este De miércoles a viernes. Más sobre esto el próximo Miércoles en conferencia. Secciones Súper, por su parte, son algo que le ofrecemos la próxima semana la cual se invita a toda la clase para participar en escala bastante grande secciones, una más cómoda, uno menos cómodo. Y vamos a anunciar los detalles de que, además, esta misma semana. Mientras tanto, las secciones sí, se iniciará en la tercera semana del curso, el índice cero, lo que significa que estos son un par de semanas fuera. Así que no se preocupe. Aún no ha perdido nada por el estilo. Mientras tanto, en el ínterin, si usted tiene alguna pregunta administrativamente, un correo electrónico a mí mismo y Devon y Gabe y Rob en esta dirección aquí. Por último, establece problema 0 es, por supuesto, fuera. Usted puede haber notado que en la página web del curso. Se debe proveer de usted todas las respuestas a las preguntas es posible que tenga a lo largo del camino para comenzar a utilizar el conjunto de problemas. Pero si usted se encuentra en la necesidad de una mano de ayuda, por todos los medios atender las horas de oficina, Lunes, martes, miércoles, jueves de esta semana por la tarde en cuatro comedores. Ver URL que hay de las indicaciones de donde las horas de oficina serán. Ahora Vamos a cumplir nuestro dos invitados aquí presentes. Cuál es tu nombre? JAY PAUL: Jay Paul. DAVID J. MALAN: Jay Paul, un placer conocerte. HIKARI: Hikari. DAVID J. MALAN: Hikari? HIKARI: Hikari. DAVID J. MALAN: Hikari. Encantado de conocerte también. Jay Paul y Hikari tienen en frente a ellos en estos música destaca dos scripts que imprimí a cabo esta mañana en el Nuevo Mexico Museo de Historia Natural y Ciencia. Y lo que yo pensaba Lo haría en el proyector es acompañar a su recitación del guión y esta historia con algunas imágenes visuales, no hay sorpresas. Y lo que he hecho con antelación está resaltado previo en la secuencia de comandos lo que usted debe leer, y lo que debe leer. Y vamos esencialmente párrafos sólo alternos. Así que es muy parecido que te pueden lo han hecho en la clase de Inglés. Eso es realmente obligar a la audiencia creer en su historia aquí. Debemos? Así que la historia aquí es que tenemos un BASIC, y comienza en Cambridge. JAY PAUL: Era invierno de 1974, en Cambridge, Massachusetts donde los inviernos pueden ser fríos. Un barbudo, de pelo largo desertor de la universidad nombrada Paul Allen fue drudging través Harvard Cuadrado, absorto en sus pensamientos. Su principal preocupación en estos días era cómo llegar a su amigo, Bill Gates, que dejar la escuela e ir en negocios con él. HIKARI: Los dos ya habían ido a través de una serie de proyectos empresariales juntos, a partir de la orilla del lago escuela en Seattle, donde se les pagaba en el tiempo libre de la computadora a probar un ordenador PDP-10 a una hora local compartir compañía. El plan más reciente había sido la de dejar de fumar escuela y formar una compañía de software. Allen había dejado Washington Universidad del Estado. Pero en el último minuto, Puertas decidido seguir con Harvard. JAY PAUL: Ese día, cruzando Harvard Cuadrado, Allen descubrió el enero 1975 emisión de Popular Electronics con el titular de parada de la tierra, Kit del Primer Mundo para miniordenadores para rivalizar Modelos Comerciales. Bajo el titular era una imagen de una pequeña caja adornado con luces e interruptores. Se llamaba el MITS Altair 8800. Y Allen sabía que esto era lo que que había estado buscando. HIKARI: Días de debate siguió. Allen y Gates entienden la importancia de la Altair. Habían hablado a menudo sobre microprocesadores y estaban esperando a ver qué que se haría con ellos. Ahora había un kit minicomputadora en la portada de Popular Electronics. Al parecer, no tenía el software todavía. Se imaginaban una nación de programadores descendían por MITS. Y por lo que llamaron Ed Roberts, el jefe de la empresa, alegando tener una versión de la Lenguaje de programación BASIC casi listo para el Altair. No lo hicieron. Y Roberts debe haber sabido que no lo hicieron. Se estaba haciendo 10 llamadas al día de personas que tenían un BASIC casi listo. Y su respuesta de stock fue: "La primera persona que se presenta con un trabajo BASIC obtiene el contrato. " JAY PAUL: Gates y Allen Nunca había visto un Altair. Ellos nunca habían visto la Intel 8080 microprocesadores en el corazón de la Altair. Pero un par de años antes Allen había escrito un programa en una computadora central que emulaba la operación de un Intel anterior microprocesador. Y esta vez se haría lo mismo. HIKARI: Con un procesador Intel 8080 Manual a su lado, Allen se sentó a una Harvard ordenador PDP-10 y escribió el emulador y software herramientas necesarias para hacer la programación. Mientras tanto Gates, dejó de ir a las clases y se dedicó para diseñar el BASIC, usando todos los trucos él sabía que para obtener el tamaño por debajo de 4 kilobytes. JAY PAUL: Out in Albuquerque, Ed Roberts recibió una llamada de Gates pidiendo información acerca de cómo el Altair maneja rutinas específicas. Nadie le había preguntado eso antes. Y Roberts comenzó a interesarse. HIKARI: Con el desarrollo herramientas y el diseño listo, Gates y Allen escribieron el código de la PDP-10, alistar otro estudiante de Harvard, Monte Davidoff, escribir rutinas matemáticas. Después de una última noche de programación, Allen tomó un avión para entregar su BASIC para MITS. Pasó el viaje en avión a preocuparse. Y de vuelta en Cambridge Gates, era preocupante. Habían probado su BASIC y que había trabajado en el emulador. Pero ¿y si el emulador se equivocó? JAY PAUL: Cuando el avión acercado a Albuquerque, Allen se dio cuenta de que su BASIC, ahora contenida prolijamente en un pequeño rollo de cinta perforada, se inútil sin una separada programa, llamado un cargador, que diría el Altair cómo para leer el ser cinta de papel alimentado a la máquina de teletipo. Sacó su libreta y rápidamente garabateó un programa cargador en lenguaje ensamblador, a continuación, de forma manual traducido en que los 1s y 0s el Altair entendería. HIKARI: Allen esperaba un limpia poco, la compañía, de alta tecnología dirigido por hombres en trajes de negocios. Así que se sorprendió cuando Roberts se reunió él en el aeropuerto el aspecto de un rancho mano. Roberts también se sorprendió. Cuando se le cayó la Harvard programador en un hotel caro, Allen tuvo que confesar que no podía darse el lujo de la habitación. JAY PAUL: MITS, en sí, era ubicado en un centro comercial con mucho polvo. Dentro de un desordenado banco de trabajo fue un Altair cargado con 5 kilobytes de memoria y conectado por un cable a una máquina de teletipo. Roberts y el Ingeniero Jefe, Bill Yates, esperó expectante como Allen alternar su cargador programa en el Altair. El teletipo comenzó resoplando cuando se detuvo la cinta de papel a través del lector de cinta. Tomó tal vez 15 minutos para cargar el programa. Entonces el teletipo impreso abruptamente una pronta memoria, entonces el símbolo del preparado, y Allen empezó a teclear algunos comandos de prueba. Para sorpresa de todos, el software funcionó. Había bichos, por supuesto. Pero lo principal era que funcionaba. HIKARI: Más tarde, en su camino a un $ 3.00 almuerzo en Pancho, una avispa voló en la ventana de la camioneta camión y picó Allen en el brazo. Pero en ese momento nada podría estropear el estado de ánimo. El Altair ahora tenía su BASIC, el primer software comercial para un hogar ordenador, hecho por Paul Allen y Bill Gates, haciendo negocios como Microsoft. DAVID J. MALAN: Muchos gracias a nuestros dos lectores. [Aplausos] DAVID J. MALAN: Ahora usted tiene su opción, antes de salir, de un brillante o un resplandor en el dark-- oh, espere un segundo, Espera-- brillante y un resplandor en la oscuridad elefante a partir del CS50 propio Cheng Gong. HIKARI: Aw, gracias. DAVID J. MALAN: Todos bien, muchas gracias. [Aplausos] DAVID J. MALAN: Así verdadera historia. Esto es para decir que todos estos máquinas y la facilidad con la que utilizarlas ahora y tomar por descontado, de verdad comenzado aquí, a sólo unos pasos de este teatro real. Y hoy, si no has estado, esto es Maxwell Dworkin, el ordenador edificio de ciencias, También alrededor de la esquina. Y en la segunda planta de este edificio hace colgar tres páginas a partir del código fuente original que Bill Gates y Paul Allen escribieron. De hecho, si el uso que un zoom en se puede ver no sólo sus nombres en la Tipo de original, sino también sus firmas que adornaban un unos años la última vez que visitaron. Pero lo que era especialmente convincente sobre esto es lo que se propusieron hacer era escribir un programa que haría permitir a otras personas a escribir sus propios programas. En ese momento todo lo que había con esta máquina Altair hecha por MITS. Y todo lo que necesitaban era alguna forma de por lo que es fácil para los aficionados y la gente Nos gustaría en este espacio para realmente programa que sin necesariamente comprender Código ensamblador o máquina código, o Dios no lo quiera, 0s y 1s. Nosotros los programadores, como los que en esta habitación, nos quiero ser capaz de expresar nosotros mismos mucho más como pseudo código incluso si es un poco más nit exigente de lo que hablamos la semana pasada. No queremos escribir código como este, que hicieron Paul Allen y Bill Gates. Nosotros, en cambio, queremos escribir código que se ve un poco más fácil de usar. Ahora bien, este es un lenguaje conocido como BASIC. Y los números de línea no son lo que utilizar simplemente contar las líneas de código que usted está escribiendo. Ni siquiera tenemos que hacer eso en estos días. Pero se puede ver aquí cómo escribir "Hola, mundo" sería de hecho presumiblemente imprimir precisamente eso. Y así lo que Bill y Paul hicieron fue empoderar a la gente a escribir código como este lugar de-- si usted toma una mirada en el ciencias de la computación pared-- código como este. De hecho, recientemente CS50 tenido la oportunidad sentarse con el profesor Harry Lewis en el departamento de ciencia de computadoras, que realmente enseñado Bill Gates, hace algunos años, y está aquí de pie ante esas tres páginas de extractos. Vamos a echar un vistazo. HARRY LEWIS: Lo que tenemos aquí es una la oferta de una pieza temprana de software escrito por Bill Gates y Paul Allen, los fundadores de Microsoft. Así que el código es interesante por dos razones. En primer lugar, se hizo El primer producto de Microsoft, que era un intérprete para el lenguaje de programación BASIC. Y en segundo lugar, se trataba de uno de los primeros intentos para crear un intérprete tan ordinario la gente podría utilizar las computadoras personales. Así que Bill Gates fue una estudiante en Harvard. Empecé a enseñar en Harvard en 1974. Esto se hizo en 1975. Así que fue a principios de su carrera y al principio de mi carrera. De hecho, me enseñaron a Bill en un curso en esta época. Paul Allen no era un Harvard estudiante, pero había sido una escuela secundaria compañero de Bill Gates. Si vienes y miras en la lista, podrás en realidad encontrar tercera nombre, Monte Davidoff, quien fue compañero de clase de Gates aquí en Harvard. OK, así que aquí hay un interesante comentario aquí. Dice "En 4K puede eliminar de raíz cuadrada pero para bucles aún deben trabajar ". OK, así que lo que eso significa es que hay Había dos formas de compilar este programa. Uno era para ejecutarse en una versión de este equipo Altair que sólo tenía 4K palabras de memoria, 4.096 palabras de memoria. Pero la gran versión tenía 8K. Y así, lo que dice es que en la versión 4K había que borrar algunos código para que se ajuste. Y una de las cosas que se suprimiría sería la rutina de raíz cuadrada. Pero al parecer, la para lazos aún debe trabajar incluso cuando estás compilando abajo por sólo la versión de 4K de la computadora. DAVID J. MALAN: Así que uno de los temas, como veremos en ciencias de la computación, Es esta noción de capas y la abstracción, y realmente de pie sobre los hombros de personas que nos han precedido, no a diferencia de algunos de los Bill Gates y narrativa Paul Allen aquí. Y lo que esto significa es que hoy podemos dar por sentado que las cosas son en realidad más fácil para nosotros para escribir código. De hecho el código, como dijimos el viernes, es más técnicamente conocido como código fuente. Y es este Inglés como sintaxis eso es más propio y más bien definido que algo como pseudo código, para que no existe una definición formal. Y hoy lo vamos es centrarse en el código fuente que tiene este aspecto, lo que es cierto que a primera vista parece completamente críptica. Y, francamente, es mucho más estético complejo que el programa subyacente es. Todo este programa lo hace, recuerdo, es lo que dijimos? Simplemente imprime "hola mundo". Y sin embargo, mira todas las cosas que necesitamos para envolver alrededor de esa frase muy simple. Pero al poco tiempo todos estas líneas y más hará mucho mejor sentido para usted. Y el flujo es como sigue. Lo que necesitamos a nuestra disposición es tomar código, como fuente código que acabamos de ver. Y necesitamos un nuevo programa para ejecutarlo a través. Necesitamos algoritmos que pueden convertir el código fuente, así, en código objeto, 0s y 1s. En otras palabras, lo que vamos a aprender hoy es cómo hacer esto, escribir código fuente encima de la tapa, pasarlo como entrada a un especial programa conocido como un compilador, y vamos a producir código objeto. Lo cual es sólo una forma elegante de diciendo vamos a tomar algo que se parece a esto, pasarlo en un programa llamado un compilador, producir código objeto que se parece a esto. Así que estos son literalmente los patrones de 0s y 1s que se entiende por un Ordenador Intel en estos días, que si se interpreta por la CPU, los cerebros en el interior de una computadora, literalmente imprimir, simplemente, "hola mundo". Ahora no hay manera más 0s y 1s que usted que espero pueda ser necesaria para eso. Pero eso es porque estamos construyendo en una buena parte de la complejidad que a partir de ahora podemos dar por sentado. En otras palabras, un montón de gente inteligente nos han dado una gran cantidad de herramientas interesantes y software de gran alcance con el que ahora puede hacer proyectos propios. Así que vamos a empezar. Mientras que el viernes pasado, y para Problemas de 0 esta semana, estarás jugando en un mundo que se parece a esto. A partir de hoy y para el problema Set 1 la próxima semana, el código va a mirar un poco más críptica, pero funcionalmente es va a ser el mismo. Así previo aviso, la parte superior es Scratch, conclusión es C. Francamente arañazos es mucho más fácil amable y accesible. Pero si ahora comparar visualmente superior a parte inferior, hay una especie de uno a uno correspondencia entre el piezas de un rompecabezas y el idioma estamos a punto de jugar. En particular, por ejemplo, la rompecabezas azul pieza encima de la tapa, aparentemente es equivalente a lo que la palabra clave o frase especial en este idioma llamado C? AUDIENCIA: Printf. DAVID J. MALAN: Printf. Eso significa que la impresión con formato. Y eso es sólo una fantasía manera de decir printf en C va a ser una declaración o una función que imprime algo a la pantalla. ¿Qué quiere imprimir a la pantalla? Lo que usted le diga que en el interior de cotizaciones, dentro de paréntesis. Así que de nuevo, es cierto, hay un montón de cosas que hay que tener en cuenta, paréntesis, comillas, puntos y comas, y todo esto. Pero todo eso es una especie de fuera de lugar. La lección interesante por ahora es que el bloque de voz en scratch es más o menos equivalente a la sentencia printf en C. Mientras tanto, la pieza del rompecabezas de color amarillo encima de la tapa, cuando la bandera verde se hace clic, es probablemente equivalente a lo que la palabra clave aquí? AUDIENCIA: Principal. DAVID J. MALAN: Así principal. Quizás int, tal vez sin efecto. Pero principal tipo de sonidos como que es importante, y de hecho lo es. Así que cuando la bandera verde hace clic es, de nuevo, la pieza del rompecabezas que arranca un programa de Scratch entero. Pero vamos a empezar ahora llamando que la principal, esta función conocida como principal. Ahora mientras tanto vamos a generalizar de la siguiente manera. Podríamos llamar a decir una función. Y puede parecer específicamente como este. Bueno, ¿qué pasa con bucles? Si queremos iniciar la conversión o traducir más en Scratch para C, esta cosa aparentemente sólo dice "hola mundo" para siempre. Así que si usted asocia estos scripts con un gato en Scratch, que sólo va a seguir diciendo en una especie de burbuja de la historieta, "Hola mundo, hola mundo, hola mundo ", hasta la saciedad, para siempre. Si queremos hacer algo similar en C, va a parecer un poco críptico. Pero podemos lograr el mismo resultados, ya que con el tiempo averiguar, con una sintaxis como esta. Voy a utilizar printf de nuevo, porque al final del día Quiero imprimir "hola mundo". Y estoy parecer utilizando un palabra clave que no es para siempre. Es su lugar, mientras que la palabra. Pero sólo semánticamente en Inglés, mientras que tipo de sugiere algún tipo de bucle o ciclo. Así que pasa a ser la palabra clave que utiliza C. Y aunque es cierto, ¿por qué, mientras que verdadero valor eficaz para siempre? Bueno, mientras que, como veremos pronto apreciar aún más, tiene esta entre paréntesis al lado de él donde usted puede poner una expresión booleana. Y mientras que expresión es verdadera, el código, como se indica entre estos dos llaves como vamos a llamarlos, se acaba de seguir corriendo una y otra vez. Tan cierto es cierto. Así, mientras que los medios verdaderos sólo hacer esto para siempre. Es casi un estúpido construcción de expresarse. Pero allí no era siempre palabra clave en C. No había tiempo. Y había una muy simple Expresión booleana como verdadera. Y por lo que este, ya veremos, logra el mismo resultado. ¿Cómo más podría implementar un bucle? Bueno, en scratch que te pueden codificar un número específico de iteraciones en el bucle aquí. Y eso es exactamente lo que podría hacer en esta versión de C, por lo que tenemos una llamada para el bucle. Y el bucle aquí va para repetir, de manera algo críptica, desde el valor 0 en hasta a pero menos de 10. Ahora variables en cero. Puede que no haya tenido ocasión de utilizar estos. Pero ¿qué sentido tiene, en general, de una variable dijimos la semana pasada? Qué es eso? AUDIENCIA: Puntos. DAVID J. MALAN: destacar? Oh, señala. Aceptar, hacer el seguimiento de los puntos, por ejemplo, en un juego. O más en general hacer lo que con la variable? ¿Cuál es la utilidad de ellos? AUDIENCIA: Memoria. DAVID J. MALAN: Sí, ¿y la memoria. Es para guardar algo. Y la clase de tonto me visual utilizado la última vez fue como este recipiente de vidrio. Y si quisiéramos almacenar algo dentro de una variable, por ejemplo, en este momento el valor es seis porque hay son seis pelotas de ping pong en aquí. Es sólo una especie de almacenamiento contenedor que debajo del capó se implementa con bits, 0 y 1, sin embargo, un equipo pasa a hacer eso. Así que en Scratch, si quieren tener una variable, podemos utilizar un bloque de color naranja como este. Llamaremos a ese contador en este caso particular. Yo inicializa a 0. Y lo que yo hago entonces? Siempre, decir contador, que si juegas con eso en Scratch, usted sólo ve los arañazos. El gato o lo que sea el traje se pone en él hablará el número en cuestión. Cambiar contador en 1 es como incremento a 1. Y así esto va a contar de qué y qué? Desde 0 hasta el infinito, o hasta que se rompe de Scratch, o hasta que tipo de perder interés en ver qué tan alto que realmente puede contar. Así que ¿cómo podemos convertir esto en C? Va a parecer un poco críptico. Pero, de nuevo, si nos fijamos en cada de estas líneas individualmente que tipo de formación general. Así que al parecer int va a tener algún significado especial en C. Vamos a ver eso de nuevo. Como acotación al margen que significa entero. Así que sólo significa número. Así que ese es el tipo de recipiente de vidrio que quiero, una que puede almacenar números, No un ping pong bolas. Y yo voy a utilizar el signo igual hay que asignarle un valor de 0. Así que eso es bastante como conjunto contador a 0, pero en C. Mientras tanto, mientras que la verdadera, que era equivalente, por supuesto, para siempre, a pesar de que es un poco críptico, y luego dentro de las llaves. Y usted puede pensar en estas llaves, el que puede escribir en el teclado, como realmente ser como la curvatura en estos bloques de lazo de color amarillo en el principio. Abarca varias líneas de código. Printf es cada vez un poco de miedo ahora porque ver no sólo cita entre paréntesis. Pero, ¿qué más hay de nuevo sintácticamente en este ejemplo? Hay un porcentaje d. Y a continuación, la barra invertida n está ahí. Nos hicieron ver que antes, incluso aunque yo no lo mencioné. Entonces hay una coma. Y luego hay un mostrador. Pero ya veremos en tan sólo un momento en que esto es sólo una forma estándar de decir una impresión "Número decimal", comillas, cierra, un número decimal. Pero yo voy a decir más tarde lo que el número decimal es. Así que el hecho de que hay una coma en esta línea refrán printf, significa seguir adelante y de impresión un número decimal. Ah, y por cierto, el número es cualquiera que sea el valor de esta variable es. Y así, para hacer esto más claro, vamos a ver un ejemplo poco tiempo que implica exactamente printf en el contexto de los programas de real c. Ahora acaba de concluir algunos de estas construcciones. Expresiones booleanas, puede que no tenga ocasión para utilizar estos en su programa Pero es posible que muy bien, especialmente si el uso de condiciones. Y por lo que estos dos ejemplos de Raspe significaría si x es menor que y, o si x es menor que y e y es menos de z, ¿cómo podríamos traducir eso? Bueno, en C es sólo va a tener este aspecto. Un poco crípticas, más paréntesis, algunos símbolos de unión extraño, pero fundamentalmente las ideas son tan simples como están en el mundo pieza del rompecabezas. Simplemente estamos comprobando si algo es menor que otra cosa. ¿Qué hay de las condiciones? En pocas palabras en Inglés, lo que hace este trozo de código de Scratch do le dirías? AUDIENCIA: Compara dos números. DAVID J. MALAN: Compara dos números, y si x es menor que y dice tanto. Si x es mayor que y dice tanto, otra cosa si x es igual a y dice tanto. Ahora donde x e y vienen? Quién sabe. Este trozo de arañazos código está fuera de contexto. Pero lo que queremos hacer ahora es traducir esto por un momento para ver. Así como usted se sienta cómodo esta semana en de problemas 0 jugando en este mundo a la izquierda, se dan cuenta que las ideas no están cambiando esta semana o la próxima o más allá. Estamos simplemente ir a empezar a escribir cosas de una manera diferente con nuestra teclado en lugar de nuestro ratón. Así que si x es menor que y, y hay algunos paréntesis, allí, entonces hay algunas llaves de nuevo al tipo de encapsular al igual que las piezas de un rompecabezas de color amarillo hacen. Y voy a printf x es menor que y y así sucesivamente. Lo bueno de C, como se puede ver aquí, es que usted no obtiene esta jerarquización, anidación, anidando eso es necesariamente va a empujar a su código a la derecha. Usted puede tener todo en su lugar alineación gusta prolijamente esto. Pero eso es sólo una estética detalle veremos de nuevo en poco tiempo. Bien. Así que eso nos lleva de nuevo a este programa busca críptica. Vamos a realmente escribir algo de código. Ahora, ¿cómo ir sobre la escritura de código? Todos estos años que he poseído un Mac o un PC, de escritorio o portátil, que realmente ha tenido la capacidad de para empezar a escribir código de programación. Pero es probable que falta un tipo especial de programa. Por supuesto que puede escribir código. Pero no se puede necesariamente, fuera de la caja, convertir ese código fuente en código objeto, 0s y 1s sin lo que en su computadora? AUDIENCIA: Compiler. DAVID J. MALAN: Así que un compilador, derecha. Ahora, la mayoría de ustedes probablemente no son dueños de un compilador, nunca han descargado un compilador. Pero verás lo puede descargar como la mayoría de cualquier otra pieza de software. En el mundo de Mac OS, es posible que descargar o ya han descargado algo llamado Xcode o GCC o Clang. Si usted viene de la Ventanas mundo que te pueden han descargado Visual Studio, Visual Basic, entornos como eso. Hay docenas de compiladores en estos días en que puede usar. Sin embargo, el corto de él aquí es que sería un dolor y, francamente, una tecnológica pesadilla para cientos de las personas con diferente configuraciones de ordenador a todo configurar sus máquinas exactamente de la misma manera por lo que todos podemos estar en la misma página. Así que lo que, en cambio, hacemos CS50 está en que le damos un entorno estándar, una Entorno de Linux que es va a parecer un poco algo como esto. Vas a ver más de esto en el Problema Set 1 especificación que irá en línea este viernes por la noche. Y lo que esto significa es que de ahora en adelante van a ser capaces de descargar e instalar un programa llamado el CS50 Appliance. Y usted va a descargar e instalar otro programa llamado un hipervisor, que es sólo un forma elegante de lograrlo. Si usted es dueño de un Mac o un PC o una Ordenador Linux o un ordenador Solaris, o lo que sea operativo loco sistema que se está ejecutando, vas a descargar un programa llamado el hipervisor que es va a ejecutar el CS50 Appliance en su ordenador no importa cuál sea su sistema operativo es. Un hipervisor es decir convierte nuestras cosas a cualquier idioma, cualquier instrucción que sus propia computadora entiende. Así que esta es una estratificación. Y de nuevo, esto es una especie de temática en el ordenador la ciencia, el edificio en la parte superior de las cosas. Es posible tener Windows. Es posible que tenga Mac OS. Pero a partir de la próxima semana usted es va a haber descargado un software gratuito llamado el hipervisor. Usted va a haber descargado una pieza de software llamado el CS50 Appliance. Eso va a ejecutar en el hipervisor, que se va a ejecutar en su equipo. Y el resultado final es que todos nosotros tener una ventana simple como esto en su Mac o PC eso nos da la ilusión de todos ejecutar el mismo sistema operativo, sin ningún otro impacto en el equipo. Y usted puede pantalla completa y esencialmente comportarse como si usted está ejecutando una sistema operativo llamado Linux, que es lo que el CS50 Appliance se basa en. Así que vamos a utilizar realmente este ahora a escribir un programa. Usted puede escribir un programa utilizando Microsoft Word. Usted puede escribir un programa utilizando TextEdit o Bloc de notas, o WordPad, o casi cualquier palabra programa de procesamiento que jamás ha utilizado. Pero la realidad es que no debería utilizar realmente cualquiera de esos programas. Por cierto, no debe usar algo como Microsoft Word, que tiene orientación y cursiva negrita, y fuentes más grandes y fuentes más pequeñas, porque el equipo no preocuparse por nada de eso. Todo el equipo está va a tener en cuenta es Inglés como instrucciones escritas en C. Así que lo que haremos dentro del Appliance CS50 es utilizar un programa de libre disponibles, y es pre-instalado en este aparato, llamado Gedit. Y Gedit es sólo un super simple editor de texto como TextEdit de Mac OS, como el Notepad de Windows que va a mirar un poco algo como esto. Así que vamos en realidad no mirar las diapositivas de esta. Pero vamos a ir en realidad en el propio medio ambiente. Voy a seguir adelante y iniciar la sesión, en esta otra ventana, a mi CS50 Appliance, que tengo pre-instalado en mi ordenador portátil aquí. Tenga en cuenta que, al igual que Windows y Mac OS, tiene algunos menús. Al igual que Windows pone allí abajo en vez de Mac OS, lo que lo coloca allí. Pero la realidad es que es todo tipo de la misma. Y aquí es en su conjunto manojo de software. Hay Dropbox. Hay un montón de accesorios, programas gráficos que vamos a utilizar más tarde en el término de los boletines de problemas. Hay un navegador web integrado en la que se trata de un ordenador de pleno derecho en el interior de una computadora. Pero yo voy a hacer clic en este más a la izquierda icono blanco aquí, que es el icono para Gedit. Y se va a abrir una ventana que cuenta con tres paneles a la misma, una izquierda, una superior y una inferior. Ahora está en la parte superior de este derecho que Voy a escribir algo de código en realidad. Así que vamos a hacer esto ,. Voy a ir a Archivo, Guardar. Y no puede ser que alguna vez ha visto esta ventana particular antes. Pero esto es como Mac OS o Windows. Es sólo una ventana con todas las carpetas que tengo dentro de este equipo. Y me voy a guardar el archivo como hello.c. Y yo voy a ir adelante y haga clic en Guardar. Y ahora noto que tengo una pestaña en la parte superior izquierda llamado hello.c. Así que, probablemente, bastante familiarizados, incluso si no tienes utilizado este programa en particular antes. Y ahora voy a escribir en los secuencia bastante críptica de comandos que vimos hace un momento. Incluya, I estándar / O.h. Más sobre esto pronto. Void main Int, rizado abierto corsé, cerrado corchete. Y luego dentro de allí, creo que es donde tuvimos "hola mundo", punto y coma. Y ahora ahorrar. Así que este es un programa escrito en C, escrito, por lo tanto, en el código fuente. Pero yo no puedo ejecutar este programa. Yo como que quiero duplicar haga clic en un icono en alguna parte, pero no existe otro icono que el archivo de código fuente. Lo que, de nuevo, es el proceso ahora que Tengo que ejecutar este archivo a través de? AUDIENCIA: Compiler. DAVID J. MALAN: Así que un compilador. Así que en diferentes equipos que hacer esto de diferentes maneras. Pero lo que hemos hecho aquí en el Appliance CS50 que es representativo de cómo te pueden hacer esto en muchos sistemas diferentes, es que estoy simplemente yendo a ejecutar un comando llamado make. Y marca es, literalmente, va a hacer eso. Me un programa Make. Así que va a ejecutar un compilador para mí. Y el nombre del programa Quiero hacer es saludar. Ahora que es un programa. Y que es lo suficientemente inteligente para darse cuenta de que si yo digo hola hacen, que va a buscar automáticamente un archivo llamado hello.c simplemente porque esa es la forma en que está configurado. Así que cuando me golpeó ahora Ingrese aquí, esta línea críptica loco acaba de ser ejecutado. Y confía en mí, antes de de largo, dentro de pocos días, vas a entender lo que todos de que los medios sin sentido. Pero por ahora, sólo sé que hacer ejecución disparada de un compilador. En otras palabras, se encontró un compilador en mi ordenador eso es pre-instalado en el Appliance CS50 que le entregaremos a usted en el problema Set 1. Y entonces tomó hola.c como de entrada, y producido aparentemente 0 y 1 como salida. Y por defecto lo que hace es que ahorra los 0s y 1s en un archivo denominado hola. Y aunque esta sintaxis también podría ser nuevo para usted, simplemente diciendo dot slash hola va a ser la medio por el cual ejecuto este programa. Por ahora, y durante al menos un par de semana, casi todos los programas escribimos vamos a estar en ventanas de texto en blanco y negro. No ratones, sin hacer clic, sin ventanas, sin iconos. Vamos a mantenerlo simple y centrarse en las ideas subyacentes inicialmente antes de que lleguemos a algo nivel superior, por ejemplo, como el juego de ruptura que hablamos aproximadamente en la primera conferencia la semana pasada. Así que cuando me golpeó Ingrese aquí, es equivalente en un texto único entorno al hacer doble clic en un icono llamado hola. ¿Qué esperas voluntad suceder cuando golpeo Introduzca entonces? AUDIENCIA: Se va a imprimir "hola mundo". DAVID J. MALAN: Esperemos se imprimirá "hola mundo". Y de hecho lo hizo. Ahora que ha habido un sintaxis críptica aquí. Vamos a retroceder por sólo un momento y ver si podemos no se puede iniciar inferir con sólo retoques, intentos y fracasos, en cuanto a lo que está pasando aquí. ¿Qué pasa si me deshago de la barra invertida n? Ahora algunos de ustedes que han programada antes probablemente saben al instante lo que eso significa. Pero para aquellos de ustedes que han nunca programada antes, al menos, piensa a sí mismo lo que está pasando cambiar cuando vuelva a ejecutar este programa? Así que voy a volver a mi pequeña ventana en blanco y negro, que es la ventana en la que Puedo compilar este. Voy a volver a compilar hola. Vamos a ver el mismo secuencia críptica de comandos. Y yo voy a hacer slash dot hola. Y ahora alguien, si lo haría, que nunca ha programado antes, lo que podría ser diferente esta vez? Sí. AUDIENCIA: No se detendrá imprimir "hola mundo". DAVID J. MALAN: Va a-- lo siento? AUDIENCIA: No va a dejar de imprimirlo? DAVID J. MALAN: No lo hará dejar de imprimir "hola mundo". Así que no es una mala idea. Otras ideas? Sí. AUDIENCIA: Mensaje de error? DAVID J. MALAN: Error mensaje, OK, podría ser. Qué otra cosa? AUDIENCIA: Puede imprimir el soporte con el punto y coma así? DAVID J. MALAN: Podría imprimir la soporte con el punto y coma también. Así que tal vez que la barra invertida es, entonces, algunos tipo de terminous que es importante. ¿Alguna otra idea? Así que todas las buenas ideas. Y, de hecho, va ser un mensaje de error. Eso es probablemente lo más probable ser la respuesta en general para las próximas semanas a medida que aprendemos a codificar aquí. Pero por ahora recordar que los ordenadores sólo hacer lo que les dicen que hagan. Al igual que el maní ridículo mantequilla y jalea de ejemplo. Nuestros equipos humanos sólo se suponía para hacer lo que usted les dijo que hacer. Así que en este caso, si no le digas a la computadora para mover ese cursor parpadeante a la siguiente línea, que no va a hacerlo. Así que cuando ejecuto este programa ahora, notará la diferencia. Parece un error. Es un error estético, tal vez. Pero lo que es diferente acerca de esta salida en función de la última obviamente? Sí. AUDIENCIA: No hizo una nueva línea. DAVID J. MALAN: No hizo una nueva línea. Ahora bien, aquellos de ustedes que tienen páginas web tal vez hechas antes, usted puede ser que sepa de la BR etiqueta o la etiqueta de párrafo, muy similar en espíritu. Un navegador web le ignorar hasta usted le dice exactamente qué hacer. Del mismo modo, es un lenguaje como C sólo vamos a hacer lo que usted diga que haga. Así que la razón por la que todos estos ejemplos, hasta el momento, tiene tipo de casualmente tenía esta barra invertida allí, eso es los medios por el cual usted se expresa como un carácter de nueva línea, por así decirlo. Y usted puede tipo de apreciar, tal vez, que este sería un poco estúpido si nada más. Si quería una nueva línea, simplemente pulsando Enter y luego tipo de descuartizar el código como ese no debe realmente le frote el camino correcto. E incluso si no lo hace me importa en este momento, te darás cuenta de que esto no es un particular buena pieza en busca de código. Y así, lo que el mundo Hace años decidido es que cuando se quiere poner el cursor en una nueva línea de forma explícita, debe decir explícitamente nueva línea, la barra invertida n. Y hay alguna otra símbolos como esas. Pero por ahora sólo tendremos que centrarse en la barra invertida n. Ahora vamos a hacer el programa un poco más interesante. Voy a seguir adelante y esta vez a abrir un nuevo archivo. Voy a guardar esto como hola-1.c. Y sólo por diversión, me voy a ir lo puso en mi carpeta de Dropbox. Como verás en el CS50 documentación del aparato, finales de esta semana para el problema Set 1, nos animaremos utilizar Dropbox o algún servicio equivalente, porque entonces todo el código de va a ser una copia de seguridad automáticamente. Y por eso es que tengo entrado en esta carpeta aquí. Y ahora voy a escribir una ligeramente diferente programa. Incluya, I estándar / O.h, void main int. Y entonces aquí printf, hola mundo, que es exactamente el mismo que antes. Pero ahora quiero imprimir algo eso es un poco diferente. Quiero imprimir a cabo, decir: "Hola, David." Muy bien, así que obviamente, lo que debería de esperar ser el caso que si recompilar este programa, volver a ejecutarlo, que va a decir "hola, David." Pero lo que si quiero introducir este tipo de la variable, la noción de un contenedor que está pasando para almacenar D-a-v-i-d y no es difícil de código que en mi programa. Bueno, ¿y si me pongo hacer algo como esto? String s, por lo que esta es una variable. Si quieres una cadena, alias una palabra o una frase. Una secuencia de caracteres es lo que que en la programación llamamos una cadena. Sólo vamos a genéricamente llamada que s, porque es un nombre simple agradable. Pero yo podría llamarlo nada. Voy a decir iguales cadena s entre comillas, "David," punto y coma. Y ahora quiero insertar D-una-v-i-d en lo que yo soy la impresión. Y antes de que nos vimos un teaser en la pantalla de una sintaxis especial que nos permitió suplente en un valor. ¿Cuál fue el especial símbolo hace unas diapositivas? Así por ciento. En el momento que era ciento d para el número decimal. Eso realmente no son relevantes aquí. Resulta que hay otro símbolo de porcentaje, que es por ciento s, que significa para un marcador de posición para una cadena. Así que ahora, simplemente, estoy va a ir a hacer hola-1, porque este archivo se llama hola-1.c, y pulse Enter. Y la he cagado. Qué está pasando? Bueno, aquí es donde tenemos que empezar a Apreciamos que estamos en este comando entorno de línea, esta texto único entorno. No hay click en los iconos como carpetas en estos momentos. Y pensar de nuevo hace un momento. ¿En qué carpeta hizo que digo Lo estaba guardando mi código? Así que la carpeta de Dropbox. Podría haber sido llamado nada. Pero pasa a llamarse Dropbox. Así que de alguna manera tengo que hacer doble clic en esa carpeta Dropbox con el fin de conseguir en él y llegar a mi código llama hola-1.c. De hecho, déjame ir por delante y minimizar esta ventana sólo por un momento. Al igual que Windows y Mac OS, hay carpetas en Linux. Hay carpetas en el CS50 Appliance. Es sólo ahora estamos confinando nosotros mismos a este entorno de texto. Pero si hago doble clic en Dropbox, notará que hay es el archivo que quiero compilar. Pero yo necesito esto en blanco y negro ventana de terminal, por así decirlo. Pero necesito, por lo tanto, para mover en esa carpeta o directorio. Así que un poco arcano, pero Ya te acostumbrarás a esto también. En el mundo de Linux, que a su vez es el operativo sistema nos estamos quedando en el interior de la CS50 Appliance, hay un comando llamado CD. Lo que significa que puedo hacer CD, espacio, Dropbox. CD, cambio de directorio. Derecha. De vuelta en el día, cuando la gente estaba inventar las computadoras y operar sistemas como éste, que querían escriba las pulsaciones de teclado menor cantidad posible. Así que la forma más fácil de decir directorio de cambio era de CD. Así que si me golpeó CD, espacio Dropbox, cuenta de lo que ha cambiado aquí. Dentro de los paréntesis el aparato es una especie de seguirme la corriente y recordarme donde estoy. Así que la carpeta abierta es Dropbox. Si ahora escribo ls para lista, una vez más sucinta, porque la gente no quería escriba en su día l-i-s-t. Así que en lugar hicieron ls. Intro. Note que veo dos cosas, hola-1.c, y luego esta cosa críptica, 1m fuente. Esa es mi manera de decir código fuente de la semana 1 Lunes. Eso es una carpeta que descargué El sitio web de CS50 que hice el día de hoy y sólo hay que poner en el aparato de antemano. Pero por ahora lo único que importa es hacer este programa. Así que cuando escribo hacen hola-1, Enter. Maldita sea. Algo salió mal. Así que vamos a burlan de esta separación. Y, por desgracia esto es donde las cosas ser un poco estresante al principio, por lo menos si usted tiene nunca programada antes. Dios mío. Escribí un programa de dos líneas y Tengo cuatro líneas de errores. Entonces, ¿qué está pasando aquí. Primero y ante todo siempre desplazarse hacia atrás y encontrar el primer mensaje de error, porque muchas veces compiladores sólo confundirse por lo que tú y yo lo hacemos. Los compiladores son bastante tonto. Ellos sólo hacen lo usted les dice que hacer. Y si se les confunde, son sólo va a lanzar tipo de sus manos y tal vez lanzar más mensajes de error que son realmente relevantes. Así que echemos un vistazo a la primera. Súper críptica al principio. Pero aviso, aquí está el nombre de la archivo en el que me metió la pata al parecer. Colon 5, colon 5 sólo significa el la línea 5 en el quinto carácter. Así quinta columna de caracteres, si se quiere, de error. El uso de cadena de identificador no declarado. ¿Quiere norma n? No, me refería a la cadena. Y entonces es el tipo de copiar y pegar lo que he escrito para realmente sacar mi atención a donde metí la pata. Así que por alguna razón C, o al menos el compilador no entiende la cadena de palabras. Y eso es porque nos lo inventamos. Así cadena no existe en C. ¿Qué hace CS50, durante las primeras semanas sólo de la clase, está proporcionamos algún tipo de formación ruedas, por así decirlo. Y ponemos estas ruedas de entrenamiento dentro de un archivo especial llamado CS50.h. Así que este es el segundo de dos archivos nombres que aparentemente terminan en punto h. Vamos a rebobinar. Printf es una declaración o función que aparentemente imprime algo a la pantalla. Pero usted no me vio implementar printf, derecha. Hace años alguien implementadas printf. ¿En qué archivo quieres apostar que o ella puso la implementación para printf, el código para printf? En un archivo llamado estándar de E / O.h. De hecho, es probable que en dos archivos, I estándar / O.h, que es sinónimo de cabecera archivo, y yo estándar / O.c, que significa el código fuente C. Así que hace él o ella algunos años plopped el código que ellos escribieron en ese archivo para que la gente como nosotros años más tarde pueden incluirlo, por así decirlo, en nuestros propios programas. Y de hecho, eso es lo que el signo de libra seguido de la palabra incluyen lo hace. Se ve en el disco duro local, encuentra el archivo llamado estándar de E / O.h, y luego copia eficazmente y lo pega en el interior de mi propio archivo. Así que ahora mi programa sabe cómo imprimir a la pantalla. Así que por esa lógica, donde se define la cadena? AUDIENCIA: CS50.h. DAVID J. MALAN: CS50.h. Y de hecho, eso es lo que nosotros, el personal de base, habría hecho. Hemos inventado unos tipos de datos, por así decirlo, como una cadena, además de los que obtener de forma gratuita, como un int. Y vamos a ver a otros como un char para un carácter y unos cuantos más. En el interior de CS50.h es aparentemente al menos alguna mención de cadena. Así que ahora me dejes ir por delante y vuelva a ejecutar make hola-1. Voy a acercar un nuevo y cruzo los dedos. Ahora por haber hecho una cambiar Fijé la mayoría de las cosas. Pero maldita sea. Más porcentajes que los argumentos de datos. ¿Qué hice mal esta vez? Así que aún así es bastante críptico. Pero este error está en la línea 7 y el carácter 21. Así que vamos a mirar hacia arriba aquí. Es un poco sutil. Pero si usted piensa acerca de lo que las ideas fundamentales de aquí son, tal vez podamos bromear esto aparte. Así printf es el nombre de la función. Los paréntesis, hasta el momento, es al igual que lo que ponemos en todo las cosas que estamos pasando como entradas a una función. Muy bien, sólo un convención humana arbitraria. Utilice paréntesis. Dentro de esos paréntesis hemos estado poniendo comillas dobles, y luego una cadena como "hola mundo". Pero muy en ese ejemplo anterior brevemente hizo miramos con arañazos. Y tuvimos el porcentaje d, ¿qué otra cosa estaba dentro de los paréntesis que llamé a cabo verbalmente? Sí. AUDIENCIA: Así que es lo que está tomando [Inaudible] en el plazo de [inaudible] qué es esto [inaudible]? DAVID J. MALAN: Exactamente. Así que tuvimos el porcentaje d. Pero luego tuvimos cerca cita, coma, mostrador. Derecha. Nosotros especificamos lo que queremos para hacer lo que el marcador de posición. Así que lo que voy a hacer aquí es coma, ¿qué quieres que me ponga? AUDIENCIA: S. DAVID J. MALAN: S, s porque en este caso es el nombre del contenedor de almacenamiento. Es el nombre de ese recipiente de vidrio. Mientras que antes era contador en que ejemplo simple rasguño mirábamos. Así que ahora, habiendo realizado dos cambios, me dejaron el zoom y tratar una vez más para compilar este programa. Ahora veo que la línea críptica. Pero eso es en realidad el nombre del compilador. Clang es el nombre del compilador. Hacer que se me acaba de salvar el dolor de cabeza de vez escribir ese comando largo loco fuera. Así que ahora si me dot slash hola-1, Debería ver "hola, David." Bastante decepcionante, sin embargo, ¿no? Podríamos haber hecho esto mucho más simple sin hablar de las variables y CS50.h y todo eso. Así que vamos a hacer que un poco más interesante. Además de CS50.h, tener cosas como cuerdas declarada, la biblioteca CS50 también tiene algunas funciones. Así que hace como año, alguien escribió printf y lo puso en el estándar de E / O.h y algún otro archivo. Nosotros, el personal CS50, escribimos una función llamado GetChar, GetDouble GetFloat, GetInt, GetLongLong, GetString, y ponemos los que están dentro de un archivo llamado CS50.h y CS50.c. Y los ponemos dentro del CS50 Appliance. Y la gente también puede descargarlos en línea si quieren ponerlos en su ordenadores propios también. Lo que equivale a decir que hemos creado funciones que consiguen la entrada del usuario. No sé lo que todo de estos tipos de datos son. GetInt es algo sencillo, como obtener un número entero de alguna manera al usuario. Y GetString es probablemente como get una palabra o una frase del usuario. Así que vamos a centrarnos en eso. Y me voy a ir de nuevo en el aparato y voy a seguir adelante y guarde este archivo como, vamos a llamar a que hola-2.c como mi segunda versión. Y vamos a hacer un par de cambios. Esta vez en lugar de David codificación duro, que hace un increíblemente consistente pero el programa lo esperado, ¿y si en lugar de hacer GetString? Ahora note GetString tiene un paréntesis de apertura, paréntesis cerrado, porque no necesita ninguna entrada. Sólo va a ir a buscar una cadena del usuario. Y ahora unas palabras sobre otra sintaxis. Punto y coma acaba de terminar una línea de código. No es necesario en todas partes. Pero eso sólo significa que estoy hecho con esta línea de código. Pasemos a otro declaración o función. Cadena declara una variable. La cadena es como decir dame un tazón, por favor. Y déjame poner una cadena en el mismo. Y ahora el signo igual. ¿Cuál es el signo igual esencialmente equivalente a? AUDIENCIA: Asignar. DAVID J. MALAN: Sí, la asignación de un valor. Así que si, por ejemplo, la llamada GetString esta función, y vamos a ver en un momento que es va a solicitar al usuario una cadena. Esto es como dejarme luego escribo D-una-v-i-d en un pedazo de papel. Y cuando digo cadena s es igual a GetString, igual no significa realmente igualdad en la programación C. Esto significa asignar desde la derecha lado de la mano izquierda. Así que me he metido una cadena. Y el signo de igualdad que significa poner en el almacenamiento de contenedores llama s. Y entonces pasar esto a printf hacer realidad su cosa. Así, el resultado final, entonces se va a mirar un poco diferente. Hagámoslo hacen hola-2. O bien podría funcionar. Usted está siguiendo a lo largo. Haz hola-2 funcionó. Dot slash hola-2, Enter. Parece que tengo un infinito bucle o algo. Nada está sucediendo. ¿Por qué? AUDIENCIA: Está haciendo un bucle infinito. DAVID J. MALAN: Es un bucle infinito. Es un poco esperando a que yo realmente dotarla de alguna entrada. Así que déjame ir adelante y escribo en David, y pulse Enter. Y ahora se dice "hola, David." Si me quedo de nuevo. Escribamos en Rob, "hola, Rob." Ahora bien, este es el peor interfaz de usuario cada vez. El usuario es aparentemente supuesto saber qué hacer. Pero no importa. El uso de estos mismo edificio bloques al igual que en Scratch, podemos resolver ese problema y decir algo así como su nombre, por favor, colon, espacio, cerrado cita, cerca paréntesis, coma. Así que un montón de nuevo estupidez con la sintaxis. Pero noto Acabo de añadir un pieza del rompecabezas encima de ésta y por encima de éste. Así que ahora si me vuelva a ejecutar esto, hola-2, Enter. Espera un minuto. Lo que pasa / lo que está mal? No se comporta de manera diferente. Sí. AUDIENCIA: Usted no hiciera make de nuevo. DAVID J. MALAN: no lo hice ejecutar make nuevamente, derecha. Así que he cambiado de código fuente. Pero de nuevo, no hay ese flujo. El código fuente a través del compilador da Eres nuevo código objeto o 0s y 1s. Así que tengo que realmente make reestreno hola-2 Intro. Bien, algo que parece haber sucedido. Dot slash hola-2. Su nombre, por favor. Y para ser claro ahora, ¿por qué es el cursor en la misma línea? Exactamente. No puse la barra invertida n hasta aquí en mi código. Así que ahora puedo escribir algo así como Daven, Enter. Puedo correr de nuevo y escriba algo así como Gabe, Enter, y tenemos un programa diferente una y otra vez y otra vez. Ahora en última instancia, vamos a necesitar utilizar unos pocos capacidades diferentes. Hay que introducir en última instancia alguna condiciones que se pueden hacer las cosas de forma condicional. Quizás bucles para que podamos hacer cosas una y otra vez. Tal vez sería bueno si nos podría implementar nuestras propias funciones, como si pudiéramos implementar nuestra propia printf o nuestra propia versión de GetString y GetFlow, porque en última instancia, incluso utilizando este entorno de línea de comandos podemos hacer incluso el más visualmente interesante de las cosas. De hecho, en conclusión déjame hacer esto. Voy a seguir adelante y cerrar estas ventanas y abrir este icono aquí, que es sólo una más grande versión de que incrusta ventana de terminal. Así Gedit tiene no sólo el lugar de mi código, sino también construido en la ventana de terminal, la ventana en blanco y negro donde puedo correr los comandos. Me acaba de pasar para abrir una versión más grande de esta. Y ahora voy a entrar en la carpeta que ya he poner por adelantado en la página web del curso. Y yo voy a seguir adelante y abrir un archivo llamado thadgavin.c, que fue escrito por otra persona. Y si nos fijamos en esto, este no es el tipo de código vamos a estar escribiendo desde el objetivo de este código era escribir la más bonita mirando código que él o ella podría, independientemente de si o no otro ser humano jamás podría entender el código. De hecho, cada año hay es lo que hay llamado un concurso ofuscado C, que es para los frikis reales que escriben código que nadie más puede leer, sino que hace algo bien realmente simple o realmente increíble. Y pensamos que sería mejor concluir con este look en algo que es bastante increíble que podría haber visto una vez antes. Pero vamos a terminar en este nota, slash dot, thadgavin. Esta es, entonces, lo que le espera. Eso es todo por CS50. Nos vemos el miércoles. [REPRODUCCIÓN DE MÚSICA]