Section, Week 5

Section, Week 5

>> PROFESOR: Así que el orden del día deesta semana, no es que la cantidad de cosas. Pero esperemos que muy, muy útily relevante para ustedes esta semana. Pero vamos a pasar tal vez 15,20 minutos hablando sólo de forma rápida sobre la lista de enlaces. Listas de enlaces van aser cubiertos en el cuestionario. Así que tal vez sería muy útilpara aprender un poco acerca de lo que es. >> Vamos a pasar la granmayoría de la sección actual repasando problemas de práctica concurso cero. Y luego vamos a salvar tal vez 20, 30 minutosal final de las preguntas pendientes alguien tiene. >> Y luego, el últimocinco minutos, voy para dar una bomba hasta el habla para el concurso. Ustedes todos quieren estar aquí para eso. Debido a que va a ser un buen momento. >> Muy bien, por lo que algunosel material en la lista de enlaces. ¿Cómo lo general están estructurados esusted tiene lo que se llama un nodo, ¿verdad? Usted tiene estas cosas llamadasnodos, que son estructuras. Voy a ir sobre cómo crearun nodo en la siguiente diapositiva. Pero, en esencia todos ellos vinculadoslistas se trata de datos que ha sido ensartados a través de punteros. >> Y así, la ventaja que tenemosde utilizar una lista enlazada más, quizás, como una matriz, esel hecho de que en una matriz usted necesita un bloque contiguo dememoria todo en el mismo lugar, uno después de otra, para poder tener eso. Considerando que la lista enlazada, usted podríatienen pequeños trozos aleatorios de la memoria todo el equipoensartados por punteros. >> Y de esta manerapuede acceder a la información que viene uno trasotra, después de la otra sin necesidad de sólo un pedazo enorme dela memoria en su ordenador en alguna parte. Y por lo que este es uno de los principalesrazones por las que utilizamos lista de enlaces. >> En segundo lugar, es muy fácil de forma dinámicacambiar el tamaño de la lista de enlaces porque en conjunto, cuando se declara una matriz,usted tiene un cierto valor establecido. Digamos que yo quería crearun arreglo de 10 enteros. Puedo crear una matriz de 10números enteros, y eso es todo. Es 10. No sé qué hacer después de eso. Si quería hacer 11, no puede hacerlo. Si quiero que sea 9, no puede hacerlo. >> Mientras que en una lista de enlaces, puede agregar yborrar e insertar donde quieras. Usted puede cambiar el tamaño de forma dinámica suestructurar aquí, su estructura de datos. Y eso nos da muchamás flexibilidad añadida que no lo hacemos normalmentetener con matrices. >> Cualquier persona confundida en el básicoestructura de cómo una lista de enlace es o por qué tenemos que usar uno sobre una matriz? Sí, vamos a repasar en detallecómo crear en realidad uno. Pero esto es sólo un pocoel sentido general en este momento. Guay. Y así matrices se ensartande estas encantadoras pequeñas cosas llamados nodos. Todo lo que un nodo está es un tipo de estructura. Recuerde, una estructura es si queríaspara crear un cierto tipo de variable en C que aún noexistes, que, como programador, en realidad puede crear usted mismo. >> Y así, este tipo de datosestructura se denomina un nodo, en realidad ha sido creado por nosotros, para queno existe en C por sí solo. Y la forma en que ustedcree uno es que tienes la cabecera de typedef struct,que le dice al compilador que soy a punto de crear una estructura. >> Vamos nombre de "nodo". Y en el interior vamospara declarar una variable en, que se va a almacenar un valor. Y entonces también vamos ahaber un puntero llamado "siguiente" que apunta a la siguientenodo de la lista de enlaces. Y luego de terminar que fueracon sólo repetir nodo nuevo para el compilador sabe, OKese es el final de mi estructura. >> Y así, de esta manera, estamos tipode crear un pequeño arsenal lindo tipo de cosas con uny con un valor puntero. Y usted puede vincular a todos ellosjunto con los punteros. Para que puedan ser de todo tipoensartados en una cadena. >> Guay. ¿Se puede saber que un poco mejor? >> AUDIENCIA: Sí. >> PROFESOR: Muy bien. Así que la forma en que, como ustedes pueden ver,una lista de enlaces típica se estructura es que tienes una cabeza. Usted tiene el valor de la cabeza que no essiendo señalado por cualquier otro puntero. Pero va a señalar,o de referencia, otro nodo. El nodo después de que se va a hacer referencia a lanodo después de eso, y así sucesivamente y así sucesivamente hasta que finalmente golpeóAl final de su lista de enlaces. Y usted no tendrá un puntero allí. >> Y así, pensar como, en una cadena, o inclusosi alguno de ustedes hechos, no sé, al igual que con Fruit Loopscuando eras pequeño. Usted haría unirlosy el desgaste alrededor de su cuello. ¿Cree que es exactamente lo mismo. Usted tiene estas pequeñas cosas que ustedpuede encadenar este punto a uno después de ella, a la que después de, y así sucesivamente y así sucesivamente hasta que tenga una cadenade una estructura de datos que se pueden utilizar como más te guste. >> Así que la forma en que esto se haríasuelen insertar o eliminar cualquier nodo desde un enlacela lista es muy diferente dependiendo de donde ese nodo es. Así, por ejemplo, porquepunteros son siempre apuntando a un valor específico,cuando se elimina o inserta un nodo, usted quiere asegurarse de que el punteroes todo lo que apunta a las cosas correctas. >> Así que si usted quería potencialmente insertarun nuevo nodo con el valor de una dentro de un enlace ordenadalista, todos sabemos aquí de la imagen que va aEntra en medio de la cabeza y dos, ¿no? Debido a que uno se adapte a la derecha allí. Pero la forma en que lo haríaes por primera dereferencing el puntero de la cabeza y el envío de que a uno. >> Pero entramos en un problema aquí. ¿Alguien puede ver cuál es el problemaes si tuviéramos que primero eliminar la referencia el puntero de la cabeza a uno? ¿Qué problema podríamos correr en si tratamospara añadir esta al frente de nuestra gama? >> AUDIENCIA: [inaudible] PROFESOR: Exactamente. Así que aquí tenemos un puntero que erauna vez que apunta desde la cabeza a los dos. Pero si usted deshacerse de esepuntero, apuntan a uno, ahora tenemos ni ideaa dónde ir para encontrar dos. Debido a que como ya he dicho antes, usted tiene untrozo gigante de la memoria en su ordenador. Todos estos nodos podríanser intercaladas al azar en cualquier lugar en el equipo. Y usted no sabe cómohacer para encontrar eso. >> Y así es necesario tener punterosseñalando a todos los nodos en el extremo. O bien si accidentalmenteeliminar la referencia de un sin primera asignaciónun valor primero, eres sólo va a perdertodo después. >> Entonces, ¿qué vamos ahacer es, lo haría primero que desee crear un puntero enel nodo que desea insertar. Apunte a donde ustedquiere insertar a, y luego después quepodría apuntar la cabeza hacia atrás a uno. >> ¿Eso tiene sentido para todo el mundo aquí? Excelente. Piense en ello como al igual que una cadena. Si se agrega una cadena,que es un poco intuitiva cómo te va sobre la inserción de eso. >> Aceptar, por lo que es en realidad muchomás corto de lo que pensé que sería, una perorata de cinco minutos en las listas de enlaces. Sólo para que ustedes tienen laidea básica de lo que es. >> Aquí tenemos el programa de prueba cero. No dejes que esto te intimide. Sé que es una gran cantidad de información. Se ve muy aterrador. Es también una gran cantidad de, yopensar, CSC tipo de términos. Cosas como cadenas hexadecimales,punteros, las asignaciones de memoria dinámica son términos que suenan muy asustadizo. >> Pero vamos a romperlosabajo, hacer algunos problemas de práctica para que ustedes todosestán listos para esta prueba. ¿Cuántos de ustedes tienenya comenzó a estudiar? >> OK, ustedes probablemente quierapara comenzar a ponerse en marcha en eso, debido a que el concurso es mañana. O jueves para algunos de ustedes. Sí, así que vamos a irsobre algunos problemas de práctica. Si ustedes todos queremos tomaruna hoja de papel, un lápiz. Vamos a simplemente pasar elgran mayoría de la sección actual repasando algunos de los que lo que ustedes tienenuna idea de qué esperar en el cuestionario. >> OK. Un par de logísticadetalles así, para nadie que no ha estado en ese enlace allí, sivas a cs50.yale.edu, en el frente esta página hay un enlaceque dice "Acerca del concurso Cero." Enlace te lleva allí. Si usted no lo ha leído, por favor leerlo. Porque te dice realmente importanteinformación sobre el cuestionario. >> Voy a tirar esto hacia fuera deque sólo porque, físicamente, si ustedes no sabe dóndeir, vamos a tener problemas. Y lo que si su pasado en términos con Aa N, ir al salón de actos del colegio de abogados. Y si sus últimas aperturas con Pa la Z, ir al Auditorio Davies. Y esto sólo se aplica parapersonas en la sección Miércoles. >> Si usted está tomando la prueba enJueves, usted va a SSS 114 donde su conferencia normalmente es. AUDIENCIA: [inaudible] PROFESOR: O a la Z, vaspara ir al auditorio Davies. Voy a cambiar eso, ¿verdad? >> Oh, sí, sólo falla automáticamente. >> Ah, sí, que es Christa. Sí, mi mal. Sí, O a la Z, vasir a Davies Auditorim. Voy a arreglar esto una vez que subir. Sí. >> Y luego también algoimportante para la mente es que el miércoles, si usted es oficialmenteinscrito en la sección miércoles usted debe tomar su concurso el miércoles. Y si usted está inscrito en Jueves,deberá llevar el concurso Jueves. Y es durante las horas de clase. ¿Dónde, creo que es de 1:00 a2:15 los miércoles y dos y media-3:45 los jueves. >> Si usted tiene un conflictos irreconciliables,Excusas de Dean son lo único, por desgracia, podemos tomar. Debido a que hemos tenido unagran mayoría de las solicitudes para cambiar del miércoles al jueves. ¿Qué no podemos honrar a menostenemos la petición de un Decano. >> OK. Así que antes de empezar en unpar de los problemas de la práctica, Yo sólo voy a ir másConsejos útiles de Andy para el éxito. Chicos, cuando estudias, realmentequerer practicar la escritura de código a mano. La primera vez quetomó un concurso CS, no lo hubiera hecho código de práctica de la escritura a manoantes y que era extremadamente impactante de lo difícil que era. >> Cuando ustedes no se meten en lahábito de escribir todo lo, se trata, naturalmente, de ser muycapaz de tener autocompletar soportes y puntos y comas allí. Cuando se escribe un vistazocon la mano, a veces es muy, muy fácil olvidar un punto y coma,o se olvide de cerrar un soporte, o se olvide de cerrar dos puntos,o algo asi. >> Así que cuando se escribe código a mano,es una sensación muy diferente. Así que ustedes, cuando se está trabajandoa través de algunos de los problemas de la práctica, sería bueno practicar realmente hoy. O mañana, supongo, si estástomar la prueba el jueves. >> En segundo lugar, tenemos la última, como,el valor de la práctica de ocho de años cuestionarios en línea. Concurso de este año será probablementemuy, muy similar a todos ellos. Todos son muy similares. De alguna manera entrar en elestilo de el tipo de preguntas lo que pedimos, el tipo defunciones que vamos a escribir en, etcétera, etcétera. >> Así que toma las pruebas de la práctica,especialmente bajo las limitaciones de tiempo. 75 minutos para hacer la prueba esno un montón de tiempo. Es muy, muy largo. Y lo que ustedes realmente quierenpara asegurarse de que ustedes son el hábito de la escrituracódigo a mano rápidamente. Debido a que usted no desea que la primeratiempo para ver una prueba de que la longitud estar en su prueba. Ustedes realmente quiere asegurarseque la práctica de antemano. >> En cuarto lugar, desea revisar laconferencias y sección diapositivas. Usted no tiene que memorizar cosas. En realidad, todo el mundo se le permite ununa hoja de notas de papel blanco, frente y detrás. Ustedes pueden escribir o escribir. Si ves que necesitas memorizarnada, lo dejó en esa hoja. >> Te garantizo que usted no quiereser atrapado en el medio de ese cuestionario siendo así, oh sí, ¿cuál es eltiempo de ejecución de este tipo frente a ese tipo. Sólo hay que poner abajo y copiarlodirectamente desde la hoja de la nota. A continuación, puede en realidad sólo tiene que utilizar sucerebro para pensar en los problemas en lugar de tener que recordar hechos. Y así realmente aprovecharde ningún detalle de nicho que usted piensa que necesita para memorizar,plop abajo en la hoja de examen. >> OK, cualquier pregunta logísticamenteen relación con el cuestionario antes de empezar algunapractican problemas de concursos? ¿Sí? >> AUDIENCIA: No he tenido la oportunidadmirar el cuestionario [inaudible] pero se que va a seraplicación sobre todo, ¿O hay también va a ser,como, preguntas de cultura? >> PROFESOR: Es mucho. Por lo tanto, la forma en que yoharía describe el cuestionario es-- juntéalgunos problemas de práctica que me sacó de todos los concursos. Pero verás que hay dos principalestipos de preguntas que nos preguntarán ustedes. >> Se trata de un muy bajo nivel de detalle de cosas. Le daremos un pequeño trozo de códigoy decir, ¿hay algún error en esta lista? ¿Cuál sería la impresión de aquí? ¿Qué hará este código producir, etcétera. Así detalles de información de muy baja actividad. >> Y por el otro lado, vamos a tener muyalto nivel preguntas basadas en el conocimiento. ¿Puede explicar lo que eldiferencia entre una búsqueda binaria y una búsqueda lineal es? ¿Por qué íbamos a quererutilizar uno sobre el otro? Tal vez, lo que es GDB? ¿Por qué queremos utilizar GDB? Nivel más alto, más fundamentalpreguntas de comprensión. Así verás una mezcla delos dos de ellos en su cuestionario. >> Cualquier otra cosa antes de quedirigirse directamente a ella? OK. AUDIENCIA: Una más. PROFESOR: Oh, una más. Apenado. >> AUDIENCIA: Sí, está bien. Así que estás diciendo 75 minutos esdemasiado corto, como es poco probable que vamos a terminar? O, como, 75 minutoses exactamente el mismo tiempo ya que necesitaríamos si fuéramospreparado adecuadamente? PROFESOR: OK, por lo que elcuestionario es un reto. En definitiva, es un reto. Usted se encontrará con poco tiempo. Usted está probablemente va a golpear, como 10,15 minutos para el final, y ser como, mierda. Tengo tanto que hacer. Y eso es totalmente bien. Todo el mundo va a sentir la misma manera. >> Apenas sea muy consciente decuanto tiempo tienes. Y por eso te digochicos hacen los exámenes de práctica. Porque lo que realmente le da un gran sentidode lo que la prueba va a ser así. Así que si usted se encuentra siendocapaz de terminar la práctica cuestionarios en una buena cantidad detiempo, usted puede mantener un ritmo bueno, entonces usted no tendrá un problemael miércoles o el jueves. >> Guay. Así que si todo el mundo wants-- Creola mayoría de la gente tiene hojas de papel ya. Voy a esencialmente sólodarle ejemplos de preguntas, dar a ustedes, como, ununos minutos para hacer ellos. Y vamos a repasar como claselo que las respuestas a ellos son. >> Así que este es un muy típicopregunta temprano vamos a pregunte usted, sólo la conversiónnúmeros entre diferentes bases. Binarios, como ustedes puedenrecuerdo, es la base de dos. Decimal es base 10, o lo quecomo seres humanos normalmente interpretan. Hexadecimal es de base 16, que es ceroal nueve, así como la A a la F. >> Así que hay cuatro números estoypidiendo a ustedes para convertir aquí. Voy a dar lo desea, de tres acuatro minutos para pensar en cómo iríamos sobre solucionar esto. >> AUDIENCIA: ¿Se nos permite calculadoras? >> PROFESOR: No lo harásnecesitará calculadoras, sí. Creo además básica, creo, esSe les pedirá a todos ustedes por hacer. >> Y justo así que tipo de un sentidode cuando todo el mundo se hace, mira hacia arriba, onda, no sé, sonreír,mira feliz si ya está. Sí. Tal vez un par de minutos más. >> OK, vamos a traerlo. Estoy a propósito de ir adaros menos tiempo lo que probablemente necesitahacer algunos de estos problemas, simplemente porque quiero asegurarme de queobtenemos a través de un montón de problemas. Así que no se preocupe si usted notienen la oportunidad de terminar. Totalmente bien, siempre y cuando usted tieneuna idea de cómo ir sobre esto. Así que vamos a seguir adelante y hacer el primero. >> Así que primero, ¿alguien quiere decirmeen binario, lo que haga cada uno de estos dígitos representar en términos de sus valores? ¿Sí? >> AUDIENCIA: Dos alpotencia cero, dos a uno. PROFESOR: Exactamente. Asi que. >> Derecho, por lo que normalmentecuando estamos en la base 10 Todo esto representa son, como,10 a la base de cero, ¿no? Ese es el lugar de su ser. Todo tu lugar de 10 es es10 a la potencia de uno. Lugar de Usted es el 100 10a la potencia de dos. >> Cualquiera que sea la base que está en está pasandoque ver con la misma cosa, simplemente con una base diferente. Así binario, todo lo que es es base dos. Te vas a convertir todo eldígitos en dos a cualquier poder de ese dígito. Y así, en este sentido,puede tener una forma más fácil de ser capaz de sumar oresumir todos los números en orden para convertir en la base 10. >> Así que, ¿alguien quiere decirme lo que elrespuesta a la primera es en base diez? >> AUDIENCIA: Dos, [inaudible] PROFESOR: Sí. AUDIENCIA: 42. PROFESOR: 42, ahí lo tienes. Así que la forma que tenemos esta respuesta era porhaciendo dos, el primero, que es de dos. Más dos del tercero, que es ocho. Plus dos a la quinta, la cuales lo que sobra. Usted los resumes y es 42. >> ¿Hay alguien confundido sobre cómo hemos llegado hasta eso? Además tan básico, comoLe dije, usted debe estar bien. Si no, bueno, podemos practicar eso también. Pero eso está bien. Guay. >> ¿Alguien quiere darme laresponder a la segunda también? >> 50? Bien. Cualquier persona confundida sobre cómoconseguimos que sea? Enfriar, voy a tener larespuestas en la siguiente diapositiva. Así que no se preocupe si ustednecesitará copiar hacia abajo. >> OK, así hexadecimal es un poco más complicado. pero yo te voy a mostrar chicosun acceso directo para saber cómo hacerlo. Así hexadecimal, como ustedrecuerde, todo lo que es ser de 16. Y debido a que los humanos no lo hacen realidadtener 16 números para representar que, vamos a partir de cero a nueve, que nuestra primera10 valores, y luego hacemos la A a la F, que son los siguientes seis valores. >> Y así, la forma más fácil de ir decualquier número binario a hexadecimal es separarlos en dos mitades. Y por lo que cualquier número binario que daráes probable que tenga ocho dígitos. Usted sólo puede romperhacia arriba en el centro. >> Así que la primera uno-- solo uno,solo uno, uno, uno, uno solo. Tipo de pensar que, ya sabes, dibujauna barra o una coma entre ellas. Y sólo se puede convertirdirectamente lo que sea esto es el primernúmero de hexadecimal, y todo lo que aquí esel segundo de hexadecimal. >> Así que recuerde de la notación común,lo empiezan valores hexadecimales con? >> AUDIENCIA: Cero. >> PROFESOR: 0X. Así que sabemos que en cualquier momento te pedimospara convertir cualquier número a hexadecimal, o en cualquier momento que usted ve ningunanúmero que comienza con 0X, usted sabe que es un valor hexadecimal. >> Y entonces usted va a pedir quedeterminar lo que estos dos dígitos son. Y la manera de hacerlo, del conteo deque la mitad y del conteo de ese medio. Así que en este ejemplo, lo quehabría uno, uno, uno, uno ser? ¿Qué valor podría ser? Eso sería F, ¿verdad? Eso sería 15. >> Así que este sería F. Uno,uno, uno, uno aquí es también F. Así que uno, uno, uno, uno, uno, uno, uno,una en hexadecimal, todo lo que es es 0xFF. Debido a que este medio representaF, el valor de 15, y esto representaba un medioF, el valor 15. Porque recuerda, estamosa contar desde cero a nueve. Una es como 10, B es como 11, F es 15. >> ¿Tiene sentido a todo el mundo cómollegamos de binario a hexadecimal? >> AUDIENCIA: Entonces ¿cómo hemos llegado15 de la uno, uno, uno, uno? PROFESOR: Sí, esto es binario, ¿verdad? Imagínese esto es sólo un número binario. Así que hay dos a lacero, que es uno. AUDIENCIA: ¡Oh, OK. Así que sólo una total hacia fuera. >> PROFESOR: Sí, y luegoque acaba totales que fuera. Eso es todo lo que es. >> AUDIENCIA: OK. >> PROFESOR: OK. >> AUDIENCIA: Entonces vas de binarioa decimal a hexadecimal? >> PROFESOR: Eso es lamanera más fácil de hacerlo, sí. No vas a decimal porquedecimal tiene cero a nueve. Somos sólo un pocodividir esto en dos. >> AUDIENCIA: [inaudible]usando decimal a encontrar lo que coincide hasta en hexadecimal. PROFESOR: Quiero decir, eresdel conteo de uso de las matemáticas básicas. AUDIENCIA: Sí. PROFESOR: Sí, más o menos. Es un poco confuso. Pero sólo sé que ustedpuede dividir lo que sea este valor es sólo en mitades. Mira, ¿qué es esto en binario? ¿Qué número es? Va a seralgo de cero a F. >> Aquí también va a seralgo de cero a F. Y entonces usted puede simplemente poneresos dos allí mismo. >> AUDIENCIA: OK. PROFESOR: Sí. OK. Así que chicos quieretratar el siguiente, entonces? Cero, uno, cero uno,uno, cero, uno cero. Te voy a dar chicos como 30 segundos,ya que probablemente no sabías el truco para cómo hacer esto antes. >> OK, alguien quiere conseguir éste un tiro? >> 0x5A. PROFESOR: 0x5A. 5a. Bien. Así que esta aquí sería ser-- deseapara decirnos cómo llegó eso? En primer lugar, ¿cómo llegaste a los cinco? >> AUDIENCIA: Debido a cero,uno, cero, uno es de cinco. >> PROFESOR: ¿Todos entienden¿por cero, uno, cero, uno es de cinco? Tienes una aquí. No tienes nada en dos a la primera. En dos a la segunda, quetener uno, que es de cuatro. Entonces se agrega el cuatro másel uno, que tiene cinco. ¿Todos bien? OK. Y entonces lo que este ser y por qué? ¿Qué número tiene una corresponde a? >> AUDIENCIA: 10. >> PROFESOR: ¿Y esto en base dos? AUDIENCIA: [inaudible] PROFESOR: Exactamente. Así que este segundo valor aquí sería 0x5A. >> Todo el mundo buena sobre cómo convertir? Es mucho más sencillo de lo que crees que es. Solo quiero estar segurosabes consejos útiles y trucos sobre cómo hacer eso. >> AUDIENCIA: ¿Por qué puede usted acaba de dividirque en medio de esa manera? Sólo como, OK, yo sólo voy ase preocupan por estos primeros [inaudible]? >> PROFESOR: Porque eso es en realidad elmanera se representan los valores hexadecimales. 0X, que significa en realidadotra cosa que decirte que es un número hexadecimal. Y esto representa siemprelos primeros cuatro dígitos. Y esto representa siemprelos últimos cuatro dígitos. Y por lo que estas dos cifras solocorresponden a las diferentes bits. >> AUDIENCIA: Entonces vamos a always-- >> PROFESOR: Siempre estásva a conseguir ocho bits de valor. >> AUDIENCIA: ¿Es que al igual que una cosaaquí o que una cosa por todas partes? PROFESOR: Eso es sólo unacosa en computadoras, sí. AUDIENCIA: OK. Impresionante. >> PROFESOR: También, por lo que en este ejemploconvertimos de binario a decimal, y de binario a hexadecimal. ¿Quieren asegurarse de que usted tambiénpracticar ir al revés. Así que si yo te di 0xFF, podríadibujar que en binario, ¿verdad? >> Convierte F en binario,que es uno, uno, uno, uno, convertir F a binario, el cuales uno, uno, uno, uno. >> Así que nosotros podríamos pedirle que haceral revés. Así decimal a binario, ohexadecimal a binario. Así que usted quiere hacerAsegúrese de saber en ambos sentidos. Probablemente vamos a hacerte unacombinación de los dos. >> Sí, usted tiene una pregunta? Puedo ver-- eres bueno? AUDIENCIA: Sí. PROFESOR: OK. ¿Soy buena para borrar esto? Excelente. >> Muy bien, por lo que las respuestas están aquí, si alguienEs curioso tarde y confundirse. OK. >> AUDIENCIA: ¿Importa si ponemosnuestras letras en capitolio o minúscula? >> PROFESOR: Lo hace, porqueen hexadecimal, por convención, todos los personajes están en mayúsculas. Así A a F sonva a ser mayúsculo. Si usted pone una minúscula a, no sési queremos necesariamente marcarlo mal. Pero en teoría,eso no es técnicamente cómo se supone que tienes que. Así que todos ellos deben estar en mayúsculas. Sí, buena pregunta. >> OK. Segunda pregunta. Considere este hermoso programa aquí. Voy a hacer la pregunta,Volveré esto. >> Así, en primer lugar, lo que está dentro de la normaio.h eso es de interés para el programa? En segundo lugar, lo que hace vacíosignificar en la línea de tres? Y en tercer lugar, ¿qué quiere regresar cero desdeprincipal, como la línea de seis, por lo general significan? Si ustedes quieren escribir losabajo, ya que tengo que cambiar de nuevo a la diapositiva sólo para que pueda ver el código. Este es un ejemplo de, como, tal vez unaalto nivel en cuestión le pedimos qué cosas quiere decir en un programa. >> Todo el mundo es bueno para mívolver a la diapositiva? Vale, guay. Así que te voy a dar a tipos como tal vez tresminuto para mirar éste rápida real. >> OK, así que éste es comobastante fácil, conceptualmente. ¿Alguien quiere decirme lo que esprimero interior de hachís incluyendo nuestro archivo de biblioteca io.h estándar? ¿Por qué necesitamos esa bibliotecaincluido para este programa? Lo que aquí es lo que necesitamos para? >> ¿Sí? >> AUDIENCIA: ¿Es que cuandopones que printf? >> PROFESOR: Exactamente. Así printf, cada vez quetener una entrada desde el usuario e imprimir algoa la pantalla, eso es la entrada estándar, la biblioteca de salida. Piense en ello que manera-- entrada, salida. >> ¿Tengo una salida? Sí. Así que sé que siempre voy anecesitará la biblioteca i.o estandarizar. >> Así printf es la funciónpor el cual tenemos que acceder y hashtag incluye elbiblioteca i.o estándar. OK. >> En segundo lugar, ¿qué significa vacío? Tenemos el principal int (void), lo que haceanular aquí significa aquí en la línea de tres? Sí, en la parte posterior. >> AUDIENCIA: [inaudible] >> PROFESOR: Exactamente. Así que recuerde, hemos aprendidocomenzando con nuestra pset que en realidad se puedeindique la línea de comandos argumentos que su programa, quefunción principal, toma como usted, el usuario, llámalo. Si tenemos vacío, eso significa que ustedsimplemente podría ejecutar directamente el programa sin ningún tipo de argumentos de la línea de comandos. Todo el mundo claro? OK. >> Y por último, ¿por qué nos molestamos haciendoesta cosa cero vuelta aquí? ¿Por qué tenemos un int principal? ¿Por qué no podemos simplemente tener void main vacío? ¿Sí? AUDIENCIA: Sólo para que podamosasegúrese de que el programa es salir con éxito, como sea diferencia de si fue contado. Y nosotros sabemos que eso esun tipo diferente de error. >> PROFESOR: Sí, exactamente. Esto es sólo una muylo convencional que hacemos, es que justo al final desu programa, sólo para asegurarse de que su función principalestá funcionando correctamente, siempre queremos hacer de retorno cero. A pesar de que puede necesariamenteno ven que imprimen en cualquier lugar. >> Debido a que como programadores, ya sabes, siusted tiene muchas líneas diferentes de código y usted no sabe dóndeestos van mal, y si ocurre un error que deseasasegúrese de que usted obtenga ese error. Y tan típicamente si algo salemal que tendremos un regreso de uno solo para asegurarse de que sabemos que es. Así que si usted ve un retornocero, que típicamente significa que su programa esejecutado con éxito. ¿Bien? Guay. >> OK, segundo programa aquí. Considere eso. Y si ustedes ver a unflotar, ustedes probablemente puede tener una buena idea de lo queEstoy a punto de preguntarle. >> Así que cuando este programaejecuta, como se puede ver, Estoy declarando un flotadordentro de mi función principal. Estoy dándole el nombre "respondió," y estoy configurandoque igual a uno dividido por 10. Estoy imprimiendo, a unodecimal, que flotan. Y luego voy a volver a cero. >> Así que cuando la ejecución del programa,pensar de nuevo a codiciosos ahora, Este programa imprime 0.0. Como todos sabemos, es de esperar que todossaben, uno dividido por 10 no es un 0,00, que es 0,1. Pero explicar por qué este programa piensaque 1 dividido por 10 grabados al 0,1 otra de 0,1? Te doy chicos tal vez como 30segundo a pensar simplemente rápidamente sobre eso y yo voy a volver al programa. >> OK. ¿Alguien quiere darle una oportunidad? En tres frases o menos,porque normalmente estamos va a restringir todas las respuestastres frases o menos por lo que no acaba de regurgitarcosas al azar favoritas en tu concurso. >> Sí, tomar una foto. >> AUDIENCIA: Así que creo que hay estacosa que se llama, como, [inaudible] Así que podría ser, por ejemplo,puede haber, como, 0.09, que, cuando se imprime la primeradígitos, sería a 0,0? >> PROFESOR: Close, no del todo. Christabell? >> AUDIENCIA: Estás divisoria y10, y son ambos enteros. Y así, la forma en que se vapara almacenarlo es como un entero. Y por lo que el número entero más cercano sería 0.0. Y eso es 0,1. PROFESOR: Sí, eso es muy bueno. Esa es la respuesta correcta. Así que este es un muy confusoconcepto para un montón de niños. Y realmente quiero para asegurarse de queesto se ve reforzado en la cabeza de todos. >> Así que lo que llamamos flotantepunto de imprecisión, donde la razón por la cual una gran cantidadde sus programas en codiciosos no funcionó inicialmente fue porqueusted se olvidó de emitir su variable. Así lo dijo Christabellera del todo correcto. >> Un flotador es inherentemente impreciso. Debido a que en un ordenador, a la derecha, tenemosuna cantidad finita de bits de memoria podemos usar para representar números. Así, por ejemplo, este ID CS50 es--Creo que es un equipo de 64 bits. >> Un flotador sólo puede ser representadopor una cantidad finita de esos bits. Y así 0,1 con ceros infinitos,que fue de 0,1 es, ¿verdad? Pero en realidad no podemos almacenarese número en nuestro ordenador. Simplemente no tenemosmemoria suficiente para hacerlo. >> Y así la aproximación más cercanalo que está almacenado en la memoria es en realidad algo así como 0.000 algo,algo, algo, algo. Lo cual, una vez que truncarque, redondea a 0,0. >> Y así, este ejemplo es sólo unoque demuestra un montón de problemas tenemos cuando estamostratando de hacer mal las matemáticas sin poner como un entero diferente. Así que tener cuidado de que esto ocurra. >> En pruebas, si le damos unbloque de código y es como, lo que imprime al final? Y si se trata de un valor aleatorio quechicos deben saber por qué está sucediendo. ¿Sí? >> AUDIENCIA: Truncar es deshacerse detodo lo que después de un cierto punto? [INAUDIBLE] PROFESOR: Sí, lo que en realidadeste es un muy mal ejemplo, porque en realidad lo que sea 0.100se truncará hasta 0,1. Pero si tuviera que ejecutar it-- no lo hagorecordar, porque el año pasado corrió en un programa diferente. Corrieron en algo llamadoel CS50 Appliance, que es diferente de la ID. Ese fue un sistema de 32 bits, creo. Y así había diferentes números. >> Pero, en esencia, sólo sé quetodo el concepto de truncamiento y cómo se acaba corta las cosas. Y por lo que si rounds-- >> AUDIENCIA: Sin redondeo. >> PROFESOR: Exactamente. Sí. Guay. >> Hola, en la parte posterior. Estamos repasando algunospreguntas de revisión concurso. >> Correcto. Así que considera un programa diferente aquí. Voy a dar a ustedes unpar de minutos para leer sobre esto. Esto es algo que era para un muyrecientemente que creo que soplaba mucho de ustedes las mentes de hombres. Pero vamos a hablara través de este nuevo sólo para asegurarse de queentenderlo completamente. OK. OK. Cualquier persona necesita más tiempo paraleer a través de este código? OK. >> Así que me parece queen este programa estoy la creación de dos cadenas mediante el uso de GetString. Una llamada s y uno llamado t. Y si son igualeses igual a la otra, debe imprimir "Ustedescriba la misma cosa ". >> Pero elsewise, sería imprimir, "Ustedescrito cosas diferentes ", ¿verdad? Parece muy, muy simple. Pero, sin embargo, si realmentetratar de escribir este programa, parece que incluso cuandode entrada las mismas cadenas exactas, todavía imprime, "Ustedmecanografiado diferentes cosas! " ¿Alguien quiere tomar unoportunidad por qué este programa siempre responde que las entradasson diferentes, incluso cuando las palabras en sí son los mismos? >> Así que si yo fuera a input-- David amorutilizar un ejemplo como madre, ¿no? Minúsculas M-O-M de S, Tes igual a minúsculas M-O-M. Si me encontré con esto a través deese código, ¿por qué se imprimir "que ha escrito cosas diferentes?" >> ¿Necesita más a nadietiempo para pensar acerca de esto? OK, creo que estamos bien. ¿Sí? >> AUDIENCIA: OK, así que es algo acerca dedonde se almacena en la memoria, ¿no? >> PROFESOR: Sí. >> AUDIENCIA: En caso de que, como si estocadena s se almacena en la memoria spot-- Estoy inventando esto-- es cero. PROFESOR: Claro. AUDIENCIA: Y cadena tse almacena a punto de la memoria, como, 167, y luegocero no es igual a 167. >> PROFESOR: Exactamente. OK, así que recuerde esta increíblerevelación explicamos a ustedes la semana pasada, quecadenas no existen realmente? Cuando creamos algo que se llamacadena que estamos, en realidad, la creación de algo que se llama estrella de carbón. Que todo lo que es es un puntero auna cadena o a un array de caracteres. >> Y así, en este ejemplo, siestaban a la entrada de M-O-M el camino que mi equipo iba a guardarlo esdentro de la barra invertida de memoria cero, ¿no? Estos cuatro personajes, caracteres,sería almacenada en alguna parte. >> Y entonces estos cuatropersonajes, barra invertida cero, se almacenan en otro lugar, ¿verdad? No tengo ni idea de dónde las direccionesson, están en alguna parte de mi equipo. Pero yo no sé exactamente dónde están. >> Cuando creo una cadenas, lo que realmente es es un puntero a lainicio de esta cadena. Y cuando creo este valor t,todo lo que es un puntero a aquí. Y así, cuando usted está tratandoequiparar y comprobar para ver si s es igual a iguales igual a t, el ordenador es en realidad volver aque la dirección de esta m y la dirección de ese m. Y porque son de dospiezas separadas de datos que se almacenan en dos diferentesdirecciones en el equipo, el equipo nunca va areconocerlos como siendo el mismo. ¿Alguien quieredarle una oportunidad por lo que tendría que hacer si queremos corregiresto y tener un programa en ejecución correcta ¿en lugar? Piense en eso por un par de segundos. ¿Qué necesitamos para cambiar aconseguir este funcionamiento del programa la forma en que queremos que funcione? >> Sí, quiero tomar una puñalada en ella? >> AUDIENCIA: ¿Podemos tratar de eliminar la referencia alpuntero y comprobar a través de la matriz? PROFESOR: Esa es una manera de hacerlo. Así que, ¿cuál es tu nombre? Lo siento, me lo recuerdes. >> Zee: Zee. PROFESOR: Sí, ¿y qué Zeesugerido sería absolutamente trabajar. ¿Correcto? Podríamos eliminar la referencia al punteroy en realidad ir y acceso los datos físicos en el interior de aquí. Y sólo podemos comparartoda la pantalla. >> Podemos decir, OK, puntero,dame lo que hay aquí dentro. Sería devolver un m. Y yo diría, puntero,dame lo que hay aquí dentro. Devolver un m. Realice los partido? Sí. Luego de pasar. >> Seguimos comprobando todo los doscadenas de todo el camino hasta el final y ver si esos son iguales,si todos los valores son iguales. Y si todos los valores son iguales,entonces sabemos las cuerdas son ciertas. Absolutamente, así es como lo haríamos? >> ¿Alguien confundió en todo esto? Todo el concepto de cómo las cadenasen realidad sólo son punteros, y la forma en que realmente no existe? ¿Y por qué tenemos errorescomo la forma en que lo hagamos? Porque te garantizo chicos, punterosy la asignación de cadena y la memoria van a llegar. >> ¿Sí? >> AUDIENCIA: [inaudible] dereferenceella, sólo hay que poner una estrella [inaudible] PROFESOR: Eso es. Así que para derererence un medio de punteropara ir a la dirección del puntero y obtener los datos, el valor allí. Y la manera de hacerlo es indicador de la estrella. No hay que confundir eso. >> AUDIENCIA: [inaudible]. >> PROFESOR: Sí. AUDIENCIA: Así que usted puede simplemente escribirsi la estrella s iguales iguales estrella t. >> PROFESOR: Bueno, no. No. >> AUDIENCIA: Eso no es lo suficientemente bueno, ¿verdad? >> PROFESOR: No lo es, porque eresSólo el control de la primera letra. Usted está probablemente va anecesitará algún tipo de un bucle que itera por cadapersonaje en ambas cadenas. Sí. Así que si quería comprobar sólo para versi empezaban con la misma cosa, que puede hacer si, estrellas es igual a la estrella t. Entonces usted sabe que por lo menoscomenzado con el mismo carácter. >> ¿Sí? >> AUDIENCIA: Así que la formausted que sería como un embebido para bucle o puntero? PROFESOR: Sí. Prácticamente sólo un bucle for. Recuerde, David en la clase mencionadael azúcar sintáctico libre? Y tenía esta mismaLo confuso de la estrella t más uno, donde se integraríaa través y que se mueva el puntero? La manera más fácil de haceresto es solo t de i. >> Así que es sólo una matriz. La forma en que usted tendría una parabucle que pasó de cero a i, donde i es la longitud de lacadena, sólo podría escribir que en vez de hacer eltoda puntero, cosa referencia. Así que estas cosas son exactamenteequivalente en su ordenador. >> Ustedes probablemente no lo haránecesitan saber que, pero es bueno para sólo un pocotener en la parte posterior de su mente. Sólo sé que el equiporeconoce diferentes bloques de código como la misma cosa. Debido a que este es sólo mucho más de usuarioamigable para nosotros presentar como si fuera una matriz. Es más fácil. >> AUDIENCIA: Entonces utilizar strlen que gustar, get-- PROFESOR: Sí. AUDIENCIA: OK. PROFESOR: Usted podríautilizar strlen o, si se no tenía strlen usted puede hacer hastahasta llegar a la barra invertida cero para ambos. De cualquier funcionaría. Sí. AUDIENCIA: Así que es para eliminar la referencia de cadacarácter individual si fuéramos realmente escribir este código,Sólo podía hacer camisetas soportes i desea con la estrella en la frente de ella? >> PROFESOR: Sí, es igual a equals ssoporte de i, y luego sigo yo en movimiento abajo hacia arriba hasta llegar a la final. Sí, eso es lo que haría. Y voy a realmente tengo un ladoejemplo de cuando en realidad escribir strlen para que ustedes harán clasede llegar a jugar un rato con él un poco. >> Así es todo clara en apenas memoria,cadenas, punteros, direcciones de calidad? Algunos conceptos de más alto nivel quevoluntad a ciencia cierta necesidad de saber sobre el concurso mañana. >> Correcto. Bien. Sí. OK, así que lo único que tendremos también pedimosusted, como lo hacemos todos los años en un concurso, es decir, supongamos que usted ha olvidado (queparece que nos olvidamos de hacerlo anualmente) en el que se declara el archivo de cabecera strlen. Y así que tenemos que volver a escribir nosotros mismos. >> Aquí hay una lista de directricesque podemos presentarle chicos donde se llega a suponer ques la cadena no será nulo. Usted puede asumir que s habráterminó con una barra invertida cero. Así que ya sabes que es lo queque va a terminar con. >> Y, por ejemplo, que lalongitud de hola sería cinco. Así que usted puede asumir que holaserá de cinco, H-E-L-L-O. Usted no tiene que suponer que labackside cero representa la longitud. >> Este último que aquí, no lo hagaspreocuparse de desbordamiento de enteros. ¿Alguien recuerdadesbordamiento de entero es lo que? >> AUDIENCIA: Va más allá de lalongitud de la [inaudible]. >> PROFESOR: Sí, se puede explicarun poco, ¿qué significa eso? >> AUDIENCIA: Entonces, supongo que se remontaal ejemplo truncar antes. Pero si usted tiene sólo tantos númerosque van más allá del número de bits que en realidad se puede asignarloque será sólo un poco cortado. PROFESOR: Sí, así que en una típicaordenador, cuántos bits tenemos? AUDIENCIA: 32? PROFESOR: Sí, 32, a la derecha. Y eso es, qué, cuatromillones de dólares, dos mil millones? Cuatro millones de dólares, hasta cuatro millonesenteros positivos, ¿verdad? Dos mil millones negativos,dos mil millones positivo, depende de cómo desea hacerlo. >> Y así que básicamente podemos tenersuficientes números enteros que pueden ir hasta de dos a 31 menos 1, ¿verdad? Porque una vez que golpeó a dosa la 32, no lo hacemos tener esa cantidad de memoria en nuestro ordenador. >> Y así, en teoría, quepodría llegar a un número es decir, como, dos a la 46a. Es un número enorme-culo, peroteóricamente podrías. Y desbordamiento tan entero es si intentacrear un entero que va más allá de lo que el equipo es capaz de almacenar. >> Y así ustedes paraeste ejemplo no tienen que preocuparse acerca de nosotros que le da un gigantecadena que es de dos a los caracteres 32ª largo. Eso sería realmente significa. >> Muy bien, así que sólo voy a darustedes la estructura de base de este. Vas a crear unfunción llamada int strlen donde Un pase en, una estrella char, o cadena,puntero a la cadena llamó s. >> Muy bien, todo el mundo que copiar hacia abajo. Guay. Otra Oops-- manera. >> Así que esto es como una especie demás duro pedazo de problema, así que te voy a dar unos cinco chicos aseis minutos de clase de una lluvia de ideas y escribir a cabo esta función. >> AUDIENCIA: No hacemoscuenta de [inaudible], nosotros no tenemos que usar entero? >> PROFESOR: No, no lo haces. Te voy a dar una pista chicos. Un bucle while puede ser muy útil aquí. Sí. Aquí caramelo. Caramelo también estará disponiblepara el concurso, creo. Así que ustedes será todoazucarada hasta mañana. Puede yo-- lo tienes. >> AUDIENCIA: OK. PROFESOR: Sí. >> Tal vez 30 segundos más o menos. >> Muy bien, si estásno se hace, no se preocupe. Nos moveremos por esto juntos. OK. Así que me voy a sólo el diseño delestructura básica para esta función aquí. Int strlen. En primer lugar, ¿alguien quiere decirlemí lo que int significa? Tenemos que tener en esta función. >> AUDIENCIA: strlen [inaudible]. PROFESOR: Exactamente. Así que pase lo que pase aquí,tenemos que devolver un entero. Y como se especifica en elspec, queremos return-- Vaya para él chicos, sólo seguir adelante. Está todo bien. Coma todo lo que no tengoa tomar de nuevo, en realidad. El int simplemente significa que eresva estar volviendo un entero. >> ¿Qué es este carbón estrellas s? ¿Que significa eso? >> AUDIENCIA: Al igual que, lo que se está introduciendo en. PROFESOR: Exactamente. Y lo que es casi ello mismo que la estrella de carbón? AUDIENCIA: String? PROFESOR: Exactamente. Así que todo lo que estamos haciendo es daresto un puntero a una cadena. OK. Guay. >> Además, no se olvide, si nos olvidamospara darle estos soportes, no te olvides de escribir tu mismo. Debido a que en teoría, su código esincorrecta si se olvida de escribirlos. Así siempre prestar atención. Al igual, pequeñas cosasque no se dan cuenta cuando se está programando en su computadora portátil,porque tu portátil lo hace por usted? No se olvide, cuandousted está escribiendo con la mano. ¿Sí? >> AUDIENCIA: ¿Pero cómo incorrecto? Al igual, podemos llegar todo el problema equivocado? >> PROFESOR: No, no. No te preocupes. En realidad es teóricamente posiblepara que usted consiga puntos completos en una pregunta incluso si su códigonunca se queda en la vida real. Le sugiero que no lo intentaspara que esto suceda. Por ejemplo, como si todoeso es que aquí es correcto, pero se olvida de dos puntos o un soporte,su código en realidad no correr. Pero podemos ser misericordiosos. >> ¿Sí? >> AUDIENCIA: ¿Tiene ustedcomentar en nuestro puño y letra? >> PROFESOR: No, no, nose preocupa por eso. Sin comentarios. Estilo debe ser bueno. Al igual, no smushtodo en una sola línea. No vamos a ser felicescon usted si usted hace eso. >> ¿Alguien quieredame la primera línea? Sugerencia, es muy fácil. >> ¿Sí? >> AUDIENCIA: Int, n es igual a cero. Sólo tienes que configurar mostrador. PROFESOR: Entonces queremos algunauna especie de mostrador, ¿verdad? Yo sólo voy a nombrarlo "contar"en aras de la legibilidad. ¿Qué queremos para configurarlo igual? >> AUDIENCIA: Cero. PROFESOR: Sí. Punto y coma. También es punto y coma dibujo muy extrañas. Sólo la práctica de hacer eso. >> Así que queremos tener primeroun contador de tipo int. Porque queremos contar hasta cómomuchos caracteres o letras son en esta cadena, ¿verdad? Primer paso muy fácil. >> OK, tal vez un poco más complejoAhora, ¿cómo vamos a hacerlo? ¿Alguien quieredame la línea de código que puede ser capaz de ayudar en buclea través de lo que sea que es esto? >> Sí, valiente alma en la parte de atrás? >> AUDIENCIA: OK, así que mientras que el puntoasteriscos, el sí, estrella de s, no es igual a cero, entonces hacer algo? PROFESOR: Eso es muy, muy cerca. Muy cerca. Así que voy a tratardos cosas con eso. En primer lugar, no es exactamente cero. ¿Qué es? Es el terminador nulo,barra invertida que es cero. Así que son diferentes entérminos de cómo están almacenados. Así que estás muy cerca. >> Y en segundo lugar, no queremossólo mover el puntero. Queremos realidadacceder a los valores, ¿no? Y así, ¿cómo lo hacemos? Muy fácil. No pienses en punteros,no pienses en recuerdos. Volver a la segunda semana de este curso. >> AUDIENCIA: [inaudible]. PROFESOR: Al, ¿recuerdas? ¿Cuáles son las cadenas? ¿Cómo se almacenan en la memoria? >> AUDIENCIA: Están levantadas. >> PROFESOR: Se crían. Entonces, ¿cómo accedemoscada personaje dentro? >> AUDIENCIA: [inaudible]. PROFESOR: Exactamente. Así que lo que sucede en el interior rato-- aquí? S de - >> AUDIENCIA: I. >> PROFESOR: Oh, yo no existe, ¿verdad? >> AUDIENCIA: ¡Oh, cuente? >> PROFESOR: Podemos simplementeutilizar la cuenta, ¿no? >> AUDIENCIA: Lo siento, me llamó i. >> PROFESOR: Sí, está todo bien. Tenemos una variable hasta aquí eso esya se ha declarado como nuestro contador. Así que ¿por qué no nos limitamos a usar quepara moverse a través del bucle while? ¿Tiene sentido? >> Así, mientras que s de count-- quiere a nadiepara darme lo que sucede después de aquí? AUDIENCIA: No es igual. PROFESOR: no es igual, ¿no? Es la explosión es igual,signo de exclamación es igual, lo que ustedes quierenllamarlo no equal-- >> AUDIENCIA: [inaudible]. >> PROFESOR: Sí. Recuerde comilla simple es para un char,comillas dobles son para una cadena. Tenga cuidado al usarlos. Así que cuando estamos mirando a través dela matriz, el último carácter, sabemos que no queremosque sea barra invertida cero. >> Así, mientras que. No estamos en el final de la cadena. ¿Qué es lo que queremos hacer en el interior? >> AUDIENCIA: Queremos añadir a lacontador para que cuente plus plus? PROFESOR: Exactamente. Así que aquí vamos a hacercontar, contar plus plus. Falta una línea más. Casi estámos allí. ¿Qué estamos olvidando de hacer? >> AUDIENCIA: Volviendo a cero? >> PROFESOR: ¿Quieres volver a cero? >> AUDIENCIA: No, regresar a strlen. Espera. PROFESOR: ¿Qué se almacena en? AUDIENCIA: Count. Contar. PROFESOR: Exactamente. Así que aquí vamos a volver recuento. >> Porque lo que estamoshaciendo aquí ultimately-- tenemos una variable contador que esva a incrementar a través de nuestra cadena. Vamos a seguir adelante, mantenemosva, vueltas y vueltas en este circuito. Y si bien no estamos en el final de estecadena, que es el terminador nulo. >> Y cada vez que pasamos porque, estamos agregando a nuestro mostrador. Y vamos mása lo largo de esta matriz. Y al final, una vez quegolpear el terminador nulo, sabemos, oh, podemosromper, devuelva el conteo. Tenemos nuestra strlen. >> ¿Todo el mundo obtener la formaEsto se implementó? Mientras loops-- Sé que no tenemoshecho demasiado con ellos, pero son por lo generalmuy, muy útil si no sabes lo que estás parandocondición tiene que ser necesariamente. >> ¿Pregunta? >> AUDIENCIA: ¿Podemos escribir nulacon la condición de tiempo? >> PROFESOR: Si bien? Sí, por lo que en este problema te tuvechicos asumen que s no va a ser nulo. Porque recuerda,teóricamente, si yo te di un puntero que era demasiado grande de la memoria,que le daría la nula, ¿verdad? Eso es lo que el operativosistema haría. >> Así que si yo no digo que asumirs sería nulo, es necesario comprobar. Así que aquí, lo haría, si ses igual a igual a null, devolver uno. Algo así. AUDIENCIA: [inaudible] cero. PROFESOR: OK, te lo dirépor qué no se puede hacer eso. Porque recuerda en la memoria, a la derecha, aquí. Vamos a ir aquí. >> Tienes bloques gigantesde la memoria todos con rejillas que almacenan valores diferentes, ¿no? Y así toda una cadena de es--ejemplo, si hemos de entrada hola, sería H-E-L-L-Obarra invertida cero, ¿no? Y entonces, ¿quién sabe, como al azarcosas que están en aquí después de ella. >> En realidad no sabemos lo que hay. Y por lo que si usted fuera a haceren lugar de la barra invertida cero, null, puede que no sea nulo. Debido a que sólo puede significaralgunas otras cosas al azar que no pertenecen en su cadena. Y así, la forma en que siempre sabemos queuna cadena termina con una barra invertida es cero. Y eso es siempre la forma en quecomprobar para ver el final de una cadena. >> Null, todo lo que significa es que si tienesun puntero inexistente, primero de todo, o si su memoria es tan grande queusted no puede regresar, entonces sería nula. Así que tener mucho cuidado al diferenciarla diferencia entre la nula y la barra invertida cero. Sí. >> Todo el mundo de acuerdo con esto? OK. >> Así que tuve que ustedes escriban strlen. Factible también podríamos pedirle que escribesfuera de A a I, recuerda que "Atwoa" o lo que sea que ustedes quieren llamarlo? Esa función enVigenére y César, que convierte un valor ASCII a un entero? Eso también ha subido en las pruebas anterioresde las funciones que le hemos pedido a escribir. >> Casi cualquier funciónque usted ha utilizado y es muy fácil escribir usted mismo,sensores gusta es menor, es superior, para reducir, al superior. Funciones que convertir uncadena de minúsculas a mayúsculas. Todos sabemos cómo hacerlo, ¿no? Es muy fácil. Sólo quiero estar seguro quecan-- es el mismo proceso de pensamiento. Sólo iterar a travésy usted da vuelta las cosas. Usted tampoco contar o cuandoencender las cosas de manera diferente. >> Me suggest-- Ino sé si vamos a pedir que memorizar lo mayúscula ode capital Z, o minúscula A o minúsculas z están en ASCII, pero yo sugeriríaquizá por escrito que en el caso hacemos. Sólo para que ustedes tienen una referencia. Como mayúscula A es, qué, 197? Y entonces minúscula es como 50 algo. 65, sí, ahí lo tienes. Así que más o menos conocer ladiferencia entre ellos es 32. Eso es muy importante. Sí. ¿Soy bueno en esto? OK. >> AUDIENCIA: Podríamosteóricamente escribir algún de ellos hacia abajo también en nuestra poco-- >> PROFESOR: Usted teóricamentesimplemente podría copiar la función hacia abajo. Es verdad. >> AUDIENCIA: No [inaudible]. >> PROFESOR: Ustedes tienen una hoja. Ustedes tienen una hoja de notas. Puedes escribirlo. Puedes escribirlo. Puedes hacer lo que quieras con él. Sí. Por lo tanto teóricamente, siquiere, ir. >> AUDIENCIA: [inaudible]pero no lo hacemos de verdad necesariamente tienen que recordarel valor, podemos simplemente utilizar el de superior o defunciones inferior, a la derecha? PROFESOR: Sí. Pero si os dimos una preguntaque dice escribir a superior, entonces usted tendría que escribirlo. Así que ustedes pueden asumir que ustedchicos tienen acceso a todas las funciones, pero si usted desea utilizar para la parte superior o parainferior, qué es lo que también hay que hacer? >> AUDIENCIA: [inaudible]utilizar CS50 [inaudible] >> PROFESOR: ¿Es CS50.h? Tenga cuidado allí. >> Así que para la parte superior, para bajar,es superior, es menor, funciones que implicanmanipulación de cadenas son todo dentro de ya sea el Asciio dentro de la biblioteca matemática o dentro de la biblioteca de cadena. Así que si ustedes usan esasfunciones, tenga cuidado de recordar para incluir esa cabecera. Así que quizás también algo queque desee incluir en su hoja, cuáles son la cabecera? ¿Cuáles son las bibliotecasusted ha estado usando? ¿Qué funciones sondentro de esas bibliotecas? Es importante. >> ¿Sí? >> AUDIENCIA: ¿Podríamos simplementepolicía y hacer hashtag a través de la absolutamentecada carta que alguna vez visto así en todas las preguntas? >> PROFESOR: Usted podría. No sé lo felizvamos a ser de grado que prueba que cada pieza de códigoes el doble de lo que tiene que ser. No sé, podríamossacar un punto para el estilo. Pero teóricamente sucódigo sería correcto. Ustedes podrían policía ybasta con incluir todo. Eso también está bien, sí. AUDIENCIA: [inaudible]. PROFESOR: Sí. Yo sugeriría que no hacer eso sin embargo. Sí. AUDIENCIA: Cool. PROFESOR: Buena pregunta. AUDIENCIA: Entonces, el peor de los casos. PROFESOR: El peor de los casos. Si olvida totalmente,usted podría hacer eso. Sí. >> Sí, el código está ahí. Solía ​​n lugar del conteo, pero, ustedconocer, lo que flota su barco. AUDIENCIA: Espere, por lo queno tendría que Hashtag incluir porque somosempezando por el int? >> PROFESOR: Sí, yo supuse quenos pidieron que escribir la función. Si usted quería estar seguro,probablemente podría ponerlo allí. Pero yo no me molesté, sí. >> Ni siquiera sé sinecesita cualquier biblioteca para esto. Debido a que usted no está realmente la impresióncualquier cosa o nada, ¿verdad? Sí, yo no sé sinecesita una biblioteca. >> OK. Este es también un poco más a lo largolas líneas de manipulación de memoria. Este tipo de poco complicado. Piensa sobre esto. Usted tiene una función llamada func. Podría haber llamado que lo que sea,pero elijo nombrarlo func. Lo tengo encima de mi principal. Recuerde, usted quiere teneruna función después de que su principal, usted quiere asegurarse de queincluir el prototipo de la parte superior. >> Pero en este caso fue tan cortoque sentí que podía simplemente incluirlo encima de la principal. No necesita tener el prototipo,porque ya está escrito arriba. Así que todo lo que estoy haciendo en mi función principalestá creando entero x es igual a 10. Voy a llamar a mi función func,y luego imprimir algo. >> Y entonces eso es realmentelo func está haciendo. ¿Quieren que pensar en esto. Debido a que es un poco complicado. Es muy, muy difícil, en realidad. Piense en lo que estoprograma sería hacer salir. Te voy a dar dos chicos minutos. >> Buenas discusiones? >> AUDIENCIA: Sí. >> PROFESOR: Sí. Muy bien, así que esto escomplicado por una razón. Y es por eso que yo quería para llevaresto a la atención de todos. ¿Alguien quiere darmeuna sugerencia, un intento? ¿Cómo sería esta imprimir? Totalmente bien si te equivocas. ¿Sí? >> AUDIENCIA: Creo que es 100 yluego 10 en dos líneas separadas. >> PROFESOR: Y un 10? ¿Alguien tiene alguna otras conjeturas? ¿Sí? >> AUDIENCIA: Tal vez sólo 10 porquefunc no devuelve nada? >> PROFESOR: OK, así quetener conjetura número uno es que conjetura número dos essólo va a imprimir 10. ¿Alguien tiene alguna otras conjeturas? OK. Así que vamos a caminar a través de este, ¿no? Siempre que reciba una pieza de código,no basta con ver y ser como, ah, eso es tantas cosas! ¡Estoy tan confundida! Al igual que, calmarse. Sólo sé que usted podríamirar a través de código línea por línea. Eso es todo lo que es. Es como leer un libro. >> Así que con cualquier función,siempre comenzamos a principal. Así que vamos acomenzará a las void main int, incluso el programa deya deteriorada, ¿verdad? Comience en en void main. Int x es igual a 10. >> Así que voy a borrar esto. Voy a señalar a la memoria para que lochicos pueden especie de ver lo que está pasando. >> Recuerde que aquí tenemos nuestra pila? Hasta aquí tenemos nuestraamontonarán en algún lugar aquí. Pila crece, ¿verdad? Y dentro de la pila, que tienela red funcionan tan bien como todos de red variables locales. >> Así que aquí, int x es igual a 10. Dentro de nuestra función principal que estamosla creación de una variable llamada x. Estamos estableciendo que igual a 10. Aquí tienes algunos x, y ya estáestableciendo que igual a 10, a la derecha, dentro principal. ¿Todos bien? >> Función. Así que ahora, dentro de nuestro principalfunción, estamos llamando la función que hemos escrito anteriormente. Así que estamos ahora entramos en la segunda función. Vamos a crear otrovariables int x es igual a 100. ¿Qué está pasando aquí en la pila? ¿Qué sucede cuando se llama a unfunción que crea nuevas variables? ¿Qué sucede aquí en la pila? >> AUDIENCIA: [inaudible] pilas en la parte superior? PROFESOR: Sí. Así que en realidad crea una copia. Y que tipo de pilas en la parte superior. Piense en el stack-- una pilade libros, una pila de nada. Piles en la parte superior, en primer lugar en la últimacabo, último en entrar, primero en salir. >> Así que va a crear una x aquí. >> Eso va a tenertodos los funcs variables. Excelente. Así que ahora tenemos dos diferentes x de querepresentar dos cosas muy diferentes. Entonces vamos a imprimirel número entero de x. Así que vamos a imprimir 100, ¿verdad? Porque aquí es 100. Así que eso es lo primeroque se va a imprimir. Como esta función devuelve nada,ahora esa función, esa línea en main está hecho. Todo el mundo bueno conmigo hasta ahora? >> Así que estamos ahora a través de dos de lostres líneas de nuestra función principal. Ahora vamos a la tercera línea. Vamos a printf. ¿Qué es este x dentro principal? ¿Qué es lo que representan? >> ¿Qué valor es x ahora? >> AUDIENCIA: 100. >> PROFESOR: Es 100? AUDIENCIA: Todavía 10. PROFESOR: Todavía 10. Sí. Porque recuerda, en el plazonuestra func, x es igual a 100. Pero si volvemos la espaldaa nuestra función principal, esa variable se almacena en unalugar diferente en nuestra pila. >> Así que ahora tenemos que volver a lachimenea principal, red de variables locales. Y aquí x es igual a 10. Y así vamos a imprimir 10. >> Así que ella tenía toda la razón. Vamos a tener lade salida de 100 y 10. ¿Sí? AUDIENCIA: Cuando malloc, es que lamontón o la pila que es [inaudible]? PROFESOR: Cuando malloc,usted está tomando memoria del montón y su asignación. Así que usted no tienemeterse con nada de esto. Así que supongo que la comida para llevar más grandeaquí hay algo que se llama alcance. >> Para aquellos de ustedes que estaban enla sesión de revisión de anoche, hablamos brevemente sobre esto. Alcance define cómo ycuando existen variables. O dentro de lo que enmarcaqué existen las variables. >> Más o menos la regla generales decir, su variables-- si usted los crea dentro braces-- rizado existensólo dentro de esas llaves. >> Así por ejemplo, en nuestra función defunc, ves esas dos llaves. Si va a crearnada en el interior de la misma, es probable que todo lo que estamos haciendo esla creación de una pila y el almacenamiento que no. Lo mismo en el principal. Eso es sólo almacena dentro del principal. >> También quieres sermuy, muy cuidado aquí. Debido a que alcance también se prestaa diferentes ejemplos. Así, por ejemplo para unabucle, por int i es igual a 0. I es menor que, no sé, 10. Yo plus plus. Y tienes código dentro de ella, ¿no? >> ¿De dónde viene esta variable,i, en realidad sólo existo? Sólo dentro del bucle for. Así que apuesto a que muchos de ustedes tienenProbablemente encontrado este error cuando que estás haciendo programas en sus conjuntos de procesadores. ¿Cuántos de ustedes han tratado de utilizar ifuera de un bucle for y tenía un error? Al igual que un enteros sin referencias¿o algo asi? >> La razón por la que sucedees porque aquí estás la creación de algo que sóloexiste dentro de su bucle. Y si intenta usarlo, i no lo haceen realidad existe fuera de ella. Así que, básicamente, un ordenador diciendo: Yono sabes lo que estás hablando. Todo lo que sé es que yo era unaquí, pero ahora ya no. >> Así que si yo fuera a crear unbucle for dentro, ¿no? Y yo voy a crear otro,como int j, y tienen que hacer lo que sea. Y tienes un código dentro deese bucle, j sólo existe aquí. Pero eso también existe dentro de i. Y así j sólo existedentro de este bucle, mientras que existe en todo el asunto. >> Todo el mundo claro? Lo mismo con sentencias condicionalessi quieres crear cualquier cosa. Lo mismo con bucles mientras que sidesea crear nada. Eso es algo de lo quemuy, muy cuidadoso acerca. Así que este era un buen problema en elsentido de que demuestra dos cosas. Se demostró por primera vez, el alcance. Y demostrótambién la asignación de memoria. Debido a que ustedes deben saber quefunciones crecen hacia arriba en la pila. Y que cuando se llama afunciones, que está creando esencialmente una nueva pila de memoria. Eso es muy diferente delo que su memoria es la red. Sí. ¡Uf! Todo el mundo en Aceptar en eso? Eso fue confuso. Muy buenos temas para repasar,porque usted está probablemente va a conseguir un poco complicadocosas como que en el cuestionario. Sí. Guay. Voy a poner usted consigue 100 en unlínea y luego 10 en el otro. Sí, muy bueno. >> OK, ahora los chicos se llegala oportunidad de ser el TA. Tienes la oportunidad de responder a todas la encantadoramensajes de correo electrónico que a veces me pongo. >> Así que, queridos Andi, veo creo que algo esir mal con mi compilador. Estoy seguro de que mi código es correcto,pero sigo obteniendo un fallo de segmentación cada vez que me encuentro. ¿Que esta pasando? Por favor, ayuda, mucho amor. >> Si ustedes tiene algo comoque cómo respondería usted? Estas son en realidad muy comúnpreguntas nos preguntarán ustedes. Es que si, le daremos unescenario, vamos a darnos su mejor respuesta a lo que está pasando. Alguien tiene una puñalada en lo que está pasando? ¿Sí? >> AUDIENCIA: Tal vez el desreferenciadonulo, algo así como el puntero se señala en algo nulo. PROFESOR: Sí, eso sería unejemplo de cuando eso suceda. Pero lo que es la imagen más grandede lo que está pasando aquí? AUDIENCIA: ¿Es que usted está tratandopara acceder a la memoria que no estás supone que tienen acceso a? PROFESOR: Exactamente. Así que pensar en un fallo seg, un offlímites, área restringida en la memoria que no debe tocarse. >> Así que más o menos cuando se está tratandoa index-- como por ejemplo, usted ha declaradoarray de cero a nueve. Pero intenta tocar ese décimovalor, usted no tiene acceso a eso. Debido a que usted no ha declarado. Y para que su equipo vamirar que sea similar, uh oh, estás tratando de irfuera de los límites de un índice. Voy a darleun fallo de segmentación. >> Piense como segmento, ¿verdad? Un segmento adicional, la culpa escuando intenta romper algo y que no debería estar allí. Fallo de segmentación es en cualquier momentointenta tocar las cosas que no debe tocarse. >> Así ejemplos comunes son un índice. Por supuesto, si usted está tratandotocar eso era nulo, que también funcionaría también. Si el puntero estaba tratando detocar las cosas que no se deben tocar, que también podría funcionar tan bien. Lo más típico podrásver esto en una matriz. ¿Todos bien? >> AUDIENCIA: Así que si quierespara acceder al punto 10a y sólo hay un límitede nueve años o algo así. >> PROFESOR: Sí, exactamente. Bastante. Guay. >> Estimado Andi. Así que tenemos estas maravillosascosas llaman clases. Si Merge sort-- como nosotrossierra en el ejemplo, cuando David hizo todocosa en class-- por qué, si es mucho más rápido quecualquiera de los otros tipos, ¿por qué nos molestamos sabercualquiera de los otros tipos? >> ¿Qué es esta pregunta realmente que le pregunta? ¿Qué hay de los tres palabra-- AUDIENCIA: ¿Cuál es la compensación? PROFESOR: Exactamente. Eso es lo que está haciendo la pregunta. ¿Cuál es el equilibrio entreCombinar especie versos cualquier otro tipo? >> AUDIENCIA: Toma la memoria, ¿no? >> PROFESOR: ¿Tiene ustedexplicar que un poco más? En primer lugar vamos a explicar tienda Combinar. ¿Cómo Combinar especie trabajar? >> AUDIENCIA: Así funciona pordividiendo todo en medio y luego poner juntosy la reasignación de ella con el fin, que cada vez que combinar los conjuntos. PROFESOR: Más o menos. Así que puedo sacar esto, pero seríallevarme cinco minutos a lo alcanzará. Mirar hacia atrás a la sección de diapositivasdonde cubrimos Combinar tipo. Exactamente. >> Así que la forma de combinación de trabajos de ordenaciónes que divide las cosas por la mitad, y luego que sólo se ve en elprimeros valores de todos ellos y clasifica sólo eso. Continuamente crea nuevas matrices ypone las cosas cada vez más en orden. Y así, mientras que eso es muy, muyrápido porque es-- ya sabes, una búsqueda binaria es n log n. Estás creando tantosdiferentes matrices que eres el uso de una enorme cantidad de memoria. Y así, mientras que es más rápido, la compensaciónaquí es que usted está utilizando más memoria. >> Y así, sugerencia, ordena y búsquedasestaban cubiertos mucho más este año lo que han sido en años anteriores. Ustedes deben ver quereflejado en consecuencia en el cuestionario. Definitivamente, me gustaría gastar tiempo en irmás de lo que todos los diferentes tipos son, buscar la forma binaria,cómo lineal trabajo de búsqueda. Cómo quizás pseudocódigocodificar los a cabo. ¿Cuáles son los tiempos de funcionamiento? Algo así como tiempos de funcionamiento es muyfácil de copiar hacia abajo en una hoja de notas, ¿derecho? >> Es muy difícil cuando estásen el medio de la prueba y usted tiene que darse cuenta de eso. Copie abajo. Te garantizo que eresva a tener que saber eso. ¿Cuáles son las ventajas y desventajas? Peor de los casos, mejores escenariospara todos ellos, muy llegar a conocer. ¿Sí? >> AUDIENCIA: ¿Necesitamossaber cómo codificar Combinar especie? Al igual, es lo que necesitamosrecordar el recursiva? >> PROFESOR: Lo dudo mucho, simplementeporque es como bastante complicado. Pero puede que no sea factible sipedirle que use pseudocódigo a cabo. Sí. >> Sí, está bien, uno más. Esto puede haber surgido enla última pieza en un poco. ¿Sí? ¿Todos oír eso? >> OK, así que más o menos de la primeratodo, ¿qué tipo de programa sería darle una salida como esta? Recuerde que usted pide que aprender acerca deeste nuevo tipo de herramienta de depuración? ¿Cuál era el nombre de ella? Valgrind, derecha >> Era un programa dondeusted puede llamar a eso pude realizar un seguimiento de toda la memoria que estáutilizando en su programa y que estaba pasando. Así que si tienes algo, como,definitivamente perdido, 40 bytes en un bloque. Probablemente usted no estárecordando a liberarla. Porque si usted está usando bytes de memoria,eso significa que ha accedido a que la memoria, pero no ha sido capaz de liberarse. Así que usted quiere hacerSeguro que eres también utilizando libremente-- eso es unfunction-- para liberar a todos los de la memoria reasignado por malloc. >> Guay. Así que esta diapositiva, tendré para arriba. Está en todas partes en un montón deconferencias, en una gran cantidad de sección diapositivas. ¿De verdad quiere asegurarseque acaba de saber todo esto. Ya sea en su hoja de nota o siquiere memorizarlo, no dude en. Eso es muy, muy, muy importante. >> También una muy buenapregunta que podemos pedir. ¿Por qué es mirada Selección sort-- enSelección sort-- todos los tiempos de ejecución son N al cuadrado. Independientemente de cómo la lista llega austed como, ¿por qué es sort-- Selección Te voy a dar 30 chicossegundo pensar en esto. Debido a que es un poco confuso. Se trata de una reflexión conceptual. ¿Por qué los tiempos de ejecución de la misma entanto los peores y mejores escenarios? >> ¿Sí? >> AUDIENCIA: Debido Selección especie cadaposición o el espacio en este pequeño arsenal cosa o lo que sea. Así que incluso en el mejor de los casos,incluso si está perfectamente ordenadas, sería aún tiene que ser así, OK, uno. En mi primer lugar tengo una. Y pasar por todos ellos. OK, uno es el más pequeño. Y luego va otra vezy es como, OK, dos es la más pequeña de todas las cosas. Pero todavía tiene quecomprobar todos y cada uno. PROFESOR: Sí. Así, por ejemplo, vamos a decirTenemos una lista, ya clasificado, una serie uno a cinco. La forma en que tipo de selección es quepasa por, comprueba estos dos. A continuación, comprueba los dos. Y entonces se comprueba y verifica. Mantiene comprobar todos ellos,independientemente de si o no en realidad está ordenada. Porque eso es simplementela forma en que el tipo trabaja. >> Y por lo que esta cuestión es algo así comouna pregunta conceptual pediremos. Donde primero, asaber qué tipo de selección es, a la derecha, para poderresponder a la pregunta. Tienes que ser capaz de entenderconceptualmente lo que está pasando. Y entonces usted puede aplicarlo y pensar, OKvamos a imaginar peor de los casos. Están todos en orden descendente. ¿Cómo afectaría eso que? >> ¿Y si es el fin de ascender? Si ya está ordenada? ¿Cómo afectaría eso los tiempos de ejecución? Y entonces tipo de selección, te darás cuentaque no importa realmente. Debido a que usted está comprobando toda lavalores, independientemente de lo que está pasando. >> Y así las cosas buenas para recordar. ¿Por qué algunas clases difieren de los demásy la mejor y peor de los casos afectaría a todos ellos. >> Voy a golpear realmente en claseporque eso va a estar en el cuestionario. Sí. OK. Hay seis minutos para el final. Puedo tomar tres minutos de preguntas. También puedo colgar alrededor decomo 20 minutos después de la sección si desea hacer preguntas también. ¿Alguien apenas tiene muy brevepreguntas o cuestiones conceptuales son poco claros acerca de este momento? ¿Sí? >> AUDIENCIA: ¿Puedes hablar un pocopoco acerca de los operadores bit a bit? >> PROFESOR: Sí. Así que los operadores bit a bit sonalgo que probablemente sólo podría querer poner en su hoja. Así quickly-- No quieroir demasiado en profundidad porque de Harvard, en su opiniónperíodo de sesiones, la cubrió bastante bien. Operador de bits, haycinco de ellos, ¿no? >> Hay una, que es x o función,no hay signo, que es la y. Pipe, que es el o. Y entonces usted tiene los dosdiferentes tipos de turnos. >> Si te doy dos valores, si esYo te doy, como, uno y uno. Lo que habría que evaluar a? Si te doy cierto y verdadero, cierto? ¿Qué hay de verdadero o falso? Siendo cierto, ¿no? Debido a que hay una o. Lo más probable es que te damos los números. Así que recuerde, uno es igual averdadera, cero es igual a falso. Y nos podría darle estas cosasy pedirle que nos diga lo que pasa. Harvard cubre dentro de la primera10 minutos de su sesión de estudio muy, muy bien. Así que ustedes quieren hacerSeguro que mira hacia atrás en eso. >> AUDIENCIA: ¿Es pisa5va a estar en el concurso? PROFESOR: No. Ni siquiera mirar a pisa5 ahora. Es dificil. Así que ni siquiera te molestes en buscar en pisa5. >> Sin embargo, como algunos consejosy sugerencias, sugeriría que inicie pisa5tan pronto como el concurso ha terminado. Este será el más durosemana, pero luego ustedes se la pasó en las colinasde verde y cachorros laminados, y está bien. >> Esta clase se pone significativamás fácil después del quinto conjunto de procesadores. Horario de oficina: AUDIENCIAson Domingo, Lunes? PROFESOR: Sí, así que las horas de oficina harádel domingo al lunes para el conjunto de procesadores. El horario de atención esta noche esencialmentesólo será crítica para el concurso. Si alguien quiere entrar y pedirla TA una pregunta, estaremos allí. >> Voy a tomar tal vez una pregunta mássi alguien tiene una pregunta? ¿Sí? AUDIENCIA: Cuando estésnodos que definen, [inaudible] si dices estrellas nodo y luego otro,hace el ordenador de forma automática entiendes que eresrefiriéndose a otro puntero? >> PROFESOR: No. >> AUDIENCIA: Usted tiene quereenlazar que [inaudible]? >> PROFESOR: Así que, básicamente, elestructura de un nodo es, recordemos, que es como se crea el nodo yentonces usted tiene un puntero llamada siguiente. Todo lo que estamos haciendo es tenerla estructura allí. Tiene que asignarese puntero en alguna parte. Así que las computadoras no lo hacesabe lo que está haciendo todavía. Tiene que asignar realidad cuandova a crear su lista enlazada. Y eso es lo que principalmentepset 5 estará encendido. Así que no te preocupes pornada de eso en este momento. >> AUDIENCIA: Así que no necesitamoscentrarse demasiado en la lista de enlaces, justo la concepción general? >> PROFESOR: Just prácticamente pilas,colas, listas de enlaces, árboles, tablas hash. Sólo ser capaz de saber lo que son. No vamos a pedirte gusta nada específico porque en realidad no hemos hecho unconjunto de procesadores que la cubre nada de eso todavía. >> Así que en los últimos dos minutos antesMe puse libre para matar a este cuestionario. Más o menos, como, pensar en cómoahora que ustedes han llegado en esta clase. >> Recuerdo que cuando la segunda semanade esta clase, algunos de ustedes pasar tres horas escribiendo agua. ¿Cuánto tiempo le llevaráchicos escriban agua ahora? 30 segundos, tal vez? Piense en la cantidadustedes han aprendido. CS es un tema muy, muy difícil. No hay duda de eso. Es difícil, por eso nadie se lo estudia. Es simplemente difícil. Y es totalmente bien. >> Y estoy muy orgulloso de quetodo el mundo ha llegado tan lejos. Conjuntos de procesadores no son fáciles. Ellos toman mucho tiempo. Chicos, yo nunca le pedirá que escribael juego de 15 o Vigenére en el conjunto de procesadores. No hay necesidad de simplemente asuste por eso. Todo lo que estamos probando aquí es evaluarsu conocimiento conceptual, así como algunos de sus habilidades básicas de codificación. La prueba está diseñada paraser realmente difícil. Al igual, que está diseñadopara que usted no obtiene 100. También está diseñado para que usted probablementeNo ser capaz de terminar en 75 minutos. Y eso es totalmente bien. Soy un estudiante de mí mismo. Lo sé, lo odio cuando caminode un cuestionario ser así, mierda. Eso fue muy duro. Probablemente lo que va ahappen-- y eso es totalmente bien, Te lo digo chicos ahora. Los medios en estas cosasno son altos en absoluto. >> Y para aquellos de ustedes quehan estado recibiendo, como, tres en sus boletines de problemas,eso no quiere decir que estés va a conseguir un 60 por ciento en esta clase. Si usted recibe un 60% en elconcurso, que no lo hace decir que vas aobtener una D en esta clase. Vemos, sobre todo yo, poraquellos de ustedes en mi sección, Yo veo lo difícil que ustedes están trabajando. Y guardo un registro de eso. >> Ustedes estarán bien. No hay memoria institucional dela felicidad al final del semestre. Debido a que todos los niños de Harvard están diciendosus amigos, oh, estarás bien. Nadie te está diciendo chicos que aquí. Así que tengo que decir a ustedes que aquí. >> Ustedes estarán bien. Estoy muy orgulloso de todos ustedes. La prueba será dura. Estudio para ella, y despuéssimplemente tirarlo a la basura. ¡Prepárate para aprender cosas nuevas. Y comer dulces. Nosotros hemos tienen un montón de caramelos. >> Obtener una buena noche de sueño. No, no dormir, porqueeso sería muy malo. CS es mucha lógica. Si no duermes, no puede funcionar,y su cerebro no puede funcionar. Y voy a estar aquí para el próximo 20minutos si alguien quiere pasar el rato. Ustedes van a acabar con él. Buena suerte.

Noticias relacionadas