Section 2

Section 2

>> [REPRODUCCIÓN DE MÚSICA] ALLISON Buchholtz-AU: Hola a todos. Bienvenido a su primerasección oficial CS50. Como se puede, ver, esta essección CS50-como, simplemente para levantar nuestra agenda para hoy. Así que, ¿quién soy yo, como estoy seguroya está todo preguntándose. Yo soy tu TF. Yo no soy más que un estudiante al azarque está suplantando su TF. >> Y yo voy a ir a través detipo de secciones tienen fluirán, expectativas que tenemos,recursos, así sucesivamente y así sucesivamente. Vamos a hablar acerca de las matrices, ASCIIfunciones, los argumentos de línea de comandos, y no es de aquí, peroTambién voy a estar ayudando usted piensa tipo de mediosu 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ñocomo un compañero de asesoramiento. Estoy muy bien versado enasesorá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é aCS 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 completamentecambiado 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 quehabía experiencia cero entrando, y que cambió por completo mi vida. Y ahora estoy trabajando enMicrosoft, y su encantadora TF. Y CS50 es probablemente unode las mejores experiencias que he tenido aquí enHarvard-- tanto tomar la clase y ser capaz de ayudarenseñar a los estudiantes como usted. >> Así que estoy muy emocionadoque ya está todo aquí. En caso de que usted entrótarde, hay caramelos, que usted debe sentirselibre 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 sonoficialmente en mi sección debería haber conseguido un correo electrónicode mí con mi número de teléfono, email address-- no dude en añadir mí enGchat, 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 hacecomo dos L's o dos de C. Dos de en el apellido H. De lo contrario, va a rebotar, yYo 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 adentro de 24 minutos, pero prometo volveren un plazo de 24 horas. Si me llamas media hora antessu 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 antessu conjunto de procesadores se debe sin nada escrito, Yo voy a ser como, bueno, tal vezes el momento de utilizar esa tarde los días. Así que voy a responder a todos los de susolicitudes de manera muy oportuna. Mi teléfono es generalmenteunido a mis manos. Me suelen responder muchomás rápido que 24 horas, pero sólo puedo garantíauna respuesta de 24 horas. >> Bien. Así que ¿por qué estamos aquí? También, si usted tiene preguntas encualquier 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 tiempopara que nosotros realmente sólo de buceo en, obtener algunas manos-en la experiencia, parair a través de los temas que hemos mencionado en la clase o en los materiales de estudio querecomendamos a ustedes en línea. Y que en realidad va a ir a través dealgunos de esos recursos en un poco. >> Por lo que algunas notas sobre el apoyo sección. CS50-- una de las cosas que hacees una de mis clases favoritas es la sensación de que nunca estás solo. Contamos con un personal de más de 100personas que están aquí para ayudarle. Tenemos horario de oficinaDe lunes a jueves. Así que hay tantas personas queamar 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 estoes como una quinta clase, además para el resto de nuestro trabajo. >> Y es mucho trabajo, perolo hacemos porque nos encanta, y realmente amamos a enseñary 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 estudiantesno hablar conmigo, así que si quieres, venir pasar el rato conmigo. Va a ser genial. >> Así sección es obviamenteuno de sus más grandes cosas. Vamos a ir a través de las cosasque has aprendido en la conferencia, hacer algunos breves ejemploscuando tenemos tiempo, y, en general tipo detener una idea acerca de las cosas usted debe estar pensandoacerca de establecer su problema. Shorts-- cuántas personas en realidadvisto 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 sertamaño bocado piezas para que usted acaba de ver durante tres o cuatro minutos y obtener unamejor comprensión de un concepto. Camine throughs-- cómomuchas 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 enpiezas pequeñas, del tamaño de un bocado. Y cuando usted tiene estos enormesespecificaciones de sus boletines de problemas, que va a ser realmente importanteser 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, quees study50.harvard.edu, creo. Usted puede simplemente Googleestudiar, y que va a venir para arriba. Esta es una de lasmejores recursos que tenemos. Es en PowerPoint con notasy la práctica de problemas para usted con soluciones que leen 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 esrealmente un lugar que me animo a ir. Fue construida el verano pasado poralgunos de mis muy buenos amigos. Y es increíble. De hecho, muchas de las diapositivasque voy a estar utilizando para la Sección vendrá de Study50. >> Así que muchos de los TF usarlo. Y, por último, como yomencionado, las horas de oficina. Si tienes problemas paracon la tarea, usted es teniendo problemas con unconcepto, 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 enMather porque sus conjuntos de procesadores son pagaderas el jueves. Y sabiendo quiereutilizar sus días finales todavía. >> Así que si usted está teniendoproblemas con los conceptos, hay un montón de TFS queestá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 aconferencia o lo vio en línea? ¿Cuántas personas fueron asúper sección de la semana pasada? Enfriar. Eso es en realidad un buen número. ¿Cuántos de ustedes han leído suspec 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ólova a ser muy útil para usted si vienes en después de haber leído suespecificación para su conjunto de procesadores. Porque cuando voy a través de una visión generalde las cosas que usted debe mirar hacia fuera para, que no va a hacertanto sentido si no saben lo que establece su problemase 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 sino 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 alectures-- eso es, obviamente, donde usted está recibiendo elinicio de su material aquí. Así que voy a tratar de dudaayudarle tanto como puedo, pero yo sólo puedo cumplir hasta ahora. Tienes que tipo denuestro encuentro a mitad de camino. >> Grading-- así, todos ustedesque 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 queque realmente debe prestar atención a son los comentarios. Los comentarios son a menudo más útilque la puntuación real que le damos. Y los comentarios son en realidaddonde paso gran parte de mi tiempo cuando estoy de calificaciones. Así que le agradeceríaque si usted los lee. Y son realmente cómo vapara aprender más sobre el diseño y el estilo y las cosas que son unpoco menos corta y seca. >> Así que en realidad prestar atencióna esos comentarios. Si usted tiene preguntas acerca de ellos,o preguntas acerca de su puntuación, por favor, venir a hablar conmigoya sea antes de la sección, Probablemente estaré pasando el ratoen el vestíbulo, o después. Si desea programaruno-a-uno reuniones sobre cómo usted puede ayudar a mejorar más tardeconjuntos de problemas, sólo hágamelo saber. >> Y entonces sólo un parde consejos para ustedes. Así que una de las cosas más grandesYo siempre insisto a mi sección cuando usted está aprendiendo cómo codificar esescribir las cosas en papel primero. Si usted tiene un plan de juego paradonde el código tiene que ir y lo que necesita parahacer y se descompone en pequeños trozos de pseudocódigocódigo que has escrito a cabo, vas a ser menospropensos a cometer errores de sintaxis o crear un bucle que sino tiene una persona. Si usted sabe dónde estásir global, eres menos probable que estos diminutoserrores 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ásir a las horas de oficina, si su código es todocambiado a un lado, es política de cursoque podemos decir, arreglarlo por lo que parece que dice Style50lo 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, yasegúrese de que sabe a dónde va. Y si no está seguro,sentarse con alguien y caminar a través de paso a pasolo 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í oEstoy 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 veacomo usted asistió súper sección, Yo sólo voy a muyir brevemente a través de los bucles, que no estaban en nuestra agenda original. Pero son realmente importantes. Y así me voy a clasede velocidad a través de los antes de entrar en nuestra sección real. Antes de hacerlo, haycualquier preguntas-- logísticamente, personalmente, es allíalgo más que quieras saber sobre mí o sobresección o clase en general? Todo bien? Aceptar, fresco. Precioso. >> Así loops-- ustedes todos debemosreconocer estas piezas a partir de cero. Así que los bucles son básicamente sóloun camino para que nosotros hagamos algo algunas veces, algunos repetidosacció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 muydisposición general aquí de un bucle for. Y esto es muy bueno para cuando se sabe cómomuchas veces algo tiene que ejecutar. Cuando hablamos de laotros bucles, podrás ver por qué eso es una distinción importante. Pero para los bucles son algo conjunto. Usted sabe que usted puedecalcular el número o usted sabe el número de veces quequiere esto repite al comienzo. >> Así que si usted ve aquí,tener sólo carácter general del marco de esqueletopara un bucle for aquí. Así que para la inicialización, aquí es dondese inicializan las variables. Con Mario, estoy seguro de que ustedes hicieronalgo así como int i es igual a 0. Ahí es donde que iba a suceder en azul. Usted tiene su condición, quees lo que se comprueba cada vez. Si esta condición es cierta, entoncesel resto del código se ejecuta. Luego se va a correr otra vez-- y preguntar. Y luego tenemos la actualización, dondeestá actualizando la variable. Así que, de nuevo, con como Mario, estoy seguroustedes hicieron algo como i plus plus. Así que cada vez que el buclecorrí, me actualicé así que cuando nos marchamos contraalguna condición, que estaba cambiando. >> Porque si sólotener una variable estática, si se ejecuta la primera vez, essólo va a ejecutar infinitamente. Así que hay que asegurarse de queactualizar la variable correctamente. Y también tenemos sólo unarepresentació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 menorde 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 esva a actualizar en el principio. Sólo tienes algunacondició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, intentaentrada de un número negativo. Derecha? Se suponía quevolver a impulsar su usuario. Así que se puede decir, bueno, si las entradas del usuarioalgo menor que cero, re-prompt ellos. Y estoy seguro de que podría tenersido algo que algunos de ustedes utilizado en el código. >> Así que es una cosa simple. Usted tiene tiempo, algunoscondicional 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 realmentealgo me important-- Creo que David habló deen lecture-- son las llaves. Cualquiera que sea de dentro de lallaves es lo que se ejecuta. Si se olvida de aquellosllaves, que sólo va para ser la línea directamentedespués de que se ejecuta el tiempo. >> Así que si usted tiene trescosas que se suponen a pasar cuando estecondición se evalúa como verdadera, y usted no tiene esos apoyos, sólolo primero que va a suceder. Así que ser muy consciente dedonde 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í, inicializamosalgunos contador fuera de ella. Una cosa que es diferente esno estamos inicializar nuestra variable dentro de nuestro bucle while. Se inicializa fuera de ella. Estamos simplemente poniendo elacondicionar para nuestro tiempo. Así que en este caso, es tiemporecuento 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 deesa primera parte del bucle while. En realidad va a suceder dentro delas abrazaderas, el cuerpo de su texto. >> Así que, mientras loops-- do-whileson ideales para la validación de usuario. Así que algunos de ustedes podrían tenerTambié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, lade entrada es menor que algún número. >> Así que para un caso explícito con Mario, quesería hacer printf, introduzca un entero, y algo más entero es igual getint. Y entonces va a realidadejecutar ese código primero. Usted realmente tienealgún tipo de número entero. Y entonces se podría decir que, mientras queque entero es menor que cero. Entonces, ¿qué se va a hacer es que esva a ejecutar al menos una vez. Se va a comprobar la condición. Si la condición escierto, que va a correr de nuevo. >> Lo mismo ocurre con-bucles while songrande para la validación del usuario, porque usted sabe el códigose va a ejecutar, al menos, una vez, mientras que conmientras que los bucles, no estás garantiza que esva a ejecutar una vez. Se va a verificar el estadoprimero y luego decidir a ejecutarlo, mientras que un do-while voluntadejecutar el código primero y después comprobar para ver sique necesita para repetirla. ¿Eso distincióndar sentido a todo el mundo? Okay. Enfriar. >> Así que en este caso, esto es una especiede lo que estaba hablando, esta re-indicaciones hasta queobtener un número positivo. Así que sabemos que printf"Introduzca un número positivo" y en realidad pidiendo quede entrada va a pasar al menos una vez. Si el usuario es el mal y mantieneintroducir un número negativo, que sabe cuántas veces se va a ejecutar. Pero este código está garantizadapara ejecutar al menos una vez. Y es por eso que es genialpara 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 adelantey hablar acerca de las matrices. Enfriar. Así arrays son básicamentesólo estructuras de datos que nos permiten almacenarcosas que son del mismo tipo. Así que si alguna vez tiene una matriz, que esya sea sólo va a tener ints o que sólo va a tener flotadoreso que sólo va a tener caracteres. Usted no va a tener un int conun 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ñotres con tres enteros en el mismo. Podrían flotadores, pero estamosva a decir que son enteros. Así que una cosa es darse cuenta de que las matricesson 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 comono ser capaz de extenderse en tamaño. Sin embargo grande que se propusosu matriz en el principio, ese es el tamaño que vapara quedarse, porque las matrices son bloques continuos de memoria. Y cuando ustedes chicos se ponenen un poco más de cómo la memoria es realmente distribuida endiscos 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, essólo una fila de espacios en el disco. Y no se puede garantizar que no hayva a ser espacio libre después de ella. Usted podría inicializar un arrayde tres y luego tal vez usted inicializar otra serie de cincomás tarde, y está justo después de eso. Así que si usted fuera a ir más allá de puntotres en que primero array, usted estaría escribiendosobre otra cosa. Así matrices son-- para ustedes, sólopensar en ellos como un tamaño fijo. >> Así que la creación de un array-- vasa tener que hacer esto un poco. Así que de la misma manera que tenemos unestructura general para nuestra para bucles, tenemos un buen general,estructura de nuestra matriz. Debido a que son de un tipo, todo elelementos de un conjunto son de un tipo, que necesita para inicializarlo que tipo es. >> Así que, como ves aquí, tenemos unapequeño y agradable tipo de datos soporte. Así que si estamos creando un intmatriz, que será int. Si estamos creando un charmatriz, que va a ser carbón. Si estamos creando una cadenamatriz, 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 vezes estudiantes o tal vez es el caramelo. Decida lo que decida el nombre de sumatriz, que es lo que va a ser. >> Y a continuación, entre paréntesis, se letener el tamaño que desee. Así que, ¿estamos almacenando 10 estudiantes oestamos 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 ustedesver aquí a la derecha. Y cuando nos inicializamos, todo se ajusta a cero. Así que es sólo pensabaasí como una pizarra en blanco. Tenemos todos estos espacios, tenemos todoestas cajas podríamos poner nuestros datos en, pero son sólo en blancoSiendo por el momento. >> Así que si queremos realmenteasignarles estos valores, lo hacemos como muestra justo debajo de aquí. Así que tienes lo que el nombre de sumatriz 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 notares que las matrices están indexados a cero. Así que si queremos que el primer espacio en la memoriade 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ónen el uso de matrices, se asigna correctamente. Así que si usted quiereiterar en una matriz, que tiene mucho más sentidohago 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ólootra manera de inicializar una matriz. Usted todavía tiene sutipo de datos y el nombre, pero en vez de realidadponer un tamaño de allí, usted puede hacer soportes vacíos. Y luego, con estos rizadotirantes en la parte inferior, usted puede simplemente entrada de los datos queque desea separados por comas. Y que lo hará de forma automáticadigo, está bien, yo veo que tiene trescosas en estos aparatos. Así que sé que tengo que asignar tresbloques de memoria y luego los almacenan. >> Así que la primera versión que podría utilizarsi usted está pidiendo su usuario introducir valores, para que puedaiterar 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 segurolo que esos valores van a ser. Enfriar. ¿Alguna otra pregunta? Muy bien. >> Así acceso elements-- por lo que unode las grandes cosas acerca de las matrices es que son al azaracceso, lo que significa que usted no tener que mirar a través de cada bloque. Si usted sabe que ustedquerer 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, cuandoestá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 quehacer para tirar realmente que fuera datos. Tenemos el nombre y nosotrostener el índice que queremos. >> Así pues, en este caso, el bucle foraquí 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 caminara través del código sólo rápidamente. i es igual a cero, i es menorde tres en este momento, ¿no? Así que comprueba hacia fuera. Y decimos, OK, impresión fLo que está en la temperatura i. i es cero aquí cuando por primera veziteración, por lo que vamos a este primer punto, y decimos, OK, 65 es elnúmero que queremos imprimir. Así que va a imprimir 65y 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 deLo que estaba diciendo cómo usted puede realizar un seguimiento depuntuación de alguien y por qué que usaría el primeromanera 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 estematriz de enteros que es de tamaño 30. Y entonces estamos iterandoa través y estamos pedir al usuario que introduzcacalificaciones de cada una de ellas y luego asignar aun 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 clase30 es una directiva de preprocesador, que sólo significa que tiene gets--que ver como el proceso de compilación. Usted puede pensar en élcomo una variable global. La forma en que lo hacemos estypically-- permite su código que cambiar más fácilmente. Así que digamos que nuestro tamaño de la clasede repente va del 30 al 15, si no hubiera definido de esta manera, lo haríatener 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 unolugar, y todo lo demás cambia. >> Si alguna vez quieres hacerun hash definir en un caso donde está el seguimiento de algunosestablecer el número de puntajes para una clase o está utilizando un númeroque se utilizará, como, a lo largo de un programa muy largo, esmejor para definir que al inicio de modo que si alguna vez cambia, se obtienepara cambiar un punto en lugar de 100. ¿Sí? >> ESTUDIANTE: entre hacer eso y sólodeclarando [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 delo que podemos cubrir en esta sección. Tiene que ver más con la eficienciay las cosas en realidad trabajar en el proceso de compilación. Si usted quiere realmente saberal respecto, estoy encantado de enviar un correo electrónico con los recursos al respecto. Hash definir tiende a serpreferido por las cosas. Y a medida que el código sea más, ustedtipo de aprender los matices de cuando se debe utilizar unmundial contra el hash definen. Pero por el momento,usted realmente no tiene que preocuparse por ello esque la respuesta corta. Todo el mundo bien con eso? Y también, si quieresutilizar un hash definir, que es muy importante tener en cuentaque el nombre debe estar en mayúsculas. No sólo estamos haciendoAULA 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 vistazoen 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 oigual 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, nossólo tienen índices de n menos 1. Enfriar. Y entonces podemos conseguir realmente locoy obtener matrices multidimensionales. Uno de los problemas cuando me tomé en mimatrices multidimensionales requeridas años, y creo que uno de ellos podría requerirque este año, por lo que se sienta cómodo. Envuelva su cabeza alrededor de ella ahora. Se volverá a rondarusted, pero de una manera fresca. Así que usted puede realmente pensarde matrices multidimensionales como matrices de matrices. Así que usted puede tipo de pensar en este topfila como el primer trozo de la memoria. Y éste es elsegunda parte de la memoria, y la última fila es latercera parte de la memoria. Y dentro de eso, hay una gran variedad. Pero, por supuesto, es más fácilpara representar de esta manera. >> Así que inicializar de la misma manera. Este es un personajetablero de tres en tres. Así que hay tres filasy tres columnas. Estamos representando de esta manera. Y usted acceder a ella elmisma 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-- sinadie nunca ha hecho álgebra lineal, De la misma manera se accede a un elemento enun matrice, es la misma idea aquí. Así que usted puede relacionarse de nuevo a matemáticas. Usted no tiene que preocuparse demasiadomucho de esto ahora. Es bueno tener la exposición,saber que puedes hacerlo. Usted puede crear un poco deloco number-- puedas crear matrices locos setodo 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 quelas cadenas que usted está utilizando son sólo conjuntos de caracteres? Bueno, sí. Así que chicos puede pensar que usted no tienematrices usadas antes, pero en cualquier momento utiliza getString en elBiblioteca CSView, eres en realidad sólo pidiendouna gran variedad de personajes. Y estamos cuidando de todoque en el back-end para usted. Pero usted ha estado usandomatrices desde que comenzaron. Usted simplemente no lo sabía todavía. >> Y cada vez que tenga una matriz de caractereso una matriz que está almacenando una cadena, el último que es siempre lo que esllamado un terminador nulo, que es esto de aquí. Y es que al final decada palabra que usted está almacenando. Así que si queremos averiguar ellongitud de una cadena, podemos decir, bueno, ya sabes, lacontenido de ese bloque no es igual a nuestra terminador nulo. Eso significa que hay una ciertacarácter no que en realidad se preocupan por eso es parte de la palabra. Usted aumenta su longitud. Y luego, cuando en realidad llegar ael final de la palabra, que va a terminar y que va a volver a nuestra longitud para nosotros. Mmhmm? >> ESTUDIANTE: ¿El espaciocontará como el terminador nulo? ALLISON: Así que un espacio esno un terminador nulo. Así que si usted tiene un espacio multiple--es en realidad un valor ASCII específica. ESTUDIANTE: ¿Cuál es laexclamació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 dever si algo es falso, usted sabe que siempre lo haces, explosión lola variable es, y si es falso, se evalúa como verdadera y quepuede 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 atrabajar, ya que he estado hablando. Así que quiero que usted acaba de crear una matrizcon 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 inicializarla 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 parminutos para trabajar en eso. Voy a descansar mi voz. Si usted tiene alguna pregunta, estoy feliza 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 acaminar 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 crearun anónimo Google Formulario, y ustedes sólo pueden presentarretroalimentación después de cada sección si hay algo que quierasmejorar o algo que quiere hacer. Si yo soy un poco demasiado llena de vidapara usted, puedo bajar el tono. Voy a crear eso y envío quea 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é quierespara llamar a su matriz? Array int, fresco. Muy bien, así que tenemos int int arrayiguales, 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 nuestrade 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, ycómo nosotros actualizamos i? i plus plus, actualizarlo por uno. Y luego vamos a teneralgunos printf del número entero, y lo que es la últimaparte que es en realidad va a decir lo que deberíamos estar imprimiendo? Sería el nombre de lamatriz, que es de tipo int matriz, ¿no? Y lo que es en los soportes de int matriz? yo. [? Así que?] Llamé a miejemplo, 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 iterara 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 alineadoscon el bucle for, y entonces todo dentro de las llaves deben tener una sangría. >> ESTUDIANTE: OK, si elbucle for sangrar? >> ALLISON: El bucle for no lo hacenecesitar ser sangría en este punto. Si usted estuviera en principal, sien 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 tenerlos paréntesis después de ejemplo? >> ALLISON: Sí, si usted esinicialización de esa manera. Así que recuerda, esta es la segundamodo de inicialización de una matriz en donde tenemos las llaves y luego nuestra realdatos separados por comas dentro. >> ESTUDIANTE: Pensé que habíasoportes para ese ejemplo. >> ALLISON: No, son los apoyos. Son aparatos de ortodoncia. Si usted está inicializarlaque la segunda manera, es frenillos. Si tuviéramos que decir, int ejemplo-- sisolo 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 nuestramatriz inicial, la inicialización. Y aquí, somos individualmentela asignación de puntos a ellos, por lo que este representa el índice de nuestramatriz, que es por eso que tenemos entre paréntesis. Pero aquí, si te fijas, hemosdejado nuestros soportes sin un tamaño, y inicializamos con eldatos reales todos-en-uno con los apoyos. ESTUDIANTE: Entonces, ¿por qué no tenemosparéntesis en este ejemplo? ALLISON: Entonces, en qué parte? ESTUDIANTE: ¿No sería quedigamos, 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 tenerentre paréntesis después de ejemplo. Tienes toda la razón. >> ESTUDIANTE: [inaudible] no hacerlo. >> ALLISON: No, usted tiene que tenersoportes, porque de lo contrario es no va a declarar una matriz. ESTUDIANTE: [inaudible]. Lo siento. >> ALLISON: Lo sentimos, usted necesitaentre paréntesis después de ejemplo. Typos. Buena captura, estrella de oro para ti. Además, si usted está haciendo una pregunta, siustedes acaba de decirme sus nombres, Me encantaría eso. Me encantaría ser capaz deconocer todos sus nombres. Yo no voy al fríote 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 brevese habló de esto durante la conferencia. Así que las funciones son una especie de justocomo estas pequeñas cosas tamaño de un bocado donde se pasa en las entradas, algosucede mágico, y se obtiene salidas. Enfriar. Así que en realidad se utilizó unmuchos de ellos ya. Obtén int, conseguir cadena, impresión f. Estas son todas las funcionesdonde se acaba de llamar a ellos, hay un montón de cosas mágicaspasando en el fondo que no ve necesariamente,y se obtiene lo que quiere. O por lo menos usted consiguelo 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ódigoen trozos manejables. Cuando usted comience a escribirestos programas realmente largos, o en los arañazos cuando tuvisteesta gran idea para un juego, tiene que ser capaz de romperlahasta, como, OK, ¿cómo empiezo? ¿Cuáles son las pequeñas piezas que necesito? Oh, tengo que pedir a lausuario para algo. Ahora tengo que imprimir algo. Oh, tengo que calcular este valor. >> Y aprender a romper sucódigo y los grandes problemas que tener en estas pequeñas piezasy la creación de funciones es en realidad una de lasgrandes piedras angulares de la CS. Así que usted puede pensar en una función tancomo un cuadro negro, un cuadro negro mágico, que ponga las cosas eny se obtiene una salida. Y el resto del programano tiene por qué saber necesariamente lo que está pasando dentro de ese cuadro negro. Todo lo que le importa es lo queque entra y lo que sale. Enfriar. >> ¿Entonces por qué funciones? Organization-- como dije, cuando estásse 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ása ser, como, OK, este es lo que hace esta función yesto es lo que hace otro. Y usted puede ver fácilmentecómo encajan juntos. Así que dividirlo en todoestas subpartes manejables. >> Así simplification-- Estoy seguro de que los chicostodos vieron esto, como ya he dicho, con arañazos. Usted tiene esta gran idea, yusted es como, ¿cómo lo hace todo este trabajo? Pero si te acercas a ellapoco a poco, te dicen, OK, ¿cómo puedo hacer un sprite deflotar a través de la pantalla? Eso es un poco más fácil. Así que un buen uso de la función hacesu código mucho más fácil de leer. Esto hace que sea más fácil de depurar que comote metes en sus boletines de problemas posteriores, usted va a realmentequiero ser capaz de hacer. Y son también más fácilespara diseñar y poner en práctica. Puede codificar hasta un pequeñofuncionar con relativa rapidez y asegúrese de que funciona frente tratandopara crear este programa a largo entero y después de pasar por tipo yver lo que funciona y lo que no lo es. >> Y luego reutilización. Así que sólo necesitan funcionesa escribirse una vez, y entonces usted puede utilizarlostantas veces como sea posible. Por lo que es, como, respetuoso del medio ambiente en un sentido. Si usted tenía cosas comoimpresión f, donde tenía que escribir la magia que vadetrá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 aaprender en clases posteriores CS, o uno de los mejoresconsejos que recibo Es decir, si va a copiar y pegarcódigo, probablemente debería ser una función. Si usted tiene la misma exactaA 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 cortosy ser mucho más fácil de leer. Y en vez de tratar de solucionar problemastodos estos diferentes lugares donde las cosas que podría salir mal, tiene una funciónque se llega a solucionar problemas. Y te prometo, mucho de estopodría parecer un poco abstracto ahora, pero como te metes en adelantey problema más adelante establece, que va a hacer mucho más sentidoy realmente ser llevado a casa. ¿Hay alguna preguntaacerca de las funciones hasta ahora? ¿Por qué estamos usarlos? Sé que no hemos conseguidoen el quid de la cuestión todavía. Así que la definición de un function-- igualmatrices, que necesitan algún tipo de-- este es sólo la salida general. Así que esta es una función que essólo va a cubicar alguna entrada. Y en la siguiente página, en realidad, tenemostodas estas pequeñas cosas increíbles aquí. Por lo tanto, todo el mundo puede leerque, por curiosidad? Sé que el morado y negropodría ser un poco difícil. >> Pero las cosas grandes a sabes-- lo que la primerauno aquí es nuestro tipo de retorno. Así que esto está hablando de la salidade esta función cuando, en este caso, ponemos en algún número, de lo que somosconseguir es que el número al cubo. Por lo tanto, debe ser un int en este caso. Tal vez sería una doble oalgo 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 austed, 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 chay 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 connuestra lista de parámetros. >> Así que la lista de parámetros es, lo que esesta función va a tomar en? Una lista de parámetros es simplemente unsinónimo de, ¿cuáles son nuestras entradas? Y de la misma manera que nosotrosque definir nuestra función y darle una vueltaescribir, cada una de nuestras entradas necesita tener un tipo asociado con él. Así que sabemos lo que nuestra funciónen realidad puede trabajar. >> Así que en este caso, tenemos una cierta entrada int. Así que de nuevo, va a ser el tipoy lo que estás llamando. Y luego, como usted veaquí, tenemos nuestro cuerpo. Así que tenemos un poco de salida int, quees 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 unaint veces un int veces un int, por lo que devuelve un int, queha 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 sulista de parámetros, o de entrada, necesita tener un tipo asociado con él. Y entonces usted tiene sucuerpo 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 vuelvenalgo para que usted utilice. Pero usted tiene que devolver de alguna manera. Y cuando usted está haciendosus propias funciones, podemos entrar en eso un poco más profundo. Personalmente, si quieres, hay una gran cantidadde las diferentes cosas que usted podría hacer allí. Todo el mundo bien? Cualquier cosa en esta lista que me quierespara repasar, que usted no entiende? Todo el mundo es bueno no? Enfriar. Impresionante. >> OK, así que nos estamos poniendotodo esto juntos ahora. Así que tenemos una cierta entrada int cubo, por lo queeste es un programa completo aquí. Hasta ahora, no tengoamable de su estado dando fragmentos de chicos que podríanir dentro de un programa. Nosotros sólo hemos estado buscando en funciones. Pero aquí es todo un programa. Entonces, ¿cuántos de ustedes recuerdan laprototipo 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 tenemosde 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, tieneme dijo nada acerca de esto. Es como cuando ustedentrar en un salón de clases, y alguien como,hay un concurso de hoy. Y usted es como, ustedNunca me habló de esto. No estoy contento con nosotros. El prototipo es básicamente comosu 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 decirleprincipal, 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 nosólo para hacer nuestro compilador feliz. Y es básicamente una promesa de queha definido esta función más adelante y que usted no está solo llamandoesta cosa al azar que no sabes lo que eresva 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 nuestradeclaración de la función aquí abajo que noshablado anteriormente. Va Cube x, y luego, si nosrecuerde, la función de cubo en realidad devuelve un entero anosotros, que se almacena en x de nuevo para que podamos imprimira ocho, o cubo de x en este momento. ¿Eso tiene sentido para todo el mundo? Estamos bien? Bien. Impresionante. >> Bien. ¿Cuántos de ustedesRecuerda esto por lo que este es básicamente sólo supila y su montón, sólo una visualización decómo se almacena la memoria aquí. Así que sólo queremos hacerAsegúrese de entender cómo estos están representados en la memoria. Si usted toma clases comoCS61 y esas cosas más adelante, se llega a aprender esta mucho másen profundidad, y es realmente genial. Lo recomiendo encarecidamente. Pero por ahora, voy a darque la visión general por lo que no tiene queconocer el quid de la cuestión. >> Así que la parte superior sólo un segmento de texto quecontiene los ceros reales y unos, el binario para eso. Y esto se utiliza para almacenarvariables globales, si tienen alguna. A medida que avanza hacia abajo, nostienen, como usted ve aquí, datos inicializados, sin inicializardatos, y luego montón. >> Así que realmente no hablamossobre el montón en este momento. Vamos a llegar a ella más tarde. Por ahora, sólo voy aagitar mis manos y ser como, usted no necesita saber acerca de esto ahora. Pero vamos a hablar un pocopoco acerca de la pila. Así que la pila es where-- tenemos acercar. Esto es en realidad cómo el programaque acabamos de ver que ocurre en la memoria. >> Así que lo que sucede es, cadatiempo que llamamos a una función, tenemos lo que se llama una pilamarco, que es uno de éstos. Así de parámetros principales. Así que esas son las cosasque 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 delocales, y cuando decimos que, nos referimos a las variables localesque 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 quese 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 marcocon los parámetros de cubo. Así que en este caso, el cubo deparámetros son ahora la x que pasamos en,los dos que pasamos en. Y entonces la gente del cubo, que esdonde la cubicación real sucede. Y luego vuelve. >> Así que lo que pasa es como cubo hace realidadlo 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 parael 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 essólo una visión general por lo que tiene una especie decomprensión de lo que que sucede cuando usted está llamando a una funcióny la forma en que realmente se ve en la memoria. Fresco? Todo el mundo bien? Impresionante. >> Así que este es uno que estratando de cambiar las cosas. Como vemos aquí, tenemosnuestro prototipo de función para que nuestro compilador no gritarle a nosotros. Tenemos un poco de principal, y nosquerer cambiar xe y. No lo han hecho esta demoen conferencia todavía, ¿verdad? Ellos no tienen? Okay. Así que vamos a iren este muy brevemente. Usted obtendrá en este ejemplo másen profundidad, creo que, esta semana. Y entonces la próxima semana podamos realmentesumergirse en por qué esto no funciona. >> Así que tenemos este vacíocanje función aquí--. Así vacío sólo significa queno se devuelve nada. Y tenemos un intercambio int y int b. Y tenemos algunos temporalvariable que es a. una se asigna a b, y luegob se asigna a la temperatura Así que eso es a y bvalores se conmutan ahora. >> Pero, giro de la trama, esto no funciona. Y parte de ella tiene en realidadque ver con el hecho de que una y b aquí, los que van pasando enaquí, 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 esque-- pretenden estos son de intercambio. ¿De acuerdo? Así pues, en principal, tenemos x e y inicializan. Pero cuando en realidad nos subimosa estos marcos con intercambio, estamos pasando los valores mása 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 hacemoshacer 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 yla forma en que realmente ocupamos de eso más tarde. >> Pero es sólo una cosapara mantener un poco en la mente. Úsalo para el futuro. No se preocupe si eso no teníatodo el sentido en el mundo. Son copias es la cosa más grande. Si usted va a tomar nadalejos 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 todotení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, eresva a estar viendo esto. Int principal, int arg c,cadena de arco v, corchetes. Así, a partir de lo que acabamos deaprendido hoy, lo que qué pensamos que el segundo parámetroo 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 vasa declarar estos ahora. >> ¿Alguien recuerdalo 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 cadenasque 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 quesimplemente 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 serla alimentación de las cosas en la línea de comandos, como estoy seguro de que los chicos quehan leído la sierra de especificaciones. Así que en esos casos, tal vez ustedtener 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 loque ha ingresado en la línea de comandos. Así que tenemos estos. Usted tiene un poco de barra de puntoscopiar archivosalida INFILE. Así pues, si arg c es el número de cadenasque 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 esAl 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 justodespués de la matriz en la memoria, y no tenemos ni idea de lo que es. Y es peligroso tocar loscosas, porque para todo lo que sabes, que es una parte de la memoria que ustedno debe ser el acceso o nulo. Y puede hacer cosas locas. Se llama exceso de indexaciónel obligado a la matriz. No vaya fuera de los límites de sumatriz, o las cosas malas pueden suceder. Usted se vuelve y, al igual que, las leyesde 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 esparte favorita, revisar conjunto de procesadores. Hurra! Okay. Así que para aquellos de ustedes queno han leído la especificación de conjunto de procesadores, que está haciendo algo realmentecosas interesantes con la criptografía. Vas a crear un CeasarCifrado y una cifra de Vigenère. Definitivamente, usted debe leer laspec para ver cómo funcionan. Y si usted está teniendo ningún problema acerca delo 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 principalescosas aquí que nos querer hablar sobre-- sólo tipode una extensión de la conferencia. Las cosas que usted puede no saberaproximadamente, consejos útiles y herramientas. Así que vamos a hacer unrevisión rápida de ASCII, porque eso va a ser súperimportante para el cifrado de Vigenère. Vamos a la conversión deentradas 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 presentemarcada en algún lugar. Usted va a querer porsu primera mitad de período. Estoy bastante seguro de que todo el mundo tiene estatabla 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ónque los mapas alfabéticos, numéricos, y otros personajes anúmeros para nuestro ordenador. Porque, por supuesto, en elfinal, todo lo que almacenamos se va a conseguir convertidaa ceros y unos, por lo que necesitamos alguna manera de representar latexto y los caracteres que estamos todos acostumbrados a ver como una especie de número. >> Así que como vemos aquí, tenemosA 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últiplescuerdas, 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 elpersonajes 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 quetendemos a como ustedes para hacerlo, es de esta manera donde estásen realidad restando caracteres. >> Así que te quiero chicos atipo de figura a cabo. ¿Por qué no lo intentas cada otro? Lo mismo ocurre con la primera, latercero, y el quinto. Porque yo quiero asegurarme de que hablamossobre todo lo que necesitamos hablar. Yo sólo voy a decir, uno de loscosas 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, porqueusted está probablemente va a querer eso. >> Enfriar. Así que voy a caminar rápidamenteustedes a través de estas. Así que la gente ha tablas ASCII levantado? ¿Cuál es nuestra numériconúmero de minúsculas A? ESTUDIANTE: Siete. >> ALLISON: Así minúsculas A es97 y A mayúscula es 65. Así que 97 menos 65? >> AUDIENCIA: 32? >> ALLISON: 62, sí. Así que en este caso, lo quetendría que imprimir? Esa primera? Si tenemos por ciento d,lo que indicaría que? ESTUDIANTE: Varios. ALLISON: Estamos impresióna cabo un número real. Así que en realidad estamos yendopara imprimir 32 aquí. Y si esto fuera por ciento c,32 nos daría un espacio. Así la comprensión de quecaracteres pueden imprimirse tanto como números y comolos caracteres reales que es realmente importante, y el pago deatenció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, quepueden 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á unmayú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 yendopara 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 estefunción o oído hablar de él en absoluto? Cualquier persona? Enfriar. Así que lo que realmente se destacapara 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ésardespués de escribir su programa, y luego te vas aentrada de un número que usted quiere codificar el mensaje secreto con. >> Pero, si recordamos, todo nuestroentradas se almacenan como cadenas. Derecha? Tenemos una gama v argeso es todo tipo string. Así que si usted acaba de tratar detirar de que uno, que sería pensar que lo que uno o variosque se utiliza es en realidad un personaje. Así que vas a obteneralgunos resultados locos. Así que si usted realmente quiereconvertir esto en un número entero que puede utilizar para manipularsu palabra o su mensaje, usted querrá usar atoi. atoi sólo conviertesu cadena a un int. >> Así que si tenemos una cadena de 12, si llamamosatoi el 12, o lo que sea que de entrada es, que en realidad volvera que el número entero. No es el carácter o la cadena 12. Lo cual, cuando se iniciapara añadir que a los números, será muy diferente,porque la cadena 12 es un número loco enASCII, 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 esteen César, porque necesitará el int suministrada por elusuario en la línea de comandos. Pero cuando se la pusieron en el comandolínea, se almacena como una cadena para empezar. ¿Eso tiene sentido? No necesariamentenecesitará esta para Vigenére. Con Vigenére, como ya he dichoantes, usted debe tratar de usar Matemáticas ASCII que se parece más aesto, 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 daneste enorme número de César? Usted tiene la idea de quesi usted está en Z y ya está dado un número de dos,eso significa que need-- Z se convierte en el segundocarta 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 quele da el resto de la división de laprimer número por el segundo. Y tenemos algunos ejemplos ahacer que un poco más concreto. Pero, básicamente, utiliza módulo cuandoquerer hacer algo envoltura alrededor. >> Así que si usted sólo desea que elnúmeros del uno al ocho, se puede utilizar en cualquier otro módulonúmero, y lo hará siempre devolver un número de cero a ocho. Así que algunos examples-- sitenemos 55 módulo 10, que sólo te da el resto de55 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 antesel 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 paramostrar 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 precedenciacomo 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íacomo la división y la multiplicación. >> Así que en este caso, lo haríamostienen 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 queconseguir 2 en este último caso. Así modulo-- estás definitivamente va aestar pensando en maneras de incorporar que cuando se está envolviendotodo el alfabeto. Si usted está en Z y tiene que moverremitir tres espacios para llegar a C, hay todo ese conceptode envolver alrededor. Así que voy a dejar en manos deustedes para averiguar cómo es exactamente lo que vas a usarlo. Pero sin duda una herramienta útilpara 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 secretomensajes 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 conustedes, así que si hay algo que le gustaría iraún más, yo estaría feliz de hacer eso. ¿Alguna otra pregunta sobresu conjunto de procesadores para aquellos de ustedes que han comenzado o leer la especificación. Todo lo que hemos habladoaproximadamente en la última hora y 15 minutos que habían me gustaal tipo de refrito, yo estaría encantado de. O podemos dejarlo todo, y usted puedetodo salir y tomar más dulces con usted a medida que avanza. Pero si hay cualquier persistentepregunta, por favor hágamelo saber. También puede venir yhablar conmigo después. Te prometo que no muerdo. Algo más? Todo el mundo es bueno? Sentimiento de todo el mundo comoque 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, graciastodo gracias por venir. Espero verte la semana que viene. Habrá más dulces. Es posible que haya otras cosas interesantes. Y miro adelante a conseguirsaber a todos ustedes este año.

Noticias relacionadas