[Powered by Google Translate] David Malan: Este es CS50, y este es el comienzo de la Semana 1. Lo que nosotros pensamos que lo hacen hoy en día es echar un vistazo atrás en algo que muchos de ustedes probablemente pasó por alguna tiempo y puede parecer un poco familiar. Esta cosa aquí, esto por supuesto está en el - AUDIENCIA: Ciencia. David Malan: Science Center. Así que esto es realmente una de las primeras computadoras A la vuelta de la década de 1940. Fue uno de los equipos electromecánicos de primera que era capaz de especialmente larga, autosostenidas cálculos, y lo que vemos en el centro de la ciencia es sólo una pequeña parte de esta cosa. Lo que pensamos que sería mejor hacer entonces es tomar un vistazo a un vídeo que se hizo hace algún tiempo, la introducción de esta cosa en el mundo. Y verás desde la música y la voz de que, efectivamente, los Eran tiempos muy felices. [REPRODUCCIÓN DE VÍDEO] -Un triunfo de la habilidad matemática y la mecánica es la siguiente gran nueva calculadora automática de la Universidad de Harvard. Un complejo entramado de problemas en matemáticas, pasar por el máquina en forma codificada en la cinta, se precisa resolver en un fracción de minuto el tiempo requerido para humanos cálculo. Diseñado para agilizar todas las formas de matemática y científica investigación, el cerebro mecánico gigante va a trabajar para las Naciones Unidas Marina de los Estados hasta el final de la guerra. David Malan: Así que lo que quizá no sabe es que fue en este mismo dispositivo que un término que ahora todos tomar más o menos por sentado fue acuñado, el de un insecto. Así que uno de los ingenieros que trabajan en este equipo literalmente encontró una pequeña polilla en la máquina que dio como resultado en algunos cálculos incorrectos. Y a medida que la historia dice que la polilla se grabó en este registro revista aquí, de vuelta del 9 de septiembre de 1940 y tantos, y así nació para el mundo el término "bug". Así que a partir de ahora consideramos errores a haber ningún tipo de errores en la programas, sean de origen humano o, en este caso, los insectos. Así que algunos anuncios, a medida que avancemos. Así CS50 tiene una tradición de ofrecer comidas de todo tipo de mayoría de los viernes durante el semestre, donde se toma de 30 a 40 estudiantes en Fire and Ice in the Square para casual charla, hablar de la informática, hablar sobre el futuro. Invitamos a ex alumnos y amigos de la industria para charlar los estudiantes también. Realmente hacia un extremo de hacer lo que es una clase bastante grande aún más íntimos, al menos de vez en cuando para subgrupos de estudiantes. Así que si usted desea unirse a nosotros este viernes, 1:15 PM, vaya a CS50.net/lunch para confirmar su asistencia. Y vamos a hacerlo recurrentemente, no así te preocupes si no eres entre los primeros 30 o menos esta semana. Así que toma nota de escribano. Una palabra sobre los recursos que ahora comenzará a ser disponible a los estudiantes en la clase. De modo que la cabeza no tiene que ser hacia abajo durante las clases anotando todo lo que digo y así sucesivamente, lo que hacemos en su lugar se ofrecen desde el personal docente le conjunto canónico de notas. Así que tenemos una de las investigadoras nuestra enseñanza, Andrew Sellergren, que se sienta cada semana, revisa los videos, y luego escribe lo que creemos que es una muy conjunto autorizado de notas. Y amo de Andrés, también, de poner notas al pie en snarky la parte inferior. Así que te esperamos disfrutar de estos como un libro de referencia para diversión, y también, llegado Quiz Time, como una oportunidad para revisar lo que ocurrió en conferencias individuales. Así que estos están vinculados en la página de conferencias. Conjunto de problemas 0, en tanto, está fuera. Y en términos de los recursos disponibles para usted - el tutorial. Milo dirigió la primera el viernes. Fue filmado, puesto en línea el sábado. Y así damos cuenta, si no estás muy seguro de por dónde empezar, para esta o futuras de p sets, siempre en primer lugar el tutorial o el mismo vídeo. Seccionamiento está en curso y, al cs50.net/section es donde se deberán presentar sus preferencias, si no lo ha ya, por hoy. Debido a que las secciones se iniciará el próximo domingo, lunes, y el martes. Hacemos secciones esos tres días, todas las semanas del semestre en su mayor parte. Y también introducir, de nuevo, las diferentes pistas. Entonces se le pedirá en este formulario seccionamiento, si no lo he visto, si usted está entre los menos cómodo, más cómodo, o en algún punto intermedio. Y si tienes suerte de la valla, por lo general en algún lugar de entre lo que es la mayoría de los estudiantes terminan de cheques. Horario de comenzar esta noche. Así Scratch es bastante bajo llave, a pesar de que es muy natural para funcionar en varios fallos, o ser incierto en cuanto a cómo implementar algo. Así damos cuenta de que vamos a empezar las horas de oficina esta semana. Estarán en Annenberg lunes, martes, miércoles, Jueves, de 8:00 pm a 11:00 pm durante rotura del cerebro. Classmen superior puede entrar, y hacer si alguna vez tiene problemas en la puerta, porque van a birlar, habla a su manera y explican que estás con CS50. Típicamente de 20 a 30 de nosotros en el personal estará allí para ayudar usted uno a uno. Al llegar la idea es la siguiente: usted trae su ordenador portátil, usted tendrá su cargador, vamos a tener los cables de corriente extra, particularmente a lo largo de la pared sur de Annenberg donde hay un montón de enchufes eléctricos. Y el principal punto de entrada a horarios de oficina Q & A es ir a cs50.net/discuss y para publicar tus dudas. Y para etiquetar con pset 0 o conjunto de procesadores 1, cualquiera que sea la semana quiera se encuentren. Y entonces lo que vamos a hacer es tener una tabla de becarios de enseñanza y los asistentes del curso, generalmente de 8 o 10 o así de nosotros, pasando, mantener un ojo vigilante sobre el tablero, y arrancando preguntas realmente lo más rápido que podamos, refiriéndose a los mensajes relacionados si usted no ha encontrado los vosotros mismos, referencias en línea, según corresponda. Y luego, si hay problemas, ya que, inevitablemente, será, o simplemente tiene más sentido para sentarse uno a uno, resolver problemas con alguien. O usted acaba de entrar en horas de oficina realmente necesidad de esa mentalidad. Usted no quiere ir a través del formulario electrónico, realmente quiero conocer a alguien. Comunicar que para nosotros, y lo que sucederá es cuando su cuestión ha sido visto por un miembro del personal, y determinar, yup, esto debe ser enviado a una de las 20 o 30 miembros del equipo aquí localmente, podrás ver en la parte superior izquierda esta Introduzca el pequeño botón Cola comienza a parpadear en cs50.net / discutir. Y esto le está diciendo que ahora han sido invitados, por lo que para hablar, para entrar en la cola. Y al hacer clic en ese botón, su nombre aparecerá en un iPad que el interfaz CS50, uno de los jefes del curso, se celebrará cerca de la entrada de Annenberg, que entonces vemos como se muestra aquí, los estudiantes que tengan preguntas sobre la izquierda, los miembros del personal que están presentes en la derecha. Y con un clic izquierdo y derecho, su navegador web se comenzará a parpadear en cuanto, por ejemplo, el profesor McGonnagal está dispuesta a verte en una tabla en particular en Annenberg. Así que hicimos algo de esto el año pasado. Hemos reiniciado las horas de oficina y reimplementado gran parte del software. Así que darse cuenta de que este se caliente esta semana. Pero también se dan cuenta también, en los últimos años, como usted puede haber oído de los amigos, las horas de oficina en efecto tenía entre 50 y 150 estudiantes a la vez. Y no es simplemente imposible para nosotros para manejar ese efectivamente, uno a uno, a lo largo de la noche. Y así lo que realmente vamos a tratar de hacer este año es aprovechar el hecho de que una gran cantidad de preguntas están preguntas más frecuentes y, a menudo se puede responder mejor de forma asincrónica. Así que se puede ordenar de pensar a través de la respuesta del funcionario, y podemos pensar a través de su código, sin la calefacción presión de luchar necesariamente a través de ella al lado del otro. Por lo tanto se estima que aproximadamente un tercio o la mitad de las preguntas será enviado en persona, y vamos a tratar de arrancar como muchos como un medio más o electrónicamente, durante las horas de oficina. Y vamos a seguir utilizando Comenta a lo largo de la semana también. Y, por último, se dan cuenta que este curso puede ser tomado pasa / no pasa. Así que si usted está en la cerca o simplemente pensar que eres realmente no estoy seguro si este es el mundo para ti, o esto es realmente absolutamente ajeno a ti, darse cuenta de que esta es una manera maravillosa de ganar hasta un poco de confianza con la que dar un paso en la clase, como lo hice yo, francamente, hace años. Y luego tenemos cinco semanas para ordenar la figura hacia fuera para si usted desea permanecer pasa / falla, cambie a una carta grado, o similar. Y por lo general lo que pasa / falla es, creo yo, para los estudiantes es que, si se pone en esos 10 horas, 20 horas, cualquiera que puede estar en problemas, y que está golpeando su cabeza contra la pared, y que realmente no puede perseguir algo abajo, y usted tiene muchas otras cosas que hay que hacer, de verdad, lo que yo Creo pasa / no pasa es que se necesita el borde de situaciones como esa. Si usted ha tomado la cosa el 90% del camino. Ya sabes, no es del todo perfecto. Pero usted tiene un montón de él, sin embargo. Así que considere pasa / no pasa como que le da ese modelo mental, tal vez. Durante toda la semana derecha, por lo último que se zambulló en Scratch, y nos habló acerca de la programación en un nivel gráfico bastante alto. Y hoy hacemos la transición a una lengua llamado C, un lenguaje de programación más abajo en la parte superior de que muchas lenguas modernas se construyen ahora, incluso algunos de los que vamos a utilizar a finales término. Y sintácticamente, lo que parecen es todo muy similar. Así que vamos a empezar a hacer esta transición aquí. Así que este era un programa de la semana pasada que era el más simple de hola programas mundiales. Simplemente imprime en la pantalla hola mundo, con una bocadillo pequeño que sale del gato. Bueno, si empezamos ahora a traducir esto a otro idioma, se dan cuenta de que las ideas de hoy y el miércoles son idénticas, pero la sintaxis comienza a cambiar. Así que, la semana pasada tuvimos, cuando hace clic en la bandera verde, por ejemplo hola mundo. Hoy vamos a tener int, void main, printf, A cambio, con una sintaxis otro en allí también. Los corchetes y paréntesis y comillas, y otras cosas. Pero darse cuenta de que el núcleo de la idea aquí es la tecnología de impresión, y, finalmente, el hecho de que la principal es ahora va a ser sinónimo de la partida de un programa. Principal va a ser donde la bandera verde patea las cosas. Así que ahora vamos a separar algunos de los componentes básicos aquí Antes de profundizar en algunos ejemplos concretos. Así que nos llamaron esta semana una última declaración, por lo que es justo una instrucción. Haga esto - en este caso, por ejemplo hello world. Bueno, en C, si miramos sólo esa línea, esta es la forma en que estamos va a empezar a expresar esa pieza del rompecabezas particular: printf ("hola mundo");. Y ahora vamos a fastidiar las distingue más y más con el tiempo, pero se dan cuenta de que hay un patrón aquí. Por lo tanto, tenemos esta cosa llamada printf, que es esencialmente análoga a la palabra Say. Eso es lo que va a hacer. Printf, yf aquí significa "formateado". Por lo tanto, sólo significa que usted puede insertar diversos detalles estéticos. Así que entre comillas es el comienzo de lo que vamos para empezar a llamar a una cadena. Una palabra, una frase, una oración. Una cadena en un lenguaje de programación es una secuencia de cero o más caracteres. Así que h-e-l-l-o, coma, y ​​es así sucesivamente, entre comillas, una cadena. Y ahora backslash n, un poco extraño sintácticamente, pero ya se ha definido que la semana pasada en el sentido de que? Es sólo una nueva línea. Es sólo una forma de transmitir a la computadora que usted desea que el equivalente de golpear la tecla Intro allí, pero no lo hace quieren golpear realmente Entra y por lo tanto estropear toda la formato de su programa actual. Ahora los paréntesis incluyen esta cadena, paren abierto y paren cerca y dentro de eso es nuestra cadena. Porque eso es debido a que en C, y otros programas lenguas, cosas como printf toman argumentos, o tomar parámetros. Así que empezar a pensar ahora de este bloque Say púrpura como un función, como un método, como un procedimiento. ¿De verdad se puede llamar lo que quieras, por ahora, pero es una especie de un programa en miniatura que sólo hace una cosa, en una sola línea, ni menos. Así que printf es también lo que vamos a empezar a llamar a un función, y las funciones de hacer algo - en este caso imprime una cadena con formato a la pantalla - sino que funciona también toman argumentos o parámetros. Y por argumentos o parámetros, gracias, queremos decir que su comportamiento puede ser influenciado por lo que se pasa en dentro de los paréntesis. Así que en este caso, las necesidades de printf se les diga lo que desea imprimir, y sólo tiene que pasar en, entre comillas aquí, la cadena que nos realmente desea imprimir. Y el punto y coma en el final de esta línea es sólo una molestia histórica según la cual al final de la mayoría de las líneas de código, se pone un punto y coma para hacer súper claro para el equipo que esta línea de código termina aquí. Ahora bien, esto es bueno, porque como veremos como obtener más programas complejo, el punto y coma hará súper claras para nosotros los seres humanos, y también el ordenador, donde las líneas de código de inicio y de fin. Darse cuenta de que algunos lenguajes no tienen algún de estos mismos detalles. Y de hecho, en JavaScript, que no siempre se necesita algo como el punto y coma. Pero más sobre esto más por venir. Así bucles. Teníamos algo así, muy intuitiva, obviamente, hacer algo una y otra vez y otra vez. Como ponerse los calcetines, o decir hola, en este caso. Pues bien, a partir de hoy en C, que podríamos expresar esta arañazos bloquear como while (true) printf ("hola mundo"). Así que notar que estamos empezando a construir literalmente en el rompecabezas pieza de antes. Tenemos el mismo bloque morado, pero es dentro de este Siempre entre corchetes bloque, y la mejor manera de traducir que para C es como sigue. No hay ninguna palabra clave para siempre. No se puede escribir f-o-r-e-e-v-r en C. Así que el análogo más cercano es tiempo. Ahora bien, mientras que (verdad) parece un poco estúpido porque tiene el valor de cambio nunca es verdad? Presumiblemente no. Es como decir que mientras uno, mientras que en adelante, mientras que cierto. Todo es lo mismo, verdadero es siempre el caso. Así que este circuito es en realidad la inducción de qué tipo de bucle? Sólo un bucle infinito, claro. Un bucle infinito o como lo llamó la semana pasada, sólo un bucle infinito. Así que a veces eso es malo. A veces eso es un error, a veces es por eso que te dan la pelota de playa girando o reloj de arena o similar. Pero en este caso, de manera deliberada, para lo razón, quería imprimir la misma cosa otra vez y una y otra vez. O en el caso de un reloj, que quiere hacer algo una y otra vez y otra vez. Así bucles infinitos podría tener sentido. Y es así como en C que podríamos traducir por siempre con el código. Así que ahora éste es un poco más específico. Habíamos repetir 10 veces la siguiente declaración. Así, mientras que (verdad) no acaba de funcionar allí, porque es la verdadera siempre es cierto. Así que si en lugar de mirar a la versión C, ahora la sintaxis obtiene una poco más críptico. Pero para ser honesto, una vez que empiezas a ver esto, todo se vuelve bastante familiarizado con rapidez. Así que esto es lo que se llama un bucle for. Un bucle que va a decirle a la computadora que haga algo una y otra vez y otra vez durante el tiempo que estas cosas son verdaderas. Ahora, ¿qué queremos decir con eso? Bueno, hay tres partes para un bucle for, y vamos a volver a ello en el contexto de la actual ejemplos en un momento. Así que no te preocupes si no acaba de hundirse en una sola vez. Pero int i = 0 es, cuento largo, diciendo dame un variable que es de tipo entero, así que dame un número llamado i, y se inicializa a 0. Eso es darme como una variable x algebraica y inicializar a 0. Pero en este caso lo llamamos i. Entonces en el medio, se dice i es menor que 10. Eso dice la computadora es el material siguiente, siempre como i es menor que 10. Y, obviamente, que se inicia a menos de 10, porque que comienza en 0. Entonces, por último, quizás puedas adivinar lo que significa + +. Es un poco de sintaxis que sólo significa incrementar i. Así que añadir 1 a i, una y otra vez y otra vez. Y así, como veremos este bucle, esta sintaxis, más bien, pone en práctica precisamente la misma cosa que, francamente, en Scratch era tan mucho más fácil de expresar. Repita 10, y ya está. En C, y en la mayoría de los lenguajes de programación, que tiene que ser un poco más instructivo para el equipo y en realidad especificar algo como esto. Pero vamos a volver a esta y otras sintaxis. ¿Qué variables? En Scratch teníamos algo así como esos bloques de color naranja, donde podría declarar una variable. Vamos a llamar arbitrariamente en sentido contrario. Vamos a inicializar a 0 y, a continuación, siempre vamos a hacer algo. En este caso en Scratch que estoy diciendo el mostrador, por lo que el gato va a tener un bocadillo pequeño que está hablando el número que hay en esta variable. Y luego tenemos contador de cambio en 1. Así que todo esto está envuelto dentro de una cerradura Forever. Así que ahora ya tenemos los elementos básicos en C con que para traducir esta. Una forma en que podría hacerlo es la siguiente. Dame un número entero, lo llaman mostrador. Inicializar a 0 en la primera línea allí. Mientras que (verdad), así que estoy robando la idea de un momento hace, seguir adelante y hacer lo siguiente. Imprimir el contador, y luego incrementar el contador, de nuevo, y de nuevo, y de nuevo. O, de nuevo, + + sólo significa añadir 1 a algo. Pero hay una nueva pieza de sintaxis aquí. ¿Qué está saltando como no se encuentra entre los ejemplos anteriores? Sí,% d. Así que tal vez puede inferir qué está haciendo esto, francamente, basado en lo que el bloque Scratch está haciendo. Pero, de nuevo en C, sólo tenemos que ser un poco más concreto a la hora de expresarnos. Así printf ("% d \ n"). Bueno, la mayor parte de que podemos tirar tan familiar. Las comillas sólo significa que es una cadena, la barra invertida n es sólo una nueva línea. Así que lo único nuevo aquí es% d. Y todo lo que es, es un marcador de posición. D% va a denotar un número decimal. Y equipo% medio d, poner un número decimal aquí. Bueno, ¿qué número quieres puso allí? Bueno, como usted tal vez pueda deducir, después de la coma se dice contador, que es el nombre de una variable que se declara o creado un par de líneas antes. Así que esto es sólo la forma de C de conectar una variable en una cadena dinámicamente. Debido a que por el contrario, si yo hubiera hecho en su lugar algo así como esto, printf ("contra"), lo que haría este programa en lugar hacerlo, presumiblemente? Es, literalmente, va a imprimir "contador". Lo cual no es el efecto que quiero. Tengo que sustituir en un valor numérico. Así que veremos que las funciones de entonces, como printf, no puede tomar apenas argumentos individuales, como "Hola mundo". Ellos pueden tomar coma cita fin de la cita y, a continuación algunas variables que recibirá conectado a, como veremos la cadena anterior a través de estas variables% de signos. Bueno, ¿qué pasa con las expresiones booleanas? Las expresiones booleanas son estos valores, verdadero o falso. Sí o no. 1 o 0. Encendido o apagado. Así que en Scratch se ven así, y note que la bloque de fondo aquí es en realidad la conjunción de dos bloques más pequeños. Así que tipo de arrastrar y soltar las piezas del rompecabezas tres juntos para hacer que la pieza del rompecabezas que está allí para que yo podría transmitir la idea que quiero que x sea menor que y y y para que sea menor que z. Y por lo que puedo traducir estas dos líneas separadas de la siguiente manera. La de arriba puede ser muy trivial traducido a C, con apenas x