[REPRODUCCIÓN DE MÚSICA] ALLISON Buchholtz-AU: Hola a todos. Bienvenido a su primera sección oficial CS50. Como se puede, ver, esta es sección CS50-como, simplemente para levantar nuestra agenda para hoy. Así que, ¿quién soy yo, como estoy seguro ya está todo preguntándose. Yo soy tu TF. Yo no soy más que un estudiante al azar que está suplantando su TF. Y yo voy a ir a través de tipo de secciones tienen fluirán, expectativas que tenemos, recursos, así sucesivamente y así sucesivamente. Vamos a hablar acerca de las matrices, ASCII funciones, los argumentos de línea de comandos, y no es de aquí, pero También voy a estar ayudando usted piensa tipo de medio su próximo conjunto de procesadores para esta semana. ¿Qué estoy seguro de todo lo que podrá apreciar. Así, en primer pregunta-- ¿quién soy yo, además de su exuberante TF aquí. Soy Alison Buchholtz-Au. Este es mi segundo año TFing CS50. Yo también CS51 TF en la primavera. Es posible que vea de nuevo allí si usted decide tomarlo. Yo también soy un PAF, por lo que cualquier Freshmen-- y si usted no es un estudiante de primer año, este es mi tercer año como un compañero de asesoramiento. Estoy muy bien versado en asesorándole sobre la vida y cursos dentro de CS y no dentro de CS. Soy un Concentrador de Ciencia Informática. Soy estudiante de último año en Adams House, mejor casa. Y antes de que me cambié a CS mi estudiante de segundo año de Primavera, Yo era en realidad un ingeniero biomédico. Yo iba a ir a la escuela de medicina. Iba a ser un cirujano de trauma. Y eso tiene completamente cambiado desde que asumí el CS50. Tomé el curso de mi estudiante de segundo año de la caída. Fue mi primera introducción a CS nunca. Yo fui uno de los 78% de ustedes que había experiencia cero entrando, y que cambió por completo mi vida. Y ahora estoy trabajando en Microsoft, y su encantadora TF. Y CS50 es probablemente uno de las mejores experiencias que he tenido aquí en Harvard-- tanto tomar la clase y ser capaz de ayudar enseñar a los estudiantes como usted. Así que estoy muy emocionado que ya está todo aquí. En caso de que usted entró tarde, hay caramelos, que usted debe sentirse libre de venir agarrar, o enviar alguien más para tomar por usted. está bien. Yo no quiero comer eso. Mi habitación tiene suficiente chocolate, así ustedes deben tratar de terminar eso. Sé que hay 100 piezas, pero como, 4:00 de un lunes, Creo que todo el mundo podría utilizar un poco de azúcar. Así que todos los que son oficialmente en mi sección debería haber conseguido un correo electrónico de mí con mi número de teléfono, email address-- no dude en añadir mí en Gchat, no dude en agregarme en Facebook, y también para el resto de ustedes, usted me puede enviar por correo electrónico aquí. Hay dos de H. Todo el mundo siempre hace como dos L's o dos de C. Dos de en el apellido H. De lo contrario, va a rebotar, y Yo no voy a obtener su dirección de correo electrónico. Así que no dude en enviarme un correo electrónico, ponerse en contacto conmigo en cualquier momento. Tal vez no volver a dentro de 24 minutos, pero prometo volver en un plazo de 24 horas. Si me llamas media hora antes su conjunto de procesadores se debe, usted ser como, No tengo idea de lo que estoy haciendo Allison. Ayuadame. Voy a calmarse, pero al final del día, si me llamas media hora antes su conjunto de procesadores se debe sin nada escrito, Yo voy a ser como, bueno, tal vez es el momento de utilizar esa tarde los días. Así que voy a responder a todos los de su solicitudes de manera muy oportuna. Mi teléfono es generalmente unido a mis manos. Me suelen responder mucho más rápido que 24 horas, pero sólo puedo garantía una respuesta de 24 horas. Bien. Así que ¿por qué estamos aquí? También, si usted tiene preguntas en cualquier momento, por favor hágamelo saber. Hablo mucho. Hablo rápido, pero por favor, no dude en interrumpir. Me da espacio para respirar también. Así que las secciones son un tiempo para que nosotros realmente sólo de buceo en, obtener algunas manos-en la experiencia, para ir a través de los temas que hemos mencionado en la clase o en los materiales de estudio que recomendamos a ustedes en línea. Y que en realidad va a ir a través de algunos de esos recursos en un poco. Por lo que algunas notas sobre el apoyo sección. CS50-- una de las cosas que hace es una de mis clases favoritas es la sensación de que nunca estás solo. Contamos con un personal de más de 100 personas que están aquí para ayudarle. Tenemos horario de oficina De lunes a jueves. Así que hay tantas personas que amar a la clase tanto como lo hago y que están realmente aquí porque quieren estar aquí. La mayoría de nosotros somos estudiantes, y esto es como una quinta clase, además para el resto de nuestro trabajo. Y es mucho trabajo, pero lo hacemos porque nos encanta, y realmente amamos a enseñar y ayudar a compartir nuestro entusiasmo para este tema y esta clase. Así que por favor tome ventaja. Venga a hablar con nosotros. Me siento solo cuando mis estudiantes no hablar conmigo, así que si quieres, venir pasar el rato conmigo. Va a ser genial. Así sección es obviamente uno de sus más grandes cosas. Vamos a ir a través de las cosas que has aprendido en la conferencia, hacer algunos breves ejemplos cuando tenemos tiempo, y, en general tipo de tener una idea acerca de las cosas usted debe estar pensando acerca de establecer su problema. Shorts-- cuántas personas en realidad visto el video de su rasguño corto? Cualquier persona que me reconoce? Así que estos son muy grandes. Definitivamente usted debería ver esos. Mucho trabajo se ha puesto en ellos. Y sólo están destinados a ser tamaño bocado piezas para que usted acaba de ver durante tres o cuatro minutos y obtener una mejor comprensión de un concepto. Camine throughs-- cómo muchas personas se han visto los paseos virtuales por las anteriores? Zamyla es increíble, ¿verdad? Al igual que, me gustaría ser Zamyla veces. Así que sin duda utilizar sus paseos virtuales. Ella va a romper hacia abajo en piezas pequeñas, del tamaño de un bocado. Y cuando usted tiene estos enormes especificaciones de sus boletines de problemas, que va a ser realmente importante ser capaz de simplemente encontrar un lugar para empezar a trabajar y poco a poco a través de él. Muy bien, también tenemos Study50, que es study50.harvard.edu, creo. Usted puede simplemente Google estudiar, y que va a venir para arriba. Esta es una de las mejores recursos que tenemos. Es en PowerPoint con notas y la práctica de problemas para usted con soluciones que le en realidad se puede caminar a través. Así que si alguna vez quieres más práctica, más de lo que hacemos en secciones o más de sus conjuntos de problemas, esto es realmente un lugar que me animo a ir. Fue construida el verano pasado por algunos de mis muy buenos amigos. Y es increíble. De hecho, muchas de las diapositivas que voy a estar utilizando para la Sección vendrá de Study50. Así que muchos de los TF usarlo. Y, por último, como yo mencionado, las horas de oficina. Si tienes problemas para con la tarea, usted es teniendo problemas con un concepto, llegado a las horas de oficina. Ir al principio de la semana, si puedes. Salga al patio, ya que es un poco lejos. A nadie le gusta caminar por ahí. Pero es a su ventaja, porque entonces estás va a tener todos estos TFS, [Inaudible] te rodean. Y sobre todo ahora, Sólo un consejo, jueves son muy frío en este momento en Mather porque sus conjuntos de procesadores son pagaderas el jueves. Y sabiendo quiere utilizar sus días finales todavía. Así que si usted está teniendo problemas con los conceptos, hay un montón de TFS que están ahí para ayudarle. Así que venga a Mather el jueves. Si quieres verme, Yo voy a estar allí. Yo normalmente estoy haciendo mi propia tarea, porque nadie quiere mi ayuda. Así que ven a vernos. Reunirse con nosotros a mitad de camino. Entonces, ¿cómo muchas personas han asistido a conferencia o lo vio en línea? ¿Cuántas personas fueron a súper sección de la semana pasada? Enfriar. Eso es en realidad un buen número. ¿Cuántos de ustedes han leído su spec para esta semana, por su conjunto de procesadores? Ooh, me siento orgulloso de ustedes! Más dulces para todos ustedes. Bueno, así que lo que queremos decir "Encontrarnos a mitad de camino", es de que el artículo es realmente sólo va a ser muy útil para usted si vienes en después de haber leído su especificación para su conjunto de procesadores. Porque cuando voy a través de una visión general de las cosas que usted debe mirar hacia fuera para, que no va a hacer tanto sentido si no saben lo que establece su problema se va a pedir que hagas. Si usted no viene a la sección, obviamente, No puedo ser tan útil para usted. No voy a tomar como algo personal si no vienes a mi sección en este momento, pero sin duda lo que debería. Si no puede, ver en línea. Ellos están ahí por una razón. El mío será allí mismo. Como te das cuenta, que estamos siendo grabada, por lo que será justo ahí para ustedes. Además, va a lectures-- eso es, obviamente, donde usted está recibiendo el inicio de su material aquí. Así que voy a tratar de duda ayudarle tanto como puedo, pero yo sólo puedo cumplir hasta ahora. Tienes que tipo de nuestro encuentro a mitad de camino. Grading-- así, todos ustedes que consiguió un correo electrónico de mí, tú eres mi sección oficial. Voy a estar con una ley de sus conjuntos de procesadores. Y yo sólo quiero decir, una cosa que que realmente debe prestar atención a son los comentarios. Los comentarios son a menudo más útil que la puntuación real que le damos. Y los comentarios son en realidad donde paso gran parte de mi tiempo cuando estoy de calificaciones. Así que le agradecería que si usted los lee. Y son realmente cómo va para aprender más sobre el diseño y el estilo y las cosas que son un poco menos corta y seca. Así que en realidad prestar atención a esos comentarios. Si usted tiene preguntas acerca de ellos, o preguntas acerca de su puntuación, por favor, venir a hablar conmigo ya sea antes de la sección, Probablemente estaré pasando el rato en el vestíbulo, o después. Si desea programar uno-a-uno reuniones sobre cómo usted puede ayudar a mejorar más tarde conjuntos de problemas, sólo hágamelo saber. Y entonces sólo un par de consejos para ustedes. Así que una de las cosas más grandes Yo siempre insisto a mi sección cuando usted está aprendiendo cómo codificar es escribir las cosas en papel primero. Si usted tiene un plan de juego para donde el código tiene que ir y lo que necesita para hacer y se descompone en pequeños trozos de pseudocódigo código que has escrito a cabo, vas a ser menos propensos a cometer errores de sintaxis o crear un bucle que si no tiene una persona. Si usted sabe dónde estás ir global, eres menos probable que estos diminutos errores que a veces te lleva horas para arreglar, porque usted es como, donde me estoy perdiendo este soporte? En esa nota, por favor, utilice Style50. Especialmente cuando estás ir a las horas de oficina, si su código es todo cambiado a un lado, es política de curso que podemos decir, arreglarlo por lo que parece que dice Style50 lo que debería, y luego le ayudaremos. Así que va a hacer su vida más fácil. Se va a hacer la vida más fácil. Todo el mundo está feliz. Todo el mundo recibe mejores calificaciones. ¿No es eso lo que todos queremos? Así que escribir cosas en un papel antes de ¿Alguna vez se toca la computadora. Hablar las cosas en un nivel alto, y asegúrese de que sabe a dónde va. Y si no está seguro, sentarse con alguien y caminar a través de paso a paso lo que se supone que el código para hacerlo. Y nueve de cada 10 veces, usted será como, oh, me olvidé de una condición if o se me olvidó un punto y coma aquí o Estoy actualizando esta equivocado variable. Así que estos son mis consejos para el éxito. Así que ya que cerca de la mitad de los que se vea como usted asistió súper sección, Yo sólo voy a muy ir brevemente a través de los bucles, que no estaban en nuestra agenda original. Pero son realmente importantes. Y así me voy a clase de velocidad a través de los antes de entrar en nuestra sección real. Antes de hacerlo, hay cualquier preguntas-- logísticamente, personalmente, es allí algo más que quieras saber sobre mí o sobre sección o clase en general? Todo bien? Aceptar, fresco. Precioso. Así loops-- ustedes todos debemos reconocer estas piezas a partir de cero. Así que los bucles son básicamente sólo un camino para que nosotros hagamos algo algunas veces, algunos repetidos acción sobre la base de algunos condicional. Así que tenemos tres tipos diferentes. Tenemos bucle for, while y do-while. Así que para loops-- sólo tenemos una muy disposición general aquí de un bucle for. Y esto es muy bueno para cuando se sabe cómo muchas veces algo tiene que ejecutar. Cuando hablamos de la otros bucles, podrás ver por qué eso es una distinción importante. Pero para los bucles son algo conjunto. Usted sabe que usted puede calcular el número o usted sabe el número de veces que quiere esto repite al comienzo. Así que si usted ve aquí, tener sólo carácter general del marco de esqueleto para un bucle for aquí. Así que para la inicialización, aquí es donde se inicializan las variables. Con Mario, estoy seguro de que ustedes hicieron algo así como int i es igual a 0. Ahí es donde que iba a suceder en azul. Usted tiene su condición, que es lo que se comprueba cada vez. Si esta condición es cierta, entonces el resto del código se ejecuta. Luego se va a correr otra vez-- y preguntar. Y luego tenemos la actualización, donde está actualizando la variable. Así que, de nuevo, con como Mario, estoy seguro ustedes hicieron algo como i plus plus. Así que cada vez que el bucle corrí, me actualicé así que cuando nos marchamos contra alguna condición, que estaba cambiando. Porque si sólo tener una variable estática, si se ejecuta la primera vez, es sólo va a ejecutar infinitamente. Así que hay que asegurarse de que actualizar la variable correctamente. Y también tenemos sólo una representación visual allí. Todo el mundo bien? Para bucles. Debería haber visto estos en su conjunto de procesadores. Enfriar. Así que aquí es sólo un ejemplo fácil. Imprimir Esta es CS50! 10 veces. Y así tenemos nuestra inicialización, como vemos allí, con int i es igual a 0, para i es menor de 10, y yo y más. Y que va a imprimir que 10 veces. Así, mientras que los bucles while son loops-- genial cuando no lo hace necesariamente tiene que saber cuántas veces es va a actualizar en el principio. Sólo tienes alguna condición que se comprueba. Y esto podría ser algo así como rato-- vamos a tomar un ejemplo de su conjunto de procesadores. Si Mario, intenta entrada de un número negativo. Derecha? Se suponía que volver a impulsar su usuario. Así que se puede decir, bueno, si las entradas del usuario algo menor que cero, re-prompt ellos. Y estoy seguro de que podría tener sido algo que algunos de ustedes utilizado en el código. Así que es una cosa simple. Usted tiene tiempo, algunos condicional que se comprueba cada vez que el código va a ejecutar. Si se evalúa como verdadera, lo ejecutamos. De lo contrario, no lo hacemos. Y lo que es realmente algo me important-- Creo que David habló de en lecture-- son las llaves. Cualquiera que sea de dentro de la llaves es lo que se ejecuta. Si se olvida de aquellos llaves, que sólo va para ser la línea directamente después de que se ejecuta el tiempo. Así que si usted tiene tres cosas que se suponen a pasar cuando este condición se evalúa como verdadera, y usted no tiene esos apoyos, sólo lo primero que va a suceder. Así que ser muy consciente de donde pones tus llaves. Si usted se pega con Style50, Esto definitivamente le ayudará. Enfriar. Así que esta es una cuenta regresiva de 10 a cero. Y como se puede ver aquí, inicializamos algunos contador fuera de ella. Una cosa que es diferente es no estamos inicializar nuestra variable dentro de nuestro bucle while. Se inicializa fuera de ella. Estamos simplemente poniendo el acondicionar para nuestro tiempo. Así que en este caso, es tiempo recuento es mayor que cero. Y es la impresión de lo que es nuestro recuento, y luego nos decrementamos nuestra variable. Y eso es también otra cosa a notar. Nuestra actualización no se produce dentro de esa primera parte del bucle while. En realidad va a suceder dentro de las abrazaderas, el cuerpo de su texto. Así que, mientras loops-- do-while son ideales para la validación de usuario. Así que algunos de ustedes podrían tener También se utiliza esto en su conjunto de procesadores. Se puede decir, hacer, como, preguntar al usuario para la entrada. Y entonces, mientras que, al igual que, la de entrada es menor que algún número. Así que para un caso explícito con Mario, que sería hacer printf, introduzca un entero, y algo más entero es igual getint. Y entonces va a realidad ejecutar ese código primero. Usted realmente tiene algún tipo de número entero. Y entonces se podría decir que, mientras que que entero es menor que cero. Entonces, ¿qué se va a hacer es que es va a ejecutar al menos una vez. Se va a comprobar la condición. Si la condición es cierto, que va a correr de nuevo. Lo mismo ocurre con-bucles while son grande para la validación del usuario, porque usted sabe el código se va a ejecutar, al menos, una vez, mientras que con mientras que los bucles, no estás garantiza que es va a ejecutar una vez. Se va a verificar el estado primero y luego decidir a ejecutarlo, mientras que un do-while voluntad ejecutar el código primero y después comprobar para ver si que necesita para repetirla. ¿Eso distinción dar sentido a todo el mundo? Okay. Enfriar. Así que en este caso, esto es una especie de lo que estaba hablando, esta re-indicaciones hasta que obtener un número positivo. Así que sabemos que printf "Introduzca un número positivo" y en realidad pidiendo que de entrada va a pasar al menos una vez. Si el usuario es el mal y mantiene introducir un número negativo, que sabe cuántas veces se va a ejecutar. Pero este código está garantizada para ejecutar al menos una vez. Y es por eso que es genial para la entrada de validación. Y que va a utilizar que un poco. Muy bien, alguna pregunta hasta ahora? Estamos todos bien? ¿Estoy hablando demasiado rápido? Estamos bien? Okay. Impresionante Así que vamos a seguir adelante y hablar acerca de las matrices. Enfriar. Así arrays son básicamente sólo estructuras de datos que nos permiten almacenar cosas que son del mismo tipo. Así que si alguna vez tiene una matriz, que es ya sea sólo va a tener ints o que sólo va a tener flotadores o que sólo va a tener caracteres. Usted no va a tener un int con un char con un flotador con un doble. Una cosa. Las matrices son sólo un tamaño, o son sólo un tipo. Así que aquí tenemos una matriz de tamaño tres con tres enteros en el mismo. Podrían flotadores, pero estamos va a decir que son enteros. Así que una cosa es darse cuenta de que las matrices son un tamaño de conjunto al inicializar ellos, y ellos no están easily-- ya que todos ustedes son menos cómodos, sólo debe pensar en ellos como no ser capaz de extenderse en tamaño. Sin embargo grande que se propuso su matriz en el principio, ese es el tamaño que va para quedarse, porque las matrices son bloques continuos de memoria. Y cuando ustedes chicos se ponen en un poco más de cómo la memoria es realmente distribuida en discos y en el montón y la pila, que va a hacer un poco más de sentido. Pero usted podría pensar en como, es sólo una fila de espacios en el disco. Y no se puede garantizar que no hay va a ser espacio libre después de ella. Usted podría inicializar un array de tres y luego tal vez usted inicializar otra serie de cinco más tarde, y está justo después de eso. Así que si usted fuera a ir más allá de punto tres en que primero array, usted estaría escribiendo sobre otra cosa. Así matrices son-- para ustedes, sólo pensar en ellos como un tamaño fijo. Así que la creación de un array-- vas a tener que hacer esto un poco. Así que de la misma manera que tenemos un estructura general para nuestra para bucles, tenemos un buen general, estructura de nuestra matriz. Debido a que son de un tipo, todo el elementos de un conjunto son de un tipo, que necesita para inicializar lo que tipo es. Así que, como ves aquí, tenemos una pequeño y agradable tipo de datos soporte. Así que si estamos creando un int matriz, que será int. Si estamos creando un char matriz, que va a ser carbón. Si estamos creando una cadena matriz, que va a ser de cadena. Y a continuación, el nombre de su matriz, lo que usted quisiera que fuera. Así que tal vez es resultados de las pruebas o tal vez es estudiantes o tal vez es el caramelo. Decida lo que decida el nombre de su matriz, que es lo que va a ser. Y a continuación, entre paréntesis, se le tener el tamaño que desee. Así que, ¿estamos almacenando 10 estudiantes o estamos almacenando 15 tipos de dulces? Lo que no. Así que en nuestro ejemplo aquí, estamos creando una matriz del tamaño de tres, lo que ustedes ver aquí a la derecha. Y cuando nos inicializamos , todo se ajusta a cero. Así que es sólo pensaba así como una pizarra en blanco. Tenemos todos estos espacios, tenemos todo estas cajas podríamos poner nuestros datos en, pero son sólo en blanco Siendo por el momento. Así que si queremos realmente asignarles estos valores, lo hacemos como muestra justo debajo de aquí. Así que tienes lo que el nombre de su matriz es y entonces, ¿qué índice que desea. Así que el índice sólo se refiere a, como, ¿qué ranura que estamos viendo. Y una cosa importante a notar es que las matrices están indexados a cero. Así que si queremos que el primer espacio en la memoria de nuestra gama, que va a ser cero. Si queremos que el segundo, que va a ser uno. Si queremos que el tercero, que será de dos. Así sucesivamente y así sucesivamente. Que es también por qué, convencionalmente, cuando lo hacemos para loops-- estoy seguro ustedes se preguntan, ¿por qué empezamos a 0 frente a 1? Y eso es porque cuando hacemos la transición en el uso de matrices, se asigna correctamente. Así que si usted quiere iterar en una matriz, que tiene mucho más sentido hago i es igual a 0, ya que saben que corresponderá a la primera mancha en la memoria. Todo el mundo bien con eso? Enfriar. Y luego en el fondo aquí es sólo otra manera de inicializar una matriz. Usted todavía tiene su tipo de datos y el nombre, pero en vez de realidad poner un tamaño de allí, usted puede hacer soportes vacíos. Y luego, con estos rizado tirantes en la parte inferior, usted puede simplemente entrada de los datos que que desea separados por comas. Y que lo hará de forma automática digo, está bien, yo veo que tiene tres cosas en estos aparatos. Así que sé que tengo que asignar tres bloques de memoria y luego los almacenan. Así que la primera versión que podría utilizar si usted está pidiendo su usuario introducir valores, para que pueda iterar a través de la matriz y ask-- conseguir un poco de int a la entrada de ellos. Si conoces a los valores de antemano, que tiene mucho más sentido utilizar el segundo camino. Pero en la mayoría de los casos, podrías no estar seguro lo que esos valores van a ser. Enfriar. ¿Alguna otra pregunta? Muy bien. Así acceso elements-- por lo que uno de las grandes cosas acerca de las matrices es que son al azar acceso, lo que significa que usted no tener que mirar a través de cada bloque. Si usted sabe que usted querer lo que está en el bloque dos, usted puede decir, dame bloque de dos. Y es por eso que estos índices son tan importantes, y eso es lo que realmente acceder a ellos. Así que en este caso, como hemos visto antes, cuando estábamos asignando valores, en el que antes, teníamos el nombre y la Índice queríamos acceso, ¿verdad? Así que de la misma manera, eso es todo lo que hacer para tirar realmente que fuera datos. Tenemos el nombre y nosotros tener el índice que queremos. Así pues, en este caso, el bucle for aquí abajo en la parte inferior, a nadie sabe lo que está haciendo, lo que sería imprimir? Mmhmm? Exactamente. Así que sí, es sólo a través de la iteración. i es igual a zero-- podemos caminar a través del código sólo rápidamente. i es igual a cero, i es menor de tres en este momento, ¿no? Así que comprueba hacia fuera. Y decimos, OK, impresión f Lo que está en la temperatura i. i es cero aquí cuando por primera vez iteración, por lo que vamos a este primer punto, y decimos, OK, 65 es el número que queremos imprimir. Así que va a imprimir 65 y luego hacer una nueva línea. Voy a actualizar, por lo que imprime 87. En él se actualiza de nuevo, y que va a imprimir 30. Todo el mundo fresco? Impresionante. Bien. Así que aquí es una especie de Lo que estaba diciendo cómo usted puede realizar un seguimiento de puntuación de alguien y por qué que usaría el primero manera de inicializarla en lugar de que el segundo camino. Y esto sólo va a través. Y note que tenemos un tamaño de clase de 30. Y estamos inicializar este matriz de enteros que es de tamaño 30. Y entonces estamos iterando a través y estamos pedir al usuario que introduzca calificaciones de cada una de ellas y luego asignar a un lugar específico en la memoria en algún lugar de esa matriz. Fresco? ¿Eso tiene sentido para todo el mundo? Mmhmm? Así hashtag definir el tamaño de clase 30 es una directiva de preprocesador, que sólo significa que tiene gets-- que ver como el proceso de compilación. Usted puede pensar en él como una variable global. La forma en que lo hacemos es typically-- permite su código que cambiar más fácilmente. Así que digamos que nuestro tamaño de la clase de repente va del 30 al 15, si no hubiera definido de esta manera, lo haría tener que ir a través de todo mi programa y cambiar todos los casos, de 30 a 15. Pero con esto, tengo la oportunidad de cambiar uno lugar, y todo lo demás cambia. Si alguna vez quieres hacer un hash definir en un caso donde está el seguimiento de algunos establecer el número de puntajes para una clase o está utilizando un número que se utilizará, como, a lo largo de un programa muy largo, es mejor para definir que al inicio de modo que si alguna vez cambia, se obtiene para cambiar un punto en lugar de 100. ¿Sí? ESTUDIANTE: entre hacer eso y sólo declarando [inaudible] más en la parte superior. ALLISON Buchholtz-AU: Por lo tanto, tiene que ver con efficient-- que es un poco fuera del alcance de lo que podemos cubrir en esta sección. Tiene que ver más con la eficiencia y las cosas en realidad trabajar en el proceso de compilación. Si usted quiere realmente saber al respecto, estoy encantado de enviar un correo electrónico con los recursos al respecto. Hash definir tiende a ser preferido por las cosas. Y a medida que el código sea más, usted tipo de aprender los matices de cuando se debe utilizar un mundial contra el hash definen. Pero por el momento, usted realmente no tiene que preocuparse por ello es que la respuesta corta. Todo el mundo bien con eso? Y también, si quieres utilizar un hash definir, que es muy importante tener en cuenta que el nombre debe estar en mayúsculas. No sólo estamos haciendo AULA sea dramático. En realidad, debería ser en todas las tapas. Enfriar. Cualquier otra cosa hay? Estamos bien? Precioso. Bienvenido. OK, así que quiero que ustedes para echar un vistazo en esto y ver si usted puede encontrar el error. Te voy a dar una pista. Es un lugar en que for-loop. Mmhmm? ESTUDIANTE: En caso de ser inferior a igual a 2. ALLISON: Por lo tanto, podría ser menor o igual a 2, o podría ser inferior a 3. ¿Y cuál es el razonamiento para eso? ESTUDIANTE: El [inaudible], 0, 1, 2. ALLISON: Exactamente. Así, en una matriz de tamaño n, nos sólo tienen índices de n menos 1. Enfriar. Y entonces podemos conseguir realmente loco y obtener matrices multidimensionales. Uno de los problemas cuando me tomé en mi matrices multidimensionales requeridas años, y creo que uno de ellos podría requerir que este año, por lo que se sienta cómodo. Envuelva su cabeza alrededor de ella ahora. Se volverá a rondar usted, pero de una manera fresca. Así que usted puede realmente pensar de matrices multidimensionales como matrices de matrices. Así que usted puede tipo de pensar en este top fila como el primer trozo de la memoria. Y éste es el segunda parte de la memoria, y la última fila es la tercera parte de la memoria. Y dentro de eso, hay una gran variedad. Pero, por supuesto, es más fácil para representar de esta manera. Así que inicializar de la misma manera. Este es un personaje tablero de tres en tres. Así que hay tres filas y tres columnas. Estamos representando de esta manera. Y usted acceder a ella el misma manera, columna por fila. Y así 1,1 como vemos aquí. Asignamos un cero, cero hasta allí. 2,0 y 0,2. Así que usted acaba de acceder a ellos-- si nadie nunca ha hecho álgebra lineal, De la misma manera se accede a un elemento en un matrice, es la misma idea aquí. Así que usted puede relacionarse de nuevo a matemáticas. Usted no tiene que preocuparse demasiado mucho de esto ahora. Es bueno tener la exposición, saber que puedes hacerlo. Usted puede crear un poco de loco number-- puedas crear matrices locos se todo lo que voy a decir. [Inaudible] Se pone un poco loco, pero es realmente genial. Impresionante. Y entonces, por lo que tenemos un ejemplo aquí. Se calcula una longitud de la cadena. Entonces, ¿cómo muchas personas sabían que las cadenas que usted está utilizando son sólo conjuntos de caracteres? Bueno, sí. Así que chicos puede pensar que usted no tiene matrices usadas antes, pero en cualquier momento utiliza getString en el Biblioteca CSView, eres en realidad sólo pidiendo una gran variedad de personajes. Y estamos cuidando de todo que en el back-end para usted. Pero usted ha estado usando matrices desde que comenzaron. Usted simplemente no lo sabía todavía. Y cada vez que tenga una matriz de caracteres o una matriz que está almacenando una cadena, el último que es siempre lo que es llamado un terminador nulo, que es esto de aquí. Y es que al final de cada palabra que usted está almacenando. Así que si queremos averiguar el longitud de una cadena, podemos decir, bueno, ya sabes, la contenido de ese bloque no es igual a nuestra terminador nulo. Eso significa que hay una cierta carácter no que en realidad se preocupan por eso es parte de la palabra. Usted aumenta su longitud. Y luego, cuando en realidad llegar a el final de la palabra, que va a terminar y que va a volver a nuestra longitud para nosotros. Mmhmm? ESTUDIANTE: ¿El espacio contará como el terminador nulo? ALLISON: Así que un espacio es no un terminador nulo. Así que si usted tiene un espacio multiple-- es en realidad un valor ASCII específica. ESTUDIANTE: ¿Cuál es la exclamación de nuevo igual? ALLISON: Así que, esto es lo que usted se refiere. Si alguna vez me oyes en horas de oficina, Yo siempre lo llamo, al igual que, la explosión es igual. Así que la explosión no es. Así que esto no es igual. Así que si usted está tratando de ver si algo es falso, usted sabe que siempre lo haces, explosión lo la variable es, y si es falso, se evalúa como verdadera y que puede hacer cosas interesantes con eso. Más sobre esto más adelante. Enfriar. Todo lo bueno que hay? Impresionante. Así que ahora es el momento de sus chicos a trabajar, ya que he estado hablando. Así que quiero que usted acaba de crear una matriz con los números enteros uno, dos, y tres, y luego confiar su impresión a cabo. Usted no tiene que hacer, como, principal, bla, bla, bla, lo que sea. Sólo quiero que inicializar la matriz y luego crear un bucle for para imprimirlos fuera-- o un bucle while, depende de usted. Yo sólo te voy a dar un par minutos para trabajar en eso. Voy a descansar mi voz. Si usted tiene alguna pregunta, estoy feliz a entrar en razón y hablar con ustedes. Siéntase libre de hablar unos con otros. Obtenga más dulces. De hecho, sólo voy a caminar con el caramelo. ¿Cómo es eso? ¿Quieres alguna? Cualquier otra persona en esta sala quiere dulces? También puede tomar más de una, chicos. Tome un puñado si lo desea. Mayo también. Todo el mundo bien? Okay. Además, voy a crear un anónimo Google Formulario, y ustedes sólo pueden presentar retroalimentación después de cada sección si hay algo que quieras mejorar o algo que quiere hacer. Si yo soy un poco demasiado llena de vida para usted, puedo bajar el tono. Voy a crear eso y envío que a todos ustedes después. Bien. Así que vamos a empezar poco a poco. ¿Cómo nos inicializar nuestra gama? ¿Cuál es el tipo de nuestra gama? Un int, ¿verdad? OK, así que ¿qué quieres para llamar a su matriz? Array int, fresco. Muy bien, así que tenemos int int array iguales, y ¿qué tenemos después de eso? ESTUDIANTE: [inaudible] corchetes. ALLISON: Paréntesis. Y luego dentro de las llaves? Una coma dos coma tres. Enfriar. Así que eso está bien. Así que ahora tenemos nuestro bucle for. Así que en la primera parte de nuestra de bucle, ¿qué tenemos? ESTUDIANTE: i es igual a 0? ALLISON: Así int i es igual a 0, y entonces ¿cuál es nuestra condición? ¿Qué es i iba a ser inferior? Menos de tres, y cómo nosotros actualizamos i? i plus plus, actualizarlo por uno. Y luego vamos a tener algunos printf del número entero, y lo que es la última parte que es en realidad va a decir lo que deberíamos estar imprimiendo? Sería el nombre de la matriz, que es de tipo int matriz, ¿no? Y lo que es en los soportes de int matriz? yo. [? Así que?] Llamé a mi ejemplo, pero hay que ir. No está tan mal. Todo el mundo bien? Enfriar. Así que hemos terminado con las matrices. Enhorabuena. Se las arregló para iterar a través de todo el-- sí? ESTUDIANTE: [inaudible] ALLISON: Sí. ESTUDIANTE: Tengo una pregunta. ¿Se supone que sangrar los frenos? ALLISON: Así que los tirantes deben estar alineados con el bucle for, y entonces todo dentro de las llaves deben tener una sangría. ESTUDIANTE: OK, si el bucle for sangrar? ALLISON: El bucle for no lo hace necesitar ser sangría en este punto. Si usted estuviera en principal, si en realidad tenía una función principal aquí, sería una sangría de principal. Pero en este caso, está bien. Sí, pregunta. ESTUDIANTE: ¿Usted necesita tener los paréntesis después de ejemplo? ALLISON: Sí, si usted es inicialización de esa manera. Así que recuerda, esta es la segunda modo de inicialización de una matriz en donde tenemos las llaves y luego nuestra real datos separados por comas dentro. ESTUDIANTE: Pensé que había soportes para ese ejemplo. ALLISON: No, son los apoyos. Son aparatos de ortodoncia. Si usted está inicializarla que la segunda manera, es frenillos. Si tuviéramos que decir, int ejemplo-- si solo queríamos una matriz en blanco para enteros, sería int ejemplo entre paréntesis tres. Los paréntesis representan el tamaño. Cuando usted tiene tirantes, que es los datos reales que está poniendo en él de esta manera. Podemos retroceder muy rápido. Así que en éste, esto es sólo nuestra matriz inicial, la inicialización. Y aquí, somos individualmente la asignación de puntos a ellos, por lo que este representa el índice de nuestra matriz, que es por eso que tenemos entre paréntesis. Pero aquí, si te fijas, hemos dejado nuestros soportes sin un tamaño, y inicializamos con el datos reales todos-en-uno con los apoyos. ESTUDIANTE: Entonces, ¿por qué no tenemos paréntesis en este ejemplo? ALLISON: Entonces, en qué parte? ESTUDIANTE: ¿No sería que digamos, int ejemplo soportes es igual a los apoyos [inaudible] corchetes, por ejemplo. ALLISON: Oh, lo siento. Tienes razón. Tenemos soportes allí. Lo siento chicos, mi mal. Sí, usted debe tener entre paréntesis después de ejemplo. Tienes toda la razón. ESTUDIANTE: [inaudible] no hacerlo. ALLISON: No, usted tiene que tener soportes, porque de lo contrario es no va a declarar una matriz. ESTUDIANTE: [inaudible]. Lo siento. ALLISON: Lo sentimos, usted necesita entre paréntesis después de ejemplo. Typos. Buena captura, estrella de oro para ti. Además, si usted está haciendo una pregunta, si ustedes acaba de decirme sus nombres, Me encantaría eso. Me encantaría ser capaz de conocer todos sus nombres. Yo no voy al frío te llamo, yo en realidad no sólo quieren saber sus nombres. Así que por favor, en realidad me dicen sus nombres. Lea: Lea. ALLISON: Leah. OK, así que functions-- sé en breve se habló de esto durante la conferencia. Así que las funciones son una especie de justo como estas pequeñas cosas tamaño de un bocado donde se pasa en las entradas, algo sucede mágico, y se obtiene salidas. Enfriar. Así que en realidad se utilizó un muchos de ellos ya. Obtén int, conseguir cadena, impresión f. Estas son todas las funciones donde se acaba de llamar a ellos, hay un montón de cosas mágicas pasando en el fondo que no ve necesariamente, y se obtiene lo que quiere. O por lo menos usted consigue lo que usted espera que deseas. Y básicamente el punto de funciones, y uno de los principales temas de la CS, es romper el código en trozos manejables. Cuando usted comience a escribir estos programas realmente largos, o en los arañazos cuando tuviste esta gran idea para un juego, tiene que ser capaz de romperla hasta, como, OK, ¿cómo empiezo? ¿Cuáles son las pequeñas piezas que necesito? Oh, tengo que pedir a la usuario para algo. Ahora tengo que imprimir algo. Oh, tengo que calcular este valor. Y aprender a romper su código y los grandes problemas que tener en estas pequeñas piezas y la creación de funciones es en realidad una de las grandes piedras angulares de la CS. Así que usted puede pensar en una función tan como un cuadro negro, un cuadro negro mágico, que ponga las cosas en y se obtiene una salida. Y el resto del programa no tiene por qué saber necesariamente lo que está pasando dentro de ese cuadro negro. Todo lo que le importa es lo que que entra y lo que sale. Enfriar. ¿Entonces por qué funciones? Organization-- como dije, cuando estás se trata de bases de código muy grandes, cómo organizar su código será mucho más fácil si utiliza funciones. Porque podrás a ser, como, OK, este es lo que hace esta función y esto es lo que hace otro. Y usted puede ver fácilmente cómo encajan juntos. Así que dividirlo en todo estas subpartes manejables. Así simplification-- Estoy seguro de que los chicos todos vieron esto, como ya he dicho, con arañazos. Usted tiene esta gran idea, y usted es como, ¿cómo lo hace todo este trabajo? Pero si te acercas a ella poco a poco, te dicen, OK, ¿cómo puedo hacer un sprite de flotar a través de la pantalla? Eso es un poco más fácil. Así que un buen uso de la función hace su código mucho más fácil de leer. Esto hace que sea más fácil de depurar que como te metes en sus boletines de problemas posteriores, usted va a realmente quiero ser capaz de hacer. Y son también más fáciles para diseñar y poner en práctica. Puede codificar hasta un pequeño funcionar con relativa rapidez y asegúrese de que funciona frente tratando para crear este programa a largo entero y después de pasar por tipo y ver lo que funciona y lo que no lo es. Y luego reutilización. Así que sólo necesitan funciones a escribirse una vez, y entonces usted puede utilizarlos tantas veces como sea posible. Por lo que es, como, respetuoso del medio ambiente en un sentido. Si usted tenía cosas como impresión f, donde tenía que escribir la magia que va detrás de imprimir f cada vez que quería imprimir algo, sería bastante enfermo y cansado de él por el final. Una de las cosas que usted va a aprender en clases posteriores CS, o uno de los mejores consejos que recibo Es decir, si va a copiar y pegar código, probablemente debería ser una función. Si usted tiene la misma exacta A lo largo de las líneas de su código, si les eliminado casi, su código haría probablemente ser, como, cinco veces más cortos y ser mucho más fácil de leer. Y en vez de tratar de solucionar problemas todos estos diferentes lugares donde las cosas que podría salir mal, tiene una función que se llega a solucionar problemas. Y te prometo, mucho de esto podría parecer un poco abstracto ahora, pero como te metes en adelante y problema más adelante establece, que va a hacer mucho más sentido y realmente ser llevado a casa. ¿Hay alguna pregunta acerca de las funciones hasta ahora? ¿Por qué estamos usarlos? Sé que no hemos conseguido en el quid de la cuestión todavía. Así que la definición de un function-- igual matrices, que necesitan algún tipo de-- este es sólo la salida general. Así que esta es una función que es sólo va a cubicar alguna entrada. Y en la siguiente página, en realidad, tenemos todas estas pequeñas cosas increíbles aquí. Por lo tanto, todo el mundo puede leer que, por curiosidad? Sé que el morado y negro podría ser un poco difícil. Pero las cosas grandes a sabes-- lo que la primera uno aquí es nuestro tipo de retorno. Así que esto está hablando de la salida de esta función cuando, en este caso, ponemos en algún número, de lo que somos conseguir es que el número al cubo. Por lo tanto, debe ser un int en este caso. Tal vez sería una doble o algo más tarde, pero en este caso, que es un int. Con c, siempre se necesita un tipo de retorno. Va a ser un int. Va a ser un flotador. Va a ser un doble. Pero usted tiene que especificar qué esta función va a devolver. De lo contrario, gritar a usted, y no va a compilar. Estarás triste, y yo estaré triste. Y simplemente no es bueno. Okay. Y luego tenemos nuestro nombre de la función. Y como se puede ver aquí, con c hay este paradigma muy consistente. ¿Cuál es tu tipo, ¿cuál es el nombre, y luego alguna otra cosa al final. Así que tenemos nuestro tipo de retorno, nuestro nombre de la función, y luego tenemos nuestra cabecera con nuestra lista de parámetros. Así que la lista de parámetros es, lo que es esta función va a tomar en? Una lista de parámetros es simplemente un sinónimo de, ¿cuáles son nuestras entradas? Y de la misma manera que nosotros que definir nuestra función y darle una vuelta escribir, cada una de nuestras entradas necesita tener un tipo asociado con él. Así que sabemos lo que nuestra función en realidad puede trabajar. Así que en este caso, tenemos una cierta entrada int. Así que de nuevo, va a ser el tipo y lo que estás llamando. Y luego, como usted ve aquí, tenemos nuestro cuerpo. Así que tenemos un poco de salida int, que es sólo nuestra multiplicado por sí mismo de entrada sí veces, que acaba de cubos él. Y entonces volvemos esa salida. Así que como ves aquí, tenemos una int veces un int veces un int, por lo que devuelve un int, que ha sido declarado allí. Así que todo es coherente. Todo es feliz. Su función se ejecutará. Y esto es justo lo general. Así que siempre tienen tipo de retorno, nombre, y su lista de parámetros. Cada cosa en su lista de parámetros, o de entrada, necesita tener un tipo asociado con él. Y entonces usted tiene su cuerpo aquí con lo que sea que quieres hacer con tu entrada. Y entonces, evidentemente, quiere devolver algo. A veces, las funciones serán sólo volver. Ellos en realidad no vuelven algo para que usted utilice. Pero usted tiene que devolver de alguna manera. Y cuando usted está haciendo sus propias funciones, podemos entrar en eso un poco más profundo. Personalmente, si quieres, hay una gran cantidad de las diferentes cosas que usted podría hacer allí. Todo el mundo bien? Cualquier cosa en esta lista que me quieres para repasar, que usted no entiende? Todo el mundo es bueno no? Enfriar. Impresionante. OK, así que nos estamos poniendo todo esto juntos ahora. Así que tenemos una cierta entrada int cubo, por lo que este es un programa completo aquí. Hasta ahora, no tengo amable de su estado dando fragmentos de chicos que podrían ir dentro de un programa. Nosotros sólo hemos estado buscando en funciones. Pero aquí es todo un programa. Entonces, ¿cuántos de ustedes recuerdan la prototipo Palabras conferencia? Enfriar. Tenemos uno. Cuál es tu nombre? STEPH: Steph. ALLISON: Steph? Aceptar, impresionante. Así que, ¿te acuerdas de lo que es un prototipo? ESTUDIANTE: Usted dice que [inaudible] antes de que realmente se ocupa de ella. ALLISON: ¿Te acuerdas de por qué? ESTUDIANTE: No. ALLISON: OK. Estrella de oro. Así que sí, un prototipo que tenemos de antemano, porque de lo contrario, nuestro compilador va a gritar a nosotros. Se va a decir, OK, ¿cuál es la función del cubo? Al igual, que, literalmente, tiene me dijo nada acerca de esto. Es como cuando usted entrar en un salón de clases, y alguien como, hay un concurso de hoy. Y usted es como, usted Nunca me habló de esto. No estoy contento con nosotros. El prototipo es básicamente como su programa diciendo, mira. Heads up. Va a ser un concurso en el día de hoy. No se asuste cuando llegue a ella. Vas a estar bien. Así que todo el prototipo no es decirle principal, voy a utilizar esta función. Te prometo que voy a definir más adelante. No asuste a mí. Sólo compilar y hacer lo que yo te diga. Así que tenemos el prototipo no sólo para hacer nuestro compilador feliz. Y es básicamente una promesa de que ha definido esta función más adelante y que usted no está solo llamando esta cosa al azar que no sabes lo que eres va a estar haciendo. Así que en este caso, tenemos principal aquí. Inicializamos algún entero x. Eso es dos. Vamos a imprimir lo que x es. Vamos a cubicar x. Como ves, tenemos nuestra declaración de la función aquí abajo que nos hablado anteriormente. Va Cube x, y luego, si nos recuerde, la función de cubo en realidad devuelve un entero a nosotros, que se almacena en x de nuevo para que podamos imprimir a ocho, o cubo de x en este momento. ¿Eso tiene sentido para todo el mundo? Estamos bien? Bien. Impresionante. Bien. ¿Cuántos de ustedes Recuerda esto por lo que este es básicamente sólo su pila y su montón, sólo una visualización de cómo se almacena la memoria aquí. Así que sólo queremos hacer Asegúrese de entender cómo estos están representados en la memoria. Si usted toma clases como CS61 y esas cosas más adelante, se llega a aprender esta mucho más en profundidad, y es realmente genial. Lo recomiendo encarecidamente. Pero por ahora, voy a dar que la visión general por lo que no tiene que conocer el quid de la cuestión. Así que la parte superior sólo un segmento de texto que contiene los ceros reales y unos, el binario para eso. Y esto se utiliza para almacenar variables globales, si tienen alguna. A medida que avanza hacia abajo, nos tienen, como usted ve aquí, datos inicializados, sin inicializar datos, y luego montón. Así que realmente no hablamos sobre el montón en este momento. Vamos a llegar a ella más tarde. Por ahora, sólo voy a agitar mis manos y ser como, usted no necesita saber acerca de esto ahora. Pero vamos a hablar un poco poco acerca de la pila. Así que la pila es where-- tenemos acercar. Esto es en realidad cómo el programa que acabamos de ver que ocurre en la memoria. Así que lo que sucede es, cada tiempo que llamamos a una función, tenemos lo que se llama una pila marco, que es uno de éstos. Así de parámetros principales. Así que esas son las cosas que pasamos en principal. Así que están aquí en la parte inferior, porque esa es la primera cosa que llamamos. Y luego tenemos a los principales de locales, y cuando decimos que, nos referimos a las variables locales que se almacenan dentro de principal. Así que los lugareños aquí sería, al igual que, x es igual a dos en este caso. Porque eso es localizada a principal. ¿Todo el mundo recuerda el alcance, va más que en la conferencia? Okay. Así que, las variables que se inicializan dentro de principal. Así que es por eso que tenemos principal [? voces. ?] Y luego dentro de principal, que llamamos cubo. Derecha? Así que tenemos otro marco con los parámetros de cubo. Así que en este caso, el cubo de parámetros son ahora la x que pasamos en, los dos que pasamos en. Y entonces la gente del cubo, que es donde la cubicación real sucede. Y luego vuelve. Así que lo que pasa es como cubo hace realidad lo que se supone que debe hacer, devuelve. Cuando vuelve, este marco se va, y su vuelto hacia abajo para principal. Y luego dentro de principal, en realidad puede imprimirlo. Así que cuando usted está volviendo algo, cuando su función devuelve, es como la transmisión de esos valores para el marco por debajo de ella y después de salir. Y las cosas se tienen que ejecutar en orden. Y cuando llegas a los programas más grandes, podemos hacer más frío y más complicado diagramas. Pero por ahora, esto es sólo una visión general por lo que tiene una especie de comprensión de lo que que sucede cuando usted está llamando a una función y la forma en que realmente se ve en la memoria. Fresco? Todo el mundo bien? Impresionante. Así que este es uno que es tratando de cambiar las cosas. Como vemos aquí, tenemos nuestro prototipo de función para que nuestro compilador no gritarle a nosotros. Tenemos un poco de principal, y nos querer cambiar xe y. No lo han hecho esta demo en conferencia todavía, ¿verdad? Ellos no tienen? Okay. Así que vamos a ir en este muy brevemente. Usted obtendrá en este ejemplo más en profundidad, creo que, esta semana. Y entonces la próxima semana podamos realmente sumergirse en por qué esto no funciona. Así que tenemos este vacío canje función aquí--. Así vacío sólo significa que no se devuelve nada. Y tenemos un intercambio int y int b. Y tenemos algunos temporal variable que es a. una se asigna a b, y luego b se asigna a la temperatura Así que eso es a y b valores se conmutan ahora. Pero, giro de la trama, esto no funciona. Y parte de ella tiene en realidad que ver con el hecho de que una y b aquí, los que van pasando en aquí, en realidad son copias de x e y. Así que cuando la función devuelve en realidad, cambia las copias pero no la actual x e y del. Así que una manera de pensar en ello es que-- pretenden estos son de intercambio. ¿De acuerdo? Así pues, en principal, tenemos x e y inicializan. Pero cuando en realidad nos subimos a estos marcos con intercambio, estamos pasando los valores más a la misma, y ​​que están inicializados. Y sólo nunca viven aquí. Así que a y b viven aquí. Y consiguen cambiados. Pero cuando volvamos, no lo hacemos hacer cualquier cosa con a y b. un yb licencia con nuestra función. Y lo que x e y no cambian. Obtendrá más en la forma de arreglar eso y la forma en que realmente ocupamos de eso más tarde. Pero es sólo una cosa para mantener un poco en la mente. Úsalo para el futuro. No se preocupe si eso no tenía todo el sentido en el mundo. Son copias es la cosa más grande. Si usted va a tomar nada lejos de eso, usted pasó en las copias. Así que los originales permanecen igual. Todo el mundo bien? Enfriar. Así que los argumentos de línea de comandos. Estoy seguro de que en el principio ustedes todo tenía esas grandes, como, huecos principales int. Y usted es como, bien fresco. Realmente no me importa. Esto es justo lo que tengo que escribir. Pero en sus nuevos programas, especialmente en este conjunto de procesadores, y ¿por qué hay tiza en el suelo? Con su próximo conjunto de procesadores, eres va a estar viendo esto. Int principal, int arg c, cadena de arco v, corchetes. Así, a partir de lo que acabamos de aprendido hoy, lo que qué pensamos que el segundo parámetro o que el segundo elemento es aquí? Es una matriz. ¿Qué tipo de matriz? Matriz de cadenas, sí. Enfriar. Así que esa es la forma en que vas a declarar estos ahora. ¿Alguien recuerda lo que estos significan? ¿No? Hmm? ESTUDIANTE: arg c. ALLISON: Así arg c mantiene un contador. Es un int. Es un número, ¿no? Entonces, ¿qué cree usted que ese número es de? Sí. Así arg c es el número de cadenas que constituyen la línea de comandos. Así que si tuviéramos que hacer-- realidad, hay ejemplos después de esto, así que no voy a salir adelante de mí mismo. Es un número de cadenas que simplemente tomar una línea de comandos. Así que cuando lo hace, como, dot recortar Mario, esa es una cadena que hace que para arriba. En esta pieza, que realmente va a ser la alimentación de las cosas en la línea de comandos, como estoy seguro de que los chicos que han leído la sierra de especificaciones. Así que en esos casos, tal vez usted tener dos o tres argumentos. Va a ser una cosa útil para su uso. Y entonces arg v, como hemos dicho, es sólo una matriz de cadenas. Así que almacena realmente lo que ha ingresado en la línea de comandos. Así que tenemos estos. Usted tiene un poco de barra de puntos copiar archivosalida INFILE. Así pues, si arg c es el número de cadenas que estamos pasando en el comando línea, ¿cuál es nuestra arg c en este caso? Tres. Exactamente. Entonces, ¿qué es arg v de cero? Entonces, ¿qué es lo primero que hemos almacenado? Dot slash copia, exactamente. Y a continuación, el segundo sería INFILE. La tercera sería archivosalida. Así que ¿qué pasa con arg v tres? Sería nulo, porque eso es Al final de nuestra serie, ¿no? Enfriar. Y entonces ¿qué pasa con la sexta? Es una especie de una pregunta con trampa. Ish. ¿Sabemos lo que es? Es indefinido. No tenemos idea de lo que podría ser. Es todo lo justo después de la matriz en la memoria, y no tenemos ni idea de lo que es. Y es peligroso tocar los cosas, porque para todo lo que sabes, que es una parte de la memoria que usted no debe ser el acceso o nulo. Y puede hacer cosas locas. Se llama exceso de indexación el obligado a la matriz. No vaya fuera de los límites de su matriz, o las cosas malas pueden suceder. Usted se vuelve y, al igual que, las leyes de la física han sido destruidos o algo así. Enfriar. ¿Eso tiene sentido para todo el mundo? No está mal. Así que ahora, todo el mundo es parte favorita, revisar conjunto de procesadores. Hurra! Okay. Así que para aquellos de ustedes que no han leído la especificación de conjunto de procesadores, que está haciendo algo realmente cosas interesantes con la criptografía. Vas a crear un Ceasar Cifrado y una cifra de Vigenère. Definitivamente, usted debe leer la spec para ver cómo funcionan. Y si usted está teniendo ningún problema acerca de lo que realmente debería estar haciendo, por favor, venir a hablar conmigo, envíeme un correo electrónico o texto mí. Yo estoy cerca. Así que hay tres principales cosas aquí que nos querer hablar sobre-- sólo tipo de una extensión de la conferencia. Las cosas que usted puede no saber aproximadamente, consejos útiles y herramientas. Así que vamos a hacer un revisión rápida de ASCII, porque eso va a ser súper importante para el cifrado de Vigenère. Vamos a la conversión de entradas de línea de comandos, lo que va a ser muy útil para el cifrado de César. Y entonces modulo. Enfriar. Así, los mapas de caracteres ASCII a números. Este es un gran gráfico. Usted debe tener presente marcada en algún lugar. Usted va a querer por su primera mitad de período. Estoy bastante seguro de que todo el mundo tiene esta tabla en su hoja de mitad de período. Así que aprenderlo. Quiéralo. Mantenga a la mano. Será útil. Y todo lo que es es una codificación que los mapas alfabéticos, numéricos, y otros personajes a números para nuestro ordenador. Porque, por supuesto, en el final, todo lo que almacenamos se va a conseguir convertida a ceros y unos, por lo que necesitamos alguna manera de representar la texto y los caracteres que estamos todos acostumbrados a ver como una especie de número. Así que como vemos aquí, tenemos A mayúscula, que está justo allí. Es 65. Y minúscula A es 97. Así que usted puede imaginar fuera-- como he dicho antes, si tuvieras gama de múltiples cuerdas, lo que cada uno de ellos tener un terminador nulo. Sería un espacio. El espacio tiene su propia especial-- Me olvido de donde es aquí. Ah. 32 es el espacio. Así que todo lo que se asigna a la misma. Así que tenemos matemáticas ASCII. Pro tip-- en Vigenére de, usted puede tener la tentación para convertir los números a los números enteros, pero en realidad es una mejor práctica para ser capaz de utilizar el personajes como este cuando en realidad estás manipularlos. Así que si usted desea utilizar números, se puede. Pero una mejor manera, o de una manera que tendemos a como ustedes para hacerlo, es de esta manera donde estás en realidad restando caracteres. Así que te quiero chicos a tipo de figura a cabo. ¿Por qué no lo intentas cada otro? Lo mismo ocurre con la primera, la tercero, y el quinto. Porque yo quiero asegurarme de que hablamos sobre todo lo que necesitamos hablar. Yo sólo voy a decir, uno de los cosas importantes a-- Oh, espera, ustedes no han visto esto. Aceptar lo hacen los tres primeros. Vamos a hacer eso. Porque tenemos que hablar de módulo. Lo sé. Matemáticas es difícil. Puede utilizar una calculadora. Está bien. O tirar de una tabla ASCII, porque usted está probablemente va a querer eso. Enfriar. Así que voy a caminar rápidamente ustedes a través de estas. Así que la gente ha tablas ASCII levantado? ¿Cuál es nuestra numérico número de minúsculas A? ESTUDIANTE: Siete. ALLISON: Así minúsculas A es 97 y A mayúscula es 65. Así que 97 menos 65? AUDIENCIA: 32? ALLISON: 62, sí. Así que en este caso, lo que tendría que imprimir? Esa primera? Si tenemos por ciento d, lo que indicaría que? ESTUDIANTE: Varios. ALLISON: Estamos impresión a cabo un número real. Así que en realidad estamos yendo para imprimir 32 aquí. Y si esto fuera por ciento c, 32 nos daría un espacio. Así la comprensión de que caracteres pueden imprimirse tanto como números y como los caracteres reales que es realmente importante, y el pago de atención a los tipos reales que estamos haciendo aquí. Enfriar. Así, por cada uno de estos otros, ¿qué vamos a imprimir? ESTUDIANTE: Un personaje. ALLISON: Un personaje. Enfriar. Así que si ustedes quieren saber, que pueden trabajar estos por su cuenta. Si usted está teniendo problemas, envíeme un correo electrónico. Pero el segundo lo hará imprimir una minúscula b. El tercero se imprimirá un mayúsculas B. El cuarto se imprimirá a cabo una mayúscula C, y el última será una minúscula A. Y el último uno-- realidad estamos yendo para entrar en lo que ciento loca signo significa incluso en un par de diapositivas. Así que trate de los de la propia. Si tiene problemas, por favor, venir a hablar conmigo. Si usted es típicamente en Adams sala D, probablemente me podrán encontrar. Así, atoi. ¿Cuántos de ustedes han visto este función o oído hablar de él en absoluto? Cualquier persona? Enfriar. Así que lo que realmente se destaca para es ASCII a un entero. Así que lo que podemos hacer es, con César, para los que leyeron la especificación, que vas a hacer barra de puntos César después de escribir su programa, y luego te vas a entrada de un número que usted quiere codificar el mensaje secreto con. Pero, si recordamos, todo nuestro entradas se almacenan como cadenas. Derecha? Tenemos una gama v arg eso es todo tipo string. Así que si usted acaba de tratar de tirar de que uno, que sería pensar que lo que uno o varios que se utiliza es en realidad un personaje. Así que vas a obtener algunos resultados locos. Así que si usted realmente quiere convertir esto en un número entero que puede utilizar para manipular su palabra o su mensaje, usted querrá usar atoi. atoi sólo convierte su cadena a un int. Así que si tenemos una cadena de 12, si llamamos atoi el 12, o lo que sea que de entrada es, que en realidad volver a que el número entero. No es el carácter o la cadena 12. Lo cual, cuando se inicia para añadir que a los números, será muy diferente, porque la cadena 12 es un número loco en ASCII, pero el número entero 12 en realidad es 12, que es lo que quieres. Así que usted quiere asegurarse de usar atoi. Usted va a querer este en César, porque necesitará el int suministrada por el usuario en la línea de comandos. Pero cuando se la pusieron en el comando línea, se almacena como una cadena para empezar. ¿Eso tiene sentido? No necesariamente necesitará esta para Vigenére. Con Vigenére, como ya he dicho antes, usted debe tratar de usar Matemáticas ASCII que se parece más a esto, de dónde eres en realidad utilizando los caracteres que estamos dados a usted. Enfriar. Todo el mundo bien allí? Impresionante. Así módulo. ¿Y qué si te dan este enorme número de César? Usted tiene la idea de que si usted está en Z y ya está dado un número de dos, eso significa que need-- Z se convierte en el segundo carta de sí mismo, ¿no? Por lo que necesita para envolver alrededor de alguna manera, y módulo es la manera de hacerlo. Así que todo lo que hace es que le da el resto de la división de la primer número por el segundo. Y tenemos algunos ejemplos a hacer que un poco más concreto. Pero, básicamente, utiliza módulo cuando querer hacer algo envoltura alrededor. Así que si usted sólo desea que el números del uno al ocho, se puede utilizar en cualquier otro módulo número, y lo hará siempre devolver un número de cero a ocho. Así que algunos examples-- si tenemos 55 módulo 10, que sólo te da el resto de 55 dividido por 10, lo que sería 5. Y luego tres módulo cinco, nadie supongo que lo que sería? Tres. Así que si usted tiene un número menor antes el módulo, no se puede ir en forma pareja. Es cero. Por lo tanto, sólo devuelve el número en sí. Así que ocho de módulo de ocho sería? ESTUDIANTE: Cero. ALLISON: Cero. Debido a que va en forma pareja. 16 modulo 15? AUDIENCIA: Uno. ALLISON: Cool. Y luego esta última es sólo para mostrar usted-- puede que se pregunte, OK, ¿cuál es el orden de las operaciones aquí? ¿Nos dividimos en primer lugar? ¿Nos MODULO primero? Así módulo tiene la misma precedencia como la división o multiplicación, y su asociativo izquierda. Así que es de la misma manera. Se podría hacer siempre entre paréntesis, a continuación, multiplicación, división, y módulo en orden de izquierda a derecha. Así reglas estándar. Sólo hay que poner en la misma categoría como la división y la multiplicación. Así que en este caso, lo haríamos tienen 1 más 2 nos da 3. Multiplicamos que por 2, por lo que tenemos 6. Nos módulo que por 2, lo que nos da? ESTUDIANTE: 0. ALLISON: 0. Y luego añadimos 2, por lo que conseguir 2 en este último caso. Así modulo-- estás definitivamente va a estar pensando en maneras de incorporar que cuando se está envolviendo todo el alfabeto. Si usted está en Z y tiene que mover remitir tres espacios para llegar a C, hay todo ese concepto de envolver alrededor. Así que voy a dejar en manos de ustedes para averiguar cómo es exactamente lo que vas a usarlo. Pero sin duda una herramienta útil para su conjunto de procesadores esta semana. Me gusta mucho esto. Este es uno de mis favoritos de conjuntos de procesadores. Luego, después de que lo hagas, si usted tiene amigos, usted puede, como, enviar uno al otro secreto mensajes y asegurarse de que funciona. Debido a que va a descifrar o lo que sea. Mucha diversión. Y ese es el final de la sección. Terminé temprano. Todavía tengo 15 minutos con ustedes, así que si hay algo que le gustaría ir aún más, yo estaría feliz de hacer eso. ¿Alguna otra pregunta sobre su conjunto de procesadores para aquellos de ustedes que han comenzado o leer la especificación. Todo lo que hemos hablado aproximadamente en la última hora y 15 minutos que habían me gusta al tipo de refrito, yo estaría encantado de. O podemos dejarlo todo, y usted puede todo salir y tomar más dulces con usted a medida que avanza. Pero si hay cualquier persistente pregunta, por favor hágamelo saber. También puede venir y hablar conmigo después. Te prometo que no muerdo. Algo más? Todo el mundo es bueno? Sentimiento de todo el mundo como que pueden manejar este conjunto de procesadores? Vas a ser chicos buenos. Las horas de oficina están ahí por una razón. Enfriar. Muy bien. Bueno, en ese caso, gracias todo gracias por venir. Espero verte la semana que viene. Habrá más dulces. Es posible que haya otras cosas interesantes. Y miro adelante a conseguir saber a todos ustedes este año.