[REPRODUCCIÓN DE MÚSICA] DAVID MALAN: Bueno este es CS50 y este es el final de la primera semana. Así que me gustaría presentarles a mi ex aconsejado, Andel Duff, que no sólo hace iPhone 5 se encuentra, así como este atril, también hace que los automóviles. ANSEL DUFF: ¿Cómo te va, todo el mundo? Sólo quiero contarles un poco poco acerca de la Fórmula SAE, de la que yo soy el capitán. Es un equipo del MIT. Sólo quiero decirte chicos un poco sobre ella y espero generar algo de interés. Así que déjenme hablarles a través de un par de cosas acerca de nuestro equipo. Así que estamos completamente funcionamiento del estudiante, en el que todo el diseño de los miembros, simular prueba, y el fabricante de un subsistema del coche. Tenemos nuestro propio taller de mecánica y garajes, y N52-- o lo siento, N51-- que es el mismo edificio como el Museo de la Ciencia MIT. Y nosotros somos el pueblo que conducen el coche. Hay un concurso nacional en el comienzo del verano, y luego están los más pequeños tiroteo competiciones durante todo el año. Y luego que hacemos de formación de conductores días para conseguir nuevos miembros familiarizados. Nuestros días están en construcción Sábados 11 a.m.-8 p.m.. El almuerzo y la cena están cuidando de, a partir de Bertucci y Beantown respectivamente. Tenemos una reunión semanal y seminario, que es para el crédito del curso. ¿Qué hay de nuevo a partir de este semestre, y también será para el próximo semestre, para que pueda cruzar-reg para eso. Y luego tenemos el diseño, tienda, y CAD días durante la semana, mientras que los miembros lo hará de forma independiente Partes de CAD, la orden común, etcétera. Así que para eléctrica ingeniería en el equipo tenemos nuestra tracción, sistema de alta tensión, que funciona a un nominal 300 voltios, que incluye motores, reguladores de motor, y los paquetes de baterías. Entonces tenemos un bajo sistema de tensión, que se ejecuta a 12 voltios, que incluye controles, PUEDEN linfáticos, el cerebro caja, y el tablero de instrumentos. En la medida de CS va, lo hacemos tener mantenimiento del sitio web que necesita hacer para eventos, membresía cambios, nuevas imágenes y material de PR. Y luego tenemos el código que controla el coche para nuestro control de tracción, lanzamiento control, control de instrumentos, vectorización del par, y sistemas de frenado regenerativo, que funcionar normalmente en MATLAB, Simulink y LabView. Te diré un poco sobre el coche. Así que es alrededor de 500 libras. Es normas limitadas a 85 kilovatios. Tiene 2 EMRAX 207 motores en el espalda, uno para cada rueda trasera. Cuenta con paquetes de baterías personalizadas a partir de células de la bolsa A123 prismáticas, un total de 300 voltios y 5.6 kilovatios hora. Y es de accionamiento directo con una proporción de 2,64 a 1 unidad. Estas son algunas fotos que tomó de él en la competencia. Aquí está el cono posterior, la nariz, y aquí están los motores, esos grandes discos negros debajo del mens et manus. He aquí una diapositiva que saqué fuera de nuestro esquema de competencia. Y esto es sólo comparando nuestro coche a un par de coches disponibles en el mercado, como la KTM XBOW, Ariel Atom, y Caterha M 7-280. Si está familiarizado con el precio, el poder tirar de peso, dólares por caballo de fuerza, dólares por par, y nuestro coche todos ellos sopla fuera del agua. Si usted tiene alguna pregunta, anote esta dirección de correo electrónico. Envíanos un correo electrónico a fsae@mit.edu. Estamos felices de hablar sobre algo que te gustaría. Los estudiantes de Harvard son amables de la minoría en el equipo. Si usted tiene alguna pregunta sobre que por favor, envíanos un correo electrónico, feliz de hablar, y yo voy para regresar a David. Gracias. Te lo agradezco, chicos. [Aplausos] DAVID MALAN: Ansel pasó el verano trabaja con nosotros aquí en el campus en CS50 este verano. Y además de trabajar en cosas como las bombillas binarios, que realmente me abrió nuestra ojos-- y la mía en particular: a lo que realmente la intersección de no de hardware y software puede ser. De hecho muchas de las cosas que acaba de realizó una gira a través de está última instancia creado por primera vez en el software, y a continuación, en última instancia, fabricado en el mundo real en el hardware. Así que si usted está interesado en explorando esa intersección, quizás tomar hasta ese grupo. Ahora mientras tanto, aquellos de ustedes que son fanáticos de la tecnología, y los productos de Apple en particular, saber que hay había un par de anuncios de ayer. Pero nosotros pensamos que lo mostramos que uno que salió unos pocos días antes de que es posible que no haya visto. JORGEN EGHAMMER: Usted sabe, una vez en un tiempo algo viene que cambia la forma en que vivimos. Un dispositivo de manera sencilla e intuitiva utilizando se siente casi familiar. Presentación de 2,015 catálogo IKEA. No es un libro digital o un libro electrónico, que es un libro de libro. La primera cosa a tener en cuenta es no cables, ni siquiera un cable de alimentación. El catálogo IKEA 2015 viene totalmente cargada, y la duración de la batería es eterna. La interfaz es de 7,5 por 8 pulgadas, pero se puede ampliar a 15 por 8 pulgadas. La navegación se basa en contacto táctil tecnología que en realidad se puede sentir. Contenido viene pre-instalado a través de 328 páginas de alta definición de inspirar las ideas de decoración del hogar. Para comenzar a navegar, simplemente toque y arrastre. De derecha a izquierda para seguir adelante, izquierda a derecha para mover hacia atrás. Note algo más? Eso es correcto. No lag. Cada página cristalinas cargas instantáneamente, no importa lo rápido que se desplaza. Si desea obtener una vista general, simplemente sostenerlo en la palma de tu mano, y usando sólo el pulgar, Velocidad explorar el contenido. Si usted encuentra algo que desea guardar para más adelante, usted simplemente puede crear un marcador. E incluso si se cierra la aplicación, usted puede encontrar fácilmente el marcador de nuevo. Increíble. [Risas] [Aplausos] Así que eso nos lleva a Al final de la primera semana. Algunos anuncios ahora. Así seccionamiento está ahora en progreso. Vaya a esta URL aquí alguna vez entre hoy y el viernes al mediodía especificar en realidad si usted es entre los menos cómodos, más cómodo, o en algún punto intermedio. Esto es típicamente uno de los cosas que sólo tipo de conocimientos. Y, de hecho, aquellos de ustedes que son menos cómoda probablemente saber tanto, aquellos de ustedes que son más cómodo saben tanto, y otra vez si usted no está muy seguro de que de esos cubos caes en que estés probablemente en algún lugar en el medio. Pero tenga la seguridad de que puede cambiar después de un par de semanas si es necesario. Mientras tanto, para la semana que viene no empezamos secciones per se, pero súper secciones, que están abiertos a todos los estudiantes. Este próximo domingo en una ubicación para se anunciará en el sitio web del curso tendremos una para los menos cómodos, así como uno de los más cómodos. Y los que en algún punto intermedio puede elegir cuál de los dos, o ambas, si lo desea, para sentarse en el. Y el enfoque de los será en última instancia de C, que vamos a seguir nuestro conversación de hoy. Boletín de problemas 0 mientras tanto es con suerte en tus manos. Oficialmente para mañana, Jueves, al mediodía. A menos que usted cobre en uno de los 5 días de retraso, que lo llevaría hasta el viernes al mediodía. Boletín de problemas 1 por su parte será publicado en la página web del curso. Y esta será nuestra primera incursión como una clase en C. Y ese conjunto de problemas espec le guiará a a través de una gran cantidad de la mecánica de lo Empezamos a hablar el lunes, y vamos a seguir hablando hoy. C, Linux, el CS50 aparato, todo eso le esperan en la especificación. El horario de atención por su parte están en curso, en el comedor universitario. Dirígete a esta URL aquí para ver el programar para esta noche y mañana, si usted desea participar. Preguntas Mientras tanto, para que tener oportunidades de hacer preguntas asíncrona, 24/7, se dan cuenta de que estás no limitado a las secciones y oficinas horas, sino más bien esta herramienta aquí, CS50 Discutir en ese URL estará en línea del curso software de tablón de anuncios, a través del cual usted puede hacer preguntas a compañeros de clase y también personal. Así que tenga en cuenta que los recursos también. Mientras tanto, una tradición comienza este viernes. Como usted pudo haber vislumbrado desde video teaser del miércoles pasado, tenemos una tradición más todos los viernes durante el mandato de tomar unos 50 estudiantes y personal a un restaurante local llamado Fuego y Hielo, en la que estamos normalmente acompañado por algunos ex alumnos o amigos de la industria a general aspirar para hacer una clase grande se sienta más pequeño. Así que es un almuerzo completamente informal. Un grupo de nosotros, el personal especialmente, jugará las sillas musicales y charlar con los estudiantes sobre 50, la vida fuera de 50, vida en el futuro, el mundo real, Estoy hablando de las oportunidades de empleo con sus amigos en la industria. Así que si usted desea unirse a nosotros este viernes, la cabeza a esta URL aquí. El espacio es limitado, pero vamos a hacer esto recurrentemente a lo largo del plazo. Dirígete allí para cs50.harvard.edu/rsvp. Y si usted no recibe en esta vez, no se preocupe. Vamos a hacerlo de nuevo en las próximas semanas también. Así que esta es la foto pintamos la semana pasada, y de lo que has estado incursionando en hasta ahora. Pero vamos a tratar de conectar esta ahora a lo que vamos a hacer hoy y en adelante. ¿Podría tener un voluntario? Muy bien, o varios. ¿Y aquí en el final, de la camisa azul. Vamos para arriba, ¿cuál es tu nombre? ALANA: Alana. DAVID MALAN: Alana. Así Alana, por sólo un moment-- Encantado de conocerte usted-- se va a jugar el papel de esta función aquí. El bloque de color púrpura que hemos llamada hasta ahora una función. Así que lo que voy a ir por delante aquí y ofrecer Alana es un poco de etiqueta con su nombre, para hacer claro el papel que está jugando. Así es que debe ser el bloque digamos. Si desea seguir adelante y poner eso en. Y vamos a mantener esta super simple. Si el objetivo a la mano es simplemente ahora a poner en práctica con Alana, este llamado bloque decir, así es como va a funcionar. Yo tienen-- llamémoslo un argumento o parámetro, no deja de ser una hoja de papel en blanco. Y es blanco de clase de ser una reminiscencia de la caja blanca en la que usted puede escribir palabras. Mientras tanto, yo voy a ir aquí. Voy a seguir adelante y escribir H-E-L-L-O coma mundo. Y ahora, como decir el programador, no lo hago realmente saben cómo decir algo. Se me ocurre con las palabras, pero no es así necesariamente saber cómo expresarme verbalmente o en la pantalla. Y así lo que voy que hacer es tomar esta pieza de funcionalidad, cuya Entrada-- o argumento, como lo llamaremos, He escrito en este pedazo de paper-- y yo voy a subcontratar. Y de hecho ese es el papel que funciones en un lenguaje de programación puede jugar. Algo así como el ejemplo bloque puede ser subcontratado a alguien que realmente sabe lo que él o ella está hablando. Así que si vas a pasar por encima aquí por un momento, Voy a pasar a esta entrada para Alana, y pida que le diga esta entrada. ALANA: Hola, mundo. DAVID MALAN: Eso es todo. Así que hay una función. Ahora podemos ir un poco más, podemos dar un paso adelante aquí. Porque eso fue claramente decepcionante. Así que ahora vamos a convertir esto en algo un poco más sofisticado. Así que esto, por supuesto, es nuestra versión C. Así que ahora si usted quiere tomar ese uno fuera, que etiqueta con su nombre fuera, y vamos a tener que poner un nuevo nombre. Pero fundamentalmente eres jugando el mismo papel, da la casualidad de que llamarse printf ahora. La historia es, por supuesto, va a ser-- probablemente tal como es underwhelming-- va a ser lo siguiente. Usted es ahora el printf función. Yo soy la persona que llama, o el programador, que quiere de pie sobre los hombros de personas en el pasado como tú, que ya han descubierto la manera para realmente escribir algo. Y así que esta vez, en lugar de decir que vamos a utilizar realmente nuestra pantalla aquí. Así que si desea dar un paso por aquí, voy para pasar de nuevo esto como de entrada a mi amigo printf. Si usted puede seguir adelante y imprimir que en la pantalla, simplemente dibujando con su el dedo en la pantalla en negro. Excelente. Muy bien, así que un montón de suspenso para cómo iba a jugar fuera. Así que ahora vamos a tomar las cosas un muesca final, si pudiéramos, de la siguiente manera. Así que este es un programa C como dijimos la última vez. Y esto sólo hace lo que hizo, que imprime a la pantalla, hola, mundo. Aunque claramente hay mucho de cosas distraen hasta allí. Pero vamos a tomar las cosas a un nivel superior y introducir esta versión, que recuerdan Fue la tercera versión que terminamos con la última vez. Y ahora hay claramente dos usos de printf. Hay 2 llamadas a Alana en este caso para printf, pero también hay una llamada a otra función. ¿Cuál es esa función con claridad? GetString. ¿Podemos conseguir un voluntario más? Bien, vamos para arriba. Cuál es tu nombre? JAVIER: Javier. DAVID MALAN: Javier, vamos arriba. Así que el papel de Javier está en este pedazo de papel. ¿Qué voy a llamar genéricamente s. Ahora bien, esta es una variable, es de tipo cadena, como se implica por esa segunda línea en el medio allí. Y me gustaría que vayas a buscarme una cadena. Específicamente bajar a la orquesta sección y me conseguir el nombre de alguien, y volver con una variable que contiene ese valor. Puede ser cualquiera que desee. Aquí vamos. Muy bien, Javier es anotando el nombre. Bien. Todos podemos adivinar cómo esto va a jugar fuera. Quizás Estamos belaboring el punto de lo una función está haciendo, pero no obstante, muchas gracias. Así Javier ha vuelto esta cadena aquí, lo cual, no puede ver bien, Jonathan es la cadena que nos hemos metido. Así que ahora lo que estoy realmente va para proporcionar a Alana aunque es algo un poco diferente. Debido a que en esta versión de la programa, primero hay diga su nombre. Así que el primer argumento Necesito proporcionar Alana con que va a ser literalmente, diga su nombre. Muy bien, así de simple Me gustaría entregar esto a usted. Y mientras escribo el siguiente argumento, si quieren seguir adelante y escribir este en el tablero, vamos a seguir adelante y hacer el último ejemplo aquí para hacer aclarar lo que en última instancia tiene que suceder. Así que diga su nombre, escribirlo hacia la parte superior si no te importa, sólo para que tenemos espacio para una segunda línea. Porque lo último que voy ahora le proporcionará no es uno, sino dos pedazos de papel. Bien. H-E-L-L-O coma y luego una línea en blanco. Así que lo que estoy a punto de entregar Alana ahora es algo un poco diferente. No sólo es conseguir esto, donde llenar el espacio en blanco representa que ciento-- cuál era el marcador de posición que hemos estado usando? Sí, ¿y ciento s. Mientras tanto, yo voy a pasar ella en un segundo argumento, que es precisamente lo que Javier recuperado de Jonathan. Así que te voy a dar estos dos. Si desea, adelante e imprimir ese efecto. ¿Qué está sucediendo en última instancia, ahora es, Alana de nuevo está jugando el papel de printf. Javier estaba jugando el papel de GetString. Así que será su recuerdo. Y en última instancia, lo que está sucediendo, a pesar de este hello-- sip seguir adelante y coma. ALANA: ¿Recibí este todavía o no? DAVID MALAN: Sí, usted ambos recibida en una vez. Así que la idea es que usted ahora puede voltear la página para manejar el segundo de esas dos entradas. Así que esto es sólo para recalcar la señalar que, mientras que Alana ejecutado esta línea verde aquí, y luego Javier hizo esto para nosotros y volver a mí algo llamaremos s, pero fue realmente sólo ese pedazo de papel de su propio. Y ahora Alana ha hecho esta tercera línea. Y a pesar de todo esto se ve tan increíblemente críptica quizás a primera vista, lo que realmente es tan simple como eso. Pasando entradas alrededor, conseguir salidas, ya sea ser entregado físicamente volver algo, o ver un efecto secundario de esta manera. Algo visualmente escrito en la pantalla. Así que vamos a seguir adelante y gracias Alana y Javier, que estaba aquí abajo, para acompañarnos hasta aquí. [Aplausos] Así que ahora vamos a tomar por sentado lo sencillo todo eso podría ser. Y vamos a proceder a la realidad hacer algo en código real. Así que en la pantalla aquí es una captura de pantalla de la llamada aparato CS50. Y si tuvieras que en, como 14:00 el miércoles por la tarde, explicar a algún amigo lo que el aparato es CS50, ¿cómo definiría en una frase? Cualquier sola frase? ¿Sí? ESTUDIANTE: Es como un programa eso hace que el equipo de todos correr con el mismo sistema. DAVID MALAN: Good! Es un programa que permite a cada uno de equipo funcione con el mismo sistema. Es una especie de su propio copia de un operativo sistema que pasa a ser llamado Ubuntu Linux. Y funciona de manera efectiva dentro de una ventana en su propio Mac o PC, para que de esta manera a la derecha de la puerta en la semana 1, todo el mundo aquí en la clase tiene acceso a las mismas herramientas, la misma configuración, y no hay curva de aprendizaje específica a un Mac o un PC en particular. Ahora hemos abierto, en el interior de la CS50 aparato el lunes, este programa aquí. Le pasa a llamarse gedit. Pero eso es realmente sólo un editor gráfico. Es algo así como el Bloc de notas o texto Editar en Windows o Mac OS, respectivamente. Y me propuse que no eran realmente tres partes importantes a esta pantalla. La parte superior es donde se escribiría el código. Y ahí es donde pasamos gran parte de nuestro tres ejemplos en la conferencia del lunes. La parte inferior nos llama lo que, esta ventana negro, sí? ESTUDIANTE: Compilador? DAVID MALAN: Compilador que visitada a través de esa ventana. Pero de manera más general. Sí, era sólo una ventana de terminal. Este es un viejo término edad que acaba de describe esencialmente un parpadeo rápida, que hace años solía ser el uno de esos grandes monitores CRT estilo. Pero hoy en día es una especie de virtual en software. Y las ventanas de terminal Vamos a nosotros escribimos los comandos. Es una especie de versión simplificada de la interfaz de usuario o interfaz de usuario. No es una gráfica interfaz de usuario o GUI, que es una interfaz basada en texto o una interfaz de línea de comandos. Y en efecto, que es donde en última instancia, Yo era capaz de escribir algo de código. Una vez que había escrito algo de código, sin embargo, Recuerdo que utilicé este comando. Y como el nombre tipo de indica, este me permite hacer una programa llamado Hola. Pero, ¿qué fue lo que realmente hace? Bueno maquillaje estaba tomando mi de entrada, el código fuente, y convertirlo a lo que, en última instancia? El código objeto. Y el código objeto es sólo una fantasía manera de decir ceros y unos. Y entonces una vez que quería para ejecutar ese código objeto, una vez que quería pasar como entrada los ceros y unos en mi equipo de cerebro, la denominada CPU o unidad central de procesamiento, Tuve que correr el programa. Pero no era bastante sencillo el lunes tan sólo hacer doble clic en algún icono. Lo que en cambio tuve que hacer para ejecutar un programa? ¿Cuál fue ese segundo mandato? Estoy escuchando un poco de barras? Sí, sí? ESTUDIANTE: Dot tala y el nombre del programa. DAVID MALAN: Exactamente. Dot tala y el nombre del programa. Ahora ¿qué significa esto? Bien punto es sólo una forma arcana de decir directorio actual. Cualquiera que sea la carpeta se encuentra en es como referencia, se representa como punto. La barra es justo lo que usted ha visto en Mac OS y Windows durante años, es un separador entre un directorio o la carpeta y el resto de algún nombre. En Windows que sucede a ir hacia atrás, en Linux y Mac OS pasa a ir hacia delante. Pero es sólo el separador, por lo que es sólo un detalle sintáctico poco interesante. La parte jugosa del curso es el nombre del programa, Hola. Y eso es lo que hacen que creó para nosotros. Se emite ese archivo para nosotros. Pero ¿cómo hemos llegado a ese punto? Ahora vamos a pedir a la pregunta, lo que era realmente pasando aquí, por lo menos con lo que respecta a algunos de esta sintaxis? Así que en una frase más o menos, ¿cómo explicamos distancia esta primera línea que es resaltado en verde? ¿Cuál fue esa primera línea haciendo, con respecto a mi programa? ¿Sí? ESTUDIANTE: [inaudible]. DAVID MALAN: Dilo otra vez? ESTUDIANTE: Inclusión y descargar funciones anteriores [inaudible]. DAVID MALAN: Good. Incluyendo, no voy a decir la descarga, pero digamos incluyendo las funciones que las personas han escrito en el pasado. Y esas funciones se implementan en algún lugar de mi ordenador. Alguien escribió un archivo Hace años, y ese archivo es en algún lugar dentro de la CS50 aparato, o en mi disco duro de manera más general. Y lo que esta línea está diciendo esencialmente, ir a buscar ese archivo, punto E / S estándar h, y copiar y pegar su contenido aquí mismo en la parte superior de mi archivo de modo que yo no tengo que hacerlo manualmente a mí mismo. Y entre las piezas más jugosas en el interior de ese archivo reclamamos era qué función? ¿Qué función dijimos fue declarado o mencionada en E / S estándar dot h más probable? Printf, ¿verdad? No escribimos printf en Lunes, apenas existía. Al igual que Alana acaba de llegar en el escenario y ella sólo existido y sabía cómo dibujar algo en la pantalla, así no existir printf durante muchos años. Y lo que esta es la forma en que accedemos. Ahora bien, si nos movemos de aquí, principal era que análoga dijo a la pieza del rompecabezas se llama cuando la bandera verde hace clic en el mundo de los arañazos. Es sólo una especie de nombre predeterminado que los humanos decidido que representaría la punto de entrada por defecto a un programa. El trozo de código de programación que es ejecutado primero. Mientras tanto estas llaves son algo así como la forma curvada de muchas de esas piezas de arañazos amarillas. Ellos encapsulan tipo de conjunto manojo de instrucciones juntos. Por lo tanto, sólo un poco de une parte de la funcionalidad relacionada. printf por supuesto es una función que imprime la pantalla, como lo acabamos de hacer. ¿Qué pasa con estos paréntesis? ¿Cómo define-- incluso si no tienes Nunca programada antes, pero sólo sobre la base ahora en una creciente esperemos que la intuición, lo que están entre paréntesis haciendo para nosotros aquí? O ¿qué están rodeando? ¿Sí? ESTUDIANTE: Están diciendo lo usted va a imprimir con printf. DAVID MALAN: Sí, ellos están diciendo lo que usted va a imprimir con printf. O más en general, son que rodea a las entradas de la función. Así que casi se puede pensar de esos paréntesis como siendo como el metal clip en este portapapeles. Es lo que está sosteniendo, es lo que hay va a ser utilizado para proporcionar argumentos en la función, que en este caso se llama printf. Así, en general, casi cualquier vez que llamamos a una función, vamos a ver un par de paréntesis. Tal vez con algo en él, como ahora, tal vez nada en él. Pero eso es donde pondrías las entradas o los llamados argumentos a una función. Aquí está uno de esos argumentos. He resaltado todo entre las comillas, porque resulta que en esta lengua llamada C, cuando se quiere representar una string-- que es una palabra o una frase o incluso un paragraph-- tienes que rodearla con comillas dobles. No cotizaciones simples, comillas dobles. Y eso es exactamente lo que he hecho aquí. Mientras tanto hay un cobarde símbolo hacia el final allí. La barra invertida n. ¿Qué dijimos que representaba? ¿Sí? ESTUDIANTE: Una nueva línea. DAVID MALAN: Nueva línea. Cierto, no lo hace generalmente presione Enter cuando desea que el programa escupir una nueva línea. Más bien lo dices explícitamente con esta pieza es cierto arcano de la sintaxis, la barra invertida n, que quieres una nueva línea para ir allí. Por último, el punto y coma. Nosotros realmente no hablamos demasiado sobre esto, y hasta ahora, este va a ser la ruina de algunos de su existencia por el primer problema establecer, cuando simplemente no se dio cuenta se le ha olvidado algo tan estúpido como un punto y coma. Y, en general puesta habrá arreglar ese problema. Pero, ¿qué es lo que hace para nosotros, qué le dirías? ESTUDIANTE: [inaudible]. DAVID MALAN: Lo siento? ESTUDIANTE: [inaudible]. DAVID MALAN: Terminando un comunicado. Es algo así como el período en el final de una frase Inglés, mientras que en esta lengua C está terminando un comunicado. Una instrucción de programación código que lo que desea es decir, Ya he terminado con esto. Ahora note que es el único aquí. Así que usted no desea conseguir en la costumbre de poner punto y coma después de cada cierre de paréntesis. Por ejemplo no hay ninguno junto al vacío, y vamos a volver en el futuro a lo que significa vacío. Pero en este caso su printf es una función, o una declaración de que se utilice, y así queremos tener que terminal al final de la misma. Y estoy intencionalmente metiendo con C. Y francamente un montón de lenguajes como C, C ++, Java, JavaScript, y cualquier número de otros idiomas tienen una gran cantidad de estos tipo de datos sintácticos. Eso ciertamente si usted es nuevo en programación puede realmente tropezar. Y usted, marque mi Es decir, algunos de ustedes tener esta experiencia en horario de oficina o tarde en la noche trabajando en algunas p-set, donde tu maldito programa simplemente no compila, no funcionar, usted tiene ni idea de lo que está mal, parece completamente lógicamente correcto para usted. Y es porque se le olvidó algo así como golpear un punto y coma al final de alguna línea. Pero estos son los tipos de cosas que usted es va a aprender de inmediato para ver. Y de hecho estas son las cosas que y de la CA TF tienen sido una especie de formación para ver mucho más rápido que tú. Y por lo que este es sólo para decir, a medida que sumérgete en un problema conjunto 1, especialmente, no se sienten frustrados por estas cosas. Una vez que una especie de aclimatarse al mundo, que comenzar a ver cosas que no se pueden ver a primera vista esta primera semana. Así que el código fuente es algo así. Queremos pasarlo a el llamado compilador. Y eso compilador como dijimos proporciona una salida conocido como código objeto, el llamada ceros y unos. Pero a partir de ahí, lo que nos da eso? Bueno, nos da estos patrones. Y de nuevo el equipo, su Intel inside, entiende estos patrones de ceros y unos. Y a veces el patrón representa un número decimal real como vimos la semana pasada, a veces representa una carta como vimos la semana pasada, a veces que representa una instrucción, como imprimir algo en la pantalla. Así printf para instance-- sino más bien, déjame rebobinar. Hemos estado tomando por sentado que esos ceros y unos son producida por este comando make. Pero maquillaje no es un compilador. Hacer no es la cosa en el medio que está produciendo los ceros y unos. Más bien que es sólo un muy convenientemente programa denominado cuyo propósito en la vida es esencialmente de averiguar cómo compilar el programa. Y lo usamos en estos primera semana, ya que sólo nos ahorra un montón de problemas. Pero lo que es realmente haciendo al compilar hola, es, como hemos dicho la última vez, es busca en el disco duro o en la carpeta actual, por archivo llamado lo que, al parecer? Hola.c, ¿verdad? Eso es sólo una especie de convención. Es arbitraria, pero eso es como son las cosas. Hacer, si sólo se especifica el nombre de un programa que todavía no existe, que va a buscar el código fuente en un archivo, por defecto significa hello.c. Y si lo encuentra, muy bien. Se va a convertir esa fuente código en el código objeto para usted. Pero cada vez que me he golpeado Enter después de ejecutar make hola, ¿Recuerda haber visto por última vez un bastante largo y la secuencia críptica de otras letras blancas y personajes en la pantalla? Bueno, eso fue la orden real, el compilador real, que se estaba ejecutando. Así el compilador real usaremos la mayor parte de el semestre es algo que se llama sonido metálico. Algunos de ustedes se han utilizado Antes de Visual Studio, o GCC, o cualquier número de otros compiladores. Usaremos sonido metálico. Y clang nos permite convertir en realidad que el código fuente a código objeto. ¿Qué significa esto en realidad significa en la práctica? Bueno déjame ir en uno de mis carpetas desde la última vez. En el interior del aparato CS50. Y déjame seguir adelante y crear este mismo archivo, incluye E / S estándar dot h. Void main int. Y vamos a volver en el futuro como a lo que int medios y lo que significa vacío. Pero por ahora vamos a hacerlo hola barra invertida mundo n, Al igual que hicimos en el tablero. Déjame guardar este archivo llamado hello.c. Y ahora si quiero compilar este Yo could-- déjame el zoom plazo en-- hacer hola entrar. Y esto fue de nuevo esa línea muy críptica. Pero ahora al menos una palabra probablemente salta a la vista. Clang es que la línea que vimos antes. Ahora hay un montón de otras cosas con franqueza que vamos a agitamos nuestras manos a hoy. Pero hay un par de subconjuntos, unos personajes que aparecen aquí que son de interés. Pero yo voy a seguir adelante y hacer esto. Voy a la primera carrera hola, sólo para demostrar que esto está funcionando, ya que era lunes. Pero ahora voy a borrar el programa. Y al igual que hemos tenido estos nombres cortos última vez, el comando para eliminar algo es rm, eliminar, escriba. Vas a conseguir un poco de preguntas bastante crípticos. Es difícil de creer que usted puede hacer incluso esta pregunta difícil de entender. Pero quitar hola fichero regular sólo medios hacen que desea eliminar hola. Y puedo seguir adelante y escribir y para sí, Enter, y ahora se ha ido. ¿Qué quiere decir esto ahora, si me aclaro la pantalla, es que en lugar de El hacer hello-- usted sé qué, me estoy volviendo bueno en esto. Voy a ejecutar el compilador mí mismo. No necesito un programa para averiguar lo que mi archivo se llama. Escribí hello.c, I sé cómo se llama, Estoy claramente capaz de escribir eso. Así que voy a seguir adelante y no clang hola.c Intro. Parece que funciona. Y no hay salida adicional, porque clang es el compilador. Es lo que la conversión de la código fuente de ceros y unos. Así que si ahora lo hago punto slash hola Enter, hm. Nuevo mensaje de error en la actualidad. Así que bash es sólo el nombre de la parpadeo rápido que estamos usando. Eso es una simplificación excesiva, pero por ahora eso es todo lo que es, es el símbolo de parpadear. Y es por eso que está gritando en nosotros. No existe el fichero o directorio está un poco más sencillo. Pero seguramente hice ese código objeto. Pero el problema es, que si escribo el comando para listar el contenido de este directorio, que es lo que? ls para la lista. Hay un montón de cosas aquí, algunos de los cuales llegaron con el aparato, como mi carpeta Escritorio, Descargas carpeta, carpeta de Dropbox, y todos esas cosas. Pero lo que es interesante es hello.c, que He creado hace un momento con gedit. Y lo que es más raro el mirando nombre aquí, tal vez eso no lo hicimos véase el último momento a todos? a.out, ¿verdad? Así que de vuelta en el día, se acaba de decidir que cuando compila un programa por primera vez, y no se especifica el nombre de un archivo, vamos a llamarlo a. Y a.out sólo significa esto fue la salida del compilador. Así que es un nombre horrible para un programa. Pero por esa lógica, punto slash para directorio actual, slash a.out, debe significar que hay, de hecho, hola mi programa mundial. Ahora un poco de calentamiento de ejercicio, también. Si quiero cambiar el nombre de esta archivo, resulta que mover un archivo de un nombre a otro. A.out Así mv, y luego me puede llamarlo hola Intro. Así que este es un comando de Linux. DOS tenía esto hace años, Windows cuenta con una ventana de terminal de algún tipo que se ve así, Linux y Mac computadoras tienen esta pronta a parpadear. A pesar de que la mayoría de nosotros probablemente rara vez, o nunca, lo utilizan. Pero lo que he hecho se ejecuta un programa, cuyo nombre es mv, y yo he proporcionado con dos argumentos, por así decirlo. Dos entradas. a.out es el nombre original. Hola es el nuevo nombre. Así que si ahora lo hago slash dot hola, Intro, lo que existe. Y si lo hago a.out slash dot, ¿qué esperas que debo ver? Bash, no existe el fichero o directorio. Porque acabo le cambió el nombre. Así que esto toma un poco de tiempo para acostumbrarse. Pero el problema conjunto 1 especificación será verdaderamente tomar tu mano a través de algo de esto minutae. Debido a que este es un completo distracción intelectual desde el más interesante ideas en la mano, que es en realidad la creación de algo de código. Pero vamos a hacer una modificación ahora con este programa. Recordemos que la última vez que hice algo así, printf diga su nombre. Y de hecho que acabamos de hacer este en la pantalla grande por allá. Y luego hice cadena s consigue GetString paren abiertos, cerca paren. Y paren sólo taquigrafía notación para paréntesis. Entonces, ¿GetString toma ningún argumento? No hay entradas que no, pero que necesidades de los paréntesis, porque eso es lo que demarca la convocatoria de una función. Así que voy a seguir adelante y tratar de ejecutar el compilador en este programa ahora. Clang hello.c, porque no cambió su nombre por el momento. Y tengo un montón de errores. Vamos a alejar aquí. Si me desplazo de nuevo, como dije la última vez, a la primera, el mismo error que me dieron la última vez. En la línea 6 de hello.c tuve una cadena de identificador no declarado, Qué quise decir estándar en? No lo hice. Porque lo que error que he hecho en este programa, si usted recuerda de la última vez? Sí, necesitamos la llamada ruedas de entrenamiento que sólo tendremos que utilizamos durante unas semanas. Pero tengo que especificar que también, en algún lugar dentro del aparato, es un archivo que escribimos hace sólo unos años. En el interior de las cuales son funciones como aparentemente GetString. Así que ahora si vuelvo por aquí, zoom y re-ejecutar clang hello.c. Maldita sea, otro error. Pero no hemos visto esto antes. Éste es un poco más esotérica de averiguar. Pero esto es deliberadamente en la pantalla, porque queríamos contar esta historia. Al compilar hello.c, al igual que la imagen de delante sugirió, sólo estás convirtiendo esa código fuente de ceros y unos. Ahora el personal CS50 hace unos años escribió CS50.h, y un archivo correspondiente, CS50.c. Y nosotros, hace unos años, compilado esos archivos en un archivo que ocurre ser llamado CS50.o. O puede cambiar el nombre de un algunas cosas diferentes. Pero eso es una manera sencilla de pensar en ello. Así que hemos recopilado de CS50 biblioteca en ceros y unos. Pero en ninguna parte he especificado que quiero combinar mis ceros y los de mi mundo hola programa con los ceros y unos que el personal CS50 creado unos pocos años hace en un programa completo. Todo lo que he especificado por escrito hola.c sonido metálico es compilar hello.c. Yo no he dicho sonido metálico a eslabón de los ceros y unos que el personal CS50 creado para usted hace algún tiempo. Así que es una solución fácil, lanzarse l para el enlace, CS50. Y otra vez a ver este en poco tiempo una y otra vez. Pero note ahora no había ninguna queja. Así que ahora si se me acaban slash dot hola, ahora que está funcionando. Aunque eso es un poco engañoso ya que acabo recreado lo archivo? a.out. Así que permítanme rebobinar por un momento. El programa que acaba de compilar tiene las tres líneas de código. Cuando me encontré hola mundo, hola un momento hace, no vi diga su nombre. Y eso es porque me encontré con la versión anterior del programa. Pero si yo en verdad corro a.out slash dot Escriba, diga su nombre, Rob, hola, mundo. Hm. Eso es algo de un insecto. Probablemente quería decir Rob, ¿verdad? Así que ¿cuál es la solución aquí en código. ESTUDIANTE: [inaudible]. DAVID MALAN: Exactamente. Así que sólo tengo que hacer ese truco final, por lo que estoy pasando en un marcador de posición, como un relleno en el espacio en blanco, como lo hicimos hace un momento. Pero por ciento s es ahora que llenan el espacio en blanco. Así que, por último, vamos a revelar una última detalle para que no hay magia. Voy a seguir adelante y deshacerse de hellow. Voy a seguir adelante y deshacerse de a.out. Así que ahora tengo ningún programa, sólo mi código fuente. Y yo voy a correr un comando ligeramente más largo, clang lanzarse o hola LCS50 tablero hello.c. Ahora esto está empezando a especie de ir por un oído y sale por el otro, tal vez. Pero justo desmenuzar lo que esto está haciendo. Clang es el compilador, LCS50 guión deliberadamente al final hace qué en una frase? Enlaces a la biblioteca CS50. Agarra los ceros y los que el personal se y les abarrota en mi propio programa. Así que la última cuestión que nos ocupa es, lo que es rociada o hola probablemente hacer, incluso si usted nunca ha visto esta sintaxis antes? Emisión de un programa que es que no se llame la a.out por defecto. Más bien se ha nombrado hola. Así que ahora no hay a.out. El fichero o directorio no existe, porque dije explícitamente llamar a este programa hola, por lo que Ahora puedo escribir un nombre como ese y tiene que comportarse. Ahora, francamente, chico es que poco interesante tener recordar todo eso pequeña minucia, ¿verdad? Así que vamos a seguir adelante y deshacerse de hola de nuevo. Y ahora vamos a volver a un mundo en el que basta decir hola hacen. Pero esa es la magia que que está haciendo por ti, ese es el tedio que que está haciendo por usted. Y como nuestros programas y problemas se vuelven más complejos, que será verdaderamente su amigo. Debido a que no es demasiado largo a partir de ahora vamos contar con programas que se escriben no con un archivo, pero varios archivos, y hacer que automatizará el proceso de compilar todo eso para nosotros juntos. Así que ahora imprimir. printf está dentro de este archivo, estándar I / O de punto h, que hemos visto antes, pero hay más a printf que eso. Hay barra invertida n, pero también hay un montón de otras secuencias de escape. Y secuencia de escape es sólo un forma elegante de decir algo que comienza con una barra invertida, no una barra, una barra invertida, y lo hace algo especial. Y no vamos a detenernos en la mayoría de ellos, pero ¿por qué hay barra invertida doble cita, Qué te parece? ¿Por qué existe esta secuencia extraña de caracteres, las comillas dobles barra invertida, ¿Por qué podría ser eso útil? ESTUDIANTE: [inaudible]. DAVID MALAN: Exactamente, ¿verdad? Piense de nuevo a nuestro programa hola mundo que hemos visto unas cuantas veces ya, cada vez que he visto ese mundo hola programa hemos tenido comillas dobles dentro de los cuales es hola coma barra invertida n mundial. Pero piensa a sí mismo, ¿qué pasa si en realidad querido imprimir una comilla? Su primer instinto podría ser, no lo sé saber por qué yo podría querer hacer-- aquí, podemos ser un poco pasiva , hola amigo agresiva. Podríamos querer hacer algo así. Pero ¿por qué es esto ahora problemático? Haciendo caso omiso de las comillas tipográficas de lado que keynote hizo por nosotros automáticamente. ¿Por qué es esto un problema? Exactamente. Porque tenemos como 4 comillas. Bueno, la primera de ellas, probablemente, va con el segundo, y tal vez el cuarto va con la tercera, o, quiero decir que no estoy seguro, ni es el equipo que va a ser. Computadoras de nuevo, compiladores una vez más, son bastante tonto. Ellos sólo hacen lo usted les dice que hacer. Y si usted no es inequívoca que son probablemente va a lanzar un error. Si usted no es inequívoca en cuanto a cómo hacer una mantequilla de maní y jalea cosas extrañas podrían llegar. Es la misma idea. Ahora basta con decir que hay algunas otras secuencias de escape, pero vamos a llegar a aquellos en poco tiempo. Se trata fundamentalmente de escape secuencias representan algo que es posible que no pueda con demasiada facilidad en el teclado, sin confundir al equipo. Ahora mientras tanto tenemos marcadores de posición en printf. Porcentaje d, que también se puede escribir en casi todos los casos como ciento i, es un marcador de posición para el tipo de datos? ¿Qué tipo de valor? Un número decimal. Así que en realidad vamos a empezar usando ciento i porque es un poco más simple, como un número entero. I por ciento. Un entero que pasa a ser decimal. Porcentaje s ya dijimos era un marcador de posición para una cadena. Que es sólo una palabra, una frase, un párrafo, un ensayo, lo que sea. Es una secuencia de personajes de cierta extensión. Y veremos en poco tiempo algunos de estos otros. Pero por ciento c es para un solo personaje. Porcentaje f es para un número de punto flotante, como un número real que tiene un punto decimal en el mismo, que es claro que no un entero. Y hay un conjunto montón de otros también. Mientras tanto, en C, y en una gran cantidad de idiomas, tenemos diferentes tipos de datos. Los diferentes tipos de cuencos de cristal si se quiere. El recipiente que utiliza la última vez fue por pelotas de ping pong, pero también podemos almacenar diferentes valores como caracteres y cadenas y números enteros en un recipiente, como una variable, y C tiene estos. Char es el tipo de datos, el tipo de variable, en la que puede almacenar un carácter. Float es un tipo de variable en que puede almacenar un número real. Int es por supuesto para un int. Y en lugar ridículamente llamado un largo tiempo es donde se puede almacenar en esencia un número muy largo, incluso con más dígitos y luego una típica tienda de fuerza int. Pero vamos a volver a que en poco tiempo. En CS50 punto h mientras tanto el otro fichero de cabecera que hemos visto un par veces en uso, hay otros dos tipos de datos que no existen en C normalmente. Uno de ellos es la cadena, y ya veremos en unas semanas realmente qué cadenas están por debajo de la capucha. Y uno es bool. Y un bool es una variable que sólo puede tener en determinados valores. Y justo basado en la semana de la última explicación de Scratch, y más recientemente C, ¿qué haría usted adivinar son los dos valores posibles para algún contenedor que es de tipo bool? Sí y no. Uno y cero. Verdadero o falso. Y de hecho es la última que tiende ser convencional en una programación lenguaje, diciendo algo como verdadero o falso. Mientras tanto la biblioteca CS50 viene con un montón de funcionalidad que el personal escribió para ti, además de sólo conseguir una cadena. Escribimos en funciones avanzadas que puede conseguir un número entero de usuario, obtener un solo carácter, conseguir un flotador, que es sólo un número con punto decimal. Obtener un largo tiempo, una realidad gran valor desde el usuario. Así que sólo hemos visto esto en acción en forma de GetString. Pero a través de estas funciones pronto será capaz de escribir programas que reciben la entrada del usuario. Mientras tanto considerar este programa, y ​​considerar la forma en que ahora podríamos empezar a sumar a la misma con nuevas construcciones. Un viaje relámpago rápida y luego veremos en algún escrito algunos programas manualmente nosotros mismos. A partir de ahora, si queremos aplicar una condición, no va a parecer una pequeña y adorable pieza de puzzle bastante. Se va a mirar un poco más arcano. Pero esta es la canónica estructura de una condición en C. La palabra si, dos paréntesis, dentro de la cual va a haber algún tipo de la expresión booleana. Ahora el slash slash en el medio, esto es en este momento algo así como código de marcador de posición pseudocódigo. Pero más bien, ninguna línea de código en C que comienza con slash slash es un comentario. Es como una nota adhesiva que te pueden poner en un ensayo, impreso en papel. Es una nota para usted mismo. No tiene funcional impacto en el programa. Es una especie de recordatorio, es su propia documentación en cuanto a lo que está pasando. Así que hacer esto en este momento es una especie de marcador de posición para lo que hay dentro de esas llaves finalmente se va a hacer algo. Mientras tanto usted tiene dos bifurcaciones en el carretera, un if-else construir así. Usted puede si, elseif, else. Ahora vale la pena señalar, especialmente si usted ha estado alrededor de google en línea para los recursos de cada curiosidad, o si usted toma uno de el curso de Libros recomendados sobre C, usted verá que los seres humanos tienen un montón de diferentes preferencias sobre cómo para expresarse en el código. Algunas personas les gusta poner la llaves como lo he hecho aquí. Algunas personas les gusta poner el rizado apoyos por ejemplo hasta aquí. Algunas personas les gusta poner la vigilara aquí y luego esto aquí. Hay un número de maneras de código de escritura, y ninguno de ellos tienen razón per se. Aunque hay unos cuantos que son bastante mal. Pero hay no-- si esto es en última instancia, un debate muy religiosa. De hecho, uno de los más molestos cosas de la informática es como obstinado los informáticos pueden ser. Y usted encontrará con el tiempo que incluso a desarrollar preferencias personales en cuanto a cómo el código debe mirar. No sólo se comportan, no sólo crear una salida, pero la forma en que debe ser estéticamente. Así que lo que vamos a hacer es que te guiará a lo largo el camino hacia, al menos por ahora, un estilo CS50 estándar que al menos mantiene las cosas uniforme y fácil de leer. Pero más en los distinciones dentro de poco. Una expresión booleana en C, si querido decir si esta condición es verdadera y esto es otra condición cierto, no se escribe la palabra y, como lo haría en Inglés. En su lugar, utiliza ampersand ampersand, por razones que volveremos a. Si quieres decir o utiliza dos barras verticales, que en un teclado de EE.UU. generalmente por encima de la Intro siguiente tecla a la barra invertida. Y esto quiere decir simplemente si esta condición o esta otra condición es verdadera hacerlo. Mientras tanto hay esta Lo más loco, que tendrás ocasión para usar de vez en cuando. Pero es sólo una alternativa manera de expresarse. Esto, por ahora, vamos a estipula, es sólo otra manera cobarde de expresar si, elseif, elseif, elseif, elseif. Es sólo el formato en términos de los casos, en las que, literalmente, enumerar los valores que es posible que desee comprobar. Mientras tanto bucles. Vimos una comparación de Raspe con un bucle. Y yo voy a agitar la mano en lo que cada una de estas cosas significa. Pero note que un bucle muy menudo comienzan con la palabra clave para. O se iniciará con la palabra clave tiempo. O se iniciará con la palabra clave hacer, y terminar con la palabra clave cuando. Pero lo que estamos a punto de ver es lo más les gusta esto. Aquí está, en general, en C, ¿cómo te pueden declarar una variable y darle un valor. En C no es suficiente, como en Scratch, que acaba de decir dame una variable llamada algo. Tienes que decirle a C, y dices su compilador, más específicamente, qué tipo de valor le quiere poner en el recipiente de vidrio. ¿Es un número entero? Si es así, usted tiene que decir, literalmente, int y luego el nombre de la variable, a continuación, un punto y coma. Si en vez querías cuerda y llamaste que s como hice mi código aquí hoy, usted diría coma cadena s. Una vez que usted quiere darle un valor a continuación, puede utilizar el signo igual, también conocida como la operador de asignación. Y note cómo cada de estas líneas de código tiene el punto y coma al final de la misma. Pero, francamente, esto sólo parece un poco feo. ¿Por qué no puedo decir a la computadora, dar me una variable e inicializar a cero. Es decir, me da un tazón de vidrio vacía. Mientras que usted puede. Y así uno de la sentencia te llama voy tener que hacer con el tiempo estilísticamente Es decir, se escribe el código de este tipo, o Qué tipo de limpiarlo e impresionar la gente por escribir dos líneas como uno solo. Y esto sería considerado generalmente una forma más elegante de escribir su código estilísticamente. Funciones estamos por supuesto visto. Ellos van a tener este formato. El nombre de una función, algunos paréntesis, y luego tal vez algunos lo que hay dentro. O es posible que vea los usos de lado múltiples funciones al lado del otro, como si algo como esto. Ahora, como una tangente, lo hace esta broma ahora tienen sentido? [Risas] Esto no quiere decir que es divertido, pero es no tal vez hacer un poco más de sentido. Así que ahora vamos a entrar en el Aparato CS50 por un momento. Y déjame abro teaser aquí. Y, de hecho una de las razones para introducir Catálogo IKEA y el parpadeo de la imagen del iPhone hace un poco era atar juntos realmente en la hecho de que hace apenas unos años, en 2007, esta pieza de código era en libertad, que fue uno de la primera aplicación de una pieza de software que hace lo que se llama jailbreaking. Para aquellos no familiarizados, jailbreaking algo así como un teléfono o un iPhone significa esencialmente averiguar encontrar la manera de hacer las cosas con lo que la empresa que lo hizo no tenía la intención. Al igual que usted desea instalar cierta software que no está en la tienda de aplicaciones, jailbreaking su teléfono que hacer las cosas de esa manera y más. Pero lo que fue muy divertido en 2007-- y ha habido docenas de diferentes versiones de estas cosas desde entonces, en todo tipo de Las Lenguas es que este programa aquí, llamado iUnlock, en realidad fue escrito en C. Y así me levantado el código fuente de este, sólo para mostrar amable de su parte de las similitudes con los constructos que hemos estado discutiendo hasta ahora. Ahora hay mucho más complejidad aquí lo que hemos visto ya en clase. Permítanme desplazarse hacia arriba un poco aquí. Pero notamos estos-- así nos damos cuenta de algunos cosas-- notar estas líneas aquí, incluyendo E / S estándar dot h. Y todos-- línea 24, favor-- cuenta de E / S estándar dot h y un montón de otra Los archivos que al parecer otras personas han escrito. Y si nos desplazamos a través de esto, poco arbitrariamente, Aviso que no sé cómo escribir todo esto a mí mismo necesariamente, sin embargo, pero no si. Así que al parecer esto tiene una rama. Y si me desplazo un poco además hay otro caso. Si me desplazo, creo alrededor de la línea 100 que vi por. Así que no estoy muy seguro cómo funciona esto, sin embargo, pero esto es un bucle que va a déjame iterar un número de veces. Y si me desplazo todos la forma de la parte inferior Veo que hay una funcionar aquí llamado principal, y algunos créditos adicionales para su placer de la lectura. Así que esto sólo se decir-- y pondremos esta línea entre la fuente del curso código hoy-- que incluso algunos de estos dispositivos que damos por sentado, al final del día que sigues utilizando estas construcciones básicas que hemos introducir sido ya hasta ahora. Ya basta de eso. Muy bien, así que ahora vamos a realmente construir algo. Vamos a ir más allá de algo así como hello.c, y abrir este, vamos a escribir este programa aquí. Voy a seguir adelante y escribir un programa llamado adder.c, cuyo propósito en la vida va a ser como mi primera calculadora super simple que sólo se suma un par de números. No por eso es un disco problema, sino porque me permite ahora ato juntos un par de cosas. Así que voy a seguir adelante e incluir E / S estándar dot h y CS50 punto h. Voy a decir void main int. Y de nuevo en el futuro vamos a volver a ella en este contexto y medios vacíos. Y ahora voy a decir algo como printf, dame un entero. Y ahora en mi segunda línea, ¿cómo me expreso tal que quiero declarar una variable eso va a almacenar un int? Literalmente lo que puedo escribir si quiero crear una variable que almacena un int Qué le dirías? int a igual getint. Claro, por lo que funciona. Y sólo por la coherencia con el código que ver en línea, me cambio de dejar que esto a x, sólo porque x es un nombre de variable común utilizar, al menos en álgebra. Ahora voy a seguir adelante y hacer printf nuevo. Dame otro entero. Y ahora me voy a clase de aprender de ese patrón, Voy a decir int y llega a getInt. Y nosotros no hemos usado GetInt antes, pero sólo como GetString va y se pone una cadena, como Javier hizo de la audiencia, de manera similar hace getInt comenzará a parpadear el símbolo. Y eficaz de espera para el usuario para darle un entero, escribiéndola en y oprimir la tecla Enter. Ahora, por último que voy a hacer esto, la suma printf de-- y déjame ahora-- lujo i ciento y el porcentaje de I está presente i exclamación punto barra invertida n. ¿Y qué crees que me voy a poner en ahora como las entradas adicionales a printf? No quiero decir literalmente citar x fin de la cita. Quiero clase en x y entonces, y ahora vamos a obtener de fantasía y vamos a suponer podemos hacer lo que queremos. Lo que quiero decir a continuación? x más y. Y de hecho que va a funcionar. Ha programación mínimamente idiomas hacer entender la aritmética básica, y por lo que este debe de hecho el trabajo. Así que déjame ir adelante y hacerlo hacer víbora en mi ventana en blanco y negro aquí abajo, Enter. Línea de Cryptic pero ningún error mensaje, por lo que es bueno. Dot slash víbora, dame un entero, 1. Dame otro número entero, 2. La suma de 1 y 2 es 3. Muy bien, así que una bastante trivial programa, pero ¿qué se hace? Se me permitió utilizar una función llamar aquí, llamar a otra función aquí, dos llamadas a getInt, un tercera llamada a printf, y luego el uso de estos marcadores de posición. Así que es un poco más sofisticada que la última vez. Pero lo que si quiero conseguir un poco más de lujo? Déjame ir por delante y ahora hago esto. Déjenme seguir adelante y crear un nuevo archivo llamado condiciones cero. Y me voy a guardar algún tiempo para las clases aras y simplemente pegar en esa código como un punto de partida. Y ahora sólo voy a poner algo nuevo aquí en el centro. Así printf me gustaría un entero por favor. Y todo el código está disponible en la página web del curso, usted no tiene que escribir todo hacia fuera en clase si usted preferiría no hacerlo. int, y ahora voy a utilizar, en lugar de x e y, Voy a utilizar n, que es probablemente el nombre más común para un número entero en un programa de ordenador. Y ahora quiero hacer una poco juicio aquí. Voy a ver si n es mayor que 0, entonces Voy a decir whoops printf--, printf-- que eligió un número positivo, exclamación punto barra invertida n. Cierra esa. Else Voy a imprimir printf que eligió un número negativo. Ahora antes de que me gritas, vamos a ejecutar este programa. Déjame ir por aquí. ¿Y cómo puedo compilar un programa llamado condiciones tablero 0? Haga condiciones tablero 0. Tipo de un nombre estúpido, pero-- maldita sea. Bueno, bueno momento de enseñanza. ¿Por qué estalló? ¿Qué hice accidentalmente llamo este archivo? Puede tipo de inferir desde la ficha hasta aquí. Así que no es malo que hizo esto, porque esto que va a pasar tal vez para algunos de ustedes. Así que puse el nombre de mi accidente fuente de código de condición 0. Pero mi código fuente por convención debe estar en un archivo llamado condición 0 tablero c, o lo que sea punto c. Así que déjame arreglar esto. Al igual que Microsoft Word puedo subir a Guardar como y haga condición 0 puntos c. Ahora acaba de ser ordenada estoy va a seguir adelante y eliminar condición 0, que era mi vieja versión. Y ahora vamos a hacer hacer condición 0, Intro. Bien, parece buena. Condición 0, Intro. Me gustaría un entero favor, 50, que eligió un número positivo. Ahora ¿qué hay de negativo 50? Usted escogió un número negativo. ¿Y ahora, 0. Bastante seguro 0 no es negativo. Así que esto es una especie de error lógico. ¿Cómo puedo solucionar esto? Porque si n es menor que 0, hacer esto, lo demás podemos tener una sucursal a tres bandas, printf usted escogió 0. Así que ahora si me vuelva a ejecutar este programa, después de la compilación de nuevo con la marca, y ahora volver a ejecutar condición 0, lo voy a ver aquí es 0 me da esa salida. Entonces, ¿dónde vamos con esto? Bueno, es muy fácil perder de vista del bosque por los árboles. Y así nos permiten concluir con este video de 2 minutos y medio que en última instancia es un poco de un anuncio de Google, pero que realmente es testimonio de lo que incluso utilizando estos edificios básica bloques que en última instancia, podemos hacer una vez tenemos un poco de programación espabilados en nuestro haber. [REPRODUCCIÓN DE MÚSICA] Saroo BRIERLEY (Voz): Fue hace 26 años, y yo estaba a punto de cumplir 5. Llegamos a la estación de tren y abordamos nuestro tren juntos. Mi hermano acaba de decir voy a quedo aquí, y voy a volver. Y pensé, bueno ya sabes, Puede ser que también acaba de ir a dormir y él sólo me despertará. Y cuando me desperté la siguiente día, el conjunto de carro estaba vacía en un tren fuera de control, un fantasma tren me tomando no sé dónde. Yo fui adoptado a Australia, a una familia australiana. Y mamá había decorado mi habitación con el mapa de la India, que se puso al lado de mi cama. Me despertaba cada mañana ver ese mapa, y por lo tanto que tipo de mantiene vivo el recuerdo. La gente decía, eres tratando de encontrar una aguja en un pajar, Saroo nunca lo encontrará. Me he flasheado de los lugares que me solía ir, los destellos de mi familia enfrenta. Allí estaba la imagen de mi madre, sentarse con las piernas cruzadas, sólo viendo llorar. La vida es tan difícil. Ese era mi tesoro. Y yo estaba buscando en Google Map y dado cuenta de que hay Google Earth también. En un mundo donde se puede hacer zoom en, Empecé a tener todos estos pensamientos y qué posibilidades que esto podría hacer por mí. Me dije a mí mismo, ya sabes, no tienes tengo todos esos recuerdos fotográficos y puntos de referencia de donde usted está, y usted sabe lo que la ciudad se parece. Esto podría ser una aplicación que que puede utilizar para encontrar el camino de vuelta. Pensé, bueno voy a poner una punto en la estación de tren de Calcuta, y una línea de radio, ya sabes, que debe buscar en esta zona. En cierto modo me encontré con estas vías del tren. Y empecé a seguir, y Llegué a una estación de tren que refleja la misma imagen lo que estaba en mis recuerdos. Todo igualado. Sólo pensé que sí, me saber a dónde voy. Sólo voy a dejar que el mapa que tengo en mi cabeza me llevan y me lleve de regreso a mi ciudad natal. Llegué a la puerta de la casa en que nací. Y caminamos por unos 15 metros alrededor de la esquina, había tres señoras de pie exterior, junto a la otra. Y el del medio dio un paso adelante, y Sólo pensé, esta es tu madre. Ella se acercó, me abrazó, y estábamos allí durante unos cinco minutos. Ella me agarró la mano y ella me llevó a la casa y se puso al teléfono, donde ella sonó mi hermana y mi hermano para decir que, ya sabes, tu hermano tiene sólo de repente apareció como un fantasma. Y luego la familia se reunió de nuevo. Todo está bien, Ayudé a mi madre, no tiene que ser trabajar como esclavos. Ella puede vivir el resto de su vida en paz. Era una aguja en un pajar, pero la aguja estaba allí. Todo está ahí. Todo lo que tenemos en el mundo que está en el toque de un botón. Pero usted tiene que tener la voluntad y la la determinación de quererlo. [REPRODUCCIÓN DE MÚSICA] DAVID MALAN: Maravillosamente dulce testimonial sólo lo que pueda ahora ver con la tecnología. Nos vemos la semana que viene.